@eslamdevui/ui 4.0.0 → 4.1.1-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) hide show
  1. package/.nuxt/ui/auth-form.ts +2 -2
  2. package/.nuxt/ui/calendar.ts +221 -9
  3. package/.nuxt/ui/chat-message.ts +10 -3
  4. package/.nuxt/ui/command-palette.ts +12 -2
  5. package/.nuxt/ui/content/content-search.ts +8 -1
  6. package/.nuxt/ui/context-menu.ts +3 -1
  7. package/.nuxt/ui/dashboard-panel.ts +1 -1
  8. package/.nuxt/ui/dashboard-search.ts +8 -1
  9. package/.nuxt/ui/dashboard-sidebar.ts +1 -1
  10. package/.nuxt/ui/drawer.ts +23 -0
  11. package/.nuxt/ui/dropdown-menu.ts +3 -1
  12. package/.nuxt/ui/empty.ts +83 -0
  13. package/.nuxt/ui/index.ts +1 -0
  14. package/.nuxt/ui/input-menu.ts +12 -2
  15. package/.nuxt/ui/input-number.ts +25 -14
  16. package/.nuxt/ui/kbd.ts +1 -1
  17. package/.nuxt/ui/prose/code-tree.ts +1 -1
  18. package/.nuxt/ui/prose/img.ts +2 -1
  19. package/.nuxt/ui/select-menu.ts +12 -2
  20. package/.nuxt/ui/select.ts +4 -2
  21. package/.nuxt/ui/table.ts +8 -2
  22. package/.nuxt/ui/tree.ts +25 -11
  23. package/cli/templates.mjs +14 -2
  24. package/dist/module.d.mts +15 -0
  25. package/dist/module.json +2 -2
  26. package/dist/module.mjs +5 -2
  27. package/dist/runtime/components/Accordion.d.vue.ts +11 -6
  28. package/dist/runtime/components/Accordion.vue +4 -4
  29. package/dist/runtime/components/Accordion.vue.d.ts +11 -6
  30. package/dist/runtime/components/Alert.d.vue.ts +6 -5
  31. package/dist/runtime/components/Alert.vue +1 -1
  32. package/dist/runtime/components/Alert.vue.d.ts +6 -5
  33. package/dist/runtime/components/App.d.vue.ts +5 -4
  34. package/dist/runtime/components/App.vue +1 -1
  35. package/dist/runtime/components/App.vue.d.ts +5 -4
  36. package/dist/runtime/components/AuthForm.d.vue.ts +33 -51
  37. package/dist/runtime/components/AuthForm.vue +35 -23
  38. package/dist/runtime/components/AuthForm.vue.d.ts +33 -51
  39. package/dist/runtime/components/Avatar.d.vue.ts +6 -4
  40. package/dist/runtime/components/Avatar.vue +10 -4
  41. package/dist/runtime/components/Avatar.vue.d.ts +6 -4
  42. package/dist/runtime/components/AvatarGroup.d.vue.ts +2 -1
  43. package/dist/runtime/components/AvatarGroup.vue.d.ts +2 -1
  44. package/dist/runtime/components/Badge.d.vue.ts +11 -4
  45. package/dist/runtime/components/Badge.vue +3 -3
  46. package/dist/runtime/components/Badge.vue.d.ts +11 -4
  47. package/dist/runtime/components/Banner.d.vue.ts +6 -3
  48. package/dist/runtime/components/Banner.vue +1 -1
  49. package/dist/runtime/components/Banner.vue.d.ts +6 -3
  50. package/dist/runtime/components/BlogPost.d.vue.ts +11 -4
  51. package/dist/runtime/components/BlogPost.vue +2 -2
  52. package/dist/runtime/components/BlogPost.vue.d.ts +11 -4
  53. package/dist/runtime/components/BlogPosts.d.vue.ts +23 -13
  54. package/dist/runtime/components/BlogPosts.vue +8 -2
  55. package/dist/runtime/components/BlogPosts.vue.d.ts +23 -13
  56. package/dist/runtime/components/Breadcrumb.d.vue.ts +23 -7
  57. package/dist/runtime/components/Breadcrumb.vue +8 -8
  58. package/dist/runtime/components/Breadcrumb.vue.d.ts +23 -7
  59. package/dist/runtime/components/Button.d.vue.ts +11 -4
  60. package/dist/runtime/components/Button.vue +3 -3
  61. package/dist/runtime/components/Button.vue.d.ts +11 -4
  62. package/dist/runtime/components/Calendar.d.vue.ts +8 -8
  63. package/dist/runtime/components/Calendar.vue +3 -1
  64. package/dist/runtime/components/Calendar.vue.d.ts +8 -8
  65. package/dist/runtime/components/Card.d.vue.ts +2 -1
  66. package/dist/runtime/components/Card.vue.d.ts +2 -1
  67. package/dist/runtime/components/Carousel.d.vue.ts +5 -6
  68. package/dist/runtime/components/Carousel.vue +33 -12
  69. package/dist/runtime/components/Carousel.vue.d.ts +5 -6
  70. package/dist/runtime/components/ChangelogVersion.d.vue.ts +14 -5
  71. package/dist/runtime/components/ChangelogVersion.vue +3 -3
  72. package/dist/runtime/components/ChangelogVersion.vue.d.ts +14 -5
  73. package/dist/runtime/components/ChangelogVersions.d.vue.ts +12 -39
  74. package/dist/runtime/components/ChangelogVersions.vue +2 -2
  75. package/dist/runtime/components/ChangelogVersions.vue.d.ts +12 -39
  76. package/dist/runtime/components/ChatMessage.d.vue.ts +3 -1
  77. package/dist/runtime/components/ChatMessage.vue +1 -1
  78. package/dist/runtime/components/ChatMessage.vue.d.ts +3 -1
  79. package/dist/runtime/components/ChatMessages.d.vue.ts +16 -16
  80. package/dist/runtime/components/ChatMessages.vue +31 -13
  81. package/dist/runtime/components/ChatMessages.vue.d.ts +16 -16
  82. package/dist/runtime/components/ChatPalette.d.vue.ts +2 -1
  83. package/dist/runtime/components/ChatPalette.vue.d.ts +2 -1
  84. package/dist/runtime/components/ChatPrompt.d.vue.ts +4 -3
  85. package/dist/runtime/components/ChatPrompt.vue.d.ts +4 -3
  86. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +2 -1
  87. package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +2 -1
  88. package/dist/runtime/components/Checkbox.d.vue.ts +2 -1
  89. package/dist/runtime/components/Checkbox.vue.d.ts +2 -1
  90. package/dist/runtime/components/CheckboxGroup.d.vue.ts +4 -6
  91. package/dist/runtime/components/CheckboxGroup.vue.d.ts +4 -6
  92. package/dist/runtime/components/Chip.d.vue.ts +2 -1
  93. package/dist/runtime/components/Chip.vue.d.ts +2 -1
  94. package/dist/runtime/components/Collapsible.d.vue.ts +2 -1
  95. package/dist/runtime/components/Collapsible.vue.d.ts +2 -1
  96. package/dist/runtime/components/ColorPicker.d.vue.ts +3 -2
  97. package/dist/runtime/components/ColorPicker.vue.d.ts +3 -2
  98. package/dist/runtime/components/CommandPalette.d.vue.ts +51 -26
  99. package/dist/runtime/components/CommandPalette.vue +134 -68
  100. package/dist/runtime/components/CommandPalette.vue.d.ts +51 -26
  101. package/dist/runtime/components/Container.d.vue.ts +2 -1
  102. package/dist/runtime/components/Container.vue.d.ts +2 -1
  103. package/dist/runtime/components/ContextMenu.d.vue.ts +32 -11
  104. package/dist/runtime/components/ContextMenu.vue +2 -0
  105. package/dist/runtime/components/ContextMenu.vue.d.ts +32 -11
  106. package/dist/runtime/components/ContextMenuContent.d.vue.ts +6 -12
  107. package/dist/runtime/components/ContextMenuContent.vue +21 -11
  108. package/dist/runtime/components/ContextMenuContent.vue.d.ts +6 -12
  109. package/dist/runtime/components/DashboardGroup.d.vue.ts +2 -1
  110. package/dist/runtime/components/DashboardGroup.vue.d.ts +2 -1
  111. package/dist/runtime/components/DashboardNavbar.d.vue.ts +11 -4
  112. package/dist/runtime/components/DashboardNavbar.vue +3 -3
  113. package/dist/runtime/components/DashboardNavbar.vue.d.ts +11 -4
  114. package/dist/runtime/components/DashboardPanel.d.vue.ts +2 -1
  115. package/dist/runtime/components/DashboardPanel.vue.d.ts +2 -1
  116. package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +2 -1
  117. package/dist/runtime/components/DashboardResizeHandle.vue.d.ts +2 -1
  118. package/dist/runtime/components/DashboardSearch.d.vue.ts +8 -4
  119. package/dist/runtime/components/DashboardSearch.vue +19 -6
  120. package/dist/runtime/components/DashboardSearch.vue.d.ts +8 -4
  121. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +2 -1
  122. package/dist/runtime/components/DashboardSearchButton.vue +2 -2
  123. package/dist/runtime/components/DashboardSearchButton.vue.d.ts +2 -1
  124. package/dist/runtime/components/DashboardSidebar.d.vue.ts +10 -8
  125. package/dist/runtime/components/DashboardSidebar.vue +4 -4
  126. package/dist/runtime/components/DashboardSidebar.vue.d.ts +10 -8
  127. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +2 -1
  128. package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +2 -1
  129. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +2 -1
  130. package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +2 -1
  131. package/dist/runtime/components/DashboardToolbar.d.vue.ts +2 -1
  132. package/dist/runtime/components/DashboardToolbar.vue.d.ts +2 -1
  133. package/dist/runtime/components/Drawer.d.vue.ts +5 -1
  134. package/dist/runtime/components/Drawer.vue +16 -5
  135. package/dist/runtime/components/Drawer.vue.d.ts +5 -1
  136. package/dist/runtime/components/DropdownMenu.d.vue.ts +32 -11
  137. package/dist/runtime/components/DropdownMenu.vue +2 -0
  138. package/dist/runtime/components/DropdownMenu.vue.d.ts +32 -11
  139. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +12 -14
  140. package/dist/runtime/components/DropdownMenuContent.vue +21 -11
  141. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +12 -14
  142. package/dist/runtime/components/Empty.d.vue.ts +53 -0
  143. package/dist/runtime/components/Empty.vue +68 -0
  144. package/dist/runtime/components/Empty.vue.d.ts +53 -0
  145. package/dist/runtime/components/Error.d.vue.ts +2 -2
  146. package/dist/runtime/components/Error.vue +1 -1
  147. package/dist/runtime/components/Error.vue.d.ts +2 -2
  148. package/dist/runtime/components/FieldGroup.d.vue.ts +2 -1
  149. package/dist/runtime/components/FieldGroup.vue +1 -1
  150. package/dist/runtime/components/FieldGroup.vue.d.ts +2 -1
  151. package/dist/runtime/components/FileUpload.d.vue.ts +12 -9
  152. package/dist/runtime/components/FileUpload.vue +8 -7
  153. package/dist/runtime/components/FileUpload.vue.d.ts +12 -9
  154. package/dist/runtime/components/Footer.d.vue.ts +2 -1
  155. package/dist/runtime/components/Footer.vue.d.ts +2 -1
  156. package/dist/runtime/components/FooterColumns.d.vue.ts +13 -5
  157. package/dist/runtime/components/FooterColumns.vue +2 -2
  158. package/dist/runtime/components/FooterColumns.vue.d.ts +13 -5
  159. package/dist/runtime/components/Form.d.vue.ts +5 -7
  160. package/dist/runtime/components/Form.vue.d.ts +5 -7
  161. package/dist/runtime/components/FormField.d.vue.ts +2 -1
  162. package/dist/runtime/components/FormField.vue.d.ts +2 -1
  163. package/dist/runtime/components/Header.d.vue.ts +9 -7
  164. package/dist/runtime/components/Header.vue +3 -3
  165. package/dist/runtime/components/Header.vue.d.ts +9 -7
  166. package/dist/runtime/components/Icon.d.vue.ts +2 -1
  167. package/dist/runtime/components/Icon.vue.d.ts +2 -1
  168. package/dist/runtime/components/Input.d.vue.ts +14 -11
  169. package/dist/runtime/components/Input.vue +3 -3
  170. package/dist/runtime/components/Input.vue.d.ts +14 -11
  171. package/dist/runtime/components/InputMenu.d.vue.ts +49 -28
  172. package/dist/runtime/components/InputMenu.vue +117 -65
  173. package/dist/runtime/components/InputMenu.vue.d.ts +49 -28
  174. package/dist/runtime/components/InputNumber.d.vue.ts +6 -3
  175. package/dist/runtime/components/InputNumber.vue +7 -5
  176. package/dist/runtime/components/InputNumber.vue.d.ts +6 -3
  177. package/dist/runtime/components/InputTags.d.vue.ts +16 -16
  178. package/dist/runtime/components/InputTags.vue +5 -5
  179. package/dist/runtime/components/InputTags.vue.d.ts +16 -16
  180. package/dist/runtime/components/Kbd.d.vue.ts +2 -1
  181. package/dist/runtime/components/Kbd.vue.d.ts +2 -1
  182. package/dist/runtime/components/Link.d.vue.ts +3 -2
  183. package/dist/runtime/components/Link.vue.d.ts +3 -2
  184. package/dist/runtime/components/LinkBase.d.vue.ts +3 -2
  185. package/dist/runtime/components/LinkBase.vue.d.ts +3 -2
  186. package/dist/runtime/components/Main.d.vue.ts +3 -4
  187. package/dist/runtime/components/Main.vue +1 -1
  188. package/dist/runtime/components/Main.vue.d.ts +3 -4
  189. package/dist/runtime/components/Marquee.d.vue.ts +22 -1
  190. package/dist/runtime/components/Marquee.vue +1 -1
  191. package/dist/runtime/components/Marquee.vue.d.ts +22 -1
  192. package/dist/runtime/components/Modal.d.vue.ts +4 -6
  193. package/dist/runtime/components/Modal.vue +3 -6
  194. package/dist/runtime/components/Modal.vue.d.ts +4 -6
  195. package/dist/runtime/components/NavigationMenu.d.vue.ts +20 -9
  196. package/dist/runtime/components/NavigationMenu.vue +101 -76
  197. package/dist/runtime/components/NavigationMenu.vue.d.ts +20 -9
  198. package/dist/runtime/components/OverlayProvider.d.vue.ts +2 -1
  199. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -1
  200. package/dist/runtime/components/Page.d.vue.ts +2 -1
  201. package/dist/runtime/components/Page.vue.d.ts +2 -1
  202. package/dist/runtime/components/PageAnchors.d.vue.ts +13 -5
  203. package/dist/runtime/components/PageAnchors.vue +2 -2
  204. package/dist/runtime/components/PageAnchors.vue.d.ts +13 -5
  205. package/dist/runtime/components/PageAside.d.vue.ts +2 -1
  206. package/dist/runtime/components/PageAside.vue.d.ts +2 -1
  207. package/dist/runtime/components/PageBody.d.vue.ts +2 -1
  208. package/dist/runtime/components/PageBody.vue.d.ts +2 -1
  209. package/dist/runtime/components/PageCTA.d.vue.ts +2 -1
  210. package/dist/runtime/components/PageCTA.vue.d.ts +2 -1
  211. package/dist/runtime/components/PageCard.d.vue.ts +5 -2
  212. package/dist/runtime/components/PageCard.vue +1 -1
  213. package/dist/runtime/components/PageCard.vue.d.ts +5 -2
  214. package/dist/runtime/components/PageColumns.d.vue.ts +2 -1
  215. package/dist/runtime/components/PageColumns.vue.d.ts +2 -1
  216. package/dist/runtime/components/PageFeature.d.vue.ts +5 -2
  217. package/dist/runtime/components/PageFeature.vue +1 -1
  218. package/dist/runtime/components/PageFeature.vue.d.ts +5 -2
  219. package/dist/runtime/components/PageGrid.d.vue.ts +2 -1
  220. package/dist/runtime/components/PageGrid.vue.d.ts +2 -1
  221. package/dist/runtime/components/PageHeader.d.vue.ts +2 -1
  222. package/dist/runtime/components/PageHeader.vue.d.ts +2 -1
  223. package/dist/runtime/components/PageHero.d.vue.ts +2 -1
  224. package/dist/runtime/components/PageHero.vue.d.ts +2 -1
  225. package/dist/runtime/components/PageLinks.d.vue.ts +13 -5
  226. package/dist/runtime/components/PageLinks.vue +2 -2
  227. package/dist/runtime/components/PageLinks.vue.d.ts +13 -5
  228. package/dist/runtime/components/PageList.d.vue.ts +2 -1
  229. package/dist/runtime/components/PageList.vue.d.ts +2 -1
  230. package/dist/runtime/components/PageLogos.d.vue.ts +2 -1
  231. package/dist/runtime/components/PageLogos.vue.d.ts +2 -1
  232. package/dist/runtime/components/PageSection.d.vue.ts +5 -2
  233. package/dist/runtime/components/PageSection.vue +1 -1
  234. package/dist/runtime/components/PageSection.vue.d.ts +5 -2
  235. package/dist/runtime/components/Pagination.d.vue.ts +5 -2
  236. package/dist/runtime/components/Pagination.vue +5 -5
  237. package/dist/runtime/components/Pagination.vue.d.ts +5 -2
  238. package/dist/runtime/components/PinInput.d.vue.ts +5 -9
  239. package/dist/runtime/components/PinInput.vue.d.ts +5 -9
  240. package/dist/runtime/components/Popover.d.vue.ts +22 -23
  241. package/dist/runtime/components/Popover.vue +4 -4
  242. package/dist/runtime/components/Popover.vue.d.ts +22 -23
  243. package/dist/runtime/components/PricingPlan.d.vue.ts +11 -4
  244. package/dist/runtime/components/PricingPlan.vue +3 -3
  245. package/dist/runtime/components/PricingPlan.vue.d.ts +11 -4
  246. package/dist/runtime/components/PricingPlans.d.vue.ts +21 -13
  247. package/dist/runtime/components/PricingPlans.vue +7 -1
  248. package/dist/runtime/components/PricingPlans.vue.d.ts +21 -13
  249. package/dist/runtime/components/PricingTable.d.vue.ts +4 -3
  250. package/dist/runtime/components/PricingTable.vue.d.ts +4 -3
  251. package/dist/runtime/components/Progress.d.vue.ts +2 -1
  252. package/dist/runtime/components/Progress.vue +1 -1
  253. package/dist/runtime/components/Progress.vue.d.ts +2 -1
  254. package/dist/runtime/components/RadioGroup.d.vue.ts +4 -6
  255. package/dist/runtime/components/RadioGroup.vue.d.ts +4 -6
  256. package/dist/runtime/components/Select.d.vue.ts +25 -19
  257. package/dist/runtime/components/Select.vue +18 -9
  258. package/dist/runtime/components/Select.vue.d.ts +25 -19
  259. package/dist/runtime/components/SelectMenu.d.vue.ts +46 -26
  260. package/dist/runtime/components/SelectMenu.vue +114 -61
  261. package/dist/runtime/components/SelectMenu.vue.d.ts +46 -26
  262. package/dist/runtime/components/Separator.d.vue.ts +5 -2
  263. package/dist/runtime/components/Separator.vue +1 -1
  264. package/dist/runtime/components/Separator.vue.d.ts +5 -2
  265. package/dist/runtime/components/Skeleton.d.vue.ts +2 -1
  266. package/dist/runtime/components/Skeleton.vue.d.ts +2 -1
  267. package/dist/runtime/components/Slideover.d.vue.ts +4 -6
  268. package/dist/runtime/components/Slideover.vue +3 -6
  269. package/dist/runtime/components/Slideover.vue.d.ts +4 -6
  270. package/dist/runtime/components/Slider.d.vue.ts +5 -7
  271. package/dist/runtime/components/Slider.vue.d.ts +5 -7
  272. package/dist/runtime/components/Stepper.d.vue.ts +10 -10
  273. package/dist/runtime/components/Stepper.vue +1 -1
  274. package/dist/runtime/components/Stepper.vue.d.ts +10 -10
  275. package/dist/runtime/components/Switch.d.vue.ts +2 -1
  276. package/dist/runtime/components/Switch.vue.d.ts +2 -1
  277. package/dist/runtime/components/Table.d.vue.ts +27 -20
  278. package/dist/runtime/components/Table.vue +145 -61
  279. package/dist/runtime/components/Table.vue.d.ts +27 -20
  280. package/dist/runtime/components/Tabs.d.vue.ts +13 -9
  281. package/dist/runtime/components/Tabs.vue +3 -3
  282. package/dist/runtime/components/Tabs.vue.d.ts +13 -9
  283. package/dist/runtime/components/Textarea.d.vue.ts +14 -11
  284. package/dist/runtime/components/Textarea.vue +3 -3
  285. package/dist/runtime/components/Textarea.vue.d.ts +14 -11
  286. package/dist/runtime/components/Timeline.d.vue.ts +5 -6
  287. package/dist/runtime/components/Timeline.vue.d.ts +5 -6
  288. package/dist/runtime/components/Toast.d.vue.ts +6 -5
  289. package/dist/runtime/components/Toast.vue +1 -1
  290. package/dist/runtime/components/Toast.vue.d.ts +6 -5
  291. package/dist/runtime/components/Toaster.d.vue.ts +8 -1
  292. package/dist/runtime/components/Toaster.vue +6 -3
  293. package/dist/runtime/components/Toaster.vue.d.ts +8 -1
  294. package/dist/runtime/components/Tooltip.d.vue.ts +5 -2
  295. package/dist/runtime/components/Tooltip.vue +1 -1
  296. package/dist/runtime/components/Tooltip.vue.d.ts +5 -2
  297. package/dist/runtime/components/Tree.d.vue.ts +46 -10
  298. package/dist/runtime/components/Tree.vue +169 -81
  299. package/dist/runtime/components/Tree.vue.d.ts +46 -10
  300. package/dist/runtime/components/User.d.vue.ts +5 -2
  301. package/dist/runtime/components/User.vue +1 -1
  302. package/dist/runtime/components/User.vue.d.ts +5 -2
  303. package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +2 -1
  304. package/dist/runtime/components/color-mode/ColorModeAvatar.vue.d.ts +2 -1
  305. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +2 -1
  306. package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +2 -1
  307. package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +2 -1
  308. package/dist/runtime/components/color-mode/ColorModeImage.vue.d.ts +2 -1
  309. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +2 -1
  310. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +2 -1
  311. package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +2 -1
  312. package/dist/runtime/components/color-mode/ColorModeSwitch.vue.d.ts +2 -1
  313. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +5 -5
  314. package/dist/runtime/components/content/ContentNavigation.vue +19 -9
  315. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +5 -5
  316. package/dist/runtime/components/content/ContentSearch.d.vue.ts +11 -10
  317. package/dist/runtime/components/content/ContentSearch.vue +21 -6
  318. package/dist/runtime/components/content/ContentSearch.vue.d.ts +11 -10
  319. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +2 -1
  320. package/dist/runtime/components/content/ContentSearchButton.vue +2 -2
  321. package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +2 -1
  322. package/dist/runtime/components/content/ContentSurround.d.vue.ts +5 -3
  323. package/dist/runtime/components/content/ContentSurround.vue +4 -4
  324. package/dist/runtime/components/content/ContentSurround.vue.d.ts +5 -3
  325. package/dist/runtime/components/content/ContentToc.d.vue.ts +6 -6
  326. package/dist/runtime/components/content/ContentToc.vue +2 -2
  327. package/dist/runtime/components/content/ContentToc.vue.d.ts +6 -6
  328. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +2 -1
  329. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +2 -1
  330. package/dist/runtime/components/prose/A.d.vue.ts +2 -1
  331. package/dist/runtime/components/prose/A.vue.d.ts +2 -1
  332. package/dist/runtime/components/prose/Accordion.d.vue.ts +8 -1
  333. package/dist/runtime/components/prose/Accordion.vue +3 -2
  334. package/dist/runtime/components/prose/Accordion.vue.d.ts +8 -1
  335. package/dist/runtime/components/prose/AccordionItem.d.vue.ts +2 -1
  336. package/dist/runtime/components/prose/AccordionItem.vue.d.ts +2 -1
  337. package/dist/runtime/components/prose/Badge.d.vue.ts +2 -1
  338. package/dist/runtime/components/prose/Badge.vue.d.ts +2 -1
  339. package/dist/runtime/components/prose/Blockquote.d.vue.ts +2 -1
  340. package/dist/runtime/components/prose/Blockquote.vue.d.ts +2 -1
  341. package/dist/runtime/components/prose/Callout.d.vue.ts +2 -1
  342. package/dist/runtime/components/prose/Callout.vue.d.ts +2 -1
  343. package/dist/runtime/components/prose/Card.d.vue.ts +2 -1
  344. package/dist/runtime/components/prose/Card.vue.d.ts +2 -1
  345. package/dist/runtime/components/prose/CardGroup.d.vue.ts +2 -1
  346. package/dist/runtime/components/prose/CardGroup.vue.d.ts +2 -1
  347. package/dist/runtime/components/prose/Code.d.vue.ts +2 -1
  348. package/dist/runtime/components/prose/Code.vue.d.ts +2 -1
  349. package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +2 -1
  350. package/dist/runtime/components/prose/CodeCollapse.vue.d.ts +2 -1
  351. package/dist/runtime/components/prose/CodeGroup.d.vue.ts +2 -1
  352. package/dist/runtime/components/prose/CodeGroup.vue.d.ts +2 -1
  353. package/dist/runtime/components/prose/CodeIcon.d.vue.ts +2 -1
  354. package/dist/runtime/components/prose/CodeIcon.vue.d.ts +2 -1
  355. package/dist/runtime/components/prose/CodePreview.d.vue.ts +2 -1
  356. package/dist/runtime/components/prose/CodePreview.vue.d.ts +2 -1
  357. package/dist/runtime/components/prose/CodeTree.d.vue.ts +2 -1
  358. package/dist/runtime/components/prose/CodeTree.vue +40 -36
  359. package/dist/runtime/components/prose/CodeTree.vue.d.ts +2 -1
  360. package/dist/runtime/components/prose/Collapsible.d.vue.ts +4 -3
  361. package/dist/runtime/components/prose/Collapsible.vue +2 -2
  362. package/dist/runtime/components/prose/Collapsible.vue.d.ts +4 -3
  363. package/dist/runtime/components/prose/Em.d.vue.ts +2 -1
  364. package/dist/runtime/components/prose/Em.vue.d.ts +2 -1
  365. package/dist/runtime/components/prose/Field.d.vue.ts +3 -2
  366. package/dist/runtime/components/prose/Field.vue.d.ts +3 -2
  367. package/dist/runtime/components/prose/FieldGroup.d.vue.ts +2 -1
  368. package/dist/runtime/components/prose/FieldGroup.vue.d.ts +2 -1
  369. package/dist/runtime/components/prose/H1.d.vue.ts +2 -1
  370. package/dist/runtime/components/prose/H1.vue.d.ts +2 -1
  371. package/dist/runtime/components/prose/H2.d.vue.ts +2 -1
  372. package/dist/runtime/components/prose/H2.vue.d.ts +2 -1
  373. package/dist/runtime/components/prose/H3.d.vue.ts +2 -1
  374. package/dist/runtime/components/prose/H3.vue.d.ts +2 -1
  375. package/dist/runtime/components/prose/H4.d.vue.ts +2 -1
  376. package/dist/runtime/components/prose/H4.vue.d.ts +2 -1
  377. package/dist/runtime/components/prose/Hr.d.vue.ts +2 -1
  378. package/dist/runtime/components/prose/Hr.vue.d.ts +2 -1
  379. package/dist/runtime/components/prose/Icon.d.vue.ts +2 -1
  380. package/dist/runtime/components/prose/Icon.vue.d.ts +2 -1
  381. package/dist/runtime/components/prose/Img.d.vue.ts +2 -1
  382. package/dist/runtime/components/prose/Img.vue +14 -3
  383. package/dist/runtime/components/prose/Img.vue.d.ts +2 -1
  384. package/dist/runtime/components/prose/Kbd.d.vue.ts +2 -1
  385. package/dist/runtime/components/prose/Kbd.vue.d.ts +2 -1
  386. package/dist/runtime/components/prose/Li.d.vue.ts +2 -1
  387. package/dist/runtime/components/prose/Li.vue.d.ts +2 -1
  388. package/dist/runtime/components/prose/Ol.d.vue.ts +2 -1
  389. package/dist/runtime/components/prose/Ol.vue.d.ts +2 -1
  390. package/dist/runtime/components/prose/P.d.vue.ts +2 -1
  391. package/dist/runtime/components/prose/P.vue.d.ts +2 -1
  392. package/dist/runtime/components/prose/Pre.d.vue.ts +2 -1
  393. package/dist/runtime/components/prose/Pre.vue.d.ts +2 -1
  394. package/dist/runtime/components/prose/Script.d.vue.ts +2 -1
  395. package/dist/runtime/components/prose/Script.vue.d.ts +2 -1
  396. package/dist/runtime/components/prose/Steps.d.vue.ts +2 -1
  397. package/dist/runtime/components/prose/Steps.vue.d.ts +2 -1
  398. package/dist/runtime/components/prose/Strong.d.vue.ts +2 -1
  399. package/dist/runtime/components/prose/Strong.vue.d.ts +2 -1
  400. package/dist/runtime/components/prose/Table.d.vue.ts +2 -1
  401. package/dist/runtime/components/prose/Table.vue.d.ts +2 -1
  402. package/dist/runtime/components/prose/Tabs.d.vue.ts +8 -1
  403. package/dist/runtime/components/prose/Tabs.vue +3 -2
  404. package/dist/runtime/components/prose/Tabs.vue.d.ts +8 -1
  405. package/dist/runtime/components/prose/TabsItem.d.vue.ts +2 -1
  406. package/dist/runtime/components/prose/TabsItem.vue.d.ts +2 -1
  407. package/dist/runtime/components/prose/Tbody.d.vue.ts +2 -1
  408. package/dist/runtime/components/prose/Tbody.vue.d.ts +2 -1
  409. package/dist/runtime/components/prose/Td.d.vue.ts +2 -1
  410. package/dist/runtime/components/prose/Td.vue.d.ts +2 -1
  411. package/dist/runtime/components/prose/Th.d.vue.ts +2 -1
  412. package/dist/runtime/components/prose/Th.vue.d.ts +2 -1
  413. package/dist/runtime/components/prose/Thead.d.vue.ts +2 -1
  414. package/dist/runtime/components/prose/Thead.vue.d.ts +2 -1
  415. package/dist/runtime/components/prose/Tr.d.vue.ts +2 -1
  416. package/dist/runtime/components/prose/Tr.vue.d.ts +2 -1
  417. package/dist/runtime/components/prose/Ul.d.vue.ts +2 -1
  418. package/dist/runtime/components/prose/Ul.vue.d.ts +2 -1
  419. package/dist/runtime/components/prose/callout/Caution.d.vue.ts +3 -2
  420. package/dist/runtime/components/prose/callout/Caution.vue.d.ts +3 -2
  421. package/dist/runtime/components/prose/callout/Note.d.vue.ts +3 -2
  422. package/dist/runtime/components/prose/callout/Note.vue.d.ts +3 -2
  423. package/dist/runtime/components/prose/callout/Tip.d.vue.ts +3 -2
  424. package/dist/runtime/components/prose/callout/Tip.vue.d.ts +3 -2
  425. package/dist/runtime/components/prose/callout/Warning.d.vue.ts +3 -2
  426. package/dist/runtime/components/prose/callout/Warning.vue.d.ts +3 -2
  427. package/dist/runtime/composables/useKbd.js +2 -2
  428. package/dist/runtime/composables/usePortal.d.ts +3 -3
  429. package/dist/runtime/composables/usePortal.js +5 -10
  430. package/dist/runtime/composables/useToast.d.ts +3 -1
  431. package/dist/runtime/composables/useToast.js +4 -3
  432. package/dist/runtime/inertia/components/Link.d.vue.ts +3 -2
  433. package/dist/runtime/inertia/components/Link.vue +12 -6
  434. package/dist/runtime/inertia/components/Link.vue.d.ts +3 -2
  435. package/dist/runtime/inertia/components/LinkBase.d.vue.ts +3 -2
  436. package/dist/runtime/inertia/components/LinkBase.vue.d.ts +3 -2
  437. package/dist/runtime/inertia/stubs.d.ts +1 -1
  438. package/dist/runtime/inertia/stubs.js +2 -2
  439. package/dist/runtime/locale/ar.js +5 -5
  440. package/dist/runtime/locale/az.js +5 -5
  441. package/dist/runtime/locale/bg.js +3 -3
  442. package/dist/runtime/locale/bn.js +5 -5
  443. package/dist/runtime/locale/ca.js +5 -5
  444. package/dist/runtime/locale/ckb.js +15 -15
  445. package/dist/runtime/locale/cs.js +5 -5
  446. package/dist/runtime/locale/da.js +5 -5
  447. package/dist/runtime/locale/de.js +5 -5
  448. package/dist/runtime/locale/de_ch.js +5 -5
  449. package/dist/runtime/locale/el.js +5 -5
  450. package/dist/runtime/locale/en.js +5 -5
  451. package/dist/runtime/locale/es.js +5 -5
  452. package/dist/runtime/locale/et.js +5 -5
  453. package/dist/runtime/locale/fa_ir.js +5 -5
  454. package/dist/runtime/locale/fi.js +5 -5
  455. package/dist/runtime/locale/fr.js +5 -5
  456. package/dist/runtime/locale/he.js +5 -5
  457. package/dist/runtime/locale/hi.js +5 -5
  458. package/dist/runtime/locale/hr.d.ts +3 -0
  459. package/dist/runtime/locale/hr.js +129 -0
  460. package/dist/runtime/locale/hu.js +5 -5
  461. package/dist/runtime/locale/hy.js +4 -4
  462. package/dist/runtime/locale/id.js +5 -5
  463. package/dist/runtime/locale/index.d.ts +1 -0
  464. package/dist/runtime/locale/index.js +1 -0
  465. package/dist/runtime/locale/it.js +5 -5
  466. package/dist/runtime/locale/ja.js +5 -5
  467. package/dist/runtime/locale/ka.js +5 -5
  468. package/dist/runtime/locale/kk.js +3 -3
  469. package/dist/runtime/locale/km.js +5 -5
  470. package/dist/runtime/locale/ko.js +5 -5
  471. package/dist/runtime/locale/ky.js +4 -4
  472. package/dist/runtime/locale/lb.js +4 -4
  473. package/dist/runtime/locale/lt.js +5 -5
  474. package/dist/runtime/locale/mn.js +5 -5
  475. package/dist/runtime/locale/ms.js +5 -5
  476. package/dist/runtime/locale/nb_no.js +5 -5
  477. package/dist/runtime/locale/nl.js +5 -5
  478. package/dist/runtime/locale/pl.js +5 -5
  479. package/dist/runtime/locale/pt.js +5 -5
  480. package/dist/runtime/locale/pt_br.js +5 -5
  481. package/dist/runtime/locale/ro.js +5 -5
  482. package/dist/runtime/locale/ru.js +5 -5
  483. package/dist/runtime/locale/sk.js +5 -5
  484. package/dist/runtime/locale/sl.js +5 -5
  485. package/dist/runtime/locale/sv.js +5 -5
  486. package/dist/runtime/locale/th.js +5 -5
  487. package/dist/runtime/locale/tj.js +3 -3
  488. package/dist/runtime/locale/tr.js +5 -5
  489. package/dist/runtime/locale/ug_cn.js +3 -3
  490. package/dist/runtime/locale/uk.js +5 -5
  491. package/dist/runtime/locale/ur.js +4 -4
  492. package/dist/runtime/locale/uz.js +5 -5
  493. package/dist/runtime/locale/vi.js +5 -5
  494. package/dist/runtime/locale/zh_cn.js +5 -5
  495. package/dist/runtime/locale/zh_tw.js +5 -5
  496. package/dist/runtime/types/index.d.ts +2 -1
  497. package/dist/runtime/types/index.js +2 -1
  498. package/dist/runtime/types/tv.d.ts +6 -0
  499. package/dist/runtime/vue/components/Icon.d.vue.ts +2 -1
  500. package/dist/runtime/vue/components/Icon.vue.d.ts +2 -1
  501. package/dist/runtime/vue/components/Link.d.vue.ts +3 -2
  502. package/dist/runtime/vue/components/Link.vue.d.ts +3 -2
  503. package/dist/runtime/vue/components/color-mode/ColorModeButton.d.vue.ts +2 -1
  504. package/dist/runtime/vue/components/color-mode/ColorModeButton.vue.d.ts +2 -1
  505. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +2 -1
  506. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +2 -1
  507. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +2 -1
  508. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue.d.ts +2 -1
  509. package/dist/runtime/vue/stubs.d.ts +1 -1
  510. package/dist/runtime/vue/stubs.js +2 -2
  511. package/dist/shared/{ui.BBlr3wu_.mjs → ui.Dy8dMbVj.mjs} +489 -114
  512. package/dist/unplugin.mjs +11 -3
  513. package/dist/vite.mjs +3 -2
  514. package/package.json +23 -21
@@ -9,6 +9,7 @@ type Select = ComponentConfig<typeof theme, AppConfig, 'select'>;
9
9
  export type SelectValue = AcceptableValue;
10
10
  export type SelectItem = SelectValue | {
11
11
  label?: string;
12
+ description?: string;
12
13
  /**
13
14
  * @IconifyIcon
14
15
  */
@@ -22,9 +23,9 @@ export type SelectItem = SelectValue | {
22
23
  type?: 'label' | 'separator' | 'item';
23
24
  value?: SelectValue;
24
25
  disabled?: boolean;
25
- onSelect?(e?: Event): void;
26
+ onSelect?: (e: Event) => void;
26
27
  class?: any;
27
- ui?: Pick<Select['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
28
+ ui?: Pick<Select['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
28
29
  [key: string]: any;
29
30
  };
30
31
  export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = 'value', M extends boolean = false> extends Omit<SelectRootProps<T>, 'dir' | 'multiple' | 'modelValue' | 'defaultValue' | 'by'>, UseComponentIconsProps {
@@ -80,6 +81,11 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
80
81
  * @defaultValue 'label'
81
82
  */
82
83
  labelKey?: GetItemKeys<T>;
84
+ /**
85
+ * When `items` is an array of objects, select the field to use as the description.
86
+ * @defaultValue 'description'
87
+ */
88
+ descriptionKey?: GetItemKeys<T>;
83
89
  items?: T;
84
90
  /** The value of the Select when initially rendered. Use when you do not need to control the state of the Select. */
85
91
  defaultValue?: GetModelValue<T, VK, M>;
@@ -102,42 +108,41 @@ export type SelectEmits<A extends ArrayOrNested<SelectItem>, VK extends GetItemK
102
108
  type SlotProps<T extends SelectItem> = (props: {
103
109
  item: T;
104
110
  index: number;
111
+ ui: Select['ui'];
105
112
  }) => any;
106
113
  export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
107
114
  'leading'(props: {
108
115
  modelValue?: GetModelValue<A, VK, M>;
109
116
  open: boolean;
110
- ui: {
111
- [K in keyof Required<Select['slots']>]: (props?: Record<string, any>) => string;
112
- };
117
+ ui: Select['ui'];
113
118
  }): any;
114
119
  'default'(props: {
115
120
  modelValue?: GetModelValue<A, VK, M>;
116
121
  open: boolean;
122
+ ui: Select['ui'];
117
123
  }): any;
118
124
  'trailing'(props: {
119
125
  modelValue?: GetModelValue<A, VK, M>;
120
126
  open: boolean;
121
- ui: {
122
- [K in keyof Required<Select['slots']>]: (props?: Record<string, any>) => string;
123
- };
127
+ ui: Select['ui'];
124
128
  }): any;
125
129
  'item': SlotProps<T>;
126
130
  'item-leading': SlotProps<T>;
127
- 'item-label': SlotProps<T>;
131
+ 'item-label'(props: {
132
+ item: T;
133
+ index: number;
134
+ }): any;
135
+ 'item-description'(props: {
136
+ item: T;
137
+ index: number;
138
+ }): any;
128
139
  'item-trailing': SlotProps<T>;
129
140
  'content-top': (props?: {}) => any;
130
141
  'content-bottom': (props?: {}) => any;
131
142
  }
132
- declare const _default: <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<{
133
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
134
- readonly onBlur?: ((event: FocusEvent) => any) | undefined;
135
- readonly onChange?: ((event: Event) => any) | undefined;
136
- readonly onFocus?: ((event: FocusEvent) => any) | undefined;
137
- readonly "onUpdate:open"?: ((value: boolean) => any) | undefined;
138
- readonly "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
139
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onFocus" | "onBlur" | "onChange" | "onUpdate:open" | "onUpdate:modelValue"> & SelectProps<T, VK, M> & {}> & import("vue").PublicProps;
140
- expose(exposed: import("vue").ShallowUnwrapRef<{
143
+ 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<{
144
+ 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;
145
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
141
146
  triggerRef: import("vue").Ref<({
142
147
  $: import("vue").ComponentInternalInstance;
143
148
  $data: {};
@@ -241,13 +246,14 @@ declare const _default: <T extends ArrayOrNested<SelectItem>, VK extends GetItem
241
246
  default?: (props: {}) => any;
242
247
  };
243
248
  }) | null>;
244
- }>): void;
249
+ }>) => void;
245
250
  attrs: any;
246
251
  slots: SelectSlots<T, VK, M, NestedItem<T>>;
247
252
  emit: ((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);
248
253
  }>) => import("vue").VNode & {
249
254
  __ctx?: Awaited<typeof __VLS_setup>;
250
255
  };
256
+ declare const _default: typeof __VLS_export;
251
257
  export default _default;
252
258
  type __VLS_PrettifyLocal<T> = {
253
259
  [K in keyof T as K]: T[K];
@@ -9,6 +9,7 @@ type SelectMenu = ComponentConfig<typeof theme, AppConfig, 'selectMenu'>;
9
9
  export type SelectMenuValue = AcceptableValue;
10
10
  export type SelectMenuItem = SelectMenuValue | {
11
11
  label?: string;
12
+ description?: string;
12
13
  /**
13
14
  * @IconifyIcon
14
15
  */
@@ -21,9 +22,9 @@ export type SelectMenuItem = SelectMenuValue | {
21
22
  */
22
23
  type?: 'label' | 'separator' | 'item';
23
24
  disabled?: boolean;
24
- onSelect?(e?: Event): void;
25
+ onSelect?: (e: Event) => void;
25
26
  class?: any;
26
- ui?: Pick<SelectMenu['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
27
+ ui?: Pick<SelectMenu['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
27
28
  [key: string]: any;
28
29
  };
29
30
  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 {
@@ -78,6 +79,23 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
78
79
  * @defaultValue true
79
80
  */
80
81
  portal?: boolean | string | HTMLElement;
82
+ /**
83
+ * Enable virtualization for large lists.
84
+ * Note: when enabled, all groups are flattened into a single list due to a limitation of Reka UI (https://github.com/unovue/reka-ui/issues/1885).
85
+ * @defaultValue false
86
+ */
87
+ virtualize?: boolean | {
88
+ /**
89
+ * Number of items rendered outside the visible area
90
+ * @defaultValue 12
91
+ */
92
+ overscan?: number;
93
+ /**
94
+ * Estimated size (in px) of each item
95
+ * @defaultValue 32
96
+ */
97
+ estimateSize?: number;
98
+ };
81
99
  /**
82
100
  * When `items` is an array of objects, select the field to use as the value instead of the object itself.
83
101
  * @defaultValue undefined
@@ -88,6 +106,11 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
88
106
  * @defaultValue 'label'
89
107
  */
90
108
  labelKey?: GetItemKeys<T>;
109
+ /**
110
+ * When `items` is an array of objects, select the field to use as the description.
111
+ * @defaultValue 'description'
112
+ */
113
+ descriptionKey?: GetItemKeys<T>;
91
114
  items?: T;
92
115
  /** The value of the SelectMenu when initially rendered. Use when you do not need to control the state of the SelectMenu. */
93
116
  defaultValue?: GetModelValue<T, VK, M>;
@@ -136,32 +159,37 @@ export type SelectMenuEmits<A extends ArrayOrNested<SelectMenuItem>, VK extends
136
159
  type SlotProps<T extends SelectMenuItem> = (props: {
137
160
  item: T;
138
161
  index: number;
162
+ ui: SelectMenu['ui'];
139
163
  }) => any;
140
164
  export interface SelectMenuSlots<A extends ArrayOrNested<SelectMenuItem> = ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
141
165
  'leading'(props: {
142
166
  modelValue?: GetModelValue<A, VK, M>;
143
167
  open: boolean;
144
- ui: {
145
- [K in keyof Required<SelectMenu['slots']>]: (props?: Record<string, any>) => string;
146
- };
168
+ ui: SelectMenu['ui'];
147
169
  }): any;
148
170
  'default'(props: {
149
171
  modelValue?: GetModelValue<A, VK, M>;
150
172
  open: boolean;
173
+ ui: SelectMenu['ui'];
151
174
  }): any;
152
175
  'trailing'(props: {
153
176
  modelValue?: GetModelValue<A, VK, M>;
154
177
  open: boolean;
155
- ui: {
156
- [K in keyof Required<SelectMenu['slots']>]: (props?: Record<string, any>) => string;
157
- };
178
+ ui: SelectMenu['ui'];
158
179
  }): any;
159
180
  'empty'(props: {
160
181
  searchTerm?: string;
161
182
  }): any;
162
183
  'item': SlotProps<T>;
163
184
  'item-leading': SlotProps<T>;
164
- 'item-label': SlotProps<T>;
185
+ 'item-label'(props: {
186
+ item: T;
187
+ index: number;
188
+ }): any;
189
+ 'item-description'(props: {
190
+ item: T;
191
+ index: number;
192
+ }): any;
165
193
  'item-trailing': SlotProps<T>;
166
194
  'content-top': (props?: {}) => any;
167
195
  'content-bottom': (props?: {}) => any;
@@ -169,23 +197,14 @@ export interface SelectMenuSlots<A extends ArrayOrNested<SelectMenuItem> = Array
169
197
  item: string;
170
198
  }): any;
171
199
  }
172
- declare const _default: <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<{
173
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
174
- readonly onBlur?: ((event: FocusEvent) => any) | undefined;
175
- readonly onChange?: ((event: Event) => any) | undefined;
176
- readonly onFocus?: ((event: FocusEvent) => any) | undefined;
177
- readonly onCreate?: ((item: string) => any) | undefined;
178
- readonly "onUpdate:open"?: ((value: boolean) => any) | undefined;
179
- readonly "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
180
- readonly onHighlight?: ((payload: {
181
- ref: HTMLElement;
182
- value: GetModelValue<T, VK, M>;
183
- } | undefined) => any) | undefined;
184
- readonly "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
185
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onFocus" | "onBlur" | "onChange" | "onUpdate:open" | "onUpdate:modelValue" | "onCreate" | "onHighlight" | "onUpdate:searchTerm"> & (SelectMenuProps<T, VK, M> & {
200
+ 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<{
201
+ props: __VLS_PrettifyLocal<(SelectMenuProps<T, VK, M> & {
186
202
  searchTerm?: string;
187
- }) & {}> & import("vue").PublicProps;
188
- expose(exposed: import("vue").ShallowUnwrapRef<{
203
+ }) & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "create", item: string) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void) & ((evt: "highlight", payload: {
204
+ ref: HTMLElement;
205
+ value: GetModelValue<T, VK, M>;
206
+ } | undefined) => void) & ((evt: "update:searchTerm", value: string) => void)>>> & import("vue").PublicProps;
207
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
189
208
  triggerRef: import("vue").Ref<({
190
209
  $: import("vue").ComponentInternalInstance;
191
210
  $data: {};
@@ -287,7 +306,7 @@ declare const _default: <T extends ArrayOrNested<SelectMenuItem>, VK extends Get
287
306
  default?: (props: {}) => any;
288
307
  };
289
308
  }) | null>;
290
- }>): void;
309
+ }>) => void;
291
310
  attrs: any;
292
311
  slots: SelectMenuSlots<T, VK, M, NestedItem<T>>;
293
312
  emit: (((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "create", item: string) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void) & ((evt: "highlight", payload: {
@@ -297,6 +316,7 @@ declare const _default: <T extends ArrayOrNested<SelectMenuItem>, VK extends Get
297
316
  }>) => import("vue").VNode & {
298
317
  __ctx?: Awaited<typeof __VLS_setup>;
299
318
  };
319
+ declare const _default: typeof __VLS_export;
300
320
  export default _default;
301
321
  type __VLS_PrettifyLocal<T> = {
302
322
  [K in keyof T as K]: T[K];
@@ -4,7 +4,7 @@ import theme from "#build/ui/select-menu";
4
4
 
5
5
  <script setup>
6
6
  import { ref, computed, onMounted, toRef, toRaw } from "vue";
7
- import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, FocusScope, useForwardPropsEmits, useFilter } from "reka-ui";
7
+ import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, 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";
@@ -33,8 +33,10 @@ const props = defineProps({
33
33
  content: { type: Object, required: false },
34
34
  arrow: { type: [Boolean, Object], required: false },
35
35
  portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
36
+ virtualize: { type: [Boolean, Object], required: false, default: false },
36
37
  valueKey: { type: null, required: false },
37
38
  labelKey: { type: null, required: false, default: "label" },
39
+ descriptionKey: { type: null, required: false, default: "description" },
38
40
  items: { type: null, required: false },
39
41
  defaultValue: { type: null, required: false },
40
42
  modelValue: { type: null, required: false },
@@ -72,12 +74,33 @@ const rootProps = useForwardPropsEmits(reactivePick(props, "modelValue", "defaul
72
74
  const portalProps = usePortal(toRef(() => props.portal));
73
75
  const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8, position: "popper" }));
74
76
  const arrowProps = toRef(() => props.arrow);
77
+ const virtualizerProps = toRef(() => !!props.virtualize && defu(typeof props.virtualize === "boolean" ? {} : props.virtualize, {
78
+ estimateSize: {
79
+ xs: 24,
80
+ sm: 28,
81
+ md: 32,
82
+ lg: 36,
83
+ xl: 40
84
+ }[props.size || "md"]
85
+ }));
75
86
  const searchInputProps = toRef(() => defu(props.searchInput, { placeholder: t("selectMenu.search"), variant: "none" }));
76
87
  const { emitFormBlur, emitFormFocus, emitFormInput, emitFormChange, size: formGroupSize, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
77
88
  const { orientation, size: fieldGroupSize } = useFieldGroup(props);
78
89
  const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(toRef(() => defu(props, { trailingIcon: appConfig.ui.icons.chevronDown })));
79
90
  const selectSize = computed(() => fieldGroupSize.value || formGroupSize.value);
80
91
  const [DefineCreateItemTemplate, ReuseCreateItemTemplate] = createReusableTemplate();
92
+ const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate({
93
+ props: {
94
+ item: {
95
+ type: [Object, String, Number, Boolean],
96
+ required: true
97
+ },
98
+ index: {
99
+ type: Number,
100
+ required: false
101
+ }
102
+ }
103
+ });
81
104
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.selectMenu || {} })({
82
105
  color: color.value,
83
106
  variant: props.variant,
@@ -86,7 +109,8 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.selectMenu ||
86
109
  highlight: highlight.value,
87
110
  leading: isLeading.value || !!props.avatar || !!slots.leading,
88
111
  trailing: isTrailing.value || !!slots.trailing,
89
- fieldGroup: orientation.value
112
+ fieldGroup: orientation.value,
113
+ virtualize: !!props.virtualize
90
114
  }));
91
115
  function displayValue(value) {
92
116
  if (props.multiple && Array.isArray(value)) {
@@ -204,21 +228,72 @@ defineExpose({
204
228
 
205
229
  <template>
206
230
  <DefineCreateItemTemplate>
207
- <ComboboxGroup :class="ui.group({ class: props.ui?.group })">
208
- <ComboboxItem
209
- :class="ui.item({ class: props.ui?.item })"
210
- :value="searchTerm"
211
- @select.prevent="emits('create', searchTerm)"
212
- >
213
- <span :class="ui.itemLabel({ class: props.ui?.itemLabel })">
214
- <slot name="create-item-label" :item="searchTerm">
215
- {{ t("selectMenu.create", { label: searchTerm }) }}
216
- </slot>
217
- </span>
218
- </ComboboxItem>
219
- </ComboboxGroup>
231
+ <ComboboxItem
232
+ :class="ui.item({ class: props.ui?.item })"
233
+ :value="searchTerm"
234
+ @select.prevent="emits('create', searchTerm)"
235
+ >
236
+ <span :class="ui.itemLabel({ class: props.ui?.itemLabel })">
237
+ <slot name="create-item-label" :item="searchTerm">
238
+ {{ t("selectMenu.create", { label: searchTerm }) }}
239
+ </slot>
240
+ </span>
241
+ </ComboboxItem>
220
242
  </DefineCreateItemTemplate>
221
243
 
244
+ <DefineItemTemplate v-slot="{ item, index }">
245
+ <ComboboxLabel v-if="isSelectItem(item) && item.type === 'label'" :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })">
246
+ {{ get(item, props.labelKey) }}
247
+ </ComboboxLabel>
248
+
249
+ <ComboboxSeparator v-else-if="isSelectItem(item) && item.type === 'separator'" :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator, item.class] })" />
250
+
251
+ <ComboboxItem
252
+ v-else
253
+ :class="ui.item({ class: [props.ui?.item, isSelectItem(item) && item.ui?.item, isSelectItem(item) && item.class] })"
254
+ :disabled="isSelectItem(item) && item.disabled"
255
+ :value="props.valueKey && isSelectItem(item) ? get(item, props.valueKey) : item"
256
+ @select="onSelect($event, item)"
257
+ >
258
+ <slot name="item" :item="item" :index="index" :ui="ui">
259
+ <slot name="item-leading" :item="item" :index="index" :ui="ui">
260
+ <UIcon v-if="isSelectItem(item) && item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon] })" />
261
+ <UAvatar v-else-if="isSelectItem(item) && item.avatar" :size="item.ui?.itemLeadingAvatarSize || props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: [props.ui?.itemLeadingAvatar, item.ui?.itemLeadingAvatar] })" />
262
+ <UChip
263
+ v-else-if="isSelectItem(item) && item.chip"
264
+ :size="props.ui?.itemLeadingChipSize || ui.itemLeadingChipSize()"
265
+ inset
266
+ standalone
267
+ v-bind="item.chip"
268
+ :class="ui.itemLeadingChip({ class: [props.ui?.itemLeadingChip, item.ui?.itemLeadingChip] })"
269
+ />
270
+ </slot>
271
+
272
+ <span :class="ui.itemWrapper({ class: [props.ui?.itemWrapper, isSelectItem(item) && item.ui?.itemWrapper] })">
273
+ <span :class="ui.itemLabel({ class: [props.ui?.itemLabel, isSelectItem(item) && item.ui?.itemLabel] })">
274
+ <slot name="item-label" :item="item" :index="index">
275
+ {{ isSelectItem(item) ? get(item, props.labelKey) : item }}
276
+ </slot>
277
+ </span>
278
+
279
+ <span v-if="isSelectItem(item) && (get(item, props.descriptionKey) || !!slots['item-description'])" :class="ui.itemDescription({ class: [props.ui?.itemDescription, isSelectItem(item) && item.ui?.itemDescription] })">
280
+ <slot name="item-description" :item="item" :index="index">
281
+ {{ get(item, props.descriptionKey) }}
282
+ </slot>
283
+ </span>
284
+ </span>
285
+
286
+ <span :class="ui.itemTrailing({ class: [props.ui?.itemTrailing, isSelectItem(item) && item.ui?.itemTrailing] })">
287
+ <slot name="item-trailing" :item="item" :index="index" :ui="ui" />
288
+
289
+ <ComboboxItemIndicator as-child>
290
+ <UIcon :name="selectedIcon || appConfig.ui.icons.check" :class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, isSelectItem(item) && item.ui?.itemTrailingIcon] })" />
291
+ </ComboboxItemIndicator>
292
+ </span>
293
+ </slot>
294
+ </ComboboxItem>
295
+ </DefineItemTemplate>
296
+
222
297
  <ComboboxRoot
223
298
  :id="id"
224
299
  v-slot="{ modelValue, open }"
@@ -239,7 +314,7 @@ defineExpose({
239
314
  </slot>
240
315
  </span>
241
316
 
242
- <slot :model-value="modelValue" :open="open">
317
+ <slot :model-value="modelValue" :open="open" :ui="ui">
243
318
  <template v-for="displayedModelValue in [displayValue(modelValue)]" :key="displayedModelValue">
244
319
  <span v-if="displayedModelValue !== void 0 && displayedModelValue !== null" :class="ui.value({ class: props.ui?.value })">
245
320
  {{ displayedModelValue }}
@@ -274,56 +349,34 @@ defineExpose({
274
349
  </ComboboxEmpty>
275
350
 
276
351
  <div role="presentation" :class="ui.viewport({ class: props.ui?.viewport })">
277
- <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
278
-
279
- <ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
280
- <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
281
- <ComboboxLabel v-if="isSelectItem(item) && item.type === 'label'" :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })">
282
- {{ get(item, props.labelKey) }}
283
- </ComboboxLabel>
284
-
285
- <ComboboxSeparator v-else-if="isSelectItem(item) && item.type === 'separator'" :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator, item.class] })" />
352
+ <template v-if="!!virtualize">
353
+ <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
286
354
 
287
- <ComboboxItem
288
- v-else
289
- :class="ui.item({ class: [props.ui?.item, isSelectItem(item) && item.ui?.item, isSelectItem(item) && item.class] })"
290
- :disabled="isSelectItem(item) && item.disabled"
291
- :value="props.valueKey && isSelectItem(item) ? get(item, props.valueKey) : item"
292
- @select="onSelect($event, item)"
293
- >
294
- <slot name="item" :item="item" :index="index">
295
- <slot name="item-leading" :item="item" :index="index">
296
- <UIcon v-if="isSelectItem(item) && item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon] })" />
297
- <UAvatar v-else-if="isSelectItem(item) && item.avatar" :size="item.ui?.itemLeadingAvatarSize || props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: [props.ui?.itemLeadingAvatar, item.ui?.itemLeadingAvatar] })" />
298
- <UChip
299
- v-else-if="isSelectItem(item) && item.chip"
300
- :size="props.ui?.itemLeadingChipSize || ui.itemLeadingChipSize()"
301
- inset
302
- standalone
303
- v-bind="item.chip"
304
- :class="ui.itemLeadingChip({ class: [props.ui?.itemLeadingChip, item.ui?.itemLeadingChip] })"
305
- />
306
- </slot>
355
+ <ComboboxVirtualizer
356
+ v-slot="{ option: item, virtualItem }"
357
+ :options="filteredItems"
358
+ :text-content="(item2) => isSelectItem(item2) ? get(item2, props.labelKey) : String(item2)"
359
+ v-bind="virtualizerProps"
360
+ >
361
+ <ReuseItemTemplate :item="item" :index="virtualItem.index" />
362
+ </ComboboxVirtualizer>
307
363
 
308
- <span :class="ui.itemLabel({ class: [props.ui?.itemLabel, isSelectItem(item) && item.ui?.itemLabel] })">
309
- <slot name="item-label" :item="item" :index="index">
310
- {{ isSelectItem(item) ? get(item, props.labelKey) : item }}
311
- </slot>
312
- </span>
364
+ <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'bottom'" />
365
+ </template>
313
366
 
314
- <span :class="ui.itemTrailing({ class: [props.ui?.itemTrailing, isSelectItem(item) && item.ui?.itemTrailing] })">
315
- <slot name="item-trailing" :item="item" :index="index" />
367
+ <template v-else>
368
+ <ComboboxGroup v-if="createItem && createItemPosition === 'top'" :class="ui.group({ class: props.ui?.group })">
369
+ <ReuseCreateItemTemplate />
370
+ </ComboboxGroup>
316
371
 
317
- <ComboboxItemIndicator as-child>
318
- <UIcon :name="selectedIcon || appConfig.ui.icons.check" :class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, isSelectItem(item) && item.ui?.itemTrailingIcon] })" />
319
- </ComboboxItemIndicator>
320
- </span>
321
- </slot>
322
- </ComboboxItem>
323
- </template>
324
- </ComboboxGroup>
372
+ <ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
373
+ <ReuseItemTemplate v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`" :item="item" :index="index" />
374
+ </ComboboxGroup>
325
375
 
326
- <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'bottom'" />
376
+ <ComboboxGroup v-if="createItem && createItemPosition === 'bottom'" :class="ui.group({ class: props.ui?.group })">
377
+ <ReuseCreateItemTemplate />
378
+ </ComboboxGroup>
379
+ </template>
327
380
  </div>
328
381
 
329
382
  <slot name="content-bottom" />
@@ -9,6 +9,7 @@ type SelectMenu = ComponentConfig<typeof theme, AppConfig, 'selectMenu'>;
9
9
  export type SelectMenuValue = AcceptableValue;
10
10
  export type SelectMenuItem = SelectMenuValue | {
11
11
  label?: string;
12
+ description?: string;
12
13
  /**
13
14
  * @IconifyIcon
14
15
  */
@@ -21,9 +22,9 @@ export type SelectMenuItem = SelectMenuValue | {
21
22
  */
22
23
  type?: 'label' | 'separator' | 'item';
23
24
  disabled?: boolean;
24
- onSelect?(e?: Event): void;
25
+ onSelect?: (e: Event) => void;
25
26
  class?: any;
26
- ui?: Pick<SelectMenu['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
27
+ ui?: Pick<SelectMenu['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
27
28
  [key: string]: any;
28
29
  };
29
30
  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 {
@@ -78,6 +79,23 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
78
79
  * @defaultValue true
79
80
  */
80
81
  portal?: boolean | string | HTMLElement;
82
+ /**
83
+ * Enable virtualization for large lists.
84
+ * Note: when enabled, all groups are flattened into a single list due to a limitation of Reka UI (https://github.com/unovue/reka-ui/issues/1885).
85
+ * @defaultValue false
86
+ */
87
+ virtualize?: boolean | {
88
+ /**
89
+ * Number of items rendered outside the visible area
90
+ * @defaultValue 12
91
+ */
92
+ overscan?: number;
93
+ /**
94
+ * Estimated size (in px) of each item
95
+ * @defaultValue 32
96
+ */
97
+ estimateSize?: number;
98
+ };
81
99
  /**
82
100
  * When `items` is an array of objects, select the field to use as the value instead of the object itself.
83
101
  * @defaultValue undefined
@@ -88,6 +106,11 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
88
106
  * @defaultValue 'label'
89
107
  */
90
108
  labelKey?: GetItemKeys<T>;
109
+ /**
110
+ * When `items` is an array of objects, select the field to use as the description.
111
+ * @defaultValue 'description'
112
+ */
113
+ descriptionKey?: GetItemKeys<T>;
91
114
  items?: T;
92
115
  /** The value of the SelectMenu when initially rendered. Use when you do not need to control the state of the SelectMenu. */
93
116
  defaultValue?: GetModelValue<T, VK, M>;
@@ -136,32 +159,37 @@ export type SelectMenuEmits<A extends ArrayOrNested<SelectMenuItem>, VK extends
136
159
  type SlotProps<T extends SelectMenuItem> = (props: {
137
160
  item: T;
138
161
  index: number;
162
+ ui: SelectMenu['ui'];
139
163
  }) => any;
140
164
  export interface SelectMenuSlots<A extends ArrayOrNested<SelectMenuItem> = ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
141
165
  'leading'(props: {
142
166
  modelValue?: GetModelValue<A, VK, M>;
143
167
  open: boolean;
144
- ui: {
145
- [K in keyof Required<SelectMenu['slots']>]: (props?: Record<string, any>) => string;
146
- };
168
+ ui: SelectMenu['ui'];
147
169
  }): any;
148
170
  'default'(props: {
149
171
  modelValue?: GetModelValue<A, VK, M>;
150
172
  open: boolean;
173
+ ui: SelectMenu['ui'];
151
174
  }): any;
152
175
  'trailing'(props: {
153
176
  modelValue?: GetModelValue<A, VK, M>;
154
177
  open: boolean;
155
- ui: {
156
- [K in keyof Required<SelectMenu['slots']>]: (props?: Record<string, any>) => string;
157
- };
178
+ ui: SelectMenu['ui'];
158
179
  }): any;
159
180
  'empty'(props: {
160
181
  searchTerm?: string;
161
182
  }): any;
162
183
  'item': SlotProps<T>;
163
184
  'item-leading': SlotProps<T>;
164
- 'item-label': SlotProps<T>;
185
+ 'item-label'(props: {
186
+ item: T;
187
+ index: number;
188
+ }): any;
189
+ 'item-description'(props: {
190
+ item: T;
191
+ index: number;
192
+ }): any;
165
193
  'item-trailing': SlotProps<T>;
166
194
  'content-top': (props?: {}) => any;
167
195
  'content-bottom': (props?: {}) => any;
@@ -169,23 +197,14 @@ export interface SelectMenuSlots<A extends ArrayOrNested<SelectMenuItem> = Array
169
197
  item: string;
170
198
  }): any;
171
199
  }
172
- declare const _default: <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<{
173
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
174
- readonly onBlur?: ((event: FocusEvent) => any) | undefined;
175
- readonly onChange?: ((event: Event) => any) | undefined;
176
- readonly onFocus?: ((event: FocusEvent) => any) | undefined;
177
- readonly onCreate?: ((item: string) => any) | undefined;
178
- readonly "onUpdate:open"?: ((value: boolean) => any) | undefined;
179
- readonly "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
180
- readonly onHighlight?: ((payload: {
181
- ref: HTMLElement;
182
- value: GetModelValue<T, VK, M>;
183
- } | undefined) => any) | undefined;
184
- readonly "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
185
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onFocus" | "onBlur" | "onChange" | "onUpdate:open" | "onUpdate:modelValue" | "onCreate" | "onHighlight" | "onUpdate:searchTerm"> & (SelectMenuProps<T, VK, M> & {
200
+ 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<{
201
+ props: __VLS_PrettifyLocal<(SelectMenuProps<T, VK, M> & {
186
202
  searchTerm?: string;
187
- }) & {}> & import("vue").PublicProps;
188
- expose(exposed: import("vue").ShallowUnwrapRef<{
203
+ }) & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "create", item: string) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void) & ((evt: "highlight", payload: {
204
+ ref: HTMLElement;
205
+ value: GetModelValue<T, VK, M>;
206
+ } | undefined) => void) & ((evt: "update:searchTerm", value: string) => void)>>> & import("vue").PublicProps;
207
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
189
208
  triggerRef: import("vue").Ref<({
190
209
  $: import("vue").ComponentInternalInstance;
191
210
  $data: {};
@@ -287,7 +306,7 @@ declare const _default: <T extends ArrayOrNested<SelectMenuItem>, VK extends Get
287
306
  default?: (props: {}) => any;
288
307
  };
289
308
  }) | null>;
290
- }>): void;
309
+ }>) => void;
291
310
  attrs: any;
292
311
  slots: SelectMenuSlots<T, VK, M, NestedItem<T>>;
293
312
  emit: (((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "create", item: string) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void) & ((evt: "highlight", payload: {
@@ -297,6 +316,7 @@ declare const _default: <T extends ArrayOrNested<SelectMenuItem>, VK extends Get
297
316
  }>) => import("vue").VNode & {
298
317
  __ctx?: Awaited<typeof __VLS_setup>;
299
318
  };
319
+ declare const _default: typeof __VLS_export;
300
320
  export default _default;
301
321
  type __VLS_PrettifyLocal<T> = {
302
322
  [K in keyof T as K]: T[K];