@threadlabs/looma 0.14.7 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/components/shared/icons.js +5 -0
  2. package/components/shared/menu-navigation.js +49 -0
  3. package/components/shared/overlay.js +33 -60
  4. package/components/ui-avatar/ui-avatar.html +19 -2
  5. package/components/ui-avatar/ui-avatar.js +7 -1
  6. package/components/ui-avatar-group/ui-avatar-group.html +8 -3
  7. package/components/ui-avatar-group/ui-avatar-group.js +6 -2
  8. package/components/ui-badge/ui-badge.html +70 -4
  9. package/components/ui-button/ui-button.html +21 -5
  10. package/components/ui-button/ui-button.js +10 -0
  11. package/components/ui-callout/ui-callout.html +13 -5
  12. package/components/ui-checkbox/ui-checkbox.html +11 -0
  13. package/components/ui-combobox/ui-combobox.html +50 -10
  14. package/components/ui-combobox/ui-combobox.js +11 -8
  15. package/components/ui-context-menu/ui-context-menu.html +33 -5
  16. package/components/ui-context-menu/ui-context-menu.js +26 -17
  17. package/components/ui-dialog/ui-dialog.html +51 -8
  18. package/components/ui-dialog/ui-dialog.js +28 -7
  19. package/components/ui-disclosure/ui-disclosure.html +14 -5
  20. package/components/ui-disclosure/ui-disclosure.js +51 -4
  21. package/components/ui-editable/ui-editable.html +17 -3
  22. package/components/ui-editable/ui-editable.js +7 -0
  23. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +48 -14
  24. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.js +40 -6
  25. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +22 -9
  26. package/components/ui-editor-mention-menu/ui-editor-mention-menu.js +33 -11
  27. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +67 -0
  28. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +33 -30
  29. package/components/ui-editor-slash-menu/ui-editor-slash-menu.js +42 -8
  30. package/components/ui-editor-slash-menu-group/ui-editor-slash-menu-group.html +31 -0
  31. package/components/ui-editor-slash-menu-item/ui-editor-slash-menu-item.html +75 -0
  32. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +16 -5
  33. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.js +10 -2
  34. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +5 -5
  35. package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +5 -2
  36. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +14 -4
  37. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.js +2 -2
  38. package/components/ui-editor-toolbar/ui-editor-toolbar.html +1 -1
  39. package/components/ui-editor-toolbar/ui-editor-toolbar.js +46 -0
  40. package/components/ui-floating-action-button/ui-floating-action-button.html +1 -1
  41. package/components/ui-form-field/ui-form-field.html +16 -3
  42. package/components/ui-form-field/ui-form-field.js +1 -1
  43. package/components/ui-grid/ui-grid.html +17 -2
  44. package/components/ui-icon/ui-icon.html +5 -0
  45. package/components/ui-icon-button/ui-icon-button.html +25 -6
  46. package/components/ui-icon-button/ui-icon-button.js +11 -1
  47. package/components/ui-input/ui-input.html +3 -3
  48. package/components/ui-input-group/ui-input-group.html +18 -4
  49. package/components/ui-listbox/ui-listbox.html +81 -0
  50. package/components/ui-listbox/ui-listbox.js +27 -0
  51. package/components/ui-menu/ui-menu.html +33 -5
  52. package/components/ui-menu/ui-menu.js +18 -12
  53. package/components/ui-menu-group/ui-menu-group.html +27 -0
  54. package/components/ui-menu-item/ui-menu-item.html +80 -8
  55. package/components/ui-menu-item/ui-menu-item.js +47 -0
  56. package/components/ui-popover/ui-popover.html +33 -5
  57. package/components/ui-popover/ui-popover.js +9 -1
  58. package/components/ui-radio-group/ui-radio-group.html +13 -1
  59. package/components/ui-search-shell/ui-search-shell.html +6 -6
  60. package/components/ui-search-shell/ui-search-shell.js +21 -5
  61. package/components/ui-select/ui-select.html +14 -4
  62. package/components/ui-switch/ui-switch.html +2 -2
  63. package/components/ui-switcher/ui-switcher.html +8 -1
  64. package/components/ui-switcher/ui-switcher.js +15 -0
  65. package/components/ui-tabs/ui-tabs.html +17 -12
  66. package/components/ui-tabs/ui-tabs.js +43 -7
  67. package/components/ui-textarea/ui-textarea.html +28 -5
  68. package/components/ui-toast/ui-toast.html +88 -0
  69. package/components/ui-toast/ui-toast.js +68 -0
  70. package/components/ui-toast-region/ui-toast-region.html +102 -19
  71. package/components/ui-toast-region/ui-toast-region.js +10 -18
  72. package/components/ui-tooltip/ui-tooltip.html +51 -7
  73. package/components/ui-tooltip/ui-tooltip.js +29 -3
  74. package/components/ui-tree/ui-tree.html +12 -0
  75. package/components/ui-tree/ui-tree.js +191 -12
  76. package/components/ui-tree-item/ui-tree-item.html +87 -8
  77. package/components/ui-tree-item/ui-tree-item.js +3 -1
  78. package/dist/index.js +38 -32
  79. package/editor/chunks/extensions.js +82 -2
  80. package/editor/extensions/table-commands.d.ts +8 -0
  81. package/editor/icons.d.ts +5 -0
  82. package/editor/index.js +7 -2
  83. package/editor/insert-table-grid.d.ts +1 -1
  84. package/editor/mention-menu.d.ts +2 -0
  85. package/editor/slash-menu.d.ts +3 -0
  86. package/editor/table-context-menu.d.ts +1 -1
  87. package/editor/table-overlay.d.ts +2 -2
  88. package/package.json +1 -1
  89. package/styles/ui-avatar-group.css +1 -2
  90. package/styles/ui-avatar.css +11 -1
  91. package/styles/ui-badge.css +73 -1
  92. package/styles/ui-button.css +9 -1
  93. package/styles/ui-callout.css +1 -1
  94. package/styles/ui-checkbox.css +9 -0
  95. package/styles/ui-combobox.css +38 -7
  96. package/styles/ui-context-menu.css +32 -4
  97. package/styles/ui-dialog.css +42 -5
  98. package/styles/ui-editor-insert-table-grid.css +48 -11
  99. package/styles/ui-editor-mention-menu-item.css +57 -0
  100. package/styles/ui-editor-mention-menu.css +11 -1
  101. package/styles/ui-editor-slash-menu-group.css +21 -0
  102. package/styles/ui-editor-slash-menu-item.css +62 -0
  103. package/styles/ui-editor-slash-menu.css +10 -21
  104. package/styles/ui-editor-table-context-menu.css +1 -1
  105. package/styles/ui-floating-action-button.css +1 -1
  106. package/styles/ui-form-field.css +14 -1
  107. package/styles/ui-grid.css +14 -1
  108. package/styles/ui-icon-button.css +17 -5
  109. package/styles/ui-input-group.css +18 -4
  110. package/styles/ui-input.css +3 -3
  111. package/styles/ui-listbox.css +69 -0
  112. package/styles/ui-menu-group.css +19 -0
  113. package/styles/ui-menu-item.css +48 -9
  114. package/styles/ui-menu.css +32 -4
  115. package/styles/ui-popover.css +28 -4
  116. package/styles/ui-radio-group.css +9 -0
  117. package/styles/ui-search-shell.css +5 -5
  118. package/styles/ui-select.css +14 -4
  119. package/styles/ui-switch.css +2 -2
  120. package/styles/ui-switcher.css +4 -0
  121. package/styles/ui-textarea.css +27 -4
  122. package/styles/ui-toast-region.css +88 -4
  123. package/styles/ui-toast.css +74 -0
  124. package/styles/ui-tooltip.css +46 -6
  125. package/styles/ui-tree-item.css +72 -4
  126. package/styles/ui-tree.css +8 -0
  127. package/tokens.css +3 -0
  128. package/vanilla/UiAvatar.d.ts +2 -0
  129. package/vanilla/UiAvatar.js +8 -1
  130. package/vanilla/UiAvatarGroup.d.ts +2 -0
  131. package/vanilla/UiAvatarGroup.js +1 -1
  132. package/vanilla/UiBadge.d.ts +1 -1
  133. package/vanilla/UiBadge.js +1 -1
  134. package/vanilla/UiButton.d.ts +1 -0
  135. package/vanilla/UiButton.js +22 -6
  136. package/vanilla/UiCallout.d.ts +1 -1
  137. package/vanilla/UiCallout.js +1 -1
  138. package/vanilla/UiCheckbox.d.ts +1 -0
  139. package/vanilla/UiCheckbox.js +12 -9
  140. package/vanilla/UiCombobox.d.ts +4 -0
  141. package/vanilla/UiCombobox.js +30 -15
  142. package/vanilla/UiContextMenu.d.ts +1 -1
  143. package/vanilla/UiContextMenu.js +1 -1
  144. package/vanilla/UiDialog.d.ts +5 -2
  145. package/vanilla/UiDialog.js +1 -1
  146. package/vanilla/UiDisclosure.d.ts +2 -0
  147. package/vanilla/UiDisclosure.js +32 -18
  148. package/vanilla/UiEditable.d.ts +5 -0
  149. package/vanilla/UiEditable.js +7 -3
  150. package/vanilla/UiEditorInsertTableGrid.js +1 -6
  151. package/vanilla/UiEditorMentionMenu.d.ts +4 -2
  152. package/vanilla/UiEditorMentionMenu.js +49 -31
  153. package/vanilla/UiEditorMentionMenuItem.d.ts +16 -0
  154. package/vanilla/UiEditorMentionMenuItem.js +56 -0
  155. package/vanilla/UiEditorSlashMenu.d.ts +4 -3
  156. package/vanilla/UiEditorSlashMenu.js +59 -46
  157. package/vanilla/UiEditorSlashMenuGroup.d.ts +14 -0
  158. package/vanilla/UiEditorSlashMenuGroup.js +48 -0
  159. package/vanilla/UiEditorSlashMenuItem.d.ts +18 -0
  160. package/vanilla/UiEditorSlashMenuItem.js +57 -0
  161. package/vanilla/UiEditorTableContextMenu.d.ts +5 -2
  162. package/vanilla/UiEditorTableContextMenu.js +1 -2
  163. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  164. package/vanilla/UiEditorTableOverlay.js +5 -5
  165. package/vanilla/UiEditorTableToolbar.d.ts +4 -2
  166. package/vanilla/UiEditorTableToolbar.js +1 -2
  167. package/vanilla/UiEditorToolbar.js +2 -0
  168. package/vanilla/UiGrid.d.ts +1 -0
  169. package/vanilla/UiGrid.js +8 -7
  170. package/vanilla/UiIcon.js +1 -1
  171. package/vanilla/UiIconButton.d.ts +1 -0
  172. package/vanilla/UiIconButton.js +11 -2
  173. package/vanilla/UiListbox.d.ts +20 -0
  174. package/vanilla/UiListbox.js +45 -0
  175. package/vanilla/UiMenu.d.ts +1 -1
  176. package/vanilla/UiMenu.js +1 -1
  177. package/vanilla/UiMenuGroup.d.ts +14 -0
  178. package/vanilla/UiMenuGroup.js +35 -0
  179. package/vanilla/UiMenuItem.d.ts +5 -1
  180. package/vanilla/UiMenuItem.js +91 -30
  181. package/vanilla/UiPopover.d.ts +1 -1
  182. package/vanilla/UiPopover.js +1 -1
  183. package/vanilla/UiRadioGroup.d.ts +1 -0
  184. package/vanilla/UiRadioGroup.js +6 -3
  185. package/vanilla/UiSwitcher.d.ts +1 -0
  186. package/vanilla/UiSwitcher.js +7 -9
  187. package/vanilla/UiTabs.d.ts +1 -0
  188. package/vanilla/UiTabs.js +9 -1
  189. package/vanilla/UiTextarea.d.ts +1 -0
  190. package/vanilla/UiTextarea.js +4 -1
  191. package/vanilla/UiToast.d.ts +16 -0
  192. package/vanilla/UiToast.js +53 -0
  193. package/vanilla/UiToastRegion.d.ts +1 -4
  194. package/vanilla/UiToastRegion.js +3 -11
  195. package/vanilla/UiTooltip.d.ts +1 -1
  196. package/vanilla/UiTooltip.js +1 -1
  197. package/vanilla/UiTree.d.ts +2 -0
  198. package/vanilla/UiTree.js +1 -1
  199. package/vanilla/UiTreeItem.d.ts +1 -0
  200. package/vanilla/UiTreeItem.js +45 -31
  201. package/vanilla/index.js +6 -0
  202. package/vue/UiAvatar.d.ts +4 -0
  203. package/vue/UiAvatar.vue +23 -3
  204. package/vue/UiAvatarGroup.d.ts +3 -0
  205. package/vue/UiAvatarGroup.vue +7 -4
  206. package/vue/UiBadge.d.ts +2 -2
  207. package/vue/UiBadge.vue +74 -2
  208. package/vue/UiButton.d.ts +5 -3
  209. package/vue/UiButton.vue +41 -7
  210. package/vue/UiCallout.d.ts +2 -2
  211. package/vue/UiCallout.vue +3 -2
  212. package/vue/UiCheckbox.d.ts +2 -0
  213. package/vue/UiCheckbox.vue +16 -0
  214. package/vue/UiCombobox.d.ts +13 -3
  215. package/vue/UiCombobox.vue +62 -11
  216. package/vue/UiContextMenu.d.ts +2 -0
  217. package/vue/UiContextMenu.vue +47 -6
  218. package/vue/UiDialog.d.ts +18 -4
  219. package/vue/UiDialog.vue +86 -11
  220. package/vue/UiDisclosure.d.ts +8 -2
  221. package/vue/UiDisclosure.vue +38 -14
  222. package/vue/UiEditable.d.ts +10 -0
  223. package/vue/UiEditable.vue +14 -2
  224. package/vue/UiEditorInsertTableGrid.vue +52 -15
  225. package/vue/UiEditorMentionMenu.d.ts +24 -2
  226. package/vue/UiEditorMentionMenu.vue +27 -11
  227. package/vue/UiEditorMentionMenuItem.d.ts +24 -0
  228. package/vue/UiEditorMentionMenuItem.js +2 -0
  229. package/vue/UiEditorMentionMenuItem.vue +88 -0
  230. package/vue/UiEditorSlashMenu.d.ts +24 -1
  231. package/vue/UiEditorSlashMenu.vue +33 -33
  232. package/vue/UiEditorSlashMenuGroup.d.ts +18 -0
  233. package/vue/UiEditorSlashMenuGroup.js +2 -0
  234. package/vue/UiEditorSlashMenuGroup.vue +43 -0
  235. package/vue/UiEditorSlashMenuItem.d.ts +26 -0
  236. package/vue/UiEditorSlashMenuItem.js +2 -0
  237. package/vue/UiEditorSlashMenuItem.vue +101 -0
  238. package/vue/UiEditorTableContextMenu.d.ts +9 -3
  239. package/vue/UiEditorTableContextMenu.vue +53 -3
  240. package/vue/UiEditorTableOverlay.d.ts +2 -2
  241. package/vue/UiEditorTableOverlay.vue +8 -6
  242. package/vue/UiEditorTableToolbar.d.ts +7 -3
  243. package/vue/UiEditorTableToolbar.vue +50 -2
  244. package/vue/UiEditorToolbar.vue +14 -1
  245. package/vue/UiFloatingActionButton.vue +1 -1
  246. package/vue/UiFormField.vue +28 -3
  247. package/vue/UiGrid.d.ts +1 -0
  248. package/vue/UiGrid.vue +26 -2
  249. package/vue/UiIcon.vue +16 -0
  250. package/vue/UiIconButton.d.ts +5 -3
  251. package/vue/UiIconButton.vue +40 -6
  252. package/vue/UiInput.vue +10 -3
  253. package/vue/UiInputGroup.vue +32 -11
  254. package/vue/UiListbox.d.ts +33 -0
  255. package/vue/UiListbox.js +2 -0
  256. package/vue/UiListbox.vue +131 -0
  257. package/vue/UiMenu.d.ts +2 -0
  258. package/vue/UiMenu.vue +43 -6
  259. package/vue/UiMenuGroup.d.ts +18 -0
  260. package/vue/UiMenuGroup.js +2 -0
  261. package/vue/UiMenuGroup.vue +39 -0
  262. package/vue/UiMenuItem.d.ts +34 -2
  263. package/vue/UiMenuItem.vue +145 -9
  264. package/vue/UiPopover.d.ts +2 -2
  265. package/vue/UiPopover.vue +44 -5
  266. package/vue/UiRadioGroup.d.ts +2 -0
  267. package/vue/UiRadioGroup.vue +17 -0
  268. package/vue/UiSearchShell.vue +12 -5
  269. package/vue/UiSelect.vue +18 -4
  270. package/vue/UiSwitch.vue +2 -2
  271. package/vue/UiSwitcher.d.ts +1 -0
  272. package/vue/UiSwitcher.vue +22 -1
  273. package/vue/UiTabs.d.ts +6 -2
  274. package/vue/UiTabs.vue +14 -12
  275. package/vue/UiTextarea.d.ts +2 -0
  276. package/vue/UiTextarea.vue +32 -4
  277. package/vue/UiToast.d.ts +34 -0
  278. package/vue/UiToast.js +2 -0
  279. package/vue/UiToast.vue +173 -0
  280. package/vue/UiToastRegion.d.ts +2 -18
  281. package/vue/UiToastRegion.vue +123 -48
  282. package/vue/UiTooltip.d.ts +2 -2
  283. package/vue/UiTooltip.vue +67 -12
  284. package/vue/UiTree.d.ts +10 -0
  285. package/vue/UiTree.vue +27 -0
  286. package/vue/UiTreeItem.d.ts +2 -0
  287. package/vue/UiTreeItem.vue +96 -4
  288. package/vue/chunks/UiAvatar.js +19 -5
  289. package/vue/chunks/UiAvatarGroup.js +10 -4
  290. package/vue/chunks/UiBadge.js +1 -1
  291. package/vue/chunks/UiButton.js +58 -11
  292. package/vue/chunks/UiCallout.js +2 -2
  293. package/vue/chunks/UiCheckbox.js +12 -2
  294. package/vue/chunks/UiCombobox.js +30 -13
  295. package/vue/chunks/UiContextMenu.js +6 -2
  296. package/vue/chunks/UiDialog.js +25 -8
  297. package/vue/chunks/UiDisclosure.js +36 -12
  298. package/vue/chunks/UiEditable.js +22 -8
  299. package/vue/chunks/UiEditorInsertTableGrid.js +11 -14
  300. package/vue/chunks/UiEditorMentionMenu.js +30 -19
  301. package/vue/chunks/UiEditorMentionMenuItem.js +36 -0
  302. package/vue/chunks/UiEditorSlashMenu.js +33 -35
  303. package/vue/chunks/UiEditorSlashMenuGroup.js +26 -0
  304. package/vue/chunks/UiEditorSlashMenuItem.js +51 -0
  305. package/vue/chunks/UiEditorTableContextMenu.js +39 -5
  306. package/vue/chunks/UiEditorTableOverlay.js +6 -6
  307. package/vue/chunks/UiEditorTableToolbar.js +37 -4
  308. package/vue/chunks/UiEditorToolbar.js +18 -4
  309. package/vue/chunks/UiFloatingActionButton.js +1 -1
  310. package/vue/chunks/UiFormField.js +13 -9
  311. package/vue/chunks/UiGrid.js +6 -2
  312. package/vue/chunks/UiIcon.js +40 -2
  313. package/vue/chunks/UiIconButton.js +35 -4
  314. package/vue/chunks/UiInput.js +1 -1
  315. package/vue/chunks/UiInputGroup.js +1 -1
  316. package/vue/chunks/UiListbox.js +70 -0
  317. package/vue/chunks/UiMenu.js +6 -2
  318. package/vue/chunks/UiMenuGroup.js +25 -0
  319. package/vue/chunks/UiMenuItem.js +128 -7
  320. package/vue/chunks/UiPopover.js +1 -1
  321. package/vue/chunks/UiRadioGroup.js +8 -2
  322. package/vue/chunks/UiSearchShell.js +1 -1
  323. package/vue/chunks/UiSelect.js +1 -1
  324. package/vue/chunks/UiSwitch.js +1 -1
  325. package/vue/chunks/UiSwitcher.js +20 -3
  326. package/vue/chunks/UiTabs.js +4 -3
  327. package/vue/chunks/UiTextarea.js +7 -2
  328. package/vue/chunks/UiToast.js +81 -0
  329. package/vue/chunks/UiToastRegion.js +25 -49
  330. package/vue/chunks/UiTooltip.js +3 -7
  331. package/vue/chunks/UiTree.js +8 -4
  332. package/vue/chunks/UiTreeItem.js +28 -10
  333. package/vue/components.css +1840 -851
  334. package/vue/editor/index.js +263 -2
  335. package/vue/index.d.ts +6 -0
  336. package/vue/index.js +9 -3
@@ -17,6 +17,7 @@ const props = withDefaults(
17
17
  expanded?: boolean
18
18
  itemId?: string
19
19
  label?: string
20
+ lazy?: boolean
20
21
  marquee?: boolean
21
22
  selected?: boolean
22
23
  sortable?: boolean
@@ -31,6 +32,7 @@ const props = withDefaults(
31
32
  expanded: false,
32
33
  itemId: '',
33
34
  label: '',
35
+ lazy: false,
34
36
  marquee: false,
35
37
  selected: false,
36
38
  sortable: false,
@@ -158,6 +160,14 @@ useComponentHost(controllerModule.default, {
158
160
  >
159
161
  <span class="disclosure-icon" aria-hidden="true"></span>
160
162
  </button>
163
+ <label class="selection-hit"><input
164
+ class="selection-checkbox"
165
+ type="checkbox"
166
+ tabindex="-1"
167
+ :checked="selected"
168
+ :disabled="disabled"
169
+ :aria-label="`Select ${label}`"
170
+ ></label>
161
171
  <span class="leading" ref="leading"><slot name="leading" /></span>
162
172
  <span class="label" ref="label"><span class="label-text" ref="labelText"><slot name="label">{{
163
173
  label
@@ -289,6 +299,35 @@ useComponentHost(controllerModule.default, {
289
299
  display: none;
290
300
  }
291
301
 
302
+ .selection-hit {
303
+ display: none;
304
+ grid-column: 2;
305
+ grid-row: 1;
306
+ place-items: center;
307
+ inline-size: 1.25rem;
308
+ block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
309
+ cursor: pointer;
310
+ }
311
+ .selection-checkbox {
312
+ inline-size: 1rem;
313
+ block-size: 1rem;
314
+ margin: 0;
315
+ accent-color: var(--ui-accent-solid);
316
+ }
317
+
318
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row {
319
+ grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr);
320
+ }
321
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .selection-hit {
322
+ display: grid;
323
+ }
324
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .leading {
325
+ grid-column: 3;
326
+ }
327
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .label {
328
+ grid-column: 4;
329
+ }
330
+
292
331
  .disclosure:hover {
293
332
  color: var(--ui-text-primary);
294
333
  background: var(--ui-surface-elevated);
@@ -564,7 +603,7 @@ useComponentHost(controllerModule.default, {
564
603
  inset-inline: 1px;
565
604
  display: none;
566
605
  block-size: 2px;
567
- border-radius: 999px;
606
+ border-radius: var(--ui-radius-round);
568
607
  background: var(--_ui-tree-drop-color, var(--ui-accent-solid));
569
608
  pointer-events: none;
570
609
  }
@@ -577,7 +616,7 @@ useComponentHost(controllerModule.default, {
577
616
  inline-size: 7px;
578
617
  block-size: 7px;
579
618
  border: 2px solid var(--_ui-tree-drop-color, var(--ui-accent-solid));
580
- border-radius: 999px;
619
+ border-radius: var(--ui-radius-round);
581
620
  background: var(--ui-surface-elevated);
582
621
  transform: translateY(-50%);
583
622
  }
@@ -607,8 +646,61 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] {
607
646
  --_tree-row-min-height: 44px;
608
647
  }
609
648
 
610
- html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-handle {
611
- display: none;
649
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .row {
650
+ grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr);
651
+ }
652
+
653
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-handle,
654
+ html[data-ui-input-modality="touch"]
655
+ [data-component~="ui-tree-item"][data-ui-tree-item-state~="isContainer"]
656
+ > .row
657
+ > .drag-handle {
658
+ position: relative;
659
+ grid-column: 1;
660
+ grid-row: 1;
661
+ inset: auto;
662
+ inline-size: 44px;
663
+ block-size: 44px;
664
+ padding: 14px;
665
+ opacity: 1;
666
+ transform: none;
667
+ cursor: pointer;
668
+ }
669
+
670
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .disclosure {
671
+ grid-column: 2;
672
+ }
673
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .leading {
674
+ grid-column: 3;
675
+ }
676
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .label {
677
+ grid-column: 4;
678
+ }
679
+
680
+ html[data-ui-input-modality="touch"]
681
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"]
682
+ > .row {
683
+ grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr);
684
+ }
685
+ html[data-ui-input-modality="touch"]
686
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"]
687
+ > .row
688
+ > .selection-hit {
689
+ grid-column: 3;
690
+ inline-size: 44px;
691
+ block-size: 44px;
692
+ }
693
+ html[data-ui-input-modality="touch"]
694
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"]
695
+ > .row
696
+ > .leading {
697
+ grid-column: 4;
698
+ }
699
+ html[data-ui-input-modality="touch"]
700
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"]
701
+ > .row
702
+ > .label {
703
+ grid-column: 5;
612
704
  }
613
705
 
614
706
  @media (prefers-reduced-motion: reduce) {
@@ -1,11 +1,14 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
2
  import { n as useComponentHost, t as createDispatch } from "./host.js";
3
- import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, openBlock, ref, renderSlot, toDisplayString, useTemplateRef } from "vue";
3
+ import { t as UiIcon_default } from "./UiIcon.js";
4
+ import { computed, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, openBlock, ref, renderSlot, toDisplayString, useTemplateRef } from "vue";
4
5
  import * as controllerModule from "@threadlabs/looma/components/ui-avatar/ui-avatar.js";
5
6
  //#region .build/vue/UiAvatar.vue?vue&type=script&setup=true&lang.ts
6
7
  var _hoisted_1 = ["data-ui-avatar-state"];
7
8
  var _hoisted_2 = ["src", "hidden"];
8
9
  var _hoisted_3 = ["aria-hidden", "hidden"];
10
+ var _hoisted_4 = ["hidden"];
11
+ var _hoisted_5 = ["hidden"];
9
12
  //#endregion
10
13
  //#region .build/vue/UiAvatar.vue
11
14
  var UiAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -17,8 +20,13 @@ var UiAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
17
20
  default: false
18
21
  },
19
22
  alt: { default: "" },
23
+ decorative: {
24
+ type: Boolean,
25
+ default: false
26
+ },
20
27
  fallback: { default: "" },
21
28
  name: { default: "" },
29
+ shape: { default: "circle" },
22
30
  size: { default: "md" },
23
31
  src: {}
24
32
  },
@@ -29,8 +37,13 @@ var UiAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
29
37
  const hasImage = ref(false);
30
38
  const hasAuthoredImage = ref(false);
31
39
  const initials = ref("?");
40
+ const showGlyph = ref(false);
32
41
  /** The values the styles' :host-state() rules test. */
33
- const hostState = computed(() => [props.size && `size size=${props.size}`, props.active && "active"].filter(Boolean).join(" "));
42
+ const hostState = computed(() => [
43
+ props.size && `size size=${props.size}`,
44
+ props.shape && `shape shape=${props.shape}`,
45
+ props.active && "active"
46
+ ].filter(Boolean).join(" "));
34
47
  const dispatch = createDispatch(root);
35
48
  useComponentHost(controllerModule.default, {
36
49
  root,
@@ -40,7 +53,8 @@ var UiAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
40
53
  state: {
41
54
  hasImage,
42
55
  hasAuthoredImage,
43
- initials
56
+ initials,
57
+ showGlyph
44
58
  }
45
59
  });
46
60
  return (_ctx, _cache) => {
@@ -62,10 +76,10 @@ var UiAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
62
76
  class: "fallback",
63
77
  "aria-hidden": hasImage.value,
64
78
  hidden: hasImage.value
65
- }, toDisplayString(initials.value), 9, _hoisted_3)
79
+ }, [createElementVNode("span", { hidden: showGlyph.value }, toDisplayString(initials.value), 9, _hoisted_4), createElementVNode("span", { hidden: !showGlyph.value }, [createVNode(UiIcon_default, { name: "user-round" })], 8, _hoisted_5)], 8, _hoisted_3)
66
80
  ], 16, _hoisted_1);
67
81
  };
68
82
  }
69
- }), [["__scopeId", "data-v-43a3ae30"]]);
83
+ }), [["__scopeId", "data-v-f9a69ac3"]]);
70
84
  //#endregion
71
85
  export { UiAvatar_default as t };
@@ -13,13 +13,16 @@ var UiAvatarGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
13
13
  props: {
14
14
  label: { default: "People" },
15
15
  max: { default: 5 },
16
- size: { default: "md" }
16
+ overflowLabel: { default: "{count} more" },
17
+ size: { default: "md" },
18
+ total: {}
17
19
  },
18
20
  setup(__props) {
19
21
  const props = __props;
20
22
  const root = ref(null);
21
23
  const overflowElement = useTemplateRef("overflow");
22
24
  const overflowCount = ref(0);
25
+ const overflowAnnouncement = ref("");
23
26
  /** The values the styles' :host-state() rules test. */
24
27
  const hostState = computed(() => [props.size && `size size=${props.size}`].filter(Boolean).join(" "));
25
28
  const dispatch = createDispatch(root);
@@ -28,7 +31,10 @@ var UiAvatarGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
28
31
  dispatch,
29
32
  props,
30
33
  refs: { overflow: overflowElement },
31
- state: { overflowCount }
34
+ state: {
35
+ overflowCount,
36
+ overflowAnnouncement
37
+ }
32
38
  });
33
39
  return (_ctx, _cache) => {
34
40
  return openBlock(), createElementBlock("div", mergeProps({
@@ -43,11 +49,11 @@ var UiAvatarGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
43
49
  class: "overflow",
44
50
  role: "img",
45
51
  hidden: !overflowCount.value,
46
- "aria-label": `${overflowCount.value} more`,
52
+ "aria-label": overflowAnnouncement.value,
47
53
  ref: "overflow"
48
54
  }, toDisplayString(`+${overflowCount.value}`), 9, _hoisted_2)], 16, _hoisted_1);
49
55
  };
50
56
  }
51
- }), [["__scopeId", "data-v-ff71c721"]]);
57
+ }), [["__scopeId", "data-v-c8469808"]]);
52
58
  //#endregion
53
59
  export { UiAvatarGroup_default as t };
@@ -24,6 +24,6 @@ var UiBadge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
24
24
  return openBlock(), createElementBlock("span", mergeProps({ "data-component": "ui-badge" }, _ctx.$attrs, { "data-ui-badge-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
25
25
  };
26
26
  }
27
- }), [["__scopeId", "data-v-4c8e66a3"]]);
27
+ }), [["__scopeId", "data-v-8ef5da57"]]);
28
28
  //#endregion
29
29
  export { UiBadge_default as t };
@@ -1,16 +1,23 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createElementBlock, defineComponent, mergeProps, openBlock, renderSlot } from "vue";
2
+ import { n as useComponentHost, t as createDispatch } from "./host.js";
3
+ import { t as UiSpinner_default } from "./UiSpinner.js";
4
+ import { computed, createBlock, createCommentVNode, createElementBlock, defineComponent, mergeProps, openBlock, ref, renderSlot } from "vue";
5
+ import * as controllerModule from "@threadlabs/looma/components/ui-button/ui-button.js";
3
6
  //#region .build/vue/UiButton.vue?vue&type=script&setup=true&lang.ts
4
7
  var _hoisted_1 = [
5
8
  "href",
6
9
  "target",
7
10
  "rel",
8
11
  "aria-disabled",
12
+ "aria-busy",
13
+ "tabindex",
9
14
  "data-ui-button-state"
10
15
  ];
11
16
  var _hoisted_2 = [
12
17
  "type",
13
18
  "disabled",
19
+ "aria-disabled",
20
+ "aria-busy",
14
21
  "data-ui-button-state"
15
22
  ];
16
23
  //#endregion
@@ -26,6 +33,10 @@ var UiButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
26
33
  default: false
27
34
  },
28
35
  href: {},
36
+ pending: {
37
+ type: Boolean,
38
+ default: false
39
+ },
29
40
  rel: {},
30
41
  size: { default: "md" },
31
42
  stretch: {
@@ -39,14 +50,22 @@ var UiButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
39
50
  },
40
51
  setup(__props) {
41
52
  const props = __props;
53
+ const root = ref(null);
42
54
  /** The values the styles' :host-state() rules test. */
43
55
  const hostState = computed(() => [
44
56
  props.align && `align align=${props.align}`,
45
57
  props.stretch && "stretch",
46
58
  props.size && `size size=${props.size}`,
47
59
  props.variant && `variant variant=${props.variant}`,
48
- props.tone && `tone tone=${props.tone}`
60
+ props.tone && `tone tone=${props.tone}`,
61
+ props.pending && "pending"
49
62
  ].filter(Boolean).join(" "));
63
+ const dispatch = createDispatch(root);
64
+ useComponentHost(controllerModule.default, {
65
+ root,
66
+ dispatch,
67
+ props
68
+ });
50
69
  function text(value) {
51
70
  if (Array.isArray(value)) return value.map(text).join(" ");
52
71
  return value === null || value === void 0 || typeof value === "object" ? "" : String(value);
@@ -63,30 +82,58 @@ var UiButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
63
82
  href: attribute({
64
83
  true: null,
65
84
  false: __props.href
66
- }[`${__props.disabled}`]),
85
+ }[`${__props.disabled || __props.pending}`]),
67
86
  target: __props.target,
68
87
  rel: __props.rel,
69
88
  "aria-disabled": typeof {
70
89
  true: "true",
71
90
  false: null
72
- }[`${Boolean(__props.disabled && __props.href)}`] === "boolean" ? String({
91
+ }[`${__props.disabled || __props.pending}`] === "boolean" ? String({
73
92
  true: "true",
74
93
  false: null
75
- }[`${Boolean(__props.disabled && __props.href)}`]) : attribute({
94
+ }[`${__props.disabled || __props.pending}`]) : attribute({
76
95
  true: "true",
77
96
  false: null
78
- }[`${Boolean(__props.disabled && __props.href)}`]),
79
- "data-ui-button-state": hostState.value || void 0
80
- }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1)) : (openBlock(), createElementBlock("button", mergeProps({
97
+ }[`${__props.disabled || __props.pending}`]),
98
+ "aria-busy": __props.pending,
99
+ tabindex: attribute({
100
+ true: "0",
101
+ false: null
102
+ }[`${__props.pending && !__props.disabled}`]),
103
+ "data-ui-button-state": hostState.value || void 0,
104
+ ref_key: "root",
105
+ ref: root
106
+ }), [__props.pending ? (openBlock(), createBlock(UiSpinner_default, {
107
+ key: 0,
108
+ size: "sm",
109
+ class: "pending-spinner"
110
+ })) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1)) : (openBlock(), createElementBlock("button", mergeProps({
81
111
  key: 1,
82
112
  "data-component": "ui-button"
83
113
  }, _ctx.$attrs, {
84
114
  type: __props.type,
85
115
  disabled: __props.disabled,
86
- "data-ui-button-state": hostState.value || void 0
87
- }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_2));
116
+ "aria-disabled": typeof {
117
+ true: "true",
118
+ false: null
119
+ }[`${__props.pending}`] === "boolean" ? String({
120
+ true: "true",
121
+ false: null
122
+ }[`${__props.pending}`]) : attribute({
123
+ true: "true",
124
+ false: null
125
+ }[`${__props.pending}`]),
126
+ "aria-busy": __props.pending,
127
+ "data-ui-button-state": hostState.value || void 0,
128
+ ref_key: "root",
129
+ ref: root
130
+ }), [__props.pending ? (openBlock(), createBlock(UiSpinner_default, {
131
+ key: 0,
132
+ size: "sm",
133
+ class: "pending-spinner"
134
+ })) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_2));
88
135
  };
89
136
  }
90
- }), [["__scopeId", "data-v-bd32a08d"]]);
137
+ }), [["__scopeId", "data-v-3f3120c8"]]);
91
138
  //#endregion
92
139
  export { UiButton_default as t };
@@ -76,7 +76,7 @@ var UiCallout_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
76
76
  createElementVNode("path", { d: "M12 16v-4" }, null, -1),
77
77
  createElementVNode("path", { d: "M12 8h.01" }, null, -1)
78
78
  ])])) : createCommentVNode("v-if", true),
79
- __props.tone === "note" ? (openBlock(), createElementBlock("svg", _hoisted_4, [..._cache[1] || (_cache[1] = [
79
+ __props.tone === "neutral" || __props.tone === "note" ? (openBlock(), createElementBlock("svg", _hoisted_4, [..._cache[1] || (_cache[1] = [
80
80
  createElementVNode("path", { d: "M13.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8.5L13.5 2Z" }, null, -1),
81
81
  createElementVNode("path", { d: "M13 2v7h7" }, null, -1),
82
82
  createElementVNode("path", { d: "m9.5 17.5 4-4 2 2-4 4H9.5v-2Z" }, null, -1)
@@ -103,6 +103,6 @@ var UiCallout_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
103
103
  ]), createElementVNode("div", _hoisted_8, [renderSlot(_ctx.$slots, "default")])], 16, _hoisted_1);
104
104
  };
105
105
  }
106
- }), [["__scopeId", "data-v-faa2395f"]]);
106
+ }), [["__scopeId", "data-v-99de7df0"]]);
107
107
  //#endregion
108
108
  export { UiCallout_default as t };
@@ -8,6 +8,7 @@ var _hoisted_2 = [
8
8
  ".checked",
9
9
  ".indeterminate",
10
10
  "disabled",
11
+ "aria-invalid",
11
12
  "required",
12
13
  "name",
13
14
  "value"
@@ -37,6 +38,10 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
37
38
  type: Boolean,
38
39
  default: false
39
40
  },
41
+ invalid: {
42
+ type: Boolean,
43
+ default: false
44
+ },
40
45
  name: { default: "" },
41
46
  required: {
42
47
  type: Boolean,
@@ -58,7 +63,11 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
58
63
  const descriptionElement = useTemplateRef("description");
59
64
  const internalChecked = ref(false);
60
65
  /** The values the styles' :host-state() rules test. */
61
- const hostState = computed(() => [props.disabled && "disabled", props.size && `size size=${props.size}`].filter(Boolean).join(" "));
66
+ const hostState = computed(() => [
67
+ props.invalid && "invalid",
68
+ props.disabled && "disabled",
69
+ props.size && `size size=${props.size}`
70
+ ].filter(Boolean).join(" "));
62
71
  const isChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["checked"] === "boolean" && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
63
72
  "checked",
64
73
  "value",
@@ -88,6 +97,7 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
88
97
  ".checked": internalChecked.value,
89
98
  ".indeterminate": __props.indeterminate,
90
99
  disabled: __props.disabled,
100
+ "aria-invalid": __props.invalid,
91
101
  required: __props.required,
92
102
  name: __props.name,
93
103
  value: __props.value,
@@ -95,6 +105,6 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
95
105
  }, null, 40, _hoisted_2), createElementVNode("span", _hoisted_3, [createElementVNode("span", _hoisted_4, [renderSlot(_ctx.$slots, "default", {}, void 0, true)]), createElementVNode("span", _hoisted_5, [renderSlot(_ctx.$slots, "description", {}, void 0, true)], 512)])], 16, _hoisted_1);
96
106
  };
97
107
  }
98
- }), [["__scopeId", "data-v-bfcc98e1"]]);
108
+ }), [["__scopeId", "data-v-5e151d99"]]);
99
109
  //#endregion
100
110
  export { UiCheckbox_default as t };
@@ -78,14 +78,18 @@ var _hoisted_24 = {
78
78
  key: 1,
79
79
  class: "message"
80
80
  };
81
- var _hoisted_25 = ["id", "hidden"];
82
- var _hoisted_26 = {
81
+ var _hoisted_25 = {
82
+ key: 2,
83
+ class: "message"
84
+ };
85
+ var _hoisted_26 = ["id", "hidden"];
86
+ var _hoisted_27 = {
83
87
  class: "sr-only",
84
88
  role: "status",
85
89
  "aria-live": "polite",
86
90
  "aria-atomic": "true"
87
91
  };
88
- var _hoisted_27 = {
92
+ var _hoisted_28 = {
89
93
  class: "authored-options",
90
94
  hidden: "",
91
95
  "aria-hidden": "true",
@@ -117,15 +121,28 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
117
121
  type: Boolean,
118
122
  default: false
119
123
  },
124
+ filter: { default: "label" },
120
125
  help: { default: "" },
126
+ invalid: {
127
+ type: Boolean,
128
+ default: false
129
+ },
121
130
  items: {},
122
131
  label: { default: "" },
123
132
  labelVisibility: { default: "visible" },
133
+ loading: {
134
+ type: Boolean,
135
+ default: false
136
+ },
124
137
  multiple: {
125
138
  type: Boolean,
126
139
  default: false
127
140
  },
128
141
  name: { default: "" },
142
+ openOnFocus: {
143
+ type: Boolean,
144
+ default: false
145
+ },
129
146
  placeholder: { default: "" },
130
147
  query: {},
131
148
  readonly: {
@@ -172,7 +189,6 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
172
189
  const expanded = ref(false);
173
190
  const rows = ref([]);
174
191
  const active = ref(-1);
175
- const loading = ref(false);
176
192
  const helpOpen = ref(false);
177
193
  const lookupError = ref("");
178
194
  const validation = ref({
@@ -194,6 +210,7 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
194
210
  props.size && `size size=${props.size}`,
195
211
  validationStatus.value && "validationStatus",
196
212
  `validationStatus=${encodeURIComponent(validationStatus.value)}`,
213
+ props.invalid && "invalid",
197
214
  props.multiple && "multiple"
198
215
  ].filter(Boolean).join(" "));
199
216
  const isQueryChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["query"] === "string" && typeof detail["display"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
@@ -312,7 +329,6 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
312
329
  expanded,
313
330
  rows,
314
331
  active,
315
- loading,
316
332
  helpOpen,
317
333
  lookupError,
318
334
  validation,
@@ -369,8 +385,8 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
369
385
  id: `${uid.value}-input`,
370
386
  "aria-controls": `${uid.value}-listbox`,
371
387
  "aria-expanded": expanded.value,
372
- "aria-invalid": validationStatus.value === "error",
373
- "aria-busy": validationStatus.value === "pending",
388
+ "aria-invalid": __props.invalid || validationStatus.value === "error",
389
+ "aria-busy": __props.loading || validationStatus.value === "pending",
374
390
  ".value": display.value,
375
391
  placeholder: __props.placeholder,
376
392
  disabled: __props.disabled,
@@ -469,7 +485,7 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
469
485
  role: "listbox",
470
486
  id: `${uid.value}-listbox`,
471
487
  "aria-label": `${__props.label} suggestions`,
472
- "aria-busy": loading.value,
488
+ "aria-busy": __props.loading,
473
489
  ref: "listbox"
474
490
  }, [
475
491
  (openBlock(true), createElementBlock(Fragment, null, renderList(groups.value, (group) => {
@@ -512,7 +528,8 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
512
528
  id: `${uid.value}-option-${createIndex.value}`,
513
529
  "data-index": createIndex.value
514
530
  }, toDisplayString(`Create “${raw.value}”`), 11, _hoisted_23)) : createCommentVNode("v-if", true),
515
- message.value ? (openBlock(), createElementBlock("div", _hoisted_24, toDisplayString(message.value), 1)) : createCommentVNode("v-if", true)
531
+ message.value ? (openBlock(), createElementBlock("div", _hoisted_24, toDisplayString(message.value), 1)) : createCommentVNode("v-if", true),
532
+ !__props.loading && !rows.value[0] && !creatable.value && !lookupError.value ? (openBlock(), createElementBlock("div", _hoisted_25, [renderSlot(_ctx.$slots, "empty", {}, () => [_cache[3] || (_cache[3] = createTextVNode("No suggestions.", -1))], true)])) : createCommentVNode("v-if", true)
516
533
  ], 8, _hoisted_13), renderSlot(_ctx.$slots, "footer", {}, void 0, true)], 8, _hoisted_12),
517
534
  createElementVNode("div", {
518
535
  class: "message",
@@ -520,12 +537,12 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
520
537
  hidden: !validation.value.issues.length
521
538
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(validation.value.issues, (issue, index) => {
522
539
  return openBlock(), createElementBlock("div", { key: index }, toDisplayString(issue.message), 1);
523
- }), 128))], 8, _hoisted_25),
524
- createElementVNode("div", _hoisted_26, toDisplayString(statusText.value), 1),
525
- createElementVNode("div", _hoisted_27, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)
540
+ }), 128))], 8, _hoisted_26),
541
+ createElementVNode("div", _hoisted_27, toDisplayString(statusText.value), 1),
542
+ createElementVNode("div", _hoisted_28, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)
526
543
  ], 16, _hoisted_1);
527
544
  };
528
545
  }
529
- }), [["__scopeId", "data-v-57e2c500"]]);
546
+ }), [["__scopeId", "data-v-069ed42d"]]);
530
547
  //#endregion
531
548
  export { UiCombobox_default as t };
@@ -38,7 +38,11 @@ var UiContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
38
38
  "reason",
39
39
  "trigger"
40
40
  ].includes(key));
41
- const isSelectDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["value", "trigger"].includes(key));
41
+ const isSelectDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && (detail["checked"] === void 0 || typeof detail["checked"] === "boolean") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
42
+ "value",
43
+ "checked",
44
+ "trigger"
45
+ ].includes(key));
42
46
  const dispatch = createDispatch(root, emit, {
43
47
  checks: {
44
48
  open: isOpenDetail,
@@ -61,6 +65,6 @@ var UiContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
61
65
  }), [createElementVNode("div", _hoisted_1, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)], 16);
62
66
  };
63
67
  }
64
- }), [["__scopeId", "data-v-3d09af05"]]);
68
+ }), [["__scopeId", "data-v-2e00c9d8"]]);
65
69
  //#endregion
66
70
  export { UiContextMenu_default as t };