@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.
- package/CHANGELOG.md +54 -0
- package/components/badge/badge.d.ts +14 -0
- package/components/button/button.a2ui.json +1 -4
- package/components/button/button.d.ts +1 -1
- package/components/button/button.yaml +0 -3
- package/components/calendar-grid/calendar-grid.css +20 -11
- package/components/calendar-picker/calendar-picker.css +19 -10
- package/components/card/card.a2ui.json +2 -5
- package/components/card/card.css +25 -7
- package/components/card/card.d.ts +2 -2
- package/components/card/card.yaml +7 -5
- package/components/date-range-picker/date-range-picker.css +10 -1
- package/components/heatmap/heatmap.a2ui.json +2 -0
- package/components/heatmap/heatmap.d.ts +1 -1
- package/components/heatmap/heatmap.yaml +2 -0
- package/components/index.js +1 -0
- package/components/preview/preview.a2ui.json +93 -0
- package/components/preview/preview.class.js +178 -0
- package/components/preview/preview.css +176 -0
- package/components/preview/preview.d.ts +24 -0
- package/components/preview/preview.js +22 -0
- package/components/preview/preview.yaml +100 -0
- package/components/progress/progress.a2ui.json +2 -7
- package/components/progress/progress.d.ts +2 -2
- package/components/progress/progress.yaml +3 -8
- package/components/progress-row/progress-row.a2ui.json +1 -3
- package/components/progress-row/progress-row.d.ts +1 -1
- package/components/progress-row/progress-row.yaml +0 -2
- package/components/select/select.a2ui.json +2 -4
- package/components/select/select.yaml +2 -2
- package/components/tabs/tabs.a2ui.json +1 -4
- package/components/tabs/tabs.d.ts +2 -2
- package/components/tabs/tabs.yaml +2 -2
- package/core/anchor.js +5 -1
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +75 -73
- package/index.css +6 -6
- package/package.json +1 -1
- package/styles/README.md +71 -36
- package/styles/api/layout.css +19 -0
- package/styles/api/sizing.css +225 -0
- package/styles/api/text.css +106 -0
- package/styles/colors/semantics/aliases.css +32 -0
- package/styles/colors/semantics/buckets.css +64 -0
- package/styles/colors/semantics/core.css +317 -0
- package/styles/colors/semantics/data-viz.css +129 -0
- package/styles/colors/semantics/features.css +114 -0
- package/styles/colors/semantics.css +10 -619
- package/styles/components.css +1 -0
- package/styles/foundation/elevation.css +29 -0
- package/styles/foundation/index.css +11 -0
- package/styles/foundation/motion.css +10 -0
- package/styles/foundation/radius.css +27 -0
- package/styles/foundation/size.css +33 -0
- package/styles/foundation/space.css +47 -0
- package/styles/index.css +14 -0
- package/styles/resets.css +17 -25
- package/styles/tokens.css +16 -384
- package/styles/type/elements.css +225 -0
- package/styles/type/roles.css +419 -0
- package/styles/type/scale.css +89 -0
- package/styles/typography.css +11 -809
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/* adia:semantic/color — core semantic color aliases (L2 + L3).
|
|
2
|
+
The consumable API: canvas (neutral fg/bg/border), accent, brand, and
|
|
3
|
+
the four status families (info/success/warning/danger). Split out of
|
|
4
|
+
the 636-line semantics.css (v0.6.48 reorg, ADR-0035); imported FIRST by
|
|
5
|
+
the semantics.css barrel so the status-compat overrides in aliases.css
|
|
6
|
+
(imported last) still win, exactly as in the original source order. */
|
|
7
|
+
|
|
8
|
+
:root, theme-ui, [data-theme] {
|
|
9
|
+
|
|
10
|
+
/* ══════════════════════════════════════════════════════════════
|
|
11
|
+
CANVAS — Neutral text, borders, surfaces
|
|
12
|
+
══════════════════════════════════════════════════════════════ */
|
|
13
|
+
|
|
14
|
+
/* L2 — family tokens */
|
|
15
|
+
--a-canvas-strong: light-dark(var(--a-neutral-50-tint), var(--a-neutral-60-shade));
|
|
16
|
+
--a-canvas: var(--a-neutral-50);
|
|
17
|
+
--a-canvas-subtle: light-dark(var(--a-neutral-20-tint), var(--a-neutral-30-shade));
|
|
18
|
+
--a-canvas-muted: light-dark(var(--a-neutral-10-tint), var(--a-neutral-15-shade));
|
|
19
|
+
--a-canvas-hover: light-dark(var(--a-neutral-60-tint), var(--a-neutral-60-shade));
|
|
20
|
+
--a-canvas-active: light-dark(var(--a-neutral-60-tint), var(--a-neutral-65-shade));
|
|
21
|
+
--a-canvas-selected: light-dark(var(--a-neutral-45-tint), var(--a-neutral-50-shade));
|
|
22
|
+
|
|
23
|
+
/* Text on neutral surfaces — low shade steps = dark text for light mode.
|
|
24
|
+
Dark-mode tint spread widened: text→subtle gap 25→35 steps,
|
|
25
|
+
subtle→disabled gap 10→15 steps, for clearer visual hierarchy. */
|
|
26
|
+
/* Subtle + muted lifted one fine-step shade-side to clear WCAG AA
|
|
27
|
+
4.5:1 on canvas-0/1/2 in both schemes. Subtle ↔ muted gap
|
|
28
|
+
compresses from 10 to 5 step-fractions — visual hierarchy
|
|
29
|
+
leans more on font-weight + size and less on shade contrast. */
|
|
30
|
+
--a-canvas-text-strong: light-dark(var(--a-neutral-05-shade), var(--a-neutral-05-tint));
|
|
31
|
+
--a-canvas-text: light-dark(var(--a-neutral-20-shade), var(--a-neutral-20-tint));
|
|
32
|
+
--a-canvas-text-subtle: light-dark(var(--a-neutral-35-shade), var(--a-neutral-35-tint));
|
|
33
|
+
--a-canvas-text-muted: light-dark(var(--a-neutral-50-shade), var(--a-neutral-50-tint));
|
|
34
|
+
--a-canvas-text-disabled: light-dark(var(--a-neutral-65-shade), var(--a-neutral-65-tint));
|
|
35
|
+
--a-canvas-text-inverse: var(--a-neutral-10);
|
|
36
|
+
|
|
37
|
+
/* Luminance-direction surfaces (always darken relative to canvas-0) */
|
|
38
|
+
--a-canvas-well: var(--a-canvas-1); /* sunken panels, code blocks */
|
|
39
|
+
--a-canvas-inset: var(--a-canvas-0); /* recessed inputs, wells */
|
|
40
|
+
--a-canvas-pressed: var(--a-canvas-2); /* pressed/active button states */
|
|
41
|
+
|
|
42
|
+
/* Borders on neutral surfaces — adaptive scrims flip polarity per mode. */
|
|
43
|
+
--a-canvas-border-subtle: var(--a-neutral-0-scrim);
|
|
44
|
+
--a-canvas-border: var(--a-neutral-2-scrim);
|
|
45
|
+
--a-canvas-border-strong: var(--a-neutral-4-scrim);
|
|
46
|
+
|
|
47
|
+
/* L3 — short-alias matrix (the consumable API for neutral surfaces) */
|
|
48
|
+
--a-bg: var(--a-canvas-0);
|
|
49
|
+
--a-bg-scrim: var(--a-canvas-0-scrim);
|
|
50
|
+
--a-bg-subtle: var(--a-canvas-1);
|
|
51
|
+
--a-bg-muted: var(--a-canvas-0-scrim);
|
|
52
|
+
--a-bg-strong: var(--a-canvas-3);
|
|
53
|
+
--a-bg-hover: var(--a-canvas-2);
|
|
54
|
+
--a-bg-active: var(--a-canvas-pressed);
|
|
55
|
+
--a-bg-selected: var(--a-canvas-0-scrim);
|
|
56
|
+
--a-bg-disabled: var(--a-canvas-muted);
|
|
57
|
+
--a-bg-invalid: var(--a-danger-muted);
|
|
58
|
+
|
|
59
|
+
--a-fg: var(--a-canvas-text);
|
|
60
|
+
--a-fg-subtle: var(--a-canvas-text-subtle);
|
|
61
|
+
--a-fg-muted: var(--a-canvas-text-muted);
|
|
62
|
+
--a-fg-strong: var(--a-canvas-text-strong);
|
|
63
|
+
--a-fg-hover: var(--a-canvas-text-strong);
|
|
64
|
+
/* ADR-0028: --a-fg-{active,invalid} retired (zero consumers). Use
|
|
65
|
+
`--a-ui-text-active` / `--a-ui-text-invalid` for form-control state,
|
|
66
|
+
or define a per-primitive `--<comp>-fg-{active,invalid}` token. */
|
|
67
|
+
--a-fg-selected: var(--a-canvas-text-strong);
|
|
68
|
+
--a-fg-disabled: var(--a-canvas-text-disabled);
|
|
69
|
+
--a-fg-inverse: var(--a-canvas-text-inverse);
|
|
70
|
+
|
|
71
|
+
--a-border: var(--a-canvas-border);
|
|
72
|
+
--a-border-subtle: var(--a-canvas-border-subtle);
|
|
73
|
+
--a-border-strong: var(--a-canvas-border-strong);
|
|
74
|
+
--a-border-hover: var(--a-canvas-border-strong);
|
|
75
|
+
/* ADR-0028: --a-border-{active,selected,disabled,invalid} retired (zero
|
|
76
|
+
consumers). Per-primitive `--<comp>-border-{state}` is the override
|
|
77
|
+
surface; `--a-focus-ring` carries focus-active borders for form
|
|
78
|
+
controls. */
|
|
79
|
+
|
|
80
|
+
/* ══════════════════════════════════════════════════════════════
|
|
81
|
+
ACCENT — Interactive, links, focus (source for --a-primary-*)
|
|
82
|
+
══════════════════════════════════════════════════════════════ */
|
|
83
|
+
|
|
84
|
+
/* L2 — family tokens */
|
|
85
|
+
--a-accent-strong: var(--a-accent-50);
|
|
86
|
+
--a-accent: var(--a-accent-50);
|
|
87
|
+
--a-accent-subtle: var(--a-accent-20);
|
|
88
|
+
--a-accent-muted: var(--a-accent-10);
|
|
89
|
+
--a-accent-hover: var(--a-accent-40);
|
|
90
|
+
--a-accent-active: var(--a-accent-60);
|
|
91
|
+
--a-accent-selected: var(--a-accent-50);
|
|
92
|
+
|
|
93
|
+
/* Link family — derived from accent steps deeper than --a-accent-strong
|
|
94
|
+
(step-50) so links clear WCAG AA 4.5:1 on canvas-0/1/2 in both
|
|
95
|
+
schemes. Anchor color in `typography.css` reads --a-link rather
|
|
96
|
+
than --a-accent-strong; emphasis on hover comes from a tighter
|
|
97
|
+
chroma + darker step rather than full saturation jump. */
|
|
98
|
+
/* Polarity matches `--a-accent-N` family wrappers: at fine steps >50,
|
|
99
|
+
`tint` is the lower-L (deeper) primitive and `shade` is the higher-L
|
|
100
|
+
primitive — the naming inverts past the convergence point. Light
|
|
101
|
+
mode wants dark-on-light, so we pick `tint` (deep accent); dark
|
|
102
|
+
mode wants light-on-dark, so we pick `shade` (lifted accent). */
|
|
103
|
+
--a-link: light-dark(var(--a-accent-55-tint), var(--a-accent-55-shade));
|
|
104
|
+
--a-link-hover: light-dark(var(--a-accent-70-tint), var(--a-accent-70-shade));
|
|
105
|
+
--a-link-visited: light-dark(var(--a-accent-65-tint), var(--a-accent-65-shade));
|
|
106
|
+
|
|
107
|
+
/* Accent text on accent solid bg — needs light text on dark-ish accent */
|
|
108
|
+
--a-accent-text-strong: light-dark(var(--a-accent-05-shade), var(--a-accent-05-tint));
|
|
109
|
+
--a-accent-text: light-dark(var(--a-accent-10-shade), var(--a-accent-10-tint));
|
|
110
|
+
--a-accent-text-subtle: light-dark(var(--a-accent-30-shade), var(--a-accent-30-tint));
|
|
111
|
+
--a-accent-text-disabled: light-dark(var(--a-accent-60-shade), var(--a-accent-60-tint));
|
|
112
|
+
|
|
113
|
+
--a-accent-border-subtle: var(--a-accent-30);
|
|
114
|
+
--a-accent-border: var(--a-accent-45);
|
|
115
|
+
--a-accent-border-strong: var(--a-accent-60);
|
|
116
|
+
|
|
117
|
+
/* L3 — Primary (accent-filled — CTA buttons, checked controls) */
|
|
118
|
+
--a-primary-bg: var(--a-accent-strong);
|
|
119
|
+
--a-primary-bg-hover: var(--a-accent-hover);
|
|
120
|
+
--a-primary-bg-active: var(--a-accent-active);
|
|
121
|
+
|
|
122
|
+
--a-primary-fg: var(--a-accent-05-tint);
|
|
123
|
+
--a-primary-fg-hover: var(--a-accent-text-strong);
|
|
124
|
+
|
|
125
|
+
--a-primary-border: var(--a-accent-border);
|
|
126
|
+
--a-primary-border-hover: var(--a-accent-border-strong);
|
|
127
|
+
|
|
128
|
+
/* Legacy shorthand — keep until all components migrate to --a-primary-* */
|
|
129
|
+
--a-primary: var(--a-primary-bg);
|
|
130
|
+
--a-primary-hover: var(--a-primary-bg-hover);
|
|
131
|
+
|
|
132
|
+
/* L3 — Accent surface role matrix (parallel to --a-primary-*, keeps the
|
|
133
|
+
accent family addressable under its own name for components that want
|
|
134
|
+
accent-hued surfaces without the "primary action" connotation). */
|
|
135
|
+
--a-accent-bg: var(--a-primary-bg);
|
|
136
|
+
--a-accent-bg-hover: var(--a-primary-bg-hover);
|
|
137
|
+
--a-accent-bg-active: var(--a-primary-bg-active);
|
|
138
|
+
|
|
139
|
+
--a-accent-fg: var(--a-primary-fg);
|
|
140
|
+
--a-accent-fg-hover: var(--a-primary-fg-hover);
|
|
141
|
+
|
|
142
|
+
/* accent border is already defined at L2 (--a-accent-border*);
|
|
143
|
+
L3 matches L2 since both resolve to the same scheme-aware value. */
|
|
144
|
+
|
|
145
|
+
/* ══════════════════════════════════════════════════════════════
|
|
146
|
+
BRAND — Non-interactive identity color
|
|
147
|
+
══════════════════════════════════════════════════════════════ */
|
|
148
|
+
|
|
149
|
+
/* L2 — family tokens */
|
|
150
|
+
--a-brand-strong: var(--a-brand-70);
|
|
151
|
+
--a-brand: var(--a-brand-50);
|
|
152
|
+
--a-brand-subtle: var(--a-brand-40);
|
|
153
|
+
--a-brand-muted: var(--a-brand-30);
|
|
154
|
+
--a-brand-hover: var(--a-brand-60);
|
|
155
|
+
--a-brand-active: var(--a-brand-60);
|
|
156
|
+
--a-brand-selected: var(--a-brand-40);
|
|
157
|
+
|
|
158
|
+
--a-brand-text-strong: light-dark(var(--a-brand-05-tint), var(--a-brand-05-tint));
|
|
159
|
+
--a-brand-text: light-dark(var(--a-brand-10-tint), var(--a-brand-10-tint));
|
|
160
|
+
--a-brand-text-subtle: light-dark(var(--a-brand-30-tint), var(--a-brand-30-tint));
|
|
161
|
+
--a-brand-text-disabled: light-dark(var(--a-brand-60-shade), var(--a-brand-60-tint));
|
|
162
|
+
|
|
163
|
+
--a-brand-border-subtle: var(--a-brand-30);
|
|
164
|
+
--a-brand-border: var(--a-brand-45);
|
|
165
|
+
--a-brand-border-strong: var(--a-brand-60);
|
|
166
|
+
|
|
167
|
+
/* L3 — Brand surface role matrix */
|
|
168
|
+
--a-brand-bg: var(--a-brand-strong);
|
|
169
|
+
--a-brand-bg-hover: var(--a-brand-hover);
|
|
170
|
+
|
|
171
|
+
--a-brand-fg: var(--a-brand-text-strong);
|
|
172
|
+
--a-brand-fg-hover: var(--a-brand-text-strong);
|
|
173
|
+
|
|
174
|
+
/* L3 border state matrix — rest state is --a-brand-border (L2 above). */
|
|
175
|
+
--a-brand-border-hover: var(--a-brand-border-strong);
|
|
176
|
+
|
|
177
|
+
/* ══════════════════════════════════════════════════════════════
|
|
178
|
+
INFO
|
|
179
|
+
══════════════════════════════════════════════════════════════ */
|
|
180
|
+
|
|
181
|
+
/* L2 — family tokens */
|
|
182
|
+
--a-info-strong: var(--a-info-50);
|
|
183
|
+
--a-info: var(--a-info-50);
|
|
184
|
+
--a-info-subtle: var(--a-info-20);
|
|
185
|
+
--a-info-muted: var(--a-info-10);
|
|
186
|
+
--a-info-hover: var(--a-info-40);
|
|
187
|
+
--a-info-active: var(--a-info-60);
|
|
188
|
+
--a-info-selected: var(--a-info-50);
|
|
189
|
+
|
|
190
|
+
--a-info-text-strong: light-dark(var(--a-info-05-tint), var(--a-info-05-tint));
|
|
191
|
+
--a-info-text: light-dark(var(--a-info-20-shade), var(--a-info-20-tint));
|
|
192
|
+
--a-info-text-subtle: light-dark(var(--a-info-45-shade), var(--a-info-45-tint));
|
|
193
|
+
--a-info-text-disabled: light-dark(var(--a-info-60-shade), var(--a-info-60-tint));
|
|
194
|
+
|
|
195
|
+
--a-info-border-subtle: var(--a-info-30);
|
|
196
|
+
--a-info-border: var(--a-info-40);
|
|
197
|
+
--a-info-border-strong: var(--a-info-60);
|
|
198
|
+
|
|
199
|
+
/* L3 — Info surface role matrix */
|
|
200
|
+
--a-info-bg: var(--a-info-strong);
|
|
201
|
+
--a-info-bg-hover: var(--a-info-hover);
|
|
202
|
+
|
|
203
|
+
--a-info-fg: var(--a-info-text-strong);
|
|
204
|
+
--a-info-fg-hover: var(--a-info-text-strong);
|
|
205
|
+
|
|
206
|
+
/* L3 border state matrix — rest state is --a-info-border (L2 above). */
|
|
207
|
+
--a-info-border-hover: var(--a-info-border-strong);
|
|
208
|
+
|
|
209
|
+
/* ══════════════════════════════════════════════════════════════
|
|
210
|
+
SUCCESS
|
|
211
|
+
══════════════════════════════════════════════════════════════ */
|
|
212
|
+
|
|
213
|
+
/* L2 — family tokens */
|
|
214
|
+
--a-success-strong: var(--a-success-50);
|
|
215
|
+
--a-success: var(--a-success-50);
|
|
216
|
+
--a-success-subtle: var(--a-success-20);
|
|
217
|
+
--a-success-muted: var(--a-success-10);
|
|
218
|
+
--a-success-hover: var(--a-success-40);
|
|
219
|
+
--a-success-active: var(--a-success-60);
|
|
220
|
+
--a-success-selected: var(--a-success-50);
|
|
221
|
+
|
|
222
|
+
--a-success-text-strong: light-dark(var(--a-success-05-tint), var(--a-success-05-tint));
|
|
223
|
+
--a-success-text: light-dark(var(--a-success-20-shade), var(--a-success-20-tint));
|
|
224
|
+
--a-success-text-subtle: light-dark(var(--a-success-45-shade), var(--a-success-45-tint));
|
|
225
|
+
--a-success-text-disabled: light-dark(var(--a-success-60-shade), var(--a-success-60-tint));
|
|
226
|
+
|
|
227
|
+
--a-success-border-subtle: var(--a-success-30);
|
|
228
|
+
--a-success-border: var(--a-success-40);
|
|
229
|
+
--a-success-border-strong: var(--a-success-60);
|
|
230
|
+
|
|
231
|
+
/* L3 — Success surface role matrix */
|
|
232
|
+
--a-success-bg: var(--a-success-strong);
|
|
233
|
+
--a-success-bg-hover: var(--a-success-hover);
|
|
234
|
+
|
|
235
|
+
--a-success-fg: var(--a-success-text-strong);
|
|
236
|
+
--a-success-fg-hover: var(--a-success-text-strong);
|
|
237
|
+
|
|
238
|
+
/* L3 border state matrix — rest state is --a-success-border (L2 above). */
|
|
239
|
+
--a-success-border-hover: var(--a-success-border-strong);
|
|
240
|
+
|
|
241
|
+
/* ══════════════════════════════════════════════════════════════
|
|
242
|
+
WARNING
|
|
243
|
+
══════════════════════════════════════════════════════════════ */
|
|
244
|
+
|
|
245
|
+
/* L2 — family tokens */
|
|
246
|
+
--a-warning-strong: var(--a-warning-50);
|
|
247
|
+
--a-warning: var(--a-warning-50);
|
|
248
|
+
--a-warning-subtle: var(--a-warning-20);
|
|
249
|
+
--a-warning-muted: var(--a-warning-10);
|
|
250
|
+
--a-warning-hover: var(--a-warning-40);
|
|
251
|
+
--a-warning-active: var(--a-warning-60);
|
|
252
|
+
--a-warning-selected: var(--a-warning-50);
|
|
253
|
+
|
|
254
|
+
/* warning is light-colored — text on warning fills should be dark */
|
|
255
|
+
--a-warning-text-strong: light-dark(var(--a-warning-10-shade), var(--a-warning-10-shade));
|
|
256
|
+
--a-warning-text: light-dark(var(--a-warning-20-shade), var(--a-warning-20-tint));
|
|
257
|
+
--a-warning-text-subtle: light-dark(var(--a-warning-45-shade), var(--a-warning-45-tint));
|
|
258
|
+
--a-warning-text-disabled: light-dark(var(--a-warning-60-shade), var(--a-warning-60-tint));
|
|
259
|
+
|
|
260
|
+
--a-warning-border-subtle: var(--a-warning-30);
|
|
261
|
+
--a-warning-border: var(--a-warning-40);
|
|
262
|
+
--a-warning-border-strong: var(--a-warning-60);
|
|
263
|
+
|
|
264
|
+
/* L3 — Warning surface role matrix.
|
|
265
|
+
`--a-warning-bg` deliberately diverges from `--a-warning-strong`
|
|
266
|
+
(still the L2 saturated mid-tone, used as a fg/icon color by
|
|
267
|
+
alert / chart / code / empty-state / agent-trace). Surfaces using
|
|
268
|
+
`-bg` pair it with the dark `--a-warning-fg` (= -text-strong =
|
|
269
|
+
-10-shade); `-strong` + `-fg` gave muddy brown-on-brown chips
|
|
270
|
+
(pre-v0.6.36 user report on <tag-ui variant="warning">).
|
|
271
|
+
`--a-warning-20-tint` is bright in both schemes (lightness math
|
|
272
|
+
is scheme-independent) so warning surfaces keep the same
|
|
273
|
+
caution-tape look in light + dark mode. */
|
|
274
|
+
--a-warning-bg: var(--a-warning-20-tint);
|
|
275
|
+
--a-warning-bg-hover: var(--a-warning-hover);
|
|
276
|
+
|
|
277
|
+
--a-warning-fg: var(--a-warning-text-strong);
|
|
278
|
+
--a-warning-fg-hover: var(--a-warning-text-strong);
|
|
279
|
+
|
|
280
|
+
/* L3 border state matrix — rest state is --a-warning-border (L2 above). */
|
|
281
|
+
--a-warning-border-hover: var(--a-warning-border-strong);
|
|
282
|
+
|
|
283
|
+
/* ══════════════════════════════════════════════════════════════
|
|
284
|
+
DANGER
|
|
285
|
+
══════════════════════════════════════════════════════════════ */
|
|
286
|
+
|
|
287
|
+
/* L2 — family tokens */
|
|
288
|
+
--a-danger-strong: var(--a-danger-50);
|
|
289
|
+
--a-danger: var(--a-danger-50);
|
|
290
|
+
--a-danger-subtle: var(--a-danger-20);
|
|
291
|
+
--a-danger-muted: var(--a-danger-10);
|
|
292
|
+
--a-danger-hover: var(--a-danger-40);
|
|
293
|
+
--a-danger-active: var(--a-danger-60);
|
|
294
|
+
--a-danger-selected: var(--a-danger-50);
|
|
295
|
+
|
|
296
|
+
/* text-strong: light text for use ON danger solid fills (both modes)
|
|
297
|
+
text-default/subtle: dark text for use on neutral surfaces ABOUT danger */
|
|
298
|
+
--a-danger-text-strong: light-dark(var(--a-danger-05-tint), var(--a-danger-05-tint));
|
|
299
|
+
--a-danger-text: light-dark(var(--a-danger-20-shade), var(--a-danger-20-tint));
|
|
300
|
+
--a-danger-text-subtle: light-dark(var(--a-danger-45-shade), var(--a-danger-45-tint));
|
|
301
|
+
--a-danger-text-disabled: light-dark(var(--a-danger-60-shade), var(--a-danger-60-tint));
|
|
302
|
+
|
|
303
|
+
--a-danger-border-subtle: var(--a-danger-30);
|
|
304
|
+
--a-danger-border: var(--a-danger-40);
|
|
305
|
+
--a-danger-border-strong: var(--a-danger-60);
|
|
306
|
+
|
|
307
|
+
/* L3 — Danger surface role matrix */
|
|
308
|
+
--a-danger-bg: var(--a-danger-strong);
|
|
309
|
+
--a-danger-bg-hover: var(--a-danger-hover);
|
|
310
|
+
|
|
311
|
+
--a-danger-fg: var(--a-danger-text-strong);
|
|
312
|
+
--a-danger-fg-hover: var(--a-danger-text-strong);
|
|
313
|
+
|
|
314
|
+
/* L3 border state matrix — rest state is --a-danger-border (L2 above). */
|
|
315
|
+
--a-danger-border-hover: var(--a-danger-border-strong);
|
|
316
|
+
|
|
317
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/* adia:semantic/color — categorical data-visualization palette.
|
|
2
|
+
The 10 --a-data-0..9 series colors + their @property tuning knobs.
|
|
3
|
+
Split out of semantics.css (v0.6.48 reorg, ADR-0035). The @property
|
|
4
|
+
registrations are global, so relocating them here is cascade-inert. */
|
|
5
|
+
|
|
6
|
+
/* ─── Data palette parameterization ───
|
|
7
|
+
All 10 slots live in an analogous arc centered on --a-accent-hue,
|
|
8
|
+
fanning out in alternating cool/warm pairs with a uniform step
|
|
9
|
+
(--a-data-delta). Slot 0 is the anchor (accent hue). Slots 1-8 are
|
|
10
|
+
symmetric pairs at ±1, ±2, ±3, ±4 × delta; slot 9 extends one more
|
|
11
|
+
step on the warm side (+5 × delta).
|
|
12
|
+
|
|
13
|
+
Offsets from --a-accent-hue:
|
|
14
|
+
0: 0 1: −1Δ 2: +1Δ 3: −2Δ 4: +2Δ
|
|
15
|
+
5: −3Δ 6: +3Δ 7: −4Δ 8: +4Δ 9: +5Δ
|
|
16
|
+
|
|
17
|
+
Two axes of differentiation — hue (via delta) AND lightness (via a
|
|
18
|
+
3-phase rotation keyed on N mod 3). Under CVD (deuteranopia/protanopia)
|
|
19
|
+
the red-green axis collapses and same-L neighbors in the green-teal
|
|
20
|
+
zone would converge; the L rotation rescues them by ensuring any three
|
|
21
|
+
consecutive slots have three different L values.
|
|
22
|
+
|
|
23
|
+
Tuning knobs:
|
|
24
|
+
--a-data-delta : hue step between consecutive pairs (default 22)
|
|
25
|
+
--a-data-l-spread : ±L offset for phases 1 and 2 (default 0.07)
|
|
26
|
+
--a-data-l-light : base L for phase-0 slots in light mode
|
|
27
|
+
--a-data-l-dark : base L for phase-0 slots in dark mode
|
|
28
|
+
--a-data-c : uniform chroma across all slots
|
|
29
|
+
--a-data-N-hue : pin an individual slot's hue absolutely
|
|
30
|
+
|
|
31
|
+
At default accent=225, delta=22: slot 7 lands at 137 (8° from success
|
|
32
|
+
hue 145) and slot 2 at 247 (3° from info hue 250). The L rotation
|
|
33
|
+
places slot 2 in phase 2 (deeper) and slot 7 in phase 1 (lighter),
|
|
34
|
+
so neither reads as its respective status token. */
|
|
35
|
+
@property --a-data-l-light { syntax: "<number>"; inherits: true; initial-value: 0.55; }
|
|
36
|
+
@property --a-data-l-dark { syntax: "<number>"; inherits: true; initial-value: 0.72; }
|
|
37
|
+
@property --a-data-l-spread { syntax: "<number>"; inherits: true; initial-value: 0.10; }
|
|
38
|
+
@property --a-data-c { syntax: "<number>"; inherits: true; initial-value: 0.16; }
|
|
39
|
+
@property --a-data-delta { syntax: "<number>"; inherits: true; initial-value: 22; }
|
|
40
|
+
@property --a-data-0-hue { syntax: "<number>"; inherits: true; initial-value: 225; }
|
|
41
|
+
@property --a-data-1-hue { syntax: "<number>"; inherits: true; initial-value: 203; }
|
|
42
|
+
@property --a-data-2-hue { syntax: "<number>"; inherits: true; initial-value: 247; }
|
|
43
|
+
@property --a-data-3-hue { syntax: "<number>"; inherits: true; initial-value: 181; }
|
|
44
|
+
@property --a-data-4-hue { syntax: "<number>"; inherits: true; initial-value: 269; }
|
|
45
|
+
@property --a-data-5-hue { syntax: "<number>"; inherits: true; initial-value: 159; }
|
|
46
|
+
@property --a-data-6-hue { syntax: "<number>"; inherits: true; initial-value: 291; }
|
|
47
|
+
@property --a-data-7-hue { syntax: "<number>"; inherits: true; initial-value: 137; }
|
|
48
|
+
@property --a-data-8-hue { syntax: "<number>"; inherits: true; initial-value: 313; }
|
|
49
|
+
@property --a-data-9-hue { syntax: "<number>"; inherits: true; initial-value: 335; }
|
|
50
|
+
|
|
51
|
+
:root, theme-ui, [data-theme] {
|
|
52
|
+
/* ══════════════════════════════════════════════════════════════
|
|
53
|
+
DATA PALETTE — 10 categorical series colors for charts
|
|
54
|
+
|
|
55
|
+
All 10 slots are computed as offsets from --a-accent-hue via a
|
|
56
|
+
single --a-data-delta step, so retuning accent or delta shifts the
|
|
57
|
+
whole palette coherently. Slot 0 is the anchor (accent hue); slots
|
|
58
|
+
1-8 alternate cool/warm at ±1..±4 × delta; slot 9 extends to +5Δ.
|
|
59
|
+
|
|
60
|
+
Override --a-data-l-light / --a-data-l-dark / --a-data-c to retune
|
|
61
|
+
the palette's tone, --a-data-delta to squeeze or spread the arc,
|
|
62
|
+
or any --a-data-N-hue to pin an individual slot.
|
|
63
|
+
══════════════════════════════════════════════════════════════ */
|
|
64
|
+
|
|
65
|
+
--a-data-0-hue: var(--a-accent-hue);
|
|
66
|
+
--a-data-1-hue: calc(var(--a-accent-hue) - var(--a-data-delta) * 1);
|
|
67
|
+
--a-data-2-hue: calc(var(--a-accent-hue) + var(--a-data-delta) * 1);
|
|
68
|
+
--a-data-3-hue: calc(var(--a-accent-hue) - var(--a-data-delta) * 2);
|
|
69
|
+
--a-data-4-hue: calc(var(--a-accent-hue) + var(--a-data-delta) * 2);
|
|
70
|
+
--a-data-5-hue: calc(var(--a-accent-hue) - var(--a-data-delta) * 3);
|
|
71
|
+
--a-data-6-hue: calc(var(--a-accent-hue) + var(--a-data-delta) * 3);
|
|
72
|
+
--a-data-7-hue: calc(var(--a-accent-hue) - var(--a-data-delta) * 4);
|
|
73
|
+
--a-data-8-hue: calc(var(--a-accent-hue) + var(--a-data-delta) * 4);
|
|
74
|
+
--a-data-9-hue: calc(var(--a-accent-hue) + var(--a-data-delta) * 5);
|
|
75
|
+
|
|
76
|
+
/* Three L phases — each slot's phase is (N mod 3). Two consecutive
|
|
77
|
+
slots always differ in both hue AND lightness, and any three
|
|
78
|
+
consecutive slots span all three L values, so no CVD-collapse
|
|
79
|
+
pocket of same-L slots exists in the green-teal confusion zone. */
|
|
80
|
+
--_data-l-light-0: var(--a-data-l-light);
|
|
81
|
+
--_data-l-light-1: calc(var(--a-data-l-light) + var(--a-data-l-spread));
|
|
82
|
+
--_data-l-light-2: calc(var(--a-data-l-light) - var(--a-data-l-spread));
|
|
83
|
+
--_data-l-dark-0: var(--a-data-l-dark);
|
|
84
|
+
--_data-l-dark-1: calc(var(--a-data-l-dark) + var(--a-data-l-spread));
|
|
85
|
+
--_data-l-dark-2: calc(var(--a-data-l-dark) - var(--a-data-l-spread));
|
|
86
|
+
|
|
87
|
+
/* slot N uses L-phase (N mod 3): 0/3/6/9 → phase 0; 1/4/7 → phase 1; 2/5/8 → phase 2 */
|
|
88
|
+
--a-data-0: light-dark(
|
|
89
|
+
oklch(var(--_data-l-light-0) var(--a-data-c) var(--a-data-0-hue)),
|
|
90
|
+
oklch(var(--_data-l-dark-0) var(--a-data-c) var(--a-data-0-hue))
|
|
91
|
+
);
|
|
92
|
+
--a-data-1: light-dark(
|
|
93
|
+
oklch(var(--_data-l-light-1) var(--a-data-c) var(--a-data-1-hue)),
|
|
94
|
+
oklch(var(--_data-l-dark-1) var(--a-data-c) var(--a-data-1-hue))
|
|
95
|
+
);
|
|
96
|
+
--a-data-2: light-dark(
|
|
97
|
+
oklch(var(--_data-l-light-2) var(--a-data-c) var(--a-data-2-hue)),
|
|
98
|
+
oklch(var(--_data-l-dark-2) var(--a-data-c) var(--a-data-2-hue))
|
|
99
|
+
);
|
|
100
|
+
--a-data-3: light-dark(
|
|
101
|
+
oklch(var(--_data-l-light-0) var(--a-data-c) var(--a-data-3-hue)),
|
|
102
|
+
oklch(var(--_data-l-dark-0) var(--a-data-c) var(--a-data-3-hue))
|
|
103
|
+
);
|
|
104
|
+
--a-data-4: light-dark(
|
|
105
|
+
oklch(var(--_data-l-light-1) var(--a-data-c) var(--a-data-4-hue)),
|
|
106
|
+
oklch(var(--_data-l-dark-1) var(--a-data-c) var(--a-data-4-hue))
|
|
107
|
+
);
|
|
108
|
+
--a-data-5: light-dark(
|
|
109
|
+
oklch(var(--_data-l-light-2) var(--a-data-c) var(--a-data-5-hue)),
|
|
110
|
+
oklch(var(--_data-l-dark-2) var(--a-data-c) var(--a-data-5-hue))
|
|
111
|
+
);
|
|
112
|
+
--a-data-6: light-dark(
|
|
113
|
+
oklch(var(--_data-l-light-0) var(--a-data-c) var(--a-data-6-hue)),
|
|
114
|
+
oklch(var(--_data-l-dark-0) var(--a-data-c) var(--a-data-6-hue))
|
|
115
|
+
);
|
|
116
|
+
--a-data-7: light-dark(
|
|
117
|
+
oklch(var(--_data-l-light-1) var(--a-data-c) var(--a-data-7-hue)),
|
|
118
|
+
oklch(var(--_data-l-dark-1) var(--a-data-c) var(--a-data-7-hue))
|
|
119
|
+
);
|
|
120
|
+
--a-data-8: light-dark(
|
|
121
|
+
oklch(var(--_data-l-light-2) var(--a-data-c) var(--a-data-8-hue)),
|
|
122
|
+
oklch(var(--_data-l-dark-2) var(--a-data-c) var(--a-data-8-hue))
|
|
123
|
+
);
|
|
124
|
+
--a-data-9: light-dark(
|
|
125
|
+
oklch(var(--_data-l-light-0) var(--a-data-c) var(--a-data-9-hue)),
|
|
126
|
+
oklch(var(--_data-l-dark-0) var(--a-data-c) var(--a-data-9-hue))
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/* adia:semantic/color — semantic feature surfaces.
|
|
2
|
+
FOCUS (canonical ring recipe), UI/FIELD (form input surfaces),
|
|
3
|
+
HIGHLIGHT & SELECTION, and CHROME (neutral overlays on arbitrary
|
|
4
|
+
backgrounds). Contiguous in the original source; split out of
|
|
5
|
+
semantics.css (v0.6.48 reorg, ADR-0035). */
|
|
6
|
+
|
|
7
|
+
:root, theme-ui, [data-theme] {
|
|
8
|
+
/* ══════════════════════════════════════════════════════════════
|
|
9
|
+
FOCUS — canonical ring recipe shared by all form controls
|
|
10
|
+
══════════════════════════════════════════════════════════════
|
|
11
|
+
|
|
12
|
+
The ring is a dual-layer box-shadow: an inner "gap" the canvas
|
|
13
|
+
color wide, then an outer ring the accent color wide. Tuning any
|
|
14
|
+
of the scalar tokens below cascades to every component that
|
|
15
|
+
consumes `--a-focus-ring`:
|
|
16
|
+
|
|
17
|
+
--a-focus-width — outer ring thickness
|
|
18
|
+
--a-focus-offset — inner gap thickness (distance from element
|
|
19
|
+
edge to ring)
|
|
20
|
+
--a-focus-color — ring color (default: accent-strong)
|
|
21
|
+
--a-focus-bg — gap color (default: the surface under the
|
|
22
|
+
control; normally matches --a-canvas-0)
|
|
23
|
+
|
|
24
|
+
Invalid / error state uses the same geometry but a danger color
|
|
25
|
+
via `--a-focus-ring-invalid`.
|
|
26
|
+
|
|
27
|
+
Components must NOT hardcode 2px / 4px / accent hex in their CSS;
|
|
28
|
+
consume either `--a-focus-ring` directly or an L3 alias like
|
|
29
|
+
`--{component}-focus-ring: var(--a-focus-ring)` (the more common
|
|
30
|
+
pattern — gives per-component override headroom without breaking
|
|
31
|
+
the canonical default). */
|
|
32
|
+
|
|
33
|
+
--a-focus-color: var(--a-accent-strong);
|
|
34
|
+
--a-focus-color-invalid: var(--a-danger);
|
|
35
|
+
--a-focus-width: 2px;
|
|
36
|
+
--a-focus-offset: 2px;
|
|
37
|
+
--a-focus-bg: var(--a-canvas-0);
|
|
38
|
+
|
|
39
|
+
--a-focus-ring-shadow: 0 0 0 var(--a-focus-offset) var(--a-focus-bg),
|
|
40
|
+
0 0 0 calc(var(--a-focus-offset) + var(--a-focus-width)) var(--a-focus-color);
|
|
41
|
+
--a-focus-ring-shadow-invalid: 0 0 0 var(--a-focus-offset) var(--a-focus-bg),
|
|
42
|
+
0 0 0 calc(var(--a-focus-offset) + var(--a-focus-width)) var(--a-focus-color-invalid);
|
|
43
|
+
|
|
44
|
+
/* L3 — what components consume. */
|
|
45
|
+
--a-ring: var(--a-focus-color);
|
|
46
|
+
--a-ring-invalid: var(--a-focus-color-invalid);
|
|
47
|
+
--a-focus-ring: var(--a-focus-ring-shadow);
|
|
48
|
+
--a-focus-ring-invalid: var(--a-focus-ring-shadow-invalid);
|
|
49
|
+
|
|
50
|
+
/* ══════════════════════════════════════════════════════════════
|
|
51
|
+
UI (FIELD) — Form input surfaces
|
|
52
|
+
══════════════════════════════════════════════════════════════ */
|
|
53
|
+
|
|
54
|
+
--a-ui-bg: var(--a-canvas-0-scrim);
|
|
55
|
+
--a-ui-bg-hover: var(--a-canvas-0-scrim);
|
|
56
|
+
--a-ui-bg-active: var(--a-canvas-0);
|
|
57
|
+
--a-ui-bg-selected: var(--a-canvas-0-scrim);
|
|
58
|
+
--a-ui-bg-disabled: var(--a-canvas-1);
|
|
59
|
+
--a-ui-bg-invalid: var(--a-danger-muted);
|
|
60
|
+
|
|
61
|
+
--a-ui-text: var(--a-fg-strong);
|
|
62
|
+
--a-ui-text-hover: var(--a-fg-strong);
|
|
63
|
+
--a-ui-text-active: var(--a-fg-strong);
|
|
64
|
+
--a-ui-text-selected: var(--a-fg-strong);
|
|
65
|
+
--a-ui-text-placeholder: var(--a-fg-muted);
|
|
66
|
+
--a-ui-text-subtle: var(--a-fg-subtle);
|
|
67
|
+
--a-ui-text-muted: var(--a-fg-muted);
|
|
68
|
+
--a-ui-text-disabled: var(--a-fg-disabled);
|
|
69
|
+
--a-ui-text-invalid: var(--a-danger-text);
|
|
70
|
+
|
|
71
|
+
--a-ui-border: light-dark(var(--a-neutral-85-shade), var(--a-neutral-85-tint));
|
|
72
|
+
--a-ui-border-hover: light-dark(var(--a-neutral-75-shade), var(--a-neutral-75-tint));
|
|
73
|
+
--a-ui-border-active: var(--a-accent-50);
|
|
74
|
+
--a-ui-border-selected: var(--a-accent-50);
|
|
75
|
+
--a-ui-border-disabled: var(--a-neutral-30);
|
|
76
|
+
--a-ui-border-invalid: var(--a-danger-50);
|
|
77
|
+
|
|
78
|
+
--a-ui-caret: var(--a-accent-50);
|
|
79
|
+
|
|
80
|
+
/* ══════════════════════════════════════════════════════════════
|
|
81
|
+
HIGHLIGHT & SELECTION — Text-level emphasis
|
|
82
|
+
══════════════════════════════════════════════════════════════ */
|
|
83
|
+
|
|
84
|
+
--a-highlight-strong: var(--a-warning-30);
|
|
85
|
+
--a-highlight: var(--a-warning-20);
|
|
86
|
+
--a-highlight-subtle: var(--a-warning-10);
|
|
87
|
+
--a-highlight-text: var(--a-fg-strong);
|
|
88
|
+
|
|
89
|
+
--a-selection-bg: var(--a-accent-20);
|
|
90
|
+
--a-selection-text: var(--a-fg-strong);
|
|
91
|
+
--a-selection-radius: var(--a-space-1);
|
|
92
|
+
|
|
93
|
+
/* ══════════════════════════════════════════════════════════════
|
|
94
|
+
CHROME — Neutral overlays on arbitrary-color surfaces
|
|
95
|
+
Theme-stable near-opaque white/black for UI chrome drawn on
|
|
96
|
+
top of unpredictable content (color-picker thumbs, video
|
|
97
|
+
controls, modal scrims). Do NOT theme-tint — chrome must read
|
|
98
|
+
equally against red / blue / dark / light underlays.
|
|
99
|
+
══════════════════════════════════════════════════════════════ */
|
|
100
|
+
|
|
101
|
+
--a-chrome-light: var(--a-neutral-0-tint);
|
|
102
|
+
--a-chrome-dark: var(--a-neutral-0-shade);
|
|
103
|
+
--a-chrome-border: var(--a-chrome-light);
|
|
104
|
+
--a-chrome-ring-subtle: oklch(0 0 0 / 0.3);
|
|
105
|
+
--a-chrome-shadow-soft: oklch(0 0 0 / 0.2);
|
|
106
|
+
--a-chrome-backdrop: oklch(0 0 0 / 0.5);
|
|
107
|
+
/* §230-bundle (v0.5.9): canonical badge-on-chrome pair — light text +
|
|
108
|
+
dark semi-transparent surface. Used by primitives that overlay text
|
|
109
|
+
on unpredictable backgrounds (swatch badges, video controls, color
|
|
110
|
+
readouts). Must read against red / blue / dark / light underlays. */
|
|
111
|
+
--a-chrome-fg: var(--a-chrome-light);
|
|
112
|
+
--a-chrome-bg: oklch(0 0 0 / 0.4);
|
|
113
|
+
|
|
114
|
+
}
|