@adia-ai/web-components 0.7.3 → 0.7.5

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 (137) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/components/accordion/accordion.css +2 -2
  3. package/components/action-list/action-list.css +2 -2
  4. package/components/agent-artifact/agent-artifact.css +31 -31
  5. package/components/agent-feedback-bar/agent-feedback-bar.css +10 -10
  6. package/components/agent-questions/agent-questions.css +59 -57
  7. package/components/agent-reasoning/agent-reasoning.css +54 -54
  8. package/components/agent-suggestions/agent-suggestions.css +4 -4
  9. package/components/agent-trace/agent-trace.css +53 -53
  10. package/components/alert/alert.css +53 -53
  11. package/components/avatar/avatar.css +27 -27
  12. package/components/badge/badge.css +56 -53
  13. package/components/block/block.css +16 -16
  14. package/components/blockquote/blockquote.css +16 -16
  15. package/components/breadcrumb/breadcrumb.css +23 -23
  16. package/components/button/button.css +123 -101
  17. package/components/calendar-grid/calendar-grid.css +95 -92
  18. package/components/calendar-picker/calendar-picker.css +141 -139
  19. package/components/canvas/canvas.css +12 -12
  20. package/components/card/card.css +83 -83
  21. package/components/chart/chart.css +218 -218
  22. package/components/chart-legend/chart-legend.css +26 -26
  23. package/components/check/check.css +40 -40
  24. package/components/code/code.css +125 -125
  25. package/components/col/col.css +15 -15
  26. package/components/color-picker/color-picker.css +55 -55
  27. package/components/combobox/combobox.css +64 -62
  28. package/components/command/command.css +91 -91
  29. package/components/context-menu/context-menu.css +1 -1
  30. package/components/date-range-picker/date-range-picker.css +59 -59
  31. package/components/datetime-picker/datetime-picker.css +25 -25
  32. package/components/demo-toggle/demo-toggle.css +27 -27
  33. package/components/description-list/description-list.css +18 -18
  34. package/components/divider/divider.css +24 -24
  35. package/components/embed/embed.css +6 -6
  36. package/components/empty-state/empty-state.css +29 -29
  37. package/components/feed/feed.css +12 -12
  38. package/components/field/field.css +28 -28
  39. package/components/field/field.test.js +2 -2
  40. package/components/fields/fields.css +5 -5
  41. package/components/grid/grid.a2ui.json +10 -0
  42. package/components/grid/grid.css +23 -5
  43. package/components/grid/grid.d.ts +4 -0
  44. package/components/grid/grid.yaml +13 -0
  45. package/components/heatmap/heatmap.css +61 -61
  46. package/components/icon/icon.css +12 -12
  47. package/components/image/image.css +14 -14
  48. package/components/inline-edit/inline-edit.css +16 -16
  49. package/components/inline-message/inline-message.css +16 -16
  50. package/components/input/input.css +69 -66
  51. package/components/inspector/inspector.css +6 -6
  52. package/components/integration-card/integration-card.css +41 -41
  53. package/components/integration-card/integration-card.test.js +4 -4
  54. package/components/kbd/kbd.css +47 -40
  55. package/components/link/link.css +12 -12
  56. package/components/list/list.css +8 -8
  57. package/components/list-window/list-window.css +10 -10
  58. package/components/loading-overlay/loading-overlay.css +17 -18
  59. package/components/loading-overlay/loading-overlay.test.js +8 -8
  60. package/components/mark/mark.css +16 -16
  61. package/components/menu/menu.css +9 -9
  62. package/components/modal/modal.class.js +5 -9
  63. package/components/modal/modal.css +43 -43
  64. package/components/nav/nav.css +40 -40
  65. package/components/nav-group/nav-group.css +54 -54
  66. package/components/nav-item/nav-item.css +44 -44
  67. package/components/noodles/noodles.css +31 -31
  68. package/components/number-format/number-format.css +4 -4
  69. package/components/option-card/option-card.css +70 -70
  70. package/components/otp-input/otp-input.css +29 -29
  71. package/components/page/page.a2ui.json +1 -1
  72. package/components/page/page.css +27 -27
  73. package/components/page/page.d.ts +1 -1
  74. package/components/page/page.yaml +1 -1
  75. package/components/pagination/pagination.css +6 -6
  76. package/components/pane/pane.css +57 -57
  77. package/components/password-strength/password-strength.css +32 -32
  78. package/components/pipeline-status/pipeline-status.css +67 -67
  79. package/components/popover/popover.css +11 -11
  80. package/components/preview/preview.css +21 -21
  81. package/components/progress/progress.css +23 -23
  82. package/components/progress-row/progress-row.css +17 -17
  83. package/components/qr-code/qr-code.css +4 -4
  84. package/components/radio/radio.css +39 -39
  85. package/components/range/range.css +58 -55
  86. package/components/rating/rating.css +28 -28
  87. package/components/relative-time/relative-time.css +6 -6
  88. package/components/richtext/richtext.css +133 -133
  89. package/components/row/row.css +19 -19
  90. package/components/search/search.css +5 -5
  91. package/components/segment/segment.css +29 -24
  92. package/components/segmented/segmented.css +30 -25
  93. package/components/select/select.css +95 -93
  94. package/components/skeleton/skeleton.css +14 -14
  95. package/components/skip-nav/skip-nav.css +4 -4
  96. package/components/slider/slider.css +61 -61
  97. package/components/spinner/spinner.css +40 -40
  98. package/components/spinner/spinner.test.js +10 -12
  99. package/components/stack/stack.css +11 -11
  100. package/components/stat/stat.css +27 -27
  101. package/components/step-progress/step-progress.css +20 -20
  102. package/components/stepper/stepper.css +29 -29
  103. package/components/stream/stream.css +12 -12
  104. package/components/swatch/swatch.css +68 -68
  105. package/components/swiper/swiper.class.js +5 -12
  106. package/components/swiper/swiper.css +57 -57
  107. package/components/switch/switch.css +53 -53
  108. package/components/table/table.css +166 -163
  109. package/components/table-toolbar/table-toolbar.css +33 -33
  110. package/components/tabs/tabs.css +54 -51
  111. package/components/tag/tag.css +74 -71
  112. package/components/tag/tag.test.js +14 -14
  113. package/components/tags-input/tags-input.css +51 -49
  114. package/components/text/text.css +44 -44
  115. package/components/textarea/textarea.css +49 -46
  116. package/components/time-picker/time-picker.css +47 -47
  117. package/components/timeline/timeline.css +54 -54
  118. package/components/toast/toast.css +58 -58
  119. package/components/toc/toc.css +28 -28
  120. package/components/toggle-group/toggle-group.css +9 -6
  121. package/components/toggle-scheme/toggle-scheme.css +2 -2
  122. package/components/toolbar/toolbar.css +18 -18
  123. package/components/tooltip/tooltip.css +2 -2
  124. package/components/tour/tour.css +4 -4
  125. package/components/tree/tree.css +37 -37
  126. package/components/upload/upload.css +49 -49
  127. package/dist/host.min.css +1 -0
  128. package/dist/web-components.min.css +1 -1
  129. package/dist/web-components.min.js +2 -2
  130. package/package.json +1 -1
  131. package/styles/api/text.css +9 -2
  132. package/styles/foundation/space.css +19 -18
  133. package/styles/host.css +48 -0
  134. package/styles/prose.css +187 -173
  135. package/styles/type/scale.css +6 -0
  136. package/styles/typography.css +10 -5
  137. package/styles/verse.css +122 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # Changelog — @adia-ai/web-components
2
2
 
3
+ ## [0.7.5] — 2026-06-02
4
+
5
+ ### Fixed
6
+
7
+ - **`<button-ui>` colored buttons — unreadable solid text + outline rendering as a solid pill.** Two bugs in the `[color]` × `variant` matrix, both verified on the live render (`scripts/qa/button-color-probe.mjs`: WCAG contrast + fill-transparency probe). (1) **Solid** `color="danger|info|success"` set `--button-fg: var(--a-X-fg)`, which resolves to `--a-X-text-strong` — *family-colored* text, ~1:1 contrast on the same-hue fill (near-invisible). Now `--a-chrome-light` (white) like `variant="primary"` → danger 4.75:1, info 4.27:1, success 4.02:1. `warning` keeps dark `--a-warning-fg` (its `--a-warning-bg` fill is light amber). Documented anti-pattern `feedback_text_on_accent_disc` (light text on filled accent surfaces). (2) **Outline/ghost + color** rendered as a solid pill — the `[color]` rule's solid `--button-bg` won source-order over `[variant="outline"]` (the demo's `variant="outline" color="success"` "Approve" button, `button.examples.html:50`). Added combined `[variant][color]` selectors (specificity 0,3,0 > the 0,2,0 `[color]` rule) restoring a transparent fill + colored text (`--a-X-text`) + colored border (`--a-X-border` for outline). **(3) The actual override mechanism.** Fixes (1)+(2) set `--button-fg` correctly, yet the rendered text stayed the fill hue: the global `[color]` presentational utility (`api/text.css`, `utilities` layer) sets `color: var(--a-fg)` and wins over the button's `components`-layer `color: var(--button-fg)` by **layer order** (utilities > components), regardless of specificity. `button-ui` re-purposes `color=` as a semantic *fill* (the `variant="danger"`→`color="danger"` migration, button.css:180) and is the only filled control that does, and is not among the color honorings (`cascade-component-attr-sweep.mjs`) — so it is now excluded from the text-color utility: `[color]:not(:where(button-ui))` (specificity-neutral via `:where()`; a plain `[color="info"]` element still resolves to info text). Verified on a *fresh* serve against the real demo buttons — the persistent dev server caches the `host.css` `@import` chain and masked the fix on edit. Files: `components/button/button.css`, `styles/api/text.css`.
8
+
9
+ ### Changed
10
+ - **CDN bundles rebuilt** — `dist/host.min.css` + `dist/web-components.min.css` regenerated so the button-color fix above reaches `@adia-ai/web-components@0.7` CDN consumers (the bundles were stale since the fix landed on `main` pre-cut, ahead of the cut's `build:bundles`).
11
+
12
+ ## [0.7.4] — 2026-06-02
13
+
14
+ ### Added
15
+
16
+ - **`[verse]` — third typographic register (compact / dense)** — a sibling to `[prose]`: where prose shifts everything UP (long-form), verse shifts DOWN — tight inset/gap (10/12/14), small controls (18/20/24), small type (body 11/12/13), tight radius (≤16px) — for dense product UI (inspectors, tables, toolbars, side rails). Opt-in context layer (`styles/verse.css`), linked alongside `prose.css`. Type SHIFTS with `[size]` (unlike `[prose]`, which pins type at -md — verse re-declares the `-size` pointers under `[verse]:not([size])` so a bare verse resolves verse's own md value, then the global `[size]` rules shift sm/lg); gap is parametric (`value × --a-gap-k`). Docs: a "Typography registers" comparison section on the card / button / text / field / badge / stat pages, and `typography.css` now documents all three registers. Verified by `scripts/qa/register-scale-probe.mjs`.
17
+ - **`<grid-ui>` `[align]` / `[justify]` item-alignment props** — grid-ui now supports `align` (block axis → `align-items`) and `justify` (inline axis → `justify-items`), reaching parity with `row-ui` / `col-ui` (which already had `align`). e.g. `<grid-ui columns="2" align="center">` vertically centers a text column against a product visual in a split hero. CSS-only (attribute selectors); yaml + `.d.ts` + a2ui sidecar regenerated.
18
+ - **`styles/host.css` — single drop-in host-page foundation** — one `<link>` bundles design tokens + every component's CSS + global resets (via the canonical `index.css` barrel) + a page-frame (`:where(html)` background / foreground / font-family / `min-block-size`). Replaces the hand-rolled `:where(html, body){ … font-family: var(--a-font) }` boilerplate that ~281 demo scaffolds copy-paste. Opt-in layers (themes, prose) + per-module CSS (FB-53) stay explicit on top. `site/index.html` migrated (tokens+components+resets → host.css; verified pixel-identical render). Composes the byte-stable `/css` entry, adds the page-frame above it; CDN bundle at `dist/host.min.css` (`bundle-css.mjs`). (ADR-0035 / ADR-0038)
19
+ - **`--a-font` back-compat alias** (`type/scale.css`: `--a-font: var(--a-font-family)`) — the pre-ADR-0035 token name was renamed to `--a-font-family` but left dangling in ~285 references (demo boilerplate + embedded apps + external consumers). An undefined `var(--a-font)` is invalid-at-computed-value-time → `inherit` → UA **serif**; the alias resolves them to the sans stack. DEPRECATED — prefer `--a-font-family`; retire after the host.css migration retires the boilerplate.
20
+ - **`font-family` floor on 25 text-bearing primitives** — `segmented` / `segment` / `badge` / `button` / `tag` / `input` / `textarea` / `select` / `combobox` / `tags-input` / `tabs` / `toggle-group` / `range` / `table` / `calendar-grid` / `calendar-picker` / `agent-questions` / `command` / `context-menu` / `menu` / `table-toolbar` / `time-picker` / `toolbar` / `tour` + the `onboarding-checklist` module. Each anchors `font-family` to `var(--a-font-family-ui)` — composites (`select` / `combobox` / `tags-input` / `table` / `calendar-picker`) floor the host `:scope` so internal fields/options/cells inherit it; the rest use the `var(--X-font-family, var(--X-font-family-default))` chain (mirroring `text-ui`). Per-component overridable. `inline-edit` + `spinner` intentionally keep `inherit` (must match surrounding content).
21
+ - **New trip-wire `audit:font-family-floor[:strict]`** (`scripts/dev/audit-font-family-floor.mjs`) — flags component CSS using `font: inherit` / `font-family: inherit` without a token floor, plus dead `var(--a-font)` usage. Surfaced 8 of the 25 fixes that manual grep missed; ships green (0 critical, 2 allowlisted).
22
+
23
+ ### Changed
24
+
25
+ - **Reverted the OD-5 `-default` token-shadowing layer — component CSS now declares a single un-suffixed token per property** — `var(--card-bg, var(--card-bg-default))` → `var(--card-bg)` across 119 component + module CSS files; variants/states re-point the un-suffixed `--<component>-*` token directly (`:where(:scope)` keeps the base at zero specificity). The 2026-05-24 OD-5 split (internal `--<c>-X-default` + public `--<c>-X` read through a fallback chain) added read-past noise without paying for itself: the one capability it bought — ancestor-surface inheritance of *component-named* tokens — had no real usage (a repo sweep found only on-element attribute hooks + parent→child composition, both of which win by specificity and survive). **Consumer overriding is unchanged** for the four real vectors (`--a-*` upstream · on-element `card-ui { --card-bg: … }` / inline · parent→child composition · `@layer overrides`); the *only* behavior change is that a `--<component>-*` token set on a non-targeting **ancestor** no longer inherits in (theme via `--a-*` or `@layer overrides`). No public component/prop API change. Inverse codemod `scripts/refactor/undo-od5-token-shadowing.mjs` (2-level + 3-level chain collapse, precise pair-derived strip, collision-safe residual rewire); forward `od5-token-shadowing.mjs` retired; `docs/specs/component-token-contract.md` rewritten (§History). Internal: `modal`/`swiper` `getComputedStyle` reads + 5 CSS-string-match tests re-pointed to the un-suffixed names. Verified: suite 1526/1526, `components --verify` clean, bundles fresh, visual QA (composition intact).
26
+ - **Typographic registers re-scaled — regular (default) + prose (MINOR behavior change)** — the regular register's inset compressed `8/16/24 → 14/16/18` and its gap re-based to a clean `value × --a-gap-k` multiplier (`8/12/16 → 10/12/14`, replacing the `half+half·k` form); `md` (the default tier) is unchanged for both, so only `[size=sm]`/`[size=lg]` containers shift. Prose moved one rung up (inset → 32/40/48, gap → 16/20/24). **Radius is now a register-scaled axis** — each register sets its own `--a-radius-min/max` (verse ≤16px · regular 20px=base · prose ≤28px) feeding the existing `clamp(min, k·max·tier-k, max)` formula. All values verified by `scripts/qa/register-scale-probe.mjs` (9 cells × 5 axes).
27
+ - **Demo scaffolds migrated to the `--a-font-family` token** — the ~114 `patterns/` + `traits/` demo `.html` scaffolds (plus the per-component demos) swapped their hand-rolled `:where(html, body) { font-family: var(--a-font) }` boilerplate to `var(--a-font-family)`, tracking the font-family-floor token rename; `patterns/search-discovery` additionally dropped a stray inline `max-width` so the results card self-frames. Demo-layer migration only — no component or CSS-API change.
28
+
29
+ ### Fixed
30
+
31
+ - **Text-bearing primitives no longer fall back to UA serif when the host page's font is broken/unset** — 25 primitives (segmented/segment/badge/button/tag, the form controls, menus/toolbars/pickers — see Added) used `font: inherit` / `font-family: inherit` with **no `font-family` floor**, so any consumer page whose inherited `font-family` was wrong (e.g. the embedded-app's `html, body { font-family: var(--a-font) }` → dead token → serif; or a serif host document) rendered their labels in Times while `text-ui` (which anchors to a token) stayed correct — a confusing same-page split. Each now carries a font-family floor (see Added). Root-caused via computed-style probe (segment/badge/button/tag → Times; text-ui → sans); the floor was verified to hold on a deliberately `body{font-family:serif}` page. Robustness layer — the `--a-font` alias additionally fixes the specific embedded-app trigger with no app edit. (embedded-app patient-labs QA)
32
+ - **`<grid-ui align="…">` no longer leaks `text-align` into descendants** — grid-ui never neutralized the legacy UA rule that maps the HTML `align=` attribute to `text-align` (`row.css` / `col.css` both do, explicitly). So `<grid-ui align="center">` — authored for grid-item vertical centering — silently set `text-align: center` on **every** descendant, centering split-hero headlines/decks/kickers that should read left (marketing-engagement `hero-cta-split`, v050-marketing-blocks `hero-section-split`). And because grid-ui had **no** `[align]` rule at all, the attribute didn't even perform the intended vertical centering — it was pure leak. grid-ui now sets `text-align: inherit` (neutralizing the UA mapping) and maps `[align]`/`[justify]` to grid-axis item alignment. Demo fix: `hero-cta-split`'s left column → `align="start"` so the "For teams" tag hugs its content instead of stretching the full column. (marketing-engagement QA)
33
+
3
34
  ## [0.7.3] — 2026-06-01
4
35
 
5
36
  ### Added
@@ -9,14 +9,14 @@
9
9
  /* ── Container ── */
10
10
  @scope (accordion-ui) {
11
11
  :where(:scope) {
12
- --accordion-gap-default: 0;
12
+ --accordion-gap: 0;
13
13
  }
14
14
 
15
15
  :scope {
16
16
  box-sizing: border-box;
17
17
  display: flex;
18
18
  flex-direction: column;
19
- gap: var(--accordion-gap, var(--accordion-gap-default));
19
+ gap: var(--accordion-gap);
20
20
  }
21
21
  }
22
22
 
@@ -1,13 +1,13 @@
1
1
  @scope (action-list-ui) {
2
2
  :where(:scope) {
3
- --action-list-gap-default: var(--a-space-0-5);
3
+ --action-list-gap: var(--a-space-0-5);
4
4
  }
5
5
 
6
6
  :scope {
7
7
  box-sizing: border-box;
8
8
  display: flex;
9
9
  flex-direction: column;
10
- gap: var(--action-list-gap, var(--action-list-gap-default));
10
+ gap: var(--action-list-gap);
11
11
  margin: 0;
12
12
  padding: 0;
13
13
  list-style: none;
@@ -1,57 +1,57 @@
1
1
  @scope (agent-artifact-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Layout ── */
4
- --agent-artifact-radius-default: var(--a-radius);
5
- --agent-artifact-padding-default: var(--a-space-3);
6
- --agent-artifact-header-padding-y-default: var(--a-space-2);
7
- --agent-artifact-header-padding-x-default: var(--a-space-3);
8
- --agent-artifact-gap-default: var(--a-space-2);
4
+ --agent-artifact-radius: var(--a-radius);
5
+ --agent-artifact-padding: var(--a-space-3);
6
+ --agent-artifact-header-padding-y: var(--a-space-2);
7
+ --agent-artifact-header-padding-x: var(--a-space-3);
8
+ --agent-artifact-gap: var(--a-space-2);
9
9
 
10
10
  /* ── Colors ── */
11
- --agent-artifact-bg-default: var(--a-bg-subtle);
12
- --agent-artifact-fg-default: var(--a-fg);
13
- --agent-artifact-fg-muted-default: var(--a-fg-muted);
14
- --agent-artifact-border-default: var(--a-border-subtle);
15
- --agent-artifact-header-bg-default: var(--a-bg);
16
- --agent-artifact-header-bg-hover-default: var(--a-bg-hover);
11
+ --agent-artifact-bg: var(--a-bg-subtle);
12
+ --agent-artifact-fg: var(--a-fg);
13
+ --agent-artifact-fg-muted: var(--a-fg-muted);
14
+ --agent-artifact-border: var(--a-border-subtle);
15
+ --agent-artifact-header-bg: var(--a-bg);
16
+ --agent-artifact-header-bg-hover: var(--a-bg-hover);
17
17
 
18
18
  /* ── Typography ── */
19
- --agent-artifact-title-size-default: var(--a-ui-md);
20
- --agent-artifact-title-weight-default: var(--a-weight-medium);
19
+ --agent-artifact-title-size: var(--a-ui-md);
20
+ --agent-artifact-title-weight: var(--a-weight-medium);
21
21
 
22
22
  /* ── Motion ── */
23
- --agent-artifact-duration-default: var(--a-duration-fast);
23
+ --agent-artifact-duration: var(--a-duration-fast);
24
24
  }
25
25
 
26
26
  :scope {
27
27
  display: flex;
28
28
  flex-direction: column;
29
- border: 1px solid var(--agent-artifact-border, var(--agent-artifact-border-default));
30
- border-radius: var(--agent-artifact-radius, var(--agent-artifact-radius-default));
31
- background: var(--agent-artifact-bg, var(--agent-artifact-bg-default));
29
+ border: 1px solid var(--agent-artifact-border);
30
+ border-radius: var(--agent-artifact-radius);
31
+ background: var(--agent-artifact-bg);
32
32
  overflow: hidden;
33
33
  min-width: 0;
34
34
  }
35
35
 
36
- :scope[tone="accent"] { --agent-artifact-border-default: var(--a-accent-bg); }
37
- :scope[tone="warning"] { --agent-artifact-border-default: var(--a-warning-bg); }
38
- :scope[tone="danger"] { --agent-artifact-border-default: var(--a-danger-bg); }
36
+ :scope[tone="accent"] { --agent-artifact-border: var(--a-accent-bg); }
37
+ :scope[tone="warning"] { --agent-artifact-border: var(--a-warning-bg); }
38
+ :scope[tone="danger"] { --agent-artifact-border: var(--a-danger-bg); }
39
39
 
40
40
  [data-artifact-header] {
41
41
  display: flex;
42
42
  align-items: center;
43
- gap: var(--agent-artifact-gap, var(--agent-artifact-gap-default));
44
- padding: var(--agent-artifact-header-padding-y, var(--agent-artifact-header-padding-y-default)) var(--agent-artifact-header-padding-x, var(--agent-artifact-header-padding-x-default));
45
- background: var(--agent-artifact-header-bg, var(--agent-artifact-header-bg-default));
46
- border-block-end: 1px solid var(--agent-artifact-border, var(--agent-artifact-border-default));
43
+ gap: var(--agent-artifact-gap);
44
+ padding: var(--agent-artifact-header-padding-y) var(--agent-artifact-header-padding-x);
45
+ background: var(--agent-artifact-header-bg);
46
+ border-block-end: 1px solid var(--agent-artifact-border);
47
47
  cursor: pointer;
48
48
  user-select: none;
49
49
  min-width: 0;
50
- transition: background var(--agent-artifact-duration, var(--agent-artifact-duration-default));
50
+ transition: background var(--agent-artifact-duration);
51
51
  }
52
52
 
53
53
  [data-artifact-header]:hover {
54
- background: var(--agent-artifact-header-bg-hover, var(--agent-artifact-header-bg-hover-default));
54
+ background: var(--agent-artifact-header-bg-hover);
55
55
  }
56
56
 
57
57
  [data-artifact-header]:focus-visible {
@@ -69,9 +69,9 @@
69
69
  overflow: hidden;
70
70
  text-overflow: ellipsis;
71
71
  white-space: nowrap;
72
- font-size: var(--agent-artifact-title-size, var(--agent-artifact-title-size-default));
73
- font-weight: var(--agent-artifact-title-weight, var(--agent-artifact-title-weight-default));
74
- color: var(--agent-artifact-fg, var(--agent-artifact-fg-default));
72
+ font-size: var(--agent-artifact-title-size);
73
+ font-weight: var(--agent-artifact-title-weight);
74
+ color: var(--agent-artifact-fg);
75
75
  }
76
76
 
77
77
  /* [data-artifact-kind] is a <badge-ui size="sm"> — it brings its own pill
@@ -91,11 +91,11 @@
91
91
 
92
92
  [data-artifact-caret] {
93
93
  flex-shrink: 0;
94
- transition: transform var(--agent-artifact-duration, var(--agent-artifact-duration-default));
94
+ transition: transform var(--agent-artifact-duration);
95
95
  }
96
96
 
97
97
  [data-artifact-body] {
98
- padding: var(--agent-artifact-padding, var(--agent-artifact-padding-default));
98
+ padding: var(--agent-artifact-padding);
99
99
  min-width: 0;
100
100
  }
101
101
 
@@ -1,29 +1,29 @@
1
1
  @scope (agent-feedback-bar-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Layout ── */
4
- --agent-feedback-bar-gap-default: var(--a-space-1);
5
- --agent-feedback-bar-padding-default: var(--a-space-2);
4
+ --agent-feedback-bar-gap: var(--a-space-1);
5
+ --agent-feedback-bar-padding: var(--a-space-2);
6
6
 
7
7
  /* ── Typography ── */
8
- --agent-feedback-bar-font-default: var(--a-ui-sm);
8
+ --agent-feedback-bar-font: var(--a-ui-sm);
9
9
 
10
10
  /* ── Colors ── */
11
- --agent-feedback-bar-fg-default: var(--a-fg-muted);
11
+ --agent-feedback-bar-fg: var(--a-fg-muted);
12
12
  }
13
13
 
14
14
  :scope {
15
15
  display: flex;
16
16
  align-items: center;
17
- gap: var(--agent-feedback-bar-gap, var(--agent-feedback-bar-gap-default));
18
- padding-block: var(--agent-feedback-bar-padding, var(--agent-feedback-bar-padding-default));
19
- font-size: var(--agent-feedback-bar-font, var(--agent-feedback-bar-font-default));
20
- color: var(--agent-feedback-bar-fg, var(--agent-feedback-bar-fg-default));
17
+ gap: var(--agent-feedback-bar-gap);
18
+ padding-block: var(--agent-feedback-bar-padding);
19
+ font-size: var(--agent-feedback-bar-font);
20
+ color: var(--agent-feedback-bar-fg);
21
21
  }
22
22
 
23
23
  [data-feedback-status] {
24
24
  margin-inline-start: auto;
25
- color: var(--agent-feedback-bar-fg, var(--agent-feedback-bar-fg-default));
26
- font-size: var(--agent-feedback-bar-font, var(--agent-feedback-bar-font-default));
25
+ color: var(--agent-feedback-bar-fg);
26
+ font-size: var(--agent-feedback-bar-font);
27
27
  }
28
28
 
29
29
  :scope[disabled] {
@@ -1,64 +1,64 @@
1
1
  @scope (agent-questions-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Typography ── */
4
- --agent-questions-q-size-default: var(--a-ui-md);
5
- --agent-questions-q-weight-default: var(--a-weight-medium);
6
- --agent-questions-helper-size-default: var(--a-ui-sm);
7
- --agent-questions-label-size-default: var(--a-ui-md);
8
- --agent-questions-label-weight-default: var(--a-weight-medium);
9
- --agent-questions-desc-size-default: var(--a-ui-sm);
4
+ --agent-questions-q-size: var(--a-ui-md);
5
+ --agent-questions-q-weight: var(--a-weight-medium);
6
+ --agent-questions-helper-size: var(--a-ui-sm);
7
+ --agent-questions-label-size: var(--a-ui-md);
8
+ --agent-questions-label-weight: var(--a-weight-medium);
9
+ --agent-questions-desc-size: var(--a-ui-sm);
10
10
 
11
11
  /* ── Colors ── */
12
- --agent-questions-q-fg-default: var(--a-fg);
13
- --agent-questions-helper-fg-default: var(--a-fg-muted);
14
- --agent-questions-label-fg-default: var(--a-fg);
15
- --agent-questions-desc-fg-default: var(--a-fg-muted);
16
- --agent-questions-option-bg-default: var(--a-bg);
17
- --agent-questions-option-bg-hover-default: var(--a-bg-subtle);
18
- --agent-questions-option-bg-sel-default: var(--a-accent-muted);
19
- --agent-questions-option-border-default: var(--a-border-subtle);
20
- --agent-questions-option-border-sel-default: var(--a-accent-bg);
21
- --agent-questions-check-bg-default: var(--a-accent-bg);
22
- --agent-questions-check-fg-default: var(--a-accent-fg);
12
+ --agent-questions-q-fg: var(--a-fg);
13
+ --agent-questions-helper-fg: var(--a-fg-muted);
14
+ --agent-questions-label-fg: var(--a-fg);
15
+ --agent-questions-desc-fg: var(--a-fg-muted);
16
+ --agent-questions-option-bg: var(--a-bg);
17
+ --agent-questions-option-bg-hover: var(--a-bg-subtle);
18
+ --agent-questions-option-bg-sel: var(--a-accent-muted);
19
+ --agent-questions-option-border: var(--a-border-subtle);
20
+ --agent-questions-option-border-sel: var(--a-accent-bg);
21
+ --agent-questions-check-bg: var(--a-accent-bg);
22
+ --agent-questions-check-fg: var(--a-accent-fg);
23
23
 
24
24
  /* ── Layout ── */
25
- --agent-questions-gap-default: var(--a-space-2);
26
- --agent-questions-option-gap-default: var(--a-space-3);
27
- --agent-questions-option-padding-default: var(--a-space-3);
28
- --agent-questions-option-radius-default: var(--a-radius);
29
- --agent-questions-q-padding-default: var(--a-space-1);
30
- --agent-questions-option-body-gap-default: var(--a-space-0-5);
25
+ --agent-questions-gap: var(--a-space-2);
26
+ --agent-questions-option-gap: var(--a-space-3);
27
+ --agent-questions-option-padding: var(--a-space-3);
28
+ --agent-questions-option-radius: var(--a-radius);
29
+ --agent-questions-q-padding: var(--a-space-1);
30
+ --agent-questions-option-body-gap: var(--a-space-0-5);
31
31
  /* Component-intrinsic measurement; no --a-space-* equivalent */
32
- --agent-questions-check-size-default: 20px;
32
+ --agent-questions-check-size: 20px;
33
33
 
34
34
  /* ── Motion ── */
35
- --agent-questions-duration-default: var(--a-duration-fast);
36
- --agent-questions-easing-default: var(--a-easing-out);
35
+ --agent-questions-duration: var(--a-duration-fast);
36
+ --agent-questions-easing: var(--a-easing-out);
37
37
  }
38
38
 
39
39
  :scope {
40
40
  display: flex;
41
41
  flex-direction: column;
42
- gap: var(--agent-questions-gap, var(--agent-questions-gap-default));
42
+ gap: var(--agent-questions-gap);
43
43
  }
44
44
 
45
45
  [data-questions-q] {
46
- font-size: var(--agent-questions-q-size, var(--agent-questions-q-size-default));
47
- font-weight: var(--agent-questions-q-weight, var(--agent-questions-q-weight-default));
48
- color: var(--agent-questions-q-fg, var(--agent-questions-q-fg-default));
49
- padding: var(--agent-questions-q-padding, var(--agent-questions-q-padding-default)) 0;
46
+ font-size: var(--agent-questions-q-size);
47
+ font-weight: var(--agent-questions-q-weight);
48
+ color: var(--agent-questions-q-fg);
49
+ padding: var(--agent-questions-q-padding) 0;
50
50
  }
51
51
 
52
52
  [data-questions-helper] {
53
- font-size: var(--agent-questions-helper-size, var(--agent-questions-helper-size-default));
54
- color: var(--agent-questions-helper-fg, var(--agent-questions-helper-fg-default));
53
+ font-size: var(--agent-questions-helper-size);
54
+ color: var(--agent-questions-helper-fg);
55
55
  padding-block-end: var(--a-space-1);
56
56
  }
57
57
 
58
58
  [data-questions-options] {
59
59
  display: flex;
60
60
  flex-direction: column;
61
- gap: var(--agent-questions-gap, var(--agent-questions-gap-default));
61
+ gap: var(--agent-questions-gap);
62
62
  }
63
63
 
64
64
  [data-questions-option] {
@@ -70,29 +70,31 @@
70
70
  down to the body's vertical midpoint, which sat between label
71
71
  and description rather than on the label. */
72
72
  align-items: start;
73
- gap: var(--agent-questions-option-gap, var(--agent-questions-option-gap-default));
74
- padding: var(--agent-questions-option-padding, var(--agent-questions-option-padding-default));
75
- border: 1px solid var(--agent-questions-option-border, var(--agent-questions-option-border-default));
76
- border-radius: var(--agent-questions-option-radius, var(--agent-questions-option-radius-default));
77
- background: var(--agent-questions-option-bg, var(--agent-questions-option-bg-default));
73
+ gap: var(--agent-questions-option-gap);
74
+ padding: var(--agent-questions-option-padding);
75
+ border: 1px solid var(--agent-questions-option-border);
76
+ border-radius: var(--agent-questions-option-radius);
77
+ background: var(--agent-questions-option-bg);
78
78
  color: inherit;
79
79
  cursor: pointer;
80
80
  text-align: start;
81
81
  font: inherit;
82
+ /* font-family floor — see segment.css rationale (inline default). */
83
+ font-family: var(--agent-questions-font-family, var(--a-font-family-ui));
82
84
  transition:
83
- background var(--agent-questions-duration, var(--agent-questions-duration-default)) var(--agent-questions-easing, var(--agent-questions-easing-default)),
84
- border-color var(--agent-questions-duration, var(--agent-questions-duration-default)) var(--agent-questions-easing, var(--agent-questions-easing-default));
85
+ background var(--agent-questions-duration) var(--agent-questions-easing),
86
+ border-color var(--agent-questions-duration) var(--agent-questions-easing);
85
87
  min-width: 0;
86
88
  width: 100%;
87
89
  }
88
90
 
89
91
  [data-questions-option]:hover {
90
- background: var(--agent-questions-option-bg-hover, var(--agent-questions-option-bg-hover-default));
92
+ background: var(--agent-questions-option-bg-hover);
91
93
  }
92
94
 
93
95
  [data-questions-option][data-selected] {
94
- background: var(--agent-questions-option-bg-sel, var(--agent-questions-option-bg-sel-default));
95
- border-color: var(--agent-questions-option-border-sel, var(--agent-questions-option-border-sel-default));
96
+ background: var(--agent-questions-option-bg-sel);
97
+ border-color: var(--agent-questions-option-border-sel);
96
98
  }
97
99
 
98
100
  [data-questions-option][disabled] {
@@ -101,7 +103,7 @@
101
103
  }
102
104
 
103
105
  [data-questions-option]:focus-visible {
104
- outline: 2px solid var(--agent-questions-option-border-sel, var(--agent-questions-option-border-sel-default));
106
+ outline: 2px solid var(--agent-questions-option-border-sel);
105
107
  outline-offset: 2px;
106
108
  }
107
109
 
@@ -124,24 +126,24 @@
124
126
  min-width: 0;
125
127
  display: flex;
126
128
  flex-direction: column;
127
- gap: var(--agent-questions-option-body-gap, var(--agent-questions-option-body-gap-default));
129
+ gap: var(--agent-questions-option-body-gap);
128
130
  }
129
131
 
130
132
  [data-questions-option-label] {
131
- font-size: var(--agent-questions-label-size, var(--agent-questions-label-size-default));
132
- font-weight: var(--agent-questions-label-weight, var(--agent-questions-label-weight-default));
133
- color: var(--agent-questions-label-fg, var(--agent-questions-label-fg-default));
133
+ font-size: var(--agent-questions-label-size);
134
+ font-weight: var(--agent-questions-label-weight);
135
+ color: var(--agent-questions-label-fg);
134
136
  }
135
137
 
136
138
  [data-questions-option-desc] {
137
- font-size: var(--agent-questions-desc-size, var(--agent-questions-desc-size-default));
138
- color: var(--agent-questions-desc-fg, var(--agent-questions-desc-fg-default));
139
+ font-size: var(--agent-questions-desc-size);
140
+ color: var(--agent-questions-desc-fg);
139
141
  line-height: 1.4;
140
142
  }
141
143
 
142
144
  [data-questions-option-check] {
143
- width: var(--agent-questions-check-size, var(--agent-questions-check-size-default));
144
- height: var(--agent-questions-check-size, var(--agent-questions-check-size-default));
145
+ width: var(--agent-questions-check-size);
146
+ height: var(--agent-questions-check-size);
145
147
  border-radius: 50%;
146
148
  flex-shrink: 0;
147
149
  display: flex;
@@ -149,18 +151,18 @@
149
151
  justify-content: center;
150
152
  background: transparent;
151
153
  opacity: 0;
152
- transition: opacity var(--agent-questions-duration, var(--agent-questions-duration-default)) var(--agent-questions-easing, var(--agent-questions-easing-default));
154
+ transition: opacity var(--agent-questions-duration) var(--agent-questions-easing);
153
155
  /* Match the leading-icon offset so a row of [icon · label · check]
154
156
  reads as one horizontal line aligned to the label's first line. */
155
- margin-top: calc((1.5em - var(--agent-questions-check-size, var(--agent-questions-check-size-default))) / 2);
157
+ margin-top: calc((1.5em - var(--agent-questions-check-size)) / 2);
156
158
  }
157
159
 
158
160
  [data-questions-option][data-selected] [data-questions-option-check] {
159
- background: var(--agent-questions-check-bg, var(--agent-questions-check-bg-default));
161
+ background: var(--agent-questions-check-bg);
160
162
  opacity: 1;
161
163
  }
162
164
 
163
165
  [data-questions-option][data-selected] [data-questions-option-check] icon-ui {
164
- color: var(--agent-questions-check-fg, var(--agent-questions-check-fg-default));
166
+ color: var(--agent-questions-check-fg);
165
167
  }
166
168
  }