@adia-ai/web-components 0.7.28 → 0.8.0

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 (156) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/components/accordion/accordion.css +13 -4
  3. package/components/action-list/action-list.css +3 -3
  4. package/components/agent-artifact/agent-artifact.css +4 -4
  5. package/components/agent-questions/agent-questions.css +8 -8
  6. package/components/agent-reasoning/agent-reasoning.css +6 -6
  7. package/components/agent-trace/agent-trace.css +4 -4
  8. package/components/agent-trace/agent-trace.js +1 -1
  9. package/components/alert/alert.css +16 -16
  10. package/components/avatar/avatar.css +3 -3
  11. package/components/badge/badge.css +32 -32
  12. package/components/blockquote/blockquote.css +1 -1
  13. package/components/breadcrumb/breadcrumb.css +2 -2
  14. package/components/button/button.css +14 -14
  15. package/components/calendar-grid/calendar-grid.a2ui.json +3 -3
  16. package/components/calendar-grid/calendar-grid.css +10 -10
  17. package/components/calendar-grid/calendar-grid.yaml +3 -3
  18. package/components/calendar-picker/calendar-picker.css +11 -11
  19. package/components/canvas/canvas.css +2 -2
  20. package/components/card/card.css +15 -15
  21. package/components/chart/chart.css +23 -23
  22. package/components/chart-legend/chart-legend.css +2 -2
  23. package/components/chat-thread/chat-input.css +6 -6
  24. package/components/chat-thread/chat-thread.css +7 -7
  25. package/components/check/check.css +4 -4
  26. package/components/code/code-editor.js +1 -1
  27. package/components/code/code.css +45 -22
  28. package/components/color-picker/color-picker.css +4 -4
  29. package/components/combobox/combobox.css +6 -6
  30. package/components/command/command.class.js +14 -3
  31. package/components/command/command.css +4 -4
  32. package/components/context-menu/context-menu.css +2 -2
  33. package/components/date-range-picker/date-range-picker.a2ui.json +3 -3
  34. package/components/date-range-picker/date-range-picker.css +8 -8
  35. package/components/date-range-picker/date-range-picker.yaml +3 -3
  36. package/components/datetime-picker/datetime-picker.css +6 -6
  37. package/components/demo-toggle/demo-toggle.css +4 -4
  38. package/components/description-list/description-list.css +1 -1
  39. package/components/display-field/display-field.css +2 -2
  40. package/components/divider/divider.css +1 -1
  41. package/components/drawer/drawer.css +7 -7
  42. package/components/embed/embed.css +1 -1
  43. package/components/empty-state/empty-state.css +5 -5
  44. package/components/feed/feed.css +7 -7
  45. package/components/field/field.css +2 -2
  46. package/components/heatmap/heatmap.css +8 -8
  47. package/components/inline-edit/inline-edit.a2ui.json +1 -1
  48. package/components/inline-edit/inline-edit.css +3 -3
  49. package/components/inline-edit/inline-edit.yaml +1 -1
  50. package/components/inline-message/inline-message.css +4 -4
  51. package/components/input/input.css +1 -1
  52. package/components/inspector/inspector.css +1 -1
  53. package/components/integration-card/integration-card.css +3 -3
  54. package/components/kbd/kbd.css +2 -2
  55. package/components/link/link.css +2 -2
  56. package/components/list/list.css +10 -10
  57. package/components/list-window/list-window.css +2 -2
  58. package/components/mark/mark.css +9 -9
  59. package/components/menu/menu.css +9 -9
  60. package/components/modal/modal.css +4 -4
  61. package/components/nav/nav.css +1 -1
  62. package/components/nav-group/nav-group.css +7 -16
  63. package/components/nav-item/nav-item.css +1 -1
  64. package/components/noodles/noodles.a2ui.json +1 -1
  65. package/components/noodles/noodles.css +3 -3
  66. package/components/noodles/noodles.d.ts +1 -1
  67. package/components/noodles/noodles.yaml +1 -1
  68. package/components/option-card/option-card.css +11 -11
  69. package/components/otp-input/otp-input.css +1 -1
  70. package/components/page/page.css +2 -2
  71. package/components/pane/pane.css +5 -5
  72. package/components/password-strength/password-strength.css +1 -1
  73. package/components/pipeline-status/pipeline-status.css +9 -9
  74. package/components/popover/popover.css +2 -2
  75. package/components/preview/preview.css +14 -3
  76. package/components/progress/progress.a2ui.json +1 -1
  77. package/components/progress/progress.css +1 -1
  78. package/components/progress/progress.d.ts +1 -1
  79. package/components/progress/progress.yaml +1 -1
  80. package/components/progress-row/progress-row.css +2 -2
  81. package/components/radio/radio.css +4 -4
  82. package/components/range/range.css +2 -2
  83. package/components/rating/rating.css +2 -2
  84. package/components/richtext/richtext.class.js +4 -0
  85. package/components/richtext/richtext.css +5 -5
  86. package/components/richtext/richtext.yaml +1 -0
  87. package/components/row/row.css +1 -1
  88. package/components/select/select.css +8 -8
  89. package/components/skip-nav/skip-nav.a2ui.json +2 -2
  90. package/components/skip-nav/skip-nav.css +3 -3
  91. package/components/skip-nav/skip-nav.yaml +2 -2
  92. package/components/slider/slider.css +5 -5
  93. package/components/spinner/spinner.css +2 -2
  94. package/components/spinner/spinner.test.js +4 -2
  95. package/components/stat/stat.css +1 -1
  96. package/components/step-progress/step-progress.a2ui.json +1 -1
  97. package/components/step-progress/step-progress.class.js +1 -1
  98. package/components/step-progress/step-progress.css +2 -2
  99. package/components/step-progress/step-progress.d.ts +1 -1
  100. package/components/step-progress/step-progress.yaml +1 -1
  101. package/components/stepper/stepper.css +22 -22
  102. package/components/stream/stream.css +2 -2
  103. package/components/swatch/swatch.class.js +1 -1
  104. package/components/swatch/swatch.css +11 -11
  105. package/components/swiper/swiper.css +5 -5
  106. package/components/switch/switch.css +5 -5
  107. package/components/table/cell-types.js +1 -1
  108. package/components/table/table.css +16 -11
  109. package/components/table-toolbar/table-toolbar.css +8 -8
  110. package/components/tabs/tabs.css +5 -5
  111. package/components/tag/tag.css +41 -29
  112. package/components/tag/tag.test.js +22 -29
  113. package/components/tags-input/tags-input.a2ui.json +1 -1
  114. package/components/tags-input/tags-input.css +3 -3
  115. package/components/tags-input/tags-input.yaml +5 -3
  116. package/components/text/text.css +4 -4
  117. package/components/textarea/textarea.css +1 -1
  118. package/components/time-picker/time-picker.css +2 -2
  119. package/components/timeline/timeline.css +31 -31
  120. package/components/toast/toast.css +19 -19
  121. package/components/toc/toc.a2ui.json +1 -1
  122. package/components/toc/toc.css +3 -3
  123. package/components/toc/toc.yaml +1 -1
  124. package/components/toggle-group/toggle-group.css +3 -3
  125. package/components/toolbar/toolbar.css +3 -3
  126. package/components/tooltip/tooltip.css +9 -9
  127. package/components/tour/tour.css +3 -3
  128. package/components/tree/tree.css +2 -2
  129. package/components/upload/upload.css +7 -7
  130. package/dist/host.min.css +1 -1
  131. package/dist/host.sheet.js +1 -1
  132. package/dist/theme-provider.min.js +7 -7
  133. package/dist/themes.min.css +1 -1
  134. package/dist/themes.sheet.js +1 -1
  135. package/dist/web-components.min.css +1 -1
  136. package/dist/web-components.min.js +34 -34
  137. package/dist/web-components.sheet.js +1 -1
  138. package/package.json +3 -3
  139. package/styles/api/text.css +1 -1
  140. package/styles/colors/bridges/material-bridge.css +30 -0
  141. package/styles/colors/index.css +19 -1
  142. package/styles/colors/material-static.css +771 -0
  143. package/styles/colors/parameters.css +40 -4
  144. package/styles/colors/primitives-primary.css +89 -0
  145. package/styles/colors/primitives-secondary.css +89 -0
  146. package/styles/colors/primitives-tertiary.css +89 -0
  147. package/styles/colors/primitives.css +3 -1
  148. package/styles/colors/scrims.css +19 -180
  149. package/styles/colors/semantics/aliases.css +25 -11
  150. package/styles/colors/semantics/buckets.css +28 -12
  151. package/styles/colors/semantics/core.css +323 -202
  152. package/styles/colors/semantics/data-viz.css +13 -13
  153. package/styles/colors/semantics/features.css +31 -13
  154. package/styles/colors/surfaces.css +41 -31
  155. package/styles/themes.css +15 -15
  156. package/styles/colors/primitives-accent.css +0 -89
@@ -1,13 +1,13 @@
1
1
  @scope (menu-ui) {
2
2
  :where(:scope) {
3
3
  --menu-popover-padding: var(--a-space-1);
4
- --menu-popover-border: var(--a-border-subtle);
4
+ --menu-popover-border: var(--md-sys-color-neutral-outline-variant);
5
5
  --menu-popover-radius: var(--a-radius-lg);
6
6
  --menu-popover-bg: var(--a-bg-subtle);
7
7
  --menu-popover-shadow: var(--a-shadow-lg);
8
8
  --menu-popover-min-width: 10rem;
9
9
  --menu-popover-font-size: var(--a-ui-size);
10
- --menu-popover-fg: var(--a-fg);
10
+ --menu-popover-fg: var(--md-sys-color-neutral-on-surface);
11
11
  }
12
12
 
13
13
  :scope {
@@ -47,14 +47,14 @@
47
47
  menu-ui [data-menu-popover] {
48
48
  margin: 0;
49
49
  padding: var(--a-space-1);
50
- border: 1px solid var(--a-border-subtle);
50
+ border: 1px solid var(--md-sys-color-neutral-outline-variant);
51
51
  border-radius: var(--a-radius-lg);
52
52
  background: var(--a-bg-subtle);
53
53
  box-shadow: var(--a-shadow-lg);
54
54
  min-width: 10rem;
55
55
  font-family: var(--menu-font-family, var(--a-font-family-ui));
56
56
  font-size: var(--a-ui-size);
57
- color: var(--a-fg);
57
+ color: var(--md-sys-color-neutral-on-surface);
58
58
  /* Fade + lift in on first paint via @starting-style. Plain `transition`
59
59
  applies during exit too (display: none can't transition, but opacity
60
60
  can — and the close path is JS-controlled so no exit anim is needed). */
@@ -118,15 +118,15 @@ menu-item-ui[variant="danger"]:hover [slot="icon"] {
118
118
 
119
119
  /* ── Colors ── */
120
120
  --menu-item-bg: transparent;
121
- --menu-item-fg: var(--a-fg-subtle);
122
- --menu-item-fg-hover: var(--a-fg);
121
+ --menu-item-fg: var(--md-sys-color-neutral-on-surface-variant);
122
+ --menu-item-fg-hover: var(--md-sys-color-neutral-on-surface);
123
123
  --menu-item-bg-hover: var(--a-bg-muted);
124
124
  --menu-item-fg-disabled: var(--a-ui-text-disabled);
125
125
  --menu-item-icon-fg: var(--a-fg-muted);
126
- --menu-item-icon-fg-hover: var(--a-fg);
126
+ --menu-item-icon-fg-hover: var(--md-sys-color-neutral-on-surface);
127
127
  --menu-item-icon-disabled: var(--a-ui-text-disabled);
128
128
  --menu-item-danger-fg: var(--a-danger-bg);
129
- --menu-item-danger-bg: var(--a-danger-muted);
129
+ --menu-item-danger-bg: var(--md-sys-color-danger-container);
130
130
 
131
131
  /* ── Typography ── */
132
132
  --menu-item-font-size: var(--a-ui-size);
@@ -201,7 +201,7 @@ menu-item-ui[variant="danger"]:hover [slot="icon"] {
201
201
  --menu-divider-my: var(--a-space-1);
202
202
 
203
203
  /* ── Colors ── */
204
- --menu-divider-color: var(--a-border-subtle);
204
+ --menu-divider-color: var(--md-sys-color-neutral-outline-variant);
205
205
  }
206
206
 
207
207
  :scope {
@@ -11,17 +11,17 @@
11
11
  :where(:scope) {
12
12
  --modal-width: 32rem;
13
13
  --modal-radius: var(--a-radius-lg);
14
- --modal-bg: var(--a-canvas-dimmer);
15
- --modal-border: var(--a-border-subtle);
14
+ --modal-bg: var(--md-sys-color-neutral-surface-dimmer);
15
+ --modal-border: var(--md-sys-color-neutral-outline-variant);
16
16
  --modal-shadow: var(--a-shadow-lg);
17
17
  --modal-backdrop: var(--a-scrim-dialog);
18
18
  --modal-duration: var(--a-duration);
19
19
  --modal-easing: var(--a-easing-out);
20
20
  --modal-heading-size: var(--a-ui-lg);
21
21
  --modal-heading-weight: var(--a-weight-semibold);
22
- --modal-header-fg: var(--a-fg);
22
+ --modal-header-fg: var(--md-sys-color-neutral-on-surface);
23
23
  --modal-close-fg: var(--a-fg-muted);
24
- --modal-close-hover: var(--a-fg);
24
+ --modal-close-hover: var(--md-sys-color-neutral-on-surface);
25
25
  --modal-pad-header: var(--a-space-3);
26
26
  --modal-pad-body: var(--a-space-4);
27
27
  --modal-pad-footer: var(--a-space-3);
@@ -11,7 +11,7 @@
11
11
  --nav-py: var(--a-space-2);
12
12
  --nav-font-size: var(--a-ui-size);
13
13
  --nav-bg: transparent;
14
- --nav-divider-bg: var(--a-border-subtle);
14
+ --nav-divider-bg: var(--md-sys-color-neutral-outline-variant);
15
15
  --nav-divider-my: var(--a-space-1);
16
16
 
17
17
  /* Primary-variant collapse */
@@ -10,7 +10,7 @@
10
10
  --nav-group-font-size-sm: var(--a-ui-sm);
11
11
  --nav-group-font-size-lg: var(--a-ui-lg);
12
12
  --nav-group-font-weight: var(--a-weight-normal);
13
- --nav-group-fg: var(--a-fg);
13
+ --nav-group-fg: var(--md-sys-color-neutral-on-surface);
14
14
  --nav-group-fg-hover: var(--a-fg-strong);
15
15
  --nav-group-fg-muted: var(--a-fg-muted);
16
16
  --nav-group-fg-selected: var(--a-fg-strong);
@@ -215,7 +215,7 @@
215
215
  nav-group-ui [slot="popover"] {
216
216
  margin: 0;
217
217
  padding: var(--a-space-1);
218
- border: 1px solid var(--a-border-subtle);
218
+ border: 1px solid var(--md-sys-color-neutral-outline-variant);
219
219
  border-radius: var(--a-radius);
220
220
  background: var(--a-bg-subtle);
221
221
  box-shadow: var(--a-shadow-lg);
@@ -250,27 +250,18 @@ nav-group-ui [slot="popover"] [role="option"]:hover {
250
250
  color: var(--nav-group-fg-hover);
251
251
  }
252
252
 
253
- /* Selected / current option — mirrors the main rail's nav-item selection:
254
- muted fill + leading 2px accent bar. */
253
+ /* Selected / current option — background fill alone (TKT-0017): a
254
+ paired leading accent bar (mirroring the main rail's nav-item
255
+ selection) was removed as a redundant second signal for the same
256
+ state — the muted fill + color + weight change already reads clearly
257
+ as "selected" on its own. */
255
258
  nav-group-ui [slot="popover"] [role="option"][aria-current="page"],
256
259
  nav-group-ui [slot="popover"] [role="option"][aria-selected="true"] {
257
- position: relative;
258
260
  background: var(--nav-group-bg-hover);
259
261
  color: var(--nav-group-fg-selected);
260
262
  font-weight: var(--a-weight-medium);
261
263
  }
262
264
 
263
- nav-group-ui [slot="popover"] [role="option"][aria-current="page"]::before,
264
- nav-group-ui [slot="popover"] [role="option"][aria-selected="true"]::before {
265
- content: '';
266
- position: absolute;
267
- inset-inline-start: calc(var(--a-space-2) * -0.5);
268
- inset-block: 25%;
269
- width: 2px;
270
- border-radius: 1px;
271
- background: var(--a-accent);
272
- }
273
-
274
265
  /* ── Section variant — groups render as kicker labels ──
275
266
  Primary variant defaults to collapsible:true (caret-toggleable).
276
267
  Section variant flips to collapsible:false-shape — header is a
@@ -29,7 +29,7 @@ nav-item-ui[selected] [slot="icon"]:empty::before {
29
29
 
30
30
  @scope (nav-item-ui) {
31
31
  :where(:scope) {
32
- --nav-item-accent: var(--a-accent);
32
+ --nav-item-accent: var(--md-sys-color-primary);
33
33
  --nav-item-row-height: var(--a-size);
34
34
  --nav-item-row-height-sm: var(--a-size-sm);
35
35
  --nav-item-row-height-lg: var(--a-size-lg);
@@ -19,7 +19,7 @@
19
19
  "default": false
20
20
  },
21
21
  "color": {
22
- "description": "Noodle stroke color. Defaults to --a-accent",
22
+ "description": "Noodle stroke color. Defaults to --a-primary-bg",
23
23
  "type": "string",
24
24
  "default": ""
25
25
  },
@@ -3,14 +3,14 @@
3
3
  /* ── Tokens ── */
4
4
  --noodles-duration: var(--a-duration-fast);
5
5
  --noodles-easing: var(--a-easing);
6
- --noodles-stroke: var(--a-accent-bg);
6
+ --noodles-stroke: var(--a-primary-bg);
7
7
  /* Component-intrinsic visual constants; no --a-space-* equivalent */
8
8
  --noodles-stroke-width: 2px;
9
9
  --noodles-stroke-readonly: var(--a-fg-muted);
10
10
  /* Component-intrinsic visual constants; no --a-space-* equivalent */
11
11
  --noodles-port-size: 10px;
12
- --noodles-port-bg: var(--a-accent-bg);
13
- --noodles-port-border: var(--a-bg);
12
+ --noodles-port-bg: var(--a-primary-bg);
13
+ --noodles-port-border: var(--md-sys-color-neutral-background);
14
14
  --noodles-port-hover-ring: 0 0 0 3px var(--a-bg-muted);
15
15
  --noodles-port-drop-scale: 1.4;
16
16
  --noodles-port-drag-opacity: 0.4;
@@ -45,7 +45,7 @@ export type NoodlesNoodleDragEvent = CustomEvent<unknown>;
45
45
  export class UINoodles extends UIElement {
46
46
  /** Flowing dash animation on noodles */
47
47
  animated: boolean;
48
- /** Noodle stroke color. Defaults to --a-accent */
48
+ /** Noodle stroke color. Defaults to --a-primary-bg */
49
49
  color: string;
50
50
  /** Noodle curve style */
51
51
  curve: 'bezier' | 'step' | 'straight';
@@ -15,7 +15,7 @@ props:
15
15
  type: boolean
16
16
  default: false
17
17
  color:
18
- description: Noodle stroke color. Defaults to --a-accent
18
+ description: Noodle stroke color. Defaults to --a-primary-bg
19
19
  type: string
20
20
  default: ""
21
21
  curve:
@@ -34,39 +34,39 @@ option-card-ui[checked] [slot="icon"] {
34
34
  --option-card-padding-block: var(--a-space-3);
35
35
  --option-card-padding-inline: var(--a-space-4);
36
36
  --option-card-radius: var(--a-radius-md);
37
- --option-card-bg: var(--a-bg);
38
- --option-card-border: var(--a-border);
37
+ --option-card-bg: var(--md-sys-color-neutral-background);
38
+ --option-card-border: var(--md-sys-color-neutral-outline);
39
39
  --option-card-gap-x: var(--a-space-3);
40
40
  --option-card-gap-y: var(--a-space-1);
41
41
 
42
42
  /* ── State: hover ── */
43
43
  --option-card-bg-hover: var(--a-bg-muted);
44
- --option-card-border-hover: var(--a-fg-subtle);
44
+ --option-card-border-hover: var(--md-sys-color-neutral-on-surface-variant);
45
45
 
46
46
  /* ── State: checked ── */
47
- --option-card-bg-checked: var(--a-accent-muted);
48
- --option-card-border-checked: var(--a-accent);
47
+ --option-card-bg-checked: var(--md-sys-color-primary-container);
48
+ --option-card-border-checked: var(--md-sys-color-primary);
49
49
 
50
50
  /* ── Indicator (CSS radio circle, same size + recipe as <radio-ui>). */
51
51
  --option-card-radio-size: var(--a-toggle-size);
52
- --option-card-radio-bg: var(--a-bg);
53
- --option-card-radio-border: var(--a-border);
54
- --option-card-radio-fill: var(--a-accent);
52
+ --option-card-radio-bg: var(--md-sys-color-neutral-background);
53
+ --option-card-radio-border: var(--md-sys-color-neutral-outline);
54
+ --option-card-radio-fill: var(--md-sys-color-primary);
55
55
  /* Mirror radio.css's --radio-fg-checked recipe: an always-light
56
- token rather than --a-accent-fg, which can flip dark depending
56
+ token rather than --a-primary-fg, which can flip dark depending
57
57
  on theme/scheme combos and produce a near-black inner dot
58
58
  against the accent disc. */
59
59
  --option-card-radio-dot: var(--a-chrome-light);
60
60
 
61
61
  /* ── Typography ── */
62
- --option-card-heading-color: var(--a-fg);
62
+ --option-card-heading-color: var(--md-sys-color-neutral-on-surface);
63
63
  --option-card-heading-color-checked: var(--a-fg-strong);
64
64
  --option-card-heading-weight: var(--a-weight-medium);
65
65
  --option-card-heading-size: var(--a-ui-size);
66
66
  --option-card-desc-color: var(--a-fg-muted);
67
67
  --option-card-desc-size: var(--a-ui-sm);
68
68
  --option-card-desc-line-height: 1.4;
69
- --option-card-icon-color: var(--a-fg-subtle);
69
+ --option-card-icon-color: var(--md-sys-color-neutral-on-surface-variant);
70
70
  --option-card-icon-color-checked: var(--a-fg-strong);
71
71
  --option-card-icon-size: 1.5rem;
72
72
 
@@ -10,7 +10,7 @@
10
10
  --otp-input-radius: var(--a-radius-lg);
11
11
  --otp-input-border: var(--a-ui-border);
12
12
  --otp-input-border-hover: var(--a-ui-border-hover);
13
- --otp-input-border-focus: var(--a-accent);
13
+ --otp-input-border-focus: var(--md-sys-color-primary);
14
14
  --otp-input-bg-disabled: var(--a-ui-bg-disabled);
15
15
  --otp-input-fg-disabled: var(--a-ui-text-disabled);
16
16
  --otp-input-border-disabled: var(--a-ui-border-disabled);
@@ -20,11 +20,11 @@
20
20
 
21
21
  /* ── Surfaces ── */
22
22
  --page-bg: var(--a-canvas-0);
23
- --page-fg: var(--a-fg);
23
+ --page-fg: var(--md-sys-color-neutral-on-surface);
24
24
 
25
25
  /* ── Sticky-header chrome (when [data-header-stuck]) ── */
26
26
  --page-sticky-bg: var(--a-canvas-0);
27
- --page-sticky-border: 1px solid var(--a-border-subtle);
27
+ --page-sticky-border: 1px solid var(--md-sys-color-neutral-outline-variant);
28
28
  --page-sticky-shadow: var(--a-shadow-sm);
29
29
  }
30
30
 
@@ -1,14 +1,14 @@
1
1
  @scope (pane-ui) {
2
2
  /* Tokens — :where() for zero specificity so consumers can override */
3
3
  :where(:scope) {
4
- --pane-bg: var(--a-bg);
5
- --pane-border: var(--a-border-subtle);
4
+ --pane-bg: var(--md-sys-color-neutral-background);
5
+ --pane-border: var(--md-sys-color-neutral-outline-variant);
6
6
  --pane-radius: var(--a-radius-lg);
7
7
  /* Component-intrinsic measurement; no --a-space-* equivalent */
8
8
  --pane-bar-height: var(--a-chrome-pane-header-height);
9
9
  --pane-header-px: var(--a-space-3);
10
10
  --pane-header-py: var(--a-space-2);
11
- --pane-header-fg: var(--a-fg);
11
+ --pane-header-fg: var(--md-sys-color-neutral-on-surface);
12
12
  --pane-header-size: var(--a-ui-size);
13
13
  --pane-header-weight: var(--a-weight-medium);
14
14
  --pane-section-px: var(--a-space-3);
@@ -20,7 +20,7 @@
20
20
  --pane-col-gap: var(--a-space-3);
21
21
  /* Component-intrinsic measurement; no --a-space-* equivalent */
22
22
  --pane-resize-width: 4px;
23
- --pane-resize-fg: var(--a-border);
23
+ --pane-resize-fg: var(--md-sys-color-neutral-outline);
24
24
  --pane-resize-fg-hover: var(--a-fg-muted);
25
25
 
26
26
  /* ── Spacing ── */
@@ -35,7 +35,7 @@
35
35
  --pane-section-header-weight: var(--a-weight-medium);
36
36
 
37
37
  /* ── Resize active ── */
38
- --pane-resize-fg-active: var(--a-fg-subtle);
38
+ --pane-resize-fg-active: var(--md-sys-color-neutral-on-surface-variant);
39
39
 
40
40
  /* ── Transitions ── */
41
41
  --pane-duration: var(--a-duration-fast);
@@ -11,7 +11,7 @@
11
11
  --password-strength-stack-gap: var(--a-space-1);
12
12
 
13
13
  /* ── Colors ── */
14
- --password-strength-segment-bg: var(--a-canvas-1-scrim);
14
+ --password-strength-segment-bg: var(--md-sys-color-neutral-scrim-weaker);
15
15
  --password-strength-color-weak: var(--a-danger-bg);
16
16
  --password-strength-color-fair: var(--a-warning-bg);
17
17
  --password-strength-color-good: var(--a-info-bg);
@@ -27,17 +27,17 @@
27
27
  --pipeline-status-label-weight: var(--a-weight-medium);
28
28
 
29
29
  /* Colors — keep aliases referenced via semantic tokens */
30
- --pipeline-status-fg: var(--a-fg-subtle);
31
- --pipeline-status-label-fg: var(--a-fg);
32
- --pipeline-status-msg-fg: var(--a-fg-subtle);
33
- --pipeline-status-history-fg: var(--a-fg-subtle);
34
- --pipeline-status-log-fg: var(--a-fg-subtle);
35
-
36
- --pipeline-status-dot-bg: var(--a-border);
37
- --pipeline-status-dot-bg-active: var(--a-accent);
30
+ --pipeline-status-fg: var(--md-sys-color-neutral-on-surface-variant);
31
+ --pipeline-status-label-fg: var(--md-sys-color-neutral-on-surface);
32
+ --pipeline-status-msg-fg: var(--md-sys-color-neutral-on-surface-variant);
33
+ --pipeline-status-history-fg: var(--md-sys-color-neutral-on-surface-variant);
34
+ --pipeline-status-log-fg: var(--md-sys-color-neutral-on-surface-variant);
35
+
36
+ --pipeline-status-dot-bg: var(--md-sys-color-neutral-outline);
37
+ --pipeline-status-dot-bg-active: var(--md-sys-color-primary);
38
38
  --pipeline-status-dot-bg-complete: var(--a-success-strong);
39
39
 
40
- --pipeline-status-history-border: var(--a-border-subtle);
40
+ --pipeline-status-history-border: var(--md-sys-color-neutral-outline-variant);
41
41
  --pipeline-status-border-thin: 1px;
42
42
 
43
43
  /* Motion */
@@ -7,8 +7,8 @@
7
7
 
8
8
  /* ── Colors (default panel chrome — opt out per `:has(>card-ui)` rule
9
9
  below or by setting tokens to transparent / 0) ── */
10
- --popover-bg: var(--a-canvas-dimmer);
11
- --popover-border: var(--a-border-subtle);
10
+ --popover-bg: var(--md-sys-color-neutral-surface-dimmer);
11
+ --popover-border: var(--md-sys-color-neutral-outline-variant);
12
12
  --popover-shadow: var(--a-shadow-lg);
13
13
  }
14
14
 
@@ -13,7 +13,7 @@
13
13
  @scope (preview-ui) {
14
14
  /* ── Block 1 — TOKENS ── */
15
15
  :where(:scope) {
16
- --preview-border: 1px solid var(--a-border-subtle);
16
+ --preview-border: 1px solid var(--md-sys-color-neutral-outline-variant);
17
17
  --preview-radius: var(--a-radius-lg);
18
18
  --preview-render-bg: var(--a-canvas-1);
19
19
  --preview-render-pad: var(--a-space-6);
@@ -85,7 +85,7 @@
85
85
  display: block;
86
86
  --code-border: transparent;
87
87
  --code-radius: 0;
88
- --code-bg: var(--a-bg);
88
+ --code-bg: var(--md-sys-color-neutral-background);
89
89
  }
90
90
 
91
91
  /* code-first — divider moves to the bottom of the (now-leading) code pane */
@@ -180,7 +180,14 @@
180
180
  margin-bottom: 0.5rem;
181
181
  border-radius: var(--a-radius-sm);
182
182
  }
183
- /* Narrow: collapse each row to stacked render-over-code. */
183
+ /* Narrow: collapse each row to stacked render-over-code. The render
184
+ cell keeps its full --preview-render-pad (--a-space-6, 24px) inset;
185
+ code-ui's own header/body padding (--code-py/px, --a-space-2/3 —
186
+ 8/12px) reads as visibly cramped directly underneath once the two
187
+ panes stack (they never collide side-by-side, only here). Step
188
+ code-ui's padding up to --a-space-4 (16px) at this breakpoint only —
189
+ narrows the gap without inflating a slim caption bar to the render
190
+ pane's full 24px. */
184
191
  @media (max-width: 40rem) {
185
192
  :scope[rows] [data-preview-row] {
186
193
  grid-template-columns: 1fr;
@@ -189,6 +196,10 @@
189
196
  border-inline-start: none;
190
197
  border-block-start: var(--preview-border);
191
198
  }
199
+ [data-preview-code] code-ui {
200
+ --code-py: var(--a-space-4);
201
+ --code-px: var(--a-space-4);
202
+ }
192
203
  }
193
204
  /* Content-driven fallback — a single row whose live sample is wider than the
194
205
  half-width cell gets [data-stack] from the component's overflow check, so it
@@ -22,7 +22,7 @@
22
22
  "default": null
23
23
  },
24
24
  "variant": {
25
- "description": "Render mode — `bar` (default) or `spinner`. For fill color set the `--progress-fill` token (defaults to `--a-accent`); there is no variant-as-color (use the token).",
25
+ "description": "Render mode — `bar` (default) or `spinner`. For fill color set the `--progress-fill` token (defaults to `--md-sys-color-primary`); there is no variant-as-color (use the token).",
26
26
  "type": "string",
27
27
  "enum": [
28
28
  "bar",
@@ -2,7 +2,7 @@
2
2
  :where(:scope) {
3
3
  /* -- Tokens -- */
4
4
  --progress-track: var(--a-bg-muted);
5
- --progress-fill: var(--a-accent);
5
+ --progress-fill: var(--md-sys-color-primary);
6
6
  --progress-height: 0.375rem;
7
7
  --progress-radius: var(--a-radius-full);
8
8
  --progress-duration: var(--a-duration);
@@ -15,6 +15,6 @@ import { UIElement } from '../../core/element.js';
15
15
  export class UIProgress extends UIElement {
16
16
  /** Current progress. 0..max (or 0..1 when max omitted). null = indeterminate (legacy -1 accepted for back-compat). */
17
17
  value: number;
18
- /** Render mode — `bar` (default) or `spinner`. For fill color set the `--progress-fill` token (defaults to `--a-accent`); there is no variant-as-color (use the token). */
18
+ /** Render mode — `bar` (default) or `spinner`. For fill color set the `--progress-fill` token (defaults to `--md-sys-color-primary`); there is no variant-as-color (use the token). */
19
19
  variant: 'bar' | 'spinner';
20
20
  }
@@ -18,7 +18,7 @@ props:
18
18
  default: null
19
19
  variant:
20
20
  description: Render mode — `bar` (default) or `spinner`. For fill color set
21
- the `--progress-fill` token (defaults to `--a-accent`); there is no
21
+ the `--progress-fill` token (defaults to `--md-sys-color-primary`); there is no
22
22
  variant-as-color (use the token).
23
23
  type: string
24
24
  default: bar
@@ -6,12 +6,12 @@
6
6
  --progress-row-gap: var(--a-space-2);
7
7
  --progress-row-column-gap: var(--a-space-2);
8
8
  --progress-row-label-size: var(--a-ui-size);
9
- --progress-row-label-fg: var(--a-fg);
9
+ --progress-row-label-fg: var(--md-sys-color-neutral-on-surface);
10
10
  --progress-row-meta-size: var(--a-ui-sm);
11
11
  --progress-row-meta-fg: var(--a-fg-muted);
12
12
 
13
13
  /* Fill color piped into nested progress-ui via its own token */
14
- --progress-row-fill-bg: var(--a-accent-bg);
14
+ --progress-row-fill-bg: var(--a-primary-bg);
15
15
  text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
16
16
  }
17
17
 
@@ -29,14 +29,14 @@ radio-ui[checked] [slot="dot"]::after {
29
29
  /* ── Colors ── */
30
30
  --radio-bg: var(--a-ui-bg);
31
31
  --radio-border: var(--a-ui-border);
32
- --radio-border-hover: var(--a-fg-subtle);
32
+ --radio-border-hover: var(--md-sys-color-neutral-on-surface-variant);
33
33
  --radio-bg-hover: var(--a-bg-muted);
34
34
 
35
35
  /* ── State: checked ── */
36
- --radio-bg-checked: var(--a-primary);
37
- --radio-border-checked: var(--a-primary);
36
+ --radio-bg-checked: var(--md-sys-color-primary);
37
+ --radio-border-checked: var(--md-sys-color-primary);
38
38
  --radio-fg-checked: var(--a-chrome-light);
39
- --radio-bg-checked-hover: var(--a-primary-hover);
39
+ --radio-bg-checked-hover: var(--md-sys-color-primary-hover);
40
40
 
41
41
  /* ── State: disabled ── */
42
42
  --radio-fg-disabled: var(--a-ui-text-disabled);
@@ -13,7 +13,7 @@ range-ui:not([disabled]) [slot="field"]:hover [data-layer="fill"] {
13
13
  --range-fill-bg-hover: var(--a-ui-bg-hover);
14
14
  --range-fill-bg-active: var(--a-ui-bg-active);
15
15
  --range-fill-bg-disabled: var(--a-canvas-muted);
16
- --range-fill-fg: var(--a-fg);
16
+ --range-fill-fg: var(--md-sys-color-neutral-on-surface);
17
17
  --range-fill-fg-disabled: var(--a-ui-text-disabled);
18
18
  --range-fill-label-fg: var(--a-ui-text-subtle);
19
19
  --range-border: var(--a-ui-border);
@@ -40,7 +40,7 @@ range-ui:not([disabled]) [slot="field"]:hover [data-layer="fill"] {
40
40
  --range-layer-gap: var(--a-space-1);
41
41
 
42
42
  /* ── Hover text ── */
43
- --range-label-fg-hover: var(--a-fg-subtle);
43
+ --range-label-fg-hover: var(--md-sys-color-neutral-on-surface-variant);
44
44
 
45
45
  text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
46
46
  }
@@ -81,8 +81,8 @@ rating-ui:hover [data-rating-symbol] {
81
81
 
82
82
  /* ── Variants override TOKENS only ── */
83
83
  :scope[variant="accent"] {
84
- --rating-fg-filled: var(--a-accent-bg);
85
- --rating-fg-hover: var(--a-accent-bg);
84
+ --rating-fg-filled: var(--a-primary-bg);
85
+ --rating-fg-hover: var(--a-primary-bg);
86
86
  }
87
87
  :scope[variant="warning"] {
88
88
  --rating-fg-filled: var(--a-warning-bg);
@@ -35,6 +35,10 @@ export class UIRichText extends UIElement {
35
35
  // would bloat the DOM (and break parsing on multi-line content with
36
36
  // unescaped quotes). The property is the source of truth.
37
37
  markdown: { type: String, default: '', reflect: false },
38
+ // TKT-0004 added the CSS ([flush] paragraph-grade embedding mode) and
39
+ // the yaml prop but never registered it here — `el.flush = true` was a
40
+ // silent no-op (dogfood-status static-properties-vs-yaml finding).
41
+ flush: { type: Boolean, default: false, reflect: true },
38
42
  };
39
43
 
40
44
  static template = () => null;
@@ -12,13 +12,13 @@
12
12
 
13
13
  /* ── Colors ── */
14
14
  --richtext-bg: var(--a-canvas-0);
15
- --richtext-fg: var(--a-fg);
15
+ --richtext-fg: var(--md-sys-color-neutral-on-surface);
16
16
  --richtext-fg-muted: var(--a-fg-muted);
17
- --richtext-fg-subtle: var(--a-fg-subtle);
17
+ --richtext-fg-subtle: var(--md-sys-color-neutral-on-surface-variant);
18
18
  --richtext-code-bg: var(--a-canvas-2);
19
- --richtext-border: var(--a-border-subtle);
20
- --richtext-link: var(--a-accent-bg);
21
- --richtext-link-hover: var(--a-accent);
19
+ --richtext-border: var(--md-sys-color-neutral-outline-variant);
20
+ --richtext-link: var(--a-primary-bg);
21
+ --richtext-link-hover: var(--md-sys-color-primary);
22
22
 
23
23
  /* ── Typography ── */
24
24
  --richtext-font: var(--a-font-family);
@@ -33,6 +33,7 @@ props:
33
33
  off for standalone articles and chat transcripts.
34
34
  type: boolean
35
35
  default: false
36
+ reflect: true
36
37
  events: {}
37
38
  slots:
38
39
  default:
@@ -8,7 +8,7 @@
8
8
  --row-gap: var(--a-gap-self, var(--a-gap));
9
9
  --row-justify: flex-start;
10
10
  --row-align: center;
11
- --row-drag-bg-active: var(--a-accent-muted);
11
+ --row-drag-bg-active: var(--md-sys-color-primary-container);
12
12
  }
13
13
 
14
14
  :scope {
@@ -274,7 +274,7 @@ select-ui [slot="listbox"] {
274
274
  padding: var(--a-space-1);
275
275
  border: 1px solid var(--a-ui-border);
276
276
  border-radius: var(--a-radius);
277
- background: var(--a-canvas-bright);
277
+ background: var(--md-sys-color-neutral-surface-bright);
278
278
  box-shadow: var(--a-shadow-lg);
279
279
  max-height: 15rem;
280
280
  overflow-y: auto;
@@ -356,7 +356,7 @@ select-ui [role="option"] img[data-option-avatar] {
356
356
  /* Separator */
357
357
  select-ui [data-separator] {
358
358
  height: 1px;
359
- background: var(--a-border-subtle);
359
+ background: var(--md-sys-color-neutral-outline-variant);
360
360
  margin: var(--a-space-1) 0;
361
361
  border: none;
362
362
  }
@@ -402,7 +402,7 @@ select-ui [role="group"] [slot="group-label"] {
402
402
 
403
403
  /* Divider between groups — enabled by <select-ui divider>. */
404
404
  select-ui[divider] [role="group"] + [role="group"] {
405
- border-top: 1px solid var(--a-border-subtle);
405
+ border-top: 1px solid var(--md-sys-color-neutral-outline-variant);
406
406
  margin-top: var(--a-space-1);
407
407
  padding-top: var(--a-space-1);
408
408
  }
@@ -426,7 +426,7 @@ select-ui [slot="listbox"] [data-select-all] {
426
426
  align-items: center;
427
427
  justify-content: flex-end;
428
428
  padding: var(--a-space-1);
429
- border-bottom: 1px solid var(--a-border-subtle);
429
+ border-bottom: 1px solid var(--md-sys-color-neutral-outline-variant);
430
430
  margin-bottom: var(--a-space-1);
431
431
  }
432
432
  select-ui [slot="listbox"] [data-select-all-btn] {
@@ -435,7 +435,7 @@ select-ui [slot="listbox"] [data-select-all-btn] {
435
435
  border: none;
436
436
  font: inherit;
437
437
  font-size: var(--a-ui-xs);
438
- color: var(--a-accent);
438
+ color: var(--md-sys-color-primary);
439
439
  cursor: pointer;
440
440
  padding: var(--a-space-1) var(--a-space-2);
441
441
  border-radius: var(--a-radius-sm);
@@ -460,7 +460,7 @@ select-ui [role="option"][data-multi-option] [data-checkbox] {
460
460
  height: 1rem;
461
461
  border: 1px solid var(--a-ui-border);
462
462
  border-radius: var(--a-radius-sm);
463
- background: var(--a-canvas-bright);
463
+ background: var(--md-sys-color-neutral-surface-bright);
464
464
  margin-inline-end: 0; /* row gap already provides spacing */
465
465
  transition:
466
466
  background var(--a-duration-fast) var(--a-easing),
@@ -476,8 +476,8 @@ select-ui [role="option"][data-multi-option] [data-checkbox] icon-ui {
476
476
  transition: color var(--a-duration-fast) var(--a-easing);
477
477
  }
478
478
  select-ui [role="option"][data-multi-option][aria-selected="true"] [data-checkbox] {
479
- background: var(--a-accent);
480
- border-color: var(--a-accent);
479
+ background: var(--md-sys-color-primary);
480
+ border-color: var(--md-sys-color-primary);
481
481
  }
482
482
  select-ui [role="option"][data-multi-option][aria-selected="true"] [data-checkbox] icon-ui {
483
483
  color: var(--a-chrome-light);