@nuxt/ui 4.0.1 → 4.2.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 (499) hide show
  1. package/cli/templates.mjs +16 -4
  2. package/dist/module.d.mts +25 -0
  3. package/dist/module.json +2 -2
  4. package/dist/module.mjs +7 -4
  5. package/dist/runtime/components/Accordion.d.vue.ts +7 -1
  6. package/dist/runtime/components/Accordion.vue +13 -12
  7. package/dist/runtime/components/Accordion.vue.d.ts +7 -1
  8. package/dist/runtime/components/Alert.d.vue.ts +4 -4
  9. package/dist/runtime/components/Alert.vue +10 -9
  10. package/dist/runtime/components/Alert.vue.d.ts +4 -4
  11. package/dist/runtime/components/App.d.vue.ts +1 -1
  12. package/dist/runtime/components/App.vue +2 -1
  13. package/dist/runtime/components/App.vue.d.ts +1 -1
  14. package/dist/runtime/components/AuthForm.d.vue.ts +12 -9
  15. package/dist/runtime/components/AuthForm.vue +29 -21
  16. package/dist/runtime/components/AuthForm.vue.d.ts +12 -9
  17. package/dist/runtime/components/Avatar.d.vue.ts +7 -5
  18. package/dist/runtime/components/Avatar.vue +14 -5
  19. package/dist/runtime/components/Avatar.vue.d.ts +7 -5
  20. package/dist/runtime/components/AvatarGroup.vue +3 -3
  21. package/dist/runtime/components/Badge.d.vue.ts +9 -3
  22. package/dist/runtime/components/Badge.vue +8 -8
  23. package/dist/runtime/components/Badge.vue.d.ts +9 -3
  24. package/dist/runtime/components/Banner.d.vue.ts +4 -2
  25. package/dist/runtime/components/Banner.vue +10 -9
  26. package/dist/runtime/components/Banner.vue.d.ts +4 -2
  27. package/dist/runtime/components/BlogPost.d.vue.ts +9 -3
  28. package/dist/runtime/components/BlogPost.vue +21 -12
  29. package/dist/runtime/components/BlogPost.vue.d.ts +9 -3
  30. package/dist/runtime/components/BlogPosts.d.vue.ts +22 -13
  31. package/dist/runtime/components/BlogPosts.vue +8 -2
  32. package/dist/runtime/components/BlogPosts.vue.d.ts +22 -13
  33. package/dist/runtime/components/Breadcrumb.d.vue.ts +19 -4
  34. package/dist/runtime/components/Breadcrumb.vue +14 -14
  35. package/dist/runtime/components/Breadcrumb.vue.d.ts +19 -4
  36. package/dist/runtime/components/Button.d.vue.ts +9 -3
  37. package/dist/runtime/components/Button.vue +9 -7
  38. package/dist/runtime/components/Button.vue.d.ts +9 -3
  39. package/dist/runtime/components/Calendar.d.vue.ts +4 -0
  40. package/dist/runtime/components/Calendar.vue +15 -9
  41. package/dist/runtime/components/Calendar.vue.d.ts +4 -0
  42. package/dist/runtime/components/Card.vue +4 -4
  43. package/dist/runtime/components/Carousel.vue +10 -5
  44. package/dist/runtime/components/ChangelogVersion.d.vue.ts +12 -4
  45. package/dist/runtime/components/ChangelogVersion.vue +25 -17
  46. package/dist/runtime/components/ChangelogVersion.vue.d.ts +12 -4
  47. package/dist/runtime/components/ChangelogVersions.d.vue.ts +8 -36
  48. package/dist/runtime/components/ChangelogVersions.vue +6 -6
  49. package/dist/runtime/components/ChangelogVersions.vue.d.ts +8 -36
  50. package/dist/runtime/components/ChatMessage.d.vue.ts +1 -0
  51. package/dist/runtime/components/ChatMessage.vue +8 -8
  52. package/dist/runtime/components/ChatMessage.vue.d.ts +1 -0
  53. package/dist/runtime/components/ChatMessages.d.vue.ts +14 -15
  54. package/dist/runtime/components/ChatMessages.vue +28 -10
  55. package/dist/runtime/components/ChatMessages.vue.d.ts +14 -15
  56. package/dist/runtime/components/ChatPalette.vue +3 -3
  57. package/dist/runtime/components/ChatPrompt.d.vue.ts +3 -6
  58. package/dist/runtime/components/ChatPrompt.vue +23 -14
  59. package/dist/runtime/components/ChatPrompt.vue.d.ts +3 -6
  60. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +4 -4
  61. package/dist/runtime/components/ChatPromptSubmit.vue +51 -4
  62. package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +4 -4
  63. package/dist/runtime/components/Checkbox.d.vue.ts +2 -1
  64. package/dist/runtime/components/Checkbox.vue +9 -8
  65. package/dist/runtime/components/Checkbox.vue.d.ts +2 -1
  66. package/dist/runtime/components/CheckboxGroup.vue +7 -4
  67. package/dist/runtime/components/Chip.vue +2 -2
  68. package/dist/runtime/components/Collapsible.vue +2 -2
  69. package/dist/runtime/components/ColorPicker.vue +7 -3
  70. package/dist/runtime/components/CommandPalette.d.vue.ts +43 -12
  71. package/dist/runtime/components/CommandPalette.vue +175 -84
  72. package/dist/runtime/components/CommandPalette.vue.d.ts +43 -12
  73. package/dist/runtime/components/ContextMenu.d.vue.ts +28 -6
  74. package/dist/runtime/components/ContextMenu.vue +2 -0
  75. package/dist/runtime/components/ContextMenu.vue.d.ts +28 -6
  76. package/dist/runtime/components/ContextMenuContent.d.vue.ts +2 -3
  77. package/dist/runtime/components/ContextMenuContent.vue +35 -23
  78. package/dist/runtime/components/ContextMenuContent.vue.d.ts +2 -3
  79. package/dist/runtime/components/DashboardNavbar.d.vue.ts +9 -3
  80. package/dist/runtime/components/DashboardNavbar.vue +10 -9
  81. package/dist/runtime/components/DashboardNavbar.vue.d.ts +9 -3
  82. package/dist/runtime/components/DashboardPanel.vue +3 -1
  83. package/dist/runtime/components/DashboardSearch.d.vue.ts +3 -1
  84. package/dist/runtime/components/DashboardSearch.vue +4 -3
  85. package/dist/runtime/components/DashboardSearch.vue.d.ts +3 -1
  86. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +2 -3
  87. package/dist/runtime/components/DashboardSearchButton.vue +48 -10
  88. package/dist/runtime/components/DashboardSearchButton.vue.d.ts +2 -3
  89. package/dist/runtime/components/DashboardSidebar.d.vue.ts +5 -1
  90. package/dist/runtime/components/DashboardSidebar.vue +13 -10
  91. package/dist/runtime/components/DashboardSidebar.vue.d.ts +5 -1
  92. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +7 -4
  93. package/dist/runtime/components/DashboardSidebarCollapse.vue +51 -7
  94. package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +7 -4
  95. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +7 -4
  96. package/dist/runtime/components/DashboardSidebarToggle.vue +52 -7
  97. package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +7 -4
  98. package/dist/runtime/components/DashboardToolbar.vue +3 -3
  99. package/dist/runtime/components/Drawer.d.vue.ts +1 -1
  100. package/dist/runtime/components/Drawer.vue +11 -14
  101. package/dist/runtime/components/Drawer.vue.d.ts +1 -1
  102. package/dist/runtime/components/DropdownMenu.d.vue.ts +28 -6
  103. package/dist/runtime/components/DropdownMenu.vue +3 -1
  104. package/dist/runtime/components/DropdownMenu.vue.d.ts +28 -6
  105. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +8 -5
  106. package/dist/runtime/components/DropdownMenuContent.vue +35 -23
  107. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +8 -5
  108. package/dist/runtime/components/Empty.d.vue.ts +53 -0
  109. package/dist/runtime/components/Empty.vue +68 -0
  110. package/dist/runtime/components/Empty.vue.d.ts +53 -0
  111. package/dist/runtime/components/Error.d.vue.ts +1 -2
  112. package/dist/runtime/components/Error.vue +6 -6
  113. package/dist/runtime/components/Error.vue.d.ts +1 -2
  114. package/dist/runtime/components/FileUpload.d.vue.ts +14 -3
  115. package/dist/runtime/components/FileUpload.vue +41 -30
  116. package/dist/runtime/components/FileUpload.vue.d.ts +14 -3
  117. package/dist/runtime/components/Footer.vue +7 -7
  118. package/dist/runtime/components/FooterColumns.d.vue.ts +9 -2
  119. package/dist/runtime/components/FooterColumns.vue +13 -13
  120. package/dist/runtime/components/FooterColumns.vue.d.ts +9 -2
  121. package/dist/runtime/components/Form.d.vue.ts +3 -2
  122. package/dist/runtime/components/Form.vue +3 -4
  123. package/dist/runtime/components/Form.vue.d.ts +3 -2
  124. package/dist/runtime/components/FormField.vue +8 -8
  125. package/dist/runtime/components/Header.d.vue.ts +4 -1
  126. package/dist/runtime/components/Header.vue +12 -11
  127. package/dist/runtime/components/Header.vue.d.ts +4 -1
  128. package/dist/runtime/components/Input.d.vue.ts +15 -9
  129. package/dist/runtime/components/Input.vue +12 -11
  130. package/dist/runtime/components/Input.vue.d.ts +15 -9
  131. package/dist/runtime/components/InputDate.d.vue.ts +89 -0
  132. package/dist/runtime/components/InputDate.vue +161 -0
  133. package/dist/runtime/components/InputDate.vue.d.ts +89 -0
  134. package/dist/runtime/components/InputMenu.d.vue.ts +46 -137
  135. package/dist/runtime/components/InputMenu.vue +143 -83
  136. package/dist/runtime/components/InputMenu.vue.d.ts +46 -137
  137. package/dist/runtime/components/InputNumber.d.vue.ts +26 -127
  138. package/dist/runtime/components/InputNumber.vue +13 -12
  139. package/dist/runtime/components/InputNumber.vue.d.ts +26 -127
  140. package/dist/runtime/components/InputTags.d.vue.ts +15 -111
  141. package/dist/runtime/components/InputTags.vue +24 -20
  142. package/dist/runtime/components/InputTags.vue.d.ts +15 -111
  143. package/dist/runtime/components/InputTime.d.vue.ts +72 -0
  144. package/dist/runtime/components/InputTime.vue +137 -0
  145. package/dist/runtime/components/InputTime.vue.d.ts +72 -0
  146. package/dist/runtime/components/Link.d.vue.ts +4 -49
  147. package/dist/runtime/components/Link.vue +1 -0
  148. package/dist/runtime/components/Link.vue.d.ts +4 -49
  149. package/dist/runtime/components/Main.d.vue.ts +2 -4
  150. package/dist/runtime/components/Main.vue +1 -1
  151. package/dist/runtime/components/Main.vue.d.ts +2 -4
  152. package/dist/runtime/components/Marquee.d.vue.ts +1 -1
  153. package/dist/runtime/components/Marquee.vue +2 -6
  154. package/dist/runtime/components/Marquee.vue.d.ts +1 -1
  155. package/dist/runtime/components/Modal.d.vue.ts +8 -6
  156. package/dist/runtime/components/Modal.vue +55 -22
  157. package/dist/runtime/components/Modal.vue.d.ts +8 -6
  158. package/dist/runtime/components/NavigationMenu.d.vue.ts +60 -13
  159. package/dist/runtime/components/NavigationMenu.vue +86 -49
  160. package/dist/runtime/components/NavigationMenu.vue.d.ts +60 -13
  161. package/dist/runtime/components/Page.vue +4 -4
  162. package/dist/runtime/components/PageAnchors.d.vue.ts +9 -2
  163. package/dist/runtime/components/PageAnchors.vue +10 -10
  164. package/dist/runtime/components/PageAnchors.vue.d.ts +9 -2
  165. package/dist/runtime/components/PageAside.vue +6 -6
  166. package/dist/runtime/components/PageCTA.vue +9 -9
  167. package/dist/runtime/components/PageCard.d.vue.ts +3 -1
  168. package/dist/runtime/components/PageCard.vue +12 -11
  169. package/dist/runtime/components/PageCard.vue.d.ts +3 -1
  170. package/dist/runtime/components/PageFeature.d.vue.ts +3 -1
  171. package/dist/runtime/components/PageFeature.vue +7 -7
  172. package/dist/runtime/components/PageFeature.vue.d.ts +3 -1
  173. package/dist/runtime/components/PageHeader.vue +7 -7
  174. package/dist/runtime/components/PageHero.vue +10 -10
  175. package/dist/runtime/components/PageLinks.d.vue.ts +9 -2
  176. package/dist/runtime/components/PageLinks.vue +10 -10
  177. package/dist/runtime/components/PageLinks.vue.d.ts +9 -2
  178. package/dist/runtime/components/PageLogos.vue +6 -3
  179. package/dist/runtime/components/PageSection.d.vue.ts +3 -1
  180. package/dist/runtime/components/PageSection.vue +14 -14
  181. package/dist/runtime/components/PageSection.vue.d.ts +3 -1
  182. package/dist/runtime/components/Pagination.d.vue.ts +5 -3
  183. package/dist/runtime/components/Pagination.vue +9 -9
  184. package/dist/runtime/components/Pagination.vue.d.ts +5 -3
  185. package/dist/runtime/components/PinInput.d.vue.ts +2 -2
  186. package/dist/runtime/components/PinInput.vue +2 -0
  187. package/dist/runtime/components/PinInput.vue.d.ts +2 -2
  188. package/dist/runtime/components/Popover.d.vue.ts +24 -23
  189. package/dist/runtime/components/Popover.vue +6 -6
  190. package/dist/runtime/components/Popover.vue.d.ts +24 -23
  191. package/dist/runtime/components/PricingPlan.d.vue.ts +9 -3
  192. package/dist/runtime/components/PricingPlan.vue +31 -24
  193. package/dist/runtime/components/PricingPlan.vue.d.ts +9 -3
  194. package/dist/runtime/components/PricingPlans.d.vue.ts +20 -13
  195. package/dist/runtime/components/PricingPlans.vue +7 -1
  196. package/dist/runtime/components/PricingPlans.vue.d.ts +20 -13
  197. package/dist/runtime/components/PricingTable.vue +35 -31
  198. package/dist/runtime/components/Progress.d.vue.ts +1 -1
  199. package/dist/runtime/components/Progress.vue +6 -6
  200. package/dist/runtime/components/Progress.vue.d.ts +1 -1
  201. package/dist/runtime/components/RadioGroup.d.vue.ts +5 -5
  202. package/dist/runtime/components/RadioGroup.vue +13 -11
  203. package/dist/runtime/components/RadioGroup.vue.d.ts +5 -5
  204. package/dist/runtime/components/Select.d.vue.ts +25 -115
  205. package/dist/runtime/components/Select.vue +41 -29
  206. package/dist/runtime/components/Select.vue.d.ts +25 -115
  207. package/dist/runtime/components/SelectMenu.d.vue.ts +43 -114
  208. package/dist/runtime/components/SelectMenu.vue +145 -78
  209. package/dist/runtime/components/SelectMenu.vue.d.ts +43 -114
  210. package/dist/runtime/components/Separator.d.vue.ts +3 -1
  211. package/dist/runtime/components/Separator.vue +8 -8
  212. package/dist/runtime/components/Separator.vue.d.ts +3 -1
  213. package/dist/runtime/components/Slideover.d.vue.ts +3 -6
  214. package/dist/runtime/components/Slideover.vue +12 -13
  215. package/dist/runtime/components/Slideover.vue.d.ts +3 -6
  216. package/dist/runtime/components/Slider.vue +5 -4
  217. package/dist/runtime/components/Stepper.d.vue.ts +4 -1
  218. package/dist/runtime/components/Stepper.vue +13 -11
  219. package/dist/runtime/components/Stepper.vue.d.ts +4 -1
  220. package/dist/runtime/components/Switch.d.vue.ts +2 -1
  221. package/dist/runtime/components/Switch.vue +10 -9
  222. package/dist/runtime/components/Switch.vue.d.ts +2 -1
  223. package/dist/runtime/components/Table.d.vue.ts +25 -4
  224. package/dist/runtime/components/Table.vue +156 -71
  225. package/dist/runtime/components/Table.vue.d.ts +25 -4
  226. package/dist/runtime/components/Tabs.d.vue.ts +8 -3
  227. package/dist/runtime/components/Tabs.vue +13 -10
  228. package/dist/runtime/components/Tabs.vue.d.ts +8 -3
  229. package/dist/runtime/components/Textarea.d.vue.ts +15 -8
  230. package/dist/runtime/components/Textarea.vue +12 -11
  231. package/dist/runtime/components/Textarea.vue.d.ts +15 -8
  232. package/dist/runtime/components/Timeline.vue +16 -7
  233. package/dist/runtime/components/Toast.d.vue.ts +4 -4
  234. package/dist/runtime/components/Toast.vue +16 -13
  235. package/dist/runtime/components/Toast.vue.d.ts +4 -4
  236. package/dist/runtime/components/Toaster.d.vue.ts +6 -0
  237. package/dist/runtime/components/Toaster.vue +8 -3
  238. package/dist/runtime/components/Toaster.vue.d.ts +6 -0
  239. package/dist/runtime/components/Tooltip.d.vue.ts +3 -1
  240. package/dist/runtime/components/Tooltip.vue +5 -5
  241. package/dist/runtime/components/Tooltip.vue.d.ts +3 -1
  242. package/dist/runtime/components/Tree.d.vue.ts +43 -5
  243. package/dist/runtime/components/Tree.vue +176 -81
  244. package/dist/runtime/components/Tree.vue.d.ts +43 -5
  245. package/dist/runtime/components/User.d.vue.ts +3 -1
  246. package/dist/runtime/components/User.vue +14 -7
  247. package/dist/runtime/components/User.vue.d.ts +3 -1
  248. package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +3 -3
  249. package/dist/runtime/components/color-mode/ColorModeAvatar.vue +16 -4
  250. package/dist/runtime/components/color-mode/ColorModeAvatar.vue.d.ts +3 -3
  251. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +6 -13
  252. package/dist/runtime/components/color-mode/ColorModeButton.vue +59 -18
  253. package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +6 -13
  254. package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +4 -3
  255. package/dist/runtime/components/color-mode/ColorModeImage.vue +4 -0
  256. package/dist/runtime/components/color-mode/ColorModeImage.vue.d.ts +4 -3
  257. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +5 -3
  258. package/dist/runtime/components/color-mode/ColorModeSelect.vue +45 -5
  259. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +5 -3
  260. package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +2 -2
  261. package/dist/runtime/components/color-mode/ColorModeSwitch.vue +29 -5
  262. package/dist/runtime/components/color-mode/ColorModeSwitch.vue.d.ts +2 -2
  263. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +1 -0
  264. package/dist/runtime/components/content/ContentNavigation.vue +18 -17
  265. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +1 -0
  266. package/dist/runtime/components/content/ContentSearch.d.vue.ts +3 -1
  267. package/dist/runtime/components/content/ContentSearch.vue +64 -67
  268. package/dist/runtime/components/content/ContentSearch.vue.d.ts +3 -1
  269. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +2 -3
  270. package/dist/runtime/components/content/ContentSearchButton.vue +48 -10
  271. package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +2 -3
  272. package/dist/runtime/components/content/ContentSurround.d.vue.ts +1 -0
  273. package/dist/runtime/components/content/ContentSurround.vue +10 -10
  274. package/dist/runtime/components/content/ContentSurround.vue.d.ts +1 -0
  275. package/dist/runtime/components/content/ContentToc.d.vue.ts +2 -0
  276. package/dist/runtime/components/content/ContentToc.vue +17 -17
  277. package/dist/runtime/components/content/ContentToc.vue.d.ts +2 -0
  278. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +10 -6
  279. package/dist/runtime/components/locale/LocaleSelect.vue +54 -6
  280. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +10 -6
  281. package/dist/runtime/components/prose/Accordion.d.vue.ts +6 -0
  282. package/dist/runtime/components/prose/Accordion.vue +3 -2
  283. package/dist/runtime/components/prose/Accordion.vue.d.ts +6 -0
  284. package/dist/runtime/components/prose/CodeTree.vue +40 -36
  285. package/dist/runtime/components/prose/Collapsible.d.vue.ts +2 -2
  286. package/dist/runtime/components/prose/Collapsible.vue +2 -2
  287. package/dist/runtime/components/prose/Collapsible.vue.d.ts +2 -2
  288. package/dist/runtime/components/prose/Field.d.vue.ts +1 -1
  289. package/dist/runtime/components/prose/Field.vue.d.ts +1 -1
  290. package/dist/runtime/components/prose/Img.vue +14 -3
  291. package/dist/runtime/components/prose/Tabs.d.vue.ts +6 -0
  292. package/dist/runtime/components/prose/Tabs.vue +3 -2
  293. package/dist/runtime/components/prose/Tabs.vue.d.ts +6 -0
  294. package/dist/runtime/composables/index.d.ts +8 -0
  295. package/dist/runtime/composables/index.js +8 -0
  296. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  297. package/dist/runtime/composables/useContentSearch.d.ts +5 -0
  298. package/dist/runtime/composables/useContentSearch.js +31 -1
  299. package/dist/runtime/composables/useFieldGroup.d.ts +1 -1
  300. package/dist/runtime/composables/useFileUpload.d.ts +2 -1
  301. package/dist/runtime/composables/useFileUpload.js +13 -4
  302. package/dist/runtime/composables/useFormField.d.ts +1 -1
  303. package/dist/runtime/composables/useKbd.js +1 -1
  304. package/dist/runtime/composables/useToast.d.ts +3 -1
  305. package/dist/runtime/composables/useToast.js +4 -3
  306. package/dist/runtime/index.css +1 -1
  307. package/dist/runtime/inertia/components/Link.d.vue.ts +17 -10
  308. package/dist/runtime/inertia/components/Link.vue +19 -13
  309. package/dist/runtime/inertia/components/Link.vue.d.ts +17 -10
  310. package/dist/runtime/inertia/stubs.js +1 -1
  311. package/dist/runtime/keyframes.css +1 -1
  312. package/dist/runtime/locale/gl.d.ts +3 -0
  313. package/dist/runtime/locale/gl.js +129 -0
  314. package/dist/runtime/locale/hr.d.ts +3 -0
  315. package/dist/runtime/locale/hr.js +129 -0
  316. package/dist/runtime/locale/index.d.ts +3 -0
  317. package/dist/runtime/locale/index.js +3 -0
  318. package/dist/runtime/locale/sq.d.ts +3 -0
  319. package/dist/runtime/locale/sq.js +129 -0
  320. package/dist/runtime/plugins/colors.js +8 -6
  321. package/dist/runtime/types/html.d.ts +8 -0
  322. package/dist/runtime/types/html.js +0 -0
  323. package/dist/runtime/types/index.d.ts +7 -1
  324. package/dist/runtime/types/index.js +7 -1
  325. package/dist/runtime/types/input.d.ts +5 -5
  326. package/dist/runtime/types/tv.d.ts +6 -0
  327. package/dist/runtime/types/utils.d.ts +2 -0
  328. package/dist/runtime/utils/content.d.ts +2 -2
  329. package/dist/runtime/utils/link.d.ts +1 -0
  330. package/dist/runtime/utils/link.js +40 -24
  331. package/dist/runtime/utils/virtualizer.d.ts +6 -0
  332. package/dist/runtime/utils/virtualizer.js +30 -0
  333. package/dist/runtime/vue/components/Link.d.vue.ts +8 -37
  334. package/dist/runtime/vue/components/Link.vue +5 -10
  335. package/dist/runtime/vue/components/Link.vue.d.ts +8 -37
  336. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +5 -3
  337. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +44 -3
  338. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +5 -3
  339. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
  340. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue +24 -3
  341. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
  342. package/dist/runtime/vue/stubs.d.ts +1 -1
  343. package/dist/runtime/vue/stubs.js +1 -1
  344. package/dist/shared/{ui.D-FDXAUi.mjs → ui.B77q-Dvh.mjs} +679 -102
  345. package/dist/unplugin.d.mts +1 -0
  346. package/dist/unplugin.mjs +31 -2
  347. package/dist/vite.mjs +5 -2
  348. package/package.json +46 -40
  349. package/.nuxt/ui/accordion.ts +0 -20
  350. package/.nuxt/ui/alert.ts +0 -264
  351. package/.nuxt/ui/auth-form.ts +0 -20
  352. package/.nuxt/ui/avatar-group.ts +0 -52
  353. package/.nuxt/ui/avatar.ts +0 -54
  354. package/.nuxt/ui/badge.ts +0 -263
  355. package/.nuxt/ui/banner.ts +0 -108
  356. package/.nuxt/ui/blog-post.ts +0 -142
  357. package/.nuxt/ui/blog-posts.ts +0 -9
  358. package/.nuxt/ui/breadcrumb.ts +0 -45
  359. package/.nuxt/ui/button.ts +0 -378
  360. package/.nuxt/ui/calendar.ts +0 -103
  361. package/.nuxt/ui/card.ts +0 -34
  362. package/.nuxt/ui/carousel.ts +0 -38
  363. package/.nuxt/ui/changelog-version.ts +0 -41
  364. package/.nuxt/ui/changelog-versions.ts +0 -8
  365. package/.nuxt/ui/chat-message.ts +0 -129
  366. package/.nuxt/ui/chat-messages.ts +0 -14
  367. package/.nuxt/ui/chat-palette.ts +0 -8
  368. package/.nuxt/ui/chat-prompt-submit.ts +0 -5
  369. package/.nuxt/ui/chat-prompt.ts +0 -35
  370. package/.nuxt/ui/checkbox-group.ts +0 -204
  371. package/.nuxt/ui/checkbox.ts +0 -236
  372. package/.nuxt/ui/chip.ts +0 -96
  373. package/.nuxt/ui/collapsible.ts +0 -6
  374. package/.nuxt/ui/color-picker.ts +0 -47
  375. package/.nuxt/ui/command-palette.ts +0 -52
  376. package/.nuxt/ui/container.ts +0 -3
  377. package/.nuxt/ui/content/content-navigation.ts +0 -368
  378. package/.nuxt/ui/content/content-search-button.ts +0 -6
  379. package/.nuxt/ui/content/content-search.ts +0 -13
  380. package/.nuxt/ui/content/content-surround.ts +0 -34
  381. package/.nuxt/ui/content/content-toc.ts +0 -155
  382. package/.nuxt/ui/context-menu.ts +0 -217
  383. package/.nuxt/ui/dashboard-group.ts +0 -3
  384. package/.nuxt/ui/dashboard-navbar.ts +0 -21
  385. package/.nuxt/ui/dashboard-panel.ts +0 -17
  386. package/.nuxt/ui/dashboard-resize-handle.ts +0 -3
  387. package/.nuxt/ui/dashboard-search-button.ts +0 -6
  388. package/.nuxt/ui/dashboard-search.ts +0 -13
  389. package/.nuxt/ui/dashboard-sidebar-collapse.ts +0 -9
  390. package/.nuxt/ui/dashboard-sidebar-toggle.ts +0 -9
  391. package/.nuxt/ui/dashboard-sidebar.ts +0 -37
  392. package/.nuxt/ui/dashboard-toolbar.ts +0 -7
  393. package/.nuxt/ui/drawer.ts +0 -149
  394. package/.nuxt/ui/dropdown-menu.ts +0 -218
  395. package/.nuxt/ui/error.ts +0 -9
  396. package/.nuxt/ui/field-group.ts +0 -16
  397. package/.nuxt/ui/file-upload.ts +0 -290
  398. package/.nuxt/ui/footer-columns.ts +0 -28
  399. package/.nuxt/ui/footer.ts +0 -11
  400. package/.nuxt/ui/form-field.ts +0 -48
  401. package/.nuxt/ui/form.ts +0 -3
  402. package/.nuxt/ui/header.ts +0 -25
  403. package/.nuxt/ui/index.ts +0 -105
  404. package/.nuxt/ui/input-menu.ts +0 -450
  405. package/.nuxt/ui/input-number.ts +0 -245
  406. package/.nuxt/ui/input-tags.ts +0 -310
  407. package/.nuxt/ui/input.ts +0 -289
  408. package/.nuxt/ui/kbd.ts +0 -195
  409. package/.nuxt/ui/link.ts +0 -22
  410. package/.nuxt/ui/main.ts +0 -3
  411. package/.nuxt/ui/marquee.ts +0 -66
  412. package/.nuxt/ui/modal.ts +0 -29
  413. package/.nuxt/ui/navigation-menu.ts +0 -510
  414. package/.nuxt/ui/page-anchors.ts +0 -30
  415. package/.nuxt/ui/page-aside.ts +0 -10
  416. package/.nuxt/ui/page-body.ts +0 -3
  417. package/.nuxt/ui/page-card.ts +0 -279
  418. package/.nuxt/ui/page-columns.ts +0 -3
  419. package/.nuxt/ui/page-cta.ts +0 -70
  420. package/.nuxt/ui/page-feature.ts +0 -26
  421. package/.nuxt/ui/page-grid.ts +0 -3
  422. package/.nuxt/ui/page-header.ts +0 -18
  423. package/.nuxt/ui/page-hero.ts +0 -44
  424. package/.nuxt/ui/page-links.ts +0 -25
  425. package/.nuxt/ui/page-list.ts +0 -8
  426. package/.nuxt/ui/page-logos.ts +0 -15
  427. package/.nuxt/ui/page-section.ts +0 -84
  428. package/.nuxt/ui/page.ts +0 -32
  429. package/.nuxt/ui/pagination.ts +0 -13
  430. package/.nuxt/ui/pin-input.ts +0 -171
  431. package/.nuxt/ui/popover.ts +0 -6
  432. package/.nuxt/ui/pricing-plan.ts +0 -101
  433. package/.nuxt/ui/pricing-plans.ts +0 -22
  434. package/.nuxt/ui/pricing-table.ts +0 -51
  435. package/.nuxt/ui/progress.ts +0 -297
  436. package/.nuxt/ui/prose/a.ts +0 -6
  437. package/.nuxt/ui/prose/accordion-item.ts +0 -3
  438. package/.nuxt/ui/prose/accordion.ts +0 -6
  439. package/.nuxt/ui/prose/badge.ts +0 -3
  440. package/.nuxt/ui/prose/blockquote.ts +0 -3
  441. package/.nuxt/ui/prose/callout.ts +0 -129
  442. package/.nuxt/ui/prose/card-group.ts +0 -3
  443. package/.nuxt/ui/prose/card.ts +0 -119
  444. package/.nuxt/ui/prose/code-collapse.ts +0 -19
  445. package/.nuxt/ui/prose/code-group.ts +0 -13
  446. package/.nuxt/ui/prose/code-icon.ts +0 -66
  447. package/.nuxt/ui/prose/code-preview.ts +0 -14
  448. package/.nuxt/ui/prose/code-tree.ts +0 -28
  449. package/.nuxt/ui/prose/code.ts +0 -27
  450. package/.nuxt/ui/prose/collapsible.ts +0 -12
  451. package/.nuxt/ui/prose/em.ts +0 -3
  452. package/.nuxt/ui/prose/field-group.ts +0 -3
  453. package/.nuxt/ui/prose/field.ts +0 -11
  454. package/.nuxt/ui/prose/h1.ts +0 -6
  455. package/.nuxt/ui/prose/h2.ts +0 -14
  456. package/.nuxt/ui/prose/h3.ts +0 -14
  457. package/.nuxt/ui/prose/h4.ts +0 -6
  458. package/.nuxt/ui/prose/hr.ts +0 -3
  459. package/.nuxt/ui/prose/icon.ts +0 -3
  460. package/.nuxt/ui/prose/img.ts +0 -22
  461. package/.nuxt/ui/prose/index.ts +0 -41
  462. package/.nuxt/ui/prose/kbd.ts +0 -3
  463. package/.nuxt/ui/prose/li.ts +0 -3
  464. package/.nuxt/ui/prose/ol.ts +0 -3
  465. package/.nuxt/ui/prose/p.ts +0 -3
  466. package/.nuxt/ui/prose/pre.ts +0 -17
  467. package/.nuxt/ui/prose/steps.ts +0 -19
  468. package/.nuxt/ui/prose/strong.ts +0 -3
  469. package/.nuxt/ui/prose/table.ts +0 -6
  470. package/.nuxt/ui/prose/tabs-item.ts +0 -3
  471. package/.nuxt/ui/prose/tabs.ts +0 -5
  472. package/.nuxt/ui/prose/tbody.ts +0 -3
  473. package/.nuxt/ui/prose/td.ts +0 -3
  474. package/.nuxt/ui/prose/th.ts +0 -3
  475. package/.nuxt/ui/prose/thead.ts +0 -3
  476. package/.nuxt/ui/prose/tr.ts +0 -3
  477. package/.nuxt/ui/prose/ul.ts +0 -3
  478. package/.nuxt/ui/radio-group.ts +0 -350
  479. package/.nuxt/ui/select-menu.ts +0 -351
  480. package/.nuxt/ui/select.ts +0 -346
  481. package/.nuxt/ui/separator.ts +0 -172
  482. package/.nuxt/ui/skeleton.ts +0 -3
  483. package/.nuxt/ui/slideover.ts +0 -71
  484. package/.nuxt/ui/slider.ts +0 -171
  485. package/.nuxt/ui/stepper.ts +0 -202
  486. package/.nuxt/ui/switch.ts +0 -131
  487. package/.nuxt/ui/table.ts +0 -156
  488. package/.nuxt/ui/tabs.ts +0 -258
  489. package/.nuxt/ui/textarea.ts +0 -294
  490. package/.nuxt/ui/timeline.ts +0 -321
  491. package/.nuxt/ui/toast.ts +0 -74
  492. package/.nuxt/ui/toaster.ts +0 -91
  493. package/.nuxt/ui/tooltip.ts +0 -9
  494. package/.nuxt/ui/tree.ts +0 -154
  495. package/.nuxt/ui/user.ts +0 -101
  496. package/.nuxt/ui.css +0 -146
  497. package/dist/runtime/vue/components/color-mode/ColorModeButton.d.vue.ts +0 -17
  498. package/dist/runtime/vue/components/color-mode/ColorModeButton.vue +0 -35
  499. package/dist/runtime/vue/components/color-mode/ColorModeButton.vue.d.ts +0 -17
@@ -3,8 +3,8 @@ import theme from "#build/ui/file-upload";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { computed, watch } from "vue";
7
- import { Primitive } from "reka-ui";
6
+ import { computed, toRef, watch } from "vue";
7
+ import { Primitive, VisuallyHidden } from "reka-ui";
8
8
  import { createReusableTemplate } from "@vueuse/core";
9
9
  import { useAppConfig, useLocale } from "#imports";
10
10
  import { useFormField } from "../composables/useFormField";
@@ -35,8 +35,9 @@ const props = defineProps({
35
35
  required: { type: Boolean, required: false },
36
36
  disabled: { type: Boolean, required: false },
37
37
  fileIcon: { type: [String, Object], required: false },
38
- fileDelete: { type: [Boolean, Object], required: false },
38
+ fileDelete: { type: [Boolean, Object], required: false, default: true },
39
39
  fileDeleteIcon: { type: [String, Object], required: false },
40
+ preview: { type: Boolean, required: false, default: true },
40
41
  class: { type: null, required: false },
41
42
  ui: { type: null, required: false }
42
43
  });
@@ -122,46 +123,54 @@ function removeFile(index) {
122
123
  dropzoneRef.value?.focus();
123
124
  }
124
125
  watch(modelValue, (newValue) => {
125
- const hasModelReset = !Array.isArray(newValue) || !newValue.length;
126
- if (hasModelReset && inputRef.value) {
127
- inputRef.value.value = "";
126
+ const hasModelReset = props.multiple ? !newValue?.length : !newValue;
127
+ if (hasModelReset && inputRef.value?.$el) {
128
+ inputRef.value.$el.value = "";
128
129
  }
129
130
  });
130
131
  defineExpose({
131
- inputRef,
132
+ inputRef: toRef(() => inputRef.value?.$el),
132
133
  dropzoneRef
133
134
  });
134
135
  </script>
135
136
 
136
137
  <template>
137
138
  <DefineFilesTemplate>
138
- <template v-if="modelValue && (Array.isArray(modelValue) ? modelValue.length : true)">
139
+ <template v-if="props.preview && modelValue && (Array.isArray(modelValue) ? modelValue.length : true)">
139
140
  <slot name="files-top" :files="modelValue" :open="open" :remove-file="removeFile" />
140
141
 
141
- <div :class="ui.files({ class: props.ui?.files })">
142
+ <div data-slot="files" :class="ui.files({ class: props.ui?.files })">
142
143
  <slot name="files" :files="modelValue">
143
- <div v-for="(file, index) in Array.isArray(modelValue) ? modelValue : [modelValue]" :key="file.name" :class="ui.file({ class: props.ui?.file })">
144
+ <div v-for="(file, index) in Array.isArray(modelValue) ? modelValue : [modelValue]" :key="file.name" data-slot="file" :class="ui.file({ class: props.ui?.file })">
144
145
  <slot name="file" :file="file" :index="index">
145
- <slot name="file-leading" :file="file" :index="index">
146
- <UAvatar :src="createObjectUrl(file)" :icon="fileIcon || appConfig.ui.icons.file" :size="props.size" :class="ui.fileLeadingAvatar({ class: props.ui?.fileLeadingAvatar })" />
146
+ <slot name="file-leading" :file="file" :index="index" :ui="ui">
147
+ <UAvatar
148
+ :as="{ img: 'img' }"
149
+ :src="createObjectUrl(file)"
150
+ :icon="fileIcon || appConfig.ui.icons.file"
151
+ :size="props.size"
152
+ data-slot="fileLeadingAvatar"
153
+ :class="ui.fileLeadingAvatar({ class: props.ui?.fileLeadingAvatar })"
154
+ />
147
155
  </slot>
148
156
 
149
- <div :class="ui.fileWrapper({ class: props.ui?.fileWrapper })">
150
- <span :class="ui.fileName({ class: props.ui?.fileName })">
157
+ <div data-slot="fileWrapper" :class="ui.fileWrapper({ class: props.ui?.fileWrapper })">
158
+ <span data-slot="fileName" :class="ui.fileName({ class: props.ui?.fileName })">
151
159
  <slot name="file-name" :file="file" :index="index">
152
160
  {{ file.name }}
153
161
  </slot>
154
162
  </span>
155
163
 
156
- <span :class="ui.fileSize({ class: props.ui?.fileSize })">
164
+ <span data-slot="fileSize" :class="ui.fileSize({ class: props.ui?.fileSize })">
157
165
  <slot name="file-size" :file="file" :index="index">
158
166
  {{ formatFileSize(file.size) }}
159
167
  </slot>
160
168
  </span>
161
169
  </div>
162
170
 
163
- <slot name="file-trailing" :file="file" :index="index">
171
+ <slot name="file-trailing" :file="file" :index="index" :ui="ui">
164
172
  <UButton
173
+ v-if="fileDelete"
165
174
  color="neutral"
166
175
  v-bind="{
167
176
  ...layout === 'grid' ? {
@@ -175,6 +184,7 @@ defineExpose({
175
184
  }"
176
185
  :aria-label="t('fileUpload.removeFile', { filename: file.name })"
177
186
  :trailing-icon="fileDeleteIcon || appConfig.ui.icons.close"
187
+ data-slot="fileTrailingButton"
178
188
  :class="ui.fileTrailingButton({ class: props.ui?.fileTrailingButton })"
179
189
  @click.stop.prevent="removeFile(index)"
180
190
  />
@@ -188,41 +198,42 @@ defineExpose({
188
198
  </template>
189
199
  </DefineFilesTemplate>
190
200
 
191
- <Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
192
- <slot :open="open" :remove-file="removeFile">
201
+ <Primitive :as="as" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
202
+ <slot :open="open" :remove-file="removeFile" :ui="ui">
193
203
  <component
194
204
  :is="variant === 'button' ? 'button' : 'div'"
195
205
  ref="dropzoneRef"
196
206
  :type="variant === 'button' ? 'button' : void 0"
197
207
  :role="variant === 'button' ? void 0 : 'button'"
198
208
  :data-dragging="isDragging"
209
+ data-slot="base"
199
210
  :class="ui.base({ class: props.ui?.base })"
200
211
  :tabindex="interactive && !disabled ? 0 : -1"
201
212
  @click="interactive && !disabled && open()"
202
- @keydown.prevent
213
+ @keydown.space.prevent
203
214
  @keyup.enter.space="interactive && !disabled && open()"
204
215
  >
205
216
  <ReuseFilesTemplate v-if="position === 'inside'" />
206
217
 
207
- <div v-if="position === 'inside' ? multiple ? !modelValue?.length : !modelValue : true" :class="ui.wrapper({ class: props.ui?.wrapper })">
208
- <slot name="leading">
209
- <UIcon v-if="variant === 'button'" :name="icon || appConfig.ui.icons.upload" :class="ui.icon({ class: props.ui?.icon })" />
210
- <UAvatar v-else :icon="icon || appConfig.ui.icons.upload" :size="props.size" :class="ui.avatar({ class: props.ui?.avatar })" />
218
+ <div v-if="position === 'inside' ? multiple ? !modelValue?.length : !modelValue : true" data-slot="wrapper" :class="ui.wrapper({ class: props.ui?.wrapper })">
219
+ <slot name="leading" :ui="ui">
220
+ <UIcon v-if="variant === 'button'" :name="icon || appConfig.ui.icons.upload" data-slot="icon" :class="ui.icon({ class: props.ui?.icon })" />
221
+ <UAvatar v-else :icon="icon || appConfig.ui.icons.upload" :size="props.size" data-slot="avatar" :class="ui.avatar({ class: props.ui?.avatar })" />
211
222
  </slot>
212
223
 
213
224
  <template v-if="variant !== 'button'">
214
- <div v-if="label || !!slots.label" :class="ui.label({ class: props.ui?.label })">
225
+ <div v-if="label || !!slots.label" data-slot="label" :class="ui.label({ class: props.ui?.label })">
215
226
  <slot name="label">
216
227
  {{ label }}
217
228
  </slot>
218
229
  </div>
219
- <div v-if="description || !!slots.description" :class="ui.description({ class: props.ui?.description })">
230
+ <div v-if="description || !!slots.description" data-slot="description" :class="ui.description({ class: props.ui?.description })">
220
231
  <slot name="description">
221
232
  {{ description }}
222
233
  </slot>
223
234
  </div>
224
235
 
225
- <div v-if="!!slots.actions" :class="ui.actions({ class: props.ui?.actions })">
236
+ <div v-if="!!slots.actions" data-slot="actions" :class="ui.actions({ class: props.ui?.actions })">
226
237
  <slot name="actions" :files="modelValue" :open="open" :remove-file="removeFile" />
227
238
  </div>
228
239
  </template>
@@ -232,18 +243,18 @@ defineExpose({
232
243
  <ReuseFilesTemplate v-if="position === 'outside'" />
233
244
  </slot>
234
245
 
235
- <input
246
+ <VisuallyHidden
236
247
  :id="id"
237
248
  ref="inputRef"
249
+ as="input"
238
250
  type="file"
251
+ feature="fully-hidden"
239
252
  :name="name"
240
253
  :accept="accept"
241
254
  :multiple="multiple"
242
255
  :required="required"
243
256
  :disabled="disabled"
244
257
  v-bind="{ ...$attrs, ...ariaAttrs }"
245
- class="sr-only"
246
- tabindex="-1"
247
- >
258
+ />
248
259
  </Primitive>
249
260
  </template>
@@ -2,9 +2,10 @@ import type { AppConfig } from '@nuxt/schema';
2
2
  import type { UseFileDialogReturn } from '@vueuse/core';
3
3
  import theme from '#build/ui/file-upload';
4
4
  import type { ButtonProps, IconProps } from '../types';
5
+ import type { InputHTMLAttributes } from '../types/html';
5
6
  import type { ComponentConfig } from '../types/tv';
6
7
  type FileUpload = ComponentConfig<typeof theme, AppConfig, 'fileUpload'>;
7
- export interface FileUploadProps<M extends boolean = false> {
8
+ export interface FileUploadProps<M extends boolean = false> extends /** @vue-ignore */ Pick<InputHTMLAttributes, 'form' | 'formaction' | 'formenctype' | 'formmethod' | 'formnovalidate' | 'formtarget'> {
8
9
  /**
9
10
  * The element or component this component should render as.
10
11
  * @defaultValue 'div'
@@ -89,6 +90,11 @@ export interface FileUploadProps<M extends boolean = false> {
89
90
  * @IconifyIcon
90
91
  */
91
92
  fileDeleteIcon?: IconProps['name'];
93
+ /**
94
+ * Show the file preview/list after upload.
95
+ * @defaultValue true
96
+ */
97
+ preview?: boolean;
92
98
  class?: any;
93
99
  ui?: FileUpload['slots'];
94
100
  }
@@ -100,8 +106,11 @@ export interface FileUploadSlots<M extends boolean = false> {
100
106
  'default'(props: {
101
107
  open: UseFileDialogReturn['open'];
102
108
  removeFile: (index?: number) => void;
109
+ ui: FileUpload['ui'];
110
+ }): any;
111
+ 'leading'(props: {
112
+ ui: FileUpload['ui'];
103
113
  }): any;
104
- 'leading'(props?: {}): any;
105
114
  'label'(props?: {}): any;
106
115
  'description'(props?: {}): any;
107
116
  'actions'(props: {
@@ -129,6 +138,7 @@ export interface FileUploadSlots<M extends boolean = false> {
129
138
  'file-leading'(props: {
130
139
  file: File;
131
140
  index: number;
141
+ ui: FileUpload['ui'];
132
142
  }): any;
133
143
  'file-name'(props: {
134
144
  file: File;
@@ -141,6 +151,7 @@ export interface FileUploadSlots<M extends boolean = false> {
141
151
  'file-trailing'(props: {
142
152
  file: File;
143
153
  index: number;
154
+ ui: FileUpload['ui'];
144
155
  }): any;
145
156
  }
146
157
  declare const __VLS_export: <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<{
@@ -151,7 +162,7 @@ declare const __VLS_export: <M extends boolean = false>(__VLS_props: NonNullable
151
162
  "onUpdate:modelValue"?: ((value: (M extends true ? File[] : File) | null | undefined) => any) | undefined;
152
163
  }> & import("vue").PublicProps;
153
164
  expose: (exposed: import("vue").ShallowUnwrapRef<{
154
- inputRef: import("vue").Ref<HTMLInputElement | undefined, HTMLInputElement | undefined>;
165
+ inputRef: Readonly<import("vue").Ref<HTMLInputElement, HTMLInputElement>>;
155
166
  dropzoneRef: import("vue").Ref<HTMLDivElement | undefined, HTMLDivElement | undefined>;
156
167
  }>) => void;
157
168
  attrs: any;
@@ -19,26 +19,26 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.footer || {}
19
19
  </script>
20
20
 
21
21
  <template>
22
- <Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
23
- <div v-if="!!slots.top" :class="ui.top({ class: props.ui?.top })">
22
+ <Primitive :as="as" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
23
+ <div v-if="!!slots.top" data-slot="top" :class="ui.top({ class: props.ui?.top })">
24
24
  <slot name="top" />
25
25
  </div>
26
26
 
27
- <UContainer :class="ui.container({ class: props.ui?.container })">
28
- <div :class="ui.right({ class: props.ui?.right })">
27
+ <UContainer data-slot="container" :class="ui.container({ class: props.ui?.container })">
28
+ <div data-slot="right" :class="ui.right({ class: props.ui?.right })">
29
29
  <slot name="right" />
30
30
  </div>
31
31
 
32
- <div :class="ui.center({ class: props.ui?.center })">
32
+ <div data-slot="center" :class="ui.center({ class: props.ui?.center })">
33
33
  <slot />
34
34
  </div>
35
35
 
36
- <div :class="ui.left({ class: props.ui?.left })">
36
+ <div data-slot="left" :class="ui.left({ class: props.ui?.left })">
37
37
  <slot name="left" />
38
38
  </div>
39
39
  </UContainer>
40
40
 
41
- <div v-if="!!slots.bottom" :class="ui.bottom({ class: props.ui?.bottom })">
41
+ <div v-if="!!slots.bottom" data-slot="bottom" :class="ui.bottom({ class: props.ui?.bottom })">
42
42
  <slot name="bottom" />
43
43
  </div>
44
44
  </Primitive>
@@ -29,6 +29,7 @@ export interface FooterColumnsProps<T extends FooterColumnLink = FooterColumnLin
29
29
  type SlotProps<T> = (props: {
30
30
  link: T;
31
31
  active: boolean;
32
+ ui: FooterColumns['ui'];
32
33
  }) => any;
33
34
  export interface FooterColumnsSlots<T extends FooterColumnLink = FooterColumnLink> {
34
35
  'left'(props?: {}): any;
@@ -39,8 +40,14 @@ export interface FooterColumnsSlots<T extends FooterColumnLink = FooterColumnLin
39
40
  }) => any;
40
41
  'link': SlotProps<T>;
41
42
  'link-leading': SlotProps<T>;
42
- 'link-label': SlotProps<T>;
43
- 'link-trailing': SlotProps<T>;
43
+ 'link-label'(props: {
44
+ link: T;
45
+ active: boolean;
46
+ }): any;
47
+ 'link-trailing'(props: {
48
+ link: T;
49
+ active: boolean;
50
+ }): any;
44
51
  }
45
52
  declare const __VLS_export: <T extends FooterColumnLink>(__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<{
46
53
  props: __VLS_PrettifyLocal<FooterColumnsProps<T>> & import("vue").PublicProps;
@@ -23,35 +23,35 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.footerColumns
23
23
  </script>
24
24
 
25
25
  <template>
26
- <Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
27
- <div v-if="!!slots.left" :class="ui.left({ class: props.ui?.left })">
26
+ <Primitive :as="as" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
27
+ <div v-if="!!slots.left" data-slot="left" :class="ui.left({ class: props.ui?.left })">
28
28
  <slot name="left" />
29
29
  </div>
30
30
 
31
- <div v-if="!!slots.default || columns?.length" :class="ui.center({ class: props.ui?.center })">
31
+ <div v-if="!!slots.default || columns?.length" data-slot="center" :class="ui.center({ class: props.ui?.center })">
32
32
  <slot>
33
33
  <div v-for="(column, index) in columns" :key="index">
34
- <h3 :class="ui.label({ class: props.ui?.label })">
34
+ <h3 data-slot="label" :class="ui.label({ class: props.ui?.label })">
35
35
  <slot name="column-label" :column="column">
36
36
  {{ column.label }}
37
37
  </slot>
38
38
  </h3>
39
39
 
40
- <ul :class="ui.list({ class: props.ui?.list })">
41
- <li v-for="(link, linkIndex) in column.children" :key="linkIndex" :class="ui.item({ class: [props.ui?.item, link.ui?.item] })">
40
+ <ul data-slot="list" :class="ui.list({ class: props.ui?.list })">
41
+ <li v-for="(link, linkIndex) in column.children" :key="linkIndex" data-slot="item" :class="ui.item({ class: [props.ui?.item, link.ui?.item] })">
42
42
  <ULink v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(link)" custom>
43
- <ULinkBase v-bind="slotProps" :class="ui.link({ class: [props.ui?.link, link.ui?.link, link.class], active })">
44
- <slot name="link" :link="link" :active="active">
45
- <slot name="link-leading" :link="link" :active="active">
46
- <UIcon v-if="link.icon" :name="link.icon" :class="ui.linkLeadingIcon({ class: [props.ui?.linkLeadingIcon, link.ui?.linkLeadingIcon], active })" />
43
+ <ULinkBase v-bind="slotProps" data-slot="link" :class="ui.link({ class: [props.ui?.link, link.ui?.link, link.class], active })">
44
+ <slot name="link" :link="link" :active="active" :ui="ui">
45
+ <slot name="link-leading" :link="link" :active="active" :ui="ui">
46
+ <UIcon v-if="link.icon" :name="link.icon" data-slot="linkLeadingIcon" :class="ui.linkLeadingIcon({ class: [props.ui?.linkLeadingIcon, link.ui?.linkLeadingIcon], active })" />
47
47
  </slot>
48
48
 
49
- <span v-if="link.label || !!slots['link-label']" :class="ui.linkLabel({ class: [props.ui?.linkLabel, link.ui?.linkLabel], active })">
49
+ <span v-if="link.label || !!slots['link-label']" data-slot="linkLabel" :class="ui.linkLabel({ class: [props.ui?.linkLabel, link.ui?.linkLabel], active })">
50
50
  <slot name="link-label" :link="link" :active="active">
51
51
  {{ link.label }}
52
52
  </slot>
53
53
 
54
- <UIcon v-if="link.target === '_blank'" :name="appConfig.ui.icons.external" :class="ui.linkLabelExternalIcon({ class: [props.ui?.linkLabelExternalIcon, link.ui?.linkLabelExternalIcon], active })" />
54
+ <UIcon v-if="link.target === '_blank'" :name="appConfig.ui.icons.external" data-slot="linkLabelExternalIcon" :class="ui.linkLabelExternalIcon({ class: [props.ui?.linkLabelExternalIcon, link.ui?.linkLabelExternalIcon], active })" />
55
55
  </span>
56
56
 
57
57
  <slot name="link-trailing" :link="link" :active="active" />
@@ -64,7 +64,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.footerColumns
64
64
  </slot>
65
65
  </div>
66
66
 
67
- <div v-if="!!slots.right" :class="ui.right({ class: props.ui?.right })">
67
+ <div v-if="!!slots.right" data-slot="right" :class="ui.right({ class: props.ui?.right })">
68
68
  <slot name="right" />
69
69
  </div>
70
70
  </Primitive>
@@ -29,6 +29,7 @@ export interface FooterColumnsProps<T extends FooterColumnLink = FooterColumnLin
29
29
  type SlotProps<T> = (props: {
30
30
  link: T;
31
31
  active: boolean;
32
+ ui: FooterColumns['ui'];
32
33
  }) => any;
33
34
  export interface FooterColumnsSlots<T extends FooterColumnLink = FooterColumnLink> {
34
35
  'left'(props?: {}): any;
@@ -39,8 +40,14 @@ export interface FooterColumnsSlots<T extends FooterColumnLink = FooterColumnLin
39
40
  }) => any;
40
41
  'link': SlotProps<T>;
41
42
  'link-leading': SlotProps<T>;
42
- 'link-label': SlotProps<T>;
43
- 'link-trailing': SlotProps<T>;
43
+ 'link-label'(props: {
44
+ link: T;
45
+ active: boolean;
46
+ }): any;
47
+ 'link-trailing'(props: {
48
+ link: T;
49
+ active: boolean;
50
+ }): any;
44
51
  }
45
52
  declare const __VLS_export: <T extends FooterColumnLink>(__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<{
46
53
  props: __VLS_PrettifyLocal<FooterColumnsProps<T>> & import("vue").PublicProps;
@@ -1,4 +1,5 @@
1
1
  import type { FormSchema, FormError, FormInputEvents, FormErrorEvent, FormSubmitEvent, FormErrorWithId, InferInput, FormData } from '../types/form';
2
+ import type { FormHTMLAttributes } from '../types/html';
2
3
  export type FormProps<S extends FormSchema, T extends boolean = true, N extends boolean = false> = {
3
4
  id?: string | number;
4
5
  /** Schema to validate the form state. Supports Standard Schema objects, Yup, Joi, and Superstructs. */
@@ -38,7 +39,7 @@ export type FormProps<S extends FormSchema, T extends boolean = true, N extends
38
39
  * If true, this form will attach to its parent Form and validate at the same time.
39
40
  * @defaultValue `false`
40
41
  */
41
- nested?: N;
42
+ nested?: N & boolean;
42
43
  /**
43
44
  * When `true`, all form elements will be disabled on `@submit` event.
44
45
  * This will cause any focused input elements to lose their focus state.
@@ -47,7 +48,7 @@ export type FormProps<S extends FormSchema, T extends boolean = true, N extends
47
48
  loadingAuto?: boolean;
48
49
  class?: any;
49
50
  onSubmit?: ((event: FormSubmitEvent<FormData<S, T>>) => void | Promise<void>) | (() => void | Promise<void>);
50
- };
51
+ } & /** @vue-ignore */ Omit<FormHTMLAttributes, 'name'>;
51
52
  export interface FormEmits<S extends FormSchema, T extends boolean = true> {
52
53
  submit: [event: FormSubmitEvent<FormData<S, T>>];
53
54
  error: [event: FormErrorEvent];
@@ -22,7 +22,7 @@ const props = defineProps({
22
22
  name: { type: null, required: false },
23
23
  validateOnInputDelay: { type: Number, required: false, default: 300 },
24
24
  transform: { type: null, required: false, default: () => true },
25
- nested: { type: null, required: false },
25
+ nested: { type: Boolean, required: false },
26
26
  loadingAuto: { type: Boolean, required: false, default: true },
27
27
  class: { type: null, required: false },
28
28
  onSubmit: { type: Function, required: false }
@@ -33,12 +33,11 @@ const appConfig = useAppConfig();
33
33
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.form || {} }));
34
34
  const formId = props.id ?? useId();
35
35
  const bus = useEventBus(`form-${formId}`);
36
- const isNested = props.nested?.toString() === "" || props.nested === true;
37
- const parentBus = isNested && inject(
36
+ const parentBus = props.nested === true && inject(
38
37
  formBusInjectionKey,
39
38
  void 0
40
39
  );
41
- const parentState = isNested ? inject(formStateInjectionKey, void 0) : void 0;
40
+ const parentState = props.nested === true ? inject(formStateInjectionKey, void 0) : void 0;
42
41
  const state = computed(() => {
43
42
  if (parentState?.value) {
44
43
  return props.name ? getAtPath(parentState.value, props.name) : parentState.value;
@@ -1,4 +1,5 @@
1
1
  import type { FormSchema, FormError, FormInputEvents, FormErrorEvent, FormSubmitEvent, FormErrorWithId, InferInput, FormData } from '../types/form';
2
+ import type { FormHTMLAttributes } from '../types/html';
2
3
  export type FormProps<S extends FormSchema, T extends boolean = true, N extends boolean = false> = {
3
4
  id?: string | number;
4
5
  /** Schema to validate the form state. Supports Standard Schema objects, Yup, Joi, and Superstructs. */
@@ -38,7 +39,7 @@ export type FormProps<S extends FormSchema, T extends boolean = true, N extends
38
39
  * If true, this form will attach to its parent Form and validate at the same time.
39
40
  * @defaultValue `false`
40
41
  */
41
- nested?: N;
42
+ nested?: N & boolean;
42
43
  /**
43
44
  * When `true`, all form elements will be disabled on `@submit` event.
44
45
  * This will cause any focused input elements to lose their focus state.
@@ -47,7 +48,7 @@ export type FormProps<S extends FormSchema, T extends boolean = true, N extends
47
48
  loadingAuto?: boolean;
48
49
  class?: any;
49
50
  onSubmit?: ((event: FormSubmitEvent<FormData<S, T>>) => void | Promise<void>) | (() => void | Promise<void>);
50
- };
51
+ } & /** @vue-ignore */ Omit<FormHTMLAttributes, 'name'>;
51
52
  export interface FormEmits<S extends FormSchema, T extends boolean = true> {
52
53
  submit: [event: FormSubmitEvent<FormData<S, T>>];
53
54
  error: [event: FormErrorEvent];
@@ -56,22 +56,22 @@ provide(formFieldInjectionKey, computed(() => ({
56
56
  </script>
57
57
 
58
58
  <template>
59
- <Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
60
- <div :class="ui.wrapper({ class: props.ui?.wrapper })">
61
- <div v-if="label || !!slots.label" :class="ui.labelWrapper({ class: props.ui?.labelWrapper })">
62
- <Label :for="id" :class="ui.label({ class: props.ui?.label })">
59
+ <Primitive :as="as" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
60
+ <div data-slot="wrapper" :class="ui.wrapper({ class: props.ui?.wrapper })">
61
+ <div v-if="label || !!slots.label" data-slot="labelWrapper" :class="ui.labelWrapper({ class: props.ui?.labelWrapper })">
62
+ <Label :for="id" data-slot="label" :class="ui.label({ class: props.ui?.label })">
63
63
  <slot name="label" :label="label">
64
64
  {{ label }}
65
65
  </slot>
66
66
  </Label>
67
- <span v-if="hint || !!slots.hint" :id="`${ariaId}-hint`" :class="ui.hint({ class: props.ui?.hint })">
67
+ <span v-if="hint || !!slots.hint" :id="`${ariaId}-hint`" data-slot="hint" :class="ui.hint({ class: props.ui?.hint })">
68
68
  <slot name="hint" :hint="hint">
69
69
  {{ hint }}
70
70
  </slot>
71
71
  </span>
72
72
  </div>
73
73
 
74
- <p v-if="description || !!slots.description" :id="`${ariaId}-description`" :class="ui.description({ class: props.ui?.description })">
74
+ <p v-if="description || !!slots.description" :id="`${ariaId}-description`" data-slot="description" :class="ui.description({ class: props.ui?.description })">
75
75
  <slot name="description" :description="description">
76
76
  {{ description }}
77
77
  </slot>
@@ -81,12 +81,12 @@ provide(formFieldInjectionKey, computed(() => ({
81
81
  <div :class="[(label || !!slots.label || description || !!slots.description) && ui.container({ class: props.ui?.container })]">
82
82
  <slot :error="error" />
83
83
 
84
- <div v-if="typeof error === 'string' && error || !!slots.error" :id="`${ariaId}-error`" :class="ui.error({ class: props.ui?.error })">
84
+ <div v-if="typeof error === 'string' && error || !!slots.error" :id="`${ariaId}-error`" data-slot="error" :class="ui.error({ class: props.ui?.error })">
85
85
  <slot name="error" :error="error">
86
86
  {{ error }}
87
87
  </slot>
88
88
  </div>
89
- <div v-else-if="help || !!slots.help" :id="`${ariaId}-help`" :class="ui.help({ class: props.ui?.help })">
89
+ <div v-else-if="help || !!slots.help" :id="`${ariaId}-help`" data-slot="help" :class="ui.help({ class: props.ui?.help })">
90
90
  <slot name="help" :help="help">
91
91
  {{ help }}
92
92
  </slot>
@@ -43,11 +43,14 @@ export interface HeaderSlots {
43
43
  toggle(props: {
44
44
  open: boolean;
45
45
  toggle: () => void;
46
+ ui: Header['ui'];
46
47
  }): any;
47
48
  top(props?: {}): any;
48
49
  bottom(props?: {}): any;
49
50
  body(props?: {}): any;
50
- content(props?: {}): any;
51
+ content(props: {
52
+ close?: () => void;
53
+ }): any;
51
54
  }
52
55
  declare const __VLS_export: <T extends HeaderMode>(__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<{
53
56
  props: __VLS_PrettifyLocal<(HeaderProps<T> & {
@@ -62,7 +62,7 @@ function toggleOpen() {
62
62
 
63
63
  <template>
64
64
  <DefineToggleTemplate>
65
- <slot name="toggle" :open="open" :toggle="toggleOpen">
65
+ <slot name="toggle" :open="open" :toggle="toggleOpen" :ui="ui">
66
66
  <UButton
67
67
  v-if="toggle"
68
68
  color="neutral"
@@ -70,6 +70,7 @@ function toggleOpen() {
70
70
  :aria-label="open ? t('header.close') : t('header.open')"
71
71
  :icon="open ? appConfig.ui.icons.close : appConfig.ui.icons.menu"
72
72
  v-bind="typeof toggle === 'object' ? toggle : {}"
73
+ data-slot="toggle"
73
74
  :class="ui.toggle({ class: props.ui?.toggle, toggleSide })"
74
75
  @click="toggleOpen"
75
76
  />
@@ -77,11 +78,11 @@ function toggleOpen() {
77
78
  </DefineToggleTemplate>
78
79
 
79
80
  <DefineLeftTemplate>
80
- <div :class="ui.left({ class: props.ui?.left })">
81
+ <div data-slot="left" :class="ui.left({ class: props.ui?.left })">
81
82
  <ReuseToggleTemplate v-if="toggleSide === 'left'" />
82
83
 
83
84
  <slot name="left">
84
- <ULink :to="to" :aria-label="ariaLabel" :class="ui.title({ class: props.ui?.title })">
85
+ <ULink :to="to" :aria-label="ariaLabel" data-slot="title" :class="ui.title({ class: props.ui?.title })">
85
86
  <slot name="title">
86
87
  {{ title }}
87
88
  </slot>
@@ -91,20 +92,20 @@ function toggleOpen() {
91
92
  </DefineLeftTemplate>
92
93
 
93
94
  <DefineRightTemplate>
94
- <div :class="ui.right({ class: props.ui?.right })">
95
+ <div data-slot="right" :class="ui.right({ class: props.ui?.right })">
95
96
  <slot name="right" />
96
97
 
97
98
  <ReuseToggleTemplate v-if="toggleSide === 'right'" />
98
99
  </div>
99
100
  </DefineRightTemplate>
100
101
 
101
- <Primitive :as="as" v-bind="$attrs" :class="ui.root({ class: [props.ui?.root, props.class] })">
102
+ <Primitive :as="as" v-bind="$attrs" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
102
103
  <slot name="top" />
103
104
 
104
- <UContainer :class="ui.container({ class: props.ui?.container })">
105
+ <UContainer data-slot="container" :class="ui.container({ class: props.ui?.container })">
105
106
  <ReuseLeftTemplate />
106
107
 
107
- <div :class="ui.center({ class: props.ui?.center })">
108
+ <div data-slot="center" :class="ui.center({ class: props.ui?.center })">
108
109
  <slot />
109
110
  </div>
110
111
 
@@ -124,15 +125,15 @@ function toggleOpen() {
124
125
  content: ui.content({ class: props.ui?.content })
125
126
  }"
126
127
  >
127
- <template #content>
128
- <slot name="content">
129
- <div v-if="mode !== 'drawer'" :class="ui.header({ class: props.ui?.header })">
128
+ <template #content="contentData">
129
+ <slot name="content" v-bind="contentData">
130
+ <div v-if="mode !== 'drawer'" data-slot="header" :class="ui.header({ class: props.ui?.header })">
130
131
  <ReuseLeftTemplate />
131
132
 
132
133
  <ReuseRightTemplate />
133
134
  </div>
134
135
 
135
- <div :class="ui.body({ class: props.ui?.body })">
136
+ <div data-slot="body" :class="ui.body({ class: props.ui?.body })">
136
137
  <slot name="body" />
137
138
  </div>
138
139
  </slot>
@@ -43,11 +43,14 @@ export interface HeaderSlots {
43
43
  toggle(props: {
44
44
  open: boolean;
45
45
  toggle: () => void;
46
+ ui: Header['ui'];
46
47
  }): any;
47
48
  top(props?: {}): any;
48
49
  bottom(props?: {}): any;
49
50
  body(props?: {}): any;
50
- content(props?: {}): any;
51
+ content(props: {
52
+ close?: () => void;
53
+ }): any;
51
54
  }
52
55
  declare const __VLS_export: <T extends HeaderMode>(__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<{
53
56
  props: __VLS_PrettifyLocal<(HeaderProps<T> & {