@nuxt/ui 4.3.0 → 4.4.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 (414) hide show
  1. package/README.md +4 -4
  2. package/cli/package.json +1 -1
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +4 -4
  5. package/dist/runtime/components/Accordion.d.vue.ts +15 -6
  6. package/dist/runtime/components/Accordion.vue +2 -1
  7. package/dist/runtime/components/Accordion.vue.d.ts +15 -6
  8. package/dist/runtime/components/Alert.d.vue.ts +5 -3
  9. package/dist/runtime/components/Alert.vue.d.ts +5 -3
  10. package/dist/runtime/components/App.d.vue.ts +8 -6
  11. package/dist/runtime/components/App.vue.d.ts +8 -6
  12. package/dist/runtime/components/AuthForm.d.vue.ts +87 -7
  13. package/dist/runtime/components/AuthForm.vue.d.ts +87 -7
  14. package/dist/runtime/components/Avatar.d.vue.ts +2 -2
  15. package/dist/runtime/components/Avatar.vue.d.ts +2 -2
  16. package/dist/runtime/components/AvatarGroup.d.vue.ts +1 -1
  17. package/dist/runtime/components/AvatarGroup.vue.d.ts +1 -1
  18. package/dist/runtime/components/Badge.d.vue.ts +3 -1
  19. package/dist/runtime/components/Badge.vue.d.ts +3 -1
  20. package/dist/runtime/components/Banner.d.vue.ts +3 -4
  21. package/dist/runtime/components/Banner.vue +49 -23
  22. package/dist/runtime/components/Banner.vue.d.ts +3 -4
  23. package/dist/runtime/components/BlogPost.d.vue.ts +4 -1
  24. package/dist/runtime/components/BlogPost.vue.d.ts +4 -1
  25. package/dist/runtime/components/BlogPosts.d.vue.ts +8 -6
  26. package/dist/runtime/components/BlogPosts.vue.d.ts +8 -6
  27. package/dist/runtime/components/Breadcrumb.d.vue.ts +8 -6
  28. package/dist/runtime/components/Breadcrumb.vue.d.ts +8 -6
  29. package/dist/runtime/components/Button.d.vue.ts +1 -1
  30. package/dist/runtime/components/Button.vue.d.ts +1 -1
  31. package/dist/runtime/components/Calendar.d.vue.ts +14 -6
  32. package/dist/runtime/components/Calendar.vue +13 -2
  33. package/dist/runtime/components/Calendar.vue.d.ts +14 -6
  34. package/dist/runtime/components/Card.d.vue.ts +1 -1
  35. package/dist/runtime/components/Card.vue.d.ts +1 -1
  36. package/dist/runtime/components/Carousel.d.vue.ts +10 -6
  37. package/dist/runtime/components/Carousel.vue.d.ts +10 -6
  38. package/dist/runtime/components/ChangelogVersion.d.vue.ts +4 -1
  39. package/dist/runtime/components/ChangelogVersion.vue.d.ts +4 -1
  40. package/dist/runtime/components/ChangelogVersions.d.vue.ts +12 -8
  41. package/dist/runtime/components/ChangelogVersions.vue +3 -2
  42. package/dist/runtime/components/ChangelogVersions.vue.d.ts +12 -8
  43. package/dist/runtime/components/ChatMessage.d.vue.ts +3 -1
  44. package/dist/runtime/components/ChatMessage.vue.d.ts +3 -1
  45. package/dist/runtime/components/ChatMessages.d.vue.ts +6 -1
  46. package/dist/runtime/components/ChatMessages.vue.d.ts +6 -1
  47. package/dist/runtime/components/ChatPalette.d.vue.ts +1 -1
  48. package/dist/runtime/components/ChatPalette.vue.d.ts +1 -1
  49. package/dist/runtime/components/ChatPrompt.d.vue.ts +9 -4
  50. package/dist/runtime/components/ChatPrompt.vue.d.ts +9 -4
  51. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +11 -3
  52. package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +11 -3
  53. package/dist/runtime/components/Checkbox.d.vue.ts +2 -2
  54. package/dist/runtime/components/Checkbox.vue.d.ts +2 -2
  55. package/dist/runtime/components/CheckboxGroup.d.vue.ts +12 -7
  56. package/dist/runtime/components/CheckboxGroup.vue.d.ts +12 -7
  57. package/dist/runtime/components/Chip.d.vue.ts +6 -3
  58. package/dist/runtime/components/Chip.vue.d.ts +6 -3
  59. package/dist/runtime/components/Collapsible.d.vue.ts +5 -3
  60. package/dist/runtime/components/Collapsible.vue.d.ts +5 -3
  61. package/dist/runtime/components/ColorPicker.d.vue.ts +7 -3
  62. package/dist/runtime/components/ColorPicker.vue.d.ts +7 -3
  63. package/dist/runtime/components/CommandPalette.d.vue.ts +36 -13
  64. package/dist/runtime/components/CommandPalette.vue +26 -18
  65. package/dist/runtime/components/CommandPalette.vue.d.ts +36 -13
  66. package/dist/runtime/components/Container.d.vue.ts +1 -1
  67. package/dist/runtime/components/Container.vue.d.ts +1 -1
  68. package/dist/runtime/components/ContextMenu.d.vue.ts +10 -6
  69. package/dist/runtime/components/ContextMenu.vue.d.ts +10 -6
  70. package/dist/runtime/components/ContextMenuContent.d.vue.ts +14 -6
  71. package/dist/runtime/components/ContextMenuContent.vue +10 -11
  72. package/dist/runtime/components/ContextMenuContent.vue.d.ts +14 -6
  73. package/dist/runtime/components/DashboardGroup.d.vue.ts +6 -1
  74. package/dist/runtime/components/DashboardGroup.vue.d.ts +6 -1
  75. package/dist/runtime/components/DashboardNavbar.d.vue.ts +4 -1
  76. package/dist/runtime/components/DashboardNavbar.vue.d.ts +4 -1
  77. package/dist/runtime/components/DashboardPanel.d.vue.ts +4 -1
  78. package/dist/runtime/components/DashboardPanel.vue.d.ts +4 -1
  79. package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +1 -1
  80. package/dist/runtime/components/DashboardResizeHandle.vue.d.ts +1 -1
  81. package/dist/runtime/components/DashboardSearch.d.vue.ts +13 -4
  82. package/dist/runtime/components/DashboardSearch.vue +3 -1
  83. package/dist/runtime/components/DashboardSearch.vue.d.ts +13 -4
  84. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +6 -1
  85. package/dist/runtime/components/DashboardSearchButton.vue.d.ts +6 -1
  86. package/dist/runtime/components/DashboardSidebar.d.vue.ts +12 -7
  87. package/dist/runtime/components/DashboardSidebar.vue.d.ts +12 -7
  88. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +5 -1
  89. package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +5 -1
  90. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +5 -1
  91. package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +5 -1
  92. package/dist/runtime/components/DashboardToolbar.d.vue.ts +1 -1
  93. package/dist/runtime/components/DashboardToolbar.vue.d.ts +1 -1
  94. package/dist/runtime/components/Drawer.d.vue.ts +10 -3
  95. package/dist/runtime/components/Drawer.vue.d.ts +10 -3
  96. package/dist/runtime/components/DropdownMenu.d.vue.ts +10 -6
  97. package/dist/runtime/components/DropdownMenu.vue.d.ts +10 -6
  98. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +14 -6
  99. package/dist/runtime/components/DropdownMenuContent.vue +10 -11
  100. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +14 -6
  101. package/dist/runtime/components/Editor.d.vue.ts +29 -15
  102. package/dist/runtime/components/Editor.vue +30 -16
  103. package/dist/runtime/components/Editor.vue.d.ts +29 -15
  104. package/dist/runtime/components/EditorDragHandle.d.vue.ts +7 -3
  105. package/dist/runtime/components/EditorDragHandle.vue.d.ts +7 -3
  106. package/dist/runtime/components/EditorEmojiMenu.d.vue.ts +12 -6
  107. package/dist/runtime/components/EditorEmojiMenu.vue +4 -1
  108. package/dist/runtime/components/EditorEmojiMenu.vue.d.ts +12 -6
  109. package/dist/runtime/components/EditorMentionMenu.d.vue.ts +18 -8
  110. package/dist/runtime/components/EditorMentionMenu.vue +9 -2
  111. package/dist/runtime/components/EditorMentionMenu.vue.d.ts +18 -8
  112. package/dist/runtime/components/EditorSuggestionMenu.d.vue.ts +12 -6
  113. package/dist/runtime/components/EditorSuggestionMenu.vue +4 -1
  114. package/dist/runtime/components/EditorSuggestionMenu.vue.d.ts +12 -6
  115. package/dist/runtime/components/EditorToolbar.d.vue.ts +8 -6
  116. package/dist/runtime/components/EditorToolbar.vue +6 -6
  117. package/dist/runtime/components/EditorToolbar.vue.d.ts +8 -6
  118. package/dist/runtime/components/Empty.d.vue.ts +1 -1
  119. package/dist/runtime/components/Empty.vue.d.ts +1 -1
  120. package/dist/runtime/components/Error.d.vue.ts +6 -2
  121. package/dist/runtime/components/Error.vue +1 -1
  122. package/dist/runtime/components/Error.vue.d.ts +6 -2
  123. package/dist/runtime/components/FieldGroup.d.vue.ts +3 -1
  124. package/dist/runtime/components/FieldGroup.vue.d.ts +3 -1
  125. package/dist/runtime/components/FileUpload.d.vue.ts +12 -7
  126. package/dist/runtime/components/FileUpload.vue +2 -2
  127. package/dist/runtime/components/FileUpload.vue.d.ts +12 -7
  128. package/dist/runtime/components/Footer.d.vue.ts +3 -1
  129. package/dist/runtime/components/Footer.vue.d.ts +3 -1
  130. package/dist/runtime/components/FooterColumns.d.vue.ts +8 -6
  131. package/dist/runtime/components/FooterColumns.vue.d.ts +8 -6
  132. package/dist/runtime/components/Form.d.vue.ts +11 -6
  133. package/dist/runtime/components/Form.vue.d.ts +11 -6
  134. package/dist/runtime/components/FormField.d.vue.ts +3 -1
  135. package/dist/runtime/components/FormField.vue.d.ts +3 -1
  136. package/dist/runtime/components/Header.d.vue.ts +11 -7
  137. package/dist/runtime/components/Header.vue.d.ts +11 -7
  138. package/dist/runtime/components/Icon.d.vue.ts +1 -1
  139. package/dist/runtime/components/Icon.vue.d.ts +1 -1
  140. package/dist/runtime/components/Input.d.vue.ts +13 -7
  141. package/dist/runtime/components/Input.vue.d.ts +13 -7
  142. package/dist/runtime/components/InputDate.d.vue.ts +14 -6
  143. package/dist/runtime/components/InputDate.vue.d.ts +14 -6
  144. package/dist/runtime/components/InputMenu.d.vue.ts +42 -15
  145. package/dist/runtime/components/InputMenu.vue +42 -10
  146. package/dist/runtime/components/InputMenu.vue.d.ts +42 -15
  147. package/dist/runtime/components/InputNumber.d.vue.ts +14 -8
  148. package/dist/runtime/components/InputNumber.vue +1 -1
  149. package/dist/runtime/components/InputNumber.vue.d.ts +14 -8
  150. package/dist/runtime/components/InputTags.d.vue.ts +17 -7
  151. package/dist/runtime/components/InputTags.vue.d.ts +17 -7
  152. package/dist/runtime/components/InputTime.d.vue.ts +5 -3
  153. package/dist/runtime/components/InputTime.vue.d.ts +5 -3
  154. package/dist/runtime/components/Kbd.d.vue.ts +3 -1
  155. package/dist/runtime/components/Kbd.vue.d.ts +3 -1
  156. package/dist/runtime/components/Link.d.vue.ts +6 -1
  157. package/dist/runtime/components/Link.vue.d.ts +6 -1
  158. package/dist/runtime/components/LinkBase.d.vue.ts +6 -3
  159. package/dist/runtime/components/LinkBase.vue.d.ts +6 -3
  160. package/dist/runtime/components/Main.d.vue.ts +4 -2
  161. package/dist/runtime/components/Main.vue +1 -1
  162. package/dist/runtime/components/Main.vue.d.ts +4 -2
  163. package/dist/runtime/components/Marquee.d.vue.ts +5 -1
  164. package/dist/runtime/components/Marquee.vue.d.ts +5 -1
  165. package/dist/runtime/components/Modal.d.vue.ts +10 -3
  166. package/dist/runtime/components/Modal.vue.d.ts +10 -3
  167. package/dist/runtime/components/NavigationMenu.d.vue.ts +16 -7
  168. package/dist/runtime/components/NavigationMenu.vue +3 -2
  169. package/dist/runtime/components/NavigationMenu.vue.d.ts +16 -7
  170. package/dist/runtime/components/Page.d.vue.ts +1 -1
  171. package/dist/runtime/components/Page.vue.d.ts +1 -1
  172. package/dist/runtime/components/PageAnchors.d.vue.ts +8 -6
  173. package/dist/runtime/components/PageAnchors.vue.d.ts +8 -6
  174. package/dist/runtime/components/PageAside.d.vue.ts +3 -1
  175. package/dist/runtime/components/PageAside.vue.d.ts +3 -1
  176. package/dist/runtime/components/PageBody.d.vue.ts +1 -1
  177. package/dist/runtime/components/PageBody.vue.d.ts +1 -1
  178. package/dist/runtime/components/PageCTA.d.vue.ts +4 -1
  179. package/dist/runtime/components/PageCTA.vue.d.ts +4 -1
  180. package/dist/runtime/components/PageCard.d.vue.ts +3 -1
  181. package/dist/runtime/components/PageCard.vue.d.ts +3 -1
  182. package/dist/runtime/components/PageColumns.d.vue.ts +1 -1
  183. package/dist/runtime/components/PageColumns.vue.d.ts +1 -1
  184. package/dist/runtime/components/PageFeature.d.vue.ts +3 -1
  185. package/dist/runtime/components/PageFeature.vue.d.ts +3 -1
  186. package/dist/runtime/components/PageGrid.d.vue.ts +1 -1
  187. package/dist/runtime/components/PageGrid.vue.d.ts +1 -1
  188. package/dist/runtime/components/PageHeader.d.vue.ts +1 -1
  189. package/dist/runtime/components/PageHeader.vue.d.ts +1 -1
  190. package/dist/runtime/components/PageHero.d.vue.ts +3 -1
  191. package/dist/runtime/components/PageHero.vue.d.ts +3 -1
  192. package/dist/runtime/components/PageLinks.d.vue.ts +8 -6
  193. package/dist/runtime/components/PageLinks.vue.d.ts +8 -6
  194. package/dist/runtime/components/PageList.d.vue.ts +3 -1
  195. package/dist/runtime/components/PageList.vue.d.ts +3 -1
  196. package/dist/runtime/components/PageLogos.d.vue.ts +3 -1
  197. package/dist/runtime/components/PageLogos.vue.d.ts +3 -1
  198. package/dist/runtime/components/PageSection.d.vue.ts +4 -1
  199. package/dist/runtime/components/PageSection.vue.d.ts +4 -1
  200. package/dist/runtime/components/Pagination.d.vue.ts +13 -3
  201. package/dist/runtime/components/Pagination.vue.d.ts +13 -3
  202. package/dist/runtime/components/PinInput.d.vue.ts +13 -6
  203. package/dist/runtime/components/PinInput.vue.d.ts +13 -6
  204. package/dist/runtime/components/Popover.d.vue.ts +11 -6
  205. package/dist/runtime/components/Popover.vue.d.ts +11 -6
  206. package/dist/runtime/components/PricingPlan.d.vue.ts +3 -1
  207. package/dist/runtime/components/PricingPlan.vue.d.ts +3 -1
  208. package/dist/runtime/components/PricingPlans.d.vue.ts +8 -6
  209. package/dist/runtime/components/PricingPlans.vue.d.ts +8 -6
  210. package/dist/runtime/components/PricingTable.d.vue.ts +8 -6
  211. package/dist/runtime/components/PricingTable.vue.d.ts +8 -6
  212. package/dist/runtime/components/Progress.d.vue.ts +7 -3
  213. package/dist/runtime/components/Progress.vue.d.ts +7 -3
  214. package/dist/runtime/components/RadioGroup.d.vue.ts +12 -7
  215. package/dist/runtime/components/RadioGroup.vue.d.ts +12 -7
  216. package/dist/runtime/components/ScrollArea.d.vue.ts +10 -6
  217. package/dist/runtime/components/ScrollArea.vue.d.ts +10 -6
  218. package/dist/runtime/components/Select.d.vue.ts +20 -6
  219. package/dist/runtime/components/Select.vue +10 -5
  220. package/dist/runtime/components/Select.vue.d.ts +20 -6
  221. package/dist/runtime/components/SelectMenu.d.vue.ts +41 -15
  222. package/dist/runtime/components/SelectMenu.vue +44 -11
  223. package/dist/runtime/components/SelectMenu.vue.d.ts +41 -15
  224. package/dist/runtime/components/Separator.d.vue.ts +4 -2
  225. package/dist/runtime/components/Separator.vue.d.ts +4 -2
  226. package/dist/runtime/components/Skeleton.d.vue.ts +2 -2
  227. package/dist/runtime/components/Skeleton.vue.d.ts +2 -2
  228. package/dist/runtime/components/Slideover.d.vue.ts +11 -3
  229. package/dist/runtime/components/Slideover.vue.d.ts +11 -3
  230. package/dist/runtime/components/Slider.d.vue.ts +13 -8
  231. package/dist/runtime/components/Slider.vue.d.ts +13 -8
  232. package/dist/runtime/components/Stepper.d.vue.ts +23 -9
  233. package/dist/runtime/components/Stepper.vue +20 -16
  234. package/dist/runtime/components/Stepper.vue.d.ts +23 -9
  235. package/dist/runtime/components/Switch.d.vue.ts +2 -2
  236. package/dist/runtime/components/Switch.vue.d.ts +2 -2
  237. package/dist/runtime/components/Table.d.vue.ts +24 -9
  238. package/dist/runtime/components/Table.vue.d.ts +24 -9
  239. package/dist/runtime/components/Tabs.d.vue.ts +16 -7
  240. package/dist/runtime/components/Tabs.vue +5 -4
  241. package/dist/runtime/components/Tabs.vue.d.ts +16 -7
  242. package/dist/runtime/components/Textarea.d.vue.ts +13 -7
  243. package/dist/runtime/components/Textarea.vue.d.ts +13 -7
  244. package/dist/runtime/components/Timeline.d.vue.ts +24 -10
  245. package/dist/runtime/components/Timeline.vue +26 -17
  246. package/dist/runtime/components/Timeline.vue.d.ts +24 -10
  247. package/dist/runtime/components/Toast.d.vue.ts +7 -3
  248. package/dist/runtime/components/Toast.vue.d.ts +7 -3
  249. package/dist/runtime/components/Toaster.d.vue.ts +7 -1
  250. package/dist/runtime/components/Toaster.vue.d.ts +7 -1
  251. package/dist/runtime/components/Tooltip.d.vue.ts +5 -3
  252. package/dist/runtime/components/Tooltip.vue.d.ts +5 -3
  253. package/dist/runtime/components/Tree.d.vue.ts +13 -8
  254. package/dist/runtime/components/Tree.vue.d.ts +13 -8
  255. package/dist/runtime/components/User.d.vue.ts +3 -1
  256. package/dist/runtime/components/User.vue.d.ts +3 -1
  257. package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +1 -1
  258. package/dist/runtime/components/color-mode/ColorModeAvatar.vue.d.ts +1 -1
  259. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +4 -1
  260. package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +4 -1
  261. package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +1 -1
  262. package/dist/runtime/components/color-mode/ColorModeImage.vue.d.ts +1 -1
  263. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +3 -1
  264. package/dist/runtime/components/color-mode/ColorModeSelect.vue +4 -0
  265. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +3 -1
  266. package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
  267. package/dist/runtime/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
  268. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +10 -6
  269. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +10 -6
  270. package/dist/runtime/components/content/ContentSearch.d.vue.ts +16 -8
  271. package/dist/runtime/components/content/ContentSearch.vue +3 -1
  272. package/dist/runtime/components/content/ContentSearch.vue.d.ts +16 -8
  273. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +6 -1
  274. package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +6 -1
  275. package/dist/runtime/components/content/ContentSurround.d.vue.ts +8 -6
  276. package/dist/runtime/components/content/ContentSurround.vue +1 -1
  277. package/dist/runtime/components/content/ContentSurround.vue.d.ts +8 -6
  278. package/dist/runtime/components/content/ContentToc.d.vue.ts +11 -6
  279. package/dist/runtime/components/content/ContentToc.vue.d.ts +11 -6
  280. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +7 -3
  281. package/dist/runtime/components/locale/LocaleSelect.vue +4 -0
  282. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +7 -3
  283. package/dist/runtime/components/prose/A.d.vue.ts +1 -1
  284. package/dist/runtime/components/prose/A.vue.d.ts +1 -1
  285. package/dist/runtime/components/prose/Accordion.d.vue.ts +3 -1
  286. package/dist/runtime/components/prose/Accordion.vue.d.ts +3 -1
  287. package/dist/runtime/components/prose/AccordionItem.d.vue.ts +1 -1
  288. package/dist/runtime/components/prose/AccordionItem.vue.d.ts +1 -1
  289. package/dist/runtime/components/prose/Badge.d.vue.ts +1 -1
  290. package/dist/runtime/components/prose/Badge.vue.d.ts +1 -1
  291. package/dist/runtime/components/prose/Blockquote.d.vue.ts +1 -1
  292. package/dist/runtime/components/prose/Blockquote.vue.d.ts +1 -1
  293. package/dist/runtime/components/prose/Callout.d.vue.ts +1 -1
  294. package/dist/runtime/components/prose/Callout.vue.d.ts +1 -1
  295. package/dist/runtime/components/prose/Card.d.vue.ts +1 -1
  296. package/dist/runtime/components/prose/Card.vue.d.ts +1 -1
  297. package/dist/runtime/components/prose/CardGroup.d.vue.ts +1 -1
  298. package/dist/runtime/components/prose/CardGroup.vue.d.ts +1 -1
  299. package/dist/runtime/components/prose/Code.d.vue.ts +1 -1
  300. package/dist/runtime/components/prose/Code.vue.d.ts +1 -1
  301. package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +2 -2
  302. package/dist/runtime/components/prose/CodeCollapse.vue.d.ts +2 -2
  303. package/dist/runtime/components/prose/CodeGroup.d.vue.ts +5 -3
  304. package/dist/runtime/components/prose/CodeGroup.vue.d.ts +5 -3
  305. package/dist/runtime/components/prose/CodeIcon.d.vue.ts +1 -1
  306. package/dist/runtime/components/prose/CodeIcon.vue.d.ts +1 -1
  307. package/dist/runtime/components/prose/CodePreview.d.vue.ts +1 -1
  308. package/dist/runtime/components/prose/CodePreview.vue.d.ts +1 -1
  309. package/dist/runtime/components/prose/CodeTree.d.vue.ts +2 -2
  310. package/dist/runtime/components/prose/CodeTree.vue +6 -3
  311. package/dist/runtime/components/prose/CodeTree.vue.d.ts +2 -2
  312. package/dist/runtime/components/prose/Collapsible.d.vue.ts +1 -1
  313. package/dist/runtime/components/prose/Collapsible.vue.d.ts +1 -1
  314. package/dist/runtime/components/prose/Em.d.vue.ts +1 -1
  315. package/dist/runtime/components/prose/Em.vue.d.ts +1 -1
  316. package/dist/runtime/components/prose/Field.d.vue.ts +1 -1
  317. package/dist/runtime/components/prose/Field.vue.d.ts +1 -1
  318. package/dist/runtime/components/prose/FieldGroup.d.vue.ts +1 -1
  319. package/dist/runtime/components/prose/FieldGroup.vue.d.ts +1 -1
  320. package/dist/runtime/components/prose/H1.d.vue.ts +1 -1
  321. package/dist/runtime/components/prose/H1.vue.d.ts +1 -1
  322. package/dist/runtime/components/prose/H2.d.vue.ts +1 -1
  323. package/dist/runtime/components/prose/H2.vue.d.ts +1 -1
  324. package/dist/runtime/components/prose/H3.d.vue.ts +1 -1
  325. package/dist/runtime/components/prose/H3.vue.d.ts +1 -1
  326. package/dist/runtime/components/prose/H4.d.vue.ts +1 -1
  327. package/dist/runtime/components/prose/H4.vue.d.ts +1 -1
  328. package/dist/runtime/components/prose/Hr.d.vue.ts +1 -1
  329. package/dist/runtime/components/prose/Hr.vue.d.ts +1 -1
  330. package/dist/runtime/components/prose/Icon.d.vue.ts +1 -1
  331. package/dist/runtime/components/prose/Icon.vue.d.ts +1 -1
  332. package/dist/runtime/components/prose/Img.d.vue.ts +3 -1
  333. package/dist/runtime/components/prose/Img.vue.d.ts +3 -1
  334. package/dist/runtime/components/prose/Kbd.d.vue.ts +1 -1
  335. package/dist/runtime/components/prose/Kbd.vue.d.ts +1 -1
  336. package/dist/runtime/components/prose/Li.d.vue.ts +1 -1
  337. package/dist/runtime/components/prose/Li.vue.d.ts +1 -1
  338. package/dist/runtime/components/prose/Ol.d.vue.ts +1 -1
  339. package/dist/runtime/components/prose/Ol.vue.d.ts +1 -1
  340. package/dist/runtime/components/prose/P.d.vue.ts +1 -1
  341. package/dist/runtime/components/prose/P.vue.d.ts +1 -1
  342. package/dist/runtime/components/prose/Pre.d.vue.ts +1 -1
  343. package/dist/runtime/components/prose/Pre.vue.d.ts +1 -1
  344. package/dist/runtime/components/prose/Steps.d.vue.ts +1 -1
  345. package/dist/runtime/components/prose/Steps.vue.d.ts +1 -1
  346. package/dist/runtime/components/prose/Strong.d.vue.ts +1 -1
  347. package/dist/runtime/components/prose/Strong.vue.d.ts +1 -1
  348. package/dist/runtime/components/prose/Table.d.vue.ts +1 -1
  349. package/dist/runtime/components/prose/Table.vue.d.ts +1 -1
  350. package/dist/runtime/components/prose/Tabs.d.vue.ts +5 -3
  351. package/dist/runtime/components/prose/Tabs.vue.d.ts +5 -3
  352. package/dist/runtime/components/prose/TabsItem.d.vue.ts +1 -1
  353. package/dist/runtime/components/prose/TabsItem.vue.d.ts +1 -1
  354. package/dist/runtime/components/prose/Tbody.d.vue.ts +1 -1
  355. package/dist/runtime/components/prose/Tbody.vue.d.ts +1 -1
  356. package/dist/runtime/components/prose/Td.d.vue.ts +2 -1
  357. package/dist/runtime/components/prose/Td.vue +2 -1
  358. package/dist/runtime/components/prose/Td.vue.d.ts +2 -1
  359. package/dist/runtime/components/prose/Th.d.vue.ts +2 -1
  360. package/dist/runtime/components/prose/Th.vue +2 -1
  361. package/dist/runtime/components/prose/Th.vue.d.ts +2 -1
  362. package/dist/runtime/components/prose/Thead.d.vue.ts +1 -1
  363. package/dist/runtime/components/prose/Thead.vue.d.ts +1 -1
  364. package/dist/runtime/components/prose/Tr.d.vue.ts +1 -1
  365. package/dist/runtime/components/prose/Tr.vue.d.ts +1 -1
  366. package/dist/runtime/components/prose/Ul.d.vue.ts +1 -1
  367. package/dist/runtime/components/prose/Ul.vue.d.ts +1 -1
  368. package/dist/runtime/components/prose/callout/Caution.d.vue.ts +2 -2
  369. package/dist/runtime/components/prose/callout/Caution.vue.d.ts +2 -2
  370. package/dist/runtime/components/prose/callout/Note.d.vue.ts +2 -2
  371. package/dist/runtime/components/prose/callout/Note.vue.d.ts +2 -2
  372. package/dist/runtime/components/prose/callout/Tip.d.vue.ts +2 -2
  373. package/dist/runtime/components/prose/callout/Tip.vue.d.ts +2 -2
  374. package/dist/runtime/components/prose/callout/Warning.d.vue.ts +2 -2
  375. package/dist/runtime/components/prose/callout/Warning.vue.d.ts +2 -2
  376. package/dist/runtime/composables/defineShortcuts.js +1 -1
  377. package/dist/runtime/composables/useEditorMenu.d.ts +12 -1
  378. package/dist/runtime/composables/useEditorMenu.js +131 -144
  379. package/dist/runtime/composables/useOverlay.d.ts +3 -1
  380. package/dist/runtime/locale/cs.js +2 -2
  381. package/dist/runtime/locale/sk.js +2 -2
  382. package/dist/runtime/types/editor.d.ts +2 -1
  383. package/dist/runtime/utils/ai.d.ts +7 -0
  384. package/dist/runtime/utils/editor.d.ts +1 -1
  385. package/dist/runtime/utils/editor.js +28 -10
  386. package/dist/runtime/utils/fuse.js +22 -3
  387. package/dist/runtime/utils/index.d.ts +1 -0
  388. package/dist/runtime/utils/index.js +2 -2
  389. package/dist/runtime/utils/virtualizer.d.ts +1 -3
  390. package/dist/runtime/utils/virtualizer.js +15 -6
  391. package/dist/runtime/vue/components/Icon.d.vue.ts +1 -1
  392. package/dist/runtime/vue/components/Icon.vue.d.ts +1 -1
  393. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +3 -1
  394. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +4 -0
  395. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +3 -1
  396. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
  397. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
  398. package/dist/runtime/vue/overrides/inertia/Link.d.vue.ts +6 -1
  399. package/dist/runtime/vue/overrides/inertia/Link.vue.d.ts +6 -1
  400. package/dist/runtime/vue/overrides/inertia/LinkBase.d.vue.ts +6 -3
  401. package/dist/runtime/vue/overrides/inertia/LinkBase.vue.d.ts +6 -3
  402. package/dist/runtime/vue/overrides/none/Link.d.vue.ts +6 -1
  403. package/dist/runtime/vue/overrides/none/Link.vue +11 -3
  404. package/dist/runtime/vue/overrides/none/Link.vue.d.ts +6 -1
  405. package/dist/runtime/vue/overrides/vue-router/Link.d.vue.ts +6 -1
  406. package/dist/runtime/vue/overrides/vue-router/Link.vue +2 -2
  407. package/dist/runtime/vue/overrides/vue-router/Link.vue.d.ts +6 -1
  408. package/dist/runtime/vue/plugins/router.d.ts +4 -0
  409. package/dist/runtime/vue/plugins/router.js +7 -0
  410. package/dist/shared/{ui.DegC4tw1.mjs → ui.Ddb3hKxo.mjs} +238 -30
  411. package/dist/unplugin.mjs +5 -3
  412. package/dist/vite.d.mts +2 -3
  413. package/dist/vite.mjs +1 -1
  414. package/package.json +44 -28
@@ -47,15 +47,19 @@ export type ProgressSlots = {
47
47
  step: number;
48
48
  }) => any;
49
49
  };
50
+ declare const _default: typeof __VLS_export;
51
+ export default _default;
50
52
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ProgressProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
51
53
  "update:modelValue": (value: string[] | undefined) => any;
52
54
  "update:max": (value: number) => any;
53
55
  }, string, import("vue").PublicProps, Readonly<ProgressProps> & Readonly<{
54
56
  "onUpdate:modelValue"?: ((value: string[] | undefined) => any) | undefined;
55
57
  "onUpdate:max"?: ((value: number) => any) | undefined;
56
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ProgressSlots>;
57
- declare const _default: typeof __VLS_export;
58
- export default _default;
58
+ }>, {
59
+ modelValue: number | null;
60
+ orientation: Progress["variants"]["orientation"];
61
+ inverted: boolean;
62
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ProgressSlots>;
59
63
  type __VLS_WithSlots<T, S> = T & {
60
64
  new (): {
61
65
  $slots: S;
@@ -57,7 +57,7 @@ export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[],
57
57
  * The orientation the radio buttons are laid out.
58
58
  * @defaultValue 'vertical'
59
59
  */
60
- orientation?: RadioGroupRootProps['orientation'];
60
+ orientation?: RadioGroup['variants']['orientation'];
61
61
  /**
62
62
  * Position of the indicator.
63
63
  * @defaultValue 'start'
@@ -81,8 +81,13 @@ export interface RadioGroupSlots<T extends RadioGroupItem[] = RadioGroupItem[]>
81
81
  label: SlotProps<T[number]>;
82
82
  description: SlotProps<T[number]>;
83
83
  }
84
- declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<T> = "value">(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
85
- props: __VLS_PrettifyLocal<RadioGroupProps<T, VK> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, import("../types").NestedItem<T>>) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
84
+ declare const _default: typeof __VLS_export;
85
+ export default _default;
86
+ declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<T> = "value">(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
87
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<RadioGroupProps<T, VK> & {
88
+ onChange?: ((event: Event) => any) | undefined;
89
+ "onUpdate:modelValue"?: ((value: import("../types").GetItemValue<T, VK, import("../types").NestedItem<T>>) => any) | undefined;
90
+ }> & (typeof globalThis extends {
86
91
  __VLS_PROPS_FALLBACK: infer P;
87
92
  } ? P : {});
88
93
  expose: (exposed: {}) => void;
@@ -92,8 +97,8 @@ declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<
92
97
  }>) => import("vue").VNode & {
93
98
  __ctx?: Awaited<typeof __VLS_setup>;
94
99
  };
95
- declare const _default: typeof __VLS_export;
96
- export default _default;
97
- type __VLS_PrettifyLocal<T> = {
100
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
101
+ [K in keyof T]: T[K];
102
+ } : {
98
103
  [K in keyof T as K]: T[K];
99
- } & {};
104
+ }) & {};
@@ -57,7 +57,7 @@ export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[],
57
57
  * The orientation the radio buttons are laid out.
58
58
  * @defaultValue 'vertical'
59
59
  */
60
- orientation?: RadioGroupRootProps['orientation'];
60
+ orientation?: RadioGroup['variants']['orientation'];
61
61
  /**
62
62
  * Position of the indicator.
63
63
  * @defaultValue 'start'
@@ -81,8 +81,13 @@ export interface RadioGroupSlots<T extends RadioGroupItem[] = RadioGroupItem[]>
81
81
  label: SlotProps<T[number]>;
82
82
  description: SlotProps<T[number]>;
83
83
  }
84
- declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<T> = "value">(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
85
- props: __VLS_PrettifyLocal<RadioGroupProps<T, VK> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, import("../types").NestedItem<T>>) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
84
+ declare const _default: typeof __VLS_export;
85
+ export default _default;
86
+ declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<T> = "value">(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
87
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<RadioGroupProps<T, VK> & {
88
+ onChange?: ((event: Event) => any) | undefined;
89
+ "onUpdate:modelValue"?: ((value: import("../types").GetItemValue<T, VK, import("../types").NestedItem<T>>) => any) | undefined;
90
+ }> & (typeof globalThis extends {
86
91
  __VLS_PROPS_FALLBACK: infer P;
87
92
  } ? P : {});
88
93
  expose: (exposed: {}) => void;
@@ -92,8 +97,8 @@ declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<
92
97
  }>) => import("vue").VNode & {
93
98
  __ctx?: Awaited<typeof __VLS_setup>;
94
99
  };
95
- declare const _default: typeof __VLS_export;
96
- export default _default;
97
- type __VLS_PrettifyLocal<T> = {
100
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
101
+ [K in keyof T]: T[K];
102
+ } : {
98
103
  [K in keyof T as K]: T[K];
99
- } & {};
104
+ }) & {};
@@ -60,8 +60,12 @@ export interface ScrollAreaEmits {
60
60
  */
61
61
  scroll: [isScrolling: boolean];
62
62
  }
63
- declare const __VLS_export: <T extends ScrollAreaItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
64
- props: __VLS_PrettifyLocal<ScrollAreaProps<T> & __VLS_EmitsToProps<__VLS_NormalizeEmits<(evt: "scroll", isScrolling: boolean) => void>>> & import("vue").PublicProps & (typeof globalThis extends {
63
+ declare const _default: typeof __VLS_export;
64
+ export default _default;
65
+ declare const __VLS_export: <T extends ScrollAreaItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
66
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<ScrollAreaProps<T> & {
67
+ onScroll?: ((isScrolling: boolean) => any) | undefined;
68
+ }> & (typeof globalThis extends {
65
69
  __VLS_PROPS_FALLBACK: infer P;
66
70
  } ? P : {});
67
71
  expose: (exposed: import("vue").ShallowUnwrapRef<{
@@ -74,8 +78,8 @@ declare const __VLS_export: <T extends ScrollAreaItem>(__VLS_props: NonNullable<
74
78
  }>) => import("vue").VNode & {
75
79
  __ctx?: Awaited<typeof __VLS_setup>;
76
80
  };
77
- declare const _default: typeof __VLS_export;
78
- export default _default;
79
- type __VLS_PrettifyLocal<T> = {
81
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
82
+ [K in keyof T]: T[K];
83
+ } : {
80
84
  [K in keyof T as K]: T[K];
81
- } & {};
85
+ }) & {};
@@ -60,8 +60,12 @@ export interface ScrollAreaEmits {
60
60
  */
61
61
  scroll: [isScrolling: boolean];
62
62
  }
63
- declare const __VLS_export: <T extends ScrollAreaItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
64
- props: __VLS_PrettifyLocal<ScrollAreaProps<T> & __VLS_EmitsToProps<__VLS_NormalizeEmits<(evt: "scroll", isScrolling: boolean) => void>>> & import("vue").PublicProps & (typeof globalThis extends {
63
+ declare const _default: typeof __VLS_export;
64
+ export default _default;
65
+ declare const __VLS_export: <T extends ScrollAreaItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
66
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<ScrollAreaProps<T> & {
67
+ onScroll?: ((isScrolling: boolean) => any) | undefined;
68
+ }> & (typeof globalThis extends {
65
69
  __VLS_PROPS_FALLBACK: infer P;
66
70
  } ? P : {});
67
71
  expose: (exposed: import("vue").ShallowUnwrapRef<{
@@ -74,8 +78,8 @@ declare const __VLS_export: <T extends ScrollAreaItem>(__VLS_props: NonNullable<
74
78
  }>) => import("vue").VNode & {
75
79
  __ctx?: Awaited<typeof __VLS_setup>;
76
80
  };
77
- declare const _default: typeof __VLS_export;
78
- export default _default;
79
- type __VLS_PrettifyLocal<T> = {
81
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
82
+ [K in keyof T]: T[K];
83
+ } : {
80
84
  [K in keyof T as K]: T[K];
81
- } & {};
85
+ }) & {};
@@ -96,6 +96,11 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
96
96
  modelModifiers?: Omit<ModelModifiers<GetModelValue<T, VK, M>>, 'lazy'>;
97
97
  /** Whether multiple options can be selected or not. */
98
98
  multiple?: M & boolean;
99
+ /**
100
+ * Use a custom comparator to compare objects.
101
+ * This can be a string (key) or a function that compares two objects.
102
+ */
103
+ by?: string | ((a: any, b: any) => boolean);
99
104
  /** Highlight the ring color like a focus state. */
100
105
  highlight?: boolean;
101
106
  autofocus?: boolean;
@@ -143,12 +148,21 @@ export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested
143
148
  'content-top': (props?: {}) => any;
144
149
  'content-bottom': (props?: {}) => any;
145
150
  }
146
- declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = "value", M extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
147
- props: __VLS_PrettifyLocal<SelectProps<T, VK, M> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
151
+ declare const _default: typeof __VLS_export;
152
+ export default _default;
153
+ declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = "value", M extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
154
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<SelectProps<T, VK, M> & {
155
+ onBlur?: ((event: FocusEvent) => any) | undefined;
156
+ onChange?: ((event: Event) => any) | undefined;
157
+ onFocus?: ((event: FocusEvent) => any) | undefined;
158
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
159
+ "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
160
+ }> & (typeof globalThis extends {
148
161
  __VLS_PROPS_FALLBACK: infer P;
149
162
  } ? P : {});
150
163
  expose: (exposed: import("vue").ShallowUnwrapRef<{
151
164
  triggerRef: Readonly<import("vue").Ref<HTMLButtonElement, HTMLButtonElement>>;
165
+ viewportRef: Readonly<import("vue").Ref<HTMLDivElement | null, HTMLDivElement | null>>;
152
166
  }>) => void;
153
167
  attrs: any;
154
168
  slots: SelectSlots<T, VK, M, NestedItem<T>>;
@@ -156,8 +170,8 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends Get
156
170
  }>) => import("vue").VNode & {
157
171
  __ctx?: Awaited<typeof __VLS_setup>;
158
172
  };
159
- declare const _default: typeof __VLS_export;
160
- export default _default;
161
- type __VLS_PrettifyLocal<T> = {
173
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
174
+ [K in keyof T]: T[K];
175
+ } : {
162
176
  [K in keyof T as K]: T[K];
163
- } & {};
177
+ }) & {};
@@ -37,6 +37,7 @@ const props = defineProps({
37
37
  modelValue: { type: null, required: false },
38
38
  modelModifiers: { type: Object, required: false },
39
39
  multiple: { type: Boolean, required: false },
40
+ by: { type: [String, Function], required: false },
40
41
  highlight: { type: Boolean, required: false },
41
42
  autofocus: { type: Boolean, required: false },
42
43
  autofocusDelay: { type: Number, required: false, default: 0 },
@@ -59,7 +60,7 @@ const props = defineProps({
59
60
  const emits = defineEmits(["update:open", "change", "blur", "focus", "update:modelValue"]);
60
61
  const slots = defineSlots();
61
62
  const appConfig = useAppConfig();
62
- const rootProps = useForwardPropsEmits(reactivePick(props, "open", "defaultOpen", "disabled", "autocomplete", "required", "multiple"), emits);
63
+ const rootProps = useForwardPropsEmits(reactivePick(props, "open", "defaultOpen", "disabled", "autocomplete", "required", "multiple", "by"), emits);
63
64
  const portalProps = usePortal(toRef(() => props.portal));
64
65
  const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8, position: "popper" }));
65
66
  const arrowProps = toRef(() => props.arrow);
@@ -85,13 +86,15 @@ function displayValue(value) {
85
86
  if (props.multiple && Array.isArray(value)) {
86
87
  const displayedValues = value.map((item) => getDisplayValue(items.value, item, {
87
88
  labelKey: props.labelKey,
88
- valueKey: props.valueKey
89
+ valueKey: props.valueKey,
90
+ by: props.by
89
91
  })).filter((v) => v != null && v !== "");
90
92
  return displayedValues.length > 0 ? displayedValues.join(", ") : void 0;
91
93
  }
92
94
  return getDisplayValue(items.value, value, {
93
95
  labelKey: props.labelKey,
94
- valueKey: props.valueKey
96
+ valueKey: props.valueKey,
97
+ by: props.by
95
98
  });
96
99
  }
97
100
  const triggerRef = useTemplateRef("triggerRef");
@@ -139,8 +142,10 @@ function onUpdateOpen(value) {
139
142
  function isSelectItem(item) {
140
143
  return typeof item === "object" && item !== null;
141
144
  }
145
+ const viewportRef = useTemplateRef("viewportRef");
142
146
  defineExpose({
143
- triggerRef: toRef(() => triggerRef.value?.$el)
147
+ triggerRef: toRef(() => triggerRef.value?.$el),
148
+ viewportRef: toRef(() => viewportRef.value)
144
149
  });
145
150
  </script>
146
151
 
@@ -192,7 +197,7 @@ defineExpose({
192
197
  <SelectContent data-slot="content" :class="ui.content({ class: props.ui?.content })" v-bind="contentProps">
193
198
  <slot name="content-top" />
194
199
 
195
- <div role="presentation" data-slot="viewport" :class="ui.viewport({ class: props.ui?.viewport })">
200
+ <div ref="viewportRef" role="presentation" data-slot="viewport" :class="ui.viewport({ class: props.ui?.viewport })">
196
201
  <SelectGroup v-for="(group, groupIndex) in groups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: props.ui?.group })">
197
202
  <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
198
203
  <SelectLabel v-if="isSelectItem(item) && item.type === 'label'" data-slot="label" :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })">
@@ -96,6 +96,11 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
96
96
  modelModifiers?: Omit<ModelModifiers<GetModelValue<T, VK, M>>, 'lazy'>;
97
97
  /** Whether multiple options can be selected or not. */
98
98
  multiple?: M & boolean;
99
+ /**
100
+ * Use a custom comparator to compare objects.
101
+ * This can be a string (key) or a function that compares two objects.
102
+ */
103
+ by?: string | ((a: any, b: any) => boolean);
99
104
  /** Highlight the ring color like a focus state. */
100
105
  highlight?: boolean;
101
106
  autofocus?: boolean;
@@ -143,12 +148,21 @@ export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested
143
148
  'content-top': (props?: {}) => any;
144
149
  'content-bottom': (props?: {}) => any;
145
150
  }
146
- declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = "value", M extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
147
- props: __VLS_PrettifyLocal<SelectProps<T, VK, M> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
151
+ declare const _default: typeof __VLS_export;
152
+ export default _default;
153
+ declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = "value", M extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
154
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<SelectProps<T, VK, M> & {
155
+ onBlur?: ((event: FocusEvent) => any) | undefined;
156
+ onChange?: ((event: Event) => any) | undefined;
157
+ onFocus?: ((event: FocusEvent) => any) | undefined;
158
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
159
+ "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
160
+ }> & (typeof globalThis extends {
148
161
  __VLS_PROPS_FALLBACK: infer P;
149
162
  } ? P : {});
150
163
  expose: (exposed: import("vue").ShallowUnwrapRef<{
151
164
  triggerRef: Readonly<import("vue").Ref<HTMLButtonElement, HTMLButtonElement>>;
165
+ viewportRef: Readonly<import("vue").Ref<HTMLDivElement | null, HTMLDivElement | null>>;
152
166
  }>) => void;
153
167
  attrs: any;
154
168
  slots: SelectSlots<T, VK, M, NestedItem<T>>;
@@ -156,8 +170,8 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends Get
156
170
  }>) => import("vue").VNode & {
157
171
  __ctx?: Awaited<typeof __VLS_setup>;
158
172
  };
159
- declare const _default: typeof __VLS_export;
160
- export default _default;
161
- type __VLS_PrettifyLocal<T> = {
173
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
174
+ [K in keyof T]: T[K];
175
+ } : {
162
176
  [K in keyof T as K]: T[K];
163
- } & {};
177
+ }) & {};
@@ -2,7 +2,7 @@ import type { ComboboxRootProps, ComboboxRootEmits, ComboboxContentProps, Combob
2
2
  import type { AppConfig } from '@nuxt/schema';
3
3
  import theme from '#build/ui/select-menu';
4
4
  import type { UseComponentIconsProps } from '../composables/useComponentIcons';
5
- import type { AvatarProps, ChipProps, IconProps, InputProps } from '../types';
5
+ import type { AvatarProps, ButtonProps, ChipProps, IconProps, InputProps, LinkPropsKeys } from '../types';
6
6
  import type { ModelModifiers } from '../types/input';
7
7
  import type { ButtonHTMLAttributes } from '../types/html';
8
8
  import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem, EmitsToProps } from '../types/utils';
@@ -29,7 +29,7 @@ export type SelectMenuItem = SelectMenuValue | {
29
29
  ui?: Pick<SelectMenu['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
30
30
  [key: string]: any;
31
31
  };
32
- export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<T> | undefined = undefined, M extends boolean = false> extends Pick<ComboboxRootProps<T>, 'open' | 'defaultOpen' | 'disabled' | 'name' | 'resetSearchTermOnBlur' | 'resetSearchTermOnSelect' | 'highlightOnHover'>, UseComponentIconsProps, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled' | 'name'> {
32
+ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<T> | undefined = undefined, M extends boolean = false> extends Pick<ComboboxRootProps<T>, 'open' | 'defaultOpen' | 'disabled' | 'name' | 'resetSearchTermOnBlur' | 'resetSearchTermOnSelect' | 'resetModelValueOnClear' | 'highlightOnHover' | 'by'>, UseComponentIconsProps, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled' | 'name'> {
33
33
  id?: string;
34
34
  /** The placeholder text when the select is empty. */
35
35
  placeholder?: string;
@@ -65,6 +65,18 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
65
65
  * @IconifyIcon
66
66
  */
67
67
  selectedIcon?: IconProps['name'];
68
+ /**
69
+ * Display a clear button to reset the model value.
70
+ * Can be an object to pass additional props to the Button.
71
+ * @defaultValue false
72
+ */
73
+ clear?: boolean | Partial<Omit<ButtonProps, LinkPropsKeys>>;
74
+ /**
75
+ * The icon displayed in the clear button.
76
+ * @defaultValue appConfig.ui.icons.close
77
+ * @IconifyIcon
78
+ */
79
+ clearIcon?: IconProps['name'];
68
80
  /**
69
81
  * The content of the menu.
70
82
  * @defaultValue { side: 'bottom', sideOffset: 8, collisionPadding: 8, position: 'popper' }
@@ -93,10 +105,10 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
93
105
  */
94
106
  overscan?: number;
95
107
  /**
96
- * Estimated size (in px) of each item
108
+ * Estimated size (in px) of each item, or a function that returns the size for a given index
97
109
  * @defaultValue 32
98
110
  */
99
- estimateSize?: number;
111
+ estimateSize?: number | ((index: number) => number);
100
112
  };
101
113
  /**
102
114
  * When `items` is an array of objects, select the field to use as the value instead of the object itself.
@@ -151,6 +163,7 @@ export type SelectMenuEmits<A extends ArrayOrNested<SelectMenuItem>, VK extends
151
163
  blur: [event: FocusEvent];
152
164
  focus: [event: FocusEvent];
153
165
  create: [item: string];
166
+ clear: [];
154
167
  /** Event handler when highlighted element changes. */
155
168
  highlight: [
156
169
  payload: {
@@ -200,29 +213,42 @@ export interface SelectMenuSlots<A extends ArrayOrNested<SelectMenuItem> = Array
200
213
  item: string;
201
214
  }): any;
202
215
  }
203
- declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<T> | undefined = undefined, M extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
204
- props: __VLS_PrettifyLocal<(SelectMenuProps<T, VK, M> & {
216
+ declare const _default: typeof __VLS_export;
217
+ export default _default;
218
+ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<T> | undefined = undefined, M extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
219
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(SelectMenuProps<T, VK, M> & {
205
220
  searchTerm?: string;
206
- }) & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "create", item: string) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void) & ((evt: "highlight", payload: {
207
- ref: HTMLElement;
208
- value: GetModelValue<T, VK, M>;
209
- } | undefined) => void) & ((evt: "update:searchTerm", value: string) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
221
+ }) & {
222
+ onClear?: (() => any) | undefined;
223
+ onBlur?: ((event: FocusEvent) => any) | undefined;
224
+ onChange?: ((event: Event) => any) | undefined;
225
+ onFocus?: ((event: FocusEvent) => any) | undefined;
226
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
227
+ onCreate?: ((item: string) => any) | undefined;
228
+ "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
229
+ onHighlight?: ((payload: {
230
+ ref: HTMLElement;
231
+ value: GetModelValue<T, VK, M>;
232
+ } | undefined) => any) | undefined;
233
+ "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
234
+ }> & (typeof globalThis extends {
210
235
  __VLS_PROPS_FALLBACK: infer P;
211
236
  } ? P : {});
212
237
  expose: (exposed: import("vue").ShallowUnwrapRef<{
213
238
  triggerRef: Readonly<import("vue").Ref<HTMLButtonElement, HTMLButtonElement>>;
239
+ viewportRef: Readonly<import("vue").Ref<HTMLDivElement | null, HTMLDivElement | null>>;
214
240
  }>) => void;
215
241
  attrs: any;
216
242
  slots: SelectMenuSlots<T, VK, M, NestedItem<T>>;
217
- emit: (((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "create", item: string) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void) & ((evt: "highlight", payload: {
243
+ emit: (((evt: "clear") => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "create", item: string) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void) & ((evt: "highlight", payload: {
218
244
  ref: HTMLElement;
219
245
  value: GetModelValue<T, VK, M>;
220
246
  } | undefined) => void)) & ((evt: "update:searchTerm", value: string) => void);
221
247
  }>) => import("vue").VNode & {
222
248
  __ctx?: Awaited<typeof __VLS_setup>;
223
249
  };
224
- declare const _default: typeof __VLS_export;
225
- export default _default;
226
- type __VLS_PrettifyLocal<T> = {
250
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
251
+ [K in keyof T]: T[K];
252
+ } : {
227
253
  [K in keyof T as K]: T[K];
228
- } & {};
254
+ }) & {};
@@ -4,7 +4,7 @@ import theme from "#build/ui/select-menu";
4
4
 
5
5
  <script setup>
6
6
  import { useTemplateRef, computed, onMounted, toRef, toRaw } from "vue";
7
- import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxVirtualizer, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, FocusScope, useForwardPropsEmits, useFilter } from "reka-ui";
7
+ import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxCancel, ComboboxPortal, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxVirtualizer, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, FocusScope, useForwardPropsEmits, useFilter } from "reka-ui";
8
8
  import { defu } from "defu";
9
9
  import { reactivePick, createReusableTemplate } from "@vueuse/core";
10
10
  import { useAppConfig } from "#imports";
@@ -18,6 +18,7 @@ import { getEstimateSize } from "../utils/virtualizer";
18
18
  import { tv } from "../utils/tv";
19
19
  import UIcon from "./Icon.vue";
20
20
  import UAvatar from "./Avatar.vue";
21
+ import UButton from "./Button.vue";
21
22
  import UChip from "./Chip.vue";
22
23
  import UInput from "./Input.vue";
23
24
  defineOptions({ inheritAttrs: false });
@@ -31,6 +32,8 @@ const props = defineProps({
31
32
  required: { type: Boolean, required: false },
32
33
  trailingIcon: { type: null, required: false },
33
34
  selectedIcon: { type: null, required: false },
35
+ clear: { type: [Boolean, Object], required: false },
36
+ clearIcon: { type: null, required: false },
34
37
  content: { type: Object, required: false },
35
38
  arrow: { type: [Boolean, Object], required: false },
36
39
  portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
@@ -57,7 +60,9 @@ const props = defineProps({
57
60
  name: { type: String, required: false },
58
61
  resetSearchTermOnBlur: { type: Boolean, required: false, default: true },
59
62
  resetSearchTermOnSelect: { type: Boolean, required: false, default: true },
63
+ resetModelValueOnClear: { type: Boolean, required: false, default: true },
60
64
  highlightOnHover: { type: Boolean, required: false },
65
+ by: { type: [String, Function], required: false },
61
66
  icon: { type: null, required: false },
62
67
  avatar: { type: Object, required: false },
63
68
  leading: { type: Boolean, required: false },
@@ -66,20 +71,21 @@ const props = defineProps({
66
71
  loading: { type: Boolean, required: false },
67
72
  loadingIcon: { type: null, required: false }
68
73
  });
69
- const emits = defineEmits(["update:open", "change", "blur", "focus", "create", "highlight", "update:modelValue"]);
74
+ const emits = defineEmits(["update:open", "change", "blur", "focus", "create", "clear", "highlight", "update:modelValue"]);
70
75
  const slots = defineSlots();
71
76
  const searchTerm = defineModel("searchTerm", { type: String, ...{ default: "" } });
72
77
  const { t } = useLocale();
73
78
  const appConfig = useAppConfig();
74
79
  const { contains } = useFilter({ sensitivity: "base" });
75
- const rootProps = useForwardPropsEmits(reactivePick(props, "modelValue", "defaultValue", "open", "defaultOpen", "required", "multiple", "resetSearchTermOnBlur", "resetSearchTermOnSelect", "highlightOnHover"), emits);
80
+ const rootProps = useForwardPropsEmits(reactivePick(props, "modelValue", "defaultValue", "open", "defaultOpen", "required", "multiple", "resetSearchTermOnBlur", "resetSearchTermOnSelect", "resetModelValueOnClear", "highlightOnHover", "by"), emits);
76
81
  const portalProps = usePortal(toRef(() => props.portal));
77
82
  const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8, position: "popper" }));
78
83
  const arrowProps = toRef(() => props.arrow);
84
+ const clearProps = computed(() => typeof props.clear === "object" ? props.clear : {});
79
85
  const virtualizerProps = toRef(() => {
80
86
  if (!props.virtualize) return false;
81
87
  return defu(typeof props.virtualize === "boolean" ? {} : props.virtualize, {
82
- estimateSize: getEstimateSize(items.value, props.size || "md", props.descriptionKey)
88
+ estimateSize: getEstimateSize(filteredItems.value, selectSize.value || "md", props.descriptionKey, !!slots["item-description"])
83
89
  });
84
90
  });
85
91
  const searchInputProps = toRef(() => defu(props.searchInput, { placeholder: t("selectMenu.search"), variant: "none" }));
@@ -115,13 +121,15 @@ function displayValue(value) {
115
121
  if (props.multiple && Array.isArray(value)) {
116
122
  const displayedValues = value.map((item) => getDisplayValue(items.value, item, {
117
123
  labelKey: props.labelKey,
118
- valueKey: props.valueKey
124
+ valueKey: props.valueKey,
125
+ by: props.by
119
126
  })).filter((v) => v != null && v !== "");
120
127
  return displayedValues.length > 0 ? displayedValues.join(", ") : void 0;
121
128
  }
122
129
  return getDisplayValue(items.value, value, {
123
130
  labelKey: props.labelKey,
124
- valueKey: props.valueKey
131
+ valueKey: props.valueKey,
132
+ by: props.by
125
133
  });
126
134
  }
127
135
  const groups = computed(
@@ -158,7 +166,7 @@ const createItem = computed(() => {
158
166
  }
159
167
  const newItem = props.valueKey ? { [props.valueKey]: searchTerm.value } : searchTerm.value;
160
168
  if (typeof props.createItem === "object" && props.createItem.when === "always" || props.createItem === "always") {
161
- return !filteredItems.value.find((item) => compare(item, newItem, props.valueKey));
169
+ return !filteredItems.value.find((item) => compare(item, newItem, props.by ?? props.valueKey));
162
170
  }
163
171
  return !filteredItems.value.length;
164
172
  });
@@ -237,8 +245,19 @@ function onSelect(e, item) {
237
245
  function isSelectItem(item) {
238
246
  return typeof item === "object" && item !== null;
239
247
  }
248
+ function isModelValueEmpty(modelValue) {
249
+ if (props.multiple && Array.isArray(modelValue)) {
250
+ return modelValue.length === 0;
251
+ }
252
+ return modelValue === void 0 || modelValue === null || modelValue === "";
253
+ }
254
+ function onClear() {
255
+ emits("clear");
256
+ }
257
+ const viewportRef = useTemplateRef("viewportRef");
240
258
  defineExpose({
241
- triggerRef: toRef(() => triggerRef.value?.$el)
259
+ triggerRef: toRef(() => triggerRef.value?.$el),
260
+ viewportRef: toRef(() => viewportRef.value)
242
261
  });
243
262
  </script>
244
263
 
@@ -344,9 +363,23 @@ defineExpose({
344
363
  </template>
345
364
  </slot>
346
365
 
347
- <span v-if="isTrailing || !!slots.trailing" data-slot="trailing" :class="ui.trailing({ class: props.ui?.trailing })">
366
+ <span v-if="isTrailing || !!slots.trailing || !!clear" data-slot="trailing" :class="ui.trailing({ class: props.ui?.trailing })">
348
367
  <slot name="trailing" :model-value="modelValue" :open="open" :ui="ui">
349
- <UIcon v-if="trailingIconName" :name="trailingIconName" data-slot="trailingIcon" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
368
+ <ComboboxCancel v-if="!!clear && !isModelValueEmpty(modelValue)" as-child>
369
+ <UButton
370
+ as="span"
371
+ :icon="clearIcon || appConfig.ui.icons.close"
372
+ variant="link"
373
+ color="neutral"
374
+ tabindex="-1"
375
+ v-bind="clearProps"
376
+ data-slot="trailingClear"
377
+ :class="ui.trailingClear({ class: props.ui?.trailingClear })"
378
+ @click.stop="onClear"
379
+ />
380
+ </ComboboxCancel>
381
+
382
+ <UIcon v-else-if="trailingIconName" :name="trailingIconName" data-slot="trailingIcon" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
350
383
  </slot>
351
384
  </span>
352
385
  </ComboboxTrigger>
@@ -375,7 +408,7 @@ defineExpose({
375
408
  </slot>
376
409
  </ComboboxEmpty>
377
410
 
378
- <div role="presentation" data-slot="viewport" :class="ui.viewport({ class: props.ui?.viewport })">
411
+ <div ref="viewportRef" role="presentation" data-slot="viewport" :class="ui.viewport({ class: props.ui?.viewport })">
379
412
  <template v-if="!!virtualize">
380
413
  <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
381
414