@adia-ai/web-components 0.7.3 → 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 (136) hide show
  1. package/CHANGELOG.md +22 -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.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/foundation/space.css +19 -18
  132. package/styles/host.css +48 -0
  133. package/styles/prose.css +187 -173
  134. package/styles/type/scale.css +6 -0
  135. package/styles/typography.css +10 -5
  136. package/styles/verse.css +122 -0
@@ -1,26 +1,26 @@
1
1
  @scope (table-toolbar-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Layout ── */
4
- --table-toolbar-gap-default: var(--a-space-3);
5
- --table-toolbar-py-default: var(--a-space-2);
6
- --table-toolbar-px-default: 0;
7
- --table-toolbar-cluster-gap-default: var(--a-space-2);
4
+ --table-toolbar-gap: var(--a-space-3);
5
+ --table-toolbar-py: var(--a-space-2);
6
+ --table-toolbar-px: 0;
7
+ --table-toolbar-cluster-gap: var(--a-space-2);
8
8
 
9
9
  /* ── Surface ── */
10
- --table-toolbar-bg-default: transparent;
11
- --table-toolbar-border-default: transparent;
12
- --table-toolbar-border-width-default: 0;
13
- --table-toolbar-radius-default: var(--a-radius-lg);
10
+ --table-toolbar-bg: transparent;
11
+ --table-toolbar-border: transparent;
12
+ --table-toolbar-border-width: 0;
13
+ --table-toolbar-radius: var(--a-radius-lg);
14
14
 
15
15
  /* ── Title ── */
16
- --table-toolbar-title-fg-default: var(--a-fg-strong);
17
- --table-toolbar-title-size-default: var(--a-ui-lg);
18
- --table-toolbar-title-weight-default: var(--a-weight-medium);
19
- --table-toolbar-title-gap-default: var(--a-space-2);
16
+ --table-toolbar-title-fg: var(--a-fg-strong);
17
+ --table-toolbar-title-size: var(--a-ui-lg);
18
+ --table-toolbar-title-weight: var(--a-weight-medium);
19
+ --table-toolbar-title-gap: var(--a-space-2);
20
20
 
21
21
  /* ── Search ── */
22
- --table-toolbar-search-min-default: 14rem;
23
- --table-toolbar-search-max-default: 22rem;
22
+ --table-toolbar-search-min: 14rem;
23
+ --table-toolbar-search-max: 22rem;
24
24
 
25
25
  /* Popover tokens removed — popover escapes to top layer and
26
26
  cannot inherit @scope tokens. Raw --a-* tokens are used
@@ -40,11 +40,11 @@
40
40
  display: flex;
41
41
  flex-direction: row;
42
42
  align-items: center;
43
- gap: var(--table-toolbar-gap, var(--table-toolbar-gap-default));
44
- padding: var(--table-toolbar-py, var(--table-toolbar-py-default)) var(--table-toolbar-px, var(--table-toolbar-px-default));
45
- background: var(--table-toolbar-bg, var(--table-toolbar-bg-default));
46
- border: var(--table-toolbar-border-width, var(--table-toolbar-border-width-default)) solid var(--table-toolbar-border, var(--table-toolbar-border-default));
47
- border-radius: var(--table-toolbar-radius, var(--table-toolbar-radius-default));
43
+ gap: var(--table-toolbar-gap);
44
+ padding: var(--table-toolbar-py) var(--table-toolbar-px);
45
+ background: var(--table-toolbar-bg);
46
+ border: var(--table-toolbar-border-width) solid var(--table-toolbar-border);
47
+ border-radius: var(--table-toolbar-radius);
48
48
  min-width: 0;
49
49
  }
50
50
 
@@ -54,11 +54,11 @@
54
54
  base styles". */
55
55
 
56
56
  :scope[variant="card"] {
57
- --table-toolbar-bg-default: var(--a-bg);
58
- --table-toolbar-border-default: var(--a-border-subtle);
59
- --table-toolbar-border-width-default: 1px;
60
- --table-toolbar-py-default: var(--a-space-3);
61
- --table-toolbar-px-default: var(--a-space-4);
57
+ --table-toolbar-bg: var(--a-bg);
58
+ --table-toolbar-border: var(--a-border-subtle);
59
+ --table-toolbar-border-width: 1px;
60
+ --table-toolbar-py: var(--a-space-3);
61
+ --table-toolbar-px: var(--a-space-4);
62
62
  }
63
63
 
64
64
  /* ═══════ Title cluster ═══════ */
@@ -66,15 +66,15 @@
66
66
  [data-title] {
67
67
  display: inline-flex;
68
68
  align-items: center;
69
- gap: var(--table-toolbar-title-gap, var(--table-toolbar-title-gap-default));
69
+ gap: var(--table-toolbar-title-gap);
70
70
  flex: 0 0 auto;
71
71
  min-width: 0;
72
72
  }
73
73
 
74
74
  [data-heading] {
75
- font-size: var(--table-toolbar-title-size, var(--table-toolbar-title-size-default));
76
- font-weight: var(--table-toolbar-title-weight, var(--table-toolbar-title-weight-default));
77
- color: var(--table-toolbar-title-fg, var(--table-toolbar-title-fg-default));
75
+ font-size: var(--table-toolbar-title-size);
76
+ font-weight: var(--table-toolbar-title-weight);
77
+ color: var(--table-toolbar-title-fg);
78
78
  line-height: 1.2;
79
79
  }
80
80
 
@@ -85,7 +85,7 @@
85
85
  [data-controls] {
86
86
  display: inline-flex;
87
87
  align-items: center;
88
- gap: var(--table-toolbar-cluster-gap, var(--table-toolbar-cluster-gap-default));
88
+ gap: var(--table-toolbar-cluster-gap);
89
89
  flex: 0 0 auto;
90
90
  }
91
91
 
@@ -94,9 +94,9 @@
94
94
  /* ═══════ Search ═══════ */
95
95
 
96
96
  [data-search] {
97
- flex: 1 1 var(--table-toolbar-search-min, var(--table-toolbar-search-min-default));
97
+ flex: 1 1 var(--table-toolbar-search-min);
98
98
  min-width: 0;
99
- max-width: var(--table-toolbar-search-max, var(--table-toolbar-search-max-default));
99
+ max-width: var(--table-toolbar-search-max);
100
100
  margin-inline-start: auto;
101
101
  }
102
102
 
@@ -107,7 +107,7 @@
107
107
  [data-actions] {
108
108
  display: inline-flex;
109
109
  align-items: center;
110
- gap: var(--table-toolbar-cluster-gap, var(--table-toolbar-cluster-gap-default));
110
+ gap: var(--table-toolbar-cluster-gap);
111
111
  flex: 0 0 auto;
112
112
  }
113
113
 
@@ -132,7 +132,7 @@
132
132
  border-radius: var(--a-radius);
133
133
  box-shadow: var(--a-shadow-lg);
134
134
  min-width: 16rem;
135
- font-family: inherit;
135
+ font-family: var(--table-toolbar-font-family, var(--a-font-family-ui));
136
136
  font-size: var(--a-ui-size);
137
137
  display: flex;
138
138
  flex-direction: column;
@@ -1,38 +1,39 @@
1
1
  @scope (tabs-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Tokens ── */
4
- --tabs-border-default: transparent;
5
- --tabs-bg-default: transparent;
6
- --tabs-radius-default: var(--a-radius-md);
7
- --tabs-button-height-default: var(--a-size);
8
- --tabs-button-px-default: var(--a-space-2);
9
- --tabs-font-size-default: var(--a-ui-md);
10
- --tabs-gap-default: var(--a-space-1);
11
- --tabs-indicator-color-default: var(--a-primary);
12
- --tabs-indicator-height-default: 2px;
13
- --tabs-fg-default: var(--a-fg-subtle);
14
- --tabs-fg-hover-default: var(--a-fg);
15
- --tabs-fg-active-default: var(--a-fg-selected);
16
- --tabs-fg-disabled-default: var(--a-ui-text-disabled);
4
+ --tabs-border: transparent;
5
+ --tabs-bg: transparent;
6
+ --tabs-radius: var(--a-radius-md);
7
+ --tabs-button-height: var(--a-size);
8
+ --tabs-button-px: var(--a-space-2);
9
+ --tabs-font-size: var(--a-ui-md);
10
+ --tabs-font-family: var(--a-font-family-ui);
11
+ --tabs-gap: var(--a-space-1);
12
+ --tabs-indicator-color: var(--a-primary);
13
+ --tabs-indicator-height: 2px;
14
+ --tabs-fg: var(--a-fg-subtle);
15
+ --tabs-fg-hover: var(--a-fg);
16
+ --tabs-fg-active: var(--a-fg-selected);
17
+ --tabs-fg-disabled: var(--a-ui-text-disabled);
17
18
 
18
19
  /* ── Spacing ── */
19
- --tabs-vertical-gap-default: var(--a-space-4);
20
- --tabs-button-gap-default: var(--a-space-1);
20
+ --tabs-vertical-gap: var(--a-space-4);
21
+ --tabs-button-gap: var(--a-space-1);
21
22
 
22
23
  /* ── Transitions ── */
23
- --tabs-duration-default: var(--a-duration);
24
- --tabs-duration-fast-default: var(--a-duration-fast);
25
- --tabs-easing-default: var(--a-easing);
26
- --tabs-easing-out-default: var(--a-easing-out);
24
+ --tabs-duration: var(--a-duration);
25
+ --tabs-duration-fast: var(--a-duration-fast);
26
+ --tabs-easing: var(--a-easing);
27
+ --tabs-easing-out: var(--a-easing-out);
27
28
 
28
29
  /* ── Focus ── */
29
- --tabs-focus-ring-default: var(--a-focus-ring);
30
- --tabs-focus-radius-default: var(--a-radius-sm);
30
+ --tabs-focus-ring: var(--a-focus-ring);
31
+ --tabs-focus-radius: var(--a-radius-sm);
31
32
 
32
33
  /* ── Vertical strip min-width ── */
33
34
  /* Component-intrinsic visual constant; no --a-space-* equivalent
34
35
  (8.75rem ≈ 140px at 1rem=16px). */
35
- --tabs-vertical-strip-min-width-default: 8.75rem;
36
+ --tabs-vertical-strip-min-width: 8.75rem;
36
37
  }
37
38
 
38
39
  :scope {
@@ -40,29 +41,29 @@
40
41
  box-sizing: border-box;
41
42
  display: flex;
42
43
  flex-direction: column;
43
- background: var(--tabs-bg, var(--tabs-bg-default));
44
- border-radius: var(--tabs-radius, var(--tabs-radius-default));
44
+ background: var(--tabs-bg);
45
+ border-radius: var(--tabs-radius);
45
46
  }
46
47
 
47
48
  /* Bordered variant — baseline border under the tab strip.
48
49
  The active indicator sits on top of the border for a clean join. */
49
- :scope[variant="bordered"] { --tabs-border-default: var(--a-border-subtle); }
50
- :scope[divider] { --tabs-border-default: var(--a-border-subtle); }
50
+ :scope[variant="bordered"] { --tabs-border: var(--a-border-subtle); }
51
+ :scope[divider] { --tabs-border: var(--a-border-subtle); }
51
52
 
52
53
  /* Vertical orientation: strip on the left, panels on the right */
53
54
  :scope[orientation="vertical"] {
54
55
  flex-direction: row;
55
56
  align-items: flex-start;
56
- gap: var(--tabs-vertical-gap, var(--tabs-vertical-gap-default));
57
+ gap: var(--tabs-vertical-gap);
57
58
  }
58
59
 
59
60
  /* ── Button strip ── */
60
61
  [slot="strip"] {
61
62
  box-sizing: border-box;
62
63
  display: flex;
63
- gap: var(--tabs-gap, var(--tabs-gap-default));
64
- height: var(--tabs-button-height, var(--tabs-button-height-default));
65
- box-shadow: inset 0 -1px 0 var(--tabs-border, var(--tabs-border-default));
64
+ gap: var(--tabs-gap);
65
+ height: var(--tabs-button-height);
66
+ box-shadow: inset 0 -1px 0 var(--tabs-border);
66
67
  position: relative;
67
68
  }
68
69
 
@@ -70,9 +71,9 @@
70
71
  flex-direction: column;
71
72
  align-items: stretch;
72
73
  height: auto;
73
- box-shadow: inset 1px 0 0 var(--tabs-border, var(--tabs-border-default));
74
+ box-shadow: inset 1px 0 0 var(--tabs-border);
74
75
  flex-shrink: 0;
75
- min-width: var(--tabs-vertical-strip-min-width, var(--tabs-vertical-strip-min-width-default));
76
+ min-width: var(--tabs-vertical-strip-min-width);
76
77
  }
77
78
 
78
79
  /* ── Sliding indicator ── */
@@ -80,24 +81,24 @@
80
81
  position: absolute;
81
82
  bottom: 0;
82
83
  left: 0;
83
- height: var(--tabs-indicator-height, var(--tabs-indicator-height-default));
84
- background: var(--tabs-indicator-color, var(--tabs-indicator-color-default));
85
- border-radius: var(--tabs-indicator-height, var(--tabs-indicator-height-default));
84
+ height: var(--tabs-indicator-height);
85
+ background: var(--tabs-indicator-color);
86
+ border-radius: var(--tabs-indicator-height);
86
87
  pointer-events: none;
87
88
  transition:
88
- transform var(--tabs-duration, var(--tabs-duration-default)) var(--tabs-easing-out, var(--tabs-easing-out-default)),
89
- width var(--tabs-duration, var(--tabs-duration-default)) var(--tabs-easing-out, var(--tabs-easing-out-default));
89
+ transform var(--tabs-duration) var(--tabs-easing-out),
90
+ width var(--tabs-duration) var(--tabs-easing-out);
90
91
  }
91
92
 
92
93
  :scope[orientation="vertical"] [slot="indicator"] {
93
94
  bottom: auto;
94
95
  left: -1px;
95
96
  top: 0;
96
- width: var(--tabs-indicator-height, var(--tabs-indicator-height-default));
97
+ width: var(--tabs-indicator-height);
97
98
  height: auto;
98
99
  transition:
99
- transform var(--tabs-duration, var(--tabs-duration-default)) var(--tabs-easing-out, var(--tabs-easing-out-default)),
100
- height var(--tabs-duration, var(--tabs-duration-default)) var(--tabs-easing-out, var(--tabs-easing-out-default));
100
+ transform var(--tabs-duration) var(--tabs-easing-out),
101
+ height var(--tabs-duration) var(--tabs-easing-out);
101
102
  }
102
103
 
103
104
  /* Vertical panel area takes remaining space */
@@ -111,19 +112,21 @@
111
112
  box-sizing: border-box;
112
113
  display: inline-flex;
113
114
  align-items: center;
114
- gap: var(--tabs-button-gap, var(--tabs-button-gap-default));
115
- height: var(--tabs-button-height, var(--tabs-button-height-default));
116
- padding-inline: var(--tabs-button-px, var(--tabs-button-px-default));
115
+ gap: var(--tabs-button-gap);
116
+ height: var(--tabs-button-height);
117
+ padding-inline: var(--tabs-button-px);
117
118
  border: none;
118
119
  background: none;
119
- color: var(--tabs-fg, var(--tabs-fg-default));
120
+ color: var(--tabs-fg);
120
121
  font: inherit;
121
- font-size: var(--tabs-font-size, var(--tabs-font-size-default));
122
+ /* font-family floor — see segment.css rationale. */
123
+ font-family: var(--tabs-font-family);
124
+ font-size: var(--tabs-font-size);
122
125
  line-height: 1;
123
126
  cursor: pointer;
124
127
  user-select: none;
125
128
  white-space: nowrap;
126
- transition: color var(--tabs-duration-fast, var(--tabs-duration-fast-default)) var(--tabs-easing, var(--tabs-easing-default));
129
+ transition: color var(--tabs-duration-fast) var(--tabs-easing);
127
130
  }
128
131
 
129
132
  :scope[orientation="vertical"] [slot="tab-button"] {
@@ -133,23 +136,23 @@
133
136
  }
134
137
 
135
138
  [slot="tab-button"]:not([disabled]):hover {
136
- color: var(--tabs-fg-hover, var(--tabs-fg-hover-default));
139
+ color: var(--tabs-fg-hover);
137
140
  }
138
141
 
139
142
  [slot="tab-button"][data-active] {
140
- color: var(--tabs-fg-active, var(--tabs-fg-active-default));
143
+ color: var(--tabs-fg-active);
141
144
  }
142
145
 
143
146
  [slot="tab-button"][disabled] {
144
- color: var(--tabs-fg-disabled, var(--tabs-fg-disabled-default));
147
+ color: var(--tabs-fg-disabled);
145
148
  cursor: not-allowed;
146
149
  pointer-events: none;
147
150
  }
148
151
 
149
152
  [slot="tab-button"]:focus-visible {
150
153
  outline: none;
151
- box-shadow: var(--tabs-focus-ring, var(--tabs-focus-ring-default));
152
- border-radius: var(--tabs-focus-radius, var(--tabs-focus-radius-default));
154
+ box-shadow: var(--tabs-focus-ring);
155
+ border-radius: var(--tabs-focus-radius);
153
156
  }
154
157
 
155
158
  /* ── Tab panels ── */
@@ -1,31 +1,32 @@
1
1
  /* Safari 17.x bug: `:scope[attr]:hover` inside `@scope` doesn't match the
2
2
  scope root. Plain selector outside works. See docs/BROWSER-COMPAT.md §3a. */
3
3
  tag-ui[removable]:not([disabled]):hover {
4
- --tag-bg-default: var(--tag-bg-hover, var(--tag-bg-hover-default));
4
+ --tag-bg: var(--tag-bg-hover);
5
5
  }
6
6
 
7
7
  @scope (tag-ui) {
8
8
  :where(:scope) {
9
9
  /* ── Tokens ── */
10
- --tag-bg-default: var(--a-bg-muted);
11
- --tag-fg-default: var(--a-fg);
12
- --tag-border-default: transparent;
13
- --tag-radius-default: var(--a-radius-full);
14
- --tag-px-default: var(--a-space-2);
15
- --tag-py-default: 0.125rem;
16
- --tag-gap-default: var(--a-space-1);
17
- --tag-font-default: var(--a-ui-sm);
18
- --tag-dismiss-size-default: 1rem;
19
- --tag-bg-hover-default: var(--a-bg-hover);
20
- --tag-bg-disabled-default: var(--a-ui-bg-disabled);
21
- --tag-fg-disabled-default: var(--a-ui-text-disabled);
10
+ --tag-bg: var(--a-bg-muted);
11
+ --tag-fg: var(--a-fg);
12
+ --tag-border: transparent;
13
+ --tag-radius: var(--a-radius-full);
14
+ --tag-px: var(--a-space-2);
15
+ --tag-py: 0.125rem;
16
+ --tag-gap: var(--a-space-1);
17
+ --tag-font: var(--a-ui-sm);
18
+ --tag-font-family: var(--a-font-family-ui);
19
+ --tag-dismiss-size: 1rem;
20
+ --tag-bg-hover: var(--a-bg-hover);
21
+ --tag-bg-disabled: var(--a-ui-bg-disabled);
22
+ --tag-fg-disabled: var(--a-ui-text-disabled);
22
23
 
23
24
  /* ── Focus ── */
24
- --tag-focus-ring-default: var(--a-focus-ring);
25
+ --tag-focus-ring: var(--a-focus-ring);
25
26
 
26
27
  /* ── Motion ── */
27
- --tag-duration-default: var(--a-duration-fast);
28
- --tag-easing-default: var(--a-easing);
28
+ --tag-duration: var(--a-duration-fast);
29
+ --tag-easing: var(--a-easing);
29
30
 
30
31
  /* ── Dismiss ──
31
32
  Rest = inherit the host's text color at reduced opacity (so the X
@@ -37,11 +38,11 @@ tag-ui[removable]:not([disabled]):hover {
37
38
  Pre-v0.6.36 used `--a-fg-muted` / `--a-fg` directly, which gave
38
39
  a neutral-grey X on saturated solid pills — the X disappeared
39
40
  against the variant bg. */
40
- --tag-dismiss-radius-default: var(--a-radius-full);
41
- --tag-dismiss-fg-default: currentColor;
42
- --tag-dismiss-opacity-default: 0.85;
43
- --tag-dismiss-opacity-hover-default: 1;
44
- --tag-dismiss-bg-hover-default: color-mix(in oklch, currentColor 18%, transparent);
41
+ --tag-dismiss-radius: var(--a-radius-full);
42
+ --tag-dismiss-fg: currentColor;
43
+ --tag-dismiss-opacity: 0.85;
44
+ --tag-dismiss-opacity-hover: 1;
45
+ --tag-dismiss-bg-hover: color-mix(in oklch, currentColor 18%, transparent);
45
46
  text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
46
47
  }
47
48
 
@@ -50,19 +51,21 @@ tag-ui[removable]:not([disabled]):hover {
50
51
  box-sizing: border-box;
51
52
  display: inline-flex;
52
53
  align-items: center;
53
- gap: var(--tag-gap, var(--tag-gap-default));
54
- padding: var(--tag-py, var(--tag-py-default)) var(--tag-px, var(--tag-px-default));
55
- border-radius: var(--tag-radius, var(--tag-radius-default));
56
- border: 1px solid var(--tag-border, var(--tag-border-default));
54
+ gap: var(--tag-gap);
55
+ padding: var(--tag-py) var(--tag-px);
56
+ border-radius: var(--tag-radius);
57
+ border: 1px solid var(--tag-border);
57
58
  font: inherit;
58
- font-size: var(--tag-font, var(--tag-font-default));
59
+ /* font-family floor — see segment.css rationale. */
60
+ font-family: var(--tag-font-family);
61
+ font-size: var(--tag-font);
59
62
  font-weight: 500;
60
63
  line-height: 1;
61
- color: var(--tag-fg, var(--tag-fg-default));
62
- background: var(--tag-bg, var(--tag-bg-default));
64
+ color: var(--tag-fg);
65
+ background: var(--tag-bg);
63
66
  white-space: nowrap;
64
67
  user-select: none;
65
- transition: background var(--tag-duration, var(--tag-duration-default)) var(--tag-easing, var(--tag-easing-default)), color var(--tag-duration, var(--tag-duration-default)) var(--tag-easing, var(--tag-easing-default));
68
+ transition: background var(--tag-duration) var(--tag-easing), color var(--tag-duration) var(--tag-easing);
66
69
  }
67
70
 
68
71
  /* `[text]` attribute selector gates the ::after so consumers using
@@ -81,13 +84,13 @@ tag-ui[removable]:not([disabled]):hover {
81
84
  where the chip IS the state. Opt out per-tag via [tone="muted"] for
82
85
  metadata-chip surfaces in dense lists. */
83
86
  :scope[variant="info"] {
84
- --tag-bg-default: var(--a-info-bg);
85
- --tag-fg-default: var(--a-info-fg);
87
+ --tag-bg: var(--a-info-bg);
88
+ --tag-fg: var(--a-info-fg);
86
89
  }
87
90
 
88
91
  :scope[variant="success"] {
89
- --tag-bg-default: var(--a-success-bg);
90
- --tag-fg-default: var(--a-success-fg);
92
+ --tag-bg: var(--a-success-bg);
93
+ --tag-fg: var(--a-success-fg);
91
94
  }
92
95
 
93
96
  /* `--a-warning-bg` is the bright-amber step (semantics.css L3 redirect
@@ -95,21 +98,21 @@ tag-ui[removable]:not([disabled]):hover {
95
98
  canonical caution-tape pair. Pre-v0.6.36 this rule had a local
96
99
  `-20-tint` override; that workaround moved to the token system. */
97
100
  :scope[variant="warning"] {
98
- --tag-bg-default: var(--a-warning-bg);
99
- --tag-fg-default: var(--a-warning-fg);
101
+ --tag-bg: var(--a-warning-bg);
102
+ --tag-fg: var(--a-warning-fg);
100
103
  }
101
104
 
102
105
  :scope[variant="danger"] {
103
- --tag-bg-default: var(--a-danger-bg);
104
- --tag-fg-default: var(--a-danger-fg);
106
+ --tag-bg: var(--a-danger-bg);
107
+ --tag-fg: var(--a-danger-fg);
105
108
  }
106
109
 
107
110
  /* `default` (no family) stays as quiet chrome — a stark fg/bg-inverse
108
111
  would be too loud for the no-variant case. Opt in to the inverse
109
112
  stamp via `[tone="solid"]` when you want a high-contrast neutral pill. */
110
113
  :scope[variant="default"] {
111
- --tag-bg-default: var(--a-bg-muted);
112
- --tag-fg-default: var(--a-fg);
114
+ --tag-bg: var(--a-bg-muted);
115
+ --tag-fg: var(--a-fg);
113
116
  }
114
117
 
115
118
  /* ── Tone modifier — orthogonal to [variant] ──
@@ -119,28 +122,28 @@ tag-ui[removable]:not([disabled]):hover {
119
122
  uses as its default. Use on metadata chips in dense lists where the
120
123
  saturated default would compete for attention. */
121
124
  :scope[tone="muted"][variant="info"] {
122
- --tag-bg-default: var(--a-info-muted);
123
- --tag-fg-default: var(--a-info-text);
125
+ --tag-bg: var(--a-info-muted);
126
+ --tag-fg: var(--a-info-text);
124
127
  }
125
128
  :scope[tone="muted"][variant="success"] {
126
- --tag-bg-default: var(--a-success-muted);
127
- --tag-fg-default: var(--a-success-text);
129
+ --tag-bg: var(--a-success-muted);
130
+ --tag-fg: var(--a-success-text);
128
131
  }
129
132
  :scope[tone="muted"][variant="warning"] {
130
- --tag-bg-default: var(--a-warning-muted);
131
- --tag-fg-default: var(--a-warning-text);
133
+ --tag-bg: var(--a-warning-muted);
134
+ --tag-fg: var(--a-warning-text);
132
135
  }
133
136
  :scope[tone="muted"][variant="danger"] {
134
- --tag-bg-default: var(--a-danger-muted);
135
- --tag-fg-default: var(--a-danger-text);
137
+ --tag-bg: var(--a-danger-muted);
138
+ --tag-fg: var(--a-danger-text);
136
139
  }
137
140
 
138
141
  /* `[tone="solid"]` on the neutral default (or no variant) inverts the
139
142
  chrome — solid fg-color bg with bg-color text. High-contrast neutral
140
143
  stamp. Explicit opt-in; the variant-less default stays quiet chrome. */
141
144
  :scope[tone="solid"]:not([variant="info"]):not([variant="success"]):not([variant="warning"]):not([variant="danger"]) {
142
- --tag-bg-default: var(--a-fg);
143
- --tag-fg-default: var(--a-bg);
145
+ --tag-bg: var(--a-fg);
146
+ --tag-fg: var(--a-bg);
144
147
  }
145
148
 
146
149
  /* ── `[tone="outline"]` — transparent bg + family-colored border + text ──
@@ -149,28 +152,28 @@ tag-ui[removable]:not([disabled]):hover {
149
152
  visual weight" — good in dense data tables, faceted filter rows,
150
153
  or anywhere multiple chips would compete if filled. */
151
154
  :scope[tone="outline"] {
152
- --tag-bg-default: transparent;
155
+ --tag-bg: transparent;
153
156
  }
154
157
  :scope[tone="outline"][variant="info"] {
155
- --tag-fg-default: var(--a-info-text);
156
- --tag-border-default: var(--a-info-border);
158
+ --tag-fg: var(--a-info-text);
159
+ --tag-border: var(--a-info-border);
157
160
  }
158
161
  :scope[tone="outline"][variant="success"] {
159
- --tag-fg-default: var(--a-success-text);
160
- --tag-border-default: var(--a-success-border);
162
+ --tag-fg: var(--a-success-text);
163
+ --tag-border: var(--a-success-border);
161
164
  }
162
165
  :scope[tone="outline"][variant="warning"] {
163
- --tag-fg-default: var(--a-warning-text);
164
- --tag-border-default: var(--a-warning-border);
166
+ --tag-fg: var(--a-warning-text);
167
+ --tag-border: var(--a-warning-border);
165
168
  }
166
169
  :scope[tone="outline"][variant="danger"] {
167
- --tag-fg-default: var(--a-danger-text);
168
- --tag-border-default: var(--a-danger-border);
170
+ --tag-fg: var(--a-danger-text);
171
+ --tag-border: var(--a-danger-border);
169
172
  }
170
173
  /* Outline on neutral (no family) — fg-muted text + subtle border. */
171
174
  :scope[tone="outline"]:not([variant="info"]):not([variant="success"]):not([variant="warning"]):not([variant="danger"]) {
172
- --tag-fg-default: var(--a-fg-muted);
173
- --tag-border-default: var(--a-border);
175
+ --tag-fg: var(--a-fg-muted);
176
+ --tag-border: var(--a-border);
174
177
  }
175
178
 
176
179
  /* Size handled by universal [size] attribute system. */
@@ -180,7 +183,7 @@ tag-ui[removable]:not([disabled]):hover {
180
183
  /* ── Focus ── */
181
184
  :scope:focus-visible {
182
185
  outline: none;
183
- box-shadow: var(--tag-focus-ring, var(--tag-focus-ring-default));
186
+ box-shadow: var(--tag-focus-ring);
184
187
  }
185
188
 
186
189
  /* ── Slotted icons (leading) ──
@@ -197,29 +200,29 @@ tag-ui[removable]:not([disabled]):hover {
197
200
  display: inline-flex;
198
201
  align-items: center;
199
202
  justify-content: center;
200
- width: var(--tag-dismiss-size, var(--tag-dismiss-size-default));
201
- height: var(--tag-dismiss-size, var(--tag-dismiss-size-default));
203
+ width: var(--tag-dismiss-size);
204
+ height: var(--tag-dismiss-size);
202
205
  padding: 0;
203
206
  border: none;
204
207
  background: none;
205
208
  cursor: pointer;
206
- border-radius: var(--tag-dismiss-radius, var(--tag-dismiss-radius-default));
207
- color: var(--tag-dismiss-fg, var(--tag-dismiss-fg-default));
208
- opacity: var(--tag-dismiss-opacity, var(--tag-dismiss-opacity-default));
209
+ border-radius: var(--tag-dismiss-radius);
210
+ color: var(--tag-dismiss-fg);
211
+ opacity: var(--tag-dismiss-opacity);
209
212
  --a-icon-size: 0.875rem;
210
213
  order: 1; /* push dismiss to end so layout reads [text] [×] */
211
- transition: opacity var(--tag-duration, var(--tag-duration-default)) var(--tag-easing, var(--tag-easing-default)), background var(--tag-duration, var(--tag-duration-default)) var(--tag-easing, var(--tag-easing-default));
214
+ transition: opacity var(--tag-duration) var(--tag-easing), background var(--tag-duration) var(--tag-easing);
212
215
  }
213
216
 
214
217
  [slot="dismiss"]:hover {
215
- opacity: var(--tag-dismiss-opacity-hover, var(--tag-dismiss-opacity-hover-default));
216
- background: var(--tag-dismiss-bg-hover, var(--tag-dismiss-bg-hover-default));
218
+ opacity: var(--tag-dismiss-opacity-hover);
219
+ background: var(--tag-dismiss-bg-hover);
217
220
  }
218
221
 
219
222
  /* ── Disabled ── */
220
223
  :scope[disabled] {
221
- --tag-bg-default: var(--tag-bg-disabled, var(--tag-bg-disabled-default));
222
- --tag-fg-default: var(--tag-fg-disabled, var(--tag-fg-disabled-default));
224
+ --tag-bg: var(--tag-bg-disabled);
225
+ --tag-fg: var(--tag-fg-disabled);
223
226
  pointer-events: none;
224
227
  }
225
228
  }