@jaimevalasek/aioson 1.4.0 → 1.5.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 (199) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/LICENSE +661 -21
  3. package/README.md +3 -1
  4. package/docs/en/squad-dashboard.md +372 -0
  5. package/docs/openclaw-bridge.md +308 -0
  6. package/docs/pt/agentes.md +124 -10
  7. package/docs/pt/cenarios.md +46 -2
  8. package/docs/pt/comandos-cli.md +60 -1
  9. package/docs/pt/inicio-rapido.md +18 -2
  10. package/docs/pt/squad-dashboard.md +373 -0
  11. package/docs/testing/genome-2.0-matrix.md +5 -5
  12. package/docs/testing/genome-2.0-rollout.md +9 -9
  13. package/package.json +2 -2
  14. package/src/backup-local.js +74 -0
  15. package/src/cli.js +98 -0
  16. package/src/commands/backup-local-cmd.js +25 -0
  17. package/src/commands/runtime.js +242 -0
  18. package/src/commands/setup-context.js +7 -2
  19. package/src/commands/squad-daemon.js +209 -0
  20. package/src/commands/squad-dashboard.js +39 -0
  21. package/src/commands/squad-deploy.js +64 -0
  22. package/src/commands/squad-doctor.js +52 -0
  23. package/src/commands/squad-mcp.js +270 -0
  24. package/src/commands/squad-processes.js +56 -0
  25. package/src/commands/squad-recovery.js +42 -0
  26. package/src/commands/squad-roi.js +291 -0
  27. package/src/commands/squad-score.js +250 -0
  28. package/src/commands/squad-status.js +37 -1
  29. package/src/commands/squad-validate.js +62 -1
  30. package/src/commands/squad-webhook.js +160 -0
  31. package/src/commands/squad-worker.js +191 -0
  32. package/src/commands/squad-worktrees.js +75 -0
  33. package/src/commands/web-map.js +70 -0
  34. package/src/commands/web-scrape.js +71 -0
  35. package/src/constants.js +8 -0
  36. package/src/context-writer.js +45 -1
  37. package/src/i18n/messages/en.js +127 -1
  38. package/src/i18n/messages/es.js +117 -0
  39. package/src/i18n/messages/fr.js +117 -0
  40. package/src/i18n/messages/pt-BR.js +126 -1
  41. package/src/lib/webhook-server.js +328 -0
  42. package/src/mcp-connectors/registry.js +602 -0
  43. package/src/runtime-store.js +259 -2
  44. package/src/squad/external-session.js +180 -0
  45. package/src/squad/inter-squad.js +74 -0
  46. package/src/squad/recovery-context.js +201 -0
  47. package/src/squad/worktree-manager.js +114 -0
  48. package/src/squad-daemon.js +490 -0
  49. package/src/squad-dashboard/api.js +223 -0
  50. package/src/squad-dashboard/attachment-handler.js +93 -0
  51. package/src/squad-dashboard/context-monitor.js +157 -0
  52. package/src/squad-dashboard/execution-logs.js +115 -0
  53. package/src/squad-dashboard/hunk-review.js +209 -0
  54. package/src/squad-dashboard/metrics.js +133 -0
  55. package/src/squad-dashboard/process-monitor.js +125 -0
  56. package/src/squad-dashboard/renderer.js +858 -0
  57. package/src/squad-dashboard/server.js +232 -0
  58. package/src/squad-dashboard/styles.js +525 -0
  59. package/src/squad-dashboard/token-tracker.js +99 -0
  60. package/src/web.js +284 -0
  61. package/src/worker-runner.js +339 -0
  62. package/template/.aioson/agents/analyst.md +4 -0
  63. package/template/.aioson/agents/architect.md +4 -0
  64. package/template/.aioson/agents/dev.md +120 -11
  65. package/template/.aioson/agents/deyvin.md +8 -0
  66. package/template/.aioson/agents/neo.md +152 -0
  67. package/template/.aioson/agents/orache.md +17 -0
  68. package/template/.aioson/agents/orchestrator.md +26 -0
  69. package/template/.aioson/agents/product.md +60 -12
  70. package/template/.aioson/agents/qa.md +1 -0
  71. package/template/.aioson/agents/setup.md +63 -19
  72. package/template/.aioson/agents/sheldon.md +603 -0
  73. package/template/.aioson/agents/squad.md +191 -0
  74. package/template/.aioson/agents/tester.md +254 -0
  75. package/template/.aioson/agents/ux-ui.md +12 -0
  76. package/template/.aioson/config.md +6 -0
  77. package/template/.aioson/locales/en/agents/analyst.md +8 -0
  78. package/template/.aioson/locales/en/agents/architect.md +8 -0
  79. package/template/.aioson/locales/en/agents/dev.md +66 -7
  80. package/template/.aioson/locales/en/agents/deyvin.md +8 -0
  81. package/template/.aioson/locales/en/agents/neo.md +8 -0
  82. package/template/.aioson/locales/en/agents/orchestrator.md +26 -0
  83. package/template/.aioson/locales/en/agents/qa.md +49 -0
  84. package/template/.aioson/locales/en/agents/setup.md +2 -1
  85. package/template/.aioson/locales/en/agents/sheldon.md +340 -0
  86. package/template/.aioson/locales/en/agents/ux-ui.md +8 -0
  87. package/template/.aioson/locales/es/agents/analyst.md +8 -0
  88. package/template/.aioson/locales/es/agents/architect.md +8 -0
  89. package/template/.aioson/locales/es/agents/dev.md +66 -7
  90. package/template/.aioson/locales/es/agents/deyvin.md +8 -0
  91. package/template/.aioson/locales/es/agents/neo.md +48 -0
  92. package/template/.aioson/locales/es/agents/orchestrator.md +26 -0
  93. package/template/.aioson/locales/es/agents/qa.md +26 -0
  94. package/template/.aioson/locales/es/agents/setup.md +2 -1
  95. package/template/.aioson/locales/es/agents/sheldon.md +192 -0
  96. package/template/.aioson/locales/es/agents/squad.md +63 -0
  97. package/template/.aioson/locales/es/agents/ux-ui.md +8 -0
  98. package/template/.aioson/locales/fr/agents/analyst.md +8 -0
  99. package/template/.aioson/locales/fr/agents/architect.md +8 -0
  100. package/template/.aioson/locales/fr/agents/dev.md +66 -7
  101. package/template/.aioson/locales/fr/agents/deyvin.md +8 -0
  102. package/template/.aioson/locales/fr/agents/neo.md +48 -0
  103. package/template/.aioson/locales/fr/agents/orchestrator.md +26 -0
  104. package/template/.aioson/locales/fr/agents/qa.md +26 -0
  105. package/template/.aioson/locales/fr/agents/setup.md +2 -1
  106. package/template/.aioson/locales/fr/agents/sheldon.md +192 -0
  107. package/template/.aioson/locales/fr/agents/squad.md +63 -0
  108. package/template/.aioson/locales/fr/agents/ux-ui.md +8 -0
  109. package/template/.aioson/locales/pt-BR/agents/analyst.md +19 -0
  110. package/template/.aioson/locales/pt-BR/agents/architect.md +19 -0
  111. package/template/.aioson/locales/pt-BR/agents/dev.md +75 -12
  112. package/template/.aioson/locales/pt-BR/agents/deyvin.md +8 -0
  113. package/template/.aioson/locales/pt-BR/agents/neo.md +147 -0
  114. package/template/.aioson/locales/pt-BR/agents/orchestrator.md +26 -0
  115. package/template/.aioson/locales/pt-BR/agents/product.md +8 -3
  116. package/template/.aioson/locales/pt-BR/agents/qa.md +60 -0
  117. package/template/.aioson/locales/pt-BR/agents/setup.md +2 -1
  118. package/template/.aioson/locales/pt-BR/agents/sheldon.md +192 -0
  119. package/template/.aioson/locales/pt-BR/agents/squad.md +105 -0
  120. package/template/.aioson/locales/pt-BR/agents/ux-ui.md +8 -0
  121. package/template/.aioson/schemas/squad-blueprint.schema.json +21 -0
  122. package/template/.aioson/schemas/squad-manifest.schema.json +178 -1
  123. package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +205 -0
  124. package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -0
  125. package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -0
  126. package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -0
  127. package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -0
  128. package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -0
  129. package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -0
  130. package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -0
  131. package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +210 -0
  132. package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -0
  133. package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -0
  134. package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -0
  135. package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -0
  136. package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -0
  137. package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -0
  138. package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -0
  139. package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +55 -9
  140. package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -0
  141. package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +1 -1
  142. package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +100 -0
  143. package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +43 -9
  144. package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +40 -0
  145. package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +1 -1
  146. package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +99 -12
  147. package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +209 -0
  148. package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -0
  149. package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -0
  150. package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -0
  151. package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -0
  152. package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -0
  153. package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -0
  154. package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -0
  155. package/template/.aioson/skills/premium-visual-design/SKILL.md +83 -0
  156. package/template/.aioson/skills/premium-visual-design/components/agent-badge.md +92 -0
  157. package/template/.aioson/skills/premium-visual-design/components/dependency-node.md +102 -0
  158. package/template/.aioson/skills/premium-visual-design/components/mention-autocomplete.md +136 -0
  159. package/template/.aioson/skills/premium-visual-design/components/notification-center.md +136 -0
  160. package/template/.aioson/skills/premium-visual-design/components/review-action-bar.md +188 -0
  161. package/template/.aioson/skills/premium-visual-design/components/team-switcher.md +131 -0
  162. package/template/.aioson/skills/premium-visual-design/patterns/agent-message-thread.md +198 -0
  163. package/template/.aioson/skills/premium-visual-design/patterns/notification-panel.md +275 -0
  164. package/template/.aioson/skills/premium-visual-design/patterns/review-workflow-ui.md +234 -0
  165. package/template/.aioson/skills/premium-visual-design/patterns/task-dependency-graph.md +147 -0
  166. package/template/.aioson/skills/premium-visual-design/tokens/status-extended.md +142 -0
  167. package/template/.aioson/skills/squad/formats/catalog.json +15 -0
  168. package/template/.aioson/skills/squad/formats/content/blog-post.md +47 -0
  169. package/template/.aioson/skills/squad/formats/content/newsletter.md +47 -0
  170. package/template/.aioson/skills/squad/formats/creative/podcast-script.md +43 -0
  171. package/template/.aioson/skills/squad/formats/creative/video-script.md +41 -0
  172. package/template/.aioson/skills/squad/formats/social/instagram-feed.md +42 -0
  173. package/template/.aioson/skills/squad/formats/social/linkedin-post.md +42 -0
  174. package/template/.aioson/skills/squad/formats/social/tiktok.md +39 -0
  175. package/template/.aioson/skills/squad/formats/social/twitter-thread.md +39 -0
  176. package/template/.aioson/skills/squad/formats/social/youtube-long.md +47 -0
  177. package/template/.aioson/skills/squad/formats/social/youtube-shorts.md +39 -0
  178. package/template/.aioson/skills/squad/patterns/multi-platform-pattern.md +108 -0
  179. package/template/.aioson/skills/squad/patterns/persona-based-pattern.md +98 -0
  180. package/template/.aioson/skills/squad/patterns/pipeline-pattern.md +106 -0
  181. package/template/.aioson/skills/squad/patterns/review-loop-pattern.md +81 -0
  182. package/template/.aioson/skills/squad/references/checklist-templates.md +122 -0
  183. package/template/.aioson/skills/squad/references/executor-archetypes.md +123 -0
  184. package/template/.aioson/skills/squad/references/workflow-templates.md +169 -0
  185. package/template/.aioson/skills/static/debugging-protocol.md +42 -0
  186. package/template/.aioson/skills/static/git-worktrees.md +36 -0
  187. package/template/.aioson/tasks/implementation-plan.md +19 -0
  188. package/template/.aioson/tasks/squad-design.md +28 -0
  189. package/template/.aioson/tasks/squad-profile.md +48 -0
  190. package/template/.aioson/tasks/squad-review.md +61 -0
  191. package/template/.aioson/tasks/squad-task-decompose.md +66 -0
  192. package/template/.claude/commands/aioson/agent/neo.md +5 -0
  193. package/template/.claude/commands/aioson/agent/tester.md +5 -0
  194. package/template/.gemini/GEMINI.md +1 -0
  195. package/template/.gemini/commands/aios-neo.toml +4 -0
  196. package/template/.gemini/commands/aios-tester.toml +6 -0
  197. package/template/AGENTS.md +3 -0
  198. package/template/CLAUDE.md +5 -2
  199. package/template/OPENCODE.md +2 -0
@@ -0,0 +1,508 @@
1
+ # Components — Warm Craft UI
2
+
3
+ Reusable component specifications. Every component must use tokens from `design-tokens.md`. Never hardcode colors, sizes, or radii.
4
+
5
+ ---
6
+
7
+ ## Navigation
8
+
9
+ ### Top Bar
10
+ ```
11
+ height: 64px
12
+ background: var(--bg-surface)
13
+ border-bottom: 1px solid var(--border-subtle)
14
+ shadow: var(--shadow-xs)
15
+ padding: 0 var(--space-6)
16
+ display: flex; align-items: center; justify-content: space-between
17
+ ```
18
+
19
+ Content slots:
20
+ - **Left:** Logo (mark or wordmark, max-height 28px)
21
+ - **Center:** Search bar (optional, rounded pill `var(--radius-full)`, `var(--bg-elevated)` background, max-width 480px)
22
+ - **Right:** Notification icon + User avatar (rounded full, 36px)
23
+
24
+ ### Sidebar Navigation
25
+ ```
26
+ width: 240px
27
+ background: var(--bg-void)
28
+ padding: var(--space-4) var(--space-3)
29
+ border-right: 1px solid var(--border-subtle)
30
+ ```
31
+
32
+ Nav item:
33
+ ```
34
+ height: var(--control-md) /* 40px */
35
+ padding: 0 var(--space-3)
36
+ border-radius: var(--radius-lg)
37
+ font: var(--font-body), var(--text-sm), var(--weight-medium)
38
+ color: var(--text-secondary)
39
+ transition: var(--transition-fast)
40
+ display: flex; align-items: center; gap: var(--space-3)
41
+ icon: 20px, stroke-width 1.5
42
+
43
+ hover:
44
+ background: var(--bg-elevated)
45
+ color: var(--text-primary)
46
+
47
+ active:
48
+ background: var(--bg-elevated)
49
+ color: var(--text-heading)
50
+ font-weight: var(--weight-semibold)
51
+ ```
52
+
53
+ Nav section label:
54
+ ```
55
+ font: var(--font-body), var(--text-xs), var(--weight-medium)
56
+ color: var(--text-muted)
57
+ letter-spacing: var(--tracking-wider)
58
+ text-transform: uppercase
59
+ padding: var(--space-6) var(--space-3) var(--space-2)
60
+ ```
61
+
62
+ ### Bottom Tab Bar (mobile)
63
+ ```
64
+ height: 56px
65
+ background: var(--bg-surface)
66
+ border-top: 1px solid var(--border-subtle)
67
+ display: flex; justify-content: space-around; align-items: center
68
+
69
+ tab item:
70
+ icon: 24px
71
+ label: var(--text-xs), var(--weight-medium)
72
+ color: var(--text-muted)
73
+ gap: var(--space-1)
74
+
75
+ active:
76
+ color: var(--accent)
77
+ ```
78
+
79
+ ---
80
+
81
+ ## Cards
82
+
83
+ ### Base Card
84
+ ```
85
+ background: var(--bg-surface)
86
+ border: 1px solid var(--border-subtle)
87
+ border-radius: var(--radius-xl)
88
+ padding: var(--space-6)
89
+ shadow: var(--shadow-sm)
90
+ transition: var(--transition-base)
91
+
92
+ hover (when clickable):
93
+ shadow: var(--shadow-md)
94
+ transform: translateY(-1px)
95
+ border-color: var(--border-medium)
96
+ ```
97
+
98
+ ### Stat Card
99
+ ```
100
+ extends: Base Card
101
+ padding: var(--space-5) var(--space-6)
102
+
103
+ number:
104
+ font: var(--font-display), var(--text-4xl), var(--weight-bold)
105
+ color: var(--text-heading)
106
+ letter-spacing: var(--tracking-tight)
107
+
108
+ label:
109
+ font: var(--font-body), var(--text-sm), var(--weight-medium)
110
+ color: var(--text-secondary)
111
+ margin-top: var(--space-1)
112
+
113
+ trend:
114
+ font: var(--font-body), var(--text-sm), var(--weight-medium)
115
+ color: var(--semantic-green) or var(--semantic-red)
116
+ includes: arrow icon + percentage
117
+ ```
118
+
119
+ ### Feature Card
120
+ ```
121
+ extends: Base Card
122
+ padding: var(--space-8)
123
+ border-radius: var(--radius-2xl)
124
+
125
+ icon area:
126
+ width: 48px; height: 48px
127
+ background: var(--accent-subtle)
128
+ border-radius: var(--radius-lg)
129
+ display: flex; align-items: center; justify-content: center
130
+ icon color: var(--accent)
131
+
132
+ title:
133
+ font: var(--font-display), var(--text-xl), var(--weight-semibold)
134
+ color: var(--text-heading)
135
+ margin-top: var(--space-4)
136
+
137
+ description:
138
+ font: var(--font-body), var(--text-base), var(--weight-normal)
139
+ color: var(--text-secondary)
140
+ line-height: var(--leading-relaxed)
141
+ margin-top: var(--space-2)
142
+ ```
143
+
144
+ ### Media Card
145
+ ```
146
+ extends: Base Card
147
+ padding: 0
148
+ overflow: hidden
149
+ border-radius: var(--radius-2xl)
150
+
151
+ media:
152
+ width: 100%
153
+ aspect-ratio: 16/9 or 4/3
154
+ object-fit: cover
155
+
156
+ body:
157
+ padding: var(--space-5) var(--space-6)
158
+
159
+ title:
160
+ font: var(--font-display), var(--text-lg), var(--weight-semibold)
161
+ color: var(--text-heading)
162
+
163
+ meta:
164
+ font: var(--font-body), var(--text-sm)
165
+ color: var(--text-secondary)
166
+ margin-top: var(--space-2)
167
+ ```
168
+
169
+ ---
170
+
171
+ ## Buttons
172
+
173
+ ### Primary Button
174
+ ```
175
+ height: var(--control-md)
176
+ padding: 0 var(--space-5)
177
+ background: var(--accent)
178
+ color: var(--accent-contrast)
179
+ border: none
180
+ border-radius: var(--radius-lg)
181
+ font: var(--font-body), var(--text-sm), var(--weight-semibold)
182
+ cursor: pointer
183
+ transition: var(--transition-fast)
184
+
185
+ hover:
186
+ background: var(--accent-hover)
187
+
188
+ active:
189
+ transform: scale(0.98)
190
+
191
+ disabled:
192
+ opacity: 0.5
193
+ pointer-events: none
194
+ ```
195
+
196
+ ### Secondary Button
197
+ ```
198
+ extends: Primary (dimensions, font, radius)
199
+ background: transparent
200
+ color: var(--text-heading)
201
+ border: 1px solid var(--border-medium)
202
+
203
+ hover:
204
+ background: var(--bg-elevated)
205
+ border-color: var(--border-strong)
206
+ ```
207
+
208
+ ### Ghost Button
209
+ ```
210
+ extends: Primary (dimensions, font)
211
+ background: transparent
212
+ color: var(--text-secondary)
213
+ border: none
214
+
215
+ hover:
216
+ background: var(--bg-elevated)
217
+ color: var(--text-heading)
218
+ ```
219
+
220
+ ### Large CTA (hero sections)
221
+ ```
222
+ height: var(--control-xl)
223
+ padding: 0 var(--space-8)
224
+ border-radius: var(--radius-xl)
225
+ font-size: var(--text-base)
226
+ shadow: var(--shadow-md)
227
+
228
+ hover:
229
+ shadow: var(--shadow-lg)
230
+ transform: translateY(-1px)
231
+ ```
232
+
233
+ ---
234
+
235
+ ## Forms
236
+
237
+ ### Text Input
238
+ ```
239
+ height: var(--control-md)
240
+ padding: 0 var(--space-4)
241
+ background: var(--bg-surface)
242
+ border: 1px solid var(--border-medium)
243
+ border-radius: var(--radius-md)
244
+ font: var(--font-body), var(--text-base)
245
+ color: var(--text-heading)
246
+ transition: var(--transition-fast)
247
+
248
+ placeholder:
249
+ color: var(--text-muted)
250
+
251
+ focus:
252
+ border-color: var(--accent)
253
+ box-shadow: 0 0 0 3px var(--accent-dim)
254
+ outline: none
255
+
256
+ error:
257
+ border-color: var(--semantic-red)
258
+ box-shadow: 0 0 0 3px var(--semantic-red-dim)
259
+ ```
260
+
261
+ ### Label
262
+ ```
263
+ font: var(--font-body), var(--text-sm), var(--weight-medium)
264
+ color: var(--text-heading)
265
+ margin-bottom: var(--space-2)
266
+ display: block
267
+ ```
268
+
269
+ ### Helper Text
270
+ ```
271
+ font: var(--font-body), var(--text-sm)
272
+ color: var(--text-secondary)
273
+ margin-top: var(--space-1)
274
+ ```
275
+
276
+ ### Error Message
277
+ ```
278
+ font: var(--font-body), var(--text-sm), var(--weight-medium)
279
+ color: var(--semantic-red)
280
+ margin-top: var(--space-1)
281
+ ```
282
+
283
+ ### Textarea
284
+ ```
285
+ extends: Text Input
286
+ min-height: 120px
287
+ padding: var(--space-3) var(--space-4)
288
+ resize: vertical
289
+ line-height: var(--leading-normal)
290
+ ```
291
+
292
+ ### Select
293
+ ```
294
+ extends: Text Input
295
+ appearance: none
296
+ background-image: chevron-down SVG
297
+ background-position: right var(--space-3) center
298
+ background-repeat: no-repeat
299
+ padding-right: var(--space-10)
300
+ ```
301
+
302
+ ### Checkbox / Radio
303
+ ```
304
+ width: 20px; height: 20px
305
+ border: 2px solid var(--border-strong)
306
+ border-radius: var(--radius-sm) (checkbox) or var(--radius-full) (radio)
307
+ transition: var(--transition-fast)
308
+
309
+ checked:
310
+ background: var(--accent)
311
+ border-color: var(--accent)
312
+ color: var(--accent-contrast) (checkmark)
313
+ ```
314
+
315
+ ### Toggle Switch
316
+ ```
317
+ width: 44px; height: 24px
318
+ border-radius: var(--radius-full)
319
+ background: var(--border-strong)
320
+ transition: var(--transition-base)
321
+
322
+ thumb:
323
+ width: 20px; height: 20px
324
+ border-radius: var(--radius-full)
325
+ background: white
326
+ shadow: var(--shadow-sm)
327
+
328
+ checked:
329
+ background: var(--accent)
330
+ thumb: translate right
331
+ ```
332
+
333
+ ---
334
+
335
+ ## Data Display
336
+
337
+ ### Table
338
+ ```
339
+ width: 100%
340
+ border-collapse: separate
341
+ border-spacing: 0
342
+
343
+ header row:
344
+ background: var(--bg-elevated)
345
+ font: var(--font-body), var(--text-sm), var(--weight-semibold)
346
+ color: var(--text-heading)
347
+ text-align: left
348
+ padding: var(--space-3) var(--space-4)
349
+ border-bottom: 1px solid var(--border-medium)
350
+
351
+ body row:
352
+ font: var(--font-body), var(--text-sm)
353
+ color: var(--text-primary)
354
+ padding: var(--space-3) var(--space-4)
355
+ border-bottom: 1px solid var(--border-subtle)
356
+ transition: var(--transition-fast)
357
+
358
+ hover:
359
+ background: var(--bg-elevated)
360
+
361
+ first cell + last cell:
362
+ border-radius: var(--radius-lg) on outer corners (first and last row)
363
+ ```
364
+
365
+ ### Badge
366
+ ```
367
+ display: inline-flex; align-items: center
368
+ height: 24px
369
+ padding: 0 var(--space-3)
370
+ border-radius: var(--radius-full)
371
+ font: var(--font-body), var(--text-xs), var(--weight-medium)
372
+
373
+ variants:
374
+ default: background: var(--bg-elevated), color: var(--text-secondary)
375
+ accent: background: var(--accent-dim), color: var(--accent-strong)
376
+ success: background: var(--semantic-green-dim), color: var(--semantic-green)
377
+ warning: background: var(--semantic-amber-dim), color: var(--semantic-amber)
378
+ error: background: var(--semantic-red-dim), color: var(--semantic-red)
379
+ ```
380
+
381
+ ### Avatar
382
+ ```
383
+ border-radius: var(--radius-full)
384
+ object-fit: cover
385
+
386
+ sizes:
387
+ xs: 24px
388
+ sm: 32px
389
+ md: 40px
390
+ lg: 56px
391
+ xl: 80px
392
+
393
+ fallback:
394
+ background: var(--accent-dim)
395
+ color: var(--accent)
396
+ font: var(--font-body), var(--weight-semibold)
397
+ display: flex; align-items: center; justify-content: center
398
+ (shows initials)
399
+ ```
400
+
401
+ ### Empty State
402
+ ```
403
+ text-align: center
404
+ padding: var(--space-16) var(--space-8)
405
+
406
+ illustration:
407
+ max-width: 240px
408
+ margin: 0 auto var(--space-6)
409
+ (warm, hand-drawn style — never cold geometric)
410
+
411
+ title:
412
+ font: var(--font-display), var(--text-xl), var(--weight-semibold)
413
+ color: var(--text-heading)
414
+
415
+ description:
416
+ font: var(--font-body), var(--text-base)
417
+ color: var(--text-secondary)
418
+ max-width: 400px
419
+ margin: var(--space-2) auto var(--space-6)
420
+
421
+ action:
422
+ Primary Button
423
+ ```
424
+
425
+ ---
426
+
427
+ ## Feedback
428
+
429
+ ### Toast / Notification
430
+ ```
431
+ background: var(--bg-surface)
432
+ border: 1px solid var(--border-medium)
433
+ border-radius: var(--radius-xl)
434
+ padding: var(--space-4) var(--space-5)
435
+ shadow: var(--shadow-lg)
436
+ max-width: 420px
437
+ display: flex; gap: var(--space-3); align-items: flex-start
438
+
439
+ icon: 20px, colored by semantic type
440
+ title: var(--font-body), var(--text-sm), var(--weight-semibold), var(--text-heading)
441
+ message: var(--font-body), var(--text-sm), var(--text-secondary)
442
+ dismiss: Ghost Button, icon-only, top-right
443
+ ```
444
+
445
+ ### Modal
446
+ ```
447
+ background: var(--bg-surface)
448
+ border: 1px solid var(--border-subtle)
449
+ border-radius: var(--radius-2xl)
450
+ shadow: var(--shadow-xl)
451
+ padding: var(--space-8)
452
+ max-width: 480px
453
+ width: 90vw
454
+
455
+ backdrop:
456
+ background: rgba(45, 40, 35, 0.40)
457
+ backdrop-filter: blur(4px)
458
+
459
+ title:
460
+ font: var(--font-display), var(--text-xl), var(--weight-semibold)
461
+ color: var(--text-heading)
462
+
463
+ body:
464
+ font: var(--font-body), var(--text-base)
465
+ color: var(--text-primary)
466
+ margin-top: var(--space-4)
467
+
468
+ actions:
469
+ margin-top: var(--space-6)
470
+ display: flex; gap: var(--space-3); justify-content: flex-end
471
+ ```
472
+
473
+ ### Tooltip
474
+ ```
475
+ background: var(--text-heading)
476
+ color: var(--text-inverse)
477
+ padding: var(--space-2) var(--space-3)
478
+ border-radius: var(--radius-md)
479
+ font: var(--font-body), var(--text-xs), var(--weight-medium)
480
+ shadow: var(--shadow-md)
481
+ max-width: 240px
482
+ ```
483
+
484
+ ### Progress Bar
485
+ ```
486
+ height: 8px
487
+ background: var(--bg-elevated)
488
+ border-radius: var(--radius-full)
489
+ overflow: hidden
490
+
491
+ fill:
492
+ height: 100%
493
+ background: var(--accent)
494
+ border-radius: var(--radius-full)
495
+ transition: width var(--transition-slow)
496
+ ```
497
+
498
+ ### Skeleton Loader
499
+ ```
500
+ background: var(--bg-elevated)
501
+ border-radius: var(--radius-md) (for text) or var(--radius-xl) (for cards)
502
+ animation: warm-pulse 1.8s ease-in-out infinite
503
+
504
+ @keyframes warm-pulse {
505
+ 0%, 100% { opacity: 1; }
506
+ 50% { opacity: 0.5; }
507
+ }
508
+ ```
@@ -0,0 +1,223 @@
1
+ # Dashboard Presets — Warm Craft UI
2
+
3
+ Composition guides for common dashboard types. Every preset uses the App Shell from `patterns.md`, tokens from `design-tokens.md`, and components from `components.md`.
4
+
5
+ ---
6
+
7
+ ## General Dashboard Rules
8
+
9
+ 1. **Never start with four equal stat cards.** Find the hero insight first.
10
+ 2. **Charts use warm palette only:** terracotta, sage, amber, slate-blue, muted purple. Never default library colors.
11
+ 3. **Serif stat numbers:** all prominent numbers use `var(--font-display)` — this is the visual signature in data-heavy pages.
12
+ 4. **Card depth hierarchy:** hero insight gets `var(--shadow-md)`, secondary cards get `var(--shadow-sm)`, tables get `var(--shadow-xs)`.
13
+ 5. **Breathing room:** dashboards in Warm Craft are NOT dense. Keep `var(--space-5)` or `var(--space-6)` gap between cards.
14
+ 6. **Section headers use serif:** `var(--font-display)`, `var(--text-lg)`, `var(--weight-semibold)`.
15
+
16
+ ---
17
+
18
+ ## Preset 1: Overview Dashboard
19
+
20
+ Use for: general-purpose analytics, admin home, project overview.
21
+
22
+ ```
23
+ GREETING HEADER (optional but encouraged)
24
+ "Good morning, {name}" or "Dashboard Overview"
25
+ font: var(--font-display), var(--text-2xl), var(--weight-bold)
26
+ subtitle: date or summary context
27
+ margin-bottom: var(--space-6)
28
+
29
+ HERO INSIGHT (one card, full width or 2/3 width)
30
+ Large serif number + trend + context sentence
31
+ "Revenue this month: $48,250 — 12% above target"
32
+ background: var(--bg-surface)
33
+ border-radius: var(--radius-2xl)
34
+ padding: var(--space-8)
35
+ shadow: var(--shadow-md)
36
+
37
+ SECONDARY STATS (grid, 3-4 columns)
38
+ Stat Card components
39
+ Smaller than hero, var(--shadow-sm)
40
+
41
+ CHART SECTION
42
+ Section header + one or two charts side by side
43
+ Chart container: Base Card with padding var(--space-6)
44
+ Colors: var(--accent), var(--accent-secondary), var(--accent-tertiary), var(--semantic-blue)
45
+
46
+ RECENT ACTIVITY or TABLE
47
+ Section header + Table component or Activity Feed
48
+ ```
49
+
50
+ ---
51
+
52
+ ## Preset 2: Analytics Dashboard
53
+
54
+ Use for: marketing analytics, traffic analysis, conversion tracking, growth metrics.
55
+
56
+ ```
57
+ DATE RANGE SELECTOR (top right, next to page title)
58
+ Pill-shaped select or date picker
59
+ background: var(--bg-elevated)
60
+ border-radius: var(--radius-full)
61
+
62
+ METRIC STRIP (3-5 metrics, horizontal scroll on mobile)
63
+ Each: serif number + label + trend badge
64
+ NOT cards — just a clean horizontal row with dividers
65
+ background: var(--bg-surface)
66
+ border-radius: var(--radius-xl)
67
+ padding: var(--space-4) var(--space-6)
68
+
69
+ PRIMARY CHART (full width)
70
+ Area chart or line chart — main KPI over time
71
+ Warm gradient fill under the line
72
+ background: var(--bg-surface) card
73
+ border-radius: var(--radius-xl)
74
+ height: 320px
75
+
76
+ BREAKDOWN SECTION (two columns)
77
+ Left: Donut chart or horizontal bar chart (top sources, categories)
78
+ Right: Table with sortable columns (detailed breakdown)
79
+
80
+ COMPARISON TABLE (full width)
81
+ Table with trend sparklines in cells
82
+ Warm-colored inline mini charts
83
+ ```
84
+
85
+ ---
86
+
87
+ ## Preset 3: Activity Feed Dashboard
88
+
89
+ Use for: social, CRM activity, team updates, notification center, audit log.
90
+
91
+ ```
92
+ LAYOUT: Two columns on desktop, single column on mobile
93
+ Left (2/3): Activity Feed
94
+ Right (1/3): Summary + Quick Actions
95
+
96
+ ACTIVITY FEED
97
+ Vertical timeline with warm connecting line
98
+ line: 2px solid var(--border-subtle), left side
99
+
100
+ Each item:
101
+ avatar: var(--space-10) (40px)
102
+ content: user action description
103
+ timestamp: var(--text-xs), var(--text-muted)
104
+ padding: var(--space-4) 0
105
+ border-bottom: 1px solid var(--border-subtle)
106
+
107
+ action types have different icons/colors:
108
+ create: var(--semantic-green) icon
109
+ update: var(--semantic-blue) icon
110
+ delete: var(--semantic-red) icon
111
+ comment: var(--accent) icon
112
+
113
+ SUMMARY SIDEBAR
114
+ Quick stats: Stat Cards (compact variant)
115
+ Quick actions: Stack of Ghost Buttons
116
+ Filters: Badge chips for filtering activity type
117
+ ```
118
+
119
+ ---
120
+
121
+ ## Preset 4: Project Board Dashboard
122
+
123
+ Use for: project management, kanban overview, sprint planning, task tracking.
124
+
125
+ ```
126
+ PROJECT HEADER
127
+ Project name (serif, large) + status badge + team avatars (overlapping)
128
+ Progress bar: overall project completion
129
+ margin-bottom: var(--space-6)
130
+
131
+ BOARD VIEW (default)
132
+ Horizontal columns: "To Do" | "In Progress" | "Review" | "Done"
133
+ Column header:
134
+ title + count badge
135
+ font: var(--font-body), var(--text-sm), var(--weight-semibold)
136
+ color: var(--text-heading)
137
+
138
+ Column:
139
+ background: var(--bg-void)
140
+ border-radius: var(--radius-xl)
141
+ padding: var(--space-3)
142
+ min-width: 280px
143
+
144
+ Task card:
145
+ Base Card, compact padding var(--space-4)
146
+ title: var(--text-sm), var(--weight-medium)
147
+ assignee avatar: 24px, bottom-right
148
+ priority badge: colored dot or badge
149
+ due date: var(--text-xs), var(--text-muted)
150
+
151
+ TABLE VIEW (alternative)
152
+ Table component with:
153
+ task name, assignee (avatar + name), status (badge), priority, due date
154
+ row click opens detail panel
155
+
156
+ FOOTER STATS
157
+ Horizontal strip: tasks completed / total, team velocity, overdue count
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Preset 5: Admin Panel Dashboard
163
+
164
+ Use for: system admin, user management, configuration, moderation.
165
+
166
+ ```
167
+ SYSTEM STATUS BANNER (conditional — only when issues)
168
+ full width, above content
169
+ background: var(--semantic-amber-dim) or var(--semantic-red-dim)
170
+ border-radius: var(--radius-xl)
171
+ padding: var(--space-4) var(--space-6)
172
+ icon + message + action button
173
+ margin-bottom: var(--space-6)
174
+
175
+ QUICK STATS ROW
176
+ 4 Stat Cards: Total Users, Active Today, Pending Reviews, Open Issues
177
+ Compact variant, var(--shadow-sm)
178
+
179
+ USER MANAGEMENT SECTION
180
+ Section header: "Recent Users" + "View All" link
181
+ Table: avatar + name + email + role (badge) + status + last active + actions
182
+ Warm hover, rounded corners
183
+
184
+ SYSTEM HEALTH (two columns)
185
+ Left: simple bar chart (API response times, warm colored)
186
+ Right: recent error log (compact list, severity badges)
187
+
188
+ QUICK ACTIONS
189
+ Grid of action cards (2-3 columns):
190
+ "Manage Users", "Review Queue", "System Settings", "Export Data"
191
+ Feature Card style (icon + title + description)
192
+ Click navigates to section
193
+ ```
194
+
195
+ ---
196
+
197
+ ## Chart Color Palette
198
+
199
+ For all dashboards, use these colors in order. Never use library defaults.
200
+
201
+ ```css
202
+ /* Primary data series */
203
+ --chart-1: var(--accent); /* #E07A5F — terracotta */
204
+ --chart-2: var(--accent-secondary); /* #7C9A82 — sage */
205
+ --chart-3: var(--accent-tertiary); /* #D4A76A — amber */
206
+ --chart-4: var(--semantic-blue); /* #5B8DB8 — slate blue */
207
+ --chart-5: var(--semantic-purple); /* #9B8EC4 — muted purple */
208
+ --chart-6: #8B7355; /* warm brown */
209
+
210
+ /* Background fills (use with 0.15 opacity) */
211
+ --chart-fill-1: rgba(224, 122, 95, 0.15);
212
+ --chart-fill-2: rgba(124, 154, 130, 0.15);
213
+ --chart-fill-3: rgba(212, 167, 106, 0.15);
214
+ ```
215
+
216
+ Rules:
217
+ - Area charts: use gradient fill from `--chart-fill-*` to transparent
218
+ - Bar charts: solid `--chart-*` colors, rounded top corners (`border-radius: 4px 4px 0 0`)
219
+ - Donut charts: `--chart-*` colors, warm gray for remaining (`var(--bg-elevated)`)
220
+ - Line charts: 2px stroke, dot markers on hover only
221
+ - Grid lines: `var(--border-subtle)`, never dark
222
+ - Axis labels: `var(--text-muted)`, `var(--text-xs)`
223
+ - Tooltips: uses Tooltip component from `components.md`