@threadlabs/looma 0.5.2 → 0.6.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/components/shared/overlay.js +3 -0
  2. package/components/ui-button/ui-button.html +46 -26
  3. package/components/ui-callout/ui-callout.html +1 -1
  4. package/components/ui-checkbox/ui-checkbox.html +1 -1
  5. package/components/ui-cluster/ui-cluster.html +6 -6
  6. package/components/ui-combobox/ui-combobox.html +23 -23
  7. package/components/ui-container/ui-container.html +4 -4
  8. package/components/ui-context-menu/ui-context-menu.html +2 -2
  9. package/components/ui-dialog/ui-dialog.html +12 -12
  10. package/components/ui-disclosure/ui-disclosure.html +19 -4
  11. package/components/ui-editable/ui-editable.html +6 -6
  12. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +20 -20
  13. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +25 -25
  14. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +39 -39
  15. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +20 -20
  16. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +48 -48
  17. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +34 -34
  18. package/components/ui-editor-toolbar/ui-editor-toolbar.html +9 -9
  19. package/components/ui-floating-action-button/ui-floating-action-button.html +16 -22
  20. package/components/ui-grid/ui-grid.html +6 -6
  21. package/components/ui-icon-button/ui-icon-button.html +45 -40
  22. package/components/ui-input/ui-input.html +2 -2
  23. package/components/ui-menu/ui-menu.html +15 -4
  24. package/components/ui-menu-item/ui-menu-item.html +5 -5
  25. package/components/ui-popover/ui-popover.html +3 -3
  26. package/components/ui-reel/ui-reel.html +6 -6
  27. package/components/ui-search-result-row/ui-search-result-row.html +9 -9
  28. package/components/ui-search-shell/ui-search-shell.html +3 -3
  29. package/components/ui-select/ui-select.html +2 -2
  30. package/components/ui-sidebar/ui-sidebar.html +11 -11
  31. package/components/ui-stack/ui-stack.html +6 -6
  32. package/components/ui-switcher/ui-switcher.html +6 -6
  33. package/components/ui-tabs/ui-tabs.html +18 -4
  34. package/components/ui-textarea/ui-textarea.html +2 -2
  35. package/components/ui-toast-region/ui-toast-region.html +2 -2
  36. package/components/ui-tooltip/ui-tooltip.html +1 -1
  37. package/components/ui-top-bar/ui-top-bar.html +5 -5
  38. package/components/ui-tree/ui-tree.html +7 -0
  39. package/components/ui-tree-item/ui-tree-item.html +15 -7
  40. package/dist/index.js +1 -1
  41. package/package.json +1 -1
  42. package/styles/ui-button.css +47 -26
  43. package/styles/ui-callout.css +1 -1
  44. package/styles/ui-checkbox.css +1 -1
  45. package/styles/ui-cluster.css +6 -6
  46. package/styles/ui-combobox.css +23 -23
  47. package/styles/ui-container.css +4 -4
  48. package/styles/ui-context-menu.css +2 -2
  49. package/styles/ui-dialog.css +12 -12
  50. package/styles/ui-disclosure.css +22 -6
  51. package/styles/ui-editable.css +6 -6
  52. package/styles/ui-editor-insert-table-grid.css +20 -20
  53. package/styles/ui-editor-mention-menu.css +25 -25
  54. package/styles/ui-editor-slash-menu.css +39 -39
  55. package/styles/ui-editor-table-context-menu.css +20 -20
  56. package/styles/ui-editor-table-overlay.css +48 -48
  57. package/styles/ui-editor-table-toolbar.css +34 -34
  58. package/styles/ui-editor-toolbar.css +9 -9
  59. package/styles/ui-floating-action-button.css +16 -22
  60. package/styles/ui-grid.css +6 -6
  61. package/styles/ui-icon-button.css +45 -40
  62. package/styles/ui-input.css +2 -2
  63. package/styles/ui-menu-item.css +5 -5
  64. package/styles/ui-menu.css +18 -6
  65. package/styles/ui-popover.css +3 -3
  66. package/styles/ui-reel.css +6 -6
  67. package/styles/ui-search-result-row.css +9 -9
  68. package/styles/ui-search-shell.css +3 -3
  69. package/styles/ui-select.css +2 -2
  70. package/styles/ui-sidebar.css +11 -11
  71. package/styles/ui-stack.css +6 -6
  72. package/styles/ui-switcher.css +6 -6
  73. package/styles/ui-tabs.css +20 -6
  74. package/styles/ui-textarea.css +2 -2
  75. package/styles/ui-toast-region.css +2 -2
  76. package/styles/ui-tooltip.css +1 -1
  77. package/styles/ui-top-bar.css +5 -5
  78. package/styles/ui-tree-item.css +21 -8
  79. package/styles/ui-tree.css +7 -1
  80. package/theme-dark.css +46 -103
  81. package/theme-high-contrast.css +22 -22
  82. package/theme-light.css +17 -41
  83. package/tokens.css +154 -201
  84. package/vanilla/UiButton.d.ts +1 -0
  85. package/vanilla/UiButton.js +1 -1
  86. package/vanilla/UiDisclosure.d.ts +1 -0
  87. package/vanilla/UiDisclosure.js +1 -1
  88. package/vanilla/UiMenu.d.ts +1 -0
  89. package/vanilla/UiMenu.js +1 -1
  90. package/vanilla/UiTabs.d.ts +1 -0
  91. package/vanilla/UiTabs.js +1 -1
  92. package/vanilla/UiTree.d.ts +1 -0
  93. package/vanilla/UiTree.js +1 -1
  94. package/vue/UiButton.d.ts +2 -0
  95. package/vue/UiButton.vue +56 -41
  96. package/vue/UiCallout.vue +1 -1
  97. package/vue/UiCheckbox.vue +1 -1
  98. package/vue/UiCluster.vue +6 -6
  99. package/vue/UiCombobox.vue +23 -23
  100. package/vue/UiContainer.vue +4 -4
  101. package/vue/UiContextMenu.vue +2 -2
  102. package/vue/UiDialog.vue +12 -12
  103. package/vue/UiDisclosure.d.ts +2 -0
  104. package/vue/UiDisclosure.vue +21 -4
  105. package/vue/UiEditable.vue +6 -6
  106. package/vue/UiEditorInsertTableGrid.vue +20 -20
  107. package/vue/UiEditorMentionMenu.vue +25 -25
  108. package/vue/UiEditorSlashMenu.vue +39 -39
  109. package/vue/UiEditorTableContextMenu.vue +20 -20
  110. package/vue/UiEditorTableOverlay.vue +48 -57
  111. package/vue/UiEditorTableToolbar.vue +34 -34
  112. package/vue/UiEditorToolbar.vue +9 -9
  113. package/vue/UiFloatingActionButton.vue +17 -22
  114. package/vue/UiGrid.vue +6 -6
  115. package/vue/UiIconButton.vue +45 -55
  116. package/vue/UiInput.vue +2 -2
  117. package/vue/UiMenu.d.ts +2 -0
  118. package/vue/UiMenu.vue +17 -7
  119. package/vue/UiMenuItem.vue +6 -5
  120. package/vue/UiPopover.vue +3 -3
  121. package/vue/UiReel.vue +6 -6
  122. package/vue/UiSearchResultRow.vue +10 -13
  123. package/vue/UiSearchShell.vue +3 -3
  124. package/vue/UiSelect.vue +2 -2
  125. package/vue/UiSidebar.vue +11 -16
  126. package/vue/UiStack.vue +6 -6
  127. package/vue/UiSwitcher.vue +6 -6
  128. package/vue/UiTabs.d.ts +2 -0
  129. package/vue/UiTabs.vue +21 -4
  130. package/vue/UiTextarea.vue +2 -2
  131. package/vue/UiToastRegion.vue +2 -2
  132. package/vue/UiTooltip.vue +1 -1
  133. package/vue/UiTopBar.vue +5 -5
  134. package/vue/UiTree.d.ts +2 -0
  135. package/vue/UiTree.vue +24 -1
  136. package/vue/UiTreeItem.vue +16 -8
  137. package/vue/chunks/UiButton.js +4 -2
  138. package/vue/chunks/UiCallout.js +1 -1
  139. package/vue/chunks/UiCheckbox.js +1 -1
  140. package/vue/chunks/UiCluster.js +1 -1
  141. package/vue/chunks/UiCombobox.js +1 -1
  142. package/vue/chunks/UiContainer.js +1 -1
  143. package/vue/chunks/UiContextMenu.js +1 -1
  144. package/vue/chunks/UiDialog.js +1 -1
  145. package/vue/chunks/UiDisclosure.js +3 -2
  146. package/vue/chunks/UiEditable.js +1 -1
  147. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  148. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  149. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  150. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  151. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  152. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  153. package/vue/chunks/UiEditorToolbar.js +1 -1
  154. package/vue/chunks/UiFloatingActionButton.js +1 -1
  155. package/vue/chunks/UiGrid.js +1 -1
  156. package/vue/chunks/UiIconButton.js +1 -1
  157. package/vue/chunks/UiInput.js +1 -1
  158. package/vue/chunks/UiMenu.js +3 -2
  159. package/vue/chunks/UiMenuItem.js +1 -1
  160. package/vue/chunks/UiPopover.js +1 -1
  161. package/vue/chunks/UiReel.js +1 -1
  162. package/vue/chunks/UiSearchResultRow.js +1 -1
  163. package/vue/chunks/UiSearchShell.js +1 -1
  164. package/vue/chunks/UiSelect.js +1 -1
  165. package/vue/chunks/UiSidebar.js +1 -1
  166. package/vue/chunks/UiStack.js +1 -1
  167. package/vue/chunks/UiSwitcher.js +1 -1
  168. package/vue/chunks/UiTabs.js +7 -2
  169. package/vue/chunks/UiTextarea.js +1 -1
  170. package/vue/chunks/UiToastRegion.js +1 -1
  171. package/vue/chunks/UiTooltip.js +1 -1
  172. package/vue/chunks/UiTopBar.js +1 -1
  173. package/vue/chunks/UiTree.js +8 -2
  174. package/vue/chunks/UiTreeItem.js +1 -1
  175. package/vue/components.css +1114 -1090
  176. package/vue/editor/LoomaEditor.d.ts +11 -0
  177. package/vue/editor/index.js +17 -0
package/vanilla/UiMenu.js CHANGED
@@ -3,7 +3,7 @@ import { manageComponentLifecycle } from "@nextwebwg/html-next/runtime";
3
3
  import * as controller from "../components/ui-menu/ui-menu.js";
4
4
  import "../styles/ui-menu.css";
5
5
 
6
- const definition = {...{"contract":{"tag":"ui-menu","props":{"for":{"type":"string","required":false,"target":{"attribute":"for"},"default":""},"open":{"type":"boolean","required":false,"target":{"attribute":"open"},"default":false},"placement":{"type":"string","required":false,"target":{"attribute":"placement"},"default":"bottom-start"}}},"template":{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"role","value":"menu"},{"kind":"literal","name":"aria-orientation","value":"vertical"}],"children":[{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"class","value":"surface"}],"children":[{"kind":"slot"}]}]},"declarations":[{"kind":"state","name":"internalOpen","expression":{"source":"false","ast":{"kind":"literal","value":false},"dependencies":[]}},{"kind":"event","name":"select","type":"object({ value: string, trigger: keyboard | pointer | programmatic })","bubbles":true,"composed":true,"cancelable":false},{"kind":"event","name":"open","type":"object({ open: boolean, reason: action | programmatic, trigger: keyboard | pointer | programmatic })","bubbles":true,"composed":true,"cancelable":false},{"kind":"event","name":"close","type":"object({ open: boolean, reason: action | programmatic | light-dismiss | escape, 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-menu","props":{"density":{"type":{"enum":["comfortable","compact"]},"required":false,"target":{"attribute":"density"},"default":"comfortable"},"for":{"type":"string","required":false,"target":{"attribute":"for"},"default":""},"open":{"type":"boolean","required":false,"target":{"attribute":"open"},"default":false},"placement":{"type":"string","required":false,"target":{"attribute":"placement"},"default":"bottom-start"}}},"template":{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"role","value":"menu"},{"kind":"literal","name":"aria-orientation","value":"vertical"}],"children":[{"kind":"element","name":"div","attributes":[{"kind":"literal","name":"class","value":"surface"}],"children":[{"kind":"slot"}]}]},"declarations":[{"kind":"state","name":"internalOpen","expression":{"source":"false","ast":{"kind":"literal","value":false},"dependencies":[]}},{"kind":"event","name":"select","type":"object({ value: string, trigger: keyboard | pointer | programmatic })","bubbles":true,"composed":true,"cancelable":false},{"kind":"event","name":"open","type":"object({ open: boolean, reason: action | programmatic, trigger: keyboard | pointer | programmatic })","bubbles":true,"composed":true,"cancelable":false},{"kind":"event","name":"close","type":"object({ open: boolean, reason: action | programmatic | light-dismiss | escape, 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 createUiMenu(options = {}) {
9
9
  const { attributes = {}, children = [], slots = {}, as, ...componentProps } = options;
@@ -7,6 +7,7 @@ export interface UiTabsElement extends HTMLDivElement {
7
7
  removeEventListener<K extends keyof UiTabsEventMap>(type: K, listener: (this: UiTabsElement, event: UiTabsEventMap[K]) => unknown, options?: boolean | EventListenerOptions): void;
8
8
  }
9
9
  export interface UiTabsProps {
10
+ density?: "comfortable" | "compact" | null;
10
11
  label?: string | null;
11
12
  orientation?: "horizontal" | "vertical" | null;
12
13
  stretch?: boolean | null;
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.d.ts CHANGED
@@ -3,6 +3,7 @@ type __VLS_Props = {
3
3
  disabled?: boolean;
4
4
  size?: 'sm' | 'md' | 'lg';
5
5
  stretch?: boolean;
6
+ tone?: 'neutral' | 'accent';
6
7
  variant?: 'outline' | 'solid' | 'danger' | 'ghost' | 'link';
7
8
  };
8
9
  declare var __VLS_1: {};
@@ -10,6 +11,7 @@ type __VLS_Slots = {} & {
10
11
  default?: (props: typeof __VLS_1) => any;
11
12
  };
12
13
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
14
+ tone: "neutral" | "accent";
13
15
  variant: "outline" | "solid" | "danger" | "ghost" | "link";
14
16
  align: "center" | "start";
15
17
  disabled: boolean;
package/vue/UiButton.vue CHANGED
@@ -10,6 +10,7 @@ const props = withDefaults(
10
10
  disabled?: boolean
11
11
  size?: 'sm' | 'md' | 'lg'
12
12
  stretch?: boolean
13
+ tone?: 'neutral' | 'accent'
13
14
  variant?: 'outline' | 'solid' | 'danger' | 'ghost' | 'link'
14
15
  }>(),
15
16
  {
@@ -17,6 +18,7 @@ const props = withDefaults(
17
18
  disabled: false,
18
19
  size: 'md',
19
20
  stretch: false,
21
+ tone: 'neutral',
20
22
  variant: 'outline',
21
23
  },
22
24
  )
@@ -28,6 +30,7 @@ const hostState = computed(() =>
28
30
  props.align && `align align=${props.align}`,
29
31
  props.stretch && 'stretch',
30
32
  props.size && `size size=${props.size}`,
33
+ props.tone && `tone tone=${props.tone}`,
31
34
  ].filter(Boolean).join(' ')
32
35
  )
33
36
  </script>
@@ -69,16 +72,16 @@ const hostState = computed(() =>
69
72
 
70
73
  [data-component~="ui-button"] {
71
74
  appearance: none;
72
- min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md, 2.5rem));
75
+ min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
73
76
  border: 1px solid var(--ui-button-border, var(--ui-border-strong));
74
- border-radius: var(--ui-button-radius, var(--ui-radius-2));
77
+ border-radius: var(--ui-button-radius, var(--ui-radius-md));
75
78
  background: var(--ui-button-surface, var(--ui-surface-elevated));
76
79
  color: var(--ui-button-text, var(--ui-action-secondary-text, var(--ui-text-primary)));
77
80
  font: inherit;
78
- font-weight: var(--ui-font-medium, 500);
81
+ font-weight: var(--ui-font-medium);
79
82
  line-height: var(--ui-line-height-tight);
80
83
  padding: var(--ui-space-2) var(--ui-space-3);
81
- background-image: var(--ui-raised-highlight, none);
84
+ background-image: var(--ui-raised-highlight);
82
85
  box-shadow: var(--ui-button-shadow, var(--ui-raised, var(--ui-shadow-xs)));
83
86
  cursor: pointer;
84
87
  transition:
@@ -98,13 +101,13 @@ const hostState = computed(() =>
98
101
  }
99
102
 
100
103
  [data-component~="ui-button"][data-ui-button-state~="size=sm"] {
101
- min-block-size: var(--ui-control-size-sm, 2rem);
104
+ min-block-size: var(--ui-control-size-sm);
102
105
  padding: var(--ui-space-1) var(--ui-space-2);
103
106
  font-size: 0.875rem;
104
107
  }
105
108
 
106
109
  [data-component~="ui-button"][data-ui-button-state~="size=lg"] {
107
- min-block-size: var(--ui-control-size-lg, 3rem);
110
+ min-block-size: var(--ui-control-size-lg);
108
111
  padding: var(--ui-space-3) var(--ui-space-4);
109
112
  font-size: 1rem;
110
113
  }
@@ -166,6 +169,26 @@ const hostState = computed(() =>
166
169
  transform: translateY(0);
167
170
  }
168
171
 
172
+ /* An accent-tinted secondary action: the outline, ghost, and link variants in the accent colour.
173
+ Solid and danger already carry their own intent. */
174
+ [data-component~="ui-button"][data-ui-button-state~="tone=accent"][data-component~="ui-button"][data-ui-button-state~="variant=outline"] {
175
+ border-color: var(--ui-button-accent-border, var(--ui-accent));
176
+ background: var(--ui-button-accent-surface, var(--ui-accent-subtle));
177
+ color: var(--ui-button-accent-text, var(--ui-accent-active));
178
+ }
179
+
180
+ [data-component~="ui-button"][data-ui-button-state~="tone=accent"][data-component~="ui-button"][data-ui-button-state~="variant=outline"]:hover:enabled {
181
+ border-color: var(--ui-button-accent-hover-border, var(--ui-accent-hover));
182
+ background: var(
183
+ --ui-button-accent-hover-surface,
184
+ color-mix(in srgb, var(--ui-accent) 16%, var(--ui-surface))
185
+ );
186
+ }
187
+
188
+ [data-component~="ui-button"][data-ui-button-state~="tone=accent"]:is([data-component~="ui-button"][data-ui-button-state~="variant=ghost"], [data-component~="ui-button"][data-ui-button-state~="variant=link"]) {
189
+ color: var(--ui-button-accent-text, var(--ui-accent-active));
190
+ }
191
+
169
192
  [data-component~="ui-button"][data-ui-button-state~="variant=ghost"] {
170
193
  border-color: transparent;
171
194
  background: transparent;
@@ -175,12 +198,18 @@ const hostState = computed(() =>
175
198
 
176
199
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
177
200
  [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));
201
+ background: var(
202
+ --ui-button-ghost-hover-surface,
203
+ color-mix(in srgb, currentColor 8%, transparent)
204
+ );
179
205
  border-color: transparent;
180
206
  }
181
207
 
182
208
  [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));
209
+ background: var(
210
+ --ui-button-ghost-active-surface,
211
+ color-mix(in srgb, currentColor 14%, transparent)
212
+ );
184
213
  border-color: transparent;
185
214
  }
186
215
 
@@ -200,49 +229,34 @@ const hostState = computed(() =>
200
229
 
201
230
  /* Disabled colours fall back to each variant's own; ghost and link take only the text colour. */
202
231
  [data-component~="ui-button"]:disabled {
203
- opacity: var(--ui-button-disabled-opacity, 0.6);
232
+ opacity: var(--ui-button-disabled-opacity, 1);
204
233
  cursor: not-allowed;
205
- border-color: var(--ui-button-disabled-border, var(--ui-button-border, var(--ui-border-strong)));
206
- background-color: var(
207
- --ui-button-disabled-surface,
208
- var(--ui-button-surface, var(--ui-surface-elevated))
209
- );
210
- color: var(
211
- --ui-button-disabled-text,
212
- var(--ui-button-text, var(--ui-action-secondary-text, var(--ui-text-primary)))
213
- );
234
+ border-color: var(--ui-button-disabled-border, var(--ui-border));
235
+ background-color: var(--ui-button-disabled-surface, var(--ui-disabled-surface));
236
+ color: var(--ui-button-disabled-text, var(--ui-disabled-text));
214
237
  }
215
238
 
216
239
  [data-component~="ui-button"][data-ui-button-state~="variant=solid"]:disabled {
217
- border-color: var(
218
- --ui-button-disabled-border,
219
- var(--ui-action-primary-surface, var(--ui-accent-solid))
220
- );
221
- background-color: var(
222
- --ui-button-disabled-surface,
223
- var(--ui-action-primary-surface, var(--ui-accent-solid))
224
- );
225
- color: var(--ui-button-disabled-text, var(--ui-action-primary-text, var(--ui-text-on-accent)));
240
+ border-color: var(--ui-button-disabled-border, var(--ui-border));
241
+ background-color: var(--ui-button-disabled-surface, var(--ui-disabled-surface));
242
+ color: var(--ui-button-disabled-text, var(--ui-disabled-text));
226
243
  }
227
244
 
228
245
  [data-component~="ui-button"][data-ui-button-state~="variant=danger"]:disabled {
229
- border-color: var(--ui-button-disabled-border, var(--ui-danger-solid));
230
- background-color: var(--ui-button-disabled-surface, var(--ui-danger-solid));
231
- color: var(--ui-button-disabled-text, var(--ui-text-on-accent));
246
+ border-color: var(--ui-button-disabled-border, var(--ui-border));
247
+ background-color: var(--ui-button-disabled-surface, var(--ui-disabled-surface));
248
+ color: var(--ui-button-disabled-text, var(--ui-disabled-text));
232
249
  }
233
250
 
234
251
  [data-component~="ui-button"][data-ui-button-state~="variant=ghost"]:disabled {
252
+ background: none;
235
253
  border-color: transparent;
236
- background-color: transparent;
237
- color: var(
238
- --ui-button-disabled-text,
239
- var(--ui-button-ghost-text, var(--ui-action-secondary-text, var(--ui-text-primary)))
240
- );
254
+ color: var(--ui-button-disabled-text, var(--ui-disabled-text));
241
255
  }
242
256
 
243
257
  @media (pointer: coarse) {
244
258
  [data-component~="ui-button"] {
245
- min-block-size: var(--ui-control-min-block-size, 2.75rem);
259
+ min-block-size: var(--ui-control-min-block-size);
246
260
  }
247
261
  }
248
262
 
@@ -253,11 +267,11 @@ const hostState = computed(() =>
253
267
  min-block-size: 0;
254
268
  padding: 0;
255
269
  border: 0;
256
- border-radius: var(--ui-radius-sm, 4px);
270
+ border-radius: var(--ui-radius-sm);
257
271
  background: none;
258
272
  box-shadow: none;
259
273
  font: inherit;
260
- color: var(--ui-button-link-color, var(--ui-text-secondary));
274
+ color: var(--ui-button-link-text, var(--ui-text-secondary));
261
275
  text-decoration-line: underline;
262
276
  text-decoration-thickness: 1px;
263
277
  text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
@@ -268,7 +282,7 @@ const hostState = computed(() =>
268
282
  }
269
283
 
270
284
  [data-component~="ui-button"][data-ui-button-state~="variant=link"]:hover:enabled {
271
- color: var(--ui-button-link-hover-color, var(--ui-text-primary));
285
+ color: var(--ui-button-link-hover-text, var(--ui-text-primary));
272
286
  text-decoration-color: currentColor;
273
287
  background: none;
274
288
  transform: none;
@@ -281,13 +295,14 @@ const hostState = computed(() =>
281
295
 
282
296
  [data-component~="ui-button"][data-ui-button-state~="variant=link"]:disabled {
283
297
  background: none;
284
- color: var(--ui-button-disabled-text, var(--ui-button-link-color, var(--ui-text-secondary)));
298
+ border-color: transparent;
299
+ color: var(--ui-button-disabled-text, var(--ui-disabled-text));
285
300
  }
286
301
 
287
302
  [data-component~="ui-button"][data-ui-button-state~="variant=link"]:focus-visible {
288
303
  box-shadow: none;
289
304
  /* 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);
305
+ outline: 2px solid var(--ui-focus-ring);
291
306
  outline-offset: 2px;
292
307
  }
293
308
 
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;