@nuxt/ui 4.1.0 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. package/.nuxt/ui.css +6 -0
  2. package/cli/templates.mjs +2 -2
  3. package/dist/module.d.mts +10 -0
  4. package/dist/module.json +1 -1
  5. package/dist/module.mjs +7 -7
  6. package/dist/runtime/components/Accordion.vue +10 -9
  7. package/dist/runtime/components/Alert.vue +11 -10
  8. package/dist/runtime/components/App.d.vue.ts +1 -1
  9. package/dist/runtime/components/App.vue +2 -1
  10. package/dist/runtime/components/App.vue.d.ts +1 -1
  11. package/dist/runtime/components/AuthForm.d.vue.ts +9 -8
  12. package/dist/runtime/components/AuthForm.vue +29 -21
  13. package/dist/runtime/components/AuthForm.vue.d.ts +9 -8
  14. package/dist/runtime/components/Avatar.d.vue.ts +2 -1
  15. package/dist/runtime/components/Avatar.vue +5 -3
  16. package/dist/runtime/components/Avatar.vue.d.ts +2 -1
  17. package/dist/runtime/components/AvatarGroup.vue +3 -3
  18. package/dist/runtime/components/Badge.vue +8 -8
  19. package/dist/runtime/components/Banner.vue +11 -10
  20. package/dist/runtime/components/BlogPost.vue +19 -10
  21. package/dist/runtime/components/Breadcrumb.vue +10 -10
  22. package/dist/runtime/components/Button.vue +10 -8
  23. package/dist/runtime/components/Calendar.vue +16 -12
  24. package/dist/runtime/components/Card.vue +4 -4
  25. package/dist/runtime/components/Carousel.vue +12 -7
  26. package/dist/runtime/components/ChangelogVersion.vue +22 -14
  27. package/dist/runtime/components/ChangelogVersions.vue +4 -4
  28. package/dist/runtime/components/ChatMessage.vue +8 -8
  29. package/dist/runtime/components/ChatMessages.vue +5 -3
  30. package/dist/runtime/components/ChatPalette.vue +3 -3
  31. package/dist/runtime/components/ChatPrompt.d.vue.ts +3 -6
  32. package/dist/runtime/components/ChatPrompt.vue +23 -14
  33. package/dist/runtime/components/ChatPrompt.vue.d.ts +3 -6
  34. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +10 -10
  35. package/dist/runtime/components/ChatPromptSubmit.vue +61 -14
  36. package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +10 -10
  37. package/dist/runtime/components/Checkbox.d.vue.ts +2 -1
  38. package/dist/runtime/components/Checkbox.vue +11 -10
  39. package/dist/runtime/components/Checkbox.vue.d.ts +2 -1
  40. package/dist/runtime/components/CheckboxGroup.vue +8 -5
  41. package/dist/runtime/components/Chip.vue +2 -2
  42. package/dist/runtime/components/Collapsible.vue +2 -2
  43. package/dist/runtime/components/ColorPicker.vue +7 -3
  44. package/dist/runtime/components/CommandPalette.vue +69 -44
  45. package/dist/runtime/components/ContextMenu.vue +3 -3
  46. package/dist/runtime/components/ContextMenuContent.vue +22 -20
  47. package/dist/runtime/components/DashboardNavbar.vue +8 -7
  48. package/dist/runtime/components/DashboardPanel.vue +3 -1
  49. package/dist/runtime/components/DashboardSearch.vue +5 -4
  50. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +2 -3
  51. package/dist/runtime/components/DashboardSearchButton.vue +48 -10
  52. package/dist/runtime/components/DashboardSearchButton.vue.d.ts +2 -3
  53. package/dist/runtime/components/DashboardSidebar.vue +9 -6
  54. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +7 -4
  55. package/dist/runtime/components/DashboardSidebarCollapse.vue +51 -7
  56. package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +7 -4
  57. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +7 -4
  58. package/dist/runtime/components/DashboardSidebarToggle.vue +52 -7
  59. package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +7 -4
  60. package/dist/runtime/components/DashboardToolbar.vue +3 -3
  61. package/dist/runtime/components/Drawer.d.vue.ts +1 -1
  62. package/dist/runtime/components/Drawer.vue +9 -9
  63. package/dist/runtime/components/Drawer.vue.d.ts +1 -1
  64. package/dist/runtime/components/DropdownMenu.vue +4 -4
  65. package/dist/runtime/components/DropdownMenuContent.vue +22 -20
  66. package/dist/runtime/components/Empty.vue +9 -9
  67. package/dist/runtime/components/Error.d.vue.ts +1 -1
  68. package/dist/runtime/components/Error.vue +5 -5
  69. package/dist/runtime/components/Error.vue.d.ts +1 -1
  70. package/dist/runtime/components/FileUpload.d.vue.ts +8 -2
  71. package/dist/runtime/components/FileUpload.vue +37 -27
  72. package/dist/runtime/components/FileUpload.vue.d.ts +8 -2
  73. package/dist/runtime/components/Footer.vue +7 -7
  74. package/dist/runtime/components/FooterColumns.vue +11 -11
  75. package/dist/runtime/components/Form.d.vue.ts +3 -2
  76. package/dist/runtime/components/Form.vue +3 -4
  77. package/dist/runtime/components/Form.vue.d.ts +3 -2
  78. package/dist/runtime/components/FormField.vue +8 -8
  79. package/dist/runtime/components/Header.vue +9 -8
  80. package/dist/runtime/components/Icon.d.vue.ts +1 -1
  81. package/dist/runtime/components/Icon.vue +1 -1
  82. package/dist/runtime/components/Icon.vue.d.ts +1 -1
  83. package/dist/runtime/components/Input.d.vue.ts +6 -6
  84. package/dist/runtime/components/Input.vue +13 -12
  85. package/dist/runtime/components/Input.vue.d.ts +6 -6
  86. package/dist/runtime/components/InputDate.d.vue.ts +89 -0
  87. package/dist/runtime/components/InputDate.vue +161 -0
  88. package/dist/runtime/components/InputDate.vue.d.ts +89 -0
  89. package/dist/runtime/components/InputMenu.d.vue.ts +6 -127
  90. package/dist/runtime/components/InputMenu.vue +56 -48
  91. package/dist/runtime/components/InputMenu.vue.d.ts +6 -127
  92. package/dist/runtime/components/InputNumber.d.vue.ts +24 -127
  93. package/dist/runtime/components/InputNumber.vue +10 -11
  94. package/dist/runtime/components/InputNumber.vue.d.ts +24 -127
  95. package/dist/runtime/components/InputTags.d.vue.ts +5 -108
  96. package/dist/runtime/components/InputTags.vue +24 -20
  97. package/dist/runtime/components/InputTags.vue.d.ts +5 -108
  98. package/dist/runtime/components/InputTime.d.vue.ts +72 -0
  99. package/dist/runtime/components/InputTime.vue +137 -0
  100. package/dist/runtime/components/InputTime.vue.d.ts +72 -0
  101. package/dist/runtime/components/Link.d.vue.ts +8 -3
  102. package/dist/runtime/components/Link.vue +1 -0
  103. package/dist/runtime/components/Link.vue.d.ts +8 -3
  104. package/dist/runtime/components/Marquee.d.vue.ts +1 -1
  105. package/dist/runtime/components/Marquee.vue +2 -6
  106. package/dist/runtime/components/Marquee.vue.d.ts +1 -1
  107. package/dist/runtime/components/Modal.d.vue.ts +7 -2
  108. package/dist/runtime/components/Modal.vue +53 -17
  109. package/dist/runtime/components/Modal.vue.d.ts +7 -2
  110. package/dist/runtime/components/NavigationMenu.d.vue.ts +44 -9
  111. package/dist/runtime/components/NavigationMenu.vue +75 -45
  112. package/dist/runtime/components/NavigationMenu.vue.d.ts +44 -9
  113. package/dist/runtime/components/Page.vue +4 -4
  114. package/dist/runtime/components/PageAnchors.vue +8 -8
  115. package/dist/runtime/components/PageAside.vue +6 -6
  116. package/dist/runtime/components/PageCTA.vue +9 -9
  117. package/dist/runtime/components/PageCard.vue +12 -11
  118. package/dist/runtime/components/PageFeature.vue +7 -7
  119. package/dist/runtime/components/PageHeader.vue +7 -7
  120. package/dist/runtime/components/PageHero.vue +10 -10
  121. package/dist/runtime/components/PageLinks.vue +8 -8
  122. package/dist/runtime/components/PageLogos.vue +6 -3
  123. package/dist/runtime/components/PageSection.vue +14 -14
  124. package/dist/runtime/components/Pagination.d.vue.ts +2 -2
  125. package/dist/runtime/components/Pagination.vue +13 -13
  126. package/dist/runtime/components/Pagination.vue.d.ts +2 -2
  127. package/dist/runtime/components/PinInput.d.vue.ts +2 -2
  128. package/dist/runtime/components/PinInput.vue +2 -0
  129. package/dist/runtime/components/PinInput.vue.d.ts +2 -2
  130. package/dist/runtime/components/Popover.vue +2 -2
  131. package/dist/runtime/components/PricingPlan.vue +28 -21
  132. package/dist/runtime/components/PricingTable.vue +35 -31
  133. package/dist/runtime/components/Progress.d.vue.ts +1 -1
  134. package/dist/runtime/components/Progress.vue +6 -6
  135. package/dist/runtime/components/Progress.vue.d.ts +1 -1
  136. package/dist/runtime/components/RadioGroup.d.vue.ts +5 -5
  137. package/dist/runtime/components/RadioGroup.vue +13 -11
  138. package/dist/runtime/components/RadioGroup.vue.d.ts +5 -5
  139. package/dist/runtime/components/Select.d.vue.ts +5 -106
  140. package/dist/runtime/components/Select.vue +31 -28
  141. package/dist/runtime/components/Select.vue.d.ts +5 -106
  142. package/dist/runtime/components/SelectMenu.d.vue.ts +6 -105
  143. package/dist/runtime/components/SelectMenu.vue +59 -45
  144. package/dist/runtime/components/SelectMenu.vue.d.ts +6 -105
  145. package/dist/runtime/components/Separator.vue +8 -8
  146. package/dist/runtime/components/Slideover.d.vue.ts +2 -2
  147. package/dist/runtime/components/Slideover.vue +10 -8
  148. package/dist/runtime/components/Slideover.vue.d.ts +2 -2
  149. package/dist/runtime/components/Slider.vue +5 -4
  150. package/dist/runtime/components/Stepper.vue +12 -10
  151. package/dist/runtime/components/Switch.d.vue.ts +2 -1
  152. package/dist/runtime/components/Switch.vue +13 -12
  153. package/dist/runtime/components/Switch.vue.d.ts +2 -1
  154. package/dist/runtime/components/Table.d.vue.ts +7 -6
  155. package/dist/runtime/components/Table.vue +37 -18
  156. package/dist/runtime/components/Table.vue.d.ts +7 -6
  157. package/dist/runtime/components/Tabs.vue +10 -7
  158. package/dist/runtime/components/Textarea.d.vue.ts +6 -5
  159. package/dist/runtime/components/Textarea.vue +13 -12
  160. package/dist/runtime/components/Textarea.vue.d.ts +6 -5
  161. package/dist/runtime/components/Timeline.vue +16 -7
  162. package/dist/runtime/components/Toast.vue +17 -14
  163. package/dist/runtime/components/Toaster.d.vue.ts +1 -1
  164. package/dist/runtime/components/Toaster.vue +2 -0
  165. package/dist/runtime/components/Toaster.vue.d.ts +1 -1
  166. package/dist/runtime/components/Tooltip.vue +4 -4
  167. package/dist/runtime/components/Tree.d.vue.ts +1 -1
  168. package/dist/runtime/components/Tree.vue +21 -14
  169. package/dist/runtime/components/Tree.vue.d.ts +1 -1
  170. package/dist/runtime/components/User.vue +13 -6
  171. package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +3 -3
  172. package/dist/runtime/components/color-mode/ColorModeAvatar.vue +16 -4
  173. package/dist/runtime/components/color-mode/ColorModeAvatar.vue.d.ts +3 -3
  174. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +6 -13
  175. package/dist/runtime/components/color-mode/ColorModeButton.vue +60 -18
  176. package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +6 -13
  177. package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +4 -3
  178. package/dist/runtime/components/color-mode/ColorModeImage.vue +4 -0
  179. package/dist/runtime/components/color-mode/ColorModeImage.vue.d.ts +4 -3
  180. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +5 -3
  181. package/dist/runtime/components/color-mode/ColorModeSelect.vue +45 -5
  182. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +5 -3
  183. package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +2 -2
  184. package/dist/runtime/components/color-mode/ColorModeSwitch.vue +29 -5
  185. package/dist/runtime/components/color-mode/ColorModeSwitch.vue.d.ts +2 -2
  186. package/dist/runtime/components/content/ContentNavigation.vue +14 -13
  187. package/dist/runtime/components/content/ContentSearch.vue +63 -68
  188. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +2 -3
  189. package/dist/runtime/components/content/ContentSearchButton.vue +48 -10
  190. package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +2 -3
  191. package/dist/runtime/components/content/ContentSurround.vue +8 -8
  192. package/dist/runtime/components/content/ContentToc.vue +16 -16
  193. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +10 -6
  194. package/dist/runtime/components/locale/LocaleSelect.vue +54 -6
  195. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +10 -6
  196. package/dist/runtime/components/prose/Callout.vue +1 -1
  197. package/dist/runtime/components/prose/Card.vue +1 -1
  198. package/dist/runtime/components/prose/CodeCollapse.vue +1 -1
  199. package/dist/runtime/components/prose/CodeIcon.vue +1 -1
  200. package/dist/runtime/components/prose/Collapsible.vue +1 -1
  201. package/dist/runtime/components/prose/Pre.vue +1 -1
  202. package/dist/runtime/composables/index.d.ts +8 -0
  203. package/dist/runtime/composables/index.js +8 -0
  204. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  205. package/dist/runtime/composables/useComponentIcons.d.ts +2 -2
  206. package/dist/runtime/composables/useContentSearch.d.ts +5 -0
  207. package/dist/runtime/composables/useContentSearch.js +31 -1
  208. package/dist/runtime/composables/useFieldGroup.d.ts +1 -1
  209. package/dist/runtime/composables/useFileUpload.d.ts +2 -1
  210. package/dist/runtime/composables/useFileUpload.js +13 -4
  211. package/dist/runtime/composables/useFormField.d.ts +1 -1
  212. package/dist/runtime/index.css +1 -1
  213. package/dist/runtime/inertia/components/Link.d.vue.ts +21 -11
  214. package/dist/runtime/inertia/components/Link.vue +30 -10
  215. package/dist/runtime/inertia/components/Link.vue.d.ts +21 -11
  216. package/dist/runtime/inertia/components/LinkBase.d.vue.ts +1 -0
  217. package/dist/runtime/inertia/components/LinkBase.vue +5 -2
  218. package/dist/runtime/inertia/components/LinkBase.vue.d.ts +1 -0
  219. package/dist/runtime/inertia/stubs.js +1 -1
  220. package/dist/runtime/keyframes.css +1 -1
  221. package/dist/runtime/locale/gl.d.ts +3 -0
  222. package/dist/runtime/locale/gl.js +129 -0
  223. package/dist/runtime/locale/index.d.ts +2 -0
  224. package/dist/runtime/locale/index.js +2 -0
  225. package/dist/runtime/locale/sq.d.ts +3 -0
  226. package/dist/runtime/locale/sq.js +129 -0
  227. package/dist/runtime/plugins/colors.js +8 -6
  228. package/dist/runtime/types/html.d.ts +8 -0
  229. package/dist/runtime/types/html.js +0 -0
  230. package/dist/runtime/types/index.d.ts +5 -0
  231. package/dist/runtime/types/index.js +5 -0
  232. package/dist/runtime/types/input.d.ts +5 -5
  233. package/dist/runtime/types/utils.d.ts +2 -0
  234. package/dist/runtime/utils/content.d.ts +2 -2
  235. package/dist/runtime/utils/link.d.ts +1 -0
  236. package/dist/runtime/utils/link.js +40 -24
  237. package/dist/runtime/utils/virtualizer.d.ts +6 -0
  238. package/dist/runtime/utils/virtualizer.js +30 -0
  239. package/dist/runtime/vue/components/Icon.vue +1 -1
  240. package/dist/runtime/vue/components/Link.d.vue.ts +8 -35
  241. package/dist/runtime/vue/components/Link.vue +36 -18
  242. package/dist/runtime/vue/components/Link.vue.d.ts +8 -35
  243. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +5 -3
  244. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +44 -3
  245. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +5 -3
  246. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
  247. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue +24 -3
  248. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
  249. package/dist/runtime/vue/stubs.d.ts +1 -1
  250. package/dist/runtime/vue/stubs.js +1 -1
  251. package/dist/shared/{ui.Cmctwxv6.mjs → ui.B77q-Dvh.mjs} +397 -153
  252. package/dist/unplugin.d.mts +1 -0
  253. package/dist/unplugin.mjs +31 -3
  254. package/dist/vite.mjs +5 -3
  255. package/package.json +39 -30
  256. package/.nuxt/ui/accordion.ts +0 -20
  257. package/.nuxt/ui/alert.ts +0 -264
  258. package/.nuxt/ui/auth-form.ts +0 -20
  259. package/.nuxt/ui/avatar-group.ts +0 -52
  260. package/.nuxt/ui/avatar.ts +0 -54
  261. package/.nuxt/ui/badge.ts +0 -263
  262. package/.nuxt/ui/banner.ts +0 -108
  263. package/.nuxt/ui/blog-post.ts +0 -142
  264. package/.nuxt/ui/blog-posts.ts +0 -9
  265. package/.nuxt/ui/breadcrumb.ts +0 -45
  266. package/.nuxt/ui/button.ts +0 -378
  267. package/.nuxt/ui/calendar.ts +0 -315
  268. package/.nuxt/ui/card.ts +0 -34
  269. package/.nuxt/ui/carousel.ts +0 -38
  270. package/.nuxt/ui/changelog-version.ts +0 -41
  271. package/.nuxt/ui/changelog-versions.ts +0 -8
  272. package/.nuxt/ui/chat-message.ts +0 -136
  273. package/.nuxt/ui/chat-messages.ts +0 -14
  274. package/.nuxt/ui/chat-palette.ts +0 -8
  275. package/.nuxt/ui/chat-prompt-submit.ts +0 -5
  276. package/.nuxt/ui/chat-prompt.ts +0 -35
  277. package/.nuxt/ui/checkbox-group.ts +0 -204
  278. package/.nuxt/ui/checkbox.ts +0 -236
  279. package/.nuxt/ui/chip.ts +0 -96
  280. package/.nuxt/ui/collapsible.ts +0 -6
  281. package/.nuxt/ui/color-picker.ts +0 -47
  282. package/.nuxt/ui/command-palette.ts +0 -62
  283. package/.nuxt/ui/container.ts +0 -3
  284. package/.nuxt/ui/content/content-navigation.ts +0 -368
  285. package/.nuxt/ui/content/content-search-button.ts +0 -6
  286. package/.nuxt/ui/content/content-search.ts +0 -13
  287. package/.nuxt/ui/content/content-surround.ts +0 -34
  288. package/.nuxt/ui/content/content-toc.ts +0 -155
  289. package/.nuxt/ui/context-menu.ts +0 -219
  290. package/.nuxt/ui/dashboard-group.ts +0 -3
  291. package/.nuxt/ui/dashboard-navbar.ts +0 -21
  292. package/.nuxt/ui/dashboard-panel.ts +0 -17
  293. package/.nuxt/ui/dashboard-resize-handle.ts +0 -3
  294. package/.nuxt/ui/dashboard-search-button.ts +0 -6
  295. package/.nuxt/ui/dashboard-search.ts +0 -13
  296. package/.nuxt/ui/dashboard-sidebar-collapse.ts +0 -9
  297. package/.nuxt/ui/dashboard-sidebar-toggle.ts +0 -9
  298. package/.nuxt/ui/dashboard-sidebar.ts +0 -37
  299. package/.nuxt/ui/dashboard-toolbar.ts +0 -7
  300. package/.nuxt/ui/drawer.ts +0 -149
  301. package/.nuxt/ui/dropdown-menu.ts +0 -220
  302. package/.nuxt/ui/empty.ts +0 -83
  303. package/.nuxt/ui/error.ts +0 -9
  304. package/.nuxt/ui/field-group.ts +0 -16
  305. package/.nuxt/ui/file-upload.ts +0 -290
  306. package/.nuxt/ui/footer-columns.ts +0 -28
  307. package/.nuxt/ui/footer.ts +0 -11
  308. package/.nuxt/ui/form-field.ts +0 -48
  309. package/.nuxt/ui/form.ts +0 -3
  310. package/.nuxt/ui/header.ts +0 -25
  311. package/.nuxt/ui/index.ts +0 -106
  312. package/.nuxt/ui/input-menu.ts +0 -460
  313. package/.nuxt/ui/input-number.ts +0 -256
  314. package/.nuxt/ui/input-tags.ts +0 -310
  315. package/.nuxt/ui/input.ts +0 -289
  316. package/.nuxt/ui/kbd.ts +0 -195
  317. package/.nuxt/ui/link.ts +0 -22
  318. package/.nuxt/ui/main.ts +0 -3
  319. package/.nuxt/ui/marquee.ts +0 -66
  320. package/.nuxt/ui/modal.ts +0 -29
  321. package/.nuxt/ui/navigation-menu.ts +0 -510
  322. package/.nuxt/ui/page-anchors.ts +0 -30
  323. package/.nuxt/ui/page-aside.ts +0 -10
  324. package/.nuxt/ui/page-body.ts +0 -3
  325. package/.nuxt/ui/page-card.ts +0 -279
  326. package/.nuxt/ui/page-columns.ts +0 -3
  327. package/.nuxt/ui/page-cta.ts +0 -70
  328. package/.nuxt/ui/page-feature.ts +0 -26
  329. package/.nuxt/ui/page-grid.ts +0 -3
  330. package/.nuxt/ui/page-header.ts +0 -18
  331. package/.nuxt/ui/page-hero.ts +0 -44
  332. package/.nuxt/ui/page-links.ts +0 -25
  333. package/.nuxt/ui/page-list.ts +0 -8
  334. package/.nuxt/ui/page-logos.ts +0 -15
  335. package/.nuxt/ui/page-section.ts +0 -84
  336. package/.nuxt/ui/page.ts +0 -32
  337. package/.nuxt/ui/pagination.ts +0 -13
  338. package/.nuxt/ui/pin-input.ts +0 -171
  339. package/.nuxt/ui/popover.ts +0 -6
  340. package/.nuxt/ui/pricing-plan.ts +0 -101
  341. package/.nuxt/ui/pricing-plans.ts +0 -22
  342. package/.nuxt/ui/pricing-table.ts +0 -51
  343. package/.nuxt/ui/progress.ts +0 -297
  344. package/.nuxt/ui/prose/a.ts +0 -6
  345. package/.nuxt/ui/prose/accordion-item.ts +0 -3
  346. package/.nuxt/ui/prose/accordion.ts +0 -6
  347. package/.nuxt/ui/prose/badge.ts +0 -3
  348. package/.nuxt/ui/prose/blockquote.ts +0 -3
  349. package/.nuxt/ui/prose/callout.ts +0 -129
  350. package/.nuxt/ui/prose/card-group.ts +0 -3
  351. package/.nuxt/ui/prose/card.ts +0 -119
  352. package/.nuxt/ui/prose/code-collapse.ts +0 -19
  353. package/.nuxt/ui/prose/code-group.ts +0 -13
  354. package/.nuxt/ui/prose/code-icon.ts +0 -66
  355. package/.nuxt/ui/prose/code-preview.ts +0 -14
  356. package/.nuxt/ui/prose/code-tree.ts +0 -28
  357. package/.nuxt/ui/prose/code.ts +0 -27
  358. package/.nuxt/ui/prose/collapsible.ts +0 -12
  359. package/.nuxt/ui/prose/em.ts +0 -3
  360. package/.nuxt/ui/prose/field-group.ts +0 -3
  361. package/.nuxt/ui/prose/field.ts +0 -11
  362. package/.nuxt/ui/prose/h1.ts +0 -6
  363. package/.nuxt/ui/prose/h2.ts +0 -14
  364. package/.nuxt/ui/prose/h3.ts +0 -14
  365. package/.nuxt/ui/prose/h4.ts +0 -6
  366. package/.nuxt/ui/prose/hr.ts +0 -3
  367. package/.nuxt/ui/prose/icon.ts +0 -3
  368. package/.nuxt/ui/prose/img.ts +0 -23
  369. package/.nuxt/ui/prose/index.ts +0 -41
  370. package/.nuxt/ui/prose/kbd.ts +0 -3
  371. package/.nuxt/ui/prose/li.ts +0 -3
  372. package/.nuxt/ui/prose/ol.ts +0 -3
  373. package/.nuxt/ui/prose/p.ts +0 -3
  374. package/.nuxt/ui/prose/pre.ts +0 -17
  375. package/.nuxt/ui/prose/steps.ts +0 -19
  376. package/.nuxt/ui/prose/strong.ts +0 -3
  377. package/.nuxt/ui/prose/table.ts +0 -6
  378. package/.nuxt/ui/prose/tabs-item.ts +0 -3
  379. package/.nuxt/ui/prose/tabs.ts +0 -5
  380. package/.nuxt/ui/prose/tbody.ts +0 -3
  381. package/.nuxt/ui/prose/td.ts +0 -3
  382. package/.nuxt/ui/prose/th.ts +0 -3
  383. package/.nuxt/ui/prose/thead.ts +0 -3
  384. package/.nuxt/ui/prose/tr.ts +0 -3
  385. package/.nuxt/ui/prose/ul.ts +0 -3
  386. package/.nuxt/ui/radio-group.ts +0 -350
  387. package/.nuxt/ui/select-menu.ts +0 -361
  388. package/.nuxt/ui/select.ts +0 -348
  389. package/.nuxt/ui/separator.ts +0 -172
  390. package/.nuxt/ui/skeleton.ts +0 -3
  391. package/.nuxt/ui/slideover.ts +0 -71
  392. package/.nuxt/ui/slider.ts +0 -171
  393. package/.nuxt/ui/stepper.ts +0 -202
  394. package/.nuxt/ui/switch.ts +0 -131
  395. package/.nuxt/ui/table.ts +0 -162
  396. package/.nuxt/ui/tabs.ts +0 -258
  397. package/.nuxt/ui/textarea.ts +0 -294
  398. package/.nuxt/ui/timeline.ts +0 -321
  399. package/.nuxt/ui/toast.ts +0 -74
  400. package/.nuxt/ui/toaster.ts +0 -91
  401. package/.nuxt/ui/tooltip.ts +0 -9
  402. package/.nuxt/ui/tree.ts +0 -168
  403. package/.nuxt/ui/user.ts +0 -101
  404. package/dist/runtime/vue/components/color-mode/ColorModeButton.d.vue.ts +0 -17
  405. package/dist/runtime/vue/components/color-mode/ColorModeButton.vue +0 -35
  406. package/dist/runtime/vue/components/color-mode/ColorModeButton.vue.d.ts +0 -17
@@ -62,20 +62,21 @@ defineExpose({
62
62
  </script>
63
63
 
64
64
  <template>
65
- <StepperRoot v-bind="rootProps" v-model="currentStepIndex" :class="ui.root({ class: [props.ui?.root, props.class] })">
66
- <div :class="ui.header({ class: props.ui?.header })">
65
+ <StepperRoot v-bind="rootProps" v-model="currentStepIndex" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
66
+ <div data-slot="header" :class="ui.header({ class: props.ui?.header })">
67
67
  <StepperItem
68
68
  v-for="(item, count) in items"
69
69
  :key="item.value ?? count"
70
70
  :step="count"
71
71
  :disabled="item.disabled || props.disabled"
72
+ data-slot="item"
72
73
  :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class] })"
73
74
  >
74
- <div :class="ui.container({ class: [props.ui?.container, item.ui?.container] })">
75
- <StepperTrigger :class="ui.trigger({ class: [props.ui?.trigger, item.ui?.trigger] })">
76
- <StepperIndicator :class="ui.indicator({ class: [props.ui?.indicator, item.ui?.indicator] })">
75
+ <div data-slot="container" :class="ui.container({ class: [props.ui?.container, item.ui?.container] })">
76
+ <StepperTrigger data-slot="trigger" :class="ui.trigger({ class: [props.ui?.trigger, item.ui?.trigger] })">
77
+ <StepperIndicator data-slot="indicator" :class="ui.indicator({ class: [props.ui?.indicator, item.ui?.indicator] })">
77
78
  <slot name="indicator" :item="item" :ui="ui">
78
- <UIcon v-if="item.icon" :name="item.icon" :class="ui.icon({ class: [props.ui?.icon, item.ui?.icon] })" />
79
+ <UIcon v-if="item.icon" :name="item.icon" data-slot="icon" :class="ui.icon({ class: [props.ui?.icon, item.ui?.icon] })" />
79
80
  <template v-else>
80
81
  {{ count + 1 }}
81
82
  </template>
@@ -85,17 +86,18 @@ defineExpose({
85
86
 
86
87
  <StepperSeparator
87
88
  v-if="count < items.length - 1"
89
+ data-slot="separator"
88
90
  :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator] })"
89
91
  />
90
92
  </div>
91
93
 
92
- <div :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })">
93
- <StepperTitle as="div" :class="ui.title({ class: [props.ui?.title, item.ui?.title] })">
94
+ <div data-slot="wrapper" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })">
95
+ <StepperTitle as="div" data-slot="title" :class="ui.title({ class: [props.ui?.title, item.ui?.title] })">
94
96
  <slot name="title" :item="item">
95
97
  {{ item.title }}
96
98
  </slot>
97
99
  </StepperTitle>
98
- <StepperDescription as="div" :class="ui.description({ class: [props.ui?.description, item.ui?.description] })">
100
+ <StepperDescription as="div" data-slot="description" :class="ui.description({ class: [props.ui?.description, item.ui?.description] })">
99
101
  <slot name="description" :item="item">
100
102
  {{ item.description }}
101
103
  </slot>
@@ -104,7 +106,7 @@ defineExpose({
104
106
  </StepperItem>
105
107
  </div>
106
108
 
107
- <div v-if="currentStep?.content || !!slots.content || currentStep?.slot" :class="ui.content({ class: props.ui?.content })">
109
+ <div v-if="currentStep?.content || !!slots.content || currentStep?.slot" data-slot="content" :class="ui.content({ class: props.ui?.content })">
108
110
  <slot
109
111
  :name="currentStep?.slot || 'content'"
110
112
  :item="currentStep"
@@ -2,9 +2,10 @@ import type { SwitchRootProps } from 'reka-ui';
2
2
  import type { AppConfig } from '@nuxt/schema';
3
3
  import theme from '#build/ui/switch';
4
4
  import type { IconProps } from '../types';
5
+ import type { ButtonHTMLAttributes } from '../types/html';
5
6
  import type { ComponentConfig } from '../types/tv';
6
7
  type Switch = ComponentConfig<typeof theme, AppConfig, 'switch'>;
7
- export interface SwitchProps extends Pick<SwitchRootProps, 'disabled' | 'id' | 'name' | 'required' | 'value' | 'defaultValue'> {
8
+ export interface SwitchProps extends Pick<SwitchRootProps, 'disabled' | 'id' | 'name' | 'required' | 'value' | 'defaultValue'>, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled' | 'name'> {
8
9
  /**
9
10
  * The element or component this component should render as.
10
11
  * @defaultValue 'div'
@@ -16,9 +16,9 @@ const props = defineProps({
16
16
  color: { type: null, required: false },
17
17
  size: { type: null, required: false },
18
18
  loading: { type: Boolean, required: false },
19
- loadingIcon: { type: [String, Object], required: false },
20
- checkedIcon: { type: [String, Object], required: false },
21
- uncheckedIcon: { type: [String, Object], required: false },
19
+ loadingIcon: { type: null, required: false },
20
+ checkedIcon: { type: null, required: false },
21
+ uncheckedIcon: { type: null, required: false },
22
22
  label: { type: String, required: false },
23
23
  description: { type: String, required: false },
24
24
  class: { type: null, required: false },
@@ -53,33 +53,34 @@ function onUpdate(value) {
53
53
  </script>
54
54
 
55
55
  <template>
56
- <Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
57
- <div :class="ui.container({ class: props.ui?.container })">
56
+ <Primitive :as="as" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
57
+ <div data-slot="container" :class="ui.container({ class: props.ui?.container })">
58
58
  <SwitchRoot
59
59
  :id="id"
60
60
  v-bind="{ ...rootProps, ...$attrs, ...ariaAttrs }"
61
61
  v-model="modelValue"
62
62
  :name="name"
63
63
  :disabled="disabled || loading"
64
+ data-slot="base"
64
65
  :class="ui.base({ class: props.ui?.base })"
65
66
  @update:model-value="onUpdate"
66
67
  >
67
- <SwitchThumb :class="ui.thumb({ class: props.ui?.thumb })">
68
- <UIcon v-if="loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.icon({ class: props.ui?.icon, checked: true, unchecked: true })" />
68
+ <SwitchThumb data-slot="thumb" :class="ui.thumb({ class: props.ui?.thumb })">
69
+ <UIcon v-if="loading" :name="loadingIcon || appConfig.ui.icons.loading" data-slot="icon" :class="ui.icon({ class: props.ui?.icon, checked: true, unchecked: true })" />
69
70
  <template v-else>
70
- <UIcon v-if="checkedIcon" :name="checkedIcon" :class="ui.icon({ class: props.ui?.icon, checked: true })" />
71
- <UIcon v-if="uncheckedIcon" :name="uncheckedIcon" :class="ui.icon({ class: props.ui?.icon, unchecked: true })" />
71
+ <UIcon v-if="checkedIcon" :name="checkedIcon" data-slot="icon" :class="ui.icon({ class: props.ui?.icon, checked: true })" />
72
+ <UIcon v-if="uncheckedIcon" :name="uncheckedIcon" data-slot="icon" :class="ui.icon({ class: props.ui?.icon, unchecked: true })" />
72
73
  </template>
73
74
  </SwitchThumb>
74
75
  </SwitchRoot>
75
76
  </div>
76
- <div v-if="label || !!slots.label || (description || !!slots.description)" :class="ui.wrapper({ class: props.ui?.wrapper })">
77
- <Label v-if="label || !!slots.label" :for="id" :class="ui.label({ class: props.ui?.label })">
77
+ <div v-if="label || !!slots.label || (description || !!slots.description)" data-slot="wrapper" :class="ui.wrapper({ class: props.ui?.wrapper })">
78
+ <Label v-if="label || !!slots.label" :for="id" data-slot="label" :class="ui.label({ class: props.ui?.label })">
78
79
  <slot name="label" :label="label">
79
80
  {{ label }}
80
81
  </slot>
81
82
  </Label>
82
- <p v-if="description || !!slots.description" :class="ui.description({ class: props.ui?.description })">
83
+ <p v-if="description || !!slots.description" data-slot="description" :class="ui.description({ class: props.ui?.description })">
83
84
  <slot name="description" :description="description">
84
85
  {{ description }}
85
86
  </slot>
@@ -2,9 +2,10 @@ import type { SwitchRootProps } from 'reka-ui';
2
2
  import type { AppConfig } from '@nuxt/schema';
3
3
  import theme from '#build/ui/switch';
4
4
  import type { IconProps } from '../types';
5
+ import type { ButtonHTMLAttributes } from '../types/html';
5
6
  import type { ComponentConfig } from '../types/tv';
6
7
  type Switch = ComponentConfig<typeof theme, AppConfig, 'switch'>;
7
- export interface SwitchProps extends Pick<SwitchRootProps, 'disabled' | 'id' | 'name' | 'required' | 'value' | 'defaultValue'> {
8
+ export interface SwitchProps extends Pick<SwitchRootProps, 'disabled' | 'id' | 'name' | 'required' | 'value' | 'defaultValue'>, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled' | 'name'> {
8
9
  /**
9
10
  * The element or component this component should render as.
10
11
  * @defaultValue 'div'
@@ -1,9 +1,10 @@
1
- import type { Ref, WatchOptions } from 'vue';
1
+ import type { WatchOptions } from 'vue';
2
2
  import type { AppConfig } from '@nuxt/schema';
3
3
  import type { Cell, Header, RowData, TableMeta } from '@tanstack/table-core';
4
4
  import type { CellContext, ColumnDef, ColumnFiltersOptions, ColumnFiltersState, ColumnOrderState, ColumnPinningOptions, ColumnPinningState, ColumnSizingInfoState, ColumnSizingOptions, ColumnSizingState, CoreOptions, ExpandedOptions, ExpandedState, FacetedOptions, GlobalFilterOptions, GroupingOptions, GroupingState, HeaderContext, PaginationOptions, PaginationState, Row, RowPinningOptions, RowPinningState, RowSelectionOptions, RowSelectionState, SortingOptions, SortingState, VisibilityOptions, VisibilityState } from '@tanstack/vue-table';
5
5
  import type { VirtualizerOptions } from '@tanstack/vue-virtual';
6
6
  import theme from '#build/ui/table';
7
+ import type { TableHTMLAttributes } from '../types/html';
7
8
  import type { ComponentConfig } from '../types/tv';
8
9
  declare module '@tanstack/table-core' {
9
10
  interface ColumnMeta<TData extends RowData, TValue> {
@@ -40,7 +41,7 @@ export interface TableOptions<T extends TableData = TableData> extends Omit<Core
40
41
  onStateChange?: CoreOptions<T>['onStateChange'];
41
42
  renderFallbackValue?: CoreOptions<T>['renderFallbackValue'];
42
43
  }
43
- export interface TableProps<T extends TableData = TableData> extends TableOptions<T> {
44
+ export interface TableProps<T extends TableData = TableData> extends TableOptions<T>, /** @vue-ignore */ TableHTMLAttributes {
44
45
  /**
45
46
  * The element or component this component should render as.
46
47
  * @defaultValue 'div'
@@ -62,10 +63,10 @@ export interface TableProps<T extends TableData = TableData> extends TableOption
62
63
  */
63
64
  overscan?: number;
64
65
  /**
65
- * Estimated size (in px) of each item
66
+ * Estimated size (in px) of each item, or a function that returns the size for a given index
66
67
  * @defaultValue 65
67
68
  */
68
- estimateSize?: number;
69
+ estimateSize?: number | ((index: number) => number);
69
70
  });
70
71
  /**
71
72
  * The text to display when the table is empty.
@@ -205,8 +206,8 @@ declare const __VLS_export: <T extends TableData>(__VLS_props: NonNullable<Await
205
206
  "onUpdate:pagination"?: ((value: PaginationState) => any) | undefined;
206
207
  }> & import("vue").PublicProps;
207
208
  expose: (exposed: import("vue").ShallowUnwrapRef<{
208
- readonly $el: any;
209
- tableRef: Ref<HTMLTableElement | null, HTMLTableElement | null>;
209
+ readonly $el: HTMLElement;
210
+ tableRef: Readonly<import("vue").ShallowRef<HTMLTableElement | null>>;
210
211
  tableApi: import("@tanstack/table-core").Table<T>;
211
212
  }>) => void;
212
213
  attrs: any;
@@ -3,7 +3,7 @@ import theme from "#build/ui/table";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { computed, ref, watch, toRef } from "vue";
6
+ import { ref, computed, useTemplateRef, watch, toRef } from "vue";
7
7
  import { Primitive } from "reka-ui";
8
8
  import { upperFirst } from "scule";
9
9
  import { defu } from "defu";
@@ -134,8 +134,8 @@ const sortingState = defineModel("sorting", { type: Array, ...{ default: [] } })
134
134
  const groupingState = defineModel("grouping", { type: Array, ...{ default: [] } });
135
135
  const expandedState = defineModel("expanded", { type: [Boolean, Object], ...{ default: {} } });
136
136
  const paginationState = defineModel("pagination", { type: Object, ...{ default: {} } });
137
- const rootRef = ref();
138
- const tableRef = ref(null);
137
+ const rootRef = useTemplateRef("rootRef");
138
+ const tableRef = useTemplateRef("tableRef");
139
139
  const tableApi = useVueTable({
140
140
  ...reactiveOmit(props, "as", "data", "columns", "virtualize", "caption", "sticky", "loading", "loadingColor", "loadingAnimation", "class", "ui"),
141
141
  data,
@@ -225,7 +225,20 @@ const virtualizer = !!props.virtualize && useVirtualizer({
225
225
  return rows.value.length;
226
226
  },
227
227
  getScrollElement: () => rootRef.value?.$el,
228
- estimateSize: () => virtualizerProps.value.estimateSize
228
+ estimateSize: (index) => {
229
+ const estimate = virtualizerProps.value.estimateSize;
230
+ return typeof estimate === "function" ? estimate(index) : estimate;
231
+ }
232
+ });
233
+ const renderedSize = computed(() => {
234
+ if (!virtualizer) {
235
+ return 0;
236
+ }
237
+ const virtualItems = virtualizer.value.getVirtualItems();
238
+ if (!virtualItems?.length) {
239
+ return 0;
240
+ }
241
+ return virtualItems.reduce((sum, item) => sum + item.size, 0);
229
242
  });
230
243
  function valueUpdater(updaterOrValue, ref2) {
231
244
  ref2.value = typeof updaterOrValue === "function" ? updaterOrValue(ref2.value) : updaterOrValue;
@@ -285,6 +298,7 @@ defineExpose({
285
298
  :data-expanded="row.getIsExpanded()"
286
299
  :role="props.onSelect ? 'button' : void 0"
287
300
  :tabindex="props.onSelect ? 0 : void 0"
301
+ data-slot="tr"
288
302
  :class="ui.tr({
289
303
  class: [
290
304
  props.ui?.tr,
@@ -303,6 +317,7 @@ defineExpose({
303
317
  :data-pinned="cell.column.getIsPinned()"
304
318
  :colspan="resolveValue(cell.column.columnDef.meta?.colspan?.td, cell)"
305
319
  :rowspan="resolveValue(cell.column.columnDef.meta?.rowspan?.td, cell)"
320
+ data-slot="td"
306
321
  :class="ui.td({
307
322
  class: [
308
323
  props.ui?.td,
@@ -318,23 +333,23 @@ defineExpose({
318
333
  </td>
319
334
  </tr>
320
335
 
321
- <tr v-if="row.getIsExpanded()" :class="ui.tr({ class: [props.ui?.tr] })">
322
- <td :colspan="row.getAllCells().length" :class="ui.td({ class: [props.ui?.td] })">
336
+ <tr v-if="row.getIsExpanded()" data-slot="tr" :class="ui.tr({ class: [props.ui?.tr] })">
337
+ <td :colspan="row.getAllCells().length" data-slot="td" :class="ui.td({ class: [props.ui?.td] })">
323
338
  <slot name="expanded" :row="row" />
324
339
  </td>
325
340
  </tr>
326
341
  </DefineRowTemplate>
327
342
 
328
343
  <DefineTableTemplate>
329
- <table ref="tableRef" :class="ui.base({ class: [props.ui?.base] })">
330
- <caption v-if="caption || !!slots.caption" :class="ui.caption({ class: [props.ui?.caption] })">
344
+ <table ref="tableRef" data-slot="base" :class="ui.base({ class: [props.ui?.base] })">
345
+ <caption v-if="caption || !!slots.caption" data-slot="caption" :class="ui.caption({ class: [props.ui?.caption] })">
331
346
  <slot name="caption">
332
347
  {{ caption }}
333
348
  </slot>
334
349
  </caption>
335
350
 
336
- <thead :class="ui.thead({ class: [props.ui?.thead] })">
337
- <tr v-for="headerGroup in tableApi.getHeaderGroups()" :key="headerGroup.id" :class="ui.tr({ class: [props.ui?.tr] })">
351
+ <thead data-slot="thead" :class="ui.thead({ class: [props.ui?.thead] })">
352
+ <tr v-for="headerGroup in tableApi.getHeaderGroups()" :key="headerGroup.id" data-slot="tr" :class="ui.tr({ class: [props.ui?.tr] })">
338
353
  <th
339
354
  v-for="header in headerGroup.headers"
340
355
  :key="header.id"
@@ -342,6 +357,7 @@ defineExpose({
342
357
  :scope="header.colSpan > 1 ? 'colgroup' : 'col'"
343
358
  :colspan="header.colSpan > 1 ? header.colSpan : void 0"
344
359
  :rowspan="header.rowSpan > 1 ? header.rowSpan : void 0"
360
+ data-slot="th"
345
361
  :class="ui.th({
346
362
  class: [
347
363
  props.ui?.th,
@@ -349,6 +365,7 @@ defineExpose({
349
365
  ],
350
366
  pinned: !!header.column.getIsPinned()
351
367
  })"
368
+ :style="resolveValue(header.column.columnDef.meta?.style?.th, header)"
352
369
  >
353
370
  <slot :name="`${header.id}-header`" v-bind="header.getContext()">
354
371
  <FlexRender v-if="!header.isPlaceholder" :render="header.column.columnDef.header" :props="header.getContext()" />
@@ -356,10 +373,10 @@ defineExpose({
356
373
  </th>
357
374
  </tr>
358
375
 
359
- <tr :class="ui.separator({ class: [props.ui?.separator] })" />
376
+ <tr data-slot="separator" :class="ui.separator({ class: [props.ui?.separator] })" />
360
377
  </thead>
361
378
 
362
- <tbody :class="ui.tbody({ class: [props.ui?.tbody] })">
379
+ <tbody data-slot="tbody" :class="ui.tbody({ class: [props.ui?.tbody] })">
363
380
  <slot name="body-top" />
364
381
 
365
382
  <template v-if="rows.length">
@@ -381,13 +398,13 @@ defineExpose({
381
398
  </template>
382
399
 
383
400
  <tr v-else-if="loading && !!slots['loading']">
384
- <td :colspan="tableApi.getAllLeafColumns().length" :class="ui.loading({ class: props.ui?.loading })">
401
+ <td :colspan="tableApi.getAllLeafColumns().length" data-slot="loading" :class="ui.loading({ class: props.ui?.loading })">
385
402
  <slot name="loading" />
386
403
  </td>
387
404
  </tr>
388
405
 
389
406
  <tr v-else>
390
- <td :colspan="tableApi.getAllLeafColumns().length" :class="ui.empty({ class: props.ui?.empty })">
407
+ <td :colspan="tableApi.getAllLeafColumns().length" data-slot="empty" :class="ui.empty({ class: props.ui?.empty })">
391
408
  <slot name="empty">
392
409
  {{ empty || t("table.noData") }}
393
410
  </slot>
@@ -399,20 +416,22 @@ defineExpose({
399
416
 
400
417
  <tfoot
401
418
  v-if="hasFooter"
419
+ data-slot="tfoot"
402
420
  :class="ui.tfoot({ class: [props.ui?.tfoot] })"
403
421
  :style="virtualizer ? {
404
- transform: `translateY(${virtualizer.getTotalSize() - virtualizer.getVirtualItems().length * virtualizerProps.estimateSize}px)`
422
+ transform: `translateY(${virtualizer.getTotalSize() - renderedSize}px)`
405
423
  } : void 0"
406
424
  >
407
- <tr :class="ui.separator({ class: [props.ui?.separator] })" />
425
+ <tr data-slot="separator" :class="ui.separator({ class: [props.ui?.separator] })" />
408
426
 
409
- <tr v-for="footerGroup in tableApi.getFooterGroups()" :key="footerGroup.id" :class="ui.tr({ class: [props.ui?.tr] })">
427
+ <tr v-for="footerGroup in tableApi.getFooterGroups()" :key="footerGroup.id" data-slot="tr" :class="ui.tr({ class: [props.ui?.tr] })">
410
428
  <th
411
429
  v-for="header in footerGroup.headers"
412
430
  :key="header.id"
413
431
  :data-pinned="header.column.getIsPinned()"
414
432
  :colspan="header.colSpan > 1 ? header.colSpan : void 0"
415
433
  :rowspan="header.rowSpan > 1 ? header.rowSpan : void 0"
434
+ data-slot="th"
416
435
  :class="ui.th({
417
436
  class: [
418
437
  props.ui?.th,
@@ -431,7 +450,7 @@ defineExpose({
431
450
  </table>
432
451
  </DefineTableTemplate>
433
452
 
434
- <Primitive ref="rootRef" :as="as" v-bind="$attrs" :class="ui.root({ class: [props.ui?.root, props.class] })">
453
+ <Primitive ref="rootRef" :as="as" v-bind="$attrs" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
435
454
  <div
436
455
  v-if="virtualizer"
437
456
  :style="{
@@ -1,9 +1,10 @@
1
- import type { Ref, WatchOptions } from 'vue';
1
+ import type { WatchOptions } from 'vue';
2
2
  import type { AppConfig } from '@nuxt/schema';
3
3
  import type { Cell, Header, RowData, TableMeta } from '@tanstack/table-core';
4
4
  import type { CellContext, ColumnDef, ColumnFiltersOptions, ColumnFiltersState, ColumnOrderState, ColumnPinningOptions, ColumnPinningState, ColumnSizingInfoState, ColumnSizingOptions, ColumnSizingState, CoreOptions, ExpandedOptions, ExpandedState, FacetedOptions, GlobalFilterOptions, GroupingOptions, GroupingState, HeaderContext, PaginationOptions, PaginationState, Row, RowPinningOptions, RowPinningState, RowSelectionOptions, RowSelectionState, SortingOptions, SortingState, VisibilityOptions, VisibilityState } from '@tanstack/vue-table';
5
5
  import type { VirtualizerOptions } from '@tanstack/vue-virtual';
6
6
  import theme from '#build/ui/table';
7
+ import type { TableHTMLAttributes } from '../types/html';
7
8
  import type { ComponentConfig } from '../types/tv';
8
9
  declare module '@tanstack/table-core' {
9
10
  interface ColumnMeta<TData extends RowData, TValue> {
@@ -40,7 +41,7 @@ export interface TableOptions<T extends TableData = TableData> extends Omit<Core
40
41
  onStateChange?: CoreOptions<T>['onStateChange'];
41
42
  renderFallbackValue?: CoreOptions<T>['renderFallbackValue'];
42
43
  }
43
- export interface TableProps<T extends TableData = TableData> extends TableOptions<T> {
44
+ export interface TableProps<T extends TableData = TableData> extends TableOptions<T>, /** @vue-ignore */ TableHTMLAttributes {
44
45
  /**
45
46
  * The element or component this component should render as.
46
47
  * @defaultValue 'div'
@@ -62,10 +63,10 @@ export interface TableProps<T extends TableData = TableData> extends TableOption
62
63
  */
63
64
  overscan?: number;
64
65
  /**
65
- * Estimated size (in px) of each item
66
+ * Estimated size (in px) of each item, or a function that returns the size for a given index
66
67
  * @defaultValue 65
67
68
  */
68
- estimateSize?: number;
69
+ estimateSize?: number | ((index: number) => number);
69
70
  });
70
71
  /**
71
72
  * The text to display when the table is empty.
@@ -205,8 +206,8 @@ declare const __VLS_export: <T extends TableData>(__VLS_props: NonNullable<Await
205
206
  "onUpdate:pagination"?: ((value: PaginationState) => any) | undefined;
206
207
  }> & import("vue").PublicProps;
207
208
  expose: (exposed: import("vue").ShallowUnwrapRef<{
208
- readonly $el: any;
209
- tableRef: Ref<HTMLTableElement | null, HTMLTableElement | null>;
209
+ readonly $el: HTMLElement;
210
+ tableRef: Readonly<import("vue").ShallowRef<HTMLTableElement | null>>;
210
211
  tableApi: import("@tanstack/table-core").Table<T>;
211
212
  }>) => void;
212
213
  attrs: any;
@@ -51,10 +51,11 @@ defineExpose({
51
51
  :default-value="defaultValue"
52
52
  :orientation="orientation"
53
53
  :activation-mode="activationMode"
54
+ data-slot="root"
54
55
  :class="ui.root({ class: [props.ui?.root, props.class] })"
55
56
  >
56
- <TabsList :class="ui.list({ class: props.ui?.list })">
57
- <TabsIndicator :class="ui.indicator({ class: props.ui?.indicator })" />
57
+ <TabsList data-slot="list" :class="ui.list({ class: props.ui?.list })">
58
+ <TabsIndicator data-slot="indicator" :class="ui.indicator({ class: props.ui?.indicator })" />
58
59
 
59
60
  <slot name="list-leading" />
60
61
 
@@ -64,24 +65,26 @@ defineExpose({
64
65
  :ref="(el) => triggersRef[index] = el"
65
66
  :value="item.value ?? String(index)"
66
67
  :disabled="item.disabled"
68
+ data-slot="trigger"
67
69
  :class="ui.trigger({ class: [props.ui?.trigger, item.ui?.trigger] })"
68
70
  >
69
71
  <slot name="leading" :item="item" :index="index" :ui="ui">
70
- <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: [props.ui?.leadingIcon, item.ui?.leadingIcon] })" />
71
- <UAvatar v-else-if="item.avatar" :size="item.ui?.leadingAvatarSize || props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="item.avatar" :class="ui.leadingAvatar({ class: [props.ui?.leadingAvatar, item.ui?.leadingAvatar] })" />
72
+ <UIcon v-if="item.icon" :name="item.icon" data-slot="leadingIcon" :class="ui.leadingIcon({ class: [props.ui?.leadingIcon, item.ui?.leadingIcon] })" />
73
+ <UAvatar v-else-if="item.avatar" :size="item.ui?.leadingAvatarSize || props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="item.avatar" data-slot="leadingAvatar" :class="ui.leadingAvatar({ class: [props.ui?.leadingAvatar, item.ui?.leadingAvatar] })" />
72
74
  </slot>
73
75
 
74
- <span v-if="get(item, props.labelKey) || !!slots.default" :class="ui.label({ class: [props.ui?.label, item.ui?.label] })">
76
+ <span v-if="get(item, props.labelKey) || !!slots.default" data-slot="label" :class="ui.label({ class: [props.ui?.label, item.ui?.label] })">
75
77
  <slot :item="item" :index="index">{{ get(item, props.labelKey) }}</slot>
76
78
  </span>
77
79
 
78
80
  <slot name="trailing" :item="item" :index="index" :ui="ui">
79
81
  <UBadge
80
- v-if="item.badge !== void 0"
82
+ v-if="item.badge || item.badge === 0"
81
83
  color="neutral"
82
84
  variant="outline"
83
85
  :size="item.ui?.trailingBadgeSize || props.ui?.trailingBadgeSize || ui.trailingBadgeSize()"
84
86
  v-bind="typeof item.badge === 'string' || typeof item.badge === 'number' ? { label: item.badge } : item.badge"
87
+ data-slot="trailingBadge"
85
88
  :class="ui.trailingBadge({ class: [props.ui?.trailingBadge, item.ui?.trailingBadge] })"
86
89
  />
87
90
  </slot>
@@ -91,7 +94,7 @@ defineExpose({
91
94
  </TabsList>
92
95
 
93
96
  <template v-if="!!content">
94
- <TabsContent v-for="(item, index) of items" :key="index" :value="item.value ?? String(index)" :class="ui.content({ class: [props.ui?.content, item.ui?.content, item.class] })">
97
+ <TabsContent v-for="(item, index) of items" :key="index" :value="item.value ?? String(index)" data-slot="content" :class="ui.content({ class: [props.ui?.content, item.ui?.content, item.class] })">
95
98
  <slot :name="item.slot || 'content'" :item="item" :index="index" :ui="ui">
96
99
  {{ item.content }}
97
100
  </slot>
@@ -1,11 +1,12 @@
1
1
  import type { AppConfig } from '@nuxt/schema';
2
2
  import theme from '#build/ui/textarea';
3
3
  import type { UseComponentIconsProps } from '../composables/useComponentIcons';
4
+ import type { TextareaHTMLAttributes } from '../types/html';
4
5
  import type { ModelModifiers } from '../types/input';
5
6
  import type { ComponentConfig } from '../types/tv';
6
7
  type Textarea = ComponentConfig<typeof theme, AppConfig, 'textarea'>;
7
8
  type TextareaValue = string | number | null;
8
- export interface TextareaProps<T extends TextareaValue = TextareaValue> extends UseComponentIconsProps {
9
+ export interface TextareaProps<T extends TextareaValue = TextareaValue> extends UseComponentIconsProps, /** @vue-ignore */ Omit<TextareaHTMLAttributes, 'name' | 'placeholder' | 'required' | 'autofocus' | 'disabled' | 'rows'> {
9
10
  /**
10
11
  * The element or component this component should render as.
11
12
  * @defaultValue 'div'
@@ -39,7 +40,7 @@ export interface TextareaProps<T extends TextareaValue = TextareaValue> extends
39
40
  highlight?: boolean;
40
41
  modelValue?: T;
41
42
  defaultValue?: T;
42
- modelModifiers?: ModelModifiers;
43
+ modelModifiers?: ModelModifiers<T>;
43
44
  class?: any;
44
45
  ui?: Textarea['slots'];
45
46
  }
@@ -61,16 +62,16 @@ export interface TextareaSlots {
61
62
  }
62
63
  declare const __VLS_export: <T extends TextareaValue>(__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<{
63
64
  props: __VLS_PrettifyLocal<TextareaProps<T> & {
64
- onBlur?: ((event: FocusEvent) => any) | undefined;
65
65
  onChange?: ((event: Event) => any) | undefined;
66
+ onBlur?: ((event: FocusEvent) => any) | undefined;
66
67
  "onUpdate:modelValue"?: ((value: T) => any) | undefined;
67
68
  }> & import("vue").PublicProps;
68
69
  expose: (exposed: import("vue").ShallowUnwrapRef<{
69
- textareaRef: import("vue").Ref<HTMLTextAreaElement | null, HTMLTextAreaElement | null>;
70
+ textareaRef: Readonly<import("vue").ShallowRef<HTMLTextAreaElement | null>>;
70
71
  }>) => void;
71
72
  attrs: any;
72
73
  slots: TextareaSlots;
73
- emit: ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: T) => void);
74
+ emit: ((evt: "change", event: Event) => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "update:modelValue", value: T) => void);
74
75
  }>) => import("vue").VNode & {
75
76
  __ctx?: Awaited<typeof __VLS_setup>;
76
77
  };
@@ -3,7 +3,7 @@ import theme from "#build/ui/textarea";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { ref, computed, onMounted, nextTick, watch } from "vue";
6
+ import { useTemplateRef, computed, onMounted, nextTick, watch } from "vue";
7
7
  import { Primitive } from "reka-ui";
8
8
  import { useVModel } from "@vueuse/core";
9
9
  import { useAppConfig } from "#imports";
@@ -36,14 +36,14 @@ const props = defineProps({
36
36
  modelModifiers: { type: Object, required: false },
37
37
  class: { type: null, required: false },
38
38
  ui: { type: null, required: false },
39
- icon: { type: [String, Object], required: false },
39
+ icon: { type: null, required: false },
40
40
  avatar: { type: Object, required: false },
41
41
  leading: { type: Boolean, required: false },
42
- leadingIcon: { type: [String, Object], required: false },
42
+ leadingIcon: { type: null, required: false },
43
43
  trailing: { type: Boolean, required: false },
44
- trailingIcon: { type: [String, Object], required: false },
44
+ trailingIcon: { type: null, required: false },
45
45
  loading: { type: Boolean, required: false },
46
- loadingIcon: { type: [String, Object], required: false }
46
+ loadingIcon: { type: null, required: false }
47
47
  });
48
48
  const emits = defineEmits(["update:modelValue", "blur", "change"]);
49
49
  const slots = defineSlots();
@@ -61,7 +61,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.textarea || {
61
61
  leading: isLeading.value || !!props.avatar || !!slots.leading,
62
62
  trailing: isTrailing.value || !!slots.trailing
63
63
  }));
64
- const textareaRef = ref(null);
64
+ const textareaRef = useTemplateRef("textareaRef");
65
65
  function updateInput(value) {
66
66
  if (props.modelModifiers?.trim) {
67
67
  value = value?.trim() ?? null;
@@ -139,7 +139,7 @@ defineExpose({
139
139
  </script>
140
140
 
141
141
  <template>
142
- <Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
142
+ <Primitive :as="as" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
143
143
  <textarea
144
144
  :id="id"
145
145
  ref="textareaRef"
@@ -147,6 +147,7 @@ defineExpose({
147
147
  :name="name"
148
148
  :rows="rows"
149
149
  :placeholder="placeholder"
150
+ data-slot="base"
150
151
  :class="ui.base({ class: props.ui?.base })"
151
152
  :disabled="disabled"
152
153
  :required="required"
@@ -159,16 +160,16 @@ defineExpose({
159
160
 
160
161
  <slot :ui="ui" />
161
162
 
162
- <span v-if="isLeading || !!avatar || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })">
163
+ <span v-if="isLeading || !!avatar || !!slots.leading" data-slot="leading" :class="ui.leading({ class: props.ui?.leading })">
163
164
  <slot name="leading" :ui="ui">
164
- <UIcon v-if="isLeading && leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
165
- <UAvatar v-else-if="!!avatar" :size="props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
165
+ <UIcon v-if="isLeading && leadingIconName" :name="leadingIconName" data-slot="leadingIcon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
166
+ <UAvatar v-else-if="!!avatar" :size="props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="avatar" data-slot="leadingAvatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
166
167
  </slot>
167
168
  </span>
168
169
 
169
- <span v-if="isTrailing || !!slots.trailing" :class="ui.trailing({ class: props.ui?.trailing })">
170
+ <span v-if="isTrailing || !!slots.trailing" data-slot="trailing" :class="ui.trailing({ class: props.ui?.trailing })">
170
171
  <slot name="trailing" :ui="ui">
171
- <UIcon v-if="trailingIconName" :name="trailingIconName" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
172
+ <UIcon v-if="trailingIconName" :name="trailingIconName" data-slot="trailingIcon" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
172
173
  </slot>
173
174
  </span>
174
175
  </Primitive>
@@ -1,11 +1,12 @@
1
1
  import type { AppConfig } from '@nuxt/schema';
2
2
  import theme from '#build/ui/textarea';
3
3
  import type { UseComponentIconsProps } from '../composables/useComponentIcons';
4
+ import type { TextareaHTMLAttributes } from '../types/html';
4
5
  import type { ModelModifiers } from '../types/input';
5
6
  import type { ComponentConfig } from '../types/tv';
6
7
  type Textarea = ComponentConfig<typeof theme, AppConfig, 'textarea'>;
7
8
  type TextareaValue = string | number | null;
8
- export interface TextareaProps<T extends TextareaValue = TextareaValue> extends UseComponentIconsProps {
9
+ export interface TextareaProps<T extends TextareaValue = TextareaValue> extends UseComponentIconsProps, /** @vue-ignore */ Omit<TextareaHTMLAttributes, 'name' | 'placeholder' | 'required' | 'autofocus' | 'disabled' | 'rows'> {
9
10
  /**
10
11
  * The element or component this component should render as.
11
12
  * @defaultValue 'div'
@@ -39,7 +40,7 @@ export interface TextareaProps<T extends TextareaValue = TextareaValue> extends
39
40
  highlight?: boolean;
40
41
  modelValue?: T;
41
42
  defaultValue?: T;
42
- modelModifiers?: ModelModifiers;
43
+ modelModifiers?: ModelModifiers<T>;
43
44
  class?: any;
44
45
  ui?: Textarea['slots'];
45
46
  }
@@ -61,16 +62,16 @@ export interface TextareaSlots {
61
62
  }
62
63
  declare const __VLS_export: <T extends TextareaValue>(__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<{
63
64
  props: __VLS_PrettifyLocal<TextareaProps<T> & {
64
- onBlur?: ((event: FocusEvent) => any) | undefined;
65
65
  onChange?: ((event: Event) => any) | undefined;
66
+ onBlur?: ((event: FocusEvent) => any) | undefined;
66
67
  "onUpdate:modelValue"?: ((value: T) => any) | undefined;
67
68
  }> & import("vue").PublicProps;
68
69
  expose: (exposed: import("vue").ShallowUnwrapRef<{
69
- textareaRef: import("vue").Ref<HTMLTextAreaElement | null, HTMLTextAreaElement | null>;
70
+ textareaRef: Readonly<import("vue").ShallowRef<HTMLTextAreaElement | null>>;
70
71
  }>) => void;
71
72
  attrs: any;
72
73
  slots: TextareaSlots;
73
- emit: ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: T) => void);
74
+ emit: ((evt: "change", event: Event) => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "update:modelValue", value: T) => void);
74
75
  }>) => import("vue").VNode & {
75
76
  __ctx?: Awaited<typeof __VLS_setup>;
76
77
  };