@nuxt/ui 4.5.0 → 4.6.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 (442) hide show
  1. package/.nuxt/ui.css +2 -0
  2. package/cli/templates.mjs +5 -8
  3. package/dist/module.d.mts +7 -0
  4. package/dist/module.json +2 -2
  5. package/dist/module.mjs +78 -67
  6. package/dist/runtime/components/Accordion.d.vue.ts +8 -7
  7. package/dist/runtime/components/Accordion.vue.d.ts +8 -7
  8. package/dist/runtime/components/Alert.d.vue.ts +8 -7
  9. package/dist/runtime/components/Alert.vue.d.ts +8 -7
  10. package/dist/runtime/components/App.d.vue.ts +2 -1
  11. package/dist/runtime/components/App.vue.d.ts +2 -1
  12. package/dist/runtime/components/AuthForm.d.vue.ts +13 -12
  13. package/dist/runtime/components/AuthForm.vue.d.ts +13 -12
  14. package/dist/runtime/components/Avatar.d.vue.ts +2 -1
  15. package/dist/runtime/components/Avatar.vue +10 -12
  16. package/dist/runtime/components/Avatar.vue.d.ts +2 -1
  17. package/dist/runtime/components/AvatarGroup.d.vue.ts +2 -1
  18. package/dist/runtime/components/AvatarGroup.vue.d.ts +2 -1
  19. package/dist/runtime/components/Badge.d.vue.ts +7 -6
  20. package/dist/runtime/components/Badge.vue.d.ts +7 -6
  21. package/dist/runtime/components/Banner.d.vue.ts +7 -6
  22. package/dist/runtime/components/Banner.vue +1 -1
  23. package/dist/runtime/components/Banner.vue.d.ts +7 -6
  24. package/dist/runtime/components/BlogPost.d.vue.ts +11 -10
  25. package/dist/runtime/components/BlogPost.vue +3 -2
  26. package/dist/runtime/components/BlogPost.vue.d.ts +11 -10
  27. package/dist/runtime/components/BlogPosts.d.vue.ts +5 -4
  28. package/dist/runtime/components/BlogPosts.vue.d.ts +5 -4
  29. package/dist/runtime/components/Breadcrumb.d.vue.ts +15 -14
  30. package/dist/runtime/components/Breadcrumb.vue.d.ts +15 -14
  31. package/dist/runtime/components/Button.d.vue.ts +7 -6
  32. package/dist/runtime/components/Button.vue.d.ts +7 -6
  33. package/dist/runtime/components/Calendar.d.vue.ts +10 -9
  34. package/dist/runtime/components/Calendar.vue.d.ts +10 -9
  35. package/dist/runtime/components/Card.d.vue.ts +4 -3
  36. package/dist/runtime/components/Card.vue.d.ts +4 -3
  37. package/dist/runtime/components/Carousel.d.vue.ts +3 -2
  38. package/dist/runtime/components/Carousel.vue.d.ts +3 -2
  39. package/dist/runtime/components/ChangelogVersion.d.vue.ts +15 -14
  40. package/dist/runtime/components/ChangelogVersion.vue +3 -2
  41. package/dist/runtime/components/ChangelogVersion.vue.d.ts +15 -14
  42. package/dist/runtime/components/ChangelogVersions.d.vue.ts +6 -5
  43. package/dist/runtime/components/ChangelogVersions.vue +1 -1
  44. package/dist/runtime/components/ChangelogVersions.vue.d.ts +6 -5
  45. package/dist/runtime/components/ChatMessage.d.vue.ts +10 -6
  46. package/dist/runtime/components/ChatMessage.vue +5 -0
  47. package/dist/runtime/components/ChatMessage.vue.d.ts +10 -6
  48. package/dist/runtime/components/ChatMessages.d.vue.ts +9 -8
  49. package/dist/runtime/components/ChatMessages.vue.d.ts +9 -8
  50. package/dist/runtime/components/ChatPalette.d.vue.ts +3 -2
  51. package/dist/runtime/components/ChatPalette.vue.d.ts +3 -2
  52. package/dist/runtime/components/ChatPrompt.d.vue.ts +3 -2
  53. package/dist/runtime/components/ChatPrompt.vue.d.ts +3 -2
  54. package/dist/runtime/components/ChatReasoning.d.vue.ts +78 -0
  55. package/dist/runtime/components/ChatReasoning.vue +162 -0
  56. package/dist/runtime/components/ChatReasoning.vue.d.ts +78 -0
  57. package/dist/runtime/components/ChatShimmer.d.vue.ts +34 -0
  58. package/dist/runtime/components/ChatShimmer.vue +37 -0
  59. package/dist/runtime/components/ChatShimmer.vue.d.ts +34 -0
  60. package/dist/runtime/components/ChatTool.d.vue.ts +88 -0
  61. package/dist/runtime/components/ChatTool.vue +105 -0
  62. package/dist/runtime/components/ChatTool.vue.d.ts +88 -0
  63. package/dist/runtime/components/Checkbox.d.vue.ts +29 -25
  64. package/dist/runtime/components/Checkbox.vue +9 -8
  65. package/dist/runtime/components/Checkbox.vue.d.ts +29 -25
  66. package/dist/runtime/components/CheckboxGroup.d.vue.ts +5 -4
  67. package/dist/runtime/components/CheckboxGroup.vue.d.ts +5 -4
  68. package/dist/runtime/components/Chip.d.vue.ts +3 -2
  69. package/dist/runtime/components/Chip.vue.d.ts +3 -2
  70. package/dist/runtime/components/Collapsible.d.vue.ts +4 -3
  71. package/dist/runtime/components/Collapsible.vue.d.ts +4 -3
  72. package/dist/runtime/components/CommandPalette.d.vue.ts +19 -18
  73. package/dist/runtime/components/CommandPalette.vue.d.ts +19 -18
  74. package/dist/runtime/components/Container.d.vue.ts +2 -1
  75. package/dist/runtime/components/Container.vue.d.ts +2 -1
  76. package/dist/runtime/components/ContextMenu.d.vue.ts +19 -18
  77. package/dist/runtime/components/ContextMenu.vue.d.ts +19 -18
  78. package/dist/runtime/components/DashboardGroup.d.vue.ts +3 -2
  79. package/dist/runtime/components/DashboardGroup.vue.d.ts +3 -2
  80. package/dist/runtime/components/DashboardNavbar.d.vue.ts +11 -10
  81. package/dist/runtime/components/DashboardNavbar.vue.d.ts +11 -10
  82. package/dist/runtime/components/DashboardPanel.d.vue.ts +7 -6
  83. package/dist/runtime/components/DashboardPanel.vue.d.ts +7 -6
  84. package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +2 -1
  85. package/dist/runtime/components/DashboardResizeHandle.vue.d.ts +2 -1
  86. package/dist/runtime/components/DashboardSearch.d.vue.ts +4 -3
  87. package/dist/runtime/components/DashboardSearch.vue.d.ts +4 -3
  88. package/dist/runtime/components/DashboardSearchButton.vue +2 -2
  89. package/dist/runtime/components/DashboardSidebar.d.vue.ts +19 -18
  90. package/dist/runtime/components/DashboardSidebar.vue +3 -3
  91. package/dist/runtime/components/DashboardSidebar.vue.d.ts +19 -18
  92. package/dist/runtime/components/DashboardToolbar.d.vue.ts +4 -3
  93. package/dist/runtime/components/DashboardToolbar.vue.d.ts +4 -3
  94. package/dist/runtime/components/Drawer.d.vue.ts +8 -7
  95. package/dist/runtime/components/Drawer.vue +1 -1
  96. package/dist/runtime/components/Drawer.vue.d.ts +8 -7
  97. package/dist/runtime/components/DropdownMenu.d.vue.ts +50 -22
  98. package/dist/runtime/components/DropdownMenu.vue +10 -1
  99. package/dist/runtime/components/DropdownMenu.vue.d.ts +50 -22
  100. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +13 -6
  101. package/dist/runtime/components/DropdownMenuContent.vue +62 -9
  102. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +13 -6
  103. package/dist/runtime/components/Editor.d.vue.ts +3 -2
  104. package/dist/runtime/components/Editor.vue.d.ts +3 -2
  105. package/dist/runtime/components/EditorDragHandle.d.vue.ts +7 -6
  106. package/dist/runtime/components/EditorDragHandle.vue.d.ts +7 -6
  107. package/dist/runtime/components/EditorToolbar.d.vue.ts +3 -2
  108. package/dist/runtime/components/EditorToolbar.vue.d.ts +3 -2
  109. package/dist/runtime/components/Empty.d.vue.ts +9 -8
  110. package/dist/runtime/components/Empty.vue.d.ts +9 -8
  111. package/dist/runtime/components/Error.d.vue.ts +6 -5
  112. package/dist/runtime/components/Error.vue +5 -5
  113. package/dist/runtime/components/Error.vue.d.ts +6 -5
  114. package/dist/runtime/components/FieldGroup.d.vue.ts +2 -1
  115. package/dist/runtime/components/FieldGroup.vue.d.ts +2 -1
  116. package/dist/runtime/components/FileUpload.d.vue.ts +35 -28
  117. package/dist/runtime/components/FileUpload.vue +11 -7
  118. package/dist/runtime/components/FileUpload.vue.d.ts +35 -28
  119. package/dist/runtime/components/Footer.d.vue.ts +6 -5
  120. package/dist/runtime/components/Footer.vue.d.ts +6 -5
  121. package/dist/runtime/components/FooterColumns.d.vue.ts +12 -11
  122. package/dist/runtime/components/FooterColumns.vue.d.ts +12 -11
  123. package/dist/runtime/components/Form.d.vue.ts +3 -2
  124. package/dist/runtime/components/Form.vue.d.ts +3 -2
  125. package/dist/runtime/components/FormField.d.vue.ts +19 -18
  126. package/dist/runtime/components/FormField.vue.d.ts +19 -18
  127. package/dist/runtime/components/Header.d.vue.ts +12 -11
  128. package/dist/runtime/components/Header.vue.d.ts +12 -11
  129. package/dist/runtime/components/Icon.d.vue.ts +2 -1
  130. package/dist/runtime/components/Icon.vue +1 -1
  131. package/dist/runtime/components/Icon.vue.d.ts +2 -1
  132. package/dist/runtime/components/Input.d.vue.ts +7 -6
  133. package/dist/runtime/components/Input.vue.d.ts +7 -6
  134. package/dist/runtime/components/InputDate.d.vue.ts +13 -13
  135. package/dist/runtime/components/InputDate.vue.d.ts +13 -13
  136. package/dist/runtime/components/InputMenu.d.vue.ts +33 -25
  137. package/dist/runtime/components/InputMenu.vue +68 -49
  138. package/dist/runtime/components/InputMenu.vue.d.ts +33 -25
  139. package/dist/runtime/components/InputNumber.d.vue.ts +3 -2
  140. package/dist/runtime/components/InputNumber.vue.d.ts +3 -2
  141. package/dist/runtime/components/InputTags.d.vue.ts +10 -9
  142. package/dist/runtime/components/InputTags.vue.d.ts +10 -9
  143. package/dist/runtime/components/InputTime.d.vue.ts +60 -34
  144. package/dist/runtime/components/InputTime.vue +52 -27
  145. package/dist/runtime/components/InputTime.vue.d.ts +60 -34
  146. package/dist/runtime/components/Kbd.d.vue.ts +2 -1
  147. package/dist/runtime/components/Kbd.vue +1 -1
  148. package/dist/runtime/components/Kbd.vue.d.ts +2 -1
  149. package/dist/runtime/components/Link.d.vue.ts +3 -2
  150. package/dist/runtime/components/Link.vue.d.ts +3 -2
  151. package/dist/runtime/components/Main.d.vue.ts +2 -1
  152. package/dist/runtime/components/Main.vue.d.ts +2 -1
  153. package/dist/runtime/components/Marquee.d.vue.ts +2 -1
  154. package/dist/runtime/components/Marquee.vue.d.ts +2 -1
  155. package/dist/runtime/components/Modal.d.vue.ts +16 -15
  156. package/dist/runtime/components/Modal.vue +1 -1
  157. package/dist/runtime/components/Modal.vue.d.ts +16 -15
  158. package/dist/runtime/components/NavigationMenu.d.vue.ts +20 -15
  159. package/dist/runtime/components/NavigationMenu.vue +13 -6
  160. package/dist/runtime/components/NavigationMenu.vue.d.ts +20 -15
  161. package/dist/runtime/components/Page.d.vue.ts +4 -3
  162. package/dist/runtime/components/Page.vue +9 -3
  163. package/dist/runtime/components/Page.vue.d.ts +4 -3
  164. package/dist/runtime/components/PageAnchors.d.vue.ts +8 -7
  165. package/dist/runtime/components/PageAnchors.vue.d.ts +8 -7
  166. package/dist/runtime/components/PageAside.d.vue.ts +4 -3
  167. package/dist/runtime/components/PageAside.vue.d.ts +4 -3
  168. package/dist/runtime/components/PageBody.d.vue.ts +2 -1
  169. package/dist/runtime/components/PageBody.vue.d.ts +2 -1
  170. package/dist/runtime/components/PageCTA.d.vue.ts +10 -9
  171. package/dist/runtime/components/PageCTA.vue.d.ts +10 -9
  172. package/dist/runtime/components/PageCard.d.vue.ts +9 -8
  173. package/dist/runtime/components/PageCard.vue.d.ts +9 -8
  174. package/dist/runtime/components/PageColumns.d.vue.ts +2 -1
  175. package/dist/runtime/components/PageColumns.vue.d.ts +2 -1
  176. package/dist/runtime/components/PageFeature.d.vue.ts +6 -5
  177. package/dist/runtime/components/PageFeature.vue.d.ts +6 -5
  178. package/dist/runtime/components/PageGrid.d.vue.ts +2 -1
  179. package/dist/runtime/components/PageGrid.vue.d.ts +2 -1
  180. package/dist/runtime/components/PageHeader.d.vue.ts +6 -5
  181. package/dist/runtime/components/PageHeader.vue.d.ts +6 -5
  182. package/dist/runtime/components/PageHero.d.vue.ts +11 -10
  183. package/dist/runtime/components/PageHero.vue.d.ts +11 -10
  184. package/dist/runtime/components/PageLinks.d.vue.ts +9 -8
  185. package/dist/runtime/components/PageLinks.vue.d.ts +9 -8
  186. package/dist/runtime/components/PageList.d.vue.ts +2 -1
  187. package/dist/runtime/components/PageList.vue.d.ts +2 -1
  188. package/dist/runtime/components/PageLogos.d.vue.ts +2 -1
  189. package/dist/runtime/components/PageLogos.vue.d.ts +2 -1
  190. package/dist/runtime/components/PageSection.d.vue.ts +14 -13
  191. package/dist/runtime/components/PageSection.vue.d.ts +14 -13
  192. package/dist/runtime/components/Pagination.d.vue.ts +9 -8
  193. package/dist/runtime/components/Pagination.vue.d.ts +9 -8
  194. package/dist/runtime/components/Popover.d.vue.ts +9 -5
  195. package/dist/runtime/components/Popover.vue +2 -2
  196. package/dist/runtime/components/Popover.vue.d.ts +9 -5
  197. package/dist/runtime/components/PricingPlan.d.vue.ts +17 -16
  198. package/dist/runtime/components/PricingPlan.vue.d.ts +17 -16
  199. package/dist/runtime/components/PricingPlans.d.vue.ts +5 -4
  200. package/dist/runtime/components/PricingPlans.vue.d.ts +5 -4
  201. package/dist/runtime/components/PricingTable.d.vue.ts +20 -19
  202. package/dist/runtime/components/PricingTable.vue.d.ts +20 -19
  203. package/dist/runtime/components/Progress.d.vue.ts +5 -4
  204. package/dist/runtime/components/Progress.vue.d.ts +5 -4
  205. package/dist/runtime/components/RadioGroup.d.vue.ts +6 -5
  206. package/dist/runtime/components/RadioGroup.vue.d.ts +6 -5
  207. package/dist/runtime/components/ScrollArea.d.vue.ts +6 -2
  208. package/dist/runtime/components/ScrollArea.vue +2 -2
  209. package/dist/runtime/components/ScrollArea.vue.d.ts +6 -2
  210. package/dist/runtime/components/Select.d.vue.ts +21 -19
  211. package/dist/runtime/components/Select.vue +1 -1
  212. package/dist/runtime/components/Select.vue.d.ts +21 -19
  213. package/dist/runtime/components/SelectMenu.d.vue.ts +27 -26
  214. package/dist/runtime/components/SelectMenu.vue +2 -2
  215. package/dist/runtime/components/SelectMenu.vue.d.ts +27 -26
  216. package/dist/runtime/components/Separator.d.vue.ts +3 -2
  217. package/dist/runtime/components/Separator.vue.d.ts +3 -2
  218. package/dist/runtime/components/Sidebar.d.vue.ts +131 -0
  219. package/dist/runtime/components/Sidebar.vue +222 -0
  220. package/dist/runtime/components/Sidebar.vue.d.ts +131 -0
  221. package/dist/runtime/components/Slideover.d.vue.ts +16 -15
  222. package/dist/runtime/components/Slideover.vue +1 -1
  223. package/dist/runtime/components/Slideover.vue.d.ts +16 -15
  224. package/dist/runtime/components/Stepper.d.vue.ts +8 -7
  225. package/dist/runtime/components/Stepper.vue.d.ts +8 -7
  226. package/dist/runtime/components/Switch.d.vue.ts +29 -25
  227. package/dist/runtime/components/Switch.vue +7 -6
  228. package/dist/runtime/components/Switch.vue.d.ts +29 -25
  229. package/dist/runtime/components/Table.d.vue.ts +12 -13
  230. package/dist/runtime/components/Table.vue +12 -4
  231. package/dist/runtime/components/Table.vue.d.ts +12 -13
  232. package/dist/runtime/components/Tabs.d.vue.ts +9 -9
  233. package/dist/runtime/components/Tabs.vue.d.ts +9 -9
  234. package/dist/runtime/components/Textarea.d.vue.ts +7 -6
  235. package/dist/runtime/components/Textarea.vue.d.ts +7 -6
  236. package/dist/runtime/components/Theme.d.vue.ts +2 -1
  237. package/dist/runtime/components/Theme.vue.d.ts +2 -1
  238. package/dist/runtime/components/Timeline.d.vue.ts +7 -6
  239. package/dist/runtime/components/Timeline.vue.d.ts +7 -6
  240. package/dist/runtime/components/Toast.d.vue.ts +8 -7
  241. package/dist/runtime/components/Toast.vue.d.ts +8 -7
  242. package/dist/runtime/components/Toaster.d.vue.ts +2 -1
  243. package/dist/runtime/components/Toaster.vue.d.ts +2 -1
  244. package/dist/runtime/components/Tooltip.d.vue.ts +8 -4
  245. package/dist/runtime/components/Tooltip.vue +4 -3
  246. package/dist/runtime/components/Tooltip.vue.d.ts +8 -4
  247. package/dist/runtime/components/Tree.d.vue.ts +7 -6
  248. package/dist/runtime/components/Tree.vue.d.ts +7 -6
  249. package/dist/runtime/components/User.d.vue.ts +6 -5
  250. package/dist/runtime/components/User.vue.d.ts +6 -5
  251. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +1 -1
  252. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +1 -1
  253. package/dist/runtime/components/color-mode/ColorModeSwitch.vue +3 -1
  254. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +7 -6
  255. package/dist/runtime/components/content/ContentNavigation.vue +10 -3
  256. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +7 -6
  257. package/dist/runtime/components/content/ContentSearch.d.vue.ts +4 -3
  258. package/dist/runtime/components/content/ContentSearch.vue.d.ts +4 -3
  259. package/dist/runtime/components/content/ContentSurround.d.vue.ts +6 -5
  260. package/dist/runtime/components/content/ContentSurround.vue +6 -2
  261. package/dist/runtime/components/content/ContentSurround.vue.d.ts +6 -5
  262. package/dist/runtime/components/content/ContentToc.d.vue.ts +20 -14
  263. package/dist/runtime/components/content/ContentToc.vue +59 -14
  264. package/dist/runtime/components/content/ContentToc.vue.d.ts +20 -14
  265. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +1 -1
  266. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +1 -1
  267. package/dist/runtime/components/prose/A.d.vue.ts +2 -1
  268. package/dist/runtime/components/prose/A.vue.d.ts +2 -1
  269. package/dist/runtime/components/prose/Accordion.d.vue.ts +2 -1
  270. package/dist/runtime/components/prose/Accordion.vue.d.ts +2 -1
  271. package/dist/runtime/components/prose/AccordionItem.d.vue.ts +2 -1
  272. package/dist/runtime/components/prose/AccordionItem.vue.d.ts +2 -1
  273. package/dist/runtime/components/prose/Badge.d.vue.ts +2 -1
  274. package/dist/runtime/components/prose/Badge.vue.d.ts +2 -1
  275. package/dist/runtime/components/prose/Blockquote.d.vue.ts +2 -1
  276. package/dist/runtime/components/prose/Blockquote.vue.d.ts +2 -1
  277. package/dist/runtime/components/prose/Callout.d.vue.ts +2 -1
  278. package/dist/runtime/components/prose/Callout.vue.d.ts +2 -1
  279. package/dist/runtime/components/prose/Card.d.vue.ts +3 -2
  280. package/dist/runtime/components/prose/Card.vue.d.ts +3 -2
  281. package/dist/runtime/components/prose/CardGroup.d.vue.ts +2 -1
  282. package/dist/runtime/components/prose/CardGroup.vue.d.ts +2 -1
  283. package/dist/runtime/components/prose/Code.d.vue.ts +2 -1
  284. package/dist/runtime/components/prose/Code.vue.d.ts +2 -1
  285. package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +2 -1
  286. package/dist/runtime/components/prose/CodeCollapse.vue.d.ts +2 -1
  287. package/dist/runtime/components/prose/CodeGroup.d.vue.ts +2 -1
  288. package/dist/runtime/components/prose/CodeGroup.vue.d.ts +2 -1
  289. package/dist/runtime/components/prose/CodePreview.d.vue.ts +3 -2
  290. package/dist/runtime/components/prose/CodePreview.vue.d.ts +3 -2
  291. package/dist/runtime/components/prose/CodeTree.d.vue.ts +2 -1
  292. package/dist/runtime/components/prose/CodeTree.vue.d.ts +2 -1
  293. package/dist/runtime/components/prose/Collapsible.d.vue.ts +2 -1
  294. package/dist/runtime/components/prose/Collapsible.vue.d.ts +2 -1
  295. package/dist/runtime/components/prose/Em.d.vue.ts +2 -1
  296. package/dist/runtime/components/prose/Em.vue.d.ts +2 -1
  297. package/dist/runtime/components/prose/Field.d.vue.ts +2 -1
  298. package/dist/runtime/components/prose/Field.vue.d.ts +2 -1
  299. package/dist/runtime/components/prose/FieldGroup.d.vue.ts +2 -1
  300. package/dist/runtime/components/prose/FieldGroup.vue.d.ts +2 -1
  301. package/dist/runtime/components/prose/H1.d.vue.ts +2 -1
  302. package/dist/runtime/components/prose/H1.vue.d.ts +2 -1
  303. package/dist/runtime/components/prose/H2.d.vue.ts +2 -1
  304. package/dist/runtime/components/prose/H2.vue.d.ts +2 -1
  305. package/dist/runtime/components/prose/H3.d.vue.ts +2 -1
  306. package/dist/runtime/components/prose/H3.vue.d.ts +2 -1
  307. package/dist/runtime/components/prose/H4.d.vue.ts +2 -1
  308. package/dist/runtime/components/prose/H4.vue.d.ts +2 -1
  309. package/dist/runtime/components/prose/Li.d.vue.ts +2 -1
  310. package/dist/runtime/components/prose/Li.vue.d.ts +2 -1
  311. package/dist/runtime/components/prose/Ol.d.vue.ts +2 -1
  312. package/dist/runtime/components/prose/Ol.vue.d.ts +2 -1
  313. package/dist/runtime/components/prose/P.d.vue.ts +2 -1
  314. package/dist/runtime/components/prose/P.vue.d.ts +2 -1
  315. package/dist/runtime/components/prose/Pre.d.vue.ts +2 -1
  316. package/dist/runtime/components/prose/Pre.vue +0 -4
  317. package/dist/runtime/components/prose/Pre.vue.d.ts +2 -1
  318. package/dist/runtime/components/prose/Steps.d.vue.ts +2 -1
  319. package/dist/runtime/components/prose/Steps.vue.d.ts +2 -1
  320. package/dist/runtime/components/prose/Strong.d.vue.ts +2 -1
  321. package/dist/runtime/components/prose/Strong.vue.d.ts +2 -1
  322. package/dist/runtime/components/prose/Table.d.vue.ts +2 -1
  323. package/dist/runtime/components/prose/Table.vue.d.ts +2 -1
  324. package/dist/runtime/components/prose/Tabs.d.vue.ts +2 -1
  325. package/dist/runtime/components/prose/Tabs.vue.d.ts +2 -1
  326. package/dist/runtime/components/prose/TabsItem.d.vue.ts +2 -1
  327. package/dist/runtime/components/prose/TabsItem.vue.d.ts +2 -1
  328. package/dist/runtime/components/prose/Tbody.d.vue.ts +2 -1
  329. package/dist/runtime/components/prose/Tbody.vue.d.ts +2 -1
  330. package/dist/runtime/components/prose/Td.d.vue.ts +2 -1
  331. package/dist/runtime/components/prose/Td.vue.d.ts +2 -1
  332. package/dist/runtime/components/prose/Th.d.vue.ts +2 -1
  333. package/dist/runtime/components/prose/Th.vue.d.ts +2 -1
  334. package/dist/runtime/components/prose/Thead.d.vue.ts +2 -1
  335. package/dist/runtime/components/prose/Thead.vue.d.ts +2 -1
  336. package/dist/runtime/components/prose/Tr.d.vue.ts +2 -1
  337. package/dist/runtime/components/prose/Tr.vue.d.ts +2 -1
  338. package/dist/runtime/components/prose/Ul.d.vue.ts +2 -1
  339. package/dist/runtime/components/prose/Ul.vue.d.ts +2 -1
  340. package/dist/runtime/composables/index.d.ts +11 -0
  341. package/dist/runtime/composables/index.js +11 -0
  342. package/dist/runtime/composables/useEditorMenu.js +1 -1
  343. package/dist/runtime/composables/useFileUpload.d.ts +2 -2
  344. package/dist/runtime/composables/useFileUpload.js +3 -3
  345. package/dist/runtime/composables/{internal/useFilter.js → useFilter.js} +1 -1
  346. package/dist/runtime/composables/useResizable.d.ts +2 -2
  347. package/dist/runtime/composables/useResizable.js +2 -2
  348. package/dist/runtime/composables/useScrollShadow.d.ts +23 -0
  349. package/dist/runtime/composables/useScrollShadow.js +36 -0
  350. package/dist/runtime/index.css +1 -1
  351. package/dist/runtime/keyframes.css +1 -1
  352. package/dist/runtime/locale/ar.js +13 -0
  353. package/dist/runtime/locale/az.js +13 -0
  354. package/dist/runtime/locale/be.js +13 -0
  355. package/dist/runtime/locale/bg.js +13 -0
  356. package/dist/runtime/locale/bn.js +13 -0
  357. package/dist/runtime/locale/ca.js +13 -0
  358. package/dist/runtime/locale/ckb.js +13 -0
  359. package/dist/runtime/locale/cs.js +13 -0
  360. package/dist/runtime/locale/da.js +13 -0
  361. package/dist/runtime/locale/de.js +13 -0
  362. package/dist/runtime/locale/de_ch.js +13 -0
  363. package/dist/runtime/locale/el.js +13 -0
  364. package/dist/runtime/locale/en.js +13 -0
  365. package/dist/runtime/locale/es.js +13 -0
  366. package/dist/runtime/locale/et.js +13 -0
  367. package/dist/runtime/locale/eu.js +13 -0
  368. package/dist/runtime/locale/fa_ir.js +13 -0
  369. package/dist/runtime/locale/fi.js +13 -0
  370. package/dist/runtime/locale/fr.js +13 -0
  371. package/dist/runtime/locale/gl.js +13 -0
  372. package/dist/runtime/locale/he.js +13 -0
  373. package/dist/runtime/locale/hi.js +13 -0
  374. package/dist/runtime/locale/hr.js +13 -0
  375. package/dist/runtime/locale/hu.js +13 -0
  376. package/dist/runtime/locale/hy.js +13 -0
  377. package/dist/runtime/locale/id.js +13 -0
  378. package/dist/runtime/locale/index.d.ts +1 -0
  379. package/dist/runtime/locale/index.js +1 -0
  380. package/dist/runtime/locale/is.d.ts +3 -0
  381. package/dist/runtime/locale/is.js +142 -0
  382. package/dist/runtime/locale/it.js +13 -0
  383. package/dist/runtime/locale/ja.js +13 -0
  384. package/dist/runtime/locale/ka.js +13 -0
  385. package/dist/runtime/locale/kk.js +13 -0
  386. package/dist/runtime/locale/km.js +13 -0
  387. package/dist/runtime/locale/ko.js +13 -0
  388. package/dist/runtime/locale/ky.js +13 -0
  389. package/dist/runtime/locale/lb.js +13 -0
  390. package/dist/runtime/locale/lo.js +13 -0
  391. package/dist/runtime/locale/lt.js +13 -0
  392. package/dist/runtime/locale/mn.js +13 -0
  393. package/dist/runtime/locale/ms.js +13 -0
  394. package/dist/runtime/locale/nb_no.js +13 -0
  395. package/dist/runtime/locale/nl.js +13 -0
  396. package/dist/runtime/locale/pl.js +13 -0
  397. package/dist/runtime/locale/pt.js +13 -0
  398. package/dist/runtime/locale/pt_br.js +13 -0
  399. package/dist/runtime/locale/ro.js +13 -0
  400. package/dist/runtime/locale/ru.js +13 -0
  401. package/dist/runtime/locale/sk.js +13 -0
  402. package/dist/runtime/locale/sl.js +13 -0
  403. package/dist/runtime/locale/sq.js +13 -0
  404. package/dist/runtime/locale/sv.js +13 -0
  405. package/dist/runtime/locale/th.js +13 -0
  406. package/dist/runtime/locale/tj.js +13 -0
  407. package/dist/runtime/locale/tr.js +13 -0
  408. package/dist/runtime/locale/ug_cn.js +13 -0
  409. package/dist/runtime/locale/uk.js +13 -0
  410. package/dist/runtime/locale/ur.js +13 -0
  411. package/dist/runtime/locale/uz.js +13 -0
  412. package/dist/runtime/locale/vi.js +13 -0
  413. package/dist/runtime/locale/zh_cn.js +13 -0
  414. package/dist/runtime/locale/zh_tw.js +13 -0
  415. package/dist/runtime/types/index.d.ts +4 -0
  416. package/dist/runtime/types/index.js +4 -0
  417. package/dist/runtime/types/locale.d.ts +13 -0
  418. package/dist/runtime/types/utils.d.ts +2 -2
  419. package/dist/runtime/utils/ai.d.ts +18 -0
  420. package/dist/runtime/utils/ai.js +13 -0
  421. package/dist/runtime/utils/editor.js +17 -5
  422. package/dist/runtime/utils/index.d.ts +1 -1
  423. package/dist/runtime/utils/index.js +1 -1
  424. package/dist/runtime/vue/components/Icon.d.vue.ts +1 -4
  425. package/dist/runtime/vue/components/Icon.vue +28 -3
  426. package/dist/runtime/vue/components/Icon.vue.d.ts +1 -4
  427. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +1 -1
  428. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +1 -1
  429. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue +3 -1
  430. package/dist/runtime/vue/overrides/inertia/Link.d.vue.ts +3 -2
  431. package/dist/runtime/vue/overrides/inertia/Link.vue.d.ts +3 -2
  432. package/dist/runtime/vue/overrides/none/Link.d.vue.ts +3 -3
  433. package/dist/runtime/vue/overrides/none/Link.vue.d.ts +3 -3
  434. package/dist/runtime/vue/overrides/vue-router/Link.d.vue.ts +3 -2
  435. package/dist/runtime/vue/overrides/vue-router/Link.vue.d.ts +3 -2
  436. package/dist/shared/{ui.BrgdrRzy.mjs → ui.DJUbBpE2.mjs} +306 -45
  437. package/dist/unplugin.d.mts +15 -5
  438. package/dist/unplugin.mjs +53 -30
  439. package/dist/vite.d.mts +1 -0
  440. package/dist/vite.mjs +1 -1
  441. package/package.json +50 -47
  442. /package/dist/runtime/composables/{internal/useFilter.d.ts → useFilter.d.ts} +0 -0
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
3
  import theme from '#build/ui/dashboard-sidebar';
3
4
  import type { UseResizableProps } from '../composables/useResizable';
@@ -36,32 +37,32 @@ export interface DashboardSidebarProps<T extends DashboardSidebarMode = Dashboar
36
37
  ui?: DashboardSidebar['slots'];
37
38
  }
38
39
  export interface DashboardSidebarSlots {
39
- 'header'(props: {
40
- collapsed?: boolean;
41
- collapse?: (value: boolean) => void;
42
- }): any;
43
- 'default'(props: {
44
- collapsed?: boolean;
45
- collapse?: (value: boolean) => void;
46
- }): any;
47
- 'footer'(props: {
48
- collapsed?: boolean;
49
- collapse?: (value: boolean) => void;
50
- }): any;
51
- 'toggle'(props: {
40
+ 'header'?(props: {
41
+ collapsed: boolean;
42
+ collapse: (value: boolean) => void;
43
+ }): VNode[];
44
+ 'default'?(props: {
45
+ collapsed: boolean;
46
+ collapse: (value: boolean) => void;
47
+ }): VNode[];
48
+ 'footer'?(props: {
49
+ collapsed: boolean;
50
+ collapse: (value: boolean) => void;
51
+ }): VNode[];
52
+ 'toggle'?(props: {
52
53
  open: boolean;
53
54
  toggle: () => void;
54
55
  ui: DashboardSidebar['ui'];
55
- }): any;
56
- 'content'(props: {
56
+ }): VNode[];
57
+ 'content'?(props: {
57
58
  close?: () => void;
58
- }): any;
59
- 'resize-handle'(props: {
59
+ }): VNode[];
60
+ 'resize-handle'?(props: {
60
61
  onMouseDown: (e: MouseEvent) => void;
61
62
  onTouchStart: (e: TouchEvent) => void;
62
63
  onDoubleClick: (e: MouseEvent) => void;
63
64
  ui: DashboardSidebar['ui'];
64
- }): any;
65
+ }): VNode[];
65
66
  }
66
67
  declare const _default: typeof __VLS_export;
67
68
  export default _default;
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
3
  import theme from '#build/ui/dashboard-toolbar';
3
4
  import type { ComponentConfig } from '../types/tv';
@@ -12,9 +13,9 @@ export interface DashboardToolbarProps {
12
13
  ui?: DashboardToolbar['slots'];
13
14
  }
14
15
  export interface DashboardToolbarSlots {
15
- default(props?: {}): any;
16
- left(props?: {}): any;
17
- right(props?: {}): any;
16
+ default?(props?: {}): VNode[];
17
+ left?(props?: {}): VNode[];
18
+ right?(props?: {}): VNode[];
18
19
  }
19
20
  declare const _default: typeof __VLS_export;
20
21
  export default _default;
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
3
  import theme from '#build/ui/dashboard-toolbar';
3
4
  import type { ComponentConfig } from '../types/tv';
@@ -12,9 +13,9 @@ export interface DashboardToolbarProps {
12
13
  ui?: DashboardToolbar['slots'];
13
14
  }
14
15
  export interface DashboardToolbarSlots {
15
- default(props?: {}): any;
16
- left(props?: {}): any;
17
- right(props?: {}): any;
16
+ default?(props?: {}): VNode[];
17
+ left?(props?: {}): VNode[];
18
+ right?(props?: {}): VNode[];
18
19
  }
19
20
  declare const _default: typeof __VLS_export;
20
21
  export default _default;
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { DrawerRootProps, DrawerRootEmits } from 'vaul-vue';
2
3
  import type { DialogContentProps, DialogContentEmits } from 'reka-ui';
3
4
  import type { AppConfig } from '@nuxt/schema';
@@ -47,13 +48,13 @@ export interface DrawerEmits extends DrawerRootEmits {
47
48
  (e: 'close:prevent'): void;
48
49
  }
49
50
  export interface DrawerSlots {
50
- default(props?: {}): any;
51
- content(props?: {}): any;
52
- header(props?: {}): any;
53
- title(props?: {}): any;
54
- description(props?: {}): any;
55
- body(props?: {}): any;
56
- footer(props?: {}): any;
51
+ default?(props?: {}): VNode[];
52
+ content?(props?: {}): VNode[];
53
+ header?(props?: {}): VNode[];
54
+ title?(props?: {}): VNode[];
55
+ description?(props?: {}): VNode[];
56
+ body?(props?: {}): VNode[];
57
+ footer?(props?: {}): VNode[];
57
58
  }
58
59
  declare const _default: typeof __VLS_export;
59
60
  export default _default;
@@ -49,7 +49,7 @@ const portalProps = usePortal(toRef(() => props.portal));
49
49
  const contentProps = toRef(() => props.content);
50
50
  const contentEvents = computed(() => {
51
51
  if (!props.dismissible) {
52
- const events = ["pointerDownOutside", "interactOutside", "escapeKeyDown"];
52
+ const events = ["interactOutside", "escapeKeyDown"];
53
53
  return events.reduce((acc, curr) => {
54
54
  acc[curr] = (e) => {
55
55
  e.preventDefault();
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { DrawerRootProps, DrawerRootEmits } from 'vaul-vue';
2
3
  import type { DialogContentProps, DialogContentEmits } from 'reka-ui';
3
4
  import type { AppConfig } from '@nuxt/schema';
@@ -47,13 +48,13 @@ export interface DrawerEmits extends DrawerRootEmits {
47
48
  (e: 'close:prevent'): void;
48
49
  }
49
50
  export interface DrawerSlots {
50
- default(props?: {}): any;
51
- content(props?: {}): any;
52
- header(props?: {}): any;
53
- title(props?: {}): any;
54
- description(props?: {}): any;
55
- body(props?: {}): any;
56
- footer(props?: {}): any;
51
+ default?(props?: {}): VNode[];
52
+ content?(props?: {}): VNode[];
53
+ header?(props?: {}): VNode[];
54
+ title?(props?: {}): VNode[];
55
+ description?(props?: {}): VNode[];
56
+ body?(props?: {}): VNode[];
57
+ footer?(props?: {}): VNode[];
57
58
  }
58
59
  declare const _default: typeof __VLS_export;
59
60
  export default _default;
@@ -1,7 +1,8 @@
1
1
  import type { DropdownMenuRootProps, DropdownMenuRootEmits, DropdownMenuContentProps, DropdownMenuContentEmits, DropdownMenuArrowProps } from 'reka-ui';
2
+ import type { VNode } from 'vue';
2
3
  import type { AppConfig } from '@nuxt/schema';
3
4
  import theme from '#build/ui/dropdown-menu';
4
- import type { AvatarProps, IconProps, KbdProps, LinkProps } from '../types';
5
+ import type { AvatarProps, IconProps, InputProps, KbdProps, LinkProps } from '../types';
5
6
  import type { ArrayOrNested, DynamicSlots, GetItemKeys, MergeTypes, NestedItem, EmitsToProps } from '../types/utils';
6
7
  import type { ComponentConfig } from '../types/tv';
7
8
  type DropdownMenu = ComponentConfig<typeof theme, AppConfig, 'dropdownMenu'>;
@@ -29,6 +30,9 @@ export interface DropdownMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'cust
29
30
  checked?: boolean;
30
31
  open?: boolean;
31
32
  defaultOpen?: boolean;
33
+ filter?: boolean | Omit<InputProps, 'modelValue' | 'defaultValue'>;
34
+ filterFields?: string[];
35
+ ignoreFilter?: boolean;
32
36
  children?: ArrayOrNested<DropdownMenuItem>;
33
37
  onSelect?: (e: Event) => void;
34
38
  onUpdateChecked?: (checked: boolean) => void;
@@ -68,6 +72,7 @@ export interface DropdownMenuProps<T extends ArrayOrNested<DropdownMenuItem> = A
68
72
  content?: Omit<DropdownMenuContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<DropdownMenuContentEmits>>;
69
73
  /**
70
74
  * Display an arrow alongside the menu.
75
+ * `{ rounded: true }`{lang="ts-type"}
71
76
  * @defaultValue false
72
77
  */
73
78
  arrow?: boolean | Omit<DropdownMenuArrowProps, 'as' | 'asChild'>;
@@ -86,6 +91,23 @@ export interface DropdownMenuProps<T extends ArrayOrNested<DropdownMenuItem> = A
86
91
  * @defaultValue 'description'
87
92
  */
88
93
  descriptionKey?: GetItemKeys<T>;
94
+ /**
95
+ * Whether to display a filter input or not.
96
+ * Can be an object to pass additional props to the input.
97
+ * `{ placeholder: 'Search...', variant: 'none' }`{lang="ts-type"}
98
+ * @defaultValue false
99
+ */
100
+ filter?: boolean | Omit<InputProps, 'modelValue' | 'defaultValue'>;
101
+ /**
102
+ * The fields to filter by.
103
+ * @defaultValue [labelKey]
104
+ */
105
+ filterFields?: string[];
106
+ /**
107
+ * When `true`, items will not be filtered which is useful for custom filtering.
108
+ * @defaultValue false
109
+ */
110
+ ignoreFilter?: boolean;
89
111
  disabled?: boolean;
90
112
  class?: any;
91
113
  ui?: DropdownMenu['slots'];
@@ -94,53 +116,59 @@ export interface DropdownMenuEmits extends DropdownMenuRootEmits {
94
116
  }
95
117
  type SlotProps<T extends DropdownMenuItem> = (props: {
96
118
  item: T;
97
- active?: boolean;
119
+ active: boolean;
98
120
  index: number;
99
121
  ui: DropdownMenu['ui'];
100
- }) => any;
122
+ }) => VNode[];
101
123
  export type DropdownMenuSlots<A extends ArrayOrNested<DropdownMenuItem> = ArrayOrNested<DropdownMenuItem>, T extends NestedItem<A> = NestedItem<A>> = {
102
- 'default'(props: {
124
+ 'default'?(props: {
103
125
  open: boolean;
104
- }): any;
105
- 'item': SlotProps<T>;
106
- 'item-leading': SlotProps<T>;
107
- 'item-label': (props: {
126
+ }): VNode[];
127
+ 'item'?: SlotProps<T>;
128
+ 'item-leading'?: SlotProps<T>;
129
+ 'item-label'?: (props: {
108
130
  item: T;
109
- active?: boolean;
131
+ active: boolean;
110
132
  index: number;
111
- }) => any;
112
- 'item-description': (props: {
133
+ }) => VNode[];
134
+ 'item-description'?: (props: {
113
135
  item: T;
114
- active?: boolean;
136
+ active: boolean;
115
137
  index: number;
116
- }) => any;
117
- 'item-trailing': SlotProps<T>;
118
- 'content-top': (props: {
138
+ }) => VNode[];
139
+ 'item-trailing'?: SlotProps<T>;
140
+ 'empty'?(props: {
141
+ searchTerm: string;
142
+ }): VNode[];
143
+ 'content-top'?: (props: {
119
144
  sub: boolean;
120
- }) => any;
121
- 'content-bottom': (props: {
145
+ }) => VNode[];
146
+ 'content-bottom'?: (props: {
122
147
  sub: boolean;
123
- }) => any;
148
+ }) => VNode[];
124
149
  } & DynamicSlots<MergeTypes<T>, 'label' | 'description', {
125
- active?: boolean;
150
+ active: boolean;
126
151
  index: number;
127
152
  }> & DynamicSlots<MergeTypes<T>, 'leading' | 'trailing', {
128
- active?: boolean;
153
+ active: boolean;
129
154
  index: number;
130
155
  ui: DropdownMenu['ui'];
131
156
  }>;
132
157
  declare const _default: typeof __VLS_export;
133
158
  export default _default;
134
159
  declare const __VLS_export: <T extends ArrayOrNested<DropdownMenuItem>>(__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<{
135
- props: import("vue").PublicProps & __VLS_PrettifyLocal<DropdownMenuProps<T> & {
160
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(DropdownMenuProps<T> & {
161
+ searchTerm?: string;
162
+ }) & {
136
163
  "onUpdate:open"?: ((payload: boolean) => any) | undefined;
164
+ "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
137
165
  }> & (typeof globalThis extends {
138
166
  __VLS_PROPS_FALLBACK: infer P;
139
167
  } ? P : {});
140
168
  expose: (exposed: {}) => void;
141
169
  attrs: any;
142
170
  slots: DropdownMenuSlots<T, NestedItem<T>>;
143
- emit: (evt: "update:open", payload: boolean) => void;
171
+ emit: ((evt: "update:open", payload: boolean) => void) & ((event: "update:searchTerm", value: string) => void);
144
172
  }>) => import("vue").VNode & {
145
173
  __ctx?: Awaited<typeof __VLS_setup>;
146
174
  };
@@ -23,6 +23,9 @@ const props = defineProps({
23
23
  portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
24
24
  labelKey: { type: null, required: false, default: "label" },
25
25
  descriptionKey: { type: null, required: false, default: "description" },
26
+ filter: { type: [Boolean, Object], required: false, default: false },
27
+ filterFields: { type: Array, required: false },
28
+ ignoreFilter: { type: Boolean, required: false, default: false },
26
29
  disabled: { type: Boolean, required: false },
27
30
  class: { type: null, required: false },
28
31
  ui: { type: Object, required: false },
@@ -32,11 +35,12 @@ const props = defineProps({
32
35
  });
33
36
  const emits = defineEmits(["update:open"]);
34
37
  const slots = defineSlots();
38
+ const searchTerm = defineModel("searchTerm", { type: String, ...{ default: "" } });
35
39
  const appConfig = useAppConfig();
36
40
  const uiProp = useComponentUI("dropdownMenu", props);
37
41
  const rootProps = useForwardPropsEmits(reactivePick(props, "defaultOpen", "open", "modal"), emits);
38
42
  const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8 }));
39
- const arrowProps = toRef(() => props.arrow);
43
+ const arrowProps = toRef(() => defu(props.arrow, { rounded: true }));
40
44
  const getProxySlots = () => omit(slots, ["default"]);
41
45
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.dropdownMenu || {} })({
42
46
  size: props.size
@@ -50,6 +54,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.dropdownMenu
50
54
  </DropdownMenuTrigger>
51
55
 
52
56
  <UDropdownMenuContent
57
+ v-model:search-term="searchTerm"
53
58
  :class="ui.content({ class: [!slots.default && props.class, uiProp?.content] })"
54
59
  :ui="ui"
55
60
  :ui-override="uiProp"
@@ -61,6 +66,10 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.dropdownMenu
61
66
  :checked-icon="checkedIcon"
62
67
  :loading-icon="loadingIcon"
63
68
  :external-icon="externalIcon"
69
+ :size="size"
70
+ :filter="filter"
71
+ :filter-fields="filterFields"
72
+ :ignore-filter="ignoreFilter"
64
73
  >
65
74
  <template v-for="(_, name) in getProxySlots()" #[name]="slotData">
66
75
  <slot :name="name" v-bind="slotData" />
@@ -1,7 +1,8 @@
1
1
  import type { DropdownMenuRootProps, DropdownMenuRootEmits, DropdownMenuContentProps, DropdownMenuContentEmits, DropdownMenuArrowProps } from 'reka-ui';
2
+ import type { VNode } from 'vue';
2
3
  import type { AppConfig } from '@nuxt/schema';
3
4
  import theme from '#build/ui/dropdown-menu';
4
- import type { AvatarProps, IconProps, KbdProps, LinkProps } from '../types';
5
+ import type { AvatarProps, IconProps, InputProps, KbdProps, LinkProps } from '../types';
5
6
  import type { ArrayOrNested, DynamicSlots, GetItemKeys, MergeTypes, NestedItem, EmitsToProps } from '../types/utils';
6
7
  import type { ComponentConfig } from '../types/tv';
7
8
  type DropdownMenu = ComponentConfig<typeof theme, AppConfig, 'dropdownMenu'>;
@@ -29,6 +30,9 @@ export interface DropdownMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'cust
29
30
  checked?: boolean;
30
31
  open?: boolean;
31
32
  defaultOpen?: boolean;
33
+ filter?: boolean | Omit<InputProps, 'modelValue' | 'defaultValue'>;
34
+ filterFields?: string[];
35
+ ignoreFilter?: boolean;
32
36
  children?: ArrayOrNested<DropdownMenuItem>;
33
37
  onSelect?: (e: Event) => void;
34
38
  onUpdateChecked?: (checked: boolean) => void;
@@ -68,6 +72,7 @@ export interface DropdownMenuProps<T extends ArrayOrNested<DropdownMenuItem> = A
68
72
  content?: Omit<DropdownMenuContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<DropdownMenuContentEmits>>;
69
73
  /**
70
74
  * Display an arrow alongside the menu.
75
+ * `{ rounded: true }`{lang="ts-type"}
71
76
  * @defaultValue false
72
77
  */
73
78
  arrow?: boolean | Omit<DropdownMenuArrowProps, 'as' | 'asChild'>;
@@ -86,6 +91,23 @@ export interface DropdownMenuProps<T extends ArrayOrNested<DropdownMenuItem> = A
86
91
  * @defaultValue 'description'
87
92
  */
88
93
  descriptionKey?: GetItemKeys<T>;
94
+ /**
95
+ * Whether to display a filter input or not.
96
+ * Can be an object to pass additional props to the input.
97
+ * `{ placeholder: 'Search...', variant: 'none' }`{lang="ts-type"}
98
+ * @defaultValue false
99
+ */
100
+ filter?: boolean | Omit<InputProps, 'modelValue' | 'defaultValue'>;
101
+ /**
102
+ * The fields to filter by.
103
+ * @defaultValue [labelKey]
104
+ */
105
+ filterFields?: string[];
106
+ /**
107
+ * When `true`, items will not be filtered which is useful for custom filtering.
108
+ * @defaultValue false
109
+ */
110
+ ignoreFilter?: boolean;
89
111
  disabled?: boolean;
90
112
  class?: any;
91
113
  ui?: DropdownMenu['slots'];
@@ -94,53 +116,59 @@ export interface DropdownMenuEmits extends DropdownMenuRootEmits {
94
116
  }
95
117
  type SlotProps<T extends DropdownMenuItem> = (props: {
96
118
  item: T;
97
- active?: boolean;
119
+ active: boolean;
98
120
  index: number;
99
121
  ui: DropdownMenu['ui'];
100
- }) => any;
122
+ }) => VNode[];
101
123
  export type DropdownMenuSlots<A extends ArrayOrNested<DropdownMenuItem> = ArrayOrNested<DropdownMenuItem>, T extends NestedItem<A> = NestedItem<A>> = {
102
- 'default'(props: {
124
+ 'default'?(props: {
103
125
  open: boolean;
104
- }): any;
105
- 'item': SlotProps<T>;
106
- 'item-leading': SlotProps<T>;
107
- 'item-label': (props: {
126
+ }): VNode[];
127
+ 'item'?: SlotProps<T>;
128
+ 'item-leading'?: SlotProps<T>;
129
+ 'item-label'?: (props: {
108
130
  item: T;
109
- active?: boolean;
131
+ active: boolean;
110
132
  index: number;
111
- }) => any;
112
- 'item-description': (props: {
133
+ }) => VNode[];
134
+ 'item-description'?: (props: {
113
135
  item: T;
114
- active?: boolean;
136
+ active: boolean;
115
137
  index: number;
116
- }) => any;
117
- 'item-trailing': SlotProps<T>;
118
- 'content-top': (props: {
138
+ }) => VNode[];
139
+ 'item-trailing'?: SlotProps<T>;
140
+ 'empty'?(props: {
141
+ searchTerm: string;
142
+ }): VNode[];
143
+ 'content-top'?: (props: {
119
144
  sub: boolean;
120
- }) => any;
121
- 'content-bottom': (props: {
145
+ }) => VNode[];
146
+ 'content-bottom'?: (props: {
122
147
  sub: boolean;
123
- }) => any;
148
+ }) => VNode[];
124
149
  } & DynamicSlots<MergeTypes<T>, 'label' | 'description', {
125
- active?: boolean;
150
+ active: boolean;
126
151
  index: number;
127
152
  }> & DynamicSlots<MergeTypes<T>, 'leading' | 'trailing', {
128
- active?: boolean;
153
+ active: boolean;
129
154
  index: number;
130
155
  ui: DropdownMenu['ui'];
131
156
  }>;
132
157
  declare const _default: typeof __VLS_export;
133
158
  export default _default;
134
159
  declare const __VLS_export: <T extends ArrayOrNested<DropdownMenuItem>>(__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<{
135
- props: import("vue").PublicProps & __VLS_PrettifyLocal<DropdownMenuProps<T> & {
160
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(DropdownMenuProps<T> & {
161
+ searchTerm?: string;
162
+ }) & {
136
163
  "onUpdate:open"?: ((payload: boolean) => any) | undefined;
164
+ "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
137
165
  }> & (typeof globalThis extends {
138
166
  __VLS_PROPS_FALLBACK: infer P;
139
167
  } ? P : {});
140
168
  expose: (exposed: {}) => void;
141
169
  attrs: any;
142
170
  slots: DropdownMenuSlots<T, NestedItem<T>>;
143
- emit: (evt: "update:open", payload: boolean) => void;
171
+ emit: ((evt: "update:open", payload: boolean) => void) & ((event: "update:searchTerm", value: string) => void);
144
172
  }>) => import("vue").VNode & {
145
173
  __ctx?: Awaited<typeof __VLS_setup>;
146
174
  };
@@ -1,8 +1,9 @@
1
1
  import { DropdownMenu } from 'reka-ui/namespaced';
2
2
  import type { DropdownMenuContentProps as RekaDropdownMenuContentProps } from 'reka-ui';
3
+ import type { VNode } from 'vue';
3
4
  import type { AppConfig } from '@nuxt/schema';
4
5
  import type theme from '#build/ui/dropdown-menu';
5
- import type { DropdownMenuItem, DropdownMenuSlots, IconProps } from '../types';
6
+ import type { DropdownMenuItem, DropdownMenuSlots, IconProps, InputProps } from '../types';
6
7
  import type { ArrayOrNested, GetItemKeys, NestedItem, DynamicSlots, MergeTypes } from '../types/utils';
7
8
  import type { ComponentConfig } from '../types/tv';
8
9
  type DropdownMenu = ComponentConfig<typeof theme, AppConfig, 'dropdownMenu'>;
@@ -24,17 +25,22 @@ interface DropdownMenuContentProps<T extends ArrayOrNested<DropdownMenuItem>> ex
24
25
  * @IconifyIcon
25
26
  */
26
27
  externalIcon?: boolean | IconProps['name'];
28
+ size?: DropdownMenu['variants']['size'];
29
+ filter?: boolean | Omit<InputProps, 'modelValue' | 'defaultValue'>;
30
+ filterFields?: string[];
31
+ ignoreFilter?: boolean;
32
+ searchTerm?: string;
27
33
  class?: any;
28
34
  ui: DropdownMenu['ui'];
29
35
  uiOverride?: DropdownMenu['slots'];
30
36
  }
31
- type DropdownMenuContentSlots<A extends ArrayOrNested<DropdownMenuItem> = ArrayOrNested<DropdownMenuItem>, T extends NestedItem<A> = NestedItem<A>> = Pick<DropdownMenuSlots<A>, 'item' | 'item-leading' | 'item-label' | 'item-description' | 'item-trailing' | 'content-top' | 'content-bottom'> & {
32
- default(props?: {}): any;
37
+ type DropdownMenuContentSlots<A extends ArrayOrNested<DropdownMenuItem> = ArrayOrNested<DropdownMenuItem>, T extends NestedItem<A> = NestedItem<A>> = Pick<DropdownMenuSlots<A>, 'item' | 'item-leading' | 'item-label' | 'item-description' | 'item-trailing' | 'empty' | 'content-top' | 'content-bottom'> & {
38
+ default?(props?: {}): VNode[];
33
39
  } & DynamicSlots<MergeTypes<T>, 'label' | 'description', {
34
- active?: boolean;
40
+ active: boolean;
35
41
  index: number;
36
42
  }> & DynamicSlots<MergeTypes<T>, 'leading' | 'trailing', {
37
- active?: boolean;
43
+ active: boolean;
38
44
  index: number;
39
45
  ui: DropdownMenu['ui'];
40
46
  }>;
@@ -43,6 +49,7 @@ export default _default;
43
49
  declare const __VLS_export: <T extends ArrayOrNested<DropdownMenuItem>>(__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<{
44
50
  props: import("vue").PublicProps & __VLS_PrettifyLocal<DropdownMenuContentProps<T> & {
45
51
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
52
+ "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
46
53
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
47
54
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
48
55
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
@@ -53,7 +60,7 @@ declare const __VLS_export: <T extends ArrayOrNested<DropdownMenuItem>>(__VLS_pr
53
60
  expose: (exposed: {}) => void;
54
61
  attrs: any;
55
62
  slots: DropdownMenuContentSlots<T, NestedItem<T>>;
56
- emit: ((evt: "escapeKeyDown", event: KeyboardEvent) => void) & ((evt: "pointerDownOutside", event: import("reka-ui").PointerDownOutsideEvent) => void) & ((evt: "focusOutside", event: import("reka-ui").FocusOutsideEvent) => void) & ((evt: "interactOutside", event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => void) & ((evt: "closeAutoFocus", event: Event) => void);
63
+ emit: ((evt: "escapeKeyDown", event: KeyboardEvent) => void) & ((evt: "update:searchTerm", value: string) => void) & ((evt: "pointerDownOutside", event: import("reka-ui").PointerDownOutsideEvent) => void) & ((evt: "focusOutside", event: import("reka-ui").FocusOutsideEvent) => void) & ((evt: "interactOutside", event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => void) & ((evt: "closeAutoFocus", event: Event) => void);
57
64
  }>) => import("vue").VNode & {
58
65
  __ctx?: Awaited<typeof __VLS_setup>;
59
66
  };
@@ -3,11 +3,13 @@
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { computed, toRef } from "vue";
6
+ import { computed, ref, toRef } from "vue";
7
+ import { defu } from "defu";
7
8
  import { DropdownMenu } from "reka-ui/namespaced";
8
9
  import { useForwardPropsEmits } from "reka-ui";
9
10
  import { reactiveOmit, createReusableTemplate } from "@vueuse/core";
10
11
  import { useAppConfig } from "#imports";
12
+ import { useFilter } from "../composables/useFilter";
11
13
  import { useLocale } from "../composables/useLocale";
12
14
  import { usePortal } from "../composables/usePortal";
13
15
  import { omit, get, isArrayOfArray } from "../utils";
@@ -16,6 +18,7 @@ import ULinkBase from "./LinkBase.vue";
16
18
  import ULink from "./Link.vue";
17
19
  import UAvatar from "./Avatar.vue";
18
20
  import UIcon from "./Icon.vue";
21
+ import UInput from "./Input.vue";
19
22
  import UKbd from "./Kbd.vue";
20
23
  import UDropdownMenuContent from "./DropdownMenuContent.vue";
21
24
  const props = defineProps({
@@ -27,6 +30,11 @@ const props = defineProps({
27
30
  checkedIcon: { type: null, required: false },
28
31
  loadingIcon: { type: null, required: false },
29
32
  externalIcon: { type: [Boolean, String], required: false, skipCheck: true },
33
+ size: { type: null, required: false },
34
+ filter: { type: [Boolean, Object], required: false },
35
+ filterFields: { type: Array, required: false },
36
+ ignoreFilter: { type: Boolean, required: false },
37
+ searchTerm: { type: String, required: false },
30
38
  class: { type: null, required: false },
31
39
  ui: { type: null, required: true },
32
40
  uiOverride: { type: null, required: false },
@@ -50,18 +58,41 @@ const props = defineProps({
50
58
  prioritizePosition: { type: Boolean, required: false },
51
59
  reference: { type: null, required: false }
52
60
  });
53
- const emits = defineEmits(["escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "closeAutoFocus"]);
61
+ const emits = defineEmits(["update:searchTerm", "escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "closeAutoFocus"]);
54
62
  const slots = defineSlots();
55
- const { dir } = useLocale();
63
+ const { t, dir } = useLocale();
56
64
  const appConfig = useAppConfig();
65
+ const { filterGroups } = useFilter();
66
+ const _searchTerm = ref("");
67
+ const searchTerm = computed({
68
+ get: () => props.searchTerm ?? _searchTerm.value,
69
+ set: (value) => {
70
+ _searchTerm.value = value;
71
+ emits("update:searchTerm", value);
72
+ }
73
+ });
74
+ const inputProps = toRef(() => defu(props.filter, { placeholder: t("dropdownMenu.search"), variant: "none" }));
57
75
  const portalProps = usePortal(toRef(() => props.portal));
58
- const contentProps = useForwardPropsEmits(reactiveOmit(props, "sub", "items", "portal", "labelKey", "descriptionKey", "checkedIcon", "loadingIcon", "externalIcon", "class", "ui", "uiOverride"), emits);
76
+ const contentProps = useForwardPropsEmits(reactiveOmit(props, "sub", "items", "portal", "labelKey", "descriptionKey", "checkedIcon", "loadingIcon", "externalIcon", "size", "filter", "filterFields", "ignoreFilter", "searchTerm", "class", "ui", "uiOverride"), emits);
59
77
  const getProxySlots = () => omit(slots, ["default"]);
60
78
  const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate();
61
79
  const childrenIcon = computed(() => dir.value === "rtl" ? appConfig.ui.icons.chevronLeft : appConfig.ui.icons.chevronRight);
62
- const groups = computed(
63
- () => props.items?.length ? isArrayOfArray(props.items) ? props.items : [props.items] : []
64
- );
80
+ const groups = computed(() => {
81
+ if (!props.items?.length) return [];
82
+ return isArrayOfArray(props.items) ? props.items : [props.items];
83
+ });
84
+ const isStructuralItem = (item) => !!item.type && ["label", "separator"].includes(item.type);
85
+ const filteredGroups = computed(() => {
86
+ if (!props.filter || props.ignoreFilter || !searchTerm.value) {
87
+ return groups.value;
88
+ }
89
+ const fields = Array.isArray(props.filterFields) && props.filterFields.length ? props.filterFields : [props.labelKey];
90
+ return filterGroups(groups.value, searchTerm.value, {
91
+ fields,
92
+ isStructural: isStructuralItem
93
+ });
94
+ });
95
+ const hasFilteredItems = computed(() => filteredGroups.value.some((group) => group.some((item) => !isStructuralItem(item))));
65
96
  </script>
66
97
 
67
98
  <template>
@@ -106,10 +137,22 @@ const groups = computed(
106
137
 
107
138
  <DropdownMenu.Portal v-bind="portalProps">
108
139
  <component :is="sub ? DropdownMenu.SubContent : DropdownMenu.Content" data-slot="content" :class="ui.content({ class: [uiOverride?.content, props.class] })" v-bind="contentProps">
140
+ <DropdownMenu.Filter v-if="!!filter" v-model="searchTerm" as-child>
141
+ <UInput
142
+ autofocus
143
+ autocomplete="off"
144
+ :size="size"
145
+ v-bind="inputProps"
146
+ data-slot="input"
147
+ :class="ui.input({ class: uiOverride?.input })"
148
+ @change.stop
149
+ />
150
+ </DropdownMenu.Filter>
151
+
109
152
  <slot name="content-top" :sub="sub ?? false" />
110
153
 
111
- <div role="presentation" data-slot="viewport" :class="ui.viewport({ class: uiOverride?.viewport })">
112
- <DropdownMenu.Group v-for="(group, groupIndex) in groups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: uiOverride?.group })">
154
+ <div v-if="!searchTerm || hasFilteredItems" role="presentation" data-slot="viewport" :class="ui.viewport({ class: uiOverride?.viewport })">
155
+ <DropdownMenu.Group v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: uiOverride?.group })">
113
156
  <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
114
157
  <DropdownMenu.Label v-if="item.type === 'label'" data-slot="label" :class="ui.label({ class: [uiOverride?.label, item.ui?.label, item.class] })">
115
158
  <ReuseItemTemplate :item="item" :index="index" />
@@ -142,6 +185,10 @@ const groups = computed(
142
185
  :checked-icon="checkedIcon"
143
186
  :loading-icon="loadingIcon"
144
187
  :external-icon="externalIcon"
188
+ :size="size"
189
+ :filter="item.filter"
190
+ :filter-fields="item.filterFields || filterFields"
191
+ :ignore-filter="item.ignoreFilter ?? ignoreFilter"
145
192
  v-bind="item.content"
146
193
  >
147
194
  <template v-for="(_, name) in getProxySlots()" #[name]="slotData">
@@ -177,6 +224,12 @@ const groups = computed(
177
224
  </DropdownMenu.Group>
178
225
  </div>
179
226
 
227
+ <div v-if="searchTerm && !hasFilteredItems" data-slot="empty" :class="ui.empty({ class: uiOverride?.empty })">
228
+ <slot name="empty" :search-term="searchTerm">
229
+ {{ t("dropdownMenu.noMatch", { searchTerm }) }}
230
+ </slot>
231
+ </div>
232
+
180
233
  <slot />
181
234
 
182
235
  <slot name="content-bottom" :sub="sub ?? false" />