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---5
6# Shadcn + Vite landing pages that convert (with Iconify)
7
8## Quick start
9
101. 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.
15
16If the user provides an existing page, run the same checklist as an audit and propose specific fixes and A/B tests.
17
18## Default stack and rules
19
20Default stack:
21- React + Vite + TypeScript
22- Tailwind CSS (prefer v4)
23- shadcn/ui components (added via CLI, then customized)
24- Iconify icons (no lucide-react)
25
26Rules:
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.
30
31For project setup commands (Vite + Tailwind + shadcn), see `references/shadcn-vite-setup.md`.
32
33## Core landing page anatomy
34
35Use this default order unless the user has a strong reason to deviate:
36
371. 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)
44
45See `references/landing-page-anatomy.md` for the full checklists and annotated examples.
46
47## Above-the-fold checklist
48
49Treat 'above the fold' as the content visible before scrolling on common viewports.
50
511. 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)
56
57Implementation 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).
61
62## Below-the-fold persuasion sequence
63
641. Show clear value (features)
652. Motivate to action (social proof)
663. Clarify questions (FAQ)
674. Repeat your call to action (CTA)
68
69Add sections only if they remove doubt (pricing, security, comparisons, case studies, integrations).
70
71## Output patterns to produce
72
73Choose the lightest deliverable that satisfies the user's request.
74
75### A) New landing page
76
77Provide:
78- Page goal, audience, offer, and primary CTA
79- Section-by-section outline mapped to the anatomy
80- Hero copy options (3 variations) and CTA microcopy
81- Proof plan (what to show and where)
82- Implementation: production-grade React code (shadcn + Tailwind + Iconify)
83
84### B) Landing page audit
85
86Provide:
87- A short diagnosis: what is the page asking the user to do and is it obvious
88- Issues and fixes grouped by: Above-the-fold, Below-the-fold, CTA, Proof, Copy, Design/UX, Performance
89- 5 to 10 prioritized recommendations (impact vs effort)
90- 3 A/B test ideas with clear hypotheses
91
92## Shadcn component mapping
93
94Prefer 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`
101
102Add only the components you actually use.
103
104## Icons (Iconify only)
105
106Default icon source: https://icon-sets.iconify.design/
107
108Selection 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.
112
113React usage:
114
115```bash
116npm i @iconify/react
117```
118
119```tsx
120import { Icon } from '@iconify/react'
121
122export 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```
131
132Notes:
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.
135
136Optional: create an `AppIcon` wrapper for consistent sizing and accessibility. See `references/iconify.md`.
137
138## Design execution (distinctive, non-generic)
139
140Before writing code, decide:
141- Purpose: what problem does this page solve and for whom
142- Tone: commit to a bold direction (editorial, brutalist, luxury minimal, retro utilitarian, playful, etc.)
143- Constraints: performance, accessibility, brand rules
144- Differentiation: one memorable detail (layout twist, signature motion moment, unique motif)
145
146Then execute with craft.
147
148Typography
149- Choose characterful fonts. Avoid generic defaults.
150- Pair one display face (headlines) with a readable body face.
151
152Color and theme
153- 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.
155
156Motion
157- Use motion as guidance, not decoration: staged reveals, CTA emphasis, proof highlights.
158- Prefer a few high-impact moments over many micro animations.
159
160Spatial composition
161- Use deliberate hierarchy and whitespace.
162- Break the grid only when it improves clarity.
163
164For quick presets, see `references/aesthetic-directions.md`.
165
166## Implementation requirements
167
168- 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).
172
173## Included starter asset
174
175If the user asks for a starter page scaffold, use:
176- `assets/vite-shadcn-iconify-landing/src/pages/LandingPage.tsx`
177
178This is a sectioned template that matches the anatomy and uses shadcn + Iconify.
179
180## Reference files
181
182- `references/shadcn-vite-setup.md`: install and configure shadcn/ui for Vite (Tailwind, aliases, CLI)
183- `references/iconify.md`: Iconify rules + an `AppIcon` wrapper component
184- `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 examples
186- `references/copy-templates.md`: hero formulas, CTA microcopy, FAQ templates
187- `references/aesthetic-directions.md`: bold aesthetic presets to pick from quickly