@nuxt/ui 4.9.0 → 4.11.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 (603) hide show
  1. package/.nuxt/ui.static.css +11 -11
  2. package/README.md +1 -0
  3. package/cli/commands/make/locale.mjs +40 -11
  4. package/cli/templates.mjs +2 -2
  5. package/dist/module.d.mts +1 -1
  6. package/dist/module.json +2 -2
  7. package/dist/module.mjs +10 -2
  8. package/dist/runtime/components/Accordion.d.vue.ts +2 -2
  9. package/dist/runtime/components/Accordion.vue +1 -1
  10. package/dist/runtime/components/Accordion.vue.d.ts +2 -2
  11. package/dist/runtime/components/Alert.d.vue.ts +4 -1
  12. package/dist/runtime/components/Alert.vue +1 -1
  13. package/dist/runtime/components/Alert.vue.d.ts +4 -1
  14. package/dist/runtime/components/App.d.vue.ts +3 -3
  15. package/dist/runtime/components/App.vue.d.ts +3 -3
  16. package/dist/runtime/components/AuthForm.d.vue.ts +18 -9
  17. package/dist/runtime/components/AuthForm.vue +22 -13
  18. package/dist/runtime/components/AuthForm.vue.d.ts +18 -9
  19. package/dist/runtime/components/Avatar.d.vue.ts +2 -1
  20. package/dist/runtime/components/Avatar.vue +3 -3
  21. package/dist/runtime/components/Avatar.vue.d.ts +2 -1
  22. package/dist/runtime/components/AvatarGroup.vue +1 -1
  23. package/dist/runtime/components/Badge.vue +1 -1
  24. package/dist/runtime/components/Banner.d.vue.ts +3 -1
  25. package/dist/runtime/components/Banner.vue +4 -3
  26. package/dist/runtime/components/Banner.vue.d.ts +3 -1
  27. package/dist/runtime/components/BlogPost.d.vue.ts +5 -3
  28. package/dist/runtime/components/BlogPost.vue +11 -4
  29. package/dist/runtime/components/BlogPost.vue.d.ts +5 -3
  30. package/dist/runtime/components/BlogPosts.d.vue.ts +2 -2
  31. package/dist/runtime/components/BlogPosts.vue +1 -1
  32. package/dist/runtime/components/BlogPosts.vue.d.ts +2 -2
  33. package/dist/runtime/components/Breadcrumb.d.vue.ts +4 -2
  34. package/dist/runtime/components/Breadcrumb.vue +1 -1
  35. package/dist/runtime/components/Breadcrumb.vue.d.ts +4 -2
  36. package/dist/runtime/components/Button.d.vue.ts +2 -2
  37. package/dist/runtime/components/Button.vue +13 -4
  38. package/dist/runtime/components/Button.vue.d.ts +2 -2
  39. package/dist/runtime/components/Calendar.d.vue.ts +4 -2
  40. package/dist/runtime/components/Calendar.vue +1 -1
  41. package/dist/runtime/components/Calendar.vue.d.ts +4 -2
  42. package/dist/runtime/components/Card.vue +1 -1
  43. package/dist/runtime/components/Carousel.d.vue.ts +4 -2
  44. package/dist/runtime/components/Carousel.vue +2 -5
  45. package/dist/runtime/components/Carousel.vue.d.ts +4 -2
  46. package/dist/runtime/components/ChangelogVersion.d.vue.ts +4 -2
  47. package/dist/runtime/components/ChangelogVersion.vue +4 -4
  48. package/dist/runtime/components/ChangelogVersion.vue.d.ts +4 -2
  49. package/dist/runtime/components/ChangelogVersions.d.vue.ts +2 -2
  50. package/dist/runtime/components/ChangelogVersions.vue +1 -1
  51. package/dist/runtime/components/ChangelogVersions.vue.d.ts +2 -2
  52. package/dist/runtime/components/ChatMessage.d.vue.ts +4 -2
  53. package/dist/runtime/components/ChatMessage.vue +1 -1
  54. package/dist/runtime/components/ChatMessage.vue.d.ts +4 -2
  55. package/dist/runtime/components/ChatMessages.d.vue.ts +5 -2
  56. package/dist/runtime/components/ChatMessages.vue +4 -4
  57. package/dist/runtime/components/ChatMessages.vue.d.ts +5 -2
  58. package/dist/runtime/components/ChatPalette.vue +1 -1
  59. package/dist/runtime/components/ChatPrompt.d.vue.ts +15 -1
  60. package/dist/runtime/components/ChatPrompt.vue +31 -20
  61. package/dist/runtime/components/ChatPrompt.vue.d.ts +15 -1
  62. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +8 -6
  63. package/dist/runtime/components/ChatPromptSubmit.vue +1 -1
  64. package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +8 -6
  65. package/dist/runtime/components/ChatReasoning.d.vue.ts +2 -2
  66. package/dist/runtime/components/ChatReasoning.vue +1 -1
  67. package/dist/runtime/components/ChatReasoning.vue.d.ts +2 -2
  68. package/dist/runtime/components/ChatShimmer.vue +1 -1
  69. package/dist/runtime/components/ChatTool.d.vue.ts +9 -2
  70. package/dist/runtime/components/ChatTool.vue +20 -2
  71. package/dist/runtime/components/ChatTool.vue.d.ts +9 -2
  72. package/dist/runtime/components/Checkbox.d.vue.ts +3 -3
  73. package/dist/runtime/components/Checkbox.vue +14 -8
  74. package/dist/runtime/components/Checkbox.vue.d.ts +3 -3
  75. package/dist/runtime/components/CheckboxGroup.d.vue.ts +8 -2
  76. package/dist/runtime/components/CheckboxGroup.vue +10 -4
  77. package/dist/runtime/components/CheckboxGroup.vue.d.ts +8 -2
  78. package/dist/runtime/components/Chip.vue +3 -3
  79. package/dist/runtime/components/Collapsible.vue +1 -1
  80. package/dist/runtime/components/ColorPicker.vue +1 -1
  81. package/dist/runtime/components/CommandPalette.d.vue.ts +13 -7
  82. package/dist/runtime/components/CommandPalette.vue +2 -2
  83. package/dist/runtime/components/CommandPalette.vue.d.ts +13 -7
  84. package/dist/runtime/components/Container.vue +1 -1
  85. package/dist/runtime/components/ContextMenu.d.vue.ts +5 -2
  86. package/dist/runtime/components/ContextMenu.vue +1 -1
  87. package/dist/runtime/components/ContextMenu.vue.d.ts +5 -2
  88. package/dist/runtime/components/ContextMenuContent.d.vue.ts +3 -2
  89. package/dist/runtime/components/ContextMenuContent.vue +1 -0
  90. package/dist/runtime/components/ContextMenuContent.vue.d.ts +3 -2
  91. package/dist/runtime/components/DashboardGroup.d.vue.ts +1 -1
  92. package/dist/runtime/components/DashboardGroup.vue +1 -1
  93. package/dist/runtime/components/DashboardGroup.vue.d.ts +1 -1
  94. package/dist/runtime/components/DashboardNavbar.d.vue.ts +3 -1
  95. package/dist/runtime/components/DashboardNavbar.vue +2 -2
  96. package/dist/runtime/components/DashboardNavbar.vue.d.ts +3 -1
  97. package/dist/runtime/components/DashboardPanel.vue +2 -2
  98. package/dist/runtime/components/DashboardResizeHandle.vue +1 -1
  99. package/dist/runtime/components/DashboardSearch.d.vue.ts +8 -4
  100. package/dist/runtime/components/DashboardSearch.vue +3 -2
  101. package/dist/runtime/components/DashboardSearch.vue.d.ts +8 -4
  102. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +7 -3
  103. package/dist/runtime/components/DashboardSearchButton.vue +1 -1
  104. package/dist/runtime/components/DashboardSearchButton.vue.d.ts +7 -3
  105. package/dist/runtime/components/DashboardSidebar.d.vue.ts +6 -2
  106. package/dist/runtime/components/DashboardSidebar.vue +2 -2
  107. package/dist/runtime/components/DashboardSidebar.vue.d.ts +6 -2
  108. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +3 -2
  109. package/dist/runtime/components/DashboardSidebarCollapse.vue +1 -1
  110. package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +3 -2
  111. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +3 -2
  112. package/dist/runtime/components/DashboardSidebarToggle.vue +1 -1
  113. package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +3 -2
  114. package/dist/runtime/components/DashboardToolbar.vue +1 -1
  115. package/dist/runtime/components/Drawer.d.vue.ts +23 -4
  116. package/dist/runtime/components/Drawer.vue +39 -13
  117. package/dist/runtime/components/Drawer.vue.d.ts +23 -4
  118. package/dist/runtime/components/DropdownMenu.d.vue.ts +6 -2
  119. package/dist/runtime/components/DropdownMenu.vue +1 -1
  120. package/dist/runtime/components/DropdownMenu.vue.d.ts +6 -2
  121. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +6 -4
  122. package/dist/runtime/components/DropdownMenuContent.vue +1 -0
  123. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +6 -4
  124. package/dist/runtime/components/Editor.d.vue.ts +3 -2
  125. package/dist/runtime/components/Editor.vue +44 -18
  126. package/dist/runtime/components/Editor.vue.d.ts +3 -2
  127. package/dist/runtime/components/EditorDragHandle.d.vue.ts +5 -3
  128. package/dist/runtime/components/EditorDragHandle.vue +2 -2
  129. package/dist/runtime/components/EditorDragHandle.vue.d.ts +5 -3
  130. package/dist/runtime/components/EditorEmojiMenu.d.vue.ts +1 -1
  131. package/dist/runtime/components/EditorEmojiMenu.vue +1 -1
  132. package/dist/runtime/components/EditorEmojiMenu.vue.d.ts +1 -1
  133. package/dist/runtime/components/EditorMentionMenu.d.vue.ts +3 -2
  134. package/dist/runtime/components/EditorMentionMenu.vue +1 -1
  135. package/dist/runtime/components/EditorMentionMenu.vue.d.ts +3 -2
  136. package/dist/runtime/components/EditorSuggestionMenu.d.vue.ts +2 -2
  137. package/dist/runtime/components/EditorSuggestionMenu.vue +1 -1
  138. package/dist/runtime/components/EditorSuggestionMenu.vue.d.ts +2 -2
  139. package/dist/runtime/components/EditorToolbar.d.vue.ts +5 -2
  140. package/dist/runtime/components/EditorToolbar.vue +1 -1
  141. package/dist/runtime/components/EditorToolbar.vue.d.ts +5 -2
  142. package/dist/runtime/components/Empty.d.vue.ts +11 -1
  143. package/dist/runtime/components/Empty.vue +9 -5
  144. package/dist/runtime/components/Empty.vue.d.ts +11 -1
  145. package/dist/runtime/components/Error.d.vue.ts +3 -2
  146. package/dist/runtime/components/Error.vue +1 -1
  147. package/dist/runtime/components/Error.vue.d.ts +3 -2
  148. package/dist/runtime/components/FieldGroup.vue +1 -1
  149. package/dist/runtime/components/FileUpload.d.vue.ts +4 -2
  150. package/dist/runtime/components/FileUpload.vue +21 -13
  151. package/dist/runtime/components/FileUpload.vue.d.ts +4 -2
  152. package/dist/runtime/components/Footer.vue +1 -1
  153. package/dist/runtime/components/FooterColumns.d.vue.ts +3 -2
  154. package/dist/runtime/components/FooterColumns.vue +1 -1
  155. package/dist/runtime/components/FooterColumns.vue.d.ts +3 -2
  156. package/dist/runtime/components/Form.d.vue.ts +2 -2
  157. package/dist/runtime/components/Form.vue +1 -1
  158. package/dist/runtime/components/Form.vue.d.ts +2 -2
  159. package/dist/runtime/components/FormField.vue +1 -1
  160. package/dist/runtime/components/Header.d.vue.ts +6 -2
  161. package/dist/runtime/components/Header.vue +2 -2
  162. package/dist/runtime/components/Header.vue.d.ts +6 -2
  163. package/dist/runtime/components/Input.d.vue.ts +1 -1
  164. package/dist/runtime/components/Input.vue +15 -10
  165. package/dist/runtime/components/Input.vue.d.ts +1 -1
  166. package/dist/runtime/components/InputDate.d.vue.ts +2 -2
  167. package/dist/runtime/components/InputDate.vue +16 -11
  168. package/dist/runtime/components/InputDate.vue.d.ts +2 -2
  169. package/dist/runtime/components/InputMenu.d.vue.ts +49 -45
  170. package/dist/runtime/components/InputMenu.vue +32 -15
  171. package/dist/runtime/components/InputMenu.vue.d.ts +49 -45
  172. package/dist/runtime/components/InputNumber.d.vue.ts +4 -2
  173. package/dist/runtime/components/InputNumber.vue +16 -11
  174. package/dist/runtime/components/InputNumber.vue.d.ts +4 -2
  175. package/dist/runtime/components/InputRating.d.vue.ts +79 -0
  176. package/dist/runtime/components/InputRating.vue +112 -0
  177. package/dist/runtime/components/InputRating.vue.d.ts +79 -0
  178. package/dist/runtime/components/InputTags.d.vue.ts +2 -2
  179. package/dist/runtime/components/InputTags.vue +14 -9
  180. package/dist/runtime/components/InputTags.vue.d.ts +2 -2
  181. package/dist/runtime/components/InputTime.d.vue.ts +2 -2
  182. package/dist/runtime/components/InputTime.vue +15 -10
  183. package/dist/runtime/components/InputTime.vue.d.ts +2 -2
  184. package/dist/runtime/components/Kbd.vue +1 -1
  185. package/dist/runtime/components/Link.d.vue.ts +2 -2
  186. package/dist/runtime/components/Link.vue +18 -10
  187. package/dist/runtime/components/Link.vue.d.ts +2 -2
  188. package/dist/runtime/components/LinkBase.d.vue.ts +3 -3
  189. package/dist/runtime/components/LinkBase.vue.d.ts +3 -3
  190. package/dist/runtime/components/Listbox.d.vue.ts +16 -13
  191. package/dist/runtime/components/Listbox.vue +12 -8
  192. package/dist/runtime/components/Listbox.vue.d.ts +16 -13
  193. package/dist/runtime/components/Main.vue +1 -1
  194. package/dist/runtime/components/Marquee.vue +1 -1
  195. package/dist/runtime/components/Modal.d.vue.ts +8 -6
  196. package/dist/runtime/components/Modal.vue +17 -9
  197. package/dist/runtime/components/Modal.vue.d.ts +8 -6
  198. package/dist/runtime/components/NavigationMenu.d.vue.ts +8 -2
  199. package/dist/runtime/components/NavigationMenu.vue +2 -2
  200. package/dist/runtime/components/NavigationMenu.vue.d.ts +8 -2
  201. package/dist/runtime/components/Page.vue +1 -1
  202. package/dist/runtime/components/PageAnchors.d.vue.ts +3 -2
  203. package/dist/runtime/components/PageAnchors.vue +1 -1
  204. package/dist/runtime/components/PageAnchors.vue.d.ts +3 -2
  205. package/dist/runtime/components/PageAside.vue +1 -1
  206. package/dist/runtime/components/PageBody.vue +1 -1
  207. package/dist/runtime/components/PageCTA.d.vue.ts +1 -1
  208. package/dist/runtime/components/PageCTA.vue +1 -1
  209. package/dist/runtime/components/PageCTA.vue.d.ts +1 -1
  210. package/dist/runtime/components/PageCard.d.vue.ts +3 -2
  211. package/dist/runtime/components/PageCard.vue +4 -3
  212. package/dist/runtime/components/PageCard.vue.d.ts +3 -2
  213. package/dist/runtime/components/PageColumns.vue +1 -1
  214. package/dist/runtime/components/PageFeature.d.vue.ts +3 -2
  215. package/dist/runtime/components/PageFeature.vue +10 -3
  216. package/dist/runtime/components/PageFeature.vue.d.ts +3 -2
  217. package/dist/runtime/components/PageGrid.vue +1 -1
  218. package/dist/runtime/components/PageHeader.d.vue.ts +1 -1
  219. package/dist/runtime/components/PageHeader.vue +1 -1
  220. package/dist/runtime/components/PageHeader.vue.d.ts +1 -1
  221. package/dist/runtime/components/PageHero.d.vue.ts +1 -1
  222. package/dist/runtime/components/PageHero.vue +1 -1
  223. package/dist/runtime/components/PageHero.vue.d.ts +1 -1
  224. package/dist/runtime/components/PageLinks.d.vue.ts +3 -2
  225. package/dist/runtime/components/PageLinks.vue +1 -1
  226. package/dist/runtime/components/PageLinks.vue.d.ts +3 -2
  227. package/dist/runtime/components/PageList.vue +1 -1
  228. package/dist/runtime/components/PageLogos.d.vue.ts +1 -1
  229. package/dist/runtime/components/PageLogos.vue +2 -2
  230. package/dist/runtime/components/PageLogos.vue.d.ts +1 -1
  231. package/dist/runtime/components/PageSection.d.vue.ts +4 -2
  232. package/dist/runtime/components/PageSection.vue +1 -1
  233. package/dist/runtime/components/PageSection.vue.d.ts +4 -2
  234. package/dist/runtime/components/Pagination.d.vue.ts +4 -3
  235. package/dist/runtime/components/Pagination.vue +1 -1
  236. package/dist/runtime/components/Pagination.vue.d.ts +4 -3
  237. package/dist/runtime/components/PinInput.d.vue.ts +1 -1
  238. package/dist/runtime/components/PinInput.vue +14 -9
  239. package/dist/runtime/components/PinInput.vue.d.ts +1 -1
  240. package/dist/runtime/components/Popover.d.vue.ts +4 -4
  241. package/dist/runtime/components/Popover.vue +4 -4
  242. package/dist/runtime/components/Popover.vue.d.ts +4 -4
  243. package/dist/runtime/components/PricingPlan.d.vue.ts +3 -1
  244. package/dist/runtime/components/PricingPlan.vue +2 -2
  245. package/dist/runtime/components/PricingPlan.vue.d.ts +3 -1
  246. package/dist/runtime/components/PricingPlans.d.vue.ts +2 -2
  247. package/dist/runtime/components/PricingPlans.vue +1 -1
  248. package/dist/runtime/components/PricingPlans.vue.d.ts +2 -2
  249. package/dist/runtime/components/PricingTable.d.vue.ts +3 -3
  250. package/dist/runtime/components/PricingTable.vue +2 -2
  251. package/dist/runtime/components/PricingTable.vue.d.ts +3 -3
  252. package/dist/runtime/components/Progress.d.vue.ts +2 -1
  253. package/dist/runtime/components/Progress.vue +6 -7
  254. package/dist/runtime/components/Progress.vue.d.ts +2 -1
  255. package/dist/runtime/components/ProgressGroup.d.vue.ts +91 -0
  256. package/dist/runtime/components/ProgressGroup.vue +99 -0
  257. package/dist/runtime/components/ProgressGroup.vue.d.ts +91 -0
  258. package/dist/runtime/components/RadioGroup.d.vue.ts +8 -2
  259. package/dist/runtime/components/RadioGroup.vue +15 -6
  260. package/dist/runtime/components/RadioGroup.vue.d.ts +8 -2
  261. package/dist/runtime/components/ScrollArea.d.vue.ts +8 -2
  262. package/dist/runtime/components/ScrollArea.vue +25 -19
  263. package/dist/runtime/components/ScrollArea.vue.d.ts +8 -2
  264. package/dist/runtime/components/Select.d.vue.ts +4 -2
  265. package/dist/runtime/components/Select.vue +24 -10
  266. package/dist/runtime/components/Select.vue.d.ts +4 -2
  267. package/dist/runtime/components/SelectMenu.d.vue.ts +50 -45
  268. package/dist/runtime/components/SelectMenu.vue +28 -14
  269. package/dist/runtime/components/SelectMenu.vue.d.ts +50 -45
  270. package/dist/runtime/components/Separator.d.vue.ts +3 -2
  271. package/dist/runtime/components/Separator.vue +3 -2
  272. package/dist/runtime/components/Separator.vue.d.ts +3 -2
  273. package/dist/runtime/components/Sidebar.d.vue.ts +7 -2
  274. package/dist/runtime/components/Sidebar.vue +3 -3
  275. package/dist/runtime/components/Sidebar.vue.d.ts +7 -2
  276. package/dist/runtime/components/Skeleton.vue +1 -1
  277. package/dist/runtime/components/Slideover.d.vue.ts +9 -7
  278. package/dist/runtime/components/Slideover.vue +5 -4
  279. package/dist/runtime/components/Slideover.vue.d.ts +9 -7
  280. package/dist/runtime/components/Slider.d.vue.ts +2 -2
  281. package/dist/runtime/components/Slider.vue +15 -8
  282. package/dist/runtime/components/Slider.vue.d.ts +2 -2
  283. package/dist/runtime/components/Splitter.d.vue.ts +266 -0
  284. package/dist/runtime/components/Splitter.vue +99 -0
  285. package/dist/runtime/components/Splitter.vue.d.ts +266 -0
  286. package/dist/runtime/components/Stepper.d.vue.ts +2 -2
  287. package/dist/runtime/components/Stepper.vue +1 -1
  288. package/dist/runtime/components/Stepper.vue.d.ts +2 -2
  289. package/dist/runtime/components/Switch.d.vue.ts +2 -2
  290. package/dist/runtime/components/Switch.vue +10 -6
  291. package/dist/runtime/components/Switch.vue.d.ts +2 -2
  292. package/dist/runtime/components/Table.d.vue.ts +8 -2
  293. package/dist/runtime/components/Table.vue +13 -6
  294. package/dist/runtime/components/Table.vue.d.ts +8 -2
  295. package/dist/runtime/components/Tabs.d.vue.ts +4 -2
  296. package/dist/runtime/components/Tabs.vue +1 -1
  297. package/dist/runtime/components/Tabs.vue.d.ts +4 -2
  298. package/dist/runtime/components/Textarea.d.vue.ts +1 -1
  299. package/dist/runtime/components/Textarea.vue +20 -10
  300. package/dist/runtime/components/Textarea.vue.d.ts +1 -1
  301. package/dist/runtime/components/Theme.d.vue.ts +2 -2
  302. package/dist/runtime/components/Theme.vue +4 -3
  303. package/dist/runtime/components/Theme.vue.d.ts +2 -2
  304. package/dist/runtime/components/Timeline.d.vue.ts +3 -2
  305. package/dist/runtime/components/Timeline.vue +1 -1
  306. package/dist/runtime/components/Timeline.vue.d.ts +3 -2
  307. package/dist/runtime/components/Toast.d.vue.ts +7 -3
  308. package/dist/runtime/components/Toast.vue +1 -1
  309. package/dist/runtime/components/Toast.vue.d.ts +7 -3
  310. package/dist/runtime/components/Toaster.d.vue.ts +1 -1
  311. package/dist/runtime/components/Toaster.vue +1 -1
  312. package/dist/runtime/components/Toaster.vue.d.ts +1 -1
  313. package/dist/runtime/components/Tooltip.d.vue.ts +1 -1
  314. package/dist/runtime/components/Tooltip.vue +1 -1
  315. package/dist/runtime/components/Tooltip.vue.d.ts +1 -1
  316. package/dist/runtime/components/Tree.d.vue.ts +2 -2
  317. package/dist/runtime/components/Tree.vue +3 -3
  318. package/dist/runtime/components/Tree.vue.d.ts +2 -2
  319. package/dist/runtime/components/User.d.vue.ts +4 -2
  320. package/dist/runtime/components/User.vue +10 -3
  321. package/dist/runtime/components/User.vue.d.ts +4 -2
  322. package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +1 -1
  323. package/dist/runtime/components/color-mode/ColorModeAvatar.vue.d.ts +1 -1
  324. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +3 -2
  325. package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +3 -2
  326. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +1 -1
  327. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +1 -1
  328. package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
  329. package/dist/runtime/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
  330. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +4 -2
  331. package/dist/runtime/components/content/ContentNavigation.vue +11 -4
  332. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +4 -2
  333. package/dist/runtime/components/content/ContentSearch.d.vue.ts +8 -3
  334. package/dist/runtime/components/content/ContentSearch.vue +3 -2
  335. package/dist/runtime/components/content/ContentSearch.vue.d.ts +8 -3
  336. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +7 -3
  337. package/dist/runtime/components/content/ContentSearchButton.vue +1 -1
  338. package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +7 -3
  339. package/dist/runtime/components/content/ContentSurround.d.vue.ts +2 -2
  340. package/dist/runtime/components/content/ContentSurround.vue +2 -2
  341. package/dist/runtime/components/content/ContentSurround.vue.d.ts +2 -2
  342. package/dist/runtime/components/content/ContentToc.d.vue.ts +2 -2
  343. package/dist/runtime/components/content/ContentToc.vue +36 -7
  344. package/dist/runtime/components/content/ContentToc.vue.d.ts +2 -2
  345. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +1 -1
  346. package/dist/runtime/components/locale/LocaleSelect.vue +8 -0
  347. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +1 -1
  348. package/dist/runtime/components/prose/A.vue +1 -1
  349. package/dist/runtime/components/prose/Accordion.d.vue.ts +1 -1
  350. package/dist/runtime/components/prose/Accordion.vue +1 -1
  351. package/dist/runtime/components/prose/Accordion.vue.d.ts +1 -1
  352. package/dist/runtime/components/prose/AccordionItem.vue +1 -1
  353. package/dist/runtime/components/prose/Badge.vue +1 -1
  354. package/dist/runtime/components/prose/Blockquote.vue +1 -1
  355. package/dist/runtime/components/prose/Callout.d.vue.ts +2 -1
  356. package/dist/runtime/components/prose/Callout.vue +2 -2
  357. package/dist/runtime/components/prose/Callout.vue.d.ts +2 -1
  358. package/dist/runtime/components/prose/Card.d.vue.ts +2 -1
  359. package/dist/runtime/components/prose/Card.vue +2 -2
  360. package/dist/runtime/components/prose/Card.vue.d.ts +2 -1
  361. package/dist/runtime/components/prose/CardGroup.vue +1 -1
  362. package/dist/runtime/components/prose/Code.vue +1 -1
  363. package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +1 -1
  364. package/dist/runtime/components/prose/CodeCollapse.vue +1 -1
  365. package/dist/runtime/components/prose/CodeCollapse.vue.d.ts +1 -1
  366. package/dist/runtime/components/prose/CodeGroup.vue +1 -1
  367. package/dist/runtime/components/prose/CodeIcon.d.vue.ts +1 -1
  368. package/dist/runtime/components/prose/CodeIcon.vue.d.ts +1 -1
  369. package/dist/runtime/components/prose/CodePreview.vue +1 -1
  370. package/dist/runtime/components/prose/CodeTree.vue +1 -1
  371. package/dist/runtime/components/prose/Collapsible.d.vue.ts +2 -1
  372. package/dist/runtime/components/prose/Collapsible.vue +1 -1
  373. package/dist/runtime/components/prose/Collapsible.vue.d.ts +2 -1
  374. package/dist/runtime/components/prose/Em.vue +1 -1
  375. package/dist/runtime/components/prose/Field.vue +1 -1
  376. package/dist/runtime/components/prose/FieldGroup.vue +1 -1
  377. package/dist/runtime/components/prose/H1.d.vue.ts +5 -0
  378. package/dist/runtime/components/prose/H1.vue +3 -2
  379. package/dist/runtime/components/prose/H1.vue.d.ts +5 -0
  380. package/dist/runtime/components/prose/H2.d.vue.ts +6 -0
  381. package/dist/runtime/components/prose/H2.vue +3 -2
  382. package/dist/runtime/components/prose/H2.vue.d.ts +6 -0
  383. package/dist/runtime/components/prose/H3.d.vue.ts +6 -0
  384. package/dist/runtime/components/prose/H3.vue +3 -2
  385. package/dist/runtime/components/prose/H3.vue.d.ts +6 -0
  386. package/dist/runtime/components/prose/H4.d.vue.ts +6 -0
  387. package/dist/runtime/components/prose/H4.vue +3 -2
  388. package/dist/runtime/components/prose/H4.vue.d.ts +6 -0
  389. package/dist/runtime/components/prose/Hr.vue +1 -1
  390. package/dist/runtime/components/prose/Icon.vue +1 -1
  391. package/dist/runtime/components/prose/Img.vue +1 -1
  392. package/dist/runtime/components/prose/Kbd.vue +1 -1
  393. package/dist/runtime/components/prose/Li.vue +1 -1
  394. package/dist/runtime/components/prose/Ol.vue +1 -1
  395. package/dist/runtime/components/prose/P.vue +1 -1
  396. package/dist/runtime/components/prose/Pre.d.vue.ts +12 -2
  397. package/dist/runtime/components/prose/Pre.vue +6 -3
  398. package/dist/runtime/components/prose/Pre.vue.d.ts +12 -2
  399. package/dist/runtime/components/prose/Prompt.d.vue.ts +4 -3
  400. package/dist/runtime/components/prose/Prompt.vue +21 -11
  401. package/dist/runtime/components/prose/Prompt.vue.d.ts +4 -3
  402. package/dist/runtime/components/prose/Steps.vue +1 -1
  403. package/dist/runtime/components/prose/Strong.vue +1 -1
  404. package/dist/runtime/components/prose/Table.vue +1 -1
  405. package/dist/runtime/components/prose/Tabs.d.vue.ts +1 -1
  406. package/dist/runtime/components/prose/Tabs.vue +1 -1
  407. package/dist/runtime/components/prose/Tabs.vue.d.ts +1 -1
  408. package/dist/runtime/components/prose/TabsItem.vue +1 -1
  409. package/dist/runtime/components/prose/Tbody.vue +1 -1
  410. package/dist/runtime/components/prose/Td.vue +1 -1
  411. package/dist/runtime/components/prose/Th.vue +1 -1
  412. package/dist/runtime/components/prose/Thead.vue +1 -1
  413. package/dist/runtime/components/prose/Tr.vue +1 -1
  414. package/dist/runtime/components/prose/Ul.vue +1 -1
  415. package/dist/runtime/composables/defineShortcuts.js +42 -5
  416. package/dist/runtime/composables/useAvatarGroup.d.ts +3 -3
  417. package/dist/runtime/composables/useComponentIcons.d.ts +2 -1
  418. package/dist/runtime/composables/useComponentProps.d.ts +4 -158
  419. package/dist/runtime/composables/useComponentProps.js +10 -2
  420. package/dist/runtime/composables/useEditorMenu.d.ts +2 -1
  421. package/dist/runtime/composables/useEditorMenu.js +8 -2
  422. package/dist/runtime/composables/useFieldGroup.d.ts +1 -1
  423. package/dist/runtime/composables/useFileUpload.js +3 -4
  424. package/dist/runtime/composables/useFormField.d.ts +12 -6
  425. package/dist/runtime/composables/useFormField.js +10 -3
  426. package/dist/runtime/composables/useResizable.js +24 -43
  427. package/dist/runtime/composables/useScrollspy.js +20 -12
  428. package/dist/runtime/composables/useToast.d.ts +1 -1
  429. package/dist/runtime/composables/useToast.js +22 -7
  430. package/dist/runtime/keyframes.css +1 -1
  431. package/dist/runtime/locale/ar.d.ts +1 -1
  432. package/dist/runtime/locale/ar.js +3 -0
  433. package/dist/runtime/locale/az.d.ts +1 -1
  434. package/dist/runtime/locale/az.js +3 -0
  435. package/dist/runtime/locale/be.d.ts +1 -1
  436. package/dist/runtime/locale/be.js +3 -0
  437. package/dist/runtime/locale/bg.d.ts +1 -1
  438. package/dist/runtime/locale/bg.js +3 -0
  439. package/dist/runtime/locale/bn.d.ts +1 -1
  440. package/dist/runtime/locale/bn.js +3 -0
  441. package/dist/runtime/locale/ca.d.ts +1 -1
  442. package/dist/runtime/locale/ca.js +3 -0
  443. package/dist/runtime/locale/ckb.d.ts +1 -1
  444. package/dist/runtime/locale/ckb.js +3 -0
  445. package/dist/runtime/locale/cs.d.ts +1 -1
  446. package/dist/runtime/locale/cs.js +3 -0
  447. package/dist/runtime/locale/da.d.ts +1 -1
  448. package/dist/runtime/locale/da.js +4 -1
  449. package/dist/runtime/locale/de.d.ts +1 -1
  450. package/dist/runtime/locale/de.js +3 -0
  451. package/dist/runtime/locale/{tj.d.ts → de_at.d.ts} +1 -1
  452. package/dist/runtime/locale/de_at.js +7 -0
  453. package/dist/runtime/locale/de_ch.d.ts +1 -1
  454. package/dist/runtime/locale/de_ch.js +4 -1
  455. package/dist/runtime/locale/el.d.ts +1 -1
  456. package/dist/runtime/locale/el.js +3 -0
  457. package/dist/runtime/locale/en.d.ts +1 -1
  458. package/dist/runtime/locale/en.js +3 -0
  459. package/dist/runtime/locale/en_gb.d.ts +1 -1
  460. package/dist/runtime/locale/es.d.ts +1 -1
  461. package/dist/runtime/locale/es.js +3 -0
  462. package/dist/runtime/locale/et.d.ts +1 -1
  463. package/dist/runtime/locale/et.js +3 -0
  464. package/dist/runtime/locale/eu.d.ts +1 -1
  465. package/dist/runtime/locale/eu.js +4 -1
  466. package/dist/runtime/locale/fa_ir.d.ts +1 -1
  467. package/dist/runtime/locale/fa_ir.js +3 -0
  468. package/dist/runtime/locale/fi.d.ts +1 -1
  469. package/dist/runtime/locale/fi.js +4 -1
  470. package/dist/runtime/locale/fr.d.ts +1 -1
  471. package/dist/runtime/locale/fr.js +3 -0
  472. package/dist/runtime/locale/gl.d.ts +1 -1
  473. package/dist/runtime/locale/gl.js +3 -0
  474. package/dist/runtime/locale/he.d.ts +1 -1
  475. package/dist/runtime/locale/he.js +4 -1
  476. package/dist/runtime/locale/hi.d.ts +1 -1
  477. package/dist/runtime/locale/hi.js +4 -1
  478. package/dist/runtime/locale/hr.d.ts +1 -1
  479. package/dist/runtime/locale/hr.js +3 -0
  480. package/dist/runtime/locale/hu.d.ts +1 -1
  481. package/dist/runtime/locale/hu.js +3 -0
  482. package/dist/runtime/locale/hy.d.ts +1 -1
  483. package/dist/runtime/locale/hy.js +3 -0
  484. package/dist/runtime/locale/id.d.ts +1 -1
  485. package/dist/runtime/locale/id.js +3 -0
  486. package/dist/runtime/locale/index.d.ts +2 -1
  487. package/dist/runtime/locale/index.js +2 -1
  488. package/dist/runtime/locale/is.d.ts +1 -1
  489. package/dist/runtime/locale/is.js +4 -1
  490. package/dist/runtime/locale/it.d.ts +1 -1
  491. package/dist/runtime/locale/it.js +3 -0
  492. package/dist/runtime/locale/ja.d.ts +1 -1
  493. package/dist/runtime/locale/ja.js +3 -0
  494. package/dist/runtime/locale/ka.d.ts +1 -1
  495. package/dist/runtime/locale/ka.js +3 -0
  496. package/dist/runtime/locale/kk.d.ts +1 -1
  497. package/dist/runtime/locale/kk.js +3 -0
  498. package/dist/runtime/locale/km.d.ts +1 -1
  499. package/dist/runtime/locale/km.js +3 -0
  500. package/dist/runtime/locale/ko.d.ts +1 -1
  501. package/dist/runtime/locale/ko.js +3 -0
  502. package/dist/runtime/locale/ky.d.ts +1 -1
  503. package/dist/runtime/locale/ky.js +3 -0
  504. package/dist/runtime/locale/lb.d.ts +1 -1
  505. package/dist/runtime/locale/lb.js +4 -1
  506. package/dist/runtime/locale/lo.d.ts +1 -1
  507. package/dist/runtime/locale/lo.js +3 -0
  508. package/dist/runtime/locale/lt.d.ts +1 -1
  509. package/dist/runtime/locale/lt.js +3 -0
  510. package/dist/runtime/locale/lv.d.ts +1 -1
  511. package/dist/runtime/locale/lv.js +3 -0
  512. package/dist/runtime/locale/mn.d.ts +1 -1
  513. package/dist/runtime/locale/mn.js +3 -0
  514. package/dist/runtime/locale/ms.d.ts +1 -1
  515. package/dist/runtime/locale/ms.js +3 -0
  516. package/dist/runtime/locale/nb_no.d.ts +1 -1
  517. package/dist/runtime/locale/nb_no.js +3 -0
  518. package/dist/runtime/locale/nl.d.ts +1 -1
  519. package/dist/runtime/locale/nl.js +3 -0
  520. package/dist/runtime/locale/pl.d.ts +1 -1
  521. package/dist/runtime/locale/pl.js +3 -0
  522. package/dist/runtime/locale/pt.d.ts +1 -1
  523. package/dist/runtime/locale/pt.js +3 -0
  524. package/dist/runtime/locale/pt_br.d.ts +1 -1
  525. package/dist/runtime/locale/pt_br.js +3 -0
  526. package/dist/runtime/locale/ro.d.ts +1 -1
  527. package/dist/runtime/locale/ro.js +3 -0
  528. package/dist/runtime/locale/ru.d.ts +1 -1
  529. package/dist/runtime/locale/ru.js +3 -0
  530. package/dist/runtime/locale/sk.d.ts +1 -1
  531. package/dist/runtime/locale/sk.js +3 -0
  532. package/dist/runtime/locale/sl.d.ts +1 -1
  533. package/dist/runtime/locale/sl.js +3 -0
  534. package/dist/runtime/locale/sq.d.ts +1 -1
  535. package/dist/runtime/locale/sq.js +3 -0
  536. package/dist/runtime/locale/sv.d.ts +1 -1
  537. package/dist/runtime/locale/sv.js +3 -0
  538. package/dist/runtime/locale/tg.d.ts +3 -0
  539. package/dist/runtime/locale/{tj.js → tg.js} +4 -1
  540. package/dist/runtime/locale/th.d.ts +1 -1
  541. package/dist/runtime/locale/th.js +3 -0
  542. package/dist/runtime/locale/tr.d.ts +1 -1
  543. package/dist/runtime/locale/tr.js +3 -0
  544. package/dist/runtime/locale/ug_cn.d.ts +1 -1
  545. package/dist/runtime/locale/ug_cn.js +3 -0
  546. package/dist/runtime/locale/uk.d.ts +1 -1
  547. package/dist/runtime/locale/uk.js +3 -0
  548. package/dist/runtime/locale/ur.d.ts +1 -1
  549. package/dist/runtime/locale/ur.js +4 -1
  550. package/dist/runtime/locale/uz.d.ts +1 -1
  551. package/dist/runtime/locale/uz.js +3 -0
  552. package/dist/runtime/locale/vi.d.ts +1 -1
  553. package/dist/runtime/locale/vi.js +3 -0
  554. package/dist/runtime/locale/zh_cn.d.ts +1 -1
  555. package/dist/runtime/locale/zh_cn.js +3 -0
  556. package/dist/runtime/locale/zh_tw.d.ts +1 -1
  557. package/dist/runtime/locale/zh_tw.js +3 -0
  558. package/dist/runtime/plugins/colors.js +5 -1
  559. package/dist/runtime/types/form.d.ts +1 -1
  560. package/dist/runtime/types/html.d.ts +3 -1
  561. package/dist/runtime/types/icons.d.ts +5 -0
  562. package/dist/runtime/types/index.d.ts +4 -0
  563. package/dist/runtime/types/index.js +4 -0
  564. package/dist/runtime/types/locale.d.ts +3 -0
  565. package/dist/runtime/types/theme.d.ts +189 -0
  566. package/dist/runtime/types/theme.js +0 -0
  567. package/dist/runtime/types/tv.d.ts +8 -4
  568. package/dist/runtime/utils/ai.d.ts +10 -2
  569. package/dist/runtime/utils/ai.js +4 -1
  570. package/dist/runtime/utils/link-keys.d.ts +1 -0
  571. package/dist/runtime/utils/link-keys.js +40 -0
  572. package/dist/runtime/utils/link.d.ts +3 -2
  573. package/dist/runtime/utils/link.js +2 -40
  574. package/dist/runtime/utils/search.js +3 -12
  575. package/dist/runtime/utils/tv.d.ts +1 -1
  576. package/dist/runtime/utils/tv.js +103 -25
  577. package/dist/runtime/vue/components/Icon.d.vue.ts +1 -1
  578. package/dist/runtime/vue/components/Icon.vue +5 -2
  579. package/dist/runtime/vue/components/Icon.vue.d.ts +1 -1
  580. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +1 -1
  581. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +1 -1
  582. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
  583. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
  584. package/dist/runtime/vue/overrides/inertia/Link.d.vue.ts +2 -2
  585. package/dist/runtime/vue/overrides/inertia/Link.vue +2 -2
  586. package/dist/runtime/vue/overrides/inertia/Link.vue.d.ts +2 -2
  587. package/dist/runtime/vue/overrides/inertia/LinkBase.d.vue.ts +3 -3
  588. package/dist/runtime/vue/overrides/inertia/LinkBase.vue.d.ts +3 -3
  589. package/dist/runtime/vue/overrides/none/Link.d.vue.ts +2 -2
  590. package/dist/runtime/vue/overrides/none/Link.vue +8 -7
  591. package/dist/runtime/vue/overrides/none/Link.vue.d.ts +2 -2
  592. package/dist/runtime/vue/overrides/vue-router/Link.d.vue.ts +2 -2
  593. package/dist/runtime/vue/overrides/vue-router/Link.vue +2 -2
  594. package/dist/runtime/vue/overrides/vue-router/Link.vue.d.ts +2 -2
  595. package/dist/runtime/vue/plugins/icons.d.ts +4 -0
  596. package/dist/runtime/vue/plugins/icons.js +13 -0
  597. package/dist/runtime/vue/stubs/inertia.d.ts +1 -1
  598. package/dist/runtime/vue/stubs/inertia.js +3 -1
  599. package/dist/shared/{ui.BfHSFiIO.mjs → ui.DNq7CNkE.mjs} +800 -263
  600. package/dist/unplugin.d.mts +11 -4
  601. package/dist/unplugin.mjs +138 -10
  602. package/dist/vite.mjs +5 -3
  603. package/package.json +63 -54
@@ -21,9 +21,10 @@ export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' |
21
21
  */
22
22
  size?: Progress['variants']['size'];
23
23
  /**
24
+ * Any theme color, or any CSS color value for palettes outside the theme.
24
25
  * @defaultValue 'primary'
25
26
  */
26
- color?: Progress['variants']['color'];
27
+ color?: Progress['variants']['color'] | (string & {});
27
28
  /**
28
29
  * The orientation of the progress bar.
29
30
  * @defaultValue 'horizontal'
@@ -76,10 +76,7 @@ const indicatorStyle = computed(() => {
76
76
  }
77
77
  }
78
78
  });
79
- const statusStyle = computed(() => {
80
- const value = `${Math.max(percent.value ?? 0, 0)}%`;
81
- return props.orientation === "vertical" ? { height: value } : { width: value };
82
- });
79
+ const statusStyle = computed(() => ({ "--percent": `${Math.max(percent.value ?? 0, 0)}%` }));
83
80
  function isActive(index) {
84
81
  return index === Number(props.modelValue);
85
82
  }
@@ -102,13 +99,15 @@ function stepVariant(index) {
102
99
  }
103
100
  return "other";
104
101
  }
105
- const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.progress || {} })({
102
+ const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.progress || {} })({
106
103
  animation: props.animation,
107
104
  size: props.size,
108
105
  color: props.color,
109
106
  orientation: props.orientation,
110
107
  inverted: props.inverted
111
108
  }));
109
+ const themeColors = computed(() => Object.keys({ ...theme.variants?.color, ...appConfig.ui?.progress?.variants?.color }));
110
+ const customColor = computed(() => props.color && !themeColors.value.includes(props.color) ? props.color : void 0);
112
111
  </script>
113
112
 
114
113
  <template>
@@ -120,10 +119,10 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.progress || {
120
119
  </div>
121
120
 
122
121
  <ProgressRoot v-bind="rootProps" :max="realMax" data-slot="base" :class="ui.base({ class: props.ui?.base })" style="transform: translateZ(0)">
123
- <ProgressIndicator data-slot="indicator" :class="ui.indicator({ class: props.ui?.indicator })" :style="indicatorStyle" />
122
+ <ProgressIndicator data-slot="indicator" :class="ui.indicator({ class: props.ui?.indicator })" :style="[indicatorStyle, customColor ? { backgroundColor: customColor } : void 0]" />
124
123
  </ProgressRoot>
125
124
 
126
- <div v-if="hasSteps" data-slot="steps" :class="ui.steps({ class: props.ui?.steps })">
125
+ <div v-if="hasSteps" data-slot="steps" :class="ui.steps({ class: props.ui?.steps })" :style="customColor ? { color: customColor } : void 0">
127
126
  <div v-for="(step, index) in props.max" :key="index" data-slot="step" :class="ui.step({ class: props.ui?.step, step: stepVariant(index) })">
128
127
  <slot :name="`step-${index}`" :step="step">
129
128
  {{ step }}
@@ -21,9 +21,10 @@ export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' |
21
21
  */
22
22
  size?: Progress['variants']['size'];
23
23
  /**
24
+ * Any theme color, or any CSS color value for palettes outside the theme.
24
25
  * @defaultValue 'primary'
25
26
  */
26
- color?: Progress['variants']['color'];
27
+ color?: Progress['variants']['color'] | (string & {});
27
28
  /**
28
29
  * The orientation of the progress bar.
29
30
  * @defaultValue 'horizontal'
@@ -0,0 +1,91 @@
1
+ import type { VNode } from 'vue';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/ui/progress-group';
4
+ import type { IconProps } from './Icon.vue';
5
+ import type { DynamicSlots } from '../types/utils';
6
+ import type { ComponentConfig } from '../types/tv';
7
+ type ProgressGroup = ComponentConfig<typeof theme, AppConfig, 'progressGroup'>;
8
+ export interface ProgressGroupItem {
9
+ label?: string;
10
+ /**
11
+ * @IconifyIcon
12
+ */
13
+ icon?: IconProps['name'];
14
+ /** The part of `max` this segment takes up. */
15
+ value?: number;
16
+ /**
17
+ * Any theme color, or any CSS color value for palettes outside the theme.
18
+ * @defaultValue 'primary'
19
+ */
20
+ color?: ProgressGroup['variants']['color'] | (string & {});
21
+ slot?: string;
22
+ class?: any;
23
+ ui?: Pick<ProgressGroup['slots'], 'segment' | 'indicator' | 'item' | 'itemLeadingIcon' | 'itemLeadingDot' | 'itemLabel' | 'itemTrailing'>;
24
+ [key: string]: any;
25
+ }
26
+ export interface ProgressGroupProps<T extends ProgressGroupItem = ProgressGroupItem> {
27
+ /**
28
+ * The element or component this component should render as.
29
+ * @defaultValue 'div'
30
+ */
31
+ as?: any;
32
+ items?: T[];
33
+ /**
34
+ * The value all items add up to, used to compute each segment's share of the track.
35
+ * @defaultValue 100
36
+ */
37
+ max?: number;
38
+ /** Display the summed progress value. */
39
+ status?: boolean;
40
+ /**
41
+ * @defaultValue 'md'
42
+ */
43
+ size?: ProgressGroup['variants']['size'];
44
+ /**
45
+ * Any theme color, or any CSS color value for palettes outside the theme.
46
+ * @defaultValue 'primary'
47
+ */
48
+ color?: ProgressGroup['variants']['color'] | (string & {});
49
+ /**
50
+ * The orientation of the progress bar.
51
+ * @defaultValue 'horizontal'
52
+ */
53
+ orientation?: ProgressGroup['variants']['orientation'];
54
+ class?: any;
55
+ ui?: ProgressGroup['slots'];
56
+ }
57
+ type SlotProps<T extends ProgressGroupItem> = (props: {
58
+ item: T;
59
+ index: number;
60
+ percent: number;
61
+ }) => VNode[];
62
+ export type ProgressGroupSlots<T extends ProgressGroupItem = ProgressGroupItem> = {
63
+ 'status'?: (props: {
64
+ percent: number;
65
+ }) => VNode[];
66
+ 'item'?: SlotProps<T>;
67
+ 'item-leading'?: SlotProps<T>;
68
+ 'item-label'?: SlotProps<T>;
69
+ 'item-trailing'?: SlotProps<T>;
70
+ } & DynamicSlots<T, 'leading' | 'label' | 'trailing', {
71
+ index: number;
72
+ percent: number;
73
+ }>;
74
+ declare const _default: typeof __VLS_export;
75
+ export default _default;
76
+ declare const __VLS_export: <T extends ProgressGroupItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
77
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<ProgressGroupProps<T>> & (typeof globalThis extends {
78
+ __VLS_PROPS_FALLBACK: infer P;
79
+ } ? P : {});
80
+ expose: (exposed: {}) => void;
81
+ attrs: any;
82
+ slots: ProgressGroupSlots<T>;
83
+ emit: {};
84
+ }>) => import("vue").VNode & {
85
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
86
+ };
87
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
88
+ [K in keyof T]: T[K];
89
+ } : {
90
+ [K in keyof T as K]: T[K];
91
+ }) & {};
@@ -0,0 +1,99 @@
1
+ <script>
2
+ import theme from "#build/ui/progress-group";
3
+ </script>
4
+
5
+ <script setup>
6
+ import { computed } from "vue";
7
+ import { Primitive, ProgressRoot, ProgressIndicator } from "reka-ui";
8
+ import { useAppConfig } from "#imports";
9
+ import { useComponentProps } from "../composables/useComponentProps";
10
+ import { tv } from "../utils/tv";
11
+ import UIcon from "./Icon.vue";
12
+ const _props = defineProps({
13
+ as: { type: null, required: false },
14
+ items: { type: Array, required: false },
15
+ max: { type: Number, required: false, default: 100 },
16
+ status: { type: Boolean, required: false },
17
+ size: { type: null, required: false },
18
+ color: { type: null, required: false },
19
+ orientation: { type: null, required: false, default: "horizontal" },
20
+ class: { type: null, required: false },
21
+ ui: { type: Object, required: false }
22
+ });
23
+ const slots = defineSlots();
24
+ const props = useComponentProps("progressGroup", _props);
25
+ const appConfig = useAppConfig();
26
+ const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.progressGroup || {} })({
27
+ size: props.size,
28
+ color: props.color,
29
+ orientation: props.orientation
30
+ }));
31
+ const max = computed(() => {
32
+ const value = Number(props.max);
33
+ return Number.isFinite(value) && value > 0 ? value : 100;
34
+ });
35
+ const values = computed(() => (props.items ?? []).map((item) => Math.min(Math.max(Number(item.value) || 0, 0), max.value)));
36
+ const percents = computed(() => values.value.map((value) => value / max.value * 100));
37
+ const percent = computed(() => Math.min(100, Math.round(percents.value.reduce((total, value) => total + value, 0))));
38
+ const statusStyle = computed(() => ({ "--percent": `${percent.value}%` }));
39
+ const themeColors = computed(() => Object.keys({ ...theme.variants?.color, ...appConfig.ui?.progressGroup?.variants?.color }));
40
+ const itemColors = computed(() => (props.items ?? []).map((item) => item.color || props.color));
41
+ const customColors = computed(() => itemColors.value.map((color) => color && !themeColors.value.includes(color) ? color : void 0));
42
+ const hasList = computed(() => !!props.items?.length && (props.items.some((item) => item.label || item.icon || item.slot) || !!slots.item || !!slots["item-leading"] || !!slots["item-label"] || !!slots["item-trailing"]));
43
+ function segmentStyle(index) {
44
+ const value = `${percents.value[index] ?? 0}%`;
45
+ return props.orientation === "vertical" ? { height: value } : { width: value };
46
+ }
47
+ const valueLabels = computed(() => (props.items ?? []).map((item) => {
48
+ const label = item.label;
49
+ return label ? () => label : void 0;
50
+ }));
51
+ </script>
52
+
53
+ <template>
54
+ <Primitive :as="props.as" :data-orientation="props.orientation" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
55
+ <div v-if="props.status || !!slots.status" data-slot="status" :class="ui.status({ class: props.ui?.status })" :style="statusStyle">
56
+ <slot name="status" :percent="percent">
57
+ {{ percent }}%
58
+ </slot>
59
+ </div>
60
+
61
+ <div data-slot="base" :class="ui.base({ class: props.ui?.base })">
62
+ <ProgressRoot
63
+ v-for="(item, index) in props.items"
64
+ :key="index"
65
+ :model-value="values[index]"
66
+ :max="max"
67
+ :get-value-label="valueLabels[index]"
68
+ data-slot="segment"
69
+ :class="ui.segment({ class: [props.ui?.segment, item.ui?.segment] })"
70
+ :style="segmentStyle(index)"
71
+ >
72
+ <ProgressIndicator data-slot="indicator" :class="ui.indicator({ color: itemColors[index], class: [props.ui?.indicator, item.ui?.indicator] })" :style="customColors[index] ? { backgroundColor: customColors[index] } : void 0" />
73
+ </ProgressRoot>
74
+ </div>
75
+
76
+ <ul v-if="hasList" data-slot="list" :class="ui.list({ class: props.ui?.list })">
77
+ <li v-for="(item, index) in props.items" :key="index" data-slot="item" :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class] })">
78
+ <slot :name="item.slot || 'item'" :item="item" :index="index" :percent="percents[index] ?? 0">
79
+ <slot :name="item.slot ? `${item.slot}-leading` : 'item-leading'" :item="item" :index="index" :percent="percents[index] ?? 0">
80
+ <UIcon v-if="item.icon" :name="item.icon" data-slot="itemLeadingIcon" :class="ui.itemLeadingIcon({ color: itemColors[index], class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon] })" :style="customColors[index] ? { color: customColors[index] } : void 0" />
81
+ <span v-else data-slot="itemLeadingDot" :class="ui.itemLeadingDot({ color: itemColors[index], class: [props.ui?.itemLeadingDot, item.ui?.itemLeadingDot] })" :style="customColors[index] ? { backgroundColor: customColors[index] } : void 0" />
82
+ </slot>
83
+
84
+ <span v-if="item.label || !!slots[item.slot ? `${item.slot}-label` : 'item-label']" data-slot="itemLabel" :class="ui.itemLabel({ class: [props.ui?.itemLabel, item.ui?.itemLabel] })">
85
+ <slot :name="item.slot ? `${item.slot}-label` : 'item-label'" :item="item" :index="index" :percent="percents[index] ?? 0">
86
+ {{ item.label }}
87
+ </slot>
88
+ </span>
89
+
90
+ <span data-slot="itemTrailing" :class="ui.itemTrailing({ class: [props.ui?.itemTrailing, item.ui?.itemTrailing] })">
91
+ <slot :name="item.slot ? `${item.slot}-trailing` : 'item-trailing'" :item="item" :index="index" :percent="percents[index] ?? 0">
92
+ {{ Math.round(percents[index] ?? 0) }}%
93
+ </slot>
94
+ </span>
95
+ </slot>
96
+ </li>
97
+ </ul>
98
+ </Primitive>
99
+ </template>
@@ -0,0 +1,91 @@
1
+ import type { VNode } from 'vue';
2
+ import type { AppConfig } from '@nuxt/schema';
3
+ import theme from '#build/ui/progress-group';
4
+ import type { IconProps } from './Icon.vue';
5
+ import type { DynamicSlots } from '../types/utils';
6
+ import type { ComponentConfig } from '../types/tv';
7
+ type ProgressGroup = ComponentConfig<typeof theme, AppConfig, 'progressGroup'>;
8
+ export interface ProgressGroupItem {
9
+ label?: string;
10
+ /**
11
+ * @IconifyIcon
12
+ */
13
+ icon?: IconProps['name'];
14
+ /** The part of `max` this segment takes up. */
15
+ value?: number;
16
+ /**
17
+ * Any theme color, or any CSS color value for palettes outside the theme.
18
+ * @defaultValue 'primary'
19
+ */
20
+ color?: ProgressGroup['variants']['color'] | (string & {});
21
+ slot?: string;
22
+ class?: any;
23
+ ui?: Pick<ProgressGroup['slots'], 'segment' | 'indicator' | 'item' | 'itemLeadingIcon' | 'itemLeadingDot' | 'itemLabel' | 'itemTrailing'>;
24
+ [key: string]: any;
25
+ }
26
+ export interface ProgressGroupProps<T extends ProgressGroupItem = ProgressGroupItem> {
27
+ /**
28
+ * The element or component this component should render as.
29
+ * @defaultValue 'div'
30
+ */
31
+ as?: any;
32
+ items?: T[];
33
+ /**
34
+ * The value all items add up to, used to compute each segment's share of the track.
35
+ * @defaultValue 100
36
+ */
37
+ max?: number;
38
+ /** Display the summed progress value. */
39
+ status?: boolean;
40
+ /**
41
+ * @defaultValue 'md'
42
+ */
43
+ size?: ProgressGroup['variants']['size'];
44
+ /**
45
+ * Any theme color, or any CSS color value for palettes outside the theme.
46
+ * @defaultValue 'primary'
47
+ */
48
+ color?: ProgressGroup['variants']['color'] | (string & {});
49
+ /**
50
+ * The orientation of the progress bar.
51
+ * @defaultValue 'horizontal'
52
+ */
53
+ orientation?: ProgressGroup['variants']['orientation'];
54
+ class?: any;
55
+ ui?: ProgressGroup['slots'];
56
+ }
57
+ type SlotProps<T extends ProgressGroupItem> = (props: {
58
+ item: T;
59
+ index: number;
60
+ percent: number;
61
+ }) => VNode[];
62
+ export type ProgressGroupSlots<T extends ProgressGroupItem = ProgressGroupItem> = {
63
+ 'status'?: (props: {
64
+ percent: number;
65
+ }) => VNode[];
66
+ 'item'?: SlotProps<T>;
67
+ 'item-leading'?: SlotProps<T>;
68
+ 'item-label'?: SlotProps<T>;
69
+ 'item-trailing'?: SlotProps<T>;
70
+ } & DynamicSlots<T, 'leading' | 'label' | 'trailing', {
71
+ index: number;
72
+ percent: number;
73
+ }>;
74
+ declare const _default: typeof __VLS_export;
75
+ export default _default;
76
+ declare const __VLS_export: <T extends ProgressGroupItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
77
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<ProgressGroupProps<T>> & (typeof globalThis extends {
78
+ __VLS_PROPS_FALLBACK: infer P;
79
+ } ? P : {});
80
+ expose: (exposed: {}) => void;
81
+ attrs: any;
82
+ slots: ProgressGroupSlots<T>;
83
+ emit: {};
84
+ }>) => import("vue").VNode & {
85
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
86
+ };
87
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
88
+ [K in keyof T]: T[K];
89
+ } : {
90
+ [K in keyof T as K]: T[K];
91
+ }) & {};
@@ -2,6 +2,7 @@ import type { RadioGroupRootProps, RadioGroupRootEmits } from 'reka-ui';
2
2
  import type { VNode } from 'vue';
3
3
  import type { AppConfig } from '@nuxt/schema';
4
4
  import theme from '#build/ui/radio-group';
5
+ import type { IconProps } from './Icon.vue';
5
6
  import type { AcceptableValue, GetItemKeys, GetModelValue, GetModelValueEmits } from '../types/utils';
6
7
  import type { ComponentConfig } from '../types/tv';
7
8
  type RadioGroup = ComponentConfig<typeof theme, AppConfig, 'radioGroup'>;
@@ -11,8 +12,13 @@ export type RadioGroupItem = RadioGroupValue | {
11
12
  description?: string;
12
13
  disabled?: boolean;
13
14
  value?: RadioGroupValue;
15
+ /**
16
+ * The icon displayed above the label when `indicator` is `hidden`.
17
+ * @IconifyIcon
18
+ */
19
+ icon?: IconProps['name'];
14
20
  class?: any;
15
- ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
21
+ ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'icon' | 'description'>;
16
22
  [key: string]: any;
17
23
  };
18
24
  export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> extends Pick<RadioGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'> {
@@ -98,7 +104,7 @@ declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<
98
104
  slots: RadioGroupSlots<T>;
99
105
  emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, undefined, import("../types").NestedItem<T>>) => void);
100
106
  }>) => import("vue").VNode & {
101
- __ctx?: Awaited<typeof __VLS_setup>;
107
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
102
108
  };
103
109
  type __VLS_PrettifyLocal<T> = (T extends any ? {
104
110
  [K in keyof T]: T[K];
@@ -12,6 +12,7 @@ import { useForwardProps } from "../composables/useForwardProps";
12
12
  import { useFormField } from "../composables/useFormField";
13
13
  import { get } from "../utils";
14
14
  import { tv } from "../utils/tv";
15
+ import UIcon from "./Icon.vue";
15
16
  const _props = defineProps({
16
17
  as: { type: null, required: false },
17
18
  legend: { type: String, required: false },
@@ -39,12 +40,16 @@ const slots = defineSlots();
39
40
  const props = useComponentProps("radioGroup", _props);
40
41
  const appConfig = useAppConfig();
41
42
  const rootProps = useForwardProps(reactivePick(props, "as", "loop", "required"), emits);
42
- const { emitFormChange, emitFormInput, color, name, size, highlight, id: _id, disabled, ariaAttrs } = useFormField(_props, { bind: false });
43
+ const { emitFormChange, emitFormInput, color: formFieldColor, name, size: formFieldSize, highlight: formFieldHighlight, id: _id, disabled: formFieldDisabled, ariaAttrs } = useFormField(_props, { bind: false });
43
44
  const id = _id.value ?? useId();
44
- const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.radioGroup || {} })({
45
- size: size.value ?? props.size,
46
- color: color.value ?? props.color,
47
- highlight: highlight.value ?? props.highlight,
45
+ const color = computed(() => formFieldColor.value ?? props.color);
46
+ const highlight = computed(() => formFieldHighlight.value ?? props.highlight);
47
+ const size = computed(() => formFieldSize.value ?? props.size);
48
+ const disabled = computed(() => formFieldDisabled.value ?? props.disabled);
49
+ const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.radioGroup || {} })({
50
+ size: size.value,
51
+ color: color.value,
52
+ highlight: highlight.value,
48
53
  disabled: disabled.value,
49
54
  required: props.required,
50
55
  orientation: props.orientation,
@@ -83,6 +88,9 @@ const normalizedItems = computed(() => {
83
88
  }
84
89
  return props.items.map(normalizeItem);
85
90
  });
91
+ function labelIcon(item) {
92
+ return props.indicator === "hidden" ? item.icon : void 0;
93
+ }
86
94
  function onUpdate(value) {
87
95
  const event = new Event("change", { target: { value } });
88
96
  emits("change", event);
@@ -124,7 +132,8 @@ function onUpdate(value) {
124
132
  </RRadioGroupItem>
125
133
  </div>
126
134
 
127
- <div v-if="item.label || !!slots.label || (item.description || !!slots.description)" data-slot="wrapper" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })">
135
+ <div v-if="labelIcon(item) || (item.label || !!slots.label) || (item.description || !!slots.description)" data-slot="wrapper" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })">
136
+ <UIcon v-if="labelIcon(item)" :name="labelIcon(item)" data-slot="icon" :class="ui.icon({ class: [props.ui?.icon, item.ui?.icon] })" />
128
137
  <component :is="!props.variant || props.variant === 'list' ? Label : 'p'" v-if="item.label || !!slots.label" :for="item.id" data-slot="label" :class="ui.label({ class: [props.ui?.label, item.ui?.label], disabled: item.disabled || disabled })">
129
138
  <slot name="label" :item="item" :model-value="props.modelValue">
130
139
  {{ item.label }}
@@ -2,6 +2,7 @@ import type { RadioGroupRootProps, RadioGroupRootEmits } from 'reka-ui';
2
2
  import type { VNode } from 'vue';
3
3
  import type { AppConfig } from '@nuxt/schema';
4
4
  import theme from '#build/ui/radio-group';
5
+ import type { IconProps } from './Icon.vue';
5
6
  import type { AcceptableValue, GetItemKeys, GetModelValue, GetModelValueEmits } from '../types/utils';
6
7
  import type { ComponentConfig } from '../types/tv';
7
8
  type RadioGroup = ComponentConfig<typeof theme, AppConfig, 'radioGroup'>;
@@ -11,8 +12,13 @@ export type RadioGroupItem = RadioGroupValue | {
11
12
  description?: string;
12
13
  disabled?: boolean;
13
14
  value?: RadioGroupValue;
15
+ /**
16
+ * The icon displayed above the label when `indicator` is `hidden`.
17
+ * @IconifyIcon
18
+ */
19
+ icon?: IconProps['name'];
14
20
  class?: any;
15
- ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
21
+ ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'icon' | 'description'>;
16
22
  [key: string]: any;
17
23
  };
18
24
  export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> extends Pick<RadioGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'> {
@@ -98,7 +104,7 @@ declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<
98
104
  slots: RadioGroupSlots<T>;
99
105
  emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, undefined, import("../types").NestedItem<T>>) => void);
100
106
  }>) => import("vue").VNode & {
101
- __ctx?: Awaited<typeof __VLS_setup>;
107
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
102
108
  };
103
109
  type __VLS_PrettifyLocal<T> = (T extends any ? {
104
110
  [K in keyof T]: T[K];
@@ -4,7 +4,13 @@ import type { VirtualItem, VirtualizerOptions } from '@tanstack/vue-virtual';
4
4
  import theme from '#build/ui/scroll-area';
5
5
  import type { ComponentConfig } from '../types/tv';
6
6
  type ScrollArea = ComponentConfig<typeof theme, AppConfig, 'scrollArea'>;
7
- export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOptions<Element, Element>, 'count' | 'getScrollElement' | 'horizontal' | 'isRtl' | 'estimateSize' | 'lanes' | 'enabled'>> {
7
+ export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOptions<Element, Element>, 'count' | 'horizontal' | 'isRtl' | 'estimateSize' | 'lanes' | 'enabled'>> {
8
+ /**
9
+ * Virtualize against an external scroll element instead of the component's own root.
10
+ * Pair with `scrollMargin` set to the content's offset from the scroll element's start.
11
+ * @defaultValue undefined
12
+ */
13
+ getScrollElement?: () => Element | null;
8
14
  /**
9
15
  * Estimated size (in px) of each item along the scroll axis. Can be a number or a function.
10
16
  * @defaultValue 100
@@ -95,7 +101,7 @@ declare const __VLS_export: <T extends ScrollAreaItem>(__VLS_props: NonNullable<
95
101
  slots: ScrollAreaSlots<T>;
96
102
  emit: (evt: "scroll", isScrolling: boolean) => void;
97
103
  }>) => import("vue").VNode & {
98
- __ctx?: Awaited<typeof __VLS_setup>;
104
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
99
105
  };
100
106
  type __VLS_PrettifyLocal<T> = (T extends any ? {
101
107
  [K in keyof T]: T[K];
@@ -3,7 +3,7 @@ import theme from "#build/ui/scroll-area";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { computed, onMounted, onUnmounted, toRef, useTemplateRef, watch } from "vue";
6
+ import { computed, onUnmounted, toRef, useTemplateRef, watch } from "vue";
7
7
  import { Primitive } from "reka-ui";
8
8
  import { defu } from "defu";
9
9
  import { useVirtualizer } from "@tanstack/vue-virtual";
@@ -26,8 +26,10 @@ const emits = defineEmits(["scroll"]);
26
26
  const props = useComponentProps("scrollArea", _props);
27
27
  const { dir } = useLocale();
28
28
  const appConfig = useAppConfig();
29
- const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.scrollArea || {} })({
30
- orientation: props.orientation
29
+ const isExternalScroll = computed(() => typeof props.virtualize === "object" && !!props.virtualize.getScrollElement);
30
+ const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.scrollArea || {} })({
31
+ orientation: props.orientation,
32
+ externalScroll: isExternalScroll.value
31
33
  }));
32
34
  const rootRef = useTemplateRef("rootRef");
33
35
  const scrollShadowStyle = props.shadow ? useScrollShadow(
@@ -40,6 +42,7 @@ const scrollShadowStyle = props.shadow ? useScrollShadow(
40
42
  const isRtl = computed(() => dir.value === "rtl");
41
43
  const isHorizontal = computed(() => props.orientation === "horizontal");
42
44
  const isVertical = computed(() => !isHorizontal.value);
45
+ const getScrollElement = () => (isExternalScroll.value ? virtualizerProps.value.getScrollElement?.() : rootRef.value?.$el) ?? null;
43
46
  const virtualizerProps = toRef(() => {
44
47
  const options = typeof props.virtualize === "boolean" ? {} : props.virtualize;
45
48
  return defu(options, {
@@ -84,7 +87,7 @@ const virtualizer = !!props.virtualize && useVirtualizer({
84
87
  get count() {
85
88
  return props.items?.length || 0;
86
89
  },
87
- getScrollElement: () => rootRef.value?.$el,
90
+ getScrollElement,
88
91
  get horizontal() {
89
92
  return isHorizontal.value;
90
93
  },
@@ -104,6 +107,7 @@ function getVirtualItemStyle(virtualItem) {
104
107
  const hasLanes = lanes.value !== void 0 && lanes.value > 1;
105
108
  const lane = virtualItem.lane;
106
109
  const gap = virtualizerProps.value.gap ?? 0;
110
+ const offset = virtualItem.start - virtualizerProps.value.scrollMargin;
107
111
  const laneSize = hasLanes ? `calc((100% - ${(lanes.value - 1) * gap}px) / ${lanes.value})` : "100%";
108
112
  const lanePosition = hasLanes && lane !== void 0 ? `calc(${lane} * ((100% - ${(lanes.value - 1) * gap}px) / ${lanes.value} + ${gap}px))` : 0;
109
113
  return {
@@ -112,26 +116,28 @@ function getVirtualItemStyle(virtualItem) {
112
116
  insetInlineStart: isVertical.value && hasLanes ? lanePosition : 0,
113
117
  blockSize: isHorizontal.value ? hasLanes ? laneSize : "100%" : void 0,
114
118
  inlineSize: isVertical.value ? hasLanes ? laneSize : "100%" : void 0,
115
- transform: isHorizontal.value ? `translateX(${isRtl.value ? -virtualItem.start : virtualItem.start}px)` : `translateY(${virtualItem.start}px)`
119
+ transform: isHorizontal.value ? `translateX(${isRtl.value ? -offset : offset}px)` : `translateY(${offset}px)`
116
120
  };
117
121
  }
118
122
  let resizeObserver = null;
119
123
  let rafId = null;
120
- onMounted(() => {
121
- if (virtualizer) {
122
- const el = rootRef.value?.$el;
123
- if (el) {
124
- resizeObserver = new ResizeObserver(() => {
125
- if (rafId !== null) return;
126
- rafId = requestAnimationFrame(() => {
127
- rafId = null;
128
- virtualizer.value.measure();
129
- });
124
+ watch(
125
+ getScrollElement,
126
+ (el) => {
127
+ resizeObserver?.disconnect();
128
+ resizeObserver = null;
129
+ if (!virtualizer || !el) return;
130
+ resizeObserver = new ResizeObserver(() => {
131
+ if (rafId !== null) return;
132
+ rafId = requestAnimationFrame(() => {
133
+ rafId = null;
134
+ virtualizer.value.measure();
130
135
  });
131
- resizeObserver.observe(el);
132
- }
133
- }
134
- });
136
+ });
137
+ resizeObserver.observe(el);
138
+ },
139
+ { immediate: true }
140
+ );
135
141
  onUnmounted(() => {
136
142
  if (rafId !== null) {
137
143
  cancelAnimationFrame(rafId);
@@ -4,7 +4,13 @@ import type { VirtualItem, VirtualizerOptions } from '@tanstack/vue-virtual';
4
4
  import theme from '#build/ui/scroll-area';
5
5
  import type { ComponentConfig } from '../types/tv';
6
6
  type ScrollArea = ComponentConfig<typeof theme, AppConfig, 'scrollArea'>;
7
- export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOptions<Element, Element>, 'count' | 'getScrollElement' | 'horizontal' | 'isRtl' | 'estimateSize' | 'lanes' | 'enabled'>> {
7
+ export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOptions<Element, Element>, 'count' | 'horizontal' | 'isRtl' | 'estimateSize' | 'lanes' | 'enabled'>> {
8
+ /**
9
+ * Virtualize against an external scroll element instead of the component's own root.
10
+ * Pair with `scrollMargin` set to the content's offset from the scroll element's start.
11
+ * @defaultValue undefined
12
+ */
13
+ getScrollElement?: () => Element | null;
8
14
  /**
9
15
  * Estimated size (in px) of each item along the scroll axis. Can be a number or a function.
10
16
  * @defaultValue 100
@@ -95,7 +101,7 @@ declare const __VLS_export: <T extends ScrollAreaItem>(__VLS_props: NonNullable<
95
101
  slots: ScrollAreaSlots<T>;
96
102
  emit: (evt: "scroll", isScrolling: boolean) => void;
97
103
  }>) => import("vue").VNode & {
98
- __ctx?: Awaited<typeof __VLS_setup>;
104
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
99
105
  };
100
106
  type __VLS_PrettifyLocal<T> = (T extends any ? {
101
107
  [K in keyof T]: T[K];
@@ -3,7 +3,9 @@ import type { VNode } from 'vue';
3
3
  import type { AppConfig } from '@nuxt/schema';
4
4
  import theme from '#build/ui/select';
5
5
  import type { UseComponentIconsProps } from '../composables/useComponentIcons';
6
- import type { AvatarProps, ChipProps, IconProps } from '../types';
6
+ import type { AvatarProps } from './Avatar.vue';
7
+ import type { ChipProps } from './Chip.vue';
8
+ import type { IconProps } from './Icon.vue';
7
9
  import type { ModelModifiers, ApplyModifiers } from '../types/input';
8
10
  import type { ButtonHTMLAttributes } from '../types/html';
9
11
  import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, NestedItem, EmitsToProps } from '../types/utils';
@@ -209,7 +211,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends Get
209
211
  nullable: true;
210
212
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) => void);
211
213
  }>) => import("vue").VNode & {
212
- __ctx?: Awaited<typeof __VLS_setup>;
214
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
213
215
  };
214
216
  type __VLS_PrettifyLocal<T> = (T extends any ? {
215
217
  [K in keyof T]: T[K];