| name | nested-card |
| description | Creates cards with an outer gradient container and inner content card. Use when building premium card designs with depth, layered card layouts, or cards with image sections and content sections. |
Nested Card Pattern
Build premium card designs with an outer gradient container wrapping an inner content card, creating visual depth and separation between media and content areas.
Structure Overview
┌─────────────────────────────┐ ← Outer card (gradient bg, padding)
│ ┌───────────────────────┐ │
│ │ Image/Media │ │ ← Media section (rounded)
│ └───────────────────────┘ │
│ ┌───────────────────────┐ │
│ │ Content Card │ │ ← Inner card (solid bg)
│ └───────────────────────┘ │
└─────────────────────────────┘
Core Implementation
Light Mode
<div className="bg-gradient-to-b from-[#e8e8ea] to-[#dcdce0] rounded-3xl p-2 shadow-xl shadow-zinc-400/30 border border-white/60">
{}
<div className="relative h-[240px] w-full rounded-2xl overflow-hidden mb-2 border border-white/40">
{}
</div>
{}
<div className="bg-white rounded-2xl px-5 py-4">
{}
</div>
</div>
Dark Mode
<div className="bg-gradient-to-b from-zinc-700 to-zinc-800 rounded-3xl p-2 shadow-xl shadow-black/50 border border-zinc-600/40">
{}
<div className="relative h-[240px] w-full rounded-2xl overflow-hidden mb-2 border border-zinc-600/30">
{}
</div>
{}
<div className="bg-zinc-900 rounded-2xl px-5 py-4">
{}
</div>
</div>
Token Reference
| Element | Light Mode | Dark Mode |
|---|
| Outer card | | |
| Background | bg-gradient-to-b from-[#e8e8ea] to-[#dcdce0] | bg-gradient-to-b from-zinc-700 to-zinc-800 |
| Border | border-white/60 | border-zinc-600/40 |
| Shadow | shadow-xl shadow-zinc-400/30 | shadow-xl shadow-black/50 |
| Border radius | rounded-3xl | rounded-3xl |
| Padding | p-2 | p-2 |
| Media section | | |
| Border | border-white/40 | border-zinc-600/30 |
| Border radius | rounded-2xl | rounded-2xl |
| Inner card | | |
| Background | bg-white | bg-zinc-900 |
| Border radius | rounded-2xl | rounded-2xl |
| Padding | px-5 py-4 | px-5 py-4 |
Sizing Variations
Preview (compact)
<div className="rounded-2xl p-1.5 w-[300px]">
{}
{}
</div>
Detail Page (full)
<div className="rounded-3xl p-2 max-w-[420px]">
{}
{}
</div>
| Context | Outer Radius | Inner Radius | Padding | Media Height |
|---|
| Preview | rounded-2xl | rounded-xl | p-1.5 | h-[140px] |
| Detail | rounded-3xl | rounded-2xl | p-2 | h-[240px] |
Full Example
function ProductCardLight() {
return (
<div className="bg-gradient-to-b from-[#e8e8ea] to-[#dcdce0] rounded-3xl p-2 w-full max-w-[420px] shadow-xl shadow-zinc-400/30 border border-white/60">
{/* Image section */}
<div className="relative h-[240px] w-full rounded-2xl overflow-hidden mb-2 border border-white/40">
<Image
src="/images/product.jpg"
alt="Product"
fill
className="object-cover"
/>
</div>
{/* Content section */}
<div className="bg-white rounded-2xl px-5 py-4">
{/* Header */}
<div className="flex items-start justify-between gap-3 mb-1.5">
<h3 className="text-lg font-semibold text-zinc-900">
Product Title
</h3>
<span className="text-sm font-medium text-zinc-700">$99</span>
</div>
{/* Description */}
<p className="text-sm text-zinc-500 mb-4">
Product description goes here.
</p>
{/* Tags or features */}
<div className="flex items-center gap-2 text-xs text-zinc-500">
<span>Feature 1</span>
<span className="text-zinc-300">•</span>
<span>Feature 2</span>
</div>
</div>
</div>
);
}
Variations
Without Media Section
<div className="bg-gradient-to-b from-[#e8e8ea] to-[#dcdce0] rounded-2xl p-1.5 border border-white/60">
<div className="bg-white rounded-xl px-4 py-4">
{/* Content only */}
</div>
</div>
Multiple Inner Sections
<div className="bg-gradient-to-b from-[#e8e8ea] to-[#dcdce0] rounded-3xl p-2 border border-white/60">
{}
<div className="h-[200px] rounded-2xl overflow-hidden mb-2">...</div>
{}
<div className="bg-zinc-100 rounded-xl px-4 py-2 mb-2">...</div>
{}
<div className="bg-white rounded-2xl px-5 py-4">...</div>
</div>
Checklist