@threadlabs/looma 0.22.14 → 0.23.0

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 +13 -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 +16 -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 +13 -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 +1337 -1208
package/editor/icons.d.ts CHANGED
@@ -22,6 +22,7 @@ export declare const LOOMA_ICONS: {
22
22
  'chevron-right': IconNode;
23
23
  'code-xml': IconNode;
24
24
  columns: IconNode;
25
+ compass: IconNode;
25
26
  'credit-card': IconNode;
26
27
  ellipsis: IconNode;
27
28
  eraser: IconNode;
@@ -34,6 +35,7 @@ export declare const LOOMA_ICONS: {
34
35
  'heading-3': IconNode;
35
36
  help: IconNode;
36
37
  highlighter: IconNode;
38
+ history: IconNode;
37
39
  image: IconNode;
38
40
  info: IconNode;
39
41
  italic: IconNode;
package/editor/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { n as TABLE_CELL_BACKGROUND_PRESETS, t as TABLE_CELL_BACKGROUND_OPTIONS } from "./chunks/table-backgrounds.js";
2
2
  import { n as resolveTableCellAt, t as measureTableOverlayGeometry } from "./chunks/ui.js";
3
3
  import { A as LoomaChip, C as LoomaMentionSuggestionPluginKey, D as filterLoomaMentionItems, E as MAX_MENTION_RESULT_LIMIT, F as LOOMA_ACTIVE_BLOCK_CLASS, I as LOOMA_ACTIVE_BLOCK_TYPING_IDLE_MS, L as LoomaActiveBlock, M as LOOMA_CALLOUT_TONES, N as LoomaCallout, O as normalizeMentionResultLimit, P as LOOMA_ACTIVE_BLOCK_BLUR_GRACE_MS, R as LoomaActiveBlockPluginKey, S as siteRelativeHref, T as DEFAULT_MENTION_RESULT_LIMIT, _ as getActiveTableCellBackground, a as handleTableAction, b as LoomaSmartPaste, c as normalizeActiveTableColumnWidths, d as getDefaultEditorExtensions, f as getLoomaTableExtensions, g as getActiveTableCellAlignment, h as LoomaTableHeader, i as getActiveTableUiState, j as normalizeLoomaChipColor, k as LOOMA_CHIP_COLORS, l as shouldShowTextFormattingToolbar, m as LoomaTableCell, n as createLoomaSlashCommandExtension, o as handleTableOverlayAction, p as LoomaTable, r as getDefaultSlashCommands, s as insertTableAtRange, t as LoomaSlashCommand, u as LoomaTableKit, v as setActiveTableCellAlignment, w as createLoomaMentionExtension, x as createSiteRelativeLinks, y as setActiveTableCellBackground } from "./chunks/extensions.js";
4
- import { AlignCenter, AlignLeft, AlignRight, ArrowLeft, Bold, BookUser, Braces, Calculator, Check, ChevronDown, ChevronLeft, ChevronRight, CircleCheck, CircleDot, CircleQuestionMark, CircleX, CodeXml, Columns3, CreditCard, Ellipsis, Eraser, ExternalLink, FileText, Folder, GripHorizontal, GripVertical, Heading1, Heading2, Heading3, Highlighter, Image, Info, Italic, LayoutDashboard, Link, List, ListOrdered, ListTodo, LoaderCircle, Merge, Minus, NotebookPen, PaintBucket, PanelBottom, PanelLeft, PanelRight, PanelTop, Pencil, Pilcrow, Plus, Quote, Receipt, Redo2, Rows3, Search, Settings, Split, Strikethrough, Table2, Tag, Trash2, TriangleAlert, Truck, Underline, Undo2, Unlink, UserRound, Users, X } from "lucide";
4
+ import { AlignCenter, AlignLeft, AlignRight, ArrowLeft, Bold, BookUser, Braces, Calculator, Check, ChevronDown, ChevronLeft, ChevronRight, CircleCheck, CircleDot, CircleQuestionMark, CircleX, CodeXml, Columns3, Compass, CreditCard, Ellipsis, Eraser, ExternalLink, FileText, Folder, GripHorizontal, GripVertical, Heading1, Heading2, Heading3, Highlighter, History, Image, Info, Italic, LayoutDashboard, Link, List, ListOrdered, ListTodo, LoaderCircle, Merge, Minus, NotebookPen, PaintBucket, PanelBottom, PanelLeft, PanelRight, PanelTop, Pencil, Pilcrow, Plus, Quote, Receipt, Redo2, Rows3, Search, Settings, Split, Strikethrough, Table2, Tag, Trash2, TriangleAlert, Truck, Underline, Undo2, Unlink, UserRound, Users, X } from "lucide";
5
5
  //#region src/editor/icons.ts
6
6
  /** The opinionated Lucide set used by Looma's shipped interaction surfaces. */
7
7
  var LOOMA_ICONS = {
@@ -26,6 +26,7 @@ var LOOMA_ICONS = {
26
26
  "chevron-right": ChevronRight,
27
27
  "code-xml": CodeXml,
28
28
  columns: Columns3,
29
+ compass: Compass,
29
30
  "credit-card": CreditCard,
30
31
  ellipsis: Ellipsis,
31
32
  eraser: Eraser,
@@ -38,6 +39,7 @@ var LOOMA_ICONS = {
38
39
  "heading-3": Heading3,
39
40
  help: CircleQuestionMark,
40
41
  highlighter: Highlighter,
42
+ history: History,
41
43
  image: Image,
42
44
  info: Info,
43
45
  italic: Italic,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@threadlabs/looma",
3
- "version": "0.22.14",
3
+ "version": "0.23.0",
4
4
  "type": "module",
5
5
  "description": "Looma components as HTML, Vue, and plain DOM, with design tokens.",
6
6
  "license": "MIT",
@@ -40,7 +40,7 @@
40
40
  inline-size: 2.5rem;
41
41
  block-size: 2.5rem;
42
42
  border-radius: var(--ui-radius-round);
43
- border: 1px solid var(--ui-border-strong);
43
+ border: var(--ui-border-width) solid var(--ui-border-strong);
44
44
  background: var(--ui-surface-elevated);
45
45
  color: var(--ui-text-primary);
46
46
  box-shadow:
@@ -30,7 +30,7 @@
30
30
  inline-size: 2.5rem;
31
31
  block-size: 2.5rem;
32
32
  border-radius: var(--ui-avatar-radius, var(--ui-radius-round));
33
- border: 1px solid var(--ui-avatar-border, color-mix(in srgb, var(--ui-accent-solid) 35%, var(--ui-surface-default)));
33
+ border: var(--ui-border-width) solid var(--ui-avatar-border, color-mix(in srgb, var(--ui-accent-solid) 35%, var(--ui-surface-default)));
34
34
  background: var(--ui-avatar-surface, var(--ui-accent-soft));
35
35
  color: var(--ui-avatar-text, var(--ui-accent-subtle-text, var(--ui-accent-solid)));
36
36
  font: inherit;
@@ -68,8 +68,8 @@
68
68
  /* An outline, not a dot: the avatar clips its content to the circle, and an outline is drawn
69
69
  outside the box, so the ring survives the clip and the overlap in an Avatar Group. */
70
70
  :scope[data-ui-avatar-state~="active"] {
71
- outline: 1px solid var(--ui-avatar-active-ring, var(--ui-accent-solid));
72
- outline-offset: 1px;
71
+ outline: var(--ui-border-width) solid var(--ui-avatar-active-ring, var(--ui-accent-solid));
72
+ outline-offset: var(--ui-border-width);
73
73
  }
74
74
 
75
75
  .fallback {
@@ -67,7 +67,7 @@
67
67
  justify-content: center;
68
68
  max-width: 100%;
69
69
  padding: var(--ui-badge-padding-block, var(--ui-space-0-5)) var(--ui-badge-padding-inline, var(--ui-space-2));
70
- border: 1px solid var(--ui-badge-border, var(--_badge-color-border, var(--_badge-border)));
70
+ border: var(--ui-border-width) solid var(--ui-badge-border, var(--_badge-color-border, var(--_badge-border)));
71
71
  border-radius: var(--ui-radius-round);
72
72
  background: var(--_badge-outline-surface);
73
73
  color: var(--ui-badge-text, var(--_badge-color-text, var(--_badge-text)));
@@ -108,7 +108,7 @@
108
108
  appearance: none;
109
109
  min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
110
110
  border-style: solid;
111
- border-width: 1px;
111
+ border-width: var(--ui-border-width);
112
112
  border-color: var(--ui-button-border, var(--_tone));
113
113
  border-radius: var(--ui-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
114
114
  background-color: var(--ui-button-surface, oklch(from var(--_tone) l c h / 5%));
@@ -371,8 +371,8 @@
371
371
  :scope[data-ui-button-state~="variant=link"]:focus-visible {
372
372
  box-shadow: none;
373
373
  /* Fallback keeps the ring if the token is missing: an unresolved var() would void the outline. */
374
- outline: 2px solid var(--ui-focus-ring);
375
- outline-offset: 2px;
374
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
375
+ outline-offset: var(--ui-focus-width);
376
376
  }
377
377
 
378
378
  /* A component that sets its display still honours the hidden attribute on its root. */
@@ -64,8 +64,9 @@
64
64
  padding-block: var(--ui-callout-padding-block, var(--ui-space-2));
65
65
  padding-inline-start: var(--ui-callout-padding-inline, var(--ui-space-2));
66
66
  padding-inline-end: var(--ui-callout-padding-inline, var(--ui-space-3));
67
- border: var(--ui-callout-border-width, 1px) solid color-mix(in srgb, var(--ui-callout-border, var(--_callout-border)) 35%, transparent);
68
- border-inline-start: var(--ui-callout-leading-border-width, 4px) solid var(--ui-callout-border, var(--_callout-border));
67
+ border: var(--ui-callout-border-width, var(--ui-border-width)) solid
68
+ color-mix(in srgb, var(--ui-callout-border, var(--_callout-border)) 35%, transparent);
69
+ border-inline-start: var(--ui-callout-leading-border-width, var(--ui-accent-line-width)) solid var(--ui-callout-border, var(--_callout-border));
69
70
  border-radius: var(--ui-radius-md);
70
71
  background: var(--ui-callout-surface, var(--_callout-surface));
71
72
  color: var(--ui-callout-text, var(--ui-text-primary));
@@ -9,7 +9,7 @@
9
9
  box-sizing: border-box;
10
10
  min-inline-size: 0;
11
11
  padding: var(--ui-space-5);
12
- border: 1px solid var(--ui-border-strong);
12
+ border: var(--ui-border-width) solid var(--ui-border-strong);
13
13
  border-radius: var(--ui-radius-lg);
14
14
  background: var(--ui-surface-raised);
15
15
  color: var(--ui-text-primary);
@@ -40,7 +40,7 @@
40
40
 
41
41
  :scope[data-ui-card-state~="tone=danger"] {
42
42
  border-color: color-mix(in srgb, var(--ui-danger) 45%, var(--ui-border-default));
43
- border-inline-start: 4px solid var(--ui-danger);
43
+ border-inline-start: var(--ui-accent-line-width) solid var(--ui-danger);
44
44
  background: var(--ui-danger-soft);
45
45
  }
46
46
 
@@ -72,7 +72,7 @@
72
72
  inline-size: var(--_ui-checkbox-size, 1.125rem);
73
73
  block-size: var(--_ui-checkbox-size, 1.125rem);
74
74
  margin: 0.125em 0 0;
75
- border: 1px solid var(--ui-control-border, var(--ui-border-strong));
75
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
76
76
  border-radius: var(--ui-radius-sm);
77
77
  background: var(--ui-control-surface, var(--ui-surface-default));
78
78
  box-shadow: var(--ui-control-inset);
@@ -134,8 +134,8 @@
134
134
  }
135
135
 
136
136
  input:focus-visible {
137
- outline: 2px solid var(--ui-focus-ring, var(--ui-accent-solid));
138
- outline-offset: 2px;
137
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
138
+ outline-offset: var(--ui-focus-width);
139
139
  }
140
140
 
141
141
  :scope[data-ui-checkbox-state~="invalid"] input {
@@ -109,7 +109,7 @@
109
109
  flex: 1 1 auto;
110
110
  display: flex;
111
111
  min-inline-size: 0;
112
- border: 1px solid var(--ui-control-border, var(--ui-border-default));
112
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-default));
113
113
  border-radius: var(--_ui-combobox-radius, var(--ui-field-radius, var(--ui-radius-md)));
114
114
  background: var(--ui-control-surface, var(--ui-surface-default));
115
115
  box-shadow: var(--ui-control-inset);
@@ -224,7 +224,7 @@
224
224
  button:focus-visible {
225
225
  outline: none;
226
226
  background: var(--ui-surface-muted);
227
- box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
227
+ box-shadow: inset 0 0 0 var(--ui-focus-width) color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
228
228
  }
229
229
  input:disabled, button:disabled {
230
230
  color: var(--ui-disabled-text);
@@ -245,7 +245,7 @@
245
245
  overflow: auto;
246
246
  margin: 0;
247
247
  padding: var(--ui-space-1);
248
- border: 1px solid var(--_ui-combobox-popup-border, var(--ui-overlay-border, var(--ui-border-strong)));
248
+ border: var(--ui-border-width) solid var(--_ui-combobox-popup-border, var(--ui-overlay-border, var(--ui-border-strong)));
249
249
  border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
250
250
  background: var(--_ui-combobox-popup-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
251
251
  color: var(--ui-text-primary);
@@ -260,7 +260,7 @@
260
260
  }
261
261
  .primary {
262
262
  display: block;
263
- color: var(--_ui-combobox-option-text, var(--ui-text-primary));
263
+ color: var(--_ui-combobox-option-text, inherit);
264
264
  font-weight: 500;
265
265
  }
266
266
  /* A row with a tag or a description: the label and its tag on one line, the description under them. */
@@ -349,7 +349,7 @@
349
349
  padding: var(--ui-space-0-5);
350
350
  }
351
351
  :scope[data-ui-combobox-state~="multiple"]:scope[data-ui-combobox-state~="size=sm"] input {
352
- min-block-size: calc(var(--_row) - 2px - 2 * var(--ui-space-0-5));
352
+ min-block-size: calc(var(--_row) - 2 * var(--ui-border-width) - 2 * var(--ui-space-0-5));
353
353
  padding: 0 var(--ui-space-1);
354
354
  }
355
355
  /* A large multiple field starts at the large control height, as sm starts at the small one. */
@@ -357,7 +357,7 @@
357
357
  min-block-size: 0;
358
358
  }
359
359
  :scope[data-ui-combobox-state~="multiple"]:scope[data-ui-combobox-state~="size=lg"] input {
360
- min-block-size: calc(var(--ui-control-size-lg) - 2px - 2 * var(--ui-space-1));
360
+ min-block-size: calc(var(--ui-control-size-lg) - 2 * var(--ui-border-width) - 2 * var(--ui-space-1));
361
361
  }
362
362
  .item {
363
363
  appearance: none;
@@ -375,8 +375,8 @@
375
375
  cursor: default;
376
376
  }
377
377
  .item:focus-visible {
378
- outline: 2px solid var(--ui-focus-ring);
379
- outline-offset: 1px;
378
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
379
+ outline-offset: var(--ui-border-width);
380
380
  }
381
381
  .item:disabled {
382
382
  color: var(--ui-disabled-text);
@@ -42,7 +42,7 @@
42
42
  box-sizing: border-box;
43
43
  padding: var(--ui-space-1);
44
44
  background: var(--_ui-context-menu-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
45
- border: 1px solid var(--_ui-context-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
45
+ border: var(--ui-border-width) solid var(--_ui-context-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
46
46
  border-radius: var(--_ui-context-menu-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
47
47
  box-shadow: var(--_ui-context-menu-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
48
48
  outline: 0;
@@ -63,7 +63,7 @@
63
63
  block-size: 0;
64
64
  margin: var(--ui-space-1) 0;
65
65
  border: 0;
66
- border-block-start: 1px solid var(--ui-border-divider);
66
+ border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
67
67
  }
68
68
 
69
69
  .menu:popover-open {
@@ -41,7 +41,7 @@
41
41
  --_ui-description-align: flex-start;
42
42
  --_ui-description-value-size: var(--ui-font-size-lg);
43
43
  --_ui-description-padding: var(--_tile-padding);
44
- --_ui-description-border-width: 1px;
44
+ --_ui-description-border-width: var(--ui-border-width);
45
45
  --_ui-description-border-color: var(--ui-border-strong);
46
46
  --_gap: var(--ui-space-3);
47
47
  --_gap-compact: var(--ui-space-2);
@@ -59,7 +59,7 @@
59
59
  overflow: hidden;
60
60
  flex-direction: column;
61
61
  background: var(--ui-dialog-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
62
- border: 1px solid var(--ui-dialog-border, var(--ui-overlay-border, var(--ui-border-strong)));
62
+ border: var(--ui-border-width) solid var(--ui-dialog-border, var(--ui-overlay-border, var(--ui-border-strong)));
63
63
  border-radius: var(--ui-dialog-radius, var(--ui-overlay-radius, var(--ui-radius-dialog)));
64
64
  box-shadow: var(--ui-dialog-shadow, var(--ui-overlay-shadow, var(--ui-elevation-dialog, var(--ui-shadow-xl))));
65
65
  visibility: hidden;
@@ -165,8 +165,8 @@
165
165
  }
166
166
 
167
167
  .close:focus-visible {
168
- outline: 2px solid var(--ui-focus-ring);
169
- outline-offset: 2px;
168
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
169
+ outline-offset: var(--ui-focus-width);
170
170
  }
171
171
 
172
172
  /* A touch target, like Button on coarse pointers. */
@@ -38,7 +38,7 @@
38
38
  display: block;
39
39
  inline-size: 100%;
40
40
  overflow: clip;
41
- border-block-end: 1px solid var(--ui-border-divider);
41
+ border-block-end: var(--ui-border-width) solid var(--ui-border-divider);
42
42
  color: var(--ui-text-primary);
43
43
  }
44
44
 
@@ -67,7 +67,7 @@
67
67
  }
68
68
  .trigger:focus-visible {
69
69
  outline: none;
70
- box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
70
+ box-shadow: inset 0 0 0 var(--ui-focus-width) color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
71
71
  }
72
72
  .trigger:disabled {
73
73
  color: var(--ui-disabled-text);
@@ -105,6 +105,43 @@
105
105
  transform: rotate(225deg) translate(-1px, -1px);
106
106
  }
107
107
 
108
+ /* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
109
+ * normal content-sized layout and its animation remain unchanged when fill is omitted. */
110
+ :scope[data-ui-disclosure-state~="fill"] {
111
+ display: flex;
112
+ flex-direction: column;
113
+ flex: none;
114
+ min-block-size: 0;
115
+ border-block-end: 0;
116
+ border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
117
+ }
118
+ :scope[data-ui-disclosure-state~="fill"][data-ui-disclosure-state~="internalOpen"] {
119
+ flex: 1;
120
+ }
121
+ :scope[data-ui-disclosure-state~="fill"] .heading {
122
+ flex: none;
123
+ }
124
+ :scope[data-ui-disclosure-state~="fill"] .trigger {
125
+ border-radius: 0;
126
+ }
127
+ :scope[data-ui-disclosure-state~="fill"] .panel {
128
+ display: flex;
129
+ flex: 1;
130
+ min-block-size: 0;
131
+ transition: none;
132
+ }
133
+ :scope[data-ui-disclosure-state~="fill"] .panel[hidden] {
134
+ flex: none;
135
+ block-size: 0;
136
+ }
137
+ :scope[data-ui-disclosure-state~="fill"] .panel-inner {
138
+ display: flex;
139
+ flex-direction: column;
140
+ flex: 1;
141
+ min-block-size: 0;
142
+ padding: 0;
143
+ }
144
+
108
145
  @media (prefers-reduced-motion: reduce) {
109
146
  .panel,
110
147
  .chevron {
@@ -125,6 +162,9 @@
125
162
  /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
126
163
  * select or combobox. Stacked disclosures share their dividers. */
127
164
 
165
+ /* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
166
+ * normal content-sized layout and its animation remain unchanged when fill is omitted. */
167
+
128
168
  @media (prefers-reduced-motion: reduce) {
129
169
  }
130
170
 
@@ -24,7 +24,7 @@
24
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
- border: 1px solid transparent;
27
+ border: var(--ui-border-width) solid transparent;
28
28
  border-radius: var(--ui-radius-md);
29
29
  font: inherit;
30
30
  line-height: var(--ui-line-height-md);
@@ -97,7 +97,7 @@
97
97
  .actions button {
98
98
  min-block-size: var(--ui-control-size-sm);
99
99
  padding: 0 var(--ui-space-3);
100
- border: 1px solid var(--ui-border-strong);
100
+ border: var(--ui-border-width) solid var(--ui-border-strong);
101
101
  border-radius: var(--ui-radius-md);
102
102
  background: var(--ui-surface-elevated);
103
103
  background-image: var(--ui-raised-highlight);
@@ -3,7 +3,7 @@
3
3
  :scope {
4
4
  padding: var(--ui-space-3);
5
5
  background: var(--ui-surface);
6
- border: 1px solid var(--ui-border-strong);
6
+ border: var(--ui-border-width) solid var(--ui-border-strong);
7
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
  }
@@ -48,8 +48,8 @@
48
48
  width: 1.25rem;
49
49
  height: 1.25rem;
50
50
  padding: 0;
51
- border: 1px solid var(--ui-control-border);
52
- border-radius: 2px;
51
+ border: var(--ui-border-width) solid var(--ui-control-border);
52
+ border-radius: var(--ui-radius-sm);
53
53
  background: var(--ui-surface);
54
54
  cursor: pointer;
55
55
  }
@@ -60,8 +60,8 @@
60
60
  }
61
61
 
62
62
  .cell:focus-visible {
63
- outline: 2px solid var(--ui-focus-ring);
64
- outline-offset: -2px;
63
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
64
+ outline-offset: calc(-1 * var(--ui-focus-width));
65
65
  }
66
66
 
67
67
  .header {
@@ -9,7 +9,7 @@
9
9
  overflow: hidden;
10
10
  flex-direction: column;
11
11
  background: var(--ui-surface);
12
- border: 1px solid var(--ui-border-strong);
12
+ border: var(--ui-border-width) solid var(--ui-border-strong);
13
13
  border-radius: var(--ui-radius-dialog);
14
14
  box-shadow: var(--ui-shadow-lg, 0 8px 24px rgb(0 0 0 / 0.12));
15
15
  }
@@ -21,7 +21,7 @@
21
21
  gap: var(--ui-space-3);
22
22
  padding: var(--ui-space-2) var(--ui-space-3);
23
23
  color: var(--ui-text-secondary);
24
- border-bottom: 1px solid var(--ui-border-divider);
24
+ border-bottom: var(--ui-border-width) solid var(--ui-border-divider);
25
25
  font-size: var(--ui-font-size-xs);
26
26
  font-weight: var(--ui-font-semibold);
27
27
  }
@@ -32,7 +32,7 @@
32
32
  flex: 0 0 auto;
33
33
  color: var(--ui-text-secondary);
34
34
  background: var(--ui-surface-hover);
35
- border: 1px solid var(--ui-border);
35
+ border: var(--ui-border-width) solid var(--ui-border);
36
36
  border-radius: var(--ui-radius-md);
37
37
  }
38
38
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  :scope {
8
8
  background: var(--ui-surface);
9
- border: 1px solid var(--ui-border-strong);
9
+ border: var(--ui-border-width) solid var(--ui-border-strong);
10
10
  border-radius: var(--ui-radius-dialog);
11
11
  box-shadow: var(--ui-shadow-lg, 0 8px 24px rgb(0 0 0 / 0.12));
12
12
  overflow: hidden;
@@ -26,7 +26,7 @@
26
26
  align-items: center;
27
27
  gap: var(--ui-space-2);
28
28
  padding: var(--ui-space-3) var(--ui-space-4);
29
- border-bottom: 1px solid var(--ui-border-divider);
29
+ border-bottom: var(--ui-border-width) solid var(--ui-border-divider);
30
30
  font-size: var(--ui-font-size-xs);
31
31
  color: var(--ui-text-muted);
32
32
  font-weight: var(--ui-font-semibold);
@@ -104,7 +104,7 @@
104
104
  width: 32px;
105
105
  height: 32px;
106
106
  background: var(--ui-surface-hover);
107
- border: 1px solid var(--ui-border);
107
+ border: var(--ui-border-width) solid var(--ui-border);
108
108
  border-radius: var(--ui-radius-md);
109
109
  font-size: var(--ui-font-size-sm);
110
110
  font-weight: var(--ui-font-bold);
@@ -151,7 +151,7 @@
151
151
 
152
152
  .footer {
153
153
  padding: var(--ui-space-2) var(--ui-space-3);
154
- border-top: 1px solid var(--ui-border-divider);
154
+ border-top: var(--ui-border-width) solid var(--ui-border-divider);
155
155
  font-size: var(--ui-font-size-xs);
156
156
  color: var(--ui-text-muted);
157
157
  }
@@ -163,8 +163,8 @@
163
163
  font-family: var(--ui-font-family-mono, ui-monospace, monospace);
164
164
  font-size: var(--ui-font-size-2xs);
165
165
  background: var(--ui-surface-hover);
166
- border: 1px solid var(--ui-border);
167
- border-radius: 3px;
166
+ border: var(--ui-border-width) solid var(--ui-border);
167
+ border-radius: var(--ui-radius-sm);
168
168
  padding: 0 3px;
169
169
  color: var(--ui-text-secondary);
170
170
  }
@@ -8,7 +8,7 @@
8
8
  max-height: min(28rem, calc(100vh - 24px));
9
9
  padding: var(--ui-space-2);
10
10
  background: var(--ui-surface);
11
- border: 1px solid var(--ui-border-strong);
11
+ border: var(--ui-border-width) solid var(--ui-border-strong);
12
12
  border-radius: var(--ui-radius-lg);
13
13
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
14
14
  display: flex;
@@ -75,7 +75,7 @@
75
75
  width: 1rem;
76
76
  height: 1rem;
77
77
  border-radius: var(--ui-radius-round);
78
- border: 1px solid var(--ui-border);
78
+ border: var(--ui-border-width) solid var(--ui-border);
79
79
  background: var(--_swatch, #fff);
80
80
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.35);
81
81
  flex-shrink: 0;
@@ -46,7 +46,7 @@
46
46
  width: 24px;
47
47
  height: 24px;
48
48
  padding: 0;
49
- border: 1px solid var(--ui-affordance-near-color, var(--ui-border-strong));
49
+ border: var(--ui-border-width) solid var(--ui-affordance-near-color, var(--ui-border-strong));
50
50
  border-radius: var(--ui-radius-round);
51
51
  background: color-mix(in srgb, var(--ui-surface-elevated) 96%, transparent);
52
52
  color: var(--ui-affordance-near-color, var(--ui-text-secondary));
@@ -89,8 +89,8 @@
89
89
  .handle:focus-visible,
90
90
  .selector:focus-visible,
91
91
  .cell-menu:focus-visible {
92
- outline: 2px solid var(--ui-focus-ring);
93
- outline-offset: 2px;
92
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
93
+ outline-offset: var(--ui-focus-width);
94
94
  }
95
95
 
96
96
  .control.row {
@@ -123,13 +123,13 @@
123
123
  }
124
124
 
125
125
  .control.row .line {
126
- inset: -1px 0 auto;
127
- height: 2px;
126
+ inset: calc(-0.5 * var(--ui-accent-line-width)) 0 auto;
127
+ height: var(--ui-accent-line-width);
128
128
  }
129
129
 
130
130
  .control.col .line {
131
- inset: 0 auto 0 -1px;
132
- width: 2px;
131
+ inset: 0 auto 0 calc(-0.5 * var(--ui-accent-line-width));
132
+ width: var(--ui-accent-line-width);
133
133
  }
134
134
 
135
135
  .control.active .line {
@@ -201,7 +201,7 @@
201
201
  align-items: center;
202
202
  justify-content: center;
203
203
  padding: 0;
204
- border: 1px solid transparent;
204
+ border: var(--ui-border-width) solid transparent;
205
205
  background: transparent;
206
206
  color: var(--ui-text-secondary);
207
207
  box-shadow: none;
@@ -318,19 +318,19 @@
318
318
  position: absolute;
319
319
  z-index: 3;
320
320
  background: var(--ui-accent-solid);
321
- box-shadow: 0 0 0 2px var(--ui-surface);
321
+ box-shadow: 0 0 0 var(--ui-border-width) var(--ui-surface);
322
322
  pointer-events: none;
323
323
  }
324
324
 
325
325
  .drop-indicator.row {
326
326
  left: 0;
327
327
  width: 100%;
328
- height: 2px;
328
+ height: var(--ui-accent-line-width);
329
329
  }
330
330
 
331
331
  .drop-indicator.column {
332
332
  top: 0;
333
- width: 2px;
333
+ width: var(--ui-accent-line-width);
334
334
  height: 100%;
335
335
  }
336
336
 
@@ -35,8 +35,8 @@
35
35
  gap: var(--ui-space-1);
36
36
  padding: var(--ui-space-1);
37
37
  background: color-mix(in srgb, var(--ui-surface) 94%, transparent);
38
- border: 1px solid var(--ui-border-strong);
39
- border-radius: calc(var(--ui-radius-md) + 2px);
38
+ border: var(--ui-border-width) solid var(--ui-border-strong);
39
+ border-radius: calc(var(--ui-radius-md) + 2 * var(--ui-border-width));
40
40
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
41
41
  backdrop-filter: blur(10px);
42
42
  }
@@ -126,7 +126,7 @@
126
126
  max-width: min(17rem, calc(100vw - 24px));
127
127
  padding: var(--ui-space-1);
128
128
  background: var(--ui-surface);
129
- border: 1px solid var(--ui-border-strong);
129
+ border: var(--ui-border-width) solid var(--ui-border-strong);
130
130
  border-radius: var(--ui-radius-md);
131
131
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
132
132
  display: flex;
@@ -141,7 +141,7 @@
141
141
  .menu-section + .menu-section {
142
142
  margin-top: var(--ui-space-1);
143
143
  padding-top: var(--ui-space-1);
144
- border-top: 1px solid var(--ui-border-divider);
144
+ border-top: var(--ui-border-width) solid var(--ui-border-divider);
145
145
  }
146
146
 
147
147
  .menu-heading {
@@ -175,7 +175,7 @@
175
175
  width: 14px;
176
176
  height: 14px;
177
177
  flex: 0 0 14px;
178
- border: 1px solid color-mix(in srgb, var(--ui-border) 80%, #000);
178
+ border: var(--ui-border-width) solid color-mix(in srgb, var(--ui-border) 80%, #000);
179
179
  border-radius: var(--ui-radius-round);
180
180
  background: var(--_swatch);
181
181
  }
@@ -9,7 +9,7 @@
9
9
  padding: var(--ui-editor-toolbar-padding-block, 6px) var(--ui-editor-toolbar-padding-inline, 12px);
10
10
  min-height: var(--ui-editor-toolbar-min-height, 48px);
11
11
  background: var(--ui-editor-toolbar-surface, var(--ui-surface));
12
- border-bottom: 1px solid var(--ui-editor-toolbar-border, var(--ui-border-divider));
12
+ border-bottom: var(--ui-border-width) solid var(--ui-editor-toolbar-border, var(--ui-border-divider));
13
13
  }
14
14
 
15
15
  /* One row, always. When the controls outgrow the space, the row scrolls sideways rather than
@@ -64,7 +64,7 @@
64
64
  min-height: auto;
65
65
  padding: var(--ui-editor-toolbar-floating-padding, 4px);
66
66
  background: color-mix(in srgb, var(--ui-editor-toolbar-surface, var(--ui-surface)) 96%, transparent);
67
- border: 1px solid var(--ui-editor-toolbar-border, var(--ui-border-strong));
67
+ border: var(--ui-border-width) solid var(--ui-editor-toolbar-border, var(--ui-border-strong));
68
68
  border-radius: var(--ui-editor-toolbar-floating-radius, var(--ui-radius-lg));
69
69
  box-shadow: var(--ui-editor-toolbar-floating-shadow, var(--ui-shadow-lg, 0 10px 24px rgb(0 0 0 / 0.12)));
70
70
  backdrop-filter: blur(10px);
@@ -78,7 +78,7 @@
78
78
  left: 0;
79
79
  right: 0;
80
80
  min-height: var(--ui-editor-toolbar-mobile-min-height, 56px);
81
- border-top: 1px solid var(--ui-editor-toolbar-border, var(--ui-border-divider));
81
+ border-top: var(--ui-border-width) solid var(--ui-editor-toolbar-border, var(--ui-border-divider));
82
82
  border-bottom: none;
83
83
  box-shadow: var(--ui-editor-toolbar-mobile-shadow, 0 -2px 8px rgb(0 0 0 / 0.06));
84
84
  }
@@ -87,7 +87,7 @@
87
87
  position: relative;
88
88
  inset: auto;
89
89
  min-height: auto;
90
- border: 1px solid var(--ui-editor-toolbar-border, var(--ui-border-strong));
90
+ border: var(--ui-border-width) solid var(--ui-editor-toolbar-border, var(--ui-border-strong));
91
91
  border-radius: var(--ui-editor-toolbar-floating-radius, var(--ui-radius-lg));
92
92
  box-shadow: var(--ui-editor-toolbar-floating-shadow, var(--ui-shadow-lg, 0 10px 24px rgb(0 0 0 / 0.12)));
93
93
  }
@@ -56,8 +56,8 @@
56
56
  }
57
57
 
58
58
  :scope:focus-visible {
59
- outline: 2px solid var(--ui-focus-ring);
60
- outline-offset: 2px;
59
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
60
+ outline-offset: var(--ui-focus-width);
61
61
  }
62
62
 
63
63
  :scope:disabled {