@adia-ai/web-components 0.8.47 → 0.8.50

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 (68) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/MIGRATION.md +136 -0
  3. package/components/card/card.css +25 -2
  4. package/components/chart/chart.a2ui.json +1 -1
  5. package/components/chart/chart.class.js +41 -10
  6. package/components/chart/chart.d.ts +1 -1
  7. package/components/chart/chart.yaml +6 -3
  8. package/components/input/input.a2ui.json +2 -2
  9. package/components/input/input.css +45 -16
  10. package/components/input/input.yaml +11 -9
  11. package/components/link/link.css +3 -2
  12. package/components/richtext/richtext.css +2 -2
  13. package/components/search/search.a2ui.json +1 -1
  14. package/components/search/search.class.js +43 -0
  15. package/components/search/search.css +28 -0
  16. package/components/search/search.yaml +4 -1
  17. package/components/select/select.class.js +4 -1
  18. package/components/select/select.css +13 -0
  19. package/components/stat/stat.a2ui.json +30 -3
  20. package/components/stat/stat.css +88 -0
  21. package/components/stat/stat.d.ts +2 -2
  22. package/components/stat/stat.yaml +99 -6
  23. package/components/table/table.a2ui.json +5 -2
  24. package/components/table/table.class.js +36 -1
  25. package/components/table/table.d.ts +2 -2
  26. package/components/table/table.yaml +17 -1
  27. package/components/table-footer/table-footer.a2ui.json +20 -2
  28. package/components/table-footer/table-footer.class.js +94 -8
  29. package/components/table-footer/table-footer.d.ts +6 -2
  30. package/components/table-footer/table-footer.yaml +57 -6
  31. package/components/table-toolbar/table-toolbar.a2ui.json +28 -2
  32. package/components/table-toolbar/table-toolbar.class.js +69 -2
  33. package/components/table-toolbar/table-toolbar.css +36 -2
  34. package/components/table-toolbar/table-toolbar.d.ts +8 -2
  35. package/components/table-toolbar/table-toolbar.examples.md +6 -4
  36. package/components/table-toolbar/table-toolbar.yaml +140 -26
  37. package/components/theme-provider/theme-provider.a2ui.json +3 -5
  38. package/components/theme-provider/theme-provider.class.js +9 -30
  39. package/components/theme-provider/theme-provider.d.ts +3 -5
  40. package/components/theme-provider/theme-provider.yaml +4 -8
  41. package/core/element.js +16 -3
  42. package/custom-elements.json +52 -10
  43. package/dist/host.min.css +1 -1
  44. package/dist/host.sheet.js +1 -1
  45. package/dist/theme-provider.min.js +8 -8
  46. package/dist/themes.min.css +1 -1
  47. package/dist/themes.sheet.js +1 -1
  48. package/dist/web-components.min.css +1 -1
  49. package/dist/web-components.min.js +70 -69
  50. package/dist/web-components.sheet.js +1 -1
  51. package/index.css +1 -2
  52. package/package.json +1 -1
  53. package/styles/README.md +1 -1
  54. package/styles/api/sizing.css +1 -1
  55. package/styles/colors/material-static.css +34 -12
  56. package/styles/host.css +1 -4
  57. package/styles/index.css +2 -2
  58. package/styles/scale.css +19 -26
  59. package/styles/themes.css +2678 -2
  60. package/styles/type/elements.css +1 -0
  61. package/styles/type/roles.css +3 -3
  62. package/styles/typography.css +6 -5
  63. package/dist/prose.min.css +0 -1
  64. package/dist/prose.sheet.js +0 -11
  65. package/dist/verse.min.css +0 -1
  66. package/dist/verse.sheet.js +0 -11
  67. package/styles/prose.css +0 -211
  68. package/styles/verse.css +0 -151
package/index.css CHANGED
@@ -13,8 +13,7 @@
13
13
  * @adia-ai/web-components/styles/index.css (primitives only)
14
14
  * @adia-ai/web-components/styles/tokens.css (tokens only)
15
15
  * @adia-ai/web-components/styles/themes.css (optional — named theme presets)
16
- * @adia-ai/web-components/styles/prose.css (optional — prose context)
17
- * @adia-ai/web-components/styles/verse.css (optional — compact density)
16
+ * @adia-ai/web-components/styles/scale.css (optional — [scale] sizing register)
18
17
  */
19
18
 
20
19
  @import "./styles/host.css";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adia-ai/web-components",
3
- "version": "0.8.47",
3
+ "version": "0.8.50",
4
4
  "description": "AdiaUI web components \u2014 vanilla custom elements. A2UI runtime (renderer, registry, streams, wiring) lives in @adia-ai/a2ui.",
5
5
  "type": "module",
6
6
  "types": "./index.d.ts",
package/styles/README.md CHANGED
@@ -297,7 +297,7 @@ styles/
297
297
  │ └── layout.css # [hidden] [nomargin] [grow]
298
298
 
299
299
  ├── themes.css # CONTEXT: 8 named themes + light/dark scheme overrides ([theme])
300
- ├── prose.css # CONTEXT: opt-in article typography ([prose])
300
+ ├── scale.css # CONTEXT: six-tier ancestor sizing register ([scale])
301
301
  ├── resets.css # global RESET (box-sizing, scrollbar, focus, normalize)
302
302
  ├── fonts.css # @font-face declarations + font-family primitives
303
303
  ├── components.css # per-component @import barrel
@@ -172,7 +172,7 @@
172
172
 
173
173
  Sets --a-gap-self, a NON-inheriting token, so an explicit gap on a
174
174
  parent does NOT leak into nested layout primitives. This is the
175
- counterpart to --a-gap, the AMBIENT gap set by [size]/[prose]/:root
175
+ counterpart to --a-gap, the AMBIENT gap set by [size]/[scale]/:root
176
176
  (which DOES inherit — `<div size="sm">` shifts the whole subtree).
177
177
  Gap-reading components resolve `var(--a-gap-self, var(--a-gap))`:
178
178
  explicit-if-present, else fall through to the inherited ambient.
@@ -28,18 +28,40 @@
28
28
  (host.css) puts `context` (where [theme="x"] rules live) after
29
29
  `tokens` (this file's :root block) in the cascade-layer order, and
30
30
  layer order always wins over selector specificity — so a themed
31
- ancestor's raw-stop override wins, and every semantic role above that
32
- reads `var(--md-sys-color-{family}-NNN)` re-resolves through it at
33
- each descendant, by ordinary CSS custom-property inheritance (not
34
- fixed to its :root declaration site). Verified two ways: the cascade
35
- mechanics above, and empirically (Playwright, file:// harness) —
36
- `--md-sys-color-primary-600` measured `oklch(0.5493 0.1051 226.08)`
37
- at :root vs `oklch(0.5493 0.0946 216.96)` under `[theme="atlas"]`,
38
- the atlas-rotated hue, not the default. info/success/warning/danger
39
- are correctly left unthemed (deliberate status meaning stays
40
- constant across themes, themes.css's own header). Only
41
- `--a-brand-hue`/`-radius-k`/`-density`/`-shadow-intensity` were ever
42
- the OTHER stated-live knobs; that part of the original claim stands.
31
+ ancestor's raw-stop override wins there. Verified empirically
32
+ (Playwright, file:// harness) — `--md-sys-color-primary-600` measured
33
+ `oklch(0.5493 0.1051 226.08)` at :root vs `oklch(0.5493 0.0946
34
+ 216.96)` under `[theme="atlas"]`, the atlas-rotated hue, not the
35
+ default.
36
+
37
+ CORRECTION #2 (gh#1863, 2026-08-22) the "every semantic role...
38
+ re-resolves through it at each descendant, by ordinary CSS
39
+ custom-property inheritance" claim directly above was WRONG for a
40
+ descendant-scoped `[theme]` and has been removed; the raw-stop
41
+ measurement above never actually tested an alias. Per CSS
42
+ custom-property semantics, `var()` inside a property's value
43
+ substitutes at computed-value time on the element where THAT property
44
+ is declared — every alias in this file is declared once, at `:root`,
45
+ so it substitutes using `:root`'s own raw stops and that computed
46
+ value is what inherits downward as a plain value, not a live
47
+ reference. `[theme]` on `:root`/`<html>` itself works (root is also
48
+ the alias's declaration site, so the raw-stop override and the alias
49
+ substitution happen at the same element) — but `[theme]` on a
50
+ DESCENDANT (the documented, shipped `<theme-provider theme="X">`
51
+ nested-scoping shape, components/theme-provider/) only rotates the
52
+ raw stop there; every alias stayed pinned to the default theme,
53
+ silently, because no rule redeclares the alias itself at that
54
+ descendant. Confirmed both ways (Playwright, file:// harness,
55
+ `--md-sys-color-primary` vs `-primary-600` under root- and
56
+ descendant-scoped `[theme="atlas"]`) and closed by generating a
57
+ themed redeclaration of every alias into each of themes.css's 12
58
+ `[theme="X"]` blocks (`scripts/build/generate-theme-aliases.mjs`,
59
+ `npm run check:theme-scoped-alias` — the regression gate).
60
+ info/success/warning/danger are correctly left unthemed (deliberate —
61
+ status meaning stays constant across themes, themes.css's own
62
+ header). Only `--a-brand-hue`/`-radius-k`/`-density`/
63
+ `-shadow-intensity` were ever the OTHER stated-live knobs; that part
64
+ of the original 2026-07-14 claim stands.
43
65
 
44
66
  NOT touched by this replacement: `--a-brand-*` (no adia.css palette
45
67
  to source from), `--a-link*`/`--a-focus-*`/`--a-data-*` (no direct
package/styles/host.css CHANGED
@@ -21,10 +21,7 @@
21
21
 
22
22
  ── Opt-in add-ons (link separately when wanted) ─────────────────────
23
23
  styles/themes.css the [theme] preset switcher (@layer context)
24
- styles/prose.css the [prose] content context (@layer context)
25
- styles/verse.css the [verse] compact register (opt-in density)
26
- styles/scale.css the [scale] six-tier register — supersedes
27
- [verse]/[prose] (@layer context)
24
+ styles/scale.css the [scale] six-tier sizing register (@layer context)
28
25
 
29
26
  See ADR-0035 (foundation reorg) + ADR-0038 (cascade layers). */
30
27
 
package/styles/index.css CHANGED
@@ -7,8 +7,8 @@
7
7
  <link rel="stylesheet" href="@adia-ai/web-components/styles/host.css" />
8
8
  <link rel="stylesheet" href="@adia-ai/web-components/styles/index.css" />
9
9
 
10
- Opt-in layers (theme presets, prose context, verse density) are linked
11
- separately — styles/themes.css, styles/prose.css, styles/verse.css.
10
+ Opt-in layers (theme presets, the [scale] sizing register) are linked
11
+ separately — styles/themes.css, styles/scale.css.
12
12
 
13
13
  Composite-element CSS (chat-shell, editor-shell, admin-shell, etc.)
14
14
  lives in @adia-ai/web-modules — link its barrel separately:
package/styles/scale.css CHANGED
@@ -5,11 +5,11 @@
5
5
  lookup (never a multiplier — multipliers drift height/font/icon
6
6
  off coherent rows; agent-ui ADR-0038 precedent):
7
7
 
8
- [scale="ui-sm"] dense product UI (≡ legacy [verse])
8
+ [scale="ui-sm"] dense product UI
9
9
  [scale="ui-md"] the base register (≡ :root defaults)
10
10
  [scale="ui-lg"] touch/presentation UI
11
11
  [scale="content-sm"] compact article
12
- [scale="content-md"] long-form default (≡ legacy [prose])
12
+ [scale="content-md"] long-form default
13
13
  [scale="content-lg"] hero / marketing
14
14
 
15
15
  Control-band overlap: content-sm ≡ ui-md and content-md ≡ ui-lg
@@ -20,25 +20,19 @@
20
20
  the full *-sm/md/lg families, so the universal [size] attribute
21
21
  keeps working on and below a scaled element. Tokens compute at
22
22
  their declaration site, so each tier RE-DECLARES every pointer it
23
- shifts (the [verse]/[prose] gotcha), and carries explicit
24
- [size] tier rules — this context layer shadows the utilities-layer
25
- global [size] rules for any token the tier pins.
26
-
27
- Selector shape: [scale][scale="X"] (0-2-0) so a tier
28
- deterministically beats the legacy [verse]/[prose] attributes
29
- (0-1-0) regardless of stylesheet adoption order. Never a bare
30
- [scale] selector — heatmap-ui reflects scale="linear|log" and
31
- legacy theme-provider reflects scale="verse|prose".
32
-
33
- [verse]/[prose] are DEPRECATED in favor of ui-sm / content-md and
34
- are removed at v1.0. Do not combine verse|prose with [scale] on
35
- one element.
36
-
37
- ui-sm, ui-md and content-md are byte-derived from verse.css,
38
- :root and prose.css respectively — an unscaled page and a
39
- [scale="ui-md"] page render identically. ui-lg, content-sm and
40
- content-lg are DEDUCED rows (one-step shifts of their neighbors)
41
- — proposed, tune to taste.
23
+ shifts, and carries explicit [size] tier rules this context
24
+ layer shadows the utilities-layer global [size] rules for any
25
+ token the tier pins.
26
+
27
+ Selector shape: [scale][scale="X"] (0-2-0). Never a bare [scale]
28
+ selector heatmap-ui reflects scale="linear|log", a different
29
+ vocabulary on the same attribute name.
30
+
31
+ ui-sm, ui-md and content-md were originally byte-derived from the
32
+ now-removed compact-density and long-form-content sheets (gh#1885) —
33
+ an unscaled page and a [scale="ui-md"] page render identically.
34
+ ui-lg, content-sm and content-lg are DEDUCED rows (one-step shifts
35
+ of their neighbors) — proposed, tune to taste.
42
36
 
43
37
  --a-density is orthogonal and composes: every spacing value rides
44
38
  the --a-space-* rungs and every control row multiplies
@@ -302,7 +296,7 @@
302
296
  --a-size-lg: calc(var(--a-density) * 2.75rem); /* 44px */
303
297
  --a-size: var(--a-size-md);
304
298
 
305
- /* prose type register (prose.css byte-values) */
299
+ /* content-md type register (byte-values from the removed prose sheet, gh#1885) */
306
300
  --a-display-sm: clamp(24px, 20px + 1.5vw, 36px);
307
301
  --a-display-md: clamp(32px, 24px + 3vw, 56px);
308
302
  --a-display-lg: clamp(40px, 32px + 4vw, 80px);
@@ -644,10 +638,9 @@
644
638
  the base row). */
645
639
 
646
640
  /* ═══════════════ Content-band flow enhancements ═══════════════
647
- Ported from prose.css so every content tier gets them.
648
- [scale^="content-"] is value-prefixed — cannot collide with
649
- heatmap-ui's scale="linear|log" or legacy theme-provider
650
- scale="verse|prose". */
641
+ Ported from the removed prose sheet (gh#1885) so every content
642
+ tier gets them. [scale^="content-"] is value-prefixed — cannot
643
+ collide with heatmap-ui's scale="linear|log". */
651
644
  [scale^="content-"] > :is(p, ul, ol, blockquote, pre, table, dl) {
652
645
  max-width: var(--prose-max-width);
653
646
  }