@adia-ai/web-components 0.7.2 → 0.7.4

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 (145) hide show
  1. package/CHANGELOG.md +42 -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 +99 -100
  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.a2ui.json +1 -1
  26. package/components/col/col.css +15 -15
  27. package/components/col/col.d.ts +1 -1
  28. package/components/col/col.yaml +6 -3
  29. package/components/color-picker/color-picker.css +55 -55
  30. package/components/combobox/combobox.css +64 -62
  31. package/components/command/command.css +91 -91
  32. package/components/context-menu/context-menu.css +1 -1
  33. package/components/date-range-picker/date-range-picker.css +59 -59
  34. package/components/datetime-picker/datetime-picker.css +25 -25
  35. package/components/demo-toggle/demo-toggle.css +27 -27
  36. package/components/description-list/description-list.css +18 -18
  37. package/components/divider/divider.css +24 -24
  38. package/components/embed/embed.css +6 -6
  39. package/components/empty-state/empty-state.css +29 -29
  40. package/components/feed/feed.css +12 -12
  41. package/components/field/field.css +28 -28
  42. package/components/field/field.test.js +2 -2
  43. package/components/fields/fields.css +5 -5
  44. package/components/grid/grid.a2ui.json +11 -1
  45. package/components/grid/grid.css +26 -7
  46. package/components/grid/grid.d.ts +5 -1
  47. package/components/grid/grid.yaml +18 -3
  48. package/components/heatmap/heatmap.css +61 -61
  49. package/components/icon/icon.css +12 -12
  50. package/components/image/image.css +14 -14
  51. package/components/inline-edit/inline-edit.css +16 -16
  52. package/components/inline-message/inline-message.css +16 -16
  53. package/components/input/input.css +69 -66
  54. package/components/inspector/inspector.css +6 -6
  55. package/components/integration-card/integration-card.css +41 -41
  56. package/components/integration-card/integration-card.test.js +4 -4
  57. package/components/kbd/kbd.css +47 -40
  58. package/components/link/link.css +12 -12
  59. package/components/list/list.css +8 -8
  60. package/components/list-window/list-window.css +10 -10
  61. package/components/loading-overlay/loading-overlay.css +17 -18
  62. package/components/loading-overlay/loading-overlay.test.js +8 -8
  63. package/components/mark/mark.css +16 -16
  64. package/components/menu/menu.css +9 -9
  65. package/components/modal/modal.class.js +5 -9
  66. package/components/modal/modal.css +43 -43
  67. package/components/nav/nav.css +40 -40
  68. package/components/nav-group/nav-group.css +54 -54
  69. package/components/nav-item/nav-item.css +44 -44
  70. package/components/noodles/noodles.css +31 -31
  71. package/components/number-format/number-format.css +4 -4
  72. package/components/option-card/option-card.css +70 -70
  73. package/components/otp-input/otp-input.css +29 -29
  74. package/components/page/page.a2ui.json +1 -1
  75. package/components/page/page.css +27 -27
  76. package/components/page/page.d.ts +1 -1
  77. package/components/page/page.yaml +1 -1
  78. package/components/pagination/pagination.css +6 -6
  79. package/components/pane/pane.css +57 -57
  80. package/components/password-strength/password-strength.css +32 -32
  81. package/components/pipeline-status/pipeline-status.css +67 -67
  82. package/components/popover/popover.css +11 -11
  83. package/components/preview/preview.css +21 -21
  84. package/components/progress/progress.css +23 -23
  85. package/components/progress-row/progress-row.css +17 -17
  86. package/components/qr-code/qr-code.css +4 -4
  87. package/components/radio/radio.css +39 -39
  88. package/components/range/range.css +58 -55
  89. package/components/rating/rating.css +28 -28
  90. package/components/relative-time/relative-time.css +6 -6
  91. package/components/richtext/richtext.css +133 -133
  92. package/components/row/row.a2ui.json +1 -1
  93. package/components/row/row.css +24 -22
  94. package/components/row/row.d.ts +1 -1
  95. package/components/row/row.yaml +4 -2
  96. package/components/search/search.css +5 -5
  97. package/components/segment/segment.css +29 -24
  98. package/components/segmented/segmented.css +30 -25
  99. package/components/select/select.css +95 -93
  100. package/components/skeleton/skeleton.css +14 -14
  101. package/components/skip-nav/skip-nav.css +4 -4
  102. package/components/slider/slider.css +61 -61
  103. package/components/spinner/spinner.css +40 -40
  104. package/components/spinner/spinner.test.js +10 -12
  105. package/components/stack/stack.css +11 -11
  106. package/components/stat/stat.css +27 -27
  107. package/components/step-progress/step-progress.css +20 -20
  108. package/components/stepper/stepper.css +29 -29
  109. package/components/stream/stream.css +12 -12
  110. package/components/swatch/swatch.css +68 -68
  111. package/components/swiper/swiper.class.js +5 -12
  112. package/components/swiper/swiper.css +57 -57
  113. package/components/switch/switch.css +53 -53
  114. package/components/table/table.css +166 -163
  115. package/components/table-toolbar/table-toolbar.css +33 -33
  116. package/components/tabs/tabs.css +54 -51
  117. package/components/tag/tag.css +74 -71
  118. package/components/tag/tag.test.js +14 -14
  119. package/components/tags-input/tags-input.css +51 -49
  120. package/components/text/text.css +44 -44
  121. package/components/textarea/textarea.css +49 -46
  122. package/components/time-picker/time-picker.css +47 -47
  123. package/components/timeline/timeline.css +54 -54
  124. package/components/toast/toast.css +58 -58
  125. package/components/toc/toc.css +28 -28
  126. package/components/toggle-group/toggle-group.css +9 -6
  127. package/components/toggle-scheme/toggle-scheme.css +2 -2
  128. package/components/toolbar/toolbar.css +18 -18
  129. package/components/tooltip/tooltip.css +2 -2
  130. package/components/tour/tour.css +4 -4
  131. package/components/tree/tree.class.js +89 -16
  132. package/components/tree/tree.css +37 -37
  133. package/components/tree/tree.test.js +49 -0
  134. package/components/upload/upload.css +49 -49
  135. package/dist/host.min.css +1 -0
  136. package/dist/web-components.min.css +1 -1
  137. package/dist/web-components.min.js +3 -3
  138. package/package.json +1 -1
  139. package/styles/api/sizing.css +52 -16
  140. package/styles/foundation/space.css +25 -8
  141. package/styles/host.css +48 -0
  142. package/styles/prose.css +187 -170
  143. package/styles/type/scale.css +6 -0
  144. package/styles/typography.css +10 -5
  145. package/styles/verse.css +122 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # Changelog — @adia-ai/web-components
2
2
 
3
+ ## [0.7.4] — 2026-06-02
4
+
5
+ ### Added
6
+
7
+ - **`[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`.
8
+ - **`<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.
9
+ - **`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)
10
+ - **`--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.
11
+ - **`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).
12
+ - **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).
13
+
14
+ ### Changed
15
+
16
+ - **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).
17
+ - **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).
18
+ - **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.
19
+
20
+ ### Fixed
21
+
22
+ - **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)
23
+ - **`<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)
24
+
25
+ ## [0.7.3] — 2026-06-01
26
+
27
+ ### Added
28
+
29
+ - **Parametric named gap scale `xs`–`xl` (`--a-gap-k`)** — the named gap vocabulary is now a complete, parametric 5-step scale: `--a-gap-{xs,sm,md,lg,xl}` = `half + half·--a-gap-k` (a fixed floor + a k-scaled half). The new `--a-gap-k` knob (`@property`, default 1) is a root/provider-level scale control with the same semantics as `--a-density` (subtree override is inert — set it at `:root`/a top provider). At k=1: **4/8/12/16/20px**. `gap="xs"` and `gap="xl"` now resolve (they were documented in yaml but unimplemented — silently did nothing in both the CSS `[gap]` path and the JS `@bp` responsive path). At k=1 the named scale coincides with the integer scale: xs=1, sm=2, md=3, lg=4, xl=5. (spec GS-P2-SPEC-2 §5.2)
30
+
31
+ ### Changed
32
+
33
+ - **Behavior change (MINOR): explicit `[gap="sm|md|lg"]` resolves smaller** — `gap="sm|md|lg"` on layout primitives (col/row/grid) now resolves to `--a-gap-{sm,md,lg}` = **8/12/16px** (was the hardcoded `--a-space-4/6/8` = 16/24/32px). This unifies the three gap paths that previously disagreed — explicit `[gap="md"]` was 24px while the responsive (`gap="md@bp"`, JS `_gapToCss`) and ambient (`[size]`) paths were 12px; all three are now `--a-gap-md`. Integer `gap="N"` is unchanged (literal `--a-space-N`, k-independent). `[size]` / `<card-ui size="…">` unaffected. (audit C1/C2)
34
+ - **`[gap]` no longer leaks into nested layout primitives (audit C3)** — `[gap="N"]` now sets a NON-inheriting `--a-gap-self` (`@property{syntax:"*";inherits:false}`); the inheriting `--a-gap` is reserved for the *ambient* `[size]`/`[prose]`/`:root` cascade. The six gap-readers (col/row/grid/card/swiper/stat) resolve `var(--a-gap-self, var(--a-gap))` — explicit-on-self wins, else the inherited ambient. Previously a parent's explicit `gap="8"` bled into a nested `<row-ui>` that declared no gap of its own. Verified via `scripts/qa/cascade-gap-self-probe.mjs` (5 truth-table rows + parametric + coincidence, all green).
35
+ - **`col`/`row`/`grid` yaml gap docs + layout demo reconciled to impl** — documented the two grammars (named parametric + integer 0–16), fixed grid's range claim (`0–12`→`0–16`), dropped the phantom-value framing (`xs`/`xl` real now). `layout.examples.html`: Properties tables corrected, broken `gap="none"` demo → `gap="0"`, col demo filled out to the complete `xs`→`xl` scale. Sidecars regenerated.
36
+
37
+ ### Fixed
38
+
39
+ - **`<tree-item-ui>` adopts interpolated `[slot="actions"]`/`[slot="caret"]` children (FB-96)** — the FB-89 actions-adoption used a `this.querySelectorAll(':scope > [slot="actions"]')` direct-child query that ran once at `#stamp()` time, so a `<button-ui slot="actions">` rendered through the template engine (`.map()`/`repeat()`/conditional) was missed twice over: it arrives in a *later* reactive tick (after `#stamp`) **and** nested in a `display:contents` wrapper span. The un-adopted button stayed a bare `role="button"` child of the `group`/`tree`, tripping axe `aria-required-children` even after the FB-94 `role="presentation"` fix (which addresses role-flattening, not structural adoption). `#stamp()` now stamps an empty placeholder and a re-entrancy-guarded `MutationObserver` adopts the real `[slot="actions"]`/`[slot="caret"]` into the row whenever they appear, via a wrapper-piercing "logical children" walk that stops at nested `tree-item-ui` boundaries (so a child item's actions aren't mis-adopted) and drops the placeholder once a real child lands. +2 regression tests; verified with axe-core (`.map()` tree + interpolated actions button → 0 `aria-required-children`). The structural-adoption sibling of the FB-92 `menu #show()` fix — same `:scope >` + `display:contents` trap. (Tokens Studio / color-app FB-96)
40
+
41
+ ### Changed — styles + build
42
+
43
+ - **Gap scale + grammar span `styles/` → `components/` → `patterns/` → `dist/`** — the parametric `--a-gap-k` scale is defined in `styles/` (foundation tokens); the `[gap]` grammar applies on `components/col` / `components/row` / `components/grid`; `patterns/` demos were updated to the named scale; and the `dist/` CDN bundles (`web-components.min.css` + `web-components.min.js`) were regenerated.
44
+
3
45
  ## [0.7.2] — 2026-06-01
4
46
 
5
47
  ### Fixed
@@ -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
  }