@threadlabs/looma 0.5.2 → 0.6.0-rc.2

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 (177) hide show
  1. package/components/shared/overlay.js +3 -0
  2. package/components/ui-button/ui-button.html +46 -26
  3. package/components/ui-callout/ui-callout.html +1 -1
  4. package/components/ui-checkbox/ui-checkbox.html +1 -1
  5. package/components/ui-cluster/ui-cluster.html +6 -6
  6. package/components/ui-combobox/ui-combobox.html +23 -23
  7. package/components/ui-container/ui-container.html +4 -4
  8. package/components/ui-context-menu/ui-context-menu.html +2 -2
  9. package/components/ui-dialog/ui-dialog.html +12 -12
  10. package/components/ui-disclosure/ui-disclosure.html +19 -4
  11. package/components/ui-editable/ui-editable.html +6 -6
  12. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +20 -20
  13. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +25 -25
  14. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +39 -39
  15. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +20 -20
  16. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +48 -48
  17. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +34 -34
  18. package/components/ui-editor-toolbar/ui-editor-toolbar.html +9 -9
  19. package/components/ui-floating-action-button/ui-floating-action-button.html +16 -22
  20. package/components/ui-grid/ui-grid.html +6 -6
  21. package/components/ui-icon-button/ui-icon-button.html +45 -40
  22. package/components/ui-input/ui-input.html +2 -2
  23. package/components/ui-menu/ui-menu.html +15 -4
  24. package/components/ui-menu-item/ui-menu-item.html +5 -5
  25. package/components/ui-popover/ui-popover.html +3 -3
  26. package/components/ui-reel/ui-reel.html +6 -6
  27. package/components/ui-search-result-row/ui-search-result-row.html +9 -9
  28. package/components/ui-search-shell/ui-search-shell.html +3 -3
  29. package/components/ui-select/ui-select.html +2 -2
  30. package/components/ui-sidebar/ui-sidebar.html +11 -11
  31. package/components/ui-stack/ui-stack.html +6 -6
  32. package/components/ui-switcher/ui-switcher.html +6 -6
  33. package/components/ui-tabs/ui-tabs.html +18 -4
  34. package/components/ui-textarea/ui-textarea.html +2 -2
  35. package/components/ui-toast-region/ui-toast-region.html +2 -2
  36. package/components/ui-tooltip/ui-tooltip.html +1 -1
  37. package/components/ui-top-bar/ui-top-bar.html +5 -5
  38. package/components/ui-tree/ui-tree.html +7 -0
  39. package/components/ui-tree-item/ui-tree-item.html +15 -7
  40. package/dist/index.js +1 -1
  41. package/package.json +1 -1
  42. package/styles/ui-button.css +47 -26
  43. package/styles/ui-callout.css +1 -1
  44. package/styles/ui-checkbox.css +1 -1
  45. package/styles/ui-cluster.css +6 -6
  46. package/styles/ui-combobox.css +23 -23
  47. package/styles/ui-container.css +4 -4
  48. package/styles/ui-context-menu.css +2 -2
  49. package/styles/ui-dialog.css +12 -12
  50. package/styles/ui-disclosure.css +22 -6
  51. package/styles/ui-editable.css +6 -6
  52. package/styles/ui-editor-insert-table-grid.css +20 -20
  53. package/styles/ui-editor-mention-menu.css +25 -25
  54. package/styles/ui-editor-slash-menu.css +39 -39
  55. package/styles/ui-editor-table-context-menu.css +20 -20
  56. package/styles/ui-editor-table-overlay.css +48 -48
  57. package/styles/ui-editor-table-toolbar.css +34 -34
  58. package/styles/ui-editor-toolbar.css +9 -9
  59. package/styles/ui-floating-action-button.css +16 -22
  60. package/styles/ui-grid.css +6 -6
  61. package/styles/ui-icon-button.css +45 -40
  62. package/styles/ui-input.css +2 -2
  63. package/styles/ui-menu-item.css +5 -5
  64. package/styles/ui-menu.css +18 -6
  65. package/styles/ui-popover.css +3 -3
  66. package/styles/ui-reel.css +6 -6
  67. package/styles/ui-search-result-row.css +9 -9
  68. package/styles/ui-search-shell.css +3 -3
  69. package/styles/ui-select.css +2 -2
  70. package/styles/ui-sidebar.css +11 -11
  71. package/styles/ui-stack.css +6 -6
  72. package/styles/ui-switcher.css +6 -6
  73. package/styles/ui-tabs.css +20 -6
  74. package/styles/ui-textarea.css +2 -2
  75. package/styles/ui-toast-region.css +2 -2
  76. package/styles/ui-tooltip.css +1 -1
  77. package/styles/ui-top-bar.css +5 -5
  78. package/styles/ui-tree-item.css +21 -8
  79. package/styles/ui-tree.css +7 -1
  80. package/theme-dark.css +46 -103
  81. package/theme-high-contrast.css +22 -22
  82. package/theme-light.css +17 -41
  83. package/tokens.css +154 -201
  84. package/vanilla/UiButton.d.ts +1 -0
  85. package/vanilla/UiButton.js +1 -1
  86. package/vanilla/UiDisclosure.d.ts +1 -0
  87. package/vanilla/UiDisclosure.js +1 -1
  88. package/vanilla/UiMenu.d.ts +1 -0
  89. package/vanilla/UiMenu.js +1 -1
  90. package/vanilla/UiTabs.d.ts +1 -0
  91. package/vanilla/UiTabs.js +1 -1
  92. package/vanilla/UiTree.d.ts +1 -0
  93. package/vanilla/UiTree.js +1 -1
  94. package/vue/UiButton.d.ts +2 -0
  95. package/vue/UiButton.vue +56 -41
  96. package/vue/UiCallout.vue +1 -1
  97. package/vue/UiCheckbox.vue +1 -1
  98. package/vue/UiCluster.vue +6 -6
  99. package/vue/UiCombobox.vue +23 -23
  100. package/vue/UiContainer.vue +4 -4
  101. package/vue/UiContextMenu.vue +2 -2
  102. package/vue/UiDialog.vue +12 -12
  103. package/vue/UiDisclosure.d.ts +2 -0
  104. package/vue/UiDisclosure.vue +21 -4
  105. package/vue/UiEditable.vue +6 -6
  106. package/vue/UiEditorInsertTableGrid.vue +20 -20
  107. package/vue/UiEditorMentionMenu.vue +25 -25
  108. package/vue/UiEditorSlashMenu.vue +39 -39
  109. package/vue/UiEditorTableContextMenu.vue +20 -20
  110. package/vue/UiEditorTableOverlay.vue +48 -57
  111. package/vue/UiEditorTableToolbar.vue +34 -34
  112. package/vue/UiEditorToolbar.vue +9 -9
  113. package/vue/UiFloatingActionButton.vue +17 -22
  114. package/vue/UiGrid.vue +6 -6
  115. package/vue/UiIconButton.vue +45 -55
  116. package/vue/UiInput.vue +2 -2
  117. package/vue/UiMenu.d.ts +2 -0
  118. package/vue/UiMenu.vue +17 -7
  119. package/vue/UiMenuItem.vue +6 -5
  120. package/vue/UiPopover.vue +3 -3
  121. package/vue/UiReel.vue +6 -6
  122. package/vue/UiSearchResultRow.vue +10 -13
  123. package/vue/UiSearchShell.vue +3 -3
  124. package/vue/UiSelect.vue +2 -2
  125. package/vue/UiSidebar.vue +11 -16
  126. package/vue/UiStack.vue +6 -6
  127. package/vue/UiSwitcher.vue +6 -6
  128. package/vue/UiTabs.d.ts +2 -0
  129. package/vue/UiTabs.vue +21 -4
  130. package/vue/UiTextarea.vue +2 -2
  131. package/vue/UiToastRegion.vue +2 -2
  132. package/vue/UiTooltip.vue +1 -1
  133. package/vue/UiTopBar.vue +5 -5
  134. package/vue/UiTree.d.ts +2 -0
  135. package/vue/UiTree.vue +24 -1
  136. package/vue/UiTreeItem.vue +16 -8
  137. package/vue/chunks/UiButton.js +4 -2
  138. package/vue/chunks/UiCallout.js +1 -1
  139. package/vue/chunks/UiCheckbox.js +1 -1
  140. package/vue/chunks/UiCluster.js +1 -1
  141. package/vue/chunks/UiCombobox.js +1 -1
  142. package/vue/chunks/UiContainer.js +1 -1
  143. package/vue/chunks/UiContextMenu.js +1 -1
  144. package/vue/chunks/UiDialog.js +1 -1
  145. package/vue/chunks/UiDisclosure.js +3 -2
  146. package/vue/chunks/UiEditable.js +1 -1
  147. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  148. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  149. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  150. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  151. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  152. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  153. package/vue/chunks/UiEditorToolbar.js +1 -1
  154. package/vue/chunks/UiFloatingActionButton.js +1 -1
  155. package/vue/chunks/UiGrid.js +1 -1
  156. package/vue/chunks/UiIconButton.js +1 -1
  157. package/vue/chunks/UiInput.js +1 -1
  158. package/vue/chunks/UiMenu.js +3 -2
  159. package/vue/chunks/UiMenuItem.js +1 -1
  160. package/vue/chunks/UiPopover.js +1 -1
  161. package/vue/chunks/UiReel.js +1 -1
  162. package/vue/chunks/UiSearchResultRow.js +1 -1
  163. package/vue/chunks/UiSearchShell.js +1 -1
  164. package/vue/chunks/UiSelect.js +1 -1
  165. package/vue/chunks/UiSidebar.js +1 -1
  166. package/vue/chunks/UiStack.js +1 -1
  167. package/vue/chunks/UiSwitcher.js +1 -1
  168. package/vue/chunks/UiTabs.js +7 -2
  169. package/vue/chunks/UiTextarea.js +1 -1
  170. package/vue/chunks/UiToastRegion.js +1 -1
  171. package/vue/chunks/UiTooltip.js +1 -1
  172. package/vue/chunks/UiTopBar.js +1 -1
  173. package/vue/chunks/UiTree.js +8 -2
  174. package/vue/chunks/UiTreeItem.js +1 -1
  175. package/vue/components.css +1114 -1090
  176. package/vue/editor/LoomaEditor.d.ts +11 -0
  177. package/vue/editor/index.js +17 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@threadlabs/looma",
3
- "version": "0.5.2",
3
+ "version": "0.6.0-rc.2",
4
4
  "type": "module",
5
5
  "description": "Looma components as HTML, Vue, and plain DOM, with design tokens.",
6
6
  "license": "MIT",
@@ -24,16 +24,16 @@
24
24
 
25
25
  :scope {
26
26
  appearance: none;
27
- min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md, 2.5rem));
27
+ min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
28
28
  border: 1px solid var(--ui-button-border, var(--ui-border-strong));
29
- border-radius: var(--ui-button-radius, var(--ui-radius-2));
29
+ border-radius: var(--ui-button-radius, var(--ui-radius-md));
30
30
  background: var(--ui-button-surface, var(--ui-surface-elevated));
31
31
  color: var(--ui-button-text, var(--ui-action-secondary-text, var(--ui-text-primary)));
32
32
  font: inherit;
33
- font-weight: var(--ui-font-medium, 500);
33
+ font-weight: var(--ui-font-medium);
34
34
  line-height: var(--ui-line-height-tight);
35
35
  padding: var(--ui-space-2) var(--ui-space-3);
36
- background-image: var(--ui-raised-highlight, none);
36
+ background-image: var(--ui-raised-highlight);
37
37
  box-shadow: var(--ui-button-shadow, var(--ui-raised, var(--ui-shadow-xs)));
38
38
  cursor: pointer;
39
39
  transition:
@@ -53,13 +53,13 @@
53
53
  }
54
54
 
55
55
  :scope[data-ui-button-state~="size=sm"] {
56
- min-block-size: var(--ui-control-size-sm, 2rem);
56
+ min-block-size: var(--ui-control-size-sm);
57
57
  padding: var(--ui-space-1) var(--ui-space-2);
58
58
  font-size: 0.875rem;
59
59
  }
60
60
 
61
61
  :scope[data-ui-button-state~="size=lg"] {
62
- min-block-size: var(--ui-control-size-lg, 3rem);
62
+ min-block-size: var(--ui-control-size-lg);
63
63
  padding: var(--ui-space-3) var(--ui-space-4);
64
64
  font-size: 1rem;
65
65
  }
@@ -113,6 +113,23 @@
113
113
  transform: translateY(0);
114
114
  }
115
115
 
116
+ /* An accent-tinted secondary action: the outline, ghost, and link variants in the accent colour.
117
+ Solid and danger already carry their own intent. */
118
+ :scope[data-ui-button-state~="tone=accent"]:scope[data-ui-button-state~="variant=outline"] {
119
+ border-color: var(--ui-button-accent-border, var(--ui-accent));
120
+ background: var(--ui-button-accent-surface, var(--ui-accent-subtle));
121
+ color: var(--ui-button-accent-text, var(--ui-accent-active));
122
+ }
123
+
124
+ :scope[data-ui-button-state~="tone=accent"]:scope[data-ui-button-state~="variant=outline"]:hover:enabled {
125
+ border-color: var(--ui-button-accent-hover-border, var(--ui-accent-hover));
126
+ background: var(--ui-button-accent-hover-surface, color-mix(in srgb, var(--ui-accent) 16%, var(--ui-surface)));
127
+ }
128
+
129
+ :scope[data-ui-button-state~="tone=accent"]:is(:scope[data-ui-button-state~="variant=ghost"], :scope[data-ui-button-state~="variant=link"]) {
130
+ color: var(--ui-button-accent-text, var(--ui-accent-active));
131
+ }
132
+
116
133
  :scope[data-ui-button-state~="variant=ghost"] {
117
134
  border-color: transparent;
118
135
  background: transparent;
@@ -122,12 +139,12 @@
122
139
 
123
140
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
124
141
  :scope[data-ui-button-state~="variant=ghost"]:hover:enabled {
125
- background: var(--ui-button-ghost-hover, color-mix(in srgb, currentColor 8%, transparent));
142
+ background: var(--ui-button-ghost-hover-surface, color-mix(in srgb, currentColor 8%, transparent));
126
143
  border-color: transparent;
127
144
  }
128
145
 
129
146
  :scope[data-ui-button-state~="variant=ghost"]:active:enabled {
130
- background: var(--ui-button-ghost-active, color-mix(in srgb, currentColor 14%, transparent));
147
+ background: var(--ui-button-ghost-active-surface, color-mix(in srgb, currentColor 14%, transparent));
131
148
  border-color: transparent;
132
149
  }
133
150
 
@@ -147,34 +164,34 @@
147
164
 
148
165
  /* Disabled colours fall back to each variant's own; ghost and link take only the text colour. */
149
166
  :scope:disabled {
150
- opacity: var(--ui-button-disabled-opacity, 0.6);
167
+ opacity: var(--ui-button-disabled-opacity, 1);
151
168
  cursor: not-allowed;
152
- border-color: var(--ui-button-disabled-border, var(--ui-button-border, var(--ui-border-strong)));
153
- background-color: var(--ui-button-disabled-surface, var(--ui-button-surface, var(--ui-surface-elevated)));
154
- color: var(--ui-button-disabled-text, var(--ui-button-text, var(--ui-action-secondary-text, var(--ui-text-primary))));
169
+ border-color: var(--ui-button-disabled-border, var(--ui-border));
170
+ background-color: var(--ui-button-disabled-surface, var(--ui-disabled-surface));
171
+ color: var(--ui-button-disabled-text, var(--ui-disabled-text));
155
172
  }
156
173
 
157
174
  :scope[data-ui-button-state~="variant=solid"]:disabled {
158
- border-color: var(--ui-button-disabled-border, var(--ui-action-primary-surface, var(--ui-accent-solid)));
159
- background-color: var(--ui-button-disabled-surface, var(--ui-action-primary-surface, var(--ui-accent-solid)));
160
- color: var(--ui-button-disabled-text, var(--ui-action-primary-text, var(--ui-text-on-accent)));
175
+ border-color: var(--ui-button-disabled-border, var(--ui-border));
176
+ background-color: var(--ui-button-disabled-surface, var(--ui-disabled-surface));
177
+ color: var(--ui-button-disabled-text, var(--ui-disabled-text));
161
178
  }
162
179
 
163
180
  :scope[data-ui-button-state~="variant=danger"]:disabled {
164
- border-color: var(--ui-button-disabled-border, var(--ui-danger-solid));
165
- background-color: var(--ui-button-disabled-surface, var(--ui-danger-solid));
166
- color: var(--ui-button-disabled-text, var(--ui-text-on-accent));
181
+ border-color: var(--ui-button-disabled-border, var(--ui-border));
182
+ background-color: var(--ui-button-disabled-surface, var(--ui-disabled-surface));
183
+ color: var(--ui-button-disabled-text, var(--ui-disabled-text));
167
184
  }
168
185
 
169
186
  :scope[data-ui-button-state~="variant=ghost"]:disabled {
187
+ background: none;
170
188
  border-color: transparent;
171
- background-color: transparent;
172
- color: var(--ui-button-disabled-text, var(--ui-button-ghost-text, var(--ui-action-secondary-text, var(--ui-text-primary))));
189
+ color: var(--ui-button-disabled-text, var(--ui-disabled-text));
173
190
  }
174
191
 
175
192
  @media (pointer: coarse) {
176
193
  :scope {
177
- min-block-size: var(--ui-control-min-block-size, 2.75rem);
194
+ min-block-size: var(--ui-control-min-block-size);
178
195
  }
179
196
  }
180
197
 
@@ -185,11 +202,11 @@
185
202
  min-block-size: 0;
186
203
  padding: 0;
187
204
  border: 0;
188
- border-radius: var(--ui-radius-sm, 4px);
205
+ border-radius: var(--ui-radius-sm);
189
206
  background: none;
190
207
  box-shadow: none;
191
208
  font: inherit;
192
- color: var(--ui-button-link-color, var(--ui-text-secondary));
209
+ color: var(--ui-button-link-text, var(--ui-text-secondary));
193
210
  text-decoration-line: underline;
194
211
  text-decoration-thickness: 1px;
195
212
  text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
@@ -198,7 +215,7 @@
198
215
  }
199
216
 
200
217
  :scope[data-ui-button-state~="variant=link"]:hover:enabled {
201
- color: var(--ui-button-link-hover-color, var(--ui-text-primary));
218
+ color: var(--ui-button-link-hover-text, var(--ui-text-primary));
202
219
  text-decoration-color: currentColor;
203
220
  background: none;
204
221
  transform: none;
@@ -211,13 +228,14 @@
211
228
 
212
229
  :scope[data-ui-button-state~="variant=link"]:disabled {
213
230
  background: none;
214
- color: var(--ui-button-disabled-text, var(--ui-button-link-color, var(--ui-text-secondary)));
231
+ border-color: transparent;
232
+ color: var(--ui-button-disabled-text, var(--ui-disabled-text));
215
233
  }
216
234
 
217
235
  :scope[data-ui-button-state~="variant=link"]:focus-visible {
218
236
  box-shadow: none;
219
237
  /* Fallback keeps the ring if the token is missing: an unresolved var() would void the outline. */
220
- outline: 2px solid var(--ui-focus-ring, currentColor);
238
+ outline: 2px solid var(--ui-focus-ring);
221
239
  outline-offset: 2px;
222
240
  }
223
241
 
@@ -230,6 +248,9 @@
230
248
  @supports (text-box-trim: trim-both) {
231
249
  }
232
250
 
251
+ /* An accent-tinted secondary action: the outline, ghost, and link variants in the accent colour.
252
+ Solid and danger already carry their own intent. */
253
+
233
254
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
234
255
 
235
256
  /* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
@@ -13,7 +13,7 @@
13
13
  padding: var(--ui-callout-padding-block, var(--ui-space-2)) var(--ui-callout-padding-inline, var(--ui-space-3));
14
14
  border: var(--ui-callout-border-width, 1px) solid color-mix(in srgb, var(--ui-callout-border, var(--_callout-border)) 35%, transparent);
15
15
  border-inline-start: var(--ui-callout-leading-border-width, 4px) solid var(--ui-callout-border, var(--_callout-border));
16
- border-radius: var(--ui-radius-2);
16
+ border-radius: var(--ui-radius-md);
17
17
  background: var(--ui-callout-surface, var(--_callout-surface));
18
18
  color: var(--ui-callout-text, var(--ui-text-primary));
19
19
  font-family: var(--ui-font-family-sans);
@@ -23,7 +23,7 @@
23
23
  block-size: var(--ui-checkbox-size, 1.125rem);
24
24
  margin: 0.125em 0 0;
25
25
  border: 1px solid var(--ui-control-border-hover, var(--ui-border-strong));
26
- border-radius: var(--ui-radius-1);
26
+ border-radius: var(--ui-radius-sm);
27
27
  background: var(--ui-control-surface, var(--ui-surface-default));
28
28
  box-shadow: inset 0 1px 2px color-mix(in srgb, var(--ui-text-primary) 8%, transparent);
29
29
  cursor: pointer;
@@ -1,7 +1,7 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.2. Do not edit. */
2
2
  @scope ([data-component~="ui-cluster"]) to ([data-component], [data-slotted]) {
3
3
  :scope {
4
- --_layout-gap: var(--ui-space-3, 0.75rem);
4
+ --_layout-gap: var(--ui-space-3);
5
5
  display: flex;
6
6
  flex-wrap: wrap;
7
7
  align-items: center;
@@ -12,19 +12,19 @@
12
12
  }
13
13
 
14
14
  :scope[data-ui-cluster-state~="gap=xs"] {
15
- --_layout-gap: var(--ui-space-2, 0.5rem);
15
+ --_layout-gap: var(--ui-space-2);
16
16
  }
17
17
  :scope[data-ui-cluster-state~="gap=s"] {
18
- --_layout-gap: var(--ui-space-3, 0.75rem);
18
+ --_layout-gap: var(--ui-space-3);
19
19
  }
20
20
  :scope[data-ui-cluster-state~="gap=m"] {
21
- --_layout-gap: var(--ui-space-4, 1rem);
21
+ --_layout-gap: var(--ui-space-4);
22
22
  }
23
23
  :scope[data-ui-cluster-state~="gap=l"] {
24
- --_layout-gap: var(--ui-space-5, 1.5rem);
24
+ --_layout-gap: var(--ui-space-5);
25
25
  }
26
26
  :scope[data-ui-cluster-state~="gap=xl"] {
27
- --_layout-gap: var(--ui-space-6, 2rem);
27
+ --_layout-gap: var(--ui-space-6);
28
28
  }
29
29
  :scope[data-ui-cluster-state~="align=start"] {
30
30
  align-items: flex-start;
@@ -8,15 +8,15 @@
8
8
  font: inherit;
9
9
  }
10
10
  label {
11
- color: var(--ui-field-label-color, var(--ui-text-primary));
12
- font-size: var(--ui-field-label-size, 0.875rem);
13
- font-weight: var(--ui-field-label-weight, 500);
11
+ color: var(--ui-combobox-label-text, var(--ui-text-primary));
12
+ font-size: var(--ui-combobox-label-font-size, 0.875rem);
13
+ font-weight: 500;
14
14
  }
15
15
  .field {
16
16
  display: flex;
17
17
  min-inline-size: 0;
18
18
  border: 1px solid var(--ui-control-border, var(--ui-border-default));
19
- border-radius: var(--ui-radius-2);
19
+ border-radius: var(--ui-radius-md);
20
20
  background: var(--ui-control-surface, var(--ui-surface-default));
21
21
  box-shadow: var(--ui-control-inset);
22
22
  transition: border-color var(--ui-motion-fast) var(--ui-motion-ease), box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
@@ -35,7 +35,7 @@
35
35
  appearance: none;
36
36
  width: 100%;
37
37
  min-inline-size: 0;
38
- min-block-size: calc(var(--ui-control-size-md, 2.5rem) - 2px);
38
+ min-block-size: calc(var(--ui-control-size-md) - 2px);
39
39
  box-sizing: border-box;
40
40
  border: 0;
41
41
  border-radius: inherit;
@@ -48,7 +48,7 @@
48
48
  outline: none;
49
49
  }
50
50
  :scope[data-ui-combobox-state~="size=sm"] input {
51
- min-block-size: calc(var(--ui-field-compact-size, var(--ui-control-size-sm, 2rem)) - 2px);
51
+ min-block-size: calc(var(--ui-control-size-sm) - 2px);
52
52
  padding: var(--ui-space-1) var(--ui-space-2);
53
53
  }
54
54
  button {
@@ -57,19 +57,19 @@
57
57
  place-items: center;
58
58
  align-self: stretch;
59
59
  border: 0;
60
- border-radius: var(--ui-radius-2);
60
+ border-radius: var(--ui-radius-md);
61
61
  background: transparent;
62
- color: var(--ui-field-affordance-color, var(--ui-text-secondary));
62
+ color: var(--ui-combobox-affordance-text, var(--ui-text-secondary));
63
63
  font: inherit;
64
- font-weight: var(--ui-field-affordance-weight, 400);
64
+ font-weight: 400;
65
65
  min-inline-size: 2rem;
66
66
  padding: 0 var(--ui-space-1);
67
67
  cursor: pointer;
68
68
  }
69
69
  .affordance-icon {
70
70
  display: block;
71
- inline-size: var(--ui-icon-size-sm, 1rem);
72
- block-size: var(--ui-icon-size-sm, 1rem);
71
+ inline-size: var(--ui-icon-size-sm);
72
+ block-size: var(--ui-icon-size-sm);
73
73
  }
74
74
  button:hover:enabled {
75
75
  background: var(--ui-surface-muted);
@@ -99,7 +99,7 @@
99
99
  margin: 0;
100
100
  padding: var(--ui-space-1);
101
101
  border: 1px solid var(--ui-border-default);
102
- border-radius: var(--ui-radius-2);
102
+ border-radius: var(--ui-radius-md);
103
103
  background: var(--ui-surface-elevated);
104
104
  color: var(--ui-text-primary);
105
105
  box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
@@ -109,13 +109,13 @@
109
109
  }
110
110
  .option {
111
111
  padding: var(--ui-space-2) var(--ui-space-3);
112
- border-radius: var(--ui-radius-1);
112
+ border-radius: var(--ui-radius-sm);
113
113
  cursor: pointer;
114
114
  overflow-wrap: anywhere;
115
115
  }
116
116
  .option:hover, .option.active {
117
117
  background: var(--ui-surface-muted);
118
- outline: 1px solid var(--ui-focus-ring, currentColor);
118
+ outline: 1px solid var(--ui-focus-ring);
119
119
  outline-offset: -1px;
120
120
  }
121
121
  .option[aria-disabled="true"] {
@@ -124,12 +124,12 @@
124
124
  }
125
125
  .primary {
126
126
  display: block;
127
- color: var(--ui-option-primary-color, var(--ui-text-primary));
128
- font-weight: var(--ui-option-primary-weight, 500);
127
+ color: var(--ui-combobox-option-text, var(--ui-text-primary));
128
+ font-weight: 500;
129
129
  }
130
130
  .message, .group {
131
- color: var(--ui-field-message-color, var(--ui-text-secondary));
132
- font-weight: var(--ui-field-message-weight, 400);
131
+ color: var(--ui-combobox-message-text, var(--ui-text-secondary));
132
+ font-weight: 400;
133
133
  font-size: var(--ui-font-size-sm);
134
134
  line-height: var(--ui-line-height-md);
135
135
  overflow-wrap: anywhere;
@@ -165,11 +165,11 @@
165
165
  flex-wrap: wrap;
166
166
  align-items: center;
167
167
  gap: var(--ui-space-1);
168
- min-block-size: var(--ui-multi-combobox-min-block-size, 2.5rem);
168
+ min-block-size: var(--ui-combobox-item-min-block-size, 2.5rem);
169
169
  padding: var(--ui-space-1);
170
170
  }
171
171
  :scope[data-ui-combobox-state~="multiple"] input {
172
- flex: 1 0 var(--ui-multi-combobox-input-min-inline-size, 5rem);
172
+ flex: 1 0 var(--ui-combobox-item-input-min-inline-size, 5rem);
173
173
  width: auto;
174
174
  min-block-size: 1.75rem;
175
175
  padding: var(--ui-space-0-5) var(--ui-space-1);
@@ -178,18 +178,18 @@
178
178
  appearance: none;
179
179
  display: inline-flex;
180
180
  min-inline-size: 0;
181
- max-inline-size: min(100%, var(--ui-multi-combobox-item-max-inline-size, 12rem));
181
+ max-inline-size: min(100%, var(--ui-combobox-item-item-max-inline-size, 12rem));
182
182
  overflow: hidden;
183
183
  padding: 0;
184
184
  border: 0;
185
- border-radius: var(--ui-radius-1);
185
+ border-radius: var(--ui-radius-sm);
186
186
  background: transparent;
187
187
  color: inherit;
188
188
  font: inherit;
189
189
  cursor: default;
190
190
  }
191
191
  .item:focus-visible {
192
- outline: 2px solid var(--ui-focus-ring, currentColor);
192
+ outline: 2px solid var(--ui-focus-ring);
193
193
  outline-offset: 1px;
194
194
  }
195
195
  .item:disabled {
@@ -2,7 +2,7 @@
2
2
  @scope ([data-component~="ui-container"]) to ([data-component], [data-slotted]) {
3
3
  :scope {
4
4
  --_container-measure: 65ch;
5
- --_container-gutters: var(--ui-space-4, 1rem);
5
+ --_container-gutters: var(--ui-space-4);
6
6
  display: block;
7
7
  inline-size: 100%;
8
8
  max-inline-size: var(--ui-container-measure, var(--_container-measure));
@@ -17,13 +17,13 @@
17
17
  --_container-measure: 80ch;
18
18
  }
19
19
  :scope[data-ui-container-state~="gutters=s"] {
20
- --_container-gutters: var(--ui-space-3, 0.75rem);
20
+ --_container-gutters: var(--ui-space-3);
21
21
  }
22
22
  :scope[data-ui-container-state~="gutters=m"] {
23
- --_container-gutters: var(--ui-space-4, 1rem);
23
+ --_container-gutters: var(--ui-space-4);
24
24
  }
25
25
  :scope[data-ui-container-state~="gutters=l"] {
26
- --_container-gutters: var(--ui-space-5, 1.5rem);
26
+ --_container-gutters: var(--ui-space-5);
27
27
  }
28
28
 
29
29
  /* A component that sets its display still honours the hidden attribute on its root. */
@@ -14,11 +14,11 @@
14
14
  padding: var(--ui-space-1);
15
15
  background: var(--ui-surface-elevated);
16
16
  border: 1px solid var(--ui-border-default);
17
- border-radius: var(--ui-radius-3);
17
+ border-radius: var(--ui-radius-lg);
18
18
  box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
19
19
  outline: 0;
20
20
  overflow: auto;
21
- z-index: var(--ui-z-overlay, 1000);
21
+ z-index: var(--ui-context-menu-z-index, 1000);
22
22
  min-width: 12rem;
23
23
  opacity: 0;
24
24
  transform: translateY(-4px) scale(0.99);
@@ -16,11 +16,11 @@
16
16
  inset: 0;
17
17
  box-sizing: border-box;
18
18
  inline-size: min(
19
- calc(100% - var(--ui-dialog-viewport-gap, var(--ui-space-4, 1rem)) * 2),
19
+ calc(100% - var(--ui-dialog-viewport-gap, var(--ui-space-4)) * 2),
20
20
  var(--ui-dialog-max-width, 440px)
21
21
  );
22
22
  max-inline-size: none;
23
- max-block-size: calc(100dvh - var(--ui-dialog-viewport-gap, var(--ui-space-4, 1rem)) * 2);
23
+ max-block-size: calc(100dvh - var(--ui-dialog-viewport-gap, var(--ui-space-4)) * 2);
24
24
  margin: auto;
25
25
  padding: 0;
26
26
  overflow: hidden;
@@ -69,8 +69,8 @@
69
69
  border: 0;
70
70
  color: var(--ui-text-primary);
71
71
  letter-spacing: normal;
72
- font-size: var(--ui-font-size-lg, 1.125rem);
73
- font-weight: var(--ui-font-semibold, 600);
72
+ font-size: var(--ui-font-size-lg);
73
+ font-weight: var(--ui-font-semibold);
74
74
  line-height: var(--ui-line-height-tight);
75
75
  }
76
76
 
@@ -79,11 +79,11 @@
79
79
  place-items: center;
80
80
  flex: none;
81
81
  margin-inline-start: auto;
82
- inline-size: var(--ui-control-size-sm, 2rem);
83
- block-size: var(--ui-control-size-sm, 2rem);
82
+ inline-size: var(--ui-control-size-sm);
83
+ block-size: var(--ui-control-size-sm);
84
84
  padding: 0;
85
85
  border: 0;
86
- border-radius: var(--ui-radius-round, 999px);
86
+ border-radius: var(--ui-radius-round);
87
87
  background: transparent;
88
88
  color: var(--ui-text-secondary);
89
89
  cursor: pointer;
@@ -112,21 +112,21 @@
112
112
  }
113
113
 
114
114
  .close:focus-visible {
115
- outline: 2px solid var(--ui-focus-ring, currentColor);
115
+ outline: 2px solid var(--ui-focus-ring);
116
116
  outline-offset: 2px;
117
117
  }
118
118
 
119
119
  /* A touch target, like Button on coarse pointers. */
120
120
  @media (pointer: coarse) {
121
121
  .close {
122
- inline-size: var(--ui-control-min-block-size, 2.75rem);
123
- block-size: var(--ui-control-min-block-size, 2.75rem);
122
+ inline-size: var(--ui-control-min-block-size);
123
+ block-size: var(--ui-control-min-block-size);
124
124
  }
125
125
  }
126
126
 
127
127
  html[data-ui-input-modality="touch"] :scope .close {
128
- inline-size: var(--ui-control-min-block-size, 2.75rem);
129
- block-size: var(--ui-control-min-block-size, 2.75rem);
128
+ inline-size: var(--ui-control-min-block-size);
129
+ block-size: var(--ui-control-min-block-size);
130
130
  }
131
131
 
132
132
  .body {
@@ -1,6 +1,19 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.2. Do not edit. */
2
2
  @scope ([data-component~="ui-disclosure"]) to ([data-component], [data-slotted]) {
3
- /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
3
+ /* Density resolves into the summary row's own values; the public tokens still override them. */
4
+ :scope {
5
+ --_trigger-min-block-size: var(--ui-control-size);
6
+ --_trigger-padding-block: var(--ui-space-2);
7
+ --_trigger-padding-inline: var(--ui-space-3);
8
+ }
9
+
10
+ :scope[data-ui-disclosure-state~="density=compact"] {
11
+ --_trigger-min-block-size: var(--ui-control-size-sm);
12
+ --_trigger-padding-block: var(--ui-space-1);
13
+ --_trigger-padding-inline: var(--ui-space-2);
14
+ }
15
+
16
+ /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
4
17
  * select or combobox. Stacked disclosures share their dividers. */
5
18
  :scope {
6
19
  display: block;
@@ -16,16 +29,17 @@
16
29
  gap: var(--ui-space-3);
17
30
  align-items: center;
18
31
  inline-size: 100%;
19
- min-block-size: 2.5rem;
20
- padding: var(--ui-space-2) var(--ui-space-3);
32
+ min-block-size: var(--ui-disclosure-trigger-min-block-size, var(--_trigger-min-block-size));
33
+ padding: var(--ui-disclosure-trigger-padding-block, var(--_trigger-padding-block))
34
+ var(--ui-disclosure-trigger-padding-inline, var(--_trigger-padding-inline));
21
35
  border: 0;
22
36
  background: transparent;
23
37
  color: inherit;
24
38
  font: inherit;
25
- font-weight: var(--ui-font-semibold, 600);
39
+ font-weight: var(--ui-font-semibold);
26
40
  text-align: start;
27
41
  cursor: pointer;
28
- border-radius: var(--ui-radius-1);
42
+ border-radius: var(--ui-radius-sm);
29
43
  transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
30
44
  }
31
45
 
@@ -85,7 +99,9 @@
85
99
  }
86
100
  }
87
101
  @scope ([data-component~="ui-disclosure"]) to ([data-component]) {
88
- /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
102
+ /* Density resolves into the summary row's own values; the public tokens still override them. */
103
+
104
+ /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
89
105
  * select or combobox. Stacked disclosures share their dividers. */
90
106
 
91
107
  @media (prefers-reduced-motion: reduce) {
@@ -21,11 +21,11 @@
21
21
  .input {
22
22
  grid-area: 1 / 1;
23
23
  box-sizing: border-box;
24
- min-block-size: var(--ui-control-size-sm, 2rem);
24
+ min-block-size: var(--ui-control-size-sm);
25
25
  margin: 0;
26
26
  padding: var(--ui-space-1) var(--ui-space-2);
27
27
  border: 1px solid transparent;
28
- border-radius: var(--ui-radius-2);
28
+ border-radius: var(--ui-radius-md);
29
29
  font: inherit;
30
30
  line-height: var(--ui-line-height-md);
31
31
  color: inherit;
@@ -95,13 +95,13 @@
95
95
  }
96
96
 
97
97
  .actions button {
98
- min-block-size: var(--ui-control-size-sm, 2rem);
98
+ min-block-size: var(--ui-control-size-sm);
99
99
  padding: 0 var(--ui-space-3);
100
100
  border: 1px solid var(--ui-border-strong);
101
- border-radius: var(--ui-radius-2);
101
+ border-radius: var(--ui-radius-md);
102
102
  background: var(--ui-surface-elevated);
103
- background-image: var(--ui-raised-highlight, none);
104
- box-shadow: var(--ui-raised, none);
103
+ background-image: var(--ui-raised-highlight);
104
+ box-shadow: var(--ui-raised);
105
105
  color: inherit;
106
106
  font: inherit;
107
107
  font-size: var(--ui-font-size-sm);
@@ -1,17 +1,17 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.2. Do not edit. */
2
2
  @scope ([data-component~="ui-editor-insert-table-grid"]) to ([data-component], [data-slotted]) {
3
3
  :scope {
4
- padding: var(--ui-space-3, 12px);
5
- background: var(--ui-surface, #fff);
6
- border: 1px solid var(--ui-border, #e5e7eb);
7
- border-radius: var(--ui-radius-md, 6px);
4
+ padding: var(--ui-space-3);
5
+ background: var(--ui-surface);
6
+ border: 1px solid var(--ui-border);
7
+ border-radius: var(--ui-radius-md);
8
8
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
9
9
  }
10
10
 
11
11
  .hint {
12
- margin: 0 0 var(--ui-space-2, 8px);
13
- font-size: var(--ui-text-sm, 0.875rem);
14
- color: var(--ui-text-muted, #6b7280);
12
+ margin: 0 0 var(--ui-space-2);
13
+ font-size: var(--ui-font-size-sm);
14
+ color: var(--ui-text-muted);
15
15
  }
16
16
 
17
17
  .grid {
@@ -19,39 +19,39 @@
19
19
  grid-template-columns: repeat(var(--ui-editor-table-grid-cols, 8), 1.25rem);
20
20
  grid-template-rows: repeat(var(--ui-editor-table-grid-rows, 8), 1.25rem);
21
21
  gap: 2px;
22
- margin-bottom: var(--ui-space-2, 8px);
22
+ margin-bottom: var(--ui-space-2);
23
23
  }
24
24
 
25
25
  .cell {
26
26
  width: 1.25rem;
27
27
  height: 1.25rem;
28
28
  padding: 0;
29
- border: 1px solid var(--ui-border, #e5e7eb);
29
+ border: 1px solid var(--ui-border);
30
30
  border-radius: 2px;
31
- background: var(--ui-surface, #fff);
31
+ background: var(--ui-surface);
32
32
  cursor: pointer;
33
33
  }
34
34
 
35
35
  .cell.selected {
36
- background: var(--ui-accent-solid, var(--ui-accent, #0066cc));
37
- border-color: var(--ui-accent-solid, var(--ui-accent, #0066cc));
36
+ background: var(--ui-accent-solid, var(--ui-accent));
37
+ border-color: var(--ui-accent-solid, var(--ui-accent));
38
38
  }
39
39
 
40
40
  .header {
41
41
  display: block;
42
- margin-bottom: var(--ui-space-2, 8px);
43
- font-size: var(--ui-text-sm, 0.875rem);
42
+ margin-bottom: var(--ui-space-2);
43
+ font-size: var(--ui-font-size-sm);
44
44
  cursor: pointer;
45
45
  }
46
46
 
47
47
  :scope .insert {
48
48
  width: 100%;
49
- padding: var(--ui-space-2, 8px) var(--ui-space-3, 12px);
50
- border: 1px solid var(--ui-border, #e5e7eb);
51
- border-radius: var(--ui-radius-sm, 4px);
52
- background: var(--ui-accent-solid, var(--ui-accent, #0066cc));
53
- color: var(--ui-accent-contrast, #fff);
54
- font-size: var(--ui-text-sm, 0.875rem);
49
+ padding: var(--ui-space-2) var(--ui-space-3);
50
+ border: 1px solid var(--ui-border);
51
+ border-radius: var(--ui-radius-sm);
52
+ background: var(--ui-accent-solid, var(--ui-accent));
53
+ color: var(--ui-accent-contrast);
54
+ font-size: var(--ui-font-size-sm);
55
55
  cursor: pointer;
56
56
  }
57
57