v0 prompt for a feature grid section
This prompt gets v0 to build a disciplined feature grid: same-span, equal-height cards driven by a features array prop, a benefit-first copy formula, and strict icon rules. It also names what not to build — a bento — because mixed spans are the default drift. Style, palette, type, and motion swap through the customizer without touching the structure.
Last updated
Create a FeatureGrid section for {{product}} in v0 — React, Tailwind, shadcn/ui — as a standalone component that accepts a features array prop, so copy lives in data and I can regenerate this section later without touching the page. This is a uniform feature grid, not a bento: every card gets the same span and height, and the rhythm comes from repetition. If you catch yourself mixing span widths, that is a bento — stop and equalize.
Grid spec:
- 6 cards in 3 columns (two rows), or 3 cards if {{product}} honestly has only three distinct capabilities. Never 4 or 5 — an orphan card breaks the rhythm.
- Equal height enforced by the grid container stretching items, not by padding hacks or truncated copy.
- Each card: icon, feature name of 3 words or fewer, one benefit sentence.
Microcopy formula: write each benefit as what {{audience}} can now do, not what {{product}} does — "Ship refunds in one click", not "Automated refund processing". Derive all six pairs from the product; start every sentence with a verb, no two with the same verb.
Icon rules: lucide-react only, one size (20 or 24px), one treatment — all inside matching tinted squares or all bare, never mixed. Each icon should illustrate the noun in its feature name; prefer consistent-abstract over random-literal.
Hover: the whole card is the target; one effect (lift or border emphasis, chosen per the motion block), transition under 200ms, no per-icon animation.
Above the grid: eyebrow label, a headline claiming the summed benefit, one subhead sentence. Below the grid, one centered link carries "{{cta}}" for readers the grid convinced.
Visual direction:
{{style}}
Palette: {{palette}}
Typography: {{type}}
Motion: {{motion}}
Spacing: 96px section padding top and bottom; 56px header to grid; 24px card gap; inside cards, 16px icon-to-title and 8px title-to-body. Mobile: one column under 640px, two columns up to 1024px, card padding one step down.
After building, check that: cards stay equal height with uneven copy lengths, the desktop grid is strictly 3-up with no spans, every benefit line opens with a distinct verb, icons share one size and treatment, and hover fires across the full card area.Customize it
Runs in your browser. Nothing you type here is sent anywhere.
Create a FeatureGrid section for a project management SaaS in v0 — React, Tailwind, shadcn/ui — as a standalone component that accepts a features array prop, so copy lives in data and I can regenerate this section later without touching the page. This is a uniform feature grid, not a bento: every card gets the same span and height, and the rhythm comes from repetition. If you catch yourself mixing span widths, that is a bento — stop and equalize. Grid spec: - 6 cards in 3 columns (two rows), or 3 cards if a project management SaaS honestly has only three distinct capabilities. Never 4 or 5 — an orphan card breaks the rhythm. - Equal height enforced by the grid container stretching items, not by padding hacks or truncated copy. - Each card: icon, feature name of 3 words or fewer, one benefit sentence. Microcopy formula: write each benefit as what engineering managers at startups can now do, not what a project management SaaS does — "Ship refunds in one click", not "Automated refund processing". Derive all six pairs from the product; start every sentence with a verb, no two with the same verb. Icon rules: lucide-react only, one size (20 or 24px), one treatment — all inside matching tinted squares or all bare, never mixed. Each icon should illustrate the noun in its feature name; prefer consistent-abstract over random-literal. Hover: the whole card is the target; one effect (lift or border emphasis, chosen per the motion block), transition under 200ms, no per-icon animation. Above the grid: eyebrow label, a headline claiming the summed benefit, one subhead sentence. Below the grid, one centered link carries "start a free trial" for readers the grid convinced. Visual direction: Minimal dark style. Near-black canvas (#0A0A0B) with one elevated surface tone (#141416) for cards — never more than two surface steps. Hairline borders (1px, white at 8% opacity) instead of shadows; if a shadow is unavoidable use 0 1px 2px rgba(0,0,0,0.4) and nothing softer. Text in exactly three steps: white at 92% for headings, 60% for body, 40% for captions. Generous negative space — section padding at least 120px on desktop, 64px on mobile. The accent color appears only on interactive elements and one hero highlight, nowhere else. Palette: a strict neutral ramp (white, #F5F5F5, #E5E5E5, #737373, #171717) carries the entire interface; pick one accent and use it only for primary CTAs, active states, and a single hero highlight. If the accent appears more than five times per viewport it stops being an accent. Keep semantic colors (success, error) desaturated so the accent stays in charge. Typography: one geometric sans (a Futura/Poppins-class face) at three weights maximum (400/500/700). Scale: 64-88px hero, 32px section heads, 18px lede, 16px body, 13px caps labels with 0.08em tracking. Tight headline leading (1.05-1.1), relaxed body (1.6). Let the geometry carry the personality — no italics; weight and size do all hierarchy. Motion: none. Zero scroll animations, zero entrance effects — the page is fully composed the instant it paints. Spend the motion budget on input feedback instead: 120-150ms ease-out color and transform transitions on hover and press states only. Hold this constraint absolutely; it is a statement, not an omission. Spacing: 96px section padding top and bottom; 56px header to grid; 24px card gap; inside cards, 16px icon-to-title and 8px title-to-body. Mobile: one column under 640px, two columns up to 1024px, card padding one step down. After building, check that: cards stay equal height with uneven copy lengths, the desktop grid is strictly 3-up with no spans, every benefit line opens with a distinct verb, icons share one size and treatment, and hover fires across the full card area.
Same task in other tools
Questions about this prompt
What's the actual difference between this and a bento grid?
Span and rhythm. A feature grid repeats one card size so six capabilities read as equals; a bento mixes 2x and 1x tiles to editorialize a hierarchy. Use this prompt when your features are peers, and a bento when one capability genuinely deserves twice the real estate.
v0 keeps producing cards of different heights — what's the fix?
It usually means v0 set heights per-card or wrapped cards in non-grid flex containers. Reply with "use CSS grid with stretched items and move all copy into the features array" — equal height should come from the grid container, never from cutting copy to fit.
Can I reuse the features array with a different layout later?
Yes — that separation is the point of the prop. Ask v0 for an alternating feature-detail layout or a tabbed variant that consumes the same array shape; your six title-and-benefit pairs survive unchanged while only the JSX gets regenerated.
Part of the v0 landing-page cluster — start from the main v0 landing page prompt.