1- import { Clock , Zap , AlertTriangle , CheckCircle2 , Brain , FileCode2 , ShieldCheck , X , Check } from "lucide-react" ;
1+ import {
2+ Clock ,
3+ Zap ,
4+ AlertTriangle ,
5+ CheckCircle2 ,
6+ Brain ,
7+ FileCode2 ,
8+ ShieldCheck ,
9+ } from "lucide-react" ;
210import { useInView } from "@/hooks/use-in-view" ;
311
4- const painSolution = [
5- {
6- audience : "Losing context mid-task" ,
7- pain : [ "Context degrades halfway through" , "Every session starts from scratch" , "Manual copy-paste to continue" ] ,
8- solution : [ "Hooks capture and restore state across compaction" , "Persistent memory across sessions" , "Context monitor warns before limits hit" ] ,
9- } ,
10- {
11- audience : "Inconsistent code quality" ,
12- pain : [ "No tests written" , "No linting or formatting" , "Hope-driven development" ] ,
13- solution : [ "TDD enforced on every feature" , "Hooks auto-lint, format, type-check" , "Verifier agents review code" ] ,
14- } ,
15- {
16- audience : "No structure or planning" ,
17- pain : [ "Jumps straight to coding" , "No codebase exploration" , "Scope creep and rework" ] ,
18- solution : [ "/spec plans before coding" , "Semantic search explores codebase" , "Approval gate before implementation" ] ,
19- } ,
20- ] ;
21-
2212const ComparisonSection = ( ) => {
2313 const [ headerRef , headerInView ] = useInView < HTMLDivElement > ( ) ;
2414 const [ cardsRef , cardsInView ] = useInView < HTMLDivElement > ( ) ;
25- const [ tableRef , tableInView ] = useInView < HTMLDivElement > ( ) ;
2615
2716 return (
2817 < section id = "problem" className = "py-16 lg:py-24 px-4 sm:px-6 relative" >
@@ -34,9 +23,12 @@ const ComparisonSection = () => {
3423 ref = { headerRef }
3524 className = { `text-center mb-12 ${ headerInView ? "animate-fade-in-up" : "opacity-0" } ` }
3625 >
37- < h2 className = "text-3xl sm:text-4xl md:text-5xl font-bold text-foreground mb-4" > The Problem</ h2 >
26+ < h2 className = "text-3xl sm:text-4xl md:text-5xl font-bold text-foreground mb-4" >
27+ The Problem
28+ </ h2 >
3829 < p className = "text-muted-foreground text-lg sm:text-xl max-w-2xl mx-auto" >
39- Without structure, Claude Code skips tests, loses context, and produces inconsistent results.
30+ Without structure, Claude Code skips tests, loses context, and
31+ produces inconsistent results.
4032 </ p >
4133 </ div >
4234
@@ -60,18 +52,24 @@ const ComparisonSection = () => {
6052 < div className = "w-3 h-3 rounded-full bg-yellow-500/60" />
6153 < div className = "w-3 h-3 rounded-full bg-blue-500/60" />
6254 </ div >
63- < span className = "text-xs text-muted-foreground ml-2 font-mono" > terminal</ span >
55+ < span className = "text-xs text-muted-foreground ml-2 font-mono" >
56+ terminal
57+ </ span >
6458 </ div >
6559
6660 { /* Terminal content */ }
6761 < div className = "bg-background/50 rounded-b-lg p-4 font-mono text-xs sm:text-sm space-y-3" >
6862 < div >
6963 < span className = "text-blue-400" > you:</ span >
70- < span className = "text-muted-foreground ml-2" > Add user authentication</ span >
64+ < span className = "text-muted-foreground ml-2" >
65+ Add user authentication
66+ </ span >
7167 </ div >
7268 < div >
7369 < span className = "text-primary" > claude:</ span >
74- < span className = "text-muted-foreground ml-2" > What framework? What patterns?</ span >
70+ < span className = "text-muted-foreground ml-2" >
71+ What framework? What patterns?
72+ </ span >
7573 </ div >
7674 < div className = "text-slate-400/80 flex items-center gap-2 text-xs" >
7775 < AlertTriangle className = "h-3 w-3 flex-shrink-0" />
@@ -82,14 +80,18 @@ const ComparisonSection = () => {
8280 < span > No codebase knowledge</ span >
8381 </ div >
8482 < div className = "border-t border-border/50 pt-3" >
85- < span className = "text-muted-foreground" > ...writes code without tests...</ span >
83+ < span className = "text-muted-foreground" >
84+ ...writes code without tests...
85+ </ span >
8686 </ div >
8787 < div className = "text-slate-400/80 flex items-center gap-2 text-xs" >
8888 < AlertTriangle className = "h-3 w-3 flex-shrink-0" />
8989 < span > No TDD enforcement</ span >
9090 </ div >
9191 < div className = "border-t border-border/50 pt-3" >
92- < span className = "text-muted-foreground" > ...commits with issues...</ span >
92+ < span className = "text-muted-foreground" >
93+ ...commits with issues...
94+ </ span >
9395 </ div >
9496 < div className = "text-slate-400/80 flex items-center gap-2 text-xs" >
9597 < AlertTriangle className = "h-3 w-3 flex-shrink-0" />
@@ -120,15 +122,19 @@ const ComparisonSection = () => {
120122 < div className = "w-3 h-3 rounded-full bg-yellow-500/60" />
121123 < div className = "w-3 h-3 rounded-full bg-blue-500/60" />
122124 </ div >
123- < span className = "text-xs text-muted-foreground ml-2 font-mono" > pilot</ span >
125+ < span className = "text-xs text-muted-foreground ml-2 font-mono" >
126+ pilot
127+ </ span >
124128 </ div >
125129
126130 { /* Terminal content */ }
127131 < div className = "bg-background/50 rounded-b-lg p-4 font-mono text-xs sm:text-sm space-y-2.5" >
128132 { /* /spec command */ }
129133 < div >
130134 < span className = "text-primary" > /spec</ span >
131- < span className = "text-muted-foreground ml-2" > "Add user authentication"</ span >
135+ < span className = "text-muted-foreground ml-2" >
136+ "Add user authentication"
137+ </ span >
132138 </ div >
133139 { /* Context injection */ }
134140 < div className = "text-primary/80 flex items-center gap-2 text-xs" >
@@ -141,15 +147,19 @@ const ComparisonSection = () => {
141147 </ div >
142148 < div className = "border-t border-border/50 pt-2.5 text-xs" >
143149 < span className = "text-primary" > → Planning:</ span >
144- < span className = "text-muted-foreground ml-1" > Exploring codebase...</ span >
150+ < span className = "text-muted-foreground ml-1" >
151+ Exploring codebase...
152+ </ span >
145153 </ div >
146154 < div className = "text-primary/80 flex items-center gap-2 text-xs" >
147155 < CheckCircle2 className = "h-3 w-3 flex-shrink-0" />
148156 < span > Plan created → Waiting for approval</ span >
149157 </ div >
150158 < div className = "border-t border-border/50 pt-2.5 text-xs" >
151159 < span className = "text-primary" > → Implementing:</ span >
152- < span className = "text-muted-foreground ml-1" > TDD enforced</ span >
160+ < span className = "text-muted-foreground ml-1" >
161+ TDD enforced
162+ </ span >
153163 </ div >
154164 < div className = "text-primary/80 flex items-center gap-2 text-xs" >
155165 < ShieldCheck className = "h-3 w-3 flex-shrink-0" />
@@ -173,44 +183,6 @@ const ComparisonSection = () => {
173183 </ div >
174184 </ div >
175185 </ div >
176-
177- { /* Pain → Solution Cards */ }
178- < div
179- ref = { tableRef }
180- className = { `mt-12 grid md:grid-cols-3 gap-6 ${ tableInView ? "animate-fade-in-up" : "opacity-0" } ` }
181- >
182- { painSolution . map ( ( card ) => (
183- < div key = { card . audience } className = "rounded-2xl border border-border/50 bg-card/30 backdrop-blur-sm overflow-hidden hover:border-primary/30 transition-colors" >
184- < div className = "px-5 pt-5 pb-3" >
185- < h4 className = "text-sm font-semibold text-foreground mb-1" > { card . audience } </ h4 >
186- </ div >
187- < div className = "px-5 pb-4 space-y-2" >
188- { card . pain . map ( ( p ) => (
189- < div key = { p } className = "flex items-start gap-2 text-xs text-slate-400" >
190- < X className = "h-3.5 w-3.5 text-destructive flex-shrink-0 mt-0.5" />
191- < span > { p } </ span >
192- </ div >
193- ) ) }
194- </ div >
195- < div className = "flex justify-center py-2 text-primary text-lg" > ↓</ div >
196- < div className = "px-5 pb-5 space-y-2 border-t border-primary/20 pt-4 bg-primary/[0.03]" >
197- { card . solution . map ( ( s ) => (
198- < div key = { s } className = "flex items-start gap-2 text-xs text-foreground/80" >
199- < Check className = "h-3.5 w-3.5 text-primary flex-shrink-0 mt-0.5" />
200- < span > { s } </ span >
201- </ div >
202- ) ) }
203- </ div >
204- </ div >
205- ) ) }
206- </ div >
207-
208- { /* Bottom highlight */ }
209- < div className = "mt-10 text-center" >
210- < p className = "text-muted-foreground text-sm sm:text-base max-w-2xl mx-auto" >
211- < span className = "text-primary font-medium" > Start a task. Walk away. Come back to code you can actually ship.</ span >
212- </ p >
213- </ div >
214186 </ div >
215187 </ section >
216188 ) ;
0 commit comments