@threadlabs/looma 0.5.2 → 0.6.0-rc.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 (174) hide show
  1. package/components/shared/overlay.js +3 -0
  2. package/components/ui-button/ui-button.html +14 -14
  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 +42 -38
  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 +14 -14
  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 +42 -38
  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 +42 -103
  81. package/theme-high-contrast.css +18 -22
  82. package/theme-light.css +15 -41
  83. package/tokens.css +149 -201
  84. package/vanilla/UiDisclosure.d.ts +1 -0
  85. package/vanilla/UiDisclosure.js +1 -1
  86. package/vanilla/UiMenu.d.ts +1 -0
  87. package/vanilla/UiMenu.js +1 -1
  88. package/vanilla/UiTabs.d.ts +1 -0
  89. package/vanilla/UiTabs.js +1 -1
  90. package/vanilla/UiTree.d.ts +1 -0
  91. package/vanilla/UiTree.js +1 -1
  92. package/vue/UiButton.vue +20 -14
  93. package/vue/UiCallout.vue +1 -1
  94. package/vue/UiCheckbox.vue +1 -1
  95. package/vue/UiCluster.vue +6 -6
  96. package/vue/UiCombobox.vue +23 -23
  97. package/vue/UiContainer.vue +4 -4
  98. package/vue/UiContextMenu.vue +2 -2
  99. package/vue/UiDialog.vue +12 -12
  100. package/vue/UiDisclosure.d.ts +2 -0
  101. package/vue/UiDisclosure.vue +21 -4
  102. package/vue/UiEditable.vue +6 -6
  103. package/vue/UiEditorInsertTableGrid.vue +20 -20
  104. package/vue/UiEditorMentionMenu.vue +25 -25
  105. package/vue/UiEditorSlashMenu.vue +39 -39
  106. package/vue/UiEditorTableContextMenu.vue +20 -20
  107. package/vue/UiEditorTableOverlay.vue +48 -57
  108. package/vue/UiEditorTableToolbar.vue +34 -34
  109. package/vue/UiEditorToolbar.vue +9 -9
  110. package/vue/UiFloatingActionButton.vue +17 -22
  111. package/vue/UiGrid.vue +6 -6
  112. package/vue/UiIconButton.vue +46 -42
  113. package/vue/UiInput.vue +2 -2
  114. package/vue/UiMenu.d.ts +2 -0
  115. package/vue/UiMenu.vue +17 -7
  116. package/vue/UiMenuItem.vue +6 -5
  117. package/vue/UiPopover.vue +3 -3
  118. package/vue/UiReel.vue +6 -6
  119. package/vue/UiSearchResultRow.vue +10 -13
  120. package/vue/UiSearchShell.vue +3 -3
  121. package/vue/UiSelect.vue +2 -2
  122. package/vue/UiSidebar.vue +11 -16
  123. package/vue/UiStack.vue +6 -6
  124. package/vue/UiSwitcher.vue +6 -6
  125. package/vue/UiTabs.d.ts +2 -0
  126. package/vue/UiTabs.vue +21 -4
  127. package/vue/UiTextarea.vue +2 -2
  128. package/vue/UiToastRegion.vue +2 -2
  129. package/vue/UiTooltip.vue +1 -1
  130. package/vue/UiTopBar.vue +5 -5
  131. package/vue/UiTree.d.ts +2 -0
  132. package/vue/UiTree.vue +24 -1
  133. package/vue/UiTreeItem.vue +16 -8
  134. package/vue/chunks/UiButton.js +1 -1
  135. package/vue/chunks/UiCallout.js +1 -1
  136. package/vue/chunks/UiCheckbox.js +1 -1
  137. package/vue/chunks/UiCluster.js +1 -1
  138. package/vue/chunks/UiCombobox.js +1 -1
  139. package/vue/chunks/UiContainer.js +1 -1
  140. package/vue/chunks/UiContextMenu.js +1 -1
  141. package/vue/chunks/UiDialog.js +1 -1
  142. package/vue/chunks/UiDisclosure.js +3 -2
  143. package/vue/chunks/UiEditable.js +1 -1
  144. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  145. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  146. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  147. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  148. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  149. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  150. package/vue/chunks/UiEditorToolbar.js +1 -1
  151. package/vue/chunks/UiFloatingActionButton.js +1 -1
  152. package/vue/chunks/UiGrid.js +1 -1
  153. package/vue/chunks/UiIconButton.js +1 -1
  154. package/vue/chunks/UiInput.js +1 -1
  155. package/vue/chunks/UiMenu.js +3 -2
  156. package/vue/chunks/UiMenuItem.js +1 -1
  157. package/vue/chunks/UiPopover.js +1 -1
  158. package/vue/chunks/UiReel.js +1 -1
  159. package/vue/chunks/UiSearchResultRow.js +1 -1
  160. package/vue/chunks/UiSearchShell.js +1 -1
  161. package/vue/chunks/UiSelect.js +1 -1
  162. package/vue/chunks/UiSidebar.js +1 -1
  163. package/vue/chunks/UiStack.js +1 -1
  164. package/vue/chunks/UiSwitcher.js +1 -1
  165. package/vue/chunks/UiTabs.js +7 -2
  166. package/vue/chunks/UiTextarea.js +1 -1
  167. package/vue/chunks/UiToastRegion.js +1 -1
  168. package/vue/chunks/UiTooltip.js +1 -1
  169. package/vue/chunks/UiTopBar.js +1 -1
  170. package/vue/chunks/UiTree.js +8 -2
  171. package/vue/chunks/UiTreeItem.js +1 -1
  172. package/vue/components.css +1082 -1048
  173. package/vue/editor/LoomaEditor.d.ts +11 -0
  174. package/vue/editor/index.js +9 -0
package/vanilla/UiTabs.js CHANGED
@@ -3,7 +3,7 @@ import { manageComponentLifecycle } from "@nextwebwg/html-next/runtime";
3
3
  import * as controller from "../components/ui-tabs/ui-tabs.js";
4
4
  import "../styles/ui-tabs.css";
5
5
 
6
- const definition = {...{"contract":{"tag":"ui-tabs","props":{"label":{"type":"string","required":false,"target":{"attribute":"aria-label"},"default":"Tabs"},"orientation":{"type":{"enum":["horizontal","vertical"]},"required":false,"target":{"attribute":"aria-orientation"},"default":"horizontal"},"stretch":{"type":"boolean","required":false,"target":{"attribute":"stretch"},"default":false},"value":{"type":"string","required":false,"target":{"attribute":"value"},"default":""}}},"template":{"kind":"element","name":"div","attributes":[],"children":[{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"class","value":"list"},{"kind":"literal","name":"role","value":"tablist"},{"kind":"attribute","name":"aria-label","expression":"label","expressionPlan":{"source":"label","ast":{"kind":"id","name":"label"},"dependencies":["label"]}},{"kind":"attribute","name":"aria-orientation","expression":"orientation","expressionPlan":{"source":"orientation","ast":{"kind":"id","name":"orientation"},"dependencies":["orientation"]}}],"children":[{"kind":"element","name":"button","attributes":[{"kind":"literal","name":"type","value":"button"},{"kind":"literal","name":"role","value":"tab"},{"kind":"attribute","name":"id","expression":"format('%s-tab', tab.id)","expressionPlan":{"source":"format('%s-tab', tab.id)","ast":{"kind":"call","fn":"format","args":[{"kind":"literal","value":"%s-tab"},{"kind":"member","object":{"kind":"id","name":"tab"},"key":"id"}]},"dependencies":["tab.id"]}},{"kind":"attribute","name":"value","expression":"tab.id","expressionPlan":{"source":"tab.id","ast":{"kind":"member","object":{"kind":"id","name":"tab"},"key":"id"},"dependencies":["tab.id"]}},{"kind":"attribute","name":"aria-controls","expression":"tab.id","expressionPlan":{"source":"tab.id","ast":{"kind":"member","object":{"kind":"id","name":"tab"},"key":"id"},"dependencies":["tab.id"]}},{"kind":"attribute","name":"aria-selected","expression":"tab.id = internalValue","expressionPlan":{"source":"tab.id = internalValue","ast":{"kind":"binary","op":"=","left":{"kind":"member","object":{"kind":"id","name":"tab"},"key":"id"},"right":{"kind":"id","name":"internalValue"}},"dependencies":["internalValue","tab.id"]}},{"kind":"directive","name":"value","expression":"tab.label","expressionPlan":{"source":"tab.label","ast":{"kind":"member","object":{"kind":"id","name":"tab"},"key":"label"},"dependencies":["tab.label"]}}],"children":[],"flow":{"kind":"each","item":"tab","list":"tabs","listPlan":{"source":"tabs","ast":{"kind":"id","name":"tabs"},"dependencies":["tabs"]},"key":"tab.id","keyPlan":{"source":"tab.id","ast":{"kind":"member","object":{"kind":"id","name":"tab"},"key":"id"},"dependencies":["tab.id"]}}}],"ref":"list"},{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"class","value":"panels"}],"children":[{"kind":"slot"}],"ref":"panels"}]},"declarations":[{"kind":"state","name":"internalValue","expression":{"source":"''","ast":{"kind":"literal","value":""},"dependencies":[]}},{"kind":"state","name":"tabs","type":"list(object({ id: string, label: string }))","expression":{"source":"[]","ast":{"kind":"array","items":[]},"dependencies":[]}},{"kind":"event","name":"select","type":"object({ value: string, previousValue: string, trigger: keyboard | pointer | programmatic })","bubbles":true,"composed":true,"cancelable":false}],"root":{"kind":"native","element":"div","choices":["div"]}},source:{file:import.meta.url},css:""};
6
+ const definition = {...{"contract":{"tag":"ui-tabs","props":{"density":{"type":{"enum":["comfortable","compact"]},"required":false,"target":{"attribute":"density"},"default":"comfortable"},"label":{"type":"string","required":false,"target":{"attribute":"aria-label"},"default":"Tabs"},"orientation":{"type":{"enum":["horizontal","vertical"]},"required":false,"target":{"attribute":"aria-orientation"},"default":"horizontal"},"stretch":{"type":"boolean","required":false,"target":{"attribute":"stretch"},"default":false},"value":{"type":"string","required":false,"target":{"attribute":"value"},"default":""}}},"template":{"kind":"element","name":"div","attributes":[],"children":[{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"class","value":"list"},{"kind":"literal","name":"role","value":"tablist"},{"kind":"attribute","name":"aria-label","expression":"label","expressionPlan":{"source":"label","ast":{"kind":"id","name":"label"},"dependencies":["label"]}},{"kind":"attribute","name":"aria-orientation","expression":"orientation","expressionPlan":{"source":"orientation","ast":{"kind":"id","name":"orientation"},"dependencies":["orientation"]}}],"children":[{"kind":"element","name":"button","attributes":[{"kind":"literal","name":"type","value":"button"},{"kind":"literal","name":"role","value":"tab"},{"kind":"attribute","name":"id","expression":"format('%s-tab', tab.id)","expressionPlan":{"source":"format('%s-tab', tab.id)","ast":{"kind":"call","fn":"format","args":[{"kind":"literal","value":"%s-tab"},{"kind":"member","object":{"kind":"id","name":"tab"},"key":"id"}]},"dependencies":["tab.id"]}},{"kind":"attribute","name":"value","expression":"tab.id","expressionPlan":{"source":"tab.id","ast":{"kind":"member","object":{"kind":"id","name":"tab"},"key":"id"},"dependencies":["tab.id"]}},{"kind":"attribute","name":"aria-controls","expression":"tab.id","expressionPlan":{"source":"tab.id","ast":{"kind":"member","object":{"kind":"id","name":"tab"},"key":"id"},"dependencies":["tab.id"]}},{"kind":"attribute","name":"aria-selected","expression":"tab.id = internalValue","expressionPlan":{"source":"tab.id = internalValue","ast":{"kind":"binary","op":"=","left":{"kind":"member","object":{"kind":"id","name":"tab"},"key":"id"},"right":{"kind":"id","name":"internalValue"}},"dependencies":["internalValue","tab.id"]}},{"kind":"directive","name":"value","expression":"tab.label","expressionPlan":{"source":"tab.label","ast":{"kind":"member","object":{"kind":"id","name":"tab"},"key":"label"},"dependencies":["tab.label"]}}],"children":[],"flow":{"kind":"each","item":"tab","list":"tabs","listPlan":{"source":"tabs","ast":{"kind":"id","name":"tabs"},"dependencies":["tabs"]},"key":"tab.id","keyPlan":{"source":"tab.id","ast":{"kind":"member","object":{"kind":"id","name":"tab"},"key":"id"},"dependencies":["tab.id"]}}}],"ref":"list"},{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"class","value":"panels"}],"children":[{"kind":"slot"}],"ref":"panels"}]},"declarations":[{"kind":"state","name":"internalValue","expression":{"source":"''","ast":{"kind":"literal","value":""},"dependencies":[]}},{"kind":"state","name":"tabs","type":"list(object({ id: string, label: string }))","expression":{"source":"[]","ast":{"kind":"array","items":[]},"dependencies":[]}},{"kind":"event","name":"select","type":"object({ value: string, previousValue: string, trigger: keyboard | pointer | programmatic })","bubbles":true,"composed":true,"cancelable":false}],"root":{"kind":"native","element":"div","choices":["div"]}},source:{file:import.meta.url},css:""};
7
7
 
8
8
  export function createUiTabs(options = {}) {
9
9
  const { attributes = {}, children = [], slots = {}, as, ...componentProps } = options;
@@ -8,6 +8,7 @@ export interface UiTreeElement extends HTMLDivElement {
8
8
  removeEventListener<K extends keyof UiTreeEventMap>(type: K, listener: (this: UiTreeElement, event: UiTreeEventMap[K]) => unknown, options?: boolean | EventListenerOptions): void;
9
9
  }
10
10
  export interface UiTreeProps {
11
+ density?: "comfortable" | "compact" | null;
11
12
  hoverExpandDelay?: number | null;
12
13
  label?: string | null;
13
14
  maxDepth?: number | null;
package/vanilla/UiTree.js CHANGED
@@ -3,7 +3,7 @@ import { manageComponentLifecycle } from "@nextwebwg/html-next/runtime";
3
3
  import * as controller from "../components/ui-tree/ui-tree.js";
4
4
  import "../styles/ui-tree.css";
5
5
 
6
- const definition = {...{"contract":{"tag":"ui-tree","props":{"hoverExpandDelay":{"type":"number","required":false,"target":{"attribute":"hoverexpanddelay"},"default":700},"label":{"type":"string","required":false,"target":{"attribute":"label"},"default":"Tree"},"maxDepth":{"type":"number","required":false,"target":{"attribute":"maxdepth"},"default":0}}},"template":{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"role","value":"tree"}],"children":[{"kind":"slot"}]},"declarations":[{"kind":"event","name":"reorder","type":"object({ sourceId: string, targetId: string, position: before | inside | after, sourceType: string, targetType: string, sourceScope: string, targetScope: string, trigger: keyboard | pointer | programmatic })","bubbles":true,"composed":true,"cancelable":false},{"kind":"event","name":"reorder-rejected","type":"object({ sourceId: string, targetId: string, position: before | inside | after, reason: max-depth, maxDepth: integer, resultingDepth: integer, trigger: keyboard | pointer | programmatic })","bubbles":true,"composed":true,"cancelable":false}],"root":{"kind":"native","element":"div","choices":["div"]}},source:{file:import.meta.url},css:""};
6
+ const definition = {...{"contract":{"tag":"ui-tree","props":{"density":{"type":{"enum":["comfortable","compact"]},"required":false,"target":{"attribute":"density"},"default":"comfortable"},"hoverExpandDelay":{"type":"number","required":false,"target":{"attribute":"hoverexpanddelay"},"default":700},"label":{"type":"string","required":false,"target":{"attribute":"label"},"default":"Tree"},"maxDepth":{"type":"number","required":false,"target":{"attribute":"maxdepth"},"default":0}}},"template":{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"role","value":"tree"}],"children":[{"kind":"slot"}]},"declarations":[{"kind":"event","name":"reorder","type":"object({ sourceId: string, targetId: string, position: before | inside | after, sourceType: string, targetType: string, sourceScope: string, targetScope: string, trigger: keyboard | pointer | programmatic })","bubbles":true,"composed":true,"cancelable":false},{"kind":"event","name":"reorder-rejected","type":"object({ sourceId: string, targetId: string, position: before | inside | after, reason: max-depth, maxDepth: integer, resultingDepth: integer, trigger: keyboard | pointer | programmatic })","bubbles":true,"composed":true,"cancelable":false}],"root":{"kind":"native","element":"div","choices":["div"]}},source:{file:import.meta.url},css:""};
7
7
 
8
8
  export function createUiTree(options = {}) {
9
9
  const { attributes = {}, children = [], slots = {}, as, ...componentProps } = options;
package/vue/UiButton.vue CHANGED
@@ -69,16 +69,16 @@ const hostState = computed(() =>
69
69
 
70
70
  [data-component~="ui-button"] {
71
71
  appearance: none;
72
- min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md, 2.5rem));
72
+ min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
73
73
  border: 1px solid var(--ui-button-border, var(--ui-border-strong));
74
- border-radius: var(--ui-button-radius, var(--ui-radius-2));
74
+ border-radius: var(--ui-button-radius, var(--ui-radius-md));
75
75
  background: var(--ui-button-surface, var(--ui-surface-elevated));
76
76
  color: var(--ui-button-text, var(--ui-action-secondary-text, var(--ui-text-primary)));
77
77
  font: inherit;
78
- font-weight: var(--ui-font-medium, 500);
78
+ font-weight: var(--ui-font-medium);
79
79
  line-height: var(--ui-line-height-tight);
80
80
  padding: var(--ui-space-2) var(--ui-space-3);
81
- background-image: var(--ui-raised-highlight, none);
81
+ background-image: var(--ui-raised-highlight);
82
82
  box-shadow: var(--ui-button-shadow, var(--ui-raised, var(--ui-shadow-xs)));
83
83
  cursor: pointer;
84
84
  transition:
@@ -98,13 +98,13 @@ const hostState = computed(() =>
98
98
  }
99
99
 
100
100
  [data-component~="ui-button"][data-ui-button-state~="size=sm"] {
101
- min-block-size: var(--ui-control-size-sm, 2rem);
101
+ min-block-size: var(--ui-control-size-sm);
102
102
  padding: var(--ui-space-1) var(--ui-space-2);
103
103
  font-size: 0.875rem;
104
104
  }
105
105
 
106
106
  [data-component~="ui-button"][data-ui-button-state~="size=lg"] {
107
- min-block-size: var(--ui-control-size-lg, 3rem);
107
+ min-block-size: var(--ui-control-size-lg);
108
108
  padding: var(--ui-space-3) var(--ui-space-4);
109
109
  font-size: 1rem;
110
110
  }
@@ -175,12 +175,18 @@ const hostState = computed(() =>
175
175
 
176
176
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
177
177
  [data-component~="ui-button"][data-ui-button-state~="variant=ghost"]:hover:enabled {
178
- background: var(--ui-button-ghost-hover, color-mix(in srgb, currentColor 8%, transparent));
178
+ background: var(
179
+ --ui-button-ghost-hover-surface,
180
+ color-mix(in srgb, currentColor 8%, transparent)
181
+ );
179
182
  border-color: transparent;
180
183
  }
181
184
 
182
185
  [data-component~="ui-button"][data-ui-button-state~="variant=ghost"]:active:enabled {
183
- background: var(--ui-button-ghost-active, color-mix(in srgb, currentColor 14%, transparent));
186
+ background: var(
187
+ --ui-button-ghost-active-surface,
188
+ color-mix(in srgb, currentColor 14%, transparent)
189
+ );
184
190
  border-color: transparent;
185
191
  }
186
192
 
@@ -242,7 +248,7 @@ const hostState = computed(() =>
242
248
 
243
249
  @media (pointer: coarse) {
244
250
  [data-component~="ui-button"] {
245
- min-block-size: var(--ui-control-min-block-size, 2.75rem);
251
+ min-block-size: var(--ui-control-min-block-size);
246
252
  }
247
253
  }
248
254
 
@@ -253,11 +259,11 @@ const hostState = computed(() =>
253
259
  min-block-size: 0;
254
260
  padding: 0;
255
261
  border: 0;
256
- border-radius: var(--ui-radius-sm, 4px);
262
+ border-radius: var(--ui-radius-sm);
257
263
  background: none;
258
264
  box-shadow: none;
259
265
  font: inherit;
260
- color: var(--ui-button-link-color, var(--ui-text-secondary));
266
+ color: var(--ui-button-link-text, var(--ui-text-secondary));
261
267
  text-decoration-line: underline;
262
268
  text-decoration-thickness: 1px;
263
269
  text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
@@ -268,7 +274,7 @@ const hostState = computed(() =>
268
274
  }
269
275
 
270
276
  [data-component~="ui-button"][data-ui-button-state~="variant=link"]:hover:enabled {
271
- color: var(--ui-button-link-hover-color, var(--ui-text-primary));
277
+ color: var(--ui-button-link-hover-text, var(--ui-text-primary));
272
278
  text-decoration-color: currentColor;
273
279
  background: none;
274
280
  transform: none;
@@ -281,13 +287,13 @@ const hostState = computed(() =>
281
287
 
282
288
  [data-component~="ui-button"][data-ui-button-state~="variant=link"]:disabled {
283
289
  background: none;
284
- color: var(--ui-button-disabled-text, var(--ui-button-link-color, var(--ui-text-secondary)));
290
+ color: var(--ui-button-disabled-text, var(--ui-button-link-text, var(--ui-text-secondary)));
285
291
  }
286
292
 
287
293
  [data-component~="ui-button"][data-ui-button-state~="variant=link"]:focus-visible {
288
294
  box-shadow: none;
289
295
  /* Fallback keeps the ring if the token is missing: an unresolved var() would void the outline. */
290
- outline: 2px solid var(--ui-focus-ring, currentColor);
296
+ outline: 2px solid var(--ui-focus-ring);
291
297
  outline-offset: 2px;
292
298
  }
293
299
 
package/vue/UiCallout.vue CHANGED
@@ -113,7 +113,7 @@ const hostState = computed(() =>
113
113
  color-mix(in srgb, var(--ui-callout-border, var(--_callout-border)) 35%, transparent);
114
114
  border-inline-start: var(--ui-callout-leading-border-width, 4px) solid
115
115
  var(--ui-callout-border, var(--_callout-border));
116
- border-radius: var(--ui-radius-2);
116
+ border-radius: var(--ui-radius-md);
117
117
  background: var(--ui-callout-surface, var(--_callout-surface));
118
118
  color: var(--ui-callout-text, var(--ui-text-primary));
119
119
  font-family: var(--ui-font-family-sans);
@@ -212,7 +212,7 @@ input {
212
212
  block-size: var(--ui-checkbox-size, 1.125rem);
213
213
  margin: 0.125em 0 0;
214
214
  border: 1px solid var(--ui-control-border-hover, var(--ui-border-strong));
215
- border-radius: var(--ui-radius-1);
215
+ border-radius: var(--ui-radius-sm);
216
216
  background: var(--ui-control-surface, var(--ui-surface-default));
217
217
  box-shadow: inset 0 1px 2px color-mix(in srgb, var(--ui-text-primary) 8%, transparent);
218
218
  cursor: pointer;
package/vue/UiCluster.vue CHANGED
@@ -26,7 +26,7 @@ const hostState = computed(() =>
26
26
 
27
27
  <style scoped>
28
28
  [data-component~="ui-cluster"] {
29
- --_layout-gap: var(--ui-space-3, 0.75rem);
29
+ --_layout-gap: var(--ui-space-3);
30
30
  display: flex;
31
31
  flex-wrap: wrap;
32
32
  align-items: center;
@@ -37,19 +37,19 @@ const hostState = computed(() =>
37
37
  }
38
38
 
39
39
  [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xs"] {
40
- --_layout-gap: var(--ui-space-2, 0.5rem);
40
+ --_layout-gap: var(--ui-space-2);
41
41
  }
42
42
  [data-component~="ui-cluster"][data-ui-cluster-state~="gap=s"] {
43
- --_layout-gap: var(--ui-space-3, 0.75rem);
43
+ --_layout-gap: var(--ui-space-3);
44
44
  }
45
45
  [data-component~="ui-cluster"][data-ui-cluster-state~="gap=m"] {
46
- --_layout-gap: var(--ui-space-4, 1rem);
46
+ --_layout-gap: var(--ui-space-4);
47
47
  }
48
48
  [data-component~="ui-cluster"][data-ui-cluster-state~="gap=l"] {
49
- --_layout-gap: var(--ui-space-5, 1.5rem);
49
+ --_layout-gap: var(--ui-space-5);
50
50
  }
51
51
  [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xl"] {
52
- --_layout-gap: var(--ui-space-6, 2rem);
52
+ --_layout-gap: var(--ui-space-6);
53
53
  }
54
54
  [data-component~="ui-cluster"][data-ui-cluster-state~="align=start"] {
55
55
  align-items: flex-start;
@@ -858,15 +858,15 @@ defineExpose({
858
858
  font: inherit;
859
859
  }
860
860
  label {
861
- color: var(--ui-field-label-color, var(--ui-text-primary));
862
- font-size: var(--ui-field-label-size, 0.875rem);
863
- font-weight: var(--ui-field-label-weight, 500);
861
+ color: var(--ui-combobox-label-text, var(--ui-text-primary));
862
+ font-size: var(--ui-combobox-label-font-size, 0.875rem);
863
+ font-weight: 500;
864
864
  }
865
865
  .field {
866
866
  display: flex;
867
867
  min-inline-size: 0;
868
868
  border: 1px solid var(--ui-control-border, var(--ui-border-default));
869
- border-radius: var(--ui-radius-2);
869
+ border-radius: var(--ui-radius-md);
870
870
  background: var(--ui-control-surface, var(--ui-surface-default));
871
871
  box-shadow: var(--ui-control-inset);
872
872
  transition:
@@ -887,7 +887,7 @@ input {
887
887
  appearance: none;
888
888
  width: 100%;
889
889
  min-inline-size: 0;
890
- min-block-size: calc(var(--ui-control-size-md, 2.5rem) - 2px);
890
+ min-block-size: calc(var(--ui-control-size-md) - 2px);
891
891
  box-sizing: border-box;
892
892
  border: 0;
893
893
  border-radius: inherit;
@@ -900,7 +900,7 @@ input {
900
900
  outline: none;
901
901
  }
902
902
  [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input {
903
- min-block-size: calc(var(--ui-field-compact-size, var(--ui-control-size-sm, 2rem)) - 2px);
903
+ min-block-size: calc(var(--ui-control-size-sm) - 2px);
904
904
  padding: var(--ui-space-1) var(--ui-space-2);
905
905
  }
906
906
  button {
@@ -909,19 +909,19 @@ button {
909
909
  place-items: center;
910
910
  align-self: stretch;
911
911
  border: 0;
912
- border-radius: var(--ui-radius-2);
912
+ border-radius: var(--ui-radius-md);
913
913
  background: transparent;
914
- color: var(--ui-field-affordance-color, var(--ui-text-secondary));
914
+ color: var(--ui-combobox-affordance-text, var(--ui-text-secondary));
915
915
  font: inherit;
916
- font-weight: var(--ui-field-affordance-weight, 400);
916
+ font-weight: 400;
917
917
  min-inline-size: 2rem;
918
918
  padding: 0 var(--ui-space-1);
919
919
  cursor: pointer;
920
920
  }
921
921
  .affordance-icon {
922
922
  display: block;
923
- inline-size: var(--ui-icon-size-sm, 1rem);
924
- block-size: var(--ui-icon-size-sm, 1rem);
923
+ inline-size: var(--ui-icon-size-sm);
924
+ block-size: var(--ui-icon-size-sm);
925
925
  }
926
926
  button:hover:enabled {
927
927
  background: var(--ui-surface-muted);
@@ -951,7 +951,7 @@ input:disabled, button:disabled {
951
951
  margin: 0;
952
952
  padding: var(--ui-space-1);
953
953
  border: 1px solid var(--ui-border-default);
954
- border-radius: var(--ui-radius-2);
954
+ border-radius: var(--ui-radius-md);
955
955
  background: var(--ui-surface-elevated);
956
956
  color: var(--ui-text-primary);
957
957
  box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
@@ -961,13 +961,13 @@ input:disabled, button:disabled {
961
961
  }
962
962
  .option {
963
963
  padding: var(--ui-space-2) var(--ui-space-3);
964
- border-radius: var(--ui-radius-1);
964
+ border-radius: var(--ui-radius-sm);
965
965
  cursor: pointer;
966
966
  overflow-wrap: anywhere;
967
967
  }
968
968
  .option:hover, .option.active {
969
969
  background: var(--ui-surface-muted);
970
- outline: 1px solid var(--ui-focus-ring, currentColor);
970
+ outline: 1px solid var(--ui-focus-ring);
971
971
  outline-offset: -1px;
972
972
  }
973
973
  .option[aria-disabled="true"] {
@@ -976,12 +976,12 @@ input:disabled, button:disabled {
976
976
  }
977
977
  .primary {
978
978
  display: block;
979
- color: var(--ui-option-primary-color, var(--ui-text-primary));
980
- font-weight: var(--ui-option-primary-weight, 500);
979
+ color: var(--ui-combobox-option-text, var(--ui-text-primary));
980
+ font-weight: 500;
981
981
  }
982
982
  .message, .group {
983
- color: var(--ui-field-message-color, var(--ui-text-secondary));
984
- font-weight: var(--ui-field-message-weight, 400);
983
+ color: var(--ui-combobox-message-text, var(--ui-text-secondary));
984
+ font-weight: 400;
985
985
  font-size: var(--ui-font-size-sm);
986
986
  line-height: var(--ui-line-height-md);
987
987
  overflow-wrap: anywhere;
@@ -1017,11 +1017,11 @@ input:disabled, button:disabled {
1017
1017
  flex-wrap: wrap;
1018
1018
  align-items: center;
1019
1019
  gap: var(--ui-space-1);
1020
- min-block-size: var(--ui-multi-combobox-min-block-size, 2.5rem);
1020
+ min-block-size: var(--ui-combobox-item-min-block-size, 2.5rem);
1021
1021
  padding: var(--ui-space-1);
1022
1022
  }
1023
1023
  [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] input {
1024
- flex: 1 0 var(--ui-multi-combobox-input-min-inline-size, 5rem);
1024
+ flex: 1 0 var(--ui-combobox-item-input-min-inline-size, 5rem);
1025
1025
  width: auto;
1026
1026
  min-block-size: 1.75rem;
1027
1027
  padding: var(--ui-space-0-5) var(--ui-space-1);
@@ -1030,18 +1030,18 @@ input:disabled, button:disabled {
1030
1030
  appearance: none;
1031
1031
  display: inline-flex;
1032
1032
  min-inline-size: 0;
1033
- max-inline-size: min(100%, var(--ui-multi-combobox-item-max-inline-size, 12rem));
1033
+ max-inline-size: min(100%, var(--ui-combobox-item-item-max-inline-size, 12rem));
1034
1034
  overflow: hidden;
1035
1035
  padding: 0;
1036
1036
  border: 0;
1037
- border-radius: var(--ui-radius-1);
1037
+ border-radius: var(--ui-radius-sm);
1038
1038
  background: transparent;
1039
1039
  color: inherit;
1040
1040
  font: inherit;
1041
1041
  cursor: default;
1042
1042
  }
1043
1043
  .item:focus-visible {
1044
- outline: 2px solid var(--ui-focus-ring, currentColor);
1044
+ outline: 2px solid var(--ui-focus-ring);
1045
1045
  outline-offset: 1px;
1046
1046
  }
1047
1047
  .item:disabled {
@@ -31,7 +31,7 @@ const hostState = computed(() =>
31
31
  <style scoped>
32
32
  [data-component~="ui-container"] {
33
33
  --_container-measure: 65ch;
34
- --_container-gutters: var(--ui-space-4, 1rem);
34
+ --_container-gutters: var(--ui-space-4);
35
35
  display: block;
36
36
  inline-size: 100%;
37
37
  max-inline-size: var(--ui-container-measure, var(--_container-measure));
@@ -46,13 +46,13 @@ const hostState = computed(() =>
46
46
  --_container-measure: 80ch;
47
47
  }
48
48
  [data-component~="ui-container"][data-ui-container-state~="gutters=s"] {
49
- --_container-gutters: var(--ui-space-3, 0.75rem);
49
+ --_container-gutters: var(--ui-space-3);
50
50
  }
51
51
  [data-component~="ui-container"][data-ui-container-state~="gutters=m"] {
52
- --_container-gutters: var(--ui-space-4, 1rem);
52
+ --_container-gutters: var(--ui-space-4);
53
53
  }
54
54
  [data-component~="ui-container"][data-ui-container-state~="gutters=l"] {
55
- --_container-gutters: var(--ui-space-5, 1.5rem);
55
+ --_container-gutters: var(--ui-space-5);
56
56
  }
57
57
 
58
58
  /* A component that sets its display still honours the hidden attribute on its root. */
@@ -210,11 +210,11 @@ onBeforeUnmount(() => {
210
210
  padding: var(--ui-space-1);
211
211
  background: var(--ui-surface-elevated);
212
212
  border: 1px solid var(--ui-border-default);
213
- border-radius: var(--ui-radius-3);
213
+ border-radius: var(--ui-radius-lg);
214
214
  box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
215
215
  outline: 0;
216
216
  overflow: auto;
217
- z-index: var(--ui-z-overlay, 1000);
217
+ z-index: var(--ui-context-menu-z-index, 1000);
218
218
  min-width: 12rem;
219
219
  opacity: 0;
220
220
  transform: translateY(-4px) scale(0.99);
package/vue/UiDialog.vue CHANGED
@@ -182,11 +182,11 @@ onBeforeUnmount(() => {
182
182
  inset: 0;
183
183
  box-sizing: border-box;
184
184
  inline-size: min(
185
- calc(100% - var(--ui-dialog-viewport-gap, var(--ui-space-4, 1rem)) * 2),
185
+ calc(100% - var(--ui-dialog-viewport-gap, var(--ui-space-4)) * 2),
186
186
  var(--ui-dialog-max-width, 440px)
187
187
  );
188
188
  max-inline-size: none;
189
- max-block-size: calc(100dvh - var(--ui-dialog-viewport-gap, var(--ui-space-4, 1rem)) * 2);
189
+ max-block-size: calc(100dvh - var(--ui-dialog-viewport-gap, var(--ui-space-4)) * 2);
190
190
  margin: auto;
191
191
  padding: 0;
192
192
  overflow: hidden;
@@ -235,8 +235,8 @@ header {
235
235
  border: 0;
236
236
  color: var(--ui-text-primary);
237
237
  letter-spacing: normal;
238
- font-size: var(--ui-font-size-lg, 1.125rem);
239
- font-weight: var(--ui-font-semibold, 600);
238
+ font-size: var(--ui-font-size-lg);
239
+ font-weight: var(--ui-font-semibold);
240
240
  line-height: var(--ui-line-height-tight);
241
241
  }
242
242
 
@@ -245,11 +245,11 @@ header {
245
245
  place-items: center;
246
246
  flex: none;
247
247
  margin-inline-start: auto;
248
- inline-size: var(--ui-control-size-sm, 2rem);
249
- block-size: var(--ui-control-size-sm, 2rem);
248
+ inline-size: var(--ui-control-size-sm);
249
+ block-size: var(--ui-control-size-sm);
250
250
  padding: 0;
251
251
  border: 0;
252
- border-radius: var(--ui-radius-round, 999px);
252
+ border-radius: var(--ui-radius-round);
253
253
  background: transparent;
254
254
  color: var(--ui-text-secondary);
255
255
  cursor: pointer;
@@ -280,21 +280,21 @@ header {
280
280
  }
281
281
 
282
282
  .close:focus-visible {
283
- outline: 2px solid var(--ui-focus-ring, currentColor);
283
+ outline: 2px solid var(--ui-focus-ring);
284
284
  outline-offset: 2px;
285
285
  }
286
286
 
287
287
  /* A touch target, like Button on coarse pointers. */
288
288
  @media (pointer: coarse) {
289
289
  .close {
290
- inline-size: var(--ui-control-min-block-size, 2.75rem);
291
- block-size: var(--ui-control-min-block-size, 2.75rem);
290
+ inline-size: var(--ui-control-min-block-size);
291
+ block-size: var(--ui-control-min-block-size);
292
292
  }
293
293
  }
294
294
 
295
295
  html[data-ui-input-modality="touch"] [data-component~="ui-dialog"] .close {
296
- inline-size: var(--ui-control-min-block-size, 2.75rem);
297
- block-size: var(--ui-control-min-block-size, 2.75rem);
296
+ inline-size: var(--ui-control-min-block-size);
297
+ block-size: var(--ui-control-min-block-size);
298
298
  }
299
299
 
300
300
  .body {
@@ -1,4 +1,5 @@
1
1
  type __VLS_Props = {
2
+ density?: 'comfortable' | 'compact';
2
3
  disabled?: boolean;
3
4
  open?: boolean;
4
5
  summary?: string;
@@ -35,6 +36,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
35
36
  summary: string;
36
37
  disabled: boolean;
37
38
  open: boolean;
39
+ density: "comfortable" | "compact";
38
40
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
39
41
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
40
42
  declare const _default: typeof __VLS_export;
@@ -15,11 +15,13 @@ defineOptions({ inheritAttrs: false })
15
15
 
16
16
  const props = withDefaults(
17
17
  defineProps<{
18
+ density?: 'comfortable' | 'compact'
18
19
  disabled?: boolean
19
20
  open?: boolean
20
21
  summary?: string
21
22
  }>(),
22
23
  {
24
+ density: 'comfortable',
23
25
  disabled: false,
24
26
  open: false,
25
27
  summary: 'Details',
@@ -51,6 +53,7 @@ const contentId = ref('')
51
53
  /** The values the styles' :host-state() rules test. */
52
54
  const hostState = computed(() =>
53
55
  [
56
+ props.density && `density density=${props.density}`,
54
57
  internalOpen.value && 'internalOpen',
55
58
  ].filter(Boolean).join(' ')
56
59
  )
@@ -213,6 +216,19 @@ onBeforeUnmount(() => {
213
216
  </template>
214
217
 
215
218
  <style scoped>
219
+ /* Density resolves into the summary row's own values; the public tokens still override them. */
220
+ [data-component~="ui-disclosure"] {
221
+ --_trigger-min-block-size: var(--ui-control-size);
222
+ --_trigger-padding-block: var(--ui-space-2);
223
+ --_trigger-padding-inline: var(--ui-space-3);
224
+ }
225
+
226
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="density=compact"] {
227
+ --_trigger-min-block-size: var(--ui-control-size-sm);
228
+ --_trigger-padding-block: var(--ui-space-1);
229
+ --_trigger-padding-inline: var(--ui-space-2);
230
+ }
231
+
216
232
  /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
217
233
  * select or combobox. Stacked disclosures share their dividers. */
218
234
  [data-component~="ui-disclosure"] {
@@ -229,16 +245,17 @@ onBeforeUnmount(() => {
229
245
  gap: var(--ui-space-3);
230
246
  align-items: center;
231
247
  inline-size: 100%;
232
- min-block-size: 2.5rem;
233
- padding: var(--ui-space-2) var(--ui-space-3);
248
+ min-block-size: var(--ui-disclosure-trigger-min-block-size, var(--_trigger-min-block-size));
249
+ padding: var(--ui-disclosure-trigger-padding-block, var(--_trigger-padding-block))
250
+ var(--ui-disclosure-trigger-padding-inline, var(--_trigger-padding-inline));
234
251
  border: 0;
235
252
  background: transparent;
236
253
  color: inherit;
237
254
  font: inherit;
238
- font-weight: var(--ui-font-semibold, 600);
255
+ font-weight: var(--ui-font-semibold);
239
256
  text-align: start;
240
257
  cursor: pointer;
241
- border-radius: var(--ui-radius-1);
258
+ border-radius: var(--ui-radius-sm);
242
259
  transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
243
260
  }
244
261
 
@@ -277,11 +277,11 @@ onBeforeUnmount(() => {
277
277
  .input {
278
278
  grid-area: 1 / 1;
279
279
  box-sizing: border-box;
280
- min-block-size: var(--ui-control-size-sm, 2rem);
280
+ min-block-size: var(--ui-control-size-sm);
281
281
  margin: 0;
282
282
  padding: var(--ui-space-1) var(--ui-space-2);
283
283
  border: 1px solid transparent;
284
- border-radius: var(--ui-radius-2);
284
+ border-radius: var(--ui-radius-md);
285
285
  font: inherit;
286
286
  line-height: var(--ui-line-height-md);
287
287
  color: inherit;
@@ -351,13 +351,13 @@ onBeforeUnmount(() => {
351
351
  }
352
352
 
353
353
  .actions button {
354
- min-block-size: var(--ui-control-size-sm, 2rem);
354
+ min-block-size: var(--ui-control-size-sm);
355
355
  padding: 0 var(--ui-space-3);
356
356
  border: 1px solid var(--ui-border-strong);
357
- border-radius: var(--ui-radius-2);
357
+ border-radius: var(--ui-radius-md);
358
358
  background: var(--ui-surface-elevated);
359
- background-image: var(--ui-raised-highlight, none);
360
- box-shadow: var(--ui-raised, none);
359
+ background-image: var(--ui-raised-highlight);
360
+ box-shadow: var(--ui-raised);
361
361
  color: inherit;
362
362
  font: inherit;
363
363
  font-size: var(--ui-font-size-sm);
@@ -205,17 +205,17 @@ onBeforeUnmount(() => {
205
205
 
206
206
  <style scoped>
207
207
  [data-component~="ui-editor-insert-table-grid"] {
208
- padding: var(--ui-space-3, 12px);
209
- background: var(--ui-surface, #fff);
210
- border: 1px solid var(--ui-border, #e5e7eb);
211
- border-radius: var(--ui-radius-md, 6px);
208
+ padding: var(--ui-space-3);
209
+ background: var(--ui-surface);
210
+ border: 1px solid var(--ui-border);
211
+ border-radius: var(--ui-radius-md);
212
212
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
213
213
  }
214
214
 
215
215
  .hint {
216
- margin: 0 0 var(--ui-space-2, 8px);
217
- font-size: var(--ui-text-sm, 0.875rem);
218
- color: var(--ui-text-muted, #6b7280);
216
+ margin: 0 0 var(--ui-space-2);
217
+ font-size: var(--ui-font-size-sm);
218
+ color: var(--ui-text-muted);
219
219
  }
220
220
 
221
221
  .grid {
@@ -223,39 +223,39 @@ onBeforeUnmount(() => {
223
223
  grid-template-columns: repeat(var(--ui-editor-table-grid-cols, 8), 1.25rem);
224
224
  grid-template-rows: repeat(var(--ui-editor-table-grid-rows, 8), 1.25rem);
225
225
  gap: 2px;
226
- margin-bottom: var(--ui-space-2, 8px);
226
+ margin-bottom: var(--ui-space-2);
227
227
  }
228
228
 
229
229
  .cell {
230
230
  width: 1.25rem;
231
231
  height: 1.25rem;
232
232
  padding: 0;
233
- border: 1px solid var(--ui-border, #e5e7eb);
233
+ border: 1px solid var(--ui-border);
234
234
  border-radius: 2px;
235
- background: var(--ui-surface, #fff);
235
+ background: var(--ui-surface);
236
236
  cursor: pointer;
237
237
  }
238
238
 
239
239
  .cell.selected {
240
- background: var(--ui-accent-solid, var(--ui-accent, #0066cc));
241
- border-color: var(--ui-accent-solid, var(--ui-accent, #0066cc));
240
+ background: var(--ui-accent-solid, var(--ui-accent));
241
+ border-color: var(--ui-accent-solid, var(--ui-accent));
242
242
  }
243
243
 
244
244
  .header {
245
245
  display: block;
246
- margin-bottom: var(--ui-space-2, 8px);
247
- font-size: var(--ui-text-sm, 0.875rem);
246
+ margin-bottom: var(--ui-space-2);
247
+ font-size: var(--ui-font-size-sm);
248
248
  cursor: pointer;
249
249
  }
250
250
 
251
251
  [data-component~="ui-editor-insert-table-grid"] .insert {
252
252
  width: 100%;
253
- padding: var(--ui-space-2, 8px) var(--ui-space-3, 12px);
254
- border: 1px solid var(--ui-border, #e5e7eb);
255
- border-radius: var(--ui-radius-sm, 4px);
256
- background: var(--ui-accent-solid, var(--ui-accent, #0066cc));
257
- color: var(--ui-accent-contrast, #fff);
258
- font-size: var(--ui-text-sm, 0.875rem);
253
+ padding: var(--ui-space-2) var(--ui-space-3);
254
+ border: 1px solid var(--ui-border);
255
+ border-radius: var(--ui-radius-sm);
256
+ background: var(--ui-accent-solid, var(--ui-accent));
257
+ color: var(--ui-accent-contrast);
258
+ font-size: var(--ui-font-size-sm);
259
259
  cursor: pointer;
260
260
  }
261
261