@nextworks/blocks-templates 0.2.0-alpha.12 → 0.2.0-alpha.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +3 -0
  2. package/dist/templates/aiworkflow/PresetThemeVars.d.ts +1 -6
  3. package/dist/templates/aiworkflow/PresetThemeVars.d.ts.map +1 -1
  4. package/dist/templates/aiworkflow/PresetThemeVars.jsx +1 -7
  5. package/dist/templates/aiworkflow/components/CTA.jsx +9 -9
  6. package/dist/templates/aiworkflow/components/Contact.d.ts.map +1 -1
  7. package/dist/templates/aiworkflow/components/Contact.jsx +10 -10
  8. package/dist/templates/aiworkflow/components/FAQ.d.ts.map +1 -1
  9. package/dist/templates/aiworkflow/components/FAQ.jsx +18 -18
  10. package/dist/templates/aiworkflow/components/FeatureMockups.d.ts +5 -0
  11. package/dist/templates/aiworkflow/components/FeatureMockups.d.ts.map +1 -0
  12. package/dist/templates/aiworkflow/components/FeatureMockups.jsx +442 -0
  13. package/dist/templates/aiworkflow/components/Features.d.ts.map +1 -1
  14. package/dist/templates/aiworkflow/components/Features.jsx +16 -14
  15. package/dist/templates/aiworkflow/components/Footer.d.ts.map +1 -1
  16. package/dist/templates/aiworkflow/components/Footer.jsx +13 -9
  17. package/dist/templates/aiworkflow/components/Hero.d.ts.map +1 -1
  18. package/dist/templates/aiworkflow/components/Hero.jsx +664 -416
  19. package/dist/templates/aiworkflow/components/Navbar.d.ts.map +1 -1
  20. package/dist/templates/aiworkflow/components/Navbar.jsx +13 -14
  21. package/dist/templates/aiworkflow/components/Pricing.d.ts.map +1 -1
  22. package/dist/templates/aiworkflow/components/Pricing.jsx +25 -21
  23. package/dist/templates/aiworkflow/components/ProcessTimeline.d.ts.map +1 -1
  24. package/dist/templates/aiworkflow/components/ProcessTimeline.jsx +15 -15
  25. package/dist/templates/aiworkflow/components/Testimonials.d.ts.map +1 -1
  26. package/dist/templates/aiworkflow/components/Testimonials.jsx +14 -10
  27. package/dist/templates/aiworkflow/components/TrustBadges.d.ts.map +1 -1
  28. package/dist/templates/aiworkflow/components/TrustBadges.jsx +14 -12
  29. package/dist/templates/aiworkflow/themes/animation.d.ts +7 -0
  30. package/dist/templates/aiworkflow/themes/animation.d.ts.map +1 -0
  31. package/dist/templates/aiworkflow/themes/animation.jsx +9 -0
  32. package/dist/templates/aiworkflow/themes/default.d.ts +7 -0
  33. package/dist/templates/aiworkflow/themes/default.d.ts.map +1 -0
  34. package/dist/templates/aiworkflow/themes/default.jsx +9 -0
  35. package/dist/templates/aiworkflow/themes/test.d.ts +7 -0
  36. package/dist/templates/aiworkflow/themes/test.d.ts.map +1 -0
  37. package/dist/templates/aiworkflow/themes/test.jsx +39 -0
  38. package/dist/templates/gallery/PresetThemeVars.d.ts.map +1 -1
  39. package/dist/templates/gallery/PresetThemeVars.jsx +2 -0
  40. package/dist/templates/gallery/page.d.ts.map +1 -1
  41. package/dist/templates/gallery/page.jsx +381 -34
  42. package/package.json +3 -3
@@ -0,0 +1,442 @@
1
+ // AUTO-GENERATED from cli/kits/blocks by scripts/sync-kit-to-packages.mjs
2
+ // Do not edit this file directly. Edit the kit source instead.
3
+ "use client";
4
+ function WindowFrame({ title, eyebrow, rightLabel, children, }) {
5
+ return (<div className="aspect-[16/10] w-full overflow-hidden rounded-[22px] border border-white/10 bg-[#050505] text-white shadow-[0_20px_60px_rgba(0,0,0,0.45)]">
6
+ <div className="flex h-full flex-col bg-[radial-gradient(circle_at_top,rgba(255,255,255,0.06),transparent_34%),linear-gradient(180deg,#0a0a0a_0%,#050505_100%)]">
7
+ <div className="flex items-center justify-between border-b border-white/10 px-4 py-3">
8
+ <div className="flex items-center gap-3">
9
+ <div className="grid h-8 w-8 place-items-center rounded-lg border border-white/10 bg-white/5">
10
+ <div className="grid grid-cols-2 gap-[3px]">
11
+ <span className="h-1 w-1 rounded-full bg-white/90"/>
12
+ <span className="h-1 w-1 rounded-full bg-white/35"/>
13
+ <span className="h-1 w-1 rounded-full bg-white/35"/>
14
+ <span className="h-1 w-1 rounded-full bg-white/90"/>
15
+ </div>
16
+ </div>
17
+
18
+ <div>
19
+ <div className="flex items-center gap-2">
20
+ <p className="text-[12px] font-semibold tracking-wide text-white/95">
21
+ {title}
22
+ </p>
23
+ {eyebrow ? (<span className="rounded-full border border-white/10 bg-white/5 px-2 py-0.5 text-[9px] uppercase tracking-[0.22em] text-white/45">
24
+ {eyebrow}
25
+ </span>) : null}
26
+ </div>
27
+ <p className="mt-0.5 text-[9px] uppercase tracking-[0.24em] text-white/35">
28
+ Session · live repo
29
+ </p>
30
+ </div>
31
+ </div>
32
+
33
+ {rightLabel ? (<div className="flex items-center gap-2 text-[9px] uppercase tracking-[0.24em] text-white/40">
34
+ <span>{rightLabel}</span>
35
+ <span className="inline-flex items-center gap-1 rounded-full border border-white/10 bg-white/5 px-2 py-1 text-white/65">
36
+ <span className="h-1.5 w-1.5 rounded-full bg-cyan-300"/>
37
+ active
38
+ </span>
39
+ </div>) : null}
40
+ </div>
41
+
42
+ <div className="flex-1">{children}</div>
43
+ </div>
44
+ </div>);
45
+ }
46
+ function SectionLabel({ children }) {
47
+ return (<p className="mb-3 text-[9px] font-medium uppercase tracking-[0.24em] text-white/30">
48
+ {children}
49
+ </p>);
50
+ }
51
+ function CodeLine({ number, text, active = false, }) {
52
+ return (<div className={`grid grid-cols-[22px_1fr] gap-3 px-4 py-1.5 text-[10px] ${active ? "bg-cyan-300/10" : ""}`}>
53
+ <span className="text-right font-mono text-white/28">{number}</span>
54
+ <span className="font-mono text-white/78">{text}</span>
55
+ </div>);
56
+ }
57
+ export function TaskToCodeMockup() {
58
+ return (<WindowFrame title="Agent workspace" eyebrow="Session 03" rightLabel="Repo apps/web">
59
+ <div className="grid h-full grid-cols-[1.1fr_1.4fr_1.8fr_72px]">
60
+ <div className="border-r border-white/10 p-3">
61
+ <SectionLabel>Task navigator</SectionLabel>
62
+
63
+ <div className="space-y-2.5">
64
+ {[
65
+ {
66
+ index: "1",
67
+ title: "Fix auth flow",
68
+ body: "Preserve intended destination after the OAuth callback.",
69
+ active: true,
70
+ },
71
+ {
72
+ index: "2",
73
+ title: "Refactor pricing page",
74
+ body: "Extract repeated pricing sections into reusable blocks.",
75
+ },
76
+ {
77
+ index: "3",
78
+ title: "Ship command palette",
79
+ body: "Add global search, shortcuts, and action routing.",
80
+ },
81
+ ].map((item) => (<div key={item.index} className={`rounded-xl border p-3 ${item.active
82
+ ? "border-cyan-300/50 bg-white/[0.04] shadow-[inset_2px_0_0_0_rgba(103,232,249,0.95)]"
83
+ : "border-white/8 bg-white/[0.025]"}`}>
84
+ <div className="mb-2 flex items-center justify-between">
85
+ <div className="flex items-center gap-2">
86
+ <span className="grid h-5 w-5 place-items-center rounded-full border border-white/10 text-[9px] text-white/65">
87
+ {item.index}
88
+ </span>
89
+ <p className="text-[11px] font-semibold text-white/90">
90
+ {item.title}
91
+ </p>
92
+ </div>
93
+ <span className="text-[8px] uppercase tracking-[0.22em] text-white/30">
94
+ {item.active ? "open" : "queued"}
95
+ </span>
96
+ </div>
97
+ <p className="text-[10px] leading-4 text-white/45">
98
+ {item.body}
99
+ </p>
100
+ </div>))}
101
+ </div>
102
+ </div>
103
+
104
+ <div className="border-r border-white/10 p-3">
105
+ <SectionLabel>Session focus · fix auth flow</SectionLabel>
106
+
107
+ <div className="space-y-2">
108
+ <div className="rounded-xl border border-white/10 bg-white/[0.03] p-3">
109
+ <div className="mb-2 flex items-center justify-between">
110
+ <span className="text-[8px] uppercase tracking-[0.22em] text-white/28">
111
+ edit
112
+ </span>
113
+ <span className="rounded-full border border-white/10 bg-white/5 px-2 py-0.5 text-[8px] uppercase tracking-[0.22em] text-white/45">
114
+ safe patch
115
+ </span>
116
+ </div>
117
+ <p className="text-[10px] leading-4 text-white/82">
118
+ Guard empty return paths and preserve intended destination.
119
+ </p>
120
+ </div>
121
+
122
+ <div className="rounded-xl border border-white/10 bg-white/[0.03] p-3">
123
+ <span className="text-[8px] uppercase tracking-[0.22em] text-white/28">
124
+ task
125
+ </span>
126
+ <p className="mt-2 text-[10px] leading-4 text-white/62">
127
+ Fix the OAuth callback redirect so the app preserves the
128
+ intended destination after sign-in.
129
+ </p>
130
+ </div>
131
+
132
+ <div className="space-y-1.5 pt-1 text-[10px] text-white/38">
133
+ <p>Read app/auth/callback/page.tsx</p>
134
+ <p>Read lib/auth/normalize-return.ts</p>
135
+ <p>Drafting change set</p>
136
+ <div className="mt-3 flex items-center gap-2 text-white/58">
137
+ <span className="h-1.5 w-1.5 rounded-full bg-cyan-300"/>
138
+ Running
139
+ </div>
140
+ </div>
141
+ </div>
142
+ </div>
143
+
144
+ <div className="border-r border-white/10 py-3">
145
+ <SectionLabel>
146
+ <span className="px-4">Patch preview</span>
147
+ </SectionLabel>
148
+
149
+ <div className="space-y-[1px]">
150
+ <CodeLine number="38" text="const safeReturnTo ="/>
151
+ <CodeLine number="39" text="normalizeReturnTo(searchParams.get('returnTo'))"/>
152
+ <CodeLine number="40" text="const shouldTrackRedirect = safeReturnTo !== null" active/>
153
+ <CodeLine number="41" text="const fallbackDestination = '/dashboard'" active/>
154
+ <CodeLine number="42" text="const destination = safeReturnTo ?? '/dashboard'"/>
155
+ <div className="px-4 pt-3 text-[10px] text-white/32">
156
+ <span className="text-cyan-300">●</span> Applying change.
157
+ </div>
158
+ </div>
159
+ </div>
160
+
161
+ <div className="p-3">
162
+ <div className="space-y-2">
163
+ {[
164
+ ["Files", "2"],
165
+ ["Edits", "12"],
166
+ ["Checks", "3/2"],
167
+ ].map(([label, value]) => (<div key={label} className="rounded-xl border border-white/10 bg-white/[0.035] px-3 py-3 text-center">
168
+ <p className="text-[8px] uppercase tracking-[0.22em] text-white/28">
169
+ {label}
170
+ </p>
171
+ <p className="mt-1 text-[13px] font-semibold text-white/88">
172
+ {value}
173
+ </p>
174
+ </div>))}
175
+ </div>
176
+ </div>
177
+ </div>
178
+ </WindowFrame>);
179
+ }
180
+ export function TranscriptDiffMockup() {
181
+ return (<WindowFrame title="Live transcript" eyebrow="Dual pane" rightLabel="Diff linked">
182
+ <div className="grid h-full grid-cols-[1.05fr_1.4fr]">
183
+ <div className="border-r border-white/10 p-3">
184
+ <SectionLabel>Transcript</SectionLabel>
185
+
186
+ <div className="space-y-3">
187
+ {[
188
+ {
189
+ who: "U",
190
+ text: "Can you fix the callback so users return to the page they started from?",
191
+ },
192
+ {
193
+ who: "A",
194
+ text: "Reading the auth flow and tracing redirect handling now.",
195
+ },
196
+ {
197
+ who: "A",
198
+ text: "Found the issue: the fallback path replaces the intended return target when the param is missing or malformed.",
199
+ },
200
+ {
201
+ who: "A",
202
+ text: "Drafting a guarded patch and running checks.",
203
+ },
204
+ ].map((msg, i) => (<div key={i} className="flex items-start gap-2.5">
205
+ <div className={`grid h-6 w-6 shrink-0 place-items-center rounded-full text-[9px] font-semibold ${msg.who === "A"
206
+ ? "bg-white/10 text-white/85"
207
+ : "bg-cyan-300/15 text-cyan-200"}`}>
208
+ {msg.who}
209
+ </div>
210
+ <div className="max-w-[92%] rounded-2xl border border-white/10 bg-white/[0.035] px-3 py-2">
211
+ <p className="text-[10px] leading-4 text-white/78">
212
+ {msg.text}
213
+ </p>
214
+ </div>
215
+ </div>))}
216
+
217
+ <div className="pt-1">
218
+ <div className="mb-1 flex items-center justify-between text-[8px] uppercase tracking-[0.22em] text-white/28">
219
+ <span>Agent activity</span>
220
+ <span>independent scroll</span>
221
+ </div>
222
+ <div className="h-1.5 overflow-hidden rounded-full bg-white/8">
223
+ <div className="h-full w-[62%] rounded-full bg-cyan-300/85"/>
224
+ </div>
225
+ </div>
226
+ </div>
227
+ </div>
228
+
229
+ <div className="grid grid-rows-[auto_1fr]">
230
+ <div className="border-b border-white/10 px-4 py-3">
231
+ <div className="flex items-center justify-between">
232
+ <div>
233
+ <SectionLabel>Live diff</SectionLabel>
234
+ </div>
235
+ <div className="flex items-center gap-2 text-[8px] uppercase tracking-[0.22em] text-white/35">
236
+ <span>app/auth/callback/page.tsx</span>
237
+ <span className="rounded-full border border-white/10 bg-white/5 px-2 py-1 text-white/55">
238
+ +8 / -2
239
+ </span>
240
+ </div>
241
+ </div>
242
+ </div>
243
+
244
+ <div className="grid grid-cols-2">
245
+ <div className="border-r border-white/10 py-3">
246
+ <div className="px-4 pb-2 text-[9px] uppercase tracking-[0.22em] text-white/25">
247
+ Before
248
+ </div>
249
+ <div className="space-y-[1px]">
250
+ <CodeLine number="18" text="const destination = '/dashboard'"/>
251
+ <CodeLine number="19" text=""/>
252
+ <CodeLine number="20" text="if (user) {"/>
253
+ <CodeLine number="21" text=" redirect(destination)"/>
254
+ <CodeLine number="22" text="}"/>
255
+ </div>
256
+ </div>
257
+
258
+ <div className="py-3">
259
+ <div className="px-4 pb-2 text-[9px] uppercase tracking-[0.22em] text-white/25">
260
+ After
261
+ </div>
262
+ <div className="space-y-[1px]">
263
+ <CodeLine number="18" text="const safeReturnTo = normalizeReturnTo(...)" active/>
264
+ <CodeLine number="19" text="const destination = safeReturnTo ?? '/dashboard'" active/>
265
+ <CodeLine number="20" text=""/>
266
+ <CodeLine number="21" text="if (user) {"/>
267
+ <CodeLine number="22" text=" redirect(destination)"/>
268
+ </div>
269
+
270
+ <div className="px-4 pt-4">
271
+ <div className="rounded-2xl border border-white/10 bg-white/[0.03] p-3">
272
+ <div className="mb-2 flex items-center justify-between">
273
+ <p className="text-[10px] font-semibold text-white/82">
274
+ Checks running
275
+ </p>
276
+ <span className="text-[8px] uppercase tracking-[0.22em] text-white/35">
277
+ 2 passed · 1 in progress
278
+ </span>
279
+ </div>
280
+ <div className="grid grid-cols-3 gap-2">
281
+ {["Typecheck", "Lint", "Route test"].map((item, i) => (<div key={item} className="rounded-xl border border-white/10 bg-black/20 px-2 py-2 text-center">
282
+ <p className="text-[9px] text-white/65">{item}</p>
283
+ <p className="mt-1 text-[9px] font-medium text-white/85">
284
+ {i < 2 ? "Passed" : "Running"}
285
+ </p>
286
+ </div>))}
287
+ </div>
288
+ </div>
289
+ </div>
290
+ </div>
291
+ </div>
292
+ </div>
293
+ </div>
294
+ </WindowFrame>);
295
+ }
296
+ export function ReviewQueueMockup() {
297
+ return (<WindowFrame title="Review queue" eyebrow="Human gate" rightLabel="Patch summary">
298
+ <div className="grid h-full grid-cols-[1.1fr_1.35fr]">
299
+ <div className="border-r border-white/10 p-3">
300
+ <SectionLabel>Exceptions only</SectionLabel>
301
+
302
+ <div className="space-y-2.5">
303
+ {[
304
+ {
305
+ title: "Rename helper import",
306
+ status: "Auto-approved",
307
+ body: "No behavior change. Formatting only.",
308
+ },
309
+ {
310
+ title: "Guard malformed returnTo",
311
+ status: "Needs review",
312
+ body: "Redirect logic changed for invalid callback paths.",
313
+ active: true,
314
+ },
315
+ {
316
+ title: "Remove stale logger",
317
+ status: "Auto-approved",
318
+ body: "Unused debug output removed.",
319
+ },
320
+ ].map((item) => (<div key={item.title} className={`rounded-2xl border p-3 ${item.active
321
+ ? "border-cyan-300/45 bg-white/[0.045]"
322
+ : "border-white/10 bg-white/[0.025]"}`}>
323
+ <div className="flex items-start justify-between gap-3">
324
+ <div>
325
+ <p className="text-[11px] font-semibold text-white/88">
326
+ {item.title}
327
+ </p>
328
+ <p className="mt-1 text-[10px] leading-4 text-white/46">
329
+ {item.body}
330
+ </p>
331
+ </div>
332
+ <span className={`shrink-0 rounded-full border px-2 py-1 text-[8px] uppercase tracking-[0.22em] ${item.active
333
+ ? "border-cyan-300/30 bg-cyan-300/10 text-cyan-100"
334
+ : "border-white/10 bg-white/5 text-white/48"}`}>
335
+ {item.status}
336
+ </span>
337
+ </div>
338
+ </div>))}
339
+ </div>
340
+
341
+ <div className="mt-4 rounded-2xl border border-white/10 bg-white/[0.03] p-3">
342
+ <div className="mb-3 flex items-center justify-between">
343
+ <p className="text-[10px] font-semibold text-white/82">
344
+ Queue policy
345
+ </p>
346
+ <span className="text-[8px] uppercase tracking-[0.22em] text-white/32">
347
+ Active
348
+ </span>
349
+ </div>
350
+ <div className="space-y-2 text-[10px] text-white/55">
351
+ <div className="flex items-center justify-between">
352
+ <span>Routine edits auto-ship</span>
353
+ <span className="text-white/82">On</span>
354
+ </div>
355
+ <div className="flex items-center justify-between">
356
+ <span>Behavior changes require review</span>
357
+ <span className="text-white/82">On</span>
358
+ </div>
359
+ </div>
360
+ </div>
361
+ </div>
362
+
363
+ <div className="p-3">
364
+ <SectionLabel>Selected patch</SectionLabel>
365
+
366
+ <div className="rounded-[20px] border border-white/10 bg-white/[0.03] p-4">
367
+ <div className="flex items-center justify-between">
368
+ <div>
369
+ <p className="text-[12px] font-semibold text-white/92">
370
+ Redirect safety patch
371
+ </p>
372
+ <p className="mt-1 text-[10px] text-white/42">
373
+ auth callback · medium confidence impact
374
+ </p>
375
+ </div>
376
+ <span className="rounded-full border border-cyan-300/30 bg-cyan-300/10 px-2 py-1 text-[8px] uppercase tracking-[0.22em] text-cyan-100">
377
+ review required
378
+ </span>
379
+ </div>
380
+
381
+ <div className="mt-4 grid grid-cols-3 gap-2">
382
+ {[
383
+ ["Files touched", "2"],
384
+ ["Risk", "Medium"],
385
+ ["Checks", "Passed"],
386
+ ].map(([label, value]) => (<div key={label} className="rounded-xl border border-white/10 bg-black/20 px-3 py-3">
387
+ <p className="text-[8px] uppercase tracking-[0.22em] text-white/28">
388
+ {label}
389
+ </p>
390
+ <p className="mt-1 text-[11px] font-semibold text-white/86">
391
+ {value}
392
+ </p>
393
+ </div>))}
394
+ </div>
395
+
396
+ <div className="mt-4 rounded-2xl border border-white/10 bg-black/20 p-3">
397
+ <p className="text-[9px] uppercase tracking-[0.22em] text-white/28">
398
+ Summary
399
+ </p>
400
+ <ul className="mt-2 space-y-2 text-[10px] leading-4 text-white/68">
401
+ <li>• Normalizes callback return targets before redirect.</li>
402
+ <li>
403
+ • Preserves intended destination when the value is valid.
404
+ </li>
405
+ <li>
406
+ • Falls back to /dashboard only when the param is unsafe.
407
+ </li>
408
+ </ul>
409
+ </div>
410
+
411
+ <div className="mt-4 grid grid-cols-[1fr_auto] gap-3">
412
+ <div className="rounded-2xl border border-white/10 bg-black/20 p-3">
413
+ <p className="text-[9px] uppercase tracking-[0.22em] text-white/28">
414
+ Reviewer note
415
+ </p>
416
+ <p className="mt-2 text-[10px] leading-4 text-white/74">
417
+ This changes navigation behavior for malformed callback
418
+ params. Requesting human confirmation before merge.
419
+ </p>
420
+ </div>
421
+
422
+ <div className="flex flex-col justify-end gap-2">
423
+ <button className="rounded-xl border border-white/12 bg-white/6 px-4 py-2 text-[10px] font-medium text-white/82">
424
+ Send back
425
+ </button>
426
+ <button className="rounded-xl border border-cyan-300/30 bg-cyan-300/12 px-4 py-2 text-[10px] font-medium text-cyan-100">
427
+ Approve patch
428
+ </button>
429
+ </div>
430
+ </div>
431
+ </div>
432
+ </div>
433
+ </div>
434
+ </WindowFrame>);
435
+ }
436
+ export function FeatureMockupsPreview() {
437
+ return (<div className="space-y-8 bg-black p-8">
438
+ <TaskToCodeMockup />
439
+ <TranscriptDiffMockup />
440
+ <ReviewQueueMockup />
441
+ </div>);
442
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"Features.d.ts","sourceRoot":"","sources":["../../../../src/templates/aiworkflow/components/Features.tsx"],"names":[],"mappings":"AA+BA,wBAAgB,QAAQ,gCAoCvB"}
1
+ {"version":3,"file":"Features.d.ts","sourceRoot":"","sources":["../../../../src/templates/aiworkflow/components/Features.tsx"],"names":[],"mappings":"AA+BA,wBAAgB,QAAQ,gCAsCvB"}
@@ -4,26 +4,28 @@
4
4
  import { Features as SharedFeatures } from "@nextworks/blocks-sections";
5
5
  const featuresData = [
6
6
  {
7
- imageSrc: "/placeholders/saas_dashboard/projectBoard.png",
8
- imageAlt: "Workflow builder and orchestration canvas",
9
- headingText: "Design workflows from plain-language requests",
10
- subheadingText: "AI turns a request into a structured workflow with triggers, conditions, tool actions, and approval checkpoints.",
7
+ imageSrc: "/placeholders/aiworkflow/task.svg",
8
+ imageAlt: "Task navigator and repo context view",
9
+ headingText: "Turn plain-language tasks into code changes",
10
+ subheadingText: "The agent reads the repo, traces the issue, and shapes a safe patch with clear context.",
11
11
  },
12
12
  {
13
- imageSrc: "/placeholders/saas_dashboard/analytics.png",
14
- imageAlt: "Live execution feed and analytics dashboard",
15
- headingText: "See every step as it runs",
16
- subheadingText: "Track execution state, latency, retries, and downstream updates in a live run feed your team can actually follow.",
13
+ imageSrc: "/placeholders/aiworkflow/live.svg",
14
+ imageAlt: "Transcript, live diff, and editor output",
15
+ headingText: "Watch the transcript and diff move independently",
16
+ subheadingText: "The agent can keep reading, edit the file, and land a result without forcing both panes to move in lockstep.",
17
17
  },
18
18
  {
19
- imageSrc: "/placeholders/saas_dashboard/chat.png",
20
- imageAlt: "Approval inbox and team collaboration interface",
21
- headingText: "Route approvals only where they matter",
22
- subheadingText: "Let policy decide when humans need to review while routine decisions stay automated and fully auditable.",
19
+ imageSrc: "/placeholders/aiworkflow/review.svg",
20
+ imageAlt: "Review queue and patch summary panel",
21
+ headingText: "Review only the changes that matter",
22
+ subheadingText: "Keep the agent moving on routine edits while exceptions surface only when a human needs to step in.",
23
23
  },
24
24
  ];
25
25
  export function Features() {
26
- return (<SharedFeatures sectionHeading="One system for requests, approvals, execution, and visibility" sectionSubheading="Compose AI-assisted workflows that pull in context, coordinate teams, and keep every system in sync." featuresData={featuresData} section={{ className: "bg-background py-18 md:py-22 lg:py-24" }} container={{ className: "max-w-7xl mx-auto px-6 md:px-8 lg:px-10" }} header={{ className: "mb-12 text-center md:mb-14" }} heading={{
26
+ return (<SharedFeatures sectionHeading="One system for requests, code, execution, and visibility" sectionSubheading="Turn a task into context, a patch, and a live result without losing the thread." featuresData={featuresData} section={{
27
+ className: "bg-[var(--section-bg)] py-18 md:py-22 lg:py-24",
28
+ }} container={{ className: "max-w-7xl mx-auto px-6 md:px-8 lg:px-10" }} header={{ className: "mb-12 text-center md:mb-14" }} heading={{
27
29
  className: "font-outfit text-3xl font-semibold text-[var(--heading-fg)] md:text-4xl lg:text-5xl",
28
30
  }} subheading={{
29
31
  className: "mx-auto max-w-3xl font-inter text-base leading-7 text-[var(--subheading-fg)] md:text-lg",
@@ -35,5 +37,5 @@ export function Features() {
35
37
  className: "font-inter text-xl font-semibold leading-tight text-[var(--card-title-fg)]",
36
38
  }} cardSubheading={{
37
39
  className: "font-inter text-sm leading-6 text-[var(--card-muted-fg)] md:text-base",
38
- }} ariaLabel="AI workflow features"/>);
40
+ }} ariaLabel="AI coding agent features"/>);
39
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../src/templates/aiworkflow/components/Footer.tsx"],"names":[],"mappings":"AAQA,wBAAgB,MAAM,gCAuGrB"}
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../src/templates/aiworkflow/components/Footer.tsx"],"names":[],"mappings":"AAQA,wBAAgB,MAAM,gCA2GrB"}
@@ -6,7 +6,7 @@ import { Github, Linkedin, Mail, Twitter } from "lucide-react";
6
6
  export function Footer() {
7
7
  return (<SharedFooter id="footer" footerBrandName="FlowPilot AI" footerNavLinks={[
8
8
  {
9
- heading: "Platform",
9
+ heading: "Product",
10
10
  links: [
11
11
  { name: "Features", href: "#features" },
12
12
  { name: "Pricing", href: "#pricing" },
@@ -17,14 +17,14 @@ export function Footer() {
17
17
  {
18
18
  heading: "Use cases",
19
19
  links: [
20
- { name: "Revenue operations", href: "#features" },
21
- { name: "Launch workflows", href: "#features" },
22
- { name: "Approvals", href: "#faq" },
23
- { name: "Integrations", href: "#features" },
20
+ { name: "Bug fixes", href: "#features" },
21
+ { name: "Refactors", href: "#features" },
22
+ { name: "Reviews", href: "#faq" },
23
+ { name: "Tooling", href: "#features" },
24
24
  ],
25
25
  },
26
26
  {
27
- heading: "Company",
27
+ heading: "Resources",
28
28
  links: [
29
29
  { name: "About", href: "#home" },
30
30
  { name: "Security", href: "#faq" },
@@ -65,9 +65,13 @@ export function Footer() {
65
65
  className: "w-full border-t border-[var(--footer-border)] bg-[var(--footer-bg)] text-[var(--footer-fg)]",
66
66
  }} container={{ className: "max-w-7xl mx-auto px-6" }} brand={{
67
67
  className: "font-outfit text-xl font-semibold text-[var(--footer-heading-fg)] md:text-2xl",
68
- }} brandWrapper={{ className: "flex flex-col items-start text-left lg:pr-8" }} navSection={{
68
+ }} brandWrapper={{
69
+ className: "flex flex-col items-start text-left lg:pr-8",
70
+ }} navSection={{
69
71
  className: "flex flex-col items-start justify-between gap-8 pt-10 pb-12 lg:flex-row",
70
- }} navGroup={{ className: "flex min-w-[150px] flex-col items-start text-left" }} navHeading={{
72
+ }} navGroup={{
73
+ className: "flex min-w-[150px] flex-col items-start text-left",
74
+ }} navHeading={{
71
75
  className: "mb-4 font-inter text-sm font-semibold uppercase tracking-wider text-[var(--footer-heading-fg)]",
72
76
  }} navLink={{
73
77
  className: "mb-3 block font-inter text-sm text-[var(--footer-link-fg)] transition-colors duration-200 hover:text-[var(--footer-link-hover-fg)]",
@@ -77,5 +81,5 @@ export function Footer() {
77
81
  className: "rounded-lg p-3 text-[var(--footer-link-fg)] transition-all duration-200 hover:bg-[var(--footer-link-hover-bg)] hover:text-[var(--footer-link-hover-fg)]",
78
82
  }} socialIcon={{ className: "h-5 w-5" }} copyright={{
79
83
  className: "border-t border-[var(--footer-border)] py-6 text-center font-inter text-sm text-[var(--footer-muted-fg)]",
80
- }} ariaLabel="AI workflow footer"/>);
84
+ }} ariaLabel="AI coding agent footer"/>);
81
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Hero.d.ts","sourceRoot":"","sources":["../../../../src/templates/aiworkflow/components/Hero.tsx"],"names":[],"mappings":"AAijBA,wBAAgB,IAAI,gCA4EnB"}
1
+ {"version":3,"file":"Hero.d.ts","sourceRoot":"","sources":["../../../../src/templates/aiworkflow/components/Hero.tsx"],"names":[],"mappings":"AA2yBA,wBAAgB,IAAI,gCAyEnB"}