xertica-ui 2.5.0 → 2.5.2

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 (536) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +56 -17
  3. package/assets/xertica-logo.svg +37 -37
  4. package/assets/xertica-x-logo.svg +20 -20
  5. package/bin/cli.ts +14 -2
  6. package/bin/generate-tokens.ts +262 -262
  7. package/bin/language-config.ts +359 -358
  8. package/components/assistant/code-block/CodeBlock.tsx +268 -268
  9. package/components/assistant/formatted-document/FormattedDocument.tsx +147 -147
  10. package/components/assistant/modern-chat-input/ModernChatInput.tsx +564 -564
  11. package/components/assistant/xertica-assistant/parts/AssistantCollapsedView.tsx +99 -99
  12. package/components/assistant/xertica-assistant/parts/AssistantConversationList.tsx +104 -104
  13. package/components/assistant/xertica-assistant/parts/AssistantDocumentEditor.tsx +81 -81
  14. package/components/assistant/xertica-assistant/parts/AssistantFeedbackDialog.tsx +88 -88
  15. package/components/assistant/xertica-assistant/parts/AssistantHeader.tsx +75 -75
  16. package/components/assistant/xertica-assistant/parts/AssistantMessageBubble.tsx +564 -564
  17. package/components/assistant/xertica-assistant/parts/AssistantTabBar.tsx +67 -67
  18. package/components/assistant/xertica-assistant/parts/AssistantWelcomeScreen.tsx +103 -103
  19. package/components/assistant/xertica-assistant/use-assistant.ts +615 -615
  20. package/components/assistant/xertica-assistant/xertica-assistant.tsx +611 -611
  21. package/components/blocks/card-patterns/ActivityCard.tsx +100 -100
  22. package/components/blocks/card-patterns/ActivityCardSkeleton.tsx +56 -56
  23. package/components/blocks/card-patterns/FeatureCardSkeleton.tsx +58 -58
  24. package/components/blocks/card-patterns/NotificationCard.tsx +140 -140
  25. package/components/blocks/card-patterns/NotificationCardSkeleton.tsx +81 -81
  26. package/components/blocks/card-patterns/ProfileCard.tsx +112 -112
  27. package/components/blocks/card-patterns/ProfileCardSkeleton.tsx +69 -69
  28. package/components/blocks/card-patterns/ProjectCard.tsx +123 -123
  29. package/components/blocks/card-patterns/ProjectCardSkeleton.tsx +67 -67
  30. package/components/blocks/card-patterns/QuickActionCardSkeleton.tsx +44 -44
  31. package/components/blocks/card-patterns/card-patterns.stories.tsx +594 -594
  32. package/components/blocks/card-patterns/index.ts +29 -29
  33. package/components/brand/language-selector/LanguageSelector.tsx +102 -102
  34. package/components/brand/language-selector/language-selector.stories.tsx +111 -111
  35. package/components/brand/language-selector/language-selector.test.tsx +101 -101
  36. package/components/brand/theme-toggle/ThemeToggle.tsx +74 -74
  37. package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
  38. package/components/index.ts +86 -86
  39. package/components/layout/sidebar/sidebar.mdx +1 -1
  40. package/components/layout/sidebar/sidebar.stories.tsx +1033 -787
  41. package/components/layout/sidebar/sidebar.tsx +338 -1
  42. package/components/media/FloatingMediaWrapper.tsx +371 -371
  43. package/components/media/audio-player/AudioPlayer.tsx +768 -768
  44. package/components/media/video-player/VideoPlayer.tsx +310 -310
  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 -78
  48. package/components/pages/home-page/home-page.mdx +53 -53
  49. package/components/pages/template-content/TemplateContent.tsx +1354 -1354
  50. package/components/pages/template-content/template-content.mdx +61 -61
  51. package/components/pages/template-page/TemplatePage.stories.tsx +32 -32
  52. package/components/pages/template-page/template-page.mdx +53 -53
  53. package/components/shared/error-boundary.stories.tsx +114 -114
  54. package/components/shared/error-boundary.tsx +150 -150
  55. package/components/shared/error-fallbacks.tsx +222 -222
  56. package/components/ui/accordion/accordion.mdx +8 -8
  57. package/components/ui/alert/alert.mdx +8 -8
  58. package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
  59. package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
  60. package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
  61. package/components/ui/avatar/avatar.mdx +8 -8
  62. package/components/ui/badge/badge.mdx +8 -8
  63. package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
  64. package/components/ui/button/button.mdx +8 -8
  65. package/components/ui/calendar/calendar.mdx +8 -8
  66. package/components/ui/card/card.mdx +8 -8
  67. package/components/ui/carousel/carousel.mdx +8 -8
  68. package/components/ui/chart/chart.mdx +8 -8
  69. package/components/ui/chart/chart.test.tsx +178 -178
  70. package/components/ui/chart/chart.tsx +2245 -2239
  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 -60
  106. package/components/ui/stats-card/stats-card.mdx +8 -8
  107. package/components/ui/stats-card/stats-card.tsx +109 -109
  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 +511 -511
  119. package/contexts/AuthContext.tsx +121 -121
  120. package/contexts/BrandColorsContext.tsx +282 -282
  121. package/contexts/LanguageContext.test.tsx +121 -121
  122. package/contexts/LanguageContext.tsx +250 -250
  123. package/contexts/theme-data.ts +391 -391
  124. package/dist/{AssistantChart-DoZCyS5r.cjs → AssistantChart-9w31gdAb.cjs} +4 -4
  125. package/dist/{AssistantChart-CldVCVDe.cjs → AssistantChart-BAudAfne.cjs} +5 -5
  126. package/dist/{AssistantChart-Bdd44uBn.cjs → AssistantChart-BAx9VQvb.cjs} +127 -388
  127. package/dist/{AssistantChart-Cu3m7RBo.js → AssistantChart-BP8upjMk.js} +5 -5
  128. package/dist/{AssistantChart-CFhDdGyU.js → AssistantChart-CVko2A1W.js} +130 -391
  129. package/dist/{AssistantChart-C_hwFRRr.js → AssistantChart-CVzmmhx4.js} +4 -4
  130. package/dist/{AudioPlayer-IAU5q5T1.cjs → AudioPlayer-1ypwE2Wh.cjs} +1 -1
  131. package/dist/{AudioPlayer-CGRUtUdN.js → AudioPlayer-DuKXrCfy.js} +1 -1
  132. package/dist/{LanguageContext-CS14yCpi.js → LanguageContext-BwhwC3G2.js} +2 -2
  133. package/dist/{LanguageContext-B_KFTCzT.cjs → LanguageContext-DvUt5jBg.cjs} +2 -2
  134. package/dist/{ThemeContext-C2EwAPDt.js → ThemeContext-BbBNoFTG.js} +2 -2
  135. package/dist/{ThemeContext-Bmod0Cg2.cjs → ThemeContext-BblcjQup.cjs} +13 -8
  136. package/dist/{ThemeContext-BWq9ACPo.js → ThemeContext-Bo-W2WZH.js} +13 -8
  137. package/dist/{ThemeContext-j5aGtPky.cjs → ThemeContext-CP3a0jxy.cjs} +193 -262
  138. package/dist/{ThemeContext-vTjumZeM.cjs → ThemeContext-Cmr8Ex8H.cjs} +2 -2
  139. package/dist/ThemeContext-CpqYShLq.cjs +324 -0
  140. package/dist/{ThemeContext-CQSo4Iwc.js → ThemeContext-D3LzacmG.js} +8 -1
  141. package/dist/ThemeContext-Du2nE1PL.js +325 -0
  142. package/dist/ThemeContext-GeEBTJ3q.cjs +1621 -0
  143. package/dist/ThemeContext-JyLK9B1o.js +1622 -0
  144. package/dist/{ThemeContext-CGk3KK0k.cjs → ThemeContext-U4dEYc6C.cjs} +8 -1
  145. package/dist/{ThemeContext-BXjrgUjW.js → ThemeContext-ept8jhXI.js} +200 -261
  146. package/dist/{VerifyEmailPage-CGIwmWrm.js → VerifyEmailPage-B31mCrMc.js} +1 -1
  147. package/dist/{VerifyEmailPage-C0c2e5n0.js → VerifyEmailPage-BE-L9mB7.js} +7 -7
  148. package/dist/{VerifyEmailPage-DSBMRHtl.js → VerifyEmailPage-BIBOKV7Z.js} +41 -36
  149. package/dist/{VerifyEmailPage-DgIid028.js → VerifyEmailPage-BJjAMUTW.js} +4 -4
  150. package/dist/{VerifyEmailPage--1Vurewl.cjs → VerifyEmailPage-BRSP-Pwt.cjs} +3 -3
  151. package/dist/{VerifyEmailPage-Cwi3kbol.cjs → VerifyEmailPage-Bae2cBXT.cjs} +7 -7
  152. package/dist/{VerifyEmailPage-De6bQjrz.cjs → VerifyEmailPage-BiRm7Nh4.cjs} +41 -36
  153. package/dist/{VerifyEmailPage-ByerOcm4.cjs → VerifyEmailPage-Bv8Ah_TK.cjs} +23 -20
  154. package/dist/VerifyEmailPage-Bvfv8HVQ.js +3214 -0
  155. package/dist/{VerifyEmailPage-BComraR7.cjs → VerifyEmailPage-CR7kb5df.cjs} +22 -12
  156. package/dist/{VerifyEmailPage-CpqqpLpo.cjs → VerifyEmailPage-C_Zk6Gen.cjs} +1 -1
  157. package/dist/{VerifyEmailPage-MTD7AG1Z.js → VerifyEmailPage-C_ihbcth.js} +4 -4
  158. package/dist/{VerifyEmailPage-1WwWczAn.js → VerifyEmailPage-CbgjOF0v.js} +22 -12
  159. package/dist/{VerifyEmailPage-DvMLZgFt.js → VerifyEmailPage-CdYPSJoO.js} +1 -1
  160. package/dist/{VerifyEmailPage-By3Jf__L.cjs → VerifyEmailPage-CkBYfsNy.cjs} +4 -4
  161. package/dist/{VerifyEmailPage-CJLz3jrn.js → VerifyEmailPage-Cyl55sJb.js} +23 -20
  162. package/dist/VerifyEmailPage-D-FRj5TU.cjs +3213 -0
  163. package/dist/{VerifyEmailPage-B4peJjAT.cjs → VerifyEmailPage-DF2ilhum.cjs} +334 -356
  164. package/dist/{VerifyEmailPage-CYXtbKi3.cjs → VerifyEmailPage-DMBh4NM9.cjs} +1 -1
  165. package/dist/{VerifyEmailPage-CgMxRb4z.js → VerifyEmailPage-DTtFfC-J.js} +3 -3
  166. package/dist/{VerifyEmailPage-CFLMls1p.cjs → VerifyEmailPage-Dt7zgA4w.cjs} +4 -4
  167. package/dist/{VerifyEmailPage-C5TNQTBa.js → VerifyEmailPage-EhudUdqF.js} +343 -355
  168. package/dist/{VerifyEmailPage-DGhuIqkb.js → VerifyEmailPage-X14vhdyl.js} +4 -4
  169. package/dist/VerifyEmailPage-hdB8JQGv.cjs +3213 -0
  170. package/dist/{VerifyEmailPage-Bp1XXl3H.cjs → VerifyEmailPage-u_Dn7t1U.cjs} +4 -4
  171. package/dist/VerifyEmailPage-vYHbYK3q.js +3214 -0
  172. package/dist/{XerticaProvider-CBGc4EMA.cjs → XerticaProvider-AChwphCO.cjs} +4 -4
  173. package/dist/{XerticaProvider-BIrqfZ-i.cjs → XerticaProvider-AbWlr7Af.cjs} +8 -11
  174. package/dist/{XerticaProvider-D-yNhF94.cjs → XerticaProvider-B8CaV7xu.cjs} +1 -1
  175. package/dist/{XerticaProvider-CEoWMTxu.js → XerticaProvider-BITjgC5p.js} +2 -2
  176. package/dist/{XerticaProvider-CllrbMEJ.cjs → XerticaProvider-By8q3Roe.cjs} +2 -2
  177. package/dist/{XerticaProvider-C1DKnvLh.js → XerticaProvider-CUYJZc32.js} +4 -4
  178. package/dist/{XerticaProvider-ET0ihewn.cjs → XerticaProvider-CW9hpCdF.cjs} +2 -2
  179. package/dist/{XerticaProvider-Dt5HEzbQ.js → XerticaProvider-CWgby5mY.js} +10 -10
  180. package/dist/XerticaProvider-CWs6EwNa.js +49 -0
  181. package/dist/XerticaProvider-CjQAQPcn.cjs +48 -0
  182. package/dist/XerticaProvider-D5lLumH-.js +49 -0
  183. package/dist/{XerticaProvider-DYq4JWtg.js → XerticaProvider-DQtvJU7m.js} +1 -1
  184. package/dist/XerticaProvider-qQUDop71.cjs +48 -0
  185. package/dist/{XerticaProvider-B7EVH-NF.js → XerticaProvider-siSt9uG2.js} +2 -2
  186. package/dist/{XerticaXLogo-Zw2B276b.cjs → XerticaXLogo-8TTzBjHw.cjs} +1 -1
  187. package/dist/{XerticaXLogo-B7xQ5dhi.js → XerticaXLogo-BWaag64t.js} +1 -1
  188. package/dist/{XerticaXLogo-DZbo4vOE.js → XerticaXLogo-CFuIlYFH.js} +12 -12
  189. package/dist/{XerticaXLogo-bvZSgwGF.cjs → XerticaXLogo-CU-U-GP4.cjs} +7 -13
  190. package/dist/XerticaXLogo-ChryA6xj.js +252 -0
  191. package/dist/{XerticaXLogo-CQUUjXoH.cjs → XerticaXLogo-CziKMQil.cjs} +8 -8
  192. package/dist/XerticaXLogo-DHz5SugF.js +252 -0
  193. package/dist/XerticaXLogo-DTee_y8X.cjs +251 -0
  194. package/dist/{XerticaXLogo-Cmsp-Eey.js → XerticaXLogo-DfUvz-lD.js} +9 -9
  195. package/dist/XerticaXLogo-kslQ8Tk_.cjs +251 -0
  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/cli.js +16 -6
  199. package/dist/components/ui/chart/chart.d.ts +7 -5
  200. package/dist/{google-maps-loader-Y-QkD-Li.cjs → google-maps-loader-BqsYL48U.cjs} +0 -5
  201. package/dist/{google-maps-loader-CTYySAun.js → google-maps-loader-t2IlYBzw.js} +0 -4
  202. package/dist/index-CkTUgOwX.js +8 -0
  203. package/dist/{index-COtD8bRW.cjs → index-D3RLKRAs.cjs} +1 -1
  204. package/dist/index.cjs.js +2 -2
  205. package/dist/index.es.js +2 -2
  206. package/dist/index.umd.js +454 -1027
  207. package/dist/layout.cjs.js +1 -1
  208. package/dist/layout.es.js +1 -1
  209. package/dist/pages.cjs.js +1 -1
  210. package/dist/pages.es.js +1 -1
  211. package/dist/{sidebar-DAaY8bRU.cjs → sidebar-B3EYhli0.cjs} +33 -24
  212. package/dist/{sidebar-nzPoVHBQ.cjs → sidebar-B9NR0lCe.cjs} +46 -41
  213. package/dist/{sidebar-CeTMuzOx.cjs → sidebar-BvF5I2Ue.cjs} +47 -128
  214. package/dist/{sidebar-q7P2Godd.cjs → sidebar-C5B_LHek.cjs} +1 -1
  215. package/dist/{sidebar-CrQDDdcz.js → sidebar-CA6_ek3f.js} +33 -24
  216. package/dist/sidebar-CLmIjgNd.cjs +1136 -0
  217. package/dist/{sidebar-BxGXsDAd.cjs → sidebar-CVUGHOS_.cjs} +8 -16
  218. package/dist/{sidebar-BViy8Eeu.js → sidebar-CmvwjnVb.js} +9 -17
  219. package/dist/{sidebar-B6SlKZYN.js → sidebar-CplprZpM.js} +49 -40
  220. package/dist/sidebar-Duermn32.js +1133 -0
  221. package/dist/{sidebar-BbVIQvlP.js → sidebar-Dz7bd3zP.js} +1 -1
  222. package/dist/{sidebar-0ocFLSks.js → sidebar-KIS0C2JH.js} +50 -127
  223. package/dist/sidebar-OTO_up7Z.js +801 -0
  224. package/dist/sidebar-zowjejT2.cjs +800 -0
  225. package/dist/{use-audio-player-nv8ZSGa1.js → use-audio-player-Bkh23vQ3.js} +3 -7
  226. package/dist/{use-audio-player-NKsWyjWu.cjs → use-audio-player-Dn1NR9xN.cjs} +3 -7
  227. package/dist/{xertica-assistant-dyP7KHM5.cjs → xertica-assistant-B1IaHXnB.cjs} +388 -529
  228. package/dist/{xertica-assistant-ciJaWqm1.js → xertica-assistant-BMqdyRVi.js} +10 -28
  229. package/dist/{xertica-assistant-V_IdW4WF.cjs → xertica-assistant-Bj3vBCq_.cjs} +9 -27
  230. package/dist/{xertica-assistant-yX1CFBBo.js → xertica-assistant-DPsESB6t.js} +390 -531
  231. package/dist/{CodeBlock-7TTgmdGG.cjs → xertica-assistant-Qp3ydksa.cjs} +51 -263
  232. package/dist/{CodeBlock-BeSt1h5P.js → xertica-assistant-gnCJdcZY.js} +7 -219
  233. package/dist/xertica-ui.css +2 -2
  234. package/docs/architecture-improvements.md +456 -456
  235. package/docs/architecture.md +312 -312
  236. package/docs/components/assistant.md +428 -428
  237. package/docs/components/branding.md +252 -252
  238. package/docs/components/card-patterns.md +447 -447
  239. package/docs/components/error-boundary.md +201 -201
  240. package/docs/components/hooks.md +432 -432
  241. package/docs/components/language-selector.md +176 -176
  242. package/docs/components/pages.md +323 -323
  243. package/docs/components/sidebar.md +331 -331
  244. package/docs/components/stats-card.md +138 -138
  245. package/docs/doc-audit.md +244 -244
  246. package/docs/getting-started.md +616 -616
  247. package/docs/guidelines.md +330 -330
  248. package/docs/i18n.md +480 -480
  249. package/docs/installation.md +268 -268
  250. package/docs/llms.md +295 -295
  251. package/docs/state-management.md +289 -289
  252. package/guidelines/Guidelines.md +409 -409
  253. package/llms-compact.txt +1 -1
  254. package/llms-full.txt +10688 -10688
  255. package/llms.txt +1 -1
  256. package/package.json +1 -1
  257. package/styles/xertica/base.css +90 -90
  258. package/styles/xertica/tokens.css +240 -240
  259. package/templates/.prettierignore +4 -4
  260. package/templates/.prettierrc +10 -10
  261. package/templates/CLAUDE.md +180 -180
  262. package/templates/package.json +2 -2
  263. package/templates/src/app/App.tsx +46 -46
  264. package/templates/src/app/components/AuthGuard.tsx +131 -131
  265. package/templates/src/features/assistant/data/mock.ts +75 -75
  266. package/templates/src/features/assistant/hooks/useAssistantConfig.ts +20 -20
  267. package/templates/src/features/assistant/index.ts +5 -5
  268. package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +70 -70
  269. package/templates/src/features/auth/ui/LoginContent.tsx +92 -92
  270. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +183 -183
  271. package/templates/src/features/auth/ui/SocialLoginButtons.tsx +78 -78
  272. package/templates/src/features/auth/ui/VerifyEmailContent.tsx +80 -80
  273. package/templates/src/features/home/data/mock.ts +41 -41
  274. package/templates/src/features/home/hooks/useFeatureCards.ts +20 -20
  275. package/templates/src/features/home/index.ts +11 -11
  276. package/templates/src/features/home/ui/HomeContent.tsx +117 -117
  277. package/templates/src/features/template/ui/CrudTemplate.tsx +112 -112
  278. package/templates/src/features/template/ui/DashboardTemplate.tsx +110 -110
  279. package/templates/src/features/template/ui/FormTemplate.tsx +117 -117
  280. package/templates/src/features/template/ui/LoginTemplate.tsx +59 -59
  281. package/templates/src/features/template/ui/TemplateContent.tsx +1322 -1322
  282. package/templates/src/i18n.ts +124 -124
  283. package/templates/src/locales/en/common.json +21 -21
  284. package/templates/src/locales/en/components/activityCard.json +10 -10
  285. package/templates/src/locales/en/components/assistant.json +119 -119
  286. package/templates/src/locales/en/components/media.json +29 -29
  287. package/templates/src/locales/en/components/notificationCard.json +5 -5
  288. package/templates/src/locales/en/components/profileCard.json +8 -8
  289. package/templates/src/locales/en/components/projectCard.json +10 -10
  290. package/templates/src/locales/en/components/sidebar.json +14 -14
  291. package/templates/src/locales/en/components/stats.json +8 -8
  292. package/templates/src/locales/en/components/team.json +14 -14
  293. package/templates/src/locales/en/errors.json +9 -9
  294. package/templates/src/locales/en/languageSelector.json +7 -7
  295. package/templates/src/locales/en/nav.json +6 -6
  296. package/templates/src/locales/en/pages/crudTemplate.json +25 -25
  297. package/templates/src/locales/en/pages/dashboardTemplate.json +20 -20
  298. package/templates/src/locales/en/pages/forgotPassword.json +10 -10
  299. package/templates/src/locales/en/pages/formTemplate.json +16 -16
  300. package/templates/src/locales/en/pages/home.json +7 -7
  301. package/templates/src/locales/en/pages/login.json +15 -15
  302. package/templates/src/locales/en/pages/loginTemplate.json +9 -9
  303. package/templates/src/locales/en/pages/resetPassword.json +18 -18
  304. package/templates/src/locales/en/pages/templates.json +317 -317
  305. package/templates/src/locales/en/pages/verifyEmail.json +12 -12
  306. package/templates/src/locales/en/themeToggle.json +6 -6
  307. package/templates/src/locales/es/common.json +21 -21
  308. package/templates/src/locales/es/components/activityCard.json +10 -10
  309. package/templates/src/locales/es/components/assistant.json +119 -119
  310. package/templates/src/locales/es/components/media.json +29 -29
  311. package/templates/src/locales/es/components/notificationCard.json +5 -5
  312. package/templates/src/locales/es/components/profileCard.json +8 -8
  313. package/templates/src/locales/es/components/projectCard.json +10 -10
  314. package/templates/src/locales/es/components/sidebar.json +14 -14
  315. package/templates/src/locales/es/components/stats.json +8 -8
  316. package/templates/src/locales/es/components/team.json +14 -14
  317. package/templates/src/locales/es/errors.json +9 -9
  318. package/templates/src/locales/es/languageSelector.json +7 -7
  319. package/templates/src/locales/es/nav.json +6 -6
  320. package/templates/src/locales/es/pages/crudTemplate.json +25 -25
  321. package/templates/src/locales/es/pages/dashboardTemplate.json +20 -20
  322. package/templates/src/locales/es/pages/forgotPassword.json +10 -10
  323. package/templates/src/locales/es/pages/formTemplate.json +16 -16
  324. package/templates/src/locales/es/pages/home.json +7 -7
  325. package/templates/src/locales/es/pages/login.json +15 -15
  326. package/templates/src/locales/es/pages/loginTemplate.json +9 -9
  327. package/templates/src/locales/es/pages/resetPassword.json +18 -18
  328. package/templates/src/locales/es/pages/templates.json +317 -317
  329. package/templates/src/locales/es/pages/verifyEmail.json +12 -12
  330. package/templates/src/locales/es/themeToggle.json +6 -6
  331. package/templates/src/locales/pt-BR/common.json +21 -21
  332. package/templates/src/locales/pt-BR/components/activityCard.json +10 -10
  333. package/templates/src/locales/pt-BR/components/assistant.json +119 -119
  334. package/templates/src/locales/pt-BR/components/media.json +29 -29
  335. package/templates/src/locales/pt-BR/components/notificationCard.json +5 -5
  336. package/templates/src/locales/pt-BR/components/profileCard.json +8 -8
  337. package/templates/src/locales/pt-BR/components/projectCard.json +10 -10
  338. package/templates/src/locales/pt-BR/components/sidebar.json +14 -14
  339. package/templates/src/locales/pt-BR/components/stats.json +8 -8
  340. package/templates/src/locales/pt-BR/components/team.json +14 -14
  341. package/templates/src/locales/pt-BR/errors.json +9 -9
  342. package/templates/src/locales/pt-BR/languageSelector.json +7 -7
  343. package/templates/src/locales/pt-BR/nav.json +6 -6
  344. package/templates/src/locales/pt-BR/pages/crudTemplate.json +25 -25
  345. package/templates/src/locales/pt-BR/pages/dashboardTemplate.json +20 -20
  346. package/templates/src/locales/pt-BR/pages/forgotPassword.json +10 -10
  347. package/templates/src/locales/pt-BR/pages/formTemplate.json +16 -16
  348. package/templates/src/locales/pt-BR/pages/home.json +7 -7
  349. package/templates/src/locales/pt-BR/pages/login.json +15 -15
  350. package/templates/src/locales/pt-BR/pages/loginTemplate.json +9 -9
  351. package/templates/src/locales/pt-BR/pages/resetPassword.json +18 -18
  352. package/templates/src/locales/pt-BR/pages/templates.json +317 -317
  353. package/templates/src/locales/pt-BR/pages/verifyEmail.json +12 -12
  354. package/templates/src/locales/pt-BR/themeToggle.json +6 -6
  355. package/templates/src/pages/AssistantPage.tsx +470 -470
  356. package/templates/src/pages/HomePage.tsx +53 -53
  357. package/templates/src/shared/error-boundary.tsx +150 -150
  358. package/templates/src/shared/error-fallbacks.tsx +222 -222
  359. package/templates/src/styles/xertica/tokens.css +240 -240
  360. package/templates/vite.config.js +20 -20
  361. package/templates/vite.config.ts +55 -55
  362. package/dist/AssistantChart-BKVtGUKF.js +0 -3383
  363. package/dist/AssistantChart-CxGjH7Qk.js +0 -3477
  364. package/dist/AssistantChart-DIpshm3i.js +0 -4784
  365. package/dist/AssistantChart-D_PTeu8P.cjs +0 -3503
  366. package/dist/AssistantChart-WeycT5Pd.cjs +0 -3551
  367. package/dist/AssistantChart-zjsy2GaZ.cjs +0 -4810
  368. package/dist/AudioPlayer-B1lt5cPl.cjs +0 -989
  369. package/dist/AudioPlayer-BZ7bibzU.cjs +0 -982
  370. package/dist/AudioPlayer-BpRPS4-1.cjs +0 -1277
  371. package/dist/AudioPlayer-C12BjQBV.cjs +0 -997
  372. package/dist/AudioPlayer-CFeV8t-5.cjs +0 -936
  373. package/dist/AudioPlayer-Coly3q5R.js +0 -1278
  374. package/dist/AudioPlayer-CySJIyvL.js +0 -937
  375. package/dist/AudioPlayer-DMcG_c7L.js +0 -990
  376. package/dist/AudioPlayer-DcFKRJE_.js +0 -998
  377. package/dist/AudioPlayer-e8LfNoqO.js +0 -983
  378. package/dist/BrandColorsContext-565dDHd5.js +0 -660
  379. package/dist/BrandColorsContext-BcJbtkqn.cjs +0 -659
  380. package/dist/CodeBlock-BgfYL_rD.cjs +0 -2094
  381. package/dist/CodeBlock-BlcqlA9M.cjs +0 -2094
  382. package/dist/CodeBlock-Bnmeu5ez.cjs +0 -2094
  383. package/dist/CodeBlock-BtfPlbAI.js +0 -2078
  384. package/dist/CodeBlock-CIySIuYr.js +0 -2078
  385. package/dist/CodeBlock-CuPtUM-7.cjs +0 -2094
  386. package/dist/CodeBlock-D6ffWXgc.js +0 -2078
  387. package/dist/CodeBlock-D8dcwbit.cjs +0 -2094
  388. package/dist/CodeBlock-DMZrFnlw.cjs +0 -2094
  389. package/dist/CodeBlock-DlBehYN8.js +0 -2078
  390. package/dist/CodeBlock-DnYNI8rQ.js +0 -2078
  391. package/dist/CodeBlock-DvKWbSnE.cjs +0 -2094
  392. package/dist/CodeBlock-DwMCfkFY.js +0 -2078
  393. package/dist/CodeBlock-Dy6CNYyj.js +0 -2078
  394. package/dist/CodeBlock-U1pPOQI7.cjs +0 -2094
  395. package/dist/CodeBlock-f_GpNhEB.js +0 -2078
  396. package/dist/CodeBlock-oB6u8nI1.js +0 -2078
  397. package/dist/CodeBlock-tZC31B73.cjs +0 -2094
  398. package/dist/FeatureCard-CxC-7C-C.cjs +0 -300
  399. package/dist/FeatureCard-DbHWCb4E.js +0 -301
  400. package/dist/ImageWithFallback-CGtidP6B.cjs +0 -4542
  401. package/dist/ImageWithFallback-lsg3pdFg.js +0 -4508
  402. package/dist/LanguageSelector-B5YfbHra.js +0 -231
  403. package/dist/LanguageSelector-D6uacAIM.cjs +0 -230
  404. package/dist/LayoutContext-B45-e9DI.cjs +0 -93
  405. package/dist/LayoutContext-BAql6ZRY.js +0 -97
  406. package/dist/LayoutContext-Bav3UMEA.js +0 -94
  407. package/dist/LayoutContext-BvK-ggDa.cjs +0 -96
  408. package/dist/ThemeContext-BoH4NLfN.js +0 -734
  409. package/dist/ThemeContext-r69W20Xg.cjs +0 -733
  410. package/dist/VerifyEmailPage-COiyNl1y.js +0 -2825
  411. package/dist/VerifyEmailPage-CqKsR2v8.js +0 -2827
  412. package/dist/VerifyEmailPage-DjQKRlUS.cjs +0 -2824
  413. package/dist/VerifyEmailPage-s-1X3LDJ.cjs +0 -2826
  414. package/dist/XerticaOrbe-KL1RBHzw.cjs +0 -1354
  415. package/dist/XerticaOrbe-zwS1p2a8.js +0 -1355
  416. package/dist/XerticaProvider-6btlAlzc.js +0 -17
  417. package/dist/XerticaProvider-BNoNOxQ5.cjs +0 -16
  418. package/dist/XerticaProvider-BlY2limY.cjs +0 -38
  419. package/dist/XerticaProvider-DDuiIcKo.js +0 -39
  420. package/dist/XerticaProvider-cI9hSs27.cjs +0 -38
  421. package/dist/XerticaProvider-hSwhNQex.js +0 -39
  422. package/dist/alert-dialog-BOje--vD.js +0 -847
  423. package/dist/alert-dialog-BtEuQqrg.cjs +0 -870
  424. package/dist/breadcrumb-CqJ7bHY5.js +0 -161
  425. package/dist/breadcrumb-m9Hb2_XN.cjs +0 -177
  426. package/dist/components/assistant/xertica-assistant/hooks/index.d.ts +0 -6
  427. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-conversations.d.ts +0 -21
  428. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-messages.d.ts +0 -49
  429. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-suggestions.d.ts +0 -16
  430. package/dist/components/blocks/audio-player/AudioPlayer.d.ts +0 -35
  431. package/dist/components/blocks/audio-player/index.d.ts +0 -1
  432. package/dist/components/blocks/document-editor/DocumentEditor.d.ts +0 -26
  433. package/dist/components/blocks/document-editor/index.d.ts +0 -1
  434. package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +0 -41
  435. package/dist/components/blocks/podcast-player/index.d.ts +0 -1
  436. package/dist/components/ui/chart/parts/chart-dashboard.d.ts +0 -113
  437. package/dist/components/ui/chart/parts/chart-metric.d.ts +0 -118
  438. package/dist/components/ui/chart/parts/chart-primitives.d.ts +0 -101
  439. package/dist/components/ui/chart/parts/chart-shared.d.ts +0 -20
  440. package/dist/components/ui/chart/parts/chart-utils.d.ts +0 -12
  441. package/dist/components/ui/chart/parts/index.d.ts +0 -5
  442. package/dist/dropdown-menu-BDB5CmQs.cjs +0 -247
  443. package/dist/dropdown-menu-DQidbKBD.js +0 -231
  444. package/dist/google-maps-loader-BFWp6VPd.js +0 -287
  445. package/dist/google-maps-loader-BKcdgFbu.cjs +0 -312
  446. package/dist/google-maps-loader-CumCNXeG.js +0 -312
  447. package/dist/google-maps-loader-eS3uQ5TA.cjs +0 -287
  448. package/dist/header-Cgy6vYPk.cjs +0 -731
  449. package/dist/header-DRlT4jgI.js +0 -715
  450. package/dist/header-Dux00SI4.cjs +0 -731
  451. package/dist/header-EkGKXPsD.js +0 -715
  452. package/dist/header-WfEywpyc.cjs +0 -731
  453. package/dist/header-tifNQn2U.js +0 -715
  454. package/dist/index-BhapVLVj.js +0 -8
  455. package/dist/index-D6fxYEY8.cjs +0 -7
  456. package/dist/index-DAIp0_HK.js +0 -8
  457. package/dist/index-DW5tYe26.js +0 -8
  458. package/dist/index-GA__GvnG.cjs +0 -7
  459. package/dist/input-2R4loU86.js +0 -127
  460. package/dist/input-DWANSKGb.cjs +0 -145
  461. package/dist/progress-DPtzoVV8.js +0 -175
  462. package/dist/progress-EeaoqqUs.cjs +0 -191
  463. package/dist/rich-text-editor-0mraWT5y.cjs +0 -2376
  464. package/dist/rich-text-editor-B-IkcPD0.js +0 -2874
  465. package/dist/rich-text-editor-B6jMRLzk.cjs +0 -1939
  466. package/dist/rich-text-editor-B8_oYcIR.js +0 -1730
  467. package/dist/rich-text-editor-B9UbSXNb.js +0 -1203
  468. package/dist/rich-text-editor-BYuRBNBU.js +0 -2373
  469. package/dist/rich-text-editor-Bb9pySTs.cjs +0 -2374
  470. package/dist/rich-text-editor-BcL6L3cm.cjs +0 -2374
  471. package/dist/rich-text-editor-BoVZYtTs.cjs +0 -2391
  472. package/dist/rich-text-editor-Bp3zQqMC.js +0 -2954
  473. package/dist/rich-text-editor-CMgSN_w2.js +0 -1189
  474. package/dist/rich-text-editor-CPV1lEPH.cjs +0 -1748
  475. package/dist/rich-text-editor-CeucBdIv.cjs +0 -2971
  476. package/dist/rich-text-editor-CoKqbCtu.cjs +0 -1799
  477. package/dist/rich-text-editor-Cw56T_mB.js +0 -2356
  478. package/dist/rich-text-editor-Cyt8qs2b.js +0 -1921
  479. package/dist/rich-text-editor-D6H84OcX.cjs +0 -1220
  480. package/dist/rich-text-editor-D76gD-QI.js +0 -2328
  481. package/dist/rich-text-editor-DKkokOnA.js +0 -1781
  482. package/dist/rich-text-editor-DNsdpN64.cjs +0 -2359
  483. package/dist/rich-text-editor-DfG8bCyY.js +0 -2358
  484. package/dist/rich-text-editor-Dxjw31Z4.js +0 -2341
  485. package/dist/rich-text-editor-DzP0Epmb.js +0 -2356
  486. package/dist/rich-text-editor-bRkNoeZY.cjs +0 -2891
  487. package/dist/rich-text-editor-lyYE2ZG5.cjs +0 -1207
  488. package/dist/rich-text-editor-skplNlBM.cjs +0 -2345
  489. package/dist/select-Bkbr0f-Z.cjs +0 -162
  490. package/dist/select-CvIVdX2n.js +0 -145
  491. package/dist/sidebar-CK_0ZQHj.cjs +0 -803
  492. package/dist/sidebar-CUuOvYhK.js +0 -787
  493. package/dist/sidebar-DQj1z3jG.cjs +0 -758
  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-CrgTb6Hs.cjs +0 -2155
  533. package/dist/xertica-assistant-DCsnQyi5.js +0 -2156
  534. package/dist/xertica-assistant-DUBpmEgo.cjs +0 -2186
  535. package/dist/{rich-text-editor-DgF8s7xW.js → rich-text-editor-BmsjY03B.js} +26 -26
  536. 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;