@jaimevalasek/aioson 1.5.1 → 1.6.0

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 (131) hide show
  1. package/README.md +6 -0
  2. package/docs/design-previews/aurora-command-ui-website.html +884 -0
  3. package/docs/design-previews/aurora-command-ui.html +682 -0
  4. package/docs/design-previews/bold-editorial-ui-website.html +658 -0
  5. package/docs/design-previews/bold-editorial-ui.html +717 -0
  6. package/docs/design-previews/clean-saas-ui-website.html +1202 -0
  7. package/docs/design-previews/clean-saas-ui.html +549 -0
  8. package/docs/design-previews/cognitive-core-ui-website.html +1009 -0
  9. package/docs/design-previews/cognitive-core-ui.html +463 -0
  10. package/docs/design-previews/glassmorphism-ui-website.html +572 -0
  11. package/docs/design-previews/glassmorphism-ui.html +886 -0
  12. package/docs/design-previews/index.html +699 -0
  13. package/docs/design-previews/interface-design-website.html +1187 -0
  14. package/docs/design-previews/interface-design.html +513 -0
  15. package/docs/design-previews/neo-brutalist-ui-website.html +621 -0
  16. package/docs/design-previews/neo-brutalist-ui.html +797 -0
  17. package/docs/design-previews/premium-command-center-ui-website.html +1217 -0
  18. package/docs/design-previews/premium-command-center-ui.html +552 -0
  19. package/docs/design-previews/warm-craft-ui-website.html +684 -0
  20. package/docs/design-previews/warm-craft-ui.html +739 -0
  21. package/docs/en/cli-reference.md +20 -9
  22. package/docs/pt/README.md +7 -0
  23. package/docs/pt/agent-sharding.md +132 -0
  24. package/docs/pt/agentes.md +8 -2
  25. package/docs/pt/busca-de-contexto.md +129 -0
  26. package/docs/pt/cache-de-contexto.md +156 -0
  27. package/docs/pt/comandos-cli.md +28 -0
  28. package/docs/pt/design-hybrid-forge.md +107 -0
  29. package/docs/pt/inicio-rapido.md +54 -3
  30. package/docs/pt/inteligencia-adaptativa.md +324 -0
  31. package/docs/pt/monitor-de-contexto.md +104 -0
  32. package/docs/pt/recuperacao-de-sessao.md +125 -0
  33. package/docs/pt/sandbox.md +125 -0
  34. package/docs/pt/skills.md +98 -6
  35. package/package.json +1 -1
  36. package/src/agent-loader.js +280 -0
  37. package/src/cli.js +94 -0
  38. package/src/commands/agent-loader.js +85 -0
  39. package/src/commands/context-cache.js +90 -0
  40. package/src/commands/context-monitor.js +92 -0
  41. package/src/commands/context-search.js +66 -0
  42. package/src/commands/design-hybrid-options.js +385 -0
  43. package/src/commands/health.js +214 -0
  44. package/src/commands/init.js +54 -13
  45. package/src/commands/install.js +52 -13
  46. package/src/commands/learning-evolve.js +355 -0
  47. package/src/commands/live.js +34 -0
  48. package/src/commands/recovery.js +43 -0
  49. package/src/commands/sandbox.js +37 -0
  50. package/src/commands/setup-context.js +22 -2
  51. package/src/commands/setup.js +178 -0
  52. package/src/commands/skill.js +79 -32
  53. package/src/commands/tool-registry-cmd.js +232 -0
  54. package/src/commands/update.js +7 -0
  55. package/src/constants.js +9 -0
  56. package/src/context-cache.js +159 -0
  57. package/src/context-search.js +326 -0
  58. package/src/design-variation-catalog.js +503 -0
  59. package/src/i18n/messages/en.js +32 -2
  60. package/src/i18n/messages/es.js +30 -2
  61. package/src/i18n/messages/fr.js +30 -2
  62. package/src/i18n/messages/pt-BR.js +32 -2
  63. package/src/install-animation.js +260 -0
  64. package/src/install-profile.js +143 -0
  65. package/src/install-wizard.js +474 -0
  66. package/src/installer.js +38 -10
  67. package/src/parser.js +7 -1
  68. package/src/recovery-context-session.js +154 -0
  69. package/src/runtime-store.js +97 -1
  70. package/src/sandbox.js +177 -0
  71. package/src/tool-executor.js +94 -0
  72. package/src/updater.js +11 -3
  73. package/template/.aioson/agents/analyst.md +58 -3
  74. package/template/.aioson/agents/architect.md +38 -0
  75. package/template/.aioson/agents/design-hybrid-forge.md +127 -0
  76. package/template/.aioson/agents/dev.md +103 -0
  77. package/template/.aioson/agents/deyvin.md +57 -0
  78. package/template/.aioson/agents/pm.md +58 -0
  79. package/template/.aioson/agents/product.md +28 -0
  80. package/template/.aioson/agents/qa.md +79 -0
  81. package/template/.aioson/agents/setup.md +65 -3
  82. package/template/.aioson/agents/sheldon.md +107 -6
  83. package/template/.aioson/agents/tester.md +156 -0
  84. package/template/.aioson/config.md +15 -0
  85. package/template/.aioson/context/forensics/.gitkeep +0 -0
  86. package/template/.aioson/context/seeds/seed-example.md +27 -0
  87. package/template/.aioson/context/user-profile.md +42 -0
  88. package/template/.aioson/locales/en/agents/setup.md +33 -1
  89. package/template/.aioson/locales/es/agents/setup.md +33 -1
  90. package/template/.aioson/locales/fr/agents/setup.md +33 -1
  91. package/template/.aioson/locales/pt-BR/agents/setup.md +33 -1
  92. package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +243 -0
  93. package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -0
  94. package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -0
  95. package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -0
  96. package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -0
  97. package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -0
  98. package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +482 -0
  99. package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +387 -0
  100. package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +222 -0
  101. package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -0
  102. package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -0
  103. package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -0
  104. package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -0
  105. package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -0
  106. package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -0
  107. package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -0
  108. package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +213 -0
  109. package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -0
  110. package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -0
  111. package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -0
  112. package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -0
  113. package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -0
  114. package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -0
  115. package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -0
  116. package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +45 -0
  117. package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +109 -0
  118. package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +44 -0
  119. package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +37 -0
  120. package/template/.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md +49 -0
  121. package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +66 -0
  122. package/template/.aioson/skills/process/aioson-spec-driven/references/ui-language.md +75 -0
  123. package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +144 -0
  124. package/template/.aioson/skills/process/design-hybrid-forge/references/crossover-protocol.md +221 -0
  125. package/template/.aioson/skills/process/design-hybrid-forge/references/naming-registry.md +88 -0
  126. package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +291 -0
  127. package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +117 -0
  128. package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +188 -0
  129. package/template/.aioson/skills/process/design-hybrid-forge/references/variation-library.md +125 -0
  130. package/template/AGENTS.md +23 -1
  131. package/template/CLAUDE.md +1 -0
@@ -0,0 +1,827 @@
1
+ # Components — Aurora Command UI
2
+
3
+ Read after `design-tokens.md`. All components use CSS variables and adapt to dark/light themes automatically. Every container-type component is a glass surface.
4
+
5
+ Code examples use JSX inline style notation as **design specifications** — read property-value pairs as spec, then adapt syntax to the active stack (HTML, Vue, Blade, etc.). The shorthand `TG` means `{ transition: 'var(--transition-glass)' }`.
6
+
7
+ ---
8
+
9
+ ## Glass Rules (read first)
10
+
11
+ Before building any component:
12
+
13
+ 1. **Substrate required**: glass only works over the aurora gradient background. Confirm `body` or root container has `background: var(--bg-gradient); background-attachment: fixed` before building.
14
+ 2. **Top reflection on every glass container**: every glass card must have `::before` with `var(--glass-highlight)`. This is what makes the glass feel real.
15
+ 3. **Minimum 2 depth layers**: never place a glass card directly adjacent to another glass card of the same opacity without context differentiation.
16
+ 4. **@supports fallback**: every glass surface must degrade gracefully when `backdrop-filter` is unsupported.
17
+ 5. **Text contrast over dark glass**: dark glass can make text illegible. Verify WCAG AA — increase `--glass-surface` alpha toward `--glass-elevated` if needed.
18
+ 6. **Mono rails are section structure** — not component decoration. Use them in section headers, stat labels, and metadata zones only.
19
+
20
+ ---
21
+
22
+ ## 1. Glass Card (fundamental component)
23
+
24
+ Every container-type component inherits from this. It is the atomic building block of the system.
25
+
26
+ ```
27
+ Structure:
28
+ position: relative
29
+ overflow: hidden
30
+ background: var(--glass-surface)
31
+ backdrop-filter: var(--glass-blur-md)
32
+ border: 1px solid var(--glass-border)
33
+ border-radius: var(--radius-xl)
34
+ box-shadow: var(--shadow-md), var(--shadow-inner)
35
+ padding: var(--space-5)
36
+
37
+ ::before (top reflection):
38
+ content: ''
39
+ position: absolute
40
+ top: 0; left: 0; right: 0
41
+ height: 50%
42
+ background: var(--glass-highlight)
43
+ pointer-events: none
44
+ border-radius: inherit
45
+
46
+ Hover:
47
+ background: var(--glass-elevated)
48
+ box-shadow: var(--shadow-glow), var(--shadow-inner)
49
+ transition: var(--transition-glass)
50
+
51
+ @supports (backdrop-filter: blur(1px)):
52
+ background: var(--glass-surface)
53
+ backdrop-filter: var(--glass-blur-md)
54
+ Fallback (no @supports):
55
+ background: var(--glass-fallback)
56
+ ```
57
+
58
+ Variants:
59
+ - `glass-card--sm`: `padding: var(--space-4)`, `border-radius: var(--radius-lg)`
60
+ - `glass-card--lg`: `padding: var(--space-8)`, `border-radius: var(--radius-2xl)`, `backdrop-filter: var(--glass-blur-lg)`
61
+ - `glass-card--hero`: `padding: var(--space-10)`, `border-radius: var(--radius-3xl)`, `backdrop-filter: var(--glass-blur-lg)`
62
+ - `glass-card--featured`: adds `box-shadow: var(--shadow-glow-strong)` + `border: 1px solid var(--glass-border-accent)`
63
+ - `glass-card--shell`: uses `var(--glass-shell)` + `var(--glass-blur-lg)` — for sidebar and top bar surfaces
64
+
65
+ ---
66
+
67
+ ## 2. Glass Top Navigation Bar
68
+
69
+ ```
70
+ ┌──────────────────────────────────────────────────────────────┐
71
+ │ [Logo] AppName Link Link Link [Theme ☀] [Avatar] │
72
+ └──────────────────────────────────────────────────────────────┘
73
+ ```
74
+
75
+ ```css
76
+ .top-bar {
77
+ position: sticky;
78
+ top: 0;
79
+ z-index: var(--z-sticky);
80
+ height: var(--nav-height);
81
+ background: var(--glass-shell);
82
+ backdrop-filter: var(--glass-blur-lg);
83
+ border-bottom: 1px solid var(--glass-border);
84
+ }
85
+ @supports (backdrop-filter: blur(1px)) {
86
+ .top-bar {
87
+ background: var(--glass-shell);
88
+ backdrop-filter: var(--glass-blur-lg);
89
+ }
90
+ }
91
+ ```
92
+
93
+ - Logo: 32px square, `background: var(--accent-primary-dim)`, `border: 1px solid var(--glass-border-accent)`, `border-radius: var(--radius-md)`, icon in `var(--accent-primary)`
94
+ - Brand name: `font-family: var(--font-mono)`, `--weight-bold`, `--text-base`, `--text-heading`, `letter-spacing: var(--tracking-wide)`
95
+ - Nav links: `--text-base`, `color: var(--text-secondary)`. Hover: `var(--text-primary)`. Active: `var(--text-accent)`.
96
+ - Theme toggle: see Component 16.
97
+
98
+ ---
99
+
100
+ ## 3. Stat Card
101
+
102
+ Glass card with mono label + large number. The primary KPI component.
103
+
104
+ ```jsx
105
+ <div style={{
106
+ background: 'var(--glass-surface)',
107
+ backdropFilter: 'var(--glass-blur-md)',
108
+ border: '1px solid var(--glass-border)',
109
+ borderRadius: 'var(--radius-xl)',
110
+ padding: 'var(--space-4) var(--space-5)',
111
+ boxShadow: 'var(--shadow-md), var(--shadow-inner)',
112
+ minWidth: 140, flex: 1, position: 'relative', overflow: 'hidden',
113
+ ...TG,
114
+ }}>
115
+ {/* ::before reflection in CSS */}
116
+ <div style={{
117
+ fontFamily: 'var(--font-mono)', fontSize: 'var(--text-xs)',
118
+ color: 'var(--text-muted)', letterSpacing: 'var(--tracking-widest)',
119
+ textTransform: 'uppercase', fontWeight: 600, marginBottom: 'var(--space-1)'
120
+ }}>LABEL</div>
121
+ <div style={{ display: 'flex', alignItems: 'baseline', gap: 4 }}>
122
+ <span style={{
123
+ fontFamily: 'var(--font-display)', fontSize: 'var(--text-4xl)', fontWeight: 700,
124
+ color: 'var(--text-heading)', lineHeight: 1, fontVariantNumeric: 'tabular-nums'
125
+ }}>42</span>
126
+ <span style={{ fontSize: 'var(--text-lg)', color: 'var(--text-muted)' }}>/100</span>
127
+ </div>
128
+ <div style={{ fontSize: 'var(--text-sm)', color: 'var(--text-muted)', marginTop: 'var(--space-1)' }}>
129
+ subtitle text
130
+ </div>
131
+ </div>
132
+ ```
133
+
134
+ **Hero variant** (gradient stat number — use only once per viewport):
135
+ ```css
136
+ .stat-number--hero {
137
+ background: var(--accent-gradient);
138
+ -webkit-background-clip: text;
139
+ -webkit-text-fill-color: transparent;
140
+ background-clip: text;
141
+ }
142
+ ```
143
+
144
+ **Semantic variants**: replace number color with `var(--semantic-green)`, `var(--semantic-red)`, or `var(--semantic-amber)`.
145
+
146
+ ---
147
+
148
+ ## 4. Glass Sidebar
149
+
150
+ ```
151
+ ┌───────────────────┐
152
+ │ SECTION LABEL │ ← mono rail
153
+ │ ● Item Active │ ← glass-elevated + border-left accent
154
+ │ ○ Item │ ← text-secondary
155
+ │ │
156
+ │ SECTION LABEL │
157
+ │ ○ Item │
158
+ └───────────────────┘
159
+ ```
160
+
161
+ ```css
162
+ .sidebar {
163
+ width: var(--sidebar-width); /* 210px */
164
+ height: 100vh;
165
+ position: fixed;
166
+ top: 0; left: 0;
167
+ background: var(--glass-shell);
168
+ backdrop-filter: var(--glass-blur-lg);
169
+ border-right: 1px solid var(--glass-border);
170
+ padding: var(--space-6) 0;
171
+ overflow-y: auto;
172
+ }
173
+ @supports (backdrop-filter: blur(1px)) {
174
+ .sidebar { background: var(--glass-shell); backdrop-filter: var(--glass-blur-lg); }
175
+ }
176
+
177
+ .sidebar-section-label {
178
+ font-family: var(--font-mono);
179
+ font-size: var(--text-xs);
180
+ font-weight: var(--weight-semibold);
181
+ letter-spacing: var(--tracking-widest);
182
+ text-transform: uppercase;
183
+ color: var(--text-muted);
184
+ padding: var(--space-2) var(--space-4);
185
+ margin-top: var(--space-4);
186
+ }
187
+
188
+ .sidebar-item {
189
+ display: flex;
190
+ align-items: center;
191
+ gap: var(--space-3);
192
+ padding: var(--space-2) var(--space-4);
193
+ border-radius: var(--radius-md);
194
+ font-size: var(--text-base);
195
+ color: var(--text-secondary);
196
+ cursor: pointer;
197
+ transition: var(--transition-glass);
198
+ margin: 0 var(--space-2);
199
+ }
200
+ .sidebar-item:hover {
201
+ background: var(--glass-elevated);
202
+ color: var(--text-primary);
203
+ }
204
+ .sidebar-item.active {
205
+ background: var(--glass-elevated);
206
+ border-left: 3px solid var(--accent-primary);
207
+ color: var(--text-heading);
208
+ padding-left: calc(var(--space-4) - 3px);
209
+ }
210
+ .sidebar-item.active .sidebar-icon {
211
+ color: var(--accent-primary);
212
+ }
213
+ ```
214
+
215
+ ---
216
+
217
+ ## 5. Section Header (mono rail)
218
+
219
+ The structural backbone. Every content zone begins with one.
220
+
221
+ ```jsx
222
+ <div style={{
223
+ display: 'flex', alignItems: 'center', gap: 'var(--space-3)',
224
+ padding: 'var(--space-6) 0 var(--space-3)',
225
+ }}>
226
+ <span style={{ color: 'var(--accent-primary)', fontSize: 'var(--text-lg)' }}>⚡</span>
227
+ <div>
228
+ <div style={{
229
+ fontFamily: 'var(--font-mono)', fontSize: 'var(--text-xs)', fontWeight: 600,
230
+ letterSpacing: 'var(--tracking-widest)', textTransform: 'uppercase',
231
+ color: 'var(--text-muted)',
232
+ }}>SECTION LABEL</div>
233
+ <div style={{
234
+ fontFamily: 'var(--font-display)', fontSize: 'var(--text-xl)', fontWeight: 700,
235
+ color: 'var(--text-heading)', letterSpacing: 'var(--tracking-tight)',
236
+ }}>Section Title</div>
237
+ </div>
238
+ </div>
239
+ ```
240
+
241
+ Simple variant (mono-only, no title — for dense dashboards):
242
+ ```jsx
243
+ <div style={{
244
+ fontFamily: 'var(--font-mono)', fontSize: 'var(--text-xs)', fontWeight: 600,
245
+ letterSpacing: 'var(--tracking-widest)', textTransform: 'uppercase',
246
+ color: 'var(--text-muted)',
247
+ padding: 'var(--space-4) 0 var(--space-2)',
248
+ display: 'flex', alignItems: 'center', gap: 'var(--space-2)',
249
+ }}>
250
+ <span>—</span> SECTION NAME
251
+ </div>
252
+ ```
253
+
254
+ ---
255
+
256
+ ## 6. Tab Navigation
257
+
258
+ ```jsx
259
+ <div style={{
260
+ display: 'flex',
261
+ background: 'var(--glass-shell)',
262
+ backdropFilter: 'var(--glass-blur-md)',
263
+ borderBottom: '1px solid var(--glass-border)',
264
+ padding: '0 var(--space-6)',
265
+ overflowX: 'auto',
266
+ }}>
267
+ <button style={{
268
+ fontFamily: 'var(--font-body)', fontSize: 'var(--text-base)',
269
+ color: isActive ? 'var(--text-accent)' : 'var(--text-secondary)',
270
+ background: 'none', border: 'none',
271
+ padding: 'var(--space-3) var(--space-4)',
272
+ borderBottom: `3px solid ${isActive ? 'var(--accent-primary)' : 'transparent'}`,
273
+ cursor: 'pointer',
274
+ transition: 'color 150ms ease, border-color 150ms ease',
275
+ display: 'flex', alignItems: 'center', gap: 'var(--space-2)',
276
+ }}>
277
+ <span>icon</span> Label
278
+ </button>
279
+ </div>
280
+ ```
281
+
282
+ Hover (non-active): `background: var(--glass-elevated)`, `border-radius: var(--radius-md) var(--radius-md) 0 0`.
283
+
284
+ ---
285
+
286
+ ## 7. Badge / Chip
287
+
288
+ Three variants — mono font, uppercase, `letter-spacing: var(--tracking-wider)`, `font-size: var(--text-xs)`.
289
+
290
+ **Accent badge** (active, primary, teal):
291
+ ```jsx
292
+ {
293
+ background: 'var(--accent-primary-dim)',
294
+ color: 'var(--accent-primary)',
295
+ border: '1px solid var(--glass-border-accent)',
296
+ fontFamily: 'var(--font-mono)', fontSize: 'var(--text-xs)', fontWeight: 600,
297
+ letterSpacing: 'var(--tracking-wider)', textTransform: 'uppercase',
298
+ padding: '2px 10px', borderRadius: 'var(--radius-sm)',
299
+ }
300
+ ```
301
+
302
+ **Violet badge** (CTA, highlight, escalation):
303
+ ```jsx
304
+ {
305
+ background: 'var(--accent-violet-dim)',
306
+ color: 'var(--accent-violet)',
307
+ border: '1px solid rgba(124,58,237,0.30)',
308
+ /* same font styles as accent */
309
+ }
310
+ ```
311
+
312
+ **Glass badge** (neutral tag):
313
+ ```jsx
314
+ {
315
+ background: 'var(--glass-surface)',
316
+ backdropFilter: 'var(--glass-blur-sm)',
317
+ color: 'var(--text-secondary)',
318
+ border: '1px solid var(--glass-border)',
319
+ /* same font styles */
320
+ }
321
+ ```
322
+
323
+ **Semantic badges** (status):
324
+ ```
325
+ Success: background var(--semantic-green-dim), color var(--semantic-green)
326
+ Danger: background var(--semantic-red-dim), color var(--semantic-red)
327
+ Warning: background var(--semantic-amber-dim), color var(--semantic-amber)
328
+ Info: background var(--semantic-blue-dim), color var(--semantic-blue)
329
+ ```
330
+
331
+ Status dot: `5px × 5px`, `border-radius: 50%`, `background: currentColor`, `display: inline-block`, `margin-right: 5px`.
332
+
333
+ ---
334
+
335
+ ## 8. Progress Bar
336
+
337
+ Standard (command fill):
338
+ ```jsx
339
+ <div style={{
340
+ height: 5, background: 'var(--glass-border)',
341
+ borderRadius: 'var(--radius-full)', overflow: 'hidden',
342
+ }}>
343
+ <div style={{
344
+ height: '100%', borderRadius: 'var(--radius-full)',
345
+ background: 'var(--accent-primary)', width: `${pct}%`,
346
+ transition: 'width 400ms cubic-bezier(0.16, 1, 0.3, 1)',
347
+ }} />
348
+ </div>
349
+ ```
350
+
351
+ **Gradient fill** (hero metric bar — use once per panel):
352
+ ```css
353
+ background: var(--accent-gradient);
354
+ ```
355
+
356
+ **Semantic fills**: `var(--semantic-green)`, `var(--semantic-red)`, `var(--semantic-amber)`.
357
+
358
+ ---
359
+
360
+ ## 9. Data Table (glass container)
361
+
362
+ ```
363
+ ┌───────────────────────────────────────────────────┐ ← glass card
364
+ │ NAME ▲ CATEGORY STOCK STATUS PRICE │ ← mono header
365
+ ├───────────────────────────────────────────────────┤
366
+ │ Product Laptops 23 [●OK] $12,000 │
367
+ │ Product Phones 5 [●Low] $8,000 │
368
+ └───────────────────────────────────────────────────┘
369
+ ```
370
+
371
+ The table lives inside a Glass Card container:
372
+
373
+ ```css
374
+ .table-container {
375
+ background: var(--glass-surface);
376
+ backdrop-filter: var(--glass-blur-md);
377
+ border: 1px solid var(--glass-border);
378
+ border-radius: var(--radius-xl);
379
+ overflow: hidden;
380
+ position: relative;
381
+ }
382
+
383
+ table {
384
+ width: 100%;
385
+ border-collapse: separate;
386
+ border-spacing: 0 2px;
387
+ }
388
+
389
+ thead th {
390
+ padding: 12px 16px;
391
+ font-family: var(--font-mono);
392
+ font-size: var(--text-xs);
393
+ letter-spacing: var(--tracking-widest);
394
+ text-transform: uppercase;
395
+ color: var(--text-muted);
396
+ text-align: left;
397
+ font-weight: 600;
398
+ background: var(--glass-shell);
399
+ border-bottom: 1px solid var(--glass-border);
400
+ }
401
+
402
+ tbody td {
403
+ padding: 12px 16px;
404
+ background: transparent;
405
+ border-bottom: 1px solid var(--glass-border);
406
+ color: var(--text-primary);
407
+ font-size: var(--text-base);
408
+ font-variant-numeric: tabular-nums;
409
+ transition: var(--transition-glass);
410
+ }
411
+
412
+ tbody tr:hover td {
413
+ background: var(--glass-elevated);
414
+ }
415
+ ```
416
+
417
+ Rules: never `border-collapse: collapse` with `tr` backgrounds — use `td` surfaces. Numbers must have `font-variant-numeric: tabular-nums`.
418
+
419
+ ---
420
+
421
+ ## 10. Modal / Detail Overlay
422
+
423
+ ```
424
+ ┌─────── backdrop (glass-overlay blur, z-modal) ───────┐
425
+ │ │
426
+ │ ┌─ Glass Card max-w: 640px ───────────────────┐ │
427
+ │ │ ::before top reflection │ │
428
+ │ │ HEADER: mono label + title + close │ │
429
+ │ │ ───────────────────────── │ │
430
+ │ │ BODY: stat cards, progress, badges, etc. │ │
431
+ │ └─────────────────────────────────────────────┘ │
432
+ │ │
433
+ └────────────────────────────────────────────────────────┘
434
+ ```
435
+
436
+ ```css
437
+ .modal-backdrop {
438
+ position: fixed; inset: 0;
439
+ background: rgba(4, 6, 9, 0.70);
440
+ backdrop-filter: var(--glass-blur-sm);
441
+ z-index: var(--z-modal);
442
+ display: flex; align-items: center; justify-content: center;
443
+ }
444
+ .modal-content {
445
+ background: var(--glass-overlay);
446
+ backdrop-filter: var(--glass-blur-lg);
447
+ border: 1px solid var(--glass-border-strong);
448
+ border-radius: var(--radius-2xl);
449
+ box-shadow: var(--shadow-glow);
450
+ max-width: 640px; width: calc(100% - 32px);
451
+ position: relative; overflow: hidden;
452
+ padding: var(--space-8);
453
+ z-index: calc(var(--z-modal) + 1);
454
+ }
455
+ ```
456
+
457
+ Animation: `scale-materialize` from `motion.md`.
458
+
459
+ ---
460
+
461
+ ## 11. Form Elements
462
+
463
+ **Input:**
464
+ ```css
465
+ .glass-input {
466
+ height: var(--control-md);
467
+ padding: 0 var(--space-3);
468
+ background: var(--glass-surface);
469
+ backdrop-filter: var(--glass-blur-sm);
470
+ border: 1px solid var(--glass-border);
471
+ border-radius: var(--radius-md);
472
+ color: var(--text-primary);
473
+ font-size: var(--text-sm);
474
+ font-family: var(--font-body);
475
+ outline: none;
476
+ transition: var(--transition-glass);
477
+ }
478
+ .glass-input:focus {
479
+ border-color: var(--glass-border-accent);
480
+ box-shadow: 0 0 0 3px var(--accent-primary-dim);
481
+ }
482
+ .glass-input::placeholder { color: var(--text-muted); }
483
+ ```
484
+
485
+ **Label:** mono rail style (xs, muted, uppercase, tracking-widest). `margin-bottom: var(--space-1)`.
486
+
487
+ ---
488
+
489
+ ## 12. Button — Primary (gradient)
490
+
491
+ ```css
492
+ .btn-primary {
493
+ height: var(--control-lg);
494
+ padding: 0 var(--space-6);
495
+ background: var(--accent-gradient);
496
+ color: var(--accent-contrast);
497
+ border: none;
498
+ border-radius: var(--radius-md);
499
+ font-family: var(--font-body);
500
+ font-size: var(--text-sm);
501
+ font-weight: var(--weight-semibold);
502
+ letter-spacing: var(--tracking-wide);
503
+ cursor: pointer;
504
+ box-shadow: var(--shadow-glow);
505
+ transition: var(--transition-base), filter 120ms ease, transform 120ms ease;
506
+ }
507
+ .btn-primary:hover {
508
+ filter: brightness(1.08);
509
+ box-shadow: var(--shadow-glow-strong);
510
+ transform: translateY(-1px);
511
+ }
512
+ .btn-primary:active { filter: brightness(0.95); transform: translateY(0); }
513
+ .btn-primary:focus-visible {
514
+ outline: var(--focus-ring-width) solid var(--accent-primary);
515
+ outline-offset: var(--focus-ring-offset);
516
+ }
517
+ ```
518
+
519
+ ---
520
+
521
+ ## 13. Button — Glass (secondary)
522
+
523
+ ```css
524
+ .btn-glass {
525
+ height: var(--control-lg);
526
+ padding: 0 var(--space-5);
527
+ background: var(--glass-surface);
528
+ backdrop-filter: var(--glass-blur-sm);
529
+ border: 1px solid var(--glass-border);
530
+ border-radius: var(--radius-md);
531
+ color: var(--text-primary);
532
+ font-family: var(--font-body);
533
+ font-size: var(--text-sm);
534
+ font-weight: var(--weight-medium);
535
+ cursor: pointer;
536
+ transition: var(--transition-glass);
537
+ }
538
+ .btn-glass:hover {
539
+ background: var(--glass-elevated);
540
+ border-color: var(--glass-border-strong);
541
+ }
542
+ ```
543
+
544
+ ---
545
+
546
+ ## 14. Button — Ghost
547
+
548
+ ```css
549
+ .btn-ghost {
550
+ height: var(--control-md);
551
+ padding: 0 var(--space-4);
552
+ background: transparent;
553
+ border: none;
554
+ border-radius: var(--radius-md);
555
+ color: var(--text-secondary);
556
+ font-family: var(--font-body);
557
+ font-size: var(--text-sm);
558
+ cursor: pointer;
559
+ transition: background var(--transition-fast), color var(--transition-fast);
560
+ }
561
+ .btn-ghost:hover {
562
+ background: var(--glass-surface);
563
+ color: var(--text-primary);
564
+ }
565
+ ```
566
+
567
+ ---
568
+
569
+ ## 15. Toggle Switch
570
+
571
+ ```css
572
+ .toggle {
573
+ width: 44px; height: 24px;
574
+ background: var(--glass-border);
575
+ border-radius: var(--radius-full);
576
+ position: relative;
577
+ cursor: pointer;
578
+ transition: background var(--transition-base);
579
+ }
580
+ .toggle.checked { background: var(--accent-gradient); }
581
+ .toggle-thumb {
582
+ width: 18px; height: 18px;
583
+ background: white;
584
+ border-radius: var(--radius-full);
585
+ box-shadow: var(--shadow-sm);
586
+ position: absolute; top: 3px; left: 3px;
587
+ transition: transform var(--transition-base);
588
+ }
589
+ .toggle.checked .toggle-thumb { transform: translateX(20px); }
590
+ ```
591
+
592
+ ---
593
+
594
+ ## 16. Theme Toggle
595
+
596
+ ```jsx
597
+ <button style={{
598
+ width: 36, height: 36,
599
+ borderRadius: 'var(--radius-md)',
600
+ border: '1px solid var(--glass-border)',
601
+ background: 'var(--glass-surface)',
602
+ backdropFilter: 'var(--glass-blur-sm)',
603
+ color: 'var(--text-secondary)',
604
+ cursor: 'pointer',
605
+ display: 'flex', alignItems: 'center', justifyContent: 'center',
606
+ fontSize: '1rem',
607
+ transition: 'var(--transition-glass)',
608
+ }}>
609
+ {theme === 'dark' ? '☀' : '☾'}
610
+ </button>
611
+ ```
612
+
613
+ Hover: `background: var(--glass-elevated)`, `border-color: var(--glass-border-accent)`, `color: var(--accent-primary)`.
614
+
615
+ ---
616
+
617
+ ## 17. Profile Header Card
618
+
619
+ ```
620
+ ┌───────────────────────────────────────────────────────────┐ ← glass-card--lg
621
+ │ ::before reflection │
622
+ │ [Avatar 96px] ENTITY NAME [Badge][Badge] │
623
+ │ Role (italic, accent) │
624
+ │ ✦ TAGLINE (mono, xs, muted) │
625
+ │ │
626
+ │ [StatCard] [StatCard] [StatCard] │
627
+ └───────────────────────────────────────────────────────────┘
628
+ ```
629
+
630
+ - Avatar: `96px`, `border-radius: var(--radius-lg)`, `border: 2px solid var(--glass-border-strong)`
631
+ - Name: `--text-3xl`, `--weight-bold`, `--tracking-tight`, gradient text on the name if it is the identity hero
632
+ - Role: `color: var(--text-accent)`, `font-style: italic`, `--text-lg`
633
+ - Tagline: mono rail style, `--text-xs`, `--text-muted`, uppercase, `--tracking-widest`
634
+ - Stats: Stat Card components, `min-width: 130px`
635
+
636
+ ---
637
+
638
+ ## 18. DNA / Trait Panel
639
+
640
+ The identity card for any entity — labeled progress bars with color semantic fills + tag cluster.
641
+
642
+ ```
643
+ ┌─────────────────────────────────────────┐ ← glass card
644
+ │ ✦ TRAIT ANALYSIS │ ← mono section label
645
+ │ │
646
+ │ DIMENSION ████████████████░░░░ 80% │ ← progress row
647
+ │ DIMENSION ██████████░░░░░░░░░ 52% │
648
+ │ DIMENSION █████████████░░░░░░ 68% │
649
+ │ │
650
+ │ [Badge] [Badge] [Badge] [Badge] │ ← glass chips
651
+ └─────────────────────────────────────────┘
652
+ ```
653
+
654
+ Label: `min-width: 90px`, mono rail style. Bar: `flex: 1`, Progress Bar component. Value: mono, `--text-sm`, `--text-secondary`, `min-width: 40px; text-align: right`. Tags: `flex-wrap`, `gap: var(--space-2)`.
655
+
656
+ ---
657
+
658
+ ## 19. Alert / Signal Chip
659
+
660
+ Operational signals for dashboards. Always inline with status dot.
661
+
662
+ ```css
663
+ .alert-chip {
664
+ display: inline-flex;
665
+ align-items: center;
666
+ gap: var(--space-2);
667
+ padding: 4px 10px;
668
+ background: var(--glass-surface);
669
+ backdrop-filter: var(--glass-blur-sm);
670
+ border: 1px solid var(--glass-border);
671
+ border-radius: var(--radius-full);
672
+ font-family: var(--font-mono);
673
+ font-size: var(--text-xs);
674
+ font-weight: 600;
675
+ letter-spacing: var(--tracking-wider);
676
+ text-transform: uppercase;
677
+ }
678
+ /* Critical: border-color var(--semantic-red), color var(--semantic-red) */
679
+ /* Warning: border-color var(--semantic-amber), color var(--semantic-amber) */
680
+ /* Active: border-color var(--glass-border-accent), color var(--accent-primary) */
681
+ ```
682
+
683
+ ---
684
+
685
+ ## 20. Status Tape
686
+
687
+ A full-width operational status strip placed above the main dashboard content. Signals at a glance.
688
+
689
+ ```
690
+ ┌── glass-shell, full width ──────────────────────────────────────┐
691
+ │ SYSTEM STATUS: ● OPERATIONAL │ [●ALERT 3] [●WARN 12] [●OK 47]│
692
+ └─────────────────────────────────────────────────────────────────┘
693
+ ```
694
+
695
+ ```css
696
+ .status-tape {
697
+ width: 100%;
698
+ display: flex;
699
+ align-items: center;
700
+ gap: var(--space-4);
701
+ padding: var(--space-2) var(--space-6);
702
+ background: var(--glass-shell);
703
+ backdrop-filter: var(--glass-blur-md);
704
+ border-bottom: 1px solid var(--glass-border);
705
+ font-family: var(--font-mono);
706
+ font-size: var(--text-xs);
707
+ font-weight: 600;
708
+ letter-spacing: var(--tracking-wider);
709
+ text-transform: uppercase;
710
+ color: var(--text-muted);
711
+ }
712
+ .status-tape .divider {
713
+ width: 1px; height: 16px;
714
+ background: var(--glass-border);
715
+ }
716
+ ```
717
+
718
+ ---
719
+
720
+ ## 21. Toast / Notification
721
+
722
+ Auto-dismissing glass notification at bottom-right.
723
+
724
+ ```css
725
+ .toast {
726
+ background: var(--glass-overlay);
727
+ backdrop-filter: var(--glass-blur-lg);
728
+ border: 1px solid var(--glass-border-strong);
729
+ border-radius: var(--radius-xl);
730
+ box-shadow: var(--shadow-glow);
731
+ padding: var(--space-4) var(--space-5);
732
+ display: flex; align-items: center; gap: var(--space-3);
733
+ border-left: 3px solid; /* color from severity */
734
+ min-width: 280px; max-width: 400px;
735
+ position: fixed;
736
+ bottom: var(--space-6); right: var(--space-6);
737
+ z-index: var(--z-toast);
738
+ }
739
+ ```
740
+
741
+ ---
742
+
743
+ ## 22. Empty State
744
+
745
+ ```css
746
+ .empty-state {
747
+ display: flex; flex-direction: column; align-items: center;
748
+ gap: var(--space-4); padding: var(--space-16) var(--space-6);
749
+ text-align: center;
750
+ }
751
+ .empty-icon-area {
752
+ width: 80px; height: 80px;
753
+ background: var(--glass-surface);
754
+ backdrop-filter: var(--glass-blur-sm);
755
+ border: 1px solid var(--glass-border);
756
+ border-radius: var(--radius-2xl);
757
+ display: flex; align-items: center; justify-content: center;
758
+ font-size: 2rem;
759
+ position: relative; overflow: hidden;
760
+ }
761
+ .empty-title {
762
+ font-size: var(--text-base);
763
+ font-weight: var(--weight-semibold);
764
+ color: var(--text-heading);
765
+ }
766
+ .empty-description {
767
+ font-size: var(--text-sm);
768
+ color: var(--text-secondary);
769
+ max-width: 280px;
770
+ line-height: var(--leading-relaxed);
771
+ }
772
+ ```
773
+
774
+ ---
775
+
776
+ ## 23. Skeleton Loader
777
+
778
+ Glass surface with aurora shimmer — matches the dark glass environment.
779
+
780
+ ```css
781
+ .skeleton {
782
+ position: relative;
783
+ overflow: hidden;
784
+ background: var(--glass-surface);
785
+ border-radius: var(--radius-md);
786
+ }
787
+ .skeleton::after {
788
+ content: '';
789
+ position: absolute; inset: 0;
790
+ background: linear-gradient(
791
+ 90deg,
792
+ transparent 0%,
793
+ rgba(0, 200, 232, 0.06) 50%,
794
+ transparent 100%
795
+ );
796
+ transform: translateX(-100%);
797
+ animation: aurora-shimmer 1.5s infinite;
798
+ }
799
+ @keyframes aurora-shimmer {
800
+ to { transform: translateX(100%); }
801
+ }
802
+ @media (prefers-reduced-motion: reduce) {
803
+ .skeleton::after { animation: none; }
804
+ }
805
+ ```
806
+
807
+ ---
808
+
809
+ ## 24. Tooltip
810
+
811
+ Small glass bubble on hover.
812
+
813
+ ```css
814
+ .tooltip {
815
+ background: var(--glass-overlay);
816
+ backdrop-filter: var(--glass-blur-md);
817
+ border: 1px solid var(--glass-border-strong);
818
+ border-radius: var(--radius-md);
819
+ padding: var(--space-2) var(--space-3);
820
+ font-size: var(--text-xs);
821
+ color: var(--text-primary);
822
+ box-shadow: var(--shadow-md);
823
+ pointer-events: none;
824
+ z-index: var(--z-toast);
825
+ white-space: nowrap;
826
+ }
827
+ ```