Shadcn + Vite landing pages that convert (with Iconify)
Quick start
- Identify the single primary conversion action (the one CTA that matters).
- Draft the page using the anatomy below.
- Nail above-the-fold first (title, subheadline, visual, proof, CTA).
- Use below-the-fold to remove doubt (features, proof, FAQ, repeat CTA).
- Implement in shadcn + Tailwind with a distinctive, intentional aesthetic.
If the user provides an existing page, run the same checklist as an audit and propose specific fixes and A/B tests.
Default stack and rules
Default stack:
- React + Vite + TypeScript
- Tailwind CSS (prefer v4)
- shadcn/ui components (added via CLI, then customized)
- Iconify icons (no lucide-react)
Rules:
- One primary CTA, one secondary CTA max above the fold.
- One icon family (or at most two) per page.
- Use shadcn components for accessibility and consistency, but do not let them dictate a generic layout.
For project setup commands (Vite + Tailwind + shadcn), see references/shadcn-vite-setup.md.
Core landing page anatomy
Use this default order unless the user has a strong reason to deviate:
- Navigation (minimal, de-emphasize links that compete with the primary CTA)
- Hero (value + approach + visual)
- Social proof (logos, testimonials, numbers)
- Primary CTA block (repeat CTA if hero is dense)
- Features (value proof, outcomes, differentiators)
- CTA repeated 1 to 2 times (after key persuasion moments)
- Footer (secondary links, legal, contact)
See references/landing-page-anatomy.md for the full checklists and annotated examples.
Above-the-fold checklist
Treat 'above the fold' as the content visible before scrolling on common viewports.
- Define the value you offer (title)
- Detail your approach (subheadline)
- Help the user envision it (visual)
- Establish credibility (social proof)
- Simplify the next step (call to action)
Implementation rules:
- Make the primary CTA unmissable.
- Make the visual concrete (product UI, before/after, outcome preview), not decorative.
- Reduce friction with microcopy (no credit card, 60 seconds, cancel anytime).
Below-the-fold persuasion sequence
- Show clear value (features)
- Motivate to action (social proof)
- Clarify questions (FAQ)
- Repeat your call to action (CTA)
Add sections only if they remove doubt (pricing, security, comparisons, case studies, integrations).
Output patterns to produce
Choose the lightest deliverable that satisfies the user's request.
A) New landing page
Provide:
- Page goal, audience, offer, and primary CTA
- Section-by-section outline mapped to the anatomy
- Hero copy options (3 variations) and CTA microcopy
- Proof plan (what to show and where)
- Implementation: production-grade React code (shadcn + Tailwind + Iconify)
B) Landing page audit
Provide:
- A short diagnosis: what is the page asking the user to do and is it obvious
- Issues and fixes grouped by: Above-the-fold, Below-the-fold, CTA, Proof, Copy, Design/UX, Performance
- 5 to 10 prioritized recommendations (impact vs effort)
- 3 A/B test ideas with clear hypotheses
Shadcn component mapping
Prefer these building blocks:
- Navigation:
Button, Sheet (mobile menu), Separator
- Hero:
Button, Badge, Card (for a framed visual), Input (only if email capture is the CTA)
- Social proof:
Card, Avatar (testimonials), Badge (press or awards)
- Features:
Card, Tabs (only if comparison is critical)
- FAQ:
Accordion
- Final CTA:
Card, Button
Add only the components you actually use.
Icons (Iconify only)
Default icon source: https://icon-sets.iconify.design/
Selection rules:
- Pick one icon set prefix and stay consistent (example:
lucide:* for a clean outline style).
- Use icons to clarify hierarchy, not to decorate.
- Accessibility: decorative icons should be
aria-hidden="true"; meaningful icons should have text nearby.
React usage:
npm i @iconify/react
import { Icon } from '@iconify/react'
export function IconBullet() {
return (
<span className="inline-flex items-center gap-2">
<Icon icon="lucide:check" aria-hidden="true" className="size-4" />
<span>Cancel anytime</span>
</span>
)
}
Notes:
@iconify/react loads icon data on demand by default. Use an offline approach only if the user requires zero network dependence.
- Do not add
lucide-react unless the user explicitly requests it.
Optional: create an AppIcon wrapper for consistent sizing and accessibility. See references/iconify.md.
Design execution (distinctive, non-generic)
Before writing code, decide:
- Purpose: what problem does this page solve and for whom
- Tone: commit to a bold direction (editorial, brutalist, luxury minimal, retro utilitarian, playful, etc.)
- Constraints: performance, accessibility, brand rules
- Differentiation: one memorable detail (layout twist, signature motion moment, unique motif)
Then execute with craft.
Typography
- Choose characterful fonts. Avoid generic defaults.
- Pair one display face (headlines) with a readable body face.
Color and theme
- Use a cohesive palette with 1 to 2 dominant colors and sharp accents.
- Prefer CSS variables (shadcn theme tokens) so the design stays consistent.
Motion
- Use motion as guidance, not decoration: staged reveals, CTA emphasis, proof highlights.
- Prefer a few high-impact moments over many micro animations.
Spatial composition
- Use deliberate hierarchy and whitespace.
- Break the grid only when it improves clarity.
For quick presets, see references/aesthetic-directions.md.
Implementation requirements
- Use semantic HTML and accessible components (labels, focus states, reduced motion support).
- Mobile-first responsive layout.
- Optimize perceived performance: avoid heavy hero media, lazy-load below-the-fold images.
- Keep the primary CTA consistent (label, destination, and promise).
Included starter asset
If the user asks for a starter page scaffold, use:
assets/vite-shadcn-iconify-landing/src/pages/LandingPage.tsx
This is a sectioned template that matches the anatomy and uses shadcn + Iconify.
Reference files
references/shadcn-vite-setup.md: install and configure shadcn/ui for Vite (Tailwind, aliases, CLI)
references/iconify.md: Iconify rules + an AppIcon wrapper component
references/section-templates.md: copy-paste section templates (Navbar, Hero, Proof, Features, FAQ, CTA, Footer)
references/landing-page-anatomy.md: anatomy, above/below-the-fold checklists, annotated examples
references/copy-templates.md: hero formulas, CTA microcopy, FAQ templates
references/aesthetic-directions.md: bold aesthetic presets to pick from quickly
1---2name: redesign-my-landingpage3description: Build, critique, and iterate high-converting marketing or product landing pages using React + Vite + TypeScript + Tailwind and shadcn/ui components, with all icons sourced from Iconify. Use when the user asks for a landing page, sales page, signup page, CRO improvements, above-the-fold vs below-the-fold structure, hero + CTA copy, section order, or wants production-ready shadcn + Vite code.4---56# Shadcn + Vite landing pages that convert (with Iconify)78## Quick start9101. Identify the single primary conversion action (the one CTA that matters).112. Draft the page using the anatomy below.123. Nail above-the-fold first (title, subheadline, visual, proof, CTA).134. Use below-the-fold to remove doubt (features, proof, FAQ, repeat CTA).145. Implement in shadcn + Tailwind with a distinctive, intentional aesthetic.1516If the user provides an existing page, run the same checklist as an audit and propose specific fixes and A/B tests.1718## Default stack and rules1920Default stack:21- React + Vite + TypeScript22- Tailwind CSS (prefer v4)23- shadcn/ui components (added via CLI, then customized)24- Iconify icons (no lucide-react)2526Rules:27- One primary CTA, one secondary CTA max above the fold.28- One icon family (or at most two) per page.29- Use shadcn components for accessibility and consistency, but do not let them dictate a generic layout.3031For project setup commands (Vite + Tailwind + shadcn), see `references/shadcn-vite-setup.md`.3233## Core landing page anatomy3435Use this default order unless the user has a strong reason to deviate:36371. Navigation (minimal, de-emphasize links that compete with the primary CTA)382. Hero (value + approach + visual)393. Social proof (logos, testimonials, numbers)404. Primary CTA block (repeat CTA if hero is dense)415. Features (value proof, outcomes, differentiators)426. CTA repeated 1 to 2 times (after key persuasion moments)437. Footer (secondary links, legal, contact)4445See `references/landing-page-anatomy.md` for the full checklists and annotated examples.4647## Above-the-fold checklist4849Treat 'above the fold' as the content visible before scrolling on common viewports.50511. Define the value you offer (title)522. Detail your approach (subheadline)533. Help the user envision it (visual)544. Establish credibility (social proof)555. Simplify the next step (call to action)5657Implementation rules:58- Make the primary CTA unmissable.59- Make the visual concrete (product UI, before/after, outcome preview), not decorative.60- Reduce friction with microcopy (no credit card, 60 seconds, cancel anytime).6162## Below-the-fold persuasion sequence63641. Show clear value (features)652. Motivate to action (social proof)663. Clarify questions (FAQ)674. Repeat your call to action (CTA)6869Add sections only if they remove doubt (pricing, security, comparisons, case studies, integrations).7071## Output patterns to produce7273Choose the lightest deliverable that satisfies the user's request.7475### A) New landing page7677Provide:78- Page goal, audience, offer, and primary CTA79- Section-by-section outline mapped to the anatomy80- Hero copy options (3 variations) and CTA microcopy81- Proof plan (what to show and where)82- Implementation: production-grade React code (shadcn + Tailwind + Iconify)8384### B) Landing page audit8586Provide:87- A short diagnosis: what is the page asking the user to do and is it obvious88- Issues and fixes grouped by: Above-the-fold, Below-the-fold, CTA, Proof, Copy, Design/UX, Performance89- 5 to 10 prioritized recommendations (impact vs effort)90- 3 A/B test ideas with clear hypotheses9192## Shadcn component mapping9394Prefer these building blocks:95- Navigation: `Button`, `Sheet` (mobile menu), `Separator`96- Hero: `Button`, `Badge`, `Card` (for a framed visual), `Input` (only if email capture is the CTA)97- Social proof: `Card`, `Avatar` (testimonials), `Badge` (press or awards)98- Features: `Card`, `Tabs` (only if comparison is critical)99- FAQ: `Accordion`100- Final CTA: `Card`, `Button`101102Add only the components you actually use.103104## Icons (Iconify only)105106Default icon source: https://icon-sets.iconify.design/107108Selection rules:109- Pick one icon set prefix and stay consistent (example: `lucide:*` for a clean outline style).110- Use icons to clarify hierarchy, not to decorate.111- Accessibility: decorative icons should be `aria-hidden="true"`; meaningful icons should have text nearby.112113React usage:114115```bash116npm i @iconify/react117```118119```tsx120import { Icon } from '@iconify/react'121122export function IconBullet() {123 return (124 <span className="inline-flex items-center gap-2">125 <Icon icon="lucide:check" aria-hidden="true" className="size-4" />126 <span>Cancel anytime</span>127 </span>128 )129}130```131132Notes:133- `@iconify/react` loads icon data on demand by default. Use an offline approach only if the user requires zero network dependence.134- Do not add `lucide-react` unless the user explicitly requests it.135136Optional: create an `AppIcon` wrapper for consistent sizing and accessibility. See `references/iconify.md`.137138## Design execution (distinctive, non-generic)139140Before writing code, decide:141- Purpose: what problem does this page solve and for whom142- Tone: commit to a bold direction (editorial, brutalist, luxury minimal, retro utilitarian, playful, etc.)143- Constraints: performance, accessibility, brand rules144- Differentiation: one memorable detail (layout twist, signature motion moment, unique motif)145146Then execute with craft.147148Typography149- Choose characterful fonts. Avoid generic defaults.150- Pair one display face (headlines) with a readable body face.151152Color and theme153- Use a cohesive palette with 1 to 2 dominant colors and sharp accents.154- Prefer CSS variables (shadcn theme tokens) so the design stays consistent.155156Motion157- Use motion as guidance, not decoration: staged reveals, CTA emphasis, proof highlights.158- Prefer a few high-impact moments over many micro animations.159160Spatial composition161- Use deliberate hierarchy and whitespace.162- Break the grid only when it improves clarity.163164For quick presets, see `references/aesthetic-directions.md`.165166## Implementation requirements167168- Use semantic HTML and accessible components (labels, focus states, reduced motion support).169- Mobile-first responsive layout.170- Optimize perceived performance: avoid heavy hero media, lazy-load below-the-fold images.171- Keep the primary CTA consistent (label, destination, and promise).172173## Included starter asset174175If the user asks for a starter page scaffold, use:176- `assets/vite-shadcn-iconify-landing/src/pages/LandingPage.tsx`177178This is a sectioned template that matches the anatomy and uses shadcn + Iconify.179180## Reference files181182- `references/shadcn-vite-setup.md`: install and configure shadcn/ui for Vite (Tailwind, aliases, CLI)183- `references/iconify.md`: Iconify rules + an `AppIcon` wrapper component184- `references/section-templates.md`: copy-paste section templates (Navbar, Hero, Proof, Features, FAQ, CTA, Footer)185- `references/landing-page-anatomy.md`: anatomy, above/below-the-fold checklists, annotated examples186- `references/copy-templates.md`: hero formulas, CTA microcopy, FAQ templates187- `references/aesthetic-directions.md`: bold aesthetic presets to pick from quickly