@nuxt/ui 4.5.0 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/.nuxt/ui.css +2 -0
  2. package/cli/templates.mjs +5 -8
  3. package/dist/module.d.mts +7 -0
  4. package/dist/module.json +2 -2
  5. package/dist/module.mjs +78 -67
  6. package/dist/runtime/components/Accordion.d.vue.ts +8 -7
  7. package/dist/runtime/components/Accordion.vue.d.ts +8 -7
  8. package/dist/runtime/components/Alert.d.vue.ts +8 -7
  9. package/dist/runtime/components/Alert.vue.d.ts +8 -7
  10. package/dist/runtime/components/App.d.vue.ts +2 -1
  11. package/dist/runtime/components/App.vue.d.ts +2 -1
  12. package/dist/runtime/components/AuthForm.d.vue.ts +13 -12
  13. package/dist/runtime/components/AuthForm.vue.d.ts +13 -12
  14. package/dist/runtime/components/Avatar.d.vue.ts +2 -1
  15. package/dist/runtime/components/Avatar.vue +10 -12
  16. package/dist/runtime/components/Avatar.vue.d.ts +2 -1
  17. package/dist/runtime/components/AvatarGroup.d.vue.ts +2 -1
  18. package/dist/runtime/components/AvatarGroup.vue.d.ts +2 -1
  19. package/dist/runtime/components/Badge.d.vue.ts +7 -6
  20. package/dist/runtime/components/Badge.vue.d.ts +7 -6
  21. package/dist/runtime/components/Banner.d.vue.ts +7 -6
  22. package/dist/runtime/components/Banner.vue +1 -1
  23. package/dist/runtime/components/Banner.vue.d.ts +7 -6
  24. package/dist/runtime/components/BlogPost.d.vue.ts +11 -10
  25. package/dist/runtime/components/BlogPost.vue +3 -2
  26. package/dist/runtime/components/BlogPost.vue.d.ts +11 -10
  27. package/dist/runtime/components/BlogPosts.d.vue.ts +5 -4
  28. package/dist/runtime/components/BlogPosts.vue.d.ts +5 -4
  29. package/dist/runtime/components/Breadcrumb.d.vue.ts +15 -14
  30. package/dist/runtime/components/Breadcrumb.vue.d.ts +15 -14
  31. package/dist/runtime/components/Button.d.vue.ts +7 -6
  32. package/dist/runtime/components/Button.vue.d.ts +7 -6
  33. package/dist/runtime/components/Calendar.d.vue.ts +10 -9
  34. package/dist/runtime/components/Calendar.vue.d.ts +10 -9
  35. package/dist/runtime/components/Card.d.vue.ts +4 -3
  36. package/dist/runtime/components/Card.vue.d.ts +4 -3
  37. package/dist/runtime/components/Carousel.d.vue.ts +3 -2
  38. package/dist/runtime/components/Carousel.vue.d.ts +3 -2
  39. package/dist/runtime/components/ChangelogVersion.d.vue.ts +15 -14
  40. package/dist/runtime/components/ChangelogVersion.vue +3 -2
  41. package/dist/runtime/components/ChangelogVersion.vue.d.ts +15 -14
  42. package/dist/runtime/components/ChangelogVersions.d.vue.ts +6 -5
  43. package/dist/runtime/components/ChangelogVersions.vue +1 -1
  44. package/dist/runtime/components/ChangelogVersions.vue.d.ts +6 -5
  45. package/dist/runtime/components/ChatMessage.d.vue.ts +10 -6
  46. package/dist/runtime/components/ChatMessage.vue +5 -0
  47. package/dist/runtime/components/ChatMessage.vue.d.ts +10 -6
  48. package/dist/runtime/components/ChatMessages.d.vue.ts +9 -8
  49. package/dist/runtime/components/ChatMessages.vue.d.ts +9 -8
  50. package/dist/runtime/components/ChatPalette.d.vue.ts +3 -2
  51. package/dist/runtime/components/ChatPalette.vue.d.ts +3 -2
  52. package/dist/runtime/components/ChatPrompt.d.vue.ts +3 -2
  53. package/dist/runtime/components/ChatPrompt.vue.d.ts +3 -2
  54. package/dist/runtime/components/ChatReasoning.d.vue.ts +78 -0
  55. package/dist/runtime/components/ChatReasoning.vue +162 -0
  56. package/dist/runtime/components/ChatReasoning.vue.d.ts +78 -0
  57. package/dist/runtime/components/ChatShimmer.d.vue.ts +34 -0
  58. package/dist/runtime/components/ChatShimmer.vue +37 -0
  59. package/dist/runtime/components/ChatShimmer.vue.d.ts +34 -0
  60. package/dist/runtime/components/ChatTool.d.vue.ts +88 -0
  61. package/dist/runtime/components/ChatTool.vue +105 -0
  62. package/dist/runtime/components/ChatTool.vue.d.ts +88 -0
  63. package/dist/runtime/components/Checkbox.d.vue.ts +29 -25
  64. package/dist/runtime/components/Checkbox.vue +9 -8
  65. package/dist/runtime/components/Checkbox.vue.d.ts +29 -25
  66. package/dist/runtime/components/CheckboxGroup.d.vue.ts +5 -4
  67. package/dist/runtime/components/CheckboxGroup.vue.d.ts +5 -4
  68. package/dist/runtime/components/Chip.d.vue.ts +3 -2
  69. package/dist/runtime/components/Chip.vue.d.ts +3 -2
  70. package/dist/runtime/components/Collapsible.d.vue.ts +4 -3
  71. package/dist/runtime/components/Collapsible.vue.d.ts +4 -3
  72. package/dist/runtime/components/CommandPalette.d.vue.ts +19 -18
  73. package/dist/runtime/components/CommandPalette.vue.d.ts +19 -18
  74. package/dist/runtime/components/Container.d.vue.ts +2 -1
  75. package/dist/runtime/components/Container.vue.d.ts +2 -1
  76. package/dist/runtime/components/ContextMenu.d.vue.ts +19 -18
  77. package/dist/runtime/components/ContextMenu.vue.d.ts +19 -18
  78. package/dist/runtime/components/DashboardGroup.d.vue.ts +3 -2
  79. package/dist/runtime/components/DashboardGroup.vue.d.ts +3 -2
  80. package/dist/runtime/components/DashboardNavbar.d.vue.ts +11 -10
  81. package/dist/runtime/components/DashboardNavbar.vue.d.ts +11 -10
  82. package/dist/runtime/components/DashboardPanel.d.vue.ts +7 -6
  83. package/dist/runtime/components/DashboardPanel.vue.d.ts +7 -6
  84. package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +2 -1
  85. package/dist/runtime/components/DashboardResizeHandle.vue.d.ts +2 -1
  86. package/dist/runtime/components/DashboardSearch.d.vue.ts +4 -3
  87. package/dist/runtime/components/DashboardSearch.vue.d.ts +4 -3
  88. package/dist/runtime/components/DashboardSearchButton.vue +2 -2
  89. package/dist/runtime/components/DashboardSidebar.d.vue.ts +19 -18
  90. package/dist/runtime/components/DashboardSidebar.vue +3 -3
  91. package/dist/runtime/components/DashboardSidebar.vue.d.ts +19 -18
  92. package/dist/runtime/components/DashboardToolbar.d.vue.ts +4 -3
  93. package/dist/runtime/components/DashboardToolbar.vue.d.ts +4 -3
  94. package/dist/runtime/components/Drawer.d.vue.ts +8 -7
  95. package/dist/runtime/components/Drawer.vue +1 -1
  96. package/dist/runtime/components/Drawer.vue.d.ts +8 -7
  97. package/dist/runtime/components/DropdownMenu.d.vue.ts +50 -22
  98. package/dist/runtime/components/DropdownMenu.vue +10 -1
  99. package/dist/runtime/components/DropdownMenu.vue.d.ts +50 -22
  100. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +13 -6
  101. package/dist/runtime/components/DropdownMenuContent.vue +62 -9
  102. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +13 -6
  103. package/dist/runtime/components/Editor.d.vue.ts +3 -2
  104. package/dist/runtime/components/Editor.vue.d.ts +3 -2
  105. package/dist/runtime/components/EditorDragHandle.d.vue.ts +7 -6
  106. package/dist/runtime/components/EditorDragHandle.vue.d.ts +7 -6
  107. package/dist/runtime/components/EditorToolbar.d.vue.ts +3 -2
  108. package/dist/runtime/components/EditorToolbar.vue.d.ts +3 -2
  109. package/dist/runtime/components/Empty.d.vue.ts +9 -8
  110. package/dist/runtime/components/Empty.vue.d.ts +9 -8
  111. package/dist/runtime/components/Error.d.vue.ts +6 -5
  112. package/dist/runtime/components/Error.vue +5 -5
  113. package/dist/runtime/components/Error.vue.d.ts +6 -5
  114. package/dist/runtime/components/FieldGroup.d.vue.ts +2 -1
  115. package/dist/runtime/components/FieldGroup.vue.d.ts +2 -1
  116. package/dist/runtime/components/FileUpload.d.vue.ts +35 -28
  117. package/dist/runtime/components/FileUpload.vue +11 -7
  118. package/dist/runtime/components/FileUpload.vue.d.ts +35 -28
  119. package/dist/runtime/components/Footer.d.vue.ts +6 -5
  120. package/dist/runtime/components/Footer.vue.d.ts +6 -5
  121. package/dist/runtime/components/FooterColumns.d.vue.ts +12 -11
  122. package/dist/runtime/components/FooterColumns.vue.d.ts +12 -11
  123. package/dist/runtime/components/Form.d.vue.ts +3 -2
  124. package/dist/runtime/components/Form.vue.d.ts +3 -2
  125. package/dist/runtime/components/FormField.d.vue.ts +19 -18
  126. package/dist/runtime/components/FormField.vue.d.ts +19 -18
  127. package/dist/runtime/components/Header.d.vue.ts +12 -11
  128. package/dist/runtime/components/Header.vue.d.ts +12 -11
  129. package/dist/runtime/components/Icon.d.vue.ts +2 -1
  130. package/dist/runtime/components/Icon.vue +1 -1
  131. package/dist/runtime/components/Icon.vue.d.ts +2 -1
  132. package/dist/runtime/components/Input.d.vue.ts +7 -6
  133. package/dist/runtime/components/Input.vue.d.ts +7 -6
  134. package/dist/runtime/components/InputDate.d.vue.ts +13 -13
  135. package/dist/runtime/components/InputDate.vue.d.ts +13 -13
  136. package/dist/runtime/components/InputMenu.d.vue.ts +33 -25
  137. package/dist/runtime/components/InputMenu.vue +68 -49
  138. package/dist/runtime/components/InputMenu.vue.d.ts +33 -25
  139. package/dist/runtime/components/InputNumber.d.vue.ts +3 -2
  140. package/dist/runtime/components/InputNumber.vue.d.ts +3 -2
  141. package/dist/runtime/components/InputTags.d.vue.ts +10 -9
  142. package/dist/runtime/components/InputTags.vue.d.ts +10 -9
  143. package/dist/runtime/components/InputTime.d.vue.ts +60 -34
  144. package/dist/runtime/components/InputTime.vue +52 -27
  145. package/dist/runtime/components/InputTime.vue.d.ts +60 -34
  146. package/dist/runtime/components/Kbd.d.vue.ts +2 -1
  147. package/dist/runtime/components/Kbd.vue +1 -1
  148. package/dist/runtime/components/Kbd.vue.d.ts +2 -1
  149. package/dist/runtime/components/Link.d.vue.ts +3 -2
  150. package/dist/runtime/components/Link.vue.d.ts +3 -2
  151. package/dist/runtime/components/Main.d.vue.ts +2 -1
  152. package/dist/runtime/components/Main.vue.d.ts +2 -1
  153. package/dist/runtime/components/Marquee.d.vue.ts +2 -1
  154. package/dist/runtime/components/Marquee.vue.d.ts +2 -1
  155. package/dist/runtime/components/Modal.d.vue.ts +16 -15
  156. package/dist/runtime/components/Modal.vue +1 -1
  157. package/dist/runtime/components/Modal.vue.d.ts +16 -15
  158. package/dist/runtime/components/NavigationMenu.d.vue.ts +20 -15
  159. package/dist/runtime/components/NavigationMenu.vue +13 -6
  160. package/dist/runtime/components/NavigationMenu.vue.d.ts +20 -15
  161. package/dist/runtime/components/Page.d.vue.ts +4 -3
  162. package/dist/runtime/components/Page.vue +9 -3
  163. package/dist/runtime/components/Page.vue.d.ts +4 -3
  164. package/dist/runtime/components/PageAnchors.d.vue.ts +8 -7
  165. package/dist/runtime/components/PageAnchors.vue.d.ts +8 -7
  166. package/dist/runtime/components/PageAside.d.vue.ts +4 -3
  167. package/dist/runtime/components/PageAside.vue.d.ts +4 -3
  168. package/dist/runtime/components/PageBody.d.vue.ts +2 -1
  169. package/dist/runtime/components/PageBody.vue.d.ts +2 -1
  170. package/dist/runtime/components/PageCTA.d.vue.ts +10 -9
  171. package/dist/runtime/components/PageCTA.vue.d.ts +10 -9
  172. package/dist/runtime/components/PageCard.d.vue.ts +9 -8
  173. package/dist/runtime/components/PageCard.vue.d.ts +9 -8
  174. package/dist/runtime/components/PageColumns.d.vue.ts +2 -1
  175. package/dist/runtime/components/PageColumns.vue.d.ts +2 -1
  176. package/dist/runtime/components/PageFeature.d.vue.ts +6 -5
  177. package/dist/runtime/components/PageFeature.vue.d.ts +6 -5
  178. package/dist/runtime/components/PageGrid.d.vue.ts +2 -1
  179. package/dist/runtime/components/PageGrid.vue.d.ts +2 -1
  180. package/dist/runtime/components/PageHeader.d.vue.ts +6 -5
  181. package/dist/runtime/components/PageHeader.vue.d.ts +6 -5
  182. package/dist/runtime/components/PageHero.d.vue.ts +11 -10
  183. package/dist/runtime/components/PageHero.vue.d.ts +11 -10
  184. package/dist/runtime/components/PageLinks.d.vue.ts +9 -8
  185. package/dist/runtime/components/PageLinks.vue.d.ts +9 -8
  186. package/dist/runtime/components/PageList.d.vue.ts +2 -1
  187. package/dist/runtime/components/PageList.vue.d.ts +2 -1
  188. package/dist/runtime/components/PageLogos.d.vue.ts +2 -1
  189. package/dist/runtime/components/PageLogos.vue.d.ts +2 -1
  190. package/dist/runtime/components/PageSection.d.vue.ts +14 -13
  191. package/dist/runtime/components/PageSection.vue.d.ts +14 -13
  192. package/dist/runtime/components/Pagination.d.vue.ts +9 -8
  193. package/dist/runtime/components/Pagination.vue.d.ts +9 -8
  194. package/dist/runtime/components/Popover.d.vue.ts +9 -5
  195. package/dist/runtime/components/Popover.vue +2 -2
  196. package/dist/runtime/components/Popover.vue.d.ts +9 -5
  197. package/dist/runtime/components/PricingPlan.d.vue.ts +17 -16
  198. package/dist/runtime/components/PricingPlan.vue.d.ts +17 -16
  199. package/dist/runtime/components/PricingPlans.d.vue.ts +5 -4
  200. package/dist/runtime/components/PricingPlans.vue.d.ts +5 -4
  201. package/dist/runtime/components/PricingTable.d.vue.ts +20 -19
  202. package/dist/runtime/components/PricingTable.vue.d.ts +20 -19
  203. package/dist/runtime/components/Progress.d.vue.ts +5 -4
  204. package/dist/runtime/components/Progress.vue.d.ts +5 -4
  205. package/dist/runtime/components/RadioGroup.d.vue.ts +6 -5
  206. package/dist/runtime/components/RadioGroup.vue.d.ts +6 -5
  207. package/dist/runtime/components/ScrollArea.d.vue.ts +6 -2
  208. package/dist/runtime/components/ScrollArea.vue +2 -2
  209. package/dist/runtime/components/ScrollArea.vue.d.ts +6 -2
  210. package/dist/runtime/components/Select.d.vue.ts +21 -19
  211. package/dist/runtime/components/Select.vue +1 -1
  212. package/dist/runtime/components/Select.vue.d.ts +21 -19
  213. package/dist/runtime/components/SelectMenu.d.vue.ts +27 -26
  214. package/dist/runtime/components/SelectMenu.vue +2 -2
  215. package/dist/runtime/components/SelectMenu.vue.d.ts +27 -26
  216. package/dist/runtime/components/Separator.d.vue.ts +3 -2
  217. package/dist/runtime/components/Separator.vue.d.ts +3 -2
  218. package/dist/runtime/components/Sidebar.d.vue.ts +131 -0
  219. package/dist/runtime/components/Sidebar.vue +222 -0
  220. package/dist/runtime/components/Sidebar.vue.d.ts +131 -0
  221. package/dist/runtime/components/Slideover.d.vue.ts +16 -15
  222. package/dist/runtime/components/Slideover.vue +1 -1
  223. package/dist/runtime/components/Slideover.vue.d.ts +16 -15
  224. package/dist/runtime/components/Stepper.d.vue.ts +8 -7
  225. package/dist/runtime/components/Stepper.vue.d.ts +8 -7
  226. package/dist/runtime/components/Switch.d.vue.ts +29 -25
  227. package/dist/runtime/components/Switch.vue +7 -6
  228. package/dist/runtime/components/Switch.vue.d.ts +29 -25
  229. package/dist/runtime/components/Table.d.vue.ts +12 -13
  230. package/dist/runtime/components/Table.vue +12 -4
  231. package/dist/runtime/components/Table.vue.d.ts +12 -13
  232. package/dist/runtime/components/Tabs.d.vue.ts +9 -9
  233. package/dist/runtime/components/Tabs.vue.d.ts +9 -9
  234. package/dist/runtime/components/Textarea.d.vue.ts +7 -6
  235. package/dist/runtime/components/Textarea.vue.d.ts +7 -6
  236. package/dist/runtime/components/Theme.d.vue.ts +2 -1
  237. package/dist/runtime/components/Theme.vue.d.ts +2 -1
  238. package/dist/runtime/components/Timeline.d.vue.ts +7 -6
  239. package/dist/runtime/components/Timeline.vue.d.ts +7 -6
  240. package/dist/runtime/components/Toast.d.vue.ts +8 -7
  241. package/dist/runtime/components/Toast.vue.d.ts +8 -7
  242. package/dist/runtime/components/Toaster.d.vue.ts +2 -1
  243. package/dist/runtime/components/Toaster.vue.d.ts +2 -1
  244. package/dist/runtime/components/Tooltip.d.vue.ts +8 -4
  245. package/dist/runtime/components/Tooltip.vue +4 -3
  246. package/dist/runtime/components/Tooltip.vue.d.ts +8 -4
  247. package/dist/runtime/components/Tree.d.vue.ts +7 -6
  248. package/dist/runtime/components/Tree.vue.d.ts +7 -6
  249. package/dist/runtime/components/User.d.vue.ts +6 -5
  250. package/dist/runtime/components/User.vue.d.ts +6 -5
  251. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +1 -1
  252. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +1 -1
  253. package/dist/runtime/components/color-mode/ColorModeSwitch.vue +3 -1
  254. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +7 -6
  255. package/dist/runtime/components/content/ContentNavigation.vue +10 -3
  256. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +7 -6
  257. package/dist/runtime/components/content/ContentSearch.d.vue.ts +4 -3
  258. package/dist/runtime/components/content/ContentSearch.vue.d.ts +4 -3
  259. package/dist/runtime/components/content/ContentSurround.d.vue.ts +6 -5
  260. package/dist/runtime/components/content/ContentSurround.vue +6 -2
  261. package/dist/runtime/components/content/ContentSurround.vue.d.ts +6 -5
  262. package/dist/runtime/components/content/ContentToc.d.vue.ts +20 -14
  263. package/dist/runtime/components/content/ContentToc.vue +59 -14
  264. package/dist/runtime/components/content/ContentToc.vue.d.ts +20 -14
  265. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +1 -1
  266. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +1 -1
  267. package/dist/runtime/components/prose/A.d.vue.ts +2 -1
  268. package/dist/runtime/components/prose/A.vue.d.ts +2 -1
  269. package/dist/runtime/components/prose/Accordion.d.vue.ts +2 -1
  270. package/dist/runtime/components/prose/Accordion.vue.d.ts +2 -1
  271. package/dist/runtime/components/prose/AccordionItem.d.vue.ts +2 -1
  272. package/dist/runtime/components/prose/AccordionItem.vue.d.ts +2 -1
  273. package/dist/runtime/components/prose/Badge.d.vue.ts +2 -1
  274. package/dist/runtime/components/prose/Badge.vue.d.ts +2 -1
  275. package/dist/runtime/components/prose/Blockquote.d.vue.ts +2 -1
  276. package/dist/runtime/components/prose/Blockquote.vue.d.ts +2 -1
  277. package/dist/runtime/components/prose/Callout.d.vue.ts +2 -1
  278. package/dist/runtime/components/prose/Callout.vue.d.ts +2 -1
  279. package/dist/runtime/components/prose/Card.d.vue.ts +3 -2
  280. package/dist/runtime/components/prose/Card.vue.d.ts +3 -2
  281. package/dist/runtime/components/prose/CardGroup.d.vue.ts +2 -1
  282. package/dist/runtime/components/prose/CardGroup.vue.d.ts +2 -1
  283. package/dist/runtime/components/prose/Code.d.vue.ts +2 -1
  284. package/dist/runtime/components/prose/Code.vue.d.ts +2 -1
  285. package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +2 -1
  286. package/dist/runtime/components/prose/CodeCollapse.vue.d.ts +2 -1
  287. package/dist/runtime/components/prose/CodeGroup.d.vue.ts +2 -1
  288. package/dist/runtime/components/prose/CodeGroup.vue.d.ts +2 -1
  289. package/dist/runtime/components/prose/CodePreview.d.vue.ts +3 -2
  290. package/dist/runtime/components/prose/CodePreview.vue.d.ts +3 -2
  291. package/dist/runtime/components/prose/CodeTree.d.vue.ts +2 -1
  292. package/dist/runtime/components/prose/CodeTree.vue.d.ts +2 -1
  293. package/dist/runtime/components/prose/Collapsible.d.vue.ts +2 -1
  294. package/dist/runtime/components/prose/Collapsible.vue.d.ts +2 -1
  295. package/dist/runtime/components/prose/Em.d.vue.ts +2 -1
  296. package/dist/runtime/components/prose/Em.vue.d.ts +2 -1
  297. package/dist/runtime/components/prose/Field.d.vue.ts +2 -1
  298. package/dist/runtime/components/prose/Field.vue.d.ts +2 -1
  299. package/dist/runtime/components/prose/FieldGroup.d.vue.ts +2 -1
  300. package/dist/runtime/components/prose/FieldGroup.vue.d.ts +2 -1
  301. package/dist/runtime/components/prose/H1.d.vue.ts +2 -1
  302. package/dist/runtime/components/prose/H1.vue.d.ts +2 -1
  303. package/dist/runtime/components/prose/H2.d.vue.ts +2 -1
  304. package/dist/runtime/components/prose/H2.vue.d.ts +2 -1
  305. package/dist/runtime/components/prose/H3.d.vue.ts +2 -1
  306. package/dist/runtime/components/prose/H3.vue.d.ts +2 -1
  307. package/dist/runtime/components/prose/H4.d.vue.ts +2 -1
  308. package/dist/runtime/components/prose/H4.vue.d.ts +2 -1
  309. package/dist/runtime/components/prose/Li.d.vue.ts +2 -1
  310. package/dist/runtime/components/prose/Li.vue.d.ts +2 -1
  311. package/dist/runtime/components/prose/Ol.d.vue.ts +2 -1
  312. package/dist/runtime/components/prose/Ol.vue.d.ts +2 -1
  313. package/dist/runtime/components/prose/P.d.vue.ts +2 -1
  314. package/dist/runtime/components/prose/P.vue.d.ts +2 -1
  315. package/dist/runtime/components/prose/Pre.d.vue.ts +2 -1
  316. package/dist/runtime/components/prose/Pre.vue +0 -4
  317. package/dist/runtime/components/prose/Pre.vue.d.ts +2 -1
  318. package/dist/runtime/components/prose/Steps.d.vue.ts +2 -1
  319. package/dist/runtime/components/prose/Steps.vue.d.ts +2 -1
  320. package/dist/runtime/components/prose/Strong.d.vue.ts +2 -1
  321. package/dist/runtime/components/prose/Strong.vue.d.ts +2 -1
  322. package/dist/runtime/components/prose/Table.d.vue.ts +2 -1
  323. package/dist/runtime/components/prose/Table.vue.d.ts +2 -1
  324. package/dist/runtime/components/prose/Tabs.d.vue.ts +2 -1
  325. package/dist/runtime/components/prose/Tabs.vue.d.ts +2 -1
  326. package/dist/runtime/components/prose/TabsItem.d.vue.ts +2 -1
  327. package/dist/runtime/components/prose/TabsItem.vue.d.ts +2 -1
  328. package/dist/runtime/components/prose/Tbody.d.vue.ts +2 -1
  329. package/dist/runtime/components/prose/Tbody.vue.d.ts +2 -1
  330. package/dist/runtime/components/prose/Td.d.vue.ts +2 -1
  331. package/dist/runtime/components/prose/Td.vue.d.ts +2 -1
  332. package/dist/runtime/components/prose/Th.d.vue.ts +2 -1
  333. package/dist/runtime/components/prose/Th.vue.d.ts +2 -1
  334. package/dist/runtime/components/prose/Thead.d.vue.ts +2 -1
  335. package/dist/runtime/components/prose/Thead.vue.d.ts +2 -1
  336. package/dist/runtime/components/prose/Tr.d.vue.ts +2 -1
  337. package/dist/runtime/components/prose/Tr.vue.d.ts +2 -1
  338. package/dist/runtime/components/prose/Ul.d.vue.ts +2 -1
  339. package/dist/runtime/components/prose/Ul.vue.d.ts +2 -1
  340. package/dist/runtime/composables/index.d.ts +11 -0
  341. package/dist/runtime/composables/index.js +11 -0
  342. package/dist/runtime/composables/useEditorMenu.js +1 -1
  343. package/dist/runtime/composables/useFileUpload.d.ts +2 -2
  344. package/dist/runtime/composables/useFileUpload.js +3 -3
  345. package/dist/runtime/composables/{internal/useFilter.js → useFilter.js} +1 -1
  346. package/dist/runtime/composables/useResizable.d.ts +2 -2
  347. package/dist/runtime/composables/useResizable.js +2 -2
  348. package/dist/runtime/composables/useScrollShadow.d.ts +23 -0
  349. package/dist/runtime/composables/useScrollShadow.js +36 -0
  350. package/dist/runtime/index.css +1 -1
  351. package/dist/runtime/keyframes.css +1 -1
  352. package/dist/runtime/locale/ar.js +13 -0
  353. package/dist/runtime/locale/az.js +13 -0
  354. package/dist/runtime/locale/be.js +13 -0
  355. package/dist/runtime/locale/bg.js +13 -0
  356. package/dist/runtime/locale/bn.js +13 -0
  357. package/dist/runtime/locale/ca.js +13 -0
  358. package/dist/runtime/locale/ckb.js +13 -0
  359. package/dist/runtime/locale/cs.js +13 -0
  360. package/dist/runtime/locale/da.js +13 -0
  361. package/dist/runtime/locale/de.js +13 -0
  362. package/dist/runtime/locale/de_ch.js +13 -0
  363. package/dist/runtime/locale/el.js +13 -0
  364. package/dist/runtime/locale/en.js +13 -0
  365. package/dist/runtime/locale/es.js +13 -0
  366. package/dist/runtime/locale/et.js +13 -0
  367. package/dist/runtime/locale/eu.js +13 -0
  368. package/dist/runtime/locale/fa_ir.js +13 -0
  369. package/dist/runtime/locale/fi.js +13 -0
  370. package/dist/runtime/locale/fr.js +13 -0
  371. package/dist/runtime/locale/gl.js +13 -0
  372. package/dist/runtime/locale/he.js +13 -0
  373. package/dist/runtime/locale/hi.js +13 -0
  374. package/dist/runtime/locale/hr.js +13 -0
  375. package/dist/runtime/locale/hu.js +13 -0
  376. package/dist/runtime/locale/hy.js +13 -0
  377. package/dist/runtime/locale/id.js +13 -0
  378. package/dist/runtime/locale/index.d.ts +1 -0
  379. package/dist/runtime/locale/index.js +1 -0
  380. package/dist/runtime/locale/is.d.ts +3 -0
  381. package/dist/runtime/locale/is.js +142 -0
  382. package/dist/runtime/locale/it.js +13 -0
  383. package/dist/runtime/locale/ja.js +13 -0
  384. package/dist/runtime/locale/ka.js +13 -0
  385. package/dist/runtime/locale/kk.js +13 -0
  386. package/dist/runtime/locale/km.js +13 -0
  387. package/dist/runtime/locale/ko.js +13 -0
  388. package/dist/runtime/locale/ky.js +13 -0
  389. package/dist/runtime/locale/lb.js +13 -0
  390. package/dist/runtime/locale/lo.js +13 -0
  391. package/dist/runtime/locale/lt.js +13 -0
  392. package/dist/runtime/locale/mn.js +13 -0
  393. package/dist/runtime/locale/ms.js +13 -0
  394. package/dist/runtime/locale/nb_no.js +13 -0
  395. package/dist/runtime/locale/nl.js +13 -0
  396. package/dist/runtime/locale/pl.js +13 -0
  397. package/dist/runtime/locale/pt.js +13 -0
  398. package/dist/runtime/locale/pt_br.js +13 -0
  399. package/dist/runtime/locale/ro.js +13 -0
  400. package/dist/runtime/locale/ru.js +13 -0
  401. package/dist/runtime/locale/sk.js +13 -0
  402. package/dist/runtime/locale/sl.js +13 -0
  403. package/dist/runtime/locale/sq.js +13 -0
  404. package/dist/runtime/locale/sv.js +13 -0
  405. package/dist/runtime/locale/th.js +13 -0
  406. package/dist/runtime/locale/tj.js +13 -0
  407. package/dist/runtime/locale/tr.js +13 -0
  408. package/dist/runtime/locale/ug_cn.js +13 -0
  409. package/dist/runtime/locale/uk.js +13 -0
  410. package/dist/runtime/locale/ur.js +13 -0
  411. package/dist/runtime/locale/uz.js +13 -0
  412. package/dist/runtime/locale/vi.js +13 -0
  413. package/dist/runtime/locale/zh_cn.js +13 -0
  414. package/dist/runtime/locale/zh_tw.js +13 -0
  415. package/dist/runtime/types/index.d.ts +4 -0
  416. package/dist/runtime/types/index.js +4 -0
  417. package/dist/runtime/types/locale.d.ts +13 -0
  418. package/dist/runtime/types/utils.d.ts +2 -2
  419. package/dist/runtime/utils/ai.d.ts +18 -0
  420. package/dist/runtime/utils/ai.js +13 -0
  421. package/dist/runtime/utils/editor.js +17 -5
  422. package/dist/runtime/utils/index.d.ts +1 -1
  423. package/dist/runtime/utils/index.js +1 -1
  424. package/dist/runtime/vue/components/Icon.d.vue.ts +1 -4
  425. package/dist/runtime/vue/components/Icon.vue +28 -3
  426. package/dist/runtime/vue/components/Icon.vue.d.ts +1 -4
  427. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +1 -1
  428. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +1 -1
  429. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue +3 -1
  430. package/dist/runtime/vue/overrides/inertia/Link.d.vue.ts +3 -2
  431. package/dist/runtime/vue/overrides/inertia/Link.vue.d.ts +3 -2
  432. package/dist/runtime/vue/overrides/none/Link.d.vue.ts +3 -3
  433. package/dist/runtime/vue/overrides/none/Link.vue.d.ts +3 -3
  434. package/dist/runtime/vue/overrides/vue-router/Link.d.vue.ts +3 -2
  435. package/dist/runtime/vue/overrides/vue-router/Link.vue.d.ts +3 -2
  436. package/dist/shared/{ui.BrgdrRzy.mjs → ui.DJUbBpE2.mjs} +306 -45
  437. package/dist/unplugin.d.mts +15 -5
  438. package/dist/unplugin.mjs +53 -30
  439. package/dist/vite.d.mts +1 -0
  440. package/dist/vite.mjs +1 -1
  441. package/package.json +50 -47
  442. /package/dist/runtime/composables/{internal/useFilter.d.ts → useFilter.d.ts} +0 -0
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
3
  import type { SpringOptions, UseScrollOptions } from 'motion-v';
3
4
  import theme from '#build/ui/changelog-versions';
@@ -28,14 +29,14 @@ export interface ChangelogVersionsProps<T extends ChangelogVersionProps = Change
28
29
  class?: any;
29
30
  ui?: ChangelogVersions['slots'];
30
31
  }
31
- type ExtendSlotWithVersion<T extends ChangelogVersionProps, K extends keyof ChangelogVersionSlots> = ChangelogVersionSlots[K] extends (props: infer P) => any ? (props: P & {
32
+ type ExtendSlotWithVersion<T extends ChangelogVersionProps, K extends keyof ChangelogVersionSlots> = Required<ChangelogVersionSlots>[K] extends (props: infer P) => VNode[] ? (props: P & {
32
33
  version: T;
33
- }) => any : ChangelogVersionSlots[K];
34
+ }) => VNode[] : Required<ChangelogVersionSlots>[K];
34
35
  export type ChangelogVersionsSlots<T extends ChangelogVersionProps = ChangelogVersionProps> = {
35
- [K in keyof ChangelogVersionSlots]: ExtendSlotWithVersion<T, K>;
36
+ [K in keyof ChangelogVersionSlots]?: ExtendSlotWithVersion<T, K>;
36
37
  } & {
37
- default(props?: {}): any;
38
- indicator(props?: {}): any;
38
+ default?(props?: {}): VNode[];
39
+ indicator?(props?: {}): VNode[];
39
40
  };
40
41
  declare const _default: typeof __VLS_export;
41
42
  export default _default;
@@ -28,7 +28,7 @@ const springOptions = computed(() => defu(typeof props.indicatorMotion === "obje
28
28
  const scrollOptions = computed(() => typeof props.indicator === "object" ? props.indicator : {});
29
29
  const { scrollYProgress } = useScroll(scrollOptions.value);
30
30
  const y = useSpring(scrollYProgress, springOptions);
31
- const height = useTransform(() => `${y.get() * 100}%`);
31
+ const height = useTransform(() => `${Number(y.get()) * 100}%`);
32
32
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.changelogVersions || {} })());
33
33
  </script>
34
34
 
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
3
  import type { SpringOptions, UseScrollOptions } from 'motion-v';
3
4
  import theme from '#build/ui/changelog-versions';
@@ -28,14 +29,14 @@ export interface ChangelogVersionsProps<T extends ChangelogVersionProps = Change
28
29
  class?: any;
29
30
  ui?: ChangelogVersions['slots'];
30
31
  }
31
- type ExtendSlotWithVersion<T extends ChangelogVersionProps, K extends keyof ChangelogVersionSlots> = ChangelogVersionSlots[K] extends (props: infer P) => any ? (props: P & {
32
+ type ExtendSlotWithVersion<T extends ChangelogVersionProps, K extends keyof ChangelogVersionSlots> = Required<ChangelogVersionSlots>[K] extends (props: infer P) => VNode[] ? (props: P & {
32
33
  version: T;
33
- }) => any : ChangelogVersionSlots[K];
34
+ }) => VNode[] : Required<ChangelogVersionSlots>[K];
34
35
  export type ChangelogVersionsSlots<T extends ChangelogVersionProps = ChangelogVersionProps> = {
35
- [K in keyof ChangelogVersionSlots]: ExtendSlotWithVersion<T, K>;
36
+ [K in keyof ChangelogVersionSlots]?: ExtendSlotWithVersion<T, K>;
36
37
  } & {
37
- default(props?: {}): any;
38
- indicator(props?: {}): any;
38
+ default?(props?: {}): VNode[];
39
+ indicator?(props?: {}): VNode[];
39
40
  };
40
41
  declare const _default: typeof __VLS_export;
41
42
  export default _default;
@@ -1,5 +1,6 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
- import type { UIMessage } from 'ai';
3
+ import type { UIMessage, FileUIPart } from 'ai';
3
4
  import theme from '#build/ui/chat-message';
4
5
  import type { AvatarProps, ButtonProps, IconProps } from '../types';
5
6
  import type { ComponentConfig } from '../types/tv';
@@ -48,14 +49,17 @@ export interface ChatMessageProps extends UIMessage {
48
49
  ui?: ChatMessage['slots'];
49
50
  }
50
51
  export interface ChatMessageSlots {
51
- leading(props: {
52
+ leading?(props: {
52
53
  avatar: ChatMessageProps['avatar'];
53
54
  ui: ChatMessage['ui'];
54
- }): any;
55
- content(props: ChatMessageProps): any;
56
- actions(props: {
55
+ }): VNode[];
56
+ files?(props: {
57
+ parts: FileUIPart[];
58
+ }): VNode[];
59
+ content?(props: ChatMessageProps): VNode[];
60
+ actions?(props: {
57
61
  actions: ChatMessageProps['actions'];
58
- }): any;
62
+ }): VNode[];
59
63
  }
60
64
  declare const _default: typeof __VLS_export;
61
65
  export default _default;
@@ -32,6 +32,7 @@ const props = defineProps({
32
32
  const slots = defineSlots();
33
33
  const appConfig = useAppConfig();
34
34
  const uiProp = useComponentUI("chatMessage", props);
35
+ const fileParts = computed(() => props.parts?.filter((part) => part.type === "file") ?? []);
35
36
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.chatMessage || {} })({
36
37
  variant: props.variant,
37
38
  side: props.side,
@@ -43,6 +44,10 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.chatMessage |
43
44
 
44
45
  <template>
45
46
  <Primitive :as="as" :data-role="role" data-slot="root" :class="ui.root({ class: [uiProp?.root, props.class] })">
47
+ <div v-if="!!slots.files" data-slot="files" :class="ui.files({ class: uiProp?.files })">
48
+ <slot name="files" :parts="fileParts" />
49
+ </div>
50
+
46
51
  <div data-slot="container" :class="ui.container({ class: uiProp?.container })">
47
52
  <div v-if="icon || avatar || !!slots.leading" data-slot="leading" :class="ui.leading({ class: uiProp?.leading })">
48
53
  <slot name="leading" :avatar="avatar" :ui="ui">
@@ -1,5 +1,6 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
- import type { UIMessage } from 'ai';
3
+ import type { UIMessage, FileUIPart } from 'ai';
3
4
  import theme from '#build/ui/chat-message';
4
5
  import type { AvatarProps, ButtonProps, IconProps } from '../types';
5
6
  import type { ComponentConfig } from '../types/tv';
@@ -48,14 +49,17 @@ export interface ChatMessageProps extends UIMessage {
48
49
  ui?: ChatMessage['slots'];
49
50
  }
50
51
  export interface ChatMessageSlots {
51
- leading(props: {
52
+ leading?(props: {
52
53
  avatar: ChatMessageProps['avatar'];
53
54
  ui: ChatMessage['ui'];
54
- }): any;
55
- content(props: ChatMessageProps): any;
56
- actions(props: {
55
+ }): VNode[];
56
+ files?(props: {
57
+ parts: FileUIPart[];
58
+ }): VNode[];
59
+ content?(props: ChatMessageProps): VNode[];
60
+ actions?(props: {
57
61
  actions: ChatMessageProps['actions'];
58
- }): any;
62
+ }): VNode[];
59
63
  }
60
64
  declare const _default: typeof __VLS_export;
61
65
  export default _default;
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
3
  import type { UIMessage, ChatStatus } from 'ai';
3
4
  import theme from '#build/ui/chat-messages';
@@ -53,20 +54,20 @@ export interface ChatMessagesProps {
53
54
  class?: any;
54
55
  ui?: ChatMessages['slots'];
55
56
  }
56
- type ExtendSlotWithVersion<K extends keyof ChatMessageSlots> = ChatMessageSlots[K] extends (props: infer P) => any ? (props: P & {
57
+ type ExtendSlotWithVersion<K extends keyof ChatMessageSlots> = Required<ChatMessageSlots>[K] extends (props: infer P) => VNode[] ? (props: P & {
57
58
  message: UIMessage;
58
- }) => any : ChatMessageSlots[K];
59
+ }) => VNode[] : Required<ChatMessageSlots>[K];
59
60
  export type ChatMessagesSlots = {
60
- [K in keyof ChatMessageSlots]: ExtendSlotWithVersion<K>;
61
+ [K in keyof ChatMessageSlots]?: ExtendSlotWithVersion<K>;
61
62
  } & {
62
- default(props?: {}): any;
63
- indicator(props: {
63
+ default?(props?: {}): VNode[];
64
+ indicator?(props: {
64
65
  ui: ChatMessages['ui'];
65
- }): any;
66
- viewport(props: {
66
+ }): VNode[];
67
+ viewport?(props: {
67
68
  ui: ChatMessages['ui'];
68
69
  onClick: () => void;
69
- }): any;
70
+ }): VNode[];
70
71
  };
71
72
  declare const _default: typeof __VLS_export;
72
73
  export default _default;
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
3
  import type { UIMessage, ChatStatus } from 'ai';
3
4
  import theme from '#build/ui/chat-messages';
@@ -53,20 +54,20 @@ export interface ChatMessagesProps {
53
54
  class?: any;
54
55
  ui?: ChatMessages['slots'];
55
56
  }
56
- type ExtendSlotWithVersion<K extends keyof ChatMessageSlots> = ChatMessageSlots[K] extends (props: infer P) => any ? (props: P & {
57
+ type ExtendSlotWithVersion<K extends keyof ChatMessageSlots> = Required<ChatMessageSlots>[K] extends (props: infer P) => VNode[] ? (props: P & {
57
58
  message: UIMessage;
58
- }) => any : ChatMessageSlots[K];
59
+ }) => VNode[] : Required<ChatMessageSlots>[K];
59
60
  export type ChatMessagesSlots = {
60
- [K in keyof ChatMessageSlots]: ExtendSlotWithVersion<K>;
61
+ [K in keyof ChatMessageSlots]?: ExtendSlotWithVersion<K>;
61
62
  } & {
62
- default(props?: {}): any;
63
- indicator(props: {
63
+ default?(props?: {}): VNode[];
64
+ indicator?(props: {
64
65
  ui: ChatMessages['ui'];
65
- }): any;
66
- viewport(props: {
66
+ }): VNode[];
67
+ viewport?(props: {
67
68
  ui: ChatMessages['ui'];
68
69
  onClick: () => void;
69
- }): any;
70
+ }): VNode[];
70
71
  };
71
72
  declare const _default: typeof __VLS_export;
72
73
  export default _default;
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
3
  import theme from '#build/ui/chat-palette';
3
4
  import type { ComponentConfig } from '../types/tv';
@@ -12,8 +13,8 @@ export interface ChatPaletteProps {
12
13
  ui?: ChatPalette['slots'];
13
14
  }
14
15
  export interface ChatPaletteSlots {
15
- default(props?: {}): any;
16
- prompt(props?: {}): any;
16
+ default?(props?: {}): VNode[];
17
+ prompt?(props?: {}): VNode[];
17
18
  }
18
19
  declare const _default: typeof __VLS_export;
19
20
  export default _default;
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
3
  import theme from '#build/ui/chat-palette';
3
4
  import type { ComponentConfig } from '../types/tv';
@@ -12,8 +13,8 @@ export interface ChatPaletteProps {
12
13
  ui?: ChatPalette['slots'];
13
14
  }
14
15
  export interface ChatPaletteSlots {
15
- default(props?: {}): any;
16
- prompt(props?: {}): any;
16
+ default?(props?: {}): VNode[];
17
+ prompt?(props?: {}): VNode[];
17
18
  }
18
19
  declare const _default: typeof __VLS_export;
19
20
  export default _default;
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
3
  import theme from '#build/ui/chat-prompt';
3
4
  import type { TextareaProps, TextareaSlots } from '../types';
@@ -27,8 +28,8 @@ export interface ChatPromptEmits {
27
28
  close: [event: Event];
28
29
  }
29
30
  export interface ChatPromptSlots extends TextareaSlots {
30
- header(props?: {}): any;
31
- footer(props?: {}): any;
31
+ header?(props?: {}): VNode[];
32
+ footer?(props?: {}): VNode[];
32
33
  }
33
34
  declare const _default: typeof __VLS_export;
34
35
  export default _default;
@@ -1,3 +1,4 @@
1
+ import type { VNode } from 'vue';
1
2
  import type { AppConfig } from '@nuxt/schema';
2
3
  import theme from '#build/ui/chat-prompt';
3
4
  import type { TextareaProps, TextareaSlots } from '../types';
@@ -27,8 +28,8 @@ export interface ChatPromptEmits {
27
28
  close: [event: Event];
28
29
  }
29
30
  export interface ChatPromptSlots extends TextareaSlots {
30
- header(props?: {}): any;
31
- footer(props?: {}): any;
31
+ header?(props?: {}): VNode[];
32
+ footer?(props?: {}): VNode[];
32
33
  }
33
34
  declare const _default: typeof __VLS_export;
34
35
  export default _default;
@@ -0,0 +1,78 @@
1
+ import type { CollapsibleRootProps } from 'reka-ui';
2
+ import type { VNode } from 'vue';
3
+ import type { AppConfig } from '@nuxt/schema';
4
+ import theme from '#build/ui/chat-reasoning';
5
+ import type { IconProps } from '../types';
6
+ import type { ChatShimmerProps } from './ChatShimmer.vue';
7
+ import type { ComponentConfig } from '../types/tv';
8
+ type ChatReasoning = ComponentConfig<typeof theme, AppConfig, 'chatReasoning'>;
9
+ export interface ChatReasoningProps extends Pick<CollapsibleRootProps, 'defaultOpen' | 'open' | 'disabled' | 'unmountOnHide'> {
10
+ /**
11
+ * The reasoning text content to display.
12
+ */
13
+ text?: string;
14
+ /**
15
+ * Whether the reasoning content is currently streaming.
16
+ * @defaultValue false
17
+ */
18
+ streaming?: boolean;
19
+ /**
20
+ * The duration in seconds that the AI spent reasoning.
21
+ * If not provided, it will be calculated automatically based on streaming time.
22
+ */
23
+ duration?: number;
24
+ /**
25
+ * The icon displayed next to the trigger.
26
+ * @IconifyIcon
27
+ */
28
+ icon?: IconProps['name'];
29
+ /**
30
+ * The position of the chevron icon.
31
+ * @defaultValue 'trailing'
32
+ */
33
+ chevron?: 'leading' | 'trailing';
34
+ /**
35
+ * The icon displayed as the chevron.
36
+ * @defaultValue appConfig.ui.icons.chevronDown
37
+ * @IconifyIcon
38
+ */
39
+ chevronIcon?: IconProps['name'];
40
+ /**
41
+ * The delay in milliseconds before auto-closing when streaming ends.
42
+ * Set to `0` to disable auto-close.
43
+ * @defaultValue 500
44
+ */
45
+ autoCloseDelay?: number;
46
+ /**
47
+ * Customize the [`ChatShimmer`](https://ui.nuxt.com/docs/components/chat-shimmer) component when streaming.
48
+ */
49
+ shimmer?: Partial<Omit<ChatShimmerProps, 'text'>>;
50
+ class?: any;
51
+ ui?: ChatReasoning['slots'];
52
+ }
53
+ export interface ChatReasoningEmits {
54
+ 'update:open': [value: boolean];
55
+ }
56
+ export interface ChatReasoningSlots {
57
+ default?(props: {
58
+ open: boolean;
59
+ }): VNode[];
60
+ }
61
+ declare const _default: typeof __VLS_export;
62
+ export default _default;
63
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ChatReasoningProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
64
+ "update:open": (value: boolean) => any;
65
+ }, string, import("vue").PublicProps, Readonly<ChatReasoningProps> & Readonly<{
66
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
67
+ }>, {
68
+ open: boolean;
69
+ streaming: boolean;
70
+ unmountOnHide: boolean;
71
+ chevron: "leading" | "trailing";
72
+ autoCloseDelay: number;
73
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ChatReasoningSlots>;
74
+ type __VLS_WithSlots<T, S> = T & {
75
+ new (): {
76
+ $slots: S;
77
+ };
78
+ };
@@ -0,0 +1,162 @@
1
+ <script>
2
+ import theme from "#build/ui/chat-reasoning";
3
+ </script>
4
+
5
+ <script setup>
6
+ import { ref, computed, watch, onUnmounted, nextTick, useTemplateRef } from "vue";
7
+ import { CollapsibleRoot, CollapsibleTrigger, CollapsibleContent } from "reka-ui";
8
+ import { useAppConfig } from "#imports";
9
+ import { useComponentUI } from "../composables/useComponentUI";
10
+ import { useLocale } from "../composables/useLocale";
11
+ import { useScrollShadow } from "../composables/useScrollShadow";
12
+ import { tv } from "../utils/tv";
13
+ import UIcon from "./Icon.vue";
14
+ import UChatShimmer from "./ChatShimmer.vue";
15
+ const props = defineProps({
16
+ text: { type: String, required: false },
17
+ streaming: { type: Boolean, required: false, default: false },
18
+ duration: { type: Number, required: false },
19
+ icon: { type: null, required: false },
20
+ chevron: { type: String, required: false, default: "trailing" },
21
+ chevronIcon: { type: null, required: false },
22
+ autoCloseDelay: { type: Number, required: false, default: 500 },
23
+ shimmer: { type: Object, required: false },
24
+ class: { type: null, required: false },
25
+ ui: { type: Object, required: false },
26
+ defaultOpen: { type: Boolean, required: false },
27
+ open: { type: Boolean, required: false, default: void 0 },
28
+ disabled: { type: Boolean, required: false },
29
+ unmountOnHide: { type: Boolean, required: false, default: false }
30
+ });
31
+ const emits = defineEmits(["update:open"]);
32
+ defineSlots();
33
+ const { t, code } = useLocale();
34
+ const appConfig = useAppConfig();
35
+ const uiProp = useComponentUI("chatReasoning", props);
36
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.chatReasoning || {} })({
37
+ chevron: props.chevron
38
+ }));
39
+ const isControlled = computed(() => props.open !== void 0);
40
+ const internalOpen = ref(props.defaultOpen ?? props.streaming);
41
+ const startTime = ref(props.streaming ? Date.now() : null);
42
+ const internalDuration = ref(void 0);
43
+ const autoCloseTimeout = ref(null);
44
+ watch(() => props.streaming, (streaming, wasStreaming) => {
45
+ if (streaming) {
46
+ if (autoCloseTimeout.value) {
47
+ clearTimeout(autoCloseTimeout.value);
48
+ autoCloseTimeout.value = null;
49
+ }
50
+ if (!wasStreaming) {
51
+ setOpen(true);
52
+ startTime.value = Date.now();
53
+ }
54
+ } else if (wasStreaming) {
55
+ if (startTime.value !== null) {
56
+ internalDuration.value = Math.ceil((Date.now() - startTime.value) / 1e3);
57
+ startTime.value = null;
58
+ }
59
+ if (props.autoCloseDelay > 0) {
60
+ autoCloseTimeout.value = setTimeout(() => {
61
+ setOpen(false);
62
+ }, props.autoCloseDelay);
63
+ }
64
+ }
65
+ }, { immediate: true });
66
+ const actualDuration = computed(() => props.duration ?? internalDuration.value);
67
+ const thinkingText = computed(() => {
68
+ if (props.streaming || actualDuration.value === 0) {
69
+ return t("chatReasoning.thinking");
70
+ }
71
+ if (actualDuration.value === void 0) {
72
+ return t("chatReasoning.thought");
73
+ }
74
+ const d = actualDuration.value;
75
+ const unit = d < 60 ? "second" : "minute";
76
+ const value = d < 60 ? d : Math.floor(d / 60);
77
+ const duration = new Intl.NumberFormat(code.value, { style: "unit", unit, unitDisplay: "long" }).format(value);
78
+ return t("chatReasoning.thoughtFor", { duration });
79
+ });
80
+ const resolvedOpen = computed(() => isControlled.value ? props.open : internalOpen.value);
81
+ function setOpen(value) {
82
+ if (autoCloseTimeout.value) {
83
+ clearTimeout(autoCloseTimeout.value);
84
+ autoCloseTimeout.value = null;
85
+ }
86
+ internalOpen.value = value;
87
+ emits("update:open", value);
88
+ }
89
+ onUnmounted(() => {
90
+ if (autoCloseTimeout.value) {
91
+ clearTimeout(autoCloseTimeout.value);
92
+ }
93
+ });
94
+ const hasContent = computed(() => !!props.text || props.streaming);
95
+ const chevronIconName = computed(() => props.chevronIcon || appConfig.ui.icons?.chevronDown);
96
+ const bodyRef = useTemplateRef("bodyRef");
97
+ const { style: scrollShadowStyle } = useScrollShadow(bodyRef);
98
+ watch(() => props.text, () => {
99
+ if (!props.streaming || !bodyRef.value) return;
100
+ const el = bodyRef.value;
101
+ const distanceFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight;
102
+ if (distanceFromBottom < 50) {
103
+ nextTick(() => {
104
+ el.scrollTop = el.scrollHeight;
105
+ });
106
+ }
107
+ });
108
+ </script>
109
+
110
+ <template>
111
+ <CollapsibleRoot
112
+ v-if="hasContent"
113
+ v-slot="{ open: isOpen }"
114
+ :open="resolvedOpen"
115
+ :disabled="disabled"
116
+ :unmount-on-hide="unmountOnHide"
117
+ data-slot="root"
118
+ :class="ui.root({ class: [uiProp?.root, props.class] })"
119
+ @update:open="setOpen"
120
+ >
121
+ <CollapsibleTrigger as-child :disabled="!hasContent">
122
+ <button
123
+ type="button"
124
+ data-slot="trigger"
125
+ :class="ui.trigger({ class: uiProp?.trigger })"
126
+ >
127
+ <span v-if="icon || hasContent && chevron === 'leading'" data-slot="leading" :class="ui.leading({ class: uiProp?.leading })">
128
+ <UIcon
129
+ v-if="icon"
130
+ :name="icon"
131
+ data-slot="leadingIcon"
132
+ :class="ui.leadingIcon({ class: uiProp?.leadingIcon, alone: !(hasContent && chevron === 'leading') })"
133
+ />
134
+ <UIcon
135
+ v-if="hasContent && chevron === 'leading'"
136
+ :name="chevronIconName"
137
+ data-slot="chevronIcon"
138
+ :class="ui.chevronIcon({ class: uiProp?.chevronIcon, alone: !icon })"
139
+ />
140
+ </span>
141
+
142
+ <UChatShimmer v-if="streaming" :text="thinkingText" v-bind="props.shimmer" data-slot="label" :class="ui.label({ class: uiProp?.label })" />
143
+ <span v-else data-slot="label" :class="ui.label({ class: uiProp?.label })">{{ thinkingText }}</span>
144
+
145
+ <UIcon
146
+ v-if="hasContent && chevron === 'trailing'"
147
+ :name="chevronIconName"
148
+ data-slot="trailingIcon"
149
+ :class="ui.trailingIcon({ class: uiProp?.trailingIcon })"
150
+ />
151
+ </button>
152
+ </CollapsibleTrigger>
153
+
154
+ <CollapsibleContent data-slot="content" :class="ui.content({ class: uiProp?.content })">
155
+ <div ref="bodyRef" data-slot="body" :class="ui.body({ class: uiProp?.body })" :style="scrollShadowStyle">
156
+ <slot :open="isOpen">
157
+ {{ text }}
158
+ </slot>
159
+ </div>
160
+ </CollapsibleContent>
161
+ </CollapsibleRoot>
162
+ </template>
@@ -0,0 +1,78 @@
1
+ import type { CollapsibleRootProps } from 'reka-ui';
2
+ import type { VNode } from 'vue';
3
+ import type { AppConfig } from '@nuxt/schema';
4
+ import theme from '#build/ui/chat-reasoning';
5
+ import type { IconProps } from '../types';
6
+ import type { ChatShimmerProps } from './ChatShimmer.vue';
7
+ import type { ComponentConfig } from '../types/tv';
8
+ type ChatReasoning = ComponentConfig<typeof theme, AppConfig, 'chatReasoning'>;
9
+ export interface ChatReasoningProps extends Pick<CollapsibleRootProps, 'defaultOpen' | 'open' | 'disabled' | 'unmountOnHide'> {
10
+ /**
11
+ * The reasoning text content to display.
12
+ */
13
+ text?: string;
14
+ /**
15
+ * Whether the reasoning content is currently streaming.
16
+ * @defaultValue false
17
+ */
18
+ streaming?: boolean;
19
+ /**
20
+ * The duration in seconds that the AI spent reasoning.
21
+ * If not provided, it will be calculated automatically based on streaming time.
22
+ */
23
+ duration?: number;
24
+ /**
25
+ * The icon displayed next to the trigger.
26
+ * @IconifyIcon
27
+ */
28
+ icon?: IconProps['name'];
29
+ /**
30
+ * The position of the chevron icon.
31
+ * @defaultValue 'trailing'
32
+ */
33
+ chevron?: 'leading' | 'trailing';
34
+ /**
35
+ * The icon displayed as the chevron.
36
+ * @defaultValue appConfig.ui.icons.chevronDown
37
+ * @IconifyIcon
38
+ */
39
+ chevronIcon?: IconProps['name'];
40
+ /**
41
+ * The delay in milliseconds before auto-closing when streaming ends.
42
+ * Set to `0` to disable auto-close.
43
+ * @defaultValue 500
44
+ */
45
+ autoCloseDelay?: number;
46
+ /**
47
+ * Customize the [`ChatShimmer`](https://ui.nuxt.com/docs/components/chat-shimmer) component when streaming.
48
+ */
49
+ shimmer?: Partial<Omit<ChatShimmerProps, 'text'>>;
50
+ class?: any;
51
+ ui?: ChatReasoning['slots'];
52
+ }
53
+ export interface ChatReasoningEmits {
54
+ 'update:open': [value: boolean];
55
+ }
56
+ export interface ChatReasoningSlots {
57
+ default?(props: {
58
+ open: boolean;
59
+ }): VNode[];
60
+ }
61
+ declare const _default: typeof __VLS_export;
62
+ export default _default;
63
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ChatReasoningProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
64
+ "update:open": (value: boolean) => any;
65
+ }, string, import("vue").PublicProps, Readonly<ChatReasoningProps> & Readonly<{
66
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
67
+ }>, {
68
+ open: boolean;
69
+ streaming: boolean;
70
+ unmountOnHide: boolean;
71
+ chevron: "leading" | "trailing";
72
+ autoCloseDelay: number;
73
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ChatReasoningSlots>;
74
+ type __VLS_WithSlots<T, S> = T & {
75
+ new (): {
76
+ $slots: S;
77
+ };
78
+ };
@@ -0,0 +1,34 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/chat-shimmer';
3
+ import type { ComponentConfig } from '../types/tv';
4
+ type ChatShimmer = ComponentConfig<typeof theme, AppConfig, 'chatShimmer'>;
5
+ export interface ChatShimmerProps {
6
+ /**
7
+ * The element or component this component should render as.
8
+ * @defaultValue 'span'
9
+ */
10
+ as?: any;
11
+ /**
12
+ * The text to display with the shimmer effect.
13
+ */
14
+ text: string;
15
+ /**
16
+ * The duration of the shimmer animation in seconds.
17
+ * @defaultValue 2
18
+ */
19
+ duration?: number;
20
+ /**
21
+ * The spread multiplier for the shimmer highlight. The actual spread is computed as `text.length * spread` in pixels.
22
+ * @defaultValue 2
23
+ */
24
+ spread?: number;
25
+ class?: any;
26
+ ui?: ChatShimmer['slots'];
27
+ }
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
30
+ declare const __VLS_export: import("vue").DefineComponent<ChatShimmerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatShimmerProps> & Readonly<{}>, {
31
+ as: any;
32
+ duration: number;
33
+ spread: number;
34
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;