@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,38 +1,38 @@
1
1
  @scope (nav-group-ui) {
2
2
  :where(:scope) {
3
- --nav-group-row-height-default: var(--a-size);
4
- --nav-group-row-height-sm-default: var(--a-size-sm);
5
- --nav-group-row-height-lg-default: var(--a-size-lg);
6
- --nav-group-row-px-default: var(--a-ui-px);
7
- --nav-group-row-gap-default: var(--a-space-1);
8
- --nav-group-row-radius-default: var(--a-radius-md);
9
- --nav-group-font-size-default: var(--a-ui-size);
10
- --nav-group-font-size-sm-default: var(--a-ui-sm);
11
- --nav-group-font-size-lg-default: var(--a-ui-lg);
12
- --nav-group-font-weight-default: var(--a-weight-normal);
13
- --nav-group-fg-default: var(--a-fg);
14
- --nav-group-fg-hover-default: var(--a-fg-strong);
15
- --nav-group-fg-muted-default: var(--a-fg-muted);
16
- --nav-group-fg-selected-default: var(--a-fg-strong);
17
- --nav-group-bg-hover-default: var(--a-bg-muted);
18
- --nav-group-icon-size-default: calc(var(--nav-group-row-height, var(--nav-group-row-height-default)) - var(--a-space-2));
19
- --nav-group-badge-size-default: var(--a-ui-sm);
3
+ --nav-group-row-height: var(--a-size);
4
+ --nav-group-row-height-sm: var(--a-size-sm);
5
+ --nav-group-row-height-lg: var(--a-size-lg);
6
+ --nav-group-row-px: var(--a-ui-px);
7
+ --nav-group-row-gap: var(--a-space-1);
8
+ --nav-group-row-radius: var(--a-radius-md);
9
+ --nav-group-font-size: var(--a-ui-size);
10
+ --nav-group-font-size-sm: var(--a-ui-sm);
11
+ --nav-group-font-size-lg: var(--a-ui-lg);
12
+ --nav-group-font-weight: var(--a-weight-normal);
13
+ --nav-group-fg: var(--a-fg);
14
+ --nav-group-fg-hover: var(--a-fg-strong);
15
+ --nav-group-fg-muted: var(--a-fg-muted);
16
+ --nav-group-fg-selected: var(--a-fg-strong);
17
+ --nav-group-bg-hover: var(--a-bg-muted);
18
+ --nav-group-icon-size: calc(var(--nav-group-row-height) - var(--a-space-2));
19
+ --nav-group-badge-size: var(--a-ui-sm);
20
20
 
21
21
  --nav-item-child-height: var(--a-size-sm);
22
- --nav-item-child-font: var(--nav-group-font-size, var(--nav-group-font-size-default));
22
+ --nav-item-child-font: var(--nav-group-font-size);
23
23
  }
24
24
 
25
25
  :scope {
26
26
  box-sizing: border-box;
27
27
  display: flex;
28
28
  flex-direction: column;
29
- /* Fallback to --nav-gap-default (cascaded from the ancestor nav-ui
29
+ /* Fallback to --nav-gap (cascaded from the ancestor nav-ui
30
30
  where it's defined) so child nav-items get the spec spacing even
31
31
  when the override token --nav-gap isn't explicitly set. Without
32
32
  the fallback `var(--nav-gap)` resolved to empty → invalid gap →
33
33
  items packed at 0 px stride. Reported 2026-05-25; latent since
34
34
  Apr-20 snapshot. */
35
- gap: var(--nav-gap, var(--nav-gap-default, var(--a-space-1)));
35
+ gap: var(--nav-gap, var(--a-space-1));
36
36
  position: relative;
37
37
  font-weight: var(--nav-group-text-weight);
38
38
  }
@@ -41,29 +41,29 @@
41
41
  :scope[open]::after {
42
42
  content: '';
43
43
  position: absolute;
44
- left: calc(var(--nav-group-row-px, var(--nav-group-row-px-default)) + var(--nav-group-icon-size, var(--nav-group-icon-size-default)) / 2);
44
+ left: calc(var(--nav-group-row-px) + var(--nav-group-icon-size) / 2);
45
45
  transform: translateX(-50%);
46
- top: var(--nav-group-row-height, var(--nav-group-row-height-default));
47
- bottom: calc(var(--nav-group-row-height, var(--nav-group-row-height-default)) / 2);
46
+ top: var(--nav-group-row-height);
47
+ bottom: calc(var(--nav-group-row-height) / 2);
48
48
  width: 1px;
49
49
  background: var(--nav-group-indent-rail-bg);
50
50
  pointer-events: none;
51
51
  }
52
52
  :scope[open] > [slot="header"],
53
53
  :scope[open] > [slot="header"] [slot="icon"] {
54
- color: var(--nav-group-fg-selected, var(--nav-group-fg-selected-default));
54
+ color: var(--nav-group-fg-selected);
55
55
  }
56
56
 
57
57
  /* Header row */
58
58
  [slot="header"] {
59
59
  display: flex;
60
60
  align-items: center;
61
- gap: var(--nav-group-row-gap, var(--nav-group-row-gap-default));
62
- height: var(--nav-group-row-height, var(--nav-group-row-height-default));
63
- padding: 0 var(--nav-group-row-px, var(--nav-group-row-px-default));
64
- border-radius: var(--nav-group-row-radius, var(--nav-group-row-radius-default));
65
- font-size: var(--nav-group-font-size, var(--nav-group-font-size-default));
66
- color: var(--nav-group-fg, var(--nav-group-fg-default));
61
+ gap: var(--nav-group-row-gap);
62
+ height: var(--nav-group-row-height);
63
+ padding: 0 var(--nav-group-row-px);
64
+ border-radius: var(--nav-group-row-radius);
65
+ font-size: var(--nav-group-font-size);
66
+ color: var(--nav-group-fg);
67
67
  cursor: pointer;
68
68
  user-select: none;
69
69
  white-space: nowrap;
@@ -74,25 +74,25 @@
74
74
  }
75
75
 
76
76
  [slot="header"]:hover {
77
- background: var(--nav-group-bg-hover, var(--nav-group-bg-hover-default));
78
- color: var(--nav-group-fg-hover, var(--nav-group-fg-hover-default));
77
+ background: var(--nav-group-bg-hover);
78
+ color: var(--nav-group-fg-hover);
79
79
  }
80
80
 
81
81
  [slot="header"]:hover [slot="icon"] {
82
- color: var(--nav-group-fg-hover, var(--nav-group-fg-hover-default));
82
+ color: var(--nav-group-fg-hover);
83
83
  }
84
84
 
85
85
  [slot="header"]:focus-visible {
86
- background: var(--nav-group-bg-hover, var(--nav-group-bg-hover-default));
87
- color: var(--nav-group-fg-hover, var(--nav-group-fg-hover-default));
86
+ background: var(--nav-group-bg-hover);
87
+ color: var(--nav-group-fg-hover);
88
88
  outline: none;
89
89
  }
90
90
 
91
91
  [slot="header"] [slot="icon"] {
92
- width: var(--nav-group-icon-size, var(--nav-group-icon-size-default));
93
- height: var(--nav-group-icon-size, var(--nav-group-icon-size-default));
92
+ width: var(--nav-group-icon-size);
93
+ height: var(--nav-group-icon-size);
94
94
  flex-shrink: 0;
95
- color: var(--nav-group-fg-muted, var(--nav-group-fg-muted-default));
95
+ color: var(--nav-group-fg-muted);
96
96
  transition: color var(--nav-duration-fast) var(--nav-easing);
97
97
  display: flex;
98
98
  align-items: center;
@@ -112,8 +112,8 @@
112
112
  }
113
113
 
114
114
  [slot="header"] [slot="badge"] {
115
- font-size: var(--nav-group-badge-size, var(--nav-group-badge-size-default));
116
- color: var(--nav-group-fg-muted, var(--nav-group-fg-muted-default));
115
+ font-size: var(--nav-group-badge-size);
116
+ color: var(--nav-group-fg-muted);
117
117
  background: var(--nav-group-badge-bg);
118
118
  padding: 1px var(--nav-group-badge-px);
119
119
  border-radius: var(--nav-group-badge-radius);
@@ -122,7 +122,7 @@
122
122
 
123
123
  [slot="header"] [slot="caret"] {
124
124
  /*--a-icon-size: 0.5rem;*/
125
- color: var(--nav-group-fg-muted, var(--nav-group-fg-muted-default));
125
+ color: var(--nav-group-fg-muted);
126
126
  transition:
127
127
  transform var(--nav-duration-fast) var(--nav-easing),
128
128
  color var(--nav-duration-fast) var(--nav-easing);
@@ -133,7 +133,7 @@
133
133
  }
134
134
 
135
135
  [slot="header"]:hover [slot="caret"] {
136
- color: var(--nav-group-fg-hover, var(--nav-group-fg-hover-default));
136
+ color: var(--nav-group-fg-hover);
137
137
  }
138
138
 
139
139
  :scope:not([open]) > [slot="header"] [slot="caret"] {
@@ -198,13 +198,13 @@
198
198
 
199
199
  /* ── Size variants ── */
200
200
  :scope[size="sm"] {
201
- --nav-group-row-height-default: var(--nav-group-row-height-sm, var(--nav-group-row-height-sm-default));
202
- --nav-group-font-size-default: var(--nav-group-font-size-sm, var(--nav-group-font-size-sm-default));
201
+ --nav-group-row-height: var(--nav-group-row-height-sm);
202
+ --nav-group-font-size: var(--nav-group-font-size-sm);
203
203
  }
204
204
 
205
205
  :scope[size="lg"] {
206
- --nav-group-row-height-default: var(--nav-group-row-height-lg, var(--nav-group-row-height-lg-default));
207
- --nav-group-font-size-default: var(--nav-group-font-size-lg, var(--nav-group-font-size-lg-default));
206
+ --nav-group-row-height: var(--nav-group-row-height-lg);
207
+ --nav-group-font-size: var(--nav-group-font-size-lg);
208
208
  }
209
209
  }
210
210
 
@@ -228,7 +228,7 @@ nav-group-ui [slot="popover"] {
228
228
  nav-group-ui [slot="popover-label"] {
229
229
  padding: var(--a-space-1) var(--a-space-2);
230
230
  font-weight: var(--a-weight-medium);
231
- color: var(--nav-group-fg-muted, var(--nav-group-fg-muted-default));
231
+ color: var(--nav-group-fg-muted);
232
232
  font-size: var(--a-ui-tiny);
233
233
  text-transform: uppercase;
234
234
  letter-spacing: 0.06em;
@@ -237,7 +237,7 @@ nav-group-ui [slot="popover-label"] {
237
237
  nav-group-ui [slot="popover"] [role="option"] {
238
238
  padding: var(--a-space-1) var(--a-space-2);
239
239
  border-radius: var(--a-radius);
240
- color: var(--nav-group-fg-muted, var(--nav-group-fg-muted-default));
240
+ color: var(--nav-group-fg-muted);
241
241
  cursor: pointer;
242
242
  white-space: nowrap;
243
243
  transition:
@@ -246,8 +246,8 @@ nav-group-ui [slot="popover"] [role="option"] {
246
246
  }
247
247
 
248
248
  nav-group-ui [slot="popover"] [role="option"]:hover {
249
- background: var(--nav-group-bg-hover, var(--nav-group-bg-hover-default));
250
- color: var(--nav-group-fg-hover, var(--nav-group-fg-hover-default));
249
+ background: var(--nav-group-bg-hover);
250
+ color: var(--nav-group-fg-hover);
251
251
  }
252
252
 
253
253
  /* Selected / current option — mirrors the main rail's nav-item selection:
@@ -255,8 +255,8 @@ nav-group-ui [slot="popover"] [role="option"]:hover {
255
255
  nav-group-ui [slot="popover"] [role="option"][aria-current="page"],
256
256
  nav-group-ui [slot="popover"] [role="option"][aria-selected="true"] {
257
257
  position: relative;
258
- background: var(--nav-group-bg-hover, var(--nav-group-bg-hover-default));
259
- color: var(--nav-group-fg-selected, var(--nav-group-fg-selected-default));
258
+ background: var(--nav-group-bg-hover);
259
+ color: var(--nav-group-fg-selected);
260
260
  font-weight: var(--a-weight-medium);
261
261
  }
262
262
 
@@ -289,7 +289,7 @@ nav-ui[variant="section"] > nav-group-ui:not([variant]) > [slot="header"] {
289
289
  padding: var(--a-space-3) var(--a-space-2) var(--a-space-1);
290
290
  font-size: var(--a-kicker-sm, var(--a-ui-tiny));
291
291
  font-weight: var(--a-weight-medium);
292
- color: var(--nav-group-fg-muted, var(--nav-group-fg-muted-default));
292
+ color: var(--nav-group-fg-muted);
293
293
  text-transform: uppercase;
294
294
  letter-spacing: 0.06em;
295
295
  cursor: default;
@@ -301,7 +301,7 @@ nav-group-ui[variant="section"] > [slot="header"]:focus-visible,
301
301
  nav-ui[variant="section"] > nav-group-ui:not([variant]) > [slot="header"]:hover,
302
302
  nav-ui[variant="section"] > nav-group-ui:not([variant]) > [slot="header"]:focus-visible {
303
303
  background: transparent;
304
- color: var(--nav-group-fg-muted, var(--nav-group-fg-muted-default));
304
+ color: var(--nav-group-fg-muted);
305
305
  }
306
306
 
307
307
  nav-group-ui[variant="section"] > [slot="header"] [slot="caret"],
@@ -6,49 +6,49 @@
6
6
  consumers extending below the floor and is harmlessly redundant on
7
7
  engines without the bug. */
8
8
  nav-item-ui:hover {
9
- background: var(--nav-item-bg-hover, var(--nav-item-bg-hover-default));
10
- color: var(--nav-item-fg-hover, var(--nav-item-fg-hover-default));
9
+ background: var(--nav-item-bg-hover);
10
+ color: var(--nav-item-fg-hover);
11
11
  }
12
12
  nav-item-ui:hover [slot="icon"] {
13
- color: var(--nav-item-fg-hover, var(--nav-item-fg-hover-default));
13
+ color: var(--nav-item-fg-hover);
14
14
  }
15
15
  nav-item-ui[selected] {
16
- background: var(--nav-item-bg-selected, var(--nav-item-bg-selected-default));
17
- color: var(--nav-item-fg-selected, var(--nav-item-fg-selected-default));
16
+ background: var(--nav-item-bg-selected);
17
+ color: var(--nav-item-fg-selected);
18
18
  }
19
19
  nav-item-ui[selected] [slot="icon"] {
20
- color: var(--nav-item-icon-fg-selected, var(--nav-item-icon-fg-selected-default));
20
+ color: var(--nav-item-icon-fg-selected);
21
21
  }
22
22
  nav-item-ui[selected] [slot="icon"]:empty::before {
23
23
  content: '';
24
24
  width: 2px;
25
25
  height: 1em;
26
26
  border-radius: 1px;
27
- background: var(--nav-item-accent, var(--nav-item-accent-default));
27
+ background: var(--nav-item-accent);
28
28
  }
29
29
 
30
30
  @scope (nav-item-ui) {
31
31
  :where(:scope) {
32
- --nav-item-accent-default: var(--a-accent);
33
- --nav-item-row-height-default: var(--a-size);
34
- --nav-item-row-height-sm-default: var(--a-size-sm);
35
- --nav-item-row-height-lg-default: var(--a-size-lg);
36
- --nav-item-row-px-default: var(--a-ui-px);
37
- --nav-item-row-gap-default: var(--a-space-1);
38
- --nav-item-row-radius-default: var(--a-radius-md);
39
- --nav-item-font-size-default: var(--a-ui-size);
40
- --nav-item-font-size-sm-default: var(--a-ui-sm);
41
- --nav-item-font-size-lg-default: var(--a-ui-lg);
42
- --nav-item-font-weight-default: var(--a-weight-normal);
43
- --nav-item-fg-default: var(--a-ui-text-subtle);
44
- --nav-item-fg-hover-default: var(--a-ui-text-hover);
45
- --nav-item-fg-selected-default: var(--a-ui-text-selected);
46
- --nav-item-icon-fg-default: var(--a-ui-text-muted);
47
- --nav-item-icon-fg-selected-default: var(--nav-item-accent, var(--nav-item-accent-default));
48
- --nav-item-bg-hover-default: var(--a-ui-bg-hover);
49
- --nav-item-bg-selected-default: var(--a-ui-bg-selected);
50
- --nav-item-icon-size-default: calc(var(--nav-item-row-height, var(--nav-item-row-height-default)) - var(--a-space-2));
51
- --nav-item-badge-size-default: var(--a-ui-sm);
32
+ --nav-item-accent: var(--a-accent);
33
+ --nav-item-row-height: var(--a-size);
34
+ --nav-item-row-height-sm: var(--a-size-sm);
35
+ --nav-item-row-height-lg: var(--a-size-lg);
36
+ --nav-item-row-px: var(--a-ui-px);
37
+ --nav-item-row-gap: var(--a-space-1);
38
+ --nav-item-row-radius: var(--a-radius-md);
39
+ --nav-item-font-size: var(--a-ui-size);
40
+ --nav-item-font-size-sm: var(--a-ui-sm);
41
+ --nav-item-font-size-lg: var(--a-ui-lg);
42
+ --nav-item-font-weight: var(--a-weight-normal);
43
+ --nav-item-fg: var(--a-ui-text-subtle);
44
+ --nav-item-fg-hover: var(--a-ui-text-hover);
45
+ --nav-item-fg-selected: var(--a-ui-text-selected);
46
+ --nav-item-icon-fg: var(--a-ui-text-muted);
47
+ --nav-item-icon-fg-selected: var(--nav-item-accent);
48
+ --nav-item-bg-hover: var(--a-ui-bg-hover);
49
+ --nav-item-bg-selected: var(--a-ui-bg-selected);
50
+ --nav-item-icon-size: calc(var(--nav-item-row-height) - var(--a-space-2));
51
+ --nav-item-badge-size: var(--a-ui-sm);
52
52
  text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
53
53
  }
54
54
 
@@ -56,12 +56,12 @@ nav-item-ui[selected] [slot="icon"]:empty::before {
56
56
  box-sizing: border-box;
57
57
  display: flex;
58
58
  align-items: center;
59
- gap: var(--nav-item-row-gap, var(--nav-item-row-gap-default));
60
- height: var(--nav-item-row-height, var(--nav-item-row-height-default));
61
- padding: 0 var(--nav-item-row-px, var(--nav-item-row-px-default));
62
- border-radius: var(--nav-item-row-radius, var(--nav-item-row-radius-default));
63
- font-size: var(--nav-item-font-size, var(--nav-item-font-size-default));
64
- color: var(--nav-item-fg, var(--nav-item-fg-default));
59
+ gap: var(--nav-item-row-gap);
60
+ height: var(--nav-item-row-height);
61
+ padding: 0 var(--nav-item-row-px);
62
+ border-radius: var(--nav-item-row-radius);
63
+ font-size: var(--nav-item-font-size);
64
+ color: var(--nav-item-fg);
65
65
  cursor: pointer;
66
66
  user-select: none;
67
67
  white-space: nowrap;
@@ -69,12 +69,12 @@ nav-item-ui[selected] [slot="icon"]:empty::before {
69
69
  background var(--nav-duration-fast) var(--nav-easing),
70
70
  color var(--nav-duration-fast) var(--nav-easing);
71
71
  outline: none;
72
- font-weight: var(--nav-item-font-weight, var(--nav-item-font-weight-default));
72
+ font-weight: var(--nav-item-font-weight);
73
73
  }
74
74
 
75
75
  :scope:focus-visible {
76
- background: var(--nav-item-bg-hover, var(--nav-item-bg-hover-default));
77
- color: var(--nav-item-fg-hover, var(--nav-item-fg-hover-default));
76
+ background: var(--nav-item-bg-hover);
77
+ color: var(--nav-item-fg-hover);
78
78
  outline: none;
79
79
  }
80
80
 
@@ -82,13 +82,13 @@ nav-item-ui[selected] [slot="icon"]:empty::before {
82
82
 
83
83
  /* Icon slot — always present, reserves space even when empty */
84
84
  [slot="icon"] {
85
- width: var(--nav-item-icon-size, var(--nav-item-icon-size-default));
86
- height: var(--nav-item-icon-size, var(--nav-item-icon-size-default));
85
+ width: var(--nav-item-icon-size);
86
+ height: var(--nav-item-icon-size);
87
87
  flex-shrink: 0;
88
88
  display: flex;
89
89
  align-items: center;
90
90
  justify-content: center;
91
- color: var(--nav-item-icon-fg, var(--nav-item-icon-fg-default));
91
+ color: var(--nav-item-icon-fg);
92
92
  transition: color var(--nav-duration-fast) var(--nav-easing);
93
93
  }
94
94
 
@@ -106,7 +106,7 @@ nav-item-ui[selected] [slot="icon"]:empty::before {
106
106
  }
107
107
 
108
108
  [slot="badge"] {
109
- font-size: var(--nav-item-badge-size, var(--nav-item-badge-size-default));
109
+ font-size: var(--nav-item-badge-size);
110
110
  color: var(--nav-item-badge-fg);
111
111
  background: var(--nav-item-badge-bg);
112
112
  padding: 1px var(--nav-item-badge-px);
@@ -153,13 +153,13 @@ nav-item-ui[selected] [slot="icon"]:empty::before {
153
153
 
154
154
  /* ── Size variants ── */
155
155
  :scope[size="sm"] {
156
- --nav-item-row-height-default: var(--nav-item-row-height-sm, var(--nav-item-row-height-sm-default));
157
- --nav-item-font-size-default: var(--nav-item-font-size-sm, var(--nav-item-font-size-sm-default));
156
+ --nav-item-row-height: var(--nav-item-row-height-sm);
157
+ --nav-item-font-size: var(--nav-item-font-size-sm);
158
158
  }
159
159
 
160
160
  :scope[size="lg"] {
161
- --nav-item-row-height-default: var(--nav-item-row-height-lg, var(--nav-item-row-height-lg-default));
162
- --nav-item-font-size-default: var(--nav-item-font-size-lg, var(--nav-item-font-size-lg-default));
161
+ --nav-item-row-height: var(--nav-item-row-height-lg);
162
+ --nav-item-font-size: var(--nav-item-font-size-lg);
163
163
  }
164
164
  }
165
165
 
@@ -1,22 +1,22 @@
1
1
  @scope (noodles-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Tokens ── */
4
- --noodles-duration-default: var(--a-duration-fast);
5
- --noodles-easing-default: var(--a-easing);
6
- --noodles-stroke-default: var(--a-accent-bg);
4
+ --noodles-duration: var(--a-duration-fast);
5
+ --noodles-easing: var(--a-easing);
6
+ --noodles-stroke: var(--a-accent-bg);
7
7
  /* Component-intrinsic visual constants; no --a-space-* equivalent */
8
- --noodles-stroke-width-default: 2px;
9
- --noodles-stroke-readonly-default: var(--a-fg-muted);
8
+ --noodles-stroke-width: 2px;
9
+ --noodles-stroke-readonly: var(--a-fg-muted);
10
10
  /* Component-intrinsic visual constants; no --a-space-* equivalent */
11
- --noodles-port-size-default: 10px;
12
- --noodles-port-bg-default: var(--a-accent-bg);
13
- --noodles-port-border-default: var(--a-bg);
14
- --noodles-port-hover-ring-default: 0 0 0 3px var(--a-bg-muted);
15
- --noodles-port-drop-scale-default: 1.4;
16
- --noodles-port-drag-opacity-default: 0.4;
17
- --noodles-dash-length-default: 8;
18
- --noodles-dash-gap-default: 4;
19
- --noodles-anim-speed-default: 0.6s;
11
+ --noodles-port-size: 10px;
12
+ --noodles-port-bg: var(--a-accent-bg);
13
+ --noodles-port-border: var(--a-bg);
14
+ --noodles-port-hover-ring: 0 0 0 3px var(--a-bg-muted);
15
+ --noodles-port-drop-scale: 1.4;
16
+ --noodles-port-drag-opacity: 0.4;
17
+ --noodles-dash-length: 8;
18
+ --noodles-dash-gap: 4;
19
+ --noodles-anim-speed: 0.6s;
20
20
  }
21
21
 
22
22
  :scope {
@@ -41,25 +41,25 @@
41
41
 
42
42
  :scope > svg[data-noodle-svg] path {
43
43
  fill: none;
44
- stroke: var(--noodles-stroke, var(--noodles-stroke-default));
45
- stroke-width: var(--noodles-stroke-width, var(--noodles-stroke-width-default));
44
+ stroke: var(--noodles-stroke);
45
+ stroke-width: var(--noodles-stroke-width);
46
46
  stroke-linecap: round;
47
47
  stroke-linejoin: round;
48
48
  transition:
49
- stroke var(--noodles-duration, var(--noodles-duration-default)) var(--noodles-easing, var(--noodles-easing-default)),
50
- stroke-dasharray var(--noodles-duration, var(--noodles-duration-default)) var(--noodles-easing, var(--noodles-easing-default));
49
+ stroke var(--noodles-duration) var(--noodles-easing),
50
+ stroke-dasharray var(--noodles-duration) var(--noodles-easing);
51
51
  }
52
52
 
53
53
  /* ── State: readonly ── */
54
54
  :scope[readonly] > svg[data-noodle-svg] path {
55
- stroke: var(--noodles-stroke-readonly, var(--noodles-stroke-readonly-default));
55
+ stroke: var(--noodles-stroke-readonly);
56
56
  stroke-dasharray: 6 4;
57
57
  }
58
58
 
59
59
  /* ── State: animated ── */
60
60
  :scope[animated] > svg[data-noodle-svg] path {
61
- stroke-dasharray: var(--noodles-dash-length, var(--noodles-dash-length-default)) var(--noodles-dash-gap, var(--noodles-dash-gap-default));
62
- animation: noodle-march var(--noodles-anim-speed, var(--noodles-anim-speed-default)) linear infinite;
61
+ stroke-dasharray: var(--noodles-dash-length) var(--noodles-dash-gap);
62
+ animation: noodle-march var(--noodles-anim-speed) linear infinite;
63
63
  }
64
64
 
65
65
  @keyframes noodle-march {
@@ -71,33 +71,33 @@
71
71
  /* ── Port indicators ── */
72
72
  [data-noodle-port-indicator] {
73
73
  position: absolute;
74
- width: var(--noodles-port-size, var(--noodles-port-size-default));
75
- height: var(--noodles-port-size, var(--noodles-port-size-default));
74
+ width: var(--noodles-port-size);
75
+ height: var(--noodles-port-size);
76
76
  border-radius: 50%;
77
- background: var(--noodles-port-bg, var(--noodles-port-bg-default));
78
- border: 2px solid var(--noodles-port-border, var(--noodles-port-border-default));
77
+ background: var(--noodles-port-bg);
78
+ border: 2px solid var(--noodles-port-border);
79
79
  transform: translate(-50%, -50%);
80
80
  z-index: 2;
81
81
  cursor: crosshair;
82
82
  pointer-events: auto;
83
83
  transition:
84
- transform var(--noodles-duration, var(--noodles-duration-default)) var(--noodles-easing, var(--noodles-easing-default)),
85
- opacity var(--noodles-duration, var(--noodles-duration-default)) var(--noodles-easing, var(--noodles-easing-default)),
86
- box-shadow var(--noodles-duration, var(--noodles-duration-default)) var(--noodles-easing, var(--noodles-easing-default));
84
+ transform var(--noodles-duration) var(--noodles-easing),
85
+ opacity var(--noodles-duration) var(--noodles-easing),
86
+ box-shadow var(--noodles-duration) var(--noodles-easing);
87
87
  }
88
88
 
89
89
  [data-noodle-port-indicator]:hover {
90
- box-shadow: var(--noodles-port-hover-ring, var(--noodles-port-hover-ring-default));
90
+ box-shadow: var(--noodles-port-hover-ring);
91
91
  }
92
92
 
93
93
  /* ── State: drop ready ── */
94
94
  [data-noodle-drop-ready] {
95
- transform: translate(-50%, -50%) scale(var(--noodles-port-drop-scale, var(--noodles-port-drop-scale-default)));
95
+ transform: translate(-50%, -50%) scale(var(--noodles-port-drop-scale));
96
96
  }
97
97
 
98
98
  /* ── State: dragging ── */
99
99
  [data-noodle-dragging] {
100
- opacity: var(--noodles-port-drag-opacity, var(--noodles-port-drag-opacity-default));
100
+ opacity: var(--noodles-port-drag-opacity);
101
101
  }
102
102
 
103
103
  /* ── State: readonly ports ── */
@@ -4,14 +4,14 @@
4
4
 
5
5
  @scope (number-format-ui) {
6
6
  :where(:scope) {
7
- --number-format-fg-default: inherit;
8
- --number-format-font-default: inherit;
7
+ --number-format-fg: inherit;
8
+ --number-format-font: inherit;
9
9
  }
10
10
 
11
11
  :scope {
12
12
  display: inline;
13
- color: var(--number-format-fg, var(--number-format-fg-default));
14
- font-family: var(--number-format-font, var(--number-format-font-default));
13
+ color: var(--number-format-fg);
14
+ font-family: var(--number-format-font);
15
15
  /* Tabular figures so column-aligned numeric displays line up cleanly. */
16
16
  font-variant-numeric: tabular-nums;
17
17
  }