@threadlabs/looma 0.28.5 → 0.28.7

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 (453) hide show
  1. package/components/ui-editor-block-actions/ui-editor-block-actions.html +20 -0
  2. package/components/ui-editor-block-actions/ui-editor-block-actions.js +14 -0
  3. package/components/ui-editor-image-toolbar/ui-editor-image-toolbar.html +7 -6
  4. package/components/ui-editor-image-toolbar/ui-editor-image-toolbar.js +2 -1
  5. package/components/ui-editor-link-card/ui-editor-link-card.html +57 -0
  6. package/components/ui-editor-link-card/ui-editor-link-card.js +27 -0
  7. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +3 -2
  8. package/dist/index.js +36 -34
  9. package/package.json +3 -2
  10. package/styles/ui-action-bar.css +13 -6
  11. package/styles/ui-affordance-scope.css +12 -5
  12. package/styles/ui-avatar-group.css +17 -10
  13. package/styles/ui-avatar.css +23 -16
  14. package/styles/ui-badge.css +78 -71
  15. package/styles/ui-breadcrumb-item.css +12 -5
  16. package/styles/ui-breadcrumbs.css +10 -3
  17. package/styles/ui-button.css +79 -72
  18. package/styles/ui-callout.css +29 -22
  19. package/styles/ui-card.css +25 -18
  20. package/styles/ui-checkbox.css +45 -37
  21. package/styles/ui-cluster.css +34 -27
  22. package/styles/ui-combobox.css +46 -39
  23. package/styles/ui-container.css +20 -13
  24. package/styles/ui-context-menu.css +17 -10
  25. package/styles/ui-cover.css +12 -5
  26. package/styles/ui-description-item.css +10 -3
  27. package/styles/ui-description-list.css +20 -13
  28. package/styles/ui-dialog.css +44 -35
  29. package/styles/ui-disclosure.css +32 -25
  30. package/styles/ui-editable.css +15 -8
  31. package/styles/ui-editor-block-actions.css +1 -0
  32. package/styles/ui-editor-image-toolbar.css +1 -1
  33. package/styles/ui-editor-insert-table-grid.css +11 -4
  34. package/styles/ui-editor-link-card.css +1 -0
  35. package/styles/ui-editor-mention-menu-item.css +17 -8
  36. package/styles/ui-editor-mention-menu.css +14 -7
  37. package/styles/ui-editor-slash-menu-group.css +10 -3
  38. package/styles/ui-editor-slash-menu-item.css +15 -8
  39. package/styles/ui-editor-slash-menu.css +15 -8
  40. package/styles/ui-editor-surface.css +10 -3
  41. package/styles/ui-editor-table-context-menu.css +17 -10
  42. package/styles/ui-editor-table-overlay.css +17 -10
  43. package/styles/ui-editor-table-toolbar.css +22 -15
  44. package/styles/ui-editor-toolbar.css +18 -11
  45. package/styles/ui-floating-action-button.css +21 -14
  46. package/styles/ui-form-field.css +20 -13
  47. package/styles/ui-grid.css +21 -14
  48. package/styles/ui-icon-button.css +80 -73
  49. package/styles/ui-icon.css +14 -7
  50. package/styles/ui-image.css +25 -18
  51. package/styles/ui-input-group.css +34 -27
  52. package/styles/ui-input.css +42 -35
  53. package/styles/ui-list-item.css +33 -26
  54. package/styles/ui-list.css +22 -15
  55. package/styles/ui-listbox.css +22 -14
  56. package/styles/ui-menu-group.css +10 -3
  57. package/styles/ui-menu-item.css +29 -22
  58. package/styles/ui-menu.css +25 -18
  59. package/styles/ui-meter.css +36 -29
  60. package/styles/ui-nav-item.css +26 -19
  61. package/styles/ui-page-header.css +12 -5
  62. package/styles/ui-popover.css +27 -20
  63. package/styles/ui-radio-group.css +14 -6
  64. package/styles/ui-radio.css +24 -17
  65. package/styles/ui-reel.css +28 -21
  66. package/styles/ui-scroll-area.css +22 -15
  67. package/styles/ui-search-result-row.css +28 -21
  68. package/styles/ui-search-shell.css +24 -17
  69. package/styles/ui-section.css +14 -7
  70. package/styles/ui-select.css +33 -26
  71. package/styles/ui-separator.css +17 -10
  72. package/styles/ui-sidebar.css +35 -28
  73. package/styles/ui-spinner.css +32 -23
  74. package/styles/ui-stack.css +29 -21
  75. package/styles/ui-status-message.css +14 -7
  76. package/styles/ui-switch.css +29 -22
  77. package/styles/ui-switcher.css +27 -20
  78. package/styles/ui-table.css +14 -7
  79. package/styles/ui-tabs.css +24 -17
  80. package/styles/ui-text.css +35 -28
  81. package/styles/ui-textarea.css +37 -30
  82. package/styles/ui-toast-region.css +74 -63
  83. package/styles/ui-toast.css +21 -14
  84. package/styles/ui-tooltip.css +38 -31
  85. package/styles/ui-top-bar.css +19 -12
  86. package/styles/ui-tree-item.css +79 -71
  87. package/styles/ui-tree.css +18 -11
  88. package/vanilla/UiActionBar.d.ts +1 -1
  89. package/vanilla/UiActionBar.js +1 -1
  90. package/vanilla/UiAffordanceScope.d.ts +1 -1
  91. package/vanilla/UiAffordanceScope.js +1 -1
  92. package/vanilla/UiAvatar.d.ts +1 -1
  93. package/vanilla/UiAvatar.js +1 -1
  94. package/vanilla/UiAvatarGroup.d.ts +1 -1
  95. package/vanilla/UiAvatarGroup.js +1 -1
  96. package/vanilla/UiBadge.d.ts +1 -1
  97. package/vanilla/UiBadge.js +1 -1
  98. package/vanilla/UiBreadcrumbItem.d.ts +1 -1
  99. package/vanilla/UiBreadcrumbItem.js +1 -1
  100. package/vanilla/UiBreadcrumbs.d.ts +1 -1
  101. package/vanilla/UiBreadcrumbs.js +1 -1
  102. package/vanilla/UiButton.d.ts +1 -1
  103. package/vanilla/UiButton.js +19 -57
  104. package/vanilla/UiCallout.d.ts +1 -1
  105. package/vanilla/UiCallout.js +25 -73
  106. package/vanilla/UiCard.d.ts +1 -1
  107. package/vanilla/UiCard.js +1 -1
  108. package/vanilla/UiCheckbox.d.ts +1 -1
  109. package/vanilla/UiCheckbox.js +1 -1
  110. package/vanilla/UiCluster.d.ts +1 -1
  111. package/vanilla/UiCluster.js +1 -1
  112. package/vanilla/UiCombobox.d.ts +1 -1
  113. package/vanilla/UiCombobox.js +60 -166
  114. package/vanilla/UiContainer.d.ts +1 -1
  115. package/vanilla/UiContainer.js +1 -1
  116. package/vanilla/UiContextMenu.d.ts +1 -1
  117. package/vanilla/UiContextMenu.js +1 -1
  118. package/vanilla/UiCover.d.ts +1 -1
  119. package/vanilla/UiCover.js +1 -1
  120. package/vanilla/UiDescriptionItem.d.ts +1 -1
  121. package/vanilla/UiDescriptionItem.js +1 -1
  122. package/vanilla/UiDescriptionList.d.ts +1 -1
  123. package/vanilla/UiDescriptionList.js +1 -1
  124. package/vanilla/UiDialog.d.ts +1 -1
  125. package/vanilla/UiDialog.js +4 -10
  126. package/vanilla/UiDisclosure.d.ts +1 -1
  127. package/vanilla/UiDisclosure.js +1 -1
  128. package/vanilla/UiEditable.d.ts +1 -1
  129. package/vanilla/UiEditable.js +7 -19
  130. package/vanilla/UiEditorBlockActions.d.ts +16 -0
  131. package/vanilla/UiEditorBlockActions.js +41 -0
  132. package/vanilla/UiEditorImageToolbar.d.ts +1 -1
  133. package/vanilla/UiEditorImageToolbar.js +2 -2
  134. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  135. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  136. package/vanilla/UiEditorLinkCard.d.ts +20 -0
  137. package/vanilla/UiEditorLinkCard.js +153 -0
  138. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  139. package/vanilla/UiEditorMentionMenu.js +17 -37
  140. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  141. package/vanilla/UiEditorMentionMenuItem.js +4 -10
  142. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  143. package/vanilla/UiEditorSlashMenu.js +5 -4
  144. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  145. package/vanilla/UiEditorSlashMenuGroup.js +1 -1
  146. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  147. package/vanilla/UiEditorSlashMenuItem.js +7 -19
  148. package/vanilla/UiEditorSurface.d.ts +1 -1
  149. package/vanilla/UiEditorSurface.js +1 -1
  150. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  151. package/vanilla/UiEditorTableContextMenu.js +6 -14
  152. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  153. package/vanilla/UiEditorTableOverlay.js +9 -25
  154. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  155. package/vanilla/UiEditorTableToolbar.js +25 -77
  156. package/vanilla/UiEditorToolbar.d.ts +1 -1
  157. package/vanilla/UiEditorToolbar.js +1 -1
  158. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  159. package/vanilla/UiFloatingActionButton.js +1 -1
  160. package/vanilla/UiFormField.d.ts +1 -1
  161. package/vanilla/UiFormField.js +1 -1
  162. package/vanilla/UiGrid.d.ts +1 -1
  163. package/vanilla/UiGrid.js +1 -1
  164. package/vanilla/UiIcon.d.ts +1 -1
  165. package/vanilla/UiIcon.js +15 -47
  166. package/vanilla/UiIconButton.d.ts +1 -1
  167. package/vanilla/UiIconButton.js +4 -10
  168. package/vanilla/UiImage.d.ts +1 -1
  169. package/vanilla/UiImage.js +1 -1
  170. package/vanilla/UiInput.d.ts +1 -1
  171. package/vanilla/UiInput.js +1 -1
  172. package/vanilla/UiInputGroup.d.ts +1 -1
  173. package/vanilla/UiInputGroup.js +1 -1
  174. package/vanilla/UiList.d.ts +1 -1
  175. package/vanilla/UiList.js +1 -1
  176. package/vanilla/UiListItem.d.ts +1 -1
  177. package/vanilla/UiListItem.js +1 -1
  178. package/vanilla/UiListbox.d.ts +1 -1
  179. package/vanilla/UiListbox.js +4 -10
  180. package/vanilla/UiMenu.d.ts +1 -1
  181. package/vanilla/UiMenu.js +1 -1
  182. package/vanilla/UiMenuGroup.d.ts +1 -1
  183. package/vanilla/UiMenuGroup.js +4 -10
  184. package/vanilla/UiMenuItem.d.ts +1 -1
  185. package/vanilla/UiMenuItem.js +4 -10
  186. package/vanilla/UiMeter.d.ts +1 -1
  187. package/vanilla/UiMeter.js +13 -33
  188. package/vanilla/UiNavItem.d.ts +1 -1
  189. package/vanilla/UiNavItem.js +1 -1
  190. package/vanilla/UiPageHeader.d.ts +1 -1
  191. package/vanilla/UiPageHeader.js +1 -1
  192. package/vanilla/UiPopover.d.ts +1 -1
  193. package/vanilla/UiPopover.js +1 -1
  194. package/vanilla/UiRadio.d.ts +1 -1
  195. package/vanilla/UiRadio.js +1 -1
  196. package/vanilla/UiRadioGroup.d.ts +1 -1
  197. package/vanilla/UiRadioGroup.js +1 -1
  198. package/vanilla/UiReel.d.ts +1 -1
  199. package/vanilla/UiReel.js +1 -1
  200. package/vanilla/UiScrollArea.d.ts +1 -1
  201. package/vanilla/UiScrollArea.js +1 -1
  202. package/vanilla/UiSearchResultRow.d.ts +1 -1
  203. package/vanilla/UiSearchResultRow.js +1 -1
  204. package/vanilla/UiSearchShell.d.ts +1 -1
  205. package/vanilla/UiSearchShell.js +1 -1
  206. package/vanilla/UiSection.d.ts +1 -1
  207. package/vanilla/UiSection.js +1 -1
  208. package/vanilla/UiSelect.d.ts +1 -1
  209. package/vanilla/UiSelect.js +1 -1
  210. package/vanilla/UiSeparator.d.ts +1 -1
  211. package/vanilla/UiSeparator.js +1 -1
  212. package/vanilla/UiSidebar.d.ts +1 -1
  213. package/vanilla/UiSidebar.js +1 -1
  214. package/vanilla/UiSpinner.d.ts +1 -1
  215. package/vanilla/UiSpinner.js +1 -1
  216. package/vanilla/UiStack.d.ts +1 -1
  217. package/vanilla/UiStack.js +1 -1
  218. package/vanilla/UiStatusMessage.d.ts +1 -1
  219. package/vanilla/UiStatusMessage.js +1 -1
  220. package/vanilla/UiSwitch.d.ts +1 -1
  221. package/vanilla/UiSwitch.js +1 -1
  222. package/vanilla/UiSwitcher.d.ts +1 -1
  223. package/vanilla/UiSwitcher.js +1 -1
  224. package/vanilla/UiTable.d.ts +1 -1
  225. package/vanilla/UiTable.js +1 -1
  226. package/vanilla/UiTabs.d.ts +1 -1
  227. package/vanilla/UiTabs.js +1 -1
  228. package/vanilla/UiText.d.ts +1 -1
  229. package/vanilla/UiText.js +1 -1
  230. package/vanilla/UiTextarea.d.ts +1 -1
  231. package/vanilla/UiTextarea.js +1 -1
  232. package/vanilla/UiToast.d.ts +1 -1
  233. package/vanilla/UiToast.js +1 -1
  234. package/vanilla/UiToastRegion.d.ts +1 -1
  235. package/vanilla/UiToastRegion.js +1 -1
  236. package/vanilla/UiTooltip.d.ts +1 -1
  237. package/vanilla/UiTooltip.js +1 -1
  238. package/vanilla/UiTopBar.d.ts +1 -1
  239. package/vanilla/UiTopBar.js +1 -1
  240. package/vanilla/UiTree.d.ts +1 -1
  241. package/vanilla/UiTree.js +1 -1
  242. package/vanilla/UiTreeItem.d.ts +1 -1
  243. package/vanilla/UiTreeItem.js +7 -19
  244. package/vanilla/index.js +2 -0
  245. package/vue/UiActionBar.vue +46 -78
  246. package/vue/UiAffordanceScope.vue +27 -66
  247. package/vue/UiAvatar.d.ts +10 -7
  248. package/vue/UiAvatar.vue +100 -218
  249. package/vue/UiAvatarGroup.d.ts +10 -7
  250. package/vue/UiAvatarGroup.vue +78 -160
  251. package/vue/UiBadge.d.ts +1 -1
  252. package/vue/UiBadge.vue +483 -520
  253. package/vue/UiBreadcrumbItem.vue +52 -123
  254. package/vue/UiBreadcrumbs.vue +27 -70
  255. package/vue/UiButton.d.ts +2 -2
  256. package/vue/UiButton.vue +420 -471
  257. package/vue/UiCallout.vue +131 -175
  258. package/vue/UiCard.d.ts +1 -1
  259. package/vue/UiCard.vue +112 -151
  260. package/vue/UiCheckbox.d.ts +13 -10
  261. package/vue/UiCheckbox.vue +160 -221
  262. package/vue/UiCluster.d.ts +1 -1
  263. package/vue/UiCluster.vue +84 -128
  264. package/vue/UiCombobox.d.ts +71 -68
  265. package/vue/UiCombobox.vue +417 -743
  266. package/vue/UiContainer.vue +43 -87
  267. package/vue/UiContextMenu.d.ts +6 -6
  268. package/vue/UiContextMenu.vue +78 -117
  269. package/vue/UiCover.vue +29 -69
  270. package/vue/UiDescriptionItem.vue +39 -82
  271. package/vue/UiDescriptionList.vue +64 -107
  272. package/vue/UiDialog.d.ts +22 -19
  273. package/vue/UiDialog.vue +193 -246
  274. package/vue/UiDisclosure.d.ts +22 -19
  275. package/vue/UiDisclosure.vue +192 -283
  276. package/vue/UiEditable.d.ts +5 -5
  277. package/vue/UiEditable.vue +124 -207
  278. package/vue/UiEditorBlockActions.d.ts +33 -0
  279. package/vue/UiEditorBlockActions.js +2 -0
  280. package/vue/UiEditorBlockActions.vue +125 -0
  281. package/vue/UiEditorImageToolbar.d.ts +2 -2
  282. package/vue/UiEditorImageToolbar.vue +45 -256
  283. package/vue/UiEditorInsertTableGrid.d.ts +2 -2
  284. package/vue/UiEditorInsertTableGrid.vue +98 -266
  285. package/vue/UiEditorLinkCard.d.ts +58 -0
  286. package/vue/UiEditorLinkCard.js +2 -0
  287. package/vue/UiEditorLinkCard.vue +319 -0
  288. package/vue/UiEditorMentionMenu.d.ts +15 -12
  289. package/vue/UiEditorMentionMenu.vue +150 -239
  290. package/vue/UiEditorMentionMenuItem.vue +66 -110
  291. package/vue/UiEditorSlashMenu.d.ts +16 -13
  292. package/vue/UiEditorSlashMenu.vue +172 -253
  293. package/vue/UiEditorSlashMenuGroup.vue +25 -69
  294. package/vue/UiEditorSlashMenuItem.vue +67 -115
  295. package/vue/UiEditorSurface.vue +19 -63
  296. package/vue/UiEditorTableContextMenu.vue +135 -269
  297. package/vue/UiEditorTableOverlay.d.ts +2 -2
  298. package/vue/UiEditorTableOverlay.vue +310 -479
  299. package/vue/UiEditorTableToolbar.d.ts +2 -2
  300. package/vue/UiEditorTableToolbar.vue +182 -357
  301. package/vue/UiEditorToolbar.vue +143 -183
  302. package/vue/UiFloatingActionButton.vue +70 -114
  303. package/vue/UiFormField.d.ts +1 -1
  304. package/vue/UiFormField.vue +76 -117
  305. package/vue/UiGrid.d.ts +1 -1
  306. package/vue/UiGrid.vue +65 -103
  307. package/vue/UiIcon.vue +32 -106
  308. package/vue/UiIconButton.d.ts +2 -2
  309. package/vue/UiIconButton.vue +359 -411
  310. package/vue/UiImage.vue +145 -180
  311. package/vue/UiInput.vue +158 -190
  312. package/vue/UiInputGroup.vue +199 -239
  313. package/vue/UiList.vue +67 -109
  314. package/vue/UiListItem.vue +154 -201
  315. package/vue/UiListbox.d.ts +10 -7
  316. package/vue/UiListbox.vue +86 -260
  317. package/vue/UiMenu.d.ts +11 -11
  318. package/vue/UiMenu.vue +118 -152
  319. package/vue/UiMenuGroup.vue +21 -67
  320. package/vue/UiMenuItem.d.ts +19 -16
  321. package/vue/UiMenuItem.vue +169 -262
  322. package/vue/UiMeter.d.ts +4 -4
  323. package/vue/UiMeter.vue +166 -680
  324. package/vue/UiNavItem.vue +140 -213
  325. package/vue/UiPageHeader.vue +81 -127
  326. package/vue/UiPopover.d.ts +7 -7
  327. package/vue/UiPopover.vue +90 -129
  328. package/vue/UiRadio.d.ts +12 -9
  329. package/vue/UiRadio.vue +91 -149
  330. package/vue/UiRadioGroup.d.ts +2 -2
  331. package/vue/UiRadioGroup.vue +47 -85
  332. package/vue/UiReel.vue +89 -130
  333. package/vue/UiScrollArea.d.ts +1 -1
  334. package/vue/UiScrollArea.vue +78 -119
  335. package/vue/UiSearchResultRow.vue +96 -149
  336. package/vue/UiSearchShell.d.ts +2 -2
  337. package/vue/UiSearchShell.vue +159 -196
  338. package/vue/UiSection.vue +105 -149
  339. package/vue/UiSelect.d.ts +1 -1
  340. package/vue/UiSelect.vue +114 -146
  341. package/vue/UiSeparator.vue +42 -85
  342. package/vue/UiSidebar.d.ts +10 -7
  343. package/vue/UiSidebar.vue +193 -260
  344. package/vue/UiSpinner.vue +54 -130
  345. package/vue/UiStack.vue +66 -107
  346. package/vue/UiStatusMessage.d.ts +1 -1
  347. package/vue/UiStatusMessage.vue +61 -135
  348. package/vue/UiSwitch.d.ts +12 -9
  349. package/vue/UiSwitch.vue +136 -194
  350. package/vue/UiSwitcher.vue +69 -107
  351. package/vue/UiTable.vue +121 -156
  352. package/vue/UiTabs.d.ts +1 -1
  353. package/vue/UiTabs.vue +139 -267
  354. package/vue/UiText.d.ts +4 -4
  355. package/vue/UiText.vue +145 -184
  356. package/vue/UiTextarea.d.ts +2 -2
  357. package/vue/UiTextarea.vue +162 -194
  358. package/vue/UiToast.vue +70 -118
  359. package/vue/UiToastRegion.vue +157 -276
  360. package/vue/UiTooltip.d.ts +21 -18
  361. package/vue/UiTooltip.vue +174 -234
  362. package/vue/UiTopBar.vue +48 -76
  363. package/vue/UiTree.vue +46 -79
  364. package/vue/UiTreeItem.d.ts +18 -15
  365. package/vue/UiTreeItem.vue +526 -668
  366. package/vue/chunks/UiActionBar.js +5 -17
  367. package/vue/chunks/UiAffordanceScope.js +7 -26
  368. package/vue/chunks/UiAvatar.js +20 -74
  369. package/vue/chunks/UiAvatarGroup.js +14 -56
  370. package/vue/chunks/UiBadge.js +10 -28
  371. package/vue/chunks/UiBreadcrumbItem.js +11 -41
  372. package/vue/chunks/UiBreadcrumbs.js +7 -25
  373. package/vue/chunks/UiButton.js +80 -103
  374. package/vue/chunks/UiCallout.js +9 -27
  375. package/vue/chunks/UiCard.js +33 -53
  376. package/vue/chunks/UiCheckbox.js +14 -46
  377. package/vue/chunks/UiCluster.js +13 -31
  378. package/vue/chunks/UiCombobox.js +99 -237
  379. package/vue/chunks/UiContainer.js +9 -27
  380. package/vue/chunks/UiContextMenu.js +7 -26
  381. package/vue/chunks/UiCover.js +7 -25
  382. package/vue/chunks/UiDescriptionItem.js +6 -24
  383. package/vue/chunks/UiDescriptionList.js +9 -27
  384. package/vue/chunks/UiDialog.js +18 -47
  385. package/vue/chunks/UiDisclosure.js +19 -66
  386. package/vue/chunks/UiEditable.js +18 -60
  387. package/vue/chunks/UiEditorBlockActions.js +127 -0
  388. package/vue/chunks/UiEditorImageToolbar.js +40 -127
  389. package/vue/chunks/UiEditorInsertTableGrid.js +14 -112
  390. package/vue/chunks/UiEditorLinkCard.js +356 -0
  391. package/vue/chunks/UiEditorMentionMenu.js +16 -54
  392. package/vue/chunks/UiEditorMentionMenuItem.js +10 -28
  393. package/vue/chunks/UiEditorSlashMenu.js +17 -46
  394. package/vue/chunks/UiEditorSlashMenuGroup.js +7 -25
  395. package/vue/chunks/UiEditorSlashMenuItem.js +16 -31
  396. package/vue/chunks/UiEditorSurface.js +7 -25
  397. package/vue/chunks/UiEditorTableContextMenu.js +25 -102
  398. package/vue/chunks/UiEditorTableOverlay.js +41 -104
  399. package/vue/chunks/UiEditorTableToolbar.js +44 -122
  400. package/vue/chunks/UiEditorToolbar.js +7 -26
  401. package/vue/chunks/UiFloatingActionButton.js +10 -28
  402. package/vue/chunks/UiFormField.js +8 -27
  403. package/vue/chunks/UiGrid.js +10 -28
  404. package/vue/chunks/UiIcon.js +21 -74
  405. package/vue/chunks/UiIconButton.js +18 -50
  406. package/vue/chunks/UiImage.js +14 -33
  407. package/vue/chunks/UiInput.js +12 -31
  408. package/vue/chunks/UiInputGroup.js +10 -29
  409. package/vue/chunks/UiList.js +17 -37
  410. package/vue/chunks/UiListItem.js +12 -30
  411. package/vue/chunks/UiListbox.js +22 -124
  412. package/vue/chunks/UiMenu.js +13 -32
  413. package/vue/chunks/UiMenuGroup.js +8 -26
  414. package/vue/chunks/UiMenuItem.js +35 -80
  415. package/vue/chunks/UiMeter.js +17 -351
  416. package/vue/chunks/UiNavItem.js +23 -57
  417. package/vue/chunks/UiPageHeader.js +7 -25
  418. package/vue/chunks/UiPopover.js +9 -28
  419. package/vue/chunks/UiRadio.js +11 -43
  420. package/vue/chunks/UiRadioGroup.js +13 -32
  421. package/vue/chunks/UiReel.js +10 -28
  422. package/vue/chunks/UiScrollArea.js +10 -29
  423. package/vue/chunks/UiSearchResultRow.js +10 -28
  424. package/vue/chunks/UiSearchShell.js +9 -28
  425. package/vue/chunks/UiSection.js +9 -27
  426. package/vue/chunks/UiSelect.js +10 -29
  427. package/vue/chunks/UiSeparator.js +10 -28
  428. package/vue/chunks/UiSidebar.js +15 -47
  429. package/vue/chunks/UiSpinner.js +8 -44
  430. package/vue/chunks/UiStack.js +12 -30
  431. package/vue/chunks/UiStatusMessage.js +10 -42
  432. package/vue/chunks/UiSwitch.js +11 -43
  433. package/vue/chunks/UiSwitcher.js +9 -28
  434. package/vue/chunks/UiTable.js +7 -26
  435. package/vue/chunks/UiTabs.js +15 -91
  436. package/vue/chunks/UiText.js +148 -168
  437. package/vue/chunks/UiTextarea.js +16 -35
  438. package/vue/chunks/UiToast.js +13 -37
  439. package/vue/chunks/UiToastRegion.js +16 -88
  440. package/vue/chunks/UiTooltip.js +14 -46
  441. package/vue/chunks/UiTopBar.js +5 -17
  442. package/vue/chunks/UiTree.js +13 -32
  443. package/vue/chunks/UiTreeItem.js +34 -90
  444. package/vue/chunks/_plugin-vue_export-helper.js +904 -1
  445. package/vue/chunks/control.js +3 -0
  446. package/vue/chunks/props.js +1 -1
  447. package/vue/components.css +7689 -7617
  448. package/vue/editor/index.js +30 -95
  449. package/vue/editor/primitives.d.ts +8 -2
  450. package/vue/host.ts +999 -14
  451. package/vue/index.d.ts +2 -0
  452. package/vue/index.js +5 -3
  453. package/vue/chunks/host.js +0 -443
@@ -1,29 +1,20 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.35 for Vue 3.5. Do not edit. -->
2
- <script lang="ts">
3
- const htmlNextAuthoredCheck2Reported = new Set<string>()
4
- function htmlNextAuthoredCheck2(accepted: boolean, location: string, message: string): boolean {
5
- if (!accepted && !htmlNextAuthoredCheck2Reported.has(location)) {
6
- htmlNextAuthoredCheck2Reported.add(location)
7
- console.warn(message)
8
- }
9
- return accepted
10
- }
11
- </script>
12
-
1
+ <!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
13
2
  <script setup lang="ts">
14
- import {
15
- computed,
16
- defineComponent,
17
- getCurrentInstance,
18
- h,
19
- provide,
20
- ref,
21
- useTemplateRef,
22
- watchSyncEffect,
23
- } from 'vue'
24
- import type { PropType, VNode } from 'vue'
3
+ import { computed, getCurrentInstance, provide, ref, useTemplateRef, watchSyncEffect } from 'vue'
4
+ import type { PropType } from 'vue'
25
5
  import { vBindControl } from './control'
26
- import { createDispatch, useComponentHost } from './host'
6
+ import {
7
+ checkHydratedRoot,
8
+ concat,
9
+ createDispatch,
10
+ isInteger,
11
+ KeyedBoundary,
12
+ nativeAttrs,
13
+ uniqueKeys,
14
+ useComponentHost,
15
+ useReflectedProp,
16
+ warnUnless,
17
+ } from './host'
27
18
  import { acceptsControllerWrite } from './props'
28
19
  import { checkedProp, propValidityState, vPropValidity } from './props'
29
20
  import UiBadge from './UiBadge.vue'
@@ -588,64 +579,7 @@ void checkedProps.value
588
579
  watchSyncEffect(() => {
589
580
  void checkedProps.value
590
581
  })
591
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
592
- const names = Object.keys(attrs)
593
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
594
- return Object.fromEntries(names.map((name) => [
595
- Object.hasOwn(Object.prototype, name)
596
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
597
- : name,
598
- attrs[name],
599
- ]))
600
- }
601
- const KeyedFailure = defineComponent({
602
- props: { error: { type: null, required: true } },
603
- setup(props) {
604
- return () => {
605
- throw props.error
606
- }
607
- },
608
- })
609
- const KeyedBoundary = defineComponent({
610
- setup(_props, { slots }) {
611
- let last: VNode[] = []
612
- return () => {
613
- try {
614
- last = slots.default?.() ?? []
615
- return last
616
- } catch (error) {
617
- if (
618
- !(error instanceof Error)
619
- || (error as Error & { diagnostic?: { code?: string } }).diagnostic?.code !== 'HR004'
620
- ) throw error
621
- if (typeof window === 'undefined') throw error
622
- return [...last, h(KeyedFailure, { error })]
623
- }
624
- }
625
- },
626
- })
627
- const componentInstance = getCurrentInstance()
628
- function reflectedProp(
629
- name: string,
630
- kebab: string,
631
- value: unknown,
632
- fallback: string | undefined,
633
- bound: boolean,
634
- separator?: string,
635
- ): string | undefined {
636
- const incoming = componentInstance?.vnode.props
637
- if (
638
- !bound
639
- && (incoming === null || incoming === undefined
640
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
641
- ) return fallback
642
- if (value === null || value === undefined) return undefined
643
- return Array.isArray(value) && separator !== undefined
644
- ? value.join(separator)
645
- : typeof value === 'object'
646
- ? JSON.stringify(value)
647
- : String(value)
648
- }
582
+ const reflectedProp = useReflectedProp()
649
583
  const hydrationInstance = getCurrentInstance()
650
584
  const emit = defineEmits<{
651
585
  'update:query': [value: string]
@@ -922,39 +856,18 @@ const statusText = ref('')
922
856
  const validationStatus = ref('pristine')
923
857
  let guardedPrevious: any = null
924
858
  const guarded = computed(() => {
925
- if (
926
- !(htmlNextAuthoredCheck2(
927
- uid.value == null || typeof uid.value === 'string',
928
- 'concat($uid, \'-input\'):uid',
929
- './components/ui-combobox/ui-combobox.html: HR007: Reference uid does not satisfy its declared type.',
930
- ))
931
- ) return guardedPrevious
932
859
  const candidate: any = concat(uid.value, '-input')
933
860
  if (candidate === Symbol.for('html-next.invalid-result')) return guardedPrevious
934
861
  return guardedPrevious = candidate
935
862
  })
936
863
  let guardedBindingPrevious: any = null
937
864
  const guardedBinding = computed(() => {
938
- if (
939
- !(htmlNextAuthoredCheck2(
940
- uid.value == null || typeof uid.value === 'string',
941
- 'concat($uid, \'-input\'):uid',
942
- './components/ui-combobox/ui-combobox.html: HR007: Reference uid does not satisfy its declared type.',
943
- ))
944
- ) return guardedBindingPrevious
945
865
  const candidate: any = concat(uid.value, '-input')
946
866
  if (candidate === Symbol.for('html-next.invalid-result')) return guardedBindingPrevious
947
867
  return guardedBindingPrevious = candidate
948
868
  })
949
869
  let guardedBinding2Previous: any = null
950
870
  const guardedBinding2 = computed(() => {
951
- if (
952
- !(htmlNextAuthoredCheck2(
953
- uid.value == null || typeof uid.value === 'string',
954
- 'concat($uid, \'-listbox\'):uid',
955
- './components/ui-combobox/ui-combobox.html: HR007: Reference uid does not satisfy its declared type.',
956
- ))
957
- ) return guardedBinding2Previous
958
871
  const candidate: any = concat(uid.value, '-listbox')
959
872
  if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding2Previous
960
873
  return guardedBinding2Previous = candidate
@@ -962,264 +875,93 @@ const guardedBinding2 = computed(() => {
962
875
  let guardedBinding3Previous: any
963
876
  const guardedBinding3 = computed(() => {
964
877
  if (
965
- !(htmlNextAuthoredCheck2(
966
- expanded.value == null || typeof expanded.value === 'boolean',
967
- '$expanded:expanded',
968
- './components/ui-combobox/ui-combobox.html: HR007: Reference expanded does not satisfy its declared type.',
878
+ !(warnUnless(
879
+ internalItems.value?.['0'] == null
880
+ || (typeof internalItems.value?.['0'] === 'object' && internalItems.value?.['0'] !== null
881
+ && !Array.isArray(internalItems.value?.['0'])),
882
+ '$required and not ($multiple and $internalItems.0):internalItems.0',
883
+ './components/ui-combobox/ui-combobox.html: HR007: Reference internalItems.0 does not satisfy its declared type.',
969
884
  ))
970
885
  ) return guardedBinding3Previous
971
- return guardedBinding3Previous = expanded.value
886
+ return guardedBinding3Previous = checkedProps.value.required
887
+ && !(checkedProps.value.multiple && internalItems.value[0])
972
888
  })
973
889
  let guardedBinding4Previous: any
974
890
  const guardedBinding4 = computed(() => {
975
891
  if (
976
- !(htmlNextAuthoredCheck2(
977
- validationStatus.value == null || typeof validationStatus.value === 'string',
978
- '$invalid or $validationStatus = \'error\':validationStatus',
979
- './components/ui-combobox/ui-combobox.html: HR007: Reference validationStatus does not satisfy its declared type.',
892
+ !(warnUnless(
893
+ selected.value == null || (typeof selected.value === 'string' || selected.value === null),
894
+ '$disabled or $readonly or (not $raw and ($multiple or $selected = null)):selected',
895
+ './components/ui-combobox/ui-combobox.html: HR007: Reference selected does not satisfy its declared type.',
980
896
  ))
981
897
  ) return guardedBinding4Previous
982
- return guardedBinding4Previous = checkedProps.value.invalid || validationStatus.value === 'error'
898
+ return guardedBinding4Previous = checkedProps.value.disabled || checkedProps.value.readonly
899
+ || (!raw.value && (checkedProps.value.multiple || selected.value === null))
983
900
  })
984
- let guardedBinding5Previous: any
901
+ let guardedBinding5Previous: any = null
985
902
  const guardedBinding5 = computed(() => {
986
- if (
987
- !(htmlNextAuthoredCheck2(
988
- validationStatus.value == null || typeof validationStatus.value === 'string',
989
- '$loading or $validationStatus = \'pending\':validationStatus',
990
- './components/ui-combobox/ui-combobox.html: HR007: Reference validationStatus does not satisfy its declared type.',
991
- ))
992
- ) return guardedBinding5Previous
993
- return guardedBinding5Previous = checkedProps.value.loading
994
- || validationStatus.value === 'pending'
903
+ const candidate: any = concat(uid.value, '-listbox')
904
+ if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding5Previous
905
+ return guardedBinding5Previous = candidate
995
906
  })
996
- let guardedBinding6Previous: any
907
+ let guardedBinding6Previous: any = null
997
908
  const guardedBinding6 = computed(() => {
998
- if (
999
- !(htmlNextAuthoredCheck2(
1000
- display.value == null || typeof display.value === 'string',
1001
- '$display:display',
1002
- './components/ui-combobox/ui-combobox.html: HR007: Reference display does not satisfy its declared type.',
1003
- ))
1004
- ) return guardedBinding6Previous
1005
- return guardedBinding6Previous = display.value
909
+ const candidate: any = concat(uid.value, '-help')
910
+ if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding6Previous
911
+ return guardedBinding6Previous = candidate
1006
912
  })
1007
- let guardedBinding7Previous: any
913
+ let guardedBinding7Previous: any = null
1008
914
  const guardedBinding7 = computed(() => {
1009
- if (
1010
- !(htmlNextAuthoredCheck2(
1011
- internalItems.value?.['0'] == null
1012
- || (typeof internalItems.value?.['0'] === 'object' && internalItems.value?.['0'] !== null
1013
- && !Array.isArray(internalItems.value?.['0'])),
1014
- '$required and not ($multiple and $internalItems.0):internalItems.0',
1015
- './components/ui-combobox/ui-combobox.html: HR007: Reference internalItems.0 does not satisfy its declared type.',
1016
- ))
1017
- ) return guardedBinding7Previous
1018
- return guardedBinding7Previous = checkedProps.value.required
1019
- && !(checkedProps.value.multiple && internalItems.value[0])
915
+ const candidate: any = concat(uid.value, '-help-text')
916
+ if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding7Previous
917
+ return guardedBinding7Previous = candidate
1020
918
  })
1021
- let guardedBinding8Previous: any
919
+ let guardedBinding8Previous: any = null
1022
920
  const guardedBinding8 = computed(() => {
1023
- if (
1024
- !(htmlNextAuthoredCheck2(
1025
- submitted.value == null || typeof submitted.value === 'string',
1026
- '$submitted:submitted',
1027
- './components/ui-combobox/ui-combobox.html: HR007: Reference submitted does not satisfy its declared type.',
1028
- ))
1029
- ) return guardedBinding8Previous
1030
- return guardedBinding8Previous = submitted.value
921
+ const candidate: any = concat(uid.value, '-help')
922
+ if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding8Previous
923
+ return guardedBinding8Previous = candidate
1031
924
  })
1032
- let guardedBinding9Previous: any
925
+ let guardedBinding9Previous: any = null
1033
926
  const guardedBinding9 = computed(() => {
1034
- if (
1035
- !(htmlNextAuthoredCheck2(
1036
- raw.value == null || typeof raw.value === 'string',
1037
- '$disabled or $readonly or (not $raw and ($multiple or $selected = null)):raw',
1038
- './components/ui-combobox/ui-combobox.html: HR007: Reference raw does not satisfy its declared type.',
1039
- )
1040
- && htmlNextAuthoredCheck2(
1041
- selected.value == null || (typeof selected.value === 'string' || selected.value === null),
1042
- '$disabled or $readonly or (not $raw and ($multiple or $selected = null)):selected',
1043
- './components/ui-combobox/ui-combobox.html: HR007: Reference selected does not satisfy its declared type.',
1044
- ))
1045
- ) return guardedBinding9Previous
1046
- return guardedBinding9Previous = checkedProps.value.disabled || checkedProps.value.readonly
1047
- || (!raw.value && (checkedProps.value.multiple || selected.value === null))
927
+ const candidate: any = concat(uid.value, '-listbox')
928
+ if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding9Previous
929
+ return guardedBinding9Previous = candidate
1048
930
  })
1049
931
  let guardedBinding10Previous: any = null
1050
932
  const guardedBinding10 = computed(() => {
1051
- if (
1052
- !(htmlNextAuthoredCheck2(
1053
- uid.value == null || typeof uid.value === 'string',
1054
- 'concat($uid, \'-listbox\'):uid',
1055
- './components/ui-combobox/ui-combobox.html: HR007: Reference uid does not satisfy its declared type.',
1056
- ))
1057
- ) return guardedBinding10Previous
1058
- const candidate: any = concat(uid.value, '-listbox')
933
+ const candidate: any = concat(checkedProps.value.label, ' suggestions')
1059
934
  if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding10Previous
1060
935
  return guardedBinding10Previous = candidate
1061
936
  })
1062
- let guardedBinding11Previous: any = null
937
+ let guardedBinding11Previous: any
1063
938
  const guardedBinding11 = computed(() => {
1064
939
  if (
1065
- !(htmlNextAuthoredCheck2(
1066
- uid.value == null || typeof uid.value === 'string',
1067
- 'concat($uid, \'-help\'):uid',
1068
- './components/ui-combobox/ui-combobox.html: HR007: Reference uid does not satisfy its declared type.',
940
+ !(warnUnless(
941
+ active.value == null || Number.isInteger(active.value),
942
+ '$createIndex = $active:active',
943
+ './components/ui-combobox/ui-combobox.html: HR007: Reference active does not satisfy its declared type.',
1069
944
  ))
1070
945
  ) return guardedBinding11Previous
1071
- const candidate: any = concat(uid.value, '-help')
1072
- if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding11Previous
1073
- return guardedBinding11Previous = candidate
946
+ return guardedBinding11Previous = createIndex.value === active.value
1074
947
  })
1075
948
  let guardedBinding12Previous: any = null
1076
949
  const guardedBinding12 = computed(() => {
1077
- if (
1078
- !(htmlNextAuthoredCheck2(
1079
- uid.value == null || typeof uid.value === 'string',
1080
- 'concat($uid, \'-help-text\'):uid',
1081
- './components/ui-combobox/ui-combobox.html: HR007: Reference uid does not satisfy its declared type.',
1082
- ))
1083
- ) return guardedBinding12Previous
1084
- const candidate: any = concat(uid.value, '-help-text')
950
+ const candidate: any = concat(uid.value, '-option-', createIndex.value)
1085
951
  if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding12Previous
1086
952
  return guardedBinding12Previous = candidate
1087
953
  })
1088
954
  let guardedBinding13Previous: any = null
1089
955
  const guardedBinding13 = computed(() => {
1090
- if (
1091
- !(htmlNextAuthoredCheck2(
1092
- uid.value == null || typeof uid.value === 'string',
1093
- 'concat($uid, \'-help\'):uid',
1094
- './components/ui-combobox/ui-combobox.html: HR007: Reference uid does not satisfy its declared type.',
1095
- ))
1096
- ) return guardedBinding13Previous
1097
- const candidate: any = concat(uid.value, '-help')
956
+ const candidate: any = concat('Create “', raw.value, '”')
1098
957
  if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding13Previous
1099
958
  return guardedBinding13Previous = candidate
1100
959
  })
1101
- let guardedBinding14Previous: any
960
+ let guardedBinding14Previous: any = null
1102
961
  const guardedBinding14 = computed(() => {
1103
- if (
1104
- !(htmlNextAuthoredCheck2(
1105
- expanded.value == null || typeof expanded.value === 'boolean',
1106
- 'not $expanded:expanded',
1107
- './components/ui-combobox/ui-combobox.html: HR007: Reference expanded does not satisfy its declared type.',
1108
- ))
1109
- ) return guardedBinding14Previous
1110
- return guardedBinding14Previous = !expanded.value
1111
- })
1112
- let guardedBinding15Previous: any = null
1113
- const guardedBinding15 = computed(() => {
1114
- if (
1115
- !(htmlNextAuthoredCheck2(
1116
- uid.value == null || typeof uid.value === 'string',
1117
- 'concat($uid, \'-listbox\'):uid',
1118
- './components/ui-combobox/ui-combobox.html: HR007: Reference uid does not satisfy its declared type.',
1119
- ))
1120
- ) return guardedBinding15Previous
1121
- const candidate: any = concat(uid.value, '-listbox')
1122
- if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding15Previous
1123
- return guardedBinding15Previous = candidate
1124
- })
1125
- let guardedBinding16Previous: any = null
1126
- const guardedBinding16 = computed(() => {
1127
- const candidate: any = concat(checkedProps.value.label, ' suggestions')
1128
- if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding16Previous
1129
- return guardedBinding16Previous = candidate
1130
- })
1131
- let guardedBinding17Previous: any
1132
- const guardedBinding17 = computed(() => {
1133
- if (
1134
- !(htmlNextAuthoredCheck2(
1135
- active.value == null || Number.isInteger(active.value),
1136
- '$createIndex = $active:active',
1137
- './components/ui-combobox/ui-combobox.html: HR007: Reference active does not satisfy its declared type.',
1138
- )
1139
- && htmlNextAuthoredCheck2(
1140
- createIndex.value == null || Number.isInteger(createIndex.value),
1141
- '$createIndex = $active:createIndex',
1142
- './components/ui-combobox/ui-combobox.html: HR007: Reference createIndex does not satisfy its declared type.',
1143
- ))
1144
- ) return guardedBinding17Previous
1145
- return guardedBinding17Previous = createIndex.value === active.value
1146
- })
1147
- let guardedBinding18Previous: any = null
1148
- const guardedBinding18 = computed(() => {
1149
- if (
1150
- !(htmlNextAuthoredCheck2(
1151
- createIndex.value == null || Number.isInteger(createIndex.value),
1152
- 'concat($uid, \'-option-\', $createIndex):createIndex',
1153
- './components/ui-combobox/ui-combobox.html: HR007: Reference createIndex does not satisfy its declared type.',
1154
- )
1155
- && htmlNextAuthoredCheck2(
1156
- uid.value == null || typeof uid.value === 'string',
1157
- 'concat($uid, \'-option-\', $createIndex):uid',
1158
- './components/ui-combobox/ui-combobox.html: HR007: Reference uid does not satisfy its declared type.',
1159
- ))
1160
- ) return guardedBinding18Previous
1161
- const candidate: any = concat(uid.value, '-option-', createIndex.value)
1162
- if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding18Previous
1163
- return guardedBinding18Previous = candidate
1164
- })
1165
- let guardedBinding19Previous: any
1166
- const guardedBinding19 = computed(() => {
1167
- if (
1168
- !(htmlNextAuthoredCheck2(
1169
- createIndex.value == null || Number.isInteger(createIndex.value),
1170
- '$createIndex:createIndex',
1171
- './components/ui-combobox/ui-combobox.html: HR007: Reference createIndex does not satisfy its declared type.',
1172
- ))
1173
- ) return guardedBinding19Previous
1174
- return guardedBinding19Previous = createIndex.value
1175
- })
1176
- let guardedBinding20Previous: any = null
1177
- const guardedBinding20 = computed(() => {
1178
- if (
1179
- !(htmlNextAuthoredCheck2(
1180
- raw.value == null || typeof raw.value === 'string',
1181
- 'concat(\'Create “\', $raw, \'”\'):raw',
1182
- './components/ui-combobox/ui-combobox.html: HR007: Reference raw does not satisfy its declared type.',
1183
- ))
1184
- ) return guardedBinding20Previous
1185
- const candidate: any = concat('Create “', raw.value, '”')
1186
- if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding20Previous
1187
- return guardedBinding20Previous = candidate
1188
- })
1189
- let guardedBinding21Previous: any
1190
- const guardedBinding21 = computed(() => {
1191
- if (
1192
- !(htmlNextAuthoredCheck2(
1193
- message.value == null || typeof message.value === 'string',
1194
- '$message:message',
1195
- './components/ui-combobox/ui-combobox.html: HR007: Reference message does not satisfy its declared type.',
1196
- ))
1197
- ) return guardedBinding21Previous
1198
- return guardedBinding21Previous = message.value
1199
- })
1200
- let guardedBinding22Previous: any = null
1201
- const guardedBinding22 = computed(() => {
1202
- if (
1203
- !(htmlNextAuthoredCheck2(
1204
- uid.value == null || typeof uid.value === 'string',
1205
- 'concat($uid, \'-validation\'):uid',
1206
- './components/ui-combobox/ui-combobox.html: HR007: Reference uid does not satisfy its declared type.',
1207
- ))
1208
- ) return guardedBinding22Previous
1209
962
  const candidate: any = concat(uid.value, '-validation')
1210
- if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding22Previous
1211
- return guardedBinding22Previous = candidate
1212
- })
1213
- let guardedBinding23Previous: any
1214
- const guardedBinding23 = computed(() => {
1215
- if (
1216
- !(htmlNextAuthoredCheck2(
1217
- statusText.value == null || typeof statusText.value === 'string',
1218
- '$statusText:statusText',
1219
- './components/ui-combobox/ui-combobox.html: HR007: Reference statusText does not satisfy its declared type.',
1220
- ))
1221
- ) return guardedBinding23Previous
1222
- return guardedBinding23Previous = statusText.value
963
+ if (candidate === Symbol.for('html-next.invalid-result')) return guardedBinding14Previous
964
+ return guardedBinding14Previous = candidate
1223
965
  })
1224
966
  provide('html-next:ui-combobox:internalItems', internalItems)
1225
967
  provide('html-next:ui-combobox:raw', raw)
@@ -1239,22 +981,7 @@ provide('html-next:ui-combobox:createIndex', createIndex)
1239
981
  provide('html-next:ui-combobox:message', message)
1240
982
  provide('html-next:ui-combobox:statusText', statusText)
1241
983
  provide('html-next:ui-combobox:validationStatus', validationStatus)
1242
- const hydrationNode = hydrationInstance?.vnode.el
1243
- if (
1244
- typeof window !== 'undefined' && hydrationNode != null
1245
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('div'))
1246
- ) {
1247
- throw Object.assign(
1248
- new Error('HR005: Server markup for <ui-combobox> has an incompatible root.'),
1249
- {
1250
- name: 'HtmlDiagnosticError',
1251
- diagnostic: Object.freeze({
1252
- code: 'HR005',
1253
- message: 'Server markup for <ui-combobox> has an incompatible root.',
1254
- }),
1255
- },
1256
- )
1257
- }
984
+ checkHydratedRoot('div', 'ui-combobox')
1258
985
 
1259
986
  /** The values the styles' :host-state() rules test. */
1260
987
  const hostState = computed(() =>
@@ -1868,62 +1595,11 @@ useComponentHost(() => import('../components/ui-combobox/ui-combobox.js'), {
1868
1595
  validationStatus,
1869
1596
  },
1870
1597
  })
1871
-
1872
- function text(value: unknown): string {
1873
- if (Array.isArray(value)) return value.map(text).join(' ')
1874
- return value === null || value === undefined || typeof value === 'object' ? '' : String(value)
1875
- }
1876
-
1877
- // A nonempty scalar call cannot produce the invalid-result sentinel.
1878
- type ConcatResult<T extends unknown[]> = T extends
1879
- [
1880
- string | number | boolean | null | undefined,
1881
- ...(string | number | boolean | null | undefined)[],
1882
- ] ? string | undefined
1883
- : string | symbol | undefined
1884
- function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
1885
- if (values.some(value => value === Symbol.for('html-next.invalid-result'))) {
1886
- return Symbol.for('html-next.invalid-result') as ConcatResult<T>
1887
- }
1888
- if (values.some(value => value === undefined)) return undefined as ConcatResult<T>
1889
- if (values.length === 0 || values.some(value => typeof value === 'object' && value !== null)) {
1890
- return Symbol.for('html-next.invalid-result') as ConcatResult<T>
1891
- }
1892
- return values.map(value => value === null ? '' : String(value)).join('') as ConcatResult<T>
1893
- }
1894
-
1895
- function uniqueKeys<T>(
1896
- items: readonly T[],
1897
- keyOf: (
1898
- item: T,
1899
- index: number,
1900
- loop: { index: number; first: boolean; last: boolean; count: number },
1901
- ) => unknown,
1902
- ): readonly T[] {
1903
- const seen = new Set<unknown>()
1904
- for (let index = 0; index < items.length; index += 1) {
1905
- const key = keyOf(items[index]!, index, {
1906
- index,
1907
- first: index === 0,
1908
- last: index === items.length - 1,
1909
- count: items.length,
1910
- })
1911
- if (seen.has(key)) {
1912
- const message = `A keyed list produced duplicate key \`${text(key)}\`.`
1913
- throw Object.assign(new Error(`HR004: ${message}`), {
1914
- name: 'HtmlDiagnosticError',
1915
- diagnostic: Object.freeze({ code: 'HR004', message }),
1916
- })
1917
- }
1918
- seen.add(key)
1919
- }
1920
- return items
1921
- }
1922
1598
  </script>
1923
1599
 
1924
1600
  <template>
1925
1601
  <div
1926
- data-component="ui-combobox"
1602
+ class="ui-combobox"
1927
1603
  v-bind="nativeAttrs($attrs)"
1928
1604
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
1929
1605
  :data-allow-create="reflectedProp('allowCreate', 'allow-create', checkedProps.allowCreate, undefined, false)"
@@ -1979,7 +1655,9 @@ function uniqueKeys<T>(
1979
1655
  :disabled="checkedProps.disabled || checkedProps.readonly || item.disabled"
1980
1656
  :aria-label="concat(item.label, ', press Delete or Backspace to remove')"
1981
1657
  >
1982
- <slot :name="concat('item-', item.id)"><UiBadge>{{ item.label }}</UiBadge></slot>
1658
+ <slot :name="concat('item-', item.id)"><UiBadge class="ui-badge">{{
1659
+ item.label
1660
+ }}</UiBadge></slot>
1983
1661
  </button></KeyedBoundary></template>
1984
1662
  <input
1985
1663
  role="combobox"
@@ -1988,13 +1666,13 @@ function uniqueKeys<T>(
1988
1666
  v-bind-control="{ tag: 'input', name: 'value', value: display, nativeProperty: true, defaultValue: '' }"
1989
1667
  :id="guardedBinding"
1990
1668
  :aria-controls="guardedBinding2"
1991
- :aria-expanded="guardedBinding3"
1992
- :aria-invalid="guardedBinding4"
1993
- :aria-busy="guardedBinding5"
1669
+ :aria-expanded="expanded"
1670
+ :aria-invalid="checkedProps.invalid || validationStatus === 'error'"
1671
+ :aria-busy="checkedProps.loading || validationStatus === 'pending'"
1994
1672
  :placeholder="checkedProps.placeholder ?? undefined"
1995
1673
  :disabled="checkedProps.disabled ?? undefined"
1996
1674
  :readonly="checkedProps.readonly ?? undefined"
1997
- :required="guardedBinding7"
1675
+ :required="guardedBinding3"
1998
1676
  ref="inputElement"
1999
1677
  >
2000
1678
  </div>
@@ -2002,7 +1680,7 @@ function uniqueKeys<T>(
2002
1680
  v-if="checkedProps.name && !checkedProps.multiple"
2003
1681
  type="hidden"
2004
1682
  :name="checkedProps.name ?? undefined"
2005
- :value.attr="guardedBinding8"
1683
+ :value.attr="submitted"
2006
1684
  :disabled="checkedProps.disabled ?? undefined"
2007
1685
  >
2008
1686
  <template v-if="checkedProps.name && checkedProps.multiple"><KeyedBoundary><input
@@ -2018,7 +1696,7 @@ function uniqueKeys<T>(
2018
1696
  type="button"
2019
1697
  data-combobox-action="clear"
2020
1698
  aria-label="Clear"
2021
- :disabled="guardedBinding9"
1699
+ :disabled="guardedBinding4"
2022
1700
  >
2023
1701
  <svg
2024
1702
  class="affordance-icon"
@@ -2038,7 +1716,7 @@ function uniqueKeys<T>(
2038
1716
  data-combobox-action="disclosure"
2039
1717
  tabindex="-1"
2040
1718
  aria-label="Show suggestions"
2041
- :aria-controls="guardedBinding10"
1719
+ :aria-controls="guardedBinding5"
2042
1720
  :disabled="checkedProps.disabled || checkedProps.readonly"
2043
1721
  >
2044
1722
  <svg
@@ -2060,7 +1738,7 @@ function uniqueKeys<T>(
2060
1738
  class="help"
2061
1739
  type="button"
2062
1740
  aria-label="Help"
2063
- :id="guardedBinding11"
1741
+ :id="guardedBinding6"
2064
1742
  :disabled="checkedProps.disabled ?? undefined"
2065
1743
  >
2066
1744
  <svg
@@ -2081,15 +1759,16 @@ function uniqueKeys<T>(
2081
1759
  </div>
2082
1760
  <UiTooltip
2083
1761
  v-if="checkedProps.help"
1762
+ class="ui-tooltip"
2084
1763
  trigger="click"
2085
- :id="guardedBinding12"
2086
- :for="guardedBinding13"
1764
+ :id="guardedBinding7"
1765
+ :for="guardedBinding8"
2087
1766
  >{{ checkedProps.help }}</UiTooltip>
2088
- <div class="popup" :hidden="guardedBinding14" ref="popupElement">
1767
+ <div class="popup" :hidden="!expanded" ref="popupElement">
2089
1768
  <div
2090
1769
  role="listbox"
2091
- :id="guardedBinding15"
2092
- :aria-label="guardedBinding16"
1770
+ :id="guardedBinding9"
1771
+ :aria-label="guardedBinding10"
2093
1772
  :aria-busy="checkedProps.loading ?? undefined"
2094
1773
  ref="listboxElement"
2095
1774
  >
@@ -2122,6 +1801,7 @@ function uniqueKeys<T>(
2122
1801
  }}</span>
2123
1802
  <UiBadge
2124
1803
  v-if="row.tag"
1804
+ class="ui-badge"
2125
1805
  :tone="row.tag?.tone"
2126
1806
  :style="{ '--ui-badge-color': row.tag?.color ?? undefined }"
2127
1807
  ><span :id="concat(uid, '-option-', row.index, '-tag')">{{
@@ -2142,13 +1822,13 @@ function uniqueKeys<T>(
2142
1822
  data-ui-choice-option=""
2143
1823
  aria-selected="false"
2144
1824
  :data-multiple="checkedProps.multiple ? '' : undefined"
2145
- :id="guardedBinding18"
2146
- :data-index="guardedBinding19"
2147
- :class="{ active: guardedBinding17 }"
1825
+ :id="guardedBinding12"
1826
+ :data-index="createIndex"
1827
+ :class="{ active: guardedBinding11 }"
2148
1828
  >
2149
- {{ guardedBinding20 }}
1829
+ {{ guardedBinding13 }}
2150
1830
  </div>
2151
- <div v-if="message" class="message">{{ guardedBinding21 }}</div>
1831
+ <div v-if="message" class="message">{{ message }}</div>
2152
1832
  <div
2153
1833
  v-if="!checkedProps.loading && !(rows[0]) && !creatable && !lookupError"
2154
1834
  class="message"
@@ -2158,14 +1838,12 @@ function uniqueKeys<T>(
2158
1838
  </div>
2159
1839
  <slot name="footer" />
2160
1840
  </div>
2161
- <div class="message" :id="guardedBinding22" :hidden="!validation.issues.length">
1841
+ <div class="message" :id="guardedBinding14" :hidden="!validation.issues.length">
2162
1842
  <div v-for="(issue, indexLoop3) in validation.issues" :key="indexLoop3">
2163
1843
  {{ issue.message }}
2164
1844
  </div>
2165
1845
  </div>
2166
- <div class="sr-only" role="status" aria-live="polite" aria-atomic="true">
2167
- {{ guardedBinding23 }}
2168
- </div>
1846
+ <div class="sr-only" role="status" aria-live="polite" aria-atomic="true">{{ statusText }}</div>
2169
1847
  <div class="authored-options" hidden="" aria-hidden="true" ref="optionsElement"><slot /></div>
2170
1848
  </div>
2171
1849
  </template>
@@ -2236,353 +1914,349 @@ function uniqueKeys<T>(
2236
1914
  syntax: "*";
2237
1915
  inherits: false;
2238
1916
  }
2239
-
2240
- [data-component~="ui-combobox"] {
2241
- /* Hooks do not inherit, so the parts below read them from the root. */
2242
- --_ui-combobox-label-text: var(--ui-combobox-label-text);
2243
- --_ui-combobox-label-font-size: var(--ui-combobox-label-font-size);
2244
- --_ui-combobox-affordance-text: var(--ui-combobox-affordance-text);
2245
- --_ui-combobox-max-block-size: var(--ui-combobox-max-block-size);
2246
- --_ui-combobox-option-text: var(--ui-combobox-option-text);
2247
- --_ui-combobox-message-text: var(--ui-combobox-message-text);
2248
- --_ui-combobox-option-check: var(--ui-combobox-option-check);
2249
- --_ui-combobox-item-min-block-size: var(--ui-combobox-item-min-block-size);
2250
- --_ui-combobox-item-input-min-inline-size: var(--ui-combobox-item-input-min-inline-size);
2251
- --_ui-combobox-item-item-max-inline-size: var(--ui-combobox-item-item-max-inline-size);
2252
- --_ui-combobox-radius: var(--ui-combobox-radius);
2253
- --_ui-combobox-invalid-border: var(--ui-combobox-invalid-border);
2254
- --_ui-combobox-popup-surface: var(--ui-combobox-popup-surface);
2255
- --_ui-combobox-popup-border: var(--ui-combobox-popup-border);
2256
- --_ui-combobox-popup-radius: var(--ui-combobox-popup-radius);
2257
- --_ui-combobox-popup-shadow: var(--ui-combobox-popup-shadow);
2258
-
2259
- --_row: var(--ui-control-size-md);
2260
- display: grid;
2261
- gap: var(--ui-space-1);
2262
- min-inline-size: 0;
2263
- color: var(--ui-text-primary);
2264
- font: inherit;
2265
- }
2266
- label {
2267
- color: var(--_ui-combobox-label-text, var(--ui-text-primary));
2268
- font-size: var(--_ui-combobox-label-font-size, var(--ui-font-size-sm));
2269
- font-weight: 500;
2270
- }
2271
1917
  /* The field and anything that annotates it sit on one row; the help button is beside the box,
2272
1918
  not inside it, because a control's box holds its value. */
2273
- .control {
2274
- display: flex;
2275
- align-items: center;
2276
- gap: var(--ui-space-2);
2277
- min-inline-size: 0;
2278
- }
2279
-
2280
- .field {
2281
- box-sizing: border-box;
2282
- min-block-size: var(--_row);
2283
- flex: 1 1 auto;
2284
- display: flex;
2285
- min-inline-size: 0;
2286
- border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-default));
2287
- border-radius: var(--_ui-combobox-radius, var(--ui-field-radius, var(--ui-radius-md)));
2288
- background: var(--ui-control-surface, var(--ui-surface-default));
2289
- box-shadow: var(--ui-control-inset);
2290
- transition:
2291
- border-color var(--ui-motion-fast) var(--ui-motion-ease),
2292
- box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
2293
- }
2294
- .field:focus-within {
2295
- border-color: var(--ui-control-focus, var(--ui-accent-solid));
2296
- box-shadow:
2297
- var(--ui-control-inset),
2298
- var(--ui-control-focus-halo-shadow);
2299
- }
2300
- .entry {
2301
- display: flex;
2302
- flex: 1 1 auto;
2303
- min-inline-size: 0;
2304
- }
2305
1919
  /* A ghost icon button: the affordance is the mark, not a box around it. */
2306
- .help {
2307
- flex: none;
2308
- display: inline-flex;
2309
- align-items: center;
2310
- justify-content: center;
2311
- inline-size: var(--ui-control-size-sm);
2312
- block-size: var(--ui-control-size-sm);
2313
- padding: 0;
2314
- border: 0;
2315
- border-radius: var(--ui-radius-round);
2316
- background: transparent;
2317
- color: var(--ui-text-secondary);
2318
- cursor: pointer;
2319
- transition:
2320
- background-color var(--ui-motion-fast) var(--ui-motion-ease),
2321
- color var(--ui-motion-fast) var(--ui-motion-ease);
2322
- }
1920
+ /* A row with a tag or a description: the label and its tag on one line, the description under them. */
2323
1921
 
2324
- .help:hover:enabled,
2325
- .help[aria-expanded="true"] {
2326
- background: color-mix(in srgb, currentColor 8%, transparent);
2327
- color: var(--ui-text-primary);
2328
- }
1922
+ /* Multiple mode keeps one control height. Chips and the input scroll within the entry,
1923
+ while the clear and disclosure controls remain fixed at the end of the field. */
1924
+ /* Size variants keep their control height as selections are added. */
1925
+ /* A large multiple field starts at the large control height, as sm starts at the small one. */
2329
1926
 
2330
- .help:focus-visible {
2331
- outline: none;
2332
- box-shadow: var(--ui-focus-halo);
2333
- }
1927
+ /* A component that sets its display still honours the hidden attribute on its root. */
2334
1928
 
2335
- .help:disabled {
2336
- color: var(--ui-disabled-text);
2337
- cursor: not-allowed;
2338
- }
1929
+ @scope (.ui-combobox) to (.ui-badge, .ui-tooltip) {
1930
+ :scope:where(:scope) {
1931
+ /* Hooks do not inherit, so the parts below read them from the root. */
1932
+ --_ui-combobox-label-text: var(--ui-combobox-label-text);
1933
+ --_ui-combobox-label-font-size: var(--ui-combobox-label-font-size);
1934
+ --_ui-combobox-affordance-text: var(--ui-combobox-affordance-text);
1935
+ --_ui-combobox-max-block-size: var(--ui-combobox-max-block-size);
1936
+ --_ui-combobox-option-text: var(--ui-combobox-option-text);
1937
+ --_ui-combobox-message-text: var(--ui-combobox-message-text);
1938
+ --_ui-combobox-option-check: var(--ui-combobox-option-check);
1939
+ --_ui-combobox-item-min-block-size: var(--ui-combobox-item-min-block-size);
1940
+ --_ui-combobox-item-input-min-inline-size: var(--ui-combobox-item-input-min-inline-size);
1941
+ --_ui-combobox-item-item-max-inline-size: var(--ui-combobox-item-item-max-inline-size);
1942
+ --_ui-combobox-radius: var(--ui-combobox-radius);
1943
+ --_ui-combobox-invalid-border: var(--ui-combobox-invalid-border);
1944
+ --_ui-combobox-popup-surface: var(--ui-combobox-popup-surface);
1945
+ --_ui-combobox-popup-border: var(--ui-combobox-popup-border);
1946
+ --_ui-combobox-popup-radius: var(--ui-combobox-popup-radius);
1947
+ --_ui-combobox-popup-shadow: var(--ui-combobox-popup-shadow);
2339
1948
 
2340
- .help-icon {
2341
- inline-size: var(--ui-icon-size-sm);
2342
- block-size: var(--ui-icon-size-sm);
2343
- }
1949
+ --_row: var(--ui-control-size-md);
1950
+ display: grid;
1951
+ gap: var(--ui-space-1);
1952
+ min-inline-size: 0;
1953
+ color: var(--ui-text-primary);
1954
+ font: inherit;
1955
+ }
1956
+ label {
1957
+ color: var(--_ui-combobox-label-text, var(--ui-text-primary));
1958
+ font-size: var(--_ui-combobox-label-font-size, var(--ui-font-size-sm));
1959
+ font-weight: 500;
1960
+ }
1961
+ .control {
1962
+ display: flex;
1963
+ align-items: center;
1964
+ gap: var(--ui-space-2);
1965
+ min-inline-size: 0;
1966
+ }
2344
1967
 
2345
- input::selection {
2346
- background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
2347
- color: inherit;
2348
- }
2349
- input {
2350
- appearance: none;
2351
- width: 100%;
2352
- min-inline-size: 0;
2353
- min-block-size: calc(var(--_row) - 2 * var(--ui-border-width));
2354
- box-sizing: border-box;
2355
- border: 0;
2356
- border-radius: inherit;
2357
- background: transparent;
2358
- color: inherit;
2359
- font: inherit;
2360
- line-height: var(--ui-line-height-tight);
2361
- padding: var(--ui-space-2) var(--ui-space-3);
2362
- margin: 0;
2363
- outline: none;
2364
- }
2365
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] {
2366
- --_row: var(--ui-control-size-sm);
2367
- }
2368
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input {
2369
- padding: var(--ui-space-1) var(--ui-space-2);
2370
- font-size: var(--ui-font-size-sm);
2371
- }
2372
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"] {
2373
- --_row: var(--ui-control-size-lg);
2374
- }
2375
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"] input {
2376
- padding: var(--ui-space-3) var(--ui-space-4);
2377
- font-size: var(--ui-font-size-md);
2378
- }
2379
- button {
2380
- appearance: none;
2381
- display: inline-grid;
2382
- place-items: center;
2383
- align-self: stretch;
2384
- border: 0;
2385
- border-radius: var(--ui-radius-md);
2386
- background: transparent;
2387
- color: var(--_ui-combobox-affordance-text, var(--ui-text-secondary));
2388
- font: inherit;
2389
- font-weight: 400;
2390
- min-inline-size: 2rem;
2391
- padding: 0 var(--ui-space-1);
2392
- cursor: pointer;
2393
- }
2394
- .affordance-icon {
2395
- display: block;
2396
- inline-size: var(--ui-icon-size-sm);
2397
- block-size: var(--ui-icon-size-sm);
2398
- }
2399
- button:hover:enabled {
2400
- background: var(--ui-surface-muted);
2401
- color: var(--ui-text-primary);
2402
- }
2403
- button:focus-visible {
2404
- outline: none;
2405
- background: var(--ui-surface-muted);
2406
- box-shadow: inset 0 0 0 var(--ui-focus-width)
2407
- color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
2408
- }
2409
- input:disabled, button:disabled {
2410
- color: var(--ui-disabled-text);
2411
- cursor: not-allowed;
2412
- }
2413
- .field:has(input:disabled) {
2414
- background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
2415
- }
2416
- [data-component~="ui-combobox"][data-ui-combobox-state~="validationStatus=error"] .field,
2417
- [data-component~="ui-combobox"][data-ui-combobox-state~="invalid"] .field {
2418
- border-color: var(
2419
- --_ui-combobox-invalid-border,
2420
- var(--ui-field-danger, var(--ui-danger-solid, var(--ui-accent-active)))
2421
- );
2422
- }
2423
- .popup {
2424
- box-sizing: border-box;
2425
- min-inline-size: 12rem;
2426
- max-inline-size: calc(100vw - 1rem);
2427
- max-block-size: var(--_ui-combobox-max-block-size, 18rem);
2428
- overflow: auto;
2429
- margin: 0;
2430
- padding: var(--ui-space-1);
2431
- border: var(--ui-border-width) solid
2432
- var(--_ui-combobox-popup-border, var(--ui-overlay-border, var(--ui-border-strong)));
2433
- border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
2434
- background: var(
2435
- --_ui-combobox-popup-surface,
2436
- var(--ui-overlay-surface, var(--ui-surface-elevated))
2437
- );
2438
- color: var(--ui-text-primary);
2439
- box-shadow: var(
2440
- --_ui-combobox-popup-shadow,
2441
- var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
2442
- );
2443
- }
2444
- [hidden] {
2445
- display: none;
2446
- }
2447
- .option[aria-disabled="true"] .primary,
2448
- .option[aria-disabled="true"] .secondary {
2449
- color: var(--ui-disabled-text);
2450
- }
2451
- .primary {
2452
- display: block;
2453
- color: var(--_ui-combobox-option-text, inherit);
2454
- font-weight: 500;
2455
- }
2456
- /* A row with a tag or a description: the label and its tag on one line, the description under them. */
2457
- .detail {
2458
- display: grid;
2459
- gap: var(--ui-space-0-5);
2460
- min-inline-size: 0;
2461
- }
2462
- .line {
2463
- display: flex;
2464
- flex-wrap: wrap;
2465
- align-items: center;
2466
- gap: var(--ui-space-2);
2467
- }
2468
- .description {
2469
- color: var(--ui-text-muted);
2470
- font-size: var(--ui-font-size-sm);
2471
- line-height: var(--ui-line-height-md);
2472
- }
2473
- .message, .group {
2474
- color: var(--_ui-combobox-message-text, var(--ui-text-secondary));
2475
- font-weight: 400;
2476
- font-size: var(--ui-font-size-sm);
2477
- line-height: var(--ui-line-height-md);
2478
- overflow-wrap: anywhere;
2479
- }
2480
- .group, .popup .message {
2481
- padding: var(--ui-space-2) var(--ui-space-3);
2482
- }
2483
- .sr-only {
2484
- position: absolute;
2485
- inline-size: 1px;
2486
- block-size: 1px;
2487
- overflow: hidden;
2488
- clip-path: inset(50%);
2489
- white-space: nowrap;
2490
- }
2491
- @media (pointer: coarse) {
2492
- [data-component~="ui-combobox"] {
2493
- --_row: max(var(--ui-control-size-md), var(--ui-control-min-block-size));
1968
+ .field {
1969
+ box-sizing: border-box;
1970
+ min-block-size: var(--_row);
1971
+ flex: 1 1 auto;
1972
+ display: flex;
1973
+ min-inline-size: 0;
1974
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-default));
1975
+ border-radius: var(--_ui-combobox-radius, var(--ui-field-radius, var(--ui-radius-md)));
1976
+ background: var(--ui-control-surface, var(--ui-surface-default));
1977
+ box-shadow: var(--ui-control-inset);
1978
+ transition:
1979
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
1980
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
2494
1981
  }
2495
- button {
2496
- min-inline-size: 2.75rem;
2497
- min-block-size: calc(var(--_row) - 2 * var(--ui-border-width));
1982
+ .field:focus-within {
1983
+ border-color: var(--ui-control-focus, var(--ui-accent-solid));
1984
+ box-shadow:
1985
+ var(--ui-control-inset),
1986
+ var(--ui-control-focus-halo-shadow);
2498
1987
  }
2499
- /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
2500
- body-size text: below 16px, iOS zooms the page into the focused field. */
2501
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] {
2502
- --_row: var(--ui-control-min-block-size);
1988
+ .entry {
1989
+ display: flex;
1990
+ flex: 1 1 auto;
1991
+ min-inline-size: 0;
2503
1992
  }
2504
- [data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"] input {
2505
- font-size: inherit;
1993
+ .help {
1994
+ flex: none;
1995
+ display: inline-flex;
1996
+ align-items: center;
1997
+ justify-content: center;
1998
+ inline-size: var(--ui-control-size-sm);
1999
+ block-size: var(--ui-control-size-sm);
2000
+ padding: 0;
2001
+ border: 0;
2002
+ border-radius: var(--ui-radius-round);
2003
+ background: transparent;
2004
+ color: var(--ui-text-secondary);
2005
+ cursor: pointer;
2006
+ transition:
2007
+ background-color var(--ui-motion-fast) var(--ui-motion-ease),
2008
+ color var(--ui-motion-fast) var(--ui-motion-ease);
2506
2009
  }
2507
- }
2508
- @media (forced-colors: active) {
2509
- .field, .popup {
2510
- border-color: CanvasText;
2010
+
2011
+ .help:hover:enabled, .help[aria-expanded="true"] {
2012
+ background: color-mix(in srgb, currentColor 8%, transparent);
2013
+ color: var(--ui-text-primary);
2511
2014
  }
2512
- .option.active {
2513
- outline-color: Highlight;
2015
+
2016
+ .help:focus-visible {
2017
+ outline: none;
2018
+ box-shadow: var(--ui-focus-halo);
2514
2019
  }
2515
- }
2516
2020
 
2517
- /* Multiple mode keeps one control height. Chips and the input scroll within the entry,
2518
- while the clear and disclosure controls remain fixed at the end of the field. */
2519
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .field {
2520
- align-items: center;
2521
- min-block-size: var(--_ui-combobox-item-min-block-size, var(--_row));
2522
- padding: var(--ui-space-1);
2523
- }
2524
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .entry {
2525
- align-items: center;
2526
- gap: var(--ui-space-1);
2527
- overflow-x: auto;
2528
- scrollbar-width: none;
2529
- }
2530
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] .entry::-webkit-scrollbar {
2531
- display: none;
2532
- }
2533
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"] input {
2534
- flex: 1 0 var(--_ui-combobox-item-input-min-inline-size, 5rem);
2535
- width: auto;
2536
- min-block-size: 1.75rem;
2537
- padding: var(--ui-space-0-5) var(--ui-space-1);
2538
- }
2539
- /* Size variants keep their control height as selections are added. */
2540
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"]
2541
- .field {
2542
- min-block-size: 0;
2543
- padding: var(--ui-space-0-5);
2544
- }
2545
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=sm"]
2546
- input {
2547
- min-block-size: calc(var(--_row) - 2 * var(--ui-border-width) - 2 * var(--ui-space-0-5));
2548
- padding: 0 var(--ui-space-1);
2549
- }
2550
- /* A large multiple field starts at the large control height, as sm starts at the small one. */
2551
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"]
2552
- .field {
2553
- min-block-size: 0;
2554
- }
2555
- [data-component~="ui-combobox"][data-ui-combobox-state~="multiple"][data-component~="ui-combobox"][data-ui-combobox-state~="size=lg"]
2556
- input {
2557
- min-block-size: calc(
2558
- var(--ui-control-size-lg) - 2 * var(--ui-border-width) - 2 * var(--ui-space-1)
2559
- );
2560
- }
2561
- .item {
2562
- appearance: none;
2563
- display: inline-flex;
2564
- flex: none;
2565
- min-inline-size: 0;
2566
- max-inline-size: min(100%, var(--_ui-combobox-item-item-max-inline-size, 12rem));
2567
- overflow: hidden;
2568
- padding: 0;
2569
- border: 0;
2570
- border-radius: var(--ui-radius-sm);
2571
- background: transparent;
2572
- color: inherit;
2573
- font: inherit;
2574
- cursor: default;
2575
- }
2576
- .item:focus-visible {
2577
- outline: var(--ui-focus-width) solid var(--ui-focus-ring);
2578
- outline-offset: var(--ui-border-width);
2579
- }
2580
- .item:disabled {
2581
- color: var(--ui-disabled-text);
2582
- }
2021
+ .help:disabled {
2022
+ color: var(--ui-disabled-text);
2023
+ cursor: not-allowed;
2024
+ }
2583
2025
 
2584
- /* A component that sets its display still honours the hidden attribute on its root. */
2585
- [data-component~="ui-combobox"][hidden] {
2586
- display: none;
2026
+ .help-icon {
2027
+ inline-size: var(--ui-icon-size-sm);
2028
+ block-size: var(--ui-icon-size-sm);
2029
+ }
2030
+
2031
+ input::selection {
2032
+ background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
2033
+ color: inherit;
2034
+ }
2035
+ input {
2036
+ appearance: none;
2037
+ width: 100%;
2038
+ min-inline-size: 0;
2039
+ min-block-size: calc(var(--_row) - 2 * var(--ui-border-width));
2040
+ box-sizing: border-box;
2041
+ border: 0;
2042
+ border-radius: inherit;
2043
+ background: transparent;
2044
+ color: inherit;
2045
+ font: inherit;
2046
+ line-height: var(--ui-line-height-tight);
2047
+ padding: var(--ui-space-2) var(--ui-space-3);
2048
+ margin: 0;
2049
+ outline: none;
2050
+ }
2051
+ :scope:where(:scope):is([data-ui-combobox-state~="size=sm"]) {
2052
+ --_row: var(--ui-control-size-sm);
2053
+ }
2054
+ :scope[data-ui-combobox-state~="size=sm"] input {
2055
+ padding: var(--ui-space-1) var(--ui-space-2);
2056
+ font-size: var(--ui-font-size-sm);
2057
+ }
2058
+ :scope:where(:scope):is([data-ui-combobox-state~="size=lg"]) {
2059
+ --_row: var(--ui-control-size-lg);
2060
+ }
2061
+ :scope[data-ui-combobox-state~="size=lg"] input {
2062
+ padding: var(--ui-space-3) var(--ui-space-4);
2063
+ font-size: var(--ui-font-size-md);
2064
+ }
2065
+ button {
2066
+ appearance: none;
2067
+ display: inline-grid;
2068
+ place-items: center;
2069
+ align-self: stretch;
2070
+ border: 0;
2071
+ border-radius: var(--ui-radius-md);
2072
+ background: transparent;
2073
+ color: var(--_ui-combobox-affordance-text, var(--ui-text-secondary));
2074
+ font: inherit;
2075
+ font-weight: 400;
2076
+ min-inline-size: 2rem;
2077
+ padding: 0 var(--ui-space-1);
2078
+ cursor: pointer;
2079
+ }
2080
+ .affordance-icon {
2081
+ display: block;
2082
+ inline-size: var(--ui-icon-size-sm);
2083
+ block-size: var(--ui-icon-size-sm);
2084
+ }
2085
+ button:hover:enabled {
2086
+ background: var(--ui-surface-muted);
2087
+ color: var(--ui-text-primary);
2088
+ }
2089
+ button:focus-visible {
2090
+ outline: none;
2091
+ background: var(--ui-surface-muted);
2092
+ box-shadow: inset 0 0 0 var(--ui-focus-width)
2093
+ color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
2094
+ }
2095
+ input:disabled, button:disabled {
2096
+ color: var(--ui-disabled-text);
2097
+ cursor: not-allowed;
2098
+ }
2099
+ .field:has(input:disabled) {
2100
+ background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
2101
+ }
2102
+ :scope[data-ui-combobox-state~="validationStatus=error"] .field,
2103
+ :scope[data-ui-combobox-state~="invalid"] .field {
2104
+ border-color: var(
2105
+ --_ui-combobox-invalid-border,
2106
+ var(--ui-field-danger, var(--ui-danger-solid, var(--ui-accent-active)))
2107
+ );
2108
+ }
2109
+ .popup {
2110
+ box-sizing: border-box;
2111
+ min-inline-size: 12rem;
2112
+ max-inline-size: calc(100vw - 1rem);
2113
+ max-block-size: var(--_ui-combobox-max-block-size, 18rem);
2114
+ overflow: auto;
2115
+ margin: 0;
2116
+ padding: var(--ui-space-1);
2117
+ border: var(--ui-border-width) solid
2118
+ var(--_ui-combobox-popup-border, var(--ui-overlay-border, var(--ui-border-strong)));
2119
+ border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
2120
+ background: var(
2121
+ --_ui-combobox-popup-surface,
2122
+ var(--ui-overlay-surface, var(--ui-surface-elevated))
2123
+ );
2124
+ color: var(--ui-text-primary);
2125
+ box-shadow: var(
2126
+ --_ui-combobox-popup-shadow,
2127
+ var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
2128
+ );
2129
+ }
2130
+ [hidden] {
2131
+ display: none;
2132
+ }
2133
+ .option[aria-disabled="true"] .primary, .option[aria-disabled="true"] .secondary {
2134
+ color: var(--ui-disabled-text);
2135
+ }
2136
+ .primary {
2137
+ display: block;
2138
+ color: var(--_ui-combobox-option-text, inherit);
2139
+ font-weight: 500;
2140
+ }
2141
+ .detail {
2142
+ display: grid;
2143
+ gap: var(--ui-space-0-5);
2144
+ min-inline-size: 0;
2145
+ }
2146
+ .line {
2147
+ display: flex;
2148
+ flex-wrap: wrap;
2149
+ align-items: center;
2150
+ gap: var(--ui-space-2);
2151
+ }
2152
+ .description {
2153
+ color: var(--ui-text-muted);
2154
+ font-size: var(--ui-font-size-sm);
2155
+ line-height: var(--ui-line-height-md);
2156
+ }
2157
+ .message, .group {
2158
+ color: var(--_ui-combobox-message-text, var(--ui-text-secondary));
2159
+ font-weight: 400;
2160
+ font-size: var(--ui-font-size-sm);
2161
+ line-height: var(--ui-line-height-md);
2162
+ overflow-wrap: anywhere;
2163
+ }
2164
+ .group, .popup .message {
2165
+ padding: var(--ui-space-2) var(--ui-space-3);
2166
+ }
2167
+ .sr-only {
2168
+ position: absolute;
2169
+ inline-size: 1px;
2170
+ block-size: 1px;
2171
+ overflow: hidden;
2172
+ clip-path: inset(50%);
2173
+ white-space: nowrap;
2174
+ }
2175
+ @media (pointer: coarse) {
2176
+ :scope:where(:scope) {
2177
+ --_row: max(var(--ui-control-size-md), var(--ui-control-min-block-size));
2178
+ }
2179
+ button {
2180
+ min-inline-size: 2.75rem;
2181
+ min-block-size: calc(var(--_row) - 2 * var(--ui-border-width));
2182
+ }
2183
+ /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
2184
+ body-size text: below 16px, iOS zooms the page into the focused field. */
2185
+ :scope:where(:scope):is([data-ui-combobox-state~="size=sm"]) {
2186
+ --_row: var(--ui-control-min-block-size);
2187
+ }
2188
+ :scope[data-ui-combobox-state~="size=sm"] input {
2189
+ font-size: inherit;
2190
+ }
2191
+ }
2192
+ @media (forced-colors: active) {
2193
+ .field, .popup {
2194
+ border-color: CanvasText;
2195
+ }
2196
+ .option.active {
2197
+ outline-color: Highlight;
2198
+ }
2199
+ }
2200
+ :scope[data-ui-combobox-state~="multiple"] .field {
2201
+ align-items: center;
2202
+ min-block-size: var(--_ui-combobox-item-min-block-size, var(--_row));
2203
+ padding: var(--ui-space-1);
2204
+ }
2205
+ :scope[data-ui-combobox-state~="multiple"] .entry {
2206
+ align-items: center;
2207
+ gap: var(--ui-space-1);
2208
+ overflow-x: auto;
2209
+ scrollbar-width: none;
2210
+ }
2211
+ :scope[data-ui-combobox-state~="multiple"] .entry::-webkit-scrollbar {
2212
+ display: none;
2213
+ }
2214
+ :scope[data-ui-combobox-state~="multiple"] input {
2215
+ flex: 1 0 var(--_ui-combobox-item-input-min-inline-size, 5rem);
2216
+ width: auto;
2217
+ min-block-size: 1.75rem;
2218
+ padding: var(--ui-space-0-5) var(--ui-space-1);
2219
+ }
2220
+ :scope[data-ui-combobox-state~="multiple"]:scope[data-ui-combobox-state~="size=sm"] .field {
2221
+ min-block-size: 0;
2222
+ padding: var(--ui-space-0-5);
2223
+ }
2224
+ :scope[data-ui-combobox-state~="multiple"]:scope[data-ui-combobox-state~="size=sm"] input {
2225
+ min-block-size: calc(var(--_row) - 2 * var(--ui-border-width) - 2 * var(--ui-space-0-5));
2226
+ padding: 0 var(--ui-space-1);
2227
+ }
2228
+ :scope[data-ui-combobox-state~="multiple"]:scope[data-ui-combobox-state~="size=lg"] .field {
2229
+ min-block-size: 0;
2230
+ }
2231
+ :scope[data-ui-combobox-state~="multiple"]:scope[data-ui-combobox-state~="size=lg"] input {
2232
+ min-block-size: calc(
2233
+ var(--ui-control-size-lg) - 2 * var(--ui-border-width) - 2 * var(--ui-space-1)
2234
+ );
2235
+ }
2236
+ .item {
2237
+ appearance: none;
2238
+ display: inline-flex;
2239
+ flex: none;
2240
+ min-inline-size: 0;
2241
+ max-inline-size: min(100%, var(--_ui-combobox-item-item-max-inline-size, 12rem));
2242
+ overflow: hidden;
2243
+ padding: 0;
2244
+ border: 0;
2245
+ border-radius: var(--ui-radius-sm);
2246
+ background: transparent;
2247
+ color: inherit;
2248
+ font: inherit;
2249
+ cursor: default;
2250
+ }
2251
+ .item:focus-visible {
2252
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
2253
+ outline-offset: var(--ui-border-width);
2254
+ }
2255
+ .item:disabled {
2256
+ color: var(--ui-disabled-text);
2257
+ }
2258
+ :scope:where(:scope):is([hidden]) {
2259
+ display: none;
2260
+ }
2587
2261
  }
2588
2262
  </style>