xertica-ui 2.1.9 β†’ 2.1.11

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 (930) hide show
  1. package/CHANGELOG.md +107 -1
  2. package/README.md +145 -48
  3. package/assets/xertica-logo.svg +37 -37
  4. package/assets/xertica-x-logo.svg +20 -20
  5. package/bin/cli.ts +684 -412
  6. package/bin/generate-tokens.ts +19 -17
  7. package/bin/language-config.ts +301 -0
  8. package/components/assets/xertica-orbe-animation.ts +1139 -781
  9. package/components/assistant/code-block/CodeBlock.tsx +40 -35
  10. package/components/assistant/code-block/code-block.stories.tsx +2 -2
  11. package/components/assistant/code-block/code-block.test.tsx +3 -3
  12. package/components/assistant/formatted-document/FormattedDocument.tsx +69 -40
  13. package/components/assistant/formatted-document/formatted-document.stories.tsx +1 -1
  14. package/components/assistant/formatted-document/formatted-document.test.tsx +4 -4
  15. package/components/assistant/index.ts +6 -6
  16. package/components/assistant/markdown-message/MarkdownMessage.tsx +77 -41
  17. package/components/assistant/modern-chat-input/ModernChatInput.tsx +554 -560
  18. package/components/assistant/modern-chat-input/modern-chat-input.stories.tsx +17 -17
  19. package/components/assistant/modern-chat-input/modern-chat-input.test.tsx +21 -14
  20. package/components/assistant/xertica-assistant/parts/AssistantCollapsedView.tsx +78 -76
  21. package/components/assistant/xertica-assistant/parts/AssistantConversationList.tsx +87 -85
  22. package/components/assistant/xertica-assistant/parts/AssistantDocumentEditor.tsx +60 -60
  23. package/components/assistant/xertica-assistant/parts/AssistantFeedbackDialog.tsx +57 -65
  24. package/components/assistant/xertica-assistant/parts/AssistantHeader.tsx +55 -57
  25. package/components/assistant/xertica-assistant/parts/AssistantMessageBubble.tsx +509 -522
  26. package/components/assistant/xertica-assistant/parts/AssistantTabBar.tsx +50 -48
  27. package/components/assistant/xertica-assistant/parts/AssistantTypingIndicator.tsx +31 -31
  28. package/components/assistant/xertica-assistant/parts/AssistantWelcomeScreen.tsx +84 -79
  29. package/components/assistant/xertica-assistant/types.ts +58 -63
  30. package/components/assistant/xertica-assistant/use-assistant.ts +541 -508
  31. package/components/assistant/xertica-assistant/xertica-assistant.stories.tsx +31 -25
  32. package/components/assistant/xertica-assistant/xertica-assistant.test.tsx +6 -6
  33. package/components/assistant/xertica-assistant/xertica-assistant.tsx +42 -30
  34. package/components/blocks/card-patterns/ActivityCard.tsx +100 -72
  35. package/components/blocks/card-patterns/ActivityCardSkeleton.tsx +56 -0
  36. package/components/blocks/card-patterns/FeatureCard.tsx +109 -100
  37. package/components/blocks/card-patterns/FeatureCardSkeleton.tsx +63 -0
  38. package/components/blocks/card-patterns/NotificationCard.tsx +140 -127
  39. package/components/blocks/card-patterns/NotificationCardSkeleton.tsx +81 -0
  40. package/components/blocks/card-patterns/ProfileCard.tsx +114 -84
  41. package/components/blocks/card-patterns/ProfileCardSkeleton.tsx +69 -0
  42. package/components/blocks/card-patterns/ProjectCard.tsx +123 -89
  43. package/components/blocks/card-patterns/ProjectCardSkeleton.tsx +72 -0
  44. package/components/blocks/card-patterns/QuickActionCard.tsx +68 -62
  45. package/components/blocks/card-patterns/QuickActionCardSkeleton.tsx +44 -0
  46. package/components/blocks/card-patterns/card-patterns.mdx +123 -0
  47. package/components/blocks/card-patterns/card-patterns.stories.tsx +594 -445
  48. package/components/blocks/card-patterns/index.ts +29 -17
  49. package/components/blocks/index.ts +1 -1
  50. package/components/brand/branding/branding.stories.tsx +3 -1
  51. package/components/brand/index.ts +6 -6
  52. package/components/brand/language-selector/LanguageSelector.tsx +102 -61
  53. package/components/brand/language-selector/language-selector.mdx +126 -57
  54. package/components/brand/language-selector/language-selector.stories.tsx +114 -28
  55. package/components/brand/language-selector/language-selector.test.tsx +101 -27
  56. package/components/brand/theme-toggle/ThemeToggle.tsx +10 -6
  57. package/components/brand/theme-toggle/theme-toggle.test.tsx +3 -3
  58. package/components/brand/xertica-logo/XerticaLogo.stories.tsx +1 -1
  59. package/components/brand/xertica-logo/XerticaLogo.tsx +35 -18
  60. package/components/brand/xertica-logo/xertica-logo.test.tsx +1 -1
  61. package/components/brand/xertica-orbe/XerticaOrbe.tsx +957 -387
  62. package/components/brand/xertica-orbe/xertica-orbe.stories.tsx +2 -2
  63. package/components/brand/xertica-provider/XerticaProvider.tsx +100 -64
  64. package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
  65. package/components/brand/xertica-provider/xertica-provider.test.tsx +54 -54
  66. package/components/brand/xertica-xlogo/XerticaXLogo.stories.tsx +1 -1
  67. package/components/brand/xertica-xlogo/XerticaXLogo.tsx +14 -18
  68. package/components/examples/ApiKeyMapExample.tsx +59 -60
  69. package/components/examples/DrawingMapExample.tsx +130 -104
  70. package/components/examples/FilterableMapExample.tsx +40 -32
  71. package/components/examples/LocationPickerExample.tsx +65 -45
  72. package/components/examples/MapExamples.tsx +268 -282
  73. package/components/examples/MapGmpExample.tsx +151 -136
  74. package/components/examples/MapShowcase.tsx +56 -56
  75. package/components/examples/RouteMapExamples.tsx +21 -21
  76. package/components/examples/SidebarLogoExample.tsx +49 -49
  77. package/components/examples/SimpleFilterableMap.tsx +219 -192
  78. package/components/examples/index.ts +45 -52
  79. package/components/figma/ImageWithFallback.tsx +27 -27
  80. package/components/hooks/index.ts +4 -1
  81. package/components/hooks/use-layout-shortcuts.ts +12 -15
  82. package/components/index.ts +20 -7
  83. package/components/layout/header/header.stories.tsx +18 -7
  84. package/components/layout/header/header.test.tsx +13 -14
  85. package/components/layout/header/header.tsx +292 -279
  86. package/components/layout/index.ts +2 -2
  87. package/components/layout/sidebar/sidebar.mdx +1 -1
  88. package/components/layout/sidebar/sidebar.stories.tsx +159 -83
  89. package/components/layout/sidebar/sidebar.test.tsx +20 -17
  90. package/components/layout/sidebar/sidebar.tsx +174 -161
  91. package/components/layout/sidebar/use-sidebar.ts +84 -84
  92. package/components/media/FloatingMediaWrapper.tsx +171 -116
  93. package/components/media/audio-player/AudioPlayer.stories.tsx +16 -12
  94. package/components/media/audio-player/AudioPlayer.test.tsx +3 -3
  95. package/components/media/audio-player/AudioPlayer.tsx +264 -85
  96. package/components/media/audio-player/use-audio-player.ts +277 -270
  97. package/components/media/index.ts +3 -3
  98. package/components/media/video-player/VideoPlayer.stories.tsx +12 -8
  99. package/components/media/video-player/VideoPlayer.tsx +33 -20
  100. package/components/pages/forgot-password-page/ForgotPasswordPage.stories.tsx +1 -1
  101. package/components/pages/forgot-password-page/ForgotPasswordPage.tsx +27 -19
  102. package/components/pages/forgot-password-page/forgot-password-page.test.tsx +11 -8
  103. package/components/pages/home-content/HomeContent.stories.tsx +6 -2
  104. package/components/pages/home-content/HomeContent.tsx +68 -75
  105. package/components/pages/home-content/home-content.mdx +62 -62
  106. package/components/pages/home-page/HomePage.stories.tsx +39 -39
  107. package/components/pages/home-page/HomePage.tsx +24 -44
  108. package/components/pages/home-page/home-page.mdx +53 -53
  109. package/components/pages/home-page/home-page.test.tsx +21 -10
  110. package/components/pages/index.ts +8 -8
  111. package/components/pages/login-page/LoginPage.stories.tsx +1 -1
  112. package/components/pages/login-page/LoginPage.tsx +41 -41
  113. package/components/pages/login-page/login-page.test.tsx +15 -12
  114. package/components/pages/reset-password-page/ResetPasswordPage.stories.tsx +1 -1
  115. package/components/pages/reset-password-page/ResetPasswordPage.tsx +32 -39
  116. package/components/pages/template-content/TemplateContent.stories.tsx +6 -2
  117. package/components/pages/template-content/TemplateContent.tsx +406 -187
  118. package/components/pages/template-content/template-content.mdx +61 -61
  119. package/components/pages/template-page/TemplatePage.stories.tsx +39 -39
  120. package/components/pages/template-page/TemplatePage.tsx +14 -25
  121. package/components/pages/template-page/template-page.mdx +53 -53
  122. package/components/pages/template-page/template-page.test.tsx +21 -8
  123. package/components/pages/verify-email-page/VerifyEmailPage.stories.tsx +2 -2
  124. package/components/pages/verify-email-page/VerifyEmailPage.tsx +38 -30
  125. package/components/public-api-smoke.test.tsx +52 -52
  126. package/components/shared/CustomTooltipContent.tsx +24 -28
  127. package/components/shared/assistant-utils.test.ts +1 -3
  128. package/components/shared/assistant-utils.ts +208 -171
  129. package/components/shared/error-boundary.stories.tsx +132 -0
  130. package/components/shared/error-boundary.tsx +154 -0
  131. package/components/shared/error-fallbacks.tsx +226 -0
  132. package/components/shared/navigation.ts +35 -0
  133. package/components/shared/use-mobile.ts +8 -10
  134. package/components/shared/utils.ts +2 -2
  135. package/components/ui/accordion/accordion.mdx +8 -8
  136. package/components/ui/accordion/accordion.stories.tsx +54 -65
  137. package/components/ui/accordion/accordion.test.tsx +5 -10
  138. package/components/ui/accordion/accordion.tsx +10 -12
  139. package/components/ui/alert/alert.mdx +8 -8
  140. package/components/ui/alert/alert.stories.tsx +8 -12
  141. package/components/ui/alert/alert.test.tsx +4 -6
  142. package/components/ui/alert/alert.tsx +58 -81
  143. package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
  144. package/components/ui/alert-dialog/alert-dialog.stories.tsx +4 -4
  145. package/components/ui/alert-dialog/alert-dialog.test.tsx +3 -1
  146. package/components/ui/alert-dialog/alert-dialog.tsx +22 -44
  147. package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
  148. package/components/ui/aspect-ratio/aspect-ratio.stories.tsx +3 -3
  149. package/components/ui/aspect-ratio/aspect-ratio.tsx +3 -5
  150. package/components/ui/assistant-chart/AssistantChart.tsx +5 -5
  151. package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
  152. package/components/ui/assistant-chart/assistant-chart.stories.tsx +14 -14
  153. package/components/ui/assistant-chart/assistant-chart.test.tsx +9 -5
  154. package/components/ui/avatar/avatar.mdx +8 -8
  155. package/components/ui/avatar/avatar.stories.tsx +1 -1
  156. package/components/ui/avatar/avatar.tsx +17 -23
  157. package/components/ui/badge/badge.mdx +8 -8
  158. package/components/ui/badge/badge.stories.tsx +1 -1
  159. package/components/ui/badge/badge.tsx +18 -28
  160. package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
  161. package/components/ui/breadcrumb/breadcrumb.stories.tsx +7 -2
  162. package/components/ui/breadcrumb/breadcrumb.tsx +19 -26
  163. package/components/ui/button/button.mdx +8 -8
  164. package/components/ui/button/button.stories.tsx +31 -9
  165. package/components/ui/button/button.tsx +46 -57
  166. package/components/ui/calendar/calendar.mdx +8 -8
  167. package/components/ui/calendar/calendar.stories.tsx +6 -6
  168. package/components/ui/calendar/calendar.test.tsx +5 -5
  169. package/components/ui/calendar/calendar.tsx +230 -258
  170. package/components/ui/card/card.mdx +8 -8
  171. package/components/ui/card/card.stories.tsx +301 -245
  172. package/components/ui/card/card.tsx +19 -40
  173. package/components/ui/carousel/carousel.mdx +8 -8
  174. package/components/ui/carousel/carousel.stories.tsx +3 -3
  175. package/components/ui/carousel/carousel.test.tsx +2 -1
  176. package/components/ui/carousel/carousel.tsx +41 -52
  177. package/components/ui/chart/chart.mdx +8 -8
  178. package/components/ui/chart/chart.stories.tsx +1328 -1303
  179. package/components/ui/chart/chart.test.tsx +7 -12
  180. package/components/ui/chart/chart.tsx +335 -468
  181. package/components/ui/checkbox/checkbox.mdx +8 -8
  182. package/components/ui/checkbox/checkbox.stories.tsx +31 -25
  183. package/components/ui/checkbox/checkbox.test.tsx +3 -3
  184. package/components/ui/checkbox/checkbox.tsx +14 -14
  185. package/components/ui/collapsible/collapsible.mdx +8 -8
  186. package/components/ui/collapsible/collapsible.stories.tsx +8 -23
  187. package/components/ui/collapsible/collapsible.test.tsx +3 -3
  188. package/components/ui/collapsible/collapsible.tsx +5 -17
  189. package/components/ui/command/command.mdx +8 -8
  190. package/components/ui/command/command.stories.tsx +8 -15
  191. package/components/ui/command/command.tsx +24 -53
  192. package/components/ui/context-menu/context-menu.mdx +8 -8
  193. package/components/ui/context-menu/context-menu.stories.tsx +3 -5
  194. package/components/ui/context-menu/context-menu.test.tsx +4 -2
  195. package/components/ui/context-menu/context-menu.tsx +27 -55
  196. package/components/ui/dialog/dialog.mdx +8 -8
  197. package/components/ui/dialog/dialog.stories.tsx +12 -12
  198. package/components/ui/dialog/dialog.test.tsx +3 -1
  199. package/components/ui/dialog/dialog.tsx +45 -57
  200. package/components/ui/drawer/drawer.mdx +8 -8
  201. package/components/ui/drawer/drawer.stories.tsx +4 -8
  202. package/components/ui/drawer/drawer.test.tsx +4 -2
  203. package/components/ui/drawer/drawer.tsx +26 -38
  204. package/components/ui/dropdown-menu/dropdown-menu.mdx +8 -8
  205. package/components/ui/dropdown-menu/dropdown-menu.stories.tsx +2 -2
  206. package/components/ui/dropdown-menu/dropdown-menu.test.tsx +3 -1
  207. package/components/ui/dropdown-menu/dropdown-menu.tsx +27 -56
  208. package/components/ui/empty/empty.mdx +8 -8
  209. package/components/ui/empty/empty.stories.tsx +2 -9
  210. package/components/ui/empty/empty.test.tsx +1 -7
  211. package/components/ui/empty/empty.tsx +58 -74
  212. package/components/ui/file-upload/file-upload.mdx +8 -8
  213. package/components/ui/file-upload/file-upload.stories.tsx +10 -19
  214. package/components/ui/file-upload/file-upload.test.tsx +11 -11
  215. package/components/ui/file-upload/file-upload.tsx +33 -28
  216. package/components/ui/file-upload/use-file-upload.ts +144 -148
  217. package/components/ui/form/form.stories.tsx +6 -8
  218. package/components/ui/form/form.test.tsx +9 -14
  219. package/components/ui/form/form.tsx +25 -70
  220. package/components/ui/google-maps-loader/google-maps-loader.test.tsx +3 -3
  221. package/components/ui/google-maps-loader/google-maps-loader.tsx +46 -26
  222. package/components/ui/hover-card/hover-card.mdx +8 -8
  223. package/components/ui/hover-card/hover-card.stories.tsx +10 -16
  224. package/components/ui/hover-card/hover-card.test.tsx +5 -7
  225. package/components/ui/hover-card/hover-card.tsx +11 -17
  226. package/components/ui/index.ts +243 -156
  227. package/components/ui/input/input.mdx +8 -8
  228. package/components/ui/input/input.stories.tsx +26 -16
  229. package/components/ui/input/input.tsx +16 -16
  230. package/components/ui/input-otp/input-otp.mdx +8 -8
  231. package/components/ui/input-otp/input-otp.stories.tsx +22 -23
  232. package/components/ui/input-otp/input-otp.test.tsx +1 -6
  233. package/components/ui/input-otp/input-otp.tsx +19 -22
  234. package/components/ui/label/label.mdx +8 -8
  235. package/components/ui/label/label.stories.tsx +2 -2
  236. package/components/ui/label/label.tsx +12 -12
  237. package/components/ui/map/map.mdx +8 -8
  238. package/components/ui/map/map.stories.tsx +59 -59
  239. package/components/ui/map/map.test.tsx +16 -8
  240. package/components/ui/map/map.tsx +103 -68
  241. package/components/ui/map/mock.test.tsx +1 -1
  242. package/components/ui/map-config/map-config.ts +10 -4
  243. package/components/ui/map-layers/map-layers.test.tsx +15 -11
  244. package/components/ui/map-layers/map-layers.tsx +5 -8
  245. package/components/ui/map.exports/map.exports.ts +5 -5
  246. package/components/ui/menubar/menubar.mdx +8 -8
  247. package/components/ui/menubar/menubar.stories.tsx +1 -1
  248. package/components/ui/menubar/menubar.test.tsx +3 -1
  249. package/components/ui/menubar/menubar.tsx +33 -57
  250. package/components/ui/navigation-menu/navigation-menu.mdx +8 -8
  251. package/components/ui/navigation-menu/navigation-menu.stories.tsx +33 -35
  252. package/components/ui/navigation-menu/navigation-menu.tsx +16 -25
  253. package/components/ui/notification-badge/notification-badge.mdx +8 -8
  254. package/components/ui/notification-badge/notification-badge.stories.tsx +9 -18
  255. package/components/ui/notification-badge/notification-badge.tsx +39 -36
  256. package/components/ui/page-header/page-header.stories.tsx +5 -5
  257. package/components/ui/page-header/page-header.test.tsx +6 -11
  258. package/components/ui/page-header/page-header.tsx +22 -29
  259. package/components/ui/pagination/pagination.mdx +8 -8
  260. package/components/ui/pagination/pagination.stories.tsx +19 -9
  261. package/components/ui/pagination/pagination.test.tsx +3 -1
  262. package/components/ui/pagination/pagination.tsx +22 -32
  263. package/components/ui/pagination/use-pagination.ts +137 -135
  264. package/components/ui/popover/popover.mdx +8 -8
  265. package/components/ui/popover/popover.stories.tsx +3 -5
  266. package/components/ui/popover/popover.test.tsx +5 -7
  267. package/components/ui/popover/popover.tsx +11 -17
  268. package/components/ui/progress/progress.mdx +8 -8
  269. package/components/ui/progress/progress.stories.tsx +3 -3
  270. package/components/ui/progress/progress.tsx +20 -20
  271. package/components/ui/radio-group/radio-group.mdx +8 -8
  272. package/components/ui/radio-group/radio-group.stories.tsx +14 -6
  273. package/components/ui/radio-group/radio-group.tsx +31 -30
  274. package/components/ui/rating/rating.mdx +8 -8
  275. package/components/ui/rating/rating.stories.tsx +3 -3
  276. package/components/ui/rating/rating.test.tsx +2 -2
  277. package/components/ui/rating/rating.tsx +33 -33
  278. package/components/ui/resizable/resizable.mdx +8 -8
  279. package/components/ui/resizable/resizable.stories.tsx +9 -22
  280. package/components/ui/resizable/resizable.test.tsx +7 -4
  281. package/components/ui/resizable/resizable.tsx +179 -144
  282. package/components/ui/rich-text-editor/index.ts +5 -1
  283. package/components/ui/rich-text-editor/rich-text-editor.stories.tsx +54 -26
  284. package/components/ui/rich-text-editor/rich-text-editor.test.tsx +8 -6
  285. package/components/ui/rich-text-editor/rich-text-editor.tsx +380 -193
  286. package/components/ui/rich-text-editor/use-rich-text-editor.ts +380 -369
  287. package/components/ui/route-map/route-map.mdx +8 -8
  288. package/components/ui/route-map/route-map.stories.tsx +7 -13
  289. package/components/ui/route-map/route-map.test.tsx +38 -25
  290. package/components/ui/route-map/route-map.tsx +108 -60
  291. package/components/ui/scroll-area/scroll-area.mdx +8 -8
  292. package/components/ui/scroll-area/scroll-area.stories.tsx +5 -9
  293. package/components/ui/scroll-area/scroll-area.tsx +11 -13
  294. package/components/ui/search/search.mdx +8 -8
  295. package/components/ui/search/search.stories.tsx +13 -14
  296. package/components/ui/search/search.test.tsx +8 -8
  297. package/components/ui/search/search.tsx +45 -39
  298. package/components/ui/select/select.mdx +8 -8
  299. package/components/ui/select/select.stories.tsx +16 -10
  300. package/components/ui/select/select.test.tsx +4 -8
  301. package/components/ui/select/select.tsx +44 -52
  302. package/components/ui/separator/separator.mdx +8 -8
  303. package/components/ui/separator/separator.stories.tsx +3 -5
  304. package/components/ui/separator/separator.tsx +8 -8
  305. package/components/ui/sheet/sheet.mdx +8 -8
  306. package/components/ui/sheet/sheet.stories.tsx +4 -6
  307. package/components/ui/sheet/sheet.test.tsx +3 -1
  308. package/components/ui/sheet/sheet.tsx +33 -46
  309. package/components/ui/simple-map/simple-map.mdx +8 -8
  310. package/components/ui/simple-map/simple-map.stories.tsx +4 -8
  311. package/components/ui/simple-map/simple-map.test.tsx +4 -15
  312. package/components/ui/simple-map/simple-map.tsx +13 -19
  313. package/components/ui/skeleton/skeleton.mdx +8 -8
  314. package/components/ui/skeleton/skeleton.stories.tsx +2 -2
  315. package/components/ui/skeleton/skeleton.tsx +3 -3
  316. package/components/ui/slider/slider.mdx +8 -8
  317. package/components/ui/slider/slider.stories.tsx +3 -3
  318. package/components/ui/slider/slider.tsx +15 -20
  319. package/components/ui/sonner/sonner.mdx +8 -8
  320. package/components/ui/sonner/sonner.stories.tsx +7 -13
  321. package/components/ui/sonner/sonner.tsx +21 -16
  322. package/components/ui/stats-card/index.ts +1 -0
  323. package/components/ui/stats-card/stats-card-skeleton.tsx +62 -0
  324. package/components/ui/stats-card/stats-card.mdx +8 -8
  325. package/components/ui/stats-card/stats-card.stories.tsx +34 -12
  326. package/components/ui/stats-card/stats-card.test.tsx +8 -12
  327. package/components/ui/stats-card/stats-card.tsx +16 -22
  328. package/components/ui/stepper/stepper.mdx +8 -8
  329. package/components/ui/stepper/stepper.stories.tsx +31 -34
  330. package/components/ui/stepper/stepper.tsx +63 -40
  331. package/components/ui/stepper/use-stepper.ts +106 -104
  332. package/components/ui/switch/switch.mdx +8 -8
  333. package/components/ui/switch/switch.stories.tsx +31 -25
  334. package/components/ui/switch/switch.tsx +20 -20
  335. package/components/ui/table/table.mdx +8 -8
  336. package/components/ui/table/table.stories.tsx +30 -25
  337. package/components/ui/table/table.test.tsx +1 -8
  338. package/components/ui/table/table.tsx +24 -48
  339. package/components/ui/tabs/tabs.mdx +8 -8
  340. package/components/ui/tabs/tabs.stories.tsx +38 -32
  341. package/components/ui/tabs/tabs.test.tsx +1 -1
  342. package/components/ui/tabs/tabs.tsx +14 -26
  343. package/components/ui/textarea/textarea.mdx +8 -8
  344. package/components/ui/textarea/textarea.stories.tsx +5 -3
  345. package/components/ui/textarea/textarea.test.tsx +2 -2
  346. package/components/ui/textarea/textarea.tsx +15 -15
  347. package/components/ui/timeline/timeline.mdx +8 -8
  348. package/components/ui/timeline/timeline.stories.tsx +16 -6
  349. package/components/ui/timeline/timeline.tsx +49 -81
  350. package/components/ui/toggle/toggle.mdx +8 -8
  351. package/components/ui/toggle/toggle.stories.tsx +4 -4
  352. package/components/ui/toggle/toggle.test.tsx +1 -1
  353. package/components/ui/toggle/toggle.tsx +17 -19
  354. package/components/ui/toggle-group/toggle-group.mdx +8 -8
  355. package/components/ui/toggle-group/toggle-group.stories.tsx +6 -6
  356. package/components/ui/toggle-group/toggle-group.test.tsx +1 -1
  357. package/components/ui/toggle-group/toggle-group.tsx +20 -24
  358. package/components/ui/tooltip/tooltip.mdx +8 -8
  359. package/components/ui/tooltip/tooltip.stories.tsx +5 -4
  360. package/components/ui/tooltip/tooltip.test.tsx +3 -1
  361. package/components/ui/tooltip/tooltip.tsx +9 -13
  362. package/components/ui/tree-view/tree-view.mdx +8 -8
  363. package/components/ui/tree-view/tree-view.stories.tsx +36 -48
  364. package/components/ui/tree-view/tree-view.test.tsx +6 -6
  365. package/components/ui/tree-view/tree-view.tsx +47 -23
  366. package/components/ui/tree-view/use-tree-view.ts +200 -200
  367. package/components.json +892 -1512
  368. package/contexts/ApiKeyContext.test.tsx +3 -3
  369. package/contexts/ApiKeyContext.tsx +94 -90
  370. package/contexts/AssistenteContext.test.tsx +1 -1
  371. package/contexts/AssistenteContext.tsx +11 -5
  372. package/contexts/AuthContext.tsx +118 -0
  373. package/contexts/BrandColorsContext.test.tsx +3 -3
  374. package/contexts/BrandColorsContext.tsx +32 -17
  375. package/contexts/LanguageContext.test.tsx +121 -29
  376. package/contexts/LanguageContext.tsx +247 -35
  377. package/contexts/LayoutContext.test.tsx +15 -15
  378. package/contexts/LayoutContext.tsx +104 -90
  379. package/contexts/ThemeContext.test.tsx +7 -5
  380. package/contexts/ThemeContext.tsx +34 -33
  381. package/contexts/index.ts +1 -0
  382. package/contexts/theme-data.ts +319 -319
  383. package/dist/{AssistantChart-DoZCyS5r.cjs β†’ AssistantChart-9w31gdAb.cjs} +4 -4
  384. package/dist/{AssistantChart-CldVCVDe.cjs β†’ AssistantChart-BAudAfne.cjs} +5 -5
  385. package/dist/{AssistantChart-Bdd44uBn.cjs β†’ AssistantChart-BAx9VQvb.cjs} +127 -388
  386. package/dist/{AssistantChart-Cu3m7RBo.js β†’ AssistantChart-BP8upjMk.js} +5 -5
  387. package/dist/{use-mobile-BXuYROXM.js β†’ AssistantChart-BXU1ACnh.js} +958 -1671
  388. package/dist/{AssistantChart-CFhDdGyU.js β†’ AssistantChart-CVko2A1W.js} +130 -391
  389. package/dist/{AssistantChart-C_hwFRRr.js β†’ AssistantChart-CVzmmhx4.js} +4 -4
  390. package/dist/AssistantChart-CeU2dIb6.js +3469 -0
  391. package/dist/{use-mobile-CG2-SdXV.cjs β†’ AssistantChart-D0A1FPYt.cjs} +980 -1700
  392. package/dist/AssistantChart-DO5UuX4J.cjs +3495 -0
  393. package/dist/{AudioPlayer-IAU5q5T1.cjs β†’ AudioPlayer-1ypwE2Wh.cjs} +1 -1
  394. package/dist/AudioPlayer-BJ2IuRQW.cjs +1275 -0
  395. package/dist/AudioPlayer-BWDW6TN9.cjs +1279 -0
  396. package/dist/AudioPlayer-CM962GEh.js +1280 -0
  397. package/dist/{AudioPlayer-CySJIyvL.js β†’ AudioPlayer-DuKXrCfy.js} +1 -1
  398. package/dist/AudioPlayer-Xxma6_-H.js +1276 -0
  399. package/dist/{ThemeContext-BoH4NLfN.js β†’ BrandColorsContext-DLVJgtmH.js} +77 -145
  400. package/dist/{ThemeContext-r69W20Xg.cjs β†’ BrandColorsContext-GUyFmkX0.cjs} +77 -145
  401. package/dist/CodeBlock-C2ZUXt8V.js +219 -0
  402. package/dist/CodeBlock-C5oYnLQp.cjs +218 -0
  403. package/dist/CodeBlock-CV6dtsTM.cjs +220 -0
  404. package/dist/CodeBlock-CjeFavqV.js +221 -0
  405. package/dist/CustomTooltipContent-BT6brkVJ.cjs +49 -0
  406. package/dist/CustomTooltipContent-CfOfikhq.js +33 -0
  407. package/dist/{FeatureCard-DbHWCb4E.js β†’ FeatureCard-9GhnlgL3.js} +46 -11
  408. package/dist/FeatureCard-Cfs6Ishq.js +485 -0
  409. package/dist/{FeatureCard-CxC-7C-C.cjs β†’ FeatureCard-Dkp-xmzM.cjs} +72 -37
  410. package/dist/FeatureCard-ie3L8Fpr.cjs +484 -0
  411. package/dist/FeatureCardSkeleton-CAgu8stE.js +27 -0
  412. package/dist/FeatureCardSkeleton-mO3Bdm_V.cjs +26 -0
  413. package/dist/{LanguageContext-CS14yCpi.js β†’ LanguageContext-BwhwC3G2.js} +2 -2
  414. package/dist/{LanguageContext-B_KFTCzT.cjs β†’ LanguageContext-DvUt5jBg.cjs} +2 -2
  415. package/dist/{LayoutContext-BvK-ggDa.cjs β†’ LayoutContext-C4kKN9RV.cjs} +35 -38
  416. package/dist/{LayoutContext-BAql6ZRY.js β†’ LayoutContext-CGEe1oPq.js} +35 -38
  417. package/dist/{ThemeContext-C2EwAPDt.js β†’ ThemeContext-BbBNoFTG.js} +2 -2
  418. package/dist/{ThemeContext-vTjumZeM.cjs β†’ ThemeContext-Cmr8Ex8H.cjs} +2 -2
  419. package/dist/ThemeContext-CpqYShLq.cjs +324 -0
  420. package/dist/ThemeContext-D3LzacmG.js +188 -0
  421. package/dist/ThemeContext-Du2nE1PL.js +325 -0
  422. package/dist/ThemeContext-U4dEYc6C.cjs +187 -0
  423. package/dist/{VerifyEmailPage-C0c2e5n0.js β†’ VerifyEmailPage-BE-L9mB7.js} +7 -7
  424. package/dist/VerifyEmailPage-BRSP-Pwt.cjs +3196 -0
  425. package/dist/{VerifyEmailPage-Cwi3kbol.cjs β†’ VerifyEmailPage-Bae2cBXT.cjs} +7 -7
  426. package/dist/{VerifyEmailPage-s-1X3LDJ.cjs β†’ VerifyEmailPage-CR7kb5df.cjs} +148 -147
  427. package/dist/{VerifyEmailPage-MTD7AG1Z.js β†’ VerifyEmailPage-C_ihbcth.js} +4 -4
  428. package/dist/{VerifyEmailPage-CqKsR2v8.js β†’ VerifyEmailPage-CbgjOF0v.js} +11 -10
  429. package/dist/{VerifyEmailPage-DvMLZgFt.js β†’ VerifyEmailPage-CdYPSJoO.js} +1 -1
  430. package/dist/{VerifyEmailPage-DjQKRlUS.cjs β†’ VerifyEmailPage-DF2ilhum.cjs} +1053 -667
  431. package/dist/{VerifyEmailPage-CYXtbKi3.cjs β†’ VerifyEmailPage-DMBh4NM9.cjs} +1 -1
  432. package/dist/VerifyEmailPage-DTtFfC-J.js +3197 -0
  433. package/dist/{VerifyEmailPage-CFLMls1p.cjs β†’ VerifyEmailPage-Dt7zgA4w.cjs} +4 -4
  434. package/dist/VerifyEmailPage-EhudUdqF.js +3211 -0
  435. package/dist/{XerticaOrbe-KL1RBHzw.cjs β†’ XerticaOrbe-BCUVSPPB.cjs} +656 -86
  436. package/dist/{XerticaOrbe-zwS1p2a8.js β†’ XerticaOrbe-By8eEvR-.js} +655 -85
  437. package/dist/{XerticaProvider-cI9hSs27.cjs β†’ XerticaProvider-B8CaV7xu.cjs} +8 -7
  438. package/dist/{XerticaProvider-CEoWMTxu.js β†’ XerticaProvider-BITjgC5p.js} +2 -2
  439. package/dist/{XerticaProvider-CllrbMEJ.cjs β†’ XerticaProvider-By8q3Roe.cjs} +2 -2
  440. package/dist/{XerticaProvider-ET0ihewn.cjs β†’ XerticaProvider-CW9hpCdF.cjs} +2 -2
  441. package/dist/XerticaProvider-CWgby5mY.js +49 -0
  442. package/dist/XerticaProvider-CjQAQPcn.cjs +48 -0
  443. package/dist/{XerticaProvider-DDuiIcKo.js β†’ XerticaProvider-DQtvJU7m.js} +5 -4
  444. package/dist/{XerticaProvider-B7EVH-NF.js β†’ XerticaProvider-siSt9uG2.js} +2 -2
  445. package/dist/XerticaXLogo-CU-U-GP4.cjs +251 -0
  446. package/dist/{LanguageSelector-D6uacAIM.cjs β†’ XerticaXLogo-CziKMQil.cjs} +123 -111
  447. package/dist/XerticaXLogo-DHz5SugF.js +252 -0
  448. package/dist/{LanguageSelector-B5YfbHra.js β†’ XerticaXLogo-DfUvz-lD.js} +123 -111
  449. package/dist/alert-dialog-B4M3vQKS.cjs +875 -0
  450. package/dist/alert-dialog-KpoabzJb.js +852 -0
  451. package/dist/{alert-dialog-s-vmNkJ_.js β†’ alert-dialog-iDe5VE5o.js} +3 -3
  452. package/dist/{alert-dialog-DSKByiKZ.cjs β†’ alert-dialog-yckpaOpy.cjs} +3 -3
  453. package/dist/assistant.cjs.js +18 -4
  454. package/dist/assistant.es.js +18 -4
  455. package/dist/avatar-CuYu2MKt.cjs +72 -0
  456. package/dist/avatar-Cxyofu1H.js +56 -0
  457. package/dist/blocks.cjs.js +8 -1
  458. package/dist/blocks.es.js +10 -3
  459. package/dist/brand.cjs.js +3 -3
  460. package/dist/brand.es.js +3 -3
  461. package/dist/{breadcrumb-CqJ7bHY5.js β†’ breadcrumb-DIJ0X3Ot.js} +9 -74
  462. package/dist/breadcrumb-DjSxkjlQ.cjs +95 -0
  463. package/dist/{tooltip-Ded96neP.cjs β†’ button-Bnv9SvYK.cjs} +19 -77
  464. package/dist/button-C6uvh0rV.js +63 -0
  465. package/dist/card-B8-Gl5DL.js +73 -0
  466. package/dist/card-Bv_c57KU.cjs +72 -0
  467. package/dist/cli.js +548 -155
  468. package/dist/components/assistant/code-block/CodeBlock.d.ts +1 -1
  469. package/dist/components/assistant/formatted-document/FormattedDocument.d.ts +1 -1
  470. package/dist/components/blocks/card-patterns/ActivityCard.d.ts +2 -2
  471. package/dist/components/blocks/card-patterns/ActivityCardSkeleton.d.ts +19 -0
  472. package/dist/components/blocks/card-patterns/FeatureCard.d.ts +6 -6
  473. package/dist/components/blocks/card-patterns/FeatureCardSkeleton.d.ts +18 -0
  474. package/dist/components/blocks/card-patterns/NotificationCard.d.ts +2 -2
  475. package/dist/components/blocks/card-patterns/NotificationCardSkeleton.d.ts +21 -0
  476. package/dist/components/blocks/card-patterns/ProfileCard.d.ts +2 -2
  477. package/dist/components/blocks/card-patterns/ProfileCardSkeleton.d.ts +20 -0
  478. package/dist/components/blocks/card-patterns/ProjectCard.d.ts +2 -2
  479. package/dist/components/blocks/card-patterns/ProjectCardSkeleton.d.ts +18 -0
  480. package/dist/components/blocks/card-patterns/QuickActionCard.d.ts +5 -5
  481. package/dist/components/blocks/card-patterns/QuickActionCardSkeleton.d.ts +16 -0
  482. package/dist/components/blocks/card-patterns/index.d.ts +24 -12
  483. package/dist/components/blocks/index.d.ts +1 -1
  484. package/dist/components/brand/language-selector/LanguageSelector.d.ts +27 -7
  485. package/dist/components/brand/theme-toggle/ThemeToggle.d.ts +1 -1
  486. package/dist/components/brand/xertica-logo/XerticaLogo.d.ts +1 -1
  487. package/dist/components/brand/xertica-provider/XerticaProvider.d.ts +29 -1
  488. package/dist/components/brand/xertica-xlogo/XerticaXLogo.d.ts +1 -1
  489. package/dist/components/hooks/index.d.ts +1 -1
  490. package/dist/components/index.d.ts +4 -1
  491. package/dist/components/layout/sidebar/sidebar.d.ts +6 -6
  492. package/dist/components/layout/sidebar/use-sidebar.d.ts +1 -1
  493. package/dist/components/media/video-player/VideoPlayer.d.ts +1 -1
  494. package/dist/components/pages/home-content/HomeContent.d.ts +6 -20
  495. package/dist/components/pages/home-page/HomePage.d.ts +7 -19
  496. package/dist/components/pages/template-content/TemplateContent.d.ts +1 -11
  497. package/dist/components/pages/template-page/TemplatePage.d.ts +2 -14
  498. package/dist/components/shared/error-boundary.d.ts +60 -0
  499. package/dist/components/shared/error-fallbacks.d.ts +16 -0
  500. package/dist/components/shared/navigation.d.ts +14 -0
  501. package/dist/components/shared/utils.d.ts +1 -1
  502. package/dist/components/ui/accordion/accordion.d.ts +2 -2
  503. package/dist/components/ui/alert/alert.d.ts +17 -17
  504. package/dist/components/ui/alert-dialog/alert-dialog.d.ts +4 -4
  505. package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts +1 -1
  506. package/dist/components/ui/assistant-chart/AssistantChart.d.ts +1 -1
  507. package/dist/components/ui/avatar/avatar.d.ts +3 -3
  508. package/dist/components/ui/badge/badge.d.ts +3 -3
  509. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +8 -8
  510. package/dist/components/ui/button/button.d.ts +3 -3
  511. package/dist/components/ui/calendar/calendar.d.ts +4 -4
  512. package/dist/components/ui/card/card.d.ts +9 -9
  513. package/dist/components/ui/carousel/carousel.d.ts +7 -7
  514. package/dist/components/ui/chart/chart.d.ts +18 -18
  515. package/dist/components/ui/checkbox/checkbox.d.ts +2 -2
  516. package/dist/components/ui/collapsible/collapsible.d.ts +1 -1
  517. package/dist/components/ui/command/command.d.ts +4 -4
  518. package/dist/components/ui/context-menu/context-menu.d.ts +4 -4
  519. package/dist/components/ui/dialog/dialog.d.ts +6 -6
  520. package/dist/components/ui/drawer/drawer.d.ts +5 -5
  521. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +4 -4
  522. package/dist/components/ui/empty/empty.d.ts +2 -2
  523. package/dist/components/ui/file-upload/file-upload.d.ts +1 -1
  524. package/dist/components/ui/form/form.d.ts +7 -7
  525. package/dist/components/ui/hover-card/hover-card.d.ts +2 -2
  526. package/dist/components/ui/index.d.ts +144 -144
  527. package/dist/components/ui/input/input.d.ts +3 -3
  528. package/dist/components/ui/input-otp/input-otp.d.ts +6 -6
  529. package/dist/components/ui/label/label.d.ts +3 -3
  530. package/dist/components/ui/map-config/map-config.d.ts +1 -1
  531. package/dist/components/ui/map.exports/map.exports.d.ts +1 -1
  532. package/dist/components/ui/menubar/menubar.d.ts +4 -4
  533. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +2 -2
  534. package/dist/components/ui/notification-badge/notification-badge.d.ts +2 -2
  535. package/dist/components/ui/page-header/page-header.d.ts +1 -1
  536. package/dist/components/ui/pagination/pagination.d.ts +7 -7
  537. package/dist/components/ui/popover/popover.d.ts +2 -2
  538. package/dist/components/ui/progress/progress.d.ts +3 -3
  539. package/dist/components/ui/radio-group/radio-group.d.ts +2 -2
  540. package/dist/components/ui/rating/rating.d.ts +2 -2
  541. package/dist/components/ui/resizable/resizable.d.ts +1 -1
  542. package/dist/components/ui/rich-text-editor/index.d.ts +1 -1
  543. package/dist/components/ui/scroll-area/scroll-area.d.ts +2 -2
  544. package/dist/components/ui/search/search.d.ts +3 -3
  545. package/dist/components/ui/select/select.d.ts +2 -2
  546. package/dist/components/ui/separator/separator.d.ts +2 -2
  547. package/dist/components/ui/sheet/sheet.d.ts +6 -6
  548. package/dist/components/ui/skeleton/skeleton.d.ts +1 -1
  549. package/dist/components/ui/slider/slider.d.ts +2 -2
  550. package/dist/components/ui/sonner/sonner.d.ts +1 -1
  551. package/dist/components/ui/stats-card/index.d.ts +1 -0
  552. package/dist/components/ui/stats-card/stats-card-skeleton.d.ts +25 -0
  553. package/dist/components/ui/stats-card/stats-card.d.ts +1 -1
  554. package/dist/components/ui/stepper/stepper.d.ts +1 -1
  555. package/dist/components/ui/switch/switch.d.ts +2 -2
  556. package/dist/components/ui/table/table.d.ts +10 -10
  557. package/dist/components/ui/tabs/tabs.d.ts +2 -2
  558. package/dist/components/ui/textarea/textarea.d.ts +3 -3
  559. package/dist/components/ui/timeline/timeline.d.ts +1 -1
  560. package/dist/components/ui/toggle/toggle.d.ts +3 -3
  561. package/dist/components/ui/toggle-group/toggle-group.d.ts +3 -3
  562. package/dist/components/ui/tooltip/tooltip.d.ts +2 -2
  563. package/dist/components/ui/tree-view/tree-view.d.ts +2 -2
  564. package/dist/contexts/AuthContext.d.ts +47 -0
  565. package/dist/contexts/LanguageContext.d.ts +66 -4
  566. package/dist/contexts/ThemeContext.d.ts +1 -1
  567. package/dist/contexts/index.d.ts +1 -0
  568. package/dist/{dropdown-menu-BDB5CmQs.cjs β†’ dropdown-menu-B_uEXNc4.cjs} +16 -43
  569. package/dist/{dropdown-menu-DQidbKBD.js β†’ dropdown-menu-CFuCssWA.js} +9 -36
  570. package/dist/features/assistant/data/mock.d.ts +12 -0
  571. package/dist/features/assistant/hooks/useAssistantConfig.d.ts +2 -0
  572. package/dist/features/assistant/index.d.ts +2 -0
  573. package/dist/features/home/data/mock.d.ts +28 -0
  574. package/dist/features/home/hooks/useDashboardStats.d.ts +2 -0
  575. package/dist/features/home/hooks/useFeatureCards.d.ts +2 -0
  576. package/dist/features/home/hooks/useTeamMembers.d.ts +2 -0
  577. package/dist/features/home/index.d.ts +5 -0
  578. package/dist/features/home/store/dashboardStore.d.ts +16 -0
  579. package/dist/{google-maps-loader-BFWp6VPd.js β†’ google-maps-loader-BVoVhUwA.js} +41 -12
  580. package/dist/{google-maps-loader-Y-QkD-Li.cjs β†’ google-maps-loader-BqsYL48U.cjs} +0 -5
  581. package/dist/{google-maps-loader-eS3uQ5TA.cjs β†’ google-maps-loader-DjJaYhV6.cjs} +40 -11
  582. package/dist/{google-maps-loader-CTYySAun.js β†’ google-maps-loader-t2IlYBzw.js} +0 -4
  583. package/dist/hooks.cjs.js +14 -13
  584. package/dist/hooks.es.js +11 -10
  585. package/dist/i18n.d.ts +14 -0
  586. package/dist/index-B7A523O_.js +8 -0
  587. package/dist/index-CkTUgOwX.js +8 -0
  588. package/dist/{index-COtD8bRW.cjs β†’ index-D3RLKRAs.cjs} +1 -1
  589. package/dist/{index-D6fxYEY8.cjs β†’ index-DmHhnb7a.cjs} +1 -1
  590. package/dist/index.cjs.js +48 -33
  591. package/dist/index.es.js +81 -66
  592. package/dist/index.umd.js +454 -1027
  593. package/dist/{input-DWANSKGb.cjs β†’ input-CNFHVKvo.cjs} +11 -11
  594. package/dist/{input-2R4loU86.js β†’ input-wPYg0d0P.js} +10 -10
  595. package/dist/layout.cjs.js +2 -2
  596. package/dist/layout.es.js +2 -2
  597. package/dist/media.cjs.js +1 -1
  598. package/dist/media.es.js +1 -1
  599. package/dist/pages.cjs.js +1 -1
  600. package/dist/pages.es.js +1 -1
  601. package/dist/{progress-DPtzoVV8.js β†’ progress-Cs9i4DPx.js} +3 -97
  602. package/dist/{progress-EeaoqqUs.cjs β†’ progress-DDeuWPZw.cjs} +2 -96
  603. package/dist/rich-text-editor-1UW3Y2JK.js +2891 -0
  604. package/dist/{rich-text-editor-Bp3zQqMC.js β†’ rich-text-editor-BM-LPpTh.js} +982 -1034
  605. package/dist/rich-text-editor-CyggTOLQ.cjs +2908 -0
  606. package/dist/{rich-text-editor-CeucBdIv.cjs β†’ rich-text-editor-DoCkKhzk.cjs} +982 -1034
  607. package/dist/{select-Bkbr0f-Z.cjs β†’ select-Cmb8zF7w.cjs} +9 -15
  608. package/dist/{select-CvIVdX2n.js β†’ select-CprSNX0z.js} +3 -9
  609. package/dist/{sidebar-DQj1z3jG.cjs β†’ sidebar-C5B_LHek.cjs} +245 -208
  610. package/dist/{sidebar-CUuOvYhK.js β†’ sidebar-CA6_ek3f.js} +272 -258
  611. package/dist/{sidebar-BxGXsDAd.cjs β†’ sidebar-CVUGHOS_.cjs} +8 -16
  612. package/dist/{sidebar-BViy8Eeu.js β†’ sidebar-CmvwjnVb.js} +9 -17
  613. package/dist/{sidebar-LluMXfam.js β†’ sidebar-Dz7bd3zP.js} +245 -208
  614. package/dist/{sidebar-CK_0ZQHj.cjs β†’ sidebar-zowjejT2.cjs} +271 -274
  615. package/dist/skeleton-4zoHiFJ_.cjs +83 -0
  616. package/dist/skeleton-C4bHqUBf.js +84 -0
  617. package/dist/{slider-N7hFFj6X.cjs β†’ slider-DcJharR9.cjs} +4 -4
  618. package/dist/{slider-Bc5Hd0y1.js β†’ slider-Pay3fka2.js} +1 -1
  619. package/dist/tooltip-CwgSdy3h.cjs +67 -0
  620. package/dist/tooltip-D-OrYnKO.js +51 -0
  621. package/dist/ui.cjs.js +24 -23
  622. package/dist/ui.es.js +54 -53
  623. package/dist/{use-audio-player-BkmEmj8Q.js β†’ use-audio-player-BJFV24XW.js} +13 -10
  624. package/dist/{use-audio-player-nv8ZSGa1.js β†’ use-audio-player-Bkh23vQ3.js} +3 -7
  625. package/dist/{use-audio-player-NKsWyjWu.cjs β†’ use-audio-player-Dn1NR9xN.cjs} +3 -7
  626. package/dist/{use-audio-player-CLFTWFW1.cjs β†’ use-audio-player-DyVYlOnR.cjs} +13 -10
  627. package/dist/use-mobile-BB4M_4Ru.cjs +47 -0
  628. package/dist/use-mobile-CLu9nqGL.js +31 -0
  629. package/dist/{xertica-assistant-dyP7KHM5.cjs β†’ xertica-assistant-B1IaHXnB.cjs} +388 -529
  630. package/dist/{xertica-assistant-ciJaWqm1.js β†’ xertica-assistant-BMqdyRVi.js} +10 -28
  631. package/dist/xertica-assistant-BbgzsgsG.js +2164 -0
  632. package/dist/{xertica-assistant-V_IdW4WF.cjs β†’ xertica-assistant-Bj3vBCq_.cjs} +9 -27
  633. package/dist/{xertica-assistant-BdiZag0h.js β†’ xertica-assistant-CfBCo21g.js} +442 -481
  634. package/dist/{xertica-assistant-yX1CFBBo.js β†’ xertica-assistant-DPsESB6t.js} +390 -531
  635. package/dist/{xertica-assistant-DUBpmEgo.cjs β†’ xertica-assistant-DrsRwla1.cjs} +441 -480
  636. package/dist/{CodeBlock-7TTgmdGG.cjs β†’ xertica-assistant-Qp3ydksa.cjs} +51 -263
  637. package/dist/xertica-assistant-d2qs2Vd9.cjs +2163 -0
  638. package/dist/{CodeBlock-DnYNI8rQ.js β†’ xertica-assistant-gnCJdcZY.js} +7 -219
  639. package/dist/xertica-ui.css +2 -2
  640. package/docs/ai-usage.md +24 -21
  641. package/docs/architecture-improvements.md +68 -55
  642. package/docs/architecture.md +186 -30
  643. package/docs/components/accordion.md +12 -17
  644. package/docs/components/alert-dialog.md +13 -13
  645. package/docs/components/alert.md +15 -17
  646. package/docs/components/aspect-ratio.md +5 -5
  647. package/docs/components/assistant-chart.md +10 -9
  648. package/docs/components/assistant.md +155 -129
  649. package/docs/components/audio-player.md +30 -18
  650. package/docs/components/avatar.md +15 -17
  651. package/docs/components/badge.md +14 -14
  652. package/docs/components/branding.md +30 -29
  653. package/docs/components/breadcrumb.md +11 -11
  654. package/docs/components/button.md +29 -29
  655. package/docs/components/calendar.md +141 -154
  656. package/docs/components/card-patterns.md +445 -337
  657. package/docs/components/card.md +245 -235
  658. package/docs/components/carousel.md +1 -1
  659. package/docs/components/chart.md +89 -99
  660. package/docs/components/checkbox.md +15 -15
  661. package/docs/components/code-block.md +8 -11
  662. package/docs/components/collapsible.md +8 -13
  663. package/docs/components/command.md +18 -3
  664. package/docs/components/context-menu.md +1 -1
  665. package/docs/components/dialog.md +46 -28
  666. package/docs/components/drawer.md +6 -8
  667. package/docs/components/dropdown-menu.md +17 -21
  668. package/docs/components/empty.md +12 -21
  669. package/docs/components/error-boundary.md +191 -0
  670. package/docs/components/file-upload.md +43 -54
  671. package/docs/components/floating-media-wrapper.md +12 -12
  672. package/docs/components/form.md +62 -35
  673. package/docs/components/formatted-document.md +33 -41
  674. package/docs/components/google-maps-loader.md +1 -0
  675. package/docs/components/header.md +17 -15
  676. package/docs/components/hooks.md +114 -114
  677. package/docs/components/hover-card.md +5 -5
  678. package/docs/components/image-with-fallback.md +14 -13
  679. package/docs/components/input-otp.md +13 -22
  680. package/docs/components/input.md +13 -13
  681. package/docs/components/label.md +7 -7
  682. package/docs/components/language-selector.md +172 -76
  683. package/docs/components/map-layers.md +15 -17
  684. package/docs/components/map.md +84 -84
  685. package/docs/components/markdown-message.md +6 -7
  686. package/docs/components/menubar.md +10 -4
  687. package/docs/components/modern-chat-input.md +28 -27
  688. package/docs/components/navigation-menu.md +1 -1
  689. package/docs/components/notification-badge.md +10 -10
  690. package/docs/components/page-header.md +15 -17
  691. package/docs/components/pages.md +58 -100
  692. package/docs/components/pagination.md +113 -98
  693. package/docs/components/popover.md +12 -17
  694. package/docs/components/progress.md +14 -14
  695. package/docs/components/radio-group.md +20 -16
  696. package/docs/components/rating.md +10 -10
  697. package/docs/components/resizable.md +13 -17
  698. package/docs/components/rich-text-editor.md +70 -75
  699. package/docs/components/route-map.md +31 -31
  700. package/docs/components/scroll-area.md +5 -5
  701. package/docs/components/search.md +13 -13
  702. package/docs/components/select.md +17 -23
  703. package/docs/components/separator.md +5 -5
  704. package/docs/components/sheet.md +14 -16
  705. package/docs/components/sidebar.md +69 -67
  706. package/docs/components/simple-map.md +11 -9
  707. package/docs/components/skeleton.md +19 -12
  708. package/docs/components/slider.md +13 -19
  709. package/docs/components/sonner.md +14 -17
  710. package/docs/components/stats-card.md +10 -9
  711. package/docs/components/stepper.md +42 -47
  712. package/docs/components/switch.md +12 -19
  713. package/docs/components/table.md +12 -12
  714. package/docs/components/tabs.md +15 -15
  715. package/docs/components/textarea.md +9 -13
  716. package/docs/components/theme-toggle.md +7 -6
  717. package/docs/components/timeline.md +26 -22
  718. package/docs/components/toggle-group.md +11 -11
  719. package/docs/components/toggle.md +12 -16
  720. package/docs/components/tooltip.md +14 -14
  721. package/docs/components/tree-view.md +60 -70
  722. package/docs/components/use-mobile.md +4 -8
  723. package/docs/components/video-player.md +11 -11
  724. package/docs/components/xertica-logo.md +4 -3
  725. package/docs/components/xertica-orbe.md +4 -3
  726. package/docs/components/xertica-provider.md +25 -24
  727. package/docs/components/xertica-xlogo.md +4 -3
  728. package/docs/decision-tree.md +293 -287
  729. package/docs/doc-audit.md +74 -54
  730. package/docs/form-sizing.md +48 -40
  731. package/docs/getting-started.md +210 -34
  732. package/docs/guidelines.md +167 -48
  733. package/docs/i18n.md +428 -0
  734. package/docs/installation.md +89 -35
  735. package/docs/layout.md +13 -15
  736. package/docs/llms.md +172 -138
  737. package/docs/patterns/analytics.md +8 -22
  738. package/docs/patterns/crud.md +3 -12
  739. package/docs/patterns/dashboard.md +1 -11
  740. package/docs/patterns/detail-page.md +25 -5
  741. package/docs/patterns/form.md +6 -9
  742. package/docs/patterns/login.md +3 -14
  743. package/docs/patterns/settings.md +40 -18
  744. package/docs/patterns/wizard.md +14 -18
  745. package/docs/state-management.md +289 -0
  746. package/guidelines/Guidelines.md +399 -252
  747. package/hooks/useTheme.test.tsx +1 -1
  748. package/hooks/useTheme.ts +4 -4
  749. package/imports/Podcast.tsx +540 -389
  750. package/imports/XerticaAi.tsx +46 -46
  751. package/imports/XerticaX.tsx +15 -20
  752. package/imports/svg-aueiaqngck.ts +20 -11
  753. package/imports/svg-v9krss1ozd.ts +23 -16
  754. package/imports/svg-vhrdofe3qe.ts +6 -5
  755. package/llms-compact.txt +94 -7
  756. package/llms-full.txt +151 -25
  757. package/llms.txt +186 -160
  758. package/package.json +15 -5
  759. package/scripts/ai-validator.ts +35 -27
  760. package/scripts/cleanup-case-dupes.ts +53 -50
  761. package/scripts/generate-ai-manifests.ts +40 -29
  762. package/styles/globals.css +5 -5
  763. package/styles/xertica/app-overrides/chat.css +61 -61
  764. package/styles/xertica/app-overrides/scrollbar.css +33 -33
  765. package/styles/xertica/base.css +1 -1
  766. package/styles/xertica/integrations/google-maps.css +76 -76
  767. package/styles/xertica/integrations/sonner.css +73 -73
  768. package/styles/xertica/theme-map.css +13 -13
  769. package/styles/xertica/tokens.css +5 -5
  770. package/templates/.prettierignore +4 -0
  771. package/templates/.prettierrc +10 -0
  772. package/templates/CLAUDE.md +27 -29
  773. package/templates/eslint.config.js +2 -5
  774. package/templates/guidelines/Guidelines.md +281 -63
  775. package/templates/package.json +14 -5
  776. package/templates/postcss.config.js +1 -1
  777. package/templates/src/app/App.tsx +35 -10
  778. package/templates/src/app/components/AppLayout.tsx +15 -4
  779. package/templates/src/app/components/AuthGuard.tsx +63 -66
  780. package/templates/src/app/context/AuthContext.tsx +108 -0
  781. package/templates/src/features/assistant/data/mock.ts +75 -0
  782. package/templates/src/features/assistant/hooks/useAssistantConfig.ts +20 -0
  783. package/templates/src/features/assistant/index.ts +5 -0
  784. package/templates/src/features/auth/index.ts +4 -4
  785. package/templates/src/features/auth/ui/AuthPageShell.tsx +32 -34
  786. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +43 -17
  787. package/templates/src/features/auth/ui/SocialLoginButtons.tsx +73 -59
  788. package/templates/src/features/home/data/mock.ts +35 -0
  789. package/templates/src/features/home/hooks/useFeatureCards.ts +20 -0
  790. package/templates/src/features/home/index.ts +11 -1
  791. package/templates/src/features/home/store/dashboardStore.ts +25 -0
  792. package/templates/src/features/home/ui/HomeContent.tsx +70 -51
  793. package/templates/src/features/template/index.ts +5 -5
  794. package/templates/src/features/template/ui/CrudTemplate.tsx +6 -12
  795. package/templates/src/features/template/ui/DashboardTemplate.tsx +3 -10
  796. package/templates/src/features/template/ui/FormTemplate.tsx +15 -18
  797. package/templates/src/features/template/ui/LoginTemplate.tsx +3 -3
  798. package/templates/src/features/template/ui/TemplateContent.tsx +287 -140
  799. package/templates/src/i18n.ts +77 -0
  800. package/templates/src/locales/en.json +306 -0
  801. package/templates/src/locales/es.json +306 -0
  802. package/templates/src/locales/pt-BR.json +306 -0
  803. package/templates/src/main.tsx +1 -0
  804. package/templates/src/pages/AssistantPage.tsx +188 -53
  805. package/templates/src/pages/ForgotPasswordPage.tsx +6 -6
  806. package/templates/src/pages/HomePage.tsx +17 -25
  807. package/templates/src/pages/LoginPage.tsx +10 -10
  808. package/templates/src/pages/ResetPasswordPage.tsx +6 -6
  809. package/templates/src/pages/TemplatePage.tsx +6 -8
  810. package/templates/src/pages/VerifyEmailPage.tsx +6 -6
  811. package/templates/src/shared/config/navigation.ts +1 -2
  812. package/templates/src/shared/error-boundary.tsx +154 -0
  813. package/templates/src/shared/error-fallbacks.tsx +226 -0
  814. package/templates/src/styles/index.css +3 -3
  815. package/templates/src/styles/xertica/tokens.css +5 -5
  816. package/templates/tsconfig.json +3 -10
  817. package/templates/vite.config.ts +5 -5
  818. package/utils/color-utils.ts +17 -17
  819. package/utils/demo-responses.ts +146 -110
  820. package/utils/gemini.test.ts +1 -1
  821. package/utils/gemini.ts +155 -140
  822. package/dist/AssistantChart-DIpshm3i.js +0 -4784
  823. package/dist/AssistantChart-zjsy2GaZ.cjs +0 -4810
  824. package/dist/AudioPlayer-B1lt5cPl.cjs +0 -989
  825. package/dist/AudioPlayer-BZ7bibzU.cjs +0 -982
  826. package/dist/AudioPlayer-C12BjQBV.cjs +0 -997
  827. package/dist/AudioPlayer-CFeV8t-5.cjs +0 -936
  828. package/dist/AudioPlayer-CGRUtUdN.js +0 -937
  829. package/dist/AudioPlayer-DMcG_c7L.js +0 -990
  830. package/dist/AudioPlayer-DcFKRJE_.js +0 -998
  831. package/dist/AudioPlayer-e8LfNoqO.js +0 -983
  832. package/dist/CodeBlock-BeSt1h5P.js +0 -2078
  833. package/dist/CodeBlock-BgfYL_rD.cjs +0 -2094
  834. package/dist/CodeBlock-BlcqlA9M.cjs +0 -2094
  835. package/dist/CodeBlock-Bnmeu5ez.cjs +0 -2094
  836. package/dist/CodeBlock-BtfPlbAI.js +0 -2078
  837. package/dist/CodeBlock-CIySIuYr.js +0 -2078
  838. package/dist/CodeBlock-CuPtUM-7.cjs +0 -2094
  839. package/dist/CodeBlock-D6ffWXgc.js +0 -2078
  840. package/dist/CodeBlock-D8dcwbit.cjs +0 -2094
  841. package/dist/CodeBlock-DMZrFnlw.cjs +0 -2094
  842. package/dist/CodeBlock-DlBehYN8.js +0 -2078
  843. package/dist/CodeBlock-DvKWbSnE.cjs +0 -2094
  844. package/dist/CodeBlock-DwMCfkFY.js +0 -2078
  845. package/dist/CodeBlock-Dy6CNYyj.js +0 -2078
  846. package/dist/CodeBlock-U1pPOQI7.cjs +0 -2094
  847. package/dist/CodeBlock-f_GpNhEB.js +0 -2078
  848. package/dist/CodeBlock-oB6u8nI1.js +0 -2078
  849. package/dist/CodeBlock-tZC31B73.cjs +0 -2094
  850. package/dist/ImageWithFallback-CGtidP6B.cjs +0 -4542
  851. package/dist/ImageWithFallback-lsg3pdFg.js +0 -4508
  852. package/dist/VerifyEmailPage-COiyNl1y.js +0 -2825
  853. package/dist/XerticaProvider-6btlAlzc.js +0 -17
  854. package/dist/XerticaProvider-BNoNOxQ5.cjs +0 -16
  855. package/dist/XerticaProvider-BlY2limY.cjs +0 -38
  856. package/dist/XerticaProvider-hSwhNQex.js +0 -39
  857. package/dist/breadcrumb-m9Hb2_XN.cjs +0 -177
  858. package/dist/components/assistant/xertica-assistant/hooks/index.d.ts +0 -6
  859. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-conversations.d.ts +0 -21
  860. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-messages.d.ts +0 -49
  861. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-suggestions.d.ts +0 -16
  862. package/dist/components/blocks/audio-player/AudioPlayer.d.ts +0 -35
  863. package/dist/components/blocks/audio-player/index.d.ts +0 -1
  864. package/dist/components/blocks/document-editor/DocumentEditor.d.ts +0 -26
  865. package/dist/components/blocks/document-editor/index.d.ts +0 -1
  866. package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +0 -41
  867. package/dist/components/blocks/podcast-player/index.d.ts +0 -1
  868. package/dist/components/ui/chart/parts/chart-dashboard.d.ts +0 -113
  869. package/dist/components/ui/chart/parts/chart-metric.d.ts +0 -118
  870. package/dist/components/ui/chart/parts/chart-primitives.d.ts +0 -101
  871. package/dist/components/ui/chart/parts/chart-shared.d.ts +0 -20
  872. package/dist/components/ui/chart/parts/chart-utils.d.ts +0 -12
  873. package/dist/components/ui/chart/parts/index.d.ts +0 -5
  874. package/dist/header-Cgy6vYPk.cjs +0 -731
  875. package/dist/header-DRlT4jgI.js +0 -715
  876. package/dist/header-Dux00SI4.cjs +0 -731
  877. package/dist/header-EkGKXPsD.js +0 -715
  878. package/dist/header-WfEywpyc.cjs +0 -731
  879. package/dist/header-tifNQn2U.js +0 -715
  880. package/dist/index-BhapVLVj.js +0 -8
  881. package/dist/index-DW5tYe26.js +0 -8
  882. package/dist/rich-text-editor-0mraWT5y.cjs +0 -2376
  883. package/dist/rich-text-editor-B6jMRLzk.cjs +0 -1939
  884. package/dist/rich-text-editor-B8_oYcIR.js +0 -1730
  885. package/dist/rich-text-editor-B9UbSXNb.js +0 -1203
  886. package/dist/rich-text-editor-BYuRBNBU.js +0 -2373
  887. package/dist/rich-text-editor-Bb9pySTs.cjs +0 -2374
  888. package/dist/rich-text-editor-BcL6L3cm.cjs +0 -2374
  889. package/dist/rich-text-editor-BoVZYtTs.cjs +0 -2391
  890. package/dist/rich-text-editor-CMgSN_w2.js +0 -1189
  891. package/dist/rich-text-editor-CPV1lEPH.cjs +0 -1748
  892. package/dist/rich-text-editor-CoKqbCtu.cjs +0 -1799
  893. package/dist/rich-text-editor-Cw56T_mB.js +0 -2356
  894. package/dist/rich-text-editor-Cyt8qs2b.js +0 -1921
  895. package/dist/rich-text-editor-D6H84OcX.cjs +0 -1220
  896. package/dist/rich-text-editor-D76gD-QI.js +0 -2328
  897. package/dist/rich-text-editor-DKkokOnA.js +0 -1781
  898. package/dist/rich-text-editor-DNsdpN64.cjs +0 -2359
  899. package/dist/rich-text-editor-DfG8bCyY.js +0 -2358
  900. package/dist/rich-text-editor-Dxjw31Z4.js +0 -2341
  901. package/dist/rich-text-editor-DzP0Epmb.js +0 -2356
  902. package/dist/rich-text-editor-lyYE2ZG5.cjs +0 -1207
  903. package/dist/rich-text-editor-skplNlBM.cjs +0 -2345
  904. package/dist/sidebar-Djn5syhi.cjs +0 -786
  905. package/dist/sidebar-_rT7rBMk.js +0 -787
  906. package/dist/tooltip-HDOoD2-0.js +0 -120
  907. package/dist/use-file-upload-BcjEo2S5.js +0 -404
  908. package/dist/use-file-upload-CRJR68Tj.cjs +0 -403
  909. package/dist/use-mobile-B0hNy_Y6.cjs +0 -4303
  910. package/dist/use-mobile-Bbd51ASU.cjs +0 -4392
  911. package/dist/use-mobile-Bk6CX-TC.js +0 -4359
  912. package/dist/use-mobile-BvYdisLP.js +0 -4202
  913. package/dist/use-mobile-BzuxjzNX.cjs +0 -4392
  914. package/dist/use-mobile-CKb5pqTs.js +0 -4269
  915. package/dist/use-mobile-CYuAuGDl.js +0 -4202
  916. package/dist/use-mobile-CaENcqm-.js +0 -4508
  917. package/dist/use-mobile-CbrYgJGJ.js +0 -4203
  918. package/dist/use-mobile-DMOvImGQ.cjs +0 -4542
  919. package/dist/use-mobile-DRB3BQgD.cjs +0 -4235
  920. package/dist/use-mobile-DZvv7QMR.js +0 -4359
  921. package/dist/use-mobile-DdI_TXam.cjs +0 -4235
  922. package/dist/use-mobile-DlceKf8a.js +0 -4359
  923. package/dist/use-mobile-DsOnow1o.cjs +0 -4236
  924. package/dist/use-mobile-Kcj6jSnK.cjs +0 -4392
  925. package/dist/use-mobile-bnKcua_i.js +0 -4202
  926. package/dist/use-mobile-ncXBeE2z.cjs +0 -4235
  927. package/dist/use-rich-text-editor-DjiddBGv.js +0 -282
  928. package/dist/use-rich-text-editor-lpeswbCs.cjs +0 -281
  929. package/dist/{rich-text-editor-DgF8s7xW.js β†’ rich-text-editor-BmsjY03B.js} +26 -26
  930. package/dist/{rich-text-editor-mWoaSCE4.cjs β†’ rich-text-editor-GS2kpTAK.cjs} +26 -26
package/CHANGELOG.md CHANGED
@@ -7,10 +7,102 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ---
9
9
 
10
- ## [2.1.9] β€” 2026-05-20
10
+ ## [Unreleased]
11
+
12
+ ### Added
13
+
14
+ - **CLI β€” Language selection on `init`** β€” `npx xertica-ui init` now prompts for the languages the project should support (multi-select with `pt-BR`, `en`, `es`; all selected by default; minimum 1). The CLI:
15
+ - Copies **only** the JSON files for the selected languages into `src/locales/` (no orphan locales)
16
+ - Generates `src/i18n.ts` with imports/resources for exactly those languages
17
+ - Injects the `availableLanguages` prop into the generated `src/app/App.tsx`
18
+ - Persists the selection in `src/locales/.languages.json` (schema v1)
19
+ - **CLI β€” `update` β†’ Languages** β€” new option in the `update` command lets users add or remove languages later. Shows a diff (`+ es`, `- en`) before confirming. Regenerates `App.tsx`, `i18n.ts`, copies new locale JSONs, and prunes removed ones.
20
+ - **CLI β€” Monolingual auto-detection** β€” when only one language is selected, the generated `App.tsx` includes a banner comment documenting that the `LanguageSelector` will auto-hide.
21
+ - **`bin/language-config.ts`** β€” new module encapsulating the supported-language registry (`SUPPORTED_LANGUAGES`), code generators (`generateI18nFile`, `generateAppTsx`), and persistence helpers (`readLanguagesConfig`, `writeLanguagesConfig`, `syncLocaleFiles`).
22
+
23
+ ### Changed
24
+
25
+ - **CLI β€” `update` β†’ Project files (`app` branch)** β€” instead of blindly overwriting `App.tsx` and `i18n.ts` with the static template (which would erase the user's language selection), the update flow now reads the persisted selection from `src/locales/.languages.json` and regenerates these files honoring it. Projects scaffolded before this feature shipped get their selection inferred from the locale files present and the inferred config is written back.
26
+
27
+ ---
28
+
29
+ ## [2.1.11] β€” 2026-05-20
30
+
31
+ ### Fixed
32
+
33
+ - **CLI Initialization** β€” CorreΓ§Γ΅es essenciais no comando `init`:
34
+ - `i18n.ts` e o diretΓ³rio `locales/` agora sΓ£o copiados corretamente, restaurando as traduΓ§Γ΅es na aplicaΓ§Γ£o gerada.
35
+ - `AuthContext.tsx` e dependΓͺncias agora sΓ£o incluΓ­das, habilitando o hook `useAuth`.
36
+ - A geraΓ§Γ£o do `AuthGuard.tsx` foi reconstruΓ­da de forma dinΓ’mica para consumir corretamente o `useAuth()` e garantir integridade das rotas protegidas e abertas, suportando *lazy loading* dinΓ’mico das rotas de acordo com a seleΓ§Γ£o do usuΓ‘rio.
37
+ - O diretΓ³rio `features/assistant/` agora Γ© sempre copiado visto que o `AppLayout` depende nativamente da `AssistantPage`.
38
+ - **Template Lints** β€” ResoluΓ§Γ£o de diversos `unused-vars` (variΓ‘veis e imports Γ³rfΓ£os) espalhados pelo `HomeContent.tsx`, `TemplateContent.tsx`, `AssistantPage.tsx` e `AuthContext.tsx`, garantindo que o `npm run check` (`tsc` + `eslint`) execute com 100% de sucesso imediatamente apΓ³s a geraΓ§Γ£o do projeto.
39
+ - **`LanguageSelector` e `LanguageContext`** β€” CorreΓ§Γ£o de bugs na seleΓ§Γ£o de idiomas e fallback:
40
+ - `LanguageContext.tsx` agora valida de forma robusta e intercepta valores legados como `'PT'` no `localStorage`, realizando um *fallback* seguro para `'pt-BR'`.
41
+ - O componente `LanguageSelector.tsx` foi ajustado na sua composiΓ§Γ£o com Radix UI: a dependΓͺncia restritiva do `<SelectValue>` foi removida no trigger, evitando a sobrescrita do conteΓΊdo. Agora o componente exibe a variante `minimal` (como `PT`, `EN`, `ES`) perfeitamente, sincronizada com o estado global de traduΓ§Γ£o.
42
+
43
+ ---
44
+
45
+ ## [2.1.10] β€” 2026-05-20
46
+
47
+ ### Added
48
+
49
+ - **`AuthContext` / `useAuth()`** β€” novo contexto de autenticaΓ§Γ£o em `contexts/AuthContext.tsx`. `AuthProvider` gerencia sessΓ£o via `localStorage`, expΓ΅e `user`, `isLoading`, `login(email, password) β†’ boolean` e `logout()`. `isLoading` previne flashes de redirect durante hidrataΓ§Γ£o. O `AuthProvider` deve ser montado dentro do `<Router>` (depende de `useNavigate`).
50
+ - **`ErrorBoundary` β€” trΓͺs variantes prΓ©-configuradas** em `components/shared/error-boundary.tsx`:
51
+ - `AppErrorBoundary` β€” envolve todo o `App` antes dos providers; fallback full-screen com inline styles (funciona mesmo se o Tailwind falhar)
52
+ - `PageErrorBoundary` β€” envolve `<Routes>` / `<AuthGuard>`; captura lazy-chunk failures e erros de renderizaΓ§Γ£o de pΓ‘gina
53
+ - `SectionErrorBoundary` β€” envolve seΓ§Γ΅es isoladas (tabelas, charts, assistente); um seΓ§Γ£o quebrada nΓ£o derruba a pΓ‘gina
54
+ - Props: `onError` (callback para Sentry/Datadog), `resetKeys` (auto-reset quando um valor muda, ex: `[location.pathname]`)
55
+ - **i18n completo com `i18next` + `react-i18next`** β€” integraΓ§Γ£o completa de internacionalizaΓ§Γ£o:
56
+ - Arquivo `i18n.ts` configurado com `pt-BR` (padrΓ£o), `en` e `es`
57
+ - Locale files em `locales/pt-BR.json`, `en.json`, `es.json` com namespaces: `common`, `nav`, `home`, `stats`, `team`, `assistant`, `languageSelector`
58
+ - `LanguageContext.setLanguage()` agora chama `i18n.changeLanguage()` β€” todos os `useTranslation()` re-renderizam
59
+ - `HomeContent.tsx` e `TemplateContent.tsx` usam `useTranslation()` para todos os textos
60
+ - Mock data usa `i18n.t()` (instΓ’ncia) para responder ao idioma ativo no `queryFn`
61
+ - **`features/` β€” camada de estado separada da UI**:
62
+ - `features/home/data/mock.ts` β€” tipos + dados mock + funΓ§Γ΅es `fetch*()` (swap point para API real)
63
+ - `features/home/hooks/` β€” `useDashboardStats`, `useTeamMembers`, `useFeatureCards` (TanStack React Query)
64
+ - `features/home/store/dashboardStore.ts` β€” Zustand (progress, slider, switch, activeTab)
65
+ - `features/assistant/data/mock.ts` β€” `AssistantConfig` + `fetchAssistantConfig()`
66
+ - `features/assistant/hooks/useAssistantConfig.ts` β€” React Query, staleTime 30 min
67
+ - **`QueryClientProvider`** adicionado ao stack de providers em `App.tsx` como camada mais externa (abaixo de `AppErrorBoundary`)
68
+ - **Lazy loading** em todas as rotas via `React.lazy()` + `<Suspense fallback={null}>` β€” cada pΓ‘gina Γ© um chunk separado
69
+ - **`ProtectedRoute` + `GuestRoute`** como componentes de guarda de rota baseados em `useAuth()` β€” eliminam lΓ³gica de redirect do `AuthGuard`
70
+ - **`components/shared/navigation.ts`** β€” fonte canΓ΄nica de `RouteConfig`, `routes[]`, `getRouteByPath` e `isValidRoute` para o app devops (substituiu `routes.tsx` na raiz)
71
+
72
+ ### Changed
73
+
74
+ - **`LanguageSelector` β€” refatorado para usar `LanguageContext` e `i18next`** β€” removidos `useState` local, props `initialLanguage` e `onLanguageChange`. O componente agora lΓͺ de `useLanguage()` e chama `i18n.changeLanguage()` diretamente. `aria-label` e labels dos itens sΓ£o traduzidos via `useTranslation()`. **Breaking**: `initialLanguage` e `onLanguageChange` foram removidos da API pΓΊblica.
75
+ - **`LanguageContext` β€” conectado ao `i18next`** β€” `setLanguage(lang)` persiste no `localStorage` E chama `i18n.changeLanguage(lang)` em uma ΓΊnica operaΓ§Γ£o. Type mismatch corrigido: `LanguageSelector` usava `'pt'`, contexto usava `'pt-BR'` β€” unificado para `'pt-BR'`.
76
+ - **`App.tsx` β€” limpeza da lΓ³gica de tema duplicada** β€” removidos IIFE top-level e `useLayoutEffect` que manipulavam `localStorage`/`classList` para garantir light mode. O `ThemeProvider` jΓ‘ gerencia isso corretamente; as camadas redundantes conflitavam.
77
+ - **`HomePage` + `TemplatePage` β€” sem props `user`/`onLogout`** β€” ambos consomem `useAuth()` diretamente; prop-drilling eliminado em toda a Γ‘rvore de pΓ‘ginas (`HomeContent`, `TemplateContent`, `AppLayout`).
78
+ - **`routes.tsx` deletado** β€” conteΓΊdo movido para `components/shared/navigation.ts`; todos os imports atualizados.
11
79
 
12
80
  ### Fixed
13
81
 
82
+ - **`useRichTextEditor` β€” `wordCount`/`characterCount` agora sΓ£o `useState`** β€” as IIFEs que calculavam os contadores a cada render foram substituΓ­das por estado React (`useState(0)`). `handleInput` atualiza os contadores imediatamente apΓ³s cada digitaΓ§Γ£o; um `useEffect([value])` os sincroniza quando o valor Γ© alterado externamente.
83
+ - **`useRichTextEditor` β€” `eslint-disable` removido do effect de seleΓ§Γ£o** β€” o effect ΓΊnico de mount com `// eslint-disable-next-line` foi dividido em dois: um `useRef` que mantΓ©m `updateActiveFormats` sempre atualizado e um effect de mount-only que registra o listener `selectionchange` via ref, eliminando re-registros e o disable de lint.
84
+ - **`useAssistant` β€” timers vazados corrigidos** β€” `responseTimerRef` e `commandTimerRef` substituem os `setTimeout` bare em `handleEnviarMensagem` e `handleExecuteSearchCommand`; um effect de cleanup no unmount cancela ambos com `clearTimeout`.
85
+ - **`useAssistant` β€” hydration one-shot de `initialMessages`** β€” `hydratedRef` garante que `setMensagens(initialMessages)` ocorra apenas uma vez, evitando reset do histΓ³rico em re-renders.
86
+ - **`useAssistant` β€” scroll condicional ≀ 120px** β€” o auto-scroll sΓ³ aciona `scrollIntoView` quando o usuΓ‘rio estΓ‘ a menos de 120 px do fundo, preservando a posiΓ§Γ£o durante leitura de histΓ³rico.
87
+ - **`useAudioPlayer` β€” `eslint-disable` removido do effect de modo-switch** β€” `currentTimeRef` e `isPlayingRef` (latest-ref pattern) substituem referΓͺncias diretas ao estado dentro do effect `[isFloating, variant]`, eliminando a necessidade do disable de lint.
88
+ - **`useStepper` β€” `initialStep` invΓ‘lido** β€” lazy initializer com `Math.min(Math.max(1, initialStep), totalSteps)` garante que o estado inicial nunca fique fora do intervalo `[1, totalSteps]`.
89
+ - **`useTreeView` β€” `Space` e `Enter` separados** β€” `Space` expande/colapsa nΓ³s-pai e seleciona folhas; `Enter` expande/colapsa e sempre seleciona, alinhando com WAI-ARIA Tree Pattern 1.2.
90
+ - **`sidebar.tsx` β€” loop de re-render corrigido** β€” dependΓͺncia do effect de overflow revertida de `navigationItems` para `navigationItems.length` para evitar loop causado pela nova referΓͺncia de array gerada pelo `useMemo` a cada mudanΓ§a de rota.
91
+ - **`useAssistant` β€” `setConversas(savedConversations)` em loop corrigido** β€” removido `useEffect` que chamava `setConversas` com `savedConversations = []` (default do destructuring), causando re-render infinito.
92
+
93
+ ### Changed (continued)
94
+
95
+ - **`RichTextEditor` β€” ARIA no `contentEditable`** β€” adicionados `role="textbox"`, `aria-multiline`, `aria-label`, `aria-readonly` e `aria-disabled` no div editΓ‘vel. Removido o texto "Auto-save ativo" do rodapΓ©.
96
+ - **`Stepper` β€” ARIA de lista** β€” o wrapper dos steps recebe `role="list"` + `aria-label="Progresso: etapa N de M"`. Cada `<Step>` recebe `role="listitem"`, `aria-current="step"` (quando ativo) e `aria-label` composto com status.
97
+ - **`Pagination` β€” prop `disabled` em `PaginationLink`** β€” `PaginationLink` aceita `disabled?: boolean`; aplica `pointer-events-none opacity-50`, `aria-disabled`, `tabIndex={-1}` e remove `href`. `PaginationPrevious` e `PaginationNext` repassam `disabled`.
98
+ - **`usePagination` β€” algoritmo deduplicado com `Set`** β€” reescrito usando `Set<number>` para garantir que cada pΓ‘gina apareΓ§a exatamente uma vez.
99
+ - **`TreeView` β€” prop `ariaLabel` + roving tabindex** β€” `<TreeView>` aceita `ariaLabel?: string`; roving tabindex: `focusableId = effectiveSelectedId ?? data[0]?.id`.
100
+ - **`DashboardBarChart` β€” `topOfStack` com `useMemo`** β€” IIFE extraΓ­da para `React.useMemo([stacked, chartSeries])` antes do `return`.
101
+ - **`useAssistant` β€” `conversasFiltradas` com `useMemo`** e tipos fortalecidos (`handleEnviarMensagem: (arg?: string | ActionType) => Promise<void>`).
102
+ - **`sidebar.tsx` β€” ARIA** β€” botΓ£o de toggle recebe `aria-expanded` e `aria-controls="sidebar-nav"`; `<nav>` recebe `id="sidebar-nav"` e `aria-label="NavegaΓ§Γ£o principal"`. `navigationItems` memoizado com `useMemo`.
103
+
104
+ ---
105
+
14
106
  - **`useRichTextEditor` β€” `wordCount`/`characterCount` agora sΓ£o `useState`** β€” as IIFEs que calculavam os contadores a cada render foram substituΓ­das por estado React (`useState(0)`). `handleInput` atualiza os contadores imediatamente apΓ³s cada digitaΓ§Γ£o; um `useEffect([value])` os sincroniza quando o valor Γ© alterado externamente.
15
107
  - **`useRichTextEditor` β€” `eslint-disable` removido do effect de seleΓ§Γ£o** β€” o effect ΓΊnico de mount com `// eslint-disable-next-line` foi dividido em dois: um `useRef` que mantΓ©m `updateActiveFormats` sempre atualizado e um effect de mount-only que registra o listener `selectionchange` via ref, eliminando re-registros e o disable de lint.
16
108
  - **`useAssistant` β€” timers vazados corrigidos** β€” `responseTimerRef` e `commandTimerRef` substituem os `setTimeout` bare em `handleEnviarMensagem` e `handleExecuteSearchCommand`; um effect de cleanup no unmount cancela ambos com `clearTimeout`.
@@ -275,6 +367,7 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
275
367
  ## [1.9.0] β€” 2026-05-05
276
368
 
277
369
  ### Added
370
+
278
371
  - **Standardized Form Sizing System** β€” Implemented a unified `size` prop (`sm`, `md`, `lg`) across all form-related components for perfect visual alignment in grid layouts:
279
372
  - **Text Components** β€” `Input`, `SelectTrigger`, `Textarea`, `Search`, and `InputOTPSlot` now share consistent height/padding/font-size tokens.
280
373
  - **Toggle Components** β€” `Checkbox`, `RadioGroupItem`, and `Switch` now feature dynamic sizing for both containers and internal indicators (check icon, dot, thumb).
@@ -287,11 +380,13 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
287
380
  - Configurable hierarchy levels and labels directly via props.
288
381
 
289
382
  ### Changed
383
+
290
384
  - **Form Component Architecture** β€” Migrated form elements from legacy tokens to standardized design system tokens (`bg-background`, `border-border`) for better theme consistency.
291
385
  - **Documentation & Storybook** β€” Updated all 9 affected form components with new "Sizes" sections in Storybook (Stories + MDX) and enriched LLM-facing markdown documentation.
292
386
  - **Unit Testing** β€” Updated test suites for `Checkbox`, `RadioGroup`, `Switch`, `InputOTP`, `Label`, `Search`, `Select`, and `Textarea` to verify sizing variant classes.
293
387
 
294
388
  ### Fixed
389
+
295
390
  - **Search Component** β€” Removed obsolete `loading` prop which was causing TypeScript errors and was redundant with the current design system patterns.
296
391
  - **SelectTrigger Sizing** β€” Standardized `md` height to `h-10` (40px) to match the rest of the form system.
297
392
 
@@ -300,6 +395,7 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
300
395
  ## [1.8.0] β€” 2026-04-27
301
396
 
302
397
  ### Added
398
+
303
399
  - **VideoPlayer UI Enhancements** β€” Added gradient overlay on controls for improved contrast against video content:
304
400
  - Gradient: `from-black/60 via-black/30 to-transparent` with `pt-12` spacing
305
401
  - White progress bar with `bg-white/30` track, `bg-white` fill, and `rounded-r-sm` on filled portion
@@ -311,6 +407,7 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
311
407
  - Adjusted track/margins for proper visual alignment at full value
312
408
 
313
409
  ### Changed
410
+
314
411
  - **Documentation** β€” Updated component counts across all docs:
315
412
  - `llms.txt`: 75 β†’ 97 components
316
413
  - `llms-full.txt`: Added statistics table
@@ -319,6 +416,7 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
319
416
  - **components.json** β€” 75 β†’ 89 components (added missing Media, Assistant, Pages, and Map components)
320
417
 
321
418
  ### Fixed
419
+
322
420
  - **Slider Progress Bar** β€” Fixed visual gap where thumb doesn't align with filled bar at end position by adjusting track margins
323
421
 
324
422
  ---
@@ -326,11 +424,13 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
326
424
  ## [1.7.0] β€” 2026-04-23
327
425
 
328
426
  ### Fixed
427
+
329
428
  - **CLI CSS Theme Import** β€” Corrected `@theme` β†’ `@theme inline` in both the library's `index.css` and the generated template `src/styles/index.css`. Plain `@theme {}` was causing Tailwind v4 to resolve color tokens statically at build time using the library's defaults, preventing consumer `tokens.css` overrides from propagating into utility classes (`bg-destructive`, `bg-primary`, alert colors, etc.).
330
429
  - **Dark Mode `--primary`** β€” Added missing `--primary: var(--xertica-primary)` in the dark mode block of `tokens.css` (library, template, and generator). Components using `bg-primary` were not picking up the dark mode brand color.
331
430
  - **Dark Mode Chart Tokens** β€” Generator (`bin/generate-tokens.ts`) now includes `--chart-1` through `--chart-5` in the dark mode section for all generated `tokens.css` files.
332
431
 
333
432
  ### Added
433
+
334
434
  - **CLI `update` command** β€” `npx xertica-ui@latest update` prompts the user to select a new color theme and overwrites `src/styles/xertica/tokens.css` with the newly generated tokens, preserving all other project files.
335
435
  - **Template `@theme inline` mapping** β€” Generated `src/styles/index.css` now includes a complete `@theme inline {}` block mapping all tokens (sidebar, charts, gradients, brand, radii) to CSS variable aliases, ensuring full theme coverage for consumer projects.
336
436
  - **Documentation** β€” `docs/getting-started.md` updated with CLI `update` command reference and a new "CSS Setup (Critical)" section explaining the `@theme inline` requirement.
@@ -340,6 +440,7 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
340
440
  ## [1.6.0] β€” 2026-04-20
341
441
 
342
442
  ### Added
443
+
343
444
  - **`docs/llms.md`** β€” Master LLM/AI-agent entrypoint index with full component catalog, token quick reference, and reading order guide.
344
445
  - **`docs/layout.md`** β€” Complete `LayoutContext` and `useLayout()` API reference.
345
446
  - **`docs/components/route-map.md`** β€” New documentation for `RouteMap` component.
@@ -348,12 +449,14 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
348
449
  - **`Sidebar`** β€” New `width` prop (`expandedWidth: number`) for configuring the expanded sidebar pixel width. Width is now read and stored via `LayoutContext.sidebarWidth`.
349
450
 
350
451
  ### Changed
452
+
351
453
  - **Documentation** β€” All 61 component docs, 5 pattern docs, and 6 root docs fully rewritten in English with standardized structure (Overview, When to Use, Anatomy, Props table, Examples, AI Rules, Related Components).
352
454
  - **JSDoc** β€” All Portuguese JSDoc comments in `components/ui/` translated to English and enriched with accurate `@ai-rules`.
353
455
  - **`README.md`** β€” Complete rewrite in English, restructured for npm page quality (quick start, install guide, component catalog, token reference, AI agent entrypoint, troubleshooting).
354
456
  - **`package.json`** β€” Version bumped to `1.6.0`. Description translated to English.
355
457
 
356
458
  ### Fixed
459
+
357
460
  - **`docs/components/page-header.md`** β€” Was documenting a wrong API (`title/description/actions`). Now correctly documents the real API: `breadcrumbs[]`, `showLanguageSelector`, `rightContent`, `PageHeaderHeading`, `PageHeaderDescription`.
358
461
  - **`docs/components/stepper.md`** β€” Was documenting a `steps[]` array prop. Now correctly documents the composable `<Stepper currentStep> + <Step step label>` API (1-indexed).
359
462
  - **`docs/components/empty.md`** β€” Was documenting single-prop component. Now correctly documents the composable sub-component pattern: `Empty > EmptyIcon > EmptyTitle > EmptyDescription > EmptyAction`.
@@ -365,6 +468,7 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
365
468
  ## [1.5.2] β€” 2026-04-15
366
469
 
367
470
  ### Fixed
471
+
368
472
  - Resolved regression where modal components (Dialog/AlertDialog) failed to render in projects initialized via the CLI.
369
473
  - Implemented robust CSS integration using Tailwind v4 theme mappings.
370
474
  - Ensured Radix UI portals correctly inherit theme variables.
@@ -374,6 +478,7 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
374
478
  ## [1.5.1] β€” 2026-04-14
375
479
 
376
480
  ### Changed
481
+
377
482
  - Sidebar: Added `assistente` variant with fixed areas, searchable navigation, and grouped navigation structures.
378
483
  - Template page updated to demonstrate the assistant sidebar variant.
379
484
 
@@ -382,6 +487,7 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
382
487
  ## [1.5.0] β€” 2026-04-13
383
488
 
384
489
  ### Added
490
+
385
491
  - `Sidebar` β€” `width` / `expandedWidth` prop for configurable expanded sidebar width.
386
492
  - `LayoutContext` β€” `sidebarWidth` and `setSidebarWidth` for global sidebar width management.
387
493
  - `Header` β€” User profile section with avatar, dropdown menu, settings button, and logout button.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **Enterprise-grade React design system** built on Tailwind CSS v4, Radix UI, and Lucide Icons β€” with a robust AI-first documentation layer for precise LLM-driven composition and autonomous agent interaction.
4
4
 
5
- [![npm version](https://img.shields.io/badge/npm-2.1.4-blue)](https://www.npmjs.com/package/xertica-ui)
5
+ [![npm version](https://img.shields.io/badge/npm-2.1.11-blue)](https://www.npmjs.com/package/xertica-ui)
6
6
  [![license](https://img.shields.io/badge/license-proprietary-red)](./LICENSE)
7
7
 
8
8
  ---
@@ -11,12 +11,12 @@
11
11
 
12
12
  Xertica UI is specifically designed to be consumed by AI Agents (LLMs, code assistants, autonomous agents). We provide dedicated entry points for AI context:
13
13
 
14
- | File | Purpose |
15
- |---|---|
16
- | [`llms.txt`](./llms.txt) | Standard index for AI crawlers and context-aware agents. |
14
+ | File | Purpose |
15
+ | ---------------------------------------- | ------------------------------------------------------------------------------------------- |
16
+ | [`llms.txt`](./llms.txt) | Standard index for AI crawlers and context-aware agents. |
17
17
  | [`llms-compact.txt`](./llms-compact.txt) | **Compact documentation** of all components in a single file for LLMs with limited context. |
18
- | [`llms-full.txt`](./llms-full.txt) | **Complete documentation** of all components in a single file for LLMs with large-context. |
19
- | `docs/llms.md` | Master index for agents to navigate the documentation folder. |
18
+ | [`llms-full.txt`](./llms-full.txt) | **Complete documentation** of all components in a single file for LLMs with large-context. |
19
+ | `docs/llms.md` | Master index for agents to navigate the documentation folder. |
20
20
 
21
21
  ---
22
22
 
@@ -30,7 +30,39 @@ cd my-app
30
30
  npm run dev
31
31
  ```
32
32
 
33
- The CLI scaffolds a complete Vite + React + TypeScript project with Portuguese UI localization and English AI-ready documentation.
33
+ During `init`, the CLI walks you through:
34
+
35
+ | Prompt | Choices |
36
+ |---|---|
37
+ | Pages to include | Login, Home, Template (multi-select) |
38
+ | **Languages to support** | PortuguΓͺs (BR), English, EspaΓ±ol β€” select **1, 2, or 3** |
39
+ | Default color theme | Xertica, Slate, Blue, Violet, Rose, Emerald, … |
40
+ | Install dependencies automatically | yes / no |
41
+
42
+ The CLI generates a tailored project with:
43
+
44
+ - Only the locale JSON files for the languages you picked (no orphan files)
45
+ - `src/i18n.ts` with imports + `resources` for exactly those languages
46
+ - `src/app/App.tsx` with the `availableLanguages` prop on `<XerticaProvider>` (omitted when all 3 defaults are selected)
47
+ - A persisted selection in `src/locales/.languages.json` so the `update` command can preserve it
48
+
49
+ ### Monolingual mode (transparent)
50
+
51
+ If you select only one language, the project becomes **monolingual** β€” the `<LanguageSelector>` automatically renders `null` (there is nothing to switch to). A header comment in the generated `App.tsx` documents this behavior. To force the selector visible anyway, pass `<LanguageSelector showWhenMonolingual />`.
52
+
53
+ ### Updating languages later
54
+
55
+ ```bash
56
+ npx xertica-ui update # then choose "Languages"
57
+ ```
58
+
59
+ The flow shows your current selection, lets you toggle languages, and on confirmation:
60
+ - copies any newly-added locale JSON from `node_modules/xertica-ui/templates/src/locales/`
61
+ - removes JSONs of unselected languages
62
+ - regenerates `src/i18n.ts` and `src/app/App.tsx`
63
+ - updates `src/locales/.languages.json`
64
+
65
+ The `update` β†’ **Project files** flow also reads `.languages.json` and preserves your selection β€” overwrites of `App.tsx` and `i18n.ts` won't reset your languages to defaults.
34
66
 
35
67
  > **Note:** Always use `@latest` with npx. Without it, npx may execute a locally cached older version instead of fetching the latest from the registry.
36
68
 
@@ -64,7 +96,7 @@ export function Example() {
64
96
  }
65
97
  ```
66
98
 
67
- **3. Optionally wrap your app** with `XerticaProvider` when you want coordinated theme, layout, assistant, maps, tooltip, API-key, and toast services:
99
+ **3. Optionally wrap your app** with `XerticaProvider` when you want coordinated theme, layout, assistant, maps, tooltip, API-key, language, and toast services:
68
100
 
69
101
  ```tsx
70
102
  import { XerticaProvider } from 'xertica-ui/brand';
@@ -78,6 +110,26 @@ function App() {
78
110
  }
79
111
  ```
80
112
 
113
+ **Configuring languages at runtime** β€” `<XerticaProvider>` accepts `availableLanguages` to override the default set. When only one language is configured, the `LanguageSelector` auto-hides:
114
+
115
+ ```tsx
116
+ import { XerticaProvider, DEFAULT_LANGUAGES } from 'xertica-ui';
117
+ import fr from './locales/fr.json';
118
+
119
+ // Monolingual English (no language picker)
120
+ <XerticaProvider availableLanguages={[{ code: 'en', label: 'English' }]}>
121
+
122
+ // Defaults + a custom locale (bundle auto-registered with i18next)
123
+ <XerticaProvider
124
+ availableLanguages={[
125
+ ...DEFAULT_LANGUAGES,
126
+ { code: 'fr', label: 'FranΓ§ais', shortLabel: 'FR', resources: fr },
127
+ ]}
128
+ >
129
+ ```
130
+
131
+ See [`docs/i18n.md`](./docs/i18n.md) for the full `LanguageDefinition` and `registerLanguageResource` API.
132
+
81
133
  ---
82
134
 
83
135
  ## πŸ“‚ Subpath Imports (FSD/FDA)
@@ -85,15 +137,15 @@ function App() {
85
137
  Xertica UI v2 exposes **granular subpath entries** β€” import only what your layer needs without loading the entire library:
86
138
 
87
139
  ```tsx
88
- import { Button, Card, Input } from 'xertica-ui/ui'; // shared/ui β€” primitives
89
- import { QuickActionCard } from 'xertica-ui/blocks'; // composed blocks
90
- import { Sidebar, Header } from 'xertica-ui/layout'; // layout shell
91
- import { XerticaProvider } from 'xertica-ui/brand'; // app-level β€” providers & brand
92
- import { XerticaAssistant } from 'xertica-ui/assistant'; // feature β€” AI assistant
93
- import { VideoPlayer, AudioPlayer } from 'xertica-ui/media'; // feature β€” media players
140
+ import { Button, Card, Input } from 'xertica-ui/ui'; // shared/ui β€” primitives
141
+ import { QuickActionCard } from 'xertica-ui/blocks'; // composed blocks
142
+ import { Sidebar, Header } from 'xertica-ui/layout'; // layout shell
143
+ import { XerticaProvider } from 'xertica-ui/brand'; // app-level β€” providers & brand
144
+ import { XerticaAssistant } from 'xertica-ui/assistant'; // feature β€” AI assistant
145
+ import { VideoPlayer, AudioPlayer } from 'xertica-ui/media'; // feature β€” media players
94
146
  import { useLayout, useOptionalLayout, useTheme } from 'xertica-ui/hooks'; // shared/lib β€” hooks & contexts
95
- import { TemplatePage } from 'xertica-ui/pages'; // optional page templates
96
- import 'xertica-ui/style.css'; // styles β€” import once at root
147
+ import { TemplatePage } from 'xertica-ui/pages'; // optional page templates
148
+ import 'xertica-ui/style.css'; // styles β€” import once at root
97
149
  ```
98
150
 
99
151
  The root `from 'xertica-ui'` barrel remains available for full backward compatibility.
@@ -115,6 +167,7 @@ Components with unavoidable external configuration, such as Google Maps, should
115
167
  Xertica UI features an autonomous layout system managed by `LayoutContext`.
116
168
 
117
169
  ### Mandatory Page Structure
170
+
118
171
  Every page **must** use the `<PageHeader>` component for its title and primary actions. Never use raw `h1` or `div` for headers.
119
172
 
120
173
  ```tsx
@@ -127,16 +180,16 @@ export function MyPage() {
127
180
  <PageHeaderHeading>Dashboard</PageHeaderHeading>
128
181
  <Button>Action</Button>
129
182
  </PageHeader>
130
- <div className="p-6">
131
- {/* Page Content */}
132
- </div>
183
+ <div className="p-6">{/* Page Content */}</div>
133
184
  </>
134
185
  );
135
186
  }
136
187
  ```
137
188
 
138
189
  ### `useLayout()` Hook
190
+
139
191
  Access the sidebar state, width, and toggle functions anywhere in the component tree:
192
+
140
193
  ```tsx
141
194
  import { useLayout } from 'xertica-ui/hooks';
142
195
 
@@ -167,59 +220,97 @@ src/
167
220
  types/ ← auth.ts (User interface)
168
221
  features/
169
222
  auth/ui/ ← LoginContent, ForgotPasswordContent, VerifyEmailContent, ResetPasswordContent
170
- home/ui/ ← HomeContent
223
+ home/
224
+ data/mock.ts ← typed fetch + factory functions like getMockRichSuggestions()
225
+ hooks/ ← useFeatureCards() β€” language-aware queryKey
226
+ ui/ ← HomeContent
171
227
  template/ui/ ← TemplateContent, FormTemplate
172
- pages/ ← thin wrappers: LoginPage, HomePage, TemplatePage, …
228
+ assistant/ ← AssistantConfig + useAssistantConfig() (always installed, AppLayout depends on it)
229
+ pages/ ← thin wrappers: LoginPage, HomePage, TemplatePage, AssistantPage, …
173
230
  styles/ ← index.css, xertica/tokens.css
231
+ i18n.ts ← generated by CLI β€” imports/resources for selected languages only
232
+ locales/
233
+ pt-BR.json
234
+ en.json ← only files for the languages you selected
235
+ es.json
236
+ .languages.json ← persisted selection (read by `npx xertica-ui update`)
174
237
  ```
175
238
 
176
- Each feature only imports from `shared/` or its own domain. Pages only compose features. See `templates/guidelines/Guidelines.md` for the full architecture guide.
239
+ Each feature only imports from `shared/` or its own domain. Pages only compose features. Server-state hooks (e.g. `useFeatureCards`) include the active **language** in their `queryKey` so locale switching invalidates and refetches automatically. See `templates/guidelines/Guidelines.md` for the full architecture guide.
177
240
 
178
241
  ---
179
242
 
180
243
  ## 🧩 Component Catalog (100+ Components)
181
244
 
182
245
  ### Layout & Navigation
246
+
183
247
  `Header` Β· `Sidebar` Β· `PageHeader` Β· `Breadcrumb` Β· `NavigationMenu` Β· `Tabs` Β· `Pagination` Β· `Accordion` Β· `Collapsible`
184
248
 
185
249
  ### Core Surfaces
250
+
186
251
  `Card` Β· `Separator` Β· `ScrollArea` Β· `AspectRatio` Β· `Resizable` Β· `Skeleton` Β· `Empty`
187
252
 
188
253
  ### Forms & Inputs
254
+
189
255
  `Form` Β· `Input` Β· `Textarea` Β· `RichTextEditor` Β· `Label` Β· `Checkbox` Β· `RadioGroup` Β· `Switch` Β· `Select` Β· `Slider` Β· `Calendar` Β· `InputOTP` Β· `FileUpload` Β· `Search`
190
256
 
191
257
  ### Actions & Data
258
+
192
259
  `Button` Β· `Toggle` Β· `ToggleGroup` Β· `Rating` Β· `Table` Β· `Badge` Β· `Avatar` Β· `Progress` Β· `StatsCard` Β· `Timeline` Β· `Stepper` Β· `TreeView` Β· `NotificationBadge` Β· `Chart`
193
260
 
194
261
  ### Overlays & Feedback
262
+
195
263
  `Dialog` Β· `AlertDialog` Β· `Sheet` Β· `Drawer` Β· `Popover` Β· `HoverCard` Β· `Tooltip` Β· `Alert` Β· `Sonner (Toast)` Β· `Command`
196
264
 
197
- ### Composed Blocks
198
- `FeatureCard` Β· `ActivityCard` Β· `ProfileCard` Β· `ProjectCard` Β· `QuickActionCard` Β· `NotificationCard`
265
+ ### Composed Blocks (with matching skeleton variants)
266
+
267
+ | Card | Skeleton |
268
+ |---|---|
269
+ | `FeatureCard` | `FeatureCardSkeleton` |
270
+ | `ActivityCard` | `ActivityCardSkeleton` |
271
+ | `ProfileCard` | `ProfileCardSkeleton` |
272
+ | `ProjectCard` | `ProjectCardSkeleton` |
273
+ | `QuickActionCard` | `QuickActionCardSkeleton` |
274
+ | `NotificationCard` | `NotificationCardSkeleton` |
275
+ | `StatsCard` (in `xertica-ui/ui`) | `StatsCardSkeleton` |
276
+
277
+ Each skeleton mirrors its card's visual layout with pulsing placeholders for loading states:
278
+
279
+ ```tsx
280
+ {isLoading
281
+ ? <ActivityCardSkeleton rows={5} />
282
+ : <ActivityCard items={items} />}
283
+ ```
199
284
 
200
285
  ---
201
286
 
202
287
  ## 🌟 Specialized Modules
203
288
 
204
289
  ### πŸ€– AI Assistant
205
- Integrated AI chat panel with workspace support.
206
- - `XerticaAssistant` Β· `MarkdownMessage` Β· `CodeBlock` Β· `AssistantChart`
290
+
291
+ Integrated AI chat panel with workspace support. Use `demoMode={true}` for mock responses without an API key; pass `demoMode={false}` and a `geminiApiKey` (via `<XerticaProvider apiKey="...">`) for real Gemini integration.
292
+
293
+ - `XerticaAssistant` Β· `MarkdownMessage` Β· `CodeBlock` Β· `AssistantChart` Β· `ModernChatInput` Β· `FormattedDocument`
207
294
 
208
295
  ### πŸ—ΊοΈ Maps & Geolocation
296
+
209
297
  First-class Google Maps integration.
298
+
210
299
  - `Map` Β· `RouteMap` Β· `SimpleMap` Β· `GoogleMapsLoader`
211
300
 
212
301
  ### πŸŽ™οΈ Media
302
+
213
303
  - `AudioPlayer` Β· `VideoPlayer` Β· `FloatingMediaWrapper`
214
304
 
215
305
  ### πŸ“„ Pages
216
- - `LoginPage` Β· `HomePage` Β· `TemplatePage` Β· `ForgotPasswordPage` Β· `ResetPasswordPage` Β· `VerifyEmailPage`
306
+
307
+ - `LoginPage` Β· `HomePage` Β· `TemplatePage` Β· `AssistantPage` Β· `ForgotPasswordPage` Β· `ResetPasswordPage` Β· `VerifyEmailPage`
217
308
 
218
309
  ### 🧱 Blocks
219
- High-level dashboard and product patterns exported from `xertica-ui/blocks`.
220
- - `FeatureCard` Β· `ActivityCard` Β· `ProfileCard` Β· `ProjectCard` Β· `QuickActionCard` Β· `NotificationCard`
221
310
 
222
- The CLI template now includes a small fixed version badge so generated projects can visually identify which `xertica-ui` package version they are using.
311
+ High-level dashboard and product patterns exported from `xertica-ui/blocks` (also re-exported from the root barrel). Every card ships with a matching `*Skeleton` loading-state companion β€” see the table in **Composed Blocks** above.
312
+
313
+ The CLI template includes a small fixed version badge so generated projects can visually identify which `xertica-ui` package version they are using.
223
314
 
224
315
  ---
225
316
 
@@ -248,38 +339,44 @@ Border: border-border
248
339
 
249
340
  ## 🌍 Localization
250
341
 
251
- - **UI Components**: Fully localized in **Portuguese (pt-BR)** for end-users.
342
+ Xertica UI is fully internationalized via **`i18next`** + **`react-i18next`**.
343
+
344
+ - **UI Components**: Translated out-of-the-box in **Portuguese (pt-BR)**, **English**, and **EspaΓ±ol**. Every component uses `useTranslation()` β€” no hardcoded strings.
345
+ - **Runtime extensibility**: Add custom locales (e.g. `fr`, `ja`, `de`) at runtime via `<XerticaProvider availableLanguages={[...]}>` β€” no source-file edits required.
346
+ - **Monolingual mode**: Configure a single language to make the `LanguageSelector` auto-hide.
347
+ - **Language-aware React Query**: Hooks include the active language in their `queryKey` so mock/API responses translated via `i18n.t()` refetch automatically when the user switches language. No page reload required.
252
348
  - **Documentation/Code**: Strictly maintained in **English** for AI Agent compatibility and global developer standard.
253
349
 
350
+ See [`docs/i18n.md`](./docs/i18n.md) for setup, runtime configuration, and adding custom locales.
351
+
254
352
  ---
255
353
 
256
354
  ## πŸ’» Tech Stack
257
355
 
258
- | Technology | Version |
259
- |---|---|
260
- | React | 18.3 |
261
- | TypeScript | 5.7 |
262
- | Tailwind CSS | 4.0 |
263
- | Vite | 6.0 |
264
- | Radix UI | Latest |
265
- | Lucide React | 0.469+ |
266
- | Vitest | 4.1 |
356
+ | Technology | Version |
357
+ | ------------ | ------- |
358
+ | React | 18.3 |
359
+ | TypeScript | 5.7 |
360
+ | Tailwind CSS | 4.0 |
361
+ | Vite | 6.0 |
362
+ | Radix UI | Latest |
363
+ | Lucide React | 0.469+ |
364
+ | Vitest | 4.1 |
267
365
 
268
366
  ---
269
367
 
270
368
  ## πŸ“œ Scripts
271
369
 
272
- | Command | Description |
273
- |---|---|
274
- | `npm run dev` | Start development server |
275
- | `npm run build` | Production bundle |
276
- | `npm run storybook` | Launch component library documentation |
277
- | `npm run test` | Run unit tests via Vitest |
278
- | `npm run type-check` | TypeScript validation |
370
+ | Command | Description |
371
+ | -------------------- | -------------------------------------- |
372
+ | `npm run dev` | Start development server |
373
+ | `npm run build` | Production bundle |
374
+ | `npm run storybook` | Launch component library documentation |
375
+ | `npm run test` | Run unit tests via Vitest |
376
+ | `npm run type-check` | TypeScript validation |
279
377
 
280
378
  ---
281
379
 
282
380
  ## βš–οΈ License
283
381
 
284
382
  Proprietary β€” Xertica.ai Team.
285
-
@@ -1,38 +1,38 @@
1
- <svg
2
- fill="none"
3
- preserveAspectRatio="xMidYMid meet"
4
- viewBox="0 0 1543 289"
5
- xmlns="http://www.w3.org/2000/svg"
6
- >
7
- <g id="Xertica.ai">
8
- <path d="M1352.82 239.808V285.425H1304.73V239.808H1352.82Z" fill="#00BEFF" />
9
- <path d="M814.8 284.848H766.711V77.4971H814.8V284.848Z" fill="#00BEFF" />
10
- <path d="M1543 284.438H1514.2V160.28H1543V284.438Z" fill="#00BEFF" />
11
- <path
12
- clip-rule="evenodd"
13
- d="M1432.83 157.796C1446.98 157.796 1459.14 162.515 1468.58 170.709V160.28H1497.38V284.438H1468.58V274.01C1459.14 282.451 1446.98 286.921 1432.83 286.921C1395.1 286.921 1368.29 260.352 1368.29 222.359C1368.29 184.616 1395.1 157.796 1432.83 157.796ZM1432.83 183.778C1410.79 183.778 1396.27 199.061 1396.27 222.359C1396.27 245.658 1410.79 260.94 1432.83 260.94C1454.63 260.94 1468.9 245.658 1468.9 222.359C1468.9 199.06 1454.63 183.778 1432.83 183.778Z"
14
- fill="#00BEFF"
15
- fill-rule="evenodd"
16
- />
17
- <path d="M947.87 73.3516C1002.88 73.3516 1044.42 107.647 1053.57 159.234H1004.68C997.221 132.988 976.34 117.308 947.87 117.308C911.387 117.308 887.337 142.612 887.337 181.176C887.337 219.739 911.387 245.036 947.87 245.036C976.34 245.036 997.221 229.356 1004.68 203.109H1053.57C1044.47 254.701 1003.26 289 947.87 289C884.853 289 840.078 244.626 840.078 181.176C840.078 118.142 884.854 73.3516 947.87 73.3516Z" fill="#00BEFF" />
18
- <path d="M88.4971 39.8242L157.353 142.191L83.5371 251.524L60.9277 284.854H0L96.3154 142.191L5.37695 7H66.3047L88.4971 39.8242Z" fill="#00BEFF" />
19
- <path d="M254.314 284.855H193.387L151.914 223.71L182.548 178.551L254.314 284.855Z" fill="#00BEFF" />
20
- <path
21
- clip-rule="evenodd"
22
- d="M1179.14 73.3477C1202.77 73.3477 1223.08 81.2286 1238.84 94.9121V77.4971H1286.94V284.847H1238.84V267.431C1223.09 281.528 1202.77 288.992 1179.14 288.992C1116.12 288.992 1071.35 244.622 1071.35 181.172C1071.35 118.139 1116.12 73.3478 1179.14 73.3477ZM1179.14 117.308C1142.66 117.308 1118.61 142.604 1118.61 181.172C1118.61 219.739 1142.66 245.035 1179.14 245.035C1215.21 245.035 1238.84 219.739 1238.84 181.172C1238.84 142.605 1215.21 117.308 1179.14 117.308Z"
23
- fill="#00BEFF"
24
- fill-rule="evenodd"
25
- />
26
- <path d="M1543 145.383H1514.2V118.067H1543V145.383Z" fill="#00BEFF" />
27
- <path d="M672.466 77.501H736.31V121.457H672.466V211.448C672.466 230.939 682.415 240.891 702.313 240.891H736.309V284.852H698.999C649.246 284.851 625.203 259.968 625.203 211.449V7H672.466V77.501Z" fill="#00BEFF" />
28
- <path d="M814.8 52.6172H766.711V7H814.8V52.6172Z" fill="#00BEFF" />
29
- <path
30
- clip-rule="evenodd"
31
- d="M354.069 73.3516C417.086 73.3517 461.864 118.143 461.864 181.176C461.864 187.396 461.031 193.615 460.204 199.422H295.197C301.829 228.864 323.392 246.696 354.069 246.696C372.724 246.696 389.309 241.721 399.675 226.376H452.742C441.132 265.774 400.501 288.996 354.069 288.996C291.053 288.996 246.274 244.626 246.273 181.176C246.273 118.142 291.053 73.3516 354.069 73.3516ZM354.068 115.65C325.044 115.65 303.902 131.826 296.44 158.78H410.863C403.819 131.826 382.672 115.65 354.068 115.65Z"
32
- fill="#00BEFF"
33
- fill-rule="evenodd"
34
- />
35
- <path d="M596.957 121.453H562.962C543.064 121.453 533.114 131.409 533.114 150.899V284.847H485.852V150.899C485.852 102.38 509.894 77.4972 559.647 77.4971H596.957V121.453Z" fill="#00BEFF" />
36
- <path d="M182.552 98.6992L151.922 53.3906L188.014 0H248.941L182.552 98.6992Z" fill="#00BEFF" />
37
- </g>
1
+ <svg
2
+ fill="none"
3
+ preserveAspectRatio="xMidYMid meet"
4
+ viewBox="0 0 1543 289"
5
+ xmlns="http://www.w3.org/2000/svg"
6
+ >
7
+ <g id="Xertica.ai">
8
+ <path d="M1352.82 239.808V285.425H1304.73V239.808H1352.82Z" fill="#00BEFF" />
9
+ <path d="M814.8 284.848H766.711V77.4971H814.8V284.848Z" fill="#00BEFF" />
10
+ <path d="M1543 284.438H1514.2V160.28H1543V284.438Z" fill="#00BEFF" />
11
+ <path
12
+ clip-rule="evenodd"
13
+ d="M1432.83 157.796C1446.98 157.796 1459.14 162.515 1468.58 170.709V160.28H1497.38V284.438H1468.58V274.01C1459.14 282.451 1446.98 286.921 1432.83 286.921C1395.1 286.921 1368.29 260.352 1368.29 222.359C1368.29 184.616 1395.1 157.796 1432.83 157.796ZM1432.83 183.778C1410.79 183.778 1396.27 199.061 1396.27 222.359C1396.27 245.658 1410.79 260.94 1432.83 260.94C1454.63 260.94 1468.9 245.658 1468.9 222.359C1468.9 199.06 1454.63 183.778 1432.83 183.778Z"
14
+ fill="#00BEFF"
15
+ fill-rule="evenodd"
16
+ />
17
+ <path d="M947.87 73.3516C1002.88 73.3516 1044.42 107.647 1053.57 159.234H1004.68C997.221 132.988 976.34 117.308 947.87 117.308C911.387 117.308 887.337 142.612 887.337 181.176C887.337 219.739 911.387 245.036 947.87 245.036C976.34 245.036 997.221 229.356 1004.68 203.109H1053.57C1044.47 254.701 1003.26 289 947.87 289C884.853 289 840.078 244.626 840.078 181.176C840.078 118.142 884.854 73.3516 947.87 73.3516Z" fill="#00BEFF" />
18
+ <path d="M88.4971 39.8242L157.353 142.191L83.5371 251.524L60.9277 284.854H0L96.3154 142.191L5.37695 7H66.3047L88.4971 39.8242Z" fill="#00BEFF" />
19
+ <path d="M254.314 284.855H193.387L151.914 223.71L182.548 178.551L254.314 284.855Z" fill="#00BEFF" />
20
+ <path
21
+ clip-rule="evenodd"
22
+ d="M1179.14 73.3477C1202.77 73.3477 1223.08 81.2286 1238.84 94.9121V77.4971H1286.94V284.847H1238.84V267.431C1223.09 281.528 1202.77 288.992 1179.14 288.992C1116.12 288.992 1071.35 244.622 1071.35 181.172C1071.35 118.139 1116.12 73.3478 1179.14 73.3477ZM1179.14 117.308C1142.66 117.308 1118.61 142.604 1118.61 181.172C1118.61 219.739 1142.66 245.035 1179.14 245.035C1215.21 245.035 1238.84 219.739 1238.84 181.172C1238.84 142.605 1215.21 117.308 1179.14 117.308Z"
23
+ fill="#00BEFF"
24
+ fill-rule="evenodd"
25
+ />
26
+ <path d="M1543 145.383H1514.2V118.067H1543V145.383Z" fill="#00BEFF" />
27
+ <path d="M672.466 77.501H736.31V121.457H672.466V211.448C672.466 230.939 682.415 240.891 702.313 240.891H736.309V284.852H698.999C649.246 284.851 625.203 259.968 625.203 211.449V7H672.466V77.501Z" fill="#00BEFF" />
28
+ <path d="M814.8 52.6172H766.711V7H814.8V52.6172Z" fill="#00BEFF" />
29
+ <path
30
+ clip-rule="evenodd"
31
+ d="M354.069 73.3516C417.086 73.3517 461.864 118.143 461.864 181.176C461.864 187.396 461.031 193.615 460.204 199.422H295.197C301.829 228.864 323.392 246.696 354.069 246.696C372.724 246.696 389.309 241.721 399.675 226.376H452.742C441.132 265.774 400.501 288.996 354.069 288.996C291.053 288.996 246.274 244.626 246.273 181.176C246.273 118.142 291.053 73.3516 354.069 73.3516ZM354.068 115.65C325.044 115.65 303.902 131.826 296.44 158.78H410.863C403.819 131.826 382.672 115.65 354.068 115.65Z"
32
+ fill="#00BEFF"
33
+ fill-rule="evenodd"
34
+ />
35
+ <path d="M596.957 121.453H562.962C543.064 121.453 533.114 131.409 533.114 150.899V284.847H485.852V150.899C485.852 102.38 509.894 77.4972 559.647 77.4971H596.957V121.453Z" fill="#00BEFF" />
36
+ <path d="M182.552 98.6992L151.922 53.3906L188.014 0H248.941L182.552 98.6992Z" fill="#00BEFF" />
37
+ </g>
38
38
  </svg>