Feature 03
A sticky title/description column paired with a scrolling list of features, each with its own title, description, and media.
feature-03.tsx
import Balancer from 'react-wrap-balancer'
const items = [
{
title: 'Block Library',
description:
'Browse hundreds of production-ready blocks across every category, filtered by preset, type, and layout.',
image:
'https://images.unsplash.com/photo-1750044656775-40fd937a2438?q=80&w=2070&auto=format&fit=crop',
imageAlt: 'Alt 1',
},
{
title: 'Presets & Theming',
description:
'Switch presets and design tokens to match your brand, and preview every block across breakpoints and color modes.',
image:
'https://images.unsplash.com/photo-1441039995991-e5c1178e605a?q=80&w=2053&auto=format&fit=crop',
imageAlt: 'Alt 2',
},
{
title: 'Code Export',
description:
"Copy production-ready code or install it via the CLI, typed and documented so it's ready to ship today.",
image:
'https://images.unsplash.com/photo-1640535092659-7856bff6679d?q=80&w=2071&auto=format&fit=crop',
imageAlt: 'Alt 3',
},
]
export function Feature03() {
return (
<section className="bg-background w-full">
<div className="mx-auto w-full max-w-6xl px-6 py-16 sm:py-24">
<div className="grid grid-cols-1 gap-10 md:grid-cols-[minmax(0,1fr)_minmax(0,1.4fr)] md:gap-16">
<div className="flex flex-col gap-4 md:sticky md:top-24 md:self-start">
<h2 className="text-foreground text-2xl font-semibold tracking-tight sm:text-3xl md:text-4xl">
<Balancer>Three surfaces, one connected workflow.</Balancer>
</h2>
<p className="text-muted-foreground text-sm sm:text-base">
<Balancer>
Flexnative brings block browsing, theming, and code export into
a single environment, built around how teams actually ship UI.
</Balancer>
</p>
</div>
<div className="flex flex-col gap-16 sm:gap-24">
{items.map((item) => (
<div key={item.title} className="flex flex-col gap-4">
<h3 className="text-foreground text-xl font-semibold tracking-tight sm:text-2xl">
<Balancer>{item.title}</Balancer>
</h3>
<p className="text-muted-foreground max-w-2xl text-sm sm:text-base">
<Balancer>{item.description}</Balancer>
</p>
<div className="relative aspect-16/10 w-full overflow-hidden rounded-2xl shadow-sm outline outline-black/10 dark:outline-white/10">
<img
src={item.image}
alt={item.imageAlt}
loading="lazy"
decoding="async"
className="absolute inset-0 size-full object-cover"
/>
</div>
</div>
))}
</div>
</div>
</div>
</section>
)
}