xertica-ui 2.5.1 → 2.5.3

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