create-agentic-app 1.1.56 → 1.1.58

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 (50) hide show
  1. package/package.json +1 -1
  2. package/template/.agents/skills/security-scanner/SKILL.md +157 -0
  3. package/template/.agents/skills/security-scanner/references/A01-broken-access-control.md +136 -0
  4. package/template/.agents/skills/security-scanner/references/A02-security-misconfiguration.md +130 -0
  5. package/template/.agents/skills/security-scanner/references/A03-software-supply-chain-failures.md +117 -0
  6. package/template/.agents/skills/security-scanner/references/A04-cryptographic-failures.md +141 -0
  7. package/template/.agents/skills/security-scanner/references/A05-injection.md +155 -0
  8. package/template/.agents/skills/security-scanner/references/A06-insecure-design.md +145 -0
  9. package/template/.agents/skills/security-scanner/references/A07-authentication-failures.md +150 -0
  10. package/template/.agents/skills/security-scanner/references/A08-software-data-integrity-failures.md +132 -0
  11. package/template/.agents/skills/security-scanner/references/A09-security-logging-alerting-failures.md +130 -0
  12. package/template/.agents/skills/security-scanner/references/A10-mishandling-exceptional-conditions.md +154 -0
  13. package/template/.agents/skills/security-scanner/references/report-template.md +148 -0
  14. package/template/.claude/agents/security-scanner.md +214 -0
  15. package/template/.claude/skills/security-scanner/SKILL.md +157 -0
  16. package/template/.claude/skills/security-scanner/references/A01-broken-access-control.md +136 -0
  17. package/template/.claude/skills/security-scanner/references/A02-security-misconfiguration.md +130 -0
  18. package/template/.claude/skills/security-scanner/references/A03-software-supply-chain-failures.md +117 -0
  19. package/template/.claude/skills/security-scanner/references/A04-cryptographic-failures.md +141 -0
  20. package/template/.claude/skills/security-scanner/references/A05-injection.md +155 -0
  21. package/template/.claude/skills/security-scanner/references/A06-insecure-design.md +145 -0
  22. package/template/.claude/skills/security-scanner/references/A07-authentication-failures.md +150 -0
  23. package/template/.claude/skills/security-scanner/references/A08-software-data-integrity-failures.md +132 -0
  24. package/template/.claude/skills/security-scanner/references/A09-security-logging-alerting-failures.md +130 -0
  25. package/template/.claude/skills/security-scanner/references/A10-mishandling-exceptional-conditions.md +154 -0
  26. package/template/.claude/skills/security-scanner/references/report-template.md +148 -0
  27. package/template/AGENTS.md +21 -77
  28. package/template/DESIGN.md +451 -0
  29. package/template/next-env.d.ts +1 -1
  30. package/template/specs/ui-polish-responsive/README.md +59 -0
  31. package/template/specs/ui-polish-responsive/action-required.md +3 -0
  32. package/template/specs/ui-polish-responsive/requirements.md +53 -0
  33. package/template/specs/ui-polish-responsive/tasks/task-01-globals-css.md +144 -0
  34. package/template/specs/ui-polish-responsive/tasks/task-02-layout.md +66 -0
  35. package/template/specs/ui-polish-responsive/tasks/task-03-site-header.md +79 -0
  36. package/template/specs/ui-polish-responsive/tasks/task-04-site-footer.md +63 -0
  37. package/template/specs/ui-polish-responsive/tasks/task-05-home-page.md +215 -0
  38. package/template/specs/ui-polish-responsive/tasks/task-06-dashboard.md +222 -0
  39. package/template/specs/ui-polish-responsive/tasks/task-07-chat-page.md +225 -0
  40. package/template/specs/ui-polish-responsive/tasks/task-08-profile-page.md +192 -0
  41. package/template/specs/ui-polish-responsive/tasks/task-09-auth-pages.md +97 -0
  42. package/template/specs/ui-polish-responsive/tasks/task-10-setup-checklist.md +120 -0
  43. package/template/specs/ui-polish-responsive/tasks/task-11-starter-prompt-modal.md +87 -0
  44. package/template/src/app/globals.css +65 -7
  45. package/template/src/app/layout.tsx +2 -2
  46. package/template/src/app/page.tsx +174 -174
  47. package/template/src/components/setup-checklist.tsx +162 -162
  48. package/template/src/components/site-footer.tsx +2 -2
  49. package/template/src/components/site-header.tsx +3 -3
  50. package/template/src/components/starter-prompt-modal.tsx +202 -202
@@ -0,0 +1,451 @@
1
+ # Design System
2
+
3
+ This document defines the visual design system for the project. All new components and pages **must** follow these tokens, patterns, and conventions.
4
+
5
+ ---
6
+
7
+ ## Stack
8
+
9
+ - **Framework:** Next.js (App Router) + React + TypeScript
10
+ - **Styling:** Tailwind CSS v4 (CSS-first config via `@theme inline` in `globals.css` — no `tailwind.config.ts`)
11
+ - **Components:** shadcn/ui (new-york style, neutral base)
12
+ - **Icons:** Lucide React
13
+ - **Fonts:** Geist (sans) + Geist Mono (mono) via `next/font/google`
14
+ - **Dark mode:** next-themes (class-based, system default)
15
+ - **Utilities:** `cn()` from `@/lib/utils` (clsx + tailwind-merge)
16
+
17
+ ---
18
+
19
+ ## Colors
20
+
21
+ All values use the **oklch** color space. Colors are defined as CSS custom properties in `globals.css` and bridged to Tailwind via `@theme inline`.
22
+
23
+ ### Semantic Tokens
24
+
25
+ | Token | Light | Dark | Usage |
26
+ |---|---|---|---|
27
+ | `background` | `oklch(1 0 0)` | `oklch(0.141 0.005 285.823)` | Page background |
28
+ | `foreground` | `oklch(0.141 0.005 285.823)` | `oklch(0.985 0 0)` | Primary text |
29
+ | `primary` | `oklch(0.21 0.034 270)` | `oklch(0.92 0.02 270)` | Buttons, links, accents |
30
+ | `primary-foreground` | `oklch(0.985 0 0)` | `oklch(0.21 0.006 285.885)` | Text on primary |
31
+ | `secondary` | `oklch(0.967 0.001 286.375)` | `oklch(0.274 0.006 286.033)` | Secondary buttons, subtle bg |
32
+ | `secondary-foreground` | `oklch(0.21 0.006 285.885)` | `oklch(0.985 0 0)` | Text on secondary |
33
+ | `muted` | `oklch(0.967 0.001 286.375)` | `oklch(0.274 0.006 286.033)` | Subdued backgrounds |
34
+ | `muted-foreground` | `oklch(0.552 0.016 285.938)` | `oklch(0.705 0.015 286.067)` | Subdued text, placeholders |
35
+ | `accent` | `oklch(0.96 0.012 270)` | `oklch(0.28 0.018 270)` | Hover backgrounds, highlights |
36
+ | `accent-foreground` | `oklch(0.21 0.006 285.885)` | `oklch(0.985 0 0)` | Text on accent |
37
+ | `destructive` | `oklch(0.577 0.245 27.325)` | `oklch(0.704 0.191 22.216)` | Error states, delete actions |
38
+ | `card` | `oklch(1 0 0)` | `oklch(0.21 0.006 285.885)` | Card backgrounds |
39
+ | `card-foreground` | `oklch(0.141 0.005 285.823)` | `oklch(0.985 0 0)` | Card text |
40
+ | `popover` | `oklch(1 0 0)` | `oklch(0.21 0.006 285.885)` | Popover/dropdown bg |
41
+ | `popover-foreground` | `oklch(0.141 0.005 285.823)` | `oklch(0.985 0 0)` | Popover/dropdown text |
42
+ | `border` | `oklch(0.92 0.004 286.32)` | `oklch(1 0 0 / 10%)` | Borders, dividers |
43
+ | `input` | `oklch(0.92 0.004 286.32)` | `oklch(1 0 0 / 15%)` | Input borders |
44
+ | `ring` | `oklch(0.705 0.06 270)` | `oklch(0.552 0.05 270)` | Focus rings |
45
+
46
+ ### Chart Colors
47
+
48
+ | Token | Light | Dark |
49
+ |---|---|---|
50
+ | `chart-1` | `oklch(0.646 0.222 41.116)` | `oklch(0.488 0.243 264.376)` |
51
+ | `chart-2` | `oklch(0.6 0.118 184.704)` | `oklch(0.696 0.17 162.48)` |
52
+ | `chart-3` | `oklch(0.398 0.07 227.392)` | `oklch(0.769 0.188 70.08)` |
53
+ | `chart-4` | `oklch(0.828 0.189 84.429)` | `oklch(0.627 0.265 303.9)` |
54
+ | `chart-5` | `oklch(0.769 0.188 70.08)` | `oklch(0.645 0.246 16.439)` |
55
+
56
+ ### Sidebar Colors
57
+
58
+ | Token | Light | Dark |
59
+ |---|---|---|
60
+ | `sidebar` | `oklch(0.985 0 0)` | `oklch(0.21 0.006 285.885)` |
61
+ | `sidebar-foreground` | `oklch(0.141 0.005 285.823)` | `oklch(0.985 0 0)` |
62
+ | `sidebar-primary` | `oklch(0.21 0.006 285.885)` | `oklch(0.488 0.243 264.376)` |
63
+ | `sidebar-primary-foreground` | `oklch(0.985 0 0)` | `oklch(0.985 0 0)` |
64
+ | `sidebar-accent` | `oklch(0.967 0.001 286.375)` | `oklch(0.274 0.006 286.033)` |
65
+ | `sidebar-accent-foreground` | `oklch(0.21 0.006 285.885)` | `oklch(0.985 0 0)` |
66
+ | `sidebar-border` | `oklch(0.92 0.004 286.32)` | `oklch(1 0 0 / 10%)` |
67
+ | `sidebar-ring` | `oklch(0.705 0.015 286.067)` | `oklch(0.552 0.016 285.938)` |
68
+
69
+ ### Ad-hoc Status Colors
70
+
71
+ Use these Tailwind utilities for status indicators — they are not part of the token system but are used consistently:
72
+
73
+ - **Success:** `text-green-600` / `dark:text-green-400`, `bg-green-500`
74
+ - **Error:** `text-red-600`, `text-destructive`
75
+
76
+ ---
77
+
78
+ ## Typography
79
+
80
+ ### Font Families
81
+
82
+ | Token | Font | Usage |
83
+ |---|---|---|
84
+ | `--font-geist-sans` | Geist | All UI text (applied to body) |
85
+ | `--font-geist-mono` | Geist Mono | Code, monospace content |
86
+
87
+ Body has `font-feature-settings: "rlig" 1, "calt" 1` and `antialiased` enabled.
88
+
89
+ ### Type Scale
90
+
91
+ | Class | Size | Usage |
92
+ |---|---|---|
93
+ | `text-xs` | 12px | Timestamps, shortcuts, helper text, code |
94
+ | `text-sm` | 14px | Descriptions, labels, body copy, card descriptions |
95
+ | `text-base` | 16px | Base text, inputs (mobile) |
96
+ | `text-lg` | 18px | Dialog titles, sub-headings |
97
+ | `text-xl` | 20px | Section titles, header logo |
98
+ | `text-2xl` | 24px | Page titles, card titles |
99
+ | `text-3xl` | 30px | Dashboard/profile headings |
100
+ | `text-4xl` | 36px | Large display text |
101
+ | `text-5xl` | 48px | Hero title |
102
+
103
+ ### Font Weights
104
+
105
+ | Class | Weight | Usage |
106
+ |---|---|---|
107
+ | `font-medium` | 500 | Buttons, labels, nav items |
108
+ | `font-semibold` | 600 | Card titles, section headings, badges, dialog titles |
109
+ | `font-bold` | 700 | Page titles, hero heading |
110
+
111
+ ### Line Heights & Tracking
112
+
113
+ | Class | Usage |
114
+ |---|---|
115
+ | `leading-none` | Labels, card titles |
116
+ | `leading-5` | Code blocks |
117
+ | `leading-6` | List items |
118
+ | `leading-7` | Paragraphs (markdown) |
119
+ | `tracking-tight` | Hero/display text |
120
+ | `tracking-widest` | Keyboard shortcuts |
121
+
122
+ ---
123
+
124
+ ## Spacing
125
+
126
+ ### Container Pattern
127
+
128
+ ```
129
+ container mx-auto px-4
130
+ ```
131
+
132
+ Responsive overrides where needed:
133
+ - Header: `px-3 sm:px-4`
134
+ - Footer: `px-4 sm:px-6 lg:px-8`
135
+
136
+ ### Max Widths
137
+
138
+ | Class | Value | Usage |
139
+ |---|---|---|
140
+ | `max-w-sm` | 24rem | Auth forms |
141
+ | `max-w-md` | 28rem | Login/register cards, error pages |
142
+ | `max-w-lg` | 32rem | Dialog content (sm+) |
143
+ | `max-w-2xl` | 42rem | Large dialogs |
144
+ | `max-w-3xl` | 48rem | Embeds, protected state |
145
+ | `max-w-4xl` | 56rem | Main content pages |
146
+
147
+ ### Vertical Spacing (space-y)
148
+
149
+ | Class | Usage |
150
+ |---|---|
151
+ | `space-y-1` | Tight lists, inline stacks |
152
+ | `space-y-1.5` | Card header |
153
+ | `space-y-2` | Form field groups, small stacks |
154
+ | `space-y-3` | Footer stacks |
155
+ | `space-y-4` | Form sections, dialog content |
156
+ | `space-y-6` | Card content sections |
157
+ | `space-y-8` | Page-level sections |
158
+
159
+ ### Padding
160
+
161
+ | Class | Usage |
162
+ |---|---|
163
+ | `p-1` | Dropdown content, icon buttons |
164
+ | `p-2` | Code blocks, muted backgrounds |
165
+ | `p-3` | Chat bubbles, inputs |
166
+ | `p-4` | Grid items, action buttons, list items |
167
+ | `p-6` | Cards, dialog content |
168
+
169
+ ### Page Vertical Padding
170
+
171
+ | Class | Usage |
172
+ |---|---|
173
+ | `py-3 sm:py-4` | Header |
174
+ | `py-4 sm:py-6` | Footer |
175
+ | `py-8` | Standard content pages |
176
+ | `py-12` | Home page, dashboard |
177
+ | `py-16` | Error/not-found pages |
178
+
179
+ ---
180
+
181
+ ## Border Radius
182
+
183
+ | Token | Value | Class |
184
+ |---|---|---|
185
+ | `--radius` | `0.625rem` (10px) | Base |
186
+ | `--radius-sm` | `calc(--radius - 4px)` = 6px | `rounded-sm` |
187
+ | `--radius-md` | `calc(--radius - 2px)` = 8px | `rounded-md` |
188
+ | `--radius-lg` | `var(--radius)` = 10px | `rounded-lg` |
189
+ | `--radius-xl` | `calc(--radius + 4px)` = 14px | `rounded-xl` |
190
+ | — | 9999px | `rounded-full` |
191
+
192
+ **Usage:**
193
+ - `rounded-md` — Buttons, inputs, textarea, code blocks, dropdowns
194
+ - `rounded-lg` — Cards, dialogs, feature cards, chat bubbles
195
+ - `rounded-xl` — Hero logo container
196
+ - `rounded-full` — Badges, avatars
197
+
198
+ ---
199
+
200
+ ## Shadows
201
+
202
+ | Class | Usage |
203
+ |---|---|
204
+ | `shadow-xs` | Inputs, textarea, secondary/outline buttons |
205
+ | `shadow-sm` | Card base |
206
+ | `shadow-md` | Card hover, dropdown content |
207
+ | `shadow-lg` | Dialogs, dropdown sub-content |
208
+
209
+ No custom shadow definitions — all Tailwind defaults.
210
+
211
+ ---
212
+
213
+ ## Animations
214
+
215
+ ### Custom Keyframes
216
+
217
+ | Name | Effect | Duration | Easing |
218
+ |---|---|---|---|
219
+ | `fade-in` | Opacity 0 → 1 | 0.3s | ease-out |
220
+ | `fade-up` | Opacity 0 → 1 + translateY(8px → 0) | 0.4s | ease-out |
221
+ | `scale-in` | Opacity 0 → 1 + scale(0.97 → 1) | 0.2s | ease-out |
222
+
223
+ Use via: `animate-fade-in`, `animate-fade-up`, `animate-scale-in`
224
+
225
+ ### tw-animate-css Animations
226
+
227
+ Used on dialogs and dropdowns:
228
+ - `animate-in` / `animate-out`
229
+ - `fade-in-0` / `fade-out-0`
230
+ - `zoom-in-95` / `zoom-out-95`
231
+ - `slide-in-from-{top|bottom|left|right}-2`
232
+
233
+ ### Transition Classes
234
+
235
+ | Class | Usage |
236
+ |---|---|
237
+ | `transition-colors` | Links, hover color changes |
238
+ | `transition-opacity` | Avatar hover, reveal-on-hover |
239
+ | `transition-all duration-200` | Card interactive hover, buttons |
240
+ | `transition-[color,box-shadow]` | Input/textarea focus |
241
+
242
+ ### Utility Classes
243
+
244
+ ```css
245
+ .card-interactive {
246
+ @apply transition-all duration-200 ease-out;
247
+ }
248
+ .card-interactive:hover {
249
+ @apply shadow-md -translate-y-0.5;
250
+ }
251
+ ```
252
+
253
+ ```css
254
+ .auth-bg {
255
+ background-image: radial-gradient(
256
+ circle at 50% 0%,
257
+ var(--accent) 0%,
258
+ transparent 50%
259
+ );
260
+ }
261
+ ```
262
+
263
+ ---
264
+
265
+ ## Layout
266
+
267
+ ### Root Structure
268
+
269
+ ```
270
+ <body class="antialiased min-h-screen flex flex-col">
271
+ <SiteHeader />
272
+ <main id="main-content" class="flex-1">{children}</main>
273
+ <SiteFooter />
274
+ <Toaster />
275
+ </body>
276
+ ```
277
+
278
+ ### Page Layout Patterns
279
+
280
+ **Auth pages:**
281
+ ```
282
+ flex min-h-[calc(100vh-4rem)] items-center justify-center p-4
283
+ → Card w-full max-w-md
284
+ ```
285
+
286
+ **Standard content pages:**
287
+ ```
288
+ container mx-auto px-4 py-8
289
+ → max-w-4xl mx-auto
290
+ ```
291
+
292
+ **Error/not-found pages:**
293
+ ```
294
+ container mx-auto px-4 py-16
295
+ → max-w-md mx-auto text-center
296
+ ```
297
+
298
+ ### Grid Patterns
299
+
300
+ | Pattern | Usage |
301
+ |---|---|
302
+ | `grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6` | Feature cards (4-col) |
303
+ | `grid grid-cols-1 md:grid-cols-2 gap-6` | Dashboard cards |
304
+ | `grid grid-cols-1 md:grid-cols-2 gap-4` | Profile info |
305
+ | `grid grid-cols-1 md:grid-cols-3 gap-4` | Quick actions |
306
+
307
+ ### Responsive Breakpoints
308
+
309
+ Standard Tailwind breakpoints:
310
+ - `sm:` (640px) — Padding adjustments, text alignment, button sizing
311
+ - `md:` (768px) — Grid column changes (→ 2 col), input font size
312
+ - `lg:` (1024px) — Grid column changes (→ 4 col), wide padding
313
+
314
+ ---
315
+
316
+ ## Icons
317
+
318
+ **Library:** Lucide React
319
+
320
+ ### Sizing Convention
321
+
322
+ | Size | Classes | Usage |
323
+ |---|---|---|
324
+ | XS | `h-3 w-3` | Inline badge icons |
325
+ | SM | `h-3.5 w-3.5` | Copy buttons |
326
+ | Default | `h-4 w-4` or `size-4` | Standard UI icons |
327
+ | MD | `h-5 w-5` | Header logo icon |
328
+ | LG | `h-7 w-7` | Hero logo icon |
329
+ | XL | `h-16 w-16` | Error/empty state illustrations |
330
+
331
+ ### Commonly Used Icons
332
+
333
+ `Bot`, `User`, `Lock`, `Shield`, `Mail`, `Calendar`, `Copy`, `Check`, `Loader2`, `LogOut`, `Sun`, `Moon`, `Github`, `ArrowLeft`, `RefreshCw`, `AlertCircle`, `FileQuestion`, `Database`, `Palette`, `Video`
334
+
335
+ ---
336
+
337
+ ## Components (shadcn/ui)
338
+
339
+ All components live in `src/components/ui/`. They use `data-slot` attributes, accept `className` for overrides via `cn()`, and follow either `React.forwardRef` or functional component patterns.
340
+
341
+ ### Button
342
+
343
+ 6 variants, 4 sizes (CVA-based):
344
+
345
+ | Variant | Usage |
346
+ |---|---|
347
+ | `default` | Primary actions |
348
+ | `secondary` | Secondary actions |
349
+ | `outline` | Tertiary actions |
350
+ | `ghost` | Subtle/icon actions |
351
+ | `destructive` | Delete/danger actions |
352
+ | `link` | Inline text links |
353
+
354
+ | Size | Height | Padding |
355
+ |---|---|---|
356
+ | `sm` | h-8 | px-3 |
357
+ | `default` | h-9 | px-4 |
358
+ | `lg` | h-10 | px-6 |
359
+ | `icon` | size-9 | — |
360
+
361
+ ### Card
362
+
363
+ 6 sub-components: `Card`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `CardFooter`
364
+
365
+ Base: `rounded-lg border bg-card text-card-foreground shadow-sm`
366
+
367
+ ### Input / Textarea
368
+
369
+ - Height: `h-9` (input), `min-h-16` (textarea)
370
+ - Border: `border bg-transparent rounded-md shadow-xs`
371
+ - Focus: `focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`
372
+ - Validation: `aria-invalid:border-destructive aria-invalid:ring-destructive/20`
373
+ - Responsive font: `text-base md:text-sm`
374
+
375
+ ### Badge
376
+
377
+ 4 variants: `default`, `secondary`, `destructive`, `outline`
378
+
379
+ Base: `rounded-full border px-2.5 py-0.5 text-xs font-semibold`
380
+
381
+ ### Dialog
382
+
383
+ Radix-based with overlay (`bg-black/50`), fade + zoom animations, optional close button.
384
+
385
+ ### DropdownMenu
386
+
387
+ Radix-based. Content: `rounded-md border p-1 shadow-md min-w-[8rem]`. Items support a `destructive` variant.
388
+
389
+ ### Spinner
390
+
391
+ Sizes: `sm` (h-4 w-4), `md` (h-6 w-6), `lg` (h-8 w-8). Uses `Loader2` with `animate-spin`.
392
+
393
+ ### Toast (Sonner)
394
+
395
+ Custom icons per state (success, info, warning, error, loading). Themed via CSS variable overrides.
396
+
397
+ ---
398
+
399
+ ## Focus & Interaction States
400
+
401
+ ### Focus Ring (Global)
402
+
403
+ ```css
404
+ outline-2 outline-offset-2 outline-ring/70
405
+ ```
406
+
407
+ Component-level override:
408
+ ```
409
+ focus-visible:ring-ring/50 focus-visible:ring-[3px]
410
+ ```
411
+
412
+ ### Disabled
413
+
414
+ ```
415
+ disabled:pointer-events-none disabled:opacity-50
416
+ ```
417
+
418
+ ### Interactive Card Hover
419
+
420
+ ```
421
+ transition-all duration-200 ease-out
422
+ hover:shadow-md hover:-translate-y-0.5
423
+ ```
424
+
425
+ ---
426
+
427
+ ## Dark Mode
428
+
429
+ - **Method:** Class-based via `next-themes` with `attribute="class"` and `disableTransitionOnChange`
430
+ - **Default:** System preference
431
+ - **Toggle:** 3-way dropdown — Light / Dark / System
432
+ - All semantic color tokens swap automatically via `.dark` CSS selector
433
+ - Use `dark:` prefix for component-specific overrides (e.g., `dark:bg-input/30`)
434
+
435
+ ---
436
+
437
+ ## Branding
438
+
439
+ ### Logo Text
440
+
441
+ ```
442
+ bg-gradient-to-r from-primary to-primary/70 bg-clip-text text-transparent
443
+ ```
444
+
445
+ ### Logo Icon Container
446
+
447
+ ```
448
+ w-8 h-8 rounded-lg bg-primary/10 flex items-center justify-center
449
+ ```
450
+
451
+ Hero variant: `w-12 h-12 rounded-xl`
@@ -1,6 +1,6 @@
1
1
  /// <reference types="next" />
2
2
  /// <reference types="next/image-types/global" />
3
- import "./.next/types/routes.d.ts";
3
+ import "./.next/dev/types/routes.d.ts";
4
4
 
5
5
  // NOTE: This file should not be edited
6
6
  // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
@@ -0,0 +1,59 @@
1
+ # UI Polish & Responsive Improvements
2
+
3
+ ## Overview
4
+
5
+ Improve the visual quality, component consistency, and responsive behavior of the boilerplate UI across all pages. This includes refreshing the color palette with a subtle blue accent, replacing bare HTML elements with shadcn components, adding hover/transition effects via a reusable utility class, and introducing `sm:` breakpoints throughout for better tablet/mobile scaling. All custom styling goes in globals.css — no inline or custom CSS on components.
6
+
7
+ ## Quick Links
8
+
9
+ - [Requirements](./requirements.md) — full requirements and acceptance criteria
10
+ - [Action Required](./action-required.md) — manual steps needing human action
11
+
12
+ ## Dependency Graph
13
+
14
+ ```mermaid
15
+ graph TD
16
+ task-01-globals-css["01: globals.css Foundation"]
17
+ task-02-layout["02: Layout Sticky Footer"]
18
+ task-03-site-header["03: Site Header Responsive"]
19
+ task-04-site-footer["04: Site Footer Responsive"]
20
+ task-05-home-page["05: Home Page Overhaul"]
21
+ task-06-dashboard["06: Dashboard Page"]
22
+ task-07-chat-page["07: Chat Page"]
23
+ task-08-profile-page["08: Profile Page"]
24
+ task-09-auth-pages["09: Auth Pages"]
25
+ task-10-setup-checklist["10: Setup Checklist"]
26
+ task-11-starter-prompt-modal["11: Starter Prompt Modal"]
27
+ task-01-globals-css --> task-05-home-page
28
+ task-01-globals-css --> task-06-dashboard
29
+ task-01-globals-css --> task-07-chat-page
30
+ task-01-globals-css --> task-08-profile-page
31
+ task-01-globals-css --> task-09-auth-pages
32
+ task-01-globals-css --> task-10-setup-checklist
33
+ task-01-globals-css --> task-11-starter-prompt-modal
34
+ task-02-layout --> task-09-auth-pages
35
+ ```
36
+
37
+ ## Waves
38
+
39
+ | Wave | Tasks | Description |
40
+ |------|-------|-------------|
41
+ | 1 | task-01, task-02, task-03, task-04 | Foundation: globals.css enhancements, layout flex structure, header/footer responsive |
42
+ | 2 | task-05, task-06, task-07, task-08, task-09, task-10, task-11 | All pages: Card adoption, responsive breakpoints, component swaps |
43
+
44
+ ## Task Status
45
+
46
+ ### Wave 1
47
+ - [x] [task-01-globals-css](./tasks/task-01-globals-css.md) — globals.css color palette, animations, and utility classes
48
+ - [x] [task-02-layout](./tasks/task-02-layout.md) — Root layout sticky footer with flex column
49
+ - [x] [task-03-site-header](./tasks/task-03-site-header.md) — Header responsive padding and sizing
50
+ - [x] [task-04-site-footer](./tasks/task-04-site-footer.md) — Footer responsive padding
51
+
52
+ ### Wave 2
53
+ - [ ] [task-05-home-page](./tasks/task-05-home-page.md) — Home page Card adoption + responsive typography
54
+ - [ ] [task-06-dashboard](./tasks/task-06-dashboard.md) — Dashboard Card adoption + responsive grid
55
+ - [ ] [task-07-chat-page](./tasks/task-07-chat-page.md) — Chat Input swap + sticky form + responsive
56
+ - [ ] [task-08-profile-page](./tasks/task-08-profile-page.md) — Profile responsive stacking + grid fixes
57
+ - [ ] [task-09-auth-pages](./tasks/task-09-auth-pages.md) — Auth pages animation, shadow, and background
58
+ - [ ] [task-10-setup-checklist](./tasks/task-10-setup-checklist.md) — Setup checklist Card adoption
59
+ - [ ] [task-11-starter-prompt-modal](./tasks/task-11-starter-prompt-modal.md) — Textarea swap + responsive buttons
@@ -0,0 +1,3 @@
1
+ # Action Required: UI Polish & Responsive Improvements
2
+
3
+ No manual steps required for this feature. All tasks can be implemented automatically.
@@ -0,0 +1,53 @@
1
+ # Requirements: UI Polish & Responsive Improvements
2
+
3
+ ## Summary
4
+
5
+ The boilerplate UI is functional but visually flat — bare `<div>` elements instead of shadcn Cards, a monotone neutral-gray palette, no hover/transition effects, and minimal responsive breakpoints (most pages only use `md:`). The goal is to meaningfully improve visual quality, component consistency, and responsive behavior across all pages and components.
6
+
7
+ All changes must use Tailwind utilities and shadcn standards. Custom styling (animations, utilities, color tokens) goes in `globals.css`. No custom inline styles or CSS-in-JS on individual components. The result should look like a polished, high-quality default that can be customized by users of the boilerplate.
8
+
9
+ ## Goals
10
+
11
+ - Refresh the color palette with a subtle cool blue accent (shift primary/ring/accent from flat gray to hue 270)
12
+ - Replace all bare `<div>` cards with shadcn Card components for consistency
13
+ - Replace native `<input>`, `<button>`, and `<textarea>` elements with their shadcn equivalents
14
+ - Add hover/transition effects to interactive cards via a reusable `card-interactive` utility
15
+ - Introduce `sm:` breakpoints throughout for proper tablet/mobile scaling
16
+ - Add entrance animations to auth pages
17
+ - Fix the sticky footer layout so it works on short-content pages
18
+ - Ensure all pages scale well from 320px to 1536px+ viewports
19
+
20
+ ## Non-Goals
21
+
22
+ - No hamburger/mobile menu for the header — the current content (avatar + theme toggle) is minimal enough
23
+ - No new shadcn component installations — all needed components are already installed
24
+ - No changes to business logic, API routes, or authentication flows
25
+ - No new pages or routes
26
+ - No changes to the Geist font choice
27
+ - No Storybook or component documentation
28
+
29
+ ## Acceptance Criteria
30
+
31
+ - [ ] All pages render correctly in both light and dark modes
32
+ - [ ] No horizontal scroll on any page at 320px viewport width
33
+ - [ ] Feature cards, dashboard cards, and next steps cards use shadcn Card components
34
+ - [ ] Chat input uses shadcn Input, not a native `<input>`
35
+ - [ ] Footer sticks to the bottom on short-content pages (auth pages)
36
+ - [ ] Primary color has a visible cool-blue tint (not flat gray)
37
+ - [ ] Cards have hover lift effect with shadow transition
38
+ - [ ] All grids have `sm:` breakpoints for tablet-size viewports
39
+ - [ ] `pnpm lint` and `pnpm typecheck` pass with no errors
40
+
41
+ ## Assumptions
42
+
43
+ - Tailwind CSS v4 is in use (confirmed: `@import "tailwindcss"` syntax, `@theme inline` block)
44
+ - `tw-animate-css` is installed in dependencies but currently unused (confirmed in package.json)
45
+ - The ThemeProvider from next-themes renders children directly without a wrapping `<div>` (confirmed by reading the component)
46
+ - All shadcn components needed (Card, Input, Button, Textarea, Badge, Avatar, Dialog) are already installed
47
+
48
+ ## Technical Constraints
49
+
50
+ - All custom CSS (animations, utilities, color tokens) must go in `src/app/globals.css`
51
+ - Component files should only use Tailwind utility classes and shadcn components — no `style={{}}` props
52
+ - Must maintain both light and dark mode support via the existing OKLch CSS variable system
53
+ - Must not break existing functionality (auth flows, chat, diagnostics)