@threadlabs/looma 0.22.14 → 0.23.1

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 (217) hide show
  1. package/components/shared/icons.js +2 -0
  2. package/components/ui-avatar/ui-avatar.html +3 -3
  3. package/components/ui-avatar-group/ui-avatar-group.html +1 -1
  4. package/components/ui-badge/ui-badge.html +1 -1
  5. package/components/ui-button/ui-button.html +3 -3
  6. package/components/ui-callout/ui-callout.html +3 -2
  7. package/components/ui-card/ui-card.html +2 -2
  8. package/components/ui-checkbox/ui-checkbox.html +3 -3
  9. package/components/ui-combobox/ui-combobox.html +8 -8
  10. package/components/ui-context-menu/ui-context-menu.html +2 -2
  11. package/components/ui-description-list/ui-description-list.html +1 -1
  12. package/components/ui-dialog/ui-dialog.html +3 -3
  13. package/components/ui-disclosure/ui-disclosure.html +43 -3
  14. package/components/ui-editable/ui-editable.html +2 -2
  15. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +5 -5
  16. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +2 -2
  17. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +6 -6
  18. package/components/ui-editor-slash-menu-item/ui-editor-slash-menu-item.html +1 -1
  19. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +2 -2
  20. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +11 -11
  21. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +5 -5
  22. package/components/ui-editor-toolbar/ui-editor-toolbar.html +4 -4
  23. package/components/ui-floating-action-button/ui-floating-action-button.html +2 -2
  24. package/components/ui-icon/ui-icon.html +2 -0
  25. package/components/ui-icon-button/ui-icon-button.html +1 -1
  26. package/components/ui-input/ui-input.html +8 -4
  27. package/components/ui-input-group/ui-input-group.html +10 -6
  28. package/components/ui-list/ui-list.html +1 -1
  29. package/components/ui-list-item/ui-list-item.html +20 -4
  30. package/components/ui-listbox/ui-listbox.html +3 -3
  31. package/components/ui-menu/ui-menu.html +2 -2
  32. package/components/ui-menu-item/ui-menu-item.html +4 -4
  33. package/components/ui-meter/ui-meter.html +1 -1
  34. package/components/ui-nav-item/ui-nav-item.html +46 -14
  35. package/components/ui-popover/ui-popover.html +1 -1
  36. package/components/ui-radio/ui-radio.html +2 -2
  37. package/components/ui-search-result-row/ui-search-result-row.html +24 -5
  38. package/components/ui-search-shell/ui-search-shell.html +4 -4
  39. package/components/ui-section/ui-section.html +3 -3
  40. package/components/ui-select/ui-select.html +6 -2
  41. package/components/ui-separator/ui-separator.html +2 -2
  42. package/components/ui-sidebar/ui-sidebar.html +3 -3
  43. package/components/ui-status-message/ui-status-message.html +1 -1
  44. package/components/ui-switch/ui-switch.html +3 -3
  45. package/components/ui-table/ui-table.html +3 -3
  46. package/components/ui-tabs/ui-tabs.html +7 -7
  47. package/components/ui-textarea/ui-textarea.html +6 -2
  48. package/components/ui-toast/ui-toast.html +2 -2
  49. package/components/ui-toast-region/ui-toast-region.html +5 -5
  50. package/components/ui-tooltip/ui-tooltip.html +15 -15
  51. package/components/ui-top-bar/ui-top-bar.html +1 -1
  52. package/components/ui-tree-item/ui-tree-item.html +27 -8
  53. package/dist/index.js +1 -1
  54. package/editor/icons.d.ts +2 -0
  55. package/editor/index.js +3 -1
  56. package/package.json +1 -1
  57. package/styles/ui-avatar-group.css +1 -1
  58. package/styles/ui-avatar.css +3 -3
  59. package/styles/ui-badge.css +1 -1
  60. package/styles/ui-button.css +3 -3
  61. package/styles/ui-callout.css +3 -2
  62. package/styles/ui-card.css +2 -2
  63. package/styles/ui-checkbox.css +3 -3
  64. package/styles/ui-combobox.css +8 -8
  65. package/styles/ui-context-menu.css +2 -2
  66. package/styles/ui-description-list.css +1 -1
  67. package/styles/ui-dialog.css +3 -3
  68. package/styles/ui-disclosure.css +42 -2
  69. package/styles/ui-editable.css +2 -2
  70. package/styles/ui-editor-insert-table-grid.css +5 -5
  71. package/styles/ui-editor-mention-menu.css +2 -2
  72. package/styles/ui-editor-slash-menu-item.css +1 -1
  73. package/styles/ui-editor-slash-menu.css +6 -6
  74. package/styles/ui-editor-table-context-menu.css +2 -2
  75. package/styles/ui-editor-table-overlay.css +11 -11
  76. package/styles/ui-editor-table-toolbar.css +5 -5
  77. package/styles/ui-editor-toolbar.css +4 -4
  78. package/styles/ui-floating-action-button.css +2 -2
  79. package/styles/ui-icon-button.css +1 -1
  80. package/styles/ui-input-group.css +10 -6
  81. package/styles/ui-input.css +8 -4
  82. package/styles/ui-list-item.css +23 -4
  83. package/styles/ui-list.css +1 -1
  84. package/styles/ui-listbox.css +3 -3
  85. package/styles/ui-menu-item.css +4 -4
  86. package/styles/ui-menu.css +2 -2
  87. package/styles/ui-meter.css +1 -1
  88. package/styles/ui-nav-item.css +46 -12
  89. package/styles/ui-popover.css +1 -1
  90. package/styles/ui-radio.css +2 -2
  91. package/styles/ui-search-result-row.css +29 -5
  92. package/styles/ui-search-shell.css +4 -4
  93. package/styles/ui-section.css +3 -3
  94. package/styles/ui-select.css +6 -2
  95. package/styles/ui-separator.css +2 -2
  96. package/styles/ui-sidebar.css +3 -3
  97. package/styles/ui-status-message.css +1 -1
  98. package/styles/ui-switch.css +3 -3
  99. package/styles/ui-table.css +3 -3
  100. package/styles/ui-tabs.css +7 -7
  101. package/styles/ui-textarea.css +6 -2
  102. package/styles/ui-toast-region.css +5 -5
  103. package/styles/ui-toast.css +2 -2
  104. package/styles/ui-tooltip.css +15 -15
  105. package/styles/ui-top-bar.css +1 -1
  106. package/styles/ui-tree-item.css +32 -8
  107. package/tokens.css +30 -9
  108. package/vanilla/UiDisclosure.d.ts +1 -0
  109. package/vanilla/UiDisclosure.js +10 -1
  110. package/vanilla/UiIcon.js +1 -1
  111. package/vanilla/UiNavItem.d.ts +2 -0
  112. package/vanilla/UiNavItem.js +1 -1
  113. package/vue/UiAvatar.vue +3 -3
  114. package/vue/UiAvatarGroup.vue +1 -1
  115. package/vue/UiBadge.vue +2 -1
  116. package/vue/UiButton.vue +3 -3
  117. package/vue/UiCallout.vue +2 -2
  118. package/vue/UiCard.vue +2 -2
  119. package/vue/UiCheckbox.vue +3 -3
  120. package/vue/UiCombobox.vue +11 -8
  121. package/vue/UiContextMenu.vue +2 -2
  122. package/vue/UiDescriptionList.vue +1 -1
  123. package/vue/UiDialog.vue +4 -3
  124. package/vue/UiDisclosure.d.ts +13 -2
  125. package/vue/UiDisclosure.vue +61 -4
  126. package/vue/UiEditable.vue +2 -2
  127. package/vue/UiEditorInsertTableGrid.vue +5 -5
  128. package/vue/UiEditorMentionMenu.vue +2 -2
  129. package/vue/UiEditorSlashMenu.vue +6 -6
  130. package/vue/UiEditorSlashMenuItem.vue +1 -1
  131. package/vue/UiEditorTableContextMenu.vue +2 -2
  132. package/vue/UiEditorTableOverlay.vue +11 -11
  133. package/vue/UiEditorTableToolbar.vue +5 -5
  134. package/vue/UiEditorToolbar.vue +6 -4
  135. package/vue/UiFloatingActionButton.vue +2 -2
  136. package/vue/UiIcon.vue +8 -0
  137. package/vue/UiIconButton.vue +1 -1
  138. package/vue/UiInput.vue +7 -4
  139. package/vue/UiInputGroup.vue +6 -6
  140. package/vue/UiList.vue +1 -1
  141. package/vue/UiListItem.vue +20 -4
  142. package/vue/UiListbox.vue +3 -3
  143. package/vue/UiMenu.vue +3 -2
  144. package/vue/UiMenuItem.vue +4 -4
  145. package/vue/UiMeter.vue +1 -1
  146. package/vue/UiNavItem.d.ts +18 -0
  147. package/vue/UiNavItem.vue +96 -12
  148. package/vue/UiPopover.vue +2 -1
  149. package/vue/UiRadio.vue +2 -2
  150. package/vue/UiSearchResultRow.vue +25 -5
  151. package/vue/UiSearchShell.vue +4 -4
  152. package/vue/UiSection.vue +3 -3
  153. package/vue/UiSelect.vue +3 -2
  154. package/vue/UiSeparator.vue +4 -2
  155. package/vue/UiSidebar.vue +5 -3
  156. package/vue/UiStatusMessage.vue +1 -1
  157. package/vue/UiSwitch.vue +3 -3
  158. package/vue/UiTable.vue +3 -3
  159. package/vue/UiTabs.vue +8 -7
  160. package/vue/UiTextarea.vue +2 -2
  161. package/vue/UiToast.vue +4 -2
  162. package/vue/UiToastRegion.vue +5 -5
  163. package/vue/UiTooltip.vue +19 -15
  164. package/vue/UiTopBar.vue +1 -1
  165. package/vue/UiTreeItem.vue +31 -8
  166. package/vue/chunks/UiAvatar.js +1 -1
  167. package/vue/chunks/UiAvatarGroup.js +1 -1
  168. package/vue/chunks/UiBadge.js +1 -1
  169. package/vue/chunks/UiButton.js +1 -1
  170. package/vue/chunks/UiCallout.js +1 -1
  171. package/vue/chunks/UiCard.js +1 -1
  172. package/vue/chunks/UiCheckbox.js +1 -1
  173. package/vue/chunks/UiCombobox.js +1 -1
  174. package/vue/chunks/UiContextMenu.js +1 -1
  175. package/vue/chunks/UiDescriptionList.js +1 -1
  176. package/vue/chunks/UiDialog.js +1 -1
  177. package/vue/chunks/UiDisclosure.js +27 -4
  178. package/vue/chunks/UiEditable.js +1 -1
  179. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  180. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  181. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  182. package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
  183. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  184. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  185. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  186. package/vue/chunks/UiEditorToolbar.js +1 -1
  187. package/vue/chunks/UiFloatingActionButton.js +1 -1
  188. package/vue/chunks/UiIcon.js +24 -1
  189. package/vue/chunks/UiIconButton.js +1 -1
  190. package/vue/chunks/UiInput.js +1 -1
  191. package/vue/chunks/UiInputGroup.js +1 -1
  192. package/vue/chunks/UiList.js +1 -1
  193. package/vue/chunks/UiListItem.js +1 -1
  194. package/vue/chunks/UiListbox.js +1 -1
  195. package/vue/chunks/UiMenu.js +1 -1
  196. package/vue/chunks/UiMenuItem.js +1 -1
  197. package/vue/chunks/UiMeter.js +1 -1
  198. package/vue/chunks/UiNavItem.js +65 -6
  199. package/vue/chunks/UiPopover.js +1 -1
  200. package/vue/chunks/UiRadio.js +1 -1
  201. package/vue/chunks/UiSearchResultRow.js +1 -1
  202. package/vue/chunks/UiSearchShell.js +1 -1
  203. package/vue/chunks/UiSection.js +1 -1
  204. package/vue/chunks/UiSelect.js +1 -1
  205. package/vue/chunks/UiSeparator.js +1 -1
  206. package/vue/chunks/UiSidebar.js +1 -1
  207. package/vue/chunks/UiStatusMessage.js +1 -1
  208. package/vue/chunks/UiSwitch.js +1 -1
  209. package/vue/chunks/UiTable.js +1 -1
  210. package/vue/chunks/UiTabs.js +1 -1
  211. package/vue/chunks/UiTextarea.js +1 -1
  212. package/vue/chunks/UiToast.js +1 -1
  213. package/vue/chunks/UiToastRegion.js +1 -1
  214. package/vue/chunks/UiTooltip.js +1 -1
  215. package/vue/chunks/UiTopBar.js +1 -1
  216. package/vue/chunks/UiTreeItem.js +1 -1
  217. package/vue/components.css +1348 -1208
@@ -2,7 +2,7 @@
2
2
  import { componentRootIndex, manageComponentLifecycle } from "@nextwebwg/html-next/runtime";
3
3
  import "../styles/ui-nav-item.css";
4
4
 
5
- const definition = {...{"contract":{"tag":"ui-nav-item","props":{"as":{"type":{"kind":"terminal","name":"keyword"},"values":["button","a"],"required":false,"target":{"attribute":"as"},"default":"button"},"current":{"type":{"kind":"terminal","name":"keyword"},"values":["true","false","page","step","location"],"required":false,"target":{"attribute":"current"},"default":"false"},"href":{"type":"string","required":false,"target":{"attribute":"href"}},"rel":{"type":"string","required":false,"target":{"attribute":"rel"}},"target":{"type":"string","required":false,"target":{"attribute":"target"}}}},"template":{"kind":"element","name":"template","attributes":[],"children":[{"kind":"element","name":"a","attributes":[{"kind":"attribute","name":"href","expression":"href","expressionPlan":{"source":"href","ast":{"kind":"id","name":"href"},"dependencies":["href"]}},{"kind":"attribute","name":"target","expression":"target","expressionPlan":{"source":"target","ast":{"kind":"id","name":"target"},"dependencies":["target"]}},{"kind":"attribute","name":"rel","expression":"rel","expressionPlan":{"source":"rel","ast":{"kind":"id","name":"rel"},"dependencies":["rel"]}},{"kind":"attribute","name":"aria-current","expression":"{ true: 'page', false: null, page: 'page', step: 'step', location: 'location' }[format('%s', current)]","expressionPlan":{"source":"{ true: 'page', false: null, page: 'page', step: 'step', location: 'location' }[format('%s', current)]","ast":{"kind":"index","object":{"kind":"object","pairs":[{"key":"true","value":{"kind":"literal","value":"page"}},{"key":"false","value":{"kind":"literal","value":null}},{"key":"page","value":{"kind":"literal","value":"page"}},{"key":"step","value":{"kind":"literal","value":"step"}},{"key":"location","value":{"kind":"literal","value":"location"}}]},"index":{"kind":"call","fn":"format","args":[{"kind":"literal","value":"%s"},{"kind":"id","name":"current"}]}},"dependencies":["current"]}}],"children":[{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"indicator"},{"kind":"literal","name":"aria-hidden","value":"true"}],"children":[]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"leading"}],"children":[{"kind":"slot","fallback":[],"name":"leading"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"content"}],"children":[{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"label"}],"children":[{"kind":"slot"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"description"}],"children":[{"kind":"slot","fallback":[],"name":"description"}]}]}],"flow":{"kind":"when","test":"as = 'a'","testPlan":{"source":"as = 'a'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"a"}},"dependencies":["as"]}}},{"kind":"element","name":"button","attributes":[{"kind":"literal","name":"type","value":"button"},{"kind":"attribute","name":"aria-current","expression":"{ true: 'page', false: null, page: 'page', step: 'step', location: 'location' }[format('%s', current)]","expressionPlan":{"source":"{ true: 'page', false: null, page: 'page', step: 'step', location: 'location' }[format('%s', current)]","ast":{"kind":"index","object":{"kind":"object","pairs":[{"key":"true","value":{"kind":"literal","value":"page"}},{"key":"false","value":{"kind":"literal","value":null}},{"key":"page","value":{"kind":"literal","value":"page"}},{"key":"step","value":{"kind":"literal","value":"step"}},{"key":"location","value":{"kind":"literal","value":"location"}}]},"index":{"kind":"call","fn":"format","args":[{"kind":"literal","value":"%s"},{"kind":"id","name":"current"}]}},"dependencies":["current"]}}],"children":[{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"indicator"},{"kind":"literal","name":"aria-hidden","value":"true"}],"children":[]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"leading"}],"children":[{"kind":"slot","fallback":[],"name":"leading"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"content"}],"children":[{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"label"}],"children":[{"kind":"slot"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"description"}],"children":[{"kind":"slot","fallback":[],"name":"description"}]}]}],"flow":{"kind":"else"}}],"flow":{"kind":"match"}},"declarations":[],"root":{"kind":"native","element":"button","choices":["a","button"]}},source:{file:import.meta.url},css:""};
5
+ const definition = {...{"contract":{"tag":"ui-nav-item","props":{"as":{"type":{"kind":"terminal","name":"keyword"},"values":["button","a"],"required":false,"target":{"attribute":"as"},"default":"button"},"current":{"type":{"kind":"terminal","name":"keyword"},"values":["true","false","page","step","location"],"required":false,"target":{"attribute":"current"},"default":"false"},"density":{"type":{"kind":"terminal","name":"keyword"},"values":["comfortable","compact"],"required":false,"target":{"attribute":"density"},"default":"comfortable"},"href":{"type":"string","required":false,"target":{"attribute":"href"}},"rel":{"type":"string","required":false,"target":{"attribute":"rel"}},"target":{"type":"string","required":false,"target":{"attribute":"target"}},"variant":{"type":{"kind":"terminal","name":"keyword"},"values":["surface","line"],"required":false,"target":{"attribute":"variant"},"default":"surface"}}},"template":{"kind":"element","name":"template","attributes":[],"children":[{"kind":"element","name":"a","attributes":[{"kind":"attribute","name":"href","expression":"href","expressionPlan":{"source":"href","ast":{"kind":"id","name":"href"},"dependencies":["href"]}},{"kind":"attribute","name":"target","expression":"target","expressionPlan":{"source":"target","ast":{"kind":"id","name":"target"},"dependencies":["target"]}},{"kind":"attribute","name":"rel","expression":"rel","expressionPlan":{"source":"rel","ast":{"kind":"id","name":"rel"},"dependencies":["rel"]}},{"kind":"attribute","name":"aria-current","expression":"{ true: 'page', false: null, page: 'page', step: 'step', location: 'location' }[format('%s', current)]","expressionPlan":{"source":"{ true: 'page', false: null, page: 'page', step: 'step', location: 'location' }[format('%s', current)]","ast":{"kind":"index","object":{"kind":"object","pairs":[{"key":"true","value":{"kind":"literal","value":"page"}},{"key":"false","value":{"kind":"literal","value":null}},{"key":"page","value":{"kind":"literal","value":"page"}},{"key":"step","value":{"kind":"literal","value":"step"}},{"key":"location","value":{"kind":"literal","value":"location"}}]},"index":{"kind":"call","fn":"format","args":[{"kind":"literal","value":"%s"},{"kind":"id","name":"current"}]}},"dependencies":["current"]}}],"children":[{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"indicator"},{"kind":"literal","name":"aria-hidden","value":"true"}],"children":[]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"leading"}],"children":[{"kind":"slot","fallback":[],"name":"leading"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"content"}],"children":[{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"label"}],"children":[{"kind":"slot"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"description"}],"children":[{"kind":"slot","fallback":[],"name":"description"}]}]}],"flow":{"kind":"when","test":"as = 'a'","testPlan":{"source":"as = 'a'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"a"}},"dependencies":["as"]}}},{"kind":"element","name":"button","attributes":[{"kind":"literal","name":"type","value":"button"},{"kind":"attribute","name":"aria-current","expression":"{ true: 'page', false: null, page: 'page', step: 'step', location: 'location' }[format('%s', current)]","expressionPlan":{"source":"{ true: 'page', false: null, page: 'page', step: 'step', location: 'location' }[format('%s', current)]","ast":{"kind":"index","object":{"kind":"object","pairs":[{"key":"true","value":{"kind":"literal","value":"page"}},{"key":"false","value":{"kind":"literal","value":null}},{"key":"page","value":{"kind":"literal","value":"page"}},{"key":"step","value":{"kind":"literal","value":"step"}},{"key":"location","value":{"kind":"literal","value":"location"}}]},"index":{"kind":"call","fn":"format","args":[{"kind":"literal","value":"%s"},{"kind":"id","name":"current"}]}},"dependencies":["current"]}}],"children":[{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"indicator"},{"kind":"literal","name":"aria-hidden","value":"true"}],"children":[]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"leading"}],"children":[{"kind":"slot","fallback":[],"name":"leading"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"content"}],"children":[{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"label"}],"children":[{"kind":"slot"}]},{"kind":"element","name":"span","attributes":[{"kind":"literal","name":"class","value":"description"}],"children":[{"kind":"slot","fallback":[],"name":"description"}]}]}],"flow":{"kind":"else"}}],"flow":{"kind":"match"}},"declarations":[],"root":{"kind":"native","element":"button","choices":["a","button"]}},source:{file:import.meta.url},css:""};
6
6
 
7
7
  export function createUiNavItem(options = {}) {
8
8
  const { attributes = {}, children = [], slots = {}, ...componentProps } = options;
package/vue/UiAvatar.vue CHANGED
@@ -357,7 +357,7 @@ useComponentHost(() => import('../components/ui-avatar/ui-avatar.js'), {
357
357
  inline-size: 2.5rem;
358
358
  block-size: 2.5rem;
359
359
  border-radius: var(--ui-avatar-radius, var(--ui-radius-round));
360
- border: 1px solid
360
+ border: var(--ui-border-width) solid
361
361
  var(
362
362
  --ui-avatar-border,
363
363
  color-mix(in srgb, var(--ui-accent-solid) 35%, var(--ui-surface-default))
@@ -399,8 +399,8 @@ useComponentHost(() => import('../components/ui-avatar/ui-avatar.js'), {
399
399
  /* An outline, not a dot: the avatar clips its content to the circle, and an outline is drawn
400
400
  outside the box, so the ring survives the clip and the overlap in an Avatar Group. */
401
401
  [data-component~="ui-avatar"][data-ui-avatar-state~="active"] {
402
- outline: 1px solid var(--ui-avatar-active-ring, var(--ui-accent-solid));
403
- outline-offset: 1px;
402
+ outline: var(--ui-border-width) solid var(--ui-avatar-active-ring, var(--ui-accent-solid));
403
+ outline-offset: var(--ui-border-width);
404
404
  }
405
405
 
406
406
  .image,
@@ -285,7 +285,7 @@ useComponentHost(() => import('../components/ui-avatar-group/ui-avatar-group.js'
285
285
  inline-size: 2.5rem;
286
286
  block-size: 2.5rem;
287
287
  border-radius: var(--ui-radius-round);
288
- border: 1px solid var(--ui-border-strong);
288
+ border: var(--ui-border-width) solid var(--ui-border-strong);
289
289
  background: var(--ui-surface-elevated);
290
290
  color: var(--ui-text-primary);
291
291
  box-shadow:
package/vue/UiBadge.vue CHANGED
@@ -253,7 +253,8 @@ const hostState = computed(() =>
253
253
  max-width: 100%;
254
254
  padding: var(--ui-badge-padding-block, var(--ui-space-0-5))
255
255
  var(--ui-badge-padding-inline, var(--ui-space-2));
256
- border: 1px solid var(--ui-badge-border, var(--_badge-color-border, var(--_badge-border)));
256
+ border: var(--ui-border-width) solid
257
+ var(--ui-badge-border, var(--_badge-color-border, var(--_badge-border)));
257
258
  border-radius: var(--ui-radius-round);
258
259
  background: var(--_badge-outline-surface);
259
260
  color: var(--ui-badge-text, var(--_badge-color-text, var(--_badge-text)));
package/vue/UiButton.vue CHANGED
@@ -601,7 +601,7 @@ function attribute(value: unknown): any {
601
601
  appearance: none;
602
602
  min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
603
603
  border-style: solid;
604
- border-width: 1px;
604
+ border-width: var(--ui-border-width);
605
605
  border-color: var(--ui-button-border, var(--_tone));
606
606
  border-radius: var(--ui-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
607
607
  background-color: var(--ui-button-surface, oklch(from var(--_tone) l c h / 5%));
@@ -877,8 +877,8 @@ html[data-ui-input-modality="touch"]
877
877
  [data-component~="ui-button"][data-ui-button-state~="variant=link"]:focus-visible {
878
878
  box-shadow: none;
879
879
  /* Fallback keeps the ring if the token is missing: an unresolved var() would void the outline. */
880
- outline: 2px solid var(--ui-focus-ring);
881
- outline-offset: 2px;
880
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
881
+ outline-offset: var(--ui-focus-width);
882
882
  }
883
883
 
884
884
  /* A component that sets its display still honours the hidden attribute on its root. */
package/vue/UiCallout.vue CHANGED
@@ -243,9 +243,9 @@ const hostState = computed(() =>
243
243
  padding-block: var(--ui-callout-padding-block, var(--ui-space-2));
244
244
  padding-inline-start: var(--ui-callout-padding-inline, var(--ui-space-2));
245
245
  padding-inline-end: var(--ui-callout-padding-inline, var(--ui-space-3));
246
- border: var(--ui-callout-border-width, 1px) solid
246
+ border: var(--ui-callout-border-width, var(--ui-border-width)) solid
247
247
  color-mix(in srgb, var(--ui-callout-border, var(--_callout-border)) 35%, transparent);
248
- border-inline-start: var(--ui-callout-leading-border-width, 4px) solid
248
+ border-inline-start: var(--ui-callout-leading-border-width, var(--ui-accent-line-width)) solid
249
249
  var(--ui-callout-border, var(--_callout-border));
250
250
  border-radius: var(--ui-radius-md);
251
251
  background: var(--ui-callout-surface, var(--_callout-surface));
package/vue/UiCard.vue CHANGED
@@ -266,7 +266,7 @@ const hostState = computed(() =>
266
266
  box-sizing: border-box;
267
267
  min-inline-size: 0;
268
268
  padding: var(--ui-space-5);
269
- border: 1px solid var(--ui-border-strong);
269
+ border: var(--ui-border-width) solid var(--ui-border-strong);
270
270
  border-radius: var(--ui-radius-lg);
271
271
  background: var(--ui-surface-raised);
272
272
  color: var(--ui-text-primary);
@@ -297,7 +297,7 @@ const hostState = computed(() =>
297
297
 
298
298
  [data-component~="ui-card"][data-ui-card-state~="tone=danger"] {
299
299
  border-color: color-mix(in srgb, var(--ui-danger) 45%, var(--ui-border-default));
300
- border-inline-start: 4px solid var(--ui-danger);
300
+ border-inline-start: var(--ui-accent-line-width) solid var(--ui-danger);
301
301
  background: var(--ui-danger-soft);
302
302
  }
303
303
 
@@ -384,7 +384,7 @@ input {
384
384
  inline-size: var(--_ui-checkbox-size, 1.125rem);
385
385
  block-size: var(--_ui-checkbox-size, 1.125rem);
386
386
  margin: 0.125em 0 0;
387
- border: 1px solid var(--ui-control-border, var(--ui-border-strong));
387
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
388
388
  border-radius: var(--ui-radius-sm);
389
389
  background: var(--ui-control-surface, var(--ui-surface-default));
390
390
  box-shadow: var(--ui-control-inset);
@@ -461,8 +461,8 @@ input:hover:enabled {
461
461
  }
462
462
 
463
463
  input:focus-visible {
464
- outline: 2px solid var(--ui-focus-ring, var(--ui-accent-solid));
465
- outline-offset: 2px;
464
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
465
+ outline-offset: var(--ui-focus-width);
466
466
  }
467
467
 
468
468
  [data-component~="ui-checkbox"][data-ui-checkbox-state~="invalid"] input {
@@ -1747,7 +1747,7 @@ label {
1747
1747
  flex: 1 1 auto;
1748
1748
  display: flex;
1749
1749
  min-inline-size: 0;
1750
- border: 1px solid var(--ui-control-border, var(--ui-border-default));
1750
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-default));
1751
1751
  border-radius: var(--_ui-combobox-radius, var(--ui-field-radius, var(--ui-radius-md)));
1752
1752
  background: var(--ui-control-surface, var(--ui-surface-default));
1753
1753
  box-shadow: var(--ui-control-inset);
@@ -1866,7 +1866,8 @@ button:hover:enabled {
1866
1866
  button:focus-visible {
1867
1867
  outline: none;
1868
1868
  background: var(--ui-surface-muted);
1869
- box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
1869
+ box-shadow: inset 0 0 0 var(--ui-focus-width)
1870
+ color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
1870
1871
  }
1871
1872
  input:disabled, button:disabled {
1872
1873
  color: var(--ui-disabled-text);
@@ -1890,7 +1891,7 @@ input:disabled, button:disabled {
1890
1891
  overflow: auto;
1891
1892
  margin: 0;
1892
1893
  padding: var(--ui-space-1);
1893
- border: 1px solid
1894
+ border: var(--ui-border-width) solid
1894
1895
  var(--_ui-combobox-popup-border, var(--ui-overlay-border, var(--ui-border-strong)));
1895
1896
  border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
1896
1897
  background: var(
@@ -1912,7 +1913,7 @@ input:disabled, button:disabled {
1912
1913
  }
1913
1914
  .primary {
1914
1915
  display: block;
1915
- color: var(--_ui-combobox-option-text, var(--ui-text-primary));
1916
+ color: var(--_ui-combobox-option-text, inherit);
1916
1917
  font-weight: 500;
1917
1918
  }
1918
1919
  /* A row with a tag or a description: the label and its tag on one line, the description under them. */
@@ -2003,7 +2004,7 @@ input:disabled, button:disabled {
2003
2004
  }
2004
2005
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"]
2005
2006
  input {
2006
- min-block-size: calc(var(--_row) - 2px - 2 * var(--ui-space-0-5));
2007
+ min-block-size: calc(var(--_row) - 2 * var(--ui-border-width) - 2 * var(--ui-space-0-5));
2007
2008
  padding: 0 var(--ui-space-1);
2008
2009
  }
2009
2010
  /* A large multiple field starts at the large control height, as sm starts at the small one. */
@@ -2013,7 +2014,9 @@ input:disabled, button:disabled {
2013
2014
  }
2014
2015
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"]
2015
2016
  input {
2016
- min-block-size: calc(var(--ui-control-size-lg) - 2px - 2 * var(--ui-space-1));
2017
+ min-block-size: calc(
2018
+ var(--ui-control-size-lg) - 2 * var(--ui-border-width) - 2 * var(--ui-space-1)
2019
+ );
2017
2020
  }
2018
2021
  .item {
2019
2022
  appearance: none;
@@ -2031,8 +2034,8 @@ input:disabled, button:disabled {
2031
2034
  cursor: default;
2032
2035
  }
2033
2036
  .item:focus-visible {
2034
- outline: 2px solid var(--ui-focus-ring);
2035
- outline-offset: 1px;
2037
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
2038
+ outline-offset: var(--ui-border-width);
2036
2039
  }
2037
2040
  .item:disabled {
2038
2041
  color: var(--ui-disabled-text);
@@ -245,7 +245,7 @@ useComponentHost(() => import('../components/ui-context-menu/ui-context-menu.js'
245
245
  --_ui-context-menu-surface,
246
246
  var(--ui-overlay-surface, var(--ui-surface-elevated))
247
247
  );
248
- border: 1px solid
248
+ border: var(--ui-border-width) solid
249
249
  var(--_ui-context-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
250
250
  border-radius: var(--_ui-context-menu-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
251
251
  box-shadow: var(
@@ -270,7 +270,7 @@ useComponentHost(() => import('../components/ui-context-menu/ui-context-menu.js'
270
270
  block-size: 0;
271
271
  margin: var(--ui-space-1) 0;
272
272
  border: 0;
273
- border-block-start: 1px solid var(--ui-border-divider);
273
+ border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
274
274
  }
275
275
 
276
276
  .menu:popover-open {
@@ -201,7 +201,7 @@ const hostState = computed(() =>
201
201
  --_ui-description-align: flex-start;
202
202
  --_ui-description-value-size: var(--ui-font-size-lg);
203
203
  --_ui-description-padding: var(--_tile-padding);
204
- --_ui-description-border-width: 1px;
204
+ --_ui-description-border-width: var(--ui-border-width);
205
205
  --_ui-description-border-color: var(--ui-border-strong);
206
206
  --_gap: var(--ui-space-3);
207
207
  --_gap-compact: var(--ui-space-2);
package/vue/UiDialog.vue CHANGED
@@ -377,7 +377,8 @@ useComponentHost(() => import('../components/ui-dialog/ui-dialog.js'), {
377
377
  overflow: hidden;
378
378
  flex-direction: column;
379
379
  background: var(--ui-dialog-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
380
- border: 1px solid var(--ui-dialog-border, var(--ui-overlay-border, var(--ui-border-strong)));
380
+ border: var(--ui-border-width) solid
381
+ var(--ui-dialog-border, var(--ui-overlay-border, var(--ui-border-strong)));
381
382
  border-radius: var(--ui-dialog-radius, var(--ui-overlay-radius, var(--ui-radius-dialog)));
382
383
  box-shadow: var(
383
384
  --ui-dialog-shadow,
@@ -488,8 +489,8 @@ header {
488
489
  }
489
490
 
490
491
  .close:focus-visible {
491
- outline: 2px solid var(--ui-focus-ring);
492
- outline-offset: 2px;
492
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
493
+ outline-offset: var(--ui-focus-width);
493
494
  }
494
495
 
495
496
  /* A touch target, like Button on coarse pointers. */
@@ -1,9 +1,11 @@
1
1
  import type { PropType } from 'vue';
2
- declare var __VLS_1: {}, __VLS_3: {};
2
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
3
3
  type __VLS_Slots = {} & {
4
4
  summary?: (props: typeof __VLS_1) => any;
5
5
  } & {
6
- default?: (props: typeof __VLS_3) => any;
6
+ indicator?: (props: typeof __VLS_3) => any;
7
+ } & {
8
+ default?: (props: typeof __VLS_5) => any;
7
9
  };
8
10
  declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
9
11
  density: {
@@ -14,6 +16,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
14
16
  type: PropType<boolean | null>;
15
17
  default: boolean;
16
18
  };
19
+ fill: {
20
+ type: PropType<boolean | null>;
21
+ default: boolean;
22
+ };
17
23
  headingLevel: {
18
24
  type: PropType<number | null>;
19
25
  default: number;
@@ -51,6 +57,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
51
57
  type: PropType<boolean | null>;
52
58
  default: boolean;
53
59
  };
60
+ fill: {
61
+ type: PropType<boolean | null>;
62
+ default: boolean;
63
+ };
54
64
  headingLevel: {
55
65
  type: PropType<number | null>;
56
66
  default: number;
@@ -80,6 +90,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
80
90
  readonly trigger: "keyboard" | "pointer" | "programmatic";
81
91
  }>) => any) | undefined;
82
92
  }>, {
93
+ fill: boolean | null;
83
94
  summary: string | null;
84
95
  name: string | null;
85
96
  open: boolean | null;
@@ -25,6 +25,14 @@ const propValidityContract = {
25
25
  'Disables the trigger and mutes its text, so the disclosure keeps its current state and the user cannot toggle it.',
26
26
  default: false,
27
27
  },
28
+ fill: {
29
+ type: { kind: 'terminal', name: 'boolean' },
30
+ required: false,
31
+ target: { attribute: 'fill' },
32
+ description:
33
+ 'In a column with a bounded height, an open disclosure fills the remaining space and keeps its trigger visible. The content slot can contain a Scroll Area.\n Closed items keep only their trigger height.',
34
+ default: false,
35
+ },
28
36
  headingLevel: {
29
37
  type: { kind: 'terminal', name: 'integer' },
30
38
  required: false,
@@ -65,6 +73,7 @@ const props = defineProps({
65
73
  default: 'comfortable',
66
74
  },
67
75
  disabled: { type: null as unknown as PropType<boolean | null>, default: false },
76
+ fill: { type: null as unknown as PropType<boolean | null>, default: false },
68
77
  headingLevel: { type: null as unknown as PropType<number | null>, default: 0 },
69
78
  name: { type: null as unknown as PropType<string | null>, default: '' },
70
79
  open: { type: null as unknown as PropType<boolean | null>, default: false },
@@ -73,6 +82,7 @@ const props = defineProps({
73
82
  const acceptedProps: Record<string, unknown> = {
74
83
  density: 'comfortable',
75
84
  disabled: false,
85
+ fill: false,
76
86
  headingLevel: 0,
77
87
  name: '',
78
88
  open: false,
@@ -93,6 +103,13 @@ const checkedProps = computed(() => ({
93
103
  'disabled',
94
104
  acceptedProps,
95
105
  ) as boolean,
106
+ fill: checkedProp<boolean>(
107
+ props['fill'],
108
+ { kind: 'terminal', name: 'boolean' },
109
+ false,
110
+ 'fill',
111
+ acceptedProps,
112
+ ) as boolean,
96
113
  headingLevel: checkedProp<number>(
97
114
  props['headingLevel'],
98
115
  { kind: 'terminal', name: 'integer' },
@@ -249,6 +266,7 @@ const hostState = computed(() =>
249
266
  checkedProps.value.density != null
250
267
  && `density=${encodeURIComponent(checkedProps.value.density)}`,
251
268
  internalOpen.value && 'internalOpen',
269
+ checkedProps.value.fill && 'fill',
252
270
  ].filter(Boolean).join(' ')
253
271
  )
254
272
 
@@ -286,7 +304,7 @@ useComponentHost(() => import('../components/ui-disclosure/ui-disclosure.js'), {
286
304
  ? (incoming[name] ?? incoming[kebab] ?? null)
287
305
  : null
288
306
  },
289
- propNames: ['density', 'disabled', 'headingLevel', 'name', 'open', 'summary'],
307
+ propNames: ['density', 'disabled', 'fill', 'headingLevel', 'name', 'open', 'summary'],
290
308
  propValidity: (name: string) =>
291
309
  propValidityState({ contract: propValidityContract, values: { ...props } }, name),
292
310
  refs: { trigger: triggerElement, panel: panelElement },
@@ -301,6 +319,7 @@ useComponentHost(() => import('../components/ui-disclosure/ui-disclosure.js'), {
301
319
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
302
320
  :data-density="reflectedProp('density', 'density', checkedProps.density, undefined, false)"
303
321
  :data-disabled="reflectedProp('disabled', 'disabled', checkedProps.disabled, undefined, false)"
322
+ :data-fill="reflectedProp('fill', 'fill', checkedProps.fill, undefined, false)"
304
323
  :data-heading-level="reflectedProp('headingLevel', 'heading-level', checkedProps.headingLevel, undefined, false)"
305
324
  :data-name="reflectedProp('name', 'name', checkedProps.name, undefined, false)"
306
325
  :data-open="reflectedProp('open', 'open', checkedProps.open, undefined, false)"
@@ -318,7 +337,7 @@ useComponentHost(() => import('../components/ui-disclosure/ui-disclosure.js'), {
318
337
  ref="trigger"
319
338
  >
320
339
  <span class="summary"><slot name="summary">{{ checkedProps.summary }}</slot></span>
321
- <span class="chevron" aria-hidden="true"></span>
340
+ <slot name="indicator"><span class="chevron" aria-hidden="true"></span></slot>
322
341
  </button>
323
342
  </div>
324
343
  <div class="panel" :id="guardedBinding4" ref="panel">
@@ -366,7 +385,7 @@ useComponentHost(() => import('../components/ui-disclosure/ui-disclosure.js'), {
366
385
  display: block;
367
386
  inline-size: 100%;
368
387
  overflow: clip;
369
- border-block-end: 1px solid var(--ui-border-divider);
388
+ border-block-end: var(--ui-border-width) solid var(--ui-border-divider);
370
389
  color: var(--ui-text-primary);
371
390
  }
372
391
 
@@ -395,7 +414,8 @@ useComponentHost(() => import('../components/ui-disclosure/ui-disclosure.js'), {
395
414
  }
396
415
  .trigger:focus-visible {
397
416
  outline: none;
398
- box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
417
+ box-shadow: inset 0 0 0 var(--ui-focus-width)
418
+ color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
399
419
  }
400
420
  .trigger:disabled {
401
421
  color: var(--ui-disabled-text);
@@ -434,6 +454,43 @@ useComponentHost(() => import('../components/ui-disclosure/ui-disclosure.js'), {
434
454
  transform: rotate(225deg) translate(-1px, -1px);
435
455
  }
436
456
 
457
+ /* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
458
+ * normal content-sized layout and its animation remain unchanged when fill is omitted. */
459
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="fill"] {
460
+ display: flex;
461
+ flex-direction: column;
462
+ flex: none;
463
+ min-block-size: 0;
464
+ border-block-end: 0;
465
+ border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
466
+ }
467
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="fill"][data-ui-disclosure-state~="internalOpen"] {
468
+ flex: 1;
469
+ }
470
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="fill"] .heading {
471
+ flex: none;
472
+ }
473
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="fill"] .trigger {
474
+ border-radius: 0;
475
+ }
476
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="fill"] .panel {
477
+ display: flex;
478
+ flex: 1;
479
+ min-block-size: 0;
480
+ transition: none;
481
+ }
482
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="fill"] .panel[hidden] {
483
+ flex: none;
484
+ block-size: 0;
485
+ }
486
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="fill"] .panel-inner {
487
+ display: flex;
488
+ flex-direction: column;
489
+ flex: 1;
490
+ min-block-size: 0;
491
+ padding: 0;
492
+ }
493
+
437
494
  @media (prefers-reduced-motion: reduce) {
438
495
  .panel,
439
496
  .chevron {
@@ -464,7 +464,7 @@ useComponentHost(() => import('../components/ui-editable/ui-editable.js'), {
464
464
  min-block-size: var(--ui-control-size-sm);
465
465
  margin: 0;
466
466
  padding: var(--ui-space-1) var(--ui-space-2);
467
- border: 1px solid transparent;
467
+ border: var(--ui-border-width) solid transparent;
468
468
  border-radius: var(--ui-radius-md);
469
469
  font: inherit;
470
470
  line-height: var(--ui-line-height-md);
@@ -537,7 +537,7 @@ useComponentHost(() => import('../components/ui-editable/ui-editable.js'), {
537
537
  .actions button {
538
538
  min-block-size: var(--ui-control-size-sm);
539
539
  padding: 0 var(--ui-space-3);
540
- border: 1px solid var(--ui-border-strong);
540
+ border: var(--ui-border-width) solid var(--ui-border-strong);
541
541
  border-radius: var(--ui-radius-md);
542
542
  background: var(--ui-surface-elevated);
543
543
  background-image: var(--ui-raised-highlight);
@@ -322,7 +322,7 @@ function uniqueKeys<T>(
322
322
  [data-component~="ui-editor-insert-table-grid"] {
323
323
  padding: var(--ui-space-3);
324
324
  background: var(--ui-surface);
325
- border: 1px solid var(--ui-border-strong);
325
+ border: var(--ui-border-width) solid var(--ui-border-strong);
326
326
  border-radius: var(--ui-radius-md);
327
327
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
328
328
  }
@@ -371,8 +371,8 @@ function uniqueKeys<T>(
371
371
  width: 1.25rem;
372
372
  height: 1.25rem;
373
373
  padding: 0;
374
- border: 1px solid var(--ui-control-border);
375
- border-radius: 2px;
374
+ border: var(--ui-border-width) solid var(--ui-control-border);
375
+ border-radius: var(--ui-radius-sm);
376
376
  background: var(--ui-surface);
377
377
  cursor: pointer;
378
378
  }
@@ -383,8 +383,8 @@ function uniqueKeys<T>(
383
383
  }
384
384
 
385
385
  .cell:focus-visible {
386
- outline: 2px solid var(--ui-focus-ring);
387
- outline-offset: -2px;
386
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
387
+ outline-offset: calc(-1 * var(--ui-focus-width));
388
388
  }
389
389
 
390
390
  .header {
@@ -408,7 +408,7 @@ useComponentHost(() => import('../components/ui-editor-mention-menu/ui-editor-me
408
408
  overflow: hidden;
409
409
  flex-direction: column;
410
410
  background: var(--ui-surface);
411
- border: 1px solid var(--ui-border-strong);
411
+ border: var(--ui-border-width) solid var(--ui-border-strong);
412
412
  border-radius: var(--ui-radius-dialog);
413
413
  box-shadow: var(--ui-shadow-lg, 0 8px 24px rgb(0 0 0 / 0.12));
414
414
  }
@@ -420,7 +420,7 @@ useComponentHost(() => import('../components/ui-editor-mention-menu/ui-editor-me
420
420
  gap: var(--ui-space-3);
421
421
  padding: var(--ui-space-2) var(--ui-space-3);
422
422
  color: var(--ui-text-secondary);
423
- border-bottom: 1px solid var(--ui-border-divider);
423
+ border-bottom: var(--ui-border-width) solid var(--ui-border-divider);
424
424
  font-size: var(--ui-font-size-xs);
425
425
  font-weight: var(--ui-font-semibold);
426
426
  }
@@ -359,7 +359,7 @@ useComponentHost(() => import('../components/ui-editor-slash-menu/ui-editor-slas
359
359
 
360
360
  [data-component~="ui-editor-slash-menu"] {
361
361
  background: var(--ui-surface);
362
- border: 1px solid var(--ui-border-strong);
362
+ border: var(--ui-border-width) solid var(--ui-border-strong);
363
363
  border-radius: var(--ui-radius-dialog);
364
364
  box-shadow: var(--ui-shadow-lg, 0 8px 24px rgb(0 0 0 / 0.12));
365
365
  overflow: hidden;
@@ -379,7 +379,7 @@ useComponentHost(() => import('../components/ui-editor-slash-menu/ui-editor-slas
379
379
  align-items: center;
380
380
  gap: var(--ui-space-2);
381
381
  padding: var(--ui-space-3) var(--ui-space-4);
382
- border-bottom: 1px solid var(--ui-border-divider);
382
+ border-bottom: var(--ui-border-width) solid var(--ui-border-divider);
383
383
  font-size: var(--ui-font-size-xs);
384
384
  color: var(--ui-text-muted);
385
385
  font-weight: var(--ui-font-semibold);
@@ -463,7 +463,7 @@ useComponentHost(() => import('../components/ui-editor-slash-menu/ui-editor-slas
463
463
  width: 32px;
464
464
  height: 32px;
465
465
  background: var(--ui-surface-hover);
466
- border: 1px solid var(--ui-border);
466
+ border: var(--ui-border-width) solid var(--ui-border);
467
467
  border-radius: var(--ui-radius-md);
468
468
  font-size: var(--ui-font-size-sm);
469
469
  font-weight: var(--ui-font-bold);
@@ -510,7 +510,7 @@ useComponentHost(() => import('../components/ui-editor-slash-menu/ui-editor-slas
510
510
 
511
511
  .footer {
512
512
  padding: var(--ui-space-2) var(--ui-space-3);
513
- border-top: 1px solid var(--ui-border-divider);
513
+ border-top: var(--ui-border-width) solid var(--ui-border-divider);
514
514
  font-size: var(--ui-font-size-xs);
515
515
  color: var(--ui-text-muted);
516
516
  }
@@ -522,8 +522,8 @@ useComponentHost(() => import('../components/ui-editor-slash-menu/ui-editor-slas
522
522
  font-family: var(--ui-font-family-mono, ui-monospace, monospace);
523
523
  font-size: var(--ui-font-size-2xs);
524
524
  background: var(--ui-surface-hover);
525
- border: 1px solid var(--ui-border);
526
- border-radius: 3px;
525
+ border: var(--ui-border-width) solid var(--ui-border);
526
+ border-radius: var(--ui-radius-sm);
527
527
  padding: 0 3px;
528
528
  color: var(--ui-text-secondary);
529
529
  }
@@ -211,7 +211,7 @@ if (
211
211
  flex: 0 0 auto;
212
212
  color: var(--ui-text-secondary);
213
213
  background: var(--ui-surface-hover);
214
- border: 1px solid var(--ui-border);
214
+ border: var(--ui-border-width) solid var(--ui-border);
215
215
  border-radius: var(--ui-radius-md);
216
216
  }
217
217
 
@@ -552,7 +552,7 @@ function uniqueKeys<T>(
552
552
  max-height: min(28rem, calc(100vh - 24px));
553
553
  padding: var(--ui-space-2);
554
554
  background: var(--ui-surface);
555
- border: 1px solid var(--ui-border-strong);
555
+ border: var(--ui-border-width) solid var(--ui-border-strong);
556
556
  border-radius: var(--ui-radius-lg);
557
557
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
558
558
  display: flex;
@@ -619,7 +619,7 @@ function uniqueKeys<T>(
619
619
  width: 1rem;
620
620
  height: 1rem;
621
621
  border-radius: var(--ui-radius-round);
622
- border: 1px solid var(--ui-border);
622
+ border: var(--ui-border-width) solid var(--ui-border);
623
623
  background: var(--_swatch, #fff);
624
624
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.35);
625
625
  flex-shrink: 0;