@threadlabs/looma 0.5.1 → 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 (341) hide show
  1. package/README.md +1 -1
  2. package/components/shared/overlay.js +3 -0
  3. package/components/ui-button/ui-button.html +27 -14
  4. package/components/ui-callout/ui-callout.html +1 -1
  5. package/components/ui-checkbox/ui-checkbox.html +1 -1
  6. package/components/ui-cluster/ui-cluster.html +6 -6
  7. package/components/ui-combobox/ui-combobox.html +35 -27
  8. package/components/ui-container/ui-container.html +4 -4
  9. package/components/ui-context-menu/ui-context-menu.html +2 -2
  10. package/components/ui-dialog/ui-dialog.html +21 -8
  11. package/components/ui-disclosure/ui-disclosure.html +19 -4
  12. package/components/ui-editable/ui-editable.html +6 -6
  13. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +21 -21
  14. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +26 -26
  15. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +39 -39
  16. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +26 -22
  17. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +68 -52
  18. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +42 -38
  19. package/components/ui-editor-toolbar/ui-editor-toolbar.html +9 -9
  20. package/components/ui-floating-action-button/ui-floating-action-button.html +16 -22
  21. package/components/ui-form-field/ui-form-field.html +18 -7
  22. package/components/ui-grid/ui-grid.html +6 -6
  23. package/components/ui-icon/ui-icon.html +5 -1
  24. package/components/ui-icon-button/ui-icon-button.html +68 -34
  25. package/components/ui-input/ui-input.html +2 -2
  26. package/components/ui-menu/ui-menu.html +15 -4
  27. package/components/ui-menu-item/ui-menu-item.html +5 -5
  28. package/components/ui-popover/ui-popover.html +3 -3
  29. package/components/ui-popover/ui-popover.js +10 -2
  30. package/components/ui-reel/ui-reel.html +6 -6
  31. package/components/ui-search-result-row/ui-search-result-row.html +9 -9
  32. package/components/ui-search-shell/ui-search-shell.html +10 -3
  33. package/components/ui-search-shell/ui-search-shell.js +9 -0
  34. package/components/ui-select/ui-select.html +2 -2
  35. package/components/ui-sidebar/ui-sidebar.html +11 -11
  36. package/components/ui-stack/ui-stack.html +6 -6
  37. package/components/ui-switcher/ui-switcher.html +6 -6
  38. package/components/ui-tabs/ui-tabs.html +19 -5
  39. package/components/ui-textarea/ui-textarea.html +2 -2
  40. package/components/ui-toast-region/ui-toast-region.html +3 -3
  41. package/components/ui-tooltip/ui-tooltip.html +1 -1
  42. package/components/ui-top-bar/ui-top-bar.html +5 -5
  43. package/components/ui-tree/ui-tree.html +7 -0
  44. package/components/ui-tree-item/ui-tree-item.html +20 -7
  45. package/dist/index.d.ts +1 -1
  46. package/dist/index.js +2 -2
  47. package/package.json +2 -2
  48. package/styles/ui-affordance-scope.css +1 -1
  49. package/styles/ui-avatar-group.css +1 -1
  50. package/styles/ui-avatar.css +1 -1
  51. package/styles/ui-badge.css +1 -1
  52. package/styles/ui-button.css +25 -15
  53. package/styles/ui-callout.css +2 -2
  54. package/styles/ui-checkbox.css +2 -2
  55. package/styles/ui-cluster.css +7 -7
  56. package/styles/ui-combobox.css +24 -24
  57. package/styles/ui-container.css +5 -5
  58. package/styles/ui-context-menu.css +3 -3
  59. package/styles/ui-dialog.css +26 -9
  60. package/styles/ui-disclosure.css +23 -7
  61. package/styles/ui-editable.css +7 -7
  62. package/styles/ui-editor-insert-table-grid.css +21 -21
  63. package/styles/ui-editor-mention-menu.css +26 -26
  64. package/styles/ui-editor-slash-menu.css +40 -40
  65. package/styles/ui-editor-table-context-menu.css +21 -21
  66. package/styles/ui-editor-table-overlay.css +49 -49
  67. package/styles/ui-editor-table-toolbar.css +35 -35
  68. package/styles/ui-editor-toolbar.css +10 -10
  69. package/styles/ui-floating-action-button.css +17 -23
  70. package/styles/ui-form-field.css +24 -10
  71. package/styles/ui-grid.css +7 -7
  72. package/styles/ui-icon-button.css +74 -35
  73. package/styles/ui-icon.css +1 -1
  74. package/styles/ui-input.css +3 -3
  75. package/styles/ui-menu-item.css +6 -6
  76. package/styles/ui-menu.css +19 -7
  77. package/styles/ui-popover.css +4 -4
  78. package/styles/ui-radio-group.css +1 -1
  79. package/styles/ui-radio.css +1 -1
  80. package/styles/ui-reel.css +7 -7
  81. package/styles/ui-search-result-row.css +10 -10
  82. package/styles/ui-search-shell.css +14 -5
  83. package/styles/ui-select.css +3 -3
  84. package/styles/ui-separator.css +1 -1
  85. package/styles/ui-sidebar.css +12 -12
  86. package/styles/ui-stack.css +7 -7
  87. package/styles/ui-switch.css +1 -1
  88. package/styles/ui-switcher.css +7 -7
  89. package/styles/ui-tabs.css +21 -7
  90. package/styles/ui-textarea.css +3 -3
  91. package/styles/ui-toast-region.css +3 -3
  92. package/styles/ui-tooltip.css +2 -2
  93. package/styles/ui-top-bar.css +6 -6
  94. package/styles/ui-tree-item.css +30 -9
  95. package/styles/ui-tree.css +8 -2
  96. package/theme-dark.css +42 -103
  97. package/theme-high-contrast.css +18 -22
  98. package/theme-light.css +15 -41
  99. package/tokens.css +149 -201
  100. package/vanilla/UiAffordanceScope.d.ts +1 -1
  101. package/vanilla/UiAffordanceScope.js +2 -2
  102. package/vanilla/UiAvatar.d.ts +1 -1
  103. package/vanilla/UiAvatar.js +2 -2
  104. package/vanilla/UiAvatarGroup.d.ts +1 -1
  105. package/vanilla/UiAvatarGroup.js +2 -2
  106. package/vanilla/UiBadge.d.ts +1 -1
  107. package/vanilla/UiBadge.js +2 -2
  108. package/vanilla/UiButton.d.ts +3 -1
  109. package/vanilla/UiButton.js +3 -3
  110. package/vanilla/UiCallout.d.ts +1 -1
  111. package/vanilla/UiCallout.js +2 -2
  112. package/vanilla/UiCheckbox.d.ts +1 -1
  113. package/vanilla/UiCheckbox.js +2 -2
  114. package/vanilla/UiCluster.d.ts +1 -1
  115. package/vanilla/UiCluster.js +2 -2
  116. package/vanilla/UiCombobox.d.ts +1 -1
  117. package/vanilla/UiCombobox.js +3 -3
  118. package/vanilla/UiContainer.d.ts +1 -1
  119. package/vanilla/UiContainer.js +2 -2
  120. package/vanilla/UiContextMenu.d.ts +1 -1
  121. package/vanilla/UiContextMenu.js +2 -2
  122. package/vanilla/UiDialog.d.ts +1 -1
  123. package/vanilla/UiDialog.js +2 -2
  124. package/vanilla/UiDisclosure.d.ts +2 -1
  125. package/vanilla/UiDisclosure.js +3 -3
  126. package/vanilla/UiEditable.d.ts +1 -1
  127. package/vanilla/UiEditable.js +2 -2
  128. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  129. package/vanilla/UiEditorInsertTableGrid.js +3 -3
  130. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  131. package/vanilla/UiEditorMentionMenu.js +3 -3
  132. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  133. package/vanilla/UiEditorSlashMenu.js +2 -2
  134. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  135. package/vanilla/UiEditorTableContextMenu.js +3 -3
  136. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  137. package/vanilla/UiEditorTableOverlay.js +3 -3
  138. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  139. package/vanilla/UiEditorTableToolbar.js +3 -3
  140. package/vanilla/UiEditorToolbar.d.ts +1 -1
  141. package/vanilla/UiEditorToolbar.js +2 -2
  142. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  143. package/vanilla/UiFloatingActionButton.js +2 -2
  144. package/vanilla/UiFormField.d.ts +1 -1
  145. package/vanilla/UiFormField.js +15 -6
  146. package/vanilla/UiGrid.d.ts +1 -1
  147. package/vanilla/UiGrid.js +2 -2
  148. package/vanilla/UiIcon.d.ts +1 -1
  149. package/vanilla/UiIcon.js +3 -3
  150. package/vanilla/UiIconButton.d.ts +1 -1
  151. package/vanilla/UiIconButton.js +2 -2
  152. package/vanilla/UiInput.d.ts +1 -1
  153. package/vanilla/UiInput.js +2 -2
  154. package/vanilla/UiMenu.d.ts +2 -1
  155. package/vanilla/UiMenu.js +3 -3
  156. package/vanilla/UiMenuItem.d.ts +1 -1
  157. package/vanilla/UiMenuItem.js +2 -2
  158. package/vanilla/UiPopover.d.ts +1 -1
  159. package/vanilla/UiPopover.js +2 -2
  160. package/vanilla/UiRadio.d.ts +1 -1
  161. package/vanilla/UiRadio.js +2 -2
  162. package/vanilla/UiRadioGroup.d.ts +1 -1
  163. package/vanilla/UiRadioGroup.js +2 -2
  164. package/vanilla/UiReel.d.ts +1 -1
  165. package/vanilla/UiReel.js +2 -2
  166. package/vanilla/UiSearchResultRow.d.ts +1 -1
  167. package/vanilla/UiSearchResultRow.js +2 -2
  168. package/vanilla/UiSearchShell.d.ts +1 -1
  169. package/vanilla/UiSearchShell.js +2 -2
  170. package/vanilla/UiSelect.d.ts +1 -1
  171. package/vanilla/UiSelect.js +2 -2
  172. package/vanilla/UiSeparator.d.ts +1 -1
  173. package/vanilla/UiSeparator.js +2 -2
  174. package/vanilla/UiSidebar.d.ts +1 -1
  175. package/vanilla/UiSidebar.js +2 -2
  176. package/vanilla/UiStack.d.ts +1 -1
  177. package/vanilla/UiStack.js +2 -2
  178. package/vanilla/UiSwitch.d.ts +1 -1
  179. package/vanilla/UiSwitch.js +2 -2
  180. package/vanilla/UiSwitcher.d.ts +1 -1
  181. package/vanilla/UiSwitcher.js +2 -2
  182. package/vanilla/UiTabs.d.ts +2 -1
  183. package/vanilla/UiTabs.js +3 -3
  184. package/vanilla/UiTextarea.d.ts +1 -1
  185. package/vanilla/UiTextarea.js +2 -2
  186. package/vanilla/UiToastRegion.d.ts +1 -1
  187. package/vanilla/UiToastRegion.js +3 -3
  188. package/vanilla/UiTooltip.d.ts +1 -1
  189. package/vanilla/UiTooltip.js +2 -2
  190. package/vanilla/UiTopBar.d.ts +1 -1
  191. package/vanilla/UiTopBar.js +1 -1
  192. package/vanilla/UiTree.d.ts +2 -1
  193. package/vanilla/UiTree.js +3 -3
  194. package/vanilla/UiTreeItem.d.ts +1 -1
  195. package/vanilla/UiTreeItem.js +2 -2
  196. package/vue/UiAffordanceScope.d.ts +2 -2
  197. package/vue/UiAffordanceScope.vue +92 -73
  198. package/vue/UiAvatar.d.ts +7 -7
  199. package/vue/UiAvatar.vue +145 -105
  200. package/vue/UiAvatarGroup.d.ts +4 -4
  201. package/vue/UiAvatarGroup.vue +134 -118
  202. package/vue/UiBadge.d.ts +4 -4
  203. package/vue/UiBadge.vue +113 -114
  204. package/vue/UiButton.d.ts +10 -6
  205. package/vue/UiButton.vue +295 -248
  206. package/vue/UiCallout.d.ts +2 -2
  207. package/vue/UiCallout.vue +154 -87
  208. package/vue/UiCheckbox.d.ts +14 -10
  209. package/vue/UiCheckbox.vue +228 -162
  210. package/vue/UiCluster.d.ts +2 -2
  211. package/vue/UiCluster.vue +53 -60
  212. package/vue/UiCombobox.d.ts +36 -32
  213. package/vue/UiCombobox.vue +1005 -416
  214. package/vue/UiContainer.d.ts +2 -2
  215. package/vue/UiContainer.vue +48 -51
  216. package/vue/UiContextMenu.d.ts +6 -4
  217. package/vue/UiContextMenu.vue +205 -116
  218. package/vue/UiDialog.d.ts +11 -9
  219. package/vue/UiDialog.vue +287 -212
  220. package/vue/UiDisclosure.d.ts +10 -6
  221. package/vue/UiDisclosure.vue +265 -159
  222. package/vue/UiEditable.d.ts +16 -12
  223. package/vue/UiEditable.vue +325 -205
  224. package/vue/UiEditorInsertTableGrid.d.ts +8 -8
  225. package/vue/UiEditorInsertTableGrid.vue +216 -157
  226. package/vue/UiEditorMentionMenu.d.ts +9 -9
  227. package/vue/UiEditorMentionMenu.vue +265 -222
  228. package/vue/UiEditorSlashMenu.d.ts +7 -7
  229. package/vue/UiEditorSlashMenu.vue +286 -240
  230. package/vue/UiEditorTableContextMenu.d.ts +5 -5
  231. package/vue/UiEditorTableContextMenu.vue +306 -193
  232. package/vue/UiEditorTableOverlay.d.ts +2 -2
  233. package/vue/UiEditorTableOverlay.vue +600 -369
  234. package/vue/UiEditorTableToolbar.d.ts +7 -7
  235. package/vue/UiEditorTableToolbar.vue +443 -268
  236. package/vue/UiEditorToolbar.d.ts +2 -2
  237. package/vue/UiEditorToolbar.vue +134 -121
  238. package/vue/UiFloatingActionButton.d.ts +6 -6
  239. package/vue/UiFloatingActionButton.vue +95 -99
  240. package/vue/UiFormField.d.ts +6 -6
  241. package/vue/UiFormField.vue +112 -80
  242. package/vue/UiGrid.d.ts +2 -2
  243. package/vue/UiGrid.vue +51 -57
  244. package/vue/UiIcon.d.ts +2 -2
  245. package/vue/UiIcon.vue +118 -89
  246. package/vue/UiIconButton.d.ts +11 -11
  247. package/vue/UiIconButton.vue +287 -217
  248. package/vue/UiInput.d.ts +9 -9
  249. package/vue/UiInput.vue +153 -127
  250. package/vue/UiMenu.d.ts +10 -6
  251. package/vue/UiMenu.vue +227 -143
  252. package/vue/UiMenuItem.d.ts +4 -4
  253. package/vue/UiMenuItem.vue +53 -46
  254. package/vue/UiPopover.d.ts +8 -6
  255. package/vue/UiPopover.vue +197 -137
  256. package/vue/UiRadio.d.ts +14 -10
  257. package/vue/UiRadio.vue +183 -117
  258. package/vue/UiRadioGroup.d.ts +14 -12
  259. package/vue/UiRadioGroup.vue +172 -111
  260. package/vue/UiReel.d.ts +3 -3
  261. package/vue/UiReel.vue +77 -77
  262. package/vue/UiSearchResultRow.d.ts +4 -4
  263. package/vue/UiSearchResultRow.vue +121 -115
  264. package/vue/UiSearchShell.d.ts +10 -8
  265. package/vue/UiSearchShell.vue +245 -176
  266. package/vue/UiSelect.d.ts +9 -9
  267. package/vue/UiSelect.vue +162 -134
  268. package/vue/UiSeparator.d.ts +2 -2
  269. package/vue/UiSeparator.vue +22 -27
  270. package/vue/UiSidebar.d.ts +20 -18
  271. package/vue/UiSidebar.vue +307 -224
  272. package/vue/UiStack.d.ts +3 -3
  273. package/vue/UiStack.vue +64 -70
  274. package/vue/UiSwitch.d.ts +12 -8
  275. package/vue/UiSwitch.vue +218 -150
  276. package/vue/UiSwitcher.d.ts +3 -3
  277. package/vue/UiSwitcher.vue +73 -75
  278. package/vue/UiTabs.d.ts +12 -8
  279. package/vue/UiTabs.vue +268 -210
  280. package/vue/UiTextarea.d.ts +11 -11
  281. package/vue/UiTextarea.vue +155 -128
  282. package/vue/UiToastRegion.d.ts +10 -8
  283. package/vue/UiToastRegion.vue +261 -198
  284. package/vue/UiTooltip.d.ts +14 -12
  285. package/vue/UiTooltip.vue +241 -177
  286. package/vue/UiTopBar.vue +51 -42
  287. package/vue/UiTree.d.ts +10 -6
  288. package/vue/UiTree.vue +180 -70
  289. package/vue/UiTreeItem.d.ts +24 -22
  290. package/vue/UiTreeItem.vue +464 -339
  291. package/vue/chunks/UiAffordanceScope.js +9 -16
  292. package/vue/chunks/UiAvatar.js +23 -29
  293. package/vue/chunks/UiAvatarGroup.js +16 -39
  294. package/vue/chunks/UiBadge.js +3 -12
  295. package/vue/chunks/UiButton.js +15 -18
  296. package/vue/chunks/UiCallout.js +8 -17
  297. package/vue/chunks/UiCheckbox.js +37 -40
  298. package/vue/chunks/UiCluster.js +3 -12
  299. package/vue/chunks/UiCombobox.js +224 -266
  300. package/vue/chunks/UiContainer.js +3 -12
  301. package/vue/chunks/UiContextMenu.js +39 -34
  302. package/vue/chunks/UiDialog.js +36 -39
  303. package/vue/chunks/UiDisclosure.js +44 -48
  304. package/vue/chunks/UiEditable.js +55 -57
  305. package/vue/chunks/UiEditorInsertTableGrid.js +55 -73
  306. package/vue/chunks/UiEditorMentionMenu.js +40 -81
  307. package/vue/chunks/UiEditorSlashMenu.js +28 -52
  308. package/vue/chunks/UiEditorTableContextMenu.js +32 -56
  309. package/vue/chunks/UiEditorTableOverlay.js +58 -82
  310. package/vue/chunks/UiEditorTableToolbar.js +61 -85
  311. package/vue/chunks/UiEditorToolbar.js +4 -13
  312. package/vue/chunks/UiFloatingActionButton.js +7 -21
  313. package/vue/chunks/UiFormField.js +15 -12
  314. package/vue/chunks/UiGrid.js +3 -12
  315. package/vue/chunks/UiIcon.js +20 -43
  316. package/vue/chunks/UiIconButton.js +16 -28
  317. package/vue/chunks/UiInput.js +20 -25
  318. package/vue/chunks/UiMenu.js +30 -33
  319. package/vue/chunks/UiMenuItem.js +4 -10
  320. package/vue/chunks/UiPopover.js +28 -29
  321. package/vue/chunks/UiRadio.js +36 -39
  322. package/vue/chunks/UiRadioGroup.js +30 -34
  323. package/vue/chunks/UiReel.js +6 -15
  324. package/vue/chunks/UiSearchResultRow.js +6 -19
  325. package/vue/chunks/UiSearchShell.js +25 -28
  326. package/vue/chunks/UiSelect.js +20 -23
  327. package/vue/chunks/UiSeparator.js +2 -8
  328. package/vue/chunks/UiSidebar.js +39 -44
  329. package/vue/chunks/UiStack.js +6 -15
  330. package/vue/chunks/UiSwitch.js +35 -38
  331. package/vue/chunks/UiSwitcher.js +6 -15
  332. package/vue/chunks/UiTabs.js +52 -85
  333. package/vue/chunks/UiTextarea.js +21 -26
  334. package/vue/chunks/UiToastRegion.js +38 -72
  335. package/vue/chunks/UiTooltip.js +34 -35
  336. package/vue/chunks/UiTopBar.js +1 -1
  337. package/vue/chunks/UiTree.js +27 -16
  338. package/vue/chunks/UiTreeItem.js +85 -102
  339. package/vue/components.css +4027 -3800
  340. package/vue/editor/LoomaEditor.d.ts +11 -0
  341. package/vue/editor/index.js +9 -0
@@ -1,167 +1,183 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.1 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import { computed, onBeforeUnmount, onMounted, ref, shallowRef, watchEffect } from "vue";
4
- import * as controllerModule from "../components/ui-avatar-group/ui-avatar-group.js";
3
+ import {
4
+ computed,
5
+ onBeforeUnmount,
6
+ onMounted,
7
+ ref,
8
+ shallowRef,
9
+ useTemplateRef,
10
+ watchEffect,
11
+ } from 'vue'
12
+ import * as controllerModule from '../components/ui-avatar-group/ui-avatar-group.js'
5
13
 
6
- defineOptions({ inheritAttrs: false });
14
+ defineOptions({ inheritAttrs: false })
7
15
 
8
- const hn = {
9
- t: (v: unknown): boolean => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
10
- n: (v: unknown): number | undefined => typeof v === "number" && v === v ? v : undefined,
11
- text: (v: unknown): string => v === undefined || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
12
- attr: (v: unknown): any => v === undefined || v === null || v === false ? undefined : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? undefined : String(v),
13
- enumerated: (v: unknown): any => typeof v === "boolean" ? String(v) : hn.attr(v),
14
- call: (fn: string, ...args: unknown[]): any => {
15
- if (fn === "format") {
16
- let index = 1;
17
- return typeof args[0] === "string" ? args[0].replace(/%s/g, () => index < args.length ? hn.text(args[index++]) : "%s") : undefined;
18
- }
19
- const n = args.map(hn.n);
20
- if (n.some((value) => value === undefined)) return undefined;
21
- const v = n as number[];
22
- switch (fn) {
23
- case "abs": return v.length === 1 ? Math.abs(v[0]!) : undefined;
24
- case "round": return v.length === 1 ? Math.round(v[0]!) : undefined;
25
- case "min": return v.length > 0 ? Math.min(...v) : undefined;
26
- case "max": return v.length > 0 ? Math.max(...v) : undefined;
27
- case "clamp": return v.length === 3 ? Math.min(Math.max(v[0]!, v[1]!), v[2]!) : undefined;
28
- }
29
- return undefined;
16
+ const props = withDefaults(
17
+ defineProps<{
18
+ label?: string
19
+ max?: number
20
+ }>(),
21
+ {
22
+ label: 'People',
23
+ max: 5,
30
24
  },
31
- };
25
+ )
32
26
 
33
- const props = withDefaults(defineProps<{
34
- label?: string | null;
35
- max?: number | null;
36
- }>(), {
37
- label: "People",
38
- max: 5,
39
- });
40
- const root = ref<HTMLElement | null>(null);
41
- const refs: Record<string, Element | undefined> = {};
42
- const state_overflowCount = ref<any>(0);
27
+ const root = ref<HTMLElement | null>(null)
28
+ const overflowElement = useTemplateRef<HTMLElement>('overflow')
29
+ const overflowCount = ref(0)
43
30
 
44
31
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
45
- const dispatch = (name: string, detail?: unknown): boolean => {
46
- return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail })) ?? true;
47
- };
32
+ function dispatch(name: string, detail?: unknown): boolean {
33
+ return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail }))
34
+ ?? true
35
+ }
48
36
 
49
37
  function read(name: string): unknown {
50
- if (name === "overflowCount") return state_overflowCount.value;
51
- return (props as Record<string, unknown>)[name];
38
+ if (name === 'overflowCount') return overflowCount.value
39
+ return (props as Record<string, unknown>)[name]
52
40
  }
53
41
 
54
42
  function write(name: string, value: unknown): boolean {
55
- if (name === "overflowCount") { state_overflowCount.value = value; return true; }
56
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
43
+ if (name === 'overflowCount') {
44
+ overflowCount.value = value as never
45
+ return true
46
+ }
47
+ throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
57
48
  }
58
49
 
59
- const stops: Array<() => void> = [];
50
+ const stops: Array<() => void> = []
60
51
  const host = {
61
- get element(): Element { return root.value as Element; },
52
+ get element(): Element {
53
+ return root.value as Element
54
+ },
62
55
  state: new Proxy({} as Record<string, unknown>, {
63
- get: (_target, name) => typeof name === "string" ? read(name) : undefined,
64
- set: (_target, name, value) => typeof name === "string" && write(name, value),
56
+ get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
57
+ set: (_target, name, value) => typeof name === 'string' && write(name, value),
65
58
  }),
66
- refs: refs as Readonly<Record<string, Element>>,
59
+ refs: {
60
+ get overflow(): Element {
61
+ return overflowElement.value as Element
62
+ },
63
+ } as Readonly<Record<string, Element>>,
67
64
  elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
68
65
  get: (_target, name) => {
69
- if (typeof name !== "string" || root.value === null) return undefined;
70
- const form = root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form");
71
- return form?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined;
66
+ if (typeof name !== 'string' || root.value === null) return undefined
67
+ const form = root.value instanceof HTMLFormElement
68
+ ? root.value
69
+ : root.value.querySelector('form')
70
+ return form?.elements.namedItem(name)
71
+ ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
72
72
  },
73
73
  }),
74
74
  signal<T>(initialValue: T) {
75
- const value = shallowRef(initialValue);
75
+ const value = shallowRef(initialValue)
76
76
  return {
77
77
  get: (): T => value.value,
78
- set: (next: T): void => { if (!Object.is(value.value, next)) value.value = next; },
79
- update: (next: (current: T) => T): void => { const updated = next(value.value); if (!Object.is(value.value, updated)) value.value = updated; },
80
- };
78
+ set: (next: T): void => {
79
+ if (!Object.is(value.value, next)) value.value = next
80
+ },
81
+ update: (next: (current: T) => T): void => {
82
+ const updated = next(value.value)
83
+ if (!Object.is(value.value, updated)) value.value = updated
84
+ },
85
+ }
81
86
  },
82
87
  computed<T>(compute: () => T) {
83
- const value = computed(compute);
84
- return { get: (): T => value.value };
88
+ const value = computed(compute)
89
+ return { get: (): T => value.value }
85
90
  },
86
91
  effect(run: () => void | (() => void)): () => void {
87
92
  const stop = watchEffect((onCleanup) => {
88
- const cleanup = run();
89
- if (typeof cleanup === "function") onCleanup(cleanup);
90
- }, { flush: "post" });
91
- stops.push(stop);
92
- return stop;
93
+ const cleanup = run()
94
+ if (typeof cleanup === 'function') onCleanup(cleanup)
95
+ }, { flush: 'post' })
96
+ stops.push(stop)
97
+ return stop
93
98
  },
94
99
  on(event: string, listener: EventListener): () => void {
95
- const element = root.value;
96
- element?.addEventListener(event, listener);
97
- const off = (): void => element?.removeEventListener(event, listener);
98
- stops.push(off);
99
- return off;
100
+ const element = root.value
101
+ element?.addEventListener(event, listener)
102
+ const off = (): void => element?.removeEventListener(event, listener)
103
+ stops.push(off)
104
+ return off
100
105
  },
101
106
  dispatch,
102
- };
107
+ }
103
108
 
104
- let cleanup: void | (() => void);
105
- let ready: Promise<void> | undefined;
109
+ let cleanup: void | (() => void)
110
+ let ready: Promise<void> | undefined
106
111
  onMounted(() => {
107
- ready = Promise.resolve(controllerModule.default(host as never)).then((result) => { cleanup = result; });
108
- });
112
+ ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
113
+ cleanup = result
114
+ })
115
+ })
109
116
  onBeforeUnmount(() => {
110
- for (const stop of stops.splice(0)) stop();
111
- if (typeof cleanup === "function") cleanup();
112
- });
117
+ for (const stop of stops.splice(0)) stop()
118
+ if (typeof cleanup === 'function') cleanup()
119
+ })
113
120
  </script>
114
121
 
115
122
  <template>
116
- <div data-component="ui-avatar-group" role="group" v-bind="$attrs" :aria-label="hn.enumerated(props.label)" ref="root"><slot></slot><span class="overflow" role="img" :hidden="hn.attr(!hn.t(state_overflowCount))" :aria-label="hn.enumerated(hn.call('format', '%s more', state_overflowCount))" :ref="(element) => { refs['overflow'] = element as Element }">{{ hn.text(hn.call("format", "+%s", state_overflowCount)) }}</span></div>
123
+ <div data-component="ui-avatar-group" role="group" v-bind="$attrs" :aria-label="label" ref="root">
124
+ <slot />
125
+ <span
126
+ class="overflow"
127
+ role="img"
128
+ :hidden="!overflowCount"
129
+ :aria-label="`${overflowCount} more`"
130
+ ref="overflow"
131
+ >{{ `+${overflowCount}` }}</span>
132
+ </div>
117
133
  </template>
118
134
 
119
135
  <style scoped>
120
136
  [data-component~="ui-avatar-group"] {
121
- display: flex;
122
- align-items: center;
123
- flex-direction: row;
124
- gap: 0;
125
- }
137
+ display: flex;
138
+ align-items: center;
139
+ flex-direction: row;
140
+ gap: 0;
141
+ }
126
142
 
127
- /* Overlap and the separating shadow are applied by the controller: slotted avatars are nested
128
- * component roots outside this style scope. */
129
- :slotted(*) {
130
- margin-inline-start: -0.625rem;
131
- flex-shrink: 0;
132
- border-radius: 999px;
133
- }
143
+ /* Overlap and the separating shadow are applied by the controller: slotted avatars are nested
144
+ * component roots outside this style scope. */
145
+ :slotted(*) {
146
+ margin-inline-start: -0.625rem;
147
+ flex-shrink: 0;
148
+ border-radius: 999px;
149
+ }
134
150
 
135
- :slotted(*:first-child) {
136
- margin-inline-start: 0;
137
- }
151
+ :slotted(*:first-child) {
152
+ margin-inline-start: 0;
153
+ }
138
154
 
139
- .overflow {
140
- margin-inline-start: -0.625rem;
141
- display: inline-flex;
142
- align-items: center;
143
- justify-content: center;
144
- inline-size: 2.5rem;
145
- block-size: 2.5rem;
146
- border-radius: 999px;
147
- border: 1px solid var(--ui-border-strong);
148
- background: var(--ui-surface-elevated);
149
- color: var(--ui-text-primary);
150
- box-shadow:
151
- var(--ui-avatar-group-overlap-shadow, -2px 0 5px -1px rgb(0 0 0 / 0.28)),
152
- 0 0 0 1px rgb(0 0 0 / 0.06);
153
- font: inherit;
154
- font-size: 0.75rem;
155
- font-weight: 600;
156
- flex-shrink: 0;
157
- }
155
+ .overflow {
156
+ margin-inline-start: -0.625rem;
157
+ display: inline-flex;
158
+ align-items: center;
159
+ justify-content: center;
160
+ inline-size: 2.5rem;
161
+ block-size: 2.5rem;
162
+ border-radius: 999px;
163
+ border: 1px solid var(--ui-border-strong);
164
+ background: var(--ui-surface-elevated);
165
+ color: var(--ui-text-primary);
166
+ box-shadow:
167
+ var(--ui-avatar-group-overlap-shadow, -2px 0 5px -1px rgb(0 0 0 / 0.28)),
168
+ 0 0 0 1px rgb(0 0 0 / 0.06);
169
+ font: inherit;
170
+ font-size: 0.75rem;
171
+ font-weight: 600;
172
+ flex-shrink: 0;
173
+ }
158
174
 
159
- .overflow[hidden] {
160
- display: none;
161
- }
175
+ .overflow[hidden] {
176
+ display: none;
177
+ }
162
178
 
163
- /* A component that sets its display still honours the hidden attribute on its root. */
164
- [data-component~="ui-avatar-group"][hidden] {
165
- display: none;
166
- }
179
+ /* A component that sets its display still honours the hidden attribute on its root. */
180
+ [data-component~="ui-avatar-group"][hidden] {
181
+ display: none;
182
+ }
167
183
  </style>
package/vue/UiBadge.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  type __VLS_Props = {
2
- tone?: "neutral" | "accent" | "info" | "success" | "warning" | "danger" | null;
3
- variant?: "solid" | "subtle" | null;
2
+ tone?: 'neutral' | 'accent' | 'info' | 'success' | 'warning' | 'danger';
3
+ variant?: 'solid' | 'subtle';
4
4
  };
5
5
  declare var __VLS_1: {};
6
6
  type __VLS_Slots = {} & {
7
7
  default?: (props: typeof __VLS_1) => any;
8
8
  };
9
9
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
10
- tone: "neutral" | "accent" | "info" | "success" | "warning" | "danger" | null;
11
- variant: "solid" | "subtle" | null;
10
+ tone: "neutral" | "accent" | "info" | "success" | "warning" | "danger";
11
+ variant: "solid" | "subtle";
12
12
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
13
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
14
14
  declare const _default: typeof __VLS_export;
package/vue/UiBadge.vue CHANGED
@@ -1,123 +1,122 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.1 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import { computed } from "vue";
4
-
5
- defineOptions({ inheritAttrs: false });
6
-
7
- const hn = {
8
- t: (v: unknown): boolean => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
9
- };
10
-
11
- const props = withDefaults(defineProps<{
12
- tone?: "neutral" | "accent" | "info" | "success" | "warning" | "danger" | null;
13
- variant?: "solid" | "subtle" | null;
14
- }>(), {
15
- tone: "neutral",
16
- variant: "subtle",
17
- });
18
-
19
- /** The resolved values the styles' :host-state() rules test. */
20
- const hostState = computed(() => (["tone","variant"] as const).flatMap((name) => {
21
- const value = read(name);
22
- const tokens: string[] = hn.t(value) ? [name] : [];
23
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
24
- return tokens;
25
- }).join(" "));
26
-
27
- function read(name: string): unknown {
28
- return (props as Record<string, unknown>)[name];
29
- }
30
-
3
+ import { computed } from 'vue'
4
+
5
+ defineOptions({ inheritAttrs: false })
6
+
7
+ const props = withDefaults(
8
+ defineProps<{
9
+ tone?: 'neutral' | 'accent' | 'info' | 'success' | 'warning' | 'danger'
10
+ variant?: 'solid' | 'subtle'
11
+ }>(),
12
+ {
13
+ tone: 'neutral',
14
+ variant: 'subtle',
15
+ },
16
+ )
17
+
18
+ /** The values the styles' :host-state() rules test. */
19
+ const hostState = computed(() =>
20
+ [
21
+ props.tone && `tone tone=${props.tone}`,
22
+ props.variant && `variant variant=${props.variant}`,
23
+ ].filter(Boolean).join(' ')
24
+ )
31
25
  </script>
32
26
 
33
27
  <template>
34
- <span data-component="ui-badge" v-bind="$attrs" :data-ui-badge-state="hostState || undefined"><slot></slot></span>
28
+ <span
29
+ data-component="ui-badge"
30
+ v-bind="$attrs"
31
+ :data-ui-badge-state="hostState || undefined"
32
+ ><slot /></span>
35
33
  </template>
36
34
 
37
35
  <style scoped>
38
36
  [data-component~="ui-badge"] {
39
- --_badge-surface: var(--ui-surface-subtle);
40
- --_badge-text: var(--ui-text-secondary);
41
- --_badge-border: color-mix(in srgb, var(--ui-text-secondary) 30%, transparent);
42
-
43
- display: inline-flex;
44
- align-items: center;
45
- justify-content: center;
46
- max-width: 100%;
47
- padding: var(--ui-badge-padding-block, var(--ui-space-0-5)) var(--ui-badge-padding-inline, var(--ui-space-2));
48
- border: 1px solid var(--ui-badge-border, var(--_badge-border));
49
- border-radius: var(--ui-radius-round);
50
- background: var(--ui-badge-surface, var(--_badge-surface));
51
- color: var(--ui-badge-text, var(--_badge-text));
52
- font-family: var(--ui-font-family-sans);
53
- font-size: var(--ui-badge-font-size, var(--ui-font-size-sm));
54
- font-weight: var(--ui-badge-font-weight, var(--ui-font-medium));
55
- line-height: var(--ui-badge-line-height, var(--ui-line-height-tight));
56
- white-space: nowrap;
57
- }
58
-
59
- [data-component~="ui-badge"][data-ui-badge-state~="tone=accent"] {
60
- --_badge-surface: var(--ui-accent-strong-surface, var(--ui-accent-solid));
61
- --_badge-border: var(--ui-accent-strong-surface, var(--ui-accent-solid));
62
- --_badge-text: var(--ui-accent-on-strong, var(--ui-text-on-accent));
63
- }
64
-
65
- [data-component~="ui-badge"][data-ui-badge-state~="tone=danger"] {
66
- --_badge-surface: var(--ui-danger-strong-surface, var(--ui-danger-solid));
67
- --_badge-border: var(--ui-danger-strong-surface, var(--ui-danger-solid));
68
- --_badge-text: var(--ui-danger-on-strong, var(--ui-text-on-accent));
69
- }
70
-
71
- [data-component~="ui-badge"][data-ui-badge-state~="tone=success"] {
72
- --_badge-surface: var(--ui-success-strong-surface, var(--ui-success-solid));
73
- --_badge-border: var(--ui-success-strong-surface, var(--ui-success-solid));
74
- --_badge-text: var(--ui-success-on-strong, var(--ui-text-on-accent));
75
- }
76
-
77
- [data-component~="ui-badge"][data-ui-badge-state~="tone=warning"] {
78
- --_badge-surface: var(--ui-warning-strong-surface, var(--ui-warning-solid));
79
- --_badge-border: var(--ui-warning-strong-surface, var(--ui-warning-solid));
80
- --_badge-text: var(--ui-warning-on-strong, var(--ui-text-on-accent));
81
- }
82
-
83
- [data-component~="ui-badge"][data-ui-badge-state~="tone=info"] {
84
- --_badge-surface: var(--ui-info-strong-surface, var(--ui-info-solid));
85
- --_badge-border: var(--ui-info-strong-surface, var(--ui-info-solid));
86
- --_badge-text: var(--ui-info-on-strong, var(--ui-text-on-accent));
87
- }
88
-
89
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=accent"] {
90
- --_badge-surface: var(--ui-accent-soft);
91
- --_badge-border: var(--ui-accent-soft);
92
- --_badge-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
93
- }
94
-
95
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=danger"] {
96
- --_badge-surface: var(--ui-danger-soft);
97
- --_badge-border: var(--ui-danger-soft);
98
- --_badge-text: var(--ui-danger-subtle-text, var(--ui-danger-solid));
99
- }
100
-
101
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=success"] {
102
- --_badge-surface: var(--ui-success-soft);
103
- --_badge-border: var(--ui-success-soft);
104
- --_badge-text: var(--ui-success-subtle-text, var(--ui-success-solid));
105
- }
106
-
107
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=warning"] {
108
- --_badge-surface: var(--ui-warning-soft);
109
- --_badge-border: var(--ui-warning-soft);
110
- --_badge-text: var(--ui-warning-subtle-text, var(--ui-warning-solid));
111
- }
112
-
113
- [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=info"] {
114
- --_badge-surface: var(--ui-info-soft);
115
- --_badge-border: var(--ui-info-soft);
116
- --_badge-text: var(--ui-info-subtle-text, var(--ui-info-solid));
117
- }
118
-
119
- /* A component that sets its display still honours the hidden attribute on its root. */
120
- [data-component~="ui-badge"][hidden] {
121
- display: none;
122
- }
37
+ --_badge-surface: var(--ui-surface-subtle);
38
+ --_badge-text: var(--ui-text-secondary);
39
+ --_badge-border: color-mix(in srgb, var(--ui-text-secondary) 30%, transparent);
40
+
41
+ display: inline-flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ max-width: 100%;
45
+ padding: var(--ui-badge-padding-block, var(--ui-space-0-5))
46
+ var(--ui-badge-padding-inline, var(--ui-space-2));
47
+ border: 1px solid var(--ui-badge-border, var(--_badge-border));
48
+ border-radius: var(--ui-radius-round);
49
+ background: var(--ui-badge-surface, var(--_badge-surface));
50
+ color: var(--ui-badge-text, var(--_badge-text));
51
+ font-family: var(--ui-font-family-sans);
52
+ font-size: var(--ui-badge-font-size, var(--ui-font-size-sm));
53
+ font-weight: var(--ui-badge-font-weight, var(--ui-font-medium));
54
+ line-height: var(--ui-badge-line-height, var(--ui-line-height-tight));
55
+ white-space: nowrap;
56
+ }
57
+
58
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=accent"] {
59
+ --_badge-surface: var(--ui-accent-strong-surface, var(--ui-accent-solid));
60
+ --_badge-border: var(--ui-accent-strong-surface, var(--ui-accent-solid));
61
+ --_badge-text: var(--ui-accent-on-strong, var(--ui-text-on-accent));
62
+ }
63
+
64
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=danger"] {
65
+ --_badge-surface: var(--ui-danger-strong-surface, var(--ui-danger-solid));
66
+ --_badge-border: var(--ui-danger-strong-surface, var(--ui-danger-solid));
67
+ --_badge-text: var(--ui-danger-on-strong, var(--ui-text-on-accent));
68
+ }
69
+
70
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=success"] {
71
+ --_badge-surface: var(--ui-success-strong-surface, var(--ui-success-solid));
72
+ --_badge-border: var(--ui-success-strong-surface, var(--ui-success-solid));
73
+ --_badge-text: var(--ui-success-on-strong, var(--ui-text-on-accent));
74
+ }
75
+
76
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=warning"] {
77
+ --_badge-surface: var(--ui-warning-strong-surface, var(--ui-warning-solid));
78
+ --_badge-border: var(--ui-warning-strong-surface, var(--ui-warning-solid));
79
+ --_badge-text: var(--ui-warning-on-strong, var(--ui-text-on-accent));
80
+ }
81
+
82
+ [data-component~="ui-badge"][data-ui-badge-state~="tone=info"] {
83
+ --_badge-surface: var(--ui-info-strong-surface, var(--ui-info-solid));
84
+ --_badge-border: var(--ui-info-strong-surface, var(--ui-info-solid));
85
+ --_badge-text: var(--ui-info-on-strong, var(--ui-text-on-accent));
86
+ }
87
+
88
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=accent"] {
89
+ --_badge-surface: var(--ui-accent-soft);
90
+ --_badge-border: var(--ui-accent-soft);
91
+ --_badge-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
92
+ }
93
+
94
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=danger"] {
95
+ --_badge-surface: var(--ui-danger-soft);
96
+ --_badge-border: var(--ui-danger-soft);
97
+ --_badge-text: var(--ui-danger-subtle-text, var(--ui-danger-solid));
98
+ }
99
+
100
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=success"] {
101
+ --_badge-surface: var(--ui-success-soft);
102
+ --_badge-border: var(--ui-success-soft);
103
+ --_badge-text: var(--ui-success-subtle-text, var(--ui-success-solid));
104
+ }
105
+
106
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=warning"] {
107
+ --_badge-surface: var(--ui-warning-soft);
108
+ --_badge-border: var(--ui-warning-soft);
109
+ --_badge-text: var(--ui-warning-subtle-text, var(--ui-warning-solid));
110
+ }
111
+
112
+ [data-component~="ui-badge"][data-ui-badge-state~="variant=subtle"][data-ui-badge-state~="tone=info"] {
113
+ --_badge-surface: var(--ui-info-soft);
114
+ --_badge-border: var(--ui-info-soft);
115
+ --_badge-text: var(--ui-info-subtle-text, var(--ui-info-solid));
116
+ }
117
+
118
+ /* A component that sets its display still honours the hidden attribute on its root. */
119
+ [data-component~="ui-badge"][hidden] {
120
+ display: none;
121
+ }
123
122
  </style>
package/vue/UiButton.d.ts CHANGED
@@ -1,16 +1,20 @@
1
1
  type __VLS_Props = {
2
- disabled?: boolean | null;
3
- size?: "sm" | "md" | "lg" | null;
4
- variant?: "outline" | "solid" | "danger" | "ghost" | "link" | null;
2
+ align?: 'center' | 'start';
3
+ disabled?: boolean;
4
+ size?: 'sm' | 'md' | 'lg';
5
+ stretch?: boolean;
6
+ variant?: 'outline' | 'solid' | 'danger' | 'ghost' | 'link';
5
7
  };
6
8
  declare var __VLS_1: {};
7
9
  type __VLS_Slots = {} & {
8
10
  default?: (props: typeof __VLS_1) => any;
9
11
  };
10
12
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
11
- variant: "outline" | "solid" | "danger" | "ghost" | "link" | null;
12
- disabled: boolean | null;
13
- size: "sm" | "md" | "lg" | null;
13
+ variant: "outline" | "solid" | "danger" | "ghost" | "link";
14
+ align: "center" | "start";
15
+ disabled: boolean;
16
+ size: "sm" | "md" | "lg";
17
+ stretch: boolean;
14
18
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
19
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
20
  declare const _default: typeof __VLS_export;