@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
@@ -1,15 +1,18 @@
1
1
  import { pick } from '../../dist/runtime/utils/index.js';
2
2
  import 'node:url';
3
- import { pascalCase, kebabCase, camelCase } from 'scule';
3
+ import { kebabCase, pascalCase, camelCase } from 'scule';
4
4
  import { genExport } from 'knitwork';
5
5
  import colors from 'tailwindcss/colors';
6
- import { addTypeTemplate, addTemplate, updateTemplates, hasNuxtModule, getLayerDirectories, logger } from '@nuxt/kit';
6
+ import { getLayerDirectories, addTypeTemplate, addTemplate, updateTemplates, hasNuxtModule, logger } from '@nuxt/kit';
7
+ import { existsSync } from 'node:fs';
7
8
  import { readFile } from 'node:fs/promises';
8
- import { join } from 'pathe';
9
+ import { consola } from 'consola';
10
+ import { dirname, normalize, join, resolve } from 'pathe';
9
11
  import { globSync } from 'tinyglobby';
12
+ import { resolvePathSync } from 'mlly';
10
13
  import { defuFn, defu } from 'defu';
11
14
 
12
- const icons = {
15
+ const defaultIcons = {
13
16
  arrowDown: "i-lucide-arrow-down",
14
17
  arrowLeft: "i-lucide-arrow-left",
15
18
  arrowRight: "i-lucide-arrow-right",
@@ -47,6 +50,7 @@ const icons = {
47
50
  reload: "i-lucide-rotate-ccw",
48
51
  search: "i-lucide-search",
49
52
  stop: "i-lucide-square",
53
+ star: "i-lucide-star",
50
54
  success: "i-lucide-circle-check",
51
55
  system: "i-lucide-monitor",
52
56
  tip: "i-lucide-lightbulb",
@@ -68,7 +72,7 @@ function getDefaultConfig(theme) {
68
72
  error: "red",
69
73
  neutral: "slate"
70
74
  }, [...theme?.colors || [], "neutral"]),
71
- icons,
75
+ icons: defaultIcons,
72
76
  prefix: theme?.prefix,
73
77
  tv: {
74
78
  twMergeConfig: {
@@ -137,6 +141,10 @@ function applyUnstyled(result, unstyled) {
137
141
  return result;
138
142
  }
139
143
  const blank = (value) => value && typeof value === "object" && !Array.isArray(value) ? Object.fromEntries(Object.keys(value).map((slot) => [slot, ""])) : "";
144
+ result = { ...result };
145
+ if (result.base) {
146
+ result.base = "";
147
+ }
140
148
  if (result.slots) {
141
149
  result.slots = Object.fromEntries(Object.keys(result.slots).map((slot) => [slot, ""]));
142
150
  }
@@ -169,12 +177,30 @@ function applyDefaultVariants(result, defaultVariants) {
169
177
  return result;
170
178
  }
171
179
 
172
- async function buildComponentDependencyGraph(componentDir, componentPattern) {
180
+ function createComponentPattern(prefix) {
181
+ const escapedPrefix = prefix.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
182
+ const kebabPrefix = kebabCase(prefix).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
183
+ return new RegExp(`<(?:Lazy)?${escapedPrefix}([A-Z][a-zA-Z]+)|<(?:lazy-)?${kebabPrefix}-([a-z][a-z0-9-]*)|\\b(?:Lazy)?${escapedPrefix}([A-Z][a-zA-Z]+)\\b`, "g");
184
+ }
185
+ function getMatchedComponent(match) {
186
+ if (match[2]) {
187
+ return pascalCase(match[2]);
188
+ }
189
+ return match[1] || match[3];
190
+ }
191
+ async function buildComponentDependencyGraph(componentDir) {
173
192
  const dependencyGraph = /* @__PURE__ */ new Map();
193
+ const componentPattern = createComponentPattern("U");
174
194
  const componentFiles = globSync(["**/*.vue"], {
175
195
  cwd: componentDir,
176
- absolute: true
196
+ absolute: true,
197
+ // Prose components share file basenames with nine regular components
198
+ // (`prose/Tabs.vue` vs `Tabs.vue`), and the graph is keyed by basename:
199
+ // letting them in overwrites the regular component's dependency set. They
200
+ // don't need nodes anyway, they are never used with the `U` prefix.
201
+ ignore: ["prose/**"]
177
202
  });
203
+ const componentNames = new Set(componentFiles.map((file) => pascalCase(file.split("/").pop().replace(".vue", ""))));
178
204
  for (const componentFile of componentFiles) {
179
205
  try {
180
206
  const content = await readFile(componentFile, "utf-8");
@@ -182,8 +208,8 @@ async function buildComponentDependencyGraph(componentDir, componentPattern) {
182
208
  const dependencies = /* @__PURE__ */ new Set();
183
209
  const matches = content.matchAll(componentPattern);
184
210
  for (const match of matches) {
185
- const depName = match[1] || match[2];
186
- if (depName && depName !== componentName) {
211
+ const depName = getMatchedComponent(match);
212
+ if (depName && depName !== componentName && componentNames.has(depName)) {
187
213
  dependencies.add(depName);
188
214
  }
189
215
  }
@@ -206,6 +232,32 @@ function resolveComponentDependencies(component, dependencyGraph, resolved = /*
206
232
  }
207
233
  return resolved;
208
234
  }
235
+ function resolveExtraScanDirs(root, scanPackages, componentDirs) {
236
+ const dirs = /* @__PURE__ */ new Set();
237
+ for (const pkg of scanPackages || []) {
238
+ try {
239
+ dirs.add(dirname(normalize(resolvePathSync(`${pkg}/package.json`, { url: join(root, "_index.mjs") }))));
240
+ } catch {
241
+ try {
242
+ const entry = normalize(resolvePathSync(pkg, { url: join(root, "_index.mjs") }));
243
+ const marker = `node_modules/${pkg}`;
244
+ const index = entry.lastIndexOf(`${marker}/`);
245
+ dirs.add(index === -1 ? dirname(entry) : entry.slice(0, index + marker.length));
246
+ } catch {
247
+ consola.warn(`Nuxt UI could not resolve \`${pkg}\` from \`scanPackages\`: it will not be scanned for component detection`);
248
+ }
249
+ }
250
+ }
251
+ const rootDir = normalize(root);
252
+ const userDirs = Array.isArray(componentDirs) ? componentDirs : componentDirs ? [componentDirs] : [];
253
+ for (const dir of userDirs) {
254
+ const resolved = resolve(root, dir.split(/[*{]/)[0]);
255
+ if (resolved !== rootDir && !resolved.startsWith(`${rootDir}/`) && existsSync(resolved)) {
256
+ dirs.add(resolved);
257
+ }
258
+ }
259
+ return [...dirs];
260
+ }
209
261
  async function detectUsedComponents(dirs, prefix, componentDir, includeComponents) {
210
262
  const detectedComponents = /* @__PURE__ */ new Set();
211
263
  if (includeComponents && includeComponents.length > 0) {
@@ -213,11 +265,17 @@ async function detectUsedComponents(dirs, prefix, componentDir, includeComponent
213
265
  detectedComponents.add(component);
214
266
  }
215
267
  }
216
- const componentPattern = new RegExp(`<(?:Lazy)?${prefix}([A-Z][a-zA-Z]+)|\\b(?:Lazy)?${prefix}([A-Z][a-zA-Z]+)\\b`, "g");
268
+ const componentPattern = createComponentPattern(prefix);
217
269
  for (const dir of dirs) {
218
- const appFiles = globSync(["**/*.{vue,ts,js,tsx,jsx}"], {
270
+ const isPackageDir = normalize(dir).includes("node_modules/");
271
+ const appFiles = globSync(["**/*.{vue,ts,mts,js,mjs,cjs,tsx,jsx}"], {
219
272
  cwd: dir,
220
- ignore: ["node_modules/**", ".nuxt/**", "dist/**"]
273
+ // `**/` prefixes so nested dirs are skipped too: the Vue integration
274
+ // scans the whole Vite root, not just Nuxt layer `app/` directories.
275
+ // Declaration files can't render components, and the generated
276
+ // `components.d.ts` declares every component ever rendered, which would
277
+ // keep anything used once detected forever.
278
+ ignore: isPackageDir ? ["**/node_modules/**", "**/*.d.ts"] : ["**/node_modules/**", "**/.nuxt/**", "**/dist/**", "**/*.d.ts"]
221
279
  });
222
280
  for (const file of appFiles) {
223
281
  try {
@@ -225,7 +283,7 @@ async function detectUsedComponents(dirs, prefix, componentDir, includeComponent
225
283
  const content = await readFile(filePath, "utf-8");
226
284
  const matches = content.matchAll(componentPattern);
227
285
  for (const match of matches) {
228
- const componentName = match[1] || match[2];
286
+ const componentName = getMatchedComponent(match);
229
287
  if (componentName) {
230
288
  detectedComponents.add(componentName);
231
289
  }
@@ -237,13 +295,18 @@ async function detectUsedComponents(dirs, prefix, componentDir, includeComponent
237
295
  if (detectedComponents.size === 0) {
238
296
  return void 0;
239
297
  }
240
- const dependencyGraph = await buildComponentDependencyGraph(componentDir, componentPattern);
298
+ const dependencyGraph = await buildComponentDependencyGraph(componentDir);
299
+ const unknownComponents = includeComponents?.filter((component) => !dependencyGraph.has(component));
300
+ if (unknownComponents?.length) {
301
+ consola.warn(`Nuxt UI \`componentDetection\` includes unknown components: ${unknownComponents.join(", ")}`);
302
+ }
303
+ const validComponents = Array.from(detectedComponents).filter((component) => dependencyGraph.has(component));
304
+ if (validComponents.length === 0) {
305
+ return void 0;
306
+ }
241
307
  const allComponents = /* @__PURE__ */ new Set();
242
- for (const component of detectedComponents) {
243
- const resolved = resolveComponentDependencies(component, dependencyGraph);
244
- for (const resolvedComponent of resolved) {
245
- allComponents.add(resolvedComponent);
246
- }
308
+ for (const component of validComponents) {
309
+ resolveComponentDependencies(component, dependencyGraph, allComponents);
247
310
  }
248
311
  return allComponents;
249
312
  }
@@ -254,10 +317,10 @@ const accordion$1 = {
254
317
  item: "border-b border-default last:border-b-0",
255
318
  header: "flex",
256
319
  trigger: "group flex-1 flex items-center gap-1.5 font-medium text-sm py-3.5 outline-primary/25 focus-visible:outline-3 min-w-0 rounded-md",
257
- content: "data-[state=open]:animate-[accordion-down_200ms_ease-out] data-[state=closed]:animate-[accordion-up_200ms_ease-out] data-[state=closed]:overflow-hidden focus:outline-none",
320
+ content: "data-[state=open]:animate-[accordion-down_200ms_var(--ease-out)] data-[state=closed]:animate-[accordion-up_200ms_var(--ease-out)] data-[state=closed]:overflow-hidden focus:outline-none",
258
321
  body: "text-sm pb-3.5",
259
322
  leadingIcon: "shrink-0 size-5",
260
- trailingIcon: "shrink-0 size-5 ms-auto group-data-[state=open]:rotate-180 transition-transform duration-200",
323
+ trailingIcon: "shrink-0 size-5 ms-auto group-data-[state=open]:rotate-180 transition-transform duration-200 ease-out motion-reduce:transition-none",
261
324
  label: "text-start break-words"
262
325
  },
263
326
  variants: {
@@ -740,8 +803,8 @@ const blogPost = (options) => ({
740
803
  to: {
741
804
  true: {
742
805
  root: ["outline-primary/25 has-[>a:focus-visible]:outline-3", options.theme.transitions && "transition"],
743
- image: "transform transition-transform duration-200 group-hover/blog-post:scale-110",
744
- avatar: "inline-flex transform transition-transform duration-200 hover:scale-115 rounded-full outline-primary/25 focus-visible:outline-3"
806
+ image: "transform transition-transform ease-out motion-reduce:transition-none group-hover/blog-post:scale-110",
807
+ avatar: "inline-flex transform transition-transform ease-out motion-reduce:transition-none hover:scale-115 rounded-full outline-primary/25 focus-visible:outline-3"
745
808
  }
746
809
  },
747
810
  image: {
@@ -777,7 +840,7 @@ const blogPost = (options) => ({
777
840
  to: true,
778
841
  class: {
779
842
  root: "hover:bg-elevated/50",
780
- header: ["group-hover/blog-post:shadow-none", options.theme.transitions && "transition-all"]
843
+ header: ["group-hover/blog-post:shadow-none", options.theme.transitions && "transition-[box-shadow,border-radius] ease-out"]
781
844
  }
782
845
  }, {
783
846
  variant: "ghost",
@@ -791,7 +854,7 @@ const blogPost = (options) => ({
791
854
  to: true,
792
855
  orientation: "horizontal",
793
856
  class: {
794
- header: "group-hover/blog-post:rounded-r-none"
857
+ header: "group-hover/blog-post:rounded-e-none"
795
858
  }
796
859
  }, {
797
860
  orientation: "vertical",
@@ -1048,18 +1111,18 @@ const button = (options) => ({
1048
1111
  });
1049
1112
 
1050
1113
  const daySizes = {
1051
- xs: "size-7",
1114
+ xs: "size-6",
1052
1115
  sm: "size-7",
1053
1116
  md: "size-8",
1054
- lg: "size-9 text-md",
1055
- xl: "size-10 text-lg"
1117
+ lg: "size-9",
1118
+ xl: "size-10"
1056
1119
  };
1057
1120
  const pickerSizes = {
1058
- xs: "h-7 px-2",
1121
+ xs: "h-6 px-2",
1059
1122
  sm: "h-7 px-2",
1060
1123
  md: "h-8 px-3",
1061
- lg: "h-9 px-4 text-md",
1062
- xl: "h-10 px-5 text-lg"
1124
+ lg: "h-9 px-4",
1125
+ xl: "h-10 px-5"
1063
1126
  };
1064
1127
  const calendar = (options) => ({
1065
1128
  slots: {
@@ -1119,14 +1182,18 @@ const calendar = (options) => ({
1119
1182
  cell: "text-sm"
1120
1183
  },
1121
1184
  lg: {
1122
- headingLabel: "text-md",
1123
- headCell: "text-md",
1124
- headCellWeek: "text-md"
1185
+ headingLabel: "text-base",
1186
+ headCell: "text-base",
1187
+ headCellWeek: "text-base",
1188
+ cellWeek: "text-base",
1189
+ cell: "text-base"
1125
1190
  },
1126
1191
  xl: {
1127
1192
  headingLabel: "text-lg",
1128
1193
  headCell: "text-lg",
1129
- headCellWeek: "text-lg"
1194
+ headCellWeek: "text-lg",
1195
+ cellWeek: "text-lg",
1196
+ cell: "text-lg"
1130
1197
  }
1131
1198
  },
1132
1199
  view: {
@@ -1331,7 +1398,7 @@ const changelogVersion = (options) => ({
1331
1398
  to: {
1332
1399
  true: {
1333
1400
  title: ["outline-primary/25 has-focus-visible:outline-3 rounded-xs", options.theme.transitions && "transition"],
1334
- image: "transform transition-transform duration-200 group-hover/changelog-version-image:scale-105 group-has-focus-visible/changelog-version-image:scale-105"
1401
+ image: "transform transition-transform ease-out motion-reduce:transition-none group-hover/changelog-version-image:scale-105 group-has-focus-visible/changelog-version-image:scale-105"
1335
1402
  }
1336
1403
  },
1337
1404
  hidden: {
@@ -1363,7 +1430,7 @@ const chatMessage = (options) => ({
1363
1430
  leadingAvatarSize: "",
1364
1431
  files: "flex items-center gap-1.5",
1365
1432
  content: "relative text-pretty wrap-break-word *:first:mt-0 *:last:mb-0",
1366
- actions: ["[@media(hover:hover)]:opacity-0 group-hover/message:opacity-100 absolute bottom-0 flex items-center", options.theme.transitions && "transition-opacity"]
1433
+ actions: ["[@media(hover:hover)]:opacity-0 group-hover/message:opacity-100 absolute bottom-0 flex items-center", options.theme.transitions && "transition-opacity ease-out"]
1367
1434
  },
1368
1435
  variants: {
1369
1436
  variant: {
@@ -1432,6 +1499,7 @@ const chatMessage = (options) => ({
1432
1499
  variant: "naked",
1433
1500
  side: "left",
1434
1501
  class: {
1502
+ body: "w-full",
1435
1503
  content: "w-full"
1436
1504
  }
1437
1505
  }, ...(options.theme.colors || []).map((color) => ({
@@ -1499,8 +1567,8 @@ const chatMessage = (options) => ({
1499
1567
  const chatMessages = {
1500
1568
  slots: {
1501
1569
  root: "w-full flex flex-col gap-1 flex-1 px-2.5 [&>article]:last-of-type:min-h-(--last-message-height)",
1502
- indicator: "h-6 flex items-center gap-1 py-3 *:size-2 *:rounded-full *:bg-elevated [&>*:nth-child(1)]:animate-[bounce_1s_infinite] [&>*:nth-child(2)]:animate-[bounce_1s_0.15s_infinite] [&>*:nth-child(3)]:animate-[bounce_1s_0.3s_infinite]",
1503
- viewport: "absolute inset-x-0 top-[86%] data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]",
1570
+ indicator: "h-6 flex items-center gap-1 py-3 *:size-2 *:rounded-full *:bg-elevated motion-safe:[&>*:nth-child(1)]:animate-[bounce_1s_infinite] motion-safe:[&>*:nth-child(2)]:animate-[bounce_1s_0.15s_infinite] motion-safe:[&>*:nth-child(3)]:animate-[bounce_1s_0.3s_infinite]",
1571
+ viewport: "absolute inset-x-0 top-[86%] data-[state=open]:animate-[fade-in_200ms_var(--ease-out)] data-[state=closed]:animate-[fade-out_200ms_var(--ease-out)]",
1504
1572
  autoScroll: "rounded-full absolute right-1/2 translate-x-1/2 bottom-0"
1505
1573
  },
1506
1574
  variants: {
@@ -1520,15 +1588,20 @@ const chatPalette = {
1520
1588
  }
1521
1589
  };
1522
1590
 
1523
- const chatPrompt = {
1591
+ const focusHighlight = (utilities) => ["textarea", "[contenteditable]"].flatMap((element) => utilities.split(" ").map((utility) => `has-[${element}:focus-visible]:${utility}`)).join(" ");
1592
+ const chatPrompt = (options) => ({
1524
1593
  slots: {
1525
- root: "relative flex flex-col items-stretch gap-2 px-2.5 py-2 w-full rounded-lg backdrop-blur",
1594
+ root: "relative flex flex-col items-stretch gap-2 px-2.5 py-2 w-full rounded-lg backdrop-blur-sm",
1526
1595
  header: "flex items-center gap-1.5",
1527
- body: "items-start",
1596
+ body: "items-start gap-1.5",
1528
1597
  footer: "flex items-center justify-between gap-1.5",
1529
- base: ""
1598
+ base: "px-0"
1530
1599
  },
1531
1600
  variants: {
1601
+ color: {
1602
+ ...Object.fromEntries((options.theme.colors || []).map((color) => [color, ""])),
1603
+ neutral: ""
1604
+ },
1532
1605
  variant: {
1533
1606
  outline: {
1534
1607
  root: "bg-default/75 ring ring-default"
@@ -1544,10 +1617,28 @@ const chatPrompt = {
1544
1617
  }
1545
1618
  }
1546
1619
  },
1620
+ compoundVariants: [...(options.theme.colors || []).map((color) => ({
1621
+ color,
1622
+ variant: ["outline", "subtle"],
1623
+ class: { root: `outline-${color}/25 ${focusHighlight(`outline-3 ring-${color}`)}` }
1624
+ })), ...(options.theme.colors || []).map((color) => ({
1625
+ color,
1626
+ variant: "soft",
1627
+ class: { root: `outline-${color}/25 ${focusHighlight("outline-3")}` }
1628
+ })), {
1629
+ color: "neutral",
1630
+ variant: ["outline", "subtle"],
1631
+ class: { root: `outline-inverted/25 ${focusHighlight("outline-3 ring-inverted")}` }
1632
+ }, {
1633
+ color: "neutral",
1634
+ variant: "soft",
1635
+ class: { root: `outline-inverted/25 ${focusHighlight("outline-3")}` }
1636
+ }],
1547
1637
  defaultVariants: {
1638
+ color: "primary",
1548
1639
  variant: "outline"
1549
1640
  }
1550
- };
1641
+ });
1551
1642
 
1552
1643
  const chatPromptSubmit = {
1553
1644
  slots: {
@@ -1561,10 +1652,10 @@ const chatReasoning = (options) => ({
1561
1652
  trigger: ["group flex w-full items-center gap-1.5 text-muted text-sm disabled:cursor-default disabled:hover:text-muted hover:text-default rounded-sm outline-primary/25 focus-visible:outline-3 min-w-0", options.theme.transitions && "transition-colors"],
1562
1653
  leading: "relative size-4 shrink-0",
1563
1654
  leadingIcon: "size-4 shrink-0",
1564
- chevronIcon: "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200",
1655
+ chevronIcon: "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200 ease-out motion-reduce:transition-none",
1565
1656
  label: "truncate",
1566
- trailingIcon: "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200",
1567
- content: "data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] data-[state=closed]:overflow-hidden rounded-sm outline-primary/25 has-focus-visible:outline-3",
1657
+ trailingIcon: "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200 ease-out motion-reduce:transition-none",
1658
+ content: "data-[state=open]:animate-[collapsible-down_200ms_var(--ease-out)] data-[state=closed]:animate-[collapsible-up_200ms_var(--ease-out)] data-[state=closed]:overflow-hidden rounded-sm outline-primary/25 has-focus-visible:outline-3",
1568
1659
  body: "max-h-[200px] pt-2 overflow-y-auto text-sm text-dimmed whitespace-pre-wrap focus:outline-none"
1569
1660
  },
1570
1661
  variants: {
@@ -1576,15 +1667,15 @@ const chatReasoning = (options) => ({
1576
1667
  },
1577
1668
  alone: {
1578
1669
  false: {
1579
- leadingIcon: ["absolute inset-0 group-data-[state=open]:opacity-0", options.theme.transitions && "transition-opacity duration-200"],
1580
- chevronIcon: ["absolute inset-0 opacity-0 group-hover:opacity-100 group-data-[state=open]:opacity-100", options.theme.transitions && "transition-[rotate,opacity] duration-200"]
1670
+ leadingIcon: ["absolute inset-0 group-data-[state=open]:opacity-0", options.theme.transitions && "transition-opacity duration-200 ease-out"],
1671
+ chevronIcon: ["absolute inset-0 opacity-0 group-hover:opacity-100 group-data-[state=open]:opacity-100", options.theme.transitions && "transition-[rotate,opacity] duration-200 ease-out motion-reduce:transition-none"]
1581
1672
  }
1582
1673
  }
1583
1674
  }
1584
1675
  });
1585
1676
 
1586
1677
  const chatShimmer = {
1587
- base: "text-transparent bg-clip-text bg-no-repeat bg-size-[calc(200%+var(--spread)*2+2px)_100%,auto] bg-[image:linear-gradient(90deg,#0000_calc(50%-var(--spread)),var(--ui-text-highlighted),#0000_calc(50%+var(--spread))),linear-gradient(var(--ui-text-muted),var(--ui-text-muted))] animate-[shimmer_var(--duration)_linear_infinite] rtl:animate-[shimmer-rtl_var(--duration)_linear_infinite] will-change-[background-position]"
1678
+ base: "text-transparent bg-clip-text bg-no-repeat bg-size-[calc(200%+var(--spread)*2+2px)_100%,auto] bg-[image:linear-gradient(90deg,#0000_calc(50%-var(--spread)),var(--ui-text-highlighted),#0000_calc(50%+var(--spread))),linear-gradient(var(--ui-text-muted),var(--ui-text-muted))] motion-safe:animate-[shimmer_var(--duration)_linear_infinite] motion-safe:rtl:animate-[shimmer-rtl_var(--duration)_linear_infinite] will-change-[background-position] motion-reduce:bg-none motion-reduce:text-muted"
1588
1679
  };
1589
1680
 
1590
1681
  const chatTool = (options) => ({
@@ -1593,30 +1684,31 @@ const chatTool = (options) => ({
1593
1684
  trigger: ["group flex w-full items-center gap-1.5 text-muted text-sm disabled:cursor-default disabled:hover:text-muted hover:text-default min-w-0", options.theme.transitions && "transition-colors"],
1594
1685
  leading: "relative size-4 shrink-0",
1595
1686
  leadingIcon: "size-4 shrink-0",
1596
- chevronIcon: "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200",
1687
+ chevronIcon: "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200 ease-out motion-reduce:transition-none",
1597
1688
  label: "truncate",
1598
1689
  suffix: "text-dimmed ms-1",
1599
- trailingIcon: "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200",
1600
- content: "data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] data-[state=closed]:overflow-hidden",
1601
- body: "text-sm text-dimmed whitespace-pre-wrap"
1690
+ trailingIcon: "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200 ease-out motion-reduce:transition-none",
1691
+ content: "data-[state=open]:animate-[collapsible-down_200ms_var(--ease-out)] data-[state=closed]:animate-[collapsible-up_200ms_var(--ease-out)] data-[state=closed]:overflow-hidden",
1692
+ body: "text-sm text-dimmed whitespace-pre-wrap",
1693
+ actions: "flex items-center justify-end gap-1.5"
1602
1694
  },
1603
1695
  variants: {
1604
1696
  variant: {
1605
1697
  inline: {
1606
1698
  trigger: "rounded-sm outline-primary/25 focus-visible:outline-3",
1607
- body: "pt-2"
1699
+ body: "pt-2",
1700
+ actions: "pt-2"
1608
1701
  },
1609
1702
  card: {
1610
1703
  root: "rounded-md ring ring-default overflow-hidden outline-primary/25 has-focus-visible:outline-3 has-focus-visible:ring-primary",
1611
1704
  trigger: "px-2 py-1 focus:outline-none",
1612
1705
  trailingIcon: "ms-auto",
1613
- body: "border-t border-default p-2 max-h-[200px] overflow-y-auto focus:outline-none"
1706
+ body: "border-t border-default p-2 max-h-[200px] overflow-y-auto focus:outline-none",
1707
+ actions: "border-t border-default p-2"
1614
1708
  }
1615
1709
  },
1616
1710
  chevron: {
1617
- leading: {
1618
- leadingIcon: "group-hover:opacity-0"
1619
- },
1711
+ leading: "",
1620
1712
  trailing: ""
1621
1713
  },
1622
1714
  loading: {
@@ -1626,20 +1718,23 @@ const chatTool = (options) => ({
1626
1718
  },
1627
1719
  alone: {
1628
1720
  false: {
1629
- leadingIcon: ["absolute inset-0 group-data-[state=open]:opacity-0", options.theme.transitions && "transition-opacity duration-200"],
1630
- chevronIcon: ["absolute inset-0 opacity-0 group-hover:opacity-100 group-data-[state=open]:opacity-100", options.theme.transitions && "transition-[rotate,opacity] duration-200"]
1721
+ leadingIcon: ["absolute inset-0 group-hover:opacity-0 group-data-[state=open]:opacity-0", options.theme.transitions && "transition-opacity duration-200 ease-out"],
1722
+ chevronIcon: ["absolute inset-0 opacity-0 group-hover:opacity-100 group-data-[state=open]:opacity-100", options.theme.transitions && "transition-[rotate,opacity] duration-200 ease-out motion-reduce:transition-none"]
1631
1723
  }
1632
1724
  }
1633
1725
  }
1634
1726
  });
1635
1727
 
1728
+ const hover = "hover:not-has-disabled:not-has-focus-visible:not-has-data-[state=checked]:";
1729
+ const focusControl = (token) => `outline-${token}/25 focus-visible:outline-solid focus-visible:outline-3 focus-visible:ring-${token}`;
1730
+ const focusCard = (token) => `outline-${token}/25 has-focus-visible:outline-3 not-has-disabled:has-focus-visible:border-${token} has-focus-visible:z-[1]`;
1636
1731
  const checkbox = (options) => ({
1637
1732
  slots: {
1638
1733
  root: "relative flex items-start",
1639
1734
  container: "flex items-center",
1640
- base: "rounded-sm ring ring-inset ring-accented overflow-hidden focus-visible:outline-3",
1735
+ base: "rounded-sm ring ring-inset ring-accented overflow-hidden focus-visible:outline-none",
1641
1736
  indicator: "flex items-center justify-center size-full text-inverted",
1642
- icon: "shrink-0 size-full",
1737
+ icon: "shrink-0",
1643
1738
  wrapper: "w-full",
1644
1739
  label: "block font-medium text-default",
1645
1740
  description: "text-muted"
@@ -1647,11 +1742,9 @@ const checkbox = (options) => ({
1647
1742
  variants: {
1648
1743
  color: {
1649
1744
  ...Object.fromEntries((options.theme.colors || []).map((color) => [color, {
1650
- base: `outline-${color}/25 focus-visible:ring-${color}`,
1651
1745
  indicator: `bg-${color}`
1652
1746
  }])),
1653
1747
  neutral: {
1654
- base: "outline-inverted/25 focus-visible:ring-inverted",
1655
1748
  indicator: "bg-inverted"
1656
1749
  }
1657
1750
  },
@@ -1660,7 +1753,7 @@ const checkbox = (options) => ({
1660
1753
  root: ""
1661
1754
  },
1662
1755
  card: {
1663
- root: "border border-muted rounded-lg"
1756
+ root: [`border border-muted rounded-lg ${hover}bg-elevated/50`, options.theme.transitions && "transition-colors"]
1664
1757
  }
1665
1758
  },
1666
1759
  indicator: {
@@ -1674,32 +1767,37 @@ const checkbox = (options) => ({
1674
1767
  },
1675
1768
  hidden: {
1676
1769
  base: "sr-only",
1677
- wrapper: "text-center"
1770
+ wrapper: "flex flex-col items-center gap-1 text-center"
1678
1771
  }
1679
1772
  },
1680
1773
  size: {
1681
1774
  xs: {
1682
1775
  base: "size-3",
1776
+ icon: "size-2.5",
1683
1777
  container: "h-4",
1684
1778
  wrapper: "text-xs"
1685
1779
  },
1686
1780
  sm: {
1687
1781
  base: "size-3.5",
1782
+ icon: "size-3",
1688
1783
  container: "h-4",
1689
1784
  wrapper: "text-xs"
1690
1785
  },
1691
1786
  md: {
1692
1787
  base: "size-4",
1788
+ icon: "size-3.5",
1693
1789
  container: "h-5",
1694
1790
  wrapper: "text-sm"
1695
1791
  },
1696
1792
  lg: {
1697
1793
  base: "size-4.5",
1794
+ icon: "size-4",
1698
1795
  container: "h-5",
1699
1796
  wrapper: "text-sm"
1700
1797
  },
1701
1798
  xl: {
1702
1799
  base: "size-5",
1800
+ icon: "size-4.5",
1703
1801
  container: "h-6",
1704
1802
  wrapper: "text-base"
1705
1803
  }
@@ -1718,30 +1816,72 @@ const checkbox = (options) => ({
1718
1816
  }
1719
1817
  },
1720
1818
  highlight: {
1721
- true: ""
1819
+ true: "",
1820
+ false: ""
1722
1821
  },
1723
1822
  checked: {
1724
1823
  true: ""
1725
1824
  }
1726
1825
  },
1727
1826
  compoundVariants: [
1827
+ {
1828
+ indicator: "hidden",
1829
+ class: {
1830
+ container: "h-auto"
1831
+ }
1832
+ },
1833
+ {
1834
+ variant: "card",
1835
+ highlight: false,
1836
+ class: {
1837
+ root: `${hover}border-accented`
1838
+ }
1839
+ },
1840
+ { size: "xs", indicator: "hidden", class: { icon: "size-3" } },
1841
+ { size: "sm", indicator: "hidden", class: { icon: "size-3.5" } },
1842
+ { size: "md", indicator: "hidden", class: { icon: "size-4" } },
1843
+ { size: "lg", indicator: "hidden", class: { icon: "size-4.5" } },
1844
+ { size: "xl", indicator: "hidden", class: { icon: "size-5" } },
1728
1845
  { size: "xs", variant: "card", class: { root: "p-2.5" } },
1729
1846
  { size: "sm", variant: "card", class: { root: "p-3" } },
1730
1847
  { size: "md", variant: "card", class: { root: "p-3.5" } },
1731
1848
  { size: "lg", variant: "card", class: { root: "p-4" } },
1732
1849
  { size: "xl", variant: "card", class: { root: "p-4.5" } },
1850
+ ...[...(options.theme.colors || []).map((color) => [color, color]), ["neutral", "inverted"]].map(([color, token]) => ({
1851
+ color,
1852
+ variant: "list",
1853
+ indicator: ["start", "end"],
1854
+ class: {
1855
+ base: focusControl(token)
1856
+ }
1857
+ })),
1858
+ ...[...(options.theme.colors || []).map((color) => [color, color]), ["neutral", "inverted"]].map(([color, token]) => ({
1859
+ color,
1860
+ variant: "card",
1861
+ class: {
1862
+ root: focusCard(token)
1863
+ }
1864
+ })),
1865
+ ...[...(options.theme.colors || []).map((color) => [color, color]), ["neutral", "inverted"]].map(([color, token]) => ({
1866
+ color,
1867
+ variant: "list",
1868
+ indicator: "hidden",
1869
+ class: {
1870
+ root: focusCard(token)
1871
+ }
1872
+ })),
1733
1873
  ...(options.theme.colors || []).map((color) => ({
1734
1874
  color,
1735
1875
  variant: "card",
1736
1876
  class: {
1737
- root: `has-data-[state=checked]:border-${color}`
1877
+ root: `has-data-[state=checked]:border-${color}/50 has-data-[state=checked]:bg-${color}/10`
1738
1878
  }
1739
1879
  })),
1740
1880
  {
1741
1881
  color: "neutral",
1742
1882
  variant: "card",
1743
1883
  class: {
1744
- root: "has-data-[state=checked]:border-inverted"
1884
+ root: "has-data-[state=checked]:border-inverted/50 has-data-[state=checked]:bg-elevated"
1745
1885
  }
1746
1886
  },
1747
1887
  {
@@ -1751,6 +1891,22 @@ const checkbox = (options) => ({
1751
1891
  root: "cursor-not-allowed"
1752
1892
  }
1753
1893
  },
1894
+ ...(options.theme.colors || []).map((color) => ({
1895
+ color,
1896
+ indicator: "hidden",
1897
+ highlight: true,
1898
+ class: {
1899
+ root: `not-has-disabled:border-${color} not-has-disabled:has-data-[state=checked]:border-${color}`
1900
+ }
1901
+ })),
1902
+ {
1903
+ color: "neutral",
1904
+ indicator: "hidden",
1905
+ highlight: true,
1906
+ class: {
1907
+ root: "not-has-disabled:border-inverted not-has-disabled:has-data-[state=checked]:border-inverted"
1908
+ }
1909
+ },
1754
1910
  ...(options.theme.colors || []).map((color) => ({
1755
1911
  color,
1756
1912
  highlight: true,
@@ -1767,6 +1923,7 @@ const checkbox = (options) => ({
1767
1923
  }
1768
1924
  ],
1769
1925
  defaultVariants: {
1926
+ highlight: false,
1770
1927
  size: "md",
1771
1928
  color: "primary",
1772
1929
  variant: "list",
@@ -1798,7 +1955,7 @@ const checkboxGroup = (options) => ({
1798
1955
  list: {},
1799
1956
  card: {},
1800
1957
  table: {
1801
- item: "border border-muted"
1958
+ item: [`border border-muted ${hover}bg-elevated/50`, options.theme.transitions && "transition-colors"]
1802
1959
  }
1803
1960
  },
1804
1961
  size: {
@@ -1828,11 +1985,29 @@ const checkboxGroup = (options) => ({
1828
1985
  legend: "after:content-['*'] after:ms-0.5 after:text-error"
1829
1986
  }
1830
1987
  },
1988
+ highlight: {
1989
+ true: {},
1990
+ false: {}
1991
+ },
1831
1992
  disabled: {
1832
1993
  true: {}
1833
1994
  }
1834
1995
  },
1835
1996
  compoundVariants: [
1997
+ ...[...(options.theme.colors || []).map((color) => [color, color]), ["neutral", "inverted"]].map(([color, token]) => ({
1998
+ color,
1999
+ variant: "table",
2000
+ class: {
2001
+ item: focusCard(token)
2002
+ }
2003
+ })),
2004
+ {
2005
+ variant: "table",
2006
+ highlight: false,
2007
+ class: {
2008
+ item: `${hover}border-accented`
2009
+ }
2010
+ },
1836
2011
  { size: "xs", variant: "table", class: { item: "p-2.5" } },
1837
2012
  { size: "sm", variant: "table", class: { item: "p-3" } },
1838
2013
  { size: "md", variant: "table", class: { item: "p-3.5" } },
@@ -1877,6 +2052,7 @@ const checkboxGroup = (options) => ({
1877
2052
  }
1878
2053
  ],
1879
2054
  defaultVariants: {
2055
+ highlight: false,
1880
2056
  size: "md",
1881
2057
  variant: "list",
1882
2058
  color: "primary"
@@ -1944,7 +2120,7 @@ const chip = (options) => ({
1944
2120
  const collapsible$1 = {
1945
2121
  slots: {
1946
2122
  root: "",
1947
- content: "data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] data-[state=closed]:overflow-hidden"
2123
+ content: "data-[state=open]:animate-[collapsible-down_200ms_var(--ease-out)] data-[state=closed]:animate-[collapsible-up_200ms_var(--ease-out)] data-[state=closed]:overflow-hidden"
1948
2124
  }
1949
2125
  };
1950
2126
 
@@ -1982,7 +2158,6 @@ const colorPicker = {
1982
2158
  }
1983
2159
  }
1984
2160
  },
1985
- compoundVariants: [],
1986
2161
  defaultVariants: {
1987
2162
  size: "md"
1988
2163
  }
@@ -2131,7 +2306,7 @@ const container = {
2131
2306
 
2132
2307
  const contextMenu = (options) => ({
2133
2308
  slots: {
2134
- content: "min-w-32 max-h-(--reka-context-menu-content-available-height) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-context-menu-content-transform-origin) flex flex-col",
2309
+ content: "min-w-32 max-h-(--reka-context-menu-content-available-height) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)] origin-(--reka-context-menu-content-transform-origin) flex flex-col",
2135
2310
  viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
2136
2311
  group: "p-1 isolate",
2137
2312
  label: "w-full flex items-center font-semibold text-highlighted",
@@ -2395,13 +2570,16 @@ const drawer = (options) => ({
2395
2570
  slots: {
2396
2571
  overlay: "fixed inset-0 bg-elevated/75",
2397
2572
  content: "fixed bg-default ring ring-default flex focus:outline-none",
2398
- handle: ["shrink-0 !bg-accented", options.theme.transitions && "transition-opacity"],
2573
+ handle: ["shrink-0 !bg-accented", options.theme.transitions && "transition-opacity ease-out"],
2399
2574
  container: "w-full flex flex-col gap-4 p-4 overflow-y-auto",
2400
- header: "",
2575
+ header: "flex items-center gap-1.5 min-h-8",
2576
+ wrapper: "min-w-0 flex-1",
2401
2577
  title: "text-highlighted font-semibold",
2402
2578
  description: "mt-1 text-muted text-sm",
2579
+ actions: "flex items-center gap-1.5 shrink-0 ms-auto",
2403
2580
  body: "flex-1",
2404
- footer: "flex flex-col gap-1.5"
2581
+ footer: "flex flex-col gap-1.5",
2582
+ close: ""
2405
2583
  },
2406
2584
  variants: {
2407
2585
  direction: {
@@ -2521,7 +2699,7 @@ const drawer = (options) => ({
2521
2699
 
2522
2700
  const dropdownMenu = (options) => ({
2523
2701
  slots: {
2524
- content: "min-w-32 max-h-(--reka-dropdown-menu-content-available-height) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-dropdown-menu-content-transform-origin) flex flex-col",
2702
+ content: "min-w-32 max-h-(--reka-dropdown-menu-content-available-height) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)] origin-(--reka-dropdown-menu-content-transform-origin) flex flex-col",
2525
2703
  input: "border-b border-default",
2526
2704
  empty: "text-center text-muted",
2527
2705
  viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
@@ -2701,14 +2879,14 @@ const editor = (options) => ({
2701
2879
 
2702
2880
  const editorDragHandle = {
2703
2881
  slots: {
2704
- root: "hidden sm:flex items-center justify-center transition-all duration-200 ease-out",
2882
+ root: "hidden sm:flex items-center justify-center transition-[top,left] duration-200 ease-out motion-reduce:transition-none",
2705
2883
  handle: "cursor-grab px-1"
2706
2884
  }
2707
2885
  };
2708
2886
 
2709
2887
  const editorSuggestionMenu = (options) => ({
2710
2888
  slots: {
2711
- content: "min-w-48 max-w-60 max-h-96 bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-dropdown-menu-content-transform-origin) flex flex-col",
2889
+ content: "min-w-48 max-w-60 max-h-96 bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)] origin-(--reka-dropdown-menu-content-transform-origin) flex flex-col",
2712
2890
  viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
2713
2891
  group: "p-1 isolate",
2714
2892
  label: "w-full flex items-center font-semibold text-highlighted",
@@ -2857,6 +3035,11 @@ const empty = {
2857
3035
  naked: {
2858
3036
  description: "text-muted"
2859
3037
  }
3038
+ },
3039
+ loading: {
3040
+ true: {
3041
+ avatar: "[&>[data-slot=icon]]:animate-spin"
3042
+ }
2860
3043
  }
2861
3044
  },
2862
3045
  defaultVariants: {
@@ -2880,7 +3063,7 @@ const error = {
2880
3063
  const fileUpload = (options) => ({
2881
3064
  slots: {
2882
3065
  root: "relative flex flex-col",
2883
- base: ["w-full flex-1 bg-default border border-default flex flex-col gap-2 items-stretch justify-center rounded-lg focus-visible:outline-3", options.theme.transitions && "transition-[background]"],
3066
+ base: ["w-full flex-1 bg-default border border-default flex flex-col gap-2 items-stretch justify-center rounded-lg focus-visible:outline-3", options.theme.transitions && "transition-[background] ease-out"],
2884
3067
  wrapper: "flex flex-col items-center justify-center text-center",
2885
3068
  icon: "shrink-0",
2886
3069
  avatar: "shrink-0",
@@ -3152,7 +3335,7 @@ const formField = {
3152
3335
 
3153
3336
  const header = {
3154
3337
  slots: {
3155
- root: "bg-default/75 backdrop-blur border-b border-default h-(--ui-header-height) sticky top-0 z-50",
3338
+ root: "bg-default/75 backdrop-blur-sm border-b border-default h-(--ui-header-height) sticky top-0 z-50",
3156
3339
  container: "flex items-center justify-between gap-3 h-full",
3157
3340
  left: "lg:flex-1 flex items-center gap-1.5",
3158
3341
  center: "hidden lg:flex",
@@ -3367,7 +3550,7 @@ const inputDate = (options) => {
3367
3550
  slots: {
3368
3551
  root: () => void 0,
3369
3552
  base: () => ["group relative inline-flex items-center rounded-md select-none", options.theme.transitions && "transition-colors"],
3370
- segment: ["rounded text-center outline-hidden data-placeholder:text-dimmed data-[segment=literal]:text-muted data-invalid:text-error data-disabled:cursor-not-allowed data-disabled:opacity-75", options.theme.transitions && "transition-colors"],
3553
+ segment: ["rounded-sm text-center outline-hidden data-placeholder:text-dimmed data-[segment=literal]:text-muted data-invalid:text-error data-disabled:cursor-not-allowed data-disabled:opacity-75", options.theme.transitions && "transition-colors"],
3371
3554
  separatorIcon: "shrink-0 size-4 text-muted"
3372
3555
  },
3373
3556
  variants: {
@@ -3440,7 +3623,7 @@ const inputMenu = (options) => {
3440
3623
  trailing: "group absolute inset-y-0 end-0 flex items-center disabled:cursor-not-allowed disabled:opacity-75 focus:outline-none",
3441
3624
  trailingClear: "p-0",
3442
3625
  arrow: "fill-bg stroke-default",
3443
- content: "max-h-[min(15rem,var(--reka-combobox-content-available-height,15rem))] w-(--reka-combobox-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-combobox-content-transform-origin) pointer-events-auto flex flex-col",
3626
+ content: "max-h-[min(15rem,var(--reka-combobox-content-available-height,15rem))] w-(--reka-combobox-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)] origin-(--reka-combobox-content-transform-origin) pointer-events-auto flex flex-col",
3444
3627
  viewport: "relative scroll-py-1 overflow-y-auto flex-1",
3445
3628
  group: "p-1 isolate",
3446
3629
  empty: "text-center text-muted",
@@ -3767,7 +3950,7 @@ const inputTime = (options) => {
3767
3950
  slots: {
3768
3951
  root: () => void 0,
3769
3952
  base: () => ["group relative inline-flex items-center rounded-md select-none", options.theme.transitions && "transition-colors"],
3770
- segment: ["rounded text-center outline-hidden data-placeholder:text-dimmed data-[segment=literal]:text-muted data-invalid:text-error data-disabled:cursor-not-allowed data-disabled:opacity-75", options.theme.transitions && "transition-colors"],
3953
+ segment: ["rounded-sm text-center outline-hidden data-placeholder:text-dimmed data-[segment=literal]:text-muted data-invalid:text-error data-disabled:cursor-not-allowed data-disabled:opacity-75", options.theme.transitions && "transition-colors"],
3771
3954
  separatorIcon: "shrink-0 size-4 text-muted"
3772
3955
  },
3773
3956
  variants: {
@@ -4079,19 +4262,19 @@ const marquee = {
4079
4262
  orientation: "horizontal",
4080
4263
  class: {
4081
4264
  root: "flex-row",
4082
- content: "flex-row animate-[marquee_var(--duration)_linear_infinite] rtl:animate-[marquee-rtl_var(--duration)_linear_infinite] backface-hidden"
4265
+ content: "flex-row motion-safe:animate-[marquee_var(--duration)_linear_infinite] motion-safe:rtl:animate-[marquee-rtl_var(--duration)_linear_infinite] backface-hidden"
4083
4266
  }
4084
4267
  }, {
4085
4268
  orientation: "horizontal",
4086
4269
  overlay: true,
4087
4270
  class: {
4088
- root: "before:inset-y-0 before:left-0 before:h-full before:w-1/3 before:bg-gradient-to-r after:inset-y-0 after:right-0 after:h-full after:w-1/3 after:bg-gradient-to-l backface-hidden"
4271
+ root: "before:inset-y-0 before:start-0 before:h-full before:w-1/3 before:bg-gradient-to-r rtl:before:bg-gradient-to-l after:inset-y-0 after:end-0 after:h-full after:w-1/3 after:bg-gradient-to-l rtl:after:bg-gradient-to-r backface-hidden"
4089
4272
  }
4090
4273
  }, {
4091
4274
  orientation: "vertical",
4092
4275
  class: {
4093
4276
  root: "flex-col",
4094
- content: "flex-col animate-[marquee-vertical_var(--duration)_linear_infinite] rtl:animate-[marquee-vertical-rtl_var(--duration)_linear_infinite] h-[fit-content] backface-hidden"
4277
+ content: "flex-col motion-safe:animate-[marquee-vertical_var(--duration)_linear_infinite] h-[fit-content] backface-hidden"
4095
4278
  }
4096
4279
  }, {
4097
4280
  orientation: "vertical",
@@ -4117,8 +4300,8 @@ const modal = {
4117
4300
  variants: {
4118
4301
  transition: {
4119
4302
  true: {
4120
- overlay: "data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]",
4121
- content: "data-[state=open]:animate-[scale-in_200ms_ease-out] data-[state=closed]:animate-[scale-out_200ms_ease-in]"
4303
+ overlay: "data-[state=open]:animate-[fade-in_200ms_var(--ease-out)] data-[state=closed]:animate-[fade-out_200ms_var(--ease-out)]",
4304
+ content: "data-[state=open]:animate-[scale-in_200ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_200ms_var(--ease-out)]"
4122
4305
  }
4123
4306
  },
4124
4307
  fullscreen: {
@@ -4174,7 +4357,7 @@ const navigationMenu = (options) => ({
4174
4357
  linkTrailing: "group ms-auto inline-flex gap-1.5 items-center",
4175
4358
  linkTrailingBadge: "shrink-0",
4176
4359
  linkTrailingBadgeSize: "sm",
4177
- linkTrailingIcon: "size-5 transform shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200",
4360
+ linkTrailingIcon: "size-5 transform shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200 ease-out motion-reduce:transition-none",
4178
4361
  linkLabel: "truncate",
4179
4362
  linkLabelExternalIcon: "inline-block size-3 align-top text-dimmed",
4180
4363
  childList: "isolate",
@@ -4187,10 +4370,10 @@ const navigationMenu = (options) => ({
4187
4370
  childLinkLabelExternalIcon: "inline-block size-3 align-top text-dimmed",
4188
4371
  childLinkDescription: "text-muted",
4189
4372
  separator: "px-2 h-px bg-border",
4190
- viewportWrapper: "absolute top-full left-0 flex w-full",
4191
- viewport: "relative overflow-hidden bg-default shadow-lg rounded-md ring ring-default h-(--reka-navigation-menu-viewport-height) w-full transition-[width,height,left,right] duration-200 origin-[top_center] data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] z-1",
4373
+ viewportWrapper: "absolute top-full start-0 flex w-full",
4374
+ viewport: "relative overflow-hidden bg-default shadow-lg rounded-md ring ring-default h-(--reka-navigation-menu-viewport-height) w-full transition-[width,height,left,right] duration-200 ease-out motion-reduce:transition-none origin-[top_center] data-[state=open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)] z-1",
4192
4375
  content: "",
4193
- indicator: "absolute left-0 data-[state=visible]:animate-[fade-in_100ms_ease-out] data-[state=hidden]:animate-[fade-out_100ms_ease-in] data-[state=hidden]:opacity-0 bottom-0 z-2 w-(--reka-navigation-menu-indicator-size) translate-x-(--reka-navigation-menu-indicator-position) flex h-2.5 items-end justify-center overflow-hidden transition-[translate,width] duration-200",
4376
+ indicator: "absolute left-0 data-[state=visible]:animate-[fade-in_100ms_var(--ease-out)] data-[state=hidden]:animate-[fade-out_100ms_var(--ease-out)] data-[state=hidden]:opacity-0 bottom-0 z-2 w-(--reka-navigation-menu-indicator-size) translate-x-(--reka-navigation-menu-indicator-position) flex h-2.5 items-end justify-center overflow-hidden transition-[translate,width] duration-200 ease-out motion-reduce:transition-none",
4194
4377
  arrow: "relative top-[50%] size-2.5 rotate-45 border border-default bg-default z-1 rounded-xs"
4195
4378
  },
4196
4379
  variants: {
@@ -4221,7 +4404,7 @@ const navigationMenu = (options) => ({
4221
4404
  childList: "grid p-2",
4222
4405
  childLink: "px-3 py-2 gap-2 before:inset-x-px before:inset-y-0",
4223
4406
  childLinkLabel: "font-medium",
4224
- content: "absolute top-0 left-0 w-full max-h-[70vh] overflow-y-auto"
4407
+ content: "absolute top-0 start-0 w-full max-h-[70vh] overflow-y-auto"
4225
4408
  },
4226
4409
  vertical: {
4227
4410
  root: "flex-col",
@@ -4233,7 +4416,7 @@ const navigationMenu = (options) => ({
4233
4416
  contentOrientation: {
4234
4417
  horizontal: {
4235
4418
  viewportWrapper: "justify-center",
4236
- content: "data-[motion=from-start]:animate-[enter-from-left_200ms_ease] data-[motion=from-end]:animate-[enter-from-right_200ms_ease] data-[motion=to-start]:animate-[exit-to-left_200ms_ease] data-[motion=to-end]:animate-[exit-to-right_200ms_ease]"
4419
+ content: "data-[motion=from-start]:animate-[enter-from-left_200ms_var(--ease-out)] data-[motion=from-end]:animate-[enter-from-right_200ms_var(--ease-out)] data-[motion=to-start]:animate-[exit-to-left_200ms_var(--ease-out)] data-[motion=to-end]:animate-[exit-to-right_200ms_var(--ease-out)]"
4237
4420
  },
4238
4421
  vertical: {
4239
4422
  viewport: "sm:w-(--reka-navigation-menu-viewport-width) left-(--reka-navigation-menu-viewport-left) rtl:left-auto rtl:right-[calc(100%-var(--reka-navigation-menu-viewport-left)-var(--reka-navigation-menu-viewport-width))]"
@@ -4285,7 +4468,7 @@ const navigationMenu = (options) => ({
4285
4468
  class: {
4286
4469
  childList: "ms-5 border-s border-default",
4287
4470
  childItem: "ps-1.5 -ms-px",
4288
- content: "data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] data-[state=closed]:overflow-hidden"
4471
+ content: "data-[state=open]:animate-[collapsible-down_200ms_var(--ease-out)] data-[state=closed]:animate-[collapsible-up_200ms_var(--ease-out)] data-[state=closed]:overflow-hidden"
4289
4472
  }
4290
4473
  }, {
4291
4474
  orientation: "vertical",
@@ -5057,7 +5240,7 @@ const pinInput = (options) => ({
5057
5240
 
5058
5241
  const popover = {
5059
5242
  slots: {
5060
- content: "bg-default shadow-lg rounded-md ring ring-default data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-popover-content-transform-origin) focus:outline-none pointer-events-auto",
5243
+ content: "bg-default shadow-lg rounded-md ring ring-default data-[state=open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)] origin-(--reka-popover-content-transform-origin) focus:outline-none pointer-events-auto",
5061
5244
  arrow: "fill-bg stroke-default"
5062
5245
  }
5063
5246
  };
@@ -5090,7 +5273,7 @@ const pricingPlan = {
5090
5273
  orientation: {
5091
5274
  horizontal: {
5092
5275
  root: "grid-cols-1 lg:grid-cols-3 justify-between divide-y lg:divide-y-0 lg:divide-x divide-default",
5093
- body: "lg:col-span-2 pb-6 lg:pb-0 lg:pr-6 justify-center",
5276
+ body: "lg:col-span-2 pb-6 lg:pb-0 lg:pe-6 justify-center",
5094
5277
  footer: "lg:justify-center lg:items-center lg:p-6 lg:max-w-xs lg:w-full lg:mx-auto",
5095
5278
  features: "lg:grid lg:grid-cols-2 lg:mt-12"
5096
5279
  },
@@ -5180,9 +5363,9 @@ const pricingTable = {
5180
5363
  thead: "",
5181
5364
  tbody: "",
5182
5365
  tr: "",
5183
- th: "py-4 font-normal text-left rtl:text-right border-b border-default",
5366
+ th: "py-4 font-normal text-start border-b border-default",
5184
5367
  td: "px-6 py-4 text-center border-b border-default",
5185
- tier: "p-6 text-left rtl:text-right font-normal align-top h-full",
5368
+ tier: "p-6 text-start font-normal align-top h-full",
5186
5369
  tierWrapper: "flex flex-col md:h-full",
5187
5370
  tierTitleWrapper: "flex items-center gap-3",
5188
5371
  tierTitle: "text-lg font-semibold text-highlighted",
@@ -5227,10 +5410,10 @@ const progress = (options) => ({
5227
5410
  slots: {
5228
5411
  root: "gap-2",
5229
5412
  base: "relative overflow-hidden rounded-full bg-accented",
5230
- indicator: "rounded-full size-full transition-transform duration-200 ease-out",
5231
- status: "flex text-dimmed transition-[width] duration-200",
5413
+ indicator: "rounded-full size-full transition-transform duration-200 ease-out motion-reduce:transition-none motion-reduce:data-[state=indeterminate]:animate-pulse",
5414
+ status: "flex text-dimmed duration-200 ease-out motion-reduce:transition-none",
5232
5415
  steps: "grid items-end",
5233
- step: "truncate text-end row-start-1 col-start-1 transition-opacity"
5416
+ step: "truncate text-end row-start-1 col-start-1 transition-opacity ease-out"
5234
5417
  },
5235
5418
  variants: {
5236
5419
  animation: {
@@ -5246,7 +5429,7 @@ const progress = (options) => ({
5246
5429
  }])),
5247
5430
  neutral: {
5248
5431
  indicator: "bg-inverted",
5249
- steps: "text-inverted"
5432
+ steps: "text-highlighted"
5250
5433
  }
5251
5434
  },
5252
5435
  size: {
@@ -5297,12 +5480,12 @@ const progress = (options) => ({
5297
5480
  horizontal: {
5298
5481
  root: "w-full flex flex-col",
5299
5482
  base: "w-full",
5300
- status: "flex-row items-center justify-end min-w-fit"
5483
+ status: "flex-row items-center justify-end w-(--percent) min-w-fit transition-[width]"
5301
5484
  },
5302
5485
  vertical: {
5303
5486
  root: "h-full flex flex-row-reverse",
5304
5487
  base: "h-full",
5305
- status: "flex-col justify-end min-h-fit"
5488
+ status: "flex-col justify-end h-(--percent) min-h-fit transition-[height]"
5306
5489
  }
5307
5490
  },
5308
5491
  inverted: {
@@ -5385,49 +5568,49 @@ const progress = (options) => ({
5385
5568
  orientation: "horizontal",
5386
5569
  animation: "carousel",
5387
5570
  class: {
5388
- indicator: "data-[state=indeterminate]:animate-[carousel_2s_ease-in-out_infinite] data-[state=indeterminate]:rtl:animate-[carousel-rtl_2s_ease-in-out_infinite]"
5571
+ indicator: "motion-safe:data-[state=indeterminate]:animate-[carousel_2s_linear_infinite] motion-safe:data-[state=indeterminate]:rtl:animate-[carousel-rtl_2s_linear_infinite]"
5389
5572
  }
5390
5573
  }, {
5391
5574
  orientation: "vertical",
5392
5575
  animation: "carousel",
5393
5576
  class: {
5394
- indicator: "data-[state=indeterminate]:animate-[carousel-vertical_2s_ease-in-out_infinite]"
5577
+ indicator: "motion-safe:data-[state=indeterminate]:animate-[carousel-vertical_2s_linear_infinite]"
5395
5578
  }
5396
5579
  }, {
5397
5580
  orientation: "horizontal",
5398
5581
  animation: "carousel-inverse",
5399
5582
  class: {
5400
- indicator: "data-[state=indeterminate]:animate-[carousel-inverse_2s_ease-in-out_infinite] data-[state=indeterminate]:rtl:animate-[carousel-inverse-rtl_2s_ease-in-out_infinite]"
5583
+ indicator: "motion-safe:data-[state=indeterminate]:animate-[carousel-inverse_2s_linear_infinite] motion-safe:data-[state=indeterminate]:rtl:animate-[carousel-inverse-rtl_2s_linear_infinite]"
5401
5584
  }
5402
5585
  }, {
5403
5586
  orientation: "vertical",
5404
5587
  animation: "carousel-inverse",
5405
5588
  class: {
5406
- indicator: "data-[state=indeterminate]:animate-[carousel-inverse-vertical_2s_ease-in-out_infinite]"
5589
+ indicator: "motion-safe:data-[state=indeterminate]:animate-[carousel-inverse-vertical_2s_linear_infinite]"
5407
5590
  }
5408
5591
  }, {
5409
5592
  orientation: "horizontal",
5410
5593
  animation: "swing",
5411
5594
  class: {
5412
- indicator: "data-[state=indeterminate]:animate-[swing_2s_ease-in-out_infinite]"
5595
+ indicator: "motion-safe:data-[state=indeterminate]:animate-[swing_2s_var(--ease-in-out)_infinite]"
5413
5596
  }
5414
5597
  }, {
5415
5598
  orientation: "vertical",
5416
5599
  animation: "swing",
5417
5600
  class: {
5418
- indicator: "data-[state=indeterminate]:animate-[swing-vertical_2s_ease-in-out_infinite]"
5601
+ indicator: "motion-safe:data-[state=indeterminate]:animate-[swing-vertical_2s_var(--ease-in-out)_infinite]"
5419
5602
  }
5420
5603
  }, {
5421
5604
  orientation: "horizontal",
5422
5605
  animation: "elastic",
5423
5606
  class: {
5424
- indicator: "data-[state=indeterminate]:animate-[elastic_2s_ease-in-out_infinite]"
5607
+ indicator: "relative motion-safe:data-[state=indeterminate]:animate-[elastic_2s_var(--ease-in-out)_infinite]"
5425
5608
  }
5426
5609
  }, {
5427
5610
  orientation: "vertical",
5428
5611
  animation: "elastic",
5429
5612
  class: {
5430
- indicator: "data-[state=indeterminate]:animate-[elastic-vertical_2s_ease-in-out_infinite]"
5613
+ indicator: "relative motion-safe:data-[state=indeterminate]:animate-[elastic-vertical_2s_var(--ease-in-out)_infinite]"
5431
5614
  }
5432
5615
  }],
5433
5616
  defaultVariants: {
@@ -5437,6 +5620,155 @@ const progress = (options) => ({
5437
5620
  }
5438
5621
  });
5439
5622
 
5623
+ const progressGroup = (options) => ({
5624
+ slots: {
5625
+ root: "gap-2",
5626
+ base: "flex overflow-hidden rounded-full bg-accented",
5627
+ segment: "duration-200 ease-out motion-reduce:transition-none",
5628
+ indicator: "size-full",
5629
+ status: "flex text-dimmed duration-200 ease-out motion-reduce:transition-none",
5630
+ list: "flex flex-col gap-1",
5631
+ item: "flex items-center gap-1.5 min-w-0",
5632
+ itemLeadingIcon: "shrink-0",
5633
+ itemLeadingDot: "shrink-0 rounded-full",
5634
+ itemLabel: "truncate",
5635
+ itemTrailing: "ms-auto shrink-0 text-dimmed"
5636
+ },
5637
+ variants: {
5638
+ color: {
5639
+ ...Object.fromEntries((options.theme.colors || []).map((color) => [color, {
5640
+ indicator: `bg-${color}`,
5641
+ itemLeadingIcon: `text-${color}`,
5642
+ itemLeadingDot: `bg-${color}`
5643
+ }])),
5644
+ neutral: {
5645
+ indicator: "bg-inverted",
5646
+ itemLeadingIcon: "text-highlighted",
5647
+ itemLeadingDot: "bg-inverted"
5648
+ }
5649
+ },
5650
+ size: {
5651
+ "2xs": {
5652
+ status: "text-xs",
5653
+ list: "text-xs",
5654
+ itemLeadingIcon: "size-3",
5655
+ itemLeadingDot: "size-1.5"
5656
+ },
5657
+ "xs": {
5658
+ status: "text-xs",
5659
+ list: "text-xs",
5660
+ itemLeadingIcon: "size-3",
5661
+ itemLeadingDot: "size-1.5"
5662
+ },
5663
+ "sm": {
5664
+ status: "text-sm",
5665
+ list: "text-sm",
5666
+ itemLeadingIcon: "size-4",
5667
+ itemLeadingDot: "size-2"
5668
+ },
5669
+ "md": {
5670
+ status: "text-sm",
5671
+ list: "text-sm",
5672
+ itemLeadingIcon: "size-4",
5673
+ itemLeadingDot: "size-2"
5674
+ },
5675
+ "lg": {
5676
+ status: "text-sm",
5677
+ list: "text-sm",
5678
+ itemLeadingIcon: "size-4",
5679
+ itemLeadingDot: "size-2"
5680
+ },
5681
+ "xl": {
5682
+ status: "text-base",
5683
+ list: "text-base",
5684
+ itemLeadingIcon: "size-5",
5685
+ itemLeadingDot: "size-2.5"
5686
+ },
5687
+ "2xl": {
5688
+ status: "text-base",
5689
+ list: "text-base",
5690
+ itemLeadingIcon: "size-5",
5691
+ itemLeadingDot: "size-2.5"
5692
+ }
5693
+ },
5694
+ orientation: {
5695
+ horizontal: {
5696
+ root: "w-full flex flex-col",
5697
+ base: "w-full flex-row",
5698
+ segment: "h-full transition-[width]",
5699
+ status: "flex-row items-center justify-end w-(--percent) min-w-fit transition-[width]"
5700
+ },
5701
+ vertical: {
5702
+ root: "h-full flex flex-row",
5703
+ base: "h-full flex-col",
5704
+ segment: "w-full transition-[height]",
5705
+ status: "flex-col justify-end h-(--percent) min-h-fit transition-[height]"
5706
+ }
5707
+ }
5708
+ },
5709
+ compoundVariants: [{
5710
+ orientation: "horizontal",
5711
+ size: "2xs",
5712
+ class: "h-px"
5713
+ }, {
5714
+ orientation: "horizontal",
5715
+ size: "xs",
5716
+ class: "h-0.5"
5717
+ }, {
5718
+ orientation: "horizontal",
5719
+ size: "sm",
5720
+ class: "h-1"
5721
+ }, {
5722
+ orientation: "horizontal",
5723
+ size: "md",
5724
+ class: "h-2"
5725
+ }, {
5726
+ orientation: "horizontal",
5727
+ size: "lg",
5728
+ class: "h-3"
5729
+ }, {
5730
+ orientation: "horizontal",
5731
+ size: "xl",
5732
+ class: "h-4"
5733
+ }, {
5734
+ orientation: "horizontal",
5735
+ size: "2xl",
5736
+ class: "h-5"
5737
+ }, {
5738
+ orientation: "vertical",
5739
+ size: "2xs",
5740
+ class: "w-px"
5741
+ }, {
5742
+ orientation: "vertical",
5743
+ size: "xs",
5744
+ class: "w-0.5"
5745
+ }, {
5746
+ orientation: "vertical",
5747
+ size: "sm",
5748
+ class: "w-1"
5749
+ }, {
5750
+ orientation: "vertical",
5751
+ size: "md",
5752
+ class: "w-2"
5753
+ }, {
5754
+ orientation: "vertical",
5755
+ size: "lg",
5756
+ class: "w-3"
5757
+ }, {
5758
+ orientation: "vertical",
5759
+ size: "xl",
5760
+ class: "w-4"
5761
+ }, {
5762
+ orientation: "vertical",
5763
+ size: "2xl",
5764
+ class: "w-5"
5765
+ }],
5766
+ defaultVariants: {
5767
+ color: "primary",
5768
+ size: "md"
5769
+ }
5770
+ });
5771
+
5440
5772
  const radioGroup = (options) => ({
5441
5773
  slots: {
5442
5774
  root: "relative",
@@ -5444,20 +5776,19 @@ const radioGroup = (options) => ({
5444
5776
  legend: "mb-1 block font-medium text-default",
5445
5777
  item: "flex items-start",
5446
5778
  container: "flex items-center",
5447
- base: "rounded-full ring ring-inset ring-accented overflow-hidden focus-visible:outline-3",
5779
+ base: "rounded-full ring ring-inset ring-accented overflow-hidden focus-visible:outline-none",
5448
5780
  indicator: "flex items-center justify-center size-full after:bg-default after:rounded-full",
5449
5781
  wrapper: "w-full",
5450
5782
  label: "block font-medium text-default",
5783
+ icon: "shrink-0",
5451
5784
  description: "text-muted"
5452
5785
  },
5453
5786
  variants: {
5454
5787
  color: {
5455
5788
  ...Object.fromEntries((options.theme.colors || []).map((color) => [color, {
5456
- base: `outline-${color}/25 focus-visible:ring-${color}`,
5457
5789
  indicator: `bg-${color}`
5458
5790
  }])),
5459
5791
  neutral: {
5460
- base: "outline-inverted/25 focus-visible:ring-inverted",
5461
5792
  indicator: "bg-inverted"
5462
5793
  }
5463
5794
  },
@@ -5466,10 +5797,10 @@ const radioGroup = (options) => ({
5466
5797
  item: ""
5467
5798
  },
5468
5799
  card: {
5469
- item: "border border-muted rounded-lg"
5800
+ item: [`border border-muted rounded-lg ${hover}bg-elevated/50`, options.theme.transitions && "transition-colors"]
5470
5801
  },
5471
5802
  table: {
5472
- item: "border border-muted"
5803
+ item: [`border border-muted ${hover}bg-elevated/50`, options.theme.transitions && "transition-colors"]
5473
5804
  }
5474
5805
  },
5475
5806
  orientation: {
@@ -5491,7 +5822,7 @@ const radioGroup = (options) => ({
5491
5822
  },
5492
5823
  hidden: {
5493
5824
  base: "sr-only",
5494
- wrapper: "text-center"
5825
+ wrapper: "flex flex-col items-center gap-1 text-center"
5495
5826
  }
5496
5827
  },
5497
5828
  size: {
@@ -5537,7 +5868,8 @@ const radioGroup = (options) => ({
5537
5868
  }
5538
5869
  },
5539
5870
  highlight: {
5540
- true: ""
5871
+ true: "",
5872
+ false: ""
5541
5873
  },
5542
5874
  disabled: {
5543
5875
  true: {
@@ -5554,6 +5886,24 @@ const radioGroup = (options) => ({
5554
5886
  }
5555
5887
  },
5556
5888
  compoundVariants: [
5889
+ {
5890
+ indicator: "hidden",
5891
+ class: {
5892
+ container: "h-auto"
5893
+ }
5894
+ },
5895
+ {
5896
+ variant: ["card", "table"],
5897
+ highlight: false,
5898
+ class: {
5899
+ item: `${hover}border-accented`
5900
+ }
5901
+ },
5902
+ { size: "xs", indicator: "hidden", class: { icon: "size-3" } },
5903
+ { size: "sm", indicator: "hidden", class: { icon: "size-3.5" } },
5904
+ { size: "md", indicator: "hidden", class: { icon: "size-4" } },
5905
+ { size: "lg", indicator: "hidden", class: { icon: "size-4.5" } },
5906
+ { size: "xl", indicator: "hidden", class: { icon: "size-5" } },
5557
5907
  { size: "xs", variant: ["card", "table"], class: { item: "p-2.5" } },
5558
5908
  { size: "sm", variant: ["card", "table"], class: { item: "p-3" } },
5559
5909
  { size: "md", variant: ["card", "table"], class: { item: "p-3.5" } },
@@ -5575,18 +5925,41 @@ const radioGroup = (options) => ({
5575
5925
  fieldset: "gap-0 -space-y-px"
5576
5926
  }
5577
5927
  },
5928
+ ...[...(options.theme.colors || []).map((color) => [color, color]), ["neutral", "inverted"]].map(([color, token]) => ({
5929
+ color,
5930
+ variant: "list",
5931
+ indicator: ["start", "end"],
5932
+ class: {
5933
+ base: focusControl(token)
5934
+ }
5935
+ })),
5936
+ ...[...(options.theme.colors || []).map((color) => [color, color]), ["neutral", "inverted"]].map(([color, token]) => ({
5937
+ color,
5938
+ variant: ["card", "table"],
5939
+ class: {
5940
+ item: focusCard(token)
5941
+ }
5942
+ })),
5943
+ ...[...(options.theme.colors || []).map((color) => [color, color]), ["neutral", "inverted"]].map(([color, token]) => ({
5944
+ color,
5945
+ variant: "list",
5946
+ indicator: "hidden",
5947
+ class: {
5948
+ item: focusCard(token)
5949
+ }
5950
+ })),
5578
5951
  ...(options.theme.colors || []).map((color) => ({
5579
5952
  color,
5580
5953
  variant: "card",
5581
5954
  class: {
5582
- item: `has-data-[state=checked]:border-${color}`
5955
+ item: `has-data-[state=checked]:border-${color}/50 has-data-[state=checked]:bg-${color}/10`
5583
5956
  }
5584
5957
  })),
5585
5958
  {
5586
5959
  color: "neutral",
5587
5960
  variant: "card",
5588
5961
  class: {
5589
- item: "has-data-[state=checked]:border-inverted"
5962
+ item: "has-data-[state=checked]:border-inverted/50 has-data-[state=checked]:bg-elevated"
5590
5963
  }
5591
5964
  },
5592
5965
  ...(options.theme.colors || []).map((color) => ({
@@ -5610,6 +5983,22 @@ const radioGroup = (options) => ({
5610
5983
  item: "cursor-not-allowed"
5611
5984
  }
5612
5985
  },
5986
+ ...(options.theme.colors || []).map((color) => ({
5987
+ color,
5988
+ indicator: "hidden",
5989
+ highlight: true,
5990
+ class: {
5991
+ item: `not-has-disabled:border-${color} not-has-disabled:has-data-[state=checked]:border-${color}`
5992
+ }
5993
+ })),
5994
+ {
5995
+ color: "neutral",
5996
+ indicator: "hidden",
5997
+ highlight: true,
5998
+ class: {
5999
+ item: "not-has-disabled:border-inverted not-has-disabled:has-data-[state=checked]:border-inverted"
6000
+ }
6001
+ },
5613
6002
  ...(options.theme.colors || []).map((color) => ({
5614
6003
  color,
5615
6004
  highlight: true,
@@ -5626,6 +6015,7 @@ const radioGroup = (options) => ({
5626
6015
  }
5627
6016
  ],
5628
6017
  defaultVariants: {
6018
+ highlight: false,
5629
6019
  size: "md",
5630
6020
  color: "primary",
5631
6021
  variant: "list",
@@ -5651,6 +6041,11 @@ const scrollArea = {
5651
6041
  viewport: "flex-row",
5652
6042
  item: ""
5653
6043
  }
6044
+ },
6045
+ externalScroll: {
6046
+ true: {
6047
+ root: "overflow-visible"
6048
+ }
5654
6049
  }
5655
6050
  }
5656
6051
  };
@@ -5747,7 +6142,7 @@ const select = (options) => {
5747
6142
  },
5748
6143
  position: {
5749
6144
  "popper": {
5750
- content: "data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]"
6145
+ content: "data-[state=open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)]"
5751
6146
  },
5752
6147
  "item-aligned": {
5753
6148
  content: ""
@@ -5927,19 +6322,18 @@ const sidebar = (options) => ({
5927
6322
  variants: {
5928
6323
  transition: {
5929
6324
  true: {
5930
- gap: "transition-[width] duration-200 ease-out",
5931
- container: "transition-[left,right,width] duration-200 ease-out",
5932
- rail: "transition-all ease-out"
6325
+ gap: "transition-[width] duration-200 ease-out motion-reduce:transition-none",
6326
+ container: "transition-[inset-inline-start,inset-inline-end,width] duration-200 ease-out motion-reduce:transition-none"
5933
6327
  }
5934
6328
  },
5935
6329
  side: {
5936
6330
  left: {
5937
- container: "left-0 border-e border-default",
5938
- rail: "end-0 translate-x-1/2"
6331
+ container: "start-0 border-e border-default",
6332
+ rail: "end-0 translate-x-1/2 rtl:-translate-x-1/2"
5939
6333
  },
5940
6334
  right: {
5941
- container: "right-0 border-s border-default",
5942
- rail: "-start-px -translate-x-1/2"
6335
+ container: "end-0 border-s border-default",
6336
+ rail: "-start-px -translate-x-1/2 rtl:translate-x-1/2"
5943
6337
  }
5944
6338
  },
5945
6339
  collapsible: {
@@ -5976,13 +6370,13 @@ const sidebar = (options) => ({
5976
6370
  side: "left",
5977
6371
  collapsible: ["offcanvas", "icon"],
5978
6372
  class: {
5979
- rail: "cursor-w-resize data-[state=collapsed]:cursor-e-resize"
6373
+ rail: "cursor-w-resize rtl:cursor-e-resize data-[state=collapsed]:cursor-e-resize data-[state=collapsed]:rtl:cursor-w-resize"
5980
6374
  }
5981
6375
  }, {
5982
6376
  side: "right",
5983
6377
  collapsible: ["offcanvas", "icon"],
5984
6378
  class: {
5985
- rail: "cursor-e-resize data-[state=collapsed]:cursor-w-resize"
6379
+ rail: "cursor-e-resize rtl:cursor-w-resize data-[state=collapsed]:cursor-w-resize data-[state=collapsed]:rtl:cursor-e-resize"
5986
6380
  }
5987
6381
  }, {
5988
6382
  side: "left",
@@ -6000,13 +6394,13 @@ const sidebar = (options) => ({
6000
6394
  side: "left",
6001
6395
  collapsible: "offcanvas",
6002
6396
  class: {
6003
- container: "data-[state=collapsed]:-left-(--sidebar-width)"
6397
+ container: "data-[state=collapsed]:-start-(--sidebar-width)"
6004
6398
  }
6005
6399
  }, {
6006
6400
  side: "right",
6007
6401
  collapsible: "offcanvas",
6008
6402
  class: {
6009
- container: "data-[state=collapsed]:-right-(--sidebar-width)"
6403
+ container: "data-[state=collapsed]:-end-(--sidebar-width)"
6010
6404
  }
6011
6405
  }, {
6012
6406
  variant: "floating",
@@ -6080,7 +6474,7 @@ const slideover = {
6080
6474
  },
6081
6475
  transition: {
6082
6476
  true: {
6083
- overlay: "data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]"
6477
+ overlay: "data-[state=open]:animate-[fade-in_200ms_var(--ease-out)] data-[state=closed]:animate-[fade-out_200ms_var(--ease-out)]"
6084
6478
  }
6085
6479
  }
6086
6480
  },
@@ -6136,25 +6530,25 @@ const slideover = {
6136
6530
  transition: true,
6137
6531
  side: "top",
6138
6532
  class: {
6139
- content: "data-[state=open]:animate-[slide-in-from-top_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-top_200ms_ease-in-out]"
6533
+ content: "data-[state=open]:animate-[slide-in-from-top_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-top_200ms_var(--ease-out)]"
6140
6534
  }
6141
6535
  }, {
6142
6536
  transition: true,
6143
6537
  side: "right",
6144
6538
  class: {
6145
- content: "data-[state=open]:animate-[slide-in-from-right_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-right_200ms_ease-in-out]"
6539
+ content: "data-[state=open]:animate-[slide-in-from-right_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-right_200ms_var(--ease-out)]"
6146
6540
  }
6147
6541
  }, {
6148
6542
  transition: true,
6149
6543
  side: "bottom",
6150
6544
  class: {
6151
- content: "data-[state=open]:animate-[slide-in-from-bottom_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-bottom_200ms_ease-in-out]"
6545
+ content: "data-[state=open]:animate-[slide-in-from-bottom_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-bottom_200ms_var(--ease-out)]"
6152
6546
  }
6153
6547
  }, {
6154
6548
  transition: true,
6155
6549
  side: "left",
6156
6550
  class: {
6157
- content: "data-[state=open]:animate-[slide-in-from-left_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-left_200ms_ease-in-out]"
6551
+ content: "data-[state=open]:animate-[slide-in-from-left_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-left_200ms_var(--ease-out)]"
6158
6552
  }
6159
6553
  }]
6160
6554
  };
@@ -6277,6 +6671,101 @@ const slider = (options) => ({
6277
6671
  }
6278
6672
  });
6279
6673
 
6674
+ const splitter = {
6675
+ slots: {
6676
+ root: "",
6677
+ panel: "flex",
6678
+ handle: "group relative shrink-0 focus-visible:outline-2 focus-visible:outline-primary data-[panel-resize-handle-enabled=false]:cursor-default"
6679
+ },
6680
+ variants: {
6681
+ orientation: {
6682
+ horizontal: {
6683
+ handle: "w-2 cursor-col-resize"
6684
+ },
6685
+ vertical: {
6686
+ handle: "h-2 cursor-row-resize"
6687
+ }
6688
+ }
6689
+ }
6690
+ };
6691
+
6692
+ const inputRating = (options) => ({
6693
+ slots: {
6694
+ root: "",
6695
+ item: ["relative inline-block cursor-pointer select-none rounded-sm has-focus-visible:outline-3", options.theme.transitions && "transition"],
6696
+ indicator: "absolute inset-0 overflow-hidden outline-none text-transparent w-(--reka-rating-item-step-width) opacity-(--reka-rating-item-step-opacity) z-(--reka-rating-item-step-z-index)",
6697
+ icon: "block",
6698
+ emptyIcon: "block w-full h-full text-muted pointer-events-none"
6699
+ },
6700
+ variants: {
6701
+ orientation: {
6702
+ horizontal: {
6703
+ root: "inline-flex items-center gap-0.5"
6704
+ },
6705
+ vertical: {
6706
+ root: "inline-flex flex-col items-center gap-0.5"
6707
+ }
6708
+ },
6709
+ size: {
6710
+ xs: {
6711
+ item: "size-3",
6712
+ icon: "size-3"
6713
+ },
6714
+ sm: {
6715
+ item: "size-4",
6716
+ icon: "size-4"
6717
+ },
6718
+ md: {
6719
+ item: "size-5",
6720
+ icon: "size-5"
6721
+ },
6722
+ lg: {
6723
+ item: "size-6",
6724
+ icon: "size-6"
6725
+ },
6726
+ xl: {
6727
+ item: "size-7",
6728
+ icon: "size-7"
6729
+ }
6730
+ },
6731
+ color: {
6732
+ ...Object.fromEntries((options.theme.colors || []).map((color) => [color, {
6733
+ indicator: `data-[state=active]:text-${color}`,
6734
+ item: `outline-${color}/25`
6735
+ }])),
6736
+ neutral: {
6737
+ indicator: "data-[state=active]:text-highlighted",
6738
+ item: "outline-inverted/25"
6739
+ }
6740
+ },
6741
+ readonly: {
6742
+ true: {
6743
+ root: "cursor-default",
6744
+ item: "cursor-default"
6745
+ },
6746
+ false: {}
6747
+ },
6748
+ disabled: {
6749
+ true: {
6750
+ root: "opacity-75 cursor-not-allowed",
6751
+ item: "cursor-not-allowed pointer-events-none"
6752
+ },
6753
+ false: {}
6754
+ }
6755
+ },
6756
+ compoundVariants: [{
6757
+ readonly: false,
6758
+ disabled: false,
6759
+ class: {
6760
+ item: "hover:scale-110"
6761
+ }
6762
+ }],
6763
+ defaultVariants: {
6764
+ color: "primary",
6765
+ size: "md"
6766
+ }
6767
+ });
6768
+
6280
6769
  const stepper = (options) => ({
6281
6770
  slots: {
6282
6771
  root: "flex gap-4",
@@ -6404,10 +6893,10 @@ const stepper = (options) => ({
6404
6893
  const _switch = (options) => ({
6405
6894
  slots: {
6406
6895
  root: "relative flex items-start",
6407
- base: ["inline-flex items-center shrink-0 rounded-full border-2 border-transparent focus-visible:outline-3 data-[state=unchecked]:bg-accented", options.theme.transitions && "transition-[background] duration-200"],
6896
+ base: ["inline-flex items-center shrink-0 rounded-full border-2 border-transparent focus-visible:outline-3 data-[state=unchecked]:bg-accented", options.theme.transitions && "transition-[background] duration-200 ease-out"],
6408
6897
  container: "flex items-center",
6409
- thumb: "group pointer-events-none rounded-full bg-default shadow-lg ring-0 transition-transform duration-200 data-[state=unchecked]:translate-x-0 data-[state=unchecked]:rtl:-translate-x-0 flex items-center justify-center",
6410
- icon: ["absolute shrink-0 group-data-[state=unchecked]:text-dimmed opacity-0 size-10/12", options.theme.transitions && "transition-[color,opacity] duration-200"],
6898
+ thumb: "group pointer-events-none rounded-full bg-default shadow-lg ring-0 transition-transform duration-200 ease-out motion-reduce:transition-none data-[state=unchecked]:translate-x-0 data-[state=unchecked]:rtl:-translate-x-0 flex items-center justify-center",
6899
+ icon: ["absolute shrink-0 group-data-[state=unchecked]:text-dimmed opacity-0 size-10/12", options.theme.transitions && "transition-[color,opacity] duration-200 ease-out"],
6411
6900
  wrapper: "ms-2",
6412
6901
  label: "block font-medium text-default",
6413
6902
  description: "text-muted"
@@ -6518,9 +7007,9 @@ const table$1 = (options) => ({
6518
7007
  tbody: "isolate [&>tr]:data-[selectable=true]:hover:bg-elevated/50 [&>tr]:data-[selectable=true]:outline-primary/25 [&>tr]:data-[selectable=true]:focus-visible:outline-3 divide-y divide-default",
6519
7008
  tfoot: "relative",
6520
7009
  tr: "data-[selected=true]:bg-elevated/50",
6521
- th: "px-4 py-3.5 text-sm text-highlighted text-left rtl:text-right font-semibold [&:has([role=checkbox])]:pe-0",
7010
+ th: "px-4 py-3.5 text-sm text-highlighted text-start font-semibold [&:has([role=checkbox])]:pe-0",
6522
7011
  td: "p-4 text-sm text-muted whitespace-nowrap [&:has([role=checkbox])]:pe-0",
6523
- separator: "absolute z-1 left-0 w-full h-px bg-(--ui-border-accented)",
7012
+ separator: "absolute z-1 start-0 w-full h-px bg-(--ui-border-accented)",
6524
7013
  empty: "py-6 text-center text-sm text-muted",
6525
7014
  loading: "py-6 text-center"
6526
7015
  },
@@ -6533,19 +7022,24 @@ const table$1 = (options) => ({
6533
7022
  },
6534
7023
  sticky: {
6535
7024
  true: {
6536
- thead: "sticky top-0 inset-x-0 bg-default/75 backdrop-blur z-1",
6537
- tfoot: "sticky bottom-0 inset-x-0 bg-default/75 backdrop-blur z-1"
7025
+ thead: "sticky top-0 inset-x-0 bg-default/75 backdrop-blur-sm z-1",
7026
+ tfoot: "sticky bottom-0 inset-x-0 bg-default/75 backdrop-blur-sm z-1"
6538
7027
  },
6539
7028
  header: {
6540
- thead: "sticky top-0 inset-x-0 bg-default/75 backdrop-blur z-1"
7029
+ thead: "sticky top-0 inset-x-0 bg-default/75 backdrop-blur-sm z-1"
6541
7030
  },
6542
7031
  footer: {
6543
- tfoot: "sticky bottom-0 inset-x-0 bg-default/75 backdrop-blur z-1"
7032
+ tfoot: "sticky bottom-0 inset-x-0 bg-default/75 backdrop-blur-sm z-1"
6544
7033
  }
6545
7034
  },
6546
7035
  loading: {
6547
7036
  true: {
6548
- thead: "after:absolute after:z-1 after:h-px"
7037
+ thead: "after:absolute after:z-1 after:h-px motion-reduce:after:inset-x-0 motion-reduce:after:animate-pulse"
7038
+ }
7039
+ },
7040
+ externalScroll: {
7041
+ true: {
7042
+ root: "overflow-visible"
6549
7043
  }
6550
7044
  },
6551
7045
  loadingAnimation: {
@@ -6575,25 +7069,25 @@ const table$1 = (options) => ({
6575
7069
  loading: true,
6576
7070
  loadingAnimation: "carousel",
6577
7071
  class: {
6578
- thead: "after:animate-[carousel_2s_ease-in-out_infinite] rtl:after:animate-[carousel-rtl_2s_ease-in-out_infinite]"
7072
+ thead: "motion-safe:after:animate-[carousel_2s_linear_infinite] motion-safe:rtl:after:animate-[carousel-rtl_2s_linear_infinite]"
6579
7073
  }
6580
7074
  }, {
6581
7075
  loading: true,
6582
7076
  loadingAnimation: "carousel-inverse",
6583
7077
  class: {
6584
- thead: "after:animate-[carousel-inverse_2s_ease-in-out_infinite] rtl:after:animate-[carousel-inverse-rtl_2s_ease-in-out_infinite]"
7078
+ thead: "motion-safe:after:animate-[carousel-inverse_2s_linear_infinite] motion-safe:rtl:after:animate-[carousel-inverse-rtl_2s_linear_infinite]"
6585
7079
  }
6586
7080
  }, {
6587
7081
  loading: true,
6588
7082
  loadingAnimation: "swing",
6589
7083
  class: {
6590
- thead: "after:animate-[swing_2s_ease-in-out_infinite]"
7084
+ thead: "motion-safe:after:animate-[swing_2s_var(--ease-in-out)_infinite]"
6591
7085
  }
6592
7086
  }, {
6593
7087
  loading: true,
6594
7088
  loadingAnimation: "elastic",
6595
7089
  class: {
6596
- thead: "after:animate-[elastic_2s_ease-in-out_infinite]"
7090
+ thead: "motion-safe:after:animate-[elastic_2s_var(--ease-in-out)_infinite]"
6597
7091
  }
6598
7092
  }],
6599
7093
  defaultVariants: {
@@ -6607,7 +7101,7 @@ const tabs$1 = (options) => ({
6607
7101
  slots: {
6608
7102
  root: "flex items-center gap-2",
6609
7103
  list: "relative flex p-1 group",
6610
- indicator: "absolute transition-[translate,width] duration-200",
7104
+ indicator: "absolute transition-[translate,width] duration-200 ease-out motion-reduce:transition-none",
6611
7105
  trigger: ["group relative inline-flex items-center min-w-0 data-[state=inactive]:text-muted hover:data-[state=inactive]:not-disabled:text-default font-medium rounded-md disabled:cursor-not-allowed disabled:opacity-75", options.theme.transitions && "transition-colors"],
6612
7106
  leadingIcon: "shrink-0",
6613
7107
  leadingAvatar: "shrink-0",
@@ -7017,7 +7511,7 @@ const toast = (options) => ({
7017
7511
  const toaster = {
7018
7512
  slots: {
7019
7513
  viewport: "fixed flex flex-col w-[calc(100%-2rem)] sm:w-96 z-[100] data-[expanded=true]:h-(--height) focus:outline-none",
7020
- base: "pointer-events-auto absolute inset-x-0 z-(--index) transform-(--transform) data-[expanded=false]:data-[front=false]:h-(--front-height) data-[expanded=false]:data-[front=false]:*:opacity-0 data-[front=false]:*:transition-opacity data-[front=false]:*:duration-100 data-[state=closed]:animate-[toast-closed_200ms_ease-in-out] data-[state=closed]:data-[expanded=false]:data-[front=false]:animate-[toast-collapsed-closed_200ms_ease-in-out] data-[state=open]:data-[pulsing=odd]:animate-[toast-pulse-a_300ms_ease-out] data-[state=open]:data-[pulsing=even]:animate-[toast-pulse-b_300ms_ease-out] data-[swipe=move]:transition-none transition-[transform,translate,height] duration-200 ease-out"
7514
+ base: "pointer-events-auto absolute inset-x-0 z-(--index) transform-(--transform) data-[expanded=false]:data-[front=false]:h-(--front-height) data-[expanded=false]:data-[front=false]:*:opacity-0 data-[front=false]:*:transition-opacity data-[front=false]:*:duration-100 data-[state=closed]:animate-[toast-closed_200ms_var(--ease-out)] data-[state=closed]:data-[expanded=false]:data-[front=false]:animate-[toast-collapsed-closed_200ms_var(--ease-out)] motion-safe:data-[state=open]:data-[pulsing=odd]:animate-[toast-pulse-a_200ms_var(--ease-out)] motion-safe:data-[state=open]:data-[pulsing=even]:animate-[toast-pulse-b_200ms_var(--ease-out)] data-[swipe=move]:transition-none transition-[transform,translate,height] duration-200 ease-out motion-reduce:transition-none"
7021
7515
  },
7022
7516
  variants: {
7023
7517
  position: {
@@ -7041,23 +7535,23 @@ const toaster = {
7041
7535
  }
7042
7536
  },
7043
7537
  swipeDirection: {
7044
- up: "data-[swipe=end]:animate-[toast-slide-up_200ms_ease-out]",
7045
- right: "data-[swipe=end]:animate-[toast-slide-right_200ms_ease-out]",
7046
- down: "data-[swipe=end]:animate-[toast-slide-down_200ms_ease-out]",
7047
- left: "data-[swipe=end]:animate-[toast-slide-left_200ms_ease-out]"
7538
+ up: "data-[swipe=end]:animate-[toast-slide-up_200ms_var(--ease-out)]",
7539
+ right: "data-[swipe=end]:animate-[toast-slide-right_200ms_var(--ease-out)]",
7540
+ down: "data-[swipe=end]:animate-[toast-slide-down_200ms_var(--ease-out)]",
7541
+ left: "data-[swipe=end]:animate-[toast-slide-left_200ms_var(--ease-out)]"
7048
7542
  }
7049
7543
  },
7050
7544
  compoundVariants: [{
7051
7545
  position: ["top-left", "top-center", "top-right"],
7052
7546
  class: {
7053
7547
  viewport: "top-4",
7054
- base: "top-0 data-[state=open]:animate-[toast-slide-in-from-top_200ms_ease-in-out]"
7548
+ base: "top-0 data-[state=open]:animate-[toast-slide-in-from-top_200ms_var(--ease-out)]"
7055
7549
  }
7056
7550
  }, {
7057
7551
  position: ["bottom-left", "bottom-center", "bottom-right"],
7058
7552
  class: {
7059
7553
  viewport: "bottom-4",
7060
- base: "bottom-0 data-[state=open]:animate-[toast-slide-in-from-bottom_200ms_ease-in-out]"
7554
+ base: "bottom-0 data-[state=open]:animate-[toast-slide-in-from-bottom_200ms_var(--ease-out)]"
7061
7555
  }
7062
7556
  }, {
7063
7557
  swipeDirection: ["left", "right"],
@@ -7073,7 +7567,7 @@ const toaster = {
7073
7567
 
7074
7568
  const tooltip = {
7075
7569
  slots: {
7076
- content: "flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2.5 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto",
7570
+ content: "flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2.5 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto",
7077
7571
  arrow: "fill-bg stroke-default",
7078
7572
  text: "truncate",
7079
7573
  kbds: `hidden lg:inline-flex items-center shrink-0 gap-0.5 not-first-of-type:before:content-['\xB7'] not-first-of-type:before:me-0.5`,
@@ -7091,7 +7585,7 @@ const tree = (options) => ({
7091
7585
  linkLeadingIcon: "shrink-0 relative",
7092
7586
  linkLabel: "truncate",
7093
7587
  linkTrailing: "ms-auto inline-flex gap-1.5 items-center",
7094
- linkTrailingIcon: "shrink-0 transform transition-transform duration-200 group-data-expanded:rotate-180"
7588
+ linkTrailingIcon: "shrink-0 transform transition-transform duration-200 ease-out motion-reduce:transition-none group-data-expanded:rotate-180"
7095
7589
  },
7096
7590
  variants: {
7097
7591
  virtualize: {
@@ -7197,7 +7691,7 @@ const user = (options) => ({
7197
7691
  root: ["rounded-md outline-primary/25 has-focus-visible:outline-3", options.theme.transitions && "transition"],
7198
7692
  name: ["text-default peer-hover:text-highlighted peer-focus-visible:text-highlighted", options.theme.transitions && "transition-colors"],
7199
7693
  description: ["peer-hover:text-toned peer-focus-visible:text-toned", options.theme.transitions && "transition-colors"],
7200
- avatar: "transform transition-transform duration-200 group-hover/user:scale-115 group-has-focus-visible/user:scale-115"
7694
+ avatar: "transform transition-transform ease-out motion-reduce:transition-none group-hover/user:scale-115 group-has-focus-visible/user:scale-115"
7201
7695
  },
7202
7696
  false: {
7203
7697
  name: "text-highlighted",
@@ -7325,6 +7819,7 @@ const theme = {
7325
7819
  inputDate: inputDate,
7326
7820
  inputMenu: inputMenu,
7327
7821
  inputNumber: inputNumber,
7822
+ inputRating: inputRating,
7328
7823
  inputTags: inputTags,
7329
7824
  inputTime: inputTime,
7330
7825
  kbd: kbd$1,
@@ -7356,6 +7851,7 @@ const theme = {
7356
7851
  pricingPlans: pricingPlans,
7357
7852
  pricingTable: pricingTable,
7358
7853
  progress: progress,
7854
+ progressGroup: progressGroup,
7359
7855
  radioGroup: radioGroup,
7360
7856
  scrollArea: scrollArea,
7361
7857
  select: select,
@@ -7365,6 +7861,7 @@ const theme = {
7365
7861
  skeleton: skeleton,
7366
7862
  slideover: slideover,
7367
7863
  slider: slider,
7864
+ splitter: splitter,
7368
7865
  stepper: stepper,
7369
7866
  switch: _switch,
7370
7867
  table: table$1,
@@ -7405,7 +7902,7 @@ const callout = (options) => ({
7405
7902
  slots: {
7406
7903
  base: ["group relative block px-4 py-3 rounded-md text-sm/6 my-5 last:mb-0 [&_code]:text-xs/5 [&_code]:bg-default [&_pre]:bg-default [&>div]:my-2.5 [&_ul]:my-2.5 [&_ol]:my-2.5 *:last:mb-0! [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:my-0", options.theme.transitions && "transition-colors"],
7407
7904
  icon: ["size-4 shrink-0 align-sub me-2 inline-block", options.theme.transitions && "transition-colors"],
7408
- externalIcon: ["size-4 align-top absolute right-2 top-2 pointer-events-none", options.theme.transitions && "transition-colors"]
7905
+ externalIcon: ["size-4 align-top absolute end-2 top-2 pointer-events-none", options.theme.transitions && "transition-colors"]
7409
7906
  },
7410
7907
  variants: {
7411
7908
  color: {
@@ -7450,7 +7947,7 @@ const card = (options) => ({
7450
7947
  icon: "size-6 mb-2 block",
7451
7948
  title: "text-highlighted font-semibold",
7452
7949
  description: "text-[15px] text-muted *:first:mt-0 *:last:mb-0 *:my-1",
7453
- externalIcon: ["size-4 align-top absolute right-2 top-2 text-dimmed pointer-events-none", options.theme.transitions && "transition-colors"]
7950
+ externalIcon: ["size-4 align-top absolute end-2 top-2 text-dimmed pointer-events-none", options.theme.transitions && "transition-colors"]
7454
7951
  },
7455
7952
  variants: {
7456
7953
  color: {
@@ -7531,7 +8028,7 @@ const codeGroup = (options) => ({
7531
8028
  slots: {
7532
8029
  root: "relative group *:not-first:my-0! *:not-first:static! my-5",
7533
8030
  list: "relative flex items-center gap-1 border border-muted bg-default border-b-0 rounded-t-md overflow-x-auto p-2",
7534
- indicator: "absolute left-0 inset-y-2 w-(--reka-tabs-indicator-size) translate-x-(--reka-tabs-indicator-position) transition-[translate,width] duration-200 bg-elevated rounded-md shadow-xs",
8031
+ indicator: "absolute left-0 inset-y-2 w-(--reka-tabs-indicator-size) translate-x-(--reka-tabs-indicator-position) transition-[translate,width] duration-200 ease-out motion-reduce:transition-none bg-elevated rounded-md shadow-xs",
7535
8032
  trigger: ["relative inline-flex items-center gap-1.5 text-default data-[state=active]:text-highlighted hover:bg-elevated/50 px-2 py-1.5 text-sm rounded-md disabled:cursor-not-allowed disabled:opacity-75 outline-primary/25 focus-visible:outline-3", options.theme.transitions && "transition-colors"],
7536
8033
  triggerIcon: "size-4 shrink-0",
7537
8034
  triggerLabel: "truncate"
@@ -7539,71 +8036,71 @@ const codeGroup = (options) => ({
7539
8036
  });
7540
8037
 
7541
8038
  const codeIcon = {
7542
- "package.json": "i-vscode-icons-file-type-node",
7543
- "tsconfig.json": "i-vscode-icons-file-type-tsconfig",
7544
- ".npmrc": "i-vscode-icons-file-type-npm",
7545
8039
  ".editorconfig": "i-vscode-icons-file-type-editorconfig",
8040
+ ".env": "i-vscode-icons-file-type-dotenv",
8041
+ ".env.example": "i-vscode-icons-file-type-dotenv",
8042
+ ".eslintignore": "i-vscode-icons-file-type-eslint",
7546
8043
  ".eslintrc": "i-vscode-icons-file-type-eslint",
7547
8044
  ".eslintrc.cjs": "i-vscode-icons-file-type-eslint",
7548
- ".eslintignore": "i-vscode-icons-file-type-eslint",
7549
- "eslint.config.js": "i-vscode-icons-file-type-eslint",
7550
- "eslint.config.mjs": "i-vscode-icons-file-type-eslint",
7551
- "eslint.config.cjs": "i-vscode-icons-file-type-eslint",
7552
8045
  ".gitignore": "i-vscode-icons-file-type-git",
7553
- "yarn.lock": "i-vscode-icons-file-type-yarn",
7554
- ".env": "i-vscode-icons-file-type-dotenv",
7555
- ".env.example": "i-vscode-icons-file-type-dotenv",
7556
- ".vscode/settings.json": "i-vscode-icons-file-type-vscode",
7557
- "nuxt": "i-vscode-icons-file-type-nuxt",
7558
- ".nuxtrc": "i-vscode-icons-file-type-nuxt",
8046
+ ".npmrc": "i-vscode-icons-file-type-npm",
7559
8047
  ".nuxtignore": "i-vscode-icons-file-type-nuxt",
7560
- "nuxt.config.js": "i-vscode-icons-file-type-nuxt",
7561
- "nuxt.config.ts": "i-vscode-icons-file-type-nuxt",
7562
- "nuxt.schema.ts": "i-vscode-icons-file-type-nuxt",
7563
- "tailwind.config.js": "i-vscode-icons-file-type-tailwind",
7564
- "tailwind.config.ts": "i-vscode-icons-file-type-tailwind",
7565
- "vue": "i-vscode-icons-file-type-vue",
7566
- "ts": "i-vscode-icons-file-type-typescript",
7567
- "tsx": "i-vscode-icons-file-type-typescript",
7568
- "mjs": "i-vscode-icons-file-type-js",
8048
+ ".nuxtrc": "i-vscode-icons-file-type-nuxt",
8049
+ ".vscode/settings.json": "i-vscode-icons-file-type-vscode",
8050
+ "asm": "i-vscode-icons-file-type-assembly",
8051
+ "bicep": "i-vscode-icons-file-type-bicep",
8052
+ "bicepparam": "i-vscode-icons-file-type-bicep",
8053
+ "bun": "i-vscode-icons-file-type-bun",
7569
8054
  "cjs": "i-vscode-icons-file-type-js",
7570
- "js": "i-vscode-icons-file-type-js",
7571
- "jsx": "i-vscode-icons-file-type-js",
7572
- "md": "i-vscode-icons-file-type-markdown",
7573
- "py": "i-vscode-icons-file-type-python",
7574
8055
  "cs": "i-vscode-icons-file-type-csharp",
7575
- "asm": "i-vscode-icons-file-type-assembly",
8056
+ "dart": "i-vscode-icons-file-type-dartlang",
8057
+ "deno": "i-vscode-icons-file-type-deno",
8058
+ "erl": "i-vscode-icons-file-type-erlang",
8059
+ "eslint.config.cjs": "i-vscode-icons-file-type-eslint",
8060
+ "eslint.config.js": "i-vscode-icons-file-type-eslint",
8061
+ "eslint.config.mjs": "i-vscode-icons-file-type-eslint",
8062
+ "exs": "i-vscode-icons-file-type-elixir",
7576
8063
  "f": "i-vscode-icons-file-type-fortran",
7577
- "hs": "i-vscode-icons-file-type-haskell",
7578
8064
  "fs": "i-vscode-icons-file-type-fsharp",
7579
- "kt": "i-vscode-icons-file-type-kotlin",
7580
- "rs": "i-vscode-icons-file-type-rust",
7581
- "rb": "i-vscode-icons-file-type-ruby",
7582
- "lsp": "i-vscode-icons-file-type-lisp",
7583
- "ps1": "i-vscode-icons-file-type-powershell",
7584
- "psd1": "i-vscode-icons-file-type-powershell",
7585
- "psm1": "i-vscode-icons-file-type-powershell",
7586
- "go": "i-vscode-icons-file-type-go",
7587
8065
  "gleam": "i-vscode-icons-file-type-gleam",
7588
- "bicep": "i-vscode-icons-file-type-bicep",
7589
- "bicepparam": "i-vscode-icons-file-type-bicep",
7590
- "exs": "i-vscode-icons-file-type-elixir",
7591
- "erl": "i-vscode-icons-file-type-erlang",
7592
- "sbt": "i-vscode-icons-file-type-scala",
8066
+ "go": "i-vscode-icons-file-type-go",
7593
8067
  "h": "i-vscode-icons-file-type-cppheader",
8068
+ "hs": "i-vscode-icons-file-type-haskell",
8069
+ "ico": "i-vscode-icons-file-type-favicon",
7594
8070
  "ino": "i-vscode-icons-file-type-arduino",
7595
- "pl": "i-vscode-icons-file-type-perl",
7596
8071
  "jl": "i-vscode-icons-file-type-julia",
7597
- "dart": "i-vscode-icons-file-type-dartlang",
7598
- "ico": "i-vscode-icons-file-type-favicon",
8072
+ "js": "i-vscode-icons-file-type-js",
8073
+ "jsx": "i-vscode-icons-file-type-js",
8074
+ "kt": "i-vscode-icons-file-type-kotlin",
8075
+ "lsp": "i-vscode-icons-file-type-lisp",
8076
+ "md": "i-vscode-icons-file-type-markdown",
8077
+ "mjs": "i-vscode-icons-file-type-js",
7599
8078
  "npm": "i-vscode-icons-file-type-npm",
7600
- "pnpm": "i-vscode-icons-file-type-pnpm",
7601
8079
  "npx": "i-vscode-icons-file-type-npm",
8080
+ "nuxt": "i-vscode-icons-file-type-nuxt",
8081
+ "nuxt.config.js": "i-vscode-icons-file-type-nuxt",
8082
+ "nuxt.config.ts": "i-vscode-icons-file-type-nuxt",
8083
+ "nuxt.schema.ts": "i-vscode-icons-file-type-nuxt",
8084
+ "package.json": "i-vscode-icons-file-type-node",
8085
+ "pl": "i-vscode-icons-file-type-perl",
8086
+ "pnpm": "i-vscode-icons-file-type-pnpm",
8087
+ "ps1": "i-vscode-icons-file-type-powershell",
8088
+ "psd1": "i-vscode-icons-file-type-powershell",
8089
+ "psm1": "i-vscode-icons-file-type-powershell",
8090
+ "py": "i-vscode-icons-file-type-python",
8091
+ "rb": "i-vscode-icons-file-type-ruby",
8092
+ "rs": "i-vscode-icons-file-type-rust",
8093
+ "sbt": "i-vscode-icons-file-type-scala",
8094
+ "tailwind.config.js": "i-vscode-icons-file-type-tailwind",
8095
+ "tailwind.config.ts": "i-vscode-icons-file-type-tailwind",
8096
+ "terminal": "i-lucide-terminal",
8097
+ "ts": "i-vscode-icons-file-type-typescript",
8098
+ "tsconfig.json": "i-vscode-icons-file-type-tsconfig",
8099
+ "tsx": "i-vscode-icons-file-type-typescript",
8100
+ "vue": "i-vscode-icons-file-type-vue",
7602
8101
  "yarn": "i-vscode-icons-file-type-yarn",
7603
- "bun": "i-vscode-icons-file-type-bun",
7604
- "deno": "i-vscode-icons-file-type-deno",
7605
- "yml": "i-vscode-icons-file-type-yaml",
7606
- "terminal": "i-lucide-terminal"
8102
+ "yarn.lock": "i-vscode-icons-file-type-yarn",
8103
+ "yml": "i-vscode-icons-file-type-yaml"
7607
8104
  };
7608
8105
 
7609
8106
  const codePreview = {
@@ -7632,8 +8129,8 @@ const codeTree = (options) => ({
7632
8129
  linkLeadingIcon: "size-4 shrink-0",
7633
8130
  linkLabel: "truncate",
7634
8131
  linkTrailing: "ms-auto inline-flex gap-1.5 items-center",
7635
- linkTrailingIcon: "size-5 transform transition-transform duration-200 shrink-0 group-data-expanded:rotate-180",
7636
- content: "overflow-hidden lg:col-span-2 flex flex-col [&>div]:my-0 [&>div]:flex-1 [&>div]:flex [&>div]:flex-col [&>div>div]:border-0 [&>div>pre]:border-b-0 [&>div>pre]:border-s-0 [&>div>pre]:border-e-0 [&>div>pre]:rounded-l-none [&>div>pre]:flex-1 [&>div]:overflow-y-auto"
8132
+ linkTrailingIcon: "size-5 transform transition-transform duration-200 ease-out motion-reduce:transition-none shrink-0 group-data-expanded:rotate-180",
8133
+ content: "overflow-hidden lg:col-span-2 flex flex-col [&>div]:my-0 [&>div]:flex-1 [&>div]:flex [&>div]:flex-col [&>div>div]:border-0 [&>div>pre]:border-b-0 [&>div>pre]:border-s-0 [&>div>pre]:border-e-0 [&>div>pre]:rounded-s-none [&>div>pre]:flex-1 [&>div]:overflow-y-auto"
7637
8134
  },
7638
8135
  variants: {
7639
8136
  active: {
@@ -7651,7 +8148,7 @@ const collapsible = (options) => ({
7651
8148
  slots: {
7652
8149
  root: "my-5",
7653
8150
  trigger: ["group relative rounded-xs inline-flex items-center gap-1.5 text-muted hover:text-default text-sm outline-primary/25 focus-visible:outline-3", options.theme.transitions && "transition-colors"],
7654
- triggerIcon: "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200",
8151
+ triggerIcon: "size-4 shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200 ease-out motion-reduce:transition-none",
7655
8152
  triggerLabel: "truncate",
7656
8153
  content: "*:first:mt-2.5 *:last:mb-0 *:my-1.5"
7657
8154
  }
@@ -7764,7 +8261,7 @@ const pre = {
7764
8261
  header: "flex items-center gap-1.5 border border-muted bg-default border-b-0 relative rounded-t-md px-4 py-3",
7765
8262
  filename: "text-default text-sm/6",
7766
8263
  icon: "size-4 shrink-0",
7767
- copy: "absolute top-[11px] right-[11px] lg:opacity-0 lg:group-hover:opacity-100 lg:focus-visible:opacity-100 transition",
8264
+ copy: "absolute top-[11px] end-[11px] lg:opacity-0 lg:group-hover:opacity-100 lg:focus-visible:opacity-100 transition",
7768
8265
  base: "group font-mono text-sm/6 border border-muted bg-muted rounded-md px-4 py-3 whitespace-pre-wrap wrap-break-word overflow-x-auto outline-primary/25 focus-visible:outline-3 focus-visible:border-primary **:[.line]:block **:[.line.highlight]:-mx-4 **:[.line.highlight]:px-4 **:[.line.highlight]:bg-accented/50!"
7769
8266
  },
7770
8267
  variants: {
@@ -7829,9 +8326,9 @@ const td = {
7829
8326
  base: "py-3 px-4 text-sm align-top border-e border-b first:border-s border-muted [&_code]:text-xs/5 [&_p]:my-0 [&_p]:leading-6 [&_ul]:my-0 [&_ol]:my-0 [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:leading-6 [&_li]:my-0.5",
7830
8327
  variants: {
7831
8328
  align: {
7832
- left: "text-left",
8329
+ left: "text-start",
7833
8330
  center: "text-center",
7834
- right: "text-right"
8331
+ right: "text-end"
7835
8332
  }
7836
8333
  },
7837
8334
  defaultVariants: {
@@ -7843,9 +8340,9 @@ const th = {
7843
8340
  base: "py-3 px-4 font-semibold text-sm border-e border-b first:border-s border-t border-muted",
7844
8341
  variants: {
7845
8342
  align: {
7846
- left: "text-left",
8343
+ left: "text-start",
7847
8344
  center: "text-center",
7848
- right: "text-right"
8345
+ right: "text-end"
7849
8346
  }
7850
8347
  },
7851
8348
  defaultVariants: {
@@ -7858,7 +8355,7 @@ const thead = {
7858
8355
  };
7859
8356
 
7860
8357
  const tr = {
7861
- base: "[&:first-child>th:first-child]:rounded-tl-md [&:first-child>th:last-child]:rounded-tr-md [&:last-child>td:first-child]:rounded-bl-md [&:last-child>td:last-child]:rounded-br-md"
8358
+ base: "[&:first-child>th:first-child]:rounded-ss-md [&:first-child>th:last-child]:rounded-se-md [&:last-child>td:first-child]:rounded-es-md [&:last-child>td:last-child]:rounded-ee-md"
7862
8359
  };
7863
8360
 
7864
8361
  const ul = {
@@ -7914,7 +8411,7 @@ const themeProse = {
7914
8411
  const contentNavigation = (options) => ({
7915
8412
  slots: {
7916
8413
  root: "",
7917
- content: "data-[state=open]:animate-[accordion-down_200ms_ease-out] data-[state=closed]:animate-[accordion-up_200ms_ease-out] data-[state=closed]:overflow-hidden focus:outline-none",
8414
+ content: "data-[state=open]:animate-[accordion-down_200ms_var(--ease-out)] data-[state=closed]:animate-[accordion-up_200ms_var(--ease-out)] data-[state=closed]:overflow-hidden focus:outline-none",
7918
8415
  list: "isolate -mx-2.5 -mt-1.5",
7919
8416
  item: "",
7920
8417
  listWithChildren: "ms-5 border-s border-default",
@@ -7925,7 +8422,7 @@ const contentNavigation = (options) => ({
7925
8422
  linkTrailing: "ms-auto inline-flex gap-1.5 items-center",
7926
8423
  linkTrailingBadge: "shrink-0",
7927
8424
  linkTrailingBadgeSize: "sm",
7928
- linkTrailingIcon: "size-5 transform transition-transform duration-200 shrink-0 group-data-[state=open]:rotate-180",
8425
+ linkTrailingIcon: "size-5 transform transition-transform duration-200 ease-out motion-reduce:transition-none shrink-0 group-data-[state=open]:rotate-180",
7929
8426
  linkTitle: "truncate",
7930
8427
  linkTitleExternalIcon: "size-3 align-top text-dimmed"
7931
8428
  },
@@ -7974,7 +8471,7 @@ const contentNavigation = (options) => ({
7974
8471
  highlight: true,
7975
8472
  level: true,
7976
8473
  class: {
7977
- link: ["after:absolute after:-left-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full", options.theme.transitions && "after:transition-colors"]
8474
+ link: ["after:absolute after:-start-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full", options.theme.transitions && "after:transition-colors"]
7978
8475
  }
7979
8476
  }, {
7980
8477
  disabled: false,
@@ -8108,18 +8605,18 @@ const contentSurround = (options) => ({
8108
8605
  root: "grid grid-cols-1 sm:grid-cols-2 gap-8",
8109
8606
  link: ["group block px-6 py-8 rounded-lg border border-default hover:bg-elevated/50 outline-primary/25 focus-visible:outline-3 focus-visible:border-primary", options.theme.transitions && "transition-colors"],
8110
8607
  linkLeading: ["inline-flex items-center rounded-full p-1.5 bg-elevated group-hover:bg-primary/10 ring ring-accented mb-4 group-hover:ring-primary/50", options.theme.transitions && "transition"],
8111
- linkLeadingIcon: ["size-5 shrink-0 text-highlighted group-hover:text-primary", options.theme.transitions && "transition-[color,translate]"],
8608
+ linkLeadingIcon: ["size-5 shrink-0 text-highlighted group-hover:text-primary", options.theme.transitions && "transition-[color,translate] ease-out motion-reduce:transition-none"],
8112
8609
  linkTitle: "font-medium text-[15px] text-highlighted mb-1 truncate",
8113
8610
  linkDescription: "text-sm text-muted line-clamp-2"
8114
8611
  },
8115
8612
  variants: {
8116
8613
  direction: {
8117
8614
  left: {
8118
- linkLeadingIcon: [options.theme.transitions && "group-active:-translate-x-0.5"]
8615
+ linkLeadingIcon: "group-active:-translate-x-0.5 rtl:group-active:translate-x-0.5"
8119
8616
  },
8120
8617
  right: {
8121
8618
  link: "text-end",
8122
- linkLeadingIcon: [options.theme.transitions && "group-active:translate-x-0.5"]
8619
+ linkLeadingIcon: "group-active:translate-x-0.5 rtl:group-active:-translate-x-0.5"
8123
8620
  }
8124
8621
  }
8125
8622
  }
@@ -8127,15 +8624,15 @@ const contentSurround = (options) => ({
8127
8624
 
8128
8625
  const contentToc = (options) => ({
8129
8626
  slots: {
8130
- root: "sticky top-(--ui-header-height) z-10 bg-default/75 lg:bg-[initial] backdrop-blur -mx-4 px-4 sm:px-6 sm:-mx-6 lg:ms-0 overflow-y-auto max-h-[calc(100vh-var(--ui-header-height))]",
8131
- container: "pt-4 sm:pt-6 pb-2.5 sm:pb-4.5 lg:py-8 border-b border-dashed border-default lg:border-0 flex flex-col",
8132
- top: "",
8133
- bottom: "hidden lg:flex lg:flex-col gap-6",
8134
- trigger: "group text-sm font-semibold flex-1 flex items-center gap-1.5 py-1.5 -mt-1.5 rounded-sm outline-primary/25 focus-visible:outline-3",
8627
+ root: "sticky top-(--ui-header-height) z-10 bg-default/75 lg:bg-[initial] backdrop-blur-sm -mx-4 px-4 sm:px-6 sm:-mx-6 lg:ms-0 flex flex-col overflow-y-auto max-h-[calc(100vh-var(--ui-header-height))]",
8628
+ container: "pt-4 sm:pt-6 pb-2.5 sm:pb-4.5 lg:py-8 border-b border-dashed border-default lg:border-0 flex flex-col lg:min-h-0",
8629
+ top: "lg:shrink-0",
8630
+ bottom: "hidden lg:flex lg:flex-col lg:shrink-0 gap-6",
8631
+ trigger: "group text-sm font-semibold flex-1 flex items-center gap-1.5 py-1.5 -mt-1.5 rounded-sm outline-primary/25 focus-visible:outline-3 lg:shrink-0",
8135
8632
  title: "truncate",
8136
8633
  trailing: "ms-auto inline-flex gap-1.5 items-center",
8137
- trailingIcon: "size-5 transform transition-transform duration-200 shrink-0 group-data-[state=open]:rotate-180 lg:hidden",
8138
- content: "relative data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] data-[state=closed]:overflow-hidden focus:outline-none",
8634
+ trailingIcon: "size-5 transform transition-transform duration-200 ease-out motion-reduce:transition-none shrink-0 group-data-[state=open]:rotate-180 lg:hidden",
8635
+ content: "relative data-[state=open]:animate-[collapsible-down_200ms_var(--ease-out)] data-[state=closed]:animate-[collapsible-up_200ms_var(--ease-out)] data-[state=closed]:overflow-hidden focus:outline-none lg:min-h-[min(var(--list-height,8rem),8rem)] lg:overflow-y-auto lg:scrollbar-none",
8139
8636
  list: "min-w-0",
8140
8637
  listWithChildren: "ms-3",
8141
8638
  item: "min-w-0",
@@ -8195,7 +8692,7 @@ const contentToc = (options) => ({
8195
8692
  class: {
8196
8693
  list: "ms-2.5 ps-4 border-s border-default",
8197
8694
  item: "-ms-px",
8198
- indicator: "absolute ms-2.5 transition-[translate,height] duration-200 h-(--indicator-size) translate-y-(--indicator-position) w-px rounded-full",
8695
+ indicator: "absolute ms-2.5 transition-[translate,height] duration-200 ease-out motion-reduce:transition-none h-(--indicator-size) translate-y-(--indicator-position) w-px rounded-full",
8199
8696
  indicatorLine: "hidden",
8200
8697
  indicatorActive: "w-full h-full"
8201
8698
  }
@@ -8208,7 +8705,7 @@ const contentToc = (options) => ({
8208
8705
  itemWithChildren: "ps-px",
8209
8706
  indicator: "absolute ms-2.5 start-0 top-0 rtl:-scale-x-100",
8210
8707
  indicatorLine: "absolute inset-0 bg-(--ui-border)",
8211
- indicatorActive: "absolute w-full h-(--indicator-size) translate-y-(--indicator-position) transition-[translate,height] duration-200 ease-out"
8708
+ indicatorActive: "absolute w-full h-(--indicator-size) translate-y-(--indicator-position) transition-[translate,height] duration-200 ease-out motion-reduce:transition-none"
8212
8709
  }
8213
8710
  }],
8214
8711
  defaultVariants: {
@@ -8227,7 +8724,7 @@ const themeContent = {
8227
8724
  contentToc: contentToc
8228
8725
  };
8229
8726
 
8230
- function getTemplates(options, uiConfig, nuxt, resolve) {
8727
+ function getTemplates(options, uiConfig, nuxt, resolve, vue) {
8231
8728
  const templates = [];
8232
8729
  let hasProse = false;
8233
8730
  let hasContent = false;
@@ -8240,8 +8737,9 @@ function getTemplates(options, uiConfig, nuxt, resolve) {
8240
8737
  getContents: async () => {
8241
8738
  const template = theme2[component];
8242
8739
  let result = typeof template === "function" ? template(options) : template;
8740
+ const unused = path !== "prose" && !!vue?.detectedComponents?.size && !Array.from(vue.detectedComponents).some((detected) => camelCase(detected) === component);
8243
8741
  result = applyDefaultVariants(result, options.theme?.defaultVariants);
8244
- result = applyUnstyled(result, options.theme?.unstyled);
8742
+ result = applyUnstyled(result, options.theme?.unstyled || unused);
8245
8743
  result = applyPrefixToObject(result, options.theme?.prefix);
8246
8744
  const variants = Object.entries(result.variants || {}).filter(([_, values]) => {
8247
8745
  const keys = Object.keys(values);
@@ -8285,29 +8783,29 @@ function getTemplates(options, uiConfig, nuxt, resolve) {
8285
8783
  }
8286
8784
  writeThemeTemplate(theme);
8287
8785
  async function generateSources() {
8288
- if (!nuxt) {
8289
- return '@source "./ui";';
8290
- }
8291
8786
  const sources = [];
8292
- const layers = getLayerDirectories(nuxt).map((layer) => layer.app);
8293
- for (const layer of layers) {
8294
- sources.push(`@source "${layer}**/*";`);
8295
- }
8296
- const inlineConfigs = [
8297
- nuxt.options.app?.rootAttrs?.class,
8298
- nuxt.options.app?.head?.htmlAttrs?.class,
8299
- nuxt.options.app?.head?.bodyAttrs?.class
8300
- ];
8301
- for (const value of inlineConfigs) {
8302
- if (value && typeof value === "string") {
8303
- sources.push(`@source inline(${JSON.stringify(value)});`);
8787
+ const layers = nuxt ? getLayerDirectories(nuxt).map((layer) => layer.app) : [];
8788
+ if (nuxt) {
8789
+ for (const layer of layers) {
8790
+ sources.push(`@source "${layer}**/*";`);
8791
+ }
8792
+ const inlineConfigs = [
8793
+ nuxt.options.app?.rootAttrs?.class,
8794
+ nuxt.options.app?.head?.htmlAttrs?.class,
8795
+ nuxt.options.app?.head?.bodyAttrs?.class
8796
+ ];
8797
+ for (const value of inlineConfigs) {
8798
+ if (value && typeof value === "string") {
8799
+ sources.push(`@source inline(${JSON.stringify(value)});`);
8800
+ }
8304
8801
  }
8305
8802
  }
8306
- if (resolve && options.experimental?.componentDetection) {
8803
+ const componentDir = resolve ? resolve("./runtime/components") : void 0;
8804
+ if (options.experimental?.componentDetection && nuxt && componentDir && layers.length) {
8307
8805
  const detectedComponents = await detectUsedComponents(
8308
8806
  layers,
8309
8807
  options.prefix,
8310
- resolve("./runtime/components"),
8808
+ componentDir,
8311
8809
  Array.isArray(options.experimental.componentDetection) ? options.experimental.componentDetection : void 0
8312
8810
  );
8313
8811
  if (detectedComponents && detectedComponents.size > 0) {
@@ -8511,7 +9009,7 @@ function addTemplates(options, nuxt, resolve) {
8511
9009
  });
8512
9010
  if (options.experimental?.componentDetection && nuxt.options.dev) {
8513
9011
  nuxt.hook("builder:watch", async (_, path) => {
8514
- if (/\.(?:vue|ts|js|tsx|jsx)$/.test(path)) {
9012
+ if (/\.(?:vue|ts|mts|js|mjs|cjs|tsx|jsx)$/.test(path)) {
8515
9013
  await updateTemplates({ filter: (template) => template.filename === "ui.css" });
8516
9014
  }
8517
9015
  });
@@ -8533,4 +9031,43 @@ const publicComposables = {
8533
9031
  useTour: ["useTour"]
8534
9032
  };
8535
9033
 
8536
- export { addTemplates as a, getTemplates as b, defaultOptions as d, getDefaultConfig as g, publicComposables as p, resolveColors as r };
9034
+ function parseIconName(icon, collections = [], fallback = false) {
9035
+ const id = icon.replace(/^i[-:]/, "");
9036
+ const colon = id.indexOf(":");
9037
+ if (colon !== -1) {
9038
+ return colon > 0 && colon < id.length - 1 ? [id.slice(0, colon), id.slice(colon + 1)] : void 0;
9039
+ }
9040
+ let collection;
9041
+ for (const name of collections) {
9042
+ if (id.startsWith(`${name}-`) && id.length > name.length + 1 && name.length > (collection?.length ?? 0)) {
9043
+ collection = name;
9044
+ }
9045
+ }
9046
+ if (collection) {
9047
+ return [collection, id.slice(collection.length + 1)];
9048
+ }
9049
+ if (fallback) {
9050
+ const dash = id.indexOf("-");
9051
+ if (dash > 0 && dash < id.length - 1) {
9052
+ return [id.slice(0, dash), id.slice(dash + 1)];
9053
+ }
9054
+ }
9055
+ }
9056
+ const trustedCollections = new Set(
9057
+ Object.values(defaultIcons).map((icon) => parseIconName(icon, [], true)?.[0]).filter((collection) => !!collection)
9058
+ );
9059
+ function getClientBundleIcons(icons = {}) {
9060
+ const names = /* @__PURE__ */ new Set();
9061
+ for (const icon of Object.values(icons)) {
9062
+ if (typeof icon !== "string") {
9063
+ continue;
9064
+ }
9065
+ const parsed = parseIconName(icon, trustedCollections);
9066
+ if (parsed && trustedCollections.has(parsed[0])) {
9067
+ names.add(`${parsed[0]}:${parsed[1]}`);
9068
+ }
9069
+ }
9070
+ return [...names];
9071
+ }
9072
+
9073
+ export { addTemplates as a, detectUsedComponents as b, getDefaultConfig as c, defaultOptions as d, getTemplates as e, publicComposables as f, getClientBundleIcons as g, resolveExtraScanDirs as h, parseIconName as p, resolveColors as r };