11"use client" ;
22
3- function Skeleton ( { className = "" } : { className ?: string } ) {
4- return < div className = { `rounded bg-muted-foreground/10 ${ className } ` } /> ;
5- }
6-
7- /** Simple form wireframe reused in both diagrams */
8- function FormUI ( ) {
3+ function ScheduleItem ( {
4+ time,
5+ label,
6+ color,
7+ } : {
8+ time : string ;
9+ label : string ;
10+ color : string ;
11+ } ) {
912 return (
10- < div className = "border border-border rounded-lg p-2.5 space-y-1.5 bg-muted/30" >
11- { /* Title */ }
12- < Skeleton className = "h-2.5 w-14 mb-1" />
13- { /* Input fields */ }
14- < Skeleton className = "h-4 w-full rounded-sm" />
15- < Skeleton className = "h-4 w-full rounded-sm" />
16- { /* Submit button */ }
17- < Skeleton className = "h-4 w-16 rounded-sm bg-muted-foreground/20 mt-1" />
13+ < div className = "flex items-center gap-2 py-1.5 border-t border-border/50 first:border-t-0" >
14+ < span className = "text-[10px] text-muted-foreground/60 w-12 shrink-0 tabular-nums" >
15+ { time }
16+ </ span >
17+ < span
18+ className = "w-1.5 h-1.5 rounded-full shrink-0"
19+ style = { { background : color } }
20+ />
21+ < span className = "text-[11px] text-muted-foreground" > { label } </ span >
1822 </ div >
1923 ) ;
2024}
2125
2226function InlineModeDiagram ( ) {
2327 return (
2428 < div className = "flex flex-col h-full" >
25- < div className = "text-xs font-medium text-muted- foreground mb-3 text-center" >
29+ < div className = "text-sm font-medium text-foreground text-center mb-3 " >
2630 Inline Mode
2731 </ div >
28- < div className = "flex-1 border border-border rounded-lg bg-background overflow-hidden flex flex-col" >
29- { /* Chat area */ }
30- < div className = "flex-1 p-3 overflow-hidden flex justify-center" >
31- < div className = "w-1/3 min-w-[120px] space-y-3" >
32- { /* User message */ }
33- < div className = "flex justify-end" >
34- < div className = "bg-muted rounded-xl px-3 py-2" >
35- < Skeleton className = "h-2 w-14" />
36- </ div >
32+ < div className = "flex-1 border border-border rounded-2xl bg-background overflow-hidden flex flex-col" >
33+ < div className = "flex-1 p-4 space-y-3 overflow-hidden" >
34+ { /* User message */ }
35+ < div className = "flex justify-end" >
36+ < div className = "bg-muted-foreground/20 rounded-2xl rounded-br px-3.5 py-2 max-w-[85%]" >
37+ < span className = "text-[11px] text-foreground/80" >
38+ I have back-to-back meetings today
39+ </ span >
3740 </ div >
41+ </ div >
3842
39- { /* Assistant text */ }
40- < div className = "space-y-2" >
41- < div className = "space-y-1.5" >
42- < Skeleton className = "h-2 w-full" />
43- < Skeleton className = "h-2 w-3/4" />
44- </ div >
45-
46- { /* Inline UI */ }
47- < FormUI />
48-
49- { /* More text after UI */ }
50- < div className = "space-y-1.5" >
51- < Skeleton className = "h-2 w-4/5" />
43+ { /* AI response */ }
44+ < div className = "space-y-2" >
45+ < p className = "text-[11px] text-muted-foreground/70" >
46+ Packed day! Here's what you've got:
47+ </ p >
48+ < div className = "bg-muted/40 border border-border rounded-xl p-3 w-[92%]" >
49+ < div className = "text-[11px] font-semibold text-foreground/80 mb-2" >
50+ Today's Schedule
5251 </ div >
52+ < ScheduleItem
53+ time = "10:00 AM"
54+ label = "Design Review"
55+ color = "#7aa2f7"
56+ />
57+ < ScheduleItem
58+ time = "1:00 PM"
59+ label = "Sprint Planning"
60+ color = "#bb9af7"
61+ />
62+ < ScheduleItem
63+ time = "3:30 PM"
64+ label = "Team Standup"
65+ color = "#9ece6a"
66+ />
67+ < ScheduleItem
68+ time = "4:30 PM"
69+ label = "Eng All-Hands"
70+ color = "#e0af68"
71+ />
5372 </ div >
5473 </ div >
5574 </ div >
5675
57- { /* Input bar */ }
58- < div className = "p-2 flex justify-center" >
59- < div className = "w-1/3 min-w-[120px] flex items-center gap-2" >
60- < Skeleton className = "h-7 flex-1 rounded-md" />
61- < Skeleton className = "h-7 w-7 rounded-md" />
76+ { /* Prompt input */ }
77+ < div className = "p-2.5" >
78+ < div className = "bg-muted/50 border border-border rounded-xl px-2.5 py-1.5 flex items-center gap-1.5" >
79+ < span className = "text-[10px] text-muted-foreground/40 flex-1" >
80+ Message...
81+ </ span >
82+ < div className = "w-5 h-5 rounded-md bg-muted-foreground/20 flex items-center justify-center" >
83+ < svg
84+ className = "w-2.5 h-2.5 text-muted-foreground/50"
85+ viewBox = "0 0 24 24"
86+ fill = "currentColor"
87+ >
88+ < path
89+ d = "M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"
90+ transform = "rotate(-90 12 12)"
91+ />
92+ </ svg >
93+ </ div >
6294 </ div >
6395 </ div >
6496 </ div >
65- < div className = "text-[10px] text-muted-foreground/60 mt-2 text-center" >
66- Text + UI interleaved in messages
97+ < div className = "mt-3 flex flex-col items-center gap-2" >
98+ < div className = "text-xs font-medium text-muted-foreground" >
99+ AI decides when UI beats text
100+ </ div >
101+ < div className = "flex items-center gap-1.5 text-[10px] text-muted-foreground/50" >
102+ < span > AI chatbots</ span >
103+ < span className = "text-muted-foreground/30" > /</ span >
104+ < span > Copilots</ span >
105+ < span className = "text-muted-foreground/30" > /</ span >
106+ < span > Assistants</ span >
107+ </ div >
108+ </ div >
109+ </ div >
110+ ) ;
111+ }
112+
113+ function LandingPage ( ) {
114+ return (
115+ < div className = "w-full h-full flex flex-col bg-muted/20" >
116+ { /* Nav */ }
117+ < div className = "flex items-center justify-between px-3 py-2 border-b border-border/50" >
118+ < svg
119+ width = "12"
120+ height = "12"
121+ viewBox = "0 0 24 24"
122+ fill = "none"
123+ className = "shrink-0"
124+ >
125+ < rect
126+ x = "2"
127+ y = "14"
128+ width = "5"
129+ height = "8"
130+ rx = "1"
131+ className = "fill-muted-foreground/60"
132+ />
133+ < rect
134+ x = "9.5"
135+ y = "8"
136+ width = "5"
137+ height = "14"
138+ rx = "1"
139+ className = "fill-muted-foreground/60"
140+ />
141+ < rect
142+ x = "17"
143+ y = "2"
144+ width = "5"
145+ height = "20"
146+ rx = "1"
147+ className = "fill-muted-foreground/60"
148+ />
149+ </ svg >
150+ < div className = "flex items-center gap-2" >
151+ < span className = "text-[9px] text-muted-foreground/50" > Pricing</ span >
152+ < span className = "text-[9px] text-muted-foreground/50" > Blog</ span >
153+ < span className = "text-[8px] font-semibold bg-foreground text-background rounded-md px-1.5 py-0.5 whitespace-nowrap" >
154+ Get Started
155+ </ span >
156+ </ div >
157+ </ div >
158+
159+ { /* Hero */ }
160+ < div className = "flex-1 flex flex-col items-center justify-center gap-2.5 text-center px-4" >
161+ < span className = "text-[8px] font-medium text-green-400 bg-green-400/10 border border-green-400/15 rounded-full px-2 py-0.5" >
162+ Trusted by 2,000+ teams
163+ </ span >
164+ < div className = "text-sm font-bold text-foreground leading-tight" >
165+ Analytics that
166+ < br />
167+ move the needle
168+ </ div >
169+ < div className = "text-[10px] text-muted-foreground/50 leading-relaxed" >
170+ Ship what matters. No setup required.
171+ </ div >
172+ < div className = "flex gap-1.5 mt-1" >
173+ < button className = "bg-foreground text-background text-[9px] font-semibold rounded-lg px-3 py-1.5 whitespace-nowrap" >
174+ Start Free
175+ </ button >
176+ < button className = "border border-border text-muted-foreground text-[9px] font-medium rounded-lg px-3 py-1.5 whitespace-nowrap" >
177+ Book Demo
178+ </ button >
179+ </ div >
180+ </ div >
181+
182+ { /* Footer */ }
183+ < div className = "flex justify-center gap-3 py-2 border-t border-border/50" >
184+ < span className = "text-[8px] text-muted-foreground/30" > Privacy</ span >
185+ < span className = "text-[8px] text-muted-foreground/30" > Terms</ span >
186+ < span className = "text-[8px] text-muted-foreground/30" > Status</ span >
67187 </ div >
68188 </ div >
69189 ) ;
@@ -72,28 +192,65 @@ function InlineModeDiagram() {
72192function StandaloneModeDiagram ( ) {
73193 return (
74194 < div className = "flex flex-col h-full" >
75- < div className = "text-xs font-medium text-muted- foreground mb-3 text-center" >
195+ < div className = "text-sm font-medium text-foreground text-center mb-3 " >
76196 Standalone Mode
77197 </ div >
78- < div className = "flex-1 border border-border rounded-lg bg-background overflow-hidden flex flex-row" >
79- { /* Left panel - prompt */ }
80- < div className = "w-[38%] border-r border-border flex flex-col" >
81- < div className = "flex-1" />
82- < div className = "p-3 space-y-2" >
83- < Skeleton className = "h-7 w-full rounded-md" />
84- < Skeleton className = "h-5 w-16 rounded-md" />
198+ < div className = "flex-1 border border-border rounded-2xl bg-background overflow-hidden flex flex-row" >
199+ { /* Left panel - conversation */ }
200+ < div className = "w-[38%] border-r border-border/50 flex flex-col" >
201+ < div className = "flex-1 p-3 space-y-2.5" >
202+ { /* User message */ }
203+ < div className = "flex justify-end" >
204+ < div className = "bg-muted-foreground/20 rounded-2xl rounded-br px-2.5 py-1.5" >
205+ < span className = "text-[10px] text-foreground/80 block leading-relaxed" >
206+ A landing page for my analytics startup
207+ </ span >
208+ </ div >
209+ </ div >
210+ { /* AI text */ }
211+ < p className = "text-[10px] text-muted-foreground/60 leading-relaxed" >
212+ Here's a clean landing page with a hero, nav, and CTAs.
213+ </ p >
85214 </ div >
86- </ div >
87215
88- { /* Right panel - UI preview */ }
89- < div className = "flex-1 p-3 flex items-center justify-center" >
90- < div className = "w-3/4" >
91- < FormUI />
216+ { /* Prompt input */ }
217+ < div className = "p-2.5" >
218+ < div className = "bg-muted/50 border border-border rounded-xl px-2.5 py-1.5 flex items-center gap-1.5" >
219+ < span className = "text-[10px] text-muted-foreground/40 flex-1" >
220+ Message...
221+ </ span >
222+ < div className = "w-5 h-5 rounded-md bg-muted-foreground/20 flex items-center justify-center" >
223+ < svg
224+ className = "w-2.5 h-2.5 text-muted-foreground/50"
225+ viewBox = "0 0 24 24"
226+ fill = "currentColor"
227+ >
228+ < path
229+ d = "M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"
230+ transform = "rotate(-90 12 12)"
231+ />
232+ </ svg >
233+ </ div >
234+ </ div >
92235 </ div >
93236 </ div >
237+
238+ { /* Right panel - landing page */ }
239+ < div className = "flex-1" >
240+ < LandingPage />
241+ </ div >
94242 </ div >
95- < div className = "text-[10px] text-muted-foreground/60 mt-2 text-center" >
96- Prompt separate from UI preview
243+ < div className = "mt-3 flex flex-col items-center gap-2" >
244+ < div className = "text-xs font-medium text-muted-foreground" >
245+ Prompt in, UI out
246+ </ div >
247+ < div className = "flex items-center gap-1.5 text-[10px] text-muted-foreground/50" >
248+ < span > Website builders</ span >
249+ < span className = "text-muted-foreground/30" > /</ span >
250+ < span > Text-to-widget</ span >
251+ < span className = "text-muted-foreground/30" > /</ span >
252+ < span > Dashboards</ span >
253+ </ div >
97254 </ div >
98255 </ div >
99256 ) ;
@@ -103,10 +260,10 @@ export function GenerationModesDiagram() {
103260 return (
104261 < div className = "not-prose my-8" >
105262 < div className = "grid grid-cols-1 sm:grid-cols-2 gap-6" >
106- < div className = "h-[280px ]" >
263+ < div className = "h-[420px ]" >
107264 < InlineModeDiagram />
108265 </ div >
109- < div className = "h-[280px ]" >
266+ < div className = "h-[420px ]" >
110267 < StandaloneModeDiagram />
111268 </ div >
112269 </ div >
0 commit comments