@adia-ai/web-components 0.6.46 → 0.6.48

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 (62) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/components/badge/badge.d.ts +14 -0
  3. package/components/button/button.a2ui.json +1 -4
  4. package/components/button/button.d.ts +1 -1
  5. package/components/button/button.yaml +0 -3
  6. package/components/calendar-grid/calendar-grid.css +20 -11
  7. package/components/calendar-picker/calendar-picker.css +19 -10
  8. package/components/card/card.a2ui.json +2 -5
  9. package/components/card/card.css +25 -7
  10. package/components/card/card.d.ts +2 -2
  11. package/components/card/card.yaml +7 -5
  12. package/components/date-range-picker/date-range-picker.css +10 -1
  13. package/components/heatmap/heatmap.a2ui.json +2 -0
  14. package/components/heatmap/heatmap.d.ts +1 -1
  15. package/components/heatmap/heatmap.yaml +2 -0
  16. package/components/index.js +1 -0
  17. package/components/preview/preview.a2ui.json +93 -0
  18. package/components/preview/preview.class.js +178 -0
  19. package/components/preview/preview.css +176 -0
  20. package/components/preview/preview.d.ts +24 -0
  21. package/components/preview/preview.js +22 -0
  22. package/components/preview/preview.yaml +100 -0
  23. package/components/progress/progress.a2ui.json +2 -7
  24. package/components/progress/progress.d.ts +2 -2
  25. package/components/progress/progress.yaml +3 -8
  26. package/components/progress-row/progress-row.a2ui.json +1 -3
  27. package/components/progress-row/progress-row.d.ts +1 -1
  28. package/components/progress-row/progress-row.yaml +0 -2
  29. package/components/select/select.a2ui.json +2 -4
  30. package/components/select/select.yaml +2 -2
  31. package/components/tabs/tabs.a2ui.json +1 -4
  32. package/components/tabs/tabs.d.ts +2 -2
  33. package/components/tabs/tabs.yaml +2 -2
  34. package/core/anchor.js +5 -1
  35. package/dist/web-components.min.css +1 -1
  36. package/dist/web-components.min.js +75 -73
  37. package/index.css +6 -6
  38. package/package.json +1 -1
  39. package/styles/README.md +71 -36
  40. package/styles/api/layout.css +19 -0
  41. package/styles/api/sizing.css +225 -0
  42. package/styles/api/text.css +106 -0
  43. package/styles/colors/semantics/aliases.css +32 -0
  44. package/styles/colors/semantics/buckets.css +64 -0
  45. package/styles/colors/semantics/core.css +317 -0
  46. package/styles/colors/semantics/data-viz.css +129 -0
  47. package/styles/colors/semantics/features.css +114 -0
  48. package/styles/colors/semantics.css +10 -619
  49. package/styles/components.css +1 -0
  50. package/styles/foundation/elevation.css +29 -0
  51. package/styles/foundation/index.css +11 -0
  52. package/styles/foundation/motion.css +10 -0
  53. package/styles/foundation/radius.css +27 -0
  54. package/styles/foundation/size.css +33 -0
  55. package/styles/foundation/space.css +47 -0
  56. package/styles/index.css +14 -0
  57. package/styles/resets.css +17 -25
  58. package/styles/tokens.css +16 -384
  59. package/styles/type/elements.css +225 -0
  60. package/styles/type/roles.css +419 -0
  61. package/styles/type/scale.css +89 -0
  62. package/styles/typography.css +11 -809
@@ -15,622 +15,13 @@
15
15
  border • • • • • •
16
16
  ═══════════════════════════════════════════════════════════════ */
17
17
 
18
- /* ─── Data palette parameterization ───
19
- All 10 slots live in an analogous arc centered on --a-accent-hue,
20
- fanning out in alternating cool/warm pairs with a uniform step
21
- (--a-data-delta). Slot 0 is the anchor (accent hue). Slots 1-8 are
22
- symmetric pairs at ±1, ±2, ±3, ±4 × delta; slot 9 extends one more
23
- step on the warm side (+5 × delta).
24
-
25
- Offsets from --a-accent-hue:
26
- 0: 0 1: −1Δ 2: +1Δ 3: −2Δ 4: +2Δ
27
- 5: −3Δ 6: +3Δ 7: −4Δ 8: +4Δ 9: +5Δ
28
-
29
- Two axes of differentiation — hue (via delta) AND lightness (via a
30
- 3-phase rotation keyed on N mod 3). Under CVD (deuteranopia/protanopia)
31
- the red-green axis collapses and same-L neighbors in the green-teal
32
- zone would converge; the L rotation rescues them by ensuring any three
33
- consecutive slots have three different L values.
34
-
35
- Tuning knobs:
36
- --a-data-delta : hue step between consecutive pairs (default 22)
37
- --a-data-l-spread : ±L offset for phases 1 and 2 (default 0.07)
38
- --a-data-l-light : base L for phase-0 slots in light mode
39
- --a-data-l-dark : base L for phase-0 slots in dark mode
40
- --a-data-c : uniform chroma across all slots
41
- --a-data-N-hue : pin an individual slot's hue absolutely
42
-
43
- At default accent=225, delta=22: slot 7 lands at 137 (8° from success
44
- hue 145) and slot 2 at 247 (3° from info hue 250). The L rotation
45
- places slot 2 in phase 2 (deeper) and slot 7 in phase 1 (lighter),
46
- so neither reads as its respective status token. */
47
- @property --a-data-l-light { syntax: "<number>"; inherits: true; initial-value: 0.55; }
48
- @property --a-data-l-dark { syntax: "<number>"; inherits: true; initial-value: 0.72; }
49
- @property --a-data-l-spread { syntax: "<number>"; inherits: true; initial-value: 0.10; }
50
- @property --a-data-c { syntax: "<number>"; inherits: true; initial-value: 0.16; }
51
- @property --a-data-delta { syntax: "<number>"; inherits: true; initial-value: 22; }
52
- @property --a-data-0-hue { syntax: "<number>"; inherits: true; initial-value: 225; }
53
- @property --a-data-1-hue { syntax: "<number>"; inherits: true; initial-value: 203; }
54
- @property --a-data-2-hue { syntax: "<number>"; inherits: true; initial-value: 247; }
55
- @property --a-data-3-hue { syntax: "<number>"; inherits: true; initial-value: 181; }
56
- @property --a-data-4-hue { syntax: "<number>"; inherits: true; initial-value: 269; }
57
- @property --a-data-5-hue { syntax: "<number>"; inherits: true; initial-value: 159; }
58
- @property --a-data-6-hue { syntax: "<number>"; inherits: true; initial-value: 291; }
59
- @property --a-data-7-hue { syntax: "<number>"; inherits: true; initial-value: 137; }
60
- @property --a-data-8-hue { syntax: "<number>"; inherits: true; initial-value: 313; }
61
- @property --a-data-9-hue { syntax: "<number>"; inherits: true; initial-value: 335; }
62
-
63
- :root, theme-ui, [data-theme] {
64
-
65
- /* ══════════════════════════════════════════════════════════════
66
- CANVAS — Neutral text, borders, surfaces
67
- ══════════════════════════════════════════════════════════════ */
68
-
69
- /* L2 — family tokens */
70
- --a-canvas-strong: light-dark(var(--a-neutral-50-tint), var(--a-neutral-60-shade));
71
- --a-canvas: var(--a-neutral-50);
72
- --a-canvas-subtle: light-dark(var(--a-neutral-20-tint), var(--a-neutral-30-shade));
73
- --a-canvas-muted: light-dark(var(--a-neutral-10-tint), var(--a-neutral-15-shade));
74
- --a-canvas-hover: light-dark(var(--a-neutral-60-tint), var(--a-neutral-60-shade));
75
- --a-canvas-active: light-dark(var(--a-neutral-60-tint), var(--a-neutral-65-shade));
76
- --a-canvas-selected: light-dark(var(--a-neutral-45-tint), var(--a-neutral-50-shade));
77
-
78
- /* Text on neutral surfaces — low shade steps = dark text for light mode.
79
- Dark-mode tint spread widened: text→subtle gap 25→35 steps,
80
- subtle→disabled gap 10→15 steps, for clearer visual hierarchy. */
81
- /* Subtle + muted lifted one fine-step shade-side to clear WCAG AA
82
- 4.5:1 on canvas-0/1/2 in both schemes. Subtle ↔ muted gap
83
- compresses from 10 to 5 step-fractions — visual hierarchy
84
- leans more on font-weight + size and less on shade contrast. */
85
- --a-canvas-text-strong: light-dark(var(--a-neutral-05-shade), var(--a-neutral-05-tint));
86
- --a-canvas-text: light-dark(var(--a-neutral-20-shade), var(--a-neutral-20-tint));
87
- --a-canvas-text-subtle: light-dark(var(--a-neutral-35-shade), var(--a-neutral-35-tint));
88
- --a-canvas-text-muted: light-dark(var(--a-neutral-50-shade), var(--a-neutral-50-tint));
89
- --a-canvas-text-disabled: light-dark(var(--a-neutral-65-shade), var(--a-neutral-65-tint));
90
- --a-canvas-text-inverse: var(--a-neutral-10);
91
-
92
- /* Luminance-direction surfaces (always darken relative to canvas-0) */
93
- --a-canvas-well: var(--a-canvas-1); /* sunken panels, code blocks */
94
- --a-canvas-inset: var(--a-canvas-0); /* recessed inputs, wells */
95
- --a-canvas-pressed: var(--a-canvas-2); /* pressed/active button states */
96
-
97
- /* Borders on neutral surfaces — adaptive scrims flip polarity per mode. */
98
- --a-canvas-border-subtle: var(--a-neutral-0-scrim);
99
- --a-canvas-border: var(--a-neutral-2-scrim);
100
- --a-canvas-border-strong: var(--a-neutral-4-scrim);
101
-
102
- /* L3 — short-alias matrix (the consumable API for neutral surfaces) */
103
- --a-bg: var(--a-canvas-0);
104
- --a-bg-scrim: var(--a-canvas-0-scrim);
105
- --a-bg-subtle: var(--a-canvas-1);
106
- --a-bg-muted: var(--a-canvas-0-scrim);
107
- --a-bg-strong: var(--a-canvas-3);
108
- --a-bg-hover: var(--a-canvas-2);
109
- --a-bg-active: var(--a-canvas-pressed);
110
- --a-bg-selected: var(--a-canvas-0-scrim);
111
- --a-bg-disabled: var(--a-canvas-muted);
112
- --a-bg-invalid: var(--a-danger-muted);
113
-
114
- --a-fg: var(--a-canvas-text);
115
- --a-fg-subtle: var(--a-canvas-text-subtle);
116
- --a-fg-muted: var(--a-canvas-text-muted);
117
- --a-fg-strong: var(--a-canvas-text-strong);
118
- --a-fg-hover: var(--a-canvas-text-strong);
119
- /* ADR-0028: --a-fg-{active,invalid} retired (zero consumers). Use
120
- `--a-ui-text-active` / `--a-ui-text-invalid` for form-control state,
121
- or define a per-primitive `--<comp>-fg-{active,invalid}` token. */
122
- --a-fg-selected: var(--a-canvas-text-strong);
123
- --a-fg-disabled: var(--a-canvas-text-disabled);
124
- --a-fg-inverse: var(--a-canvas-text-inverse);
125
-
126
- --a-border: var(--a-canvas-border);
127
- --a-border-subtle: var(--a-canvas-border-subtle);
128
- --a-border-strong: var(--a-canvas-border-strong);
129
- --a-border-hover: var(--a-canvas-border-strong);
130
- /* ADR-0028: --a-border-{active,selected,disabled,invalid} retired (zero
131
- consumers). Per-primitive `--<comp>-border-{state}` is the override
132
- surface; `--a-focus-ring` carries focus-active borders for form
133
- controls. */
134
-
135
- /* ══════════════════════════════════════════════════════════════
136
- ACCENT — Interactive, links, focus (source for --a-primary-*)
137
- ══════════════════════════════════════════════════════════════ */
138
-
139
- /* L2 — family tokens */
140
- --a-accent-strong: var(--a-accent-50);
141
- --a-accent: var(--a-accent-50);
142
- --a-accent-subtle: var(--a-accent-20);
143
- --a-accent-muted: var(--a-accent-10);
144
- --a-accent-hover: var(--a-accent-40);
145
- --a-accent-active: var(--a-accent-60);
146
- --a-accent-selected: var(--a-accent-50);
147
-
148
- /* Link family — derived from accent steps deeper than --a-accent-strong
149
- (step-50) so links clear WCAG AA 4.5:1 on canvas-0/1/2 in both
150
- schemes. Anchor color in `typography.css` reads --a-link rather
151
- than --a-accent-strong; emphasis on hover comes from a tighter
152
- chroma + darker step rather than full saturation jump. */
153
- /* Polarity matches `--a-accent-N` family wrappers: at fine steps >50,
154
- `tint` is the lower-L (deeper) primitive and `shade` is the higher-L
155
- primitive — the naming inverts past the convergence point. Light
156
- mode wants dark-on-light, so we pick `tint` (deep accent); dark
157
- mode wants light-on-dark, so we pick `shade` (lifted accent). */
158
- --a-link: light-dark(var(--a-accent-55-tint), var(--a-accent-55-shade));
159
- --a-link-hover: light-dark(var(--a-accent-70-tint), var(--a-accent-70-shade));
160
- --a-link-visited: light-dark(var(--a-accent-65-tint), var(--a-accent-65-shade));
161
-
162
- /* Accent text on accent solid bg — needs light text on dark-ish accent */
163
- --a-accent-text-strong: light-dark(var(--a-accent-05-shade), var(--a-accent-05-tint));
164
- --a-accent-text: light-dark(var(--a-accent-10-shade), var(--a-accent-10-tint));
165
- --a-accent-text-subtle: light-dark(var(--a-accent-30-shade), var(--a-accent-30-tint));
166
- --a-accent-text-disabled: light-dark(var(--a-accent-60-shade), var(--a-accent-60-tint));
167
-
168
- --a-accent-border-subtle: var(--a-accent-30);
169
- --a-accent-border: var(--a-accent-45);
170
- --a-accent-border-strong: var(--a-accent-60);
171
-
172
- /* L3 — Primary (accent-filled — CTA buttons, checked controls) */
173
- --a-primary-bg: var(--a-accent-strong);
174
- --a-primary-bg-hover: var(--a-accent-hover);
175
- --a-primary-bg-active: var(--a-accent-active);
176
-
177
- --a-primary-fg: var(--a-accent-05-tint);
178
- --a-primary-fg-hover: var(--a-accent-text-strong);
179
-
180
- --a-primary-border: var(--a-accent-border);
181
- --a-primary-border-hover: var(--a-accent-border-strong);
182
-
183
- /* Legacy shorthand — keep until all components migrate to --a-primary-* */
184
- --a-primary: var(--a-primary-bg);
185
- --a-primary-hover: var(--a-primary-bg-hover);
186
-
187
- /* L3 — Accent surface role matrix (parallel to --a-primary-*, keeps the
188
- accent family addressable under its own name for components that want
189
- accent-hued surfaces without the "primary action" connotation). */
190
- --a-accent-bg: var(--a-primary-bg);
191
- --a-accent-bg-hover: var(--a-primary-bg-hover);
192
- --a-accent-bg-active: var(--a-primary-bg-active);
193
-
194
- --a-accent-fg: var(--a-primary-fg);
195
- --a-accent-fg-hover: var(--a-primary-fg-hover);
196
-
197
- /* accent border is already defined at L2 (--a-accent-border*);
198
- L3 matches L2 since both resolve to the same scheme-aware value. */
199
-
200
- /* ══════════════════════════════════════════════════════════════
201
- BRAND — Non-interactive identity color
202
- ══════════════════════════════════════════════════════════════ */
203
-
204
- /* L2 — family tokens */
205
- --a-brand-strong: var(--a-brand-70);
206
- --a-brand: var(--a-brand-50);
207
- --a-brand-subtle: var(--a-brand-40);
208
- --a-brand-muted: var(--a-brand-30);
209
- --a-brand-hover: var(--a-brand-60);
210
- --a-brand-active: var(--a-brand-60);
211
- --a-brand-selected: var(--a-brand-40);
212
-
213
- --a-brand-text-strong: light-dark(var(--a-brand-05-tint), var(--a-brand-05-tint));
214
- --a-brand-text: light-dark(var(--a-brand-10-tint), var(--a-brand-10-tint));
215
- --a-brand-text-subtle: light-dark(var(--a-brand-30-tint), var(--a-brand-30-tint));
216
- --a-brand-text-disabled: light-dark(var(--a-brand-60-shade), var(--a-brand-60-tint));
217
-
218
- --a-brand-border-subtle: var(--a-brand-30);
219
- --a-brand-border: var(--a-brand-45);
220
- --a-brand-border-strong: var(--a-brand-60);
221
-
222
- /* L3 — Brand surface role matrix */
223
- --a-brand-bg: var(--a-brand-strong);
224
- --a-brand-bg-hover: var(--a-brand-hover);
225
-
226
- --a-brand-fg: var(--a-brand-text-strong);
227
- --a-brand-fg-hover: var(--a-brand-text-strong);
228
-
229
- /* L3 border state matrix — rest state is --a-brand-border (L2 above). */
230
- --a-brand-border-hover: var(--a-brand-border-strong);
231
-
232
- /* ══════════════════════════════════════════════════════════════
233
- INFO
234
- ══════════════════════════════════════════════════════════════ */
235
-
236
- /* L2 — family tokens */
237
- --a-info-strong: var(--a-info-50);
238
- --a-info: var(--a-info-50);
239
- --a-info-subtle: var(--a-info-20);
240
- --a-info-muted: var(--a-info-10);
241
- --a-info-hover: var(--a-info-40);
242
- --a-info-active: var(--a-info-60);
243
- --a-info-selected: var(--a-info-50);
244
-
245
- --a-info-text-strong: light-dark(var(--a-info-05-tint), var(--a-info-05-tint));
246
- --a-info-text: light-dark(var(--a-info-20-shade), var(--a-info-20-tint));
247
- --a-info-text-subtle: light-dark(var(--a-info-45-shade), var(--a-info-45-tint));
248
- --a-info-text-disabled: light-dark(var(--a-info-60-shade), var(--a-info-60-tint));
249
-
250
- --a-info-border-subtle: var(--a-info-30);
251
- --a-info-border: var(--a-info-40);
252
- --a-info-border-strong: var(--a-info-60);
253
-
254
- /* L3 — Info surface role matrix */
255
- --a-info-bg: var(--a-info-strong);
256
- --a-info-bg-hover: var(--a-info-hover);
257
-
258
- --a-info-fg: var(--a-info-text-strong);
259
- --a-info-fg-hover: var(--a-info-text-strong);
260
-
261
- /* L3 border state matrix — rest state is --a-info-border (L2 above). */
262
- --a-info-border-hover: var(--a-info-border-strong);
263
-
264
- /* ══════════════════════════════════════════════════════════════
265
- SUCCESS
266
- ══════════════════════════════════════════════════════════════ */
267
-
268
- /* L2 — family tokens */
269
- --a-success-strong: var(--a-success-50);
270
- --a-success: var(--a-success-50);
271
- --a-success-subtle: var(--a-success-20);
272
- --a-success-muted: var(--a-success-10);
273
- --a-success-hover: var(--a-success-40);
274
- --a-success-active: var(--a-success-60);
275
- --a-success-selected: var(--a-success-50);
276
-
277
- --a-success-text-strong: light-dark(var(--a-success-05-tint), var(--a-success-05-tint));
278
- --a-success-text: light-dark(var(--a-success-20-shade), var(--a-success-20-tint));
279
- --a-success-text-subtle: light-dark(var(--a-success-45-shade), var(--a-success-45-tint));
280
- --a-success-text-disabled: light-dark(var(--a-success-60-shade), var(--a-success-60-tint));
281
-
282
- --a-success-border-subtle: var(--a-success-30);
283
- --a-success-border: var(--a-success-40);
284
- --a-success-border-strong: var(--a-success-60);
285
-
286
- /* L3 — Success surface role matrix */
287
- --a-success-bg: var(--a-success-strong);
288
- --a-success-bg-hover: var(--a-success-hover);
289
-
290
- --a-success-fg: var(--a-success-text-strong);
291
- --a-success-fg-hover: var(--a-success-text-strong);
292
-
293
- /* L3 border state matrix — rest state is --a-success-border (L2 above). */
294
- --a-success-border-hover: var(--a-success-border-strong);
295
-
296
- /* ══════════════════════════════════════════════════════════════
297
- WARNING
298
- ══════════════════════════════════════════════════════════════ */
299
-
300
- /* L2 — family tokens */
301
- --a-warning-strong: var(--a-warning-50);
302
- --a-warning: var(--a-warning-50);
303
- --a-warning-subtle: var(--a-warning-20);
304
- --a-warning-muted: var(--a-warning-10);
305
- --a-warning-hover: var(--a-warning-40);
306
- --a-warning-active: var(--a-warning-60);
307
- --a-warning-selected: var(--a-warning-50);
308
-
309
- /* warning is light-colored — text on warning fills should be dark */
310
- --a-warning-text-strong: light-dark(var(--a-warning-10-shade), var(--a-warning-10-shade));
311
- --a-warning-text: light-dark(var(--a-warning-20-shade), var(--a-warning-20-tint));
312
- --a-warning-text-subtle: light-dark(var(--a-warning-45-shade), var(--a-warning-45-tint));
313
- --a-warning-text-disabled: light-dark(var(--a-warning-60-shade), var(--a-warning-60-tint));
314
-
315
- --a-warning-border-subtle: var(--a-warning-30);
316
- --a-warning-border: var(--a-warning-40);
317
- --a-warning-border-strong: var(--a-warning-60);
318
-
319
- /* L3 — Warning surface role matrix.
320
- `--a-warning-bg` deliberately diverges from `--a-warning-strong`
321
- (still the L2 saturated mid-tone, used as a fg/icon color by
322
- alert / chart / code / empty-state / agent-trace). Surfaces using
323
- `-bg` pair it with the dark `--a-warning-fg` (= -text-strong =
324
- -10-shade); `-strong` + `-fg` gave muddy brown-on-brown chips
325
- (pre-v0.6.36 user report on <tag-ui variant="warning">).
326
- `--a-warning-20-tint` is bright in both schemes (lightness math
327
- is scheme-independent) so warning surfaces keep the same
328
- caution-tape look in light + dark mode. */
329
- --a-warning-bg: var(--a-warning-20-tint);
330
- --a-warning-bg-hover: var(--a-warning-hover);
331
-
332
- --a-warning-fg: var(--a-warning-text-strong);
333
- --a-warning-fg-hover: var(--a-warning-text-strong);
334
-
335
- /* L3 border state matrix — rest state is --a-warning-border (L2 above). */
336
- --a-warning-border-hover: var(--a-warning-border-strong);
337
-
338
- /* ══════════════════════════════════════════════════════════════
339
- DANGER
340
- ══════════════════════════════════════════════════════════════ */
341
-
342
- /* L2 — family tokens */
343
- --a-danger-strong: var(--a-danger-50);
344
- --a-danger: var(--a-danger-50);
345
- --a-danger-subtle: var(--a-danger-20);
346
- --a-danger-muted: var(--a-danger-10);
347
- --a-danger-hover: var(--a-danger-40);
348
- --a-danger-active: var(--a-danger-60);
349
- --a-danger-selected: var(--a-danger-50);
350
-
351
- /* text-strong: light text for use ON danger solid fills (both modes)
352
- text-default/subtle: dark text for use on neutral surfaces ABOUT danger */
353
- --a-danger-text-strong: light-dark(var(--a-danger-05-tint), var(--a-danger-05-tint));
354
- --a-danger-text: light-dark(var(--a-danger-20-shade), var(--a-danger-20-tint));
355
- --a-danger-text-subtle: light-dark(var(--a-danger-45-shade), var(--a-danger-45-tint));
356
- --a-danger-text-disabled: light-dark(var(--a-danger-60-shade), var(--a-danger-60-tint));
357
-
358
- --a-danger-border-subtle: var(--a-danger-30);
359
- --a-danger-border: var(--a-danger-40);
360
- --a-danger-border-strong: var(--a-danger-60);
361
-
362
- /* L3 — Danger surface role matrix */
363
- --a-danger-bg: var(--a-danger-strong);
364
- --a-danger-bg-hover: var(--a-danger-hover);
365
-
366
- --a-danger-fg: var(--a-danger-text-strong);
367
- --a-danger-fg-hover: var(--a-danger-text-strong);
368
-
369
- /* L3 border state matrix — rest state is --a-danger-border (L2 above). */
370
- --a-danger-border-hover: var(--a-danger-border-strong);
371
-
372
- /* ══════════════════════════════════════════════════════════════
373
- BUCKETS — sequential 5-step ramp per family for data-vis consumers
374
-
375
- Distinct from `--a-data-0..9` (categorical, distinct hues) — buckets
376
- are 5 steps within ONE family, ordered low → high. Used by sequential
377
- data-vis surfaces (heatmap-ui, choropleth, treemap intensity).
378
-
379
- Anchor: bucket-2 = `--a-{family}-strong` (semantic step-50). Steps 0
380
- and 1 sit lighter (toward muted); steps 3 and 4 sit deeper (toward
381
- active). Light/dark scheme polarity is honored via `light-dark()` —
382
- in light mode the lighter primitives are step-tints, in dark mode
383
- the lighter primitives are step-shades, so "low intensity" reads
384
- as low contrast against canvas-0 in either scheme.
385
-
386
- Coordinate with chart palette: `--a-data-N` are categorical (10 hue
387
- slots fanning out from accent-hue); buckets stay within one family
388
- so a heatmap colored `[color="success"]` doesn't drift through the
389
- accent → success → warning hue arc. Five steps were chosen so the
390
- ramp fits within WCAG AA against `--a-canvas-0` at the high end and
391
- remains visually distinguishable at the low end.
392
- ══════════════════════════════════════════════════════════════ */
393
-
394
- /* Accent buckets */
395
- --a-accent-bucket-0: light-dark(var(--a-accent-15-tint), var(--a-accent-85-shade));
396
- --a-accent-bucket-1: light-dark(var(--a-accent-30-tint), var(--a-accent-70-shade));
397
- --a-accent-bucket-2: var(--a-accent-strong);
398
- --a-accent-bucket-3: light-dark(var(--a-accent-65-tint), var(--a-accent-35-shade));
399
- --a-accent-bucket-4: light-dark(var(--a-accent-80-tint), var(--a-accent-20-shade));
400
-
401
- /* Success buckets */
402
- --a-success-bucket-0: light-dark(var(--a-success-15-tint), var(--a-success-85-shade));
403
- --a-success-bucket-1: light-dark(var(--a-success-30-tint), var(--a-success-70-shade));
404
- --a-success-bucket-2: var(--a-success-strong);
405
- --a-success-bucket-3: light-dark(var(--a-success-65-tint), var(--a-success-35-shade));
406
- --a-success-bucket-4: light-dark(var(--a-success-80-tint), var(--a-success-20-shade));
407
-
408
- /* Warning buckets */
409
- --a-warning-bucket-0: light-dark(var(--a-warning-15-tint), var(--a-warning-85-shade));
410
- --a-warning-bucket-1: light-dark(var(--a-warning-30-tint), var(--a-warning-70-shade));
411
- --a-warning-bucket-2: var(--a-warning-strong);
412
- --a-warning-bucket-3: light-dark(var(--a-warning-65-tint), var(--a-warning-35-shade));
413
- --a-warning-bucket-4: light-dark(var(--a-warning-80-tint), var(--a-warning-20-shade));
414
-
415
- /* Danger buckets */
416
- --a-danger-bucket-0: light-dark(var(--a-danger-15-tint), var(--a-danger-85-shade));
417
- --a-danger-bucket-1: light-dark(var(--a-danger-30-tint), var(--a-danger-70-shade));
418
- --a-danger-bucket-2: var(--a-danger-strong);
419
- --a-danger-bucket-3: light-dark(var(--a-danger-65-tint), var(--a-danger-35-shade));
420
- --a-danger-bucket-4: light-dark(var(--a-danger-80-tint), var(--a-danger-20-shade));
421
-
422
- /* Info buckets */
423
- --a-info-bucket-0: light-dark(var(--a-info-15-tint), var(--a-info-85-shade));
424
- --a-info-bucket-1: light-dark(var(--a-info-30-tint), var(--a-info-70-shade));
425
- --a-info-bucket-2: var(--a-info-strong);
426
- --a-info-bucket-3: light-dark(var(--a-info-65-tint), var(--a-info-35-shade));
427
- --a-info-bucket-4: light-dark(var(--a-info-80-tint), var(--a-info-20-shade));
428
-
429
- /* ══════════════════════════════════════════════════════════════
430
- FOCUS — canonical ring recipe shared by all form controls
431
- ══════════════════════════════════════════════════════════════
432
-
433
- The ring is a dual-layer box-shadow: an inner "gap" the canvas
434
- color wide, then an outer ring the accent color wide. Tuning any
435
- of the scalar tokens below cascades to every component that
436
- consumes `--a-focus-ring`:
437
-
438
- --a-focus-width — outer ring thickness
439
- --a-focus-offset — inner gap thickness (distance from element
440
- edge to ring)
441
- --a-focus-color — ring color (default: accent-strong)
442
- --a-focus-bg — gap color (default: the surface under the
443
- control; normally matches --a-canvas-0)
444
-
445
- Invalid / error state uses the same geometry but a danger color
446
- via `--a-focus-ring-invalid`.
447
-
448
- Components must NOT hardcode 2px / 4px / accent hex in their CSS;
449
- consume either `--a-focus-ring` directly or an L3 alias like
450
- `--{component}-focus-ring: var(--a-focus-ring)` (the more common
451
- pattern — gives per-component override headroom without breaking
452
- the canonical default). */
453
-
454
- --a-focus-color: var(--a-accent-strong);
455
- --a-focus-color-invalid: var(--a-danger);
456
- --a-focus-width: 2px;
457
- --a-focus-offset: 2px;
458
- --a-focus-bg: var(--a-canvas-0);
459
-
460
- --a-focus-ring-shadow: 0 0 0 var(--a-focus-offset) var(--a-focus-bg),
461
- 0 0 0 calc(var(--a-focus-offset) + var(--a-focus-width)) var(--a-focus-color);
462
- --a-focus-ring-shadow-invalid: 0 0 0 var(--a-focus-offset) var(--a-focus-bg),
463
- 0 0 0 calc(var(--a-focus-offset) + var(--a-focus-width)) var(--a-focus-color-invalid);
464
-
465
- /* L3 — what components consume. */
466
- --a-ring: var(--a-focus-color);
467
- --a-ring-invalid: var(--a-focus-color-invalid);
468
- --a-focus-ring: var(--a-focus-ring-shadow);
469
- --a-focus-ring-invalid: var(--a-focus-ring-shadow-invalid);
470
-
471
- /* ══════════════════════════════════════════════════════════════
472
- UI (FIELD) — Form input surfaces
473
- ══════════════════════════════════════════════════════════════ */
474
-
475
- --a-ui-bg: var(--a-canvas-0-scrim);
476
- --a-ui-bg-hover: var(--a-canvas-0-scrim);
477
- --a-ui-bg-active: var(--a-canvas-0);
478
- --a-ui-bg-selected: var(--a-canvas-0-scrim);
479
- --a-ui-bg-disabled: var(--a-canvas-1);
480
- --a-ui-bg-invalid: var(--a-danger-muted);
481
-
482
- --a-ui-text: var(--a-fg-strong);
483
- --a-ui-text-hover: var(--a-fg-strong);
484
- --a-ui-text-active: var(--a-fg-strong);
485
- --a-ui-text-selected: var(--a-fg-strong);
486
- --a-ui-text-placeholder: var(--a-fg-muted);
487
- --a-ui-text-subtle: var(--a-fg-subtle);
488
- --a-ui-text-muted: var(--a-fg-muted);
489
- --a-ui-text-disabled: var(--a-fg-disabled);
490
- --a-ui-text-invalid: var(--a-danger-text);
491
-
492
- --a-ui-border: light-dark(var(--a-neutral-85-shade), var(--a-neutral-85-tint));
493
- --a-ui-border-hover: light-dark(var(--a-neutral-75-shade), var(--a-neutral-75-tint));
494
- --a-ui-border-active: var(--a-accent-50);
495
- --a-ui-border-selected: var(--a-accent-50);
496
- --a-ui-border-disabled: var(--a-neutral-30);
497
- --a-ui-border-invalid: var(--a-danger-50);
498
-
499
- --a-ui-caret: var(--a-accent-50);
500
-
501
- /* ══════════════════════════════════════════════════════════════
502
- HIGHLIGHT & SELECTION — Text-level emphasis
503
- ══════════════════════════════════════════════════════════════ */
504
-
505
- --a-highlight-strong: var(--a-warning-30);
506
- --a-highlight: var(--a-warning-20);
507
- --a-highlight-subtle: var(--a-warning-10);
508
- --a-highlight-text: var(--a-fg-strong);
509
-
510
- --a-selection-bg: var(--a-accent-20);
511
- --a-selection-text: var(--a-fg-strong);
512
- --a-selection-radius: var(--a-space-1);
513
-
514
- /* ══════════════════════════════════════════════════════════════
515
- CHROME — Neutral overlays on arbitrary-color surfaces
516
- Theme-stable near-opaque white/black for UI chrome drawn on
517
- top of unpredictable content (color-picker thumbs, video
518
- controls, modal scrims). Do NOT theme-tint — chrome must read
519
- equally against red / blue / dark / light underlays.
520
- ══════════════════════════════════════════════════════════════ */
521
-
522
- --a-chrome-light: var(--a-neutral-0-tint);
523
- --a-chrome-dark: var(--a-neutral-0-shade);
524
- --a-chrome-border: var(--a-chrome-light);
525
- --a-chrome-ring-subtle: oklch(0 0 0 / 0.3);
526
- --a-chrome-shadow-soft: oklch(0 0 0 / 0.2);
527
- --a-chrome-backdrop: oklch(0 0 0 / 0.5);
528
- /* §230-bundle (v0.5.9): canonical badge-on-chrome pair — light text +
529
- dark semi-transparent surface. Used by primitives that overlay text
530
- on unpredictable backgrounds (swatch badges, video controls, color
531
- readouts). Must read against red / blue / dark / light underlays. */
532
- --a-chrome-fg: var(--a-chrome-light);
533
- --a-chrome-bg: oklch(0 0 0 / 0.4);
534
-
535
- /* ══════════════════════════════════════════════════════════════
536
- DATA PALETTE — 10 categorical series colors for charts
537
-
538
- All 10 slots are computed as offsets from --a-accent-hue via a
539
- single --a-data-delta step, so retuning accent or delta shifts the
540
- whole palette coherently. Slot 0 is the anchor (accent hue); slots
541
- 1-8 alternate cool/warm at ±1..±4 × delta; slot 9 extends to +5Δ.
542
-
543
- Override --a-data-l-light / --a-data-l-dark / --a-data-c to retune
544
- the palette's tone, --a-data-delta to squeeze or spread the arc,
545
- or any --a-data-N-hue to pin an individual slot.
546
- ══════════════════════════════════════════════════════════════ */
547
-
548
- --a-data-0-hue: var(--a-accent-hue);
549
- --a-data-1-hue: calc(var(--a-accent-hue) - var(--a-data-delta) * 1);
550
- --a-data-2-hue: calc(var(--a-accent-hue) + var(--a-data-delta) * 1);
551
- --a-data-3-hue: calc(var(--a-accent-hue) - var(--a-data-delta) * 2);
552
- --a-data-4-hue: calc(var(--a-accent-hue) + var(--a-data-delta) * 2);
553
- --a-data-5-hue: calc(var(--a-accent-hue) - var(--a-data-delta) * 3);
554
- --a-data-6-hue: calc(var(--a-accent-hue) + var(--a-data-delta) * 3);
555
- --a-data-7-hue: calc(var(--a-accent-hue) - var(--a-data-delta) * 4);
556
- --a-data-8-hue: calc(var(--a-accent-hue) + var(--a-data-delta) * 4);
557
- --a-data-9-hue: calc(var(--a-accent-hue) + var(--a-data-delta) * 5);
558
-
559
- /* Three L phases — each slot's phase is (N mod 3). Two consecutive
560
- slots always differ in both hue AND lightness, and any three
561
- consecutive slots span all three L values, so no CVD-collapse
562
- pocket of same-L slots exists in the green-teal confusion zone. */
563
- --_data-l-light-0: var(--a-data-l-light);
564
- --_data-l-light-1: calc(var(--a-data-l-light) + var(--a-data-l-spread));
565
- --_data-l-light-2: calc(var(--a-data-l-light) - var(--a-data-l-spread));
566
- --_data-l-dark-0: var(--a-data-l-dark);
567
- --_data-l-dark-1: calc(var(--a-data-l-dark) + var(--a-data-l-spread));
568
- --_data-l-dark-2: calc(var(--a-data-l-dark) - var(--a-data-l-spread));
569
-
570
- /* slot N uses L-phase (N mod 3): 0/3/6/9 → phase 0; 1/4/7 → phase 1; 2/5/8 → phase 2 */
571
- --a-data-0: light-dark(
572
- oklch(var(--_data-l-light-0) var(--a-data-c) var(--a-data-0-hue)),
573
- oklch(var(--_data-l-dark-0) var(--a-data-c) var(--a-data-0-hue))
574
- );
575
- --a-data-1: light-dark(
576
- oklch(var(--_data-l-light-1) var(--a-data-c) var(--a-data-1-hue)),
577
- oklch(var(--_data-l-dark-1) var(--a-data-c) var(--a-data-1-hue))
578
- );
579
- --a-data-2: light-dark(
580
- oklch(var(--_data-l-light-2) var(--a-data-c) var(--a-data-2-hue)),
581
- oklch(var(--_data-l-dark-2) var(--a-data-c) var(--a-data-2-hue))
582
- );
583
- --a-data-3: light-dark(
584
- oklch(var(--_data-l-light-0) var(--a-data-c) var(--a-data-3-hue)),
585
- oklch(var(--_data-l-dark-0) var(--a-data-c) var(--a-data-3-hue))
586
- );
587
- --a-data-4: light-dark(
588
- oklch(var(--_data-l-light-1) var(--a-data-c) var(--a-data-4-hue)),
589
- oklch(var(--_data-l-dark-1) var(--a-data-c) var(--a-data-4-hue))
590
- );
591
- --a-data-5: light-dark(
592
- oklch(var(--_data-l-light-2) var(--a-data-c) var(--a-data-5-hue)),
593
- oklch(var(--_data-l-dark-2) var(--a-data-c) var(--a-data-5-hue))
594
- );
595
- --a-data-6: light-dark(
596
- oklch(var(--_data-l-light-0) var(--a-data-c) var(--a-data-6-hue)),
597
- oklch(var(--_data-l-dark-0) var(--a-data-c) var(--a-data-6-hue))
598
- );
599
- --a-data-7: light-dark(
600
- oklch(var(--_data-l-light-1) var(--a-data-c) var(--a-data-7-hue)),
601
- oklch(var(--_data-l-dark-1) var(--a-data-c) var(--a-data-7-hue))
602
- );
603
- --a-data-8: light-dark(
604
- oklch(var(--_data-l-light-2) var(--a-data-c) var(--a-data-8-hue)),
605
- oklch(var(--_data-l-dark-2) var(--a-data-c) var(--a-data-8-hue))
606
- );
607
- --a-data-9: light-dark(
608
- oklch(var(--_data-l-light-0) var(--a-data-c) var(--a-data-9-hue)),
609
- oklch(var(--_data-l-dark-0) var(--a-data-c) var(--a-data-9-hue))
610
- );
611
-
612
- /* ══════════════════════════════════════════════════════════════
613
- SCRIMS — Role aliases. Map onto the 7-step adaptive scrim-0..6
614
- scale in scrims.css. Per-family semantic tiers (weak / default /
615
- strong / peak) live in surfaces.css.
616
- ══════════════════════════════════════════════════════════════ */
617
-
618
- --a-scrim-weak: var(--a-neutral-1-shade-scrim); /* 20% — hover wash */
619
- --a-scrim-toast: var(--a-neutral-2-shade-scrim); /* 30% — toast veil */
620
- --a-scrim-default: var(--a-neutral-3-shade-scrim); /* 40% — generic overlay */
621
- --a-scrim-dialog: var(--a-neutral-4-shade-scrim); /* 50% — modal backdrop */
622
- --a-scrim-strong: var(--a-neutral-6-shade-scrim); /* 70% — heaviest veil */
623
-
624
- /* ══════════════════════════════════════════════════════════════
625
- STATUS COMPAT — Legacy status shortcuts used by existing
626
- components (button, chart, pipeline-status, timeline). Override
627
- the L2 "default" shade to match -strong so the pre-reorg visual
628
- behavior is preserved. Components should migrate to the L3
629
- matrix (--a-danger-bg, --a-success-fg, etc) over time.
630
- ══════════════════════════════════════════════════════════════ */
631
-
632
- --a-danger: var(--a-danger-strong);
633
- --a-danger-fg: var(--a-danger-text-strong);
634
- --a-success: var(--a-success-strong);
635
- --a-success-fg: var(--a-success-text-strong);
636
- }
18
+ /* adia:barrel/color split into semantics/ by concern (v0.6.48, ADR-0035).
19
+ Public path (directly linked + referenced by ADR-0002 / token-contract).
20
+ Import order reproduces the original source order EXACTLY aliases.css
21
+ (status-compat) MUST stay last so its --a-danger/--a-success overrides win. */
22
+
23
+ @import "./semantics/core.css";
24
+ @import "./semantics/buckets.css";
25
+ @import "./semantics/features.css";
26
+ @import "./semantics/data-viz.css";
27
+ @import "./semantics/aliases.css";
@@ -74,6 +74,7 @@
74
74
  @import "../components/qr-code/qr-code.css";
75
75
  @import "../components/pagination/pagination.css";
76
76
  @import "../components/code/code.css";
77
+ @import "../components/preview/preview.css";
77
78
  @import "../components/list/list.css";
78
79
  @import "../components/list-window/list-window.css";
79
80
  @import "../components/menu/menu.css";