xertica-ui 2.3.0 → 2.4.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 (534) hide show
  1. package/CHANGELOG.md +564 -552
  2. package/README.md +417 -406
  3. package/assets/xertica-logo.svg +37 -37
  4. package/assets/xertica-x-logo.svg +20 -20
  5. package/bin/cli.ts +1244 -1155
  6. package/bin/language-config.ts +358 -361
  7. package/components/assistant/code-block/CodeBlock.tsx +268 -268
  8. package/components/assistant/formatted-document/FormattedDocument.tsx +147 -147
  9. package/components/assistant/modern-chat-input/ModernChatInput.tsx +564 -554
  10. package/components/assistant/xertica-assistant/parts/AssistantCollapsedView.tsx +99 -99
  11. package/components/assistant/xertica-assistant/parts/AssistantConversationList.tsx +104 -106
  12. package/components/assistant/xertica-assistant/parts/AssistantDocumentEditor.tsx +81 -81
  13. package/components/assistant/xertica-assistant/parts/AssistantFeedbackDialog.tsx +88 -78
  14. package/components/assistant/xertica-assistant/parts/AssistantHeader.tsx +75 -75
  15. package/components/assistant/xertica-assistant/parts/AssistantMessageBubble.tsx +564 -560
  16. package/components/assistant/xertica-assistant/parts/AssistantTabBar.tsx +67 -67
  17. package/components/assistant/xertica-assistant/parts/AssistantWelcomeScreen.tsx +103 -103
  18. package/components/assistant/xertica-assistant/use-assistant.ts +615 -615
  19. package/components/assistant/xertica-assistant/xertica-assistant.tsx +611 -613
  20. package/components/blocks/card-patterns/ActivityCard.tsx +100 -100
  21. package/components/blocks/card-patterns/ActivityCardSkeleton.tsx +56 -56
  22. package/components/blocks/card-patterns/FeatureCardSkeleton.tsx +58 -63
  23. package/components/blocks/card-patterns/NotificationCard.tsx +140 -140
  24. package/components/blocks/card-patterns/NotificationCardSkeleton.tsx +81 -81
  25. package/components/blocks/card-patterns/ProfileCard.tsx +112 -114
  26. package/components/blocks/card-patterns/ProfileCardSkeleton.tsx +69 -69
  27. package/components/blocks/card-patterns/ProjectCard.tsx +123 -123
  28. package/components/blocks/card-patterns/ProjectCardSkeleton.tsx +67 -72
  29. package/components/blocks/card-patterns/QuickActionCardSkeleton.tsx +44 -44
  30. package/components/blocks/card-patterns/card-patterns.stories.tsx +594 -594
  31. package/components/blocks/card-patterns/index.ts +29 -29
  32. package/components/brand/language-selector/LanguageSelector.tsx +102 -102
  33. package/components/brand/language-selector/language-selector.stories.tsx +111 -114
  34. package/components/brand/language-selector/language-selector.test.tsx +101 -101
  35. package/components/brand/theme-toggle/ThemeToggle.tsx +74 -70
  36. package/components/brand/xertica-provider/XerticaProvider.tsx +109 -112
  37. package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
  38. package/components/index.ts +86 -90
  39. package/components/layout/sidebar/sidebar.mdx +1 -1
  40. package/components/layout/sidebar/sidebar.tsx +1079 -1073
  41. package/components/media/FloatingMediaWrapper.tsx +371 -371
  42. package/components/media/audio-player/AudioPlayer.tsx +768 -766
  43. package/components/media/video-player/VideoPlayer.tsx +310 -310
  44. package/components/pages/forgot-password-page/ForgotPasswordPage.tsx +1 -1
  45. package/components/pages/home-content/HomeContent.tsx +120 -120
  46. package/components/pages/home-content/home-content.mdx +62 -62
  47. package/components/pages/home-page/HomePage.tsx +78 -74
  48. package/components/pages/home-page/home-page.mdx +53 -53
  49. package/components/pages/login-page/LoginPage.tsx +218 -216
  50. package/components/pages/reset-password-page/ResetPasswordPage.tsx +243 -239
  51. package/components/pages/template-content/TemplateContent.tsx +1354 -1235
  52. package/components/pages/template-content/template-content.mdx +61 -61
  53. package/components/pages/template-page/template-page.mdx +53 -53
  54. package/components/pages/verify-email-page/VerifyEmailPage.tsx +206 -206
  55. package/components/shared/error-boundary.stories.tsx +4 -22
  56. package/components/shared/error-boundary.tsx +1 -5
  57. package/components/shared/error-fallbacks.tsx +4 -8
  58. package/components/ui/accordion/accordion.mdx +8 -8
  59. package/components/ui/alert/alert.mdx +8 -8
  60. package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
  61. package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
  62. package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
  63. package/components/ui/avatar/avatar.mdx +8 -8
  64. package/components/ui/badge/badge.mdx +8 -8
  65. package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
  66. package/components/ui/button/button.mdx +8 -8
  67. package/components/ui/calendar/calendar.mdx +8 -8
  68. package/components/ui/card/card.mdx +8 -8
  69. package/components/ui/carousel/carousel.mdx +8 -8
  70. package/components/ui/chart/chart.mdx +8 -8
  71. package/components/ui/checkbox/checkbox.mdx +8 -8
  72. package/components/ui/collapsible/collapsible.mdx +8 -8
  73. package/components/ui/command/command.mdx +8 -8
  74. package/components/ui/context-menu/context-menu.mdx +8 -8
  75. package/components/ui/dialog/dialog.mdx +8 -8
  76. package/components/ui/drawer/drawer.mdx +8 -8
  77. package/components/ui/dropdown-menu/dropdown-menu.mdx +8 -8
  78. package/components/ui/empty/empty.mdx +8 -8
  79. package/components/ui/file-upload/file-upload.mdx +8 -8
  80. package/components/ui/hover-card/hover-card.mdx +8 -8
  81. package/components/ui/input/input.mdx +8 -8
  82. package/components/ui/input-otp/input-otp.mdx +8 -8
  83. package/components/ui/label/label.mdx +8 -8
  84. package/components/ui/map/map.mdx +8 -8
  85. package/components/ui/menubar/menubar.mdx +8 -8
  86. package/components/ui/navigation-menu/navigation-menu.mdx +8 -8
  87. package/components/ui/notification-badge/notification-badge.mdx +8 -8
  88. package/components/ui/pagination/pagination.mdx +8 -8
  89. package/components/ui/popover/popover.mdx +8 -8
  90. package/components/ui/progress/progress.mdx +8 -8
  91. package/components/ui/radio-group/radio-group.mdx +8 -8
  92. package/components/ui/rating/rating.mdx +8 -8
  93. package/components/ui/resizable/resizable.mdx +8 -8
  94. package/components/ui/route-map/route-map.mdx +8 -8
  95. package/components/ui/scroll-area/scroll-area.mdx +8 -8
  96. package/components/ui/search/search.mdx +8 -8
  97. package/components/ui/select/select.mdx +8 -8
  98. package/components/ui/separator/separator.mdx +8 -8
  99. package/components/ui/sheet/sheet.mdx +8 -8
  100. package/components/ui/simple-map/simple-map.mdx +8 -8
  101. package/components/ui/skeleton/skeleton.mdx +8 -8
  102. package/components/ui/slider/slider.mdx +8 -8
  103. package/components/ui/sonner/sonner.mdx +8 -8
  104. package/components/ui/stats-card/index.ts +2 -2
  105. package/components/ui/stats-card/stats-card-skeleton.tsx +60 -62
  106. package/components/ui/stats-card/stats-card.mdx +8 -8
  107. package/components/ui/stats-card/stats-card.stories.tsx +99 -99
  108. package/components/ui/stepper/stepper.mdx +8 -8
  109. package/components/ui/switch/switch.mdx +8 -8
  110. package/components/ui/table/table.mdx +8 -8
  111. package/components/ui/tabs/tabs.mdx +8 -8
  112. package/components/ui/textarea/textarea.mdx +8 -8
  113. package/components/ui/timeline/timeline.mdx +8 -8
  114. package/components/ui/toggle/toggle.mdx +8 -8
  115. package/components/ui/toggle-group/toggle-group.mdx +8 -8
  116. package/components/ui/tooltip/tooltip.mdx +8 -8
  117. package/components/ui/tree-view/tree-view.mdx +8 -8
  118. package/components.json +892 -892
  119. package/contexts/AuthContext.tsx +11 -8
  120. package/contexts/LanguageContext.test.tsx +121 -121
  121. package/contexts/LanguageContext.tsx +250 -251
  122. package/dist/{AssistantChart-DoZCyS5r.cjs → AssistantChart-9w31gdAb.cjs} +4 -4
  123. package/dist/{AssistantChart-CldVCVDe.cjs → AssistantChart-BAudAfne.cjs} +5 -5
  124. package/dist/{AssistantChart-Bdd44uBn.cjs → AssistantChart-BAx9VQvb.cjs} +127 -388
  125. package/dist/{AssistantChart-Cu3m7RBo.js → AssistantChart-BP8upjMk.js} +5 -5
  126. package/dist/{AssistantChart-CFhDdGyU.js → AssistantChart-CVko2A1W.js} +130 -391
  127. package/dist/{AssistantChart-C_hwFRRr.js → AssistantChart-CVzmmhx4.js} +4 -4
  128. package/dist/{AudioPlayer-IAU5q5T1.cjs → AudioPlayer-1ypwE2Wh.cjs} +1 -1
  129. package/dist/{AudioPlayer-CGRUtUdN.js → AudioPlayer-DuKXrCfy.js} +1 -1
  130. package/dist/{LanguageContext-CS14yCpi.js → LanguageContext-BwhwC3G2.js} +2 -2
  131. package/dist/{LanguageContext-B_KFTCzT.cjs → LanguageContext-DvUt5jBg.cjs} +2 -2
  132. package/dist/{ThemeContext-C2EwAPDt.js → ThemeContext-BbBNoFTG.js} +2 -2
  133. package/dist/{ThemeContext-Bmod0Cg2.cjs → ThemeContext-BblcjQup.cjs} +13 -8
  134. package/dist/{ThemeContext-BWq9ACPo.js → ThemeContext-Bo-W2WZH.js} +13 -8
  135. package/dist/{ThemeContext-j5aGtPky.cjs → ThemeContext-CP3a0jxy.cjs} +193 -262
  136. package/dist/{ThemeContext-vTjumZeM.cjs → ThemeContext-Cmr8Ex8H.cjs} +2 -2
  137. package/dist/ThemeContext-CpqYShLq.cjs +324 -0
  138. package/dist/{ThemeContext-CQSo4Iwc.js → ThemeContext-D3LzacmG.js} +8 -1
  139. package/dist/ThemeContext-Du2nE1PL.js +325 -0
  140. package/dist/ThemeContext-GeEBTJ3q.cjs +1621 -0
  141. package/dist/ThemeContext-JyLK9B1o.js +1622 -0
  142. package/dist/{ThemeContext-CGk3KK0k.cjs → ThemeContext-U4dEYc6C.cjs} +8 -1
  143. package/dist/{ThemeContext-BXjrgUjW.js → ThemeContext-ept8jhXI.js} +200 -261
  144. package/dist/{VerifyEmailPage-C0c2e5n0.js → VerifyEmailPage-BE-L9mB7.js} +7 -7
  145. package/dist/{VerifyEmailPage-DSBMRHtl.js → VerifyEmailPage-BIBOKV7Z.js} +41 -36
  146. package/dist/{VerifyEmailPage-DgIid028.js → VerifyEmailPage-BJjAMUTW.js} +4 -4
  147. package/dist/{VerifyEmailPage--1Vurewl.cjs → VerifyEmailPage-BRSP-Pwt.cjs} +3 -3
  148. package/dist/{VerifyEmailPage-Cwi3kbol.cjs → VerifyEmailPage-Bae2cBXT.cjs} +7 -7
  149. package/dist/{VerifyEmailPage-De6bQjrz.cjs → VerifyEmailPage-BiRm7Nh4.cjs} +41 -36
  150. package/dist/{VerifyEmailPage-ByerOcm4.cjs → VerifyEmailPage-Bv8Ah_TK.cjs} +23 -20
  151. package/dist/VerifyEmailPage-Bvfv8HVQ.js +3214 -0
  152. package/dist/{VerifyEmailPage-BComraR7.cjs → VerifyEmailPage-CR7kb5df.cjs} +22 -12
  153. package/dist/{VerifyEmailPage-MTD7AG1Z.js → VerifyEmailPage-C_ihbcth.js} +4 -4
  154. package/dist/{VerifyEmailPage-1WwWczAn.js → VerifyEmailPage-CbgjOF0v.js} +22 -12
  155. package/dist/{VerifyEmailPage-DvMLZgFt.js → VerifyEmailPage-CdYPSJoO.js} +1 -1
  156. package/dist/{VerifyEmailPage-By3Jf__L.cjs → VerifyEmailPage-CkBYfsNy.cjs} +4 -4
  157. package/dist/{VerifyEmailPage-CJLz3jrn.js → VerifyEmailPage-Cyl55sJb.js} +23 -20
  158. package/dist/VerifyEmailPage-D-FRj5TU.cjs +3213 -0
  159. package/dist/VerifyEmailPage-DF2ilhum.cjs +3210 -0
  160. package/dist/{VerifyEmailPage-CYXtbKi3.cjs → VerifyEmailPage-DMBh4NM9.cjs} +1 -1
  161. package/dist/{VerifyEmailPage-CgMxRb4z.js → VerifyEmailPage-DTtFfC-J.js} +3 -3
  162. package/dist/{VerifyEmailPage-CFLMls1p.cjs → VerifyEmailPage-Dt7zgA4w.cjs} +4 -4
  163. package/dist/VerifyEmailPage-EhudUdqF.js +3211 -0
  164. package/dist/{VerifyEmailPage-C5TNQTBa.js → VerifyEmailPage-X14vhdyl.js} +148 -75
  165. package/dist/VerifyEmailPage-hdB8JQGv.cjs +3213 -0
  166. package/dist/{VerifyEmailPage-B4peJjAT.cjs → VerifyEmailPage-u_Dn7t1U.cjs} +148 -75
  167. package/dist/VerifyEmailPage-vYHbYK3q.js +3214 -0
  168. package/dist/{XerticaProvider-CBGc4EMA.cjs → XerticaProvider-AChwphCO.cjs} +4 -4
  169. package/dist/{XerticaProvider-BIrqfZ-i.cjs → XerticaProvider-AbWlr7Af.cjs} +8 -11
  170. package/dist/{XerticaProvider-D-yNhF94.cjs → XerticaProvider-B8CaV7xu.cjs} +1 -1
  171. package/dist/{XerticaProvider-DDuiIcKo.js → XerticaProvider-BErr83Bg.js} +14 -11
  172. package/dist/{XerticaProvider-CEoWMTxu.js → XerticaProvider-BITjgC5p.js} +2 -2
  173. package/dist/{XerticaProvider-CllrbMEJ.cjs → XerticaProvider-By8q3Roe.cjs} +2 -2
  174. package/dist/{XerticaProvider-C1DKnvLh.js → XerticaProvider-CUYJZc32.js} +4 -4
  175. package/dist/{XerticaProvider-ET0ihewn.cjs → XerticaProvider-CW9hpCdF.cjs} +2 -2
  176. package/dist/{XerticaProvider-Dt5HEzbQ.js → XerticaProvider-CWgby5mY.js} +10 -10
  177. package/dist/XerticaProvider-CWs6EwNa.js +49 -0
  178. package/dist/XerticaProvider-CjQAQPcn.cjs +48 -0
  179. package/dist/XerticaProvider-CwOkHxiT.cjs +44 -0
  180. package/dist/XerticaProvider-D5lLumH-.js +49 -0
  181. package/dist/{XerticaProvider-DYq4JWtg.js → XerticaProvider-DQtvJU7m.js} +1 -1
  182. package/dist/XerticaProvider-qQUDop71.cjs +48 -0
  183. package/dist/{XerticaProvider-B7EVH-NF.js → XerticaProvider-siSt9uG2.js} +2 -2
  184. package/dist/{XerticaXLogo-Zw2B276b.cjs → XerticaXLogo-8TTzBjHw.cjs} +1 -1
  185. package/dist/{XerticaXLogo-B7xQ5dhi.js → XerticaXLogo-BWaag64t.js} +1 -1
  186. package/dist/{XerticaXLogo-DZbo4vOE.js → XerticaXLogo-BX3ueACh.js} +5 -2
  187. package/dist/XerticaXLogo-CFuIlYFH.js +252 -0
  188. package/dist/XerticaXLogo-CU-U-GP4.cjs +251 -0
  189. package/dist/XerticaXLogo-ChryA6xj.js +252 -0
  190. package/dist/{XerticaXLogo-CQUUjXoH.cjs → XerticaXLogo-CziKMQil.cjs} +8 -8
  191. package/dist/XerticaXLogo-DHz5SugF.js +252 -0
  192. package/dist/XerticaXLogo-DTee_y8X.cjs +251 -0
  193. package/dist/{XerticaXLogo-Cmsp-Eey.js → XerticaXLogo-DfUvz-lD.js} +9 -9
  194. package/dist/XerticaXLogo-kslQ8Tk_.cjs +251 -0
  195. package/dist/{XerticaXLogo-bvZSgwGF.cjs → XerticaXLogo-qBPhwK3g.cjs} +5 -2
  196. package/dist/{alert-dialog-s-vmNkJ_.js → alert-dialog-iDe5VE5o.js} +3 -3
  197. package/dist/{alert-dialog-DSKByiKZ.cjs → alert-dialog-yckpaOpy.cjs} +3 -3
  198. package/dist/assistant.cjs.js +1 -1
  199. package/dist/assistant.es.js +1 -1
  200. package/dist/brand.cjs.js +2 -2
  201. package/dist/brand.es.js +2 -2
  202. package/dist/cli.js +90 -37
  203. package/dist/components/brand/theme-toggle/ThemeToggle.d.ts +1 -1
  204. package/dist/components/index.d.ts +1 -1
  205. package/dist/{google-maps-loader-Y-QkD-Li.cjs → google-maps-loader-BqsYL48U.cjs} +0 -5
  206. package/dist/{google-maps-loader-CTYySAun.js → google-maps-loader-t2IlYBzw.js} +0 -4
  207. package/dist/index-CkTUgOwX.js +8 -0
  208. package/dist/{index-COtD8bRW.cjs → index-D3RLKRAs.cjs} +1 -1
  209. package/dist/index.cjs.js +5 -5
  210. package/dist/index.es.js +5 -5
  211. package/dist/index.umd.js +454 -1027
  212. package/dist/layout.cjs.js +1 -1
  213. package/dist/layout.es.js +1 -1
  214. package/dist/pages.cjs.js +1 -1
  215. package/dist/pages.es.js +1 -1
  216. package/dist/{sidebar-DAaY8bRU.cjs → sidebar-B3EYhli0.cjs} +33 -24
  217. package/dist/{sidebar-B6SlKZYN.js → sidebar-B4ZWaMrE.js} +1 -1
  218. package/dist/{sidebar-DQj1z3jG.cjs → sidebar-B9NR0lCe.cjs} +269 -227
  219. package/dist/{sidebar-nzPoVHBQ.cjs → sidebar-BS1p2V7t.cjs} +1 -1
  220. package/dist/sidebar-BvF5I2Ue.cjs +800 -0
  221. package/dist/{sidebar-q7P2Godd.cjs → sidebar-C5B_LHek.cjs} +1 -1
  222. package/dist/{sidebar-CrQDDdcz.js → sidebar-CA6_ek3f.js} +33 -24
  223. package/dist/{sidebar-BxGXsDAd.cjs → sidebar-CVUGHOS_.cjs} +8 -16
  224. package/dist/{sidebar-BViy8Eeu.js → sidebar-CmvwjnVb.js} +9 -17
  225. package/dist/sidebar-CplprZpM.js +801 -0
  226. package/dist/{sidebar-BbVIQvlP.js → sidebar-Dz7bd3zP.js} +1 -1
  227. package/dist/sidebar-KIS0C2JH.js +801 -0
  228. package/dist/sidebar-OTO_up7Z.js +801 -0
  229. package/dist/sidebar-zowjejT2.cjs +800 -0
  230. package/dist/{use-audio-player-nv8ZSGa1.js → use-audio-player-Bkh23vQ3.js} +3 -7
  231. package/dist/{use-audio-player-NKsWyjWu.cjs → use-audio-player-Dn1NR9xN.cjs} +3 -7
  232. package/dist/{xertica-assistant-dyP7KHM5.cjs → xertica-assistant-B1IaHXnB.cjs} +388 -529
  233. package/dist/{xertica-assistant-DCsnQyi5.js → xertica-assistant-B1NaSFFj.js} +46 -29
  234. package/dist/{xertica-assistant-ciJaWqm1.js → xertica-assistant-BMqdyRVi.js} +10 -28
  235. package/dist/{xertica-assistant-V_IdW4WF.cjs → xertica-assistant-Bj3vBCq_.cjs} +9 -27
  236. package/dist/{xertica-assistant-CrgTb6Hs.cjs → xertica-assistant-CIaUlbIt.cjs} +47 -22
  237. package/dist/{xertica-assistant-yX1CFBBo.js → xertica-assistant-DPsESB6t.js} +390 -531
  238. package/dist/{CodeBlock-BgfYL_rD.cjs → xertica-assistant-Qp3ydksa.cjs} +51 -263
  239. package/dist/{CodeBlock-BeSt1h5P.js → xertica-assistant-gnCJdcZY.js} +7 -219
  240. package/dist/xertica-ui.css +2 -2
  241. package/docs/architecture-improvements.md +456 -456
  242. package/docs/architecture.md +312 -306
  243. package/docs/components/assistant.md +428 -428
  244. package/docs/components/branding.md +252 -252
  245. package/docs/components/card-patterns.md +447 -445
  246. package/docs/components/error-boundary.md +32 -22
  247. package/docs/components/hooks.md +432 -430
  248. package/docs/components/language-selector.md +176 -172
  249. package/docs/components/pages.md +20 -6
  250. package/docs/doc-audit.md +244 -243
  251. package/docs/getting-started.md +616 -603
  252. package/docs/guidelines.md +330 -328
  253. package/docs/i18n.md +480 -476
  254. package/docs/installation.md +7 -6
  255. package/docs/llms.md +295 -295
  256. package/docs/state-management.md +289 -289
  257. package/guidelines/Guidelines.md +409 -406
  258. package/llms-compact.txt +1 -1
  259. package/llms.txt +1 -1
  260. package/package.json +219 -219
  261. package/styles/xertica/base.css +6 -0
  262. package/templates/.prettierignore +4 -4
  263. package/templates/.prettierrc +10 -10
  264. package/templates/CLAUDE.md +180 -165
  265. package/templates/guidelines/Guidelines.md +577 -553
  266. package/templates/package.json +69 -69
  267. package/templates/src/app/App.tsx +46 -46
  268. package/templates/src/app/components/AuthGuard.tsx +57 -8
  269. package/templates/src/features/assistant/data/mock.ts +75 -75
  270. package/templates/src/features/assistant/hooks/useAssistantConfig.ts +20 -20
  271. package/templates/src/features/assistant/index.ts +5 -5
  272. package/templates/src/features/auth/ui/AuthPageShell.tsx +1 -1
  273. package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +70 -72
  274. package/templates/src/features/auth/ui/LoginContent.tsx +92 -92
  275. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +183 -179
  276. package/templates/src/features/auth/ui/SocialLoginButtons.tsx +78 -78
  277. package/templates/src/features/auth/ui/VerifyEmailContent.tsx +80 -84
  278. package/templates/src/features/home/data/mock.ts +6 -0
  279. package/templates/src/features/home/hooks/useFeatureCards.ts +20 -20
  280. package/templates/src/features/home/index.ts +11 -11
  281. package/templates/src/features/home/ui/HomeContent.tsx +117 -119
  282. package/templates/src/features/template/ui/CrudTemplate.tsx +112 -115
  283. package/templates/src/features/template/ui/DashboardTemplate.tsx +110 -110
  284. package/templates/src/features/template/ui/FormTemplate.tsx +117 -117
  285. package/templates/src/features/template/ui/LoginTemplate.tsx +59 -59
  286. package/templates/src/features/template/ui/TemplateContent.tsx +1322 -1314
  287. package/templates/src/i18n.ts +124 -124
  288. package/templates/src/locales/en/common.json +21 -21
  289. package/templates/src/locales/en/components/activityCard.json +10 -10
  290. package/templates/src/locales/en/components/assistant.json +119 -119
  291. package/templates/src/locales/en/components/media.json +29 -29
  292. package/templates/src/locales/en/components/notificationCard.json +5 -5
  293. package/templates/src/locales/en/components/profileCard.json +8 -8
  294. package/templates/src/locales/en/components/projectCard.json +10 -10
  295. package/templates/src/locales/en/components/sidebar.json +14 -14
  296. package/templates/src/locales/en/components/stats.json +8 -8
  297. package/templates/src/locales/en/components/team.json +14 -14
  298. package/templates/src/locales/en/errors.json +9 -9
  299. package/templates/src/locales/en/languageSelector.json +7 -7
  300. package/templates/src/locales/en/nav.json +6 -6
  301. package/templates/src/locales/en/pages/crudTemplate.json +25 -25
  302. package/templates/src/locales/en/pages/dashboardTemplate.json +20 -20
  303. package/templates/src/locales/en/pages/forgotPassword.json +10 -10
  304. package/templates/src/locales/en/pages/formTemplate.json +16 -16
  305. package/templates/src/locales/en/pages/home.json +7 -7
  306. package/templates/src/locales/en/pages/login.json +15 -15
  307. package/templates/src/locales/en/pages/loginTemplate.json +9 -9
  308. package/templates/src/locales/en/pages/resetPassword.json +18 -18
  309. package/templates/src/locales/en/pages/templates.json +317 -317
  310. package/templates/src/locales/en/pages/verifyEmail.json +12 -12
  311. package/templates/src/locales/en/themeToggle.json +6 -6
  312. package/templates/src/locales/es/common.json +21 -21
  313. package/templates/src/locales/es/components/activityCard.json +10 -10
  314. package/templates/src/locales/es/components/assistant.json +119 -119
  315. package/templates/src/locales/es/components/media.json +29 -29
  316. package/templates/src/locales/es/components/notificationCard.json +5 -5
  317. package/templates/src/locales/es/components/profileCard.json +8 -8
  318. package/templates/src/locales/es/components/projectCard.json +10 -10
  319. package/templates/src/locales/es/components/sidebar.json +14 -14
  320. package/templates/src/locales/es/components/stats.json +8 -8
  321. package/templates/src/locales/es/components/team.json +14 -14
  322. package/templates/src/locales/es/errors.json +9 -9
  323. package/templates/src/locales/es/languageSelector.json +7 -7
  324. package/templates/src/locales/es/nav.json +6 -6
  325. package/templates/src/locales/es/pages/crudTemplate.json +25 -25
  326. package/templates/src/locales/es/pages/dashboardTemplate.json +20 -20
  327. package/templates/src/locales/es/pages/forgotPassword.json +10 -10
  328. package/templates/src/locales/es/pages/formTemplate.json +16 -16
  329. package/templates/src/locales/es/pages/home.json +7 -7
  330. package/templates/src/locales/es/pages/login.json +15 -15
  331. package/templates/src/locales/es/pages/loginTemplate.json +9 -9
  332. package/templates/src/locales/es/pages/resetPassword.json +18 -18
  333. package/templates/src/locales/es/pages/templates.json +317 -317
  334. package/templates/src/locales/es/pages/verifyEmail.json +12 -12
  335. package/templates/src/locales/es/themeToggle.json +6 -6
  336. package/templates/src/locales/pt-BR/common.json +21 -21
  337. package/templates/src/locales/pt-BR/components/activityCard.json +10 -10
  338. package/templates/src/locales/pt-BR/components/assistant.json +119 -119
  339. package/templates/src/locales/pt-BR/components/media.json +29 -29
  340. package/templates/src/locales/pt-BR/components/notificationCard.json +5 -5
  341. package/templates/src/locales/pt-BR/components/profileCard.json +8 -8
  342. package/templates/src/locales/pt-BR/components/projectCard.json +10 -10
  343. package/templates/src/locales/pt-BR/components/sidebar.json +14 -14
  344. package/templates/src/locales/pt-BR/components/stats.json +8 -8
  345. package/templates/src/locales/pt-BR/components/team.json +14 -14
  346. package/templates/src/locales/pt-BR/errors.json +9 -9
  347. package/templates/src/locales/pt-BR/languageSelector.json +7 -7
  348. package/templates/src/locales/pt-BR/nav.json +6 -6
  349. package/templates/src/locales/pt-BR/pages/crudTemplate.json +25 -25
  350. package/templates/src/locales/pt-BR/pages/dashboardTemplate.json +20 -20
  351. package/templates/src/locales/pt-BR/pages/forgotPassword.json +10 -10
  352. package/templates/src/locales/pt-BR/pages/formTemplate.json +16 -16
  353. package/templates/src/locales/pt-BR/pages/home.json +7 -7
  354. package/templates/src/locales/pt-BR/pages/login.json +15 -15
  355. package/templates/src/locales/pt-BR/pages/loginTemplate.json +9 -9
  356. package/templates/src/locales/pt-BR/pages/resetPassword.json +18 -18
  357. package/templates/src/locales/pt-BR/pages/templates.json +317 -317
  358. package/templates/src/locales/pt-BR/pages/verifyEmail.json +12 -12
  359. package/templates/src/locales/pt-BR/themeToggle.json +6 -6
  360. package/templates/src/pages/AssistantPage.tsx +470 -464
  361. package/templates/src/pages/HomePage.tsx +53 -49
  362. package/templates/src/shared/error-boundary.tsx +1 -5
  363. package/templates/src/shared/error-fallbacks.tsx +4 -8
  364. package/templates/vite.config.js +20 -20
  365. package/templates/vite.config.ts +55 -52
  366. package/dist/AssistantChart-CxGjH7Qk.js +0 -3477
  367. package/dist/AssistantChart-DIpshm3i.js +0 -4784
  368. package/dist/AssistantChart-D_PTeu8P.cjs +0 -3503
  369. package/dist/AssistantChart-zjsy2GaZ.cjs +0 -4810
  370. package/dist/AudioPlayer-B1lt5cPl.cjs +0 -989
  371. package/dist/AudioPlayer-BZ7bibzU.cjs +0 -982
  372. package/dist/AudioPlayer-BpRPS4-1.cjs +0 -1277
  373. package/dist/AudioPlayer-C12BjQBV.cjs +0 -997
  374. package/dist/AudioPlayer-CFeV8t-5.cjs +0 -936
  375. package/dist/AudioPlayer-Coly3q5R.js +0 -1278
  376. package/dist/AudioPlayer-CySJIyvL.js +0 -937
  377. package/dist/AudioPlayer-DMcG_c7L.js +0 -990
  378. package/dist/AudioPlayer-DcFKRJE_.js +0 -998
  379. package/dist/AudioPlayer-e8LfNoqO.js +0 -983
  380. package/dist/BrandColorsContext-565dDHd5.js +0 -660
  381. package/dist/BrandColorsContext-BcJbtkqn.cjs +0 -659
  382. package/dist/CodeBlock-7TTgmdGG.cjs +0 -2094
  383. package/dist/CodeBlock-BlcqlA9M.cjs +0 -2094
  384. package/dist/CodeBlock-Bnmeu5ez.cjs +0 -2094
  385. package/dist/CodeBlock-BtfPlbAI.js +0 -2078
  386. package/dist/CodeBlock-CIySIuYr.js +0 -2078
  387. package/dist/CodeBlock-CuPtUM-7.cjs +0 -2094
  388. package/dist/CodeBlock-D6ffWXgc.js +0 -2078
  389. package/dist/CodeBlock-D8dcwbit.cjs +0 -2094
  390. package/dist/CodeBlock-DMZrFnlw.cjs +0 -2094
  391. package/dist/CodeBlock-DlBehYN8.js +0 -2078
  392. package/dist/CodeBlock-DnYNI8rQ.js +0 -2078
  393. package/dist/CodeBlock-DvKWbSnE.cjs +0 -2094
  394. package/dist/CodeBlock-DwMCfkFY.js +0 -2078
  395. package/dist/CodeBlock-Dy6CNYyj.js +0 -2078
  396. package/dist/CodeBlock-U1pPOQI7.cjs +0 -2094
  397. package/dist/CodeBlock-f_GpNhEB.js +0 -2078
  398. package/dist/CodeBlock-oB6u8nI1.js +0 -2078
  399. package/dist/CodeBlock-tZC31B73.cjs +0 -2094
  400. package/dist/FeatureCard-CxC-7C-C.cjs +0 -300
  401. package/dist/FeatureCard-DbHWCb4E.js +0 -301
  402. package/dist/ImageWithFallback-CGtidP6B.cjs +0 -4542
  403. package/dist/ImageWithFallback-lsg3pdFg.js +0 -4508
  404. package/dist/LanguageSelector-B5YfbHra.js +0 -231
  405. package/dist/LanguageSelector-D6uacAIM.cjs +0 -230
  406. package/dist/LayoutContext-B45-e9DI.cjs +0 -93
  407. package/dist/LayoutContext-BAql6ZRY.js +0 -97
  408. package/dist/LayoutContext-Bav3UMEA.js +0 -94
  409. package/dist/LayoutContext-BvK-ggDa.cjs +0 -96
  410. package/dist/ThemeContext-BoH4NLfN.js +0 -734
  411. package/dist/ThemeContext-r69W20Xg.cjs +0 -733
  412. package/dist/VerifyEmailPage-COiyNl1y.js +0 -2825
  413. package/dist/VerifyEmailPage-CqKsR2v8.js +0 -2827
  414. package/dist/VerifyEmailPage-DjQKRlUS.cjs +0 -2824
  415. package/dist/VerifyEmailPage-s-1X3LDJ.cjs +0 -2826
  416. package/dist/XerticaOrbe-KL1RBHzw.cjs +0 -1354
  417. package/dist/XerticaOrbe-zwS1p2a8.js +0 -1355
  418. package/dist/XerticaProvider-6btlAlzc.js +0 -17
  419. package/dist/XerticaProvider-BNoNOxQ5.cjs +0 -16
  420. package/dist/XerticaProvider-BlY2limY.cjs +0 -38
  421. package/dist/XerticaProvider-cI9hSs27.cjs +0 -38
  422. package/dist/XerticaProvider-hSwhNQex.js +0 -39
  423. package/dist/alert-dialog-BOje--vD.js +0 -847
  424. package/dist/alert-dialog-BtEuQqrg.cjs +0 -870
  425. package/dist/breadcrumb-CqJ7bHY5.js +0 -161
  426. package/dist/breadcrumb-m9Hb2_XN.cjs +0 -177
  427. package/dist/components/assistant/xertica-assistant/hooks/index.d.ts +0 -6
  428. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-conversations.d.ts +0 -21
  429. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-messages.d.ts +0 -49
  430. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-suggestions.d.ts +0 -16
  431. package/dist/components/blocks/audio-player/AudioPlayer.d.ts +0 -35
  432. package/dist/components/blocks/audio-player/index.d.ts +0 -1
  433. package/dist/components/blocks/document-editor/DocumentEditor.d.ts +0 -26
  434. package/dist/components/blocks/document-editor/index.d.ts +0 -1
  435. package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +0 -41
  436. package/dist/components/blocks/podcast-player/index.d.ts +0 -1
  437. package/dist/components/ui/chart/parts/chart-dashboard.d.ts +0 -113
  438. package/dist/components/ui/chart/parts/chart-metric.d.ts +0 -118
  439. package/dist/components/ui/chart/parts/chart-primitives.d.ts +0 -101
  440. package/dist/components/ui/chart/parts/chart-shared.d.ts +0 -20
  441. package/dist/components/ui/chart/parts/chart-utils.d.ts +0 -12
  442. package/dist/components/ui/chart/parts/index.d.ts +0 -5
  443. package/dist/dropdown-menu-BDB5CmQs.cjs +0 -247
  444. package/dist/dropdown-menu-DQidbKBD.js +0 -231
  445. package/dist/google-maps-loader-BFWp6VPd.js +0 -287
  446. package/dist/google-maps-loader-BKcdgFbu.cjs +0 -312
  447. package/dist/google-maps-loader-CumCNXeG.js +0 -312
  448. package/dist/google-maps-loader-eS3uQ5TA.cjs +0 -287
  449. package/dist/header-Cgy6vYPk.cjs +0 -731
  450. package/dist/header-DRlT4jgI.js +0 -715
  451. package/dist/header-Dux00SI4.cjs +0 -731
  452. package/dist/header-EkGKXPsD.js +0 -715
  453. package/dist/header-WfEywpyc.cjs +0 -731
  454. package/dist/header-tifNQn2U.js +0 -715
  455. package/dist/index-BhapVLVj.js +0 -8
  456. package/dist/index-D6fxYEY8.cjs +0 -7
  457. package/dist/index-DAIp0_HK.js +0 -8
  458. package/dist/index-DW5tYe26.js +0 -8
  459. package/dist/index-GA__GvnG.cjs +0 -7
  460. package/dist/input-2R4loU86.js +0 -127
  461. package/dist/input-DWANSKGb.cjs +0 -145
  462. package/dist/progress-DPtzoVV8.js +0 -175
  463. package/dist/progress-EeaoqqUs.cjs +0 -191
  464. package/dist/rich-text-editor-0mraWT5y.cjs +0 -2376
  465. package/dist/rich-text-editor-B-IkcPD0.js +0 -2874
  466. package/dist/rich-text-editor-B6jMRLzk.cjs +0 -1939
  467. package/dist/rich-text-editor-B8_oYcIR.js +0 -1730
  468. package/dist/rich-text-editor-B9UbSXNb.js +0 -1203
  469. package/dist/rich-text-editor-BYuRBNBU.js +0 -2373
  470. package/dist/rich-text-editor-Bb9pySTs.cjs +0 -2374
  471. package/dist/rich-text-editor-BcL6L3cm.cjs +0 -2374
  472. package/dist/rich-text-editor-BoVZYtTs.cjs +0 -2391
  473. package/dist/rich-text-editor-Bp3zQqMC.js +0 -2954
  474. package/dist/rich-text-editor-CMgSN_w2.js +0 -1189
  475. package/dist/rich-text-editor-CPV1lEPH.cjs +0 -1748
  476. package/dist/rich-text-editor-CeucBdIv.cjs +0 -2971
  477. package/dist/rich-text-editor-CoKqbCtu.cjs +0 -1799
  478. package/dist/rich-text-editor-Cw56T_mB.js +0 -2356
  479. package/dist/rich-text-editor-Cyt8qs2b.js +0 -1921
  480. package/dist/rich-text-editor-D6H84OcX.cjs +0 -1220
  481. package/dist/rich-text-editor-D76gD-QI.js +0 -2328
  482. package/dist/rich-text-editor-DKkokOnA.js +0 -1781
  483. package/dist/rich-text-editor-DNsdpN64.cjs +0 -2359
  484. package/dist/rich-text-editor-DfG8bCyY.js +0 -2358
  485. package/dist/rich-text-editor-Dxjw31Z4.js +0 -2341
  486. package/dist/rich-text-editor-DzP0Epmb.js +0 -2356
  487. package/dist/rich-text-editor-bRkNoeZY.cjs +0 -2891
  488. package/dist/rich-text-editor-lyYE2ZG5.cjs +0 -1207
  489. package/dist/rich-text-editor-skplNlBM.cjs +0 -2345
  490. package/dist/select-Bkbr0f-Z.cjs +0 -162
  491. package/dist/select-CvIVdX2n.js +0 -145
  492. package/dist/sidebar-CK_0ZQHj.cjs +0 -803
  493. package/dist/sidebar-CUuOvYhK.js +0 -787
  494. package/dist/sidebar-Djn5syhi.cjs +0 -786
  495. package/dist/sidebar-LluMXfam.js +0 -759
  496. package/dist/sidebar-_rT7rBMk.js +0 -787
  497. package/dist/slider-Bc5Hd0y1.js +0 -56
  498. package/dist/slider-N7hFFj6X.cjs +0 -73
  499. package/dist/tooltip-Ded96neP.cjs +0 -137
  500. package/dist/tooltip-HDOoD2-0.js +0 -120
  501. package/dist/use-audio-player-B31J-aqh.cjs +0 -187
  502. package/dist/use-audio-player-BkmEmj8Q.js +0 -185
  503. package/dist/use-audio-player-CLFTWFW1.cjs +0 -184
  504. package/dist/use-audio-player-CLLn00I6.js +0 -188
  505. package/dist/use-file-upload-BcjEo2S5.js +0 -404
  506. package/dist/use-file-upload-CRJR68Tj.cjs +0 -403
  507. package/dist/use-mobile-B0hNy_Y6.cjs +0 -4303
  508. package/dist/use-mobile-BXuYROXM.js +0 -4202
  509. package/dist/use-mobile-Bbd51ASU.cjs +0 -4392
  510. package/dist/use-mobile-Bk6CX-TC.js +0 -4359
  511. package/dist/use-mobile-BvYdisLP.js +0 -4202
  512. package/dist/use-mobile-BzuxjzNX.cjs +0 -4392
  513. package/dist/use-mobile-CG2-SdXV.cjs +0 -4235
  514. package/dist/use-mobile-CKb5pqTs.js +0 -4269
  515. package/dist/use-mobile-CYuAuGDl.js +0 -4202
  516. package/dist/use-mobile-CaENcqm-.js +0 -4508
  517. package/dist/use-mobile-CbrYgJGJ.js +0 -4203
  518. package/dist/use-mobile-Cd4xPrKq.cjs +0 -46
  519. package/dist/use-mobile-DMOvImGQ.cjs +0 -4542
  520. package/dist/use-mobile-DRB3BQgD.cjs +0 -4235
  521. package/dist/use-mobile-DZvv7QMR.js +0 -4359
  522. package/dist/use-mobile-DdI_TXam.cjs +0 -4235
  523. package/dist/use-mobile-DlceKf8a.js +0 -4359
  524. package/dist/use-mobile-DsOnow1o.cjs +0 -4236
  525. package/dist/use-mobile-Kcj6jSnK.cjs +0 -4392
  526. package/dist/use-mobile-bnKcua_i.js +0 -4202
  527. package/dist/use-mobile-j4w2Jrf1.js +0 -30
  528. package/dist/use-mobile-ncXBeE2z.cjs +0 -4235
  529. package/dist/use-rich-text-editor-DjiddBGv.js +0 -282
  530. package/dist/use-rich-text-editor-lpeswbCs.cjs +0 -281
  531. package/dist/xertica-assistant-BdiZag0h.js +0 -2187
  532. package/dist/xertica-assistant-DUBpmEgo.cjs +0 -2186
  533. package/dist/{rich-text-editor-DgF8s7xW.js → rich-text-editor-BmsjY03B.js} +26 -26
  534. package/dist/{rich-text-editor-mWoaSCE4.cjs → rich-text-editor-GS2kpTAK.cjs} +26 -26
@@ -11,7 +11,7 @@ const TogglePrimitive = require("@radix-ui/react-toggle");
11
11
  const inputOtp = require("input-otp");
12
12
  const reactSlot = require("@radix-ui/react-slot");
13
13
  const reactHookForm = require("react-hook-form");
14
- const alertDialog = require("./alert-dialog-DSKByiKZ.cjs");
14
+ const alertDialog = require("./alert-dialog-yckpaOpy.cjs");
15
15
  const reactDayPicker = require("react-day-picker");
16
16
  const DialogPrimitive = require("@radix-ui/react-dialog");
17
17
  const vaul = require("vaul");
@@ -19,12 +19,12 @@ const HoverCardPrimitive = require("@radix-ui/react-hover-card");
19
19
  const ContextMenuPrimitive = require("@radix-ui/react-context-menu");
20
20
  const MenubarPrimitive = require("@radix-ui/react-menubar");
21
21
  const cmdk = require("cmdk");
22
- const richTextEditor = require("./rich-text-editor-CeucBdIv.cjs");
22
+ const richTextEditor = require("./rich-text-editor-DbV-S7Fi.cjs");
23
23
  const card = require("./card-DJTsYhLL.cjs");
24
24
  const CollapsiblePrimitive = require("@radix-ui/react-collapsible");
25
25
  const AccordionPrimitive = require("@radix-ui/react-accordion");
26
26
  const useEmblaCarousel = require("embla-carousel-react");
27
- const googleMapsLoader = require("./google-maps-loader-Y-QkD-Li.cjs");
27
+ const googleMapsLoader = require("./google-maps-loader-BqsYL48U.cjs");
28
28
  const RechartsPrimitive = require("recharts");
29
29
  var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
30
30
  function _interopNamespaceDefault(e) {
@@ -511,26 +511,20 @@ function PaginationItem({ ...props }) {
511
511
  function PaginationLink({
512
512
  className,
513
513
  isActive,
514
- disabled,
515
514
  size = "icon",
516
- href,
517
515
  ...props
518
516
  }) {
519
517
  return /* @__PURE__ */ jsxRuntime.jsx(
520
518
  "a",
521
519
  {
522
520
  "aria-current": isActive ? "page" : void 0,
523
- "aria-disabled": disabled || void 0,
524
- tabIndex: disabled ? -1 : void 0,
525
521
  "data-slot": "pagination-link",
526
522
  "data-active": isActive,
527
- href: disabled ? void 0 : href ?? "#",
528
523
  className: button.cn(
529
524
  button.buttonVariants({
530
525
  variant: isActive ? "outline" : "ghost",
531
526
  size
532
527
  }),
533
- disabled && "pointer-events-none opacity-50",
534
528
  className
535
529
  ),
536
530
  ...props
@@ -539,7 +533,6 @@ function PaginationLink({
539
533
  }
540
534
  function PaginationPrevious({
541
535
  className,
542
- disabled,
543
536
  ...props
544
537
  }) {
545
538
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -547,7 +540,6 @@ function PaginationPrevious({
547
540
  {
548
541
  "aria-label": "Go to previous page",
549
542
  size: "default",
550
- disabled,
551
543
  className: button.cn("gap-1 px-2.5 sm:pl-2.5", className),
552
544
  ...props,
553
545
  children: [
@@ -559,7 +551,6 @@ function PaginationPrevious({
559
551
  }
560
552
  function PaginationNext({
561
553
  className,
562
- disabled,
563
554
  ...props
564
555
  }) {
565
556
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -567,7 +558,6 @@ function PaginationNext({
567
558
  {
568
559
  "aria-label": "Go to next page",
569
560
  size: "default",
570
- disabled,
571
561
  className: button.cn("gap-1 px-2.5 sm:pr-2.5", className),
572
562
  ...props,
573
563
  children: [
@@ -595,71 +585,6 @@ function PaginationEllipsis({
595
585
  }
596
586
  );
597
587
  }
598
- function usePagination({
599
- totalItems,
600
- pageSize = 10,
601
- initialPage = 1,
602
- page: controlledPage,
603
- onPageChange,
604
- siblingCount = 1
605
- }) {
606
- const [internalPage, setInternalPage] = React.useState(initialPage);
607
- const isControlled = controlledPage !== void 0;
608
- const currentPage = isControlled ? controlledPage : internalPage;
609
- const totalPages = Math.max(1, Math.ceil(totalItems / pageSize));
610
- const setPage = React.useCallback(
611
- (p) => {
612
- const clamped = Math.min(Math.max(1, p), totalPages);
613
- if (!isControlled) setInternalPage(clamped);
614
- onPageChange == null ? void 0 : onPageChange(clamped);
615
- },
616
- [isControlled, onPageChange, totalPages]
617
- );
618
- const startIndex = (currentPage - 1) * pageSize;
619
- const endIndex = Math.min(startIndex + pageSize, totalItems);
620
- const canGoPrev = currentPage > 1;
621
- const canGoNext = currentPage < totalPages;
622
- const isFirstPage = currentPage === 1;
623
- const isLastPage = currentPage === totalPages;
624
- const items = React.useMemo(() => {
625
- const pageSet = /* @__PURE__ */ new Set();
626
- pageSet.add(1);
627
- if (totalPages > 1) pageSet.add(totalPages);
628
- for (let p = Math.max(2, currentPage - siblingCount); p <= Math.min(totalPages - 1, currentPage + siblingCount); p++) {
629
- pageSet.add(p);
630
- }
631
- const sorted = Array.from(pageSet).sort((a, b) => a - b);
632
- const result = [];
633
- for (let i = 0; i < sorted.length; i++) {
634
- result.push({ type: "page", page: sorted[i] });
635
- if (i < sorted.length - 1 && sorted[i + 1] - sorted[i] > 1) {
636
- result.push({ type: "ellipsis", key: `ellipsis-${sorted[i]}` });
637
- }
638
- }
639
- return result;
640
- }, [currentPage, siblingCount, totalPages]);
641
- const goTo = React.useCallback((p) => setPage(p), [setPage]);
642
- const next = React.useCallback(() => setPage(currentPage + 1), [currentPage, setPage]);
643
- const prev = React.useCallback(() => setPage(currentPage - 1), [currentPage, setPage]);
644
- const first = React.useCallback(() => setPage(1), [setPage]);
645
- const last = React.useCallback(() => setPage(totalPages), [setPage, totalPages]);
646
- return {
647
- currentPage,
648
- totalPages,
649
- startIndex,
650
- endIndex,
651
- canGoPrev,
652
- canGoNext,
653
- isFirstPage,
654
- isLastPage,
655
- items,
656
- goTo,
657
- next,
658
- prev,
659
- first,
660
- last
661
- };
662
- }
663
588
  const toggleVariants = classVarianceAuthority.cva(
664
589
  "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
665
590
  {
@@ -2158,39 +2083,33 @@ const TimelineDescription = React__namespace.forwardRef(({ className, ...props }
2158
2083
  }
2159
2084
  ));
2160
2085
  TimelineDescription.displayName = "TimelineDescription";
2161
- function useTreeView({
2162
- data,
2163
- defaultExpanded = [],
2164
- selectedNodeId,
2165
- onNodeClick,
2166
- onNodeSelect
2167
- }) {
2168
- const [expanded, setExpanded] = React.useState(new Set(defaultExpanded));
2169
- const [internalSelectedId, setInternalSelectedId] = React.useState(void 0);
2170
- const nodeRefs = React.useRef(/* @__PURE__ */ new Map());
2171
- const isControlled = selectedNodeId !== void 0;
2172
- const effectiveSelectedId = isControlled ? selectedNodeId : internalSelectedId;
2173
- const getNodeRef = React.useCallback(
2174
- (nodeId) => (el) => {
2175
- if (el) nodeRefs.current.set(nodeId, el);
2176
- else nodeRefs.current.delete(nodeId);
2177
- },
2178
- []
2179
- );
2180
- const getVisibleNodes = React.useCallback(() => {
2181
- const result = [];
2182
- const traverse = (nodes) => {
2183
- var _a;
2184
- for (const node of nodes) {
2185
- result.push(node);
2186
- if (((_a = node.children) == null ? void 0 : _a.length) && expanded.has(node.id)) traverse(node.children);
2187
- }
2086
+ const TreeView = React__namespace.forwardRef(
2087
+ ({ className, data, onNodeClick, onNodeSelect, defaultExpanded = [], selectedNodeId, ...props }, ref) => {
2088
+ const [expanded, setExpanded] = React__namespace.useState(new Set(defaultExpanded));
2089
+ const [internalSelectedId, setInternalSelectedId] = React__namespace.useState(void 0);
2090
+ const nodeRefs = React__namespace.useRef(/* @__PURE__ */ new Map());
2091
+ const isControlled = selectedNodeId !== void 0;
2092
+ const effectiveSelectedId = isControlled ? selectedNodeId : internalSelectedId;
2093
+ const toggleExpand = (nodeId) => {
2094
+ setExpanded((prev) => {
2095
+ const next = new Set(prev);
2096
+ next.has(nodeId) ? next.delete(nodeId) : next.add(nodeId);
2097
+ return next;
2098
+ });
2188
2099
  };
2189
- traverse(data);
2190
- return result;
2191
- }, [data, expanded]);
2192
- const findParent = React.useCallback(
2193
- (nodes, targetId) => {
2100
+ const getVisibleNodes = React__namespace.useCallback(() => {
2101
+ const result = [];
2102
+ const traverse = (nodes) => {
2103
+ var _a;
2104
+ for (const node of nodes) {
2105
+ result.push(node);
2106
+ if (((_a = node.children) == null ? void 0 : _a.length) && expanded.has(node.id)) traverse(node.children);
2107
+ }
2108
+ };
2109
+ traverse(data);
2110
+ return result;
2111
+ }, [data, expanded]);
2112
+ const findParent = (nodes, targetId) => {
2194
2113
  var _a;
2195
2114
  for (const n of nodes) {
2196
2115
  if ((_a = n.children) == null ? void 0 : _a.some((c) => c.id === targetId)) return n;
@@ -2200,28 +2119,13 @@ function useTreeView({
2200
2119
  }
2201
2120
  }
2202
2121
  return null;
2203
- },
2204
- // findParent is a pure recursive function over `data` — no reactive deps needed
2205
- // eslint-disable-next-line react-hooks/exhaustive-deps
2206
- []
2207
- );
2208
- const toggleExpand = React.useCallback((nodeId) => {
2209
- setExpanded((prev) => {
2210
- const next = new Set(prev);
2211
- next.has(nodeId) ? next.delete(nodeId) : next.add(nodeId);
2212
- return next;
2213
- });
2214
- }, []);
2215
- const handleSelect = React.useCallback(
2216
- (node) => {
2122
+ };
2123
+ const handleSelect = (node) => {
2217
2124
  if (!isControlled) setInternalSelectedId(node.id);
2218
2125
  onNodeSelect == null ? void 0 : onNodeSelect(node);
2219
2126
  onNodeClick == null ? void 0 : onNodeClick(node);
2220
- },
2221
- [isControlled, onNodeClick, onNodeSelect]
2222
- );
2223
- const handleKeyDown = React.useCallback(
2224
- (e, node) => {
2127
+ };
2128
+ const handleKeyDown = (e, node) => {
2225
2129
  var _a, _b;
2226
2130
  const visibleNodes = getVisibleNodes();
2227
2131
  const idx = visibleNodes.findIndex((n) => n.id === node.id);
@@ -2274,60 +2178,26 @@ function useTreeView({
2274
2178
  if (last) focusNode(last.id);
2275
2179
  break;
2276
2180
  }
2181
+ case "Enter":
2277
2182
  case " ": {
2278
- e.preventDefault();
2279
- if (hasChildren) {
2280
- toggleExpand(node.id);
2281
- } else {
2282
- handleSelect(node);
2283
- }
2284
- break;
2285
- }
2286
- case "Enter": {
2287
2183
  e.preventDefault();
2288
2184
  if (hasChildren) toggleExpand(node.id);
2289
2185
  handleSelect(node);
2290
2186
  break;
2291
2187
  }
2292
2188
  }
2293
- },
2294
- [data, expanded, findParent, getVisibleNodes, handleSelect, toggleExpand]
2295
- );
2296
- return {
2297
- expanded,
2298
- effectiveSelectedId,
2299
- nodeRefs,
2300
- getNodeRef,
2301
- toggleExpand,
2302
- handleSelect,
2303
- handleKeyDown,
2304
- getVisibleNodes
2305
- };
2306
- }
2307
- const TreeView = React__namespace.forwardRef(
2308
- ({ className, data, onNodeClick, onNodeSelect, defaultExpanded = [], selectedNodeId, ariaLabel, ...props }, ref) => {
2309
- var _a;
2310
- const {
2311
- expanded,
2312
- effectiveSelectedId,
2313
- getNodeRef,
2314
- toggleExpand,
2315
- handleSelect,
2316
- handleKeyDown
2317
- } = useTreeView({ data, defaultExpanded, selectedNodeId, onNodeClick, onNodeSelect });
2318
- const focusableId = effectiveSelectedId ?? ((_a = data[0]) == null ? void 0 : _a.id);
2319
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: button.cn("w-full", className), role: "tree", "aria-label": ariaLabel ?? "Navegação em árvore", ...props, children: data.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
2189
+ };
2190
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: button.cn("w-full", className), role: "tree", ...props, children: data.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
2320
2191
  TreeNodeComponent,
2321
2192
  {
2322
2193
  node,
2323
2194
  level: 0,
2324
2195
  expanded,
2325
2196
  selectedId: effectiveSelectedId,
2326
- focusableId,
2327
2197
  onToggle: toggleExpand,
2328
2198
  onSelect: handleSelect,
2329
2199
  onKeyDown: handleKeyDown,
2330
- getNodeRef
2200
+ nodeRefs
2331
2201
  },
2332
2202
  node.id
2333
2203
  )) });
@@ -2339,11 +2209,10 @@ const TreeNodeComponent = ({
2339
2209
  level,
2340
2210
  expanded,
2341
2211
  selectedId,
2342
- focusableId,
2343
2212
  onToggle,
2344
2213
  onSelect,
2345
2214
  onKeyDown,
2346
- getNodeRef
2215
+ nodeRefs
2347
2216
  }) => {
2348
2217
  var _a;
2349
2218
  const hasChildren = !!((_a = node.children) == null ? void 0 : _a.length);
@@ -2353,15 +2222,19 @@ const TreeNodeComponent = ({
2353
2222
  if (hasChildren) onToggle(node.id);
2354
2223
  onSelect(node);
2355
2224
  };
2225
+ const setRef = (el) => {
2226
+ if (el) nodeRefs.current.set(node.id, el);
2227
+ else nodeRefs.current.delete(node.id);
2228
+ };
2356
2229
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { role: "none", children: [
2357
2230
  /* @__PURE__ */ jsxRuntime.jsxs(
2358
2231
  "button",
2359
2232
  {
2360
- ref: getNodeRef(node.id),
2233
+ ref: setRef,
2361
2234
  role: "treeitem",
2362
2235
  "aria-expanded": hasChildren ? isExpanded : void 0,
2363
2236
  "aria-selected": isSelected,
2364
- tabIndex: node.id === focusableId ? 0 : -1,
2237
+ tabIndex: isSelected ? 0 : -1,
2365
2238
  onClick: handleClick,
2366
2239
  onKeyDown: (e) => onKeyDown(e, node),
2367
2240
  className: button.cn(
@@ -2384,11 +2257,10 @@ const TreeNodeComponent = ({
2384
2257
  level: level + 1,
2385
2258
  expanded,
2386
2259
  selectedId,
2387
- focusableId,
2388
2260
  onToggle,
2389
2261
  onSelect,
2390
2262
  onKeyDown,
2391
- getNodeRef
2263
+ nodeRefs
2392
2264
  },
2393
2265
  child.id
2394
2266
  )) })
@@ -2661,9 +2533,9 @@ function CarouselNext({
2661
2533
  );
2662
2534
  }
2663
2535
  const StepperContext = React__namespace.createContext(void 0);
2664
- const useStepperContext = () => {
2536
+ const useStepper = () => {
2665
2537
  const context = React__namespace.useContext(StepperContext);
2666
- if (!context) throw new Error("useStepperContext must be used within a Stepper");
2538
+ if (!context) throw new Error("useStepper must be used within a Stepper");
2667
2539
  return context;
2668
2540
  };
2669
2541
  const Stepper = React__namespace.forwardRef(
@@ -2675,17 +2547,9 @@ const Stepper = React__namespace.forwardRef(
2675
2547
  ref,
2676
2548
  className: button.cn("w-full", className),
2677
2549
  ...props,
2678
- children: /* @__PURE__ */ jsxRuntime.jsx(
2679
- "div",
2680
- {
2681
- className: button.cn(
2682
- orientation === "horizontal" ? "flex items-start justify-between" : "flex flex-col gap-0"
2683
- ),
2684
- role: "list",
2685
- "aria-label": `Progresso: etapa ${currentStep} de ${totalSteps}`,
2686
- children
2687
- }
2688
- )
2550
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: button.cn(
2551
+ orientation === "horizontal" ? "flex items-start justify-between" : "flex flex-col gap-0"
2552
+ ), children })
2689
2553
  }
2690
2554
  ) });
2691
2555
  }
@@ -2693,7 +2557,7 @@ const Stepper = React__namespace.forwardRef(
2693
2557
  Stepper.displayName = "Stepper";
2694
2558
  const Step = React__namespace.forwardRef(
2695
2559
  ({ step, label, description, error = false, className, ...props }, ref) => {
2696
- const { currentStep, totalSteps, orientation } = useStepperContext();
2560
+ const { currentStep, totalSteps, orientation } = useStepper();
2697
2561
  const isActive = step === currentStep;
2698
2562
  const isCompleted = step < currentStep && !error;
2699
2563
  const isFirst = step === 1;
@@ -2707,120 +2571,54 @@ const Step = React__namespace.forwardRef(
2707
2571
  );
2708
2572
  const connectorClasses = (filled) => button.cn("transition-colors", filled ? "bg-primary" : "bg-muted");
2709
2573
  if (orientation === "vertical") {
2710
- return /* @__PURE__ */ jsxRuntime.jsxs(
2711
- "div",
2712
- {
2713
- ref,
2714
- className: button.cn("flex gap-4", className),
2715
- role: "listitem",
2716
- "aria-current": isActive ? "step" : void 0,
2717
- "aria-label": `Etapa ${step}: ${label}${isCompleted ? ", concluída" : isActive ? ", atual" : ""}`,
2718
- ...props,
2719
- children: [
2720
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
2721
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: circleClasses, children: error ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-5 w-5" }) : isCompleted ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-5 w-5" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: step }) }),
2722
- !isLast && /* @__PURE__ */ jsxRuntime.jsx("div", { className: button.cn("w-0.5 flex-1 min-h-[2rem] mt-1", connectorClasses(step < currentStep)) })
2723
- ] }),
2724
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: button.cn("pb-6", isLast && "pb-0"), children: [
2725
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: button.cn("transition-colors", isActive || error ? "text-foreground" : "text-muted-foreground"), children: label }),
2726
- description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-xs text-muted-foreground", children: description })
2727
- ] })
2728
- ]
2729
- }
2730
- );
2731
- }
2732
- return /* @__PURE__ */ jsxRuntime.jsxs(
2733
- "div",
2734
- {
2735
- ref,
2736
- className: button.cn("flex flex-1 flex-col items-center", className),
2737
- role: "listitem",
2738
- "aria-current": isActive ? "step" : void 0,
2739
- "aria-label": `Etapa ${step}: ${label}${isCompleted ? ", concluída" : isActive ? ", atual" : ""}`,
2740
- ...props,
2741
- children: [
2742
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-start", children: [
2743
- step > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: button.cn("h-0.5 flex-1 mt-[18px]", connectorClasses(step <= currentStep)) }),
2744
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: circleClasses, children: error ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-5 w-5" }) : isCompleted ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-5 w-5" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: step }) }),
2745
- step < totalSteps && /* @__PURE__ */ jsxRuntime.jsx("div", { className: button.cn("h-0.5 flex-1 mt-[18px]", connectorClasses(step < currentStep)) })
2746
- ] }),
2747
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: button.cn(
2748
- "mt-2 px-1",
2749
- isFirst && "text-left self-start",
2750
- isLast && "text-right self-end",
2751
- !isFirst && !isLast && "text-center w-full"
2752
- ), children: [
2753
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: button.cn("transition-colors", isActive || error ? "text-foreground" : "text-muted-foreground"), children: label }),
2754
- description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-xs text-muted-foreground", children: description })
2755
- ] })
2756
- ]
2757
- }
2758
- );
2574
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: button.cn("flex gap-4", className), ...props, children: [
2575
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
2576
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: circleClasses, children: error ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-5 w-5" }) : isCompleted ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-5 w-5" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: step }) }),
2577
+ !isLast && /* @__PURE__ */ jsxRuntime.jsx("div", { className: button.cn("w-0.5 flex-1 min-h-[2rem] mt-1", connectorClasses(step < currentStep)) })
2578
+ ] }),
2579
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: button.cn("pb-6", isLast && "pb-0"), children: [
2580
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: button.cn("transition-colors", isActive || error ? "text-foreground" : "text-muted-foreground"), children: label }),
2581
+ description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-xs text-muted-foreground", children: description })
2582
+ ] })
2583
+ ] });
2584
+ }
2585
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: button.cn("flex flex-1 flex-col items-center", className), ...props, children: [
2586
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-start", children: [
2587
+ step > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: button.cn("h-0.5 flex-1 mt-[18px]", connectorClasses(step <= currentStep)) }),
2588
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: circleClasses, children: error ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-5 w-5" }) : isCompleted ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-5 w-5" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: step }) }),
2589
+ step < totalSteps && /* @__PURE__ */ jsxRuntime.jsx("div", { className: button.cn("h-0.5 flex-1 mt-[18px]", connectorClasses(step < currentStep)) })
2590
+ ] }),
2591
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: button.cn(
2592
+ "mt-2 px-1",
2593
+ isFirst && "text-left self-start",
2594
+ isLast && "text-right self-end",
2595
+ !isFirst && !isLast && "text-center w-full"
2596
+ ), children: [
2597
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: button.cn("transition-colors", isActive || error ? "text-foreground" : "text-muted-foreground"), children: label }),
2598
+ description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-xs text-muted-foreground", children: description })
2599
+ ] })
2600
+ ] });
2759
2601
  }
2760
2602
  );
2761
2603
  Step.displayName = "Step";
2762
- function useStepper({
2763
- totalSteps,
2764
- initialStep = 1,
2765
- step: controlledStep,
2766
- onStepChange,
2767
- onBeforeNext
2768
- }) {
2769
- const [internalStep, setInternalStep] = React.useState(() => Math.min(Math.max(1, initialStep), totalSteps));
2770
- const isControlled = controlledStep !== void 0;
2771
- const currentStep = isControlled ? controlledStep : internalStep;
2772
- const setStep = React.useCallback(
2773
- (s) => {
2774
- const clamped = Math.min(Math.max(1, s), totalSteps);
2775
- if (!isControlled) setInternalStep(clamped);
2776
- onStepChange == null ? void 0 : onStepChange(clamped);
2777
- },
2778
- [isControlled, onStepChange, totalSteps]
2779
- );
2780
- const isFirstStep = currentStep === 1;
2781
- const isLastStep = currentStep === totalSteps;
2782
- const canGoPrev = currentStep > 1;
2783
- const canGoNext = currentStep < totalSteps;
2784
- const next = React.useCallback(async () => {
2785
- if (!canGoNext) return;
2786
- if (onBeforeNext) {
2787
- const allowed = await onBeforeNext(currentStep);
2788
- if (!allowed) return;
2789
- }
2790
- setStep(currentStep + 1);
2791
- }, [canGoNext, currentStep, onBeforeNext, setStep]);
2792
- const prev = React.useCallback(() => {
2793
- if (!canGoPrev) return;
2794
- setStep(currentStep - 1);
2795
- }, [canGoPrev, currentStep, setStep]);
2796
- const goTo = React.useCallback((s) => setStep(s), [setStep]);
2797
- const reset = React.useCallback(() => setStep(1), [setStep]);
2798
- return {
2799
- currentStep,
2800
- totalSteps,
2801
- isFirstStep,
2802
- isLastStep,
2803
- canGoPrev,
2804
- canGoNext,
2805
- next,
2806
- prev,
2807
- goTo,
2808
- reset
2809
- };
2810
- }
2811
- function useFileUpload({
2812
- maxFiles = 1,
2813
- maxSize = 5 * 1024 * 1024,
2814
- onFilesChange,
2815
- onError,
2816
- disabled = false
2817
- } = {}) {
2818
- const [files, setFiles] = React.useState([]);
2819
- const [dragActive, setDragActive] = React.useState(false);
2820
- const [errorMessage, setErrorMessage] = React.useState(null);
2821
- const inputRef = React.useRef(null);
2822
- const handleFiles = React.useCallback(
2823
- (newFiles) => {
2604
+ const FileUpload = React__namespace.forwardRef(
2605
+ ({
2606
+ className,
2607
+ onFilesChange,
2608
+ maxFiles = 1,
2609
+ maxSize = 5 * 1024 * 1024,
2610
+ // 5MB default
2611
+ showPreview = true,
2612
+ onError,
2613
+ accept,
2614
+ disabled,
2615
+ ...props
2616
+ }, ref) => {
2617
+ const [files, setFiles] = React__namespace.useState([]);
2618
+ const [dragActive, setDragActive] = React__namespace.useState(false);
2619
+ const [errorMessage, setErrorMessage] = React__namespace.useState(null);
2620
+ const inputRef = React__namespace.useRef(null);
2621
+ const handleFiles = (newFiles) => {
2824
2622
  if (!newFiles) return;
2825
2623
  setErrorMessage(null);
2826
2624
  const filesArray = Array.from(newFiles);
@@ -2828,107 +2626,52 @@ function useFileUpload({
2828
2626
  const validFiles = filesArray.filter((f) => f.size <= maxSize);
2829
2627
  if (oversized.length > 0) {
2830
2628
  const limitMB = (maxSize / 1024 / 1024).toFixed(0);
2831
- setErrorMessage(
2832
- `${oversized.length} file(s) exceed the ${limitMB}MB limit and were not added.`
2833
- );
2629
+ setErrorMessage(`${oversized.length} file(s) exceed the ${limitMB}MB limit and were not added.`);
2834
2630
  onError == null ? void 0 : onError(oversized, "size");
2835
2631
  }
2836
2632
  const merged = maxFiles === 1 ? validFiles.slice(0, 1) : [...files, ...validFiles].slice(0, maxFiles);
2837
2633
  const countRejected = maxFiles === 1 ? validFiles.slice(1) : [...files, ...validFiles].slice(maxFiles);
2838
2634
  if (countRejected.length > 0) {
2839
- setErrorMessage(
2840
- `Only ${maxFiles} file(s) allowed. ${countRejected.length} file(s) were not added.`
2841
- );
2635
+ setErrorMessage(`Only ${maxFiles} file(s) allowed. ${countRejected.length} file(s) were not added.`);
2842
2636
  onError == null ? void 0 : onError(countRejected, "count");
2843
2637
  }
2844
2638
  setFiles(merged);
2845
2639
  onFilesChange == null ? void 0 : onFilesChange(merged);
2846
- },
2847
- // eslint-disable-next-line react-hooks/exhaustive-deps
2848
- [files, maxFiles, maxSize, onError, onFilesChange]
2849
- );
2850
- const handleDrag = React.useCallback((e) => {
2851
- e.preventDefault();
2852
- e.stopPropagation();
2853
- if (e.type === "dragenter" || e.type === "dragover") {
2854
- setDragActive(true);
2855
- } else if (e.type === "dragleave") {
2856
- setDragActive(false);
2857
- }
2858
- }, []);
2859
- const handleDrop = React.useCallback(
2860
- (e) => {
2640
+ };
2641
+ const handleDrag = (e) => {
2642
+ e.preventDefault();
2643
+ e.stopPropagation();
2644
+ if (e.type === "dragenter" || e.type === "dragover") {
2645
+ setDragActive(true);
2646
+ } else if (e.type === "dragleave") {
2647
+ setDragActive(false);
2648
+ }
2649
+ };
2650
+ const handleDrop = (e) => {
2861
2651
  e.preventDefault();
2862
2652
  e.stopPropagation();
2863
2653
  setDragActive(false);
2864
2654
  if (disabled) return;
2865
2655
  handleFiles(e.dataTransfer.files);
2866
- },
2867
- [disabled, handleFiles]
2868
- );
2869
- const handleChange = React.useCallback(
2870
- (e) => {
2656
+ };
2657
+ const handleChange = (e) => {
2871
2658
  e.preventDefault();
2872
2659
  if (disabled) return;
2873
2660
  handleFiles(e.target.files);
2874
- },
2875
- [disabled, handleFiles]
2876
- );
2877
- const removeFile = React.useCallback(
2878
- (index) => {
2879
- setFiles((prev) => {
2880
- const updated = prev.filter((_, i) => i !== index);
2881
- onFilesChange == null ? void 0 : onFilesChange(updated);
2882
- if (updated.length === 0) setErrorMessage(null);
2883
- return updated;
2884
- });
2885
- },
2886
- [onFilesChange]
2887
- );
2888
- const openFileDialog = React.useCallback(() => {
2889
- var _a;
2890
- if (!disabled) {
2891
- setErrorMessage(null);
2892
- (_a = inputRef.current) == null ? void 0 : _a.click();
2893
- }
2894
- }, [disabled]);
2895
- return {
2896
- files,
2897
- dragActive,
2898
- errorMessage,
2899
- inputRef,
2900
- handleFiles,
2901
- handleDrag,
2902
- handleDrop,
2903
- handleChange,
2904
- removeFile,
2905
- openFileDialog
2906
- };
2907
- }
2908
- const FileUpload = React__namespace.forwardRef(
2909
- ({
2910
- className,
2911
- onFilesChange,
2912
- maxFiles = 1,
2913
- maxSize = 5 * 1024 * 1024,
2914
- // 5MB default
2915
- showPreview = true,
2916
- onError,
2917
- accept,
2918
- disabled,
2919
- ...props
2920
- }, ref) => {
2921
- const {
2922
- files,
2923
- dragActive,
2924
- errorMessage,
2925
- inputRef,
2926
- handleDrag,
2927
- handleDrop,
2928
- handleChange,
2929
- removeFile,
2930
- openFileDialog
2931
- } = useFileUpload({ maxFiles, maxSize, onFilesChange, onError, disabled });
2661
+ };
2662
+ const removeFile = (index) => {
2663
+ const updatedFiles = files.filter((_, i) => i !== index);
2664
+ setFiles(updatedFiles);
2665
+ onFilesChange == null ? void 0 : onFilesChange(updatedFiles);
2666
+ if (updatedFiles.length === 0) setErrorMessage(null);
2667
+ };
2668
+ const openFileDialog = () => {
2669
+ var _a;
2670
+ if (!disabled) {
2671
+ setErrorMessage(null);
2672
+ (_a = inputRef.current) == null ? void 0 : _a.click();
2673
+ }
2674
+ };
2932
2675
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: button.cn("w-full", className), children: [
2933
2676
  /* @__PURE__ */ jsxRuntime.jsxs(
2934
2677
  "div",
@@ -3206,7 +2949,7 @@ const Search = React__namespace.forwardRef(
3206
2949
  }
3207
2950
  );
3208
2951
  Search.displayName = "Search";
3209
- const __vite_import_meta_env__ = { "BASE_URL": "/", "DEV": false, "MODE": "production", "PROD": true, "SSR": false, "VITE_GEMINI_API_KEY": "AIzaSyBnoWKe4LjQzlIklON_dVXMXNUl2gvfH6U", "VITE_GOOGLE_MAPS_API_KEY": "AIzaSyCj19NndSgZOb8057q24UbJtSsfVJiyVdo" };
2952
+ const __vite_import_meta_env__ = { "BASE_URL": "/", "DEV": false, "MODE": "production", "PROD": true, "SSR": false };
3210
2953
  const RouteMapContent = React.forwardRef(
3211
2954
  ({ apiKey, ...props }, ref) => {
3212
2955
  const { isLoaded, loadError, load } = googleMapsLoader.useGoogleMapsLoader();
@@ -3383,7 +3126,7 @@ RouteMapContent.displayName = "RouteMapContent";
3383
3126
  const RouteMap = React.forwardRef(
3384
3127
  (props, ref) => {
3385
3128
  const { isLoaded, loadError } = googleMapsLoader.useGoogleMapsLoader();
3386
- const effectiveApiKey = props.apiKey || typeof { url: typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("AssistantChart-Bdd44uBn.cjs", document.baseURI).href } !== "undefined" && __vite_import_meta_env__ && "AIzaSyCj19NndSgZOb8057q24UbJtSsfVJiyVdo" || "";
3129
+ const effectiveApiKey = props.apiKey || typeof { url: typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("AssistantChart-BAx9VQvb.cjs", document.baseURI).href } !== "undefined" && __vite_import_meta_env__ && void 0 || "";
3387
3130
  const isValidKey = effectiveApiKey && effectiveApiKey !== "YOUR_GOOGLE_MAPS_API_KEY_HERE" && effectiveApiKey.startsWith("AIza");
3388
3131
  if (isLoaded || isValidKey || loadError) {
3389
3132
  return /* @__PURE__ */ jsxRuntime.jsx(RouteMapContent, { ref, ...props, apiKey: effectiveApiKey });
@@ -3627,9 +3370,5 @@ exports.ToggleGroupItem = ToggleGroupItem;
3627
3370
  exports.TreeView = TreeView;
3628
3371
  exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle;
3629
3372
  exports.toggleVariants = toggleVariants;
3630
- exports.useFileUpload = useFileUpload;
3631
3373
  exports.useFormField = useFormField;
3632
- exports.usePagination = usePagination;
3633
3374
  exports.useStepper = useStepper;
3634
- exports.useStepperContext = useStepperContext;
3635
- exports.useTreeView = useTreeView;