xertica-ui 2.4.0 → 2.4.1

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 (524) hide show
  1. package/CHANGELOG.md +572 -564
  2. package/README.md +417 -417
  3. package/assets/xertica-logo.svg +37 -37
  4. package/assets/xertica-x-logo.svg +20 -20
  5. package/bin/cli.ts +1244 -1244
  6. package/bin/language-config.ts +358 -358
  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/XerticaProvider.tsx +109 -109
  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.tsx +1079 -1079
  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/forgot-password-page/ForgotPasswordPage.tsx +188 -188
  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/login-page/LoginPage.tsx +218 -218
  50. package/components/pages/reset-password-page/ResetPasswordPage.tsx +243 -243
  51. package/components/pages/template-content/TemplateContent.tsx +1354 -1354
  52. package/components/pages/template-content/template-content.mdx +61 -61
  53. package/components/pages/template-page/template-page.mdx +53 -53
  54. package/components/pages/verify-email-page/VerifyEmailPage.tsx +206 -206
  55. package/components/shared/error-boundary.stories.tsx +114 -114
  56. package/components/shared/error-boundary.tsx +150 -150
  57. package/components/shared/error-fallbacks.tsx +222 -222
  58. package/components/ui/accordion/accordion.mdx +8 -8
  59. package/components/ui/alert/alert.mdx +8 -8
  60. package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
  61. package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
  62. package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
  63. package/components/ui/avatar/avatar.mdx +8 -8
  64. package/components/ui/badge/badge.mdx +8 -8
  65. package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
  66. package/components/ui/button/button.mdx +8 -8
  67. package/components/ui/calendar/calendar.mdx +8 -8
  68. package/components/ui/card/card.mdx +8 -8
  69. package/components/ui/carousel/carousel.mdx +8 -8
  70. package/components/ui/chart/chart.mdx +8 -8
  71. package/components/ui/checkbox/checkbox.mdx +8 -8
  72. package/components/ui/collapsible/collapsible.mdx +8 -8
  73. package/components/ui/command/command.mdx +8 -8
  74. package/components/ui/context-menu/context-menu.mdx +8 -8
  75. package/components/ui/dialog/dialog.mdx +8 -8
  76. package/components/ui/drawer/drawer.mdx +8 -8
  77. package/components/ui/dropdown-menu/dropdown-menu.mdx +8 -8
  78. package/components/ui/empty/empty.mdx +8 -8
  79. package/components/ui/file-upload/file-upload.mdx +8 -8
  80. package/components/ui/hover-card/hover-card.mdx +8 -8
  81. package/components/ui/input/input.mdx +8 -8
  82. package/components/ui/input-otp/input-otp.mdx +8 -8
  83. package/components/ui/label/label.mdx +8 -8
  84. package/components/ui/map/map.mdx +8 -8
  85. package/components/ui/menubar/menubar.mdx +8 -8
  86. package/components/ui/navigation-menu/navigation-menu.mdx +8 -8
  87. package/components/ui/notification-badge/notification-badge.mdx +8 -8
  88. package/components/ui/pagination/pagination.mdx +8 -8
  89. package/components/ui/popover/popover.mdx +8 -8
  90. package/components/ui/progress/progress.mdx +8 -8
  91. package/components/ui/radio-group/radio-group.mdx +8 -8
  92. package/components/ui/rating/rating.mdx +8 -8
  93. package/components/ui/resizable/resizable.mdx +8 -8
  94. package/components/ui/route-map/route-map.mdx +8 -8
  95. package/components/ui/scroll-area/scroll-area.mdx +8 -8
  96. package/components/ui/search/search.mdx +8 -8
  97. package/components/ui/select/select.mdx +8 -8
  98. package/components/ui/separator/separator.mdx +8 -8
  99. package/components/ui/sheet/sheet.mdx +8 -8
  100. package/components/ui/simple-map/simple-map.mdx +8 -8
  101. package/components/ui/skeleton/skeleton.mdx +8 -8
  102. package/components/ui/slider/slider.mdx +8 -8
  103. package/components/ui/sonner/sonner.mdx +8 -8
  104. package/components/ui/stats-card/index.ts +2 -2
  105. package/components/ui/stats-card/stats-card-skeleton.tsx +60 -60
  106. package/components/ui/stats-card/stats-card.mdx +8 -8
  107. package/components/ui/stats-card/stats-card.stories.tsx +117 -99
  108. package/components/ui/stats-card/stats-card.tsx +18 -2
  109. package/components/ui/stepper/stepper.mdx +8 -8
  110. package/components/ui/switch/switch.mdx +8 -8
  111. package/components/ui/table/table.mdx +8 -8
  112. package/components/ui/tabs/tabs.mdx +8 -8
  113. package/components/ui/textarea/textarea.mdx +8 -8
  114. package/components/ui/timeline/timeline.mdx +8 -8
  115. package/components/ui/toggle/toggle.mdx +8 -8
  116. package/components/ui/toggle-group/toggle-group.mdx +8 -8
  117. package/components/ui/tooltip/tooltip.mdx +8 -8
  118. package/components/ui/tree-view/tree-view.mdx +8 -8
  119. package/components.json +153 -533
  120. package/contexts/AuthContext.tsx +121 -121
  121. package/contexts/LanguageContext.test.tsx +121 -121
  122. package/contexts/LanguageContext.tsx +250 -250
  123. package/dist/AssistantChart-BKVtGUKF.js +3383 -0
  124. package/dist/{AssistantChart-BAx9VQvb.cjs → AssistantChart-Bdd44uBn.cjs} +388 -127
  125. package/dist/{AssistantChart-CVko2A1W.js → AssistantChart-CFhDdGyU.js} +391 -130
  126. package/dist/{AssistantChart-CVzmmhx4.js → AssistantChart-C_hwFRRr.js} +4 -4
  127. package/dist/{AssistantChart-BAudAfne.cjs → AssistantChart-CldVCVDe.cjs} +5 -5
  128. package/dist/{AssistantChart-BP8upjMk.js → AssistantChart-Cu3m7RBo.js} +5 -5
  129. package/dist/AssistantChart-CxGjH7Qk.js +3477 -0
  130. package/dist/AssistantChart-DIpshm3i.js +4784 -0
  131. package/dist/AssistantChart-D_PTeu8P.cjs +3503 -0
  132. package/dist/{AssistantChart-9w31gdAb.cjs → AssistantChart-DoZCyS5r.cjs} +4 -4
  133. package/dist/AssistantChart-WeycT5Pd.cjs +3551 -0
  134. package/dist/AssistantChart-zjsy2GaZ.cjs +4810 -0
  135. package/dist/AudioPlayer-B1lt5cPl.cjs +989 -0
  136. package/dist/AudioPlayer-BZ7bibzU.cjs +982 -0
  137. package/dist/AudioPlayer-BpRPS4-1.cjs +1277 -0
  138. package/dist/AudioPlayer-C12BjQBV.cjs +997 -0
  139. package/dist/{AudioPlayer-1ypwE2Wh.cjs → AudioPlayer-CFeV8t-5.cjs} +1 -1
  140. package/dist/{AudioPlayer-DuKXrCfy.js → AudioPlayer-CGRUtUdN.js} +1 -1
  141. package/dist/AudioPlayer-Coly3q5R.js +1278 -0
  142. package/dist/AudioPlayer-CySJIyvL.js +937 -0
  143. package/dist/AudioPlayer-DMcG_c7L.js +990 -0
  144. package/dist/AudioPlayer-DcFKRJE_.js +998 -0
  145. package/dist/AudioPlayer-IAU5q5T1.cjs +936 -0
  146. package/dist/AudioPlayer-e8LfNoqO.js +983 -0
  147. package/dist/BrandColorsContext-565dDHd5.js +660 -0
  148. package/dist/BrandColorsContext-BcJbtkqn.cjs +659 -0
  149. package/dist/{xertica-assistant-Qp3ydksa.cjs → CodeBlock-7TTgmdGG.cjs} +263 -51
  150. package/dist/{xertica-assistant-gnCJdcZY.js → CodeBlock-BeSt1h5P.js} +219 -7
  151. package/dist/CodeBlock-BgfYL_rD.cjs +2094 -0
  152. package/dist/CodeBlock-BlcqlA9M.cjs +2094 -0
  153. package/dist/CodeBlock-Bnmeu5ez.cjs +2094 -0
  154. package/dist/CodeBlock-BtfPlbAI.js +2078 -0
  155. package/dist/CodeBlock-CIySIuYr.js +2078 -0
  156. package/dist/CodeBlock-CuPtUM-7.cjs +2094 -0
  157. package/dist/CodeBlock-D6ffWXgc.js +2078 -0
  158. package/dist/CodeBlock-D8dcwbit.cjs +2094 -0
  159. package/dist/CodeBlock-DMZrFnlw.cjs +2094 -0
  160. package/dist/CodeBlock-DlBehYN8.js +2078 -0
  161. package/dist/CodeBlock-DnYNI8rQ.js +2078 -0
  162. package/dist/CodeBlock-DvKWbSnE.cjs +2094 -0
  163. package/dist/CodeBlock-DwMCfkFY.js +2078 -0
  164. package/dist/CodeBlock-Dy6CNYyj.js +2078 -0
  165. package/dist/CodeBlock-U1pPOQI7.cjs +2094 -0
  166. package/dist/CodeBlock-f_GpNhEB.js +2078 -0
  167. package/dist/CodeBlock-oB6u8nI1.js +2078 -0
  168. package/dist/CodeBlock-tZC31B73.cjs +2094 -0
  169. package/dist/FeatureCard-CxC-7C-C.cjs +300 -0
  170. package/dist/FeatureCard-DbHWCb4E.js +301 -0
  171. package/dist/ImageWithFallback-CGtidP6B.cjs +4542 -0
  172. package/dist/ImageWithFallback-lsg3pdFg.js +4508 -0
  173. package/dist/{LanguageContext-DvUt5jBg.cjs → LanguageContext-B_KFTCzT.cjs} +2 -2
  174. package/dist/{LanguageContext-BwhwC3G2.js → LanguageContext-CS14yCpi.js} +2 -2
  175. package/dist/{XerticaXLogo-DHz5SugF.js → LanguageSelector-B5YfbHra.js} +115 -136
  176. package/dist/{XerticaXLogo-DTee_y8X.cjs → LanguageSelector-D6uacAIM.cjs} +115 -136
  177. package/dist/LayoutContext-B45-e9DI.cjs +93 -0
  178. package/dist/LayoutContext-BAql6ZRY.js +97 -0
  179. package/dist/LayoutContext-Bav3UMEA.js +94 -0
  180. package/dist/LayoutContext-BvK-ggDa.cjs +96 -0
  181. package/dist/{ThemeContext-Bo-W2WZH.js → ThemeContext-BWq9ACPo.js} +8 -13
  182. package/dist/{ThemeContext-ept8jhXI.js → ThemeContext-BXjrgUjW.js} +261 -200
  183. package/dist/{ThemeContext-BblcjQup.cjs → ThemeContext-Bmod0Cg2.cjs} +8 -13
  184. package/dist/ThemeContext-BoH4NLfN.js +734 -0
  185. package/dist/{ThemeContext-BbBNoFTG.js → ThemeContext-C2EwAPDt.js} +2 -2
  186. package/dist/{ThemeContext-U4dEYc6C.cjs → ThemeContext-CGk3KK0k.cjs} +1 -8
  187. package/dist/{ThemeContext-D3LzacmG.js → ThemeContext-CQSo4Iwc.js} +1 -8
  188. package/dist/{ThemeContext-CP3a0jxy.cjs → ThemeContext-j5aGtPky.cjs} +262 -193
  189. package/dist/ThemeContext-r69W20Xg.cjs +733 -0
  190. package/dist/{ThemeContext-Cmr8Ex8H.cjs → ThemeContext-vTjumZeM.cjs} +2 -2
  191. package/dist/{VerifyEmailPage-BRSP-Pwt.cjs → VerifyEmailPage--1Vurewl.cjs} +3 -3
  192. package/dist/{VerifyEmailPage-CbgjOF0v.js → VerifyEmailPage-1WwWczAn.js} +12 -22
  193. package/dist/{VerifyEmailPage-DF2ilhum.cjs → VerifyEmailPage-B4peJjAT.cjs} +356 -334
  194. package/dist/{VerifyEmailPage-CR7kb5df.cjs → VerifyEmailPage-BComraR7.cjs} +12 -22
  195. package/dist/{VerifyEmailPage-u_Dn7t1U.cjs → VerifyEmailPage-Bp1XXl3H.cjs} +4 -4
  196. package/dist/{VerifyEmailPage-CkBYfsNy.cjs → VerifyEmailPage-By3Jf__L.cjs} +4 -4
  197. package/dist/{VerifyEmailPage-Bv8Ah_TK.cjs → VerifyEmailPage-ByerOcm4.cjs} +20 -23
  198. package/dist/{VerifyEmailPage-BE-L9mB7.js → VerifyEmailPage-C0c2e5n0.js} +7 -7
  199. package/dist/{VerifyEmailPage-EhudUdqF.js → VerifyEmailPage-C5TNQTBa.js} +355 -343
  200. package/dist/{VerifyEmailPage-Dt7zgA4w.cjs → VerifyEmailPage-CFLMls1p.cjs} +4 -4
  201. package/dist/{VerifyEmailPage-Cyl55sJb.js → VerifyEmailPage-CJLz3jrn.js} +20 -23
  202. package/dist/VerifyEmailPage-COiyNl1y.js +2825 -0
  203. package/dist/{VerifyEmailPage-DMBh4NM9.cjs → VerifyEmailPage-CYXtbKi3.cjs} +1 -1
  204. package/dist/{VerifyEmailPage-DTtFfC-J.js → VerifyEmailPage-CgMxRb4z.js} +3 -3
  205. package/dist/VerifyEmailPage-CqKsR2v8.js +2827 -0
  206. package/dist/{VerifyEmailPage-Bae2cBXT.cjs → VerifyEmailPage-Cwi3kbol.cjs} +7 -7
  207. package/dist/{VerifyEmailPage-X14vhdyl.js → VerifyEmailPage-DGhuIqkb.js} +4 -4
  208. package/dist/{VerifyEmailPage-BIBOKV7Z.js → VerifyEmailPage-DSBMRHtl.js} +36 -41
  209. package/dist/{VerifyEmailPage-D-FRj5TU.cjs → VerifyEmailPage-De6bQjrz.cjs} +36 -41
  210. package/dist/{VerifyEmailPage-BJjAMUTW.js → VerifyEmailPage-DgIid028.js} +4 -4
  211. package/dist/VerifyEmailPage-DjQKRlUS.cjs +2824 -0
  212. package/dist/{VerifyEmailPage-CdYPSJoO.js → VerifyEmailPage-DvMLZgFt.js} +1 -1
  213. package/dist/{VerifyEmailPage-C_ihbcth.js → VerifyEmailPage-MTD7AG1Z.js} +4 -4
  214. package/dist/VerifyEmailPage-s-1X3LDJ.cjs +2826 -0
  215. package/dist/XerticaOrbe-KL1RBHzw.cjs +1354 -0
  216. package/dist/XerticaOrbe-zwS1p2a8.js +1355 -0
  217. package/dist/XerticaProvider-6btlAlzc.js +17 -0
  218. package/dist/{XerticaProvider-siSt9uG2.js → XerticaProvider-B7EVH-NF.js} +2 -2
  219. package/dist/{XerticaProvider-AbWlr7Af.cjs → XerticaProvider-BIrqfZ-i.cjs} +11 -8
  220. package/dist/XerticaProvider-BNoNOxQ5.cjs +16 -0
  221. package/dist/XerticaProvider-BlY2limY.cjs +38 -0
  222. package/dist/{XerticaProvider-CWgby5mY.js → XerticaProvider-C1DKnvLh.js} +4 -4
  223. package/dist/{XerticaProvider-AChwphCO.cjs → XerticaProvider-CBGc4EMA.cjs} +4 -4
  224. package/dist/{XerticaProvider-BITjgC5p.js → XerticaProvider-CEoWMTxu.js} +2 -2
  225. package/dist/{XerticaProvider-By8q3Roe.cjs → XerticaProvider-CllrbMEJ.cjs} +2 -2
  226. package/dist/{XerticaProvider-B8CaV7xu.cjs → XerticaProvider-D-yNhF94.cjs} +1 -1
  227. package/dist/XerticaProvider-DDuiIcKo.js +39 -0
  228. package/dist/{XerticaProvider-DQtvJU7m.js → XerticaProvider-DYq4JWtg.js} +1 -1
  229. package/dist/{XerticaProvider-CWs6EwNa.js → XerticaProvider-Dt5HEzbQ.js} +10 -10
  230. package/dist/{XerticaProvider-CW9hpCdF.cjs → XerticaProvider-ET0ihewn.cjs} +2 -2
  231. package/dist/XerticaProvider-cI9hSs27.cjs +38 -0
  232. package/dist/XerticaProvider-hSwhNQex.js +39 -0
  233. package/dist/{XerticaXLogo-ChryA6xj.js → XerticaXLogo-B7xQ5dhi.js} +1 -1
  234. package/dist/{XerticaXLogo-CziKMQil.cjs → XerticaXLogo-CQUUjXoH.cjs} +8 -8
  235. package/dist/{XerticaXLogo-DfUvz-lD.js → XerticaXLogo-Cmsp-Eey.js} +9 -9
  236. package/dist/{XerticaXLogo-CFuIlYFH.js → XerticaXLogo-DZbo4vOE.js} +12 -12
  237. package/dist/{XerticaXLogo-8TTzBjHw.cjs → XerticaXLogo-Zw2B276b.cjs} +1 -1
  238. package/dist/{XerticaXLogo-kslQ8Tk_.cjs → XerticaXLogo-bvZSgwGF.cjs} +13 -7
  239. package/dist/alert-dialog-BOje--vD.js +847 -0
  240. package/dist/alert-dialog-BtEuQqrg.cjs +870 -0
  241. package/dist/{alert-dialog-yckpaOpy.cjs → alert-dialog-DSKByiKZ.cjs} +3 -3
  242. package/dist/{alert-dialog-iDe5VE5o.js → alert-dialog-s-vmNkJ_.js} +3 -3
  243. package/dist/breadcrumb-CqJ7bHY5.js +161 -0
  244. package/dist/breadcrumb-m9Hb2_XN.cjs +177 -0
  245. package/dist/components/assistant/xertica-assistant/hooks/index.d.ts +6 -0
  246. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-conversations.d.ts +21 -0
  247. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-messages.d.ts +49 -0
  248. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-suggestions.d.ts +16 -0
  249. package/dist/components/blocks/audio-player/AudioPlayer.d.ts +35 -0
  250. package/dist/components/blocks/audio-player/index.d.ts +1 -0
  251. package/dist/components/blocks/document-editor/DocumentEditor.d.ts +26 -0
  252. package/dist/components/blocks/document-editor/index.d.ts +1 -0
  253. package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +41 -0
  254. package/dist/components/blocks/podcast-player/index.d.ts +1 -0
  255. package/dist/components/ui/chart/parts/chart-dashboard.d.ts +113 -0
  256. package/dist/components/ui/chart/parts/chart-metric.d.ts +118 -0
  257. package/dist/components/ui/chart/parts/chart-primitives.d.ts +101 -0
  258. package/dist/components/ui/chart/parts/chart-shared.d.ts +20 -0
  259. package/dist/components/ui/chart/parts/chart-utils.d.ts +12 -0
  260. package/dist/components/ui/chart/parts/index.d.ts +5 -0
  261. package/dist/components/ui/stats-card/stats-card.d.ts +10 -0
  262. package/dist/dropdown-menu-BDB5CmQs.cjs +247 -0
  263. package/dist/dropdown-menu-DQidbKBD.js +231 -0
  264. package/dist/google-maps-loader-BFWp6VPd.js +287 -0
  265. package/dist/google-maps-loader-BKcdgFbu.cjs +312 -0
  266. package/dist/{google-maps-loader-t2IlYBzw.js → google-maps-loader-CTYySAun.js} +4 -0
  267. package/dist/google-maps-loader-CumCNXeG.js +312 -0
  268. package/dist/{google-maps-loader-BqsYL48U.cjs → google-maps-loader-Y-QkD-Li.cjs} +5 -0
  269. package/dist/google-maps-loader-eS3uQ5TA.cjs +287 -0
  270. package/dist/header-Cgy6vYPk.cjs +731 -0
  271. package/dist/header-DRlT4jgI.js +715 -0
  272. package/dist/header-Dux00SI4.cjs +731 -0
  273. package/dist/header-EkGKXPsD.js +715 -0
  274. package/dist/header-WfEywpyc.cjs +731 -0
  275. package/dist/header-tifNQn2U.js +715 -0
  276. package/dist/index-BhapVLVj.js +8 -0
  277. package/dist/{index-D3RLKRAs.cjs → index-COtD8bRW.cjs} +1 -1
  278. package/dist/index-D6fxYEY8.cjs +7 -0
  279. package/dist/index-DAIp0_HK.js +8 -0
  280. package/dist/index-DW5tYe26.js +8 -0
  281. package/dist/index-GA__GvnG.cjs +7 -0
  282. package/dist/index.cjs.js +2 -2
  283. package/dist/index.es.js +2 -2
  284. package/dist/index.umd.js +1043 -470
  285. package/dist/input-2R4loU86.js +127 -0
  286. package/dist/input-DWANSKGb.cjs +145 -0
  287. package/dist/pages.cjs.js +1 -1
  288. package/dist/pages.es.js +1 -1
  289. package/dist/progress-DPtzoVV8.js +175 -0
  290. package/dist/progress-EeaoqqUs.cjs +191 -0
  291. package/dist/rich-text-editor-0mraWT5y.cjs +2376 -0
  292. package/dist/rich-text-editor-B-IkcPD0.js +2874 -0
  293. package/dist/rich-text-editor-B6jMRLzk.cjs +1939 -0
  294. package/dist/rich-text-editor-B8_oYcIR.js +1730 -0
  295. package/dist/rich-text-editor-B9UbSXNb.js +1203 -0
  296. package/dist/rich-text-editor-BYuRBNBU.js +2373 -0
  297. package/dist/rich-text-editor-Bb9pySTs.cjs +2374 -0
  298. package/dist/rich-text-editor-BcL6L3cm.cjs +2374 -0
  299. package/dist/rich-text-editor-BoVZYtTs.cjs +2391 -0
  300. package/dist/rich-text-editor-Bp3zQqMC.js +2954 -0
  301. package/dist/rich-text-editor-CMgSN_w2.js +1189 -0
  302. package/dist/rich-text-editor-CPV1lEPH.cjs +1748 -0
  303. package/dist/rich-text-editor-CeucBdIv.cjs +2971 -0
  304. package/dist/rich-text-editor-CoKqbCtu.cjs +1799 -0
  305. package/dist/rich-text-editor-Cw56T_mB.js +2356 -0
  306. package/dist/rich-text-editor-Cyt8qs2b.js +1921 -0
  307. package/dist/rich-text-editor-D6H84OcX.cjs +1220 -0
  308. package/dist/rich-text-editor-D76gD-QI.js +2328 -0
  309. package/dist/rich-text-editor-DKkokOnA.js +1781 -0
  310. package/dist/rich-text-editor-DNsdpN64.cjs +2359 -0
  311. package/dist/rich-text-editor-DfG8bCyY.js +2358 -0
  312. package/dist/rich-text-editor-Dxjw31Z4.js +2341 -0
  313. package/dist/rich-text-editor-DzP0Epmb.js +2356 -0
  314. package/dist/rich-text-editor-bRkNoeZY.cjs +2891 -0
  315. package/dist/rich-text-editor-lyYE2ZG5.cjs +1207 -0
  316. package/dist/rich-text-editor-skplNlBM.cjs +2345 -0
  317. package/dist/select-Bkbr0f-Z.cjs +162 -0
  318. package/dist/select-CvIVdX2n.js +145 -0
  319. package/dist/{sidebar-CA6_ek3f.js → sidebar-B6SlKZYN.js} +40 -49
  320. package/dist/{sidebar-CmvwjnVb.js → sidebar-BViy8Eeu.js} +17 -9
  321. package/dist/{sidebar-Dz7bd3zP.js → sidebar-BbVIQvlP.js} +1 -1
  322. package/dist/{sidebar-CVUGHOS_.cjs → sidebar-BxGXsDAd.cjs} +16 -8
  323. package/dist/sidebar-CK_0ZQHj.cjs +803 -0
  324. package/dist/sidebar-CUuOvYhK.js +787 -0
  325. package/dist/{sidebar-KIS0C2JH.js → sidebar-CrQDDdcz.js} +24 -33
  326. package/dist/{sidebar-zowjejT2.cjs → sidebar-DAaY8bRU.cjs} +24 -33
  327. package/dist/{sidebar-B3EYhli0.cjs → sidebar-DQj1z3jG.cjs} +227 -269
  328. package/dist/{sidebar-B9NR0lCe.cjs → sidebar-Djn5syhi.cjs} +295 -309
  329. package/dist/{sidebar-CplprZpM.js → sidebar-LluMXfam.js} +227 -269
  330. package/dist/sidebar-_rT7rBMk.js +787 -0
  331. package/dist/{sidebar-BvF5I2Ue.cjs → sidebar-nzPoVHBQ.cjs} +41 -46
  332. package/dist/{sidebar-C5B_LHek.cjs → sidebar-q7P2Godd.cjs} +1 -1
  333. package/dist/slider-Bc5Hd0y1.js +56 -0
  334. package/dist/slider-N7hFFj6X.cjs +73 -0
  335. package/dist/tooltip-Ded96neP.cjs +137 -0
  336. package/dist/tooltip-HDOoD2-0.js +120 -0
  337. package/dist/ui.cjs.js +1 -1
  338. package/dist/ui.es.js +1 -1
  339. package/dist/use-audio-player-B31J-aqh.cjs +187 -0
  340. package/dist/use-audio-player-BkmEmj8Q.js +185 -0
  341. package/dist/use-audio-player-CLFTWFW1.cjs +184 -0
  342. package/dist/use-audio-player-CLLn00I6.js +188 -0
  343. package/dist/{use-audio-player-Dn1NR9xN.cjs → use-audio-player-NKsWyjWu.cjs} +7 -3
  344. package/dist/{use-audio-player-Bkh23vQ3.js → use-audio-player-nv8ZSGa1.js} +7 -3
  345. package/dist/use-file-upload-BcjEo2S5.js +404 -0
  346. package/dist/use-file-upload-CRJR68Tj.cjs +403 -0
  347. package/dist/use-mobile-B0hNy_Y6.cjs +4303 -0
  348. package/dist/use-mobile-BXuYROXM.js +4202 -0
  349. package/dist/use-mobile-Bbd51ASU.cjs +4392 -0
  350. package/dist/use-mobile-Bk6CX-TC.js +4359 -0
  351. package/dist/use-mobile-BvYdisLP.js +4202 -0
  352. package/dist/use-mobile-BzuxjzNX.cjs +4392 -0
  353. package/dist/use-mobile-CG2-SdXV.cjs +4235 -0
  354. package/dist/use-mobile-CKb5pqTs.js +4269 -0
  355. package/dist/use-mobile-CYuAuGDl.js +4202 -0
  356. package/dist/use-mobile-CaENcqm-.js +4508 -0
  357. package/dist/use-mobile-CbrYgJGJ.js +4203 -0
  358. package/dist/use-mobile-Cd4xPrKq.cjs +46 -0
  359. package/dist/use-mobile-DMOvImGQ.cjs +4542 -0
  360. package/dist/use-mobile-DRB3BQgD.cjs +4235 -0
  361. package/dist/use-mobile-DZvv7QMR.js +4359 -0
  362. package/dist/use-mobile-DdI_TXam.cjs +4235 -0
  363. package/dist/use-mobile-DlceKf8a.js +4359 -0
  364. package/dist/use-mobile-DsOnow1o.cjs +4236 -0
  365. package/dist/use-mobile-Kcj6jSnK.cjs +4392 -0
  366. package/dist/use-mobile-bnKcua_i.js +4202 -0
  367. package/dist/use-mobile-j4w2Jrf1.js +30 -0
  368. package/dist/use-mobile-ncXBeE2z.cjs +4235 -0
  369. package/dist/use-rich-text-editor-DjiddBGv.js +282 -0
  370. package/dist/use-rich-text-editor-lpeswbCs.cjs +281 -0
  371. package/dist/xertica-assistant-BdiZag0h.js +2187 -0
  372. package/dist/xertica-assistant-CrgTb6Hs.cjs +2155 -0
  373. package/dist/xertica-assistant-DCsnQyi5.js +2156 -0
  374. package/dist/xertica-assistant-DUBpmEgo.cjs +2186 -0
  375. package/dist/{xertica-assistant-Bj3vBCq_.cjs → xertica-assistant-V_IdW4WF.cjs} +27 -9
  376. package/dist/{xertica-assistant-BMqdyRVi.js → xertica-assistant-ciJaWqm1.js} +28 -10
  377. package/dist/{xertica-assistant-B1IaHXnB.cjs → xertica-assistant-dyP7KHM5.cjs} +533 -392
  378. package/dist/{xertica-assistant-DPsESB6t.js → xertica-assistant-yX1CFBBo.js} +535 -394
  379. package/dist/xertica-ui.css +2 -2
  380. package/docs/architecture-improvements.md +456 -456
  381. package/docs/architecture.md +312 -312
  382. package/docs/components/assistant.md +428 -428
  383. package/docs/components/branding.md +252 -252
  384. package/docs/components/card-patterns.md +447 -447
  385. package/docs/components/error-boundary.md +201 -201
  386. package/docs/components/hooks.md +432 -432
  387. package/docs/components/language-selector.md +176 -176
  388. package/docs/components/pages.md +323 -323
  389. package/docs/components/stats-card.md +20 -2
  390. package/docs/doc-audit.md +244 -244
  391. package/docs/getting-started.md +616 -616
  392. package/docs/guidelines.md +330 -330
  393. package/docs/i18n.md +480 -480
  394. package/docs/installation.md +268 -268
  395. package/docs/llms.md +295 -295
  396. package/docs/state-management.md +289 -289
  397. package/guidelines/Guidelines.md +409 -409
  398. package/llms-compact.txt +1 -1
  399. package/llms-full.txt +11553 -7133
  400. package/llms.txt +1 -1
  401. package/package.json +219 -219
  402. package/styles/xertica/base.css +90 -90
  403. package/templates/.prettierignore +4 -4
  404. package/templates/.prettierrc +10 -10
  405. package/templates/CLAUDE.md +180 -180
  406. package/templates/guidelines/Guidelines.md +577 -577
  407. package/templates/package.json +69 -69
  408. package/templates/src/app/App.tsx +46 -46
  409. package/templates/src/app/components/AuthGuard.tsx +131 -131
  410. package/templates/src/features/assistant/data/mock.ts +75 -75
  411. package/templates/src/features/assistant/hooks/useAssistantConfig.ts +20 -20
  412. package/templates/src/features/assistant/index.ts +5 -5
  413. package/templates/src/features/auth/ui/AuthPageShell.tsx +32 -32
  414. package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +70 -70
  415. package/templates/src/features/auth/ui/LoginContent.tsx +92 -92
  416. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +183 -183
  417. package/templates/src/features/auth/ui/SocialLoginButtons.tsx +78 -78
  418. package/templates/src/features/auth/ui/VerifyEmailContent.tsx +80 -80
  419. package/templates/src/features/home/data/mock.ts +41 -41
  420. package/templates/src/features/home/hooks/useFeatureCards.ts +20 -20
  421. package/templates/src/features/home/index.ts +11 -11
  422. package/templates/src/features/home/ui/HomeContent.tsx +117 -117
  423. package/templates/src/features/template/ui/CrudTemplate.tsx +112 -112
  424. package/templates/src/features/template/ui/DashboardTemplate.tsx +110 -110
  425. package/templates/src/features/template/ui/FormTemplate.tsx +117 -117
  426. package/templates/src/features/template/ui/LoginTemplate.tsx +59 -59
  427. package/templates/src/features/template/ui/TemplateContent.tsx +1322 -1322
  428. package/templates/src/i18n.ts +124 -124
  429. package/templates/src/locales/en/common.json +21 -21
  430. package/templates/src/locales/en/components/activityCard.json +10 -10
  431. package/templates/src/locales/en/components/assistant.json +119 -119
  432. package/templates/src/locales/en/components/media.json +29 -29
  433. package/templates/src/locales/en/components/notificationCard.json +5 -5
  434. package/templates/src/locales/en/components/profileCard.json +8 -8
  435. package/templates/src/locales/en/components/projectCard.json +10 -10
  436. package/templates/src/locales/en/components/sidebar.json +14 -14
  437. package/templates/src/locales/en/components/stats.json +8 -8
  438. package/templates/src/locales/en/components/team.json +14 -14
  439. package/templates/src/locales/en/errors.json +9 -9
  440. package/templates/src/locales/en/languageSelector.json +7 -7
  441. package/templates/src/locales/en/nav.json +6 -6
  442. package/templates/src/locales/en/pages/crudTemplate.json +25 -25
  443. package/templates/src/locales/en/pages/dashboardTemplate.json +20 -20
  444. package/templates/src/locales/en/pages/forgotPassword.json +10 -10
  445. package/templates/src/locales/en/pages/formTemplate.json +16 -16
  446. package/templates/src/locales/en/pages/home.json +7 -7
  447. package/templates/src/locales/en/pages/login.json +15 -15
  448. package/templates/src/locales/en/pages/loginTemplate.json +9 -9
  449. package/templates/src/locales/en/pages/resetPassword.json +18 -18
  450. package/templates/src/locales/en/pages/templates.json +317 -317
  451. package/templates/src/locales/en/pages/verifyEmail.json +12 -12
  452. package/templates/src/locales/en/themeToggle.json +6 -6
  453. package/templates/src/locales/es/common.json +21 -21
  454. package/templates/src/locales/es/components/activityCard.json +10 -10
  455. package/templates/src/locales/es/components/assistant.json +119 -119
  456. package/templates/src/locales/es/components/media.json +29 -29
  457. package/templates/src/locales/es/components/notificationCard.json +5 -5
  458. package/templates/src/locales/es/components/profileCard.json +8 -8
  459. package/templates/src/locales/es/components/projectCard.json +10 -10
  460. package/templates/src/locales/es/components/sidebar.json +14 -14
  461. package/templates/src/locales/es/components/stats.json +8 -8
  462. package/templates/src/locales/es/components/team.json +14 -14
  463. package/templates/src/locales/es/errors.json +9 -9
  464. package/templates/src/locales/es/languageSelector.json +7 -7
  465. package/templates/src/locales/es/nav.json +6 -6
  466. package/templates/src/locales/es/pages/crudTemplate.json +25 -25
  467. package/templates/src/locales/es/pages/dashboardTemplate.json +20 -20
  468. package/templates/src/locales/es/pages/forgotPassword.json +10 -10
  469. package/templates/src/locales/es/pages/formTemplate.json +16 -16
  470. package/templates/src/locales/es/pages/home.json +7 -7
  471. package/templates/src/locales/es/pages/login.json +15 -15
  472. package/templates/src/locales/es/pages/loginTemplate.json +9 -9
  473. package/templates/src/locales/es/pages/resetPassword.json +18 -18
  474. package/templates/src/locales/es/pages/templates.json +317 -317
  475. package/templates/src/locales/es/pages/verifyEmail.json +12 -12
  476. package/templates/src/locales/es/themeToggle.json +6 -6
  477. package/templates/src/locales/pt-BR/common.json +21 -21
  478. package/templates/src/locales/pt-BR/components/activityCard.json +10 -10
  479. package/templates/src/locales/pt-BR/components/assistant.json +119 -119
  480. package/templates/src/locales/pt-BR/components/media.json +29 -29
  481. package/templates/src/locales/pt-BR/components/notificationCard.json +5 -5
  482. package/templates/src/locales/pt-BR/components/profileCard.json +8 -8
  483. package/templates/src/locales/pt-BR/components/projectCard.json +10 -10
  484. package/templates/src/locales/pt-BR/components/sidebar.json +14 -14
  485. package/templates/src/locales/pt-BR/components/stats.json +8 -8
  486. package/templates/src/locales/pt-BR/components/team.json +14 -14
  487. package/templates/src/locales/pt-BR/errors.json +9 -9
  488. package/templates/src/locales/pt-BR/languageSelector.json +7 -7
  489. package/templates/src/locales/pt-BR/nav.json +6 -6
  490. package/templates/src/locales/pt-BR/pages/crudTemplate.json +25 -25
  491. package/templates/src/locales/pt-BR/pages/dashboardTemplate.json +20 -20
  492. package/templates/src/locales/pt-BR/pages/forgotPassword.json +10 -10
  493. package/templates/src/locales/pt-BR/pages/formTemplate.json +16 -16
  494. package/templates/src/locales/pt-BR/pages/home.json +7 -7
  495. package/templates/src/locales/pt-BR/pages/login.json +15 -15
  496. package/templates/src/locales/pt-BR/pages/loginTemplate.json +9 -9
  497. package/templates/src/locales/pt-BR/pages/resetPassword.json +18 -18
  498. package/templates/src/locales/pt-BR/pages/templates.json +317 -317
  499. package/templates/src/locales/pt-BR/pages/verifyEmail.json +12 -12
  500. package/templates/src/locales/pt-BR/themeToggle.json +6 -6
  501. package/templates/src/pages/AssistantPage.tsx +470 -470
  502. package/templates/src/pages/HomePage.tsx +53 -53
  503. package/templates/src/shared/error-boundary.tsx +150 -150
  504. package/templates/src/shared/error-fallbacks.tsx +222 -222
  505. package/templates/vite.config.js +20 -20
  506. package/templates/vite.config.ts +55 -55
  507. package/dist/ThemeContext-CpqYShLq.cjs +0 -324
  508. package/dist/ThemeContext-Du2nE1PL.js +0 -325
  509. package/dist/ThemeContext-GeEBTJ3q.cjs +0 -1621
  510. package/dist/ThemeContext-JyLK9B1o.js +0 -1622
  511. package/dist/VerifyEmailPage-BiRm7Nh4.cjs +0 -3213
  512. package/dist/VerifyEmailPage-Bvfv8HVQ.js +0 -3214
  513. package/dist/VerifyEmailPage-hdB8JQGv.cjs +0 -3213
  514. package/dist/VerifyEmailPage-vYHbYK3q.js +0 -3214
  515. package/dist/XerticaProvider-CUYJZc32.js +0 -49
  516. package/dist/XerticaProvider-CjQAQPcn.cjs +0 -48
  517. package/dist/XerticaProvider-D5lLumH-.js +0 -49
  518. package/dist/XerticaProvider-qQUDop71.cjs +0 -48
  519. package/dist/XerticaXLogo-BWaag64t.js +0 -252
  520. package/dist/XerticaXLogo-CU-U-GP4.cjs +0 -251
  521. package/dist/index-CkTUgOwX.js +0 -8
  522. package/dist/sidebar-OTO_up7Z.js +0 -801
  523. package/dist/{rich-text-editor-BmsjY03B.js → rich-text-editor-DgF8s7xW.js} +26 -26
  524. package/dist/{rich-text-editor-GS2kpTAK.cjs → rich-text-editor-mWoaSCE4.cjs} +26 -26
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const React = require("react");
4
+ const SelectPrimitive = require("@radix-ui/react-select");
5
+ const lucideReact = require("lucide-react");
6
+ const tooltip = require("./tooltip-Ded96neP.cjs");
7
+ function _interopNamespaceDefault(e) {
8
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
9
+ if (e) {
10
+ for (const k in e) {
11
+ if (k !== "default") {
12
+ const d = Object.getOwnPropertyDescriptor(e, k);
13
+ Object.defineProperty(n, k, d.get ? d : {
14
+ enumerable: true,
15
+ get: () => e[k]
16
+ });
17
+ }
18
+ }
19
+ }
20
+ n.default = e;
21
+ return Object.freeze(n);
22
+ }
23
+ const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
24
+ const SelectPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SelectPrimitive);
25
+ const Select = SelectPrimitive__namespace.Root;
26
+ const SelectGroup = SelectPrimitive__namespace.Group;
27
+ const SelectValue = SelectPrimitive__namespace.Value;
28
+ const SelectTrigger = React__namespace.forwardRef(({ className, children, size = "md", ...props }, ref) => {
29
+ const sizeClasses = {
30
+ sm: "h-8 px-2 py-1 text-sm",
31
+ md: "h-10 px-3 py-2 text-base",
32
+ lg: "h-12 px-4 py-3 text-base"
33
+ };
34
+ return /* @__PURE__ */ jsxRuntime.jsxs(
35
+ SelectPrimitive__namespace.Trigger,
36
+ {
37
+ ref,
38
+ "data-slot": "select-trigger",
39
+ "data-size": size,
40
+ className: tooltip.cn(
41
+ "flex w-full items-center justify-between gap-2 bg-background rounded-[var(--radius)] border border-border transition-colors outline-none whitespace-nowrap text-foreground",
42
+ "data-[placeholder]:text-muted-foreground",
43
+ "focus:ring-2 focus:ring-primary focus:border-transparent",
44
+ "disabled:cursor-not-allowed disabled:opacity-50",
45
+ sizeClasses[size],
46
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
47
+ "*:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2",
48
+ className
49
+ ),
50
+ ...props,
51
+ children: [
52
+ children,
53
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "size-4 opacity-50" }) })
54
+ ]
55
+ }
56
+ );
57
+ });
58
+ SelectTrigger.displayName = SelectPrimitive__namespace.Trigger.displayName;
59
+ const SelectScrollUpButton = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
60
+ SelectPrimitive__namespace.ScrollUpButton,
61
+ {
62
+ ref,
63
+ "data-slot": "select-scroll-up-button",
64
+ className: tooltip.cn(
65
+ "flex cursor-default items-center justify-center py-1",
66
+ className
67
+ ),
68
+ ...props,
69
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "size-4" })
70
+ }
71
+ ));
72
+ SelectScrollUpButton.displayName = SelectPrimitive__namespace.ScrollUpButton.displayName;
73
+ const SelectScrollDownButton = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
74
+ SelectPrimitive__namespace.ScrollDownButton,
75
+ {
76
+ ref,
77
+ "data-slot": "select-scroll-down-button",
78
+ className: tooltip.cn(
79
+ "flex cursor-default items-center justify-center py-1",
80
+ className
81
+ ),
82
+ ...props,
83
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "size-4" })
84
+ }
85
+ ));
86
+ SelectScrollDownButton.displayName = SelectPrimitive__namespace.ScrollDownButton.displayName;
87
+ const SelectContent = React__namespace.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
88
+ SelectPrimitive__namespace.Content,
89
+ {
90
+ ref,
91
+ "data-slot": "select-content",
92
+ className: tooltip.cn(
93
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--radius)] border border-border shadow-md",
94
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
95
+ className
96
+ ),
97
+ position,
98
+ ...props,
99
+ children: [
100
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
101
+ /* @__PURE__ */ jsxRuntime.jsx(
102
+ SelectPrimitive__namespace.Viewport,
103
+ {
104
+ className: tooltip.cn(
105
+ "p-1",
106
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
107
+ ),
108
+ children
109
+ }
110
+ ),
111
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollDownButton, {})
112
+ ]
113
+ }
114
+ ) }));
115
+ SelectContent.displayName = SelectPrimitive__namespace.Content.displayName;
116
+ const SelectLabel = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
117
+ SelectPrimitive__namespace.Label,
118
+ {
119
+ ref,
120
+ "data-slot": "select-label",
121
+ className: tooltip.cn("text-muted-foreground px-2 py-1.5 text-xs", className),
122
+ ...props
123
+ }
124
+ ));
125
+ SelectLabel.displayName = SelectPrimitive__namespace.Label.displayName;
126
+ const SelectItem = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
127
+ SelectPrimitive__namespace.Item,
128
+ {
129
+ ref,
130
+ "data-slot": "select-item",
131
+ className: tooltip.cn(
132
+ "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
133
+ className
134
+ ),
135
+ ...props,
136
+ children: [
137
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-4" }) }) }),
138
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
139
+ ]
140
+ }
141
+ ));
142
+ SelectItem.displayName = SelectPrimitive__namespace.Item.displayName;
143
+ const SelectSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
144
+ SelectPrimitive__namespace.Separator,
145
+ {
146
+ ref,
147
+ "data-slot": "select-separator",
148
+ className: tooltip.cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
149
+ ...props
150
+ }
151
+ ));
152
+ SelectSeparator.displayName = SelectPrimitive__namespace.Separator.displayName;
153
+ exports.Select = Select;
154
+ exports.SelectContent = SelectContent;
155
+ exports.SelectGroup = SelectGroup;
156
+ exports.SelectItem = SelectItem;
157
+ exports.SelectLabel = SelectLabel;
158
+ exports.SelectScrollDownButton = SelectScrollDownButton;
159
+ exports.SelectScrollUpButton = SelectScrollUpButton;
160
+ exports.SelectSeparator = SelectSeparator;
161
+ exports.SelectTrigger = SelectTrigger;
162
+ exports.SelectValue = SelectValue;
@@ -0,0 +1,145 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import * as SelectPrimitive from "@radix-ui/react-select";
4
+ import { ChevronDown, ChevronUp, Check } from "lucide-react";
5
+ import { e as cn } from "./tooltip-HDOoD2-0.js";
6
+ const Select = SelectPrimitive.Root;
7
+ const SelectGroup = SelectPrimitive.Group;
8
+ const SelectValue = SelectPrimitive.Value;
9
+ const SelectTrigger = React.forwardRef(({ className, children, size = "md", ...props }, ref) => {
10
+ const sizeClasses = {
11
+ sm: "h-8 px-2 py-1 text-sm",
12
+ md: "h-10 px-3 py-2 text-base",
13
+ lg: "h-12 px-4 py-3 text-base"
14
+ };
15
+ return /* @__PURE__ */ jsxs(
16
+ SelectPrimitive.Trigger,
17
+ {
18
+ ref,
19
+ "data-slot": "select-trigger",
20
+ "data-size": size,
21
+ className: cn(
22
+ "flex w-full items-center justify-between gap-2 bg-background rounded-[var(--radius)] border border-border transition-colors outline-none whitespace-nowrap text-foreground",
23
+ "data-[placeholder]:text-muted-foreground",
24
+ "focus:ring-2 focus:ring-primary focus:border-transparent",
25
+ "disabled:cursor-not-allowed disabled:opacity-50",
26
+ sizeClasses[size],
27
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
28
+ "*:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2",
29
+ className
30
+ ),
31
+ ...props,
32
+ children: [
33
+ children,
34
+ /* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 opacity-50" }) })
35
+ ]
36
+ }
37
+ );
38
+ });
39
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
40
+ const SelectScrollUpButton = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
41
+ SelectPrimitive.ScrollUpButton,
42
+ {
43
+ ref,
44
+ "data-slot": "select-scroll-up-button",
45
+ className: cn(
46
+ "flex cursor-default items-center justify-center py-1",
47
+ className
48
+ ),
49
+ ...props,
50
+ children: /* @__PURE__ */ jsx(ChevronUp, { className: "size-4" })
51
+ }
52
+ ));
53
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
54
+ const SelectScrollDownButton = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
55
+ SelectPrimitive.ScrollDownButton,
56
+ {
57
+ ref,
58
+ "data-slot": "select-scroll-down-button",
59
+ className: cn(
60
+ "flex cursor-default items-center justify-center py-1",
61
+ className
62
+ ),
63
+ ...props,
64
+ children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-4" })
65
+ }
66
+ ));
67
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
68
+ const SelectContent = React.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
69
+ SelectPrimitive.Content,
70
+ {
71
+ ref,
72
+ "data-slot": "select-content",
73
+ className: cn(
74
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--radius)] border border-border shadow-md",
75
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
76
+ className
77
+ ),
78
+ position,
79
+ ...props,
80
+ children: [
81
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
82
+ /* @__PURE__ */ jsx(
83
+ SelectPrimitive.Viewport,
84
+ {
85
+ className: cn(
86
+ "p-1",
87
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
88
+ ),
89
+ children
90
+ }
91
+ ),
92
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
93
+ ]
94
+ }
95
+ ) }));
96
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
97
+ const SelectLabel = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
98
+ SelectPrimitive.Label,
99
+ {
100
+ ref,
101
+ "data-slot": "select-label",
102
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
103
+ ...props
104
+ }
105
+ ));
106
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
107
+ const SelectItem = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
108
+ SelectPrimitive.Item,
109
+ {
110
+ ref,
111
+ "data-slot": "select-item",
112
+ className: cn(
113
+ "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
114
+ className
115
+ ),
116
+ ...props,
117
+ children: [
118
+ /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "size-4" }) }) }),
119
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })
120
+ ]
121
+ }
122
+ ));
123
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
124
+ const SelectSeparator = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
125
+ SelectPrimitive.Separator,
126
+ {
127
+ ref,
128
+ "data-slot": "select-separator",
129
+ className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
130
+ ...props
131
+ }
132
+ ));
133
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
134
+ export {
135
+ Select as S,
136
+ SelectContent as a,
137
+ SelectGroup as b,
138
+ SelectItem as c,
139
+ SelectLabel as d,
140
+ SelectScrollDownButton as e,
141
+ SelectScrollUpButton as f,
142
+ SelectSeparator as g,
143
+ SelectTrigger as h,
144
+ SelectValue as i
145
+ };
@@ -1,17 +1,18 @@
1
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import React__default, { createContext, useState, useEffect, useRef, useMemo, useContext } from "react";
3
- import { Menu, Settings, User, LogOut, ArrowLeft, Search, Filter, MoreVertical, ChevronRight } from "lucide-react";
4
- import { B as Button, c as cn } from "./button-C6uvh0rV.js";
5
- import { L as LanguageSelector, T as ThemeToggle, X as XerticaLogo, a as XerticaXLogo } from "./XerticaXLogo-DHz5SugF.js";
6
- import { B as Breadcrumb, d as BreadcrumbList, b as BreadcrumbItem, c as BreadcrumbLink, e as BreadcrumbPage, f as BreadcrumbSeparator } from "./breadcrumb-DIJ0X3Ot.js";
7
- import { D as DropdownMenu, n as DropdownMenuTrigger, b as DropdownMenuContent, e as DropdownMenuLabel, i as DropdownMenuSeparator, d as DropdownMenuItem, k as DropdownMenuSub, m as DropdownMenuSubTrigger, f as DropdownMenuPortal, l as DropdownMenuSubContent } from "./dropdown-menu-CFuCssWA.js";
8
- import { A as Avatar, b as AvatarImage, a as AvatarFallback } from "./avatar-Cxyofu1H.js";
9
- import { a as useOptionalLayout } from "./LayoutContext-CGEe1oPq.js";
10
- import { AnimatePresence, motion } from "framer-motion";
11
- import { useTranslation } from "react-i18next";
12
- import { I as Input, S as ScrollArea, P as Popover, c as PopoverTrigger, b as PopoverContent } from "./input-wPYg0d0P.js";
13
- import { b as TooltipProvider, T as Tooltip, c as TooltipTrigger } from "./tooltip-D-OrYnKO.js";
14
- import { C as CustomTooltipContent } from "./CustomTooltipContent-CfOfikhq.js";
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import React__default, { createContext, useState, useEffect, useRef, useMemo, useContext } from 'react';
3
+ import { Menu, Settings, User, LogOut, ArrowLeft, Search, Filter, MoreVertical, ChevronRight } from 'lucide-react';
4
+ import { B as Button, c as cn } from './button-DZHzN1Gd.js';
5
+ import { L as LanguageSelector, T as ThemeToggle, X as XerticaLogo, a as XerticaXLogo } from './XerticaXLogo-DZbo4vOE.js';
6
+ import { B as Breadcrumb, d as BreadcrumbList, b as BreadcrumbItem, c as BreadcrumbLink, e as BreadcrumbPage, f as BreadcrumbSeparator } from './breadcrumb-ifNsA7Zl.js';
7
+ import { D as DropdownMenu, n as DropdownMenuTrigger, b as DropdownMenuContent, e as DropdownMenuLabel, i as DropdownMenuSeparator, d as DropdownMenuItem, k as DropdownMenuSub, m as DropdownMenuSubTrigger, f as DropdownMenuPortal, l as DropdownMenuSubContent } from './dropdown-menu-Dn_eV2Xb.js';
8
+ import { A as Avatar, b as AvatarImage, a as AvatarFallback } from './avatar-3kO2Anrp.js';
9
+ import { a as useOptionalLayout } from './LayoutContext-DNl1xSoX.js';
10
+ import { AnimatePresence, motion } from 'framer-motion';
11
+ import { useTranslation } from 'react-i18next';
12
+ import { I as Input, S as ScrollArea, P as Popover, c as PopoverTrigger, b as PopoverContent } from './input-cc-PTD4R.js';
13
+ import { b as TooltipProvider, T as Tooltip, c as TooltipTrigger } from './tooltip-RtbSmPYJ.js';
14
+ import { C as CustomTooltipContent } from './CustomTooltipContent-CNbVB2NS.js';
15
+
15
16
  function Header({
16
17
  title,
17
18
  breadcrumbs,
@@ -27,9 +28,8 @@ function Header({
27
28
  renderLink,
28
29
  breadcrumbSlot
29
30
  }) {
30
- var _a;
31
31
  const layout = useOptionalLayout();
32
- const toggleSidebar = (layout == null ? void 0 : layout.toggleSidebar) ?? (() => {
32
+ const toggleSidebar = layout?.toggleSidebar ?? (() => {
33
33
  });
34
34
  return /* @__PURE__ */ jsx(
35
35
  "header",
@@ -69,7 +69,7 @@ function Header({
69
69
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 shrink-0 ml-4", children: [
70
70
  showLanguageSelector && /* @__PURE__ */ jsx(LanguageSelector, { variant: "minimal", showIcon: false, className: "hidden sm:flex" }),
71
71
  showThemeToggle && /* @__PURE__ */ jsx(ThemeToggle, { className: "hover:bg-accent" }),
72
- actions == null ? void 0 : actions.map((action) => /* @__PURE__ */ jsxs(
72
+ actions?.map((action) => /* @__PURE__ */ jsxs(
73
73
  Button,
74
74
  {
75
75
  variant: "ghost",
@@ -114,7 +114,7 @@ function Header({
114
114
  /* @__PURE__ */ jsx("p", { className: "text-xs leading-none text-muted-foreground", children: user.email || "user@example.com" })
115
115
  ] }) }),
116
116
  /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
117
- (_a = user.menuItems) == null ? void 0 : _a.map((item) => /* @__PURE__ */ jsxs(DropdownMenuItem, { onClick: item.onClick, className: item.className, children: [
117
+ user.menuItems?.map((item) => /* @__PURE__ */ jsxs(DropdownMenuItem, { onClick: item.onClick, className: item.className, children: [
118
118
  item.icon && /* @__PURE__ */ jsx("span", { className: "mr-2", children: item.icon }),
119
119
  item.label
120
120
  ] }, item.id)),
@@ -153,6 +153,7 @@ function Header({
153
153
  }
154
154
  );
155
155
  }
156
+
156
157
  const SidebarContext = createContext(null);
157
158
  function useSidebarContext() {
158
159
  const ctx = useContext(SidebarContext);
@@ -173,9 +174,9 @@ function SidebarRoot({
173
174
  const layoutContext = useOptionalLayout();
174
175
  const [localExpanded, setLocalExpanded] = useState(false);
175
176
  const [isMobileViewport, setIsMobileViewport] = useState(false);
176
- const expanded = expandedProp !== void 0 ? expandedProp : (layoutContext == null ? void 0 : layoutContext.sidebarExpanded) ?? localExpanded;
177
- const onToggle = onToggleProp || (layoutContext == null ? void 0 : layoutContext.toggleSidebar) || (() => setLocalExpanded((prev) => !prev));
178
- const width = widthProp !== void 0 ? widthProp : (layoutContext == null ? void 0 : layoutContext.sidebarWidth) ?? 280;
177
+ const expanded = expandedProp !== void 0 ? expandedProp : layoutContext?.sidebarExpanded ?? localExpanded;
178
+ const onToggle = onToggleProp || layoutContext?.toggleSidebar || (() => setLocalExpanded((prev) => !prev));
179
+ const width = widthProp !== void 0 ? widthProp : layoutContext?.sidebarWidth ?? 280;
179
180
  const navigate = navigateProp || ((path) => {
180
181
  if (typeof window !== "undefined") window.location.href = path;
181
182
  });
@@ -322,9 +323,8 @@ function SidebarNav({
322
323
  action.variant === "destructive" ? "text-destructive focus:text-destructive" : ""
323
324
  ),
324
325
  onClick: (e) => {
325
- var _a;
326
326
  e.stopPropagation();
327
- (_a = action.onClick) == null ? void 0 : _a.call(action, null);
327
+ action.onClick?.(null);
328
328
  },
329
329
  children: [
330
330
  Icon && /* @__PURE__ */ jsx(Icon, { className: "h-4 w-4 flex-shrink-0" }),
@@ -563,14 +563,13 @@ function SidebarSearch({
563
563
  fixedArea,
564
564
  search
565
565
  }) {
566
- var _a, _b;
567
566
  const { expanded } = useSidebarContext();
568
567
  const { t } = useTranslation();
569
568
  const [isFilterOpen, setIsFilterOpen] = useState(false);
570
569
  if (!(fixedArea && fixedArea.show || search && search.show)) return null;
571
570
  return /* @__PURE__ */ jsxs("div", { className: "flex-shrink-0 px-4 pb-4 space-y-4 border-b border-sidebar-border/30 mb-2", children: [
572
- (fixedArea == null ? void 0 : fixedArea.show) && fixedArea.content && expanded && /* @__PURE__ */ jsx("div", { className: "animate-in fade-in slide-in-from-top-1 duration-300", children: fixedArea.content }),
573
- (search == null ? void 0 : search.show) && expanded && /* @__PURE__ */ jsxs(Fragment, { children: [
571
+ fixedArea?.show && fixedArea.content && expanded && /* @__PURE__ */ jsx("div", { className: "animate-in fade-in slide-in-from-top-1 duration-300", children: fixedArea.content }),
572
+ search?.show && expanded && /* @__PURE__ */ jsxs(Fragment, { children: [
574
573
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
575
574
  /* @__PURE__ */ jsxs("div", { className: "relative flex-1", children: [
576
575
  /* @__PURE__ */ jsx(Search, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-sidebar-foreground/50" }),
@@ -581,15 +580,12 @@ function SidebarSearch({
581
580
  placeholder: search.placeholder || t("sidebar.searchPlaceholder"),
582
581
  "aria-label": search.placeholder || t("sidebar.searchPlaceholder"),
583
582
  value: search.value,
584
- onChange: (e) => {
585
- var _a2;
586
- return (_a2 = search.onChange) == null ? void 0 : _a2.call(search, e.target.value);
587
- },
583
+ onChange: (e) => search.onChange?.(e.target.value),
588
584
  className: "w-full h-9 bg-sidebar-foreground/10 border-sidebar-border text-sidebar-foreground placeholder:text-sidebar-foreground/50 pl-9 focus-visible:ring-1 focus-visible:ring-sidebar-foreground/30 focus-visible:ring-offset-0"
589
585
  }
590
586
  )
591
587
  ] }),
592
- ((_a = search.filter) == null ? void 0 : _a.show) && search.filter.content && /* @__PURE__ */ jsx(
588
+ search.filter?.show && search.filter.content && /* @__PURE__ */ jsx(
593
589
  Button,
594
590
  {
595
591
  variant: "ghost",
@@ -604,7 +600,7 @@ function SidebarSearch({
604
600
  }
605
601
  )
606
602
  ] }),
607
- /* @__PURE__ */ jsx(AnimatePresence, { children: isFilterOpen && ((_b = search.filter) == null ? void 0 : _b.show) && search.filter.content && /* @__PURE__ */ jsx(
603
+ /* @__PURE__ */ jsx(AnimatePresence, { children: isFilterOpen && search.filter?.show && search.filter.content && /* @__PURE__ */ jsx(
608
604
  motion.div,
609
605
  {
610
606
  initial: { height: 0, opacity: 0 },
@@ -616,15 +612,12 @@ function SidebarSearch({
616
612
  }
617
613
  ) })
618
614
  ] }),
619
- !expanded && ((fixedArea == null ? void 0 : fixedArea.show) || (search == null ? void 0 : search.show)) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 py-2", children: [
620
- (fixedArea == null ? void 0 : fixedArea.show) && fixedArea.icon && /* @__PURE__ */ jsxs(Tooltip, { children: [
615
+ !expanded && (fixedArea?.show || search?.show) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 py-2", children: [
616
+ fixedArea?.show && fixedArea.icon && /* @__PURE__ */ jsxs(Tooltip, { children: [
621
617
  /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
622
618
  "button",
623
619
  {
624
- onClick: () => {
625
- var _a2;
626
- return (_a2 = fixedArea.onClick) == null ? void 0 : _a2.call(fixedArea);
627
- },
620
+ onClick: () => fixedArea.onClick?.(),
628
621
  className: "h-10 w-10 flex items-center justify-center rounded-[var(--radius-button)] bg-primary text-primary-foreground shadow-sm hover:bg-primary/90 transition-all",
629
622
  "aria-label": t("assistant.newConversation"),
630
623
  children: React__default.isValidElement(fixedArea.icon) ? fixedArea.icon : /* @__PURE__ */ jsx(fixedArea.icon, { className: "h-5 w-5" })
@@ -632,7 +625,7 @@ function SidebarSearch({
632
625
  ) }),
633
626
  /* @__PURE__ */ jsx(CustomTooltipContent, { side: "right", children: t("assistant.newConversation") })
634
627
  ] }),
635
- (search == null ? void 0 : search.show) && /* @__PURE__ */ jsxs(Tooltip, { children: [
628
+ search?.show && /* @__PURE__ */ jsxs(Tooltip, { children: [
636
629
  /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
637
630
  "button",
638
631
  {
@@ -676,18 +669,18 @@ function SidebarFooter({
676
669
  className: "w-full h-10 flex items-center justify-center px-0 rounded-[var(--radius-button)] transition-all duration-200 text-sidebar-foreground/80 hover:bg-sidebar-foreground/15 hover:text-sidebar-foreground",
677
670
  "aria-label": t("sidebar.userProfile"),
678
671
  children: /* @__PURE__ */ jsxs(Avatar, { className: "w-7 h-7 flex-shrink-0", children: [
679
- /* @__PURE__ */ jsx(AvatarImage, { src: user == null ? void 0 : user.avatar, alt: (user == null ? void 0 : user.name) || "User" }),
680
- /* @__PURE__ */ jsx(AvatarFallback, { className: "bg-sidebar-foreground/15 text-sidebar-foreground text-xs", children: (user == null ? void 0 : user.name) ? user.name.charAt(0).toUpperCase() : "U" })
672
+ /* @__PURE__ */ jsx(AvatarImage, { src: user?.avatar, alt: user?.name || "User" }),
673
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "bg-sidebar-foreground/15 text-sidebar-foreground text-xs", children: user?.name ? user.name.charAt(0).toUpperCase() : "U" })
681
674
  ] })
682
675
  }
683
676
  ) }),
684
- /* @__PURE__ */ jsx(CustomTooltipContent, { side: "right", sideOffset: 0, children: /* @__PURE__ */ jsx("p", { children: (user == null ? void 0 : user.name) || t("sidebar.profile") }) })
677
+ /* @__PURE__ */ jsx(CustomTooltipContent, { side: "right", sideOffset: 0, children: /* @__PURE__ */ jsx("p", { children: user?.name || t("sidebar.profile") }) })
685
678
  ] }) : /* @__PURE__ */ jsxs("button", { className: "w-full h-10 flex items-center gap-3 px-3 justify-start rounded-[var(--radius-button)] transition-all duration-200 text-sidebar-foreground/80 hover:bg-sidebar-foreground/15 hover:text-sidebar-foreground", children: [
686
679
  /* @__PURE__ */ jsxs(Avatar, { className: "w-7 h-7 flex-shrink-0", children: [
687
- /* @__PURE__ */ jsx(AvatarImage, { src: user == null ? void 0 : user.avatar, alt: (user == null ? void 0 : user.name) || "User" }),
688
- /* @__PURE__ */ jsx(AvatarFallback, { className: "bg-sidebar-foreground/15 text-sidebar-foreground text-xs", children: (user == null ? void 0 : user.name) ? user.name.charAt(0).toUpperCase() : "U" })
680
+ /* @__PURE__ */ jsx(AvatarImage, { src: user?.avatar, alt: user?.name || "User" }),
681
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "bg-sidebar-foreground/15 text-sidebar-foreground text-xs", children: user?.name ? user.name.charAt(0).toUpperCase() : "U" })
689
682
  ] }),
690
- /* @__PURE__ */ jsx("span", { className: "text-sidebar-foreground truncate", children: (user == null ? void 0 : user.name) || t("sidebar.profile") })
683
+ /* @__PURE__ */ jsx("span", { className: "text-sidebar-foreground truncate", children: user?.name || t("sidebar.profile") })
691
684
  ] })),
692
685
  showSettings && (!expanded ? /* @__PURE__ */ jsxs(Tooltip, { children: [
693
686
  /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
@@ -795,7 +788,5 @@ Sidebar.Header = SidebarHeader;
795
788
  Sidebar.Search = SidebarSearch;
796
789
  Sidebar.Nav = SidebarNav;
797
790
  Sidebar.Footer = SidebarFooter;
798
- export {
799
- Header as H,
800
- Sidebar as S
801
- };
791
+
792
+ export { Header as H, Sidebar as S };
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import React__default, { createContext, useState, useEffect, useRef, useContext } from "react";
2
+ import React__default, { createContext, useState, useEffect, useRef, useMemo, useContext } from "react";
3
3
  import { Menu, Settings, User, LogOut, ArrowLeft, Search, Filter, MoreVertical, ChevronRight } from "lucide-react";
4
4
  import { B as Button, c as cn } from "./button-qkz7Icqf.js";
5
5
  import { L as LanguageSelector, T as ThemeToggle, X as XerticaLogo, a as XerticaXLogo } from "./XerticaXLogo-fAJMy3H4.js";
@@ -174,8 +174,10 @@ function SidebarRoot({
174
174
  }
175
175
  ` }),
176
176
  /* @__PURE__ */ jsx(
177
- "div",
177
+ "nav",
178
178
  {
179
+ id: "sidebar-nav",
180
+ "aria-label": "Navegação principal",
179
181
  className: cn(
180
182
  "bg-sidebar text-sidebar-foreground transition-all duration-300 ease-in-out flex flex-col z-50",
181
183
  expanded ? "fixed inset-0 md:fixed md:inset-y-0 md:left-0" : "fixed inset-y-0 left-0 w-20 -translate-x-full md:translate-x-0",
@@ -199,6 +201,8 @@ function SidebarHeader({
199
201
  onClick: onToggle,
200
202
  className: "w-full h-10 flex items-center gap-3 px-3 justify-center rounded-[var(--radius-button)] transition-all duration-200 text-sidebar-foreground/80 hover:bg-sidebar-foreground/15 hover:text-sidebar-foreground",
201
203
  "aria-label": expanded ? "Recolher menu" : "Expandir menu",
204
+ "aria-expanded": expanded,
205
+ "aria-controls": "sidebar-nav",
202
206
  children: expanded ? /* @__PURE__ */ jsx(ArrowLeft, { className: "w-5 h-5" }) : /* @__PURE__ */ jsx(Menu, { className: "w-5 h-5" })
203
207
  }
204
208
  ) }),
@@ -221,12 +225,16 @@ function SidebarNav({
221
225
  dashboard: "Painel",
222
226
  components: "Componentes"
223
227
  };
224
- const navigationItems = (routes || []).map((route) => ({
225
- ...route,
226
- label: labelTranslations[route.label.toLowerCase()] || route.label,
227
- active: location.pathname === route.path || location.pathname.startsWith(route.path + "/"),
228
- children: route.children
229
- }));
228
+ const navigationItems = useMemo(
229
+ () => (routes || []).map((route) => ({
230
+ ...route,
231
+ label: labelTranslations[route.label.toLowerCase()] || route.label,
232
+ active: location.pathname === route.path || location.pathname.startsWith(route.path + "/"),
233
+ children: route.children
234
+ })),
235
+ // eslint-disable-next-line react-hooks/exhaustive-deps
236
+ [routes, location.pathname]
237
+ );
230
238
  useEffect(() => {
231
239
  if (typeof window === "undefined") return;
232
240
  const checkOverflow = () => {
@@ -248,7 +256,7 @@ function SidebarNav({
248
256
  checkOverflow();
249
257
  window.addEventListener("resize", checkOverflow);
250
258
  return () => window.removeEventListener("resize", checkOverflow);
251
- }, [navigationItems.length, variant]);
259
+ }, [navigationItems, variant]);
252
260
  const handleNavigate = (path) => {
253
261
  setLocalActiveItem(path);
254
262
  navigate(path);
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import React__default, { createContext, useState, useEffect, useRef, useMemo, useContext } from "react";
3
3
  import { Menu, Settings, User, LogOut, ArrowLeft, Search, Filter, MoreVertical, ChevronRight } from "lucide-react";
4
4
  import { B as Button, c as cn } from "./button-C6uvh0rV.js";
5
- import { L as LanguageSelector, T as ThemeToggle, X as XerticaLogo, a as XerticaXLogo } from "./XerticaXLogo-DfUvz-lD.js";
5
+ import { L as LanguageSelector, T as ThemeToggle, X as XerticaLogo, a as XerticaXLogo } from "./XerticaXLogo-Cmsp-Eey.js";
6
6
  import { B as Breadcrumb, d as BreadcrumbList, b as BreadcrumbItem, c as BreadcrumbLink, e as BreadcrumbPage, f as BreadcrumbSeparator } from "./breadcrumb-DIJ0X3Ot.js";
7
7
  import { D as DropdownMenu, n as DropdownMenuTrigger, b as DropdownMenuContent, e as DropdownMenuLabel, i as DropdownMenuSeparator, d as DropdownMenuItem, k as DropdownMenuSub, m as DropdownMenuSubTrigger, f as DropdownMenuPortal, l as DropdownMenuSubContent } from "./dropdown-menu-CFuCssWA.js";
8
8
  import { A as Avatar, b as AvatarImage, a as AvatarFallback } from "./avatar-Cxyofu1H.js";
@@ -175,8 +175,10 @@ function SidebarRoot({
175
175
  }
176
176
  ` }),
177
177
  /* @__PURE__ */ jsxRuntime.jsx(
178
- "div",
178
+ "nav",
179
179
  {
180
+ id: "sidebar-nav",
181
+ "aria-label": "Navegação principal",
180
182
  className: button.cn(
181
183
  "bg-sidebar text-sidebar-foreground transition-all duration-300 ease-in-out flex flex-col z-50",
182
184
  expanded ? "fixed inset-0 md:fixed md:inset-y-0 md:left-0" : "fixed inset-y-0 left-0 w-20 -translate-x-full md:translate-x-0",
@@ -200,6 +202,8 @@ function SidebarHeader({
200
202
  onClick: onToggle,
201
203
  className: "w-full h-10 flex items-center gap-3 px-3 justify-center rounded-[var(--radius-button)] transition-all duration-200 text-sidebar-foreground/80 hover:bg-sidebar-foreground/15 hover:text-sidebar-foreground",
202
204
  "aria-label": expanded ? "Recolher menu" : "Expandir menu",
205
+ "aria-expanded": expanded,
206
+ "aria-controls": "sidebar-nav",
203
207
  children: expanded ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, { className: "w-5 h-5" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Menu, { className: "w-5 h-5" })
204
208
  }
205
209
  ) }),
@@ -222,12 +226,16 @@ function SidebarNav({
222
226
  dashboard: "Painel",
223
227
  components: "Componentes"
224
228
  };
225
- const navigationItems = (routes || []).map((route) => ({
226
- ...route,
227
- label: labelTranslations[route.label.toLowerCase()] || route.label,
228
- active: location.pathname === route.path || location.pathname.startsWith(route.path + "/"),
229
- children: route.children
230
- }));
229
+ const navigationItems = React.useMemo(
230
+ () => (routes || []).map((route) => ({
231
+ ...route,
232
+ label: labelTranslations[route.label.toLowerCase()] || route.label,
233
+ active: location.pathname === route.path || location.pathname.startsWith(route.path + "/"),
234
+ children: route.children
235
+ })),
236
+ // eslint-disable-next-line react-hooks/exhaustive-deps
237
+ [routes, location.pathname]
238
+ );
231
239
  React.useEffect(() => {
232
240
  if (typeof window === "undefined") return;
233
241
  const checkOverflow = () => {
@@ -249,7 +257,7 @@ function SidebarNav({
249
257
  checkOverflow();
250
258
  window.addEventListener("resize", checkOverflow);
251
259
  return () => window.removeEventListener("resize", checkOverflow);
252
- }, [navigationItems.length, variant]);
260
+ }, [navigationItems, variant]);
253
261
  const handleNavigate = (path) => {
254
262
  setLocalActiveItem(path);
255
263
  navigate(path);