@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
@@ -1,9 +1,9 @@
1
1
  @scope (search-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Tokens ── */
4
- --search-radius-default: var(--a-radius);
5
- --search-duration-default: var(--a-duration-fast);
6
- --search-easing-default: var(--a-easing);
4
+ --search-radius: var(--a-radius);
5
+ --search-duration: var(--a-duration-fast);
6
+ --search-easing: var(--a-easing);
7
7
  text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
8
8
  }
9
9
 
@@ -19,11 +19,11 @@
19
19
  }
20
20
 
21
21
  [slot="suffix"] {
22
- transition: opacity var(--search-duration, var(--search-duration-default)) var(--search-easing, var(--search-easing-default));
22
+ transition: opacity var(--search-duration) var(--search-easing);
23
23
  }
24
24
 
25
25
  /* Override input-ui radius to pill for search */
26
26
  input-ui {
27
- --input-radius: var(--search-radius, var(--search-radius-default));
27
+ --input-radius: var(--search-radius);
28
28
  }
29
29
  }
@@ -2,35 +2,36 @@
2
2
  (Flavor B — attribute-removal restyle) both fail inside `@scope`.
3
3
  Selectors moved out. See docs/BROWSER-COMPAT.md §3a. */
4
4
  segment-ui:not([disabled]):not([selected]):hover {
5
- color: var(--segment-fg-hover, var(--segment-fg-hover-default));
5
+ color: var(--segment-fg-hover);
6
6
  }
7
7
  segment-ui[selected] {
8
- color: var(--segment-fg-selected, var(--segment-fg-selected-default));
8
+ color: var(--segment-fg-selected);
9
9
  }
10
10
 
11
11
  @scope (segment-ui) {
12
12
  :where(:scope) {
13
13
  /* ── Layout ── */
14
- --segment-px-default: var(--a-ui-px);
15
- --segment-gap-default: var(--a-space-1);
16
- --segment-radius-default: calc(var(--a-radius) - 2px);
14
+ --segment-px: var(--a-ui-px);
15
+ --segment-gap: var(--a-space-1);
16
+ --segment-radius: calc(var(--a-radius) - 2px);
17
17
 
18
18
  /* ── Typography ── */
19
- --segment-font-size-default: var(--a-ui-size);
20
- --segment-font-weight-default: var(--a-ui-weight);
19
+ --segment-font-size: var(--a-ui-size);
20
+ --segment-font-weight: var(--a-ui-weight);
21
+ --segment-font-family: var(--a-font-family-ui);
21
22
 
22
23
  /* ── Colors ── */
23
- --segment-fg-default: var(--a-ui-text-subtle);
24
- --segment-fg-hover-default: var(--a-ui-text-hover);
25
- --segment-fg-selected-default: var(--a-chrome-dark);
26
- --segment-fg-disabled-default: var(--a-ui-text-disabled);
24
+ --segment-fg: var(--a-ui-text-subtle);
25
+ --segment-fg-hover: var(--a-ui-text-hover);
26
+ --segment-fg-selected: var(--a-chrome-dark);
27
+ --segment-fg-disabled: var(--a-ui-text-disabled);
27
28
 
28
29
  /* ── Transition ── */
29
- --segment-duration-default: var(--a-duration-fast);
30
- --segment-easing-default: var(--a-easing);
30
+ --segment-duration: var(--a-duration-fast);
31
+ --segment-easing: var(--a-easing);
31
32
 
32
33
  /* ── Focus ── */
33
- --segment-focus-ring-default: var(--a-focus-ring);
34
+ --segment-focus-ring: var(--a-focus-ring);
34
35
  }
35
36
 
36
37
  :scope {
@@ -41,15 +42,19 @@ segment-ui[selected] {
41
42
  justify-content: center;
42
43
  align-self: stretch;
43
44
  min-width: 0;
44
- gap: var(--segment-gap, var(--segment-gap-default));
45
+ gap: var(--segment-gap);
45
46
 
46
- padding-inline: var(--segment-px, var(--segment-px-default));
47
+ padding-inline: var(--segment-px);
47
48
 
48
49
  font: inherit;
49
- font-size: var(--segment-font-size, var(--segment-font-size-default));
50
- font-weight: var(--segment-font-weight, var(--segment-font-weight-default));
50
+ /* font-family floor — `font: inherit` alone has no default, so a broken
51
+ inherited font (e.g. serif host doc) leaks straight through. Anchor to
52
+ the UI font; overridable via --segment-font-family. */
53
+ font-family: var(--segment-font-family);
54
+ font-size: var(--segment-font-size);
55
+ font-weight: var(--segment-font-weight);
51
56
  line-height: 1;
52
- color: var(--segment-fg, var(--segment-fg-default));
57
+ color: var(--segment-fg);
53
58
  white-space: nowrap;
54
59
  overflow: hidden;
55
60
  text-overflow: ellipsis;
@@ -59,12 +64,12 @@ segment-ui[selected] {
59
64
  z-index: 1;
60
65
  cursor: pointer;
61
66
  user-select: none;
62
- border-radius: var(--segment-radius, var(--segment-radius-default));
67
+ border-radius: var(--segment-radius);
63
68
  background: transparent;
64
69
 
65
70
  transition:
66
- color var(--segment-duration, var(--segment-duration-default)) var(--segment-easing, var(--segment-easing-default)),
67
- background var(--segment-duration, var(--segment-duration-default)) var(--segment-easing, var(--segment-easing-default));
71
+ color var(--segment-duration) var(--segment-easing),
72
+ background var(--segment-duration) var(--segment-easing);
68
73
  }
69
74
 
70
75
  /* Text rendered via ::after so consumers can drive label via [text].
@@ -93,11 +98,11 @@ segment-ui[selected] {
93
98
 
94
99
  :scope:focus-visible {
95
100
  outline: none;
96
- box-shadow: var(--segment-focus-ring, var(--segment-focus-ring-default));
101
+ box-shadow: var(--segment-focus-ring);
97
102
  }
98
103
 
99
104
  :scope[disabled] {
100
- color: var(--segment-fg-disabled, var(--segment-fg-disabled-default));
105
+ color: var(--segment-fg-disabled);
101
106
  cursor: not-allowed;
102
107
  pointer-events: none;
103
108
  }
@@ -1,26 +1,27 @@
1
1
  @scope (segmented-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Layout ── */
4
- --segmented-height-default: var(--a-size);
4
+ --segmented-height: var(--a-size);
5
5
  /* Component-intrinsic visual constants; no --a-space-* equivalent */
6
- --segmented-padding-default: 2px;
7
- --segmented-border-width-default: 0px;
8
- --segmented-inset-default: calc(var(--segmented-padding, var(--segmented-padding-default)) + var(--segmented-border-width, var(--segmented-border-width-default)));
9
- --segmented-radius-default: var(--a-radius);
6
+ --segmented-padding: 2px;
7
+ --segmented-border-width: 0px;
8
+ --segmented-inset: calc(var(--segmented-padding) + var(--segmented-border-width));
9
+ --segmented-radius: var(--a-radius);
10
10
 
11
11
  /* ── Colors ── */
12
- --segmented-bg-default: var(--a-ui-bg);
13
- --segmented-border-default: transparent;
14
- --segmented-indicator-bg-default: var(--a-chrome-light);
15
- --segmented-indicator-shadow-default: var(--a-shadow-sm);
16
- --segmented-indicator-radius-default: calc(var(--segmented-radius, var(--segmented-radius-default)) - var(--segmented-inset, var(--segmented-inset-default)));
12
+ --segmented-bg: var(--a-ui-bg);
13
+ --segmented-border: transparent;
14
+ --segmented-indicator-bg: var(--a-chrome-light);
15
+ --segmented-indicator-shadow: var(--a-shadow-sm);
16
+ --segmented-indicator-radius: calc(var(--segmented-radius) - var(--segmented-inset));
17
17
 
18
18
  /* ── Typography ── */
19
- --segmented-font-size-default: var(--a-ui-size);
19
+ --segmented-font-size: var(--a-ui-size);
20
+ --segmented-font-family: var(--a-font-family-ui);
20
21
 
21
22
  /* ── Transition ── */
22
- --segmented-duration-default: var(--a-duration);
23
- --segmented-easing-default: var(--a-easing-out);
23
+ --segmented-duration: var(--a-duration);
24
+ --segmented-easing: var(--a-easing-out);
24
25
 
25
26
  text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
26
27
  }
@@ -46,13 +47,17 @@
46
47
  isolation: isolate;
47
48
  overflow: hidden;
48
49
 
49
- min-height: var(--segmented-height, var(--segmented-height-default));
50
- padding: var(--segmented-padding, var(--segmented-padding-default));
51
- font-size: var(--segmented-font-size, var(--segmented-font-size-default));
50
+ min-height: var(--segmented-height);
51
+ padding: var(--segmented-padding);
52
+ /* font-family floor — anchor to the UI font so the control keeps its
53
+ AdiaUI identity even if the host page's inherited font is broken/unset
54
+ (e.g. a serif host document). Overridable via --segmented-font-family. */
55
+ font-family: var(--segmented-font-family);
56
+ font-size: var(--segmented-font-size);
52
57
 
53
- background: var(--segmented-bg, var(--segmented-bg-default));
54
- border: var(--segmented-border-width, var(--segmented-border-width-default)) solid var(--segmented-border, var(--segmented-border-default));
55
- border-radius: var(--segmented-radius, var(--segmented-radius-default));
58
+ background: var(--segmented-bg);
59
+ border: var(--segmented-border-width) solid var(--segmented-border);
60
+ border-radius: var(--segmented-radius);
56
61
  }
57
62
 
58
63
  /* Display convention (ADR-0037): block-level by default; [inline] opts back to inline-level. */
@@ -66,16 +71,16 @@
66
71
  :scope[data-indicator-ready] > [data-indicator] {
67
72
  display: block;
68
73
  position: absolute;
69
- inset: var(--segmented-inset, var(--segmented-inset-default));
74
+ inset: var(--segmented-inset);
70
75
  right: auto;
71
- width: calc((100% - var(--segmented-inset, var(--segmented-inset-default)) * 2) / var(--_segment-count));
76
+ width: calc((100% - var(--segmented-inset) * 2) / var(--_segment-count));
72
77
 
73
- background: var(--segmented-indicator-bg, var(--segmented-indicator-bg-default));
74
- border-radius: var(--segmented-indicator-radius, var(--segmented-indicator-radius-default));
75
- box-shadow: var(--segmented-indicator-shadow, var(--segmented-indicator-shadow-default));
78
+ background: var(--segmented-indicator-bg);
79
+ border-radius: var(--segmented-indicator-radius);
80
+ box-shadow: var(--segmented-indicator-shadow);
76
81
  pointer-events: none;
77
82
 
78
- transition: transform var(--segmented-duration, var(--segmented-duration-default)) var(--segmented-easing, var(--segmented-easing-default));
83
+ transition: transform var(--segmented-duration) var(--segmented-easing);
79
84
  }
80
85
 
81
86
  /* Size handled by universal [size] attribute system. */
@@ -1,47 +1,47 @@
1
1
  @scope (select-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Layout ── */
4
- --select-gap-default: var(--a-space-2);
5
- --select-trigger-gap-default: var(--a-space-1);
6
- --select-height-default: var(--a-size);
7
- --select-px-default: var(--a-ui-px);
8
- --select-radius-default: var(--a-radius);
9
- --select-leading-radius-default: var(--a-radius-full);
4
+ --select-gap: var(--a-space-2);
5
+ --select-trigger-gap: var(--a-space-1);
6
+ --select-height: var(--a-size);
7
+ --select-px: var(--a-ui-px);
8
+ --select-radius: var(--a-radius);
9
+ --select-leading-radius: var(--a-radius-full);
10
10
 
11
11
  /* ── Typography ── */
12
- --select-font-size-default: var(--a-ui-size);
13
- --select-label-size-default: var(--a-label-size);
12
+ --select-font-size: var(--a-ui-size);
13
+ --select-label-size: var(--a-label-size);
14
14
 
15
15
  /* ── Colors ── */
16
- --select-bg-default: var(--a-ui-bg);
17
- --select-bg-selected-default: var(--a-ui-bg-selected);
18
- --select-bg-hover-default: var(--a-ui-bg-hover);
19
- --select-border-default: var(--a-ui-border);
20
- --select-border-hover-default: var(--a-ui-border-hover);
21
- --select-focus-ring-default: var(--a-focus-ring);
22
- --select-focus-ring-invalid-default: var(--a-focus-ring-invalid);
23
- --select-label-fg-default: var(--a-ui-text-muted);
24
- --select-placeholder-fg-default: var(--a-ui-text-placeholder);
25
- --select-caret-fg-default: var(--a-ui-text-muted);
26
- --select-fg-default: var(--a-ui-text);
27
- --select-fg-hover-default: var(--a-ui-text-hover);
28
- --select-fg-selected-default: var(--a-ui-text-selected);
29
- --select-fg-subtle-default: var(--a-ui-text-subtle);
30
- --select-fg-muted-default: var(--a-ui-text-muted);
31
- --select-fg-disabled-default: var(--a-ui-text-disabled);
32
- --select-ghost-bg-hover-default: var(--a-bg-muted);
16
+ --select-bg: var(--a-ui-bg);
17
+ --select-bg-selected: var(--a-ui-bg-selected);
18
+ --select-bg-hover: var(--a-ui-bg-hover);
19
+ --select-border: var(--a-ui-border);
20
+ --select-border-hover: var(--a-ui-border-hover);
21
+ --select-focus-ring: var(--a-focus-ring);
22
+ --select-focus-ring-invalid: var(--a-focus-ring-invalid);
23
+ --select-label-fg: var(--a-ui-text-muted);
24
+ --select-placeholder-fg: var(--a-ui-text-placeholder);
25
+ --select-caret-fg: var(--a-ui-text-muted);
26
+ --select-fg: var(--a-ui-text);
27
+ --select-fg-hover: var(--a-ui-text-hover);
28
+ --select-fg-selected: var(--a-ui-text-selected);
29
+ --select-fg-subtle: var(--a-ui-text-subtle);
30
+ --select-fg-muted: var(--a-ui-text-muted);
31
+ --select-fg-disabled: var(--a-ui-text-disabled);
32
+ --select-ghost-bg-hover: var(--a-bg-muted);
33
33
 
34
34
  /* ── Transition ── */
35
- --select-duration-default: var(--a-duration-fast);
36
- --select-easing-default: var(--a-easing);
35
+ --select-duration: var(--a-duration-fast);
36
+ --select-easing: var(--a-easing);
37
37
 
38
38
  /* ── Listbox ── */
39
- --select-option-px-default: var(--a-ui-px);
40
- --select-option-py-default: var(--a-ui-py);
41
- --select-option-bg-hover-default: var(--a-bg-hover);
42
- --select-option-fg-active-default: var(--a-ui-text-active);
43
- --select-option-fg-disabled-default: var(--a-ui-text-disabled);
44
- --select-group-label-size-default: var(--a-ui-size);
39
+ --select-option-px: var(--a-ui-px);
40
+ --select-option-py: var(--a-ui-py);
41
+ --select-option-bg-hover: var(--a-bg-hover);
42
+ --select-option-fg-active: var(--a-ui-text-active);
43
+ --select-option-fg-disabled: var(--a-ui-text-disabled);
44
+ --select-group-label-size: var(--a-ui-size);
45
45
  text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
46
46
  }
47
47
 
@@ -51,9 +51,11 @@
51
51
  position: relative;
52
52
  display: flex;
53
53
  flex-direction: column;
54
- gap: var(--select-gap, var(--select-gap-default));
54
+ gap: var(--select-gap);
55
55
  min-width: 0;
56
- font-size: var(--select-font-size, var(--select-font-size-default));
56
+ /* font-family floor on the host — trigger/native-select/options inherit it. */
57
+ font-family: var(--select-font-family, var(--a-font-family-ui));
58
+ font-size: var(--select-font-size);
57
59
  }
58
60
 
59
61
  :scope[data-direction="row"] {
@@ -61,13 +63,13 @@
61
63
  grid-template-columns: 1fr 1fr;
62
64
  align-items: center;
63
65
  }
64
- :scope[disabled] { pointer-events: none; color: var(--select-fg-disabled, var(--select-fg-disabled-default)); }
66
+ :scope[disabled] { pointer-events: none; color: var(--select-fg-disabled); }
65
67
 
66
68
  /* Label */
67
69
  :scope::before {
68
70
  content: attr(label);
69
- font-size: var(--select-label-size, var(--select-label-size-default));
70
- color: var(--select-label-fg, var(--select-label-fg-default));
71
+ font-size: var(--select-label-size);
72
+ color: var(--select-label-fg);
71
73
  }
72
74
  :scope:not([label])::before,
73
75
  :scope[label=""]::before { display: none; }
@@ -77,42 +79,42 @@
77
79
  display: flex;
78
80
  align-items: center;
79
81
  justify-content: space-between;
80
- gap: var(--select-trigger-gap, var(--select-trigger-gap-default));
82
+ gap: var(--select-trigger-gap);
81
83
  min-width: 0;
82
- min-height: var(--select-height, var(--select-height-default));
83
- padding: 0 var(--select-px, var(--select-px-default));
84
- border: 1px solid var(--select-border, var(--select-border-default));
85
- border-radius: var(--select-radius, var(--select-radius-default));
86
- background: var(--select-bg, var(--select-bg-default));
84
+ min-height: var(--select-height);
85
+ padding: 0 var(--select-px);
86
+ border: 1px solid var(--select-border);
87
+ border-radius: var(--select-radius);
88
+ background: var(--select-bg);
87
89
  line-height: 1;
88
90
  cursor: pointer;
89
91
  /* Match every property the hover / focus / invalid states change. */
90
92
  transition:
91
- background var(--select-duration, var(--select-duration-default)) var(--select-easing, var(--select-easing-default)),
92
- border-color var(--select-duration, var(--select-duration-default)) var(--select-easing, var(--select-easing-default)),
93
- color var(--select-duration, var(--select-duration-default)) var(--select-easing, var(--select-easing-default)),
94
- box-shadow var(--select-duration, var(--select-duration-default)) var(--select-easing, var(--select-easing-default));
93
+ background var(--select-duration) var(--select-easing),
94
+ border-color var(--select-duration) var(--select-easing),
95
+ color var(--select-duration) var(--select-easing),
96
+ box-shadow var(--select-duration) var(--select-easing);
95
97
  }
96
98
  [slot="trigger"]:hover {
97
- border-color: var(--select-border-hover, var(--select-border-hover-default));
98
- background: var(--select-bg-hover, var(--select-bg-hover-default));
99
- color: var(--select-fg, var(--select-fg-default));
99
+ border-color: var(--select-border-hover);
100
+ background: var(--select-bg-hover);
101
+ color: var(--select-fg);
100
102
  }
101
103
  [slot="trigger"]:hover [slot="caret"] {
102
- color: var(--select-fg-subtle, var(--select-fg-subtle-default));
104
+ color: var(--select-fg-subtle);
103
105
  }
104
106
  :scope:focus-visible { outline: none; }
105
107
  :scope:focus-visible [slot="trigger"] {
106
108
  /* Canonical ring via L3 token (see semantics.css FOCUS block). */
107
- box-shadow: var(--select-focus-ring, var(--select-focus-ring-default));
108
- color: var(--select-fg, var(--select-fg-default));
109
+ box-shadow: var(--select-focus-ring);
110
+ color: var(--select-fg);
109
111
  }
110
112
  :scope[aria-invalid="true"]:focus-visible [slot="trigger"],
111
113
  :scope[error]:focus-visible [slot="trigger"] {
112
- box-shadow: var(--select-focus-ring-invalid, var(--select-focus-ring-invalid-default));
114
+ box-shadow: var(--select-focus-ring-invalid);
113
115
  }
114
116
  :scope:focus-visible::before {
115
- color: var(--select-fg-subtle, var(--select-fg-subtle-default));
117
+ color: var(--select-fg-subtle);
116
118
  }
117
119
 
118
120
  /* Leading icon / avatar — inline-flex centers icon content vertically
@@ -122,14 +124,14 @@
122
124
  align-items: center;
123
125
  flex-shrink: 0;
124
126
  line-height: 1;
125
- --a-icon-size: var(--select-font-size, var(--select-font-size-default));
126
- color: var(--select-fg-muted, var(--select-fg-muted-default));
127
+ --a-icon-size: var(--select-font-size);
128
+ color: var(--select-fg-muted);
127
129
  }
128
130
 
129
131
  img[slot="leading"] {
130
- width: var(--select-leading-size, calc(var(--select-height, var(--select-height-default)) - var(--select-gap, var(--select-gap-default))));
131
- height: var(--select-leading-size, calc(var(--select-height, var(--select-height-default)) - var(--select-gap, var(--select-gap-default))));
132
- border-radius: var(--select-leading-radius, var(--select-leading-radius-default));
132
+ width: var(--select-leading-size, calc(var(--select-height) - var(--select-gap)));
133
+ height: var(--select-leading-size, calc(var(--select-height) - var(--select-gap)));
134
+ border-radius: var(--select-leading-radius);
133
135
  object-fit: cover;
134
136
  }
135
137
 
@@ -138,7 +140,7 @@
138
140
  overflow: hidden;
139
141
  text-overflow: ellipsis;
140
142
  white-space: nowrap;
141
- color: var(--select-fg, var(--select-fg-default));
143
+ color: var(--select-fg);
142
144
  }
143
145
  input[slot="display"] {
144
146
  border: none;
@@ -147,23 +149,23 @@
147
149
  padding: 0;
148
150
  margin: 0;
149
151
  font: inherit;
150
- color: var(--select-fg, var(--select-fg-default));
152
+ color: var(--select-fg);
151
153
  min-width: 0;
152
154
  width: 100%;
153
155
  }
154
156
  input[slot="display"]::placeholder {
155
- color: var(--select-placeholder-fg, var(--select-placeholder-fg-default));
157
+ color: var(--select-placeholder-fg);
156
158
  }
157
159
  :scope:not([value]) [slot="display"],
158
160
  :scope[value=""] [slot="display"] {
159
- color: var(--select-placeholder-fg, var(--select-placeholder-fg-default));
161
+ color: var(--select-placeholder-fg);
160
162
  }
161
163
 
162
164
  /* Caret color is held against button-ui's stronger cascade by chaining
163
165
  :scope [slot="trigger"] [slot="caret"] — matches at the same
164
166
  specificity as button-ui's own slot rules without !important. */
165
167
  :scope [slot="trigger"] [slot="caret"] {
166
- color: var(--select-caret-fg, var(--select-caret-fg-default));
168
+ color: var(--select-caret-fg);
167
169
  flex-shrink: 0;
168
170
  }
169
171
 
@@ -171,16 +173,16 @@
171
173
 
172
174
  /* Ghost variant */
173
175
  :scope[variant="ghost"] {
174
- --select-bg-default: transparent;
175
- --select-border-default: transparent;
176
- --select-border-hover-default: transparent;
176
+ --select-bg: transparent;
177
+ --select-border: transparent;
178
+ --select-border-hover: transparent;
177
179
  }
178
180
  :scope[variant="ghost"] [slot="trigger"]:hover {
179
- background: var(--select-ghost-bg-hover, var(--select-ghost-bg-hover-default));
180
- color: var(--select-fg, var(--select-fg-default));
181
+ background: var(--select-ghost-bg-hover);
182
+ color: var(--select-fg);
181
183
  }
182
184
  :scope[variant="ghost"] [slot="trigger"]:hover [slot="caret"] {
183
- color: var(--select-fg-subtle, var(--select-fg-subtle-default));
185
+ color: var(--select-fg-subtle);
184
186
  }
185
187
 
186
188
  /* ── SPEC-040 — Multi-select chip trigger ──
@@ -206,13 +208,13 @@
206
208
  }
207
209
  :scope[data-multi-chips] [data-chips] tag-ui {
208
210
  /* Chip styling tracks the active variant via tag-ui's own tokens. */
209
- --tag-size-default: var(--a-ui-tiny);
211
+ --tag-size: var(--a-ui-tiny);
210
212
  }
211
213
  :scope[data-multi-chips] [data-chips] [data-more] {
212
214
  appearance: none;
213
- border: 1px solid var(--select-border, var(--select-border-default));
214
- background: var(--select-bg-hover, var(--select-bg-hover-default));
215
- color: var(--select-fg-muted, var(--select-fg-muted-default));
215
+ border: 1px solid var(--select-border);
216
+ background: var(--select-bg-hover);
217
+ color: var(--select-fg-muted);
216
218
  border-radius: var(--a-radius-full);
217
219
  padding: 0 var(--a-space-2);
218
220
  font: inherit;
@@ -231,7 +233,7 @@
231
233
  border: none;
232
234
  padding: var(--a-space-0);
233
235
  margin-inline-start: var(--a-space-1);
234
- color: var(--select-fg-muted, var(--select-fg-muted-default));
236
+ color: var(--select-fg-muted);
235
237
  cursor: pointer;
236
238
  border-radius: var(--a-radius-full);
237
239
  --a-icon-size: var(--a-ui-sm);
@@ -240,7 +242,7 @@
240
242
  }
241
243
  :scope[data-multi-chips] [data-clear-all][hidden] { display: none; }
242
244
  :scope[data-multi-chips] [data-clear-all]:hover {
243
- color: var(--select-fg, var(--select-fg-default));
245
+ color: var(--select-fg);
244
246
  background: var(--a-bg-hover);
245
247
  }
246
248
 
@@ -270,7 +272,7 @@ select-ui [slot="listbox"] {
270
272
  overflow-y: auto;
271
273
  font-family: inherit;
272
274
  font-size: var(--a-ui-size);
273
- color: var(--select-fg, var(--select-fg-default));
275
+ color: var(--select-fg);
274
276
 
275
277
  /* Positioned by JS (#positionListbox) — fixed to viewport */
276
278
  width: max-content;
@@ -300,7 +302,7 @@ select-ui [role="option"] {
300
302
  padding: var(--a-space-1) var(--a-ui-px);
301
303
  border-radius: var(--a-radius-sm);
302
304
  white-space: nowrap;
303
- color: var(--select-fg-subtle, var(--select-fg-subtle-default));
305
+ color: var(--select-fg-subtle);
304
306
  cursor: pointer;
305
307
  transition:
306
308
  background var(--a-duration-fast) var(--a-easing),
@@ -308,16 +310,16 @@ select-ui [role="option"] {
308
310
  }
309
311
  select-ui [role="option"]:hover,
310
312
  select-ui [role="option"][data-focused] {
311
- background: var(--select-option-bg-hover, var(--select-option-bg-hover-default));
312
- color: var(--select-fg-hover, var(--select-fg-hover-default));
313
+ background: var(--select-option-bg-hover);
314
+ color: var(--select-fg-hover);
313
315
  }
314
316
  select-ui [role="option"][aria-selected="true"] {
315
- color: var(--select-fg-selected, var(--select-fg-selected-default));
316
- background: var(--select-bg-selected, var(--select-bg-selected-default));
317
+ color: var(--select-fg-selected);
318
+ background: var(--select-bg-selected);
317
319
  font-weight: var(--a-ui-weight);
318
320
  }
319
321
  select-ui [role="option"][aria-disabled="true"] {
320
- color: var(--select-option-fg-disabled, var(--select-option-fg-disabled-default));
322
+ color: var(--select-option-fg-disabled);
321
323
  cursor: not-allowed;
322
324
  }
323
325
  select-ui [role="option"][aria-disabled="true"]:hover {
@@ -327,7 +329,7 @@ select-ui [role="option"][aria-disabled="true"]:hover {
327
329
  /* Option with icon */
328
330
  select-ui [role="option"] icon-ui {
329
331
  --a-icon-size: var(--a-ui-size);
330
- color: var(--select-fg-muted, var(--select-fg-muted-default));
332
+ color: var(--select-fg-muted);
331
333
  margin-inline-end: var(--a-space-1);
332
334
  vertical-align: -0.125em;
333
335
  }
@@ -337,7 +339,7 @@ select-ui [role="option"] icon-ui {
337
339
  select-ui [role="option"] img[data-option-avatar] {
338
340
  width: var(--a-ui-size);
339
341
  height: var(--a-ui-size);
340
- border-radius: var(--select-leading-radius, var(--select-leading-radius-default));
342
+ border-radius: var(--select-leading-radius);
341
343
  object-fit: cover;
342
344
  margin-inline-end: var(--a-space-1);
343
345
  vertical-align: -0.2em;
@@ -370,21 +372,21 @@ select-ui [data-menu-header] img {
370
372
  select-ui [data-menu-header] strong {
371
373
  display: block;
372
374
  font-weight: var(--a-weight-medium);
373
- color: var(--select-fg, var(--select-fg-default));
375
+ color: var(--select-fg);
374
376
  font-size: var(--a-ui-size);
375
377
  }
376
378
 
377
379
  select-ui [data-menu-header] span {
378
380
  display: block;
379
381
  font-size: var(--a-ui-sm);
380
- color: var(--select-fg-muted, var(--select-fg-muted-default));
382
+ color: var(--select-fg-muted);
381
383
  }
382
384
 
383
385
  select-ui [role="group"] [slot="group-label"] {
384
386
  padding: var(--a-space-1) var(--a-ui-px);
385
387
  font-size: var(--a-ui-tiny);
386
388
  font-weight: var(--a-ui-weight);
387
- color: var(--select-fg-muted, var(--select-fg-muted-default));
389
+ color: var(--select-fg-muted);
388
390
  text-transform: uppercase;
389
391
  letter-spacing: 0.05em;
390
392
  white-space: nowrap;
@@ -403,7 +405,7 @@ select-ui [slot="hint"] {
403
405
  display: block;
404
406
  margin-top: var(--select-hint-mt, var(--a-space-1));
405
407
  font-size: var(--select-hint-size, var(--a-ui-xs));
406
- color: var(--select-hint-fg, var(--select-fg-muted, var(--select-fg-muted-default)));
408
+ color: var(--select-hint-fg, var(--select-fg-muted));
407
409
  line-height: var(--select-hint-lh, 1.4);
408
410
  }
409
411
 
@@ -482,11 +484,11 @@ select-ui [role="option"][data-multi-option] [data-option-label] {
482
484
  select-ui [role="option"][data-multi-option][aria-selected="true"] {
483
485
  background: transparent;
484
486
  font-weight: inherit;
485
- color: var(--select-fg, var(--select-fg-default));
487
+ color: var(--select-fg);
486
488
  }
487
489
  select-ui [role="option"][data-multi-option][aria-selected="true"]:hover,
488
490
  select-ui [role="option"][data-multi-option][aria-selected="true"][data-focused] {
489
- background: var(--select-option-bg-hover, var(--select-option-bg-hover-default));
491
+ background: var(--select-option-bg-hover);
490
492
  }
491
493
 
492
494
  /* Empty state when there are no options. */
@@ -1,11 +1,11 @@
1
1
  @scope (skeleton-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Tokens ── */
4
- --skeleton-bg-default: var(--a-bg-muted);
5
- --skeleton-highlight-default: var(--a-bg-subtle);
6
- --skeleton-radius-default: var(--a-radius-sm);
7
- --skeleton-duration-default: 1.5s;
8
- --skeleton-easing-default: var(--a-easing);
4
+ --skeleton-bg: var(--a-bg-muted);
5
+ --skeleton-highlight: var(--a-bg-subtle);
6
+ --skeleton-radius: var(--a-radius-sm);
7
+ --skeleton-duration: 1.5s;
8
+ --skeleton-easing: var(--a-easing);
9
9
  }
10
10
 
11
11
  :scope {
@@ -14,16 +14,16 @@
14
14
  display: block;
15
15
  position: relative;
16
16
  overflow: hidden;
17
- background: var(--skeleton-bg, var(--skeleton-bg-default));
18
- border-radius: var(--skeleton-radius, var(--skeleton-radius-default));
17
+ background: var(--skeleton-bg);
18
+ border-radius: var(--skeleton-radius);
19
19
  }
20
20
 
21
21
  /* ── Radius variants ── */
22
- :scope[radius="none"] { --skeleton-radius-default: 0; }
23
- :scope[radius="sm"] { --skeleton-radius-default: var(--a-radius-sm); }
24
- :scope[radius="md"] { --skeleton-radius-default: var(--a-radius-md); }
25
- :scope[radius="lg"] { --skeleton-radius-default: var(--a-radius-lg); }
26
- :scope[radius="full"] { --skeleton-radius-default: var(--a-radius-full); }
22
+ :scope[radius="none"] { --skeleton-radius: 0; }
23
+ :scope[radius="sm"] { --skeleton-radius: var(--a-radius-sm); }
24
+ :scope[radius="md"] { --skeleton-radius: var(--a-radius-md); }
25
+ :scope[radius="lg"] { --skeleton-radius: var(--a-radius-lg); }
26
+ :scope[radius="full"] { --skeleton-radius: var(--a-radius-full); }
27
27
 
28
28
  /* ── Shimmer animation (default; suppress with [static]) ── */
29
29
  :scope:not([static])::after {
@@ -33,11 +33,11 @@
33
33
  background: linear-gradient(
34
34
  90deg,
35
35
  transparent 25%,
36
- var(--skeleton-highlight, var(--skeleton-highlight-default)) 50%,
36
+ var(--skeleton-highlight) 50%,
37
37
  transparent 75%
38
38
  );
39
39
  background-size: 200% 100%;
40
- animation: skeleton-shimmer var(--skeleton-duration, var(--skeleton-duration-default)) var(--skeleton-easing, var(--skeleton-easing-default)) infinite;
40
+ animation: skeleton-shimmer var(--skeleton-duration) var(--skeleton-easing) infinite;
41
41
  }
42
42
 
43
43
  @keyframes skeleton-shimmer {