@jaimevalasek/aioson 1.30.1 → 1.33.1

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 (136) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +19 -6
  3. package/docs/design-previews/cognitive-core-ui-auth.html +95 -0
  4. package/docs/design-previews/cognitive-core-ui-kanban.html +231 -0
  5. package/docs/design-previews/cognitive-core-ui-list-detail.html +174 -0
  6. package/docs/design-previews/cognitive-core-ui-preview.css +1315 -0
  7. package/docs/design-previews/cognitive-core-ui-settings.html +142 -0
  8. package/docs/design-previews/cognitive-core-ui-website.html +190 -1009
  9. package/docs/design-previews/cognitive-core-ui.html +281 -463
  10. package/docs/design-previews/index.html +83 -31
  11. package/docs/en/5-reference/cli-reference.md +1 -1
  12. package/docs/pt/5-referencia/comandos-cli.md +1 -1
  13. package/docs/pt/5-referencia/harness-retro.md +2 -1
  14. package/package.json +1 -1
  15. package/src/cli.js +38 -21
  16. package/src/commands/classify.js +389 -327
  17. package/src/commands/harness-retro-promote.js +387 -0
  18. package/src/commands/prototype-check.js +163 -0
  19. package/src/commands/verify-implementation.js +428 -0
  20. package/src/commands/workflow-next.js +222 -9
  21. package/src/constants.js +569 -511
  22. package/src/lib/retro/retro-render.js +10 -1
  23. package/src/lib/retro/retro-sources.js +45 -27
  24. package/src/lib/retro/verification-reports.js +230 -0
  25. package/src/runtime-store.js +13 -9
  26. package/src/verification/evidence-bundle.js +251 -0
  27. package/src/verification/ledger-store.js +221 -0
  28. package/src/verification/path-policy.js +74 -0
  29. package/src/verification/policy-engine.js +95 -0
  30. package/src/verification/prompt-package.js +314 -0
  31. package/src/verification/redaction.js +77 -0
  32. package/src/verification/report-parser.js +132 -0
  33. package/src/verification/report-store.js +97 -0
  34. package/src/verification/result.js +16 -0
  35. package/src/verification/runners/index.js +319 -0
  36. package/src/verification/runtime-telemetry.js +144 -0
  37. package/src/verification/schema.js +276 -0
  38. package/src/verification/source-discovery.js +153 -0
  39. package/template/.aioson/agents/analyst.md +9 -6
  40. package/template/.aioson/agents/briefing-refiner.md +22 -0
  41. package/template/.aioson/agents/briefing.md +69 -12
  42. package/template/.aioson/agents/design-hybrid-forge.md +18 -14
  43. package/template/.aioson/agents/dev.md +23 -10
  44. package/template/.aioson/agents/deyvin.md +3 -2
  45. package/template/.aioson/agents/product.md +15 -11
  46. package/template/.aioson/agents/qa.md +13 -4
  47. package/template/.aioson/agents/scope-check.md +19 -5
  48. package/template/.aioson/agents/sheldon.md +4 -3
  49. package/template/.aioson/agents/ux-ui.md +3 -2
  50. package/template/.aioson/docs/feature-expansion-taxonomy.md +31 -3
  51. package/template/.aioson/docs/play/README.md +2 -0
  52. package/template/.aioson/docs/play/agent-usage-guide.md +7 -1
  53. package/template/.aioson/docs/play/app-compatibility-guide.md +6 -1
  54. package/template/.aioson/docs/play/auth-services-and-testing.md +16 -1
  55. package/template/.aioson/docs/play/manifest-and-runtime.md +23 -0
  56. package/template/.aioson/docs/prototype-contract.md +81 -0
  57. package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +266 -243
  58. package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -293
  59. package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -827
  60. package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -250
  61. package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -585
  62. package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -365
  63. package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +485 -482
  64. package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +386 -387
  65. package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +228 -205
  66. package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -338
  67. package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -977
  68. package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -218
  69. package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -326
  70. package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -461
  71. package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -293
  72. package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -352
  73. package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +233 -210
  74. package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -319
  75. package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -365
  76. package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -196
  77. package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -244
  78. package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -235
  79. package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -215
  80. package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -295
  81. package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +239 -203
  82. package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -339
  83. package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +417 -407
  84. package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +289 -272
  85. package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +525 -524
  86. package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +279 -279
  87. package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +355 -289
  88. package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +443 -437
  89. package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +245 -222
  90. package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -159
  91. package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -498
  92. package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -236
  93. package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -274
  94. package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -355
  95. package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -198
  96. package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -307
  97. package/template/.aioson/skills/design/interface-design/SKILL.md +68 -47
  98. package/template/.aioson/skills/design/interface-design/references/components-and-states.md +105 -105
  99. package/template/.aioson/skills/design/interface-design/references/design-directions.md +101 -101
  100. package/template/.aioson/skills/design/interface-design/references/handoff-and-quality.md +92 -71
  101. package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +74 -74
  102. package/template/.aioson/skills/design/interface-design/references/tokens-and-depth.md +173 -173
  103. package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +236 -213
  104. package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -228
  105. package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -855
  106. package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -334
  107. package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -342
  108. package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -286
  109. package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -458
  110. package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -723
  111. package/template/.aioson/skills/design/premium-command-center-ui/SKILL.md +83 -62
  112. package/template/.aioson/skills/design/premium-command-center-ui/references/operations.md +74 -74
  113. package/template/.aioson/skills/design/premium-command-center-ui/references/patterns.md +116 -116
  114. package/template/.aioson/skills/design/premium-command-center-ui/references/validation.md +47 -47
  115. package/template/.aioson/skills/design/premium-command-center-ui/references/visual-system.md +215 -215
  116. package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -31
  117. package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +94 -66
  118. package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +366 -366
  119. package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -150
  120. package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -270
  121. package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -189
  122. package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +161 -161
  123. package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +232 -209
  124. package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -324
  125. package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -508
  126. package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -223
  127. package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -374
  128. package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -356
  129. package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -288
  130. package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -289
  131. package/template/.aioson/skills/process/briefing-expansion-scout/SKILL.md +25 -3
  132. package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +5 -3
  133. package/template/.aioson/skills/process/design-hybrid-forge/references/external-source-ingestion.md +89 -0
  134. package/template/.aioson/skills/process/product-scope-expansion/SKILL.md +29 -2
  135. package/template/.aioson/skills/process/prototype-forge/SKILL.md +92 -0
  136. package/template/.aioson/skills/process/sheldon-expansion-audit/SKILL.md +23 -2
@@ -1,289 +1,355 @@
1
- # Patterns — Page Layouts (Cognitive Core UI)
2
-
3
- Requires `design-tokens.md` + `components.md` loaded first.
4
-
5
- These patterns define how to compose full pages. All use CSS variables from design-tokens.md.
6
-
7
- ---
8
-
9
- ## 1. Dashboard Shell
10
-
11
- The base layout for any admin/overview interface.
12
-
13
- ```
14
- ┌────────────────────────────────────────────────────────┐
15
- │ TOP BAR (sticky, bg-void, border-bottom) │
16
- ├────────────────────────────────────────────────────────┤
17
- │ STATS ROW: [StatCard] [StatCard] [StatCard] [StatCard]│
18
- ├────────────────────────────────────────────────────────┤
19
- │ TAB BAR (full width, border-bottom) │
20
- ├───────────┬────────────────────────────────────────────┤
21
- │ SIDEBAR │ CONTENT │
22
- │ 200px │ ┌─ Section Header ──────────────────┐ │
23
- │ tree nav │ │ Card Grid (auto-fill, 260px min) │ │
24
- │ │ └───────────────────────────────────┘ │
25
- │ │ ┌─ Section Header ──────────────────┐ │
26
- │ │ │ Card Grid │ │
27
- │ │ └───────────────────────────────────┘ │
28
- └───────────┴────────────────────────────────────────────┘
29
- ```
30
-
31
- **CSS skeleton:**
32
- ```css
33
- .shell { min-height: 100vh; background: var(--bg-base); font-family: var(--font-body); }
34
- .stats-row { display: flex; gap: var(--space-3); padding: var(--space-5) var(--space-5) 0; flex-wrap: wrap; }
35
- .main-layout { display: flex; min-height: calc(100vh - 230px); }
36
- .sidebar { width: 200px; flex-shrink: 0; border-right: 1px solid var(--border-subtle); padding: var(--space-4); transition: var(--transition-theme); }
37
- .content { flex: 1; padding: var(--space-4) var(--space-5); overflow-y: auto; }
38
- .card-grid { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
39
- .section { margin-bottom: var(--space-8); }
40
- ```
41
-
42
- **Variant — with feature panels (2-col below stats):**
43
- ```css
44
- .feature-row { display: grid; grid-template-columns: 1fr 280px; gap: var(--space-4); padding: var(--space-4) var(--space-5); }
45
- ```
46
-
47
- ---
48
-
49
- ## 2. Detail / Profile Page
50
-
51
- For viewing a single entity (person, product, contact, project).
52
-
53
- ```
54
- ┌────────────────────────────────────────────────────────┐
55
- TOP BAR │
56
- ├────────────────────────────────────────────────────────┤
57
- │ Breadcrumbs: Gallery → Entity Name │
58
- │ PROFILE HEADER │
59
- ┌───────────────────────────────────────────────────┐
60
- │ [Avatar 96px] NAME (text-3xl, black) │ │
61
- │ Role (accent, italic) │ │
62
- │ ✦ Tagline │ │
63
- │ │ │ │
64
- │ │ [StatCard] [StatCard] [StatCard] [Badge][Badge]│ │
65
- └───────────────────────────────────────────────────┘
66
- ├────────────────────────────────────────────────────────┤
67
- TAB BAR (General | DNA | Communication | History | ...)
68
- ├───────────┬────────────────────────────────────────────┤
69
- SIDEBAR │ TAB CONTENT │
70
- │ 180px │ Varies per tab: │
71
- │ │ — Card grid (2-col) │
72
- │ │ DNA analysis panels
73
- │ │ — History table │
74
- └───────────┴────────────────────────────────────────────┘
75
- ```
76
-
77
- **Profile Header styles:**
78
- ```css
79
- .profile-header {
80
- padding: var(--space-5) var(--space-6);
81
- background: var(--bg-base);
82
- border-bottom: 1px solid var(--border-subtle);
83
- transition: var(--transition-theme);
84
- }
85
- .profile-avatar {
86
- width: 96px; height: 96px;
87
- border-radius: var(--radius-lg);
88
- border: 2px solid var(--border-subtle);
89
- object-fit: cover;
90
- }
91
- .profile-name {
92
- font-family: var(--font-display); font-weight: var(--weight-bold);
93
- font-size: var(--text-3xl); color: var(--text-heading);
94
- letter-spacing: var(--tracking-tight); line-height: var(--leading-tight);
95
- }
96
- .profile-role {
97
- color: var(--accent); font-style: italic; font-size: var(--text-base);
98
- }
99
- .profile-tagline {
100
- font-family: var(--font-mono); font-size: var(--text-xs);
101
- color: var(--text-muted); letter-spacing: var(--tracking-wider);
102
- text-transform: uppercase;
103
- }
104
- .profile-stats { display: flex; gap: var(--space-3); margin-top: var(--space-4); flex-wrap: wrap; }
105
- .profile-badges { display: flex; gap: var(--space-2); align-items: center; }
106
- ```
107
-
108
- **Featured quote block (inside tab content):**
109
- ```css
110
- .quote-block {
111
- padding: var(--space-8) var(--space-6);
112
- text-align: center;
113
- border-bottom: 1px solid var(--border-subtle);
114
- }
115
- .quote-text {
116
- font-family: var(--font-display); font-size: var(--text-xl);
117
- font-weight: var(--weight-medium); font-style: italic;
118
- color: var(--text-primary); line-height: var(--leading-snug);
119
- max-width: 680px; margin: 0 auto;
120
- }
121
- .quote-attribution {
122
- font-family: var(--font-mono); font-size: var(--text-xs);
123
- color: var(--text-muted); letter-spacing: var(--tracking-wider);
124
- text-transform: uppercase; margin-top: var(--space-3);
125
- }
126
- ```
127
-
128
- ---
129
-
130
- ## 3. Settings / Config Page
131
-
132
- Apply the **Compact Density** scale from `design-tokens.md` throughout. Settings pages are operational UI, not marketing — no generous whitespace.
133
-
134
- ```
135
- ┌────────────────────────────────────────────────────────┐
136
- │ TOP BAR │
137
- ├───────────┬────────────────────────────────────────────┤
138
- │ SIDEBAR │ SETTINGS TITLE (text-2xl, no description) │
139
- │ │ │
140
- │ General │ ┌─ Entity grid ──────────────────────┐ │
141
- │ Security │ │ [Card 280px] [Card 280px] [Card] │ │ ← 3-col auto-fill
142
- │ Billing │ │ name + ID + status badges │ │
143
- │ Team │ │ [Ativar btn] [Editar btn] │ │
144
- API │ └─────────────────────────────────────┘ │
145
- │ │ │
146
- │ │ ┌─ Section card (p-4 rounded-[22px]) ─┐ │
147
- │ │ eyebrow (mono xs) + title (text-base)│ │
148
- │ │ │ [row] dot · name model badges Editar│ │ ← divide-y py-2
149
- │ │ │ [row] dot · name model badges Editar│ │
150
- │ │ │ ▸ Sync / secondary tool (details) │ │ collapsed
151
- │ │ └─────────────────────────────────────┘ │
152
- │ │ │
153
- │ │ ┌─ Danger Zone Card ──────────────────┐ │
154
- │ │ │ border: var(--semantic-red-dim) │ │
155
- │ │ └─────────────────────────────────────┘ │
156
- └───────────┴────────────────────────────────────────────┘
157
- ```
158
-
159
- **Page heading:** `text-2xl` max — no verbose description subtitle on the page header.
160
-
161
- **Entity cards (projects, providers, squads):**
162
- - Grid: `grid-cols-[repeat(auto-fill,minmax(280px,1fr))]`, `gap: var(--space-3)`
163
- - Card: `rounded-[18px] p-3`
164
- - Name: `text-sm font-semibold truncate`
165
- - ID: `font-mono text-[0.58rem] truncate`
166
- - Status badges: `px-2 py-0.5 text-[0.58rem]`
167
- - Actions: compact row at bottom — `py-1.5 text-[0.62rem]`
168
-
169
- **Add/Edit forms Modal pattern (not inline expansion):**
170
- ```
171
- + Adicionar button → opens modal (max-w-md, centered, backdrop)
172
- Editar button → opens same modal pre-filled
173
- Never use accordion/RevealPanel inside entity cards
174
- ```
175
-
176
- **Section cards (provider lists, license, LLM config):**
177
- - Card: `rounded-[22px] p-4`
178
- - Header row: eyebrow + title + right-side control (select, badge) in one flex row
179
- - File path or meta: `font-mono text-[0.62rem] truncate` — one line below title, no card for it
180
- - Row items: `divide-y divide-[border]` with `py-2`, `text-xs` names, `text-[0.65rem]` models
181
- - Edit button: `px-2.5 py-1 text-[0.65rem] rounded-xl`
182
-
183
- **Disclosure pattern for secondary tools:**
184
- ```html
185
- <details class="rounded-[16px] border bg-elevated mt-3">
186
- <summary> <!-- flex: label + status badge + action button in one row --> </summary>
187
- <div class="border-t px-3 pb-3 pt-2">
188
- <!-- compact diff rows or secondary form -->
189
- </div>
190
- </details>
191
- ```
192
-
193
- **Form inputs inside modals and cards:**
194
- - Input/Select: `px-3 py-2 text-xs rounded-xl`
195
- - Label: `text-[0.65rem] mb-0.5`
196
- - Submit button: `w-full px-3 py-2 text-xs rounded-xl`
197
-
198
- ---
199
-
200
- ## 4. Auth Page (Login / Register)
201
-
202
- ```
203
- ┌────────────────────────────────────────────────────────┐
204
- │ bg-void (full viewport, dark) │
205
- │ │
206
- │ ┌─ Card max-w: 420px ─────────────────┐ │
207
- │ │ [Logo] AppName (mono, weight-bold) │ │
208
- │ │ SUBTITLE (mono, xs, muted, upper) │ │
209
- │ │ │ │
210
- │ │ MONO LABEL: EMAIL │ │
211
- │ │ [Input] │ │
212
- │ │ MONO LABEL: PASSWORD │ │
213
- │ │ [Input] │ │
214
- │ │ [Primary Button: full width] │ │
215
- │ │ divider ─── ou ─── │ │
216
- │ │ [Secondary Button: OAuth] │ │
217
- │ │ Link: esqueceu / criar conta │ │
218
- │ └──────────────────────────────────────┘ │
219
- │ radial glow behind card (accent-glow) │
220
- └────────────────────────────────────────────────────────┘
221
- ```
222
-
223
- ```css
224
- .auth-shell {
225
- min-height: 100vh; background: var(--bg-void);
226
- display: flex; align-items: center; justify-content: center;
227
- position: relative;
228
- }
229
- .auth-glow {
230
- position: absolute;
231
- width: 600px; height: 600px; border-radius: 50%;
232
- background: radial-gradient(circle, var(--accent-glow) 0%, transparent 70%);
233
- pointer-events: none;
234
- }
235
- .auth-card {
236
- background: var(--bg-surface); border: 1px solid var(--border-subtle);
237
- border-radius: var(--radius-xl); padding: var(--space-8);
238
- width: 100%; max-width: 420px; position: relative; z-index: 1;
239
- }
240
- ```
241
-
242
- ---
243
-
244
- ## 5. List-Detail (Split View)
245
-
246
- ```
247
- ┌────────────────────────────────────────────────────────┐
248
- │ TOP BAR │
249
- ├────────────────────────────────────────────────────────┤
250
- TAB BAR + Filter badges
251
- ├──────────────────────┬─────────────────────────────────┤
252
- LIST 340px DETAIL PANEL (flex: 1)
253
- ┌──────────────┐ Profile Header (compact)
254
- Item (active)│◄───│ border-left: 3px accent
255
- ├──────────────┤ Stat Cards row
256
- │ Item Tab sub-navigation
257
- ├──────────────┤ Content (cards, table, DNA)
258
- │ Item
259
- └──────────────┘
260
- └──────────────────────┴─────────────────────────────────┘
261
- ```
262
-
263
- ```css
264
- .list-panel { width: 340px; flex-shrink: 0; border-right: 1px solid var(--border-subtle); overflow-y: auto; }
265
- .list-item { padding: var(--space-4); border-bottom: 1px solid var(--border-subtle); cursor: pointer; transition: var(--transition-theme); }
266
- .list-item:hover { background: var(--bg-elevated); }
267
- .list-item.active { background: var(--bg-elevated); border-left: 3px solid var(--accent); }
268
- .detail-panel { flex: 1; overflow-y: auto; }
269
- ```
270
-
271
- ---
272
-
273
- ## Responsive Rules (all patterns)
274
-
275
- ```css
276
- @media (max-width: 768px) {
277
- .main-layout { flex-direction: column; }
278
- .sidebar { width: 100%; border-right: none; border-bottom: 1px solid var(--border-subtle); }
279
- .card-grid { grid-template-columns: 1fr; }
280
- .stats-row { flex-direction: column; }
281
- .list-panel { width: 100%; border-right: none; border-bottom: 1px solid var(--border-subtle); }
282
- }
283
- @media (min-width: 768px) and (max-width: 1024px) {
284
- .card-grid { grid-template-columns: repeat(2, 1fr); }
285
- }
286
- @media (min-width: 1024px) {
287
- .card-grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
288
- }
289
- ```
1
+ # Patterns — Page Layouts (Cognitive Core UI)
2
+
3
+ Requires `design-tokens.md` + `components.md` loaded first.
4
+
5
+ These patterns define how to compose full pages. All use CSS variables from design-tokens.md.
6
+
7
+ ---
8
+
9
+ ## 1. Dashboard Shell
10
+
11
+ The base layout for any admin/overview interface.
12
+
13
+ ```
14
+ ┌────────────────────────────────────────────────────────┐
15
+ │ TOP BAR (sticky, bg-void, border-bottom) │
16
+ ├────────────────────────────────────────────────────────┤
17
+ │ STATS ROW: [StatCard] [StatCard] [StatCard] [StatCard]│
18
+ ├────────────────────────────────────────────────────────┤
19
+ │ TAB BAR (full width, border-bottom) │
20
+ ├───────────┬────────────────────────────────────────────┤
21
+ │ SIDEBAR │ CONTENT │
22
+ │ 200px │ ┌─ Section Header ──────────────────┐ │
23
+ │ tree nav │ │ Card Grid (auto-fit, minmax) │ │
24
+ │ │ └───────────────────────────────────┘ │
25
+ │ │ ┌─ Section Header ──────────────────┐ │
26
+ │ │ │ Card Grid │ │
27
+ │ │ └───────────────────────────────────┘ │
28
+ └───────────┴────────────────────────────────────────────┘
29
+ ```
30
+
31
+ **CSS skeleton:**
32
+ ```css
33
+ .shell {
34
+ min-height: 100svh;
35
+ background: var(--bg-base);
36
+ font-family: var(--font-body);
37
+ display: grid;
38
+ grid-template-rows: auto auto auto minmax(0, 1fr);
39
+ }
40
+ .stats-row {
41
+ display: grid;
42
+ gap: var(--space-3);
43
+ padding: var(--space-5) var(--space-5) 0;
44
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr));
45
+ }
46
+ .main-layout {
47
+ display: grid;
48
+ grid-template-columns: minmax(0, 220px) minmax(0, 1fr);
49
+ min-height: 0;
50
+ }
51
+ .sidebar {
52
+ min-width: 0;
53
+ border-right: 1px solid var(--border-subtle);
54
+ padding: var(--space-4);
55
+ overflow: auto;
56
+ transition: var(--transition-theme);
57
+ }
58
+ .content {
59
+ min-width: 0;
60
+ min-height: 0;
61
+ padding: var(--space-4) var(--space-5);
62
+ overflow: auto;
63
+ }
64
+ .card-grid {
65
+ display: grid;
66
+ gap: var(--space-4);
67
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
68
+ }
69
+ .section { margin-bottom: var(--space-8); }
70
+ ```
71
+
72
+ **Variant with feature panels (2-col below stats):**
73
+ ```css
74
+ .feature-row {
75
+ display: grid;
76
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 240px), 280px);
77
+ gap: var(--space-4);
78
+ padding: var(--space-4) var(--space-5);
79
+ }
80
+ ```
81
+
82
+ ---
83
+
84
+ ## 2. Detail / Profile Page
85
+
86
+ For viewing a single entity (person, product, contact, project).
87
+
88
+ ```
89
+ ┌────────────────────────────────────────────────────────┐
90
+ │ TOP BAR │
91
+ ├────────────────────────────────────────────────────────┤
92
+ Breadcrumbs: Gallery Entity Name │
93
+ PROFILE HEADER │
94
+ ┌───────────────────────────────────────────────────┐
95
+ │ │ [Avatar 96px] NAME (text-3xl, black) │ │
96
+ │ │ Role (accent, italic) │ │
97
+ │ ✦ Tagline │
98
+ │ │ │ │
99
+ │ │ [StatCard] [StatCard] [StatCard] [Badge][Badge]│ │
100
+ └───────────────────────────────────────────────────┘
101
+ ├────────────────────────────────────────────────────────┤
102
+ TAB BAR (General | DNA | Communication | History | ...) │
103
+ ├───────────┬────────────────────────────────────────────┤
104
+ SIDEBAR │ TAB CONTENT │
105
+ 180px │ Varies per tab:
106
+ │ │ — Card grid (2-col) │
107
+ │ │ — DNA analysis panels │
108
+ │ │ — History table │
109
+ └───────────┴────────────────────────────────────────────┘
110
+ ```
111
+
112
+ **Profile Header styles:**
113
+ ```css
114
+ .profile-header {
115
+ padding: var(--space-5) var(--space-6);
116
+ background: var(--bg-base);
117
+ border-bottom: 1px solid var(--border-subtle);
118
+ transition: var(--transition-theme);
119
+ display: grid;
120
+ grid-template-columns: auto minmax(0, 1fr);
121
+ gap: var(--space-5);
122
+ align-items: start;
123
+ }
124
+ .profile-avatar {
125
+ width: 96px; height: 96px;
126
+ border-radius: var(--radius-lg);
127
+ border: 2px solid var(--border-subtle);
128
+ object-fit: cover;
129
+ }
130
+ .profile-name {
131
+ font-family: var(--font-display); font-weight: var(--weight-bold);
132
+ font-size: var(--text-3xl); color: var(--text-heading);
133
+ letter-spacing: 0; line-height: var(--leading-tight);
134
+ overflow-wrap: anywhere;
135
+ }
136
+ .profile-role {
137
+ color: var(--accent); font-style: italic; font-size: var(--text-base);
138
+ }
139
+ .profile-tagline {
140
+ font-family: var(--font-mono); font-size: var(--text-xs);
141
+ color: var(--text-muted); letter-spacing: 0;
142
+ text-transform: uppercase;
143
+ }
144
+ .profile-stats {
145
+ display: grid;
146
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 130px), 1fr));
147
+ gap: var(--space-3);
148
+ margin-top: var(--space-4);
149
+ }
150
+ .profile-badges { display: flex; gap: var(--space-2); align-items: center; flex-wrap: wrap; }
151
+ ```
152
+
153
+ **Featured quote block (inside tab content):**
154
+ ```css
155
+ .quote-block {
156
+ padding: var(--space-8) var(--space-6);
157
+ text-align: center;
158
+ border-bottom: 1px solid var(--border-subtle);
159
+ }
160
+ .quote-text {
161
+ font-family: var(--font-display); font-size: var(--text-xl);
162
+ font-weight: var(--weight-medium); font-style: italic;
163
+ color: var(--text-primary); line-height: var(--leading-snug);
164
+ max-width: 680px; margin: 0 auto;
165
+ }
166
+ .quote-attribution {
167
+ font-family: var(--font-mono); font-size: var(--text-xs);
168
+ color: var(--text-muted); letter-spacing: 0;
169
+ text-transform: uppercase; margin-top: var(--space-3);
170
+ }
171
+ ```
172
+
173
+ ---
174
+
175
+ ## 3. Settings / Config Page
176
+
177
+ Apply the **Compact Density** scale from `design-tokens.md` throughout. Settings pages are operational UI, not marketing — no generous whitespace.
178
+
179
+ ```
180
+ ┌────────────────────────────────────────────────────────┐
181
+ │ TOP BAR │
182
+ ├───────────┬────────────────────────────────────────────┤
183
+ SIDEBAR │ SETTINGS TITLE (text-2xl, no description) │
184
+ │ │ │
185
+ General │ ┌─ Entity grid ──────────────────────┐ │
186
+ │ Security │ │ [Card 280px] [Card 280px] [Card] │ │ auto-fit grid
187
+ │ Billing │ │ name + ID + status badges │ │
188
+ Team │ │ [Ativar btn] [Editar btn] │ │
189
+ │ API │ └─────────────────────────────────────┘ │
190
+ │ │ │
191
+ │ │ ┌─ Section card (p-4 rounded-[22px]) ─┐ │
192
+ │ │ │ eyebrow (mono xs) + title (text-base)│ │
193
+ │ │ │ [row] dot · name model badges Editar│ │ ← divide-y py-2
194
+ │ │ │ [row] dot · name model badges Editar│ │
195
+ │ │ │ ▸ Sync / secondary tool (details) │ │ ← collapsed
196
+ │ │ └─────────────────────────────────────┘ │
197
+ │ │ │
198
+ │ │ ┌─ Danger Zone Card ──────────────────┐ │
199
+ │ │ │ border: var(--semantic-red-dim) │ │
200
+ │ │ └─────────────────────────────────────┘ │
201
+ └───────────┴────────────────────────────────────────────┘
202
+ ```
203
+
204
+ **Page heading:** `text-2xl` max no verbose description subtitle on the page header.
205
+
206
+ **Entity cards (projects, providers, squads):**
207
+ - Grid: `grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr))`, `gap: var(--space-3)`
208
+ - Card: `rounded-[18px] p-3`
209
+ - Name: `text-sm font-semibold truncate`
210
+ - ID: `font-mono text-[0.58rem] truncate`
211
+ - Status badges: `px-2 py-0.5 text-[0.58rem]`
212
+ - Actions: compact row at bottom — `py-1.5 text-[0.62rem]`
213
+
214
+ **Add/Edit forms Modal pattern (not inline expansion):**
215
+ ```
216
+ + Adicionar button → opens modal (max-w-md, centered, backdrop)
217
+ Editar button → opens same modal pre-filled
218
+ Never use accordion/RevealPanel inside entity cards
219
+ ```
220
+
221
+ **Section cards (provider lists, license, LLM config):**
222
+ - Card: `rounded-[22px] p-4`
223
+ - Header row: eyebrow + title + right-side control (select, badge) in one flex row
224
+ - File path or meta: `font-mono text-[0.62rem] truncate` — one line below title, no card for it
225
+ - Row items: `divide-y divide-[border]` with `py-2`, `text-xs` names, `text-[0.65rem]` models
226
+ - Edit button: `px-2.5 py-1 text-[0.65rem] rounded-xl`
227
+
228
+ **Disclosure pattern for secondary tools:**
229
+ ```html
230
+ <details class="rounded-[16px] border bg-elevated mt-3">
231
+ <summary> <!-- flex: label + status badge + action button in one row --> </summary>
232
+ <div class="border-t px-3 pb-3 pt-2">
233
+ <!-- compact diff rows or secondary form -->
234
+ </div>
235
+ </details>
236
+ ```
237
+
238
+ **Form inputs inside modals and cards:**
239
+ - Input/Select: `px-3 py-2 text-xs rounded-xl`
240
+ - Label: `text-[0.65rem] mb-0.5`
241
+ - Submit button: `w-full px-3 py-2 text-xs rounded-xl`
242
+
243
+ ---
244
+
245
+ ## 4. Auth Page (Login / Register)
246
+
247
+ ```
248
+ ┌────────────────────────────────────────────────────────┐
249
+ │ bg-void (full viewport, dark) │
250
+
251
+ │ ┌─ Card max-w: 420px ─────────────────┐ │
252
+ [Logo] AppName (mono, weight-bold)
253
+ SUBTITLE (mono, xs, muted, upper)
254
+
255
+ MONO LABEL: EMAIL
256
+ │ │ [Input]
257
+ MONO LABEL: PASSWORD
258
+ │ │ [Input]
259
+ [Primary Button: full width]
260
+ │ │ divider ─── ou ─── │ │
261
+ │ │ [Secondary Button: OAuth] │ │
262
+ │ │ Link: esqueceu / criar conta │ │
263
+ │ └──────────────────────────────────────┘ │
264
+ │ radial glow behind card (accent-glow)
265
+ └────────────────────────────────────────────────────────┘
266
+ ```
267
+
268
+ ```css
269
+ .auth-shell {
270
+ min-height: 100svh; background: var(--bg-void);
271
+ display: flex; align-items: center; justify-content: center;
272
+ position: relative; isolation: isolate; overflow: hidden;
273
+ padding: var(--space-6);
274
+ }
275
+ .auth-shell::before {
276
+ content: "";
277
+ position: absolute; inset: -20%;
278
+ background:
279
+ radial-gradient(ellipse at 50% 35%, var(--accent-glow), transparent 56%),
280
+ linear-gradient(135deg, rgba(34, 211, 238, 0.08), transparent 58%);
281
+ filter: blur(36px);
282
+ pointer-events: none;
283
+ z-index: 0;
284
+ }
285
+ .auth-card {
286
+ background: var(--bg-surface); border: 1px solid var(--border-subtle);
287
+ border-radius: var(--radius-xl); padding: var(--space-8);
288
+ width: 100%; max-width: 420px; position: relative; z-index: 1;
289
+ }
290
+ ```
291
+
292
+ ---
293
+
294
+ ## 5. List-Detail (Split View)
295
+
296
+ ```
297
+ ┌────────────────────────────────────────────────────────┐
298
+ │ TOP BAR │
299
+ ├────────────────────────────────────────────────────────┤
300
+ │ TAB BAR + Filter badges │
301
+ ├──────────────────────┬─────────────────────────────────┤
302
+ │ LIST minmax(280px,340px) │ DETAIL PANEL minmax(0,1fr) │
303
+ │ ┌──────────────┐ │ Profile Header (compact) │
304
+ │ │ Item (active)│◄───│ border-left: 3px accent │
305
+ │ ├──────────────┤ │ Stat Cards row │
306
+ │ │ Item │ │ Tab sub-navigation │
307
+ │ ├──────────────┤ │ Content (cards, table, DNA) │
308
+ │ │ Item │ │ │
309
+ │ └──────────────┘ │ │
310
+ └──────────────────────┴─────────────────────────────────┘
311
+ ```
312
+
313
+ ```css
314
+ .list-detail-shell { display: grid; grid-template-columns: minmax(280px, 340px) minmax(0, 1fr); min-height: 0; }
315
+ .list-panel { min-width: 0; border-right: 1px solid var(--border-subtle); overflow: auto; }
316
+ .list-item { padding: var(--space-4); border-bottom: 1px solid var(--border-subtle); cursor: pointer; transition: var(--transition-theme); }
317
+ .list-item:hover { background: var(--bg-elevated); }
318
+ .list-item.active { background: var(--bg-elevated); border-left: 3px solid var(--accent); }
319
+ .detail-panel { min-width: 0; min-height: 0; overflow: auto; }
320
+ ```
321
+
322
+ ---
323
+
324
+ ## Responsive Rules (all patterns)
325
+
326
+ ```css
327
+ @media (max-width: 768px) {
328
+ .shell { grid-template-rows: auto auto auto auto; }
329
+ .main-layout { grid-template-columns: 1fr; }
330
+ .sidebar {
331
+ border-right: none;
332
+ border-bottom: 1px solid var(--border-subtle);
333
+ display: flex;
334
+ gap: var(--space-2);
335
+ overflow-x: auto;
336
+ padding-block: var(--space-3);
337
+ }
338
+ .card-grid { grid-template-columns: 1fr; }
339
+ .feature-row { grid-template-columns: 1fr; }
340
+ .profile-header { grid-template-columns: 1fr; }
341
+ .list-detail-shell { grid-template-columns: 1fr; }
342
+ .list-panel {
343
+ border-right: none;
344
+ border-bottom: 1px solid var(--border-subtle);
345
+ max-height: 320px;
346
+ }
347
+ }
348
+ @media (min-width: 768px) and (max-width: 1024px) {
349
+ .main-layout { grid-template-columns: minmax(0, 180px) minmax(0, 1fr); }
350
+ .card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
351
+ }
352
+ @media (min-width: 1024px) {
353
+ .card-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
354
+ }
355
+ ```