xertica-ui 2.1.10 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1043) hide show
  1. package/CHANGELOG.md +525 -469
  2. package/README.md +382 -299
  3. package/assets/xertica-logo.svg +37 -37
  4. package/assets/xertica-x-logo.svg +20 -20
  5. package/bin/cli.ts +748 -548
  6. package/bin/generate-tokens.ts +262 -262
  7. package/bin/language-config.ts +361 -0
  8. package/components/assets/xertica-orbe-animation.ts +1162 -1162
  9. package/components/assistant/code-block/CodeBlock.tsx +268 -266
  10. package/components/assistant/code-block/code-block.stories.tsx +57 -57
  11. package/components/assistant/code-block/code-block.test.tsx +44 -44
  12. package/components/assistant/code-block/index.ts +1 -1
  13. package/components/assistant/formatted-document/FormattedDocument.tsx +147 -145
  14. package/components/assistant/formatted-document/formatted-document.stories.tsx +51 -51
  15. package/components/assistant/formatted-document/formatted-document.test.tsx +42 -42
  16. package/components/assistant/formatted-document/index.ts +1 -1
  17. package/components/assistant/index.ts +6 -6
  18. package/components/assistant/markdown-message/MarkdownMessage.tsx +152 -152
  19. package/components/assistant/markdown-message/index.ts +1 -1
  20. package/components/assistant/markdown-message/markdown-message.stories.tsx +50 -50
  21. package/components/assistant/markdown-message/markdown-message.test.tsx +33 -33
  22. package/components/assistant/modern-chat-input/ModernChatInput.tsx +36 -31
  23. package/components/assistant/modern-chat-input/index.ts +1 -1
  24. package/components/assistant/modern-chat-input/modern-chat-input.stories.tsx +131 -131
  25. package/components/assistant/modern-chat-input/modern-chat-input.test.tsx +79 -79
  26. package/components/assistant/xertica-assistant/index.ts +3 -3
  27. package/components/assistant/xertica-assistant/parts/AssistantCollapsedView.tsx +99 -97
  28. package/components/assistant/xertica-assistant/parts/AssistantConversationList.tsx +106 -104
  29. package/components/assistant/xertica-assistant/parts/AssistantDocumentEditor.tsx +81 -79
  30. package/components/assistant/xertica-assistant/parts/AssistantFeedbackDialog.tsx +78 -74
  31. package/components/assistant/xertica-assistant/parts/AssistantHeader.tsx +75 -73
  32. package/components/assistant/xertica-assistant/parts/AssistantMessageBubble.tsx +560 -558
  33. package/components/assistant/xertica-assistant/parts/AssistantTabBar.tsx +67 -65
  34. package/components/assistant/xertica-assistant/parts/AssistantTypingIndicator.tsx +41 -41
  35. package/components/assistant/xertica-assistant/parts/AssistantWelcomeScreen.tsx +103 -101
  36. package/components/assistant/xertica-assistant/parts/index.ts +16 -16
  37. package/components/assistant/xertica-assistant/types.ts +134 -134
  38. package/components/assistant/xertica-assistant/use-assistant.ts +615 -608
  39. package/components/assistant/xertica-assistant/xertica-assistant.stories.tsx +407 -407
  40. package/components/assistant/xertica-assistant/xertica-assistant.test.tsx +65 -65
  41. package/components/assistant/xertica-assistant/xertica-assistant.tsx +613 -609
  42. package/components/blocks/card-patterns/ActivityCard.tsx +100 -81
  43. package/components/blocks/card-patterns/ActivityCardSkeleton.tsx +56 -0
  44. package/components/blocks/card-patterns/FeatureCard.tsx +109 -109
  45. package/components/blocks/card-patterns/FeatureCardSkeleton.tsx +63 -0
  46. package/components/blocks/card-patterns/NotificationCard.tsx +140 -137
  47. package/components/blocks/card-patterns/NotificationCardSkeleton.tsx +81 -0
  48. package/components/blocks/card-patterns/ProfileCard.tsx +114 -100
  49. package/components/blocks/card-patterns/ProfileCardSkeleton.tsx +69 -0
  50. package/components/blocks/card-patterns/ProjectCard.tsx +123 -110
  51. package/components/blocks/card-patterns/ProjectCardSkeleton.tsx +72 -0
  52. package/components/blocks/card-patterns/QuickActionCard.tsx +68 -68
  53. package/components/blocks/card-patterns/QuickActionCardSkeleton.tsx +44 -0
  54. package/components/blocks/card-patterns/card-patterns.mdx +123 -0
  55. package/components/blocks/card-patterns/card-patterns.stories.tsx +594 -515
  56. package/components/blocks/card-patterns/index.ts +29 -17
  57. package/components/blocks/index.ts +1 -1
  58. package/components/brand/branding/branding.stories.tsx +57 -57
  59. package/components/brand/index.ts +6 -6
  60. package/components/brand/language-selector/LanguageSelector.tsx +47 -12
  61. package/components/brand/language-selector/index.ts +1 -1
  62. package/components/brand/language-selector/language-selector.mdx +126 -57
  63. package/components/brand/language-selector/language-selector.stories.tsx +66 -16
  64. package/components/brand/language-selector/language-selector.test.tsx +64 -8
  65. package/components/brand/theme-toggle/ThemeToggle.tsx +70 -68
  66. package/components/brand/theme-toggle/index.ts +1 -1
  67. package/components/brand/theme-toggle/theme-toggle.stories.tsx +34 -34
  68. package/components/brand/theme-toggle/theme-toggle.test.tsx +34 -34
  69. package/components/brand/xertica-logo/XerticaLogo.stories.tsx +82 -82
  70. package/components/brand/xertica-logo/XerticaLogo.tsx +104 -104
  71. package/components/brand/xertica-logo/index.ts +1 -1
  72. package/components/brand/xertica-logo/xertica-logo.test.tsx +26 -26
  73. package/components/brand/xertica-orbe/XerticaOrbe.tsx +1927 -1927
  74. package/components/brand/xertica-orbe/index.ts +1 -1
  75. package/components/brand/xertica-orbe/xertica-orbe.stories.tsx +40 -40
  76. package/components/brand/xertica-orbe/xertica-orbe.test.tsx +19 -19
  77. package/components/brand/xertica-provider/XerticaProvider.tsx +38 -2
  78. package/components/brand/xertica-provider/index.ts +1 -1
  79. package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
  80. package/components/brand/xertica-provider/xertica-provider.test.tsx +74 -74
  81. package/components/brand/xertica-xlogo/XerticaXLogo.stories.tsx +79 -79
  82. package/components/brand/xertica-xlogo/XerticaXLogo.tsx +65 -65
  83. package/components/brand/xertica-xlogo/index.ts +1 -1
  84. package/components/brand/xertica-xlogo/xertica-xlogo.test.tsx +16 -16
  85. package/components/examples/ApiKeyMapExample.tsx +71 -71
  86. package/components/examples/DrawingMapExample.tsx +565 -565
  87. package/components/examples/FilterableMapExample.tsx +393 -393
  88. package/components/examples/LocationPickerExample.tsx +348 -348
  89. package/components/examples/MapExamples.tsx +268 -268
  90. package/components/examples/MapGmpExample.tsx +169 -169
  91. package/components/examples/MapShowcase.tsx +471 -471
  92. package/components/examples/RouteMapExamples.tsx +329 -329
  93. package/components/examples/SidebarLogoExample.tsx +65 -65
  94. package/components/examples/SimpleFilterableMap.tsx +219 -219
  95. package/components/examples/index.ts +45 -45
  96. package/components/figma/ImageWithFallback.tsx +27 -27
  97. package/components/hooks/index.ts +13 -13
  98. package/components/hooks/use-layout-shortcuts.ts +43 -43
  99. package/components/index.ts +90 -77
  100. package/components/layout/header/header.stories.tsx +204 -204
  101. package/components/layout/header/header.test.tsx +75 -75
  102. package/components/layout/header/header.tsx +349 -349
  103. package/components/layout/header/index.ts +1 -1
  104. package/components/layout/index.ts +2 -2
  105. package/components/layout/sidebar/index.ts +3 -3
  106. package/components/layout/sidebar/sidebar.mdx +1 -1
  107. package/components/layout/sidebar/sidebar.stories.tsx +586 -586
  108. package/components/layout/sidebar/sidebar.test.tsx +76 -76
  109. package/components/layout/sidebar/sidebar.tsx +1073 -1068
  110. package/components/layout/sidebar/use-sidebar.ts +104 -104
  111. package/components/media/FloatingMediaWrapper.tsx +371 -368
  112. package/components/media/audio-player/AudioPlayer.stories.tsx +124 -124
  113. package/components/media/audio-player/AudioPlayer.test.tsx +106 -106
  114. package/components/media/audio-player/AudioPlayer.tsx +765 -762
  115. package/components/media/audio-player/index.ts +1 -1
  116. package/components/media/audio-player/use-audio-player.ts +312 -312
  117. package/components/media/index.ts +3 -3
  118. package/components/media/video-player/VideoPlayer.stories.tsx +98 -98
  119. package/components/media/video-player/VideoPlayer.test.tsx +73 -73
  120. package/components/media/video-player/VideoPlayer.tsx +310 -308
  121. package/components/media/video-player/index.ts +1 -1
  122. package/components/pages/forgot-password-page/ForgotPasswordPage.stories.tsx +24 -24
  123. package/components/pages/forgot-password-page/ForgotPasswordPage.tsx +188 -188
  124. package/components/pages/forgot-password-page/forgot-password-page.test.tsx +45 -45
  125. package/components/pages/forgot-password-page/index.ts +1 -1
  126. package/components/pages/home-content/HomeContent.stories.tsx +43 -43
  127. package/components/pages/home-content/HomeContent.tsx +120 -125
  128. package/components/pages/home-content/home-content.mdx +62 -62
  129. package/components/pages/home-content/index.ts +1 -1
  130. package/components/pages/home-page/HomePage.stories.tsx +39 -39
  131. package/components/pages/home-page/HomePage.tsx +74 -75
  132. package/components/pages/home-page/home-page.mdx +53 -53
  133. package/components/pages/home-page/home-page.test.tsx +53 -53
  134. package/components/pages/home-page/index.ts +1 -1
  135. package/components/pages/index.ts +8 -8
  136. package/components/pages/login-page/LoginPage.stories.tsx +39 -39
  137. package/components/pages/login-page/LoginPage.tsx +216 -216
  138. package/components/pages/login-page/index.ts +1 -1
  139. package/components/pages/login-page/login-page.test.tsx +63 -63
  140. package/components/pages/reset-password-page/ResetPasswordPage.stories.tsx +24 -24
  141. package/components/pages/reset-password-page/ResetPasswordPage.tsx +239 -237
  142. package/components/pages/reset-password-page/index.ts +1 -1
  143. package/components/pages/template-content/TemplateContent.stories.tsx +43 -43
  144. package/components/pages/template-content/TemplateContent.tsx +1235 -1237
  145. package/components/pages/template-content/index.ts +1 -1
  146. package/components/pages/template-content/template-content.mdx +61 -61
  147. package/components/pages/template-page/TemplatePage.stories.tsx +39 -39
  148. package/components/pages/template-page/TemplatePage.tsx +62 -62
  149. package/components/pages/template-page/index.ts +1 -1
  150. package/components/pages/template-page/template-page.mdx +53 -53
  151. package/components/pages/template-page/template-page.test.tsx +52 -52
  152. package/components/pages/verify-email-page/VerifyEmailPage.stories.tsx +41 -41
  153. package/components/pages/verify-email-page/VerifyEmailPage.tsx +206 -206
  154. package/components/pages/verify-email-page/index.ts +1 -1
  155. package/components/public-api-smoke.test.tsx +52 -52
  156. package/components/shared/CustomTooltipContent.tsx +48 -48
  157. package/components/shared/assistant-utils.test.ts +16 -16
  158. package/components/shared/assistant-utils.ts +225 -225
  159. package/components/shared/error-boundary.stories.tsx +132 -132
  160. package/components/shared/error-boundary.tsx +154 -154
  161. package/components/shared/error-fallbacks.tsx +226 -226
  162. package/components/shared/layout-constants.ts +8 -8
  163. package/components/shared/navigation.ts +35 -35
  164. package/components/shared/use-mobile.test.ts +16 -16
  165. package/components/shared/use-mobile.ts +36 -36
  166. package/components/shared/utils.test.ts +14 -14
  167. package/components/shared/utils.ts +6 -6
  168. package/components/ui/accordion/accordion.mdx +8 -8
  169. package/components/ui/accordion/accordion.stories.tsx +105 -105
  170. package/components/ui/accordion/accordion.test.tsx +59 -59
  171. package/components/ui/accordion/accordion.tsx +77 -77
  172. package/components/ui/accordion/index.ts +1 -1
  173. package/components/ui/alert/alert.mdx +8 -8
  174. package/components/ui/alert/alert.stories.tsx +86 -86
  175. package/components/ui/alert/alert.test.tsx +53 -53
  176. package/components/ui/alert/alert.tsx +93 -93
  177. package/components/ui/alert/index.ts +1 -1
  178. package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
  179. package/components/ui/alert-dialog/alert-dialog.stories.tsx +84 -84
  180. package/components/ui/alert-dialog/alert-dialog.test.tsx +70 -70
  181. package/components/ui/alert-dialog/alert-dialog.tsx +149 -149
  182. package/components/ui/alert-dialog/index.ts +1 -1
  183. package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
  184. package/components/ui/aspect-ratio/aspect-ratio.stories.tsx +46 -46
  185. package/components/ui/aspect-ratio/aspect-ratio.test.tsx +28 -28
  186. package/components/ui/aspect-ratio/aspect-ratio.tsx +20 -20
  187. package/components/ui/aspect-ratio/index.ts +1 -1
  188. package/components/ui/assistant-chart/AssistantChart.tsx +64 -64
  189. package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
  190. package/components/ui/assistant-chart/assistant-chart.stories.tsx +44 -44
  191. package/components/ui/assistant-chart/assistant-chart.test.tsx +46 -46
  192. package/components/ui/assistant-chart/index.ts +1 -1
  193. package/components/ui/avatar/avatar.mdx +8 -8
  194. package/components/ui/avatar/avatar.stories.tsx +86 -86
  195. package/components/ui/avatar/avatar.test.tsx +55 -55
  196. package/components/ui/avatar/avatar.tsx +71 -71
  197. package/components/ui/avatar/index.ts +1 -1
  198. package/components/ui/badge/badge.mdx +8 -8
  199. package/components/ui/badge/badge.stories.tsx +72 -72
  200. package/components/ui/badge/badge.test.tsx +40 -40
  201. package/components/ui/badge/badge.tsx +58 -58
  202. package/components/ui/badge/index.ts +1 -1
  203. package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
  204. package/components/ui/breadcrumb/breadcrumb.stories.tsx +123 -123
  205. package/components/ui/breadcrumb/breadcrumb.test.tsx +70 -70
  206. package/components/ui/breadcrumb/breadcrumb.tsx +114 -114
  207. package/components/ui/breadcrumb/index.ts +1 -1
  208. package/components/ui/button/button.mdx +8 -8
  209. package/components/ui/button/button.stories.tsx +183 -183
  210. package/components/ui/button/button.test.tsx +64 -64
  211. package/components/ui/button/button.tsx +98 -98
  212. package/components/ui/button/index.ts +1 -1
  213. package/components/ui/calendar/calendar.mdx +8 -8
  214. package/components/ui/calendar/calendar.stories.tsx +108 -108
  215. package/components/ui/calendar/calendar.test.tsx +53 -53
  216. package/components/ui/calendar/calendar.tsx +230 -230
  217. package/components/ui/calendar/index.ts +1 -1
  218. package/components/ui/card/card.mdx +8 -8
  219. package/components/ui/card/card.stories.tsx +301 -301
  220. package/components/ui/card/card.test.tsx +55 -55
  221. package/components/ui/card/card.tsx +83 -83
  222. package/components/ui/card/index.ts +1 -1
  223. package/components/ui/carousel/carousel.mdx +8 -8
  224. package/components/ui/carousel/carousel.stories.tsx +80 -80
  225. package/components/ui/carousel/carousel.test.tsx +75 -75
  226. package/components/ui/carousel/carousel.tsx +242 -242
  227. package/components/ui/carousel/index.ts +1 -1
  228. package/components/ui/chart/chart.mdx +8 -8
  229. package/components/ui/chart/chart.stories.tsx +1328 -1328
  230. package/components/ui/chart/chart.test.tsx +178 -178
  231. package/components/ui/chart/chart.tsx +2232 -2232
  232. package/components/ui/chart/index.ts +1 -1
  233. package/components/ui/checkbox/checkbox.mdx +8 -8
  234. package/components/ui/checkbox/checkbox.stories.tsx +109 -109
  235. package/components/ui/checkbox/checkbox.test.tsx +49 -49
  236. package/components/ui/checkbox/checkbox.tsx +68 -68
  237. package/components/ui/checkbox/index.ts +1 -1
  238. package/components/ui/collapsible/collapsible.mdx +8 -8
  239. package/components/ui/collapsible/collapsible.stories.tsx +45 -45
  240. package/components/ui/collapsible/collapsible.test.tsx +51 -51
  241. package/components/ui/collapsible/collapsible.tsx +32 -32
  242. package/components/ui/collapsible/index.ts +1 -1
  243. package/components/ui/command/command.mdx +8 -8
  244. package/components/ui/command/command.stories.tsx +134 -134
  245. package/components/ui/command/command.test.tsx +48 -48
  246. package/components/ui/command/command.tsx +163 -163
  247. package/components/ui/command/index.ts +1 -1
  248. package/components/ui/context-menu/context-menu.mdx +8 -8
  249. package/components/ui/context-menu/context-menu.stories.tsx +76 -76
  250. package/components/ui/context-menu/context-menu.test.tsx +61 -61
  251. package/components/ui/context-menu/context-menu.tsx +236 -236
  252. package/components/ui/context-menu/index.ts +1 -1
  253. package/components/ui/dialog/dialog.mdx +8 -8
  254. package/components/ui/dialog/dialog.stories.tsx +174 -174
  255. package/components/ui/dialog/dialog.test.tsx +78 -78
  256. package/components/ui/dialog/dialog.tsx +189 -189
  257. package/components/ui/dialog/index.ts +1 -1
  258. package/components/ui/drawer/drawer.mdx +8 -8
  259. package/components/ui/drawer/drawer.stories.tsx +71 -71
  260. package/components/ui/drawer/drawer.test.tsx +67 -67
  261. package/components/ui/drawer/drawer.tsx +146 -146
  262. package/components/ui/drawer/index.ts +1 -1
  263. package/components/ui/dropdown-menu/dropdown-menu.mdx +8 -8
  264. package/components/ui/dropdown-menu/dropdown-menu.stories.tsx +156 -156
  265. package/components/ui/dropdown-menu/dropdown-menu.test.tsx +62 -62
  266. package/components/ui/dropdown-menu/dropdown-menu.tsx +240 -240
  267. package/components/ui/dropdown-menu/index.ts +1 -1
  268. package/components/ui/empty/empty.mdx +8 -8
  269. package/components/ui/empty/empty.stories.tsx +85 -85
  270. package/components/ui/empty/empty.test.tsx +31 -31
  271. package/components/ui/empty/empty.tsx +88 -88
  272. package/components/ui/empty/index.ts +1 -1
  273. package/components/ui/file-upload/file-upload.mdx +8 -8
  274. package/components/ui/file-upload/file-upload.stories.tsx +144 -144
  275. package/components/ui/file-upload/file-upload.test.tsx +65 -65
  276. package/components/ui/file-upload/file-upload.tsx +142 -142
  277. package/components/ui/file-upload/index.ts +2 -2
  278. package/components/ui/file-upload/use-file-upload.ts +177 -177
  279. package/components/ui/form/form.stories.tsx +85 -85
  280. package/components/ui/form/form.test.tsx +75 -75
  281. package/components/ui/form/form.tsx +163 -163
  282. package/components/ui/form/index.ts +1 -1
  283. package/components/ui/google-maps-loader/google-maps-loader.test.tsx +35 -35
  284. package/components/ui/google-maps-loader/google-maps-loader.tsx +465 -465
  285. package/components/ui/google-maps-loader/index.ts +1 -1
  286. package/components/ui/hover-card/hover-card.mdx +8 -8
  287. package/components/ui/hover-card/hover-card.stories.tsx +61 -61
  288. package/components/ui/hover-card/hover-card.test.tsx +48 -48
  289. package/components/ui/hover-card/hover-card.tsx +50 -50
  290. package/components/ui/hover-card/index.ts +1 -1
  291. package/components/ui/index.ts +400 -400
  292. package/components/ui/input/index.ts +1 -1
  293. package/components/ui/input/input.mdx +8 -8
  294. package/components/ui/input/input.stories.tsx +153 -153
  295. package/components/ui/input/input.test.tsx +47 -47
  296. package/components/ui/input/input.tsx +57 -57
  297. package/components/ui/input-otp/index.ts +1 -1
  298. package/components/ui/input-otp/input-otp.mdx +8 -8
  299. package/components/ui/input-otp/input-otp.stories.tsx +120 -120
  300. package/components/ui/input-otp/input-otp.test.tsx +74 -74
  301. package/components/ui/input-otp/input-otp.tsx +101 -101
  302. package/components/ui/label/index.ts +1 -1
  303. package/components/ui/label/label.mdx +8 -8
  304. package/components/ui/label/label.stories.tsx +74 -74
  305. package/components/ui/label/label.test.tsx +45 -45
  306. package/components/ui/label/label.tsx +53 -53
  307. package/components/ui/map/index.ts +1 -1
  308. package/components/ui/map/map.mdx +8 -8
  309. package/components/ui/map/map.stories.tsx +86 -86
  310. package/components/ui/map/map.test.tsx +82 -82
  311. package/components/ui/map/map.tsx +506 -506
  312. package/components/ui/map/mock.test.tsx +13 -13
  313. package/components/ui/map-config/index.ts +1 -1
  314. package/components/ui/map-config/map-config.ts +18 -18
  315. package/components/ui/map-layers/index.ts +1 -1
  316. package/components/ui/map-layers/map-layers.test.tsx +48 -48
  317. package/components/ui/map-layers/map-layers.tsx +126 -126
  318. package/components/ui/map.exports/index.ts +1 -1
  319. package/components/ui/map.exports/map.exports.ts +31 -31
  320. package/components/ui/menubar/index.ts +1 -1
  321. package/components/ui/menubar/menubar.mdx +8 -8
  322. package/components/ui/menubar/menubar.stories.tsx +130 -130
  323. package/components/ui/menubar/menubar.test.tsx +53 -53
  324. package/components/ui/menubar/menubar.tsx +265 -265
  325. package/components/ui/navigation-menu/index.ts +1 -1
  326. package/components/ui/navigation-menu/navigation-menu.mdx +8 -8
  327. package/components/ui/navigation-menu/navigation-menu.stories.tsx +126 -126
  328. package/components/ui/navigation-menu/navigation-menu.test.tsx +47 -47
  329. package/components/ui/navigation-menu/navigation-menu.tsx +165 -165
  330. package/components/ui/notification-badge/index.ts +1 -1
  331. package/components/ui/notification-badge/notification-badge.mdx +8 -8
  332. package/components/ui/notification-badge/notification-badge.stories.tsx +66 -66
  333. package/components/ui/notification-badge/notification-badge.test.tsx +61 -61
  334. package/components/ui/notification-badge/notification-badge.tsx +91 -91
  335. package/components/ui/page-header/index.ts +1 -1
  336. package/components/ui/page-header/page-header.stories.tsx +69 -69
  337. package/components/ui/page-header/page-header.test.tsx +37 -37
  338. package/components/ui/page-header/page-header.tsx +124 -124
  339. package/components/ui/pagination/index.ts +3 -3
  340. package/components/ui/pagination/pagination.mdx +8 -8
  341. package/components/ui/pagination/pagination.stories.tsx +210 -210
  342. package/components/ui/pagination/pagination.test.tsx +63 -63
  343. package/components/ui/pagination/pagination.tsx +140 -140
  344. package/components/ui/pagination/use-pagination.ts +173 -173
  345. package/components/ui/popover/index.ts +1 -1
  346. package/components/ui/popover/popover.mdx +8 -8
  347. package/components/ui/popover/popover.stories.tsx +73 -73
  348. package/components/ui/popover/popover.test.tsx +48 -48
  349. package/components/ui/popover/popover.tsx +54 -54
  350. package/components/ui/progress/index.ts +1 -1
  351. package/components/ui/progress/progress.mdx +8 -8
  352. package/components/ui/progress/progress.stories.tsx +55 -55
  353. package/components/ui/progress/progress.test.tsx +23 -23
  354. package/components/ui/progress/progress.tsx +68 -68
  355. package/components/ui/radio-group/index.ts +1 -1
  356. package/components/ui/radio-group/radio-group.mdx +8 -8
  357. package/components/ui/radio-group/radio-group.stories.tsx +114 -114
  358. package/components/ui/radio-group/radio-group.test.tsx +78 -78
  359. package/components/ui/radio-group/radio-group.tsx +93 -93
  360. package/components/ui/rating/index.ts +1 -1
  361. package/components/ui/rating/rating.mdx +8 -8
  362. package/components/ui/rating/rating.stories.tsx +50 -50
  363. package/components/ui/rating/rating.test.tsx +48 -48
  364. package/components/ui/rating/rating.tsx +145 -145
  365. package/components/ui/resizable/index.ts +1 -1
  366. package/components/ui/resizable/resizable.mdx +8 -8
  367. package/components/ui/resizable/resizable.stories.tsx +88 -88
  368. package/components/ui/resizable/resizable.test.tsx +61 -61
  369. package/components/ui/resizable/resizable.tsx +452 -452
  370. package/components/ui/rich-text-editor/index.ts +7 -7
  371. package/components/ui/rich-text-editor/rich-text-editor.stories.tsx +290 -290
  372. package/components/ui/rich-text-editor/rich-text-editor.test.tsx +86 -86
  373. package/components/ui/rich-text-editor/rich-text-editor.tsx +634 -634
  374. package/components/ui/rich-text-editor/use-rich-text-editor.ts +453 -453
  375. package/components/ui/route-map/index.ts +1 -1
  376. package/components/ui/route-map/route-map.mdx +8 -8
  377. package/components/ui/route-map/route-map.stories.tsx +48 -48
  378. package/components/ui/route-map/route-map.test.tsx +108 -108
  379. package/components/ui/route-map/route-map.tsx +349 -349
  380. package/components/ui/scroll-area/index.ts +1 -1
  381. package/components/ui/scroll-area/scroll-area.mdx +8 -8
  382. package/components/ui/scroll-area/scroll-area.stories.tsx +31 -31
  383. package/components/ui/scroll-area/scroll-area.test.tsx +27 -27
  384. package/components/ui/scroll-area/scroll-area.tsx +70 -70
  385. package/components/ui/search/index.ts +1 -1
  386. package/components/ui/search/search.mdx +8 -8
  387. package/components/ui/search/search.stories.tsx +107 -107
  388. package/components/ui/search/search.test.tsx +67 -67
  389. package/components/ui/search/search.tsx +141 -141
  390. package/components/ui/select/index.ts +1 -1
  391. package/components/ui/select/select.mdx +8 -8
  392. package/components/ui/select/select.stories.tsx +163 -163
  393. package/components/ui/select/select.test.tsx +99 -99
  394. package/components/ui/select/select.tsx +195 -195
  395. package/components/ui/separator/index.ts +1 -1
  396. package/components/ui/separator/separator.mdx +8 -8
  397. package/components/ui/separator/separator.stories.tsx +55 -55
  398. package/components/ui/separator/separator.test.tsx +23 -23
  399. package/components/ui/separator/separator.tsx +39 -39
  400. package/components/ui/sheet/index.ts +1 -1
  401. package/components/ui/sheet/sheet.mdx +8 -8
  402. package/components/ui/sheet/sheet.stories.tsx +93 -93
  403. package/components/ui/sheet/sheet.test.tsx +62 -62
  404. package/components/ui/sheet/sheet.tsx +149 -149
  405. package/components/ui/simple-map/index.ts +1 -1
  406. package/components/ui/simple-map/simple-map.mdx +8 -8
  407. package/components/ui/simple-map/simple-map.stories.tsx +44 -44
  408. package/components/ui/simple-map/simple-map.test.tsx +36 -36
  409. package/components/ui/simple-map/simple-map.tsx +92 -92
  410. package/components/ui/skeleton/index.ts +1 -1
  411. package/components/ui/skeleton/skeleton.mdx +8 -8
  412. package/components/ui/skeleton/skeleton.stories.tsx +36 -36
  413. package/components/ui/skeleton/skeleton.test.tsx +19 -19
  414. package/components/ui/skeleton/skeleton.tsx +25 -25
  415. package/components/ui/slider/index.ts +1 -1
  416. package/components/ui/slider/slider.mdx +8 -8
  417. package/components/ui/slider/slider.stories.tsx +44 -44
  418. package/components/ui/slider/slider.test.tsx +25 -25
  419. package/components/ui/slider/slider.tsx +66 -66
  420. package/components/ui/sonner/index.ts +1 -1
  421. package/components/ui/sonner/sonner.mdx +8 -8
  422. package/components/ui/sonner/sonner.stories.tsx +41 -41
  423. package/components/ui/sonner/sonner.test.tsx +24 -24
  424. package/components/ui/sonner/sonner.tsx +74 -74
  425. package/components/ui/stats-card/index.ts +2 -1
  426. package/components/ui/stats-card/stats-card-skeleton.tsx +62 -0
  427. package/components/ui/stats-card/stats-card.mdx +8 -8
  428. package/components/ui/stats-card/stats-card.stories.tsx +99 -77
  429. package/components/ui/stats-card/stats-card.test.tsx +34 -34
  430. package/components/ui/stats-card/stats-card.tsx +93 -93
  431. package/components/ui/stepper/index.ts +3 -3
  432. package/components/ui/stepper/stepper.mdx +8 -8
  433. package/components/ui/stepper/stepper.stories.tsx +171 -171
  434. package/components/ui/stepper/stepper.test.tsx +47 -47
  435. package/components/ui/stepper/stepper.tsx +190 -190
  436. package/components/ui/stepper/use-stepper.ts +139 -139
  437. package/components/ui/switch/index.ts +1 -1
  438. package/components/ui/switch/switch.mdx +8 -8
  439. package/components/ui/switch/switch.stories.tsx +93 -93
  440. package/components/ui/switch/switch.test.tsx +44 -44
  441. package/components/ui/switch/switch.tsx +70 -70
  442. package/components/ui/table/index.ts +1 -1
  443. package/components/ui/table/table.mdx +8 -8
  444. package/components/ui/table/table.stories.tsx +114 -114
  445. package/components/ui/table/table.test.tsx +43 -43
  446. package/components/ui/table/table.tsx +104 -104
  447. package/components/ui/tabs/index.ts +1 -1
  448. package/components/ui/tabs/tabs.mdx +8 -8
  449. package/components/ui/tabs/tabs.stories.tsx +140 -140
  450. package/components/ui/tabs/tabs.test.tsx +50 -50
  451. package/components/ui/tabs/tabs.tsx +66 -66
  452. package/components/ui/textarea/index.ts +1 -1
  453. package/components/ui/textarea/textarea.mdx +8 -8
  454. package/components/ui/textarea/textarea.stories.tsx +69 -69
  455. package/components/ui/textarea/textarea.test.tsx +41 -41
  456. package/components/ui/textarea/textarea.tsx +61 -61
  457. package/components/ui/timeline/index.ts +1 -1
  458. package/components/ui/timeline/timeline.mdx +8 -8
  459. package/components/ui/timeline/timeline.stories.tsx +97 -97
  460. package/components/ui/timeline/timeline.test.tsx +53 -53
  461. package/components/ui/timeline/timeline.tsx +124 -124
  462. package/components/ui/toggle/index.ts +1 -1
  463. package/components/ui/toggle/toggle.mdx +8 -8
  464. package/components/ui/toggle/toggle.stories.tsx +56 -56
  465. package/components/ui/toggle/toggle.test.tsx +32 -32
  466. package/components/ui/toggle/toggle.tsx +55 -55
  467. package/components/ui/toggle-group/index.ts +1 -1
  468. package/components/ui/toggle-group/toggle-group.mdx +8 -8
  469. package/components/ui/toggle-group/toggle-group.stories.tsx +66 -66
  470. package/components/ui/toggle-group/toggle-group.test.tsx +47 -47
  471. package/components/ui/toggle-group/toggle-group.tsx +79 -79
  472. package/components/ui/tooltip/index.ts +1 -1
  473. package/components/ui/tooltip/tooltip.mdx +8 -8
  474. package/components/ui/tooltip/tooltip.stories.tsx +83 -83
  475. package/components/ui/tooltip/tooltip.test.tsx +39 -39
  476. package/components/ui/tooltip/tooltip.tsx +69 -69
  477. package/components/ui/tree-view/index.ts +4 -4
  478. package/components/ui/tree-view/tree-view.mdx +8 -8
  479. package/components/ui/tree-view/tree-view.stories.tsx +154 -154
  480. package/components/ui/tree-view/tree-view.test.tsx +58 -58
  481. package/components/ui/tree-view/tree-view.tsx +171 -171
  482. package/components/ui/tree-view/use-tree-view.ts +237 -237
  483. package/components.json +892 -892
  484. package/contexts/ApiKeyContext.test.tsx +26 -26
  485. package/contexts/ApiKeyContext.tsx +196 -196
  486. package/contexts/AssistenteContext.test.tsx +17 -17
  487. package/contexts/AssistenteContext.tsx +113 -113
  488. package/contexts/AuthContext.tsx +118 -118
  489. package/contexts/BrandColorsContext.test.tsx +21 -21
  490. package/contexts/BrandColorsContext.tsx +251 -251
  491. package/contexts/LanguageContext.test.tsx +108 -16
  492. package/contexts/LanguageContext.tsx +202 -17
  493. package/contexts/LayoutContext.test.tsx +29 -29
  494. package/contexts/LayoutContext.tsx +140 -140
  495. package/contexts/ThemeContext.test.tsx +38 -38
  496. package/contexts/ThemeContext.tsx +111 -111
  497. package/contexts/index.ts +8 -8
  498. package/contexts/theme-data.ts +340 -340
  499. package/dist/{AssistantChart-DoZCyS5r.cjs → AssistantChart-9w31gdAb.cjs} +4 -4
  500. package/dist/{AssistantChart-CldVCVDe.cjs → AssistantChart-BAudAfne.cjs} +5 -5
  501. package/dist/{AssistantChart-Bdd44uBn.cjs → AssistantChart-BAx9VQvb.cjs} +127 -388
  502. package/dist/{AssistantChart-Cu3m7RBo.js → AssistantChart-BP8upjMk.js} +5 -5
  503. package/dist/{use-mobile-BXuYROXM.js → AssistantChart-BXU1ACnh.js} +958 -1671
  504. package/dist/{AssistantChart-CFhDdGyU.js → AssistantChart-CVko2A1W.js} +130 -391
  505. package/dist/{AssistantChart-C_hwFRRr.js → AssistantChart-CVzmmhx4.js} +4 -4
  506. package/dist/{use-mobile-CG2-SdXV.cjs → AssistantChart-D0A1FPYt.cjs} +980 -1700
  507. package/dist/{AudioPlayer-IAU5q5T1.cjs → AudioPlayer-1ypwE2Wh.cjs} +1 -1
  508. package/dist/AudioPlayer-BWDW6TN9.cjs +1279 -0
  509. package/dist/AudioPlayer-CM962GEh.js +1280 -0
  510. package/dist/{AudioPlayer-CySJIyvL.js → AudioPlayer-DuKXrCfy.js} +1 -1
  511. package/dist/CodeBlock-CV6dtsTM.cjs +220 -0
  512. package/dist/CodeBlock-CjeFavqV.js +221 -0
  513. package/dist/{FeatureCard-DbHWCb4E.js → FeatureCard-Cfs6Ishq.js} +221 -37
  514. package/dist/FeatureCard-ie3L8Fpr.cjs +484 -0
  515. package/dist/FeatureCardSkeleton-CAgu8stE.js +27 -0
  516. package/dist/FeatureCardSkeleton-mO3Bdm_V.cjs +26 -0
  517. package/dist/{LanguageContext-CS14yCpi.js → LanguageContext-BwhwC3G2.js} +2 -2
  518. package/dist/{LanguageContext-B_KFTCzT.cjs → LanguageContext-DvUt5jBg.cjs} +2 -2
  519. package/dist/{ThemeContext-C2EwAPDt.js → ThemeContext-BbBNoFTG.js} +2 -2
  520. package/dist/ThemeContext-BblcjQup.cjs +1855 -0
  521. package/dist/ThemeContext-Bo-W2WZH.js +1856 -0
  522. package/dist/ThemeContext-CP3a0jxy.cjs +1855 -0
  523. package/dist/{ThemeContext-vTjumZeM.cjs → ThemeContext-Cmr8Ex8H.cjs} +2 -2
  524. package/dist/ThemeContext-CpqYShLq.cjs +324 -0
  525. package/dist/{ThemeContext-CQSo4Iwc.js → ThemeContext-D3LzacmG.js} +8 -1
  526. package/dist/ThemeContext-Du2nE1PL.js +325 -0
  527. package/dist/ThemeContext-GeEBTJ3q.cjs +1621 -0
  528. package/dist/ThemeContext-JyLK9B1o.js +1622 -0
  529. package/dist/{ThemeContext-CGk3KK0k.cjs → ThemeContext-U4dEYc6C.cjs} +8 -1
  530. package/dist/ThemeContext-ept8jhXI.js +1856 -0
  531. package/dist/{VerifyEmailPage-C0c2e5n0.js → VerifyEmailPage-BE-L9mB7.js} +7 -7
  532. package/dist/VerifyEmailPage-BIBOKV7Z.js +3214 -0
  533. package/dist/{VerifyEmailPage--1Vurewl.cjs → VerifyEmailPage-BRSP-Pwt.cjs} +3 -3
  534. package/dist/{VerifyEmailPage-Cwi3kbol.cjs → VerifyEmailPage-Bae2cBXT.cjs} +7 -7
  535. package/dist/{VerifyEmailPage-DjQKRlUS.cjs → VerifyEmailPage-BiRm7Nh4.cjs} +1185 -796
  536. package/dist/VerifyEmailPage-Bvfv8HVQ.js +3214 -0
  537. package/dist/{VerifyEmailPage-BComraR7.cjs → VerifyEmailPage-CR7kb5df.cjs} +22 -12
  538. package/dist/{VerifyEmailPage-MTD7AG1Z.js → VerifyEmailPage-C_ihbcth.js} +4 -4
  539. package/dist/{VerifyEmailPage-1WwWczAn.js → VerifyEmailPage-CbgjOF0v.js} +22 -12
  540. package/dist/{VerifyEmailPage-DvMLZgFt.js → VerifyEmailPage-CdYPSJoO.js} +1 -1
  541. package/dist/VerifyEmailPage-D-FRj5TU.cjs +3213 -0
  542. package/dist/{VerifyEmailPage-s-1X3LDJ.cjs → VerifyEmailPage-DF2ilhum.cjs} +1049 -665
  543. package/dist/{VerifyEmailPage-CYXtbKi3.cjs → VerifyEmailPage-DMBh4NM9.cjs} +1 -1
  544. package/dist/{VerifyEmailPage-CgMxRb4z.js → VerifyEmailPage-DTtFfC-J.js} +3 -3
  545. package/dist/{VerifyEmailPage-CFLMls1p.cjs → VerifyEmailPage-Dt7zgA4w.cjs} +4 -4
  546. package/dist/VerifyEmailPage-EhudUdqF.js +3211 -0
  547. package/dist/VerifyEmailPage-hdB8JQGv.cjs +3213 -0
  548. package/dist/VerifyEmailPage-vYHbYK3q.js +3214 -0
  549. package/dist/XerticaProvider-AChwphCO.cjs +48 -0
  550. package/dist/XerticaProvider-AbWlr7Af.cjs +48 -0
  551. package/dist/{XerticaProvider-D-yNhF94.cjs → XerticaProvider-B8CaV7xu.cjs} +1 -1
  552. package/dist/{XerticaProvider-CEoWMTxu.js → XerticaProvider-BITjgC5p.js} +2 -2
  553. package/dist/{XerticaProvider-CllrbMEJ.cjs → XerticaProvider-By8q3Roe.cjs} +2 -2
  554. package/dist/XerticaProvider-CUYJZc32.js +49 -0
  555. package/dist/{XerticaProvider-ET0ihewn.cjs → XerticaProvider-CW9hpCdF.cjs} +2 -2
  556. package/dist/XerticaProvider-CWgby5mY.js +49 -0
  557. package/dist/XerticaProvider-CWs6EwNa.js +49 -0
  558. package/dist/XerticaProvider-CjQAQPcn.cjs +48 -0
  559. package/dist/XerticaProvider-D5lLumH-.js +49 -0
  560. package/dist/{XerticaProvider-DYq4JWtg.js → XerticaProvider-DQtvJU7m.js} +1 -1
  561. package/dist/XerticaProvider-qQUDop71.cjs +48 -0
  562. package/dist/{XerticaProvider-B7EVH-NF.js → XerticaProvider-siSt9uG2.js} +2 -2
  563. package/dist/{LanguageSelector-D6uacAIM.cjs → XerticaXLogo-8TTzBjHw.cjs} +136 -115
  564. package/dist/{LanguageSelector-B5YfbHra.js → XerticaXLogo-BWaag64t.js} +136 -115
  565. package/dist/XerticaXLogo-CFuIlYFH.js +252 -0
  566. package/dist/XerticaXLogo-CU-U-GP4.cjs +251 -0
  567. package/dist/XerticaXLogo-ChryA6xj.js +252 -0
  568. package/dist/{XerticaXLogo-CQUUjXoH.cjs → XerticaXLogo-CziKMQil.cjs} +8 -8
  569. package/dist/XerticaXLogo-DHz5SugF.js +252 -0
  570. package/dist/XerticaXLogo-DTee_y8X.cjs +251 -0
  571. package/dist/{XerticaXLogo-Cmsp-Eey.js → XerticaXLogo-DfUvz-lD.js} +9 -9
  572. package/dist/XerticaXLogo-kslQ8Tk_.cjs +251 -0
  573. package/dist/{alert-dialog-s-vmNkJ_.js → alert-dialog-iDe5VE5o.js} +3 -3
  574. package/dist/{alert-dialog-DSKByiKZ.cjs → alert-dialog-yckpaOpy.cjs} +3 -3
  575. package/dist/assistant.cjs.js +2 -2
  576. package/dist/assistant.es.js +2 -2
  577. package/dist/blocks.cjs.js +8 -1
  578. package/dist/blocks.es.js +10 -3
  579. package/dist/brand.cjs.js +2 -2
  580. package/dist/brand.es.js +2 -2
  581. package/dist/cli.js +524 -164
  582. package/dist/components/blocks/card-patterns/ActivityCardSkeleton.d.ts +19 -0
  583. package/dist/components/blocks/card-patterns/FeatureCardSkeleton.d.ts +18 -0
  584. package/dist/components/blocks/card-patterns/NotificationCardSkeleton.d.ts +21 -0
  585. package/dist/components/blocks/card-patterns/ProfileCardSkeleton.d.ts +20 -0
  586. package/dist/components/blocks/card-patterns/ProjectCardSkeleton.d.ts +18 -0
  587. package/dist/components/blocks/card-patterns/QuickActionCardSkeleton.d.ts +16 -0
  588. package/dist/components/blocks/card-patterns/index.d.ts +12 -0
  589. package/dist/components/brand/language-selector/LanguageSelector.d.ts +15 -1
  590. package/dist/components/brand/xertica-provider/XerticaProvider.d.ts +29 -1
  591. package/dist/components/index.d.ts +3 -0
  592. package/dist/components/ui/stats-card/index.d.ts +1 -0
  593. package/dist/components/ui/stats-card/stats-card-skeleton.d.ts +25 -0
  594. package/dist/contexts/LanguageContext.d.ts +66 -5
  595. package/dist/features/assistant/data/mock.d.ts +2 -2
  596. package/dist/features/assistant/hooks/useAssistantConfig.d.ts +0 -1
  597. package/dist/features/assistant/index.d.ts +1 -1
  598. package/dist/features/home/hooks/useDashboardStats.d.ts +0 -1
  599. package/dist/features/home/hooks/useFeatureCards.d.ts +0 -1
  600. package/dist/features/home/hooks/useTeamMembers.d.ts +0 -1
  601. package/dist/features/home/index.d.ts +3 -3
  602. package/dist/{google-maps-loader-Y-QkD-Li.cjs → google-maps-loader-BqsYL48U.cjs} +0 -5
  603. package/dist/{google-maps-loader-CTYySAun.js → google-maps-loader-t2IlYBzw.js} +0 -4
  604. package/dist/hooks.cjs.js +2 -1
  605. package/dist/hooks.es.js +2 -1
  606. package/dist/i18n.d.ts +13 -0
  607. package/dist/index-CkTUgOwX.js +8 -0
  608. package/dist/{index-COtD8bRW.cjs → index-D3RLKRAs.cjs} +1 -1
  609. package/dist/index.cjs.js +34 -19
  610. package/dist/index.es.js +71 -56
  611. package/dist/index.umd.js +454 -1027
  612. package/dist/layout.cjs.js +1 -1
  613. package/dist/layout.es.js +1 -1
  614. package/dist/media.cjs.js +1 -1
  615. package/dist/media.es.js +1 -1
  616. package/dist/pages.cjs.js +1 -1
  617. package/dist/pages.es.js +1 -1
  618. package/dist/{rich-text-editor-Bp3zQqMC.js → rich-text-editor-1UW3Y2JK.js} +989 -1052
  619. package/dist/{rich-text-editor-CeucBdIv.cjs → rich-text-editor-CyggTOLQ.cjs} +989 -1052
  620. package/dist/{sidebar-DQj1z3jG.cjs → sidebar-B3EYhli0.cjs} +269 -227
  621. package/dist/{sidebar-CK_0ZQHj.cjs → sidebar-B9NR0lCe.cjs} +271 -274
  622. package/dist/sidebar-BvF5I2Ue.cjs +800 -0
  623. package/dist/{sidebar-q7P2Godd.cjs → sidebar-C5B_LHek.cjs} +1 -1
  624. package/dist/{sidebar-LluMXfam.js → sidebar-CA6_ek3f.js} +269 -227
  625. package/dist/{sidebar-BxGXsDAd.cjs → sidebar-CVUGHOS_.cjs} +8 -16
  626. package/dist/{sidebar-BViy8Eeu.js → sidebar-CmvwjnVb.js} +9 -17
  627. package/dist/{sidebar-CUuOvYhK.js → sidebar-CplprZpM.js} +272 -258
  628. package/dist/{sidebar-BbVIQvlP.js → sidebar-Dz7bd3zP.js} +1 -1
  629. package/dist/sidebar-KIS0C2JH.js +801 -0
  630. package/dist/sidebar-OTO_up7Z.js +801 -0
  631. package/dist/sidebar-zowjejT2.cjs +800 -0
  632. package/dist/skeleton-4zoHiFJ_.cjs +83 -0
  633. package/dist/skeleton-C4bHqUBf.js +84 -0
  634. package/dist/ui.cjs.js +12 -11
  635. package/dist/ui.es.js +46 -45
  636. package/dist/{use-audio-player-nv8ZSGa1.js → use-audio-player-Bkh23vQ3.js} +3 -7
  637. package/dist/{use-audio-player-NKsWyjWu.cjs → use-audio-player-Dn1NR9xN.cjs} +3 -7
  638. package/dist/{xertica-assistant-dyP7KHM5.cjs → xertica-assistant-B1IaHXnB.cjs} +388 -529
  639. package/dist/{xertica-assistant-ciJaWqm1.js → xertica-assistant-BMqdyRVi.js} +10 -28
  640. package/dist/{xertica-assistant-BdiZag0h.js → xertica-assistant-BbgzsgsG.js} +539 -562
  641. package/dist/{xertica-assistant-V_IdW4WF.cjs → xertica-assistant-Bj3vBCq_.cjs} +9 -27
  642. package/dist/{xertica-assistant-yX1CFBBo.js → xertica-assistant-DPsESB6t.js} +390 -531
  643. package/dist/{CodeBlock-7TTgmdGG.cjs → xertica-assistant-Qp3ydksa.cjs} +51 -263
  644. package/dist/{xertica-assistant-DUBpmEgo.cjs → xertica-assistant-d2qs2Vd9.cjs} +538 -561
  645. package/dist/{CodeBlock-DnYNI8rQ.js → xertica-assistant-gnCJdcZY.js} +7 -219
  646. package/dist/xertica-ui.css +2 -2
  647. package/docs/ai-usage.md +195 -195
  648. package/docs/architecture-improvements.md +456 -476
  649. package/docs/architecture.md +306 -273
  650. package/docs/components/accordion.md +109 -109
  651. package/docs/components/alert-dialog.md +127 -127
  652. package/docs/components/alert.md +106 -106
  653. package/docs/components/aspect-ratio.md +58 -58
  654. package/docs/components/assistant-chart.md +47 -47
  655. package/docs/components/assistant.md +426 -426
  656. package/docs/components/audio-player.md +167 -167
  657. package/docs/components/avatar.md +101 -101
  658. package/docs/components/badge.md +84 -84
  659. package/docs/components/branding.md +252 -249
  660. package/docs/components/breadcrumb.md +104 -104
  661. package/docs/components/button.md +156 -156
  662. package/docs/components/calendar.md +141 -141
  663. package/docs/components/card-patterns.md +445 -376
  664. package/docs/components/card.md +245 -245
  665. package/docs/components/carousel.md +100 -100
  666. package/docs/components/chart.md +638 -638
  667. package/docs/components/checkbox.md +88 -88
  668. package/docs/components/code-block.md +105 -105
  669. package/docs/components/collapsible.md +86 -86
  670. package/docs/components/command.md +113 -113
  671. package/docs/components/context-menu.md +81 -81
  672. package/docs/components/dialog.md +198 -198
  673. package/docs/components/drawer.md +105 -105
  674. package/docs/components/dropdown-menu.md +127 -127
  675. package/docs/components/empty.md +127 -127
  676. package/docs/components/error-boundary.md +191 -191
  677. package/docs/components/file-upload.md +189 -189
  678. package/docs/components/floating-media-wrapper.md +63 -63
  679. package/docs/components/form.md +177 -177
  680. package/docs/components/formatted-document.md +105 -105
  681. package/docs/components/google-maps-loader.md +44 -44
  682. package/docs/components/header.md +177 -177
  683. package/docs/components/hooks.md +430 -425
  684. package/docs/components/hover-card.md +86 -86
  685. package/docs/components/image-with-fallback.md +107 -107
  686. package/docs/components/input-otp.md +95 -95
  687. package/docs/components/input.md +130 -130
  688. package/docs/components/label.md +69 -69
  689. package/docs/components/language-selector.md +71 -16
  690. package/docs/components/map-layers.md +138 -138
  691. package/docs/components/map.md +84 -84
  692. package/docs/components/markdown-message.md +47 -47
  693. package/docs/components/menubar.md +89 -89
  694. package/docs/components/modern-chat-input.md +164 -164
  695. package/docs/components/navigation-menu.md +83 -83
  696. package/docs/components/notification-badge.md +78 -78
  697. package/docs/components/page-header.md +93 -93
  698. package/docs/components/pages.md +309 -309
  699. package/docs/components/pagination.md +334 -334
  700. package/docs/components/popover.md +116 -116
  701. package/docs/components/progress.md +103 -103
  702. package/docs/components/radio-group.md +133 -133
  703. package/docs/components/rating.md +77 -77
  704. package/docs/components/resizable.md +84 -84
  705. package/docs/components/rich-text-editor.md +255 -255
  706. package/docs/components/route-map.md +124 -124
  707. package/docs/components/scroll-area.md +58 -58
  708. package/docs/components/search.md +87 -87
  709. package/docs/components/select.md +144 -144
  710. package/docs/components/separator.md +58 -58
  711. package/docs/components/sheet.md +122 -122
  712. package/docs/components/sidebar.md +314 -314
  713. package/docs/components/simple-map.md +51 -51
  714. package/docs/components/skeleton.md +99 -99
  715. package/docs/components/slider.md +84 -84
  716. package/docs/components/sonner.md +115 -115
  717. package/docs/components/stats-card.md +120 -120
  718. package/docs/components/stepper.md +268 -268
  719. package/docs/components/switch.md +106 -106
  720. package/docs/components/table.md +138 -138
  721. package/docs/components/tabs.md +117 -117
  722. package/docs/components/textarea.md +86 -86
  723. package/docs/components/theme-toggle.md +73 -73
  724. package/docs/components/timeline.md +121 -121
  725. package/docs/components/toggle-group.md +68 -68
  726. package/docs/components/toggle.md +62 -62
  727. package/docs/components/tooltip.md +116 -116
  728. package/docs/components/tree-view.md +238 -238
  729. package/docs/components/use-mobile.md +96 -96
  730. package/docs/components/video-player.md +68 -68
  731. package/docs/components/xertica-logo.md +36 -36
  732. package/docs/components/xertica-orbe.md +35 -35
  733. package/docs/components/xertica-provider.md +65 -65
  734. package/docs/components/xertica-xlogo.md +35 -35
  735. package/docs/decision-tree.md +293 -293
  736. package/docs/doc-audit.md +243 -224
  737. package/docs/form-sizing.md +162 -162
  738. package/docs/getting-started.md +591 -568
  739. package/docs/guidelines.md +328 -222
  740. package/docs/i18n.md +324 -43
  741. package/docs/installation.md +267 -267
  742. package/docs/layout.md +143 -143
  743. package/docs/llms.md +295 -295
  744. package/docs/patterns/analytics.md +194 -194
  745. package/docs/patterns/crud.md +149 -149
  746. package/docs/patterns/dashboard.md +138 -138
  747. package/docs/patterns/detail-page.md +296 -296
  748. package/docs/patterns/form.md +241 -241
  749. package/docs/patterns/login.md +156 -156
  750. package/docs/patterns/settings.md +368 -368
  751. package/docs/patterns/wizard.md +213 -213
  752. package/docs/state-management.md +289 -283
  753. package/guidelines/Guidelines.md +406 -257
  754. package/hooks/useTheme.test.tsx +16 -16
  755. package/hooks/useTheme.ts +4 -4
  756. package/imports/Podcast.tsx +540 -540
  757. package/imports/XerticaAi.tsx +46 -46
  758. package/imports/XerticaX.tsx +15 -15
  759. package/imports/svg-aueiaqngck.ts +20 -20
  760. package/imports/svg-v9krss1ozd.ts +23 -23
  761. package/imports/svg-vhrdofe3qe.ts +6 -6
  762. package/llms-compact.txt +1 -1
  763. package/llms-full.txt +5 -2
  764. package/llms.txt +186 -186
  765. package/mcp/resources.json +22 -22
  766. package/mcp/tools.json +35 -35
  767. package/package.json +213 -213
  768. package/scripts/ai-validator.ts +91 -91
  769. package/scripts/cleanup-case-dupes.ts +62 -62
  770. package/scripts/generate-ai-manifests.ts +107 -107
  771. package/styles/globals.css +13 -13
  772. package/styles/xertica/app-overrides/chat.css +61 -61
  773. package/styles/xertica/app-overrides/scrollbar.css +33 -33
  774. package/styles/xertica/base.css +71 -71
  775. package/styles/xertica/integrations/google-maps.css +76 -76
  776. package/styles/xertica/integrations/sonner.css +73 -73
  777. package/styles/xertica/theme-map.css +99 -99
  778. package/styles/xertica/tokens.css +236 -236
  779. package/templates/.prettierignore +4 -4
  780. package/templates/.prettierrc +10 -10
  781. package/templates/CLAUDE.md +180 -180
  782. package/templates/eslint.config.js +26 -26
  783. package/templates/guidelines/Guidelines.md +553 -335
  784. package/templates/package.json +69 -69
  785. package/templates/postcss.config.js +6 -6
  786. package/templates/src/app/App.tsx +46 -46
  787. package/templates/src/app/components/AppLayout.tsx +55 -55
  788. package/templates/src/app/components/AuthGuard.tsx +82 -82
  789. package/templates/src/app/context/AuthContext.tsx +108 -108
  790. package/templates/src/features/assistant/data/mock.ts +21 -12
  791. package/templates/src/features/assistant/hooks/useAssistantConfig.ts +4 -3
  792. package/templates/src/features/assistant/index.ts +5 -5
  793. package/templates/src/features/auth/index.ts +4 -4
  794. package/templates/src/features/auth/ui/AuthPageShell.tsx +32 -32
  795. package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +70 -70
  796. package/templates/src/features/auth/ui/LoginContent.tsx +90 -90
  797. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +177 -177
  798. package/templates/src/features/auth/ui/SocialLoginButtons.tsx +73 -73
  799. package/templates/src/features/auth/ui/VerifyEmailContent.tsx +82 -82
  800. package/templates/src/features/home/data/mock.ts +35 -35
  801. package/templates/src/features/home/hooks/useFeatureCards.ts +4 -3
  802. package/templates/src/features/home/index.ts +11 -11
  803. package/templates/src/features/home/store/dashboardStore.ts +25 -25
  804. package/templates/src/features/home/ui/HomeContent.tsx +119 -121
  805. package/templates/src/features/template/index.ts +5 -5
  806. package/templates/src/features/template/ui/CrudTemplate.tsx +32 -17
  807. package/templates/src/features/template/ui/DashboardTemplate.tsx +31 -15
  808. package/templates/src/features/template/ui/FormTemplate.tsx +21 -21
  809. package/templates/src/features/template/ui/LoginTemplate.tsx +14 -7
  810. package/templates/src/features/template/ui/TemplateContent.tsx +403 -288
  811. package/templates/src/i18n.ts +97 -11
  812. package/templates/src/locales/en/common.json +21 -0
  813. package/templates/src/locales/en/components/activityCard.json +10 -0
  814. package/templates/src/locales/en/components/assistant.json +105 -0
  815. package/templates/src/locales/en/components/media.json +29 -0
  816. package/templates/src/locales/en/components/notificationCard.json +5 -0
  817. package/templates/src/locales/en/components/profileCard.json +8 -0
  818. package/templates/src/locales/en/components/projectCard.json +10 -0
  819. package/templates/src/locales/en/components/sidebar.json +14 -0
  820. package/templates/src/locales/en/components/stats.json +8 -0
  821. package/templates/src/locales/en/components/team.json +14 -0
  822. package/templates/src/locales/en/errors.json +9 -0
  823. package/templates/src/locales/en/languageSelector.json +7 -0
  824. package/templates/src/locales/en/nav.json +6 -0
  825. package/templates/src/locales/en/pages/crudTemplate.json +25 -0
  826. package/templates/src/locales/en/pages/dashboardTemplate.json +20 -0
  827. package/templates/src/locales/en/pages/formTemplate.json +16 -0
  828. package/templates/src/locales/en/pages/home.json +7 -0
  829. package/templates/src/locales/en/pages/login.json +15 -0
  830. package/templates/src/locales/en/pages/loginTemplate.json +9 -0
  831. package/templates/src/locales/en/pages/resetPassword.json +18 -0
  832. package/templates/src/locales/en/pages/templates.json +317 -0
  833. package/templates/src/locales/en/pages/verifyEmail.json +12 -0
  834. package/templates/src/locales/en/themeToggle.json +6 -0
  835. package/templates/src/locales/es/common.json +21 -0
  836. package/templates/src/locales/es/components/activityCard.json +10 -0
  837. package/templates/src/locales/es/components/assistant.json +105 -0
  838. package/templates/src/locales/es/components/media.json +29 -0
  839. package/templates/src/locales/es/components/notificationCard.json +5 -0
  840. package/templates/src/locales/es/components/profileCard.json +8 -0
  841. package/templates/src/locales/es/components/projectCard.json +10 -0
  842. package/templates/src/locales/es/components/sidebar.json +14 -0
  843. package/templates/src/locales/es/components/stats.json +8 -0
  844. package/templates/src/locales/es/components/team.json +14 -0
  845. package/templates/src/locales/es/errors.json +9 -0
  846. package/templates/src/locales/es/languageSelector.json +7 -0
  847. package/templates/src/locales/es/nav.json +6 -0
  848. package/templates/src/locales/es/pages/crudTemplate.json +25 -0
  849. package/templates/src/locales/es/pages/dashboardTemplate.json +20 -0
  850. package/templates/src/locales/es/pages/formTemplate.json +16 -0
  851. package/templates/src/locales/es/pages/home.json +7 -0
  852. package/templates/src/locales/es/pages/login.json +15 -0
  853. package/templates/src/locales/es/pages/loginTemplate.json +9 -0
  854. package/templates/src/locales/es/pages/resetPassword.json +18 -0
  855. package/templates/src/locales/es/pages/templates.json +317 -0
  856. package/templates/src/locales/es/pages/verifyEmail.json +12 -0
  857. package/templates/src/locales/es/themeToggle.json +6 -0
  858. package/templates/src/locales/pt-BR/common.json +21 -0
  859. package/templates/src/locales/pt-BR/components/activityCard.json +10 -0
  860. package/templates/src/locales/pt-BR/components/assistant.json +105 -0
  861. package/templates/src/locales/pt-BR/components/media.json +29 -0
  862. package/templates/src/locales/pt-BR/components/notificationCard.json +5 -0
  863. package/templates/src/locales/pt-BR/components/profileCard.json +8 -0
  864. package/templates/src/locales/pt-BR/components/projectCard.json +10 -0
  865. package/templates/src/locales/pt-BR/components/sidebar.json +14 -0
  866. package/templates/src/locales/pt-BR/components/stats.json +8 -0
  867. package/templates/src/locales/pt-BR/components/team.json +14 -0
  868. package/templates/src/locales/pt-BR/errors.json +9 -0
  869. package/templates/src/locales/pt-BR/languageSelector.json +7 -0
  870. package/templates/src/locales/pt-BR/nav.json +6 -0
  871. package/templates/src/locales/pt-BR/pages/crudTemplate.json +25 -0
  872. package/templates/src/locales/pt-BR/pages/dashboardTemplate.json +20 -0
  873. package/templates/src/locales/pt-BR/pages/formTemplate.json +16 -0
  874. package/templates/src/locales/pt-BR/pages/home.json +7 -0
  875. package/templates/src/locales/pt-BR/pages/login.json +15 -0
  876. package/templates/src/locales/pt-BR/pages/loginTemplate.json +9 -0
  877. package/templates/src/locales/pt-BR/pages/resetPassword.json +18 -0
  878. package/templates/src/locales/pt-BR/pages/templates.json +317 -0
  879. package/templates/src/locales/pt-BR/pages/verifyEmail.json +12 -0
  880. package/templates/src/locales/pt-BR/themeToggle.json +6 -0
  881. package/templates/src/main.tsx +11 -11
  882. package/templates/src/pages/AssistantPage.tsx +463 -463
  883. package/templates/src/pages/ForgotPasswordPage.tsx +6 -6
  884. package/templates/src/pages/HomePage.tsx +49 -50
  885. package/templates/src/pages/LoginPage.tsx +10 -10
  886. package/templates/src/pages/ResetPasswordPage.tsx +6 -6
  887. package/templates/src/pages/TemplatePage.tsx +28 -28
  888. package/templates/src/pages/VerifyEmailPage.tsx +6 -6
  889. package/templates/src/shared/config/navigation.ts +19 -19
  890. package/templates/src/shared/error-boundary.tsx +154 -154
  891. package/templates/src/shared/error-fallbacks.tsx +226 -226
  892. package/templates/src/shared/lib/auth.ts +20 -20
  893. package/templates/src/shared/types/auth.ts +3 -3
  894. package/templates/src/styles/index.css +95 -95
  895. package/templates/src/styles/xertica/tokens.css +236 -236
  896. package/templates/tsconfig.json +25 -25
  897. package/templates/tsconfig.node.json +12 -12
  898. package/templates/vite-env.d.ts +1 -1
  899. package/templates/vite.config.ts +51 -21
  900. package/utils/color-utils.ts +72 -72
  901. package/utils/demo-responses.test.ts +10 -10
  902. package/utils/demo-responses.ts +151 -151
  903. package/utils/gemini.test.ts +25 -25
  904. package/utils/gemini.ts +155 -155
  905. package/dist/AssistantChart-DIpshm3i.js +0 -4784
  906. package/dist/AssistantChart-zjsy2GaZ.cjs +0 -4810
  907. package/dist/AudioPlayer-B1lt5cPl.cjs +0 -989
  908. package/dist/AudioPlayer-BZ7bibzU.cjs +0 -982
  909. package/dist/AudioPlayer-C12BjQBV.cjs +0 -997
  910. package/dist/AudioPlayer-CFeV8t-5.cjs +0 -936
  911. package/dist/AudioPlayer-CGRUtUdN.js +0 -937
  912. package/dist/AudioPlayer-DMcG_c7L.js +0 -990
  913. package/dist/AudioPlayer-DcFKRJE_.js +0 -998
  914. package/dist/AudioPlayer-e8LfNoqO.js +0 -983
  915. package/dist/CodeBlock-BeSt1h5P.js +0 -2078
  916. package/dist/CodeBlock-BgfYL_rD.cjs +0 -2094
  917. package/dist/CodeBlock-BlcqlA9M.cjs +0 -2094
  918. package/dist/CodeBlock-Bnmeu5ez.cjs +0 -2094
  919. package/dist/CodeBlock-BtfPlbAI.js +0 -2078
  920. package/dist/CodeBlock-CIySIuYr.js +0 -2078
  921. package/dist/CodeBlock-CuPtUM-7.cjs +0 -2094
  922. package/dist/CodeBlock-D6ffWXgc.js +0 -2078
  923. package/dist/CodeBlock-D8dcwbit.cjs +0 -2094
  924. package/dist/CodeBlock-DMZrFnlw.cjs +0 -2094
  925. package/dist/CodeBlock-DlBehYN8.js +0 -2078
  926. package/dist/CodeBlock-DvKWbSnE.cjs +0 -2094
  927. package/dist/CodeBlock-DwMCfkFY.js +0 -2078
  928. package/dist/CodeBlock-Dy6CNYyj.js +0 -2078
  929. package/dist/CodeBlock-U1pPOQI7.cjs +0 -2094
  930. package/dist/CodeBlock-f_GpNhEB.js +0 -2078
  931. package/dist/CodeBlock-oB6u8nI1.js +0 -2078
  932. package/dist/CodeBlock-tZC31B73.cjs +0 -2094
  933. package/dist/FeatureCard-CxC-7C-C.cjs +0 -300
  934. package/dist/ImageWithFallback-CGtidP6B.cjs +0 -4542
  935. package/dist/ImageWithFallback-lsg3pdFg.js +0 -4508
  936. package/dist/LayoutContext-BAql6ZRY.js +0 -97
  937. package/dist/LayoutContext-BvK-ggDa.cjs +0 -96
  938. package/dist/ThemeContext-BoH4NLfN.js +0 -734
  939. package/dist/ThemeContext-r69W20Xg.cjs +0 -733
  940. package/dist/VerifyEmailPage-COiyNl1y.js +0 -2825
  941. package/dist/VerifyEmailPage-CqKsR2v8.js +0 -2827
  942. package/dist/XerticaOrbe-KL1RBHzw.cjs +0 -1354
  943. package/dist/XerticaOrbe-zwS1p2a8.js +0 -1355
  944. package/dist/XerticaProvider-6btlAlzc.js +0 -17
  945. package/dist/XerticaProvider-BNoNOxQ5.cjs +0 -16
  946. package/dist/XerticaProvider-BlY2limY.cjs +0 -38
  947. package/dist/XerticaProvider-DDuiIcKo.js +0 -39
  948. package/dist/XerticaProvider-cI9hSs27.cjs +0 -38
  949. package/dist/XerticaProvider-hSwhNQex.js +0 -39
  950. package/dist/breadcrumb-CqJ7bHY5.js +0 -161
  951. package/dist/breadcrumb-m9Hb2_XN.cjs +0 -177
  952. package/dist/components/assistant/xertica-assistant/hooks/index.d.ts +0 -6
  953. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-conversations.d.ts +0 -21
  954. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-messages.d.ts +0 -49
  955. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-suggestions.d.ts +0 -16
  956. package/dist/components/blocks/audio-player/AudioPlayer.d.ts +0 -35
  957. package/dist/components/blocks/audio-player/index.d.ts +0 -1
  958. package/dist/components/blocks/document-editor/DocumentEditor.d.ts +0 -26
  959. package/dist/components/blocks/document-editor/index.d.ts +0 -1
  960. package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +0 -41
  961. package/dist/components/blocks/podcast-player/index.d.ts +0 -1
  962. package/dist/components/ui/chart/parts/chart-dashboard.d.ts +0 -113
  963. package/dist/components/ui/chart/parts/chart-metric.d.ts +0 -118
  964. package/dist/components/ui/chart/parts/chart-primitives.d.ts +0 -101
  965. package/dist/components/ui/chart/parts/chart-shared.d.ts +0 -20
  966. package/dist/components/ui/chart/parts/chart-utils.d.ts +0 -12
  967. package/dist/components/ui/chart/parts/index.d.ts +0 -5
  968. package/dist/dropdown-menu-BDB5CmQs.cjs +0 -247
  969. package/dist/dropdown-menu-DQidbKBD.js +0 -231
  970. package/dist/google-maps-loader-BFWp6VPd.js +0 -287
  971. package/dist/google-maps-loader-eS3uQ5TA.cjs +0 -287
  972. package/dist/header-Cgy6vYPk.cjs +0 -731
  973. package/dist/header-DRlT4jgI.js +0 -715
  974. package/dist/header-Dux00SI4.cjs +0 -731
  975. package/dist/header-EkGKXPsD.js +0 -715
  976. package/dist/header-WfEywpyc.cjs +0 -731
  977. package/dist/header-tifNQn2U.js +0 -715
  978. package/dist/index-BhapVLVj.js +0 -8
  979. package/dist/index-D6fxYEY8.cjs +0 -7
  980. package/dist/index-DW5tYe26.js +0 -8
  981. package/dist/input-2R4loU86.js +0 -127
  982. package/dist/input-DWANSKGb.cjs +0 -145
  983. package/dist/progress-DPtzoVV8.js +0 -175
  984. package/dist/progress-EeaoqqUs.cjs +0 -191
  985. package/dist/rich-text-editor-0mraWT5y.cjs +0 -2376
  986. package/dist/rich-text-editor-B6jMRLzk.cjs +0 -1939
  987. package/dist/rich-text-editor-B8_oYcIR.js +0 -1730
  988. package/dist/rich-text-editor-B9UbSXNb.js +0 -1203
  989. package/dist/rich-text-editor-BYuRBNBU.js +0 -2373
  990. package/dist/rich-text-editor-Bb9pySTs.cjs +0 -2374
  991. package/dist/rich-text-editor-BcL6L3cm.cjs +0 -2374
  992. package/dist/rich-text-editor-BoVZYtTs.cjs +0 -2391
  993. package/dist/rich-text-editor-CMgSN_w2.js +0 -1189
  994. package/dist/rich-text-editor-CPV1lEPH.cjs +0 -1748
  995. package/dist/rich-text-editor-CoKqbCtu.cjs +0 -1799
  996. package/dist/rich-text-editor-Cw56T_mB.js +0 -2356
  997. package/dist/rich-text-editor-Cyt8qs2b.js +0 -1921
  998. package/dist/rich-text-editor-D6H84OcX.cjs +0 -1220
  999. package/dist/rich-text-editor-D76gD-QI.js +0 -2328
  1000. package/dist/rich-text-editor-DKkokOnA.js +0 -1781
  1001. package/dist/rich-text-editor-DNsdpN64.cjs +0 -2359
  1002. package/dist/rich-text-editor-DfG8bCyY.js +0 -2358
  1003. package/dist/rich-text-editor-Dxjw31Z4.js +0 -2341
  1004. package/dist/rich-text-editor-DzP0Epmb.js +0 -2356
  1005. package/dist/rich-text-editor-lyYE2ZG5.cjs +0 -1207
  1006. package/dist/rich-text-editor-skplNlBM.cjs +0 -2345
  1007. package/dist/select-Bkbr0f-Z.cjs +0 -162
  1008. package/dist/select-CvIVdX2n.js +0 -145
  1009. package/dist/sidebar-Djn5syhi.cjs +0 -786
  1010. package/dist/sidebar-_rT7rBMk.js +0 -787
  1011. package/dist/slider-Bc5Hd0y1.js +0 -56
  1012. package/dist/slider-N7hFFj6X.cjs +0 -73
  1013. package/dist/tooltip-Ded96neP.cjs +0 -137
  1014. package/dist/tooltip-HDOoD2-0.js +0 -120
  1015. package/dist/use-audio-player-BkmEmj8Q.js +0 -185
  1016. package/dist/use-audio-player-CLFTWFW1.cjs +0 -184
  1017. package/dist/use-file-upload-BcjEo2S5.js +0 -404
  1018. package/dist/use-file-upload-CRJR68Tj.cjs +0 -403
  1019. package/dist/use-mobile-B0hNy_Y6.cjs +0 -4303
  1020. package/dist/use-mobile-Bbd51ASU.cjs +0 -4392
  1021. package/dist/use-mobile-Bk6CX-TC.js +0 -4359
  1022. package/dist/use-mobile-BvYdisLP.js +0 -4202
  1023. package/dist/use-mobile-BzuxjzNX.cjs +0 -4392
  1024. package/dist/use-mobile-CKb5pqTs.js +0 -4269
  1025. package/dist/use-mobile-CYuAuGDl.js +0 -4202
  1026. package/dist/use-mobile-CaENcqm-.js +0 -4508
  1027. package/dist/use-mobile-CbrYgJGJ.js +0 -4203
  1028. package/dist/use-mobile-DMOvImGQ.cjs +0 -4542
  1029. package/dist/use-mobile-DRB3BQgD.cjs +0 -4235
  1030. package/dist/use-mobile-DZvv7QMR.js +0 -4359
  1031. package/dist/use-mobile-DdI_TXam.cjs +0 -4235
  1032. package/dist/use-mobile-DlceKf8a.js +0 -4359
  1033. package/dist/use-mobile-DsOnow1o.cjs +0 -4236
  1034. package/dist/use-mobile-Kcj6jSnK.cjs +0 -4392
  1035. package/dist/use-mobile-bnKcua_i.js +0 -4202
  1036. package/dist/use-mobile-ncXBeE2z.cjs +0 -4235
  1037. package/dist/use-rich-text-editor-DjiddBGv.js +0 -282
  1038. package/dist/use-rich-text-editor-lpeswbCs.cjs +0 -281
  1039. package/templates/src/locales/en.json +0 -79
  1040. package/templates/src/locales/es.json +0 -79
  1041. package/templates/src/locales/pt-BR.json +0 -79
  1042. package/dist/{rich-text-editor-DgF8s7xW.js → rich-text-editor-BmsjY03B.js} +26 -26
  1043. package/dist/{rich-text-editor-mWoaSCE4.cjs → rich-text-editor-GS2kpTAK.cjs} +26 -26
package/CHANGELOG.md CHANGED
@@ -1,469 +1,525 @@
1
- # Changelog
2
-
3
- All notable changes to `xertica-ui` will be documented in this file.
4
-
5
- Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
- Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ---
9
-
10
- ## [2.1.10] — 2026-05-20
11
-
12
- ### Added
13
-
14
- - **`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`).
15
- - **`ErrorBoundary` — três variantes pré-configuradas** em `components/shared/error-boundary.tsx`:
16
- - `AppErrorBoundary` — envolve todo o `App` antes dos providers; fallback full-screen com inline styles (funciona mesmo se o Tailwind falhar)
17
- - `PageErrorBoundary` — envolve `<Routes>` / `<AuthGuard>`; captura lazy-chunk failures e erros de renderização de página
18
- - `SectionErrorBoundary` envolve seções isoladas (tabelas, charts, assistente); um seção quebrada não derruba a página
19
- - Props: `onError` (callback para Sentry/Datadog), `resetKeys` (auto-reset quando um valor muda, ex: `[location.pathname]`)
20
- - **i18n completo com `i18next` + `react-i18next`** integração completa de internacionalização:
21
- - Arquivo `i18n.ts` configurado com `pt-BR` (padrão), `en` e `es`
22
- - Locale files em `locales/pt-BR.json`, `en.json`, `es.json` com namespaces: `common`, `nav`, `home`, `stats`, `team`, `assistant`, `languageSelector`
23
- - `LanguageContext.setLanguage()` agora chama `i18n.changeLanguage()` — todos os `useTranslation()` re-renderizam
24
- - `HomeContent.tsx` e `TemplateContent.tsx` usam `useTranslation()` para todos os textos
25
- - Mock data usa `i18n.t()` (instância) para responder ao idioma ativo no `queryFn`
26
- - **`features/`camada de estado separada da UI**:
27
- - `features/home/data/mock.ts` — tipos + dados mock + funções `fetch*()` (swap point para API real)
28
- - `features/home/hooks/` — `useDashboardStats`, `useTeamMembers`, `useFeatureCards` (TanStack React Query)
29
- - `features/home/store/dashboardStore.ts` — Zustand (progress, slider, switch, activeTab)
30
- - `features/assistant/data/mock.ts` `AssistantConfig` + `fetchAssistantConfig()`
31
- - `features/assistant/hooks/useAssistantConfig.ts` React Query, staleTime 30 min
32
- - **`QueryClientProvider`** adicionado ao stack de providers em `App.tsx` como camada mais externa (abaixo de `AppErrorBoundary`)
33
- - **Lazy loading** em todas as rotas via `React.lazy()` + `<Suspense fallback={null}>` cada página é um chunk separado
34
- - **`ProtectedRoute` + `GuestRoute`** como componentes de guarda de rota baseados em `useAuth()` eliminam lógica de redirect do `AuthGuard`
35
- - **`components/shared/navigation.ts`** — fonte canônica de `RouteConfig`, `routes[]`, `getRouteByPath` e `isValidRoute` para o app devops (substituiu `routes.tsx` na raiz)
36
-
37
- ### Changed
38
-
39
- - **`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.
40
- - **`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'`.
41
- - **`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.
42
- - **`HomePage` + `TemplatePage` — sem props `user`/`onLogout`** — ambos consomem `useAuth()` diretamente; prop-drilling eliminado em toda a árvore de páginas (`HomeContent`, `TemplateContent`, `AppLayout`).
43
- - **`routes.tsx` deletado** — conteúdo movido para `components/shared/navigation.ts`; todos os imports atualizados.
44
-
45
- ### Fixed
46
-
47
- - **`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.
48
- - **`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.
49
- - **`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`.
50
- - **`useAssistant`hydration one-shot de `initialMessages`** — `hydratedRef` garante que `setMensagens(initialMessages)` ocorra apenas uma vez, evitando reset do histórico em re-renders.
51
- - **`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.
52
- - **`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.
53
- - **`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]`.
54
- - **`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.
55
- - **`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.
56
- - **`useAssistant``setConversas(savedConversations)` em loop corrigido** removido `useEffect` que chamava `setConversas` com `savedConversations = []` (default do destructuring), causando re-render infinito.
57
-
58
- ### Changed (continued)
59
-
60
- - **`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é.
61
- - **`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.
62
- - **`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`.
63
- - **`usePagination` — algoritmo deduplicado com `Set`** — reescrito usando `Set<number>` para garantir que cada página apareça exatamente uma vez.
64
- - **`TreeView` — prop `ariaLabel` + roving tabindex** — `<TreeView>` aceita `ariaLabel?: string`; roving tabindex: `focusableId = effectiveSelectedId ?? data[0]?.id`.
65
- - **`DashboardBarChart` — `topOfStack` com `useMemo`** — IIFE extraída para `React.useMemo([stacked, chartSeries])` antes do `return`.
66
- - **`useAssistant``conversasFiltradas` com `useMemo`** e tipos fortalecidos (`handleEnviarMensagem: (arg?: string | ActionType) => Promise<void>`).
67
- - **`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`.
68
-
69
- ---
70
-
71
- - **`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.
72
- - **`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.
73
- - **`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`.
74
- - **`useAssistant` — hydration one-shot de `initialMessages`**`hydratedRef` garante que `setMensagens(initialMessages)` ocorra apenas uma vez, evitando reset do histórico em re-renders.
75
- - **`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.
76
- - **`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.
77
- - **`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]`.
78
- - **`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.
79
-
80
- ### Changed
81
-
82
- - **`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é (informação sem valor de UX).
83
- - **`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 (atual/concluída).
84
- - **`Pagination` — prop `disabled` em `PaginationLink`** — `PaginationLink` aceita `disabled?: boolean`; quando ativo aplica `pointer-events-none opacity-50`, `aria-disabled`, `tabIndex={-1}` e remove `href`. `PaginationPrevious` e `PaginationNext` repassam `disabled` ao link.
85
- - **`usePagination` — algoritmo deduplicado com `Set`**o cálculo de `items` foi reescrito usando `Set<number>` para garantir que cada página apareça exatamente uma vez, eliminando edge cases do algoritmo anterior com `leftSibling === 2` / `rightSibling === totalPages - 1`.
86
- - **`TreeView` — prop `ariaLabel` + roving tabindex** — `<TreeView>` aceita `ariaLabel?: string` (padrão `"Navegação em árvore"`) aplicado ao `role="tree"`. O `tabIndex` de cada item usa roving tabindex: `focusableId = effectiveSelectedId ?? data[0]?.id` em vez de `isSelected ? 0 : -1`.
87
- - **`DashboardBarChart``topOfStack` com `useMemo`** a IIFE que calculava o conjunto de barras do topo do stack no JSX foi extraída para `React.useMemo([stacked, chartSeries])` antes do `return`, separando lógica de render.
88
- - **`useAssistant` `conversasFiltradas` com `useMemo`** substituída computação inline por `useMemo([conversas, abaSelecionada])`.
89
- - **`useAssistant` sincronização de `conversas` com `savedConversations`** — adicionado `useEffect([savedConversations])` que mantém `conversas` em sync com a prop `savedConversations`.
90
- - **`useAssistant` tipos fortalecidos** `handleEnviarMensagem` tipado como `(arg?: string | ActionType) => Promise<void>` na interface e na implementação, substituindo `string | any`.
91
- - **`sidebar.tsx`ARIA e `useMemo`** — botão de toggle recebe `aria-expanded` e `aria-controls="sidebar-nav"`; o `<nav>` recebe `id="sidebar-nav"` e `aria-label="Navegação principal"`. `labelTranslations` e `navigationItems` memoizados com `useMemo`; dependência do effect de overflow atualizada de `navigationItems.length` para `navigationItems`.
92
-
93
- ---
94
-
95
- ## [2.1.4] 2026-05-19
96
-
97
- ### Changed
98
-
99
- - **`XerticaAssistant` — decomposição em sub-componentes** — o componente monolítico (1 468 linhas) foi dividido em 9 sub-componentes focados em `parts/`: `AssistantHeader`, `AssistantCollapsedView`, `AssistantTabBar`, `AssistantWelcomeScreen`, `AssistantMessageBubble`, `AssistantTypingIndicator`, `AssistantConversationList`, `AssistantFeedbackDialog` e `AssistantDocumentEditor`. A API pública (`XerticaAssistantProps`) permanece 100% compatível.
100
- - **`useAudioPlayer` — headless hook** — toda a lógica do `AudioPlayer` foi extraída para `components/media/audio-player/use-audio-player.ts`. O componente `AudioPlayer` agora consome o hook internamente; API pública inalterada. O hook é exportado via `components/hooks/index.ts`.
101
- - **`useLayoutShortcuts` — headless hook** — registro de atalhos de teclado (Ctrl+B, Ctrl+I) extraído do `LayoutContext` para `components/hooks/use-layout-shortcuts.ts`. Exportado via `components/hooks/index.ts`.
102
- - **`CustomTooltipContent` — componente compartilhado** — implementação duplicada de tooltip customizado (existia em `sidebar.tsx` e `xertica-assistant.tsx`) consolidada em `components/shared/CustomTooltipContent.tsx`.
103
- - **`useIsMobile` — fonte única de detecção mobile** `use-sidebar.ts`, `use-assistant.ts`, `LayoutContext.tsx` e `AudioPlayer.tsx` agora importam de `components/shared/use-mobile.ts` em vez de duplicar a lógica de `matchMedia`.
104
- - **`utils/color-utils.ts` — utilitários de cor** — funções `hexToRgb`, `hexToRgba` e `isLightColor` extraídas do `BrandColorsContext` para `utils/color-utils.ts` como funções puras reutilizáveis.
105
- - **`ThemeToggle` — usa `useTheme()`**substituída referência direta ao `localStorage` pelo hook `useTheme()` do `ThemeContext`.
106
- - **`types.ts` — fonte única de tipos do assistente** — `Message`, `Conversation`, `Suggestion`, `MockResponse`, `SearchResult`, `SearchSource`, `SearchCommand` e enums relacionados movidos para `components/assistant/xertica-assistant/types.ts`. `xertica-assistant.tsx` e `AssistenteContext.tsx` re-exportam os tipos para backward compatibility.
107
-
108
- ---
109
-
110
- ## [2.1.3]2026-05-16
111
-
112
- ### Added
113
-
114
- - **Headless hooks — 4 new logic-only hooks** — all logic extracted from their UI components into standalone, tree-shakeable hooks:
115
- - **`useFileUpload`** — drag state, file validation (size + count), error messaging, and hidden input ref. Props: `maxFiles`, `maxSize`, `onFilesChange`, `onError`, `disabled`. Returns: `files`, `dragActive`, `errorMessage`, `inputRef`, `handleFiles`, `handleDrag`, `handleDrop`, `handleChange`, `removeFile`, `openFileDialog`.
116
- - **`usePagination`**computes the full page item list (page numbers + ellipsis markers) and exposes navigation helpers. Supports controlled (`page` prop) and uncontrolled modes. Props: `totalItems`, `pageSize`, `initialPage`, `page`, `onPageChange`, `siblingCount`. Returns: `currentPage`, `totalPages`, `startIndex`, `endIndex`, `canGoPrev`, `canGoNext`, `isFirstPage`, `isLastPage`, `items: PaginationPageItem[]`, `goTo`, `next`, `prev`, `first`, `last`.
117
- - **`useStepper`**step navigation with optional async `onBeforeNext` guard for per-step validation. Supports controlled (`step` prop) and uncontrolled modes. Props: `totalSteps`, `initialStep`, `step`, `onStepChange`, `onBeforeNext`. Returns: `currentStep`, `totalSteps`, `isFirstStep`, `isLastStep`, `canGoPrev`, `canGoNext`, `next` (async), `prev`, `goTo`, `reset`.
118
- - **`useTreeView`**expand/collapse state, single-node selection, full WAI-ARIA keyboard navigation (Arrow keys, Home, End, Space), and DOM focus management via `nodeRefs`. Supports controlled `selectedNodeId`. Returns: `expanded`, `effectiveSelectedId`, `nodeRefs`, `getNodeRef`, `toggleExpand`, `handleSelect`, `handleKeyDown`, `getVisibleNodes`.
119
- - **New chart types4 new Recharts wrappers** added to `components/ui/chart/chart.tsx`:
120
- - **`RadarMetricChart`**multi-axis radar chart with optional fill, dots, and multi-series overlay.
121
- - **`PieMetricChart`**pie chart with optional percentage labels and exploded slice support.
122
- - **`RadialBarMetricChart`**radial bar chart with stacked rings and configurable arc angle.
123
- - **`GaugeChart`**pure SVG semicircle gauge with needle, threshold color zones, and optional label. Supports `thresholds` array for dynamic color changes at value breakpoints.
124
- - **Chart color tokens expanded** — added `--chart-6`, `--chart-7`, `--chart-8` tokens to `styles/xertica/tokens.css`, `templates/src/styles/xertica/tokens.css`, and `bin/generate-tokens.ts`. All 8 chart tokens now use a vibrant, accessible palette.
125
- - **Headless hook stories** — added `HeadlessHook` story variant to `file-upload.stories.tsx`, `pagination.stories.tsx`, `stepper.stories.tsx`, and `tree-view.stories.tsx` demonstrating fully custom UIs built with each hook.
126
-
127
- ### Fixed
128
-
129
- - **`GaugeChart` — filled-blob visual bug for values > 50%** the SVG arc `largeArc` flag was set to `1` when `percent > 0.5`, causing the arc command to draw the reflex arc (> 180°) which rendered as a solid filled blob. Since the gauge is a semicircle (max 180°), `largeArc` is always `0`. Removed the conditional entirely and hardcoded `0` for both arc commands.
130
- - **`GaugeChart` — needle overlapping value text**the value text at `y=cy+4` was directly behind the needle pivot circle. Fixed by expanding the SVG `viewBox` from `"0 0 200 110"` to `"0 0 200 130"` and moving the value text to `y=cy+18` (13 px below the needle base circle bottom) and the label text to `y=cy+36`.
131
-
132
- ### Changed
133
-
134
- - **`FileUpload` component** — refactored to consume `useFileUpload` internally; public API unchanged.
135
- - **`TreeView` component** — refactored to consume `useTreeView` internally; public API unchanged.
136
- - **`Stepper` component** — refactored to consume `useStepper` internally; public API unchanged.
137
- - **Documentation** — updated `docs/components/chart.md`, `docs/components/file-upload.md`, `docs/components/pagination.md`, `docs/components/stepper.md`, and `docs/components/tree-view.md` with full hook API reference, props/return tables, controlled/uncontrolled examples, and AI Rules sections.
138
-
139
- ---
140
-
141
- ## [2.1.2]2026-05-14
142
-
143
- ### Fixed
144
-
145
- - **`MarkdownMessage` — suporte a tabelas GFM** — o parser regex do componente não convertia blocos de tabela Markdown (`| col | col |`) em HTML. Adicionada transformação de tabelas GFM completa (header, separador, linhas de dados) com estilos do design system (`border-border`, `hover:bg-muted/50`, `rounded-[var(--radius)]`, `overflow-x-auto`). A transformação roda antes das substituições de quebra de linha para evitar `<br/>` dentro das células.
146
-
147
- ### Added
148
-
149
- - **Template — `AssistantPage`** — nova página de assistente completa: sidebar em modo `assistant` aberta por padrão (largura 320px), botão "Nova Conversa" (`variant="secondary"`), busca de conversas com filtro em tempo real, histórico de 8 conversas de exemplo em 3 grupos (Hoje / Ontem / Esta semana), modal de exclusão com `AlertDialog`, modal de renomeação com `Dialog` + `Input`, simulação de conteúdo ao selecionar conversa via `initialMessages`, botão "Voltar" em `variant` primário no `Header`.
150
- - **Template — `AppLayout`** — novas props `sidebarVariant?: 'default' | 'assistant'` e `sidebarProps?: Record<string, any>` para permitir que páginas customizem a sidebar sem quebrar o contrato do layout.
151
-
152
- ---
153
-
154
- ## [2.1.1] — 2026-05-14
155
-
156
- ### Fixed
157
-
158
- - **XerticaAssistanttab bar oculta em modo chat-only** quando `showHistory` e `showFavorites` estão ambas desativadas, a barra de abas (incluindo a aba "Chat") deixa de ser renderizada, eliminando a exibição de uma aba isolada sem alternativas de navegação.
159
- - **`xertica-ui/style.css` — import duplo de Roboto removido** — o `@import url(Google Fonts/Roboto)` foi removido de `styles/globals.css`. A importação da fonte passa a ser responsabilidade do app consumidor, eliminando o alerta `@import must precede all other statements` do PostCSS quando o CSS compilado era injetado após o output do Tailwind v4.
160
-
161
- ---
162
-
163
- ## [2.1.0] — 2026-05-13
164
-
165
- ### Added
166
-
167
- - **`components/blocks/card-patterns/`** — novo domínio `blocks/` com 6 componentes de alto nível compostos exclusivamente de primitivos `ui/`:
168
- - **`FeatureCard`** — ícone com fundo colorido, título, badge opcional, descrição e botão de ação. Suporta 10 tokens de cor (`primary`, `chart-1..5`, `success`, `info`, `warning`, `destructive`). Replica o padrão de cards da Home page.
169
- - **`ActivityCard`** — feed de atividades recentes com avatar, descrição de ação, timestamp e badge por tipo (`create`, `update`, `delete`, `comment`, `deploy`).
170
- - **`ProfileCard`**card de usuário/membro com avatar, badge de status (`online`, `offline`, `away`, `busy`), linha de stats e ações primária/secundária.
171
- - **`ProjectCard`** — status de projeto com badge, barra de progresso (usa `Progress` com variant semântica por status), stack de avatares de membros e data limite.
172
- - **`QuickActionCard`** — tile de ação rápida com ícone em caixa colorida, badge e botão full-width.
173
- - **`NotificationCard`** — lista de notificações com indicador de não-lido, badge de tipo, "Marcar todas como lidas" e "Ver todas".
174
- - **Exportação do domínio `blocks/`** todos os componentes disponíveis via `import { ... } from 'xertica-ui'` e via `components/blocks/index.ts`.
175
- - **Subpath público `xertica-ui/blocks`**`FeatureCard`, `ActivityCard`, `ProfileCard`, `ProjectCard`, `QuickActionCard` e `NotificationCard` agora podem ser importados diretamente de `xertica-ui/blocks`.
176
- - **Subpath público `xertica-ui/pages`** — `LoginPage`, `HomePage`, `TemplatePage`, `ForgotPasswordPage`, `ResetPasswordPage`, `VerifyEmailPage` e seus contents agora são publicados com entrypoint dedicado.
177
- - **Documentação**criado `docs/components/card-patterns.md` com props, exemplos e layout de dashboard completo para todos os 6 block components.
178
-
179
- ### Changed
180
-
181
- - **Calendar dropdown caption styling** — quando `captionLayout="dropdown"` ou variações, os seletores de mês/ano agora têm visual de input (borda, fundo `bg-background`, focus ring `ring-primary`, `rounded-[var(--radius)]`, padding compacto fixo `px-2.5 py-1`). O `caption_label` em modo dropdown passa a usar `h-full w-full` com layout flexível.
182
- - **Calendar — prop `size` removida** — o tamanho e o arredondamento do trigger ("Pick a date") são responsabilidade do elemento trigger, não do `Calendar`. A story `InPopover` demonstra o padrão correto com `triggerSizeClasses` aplicado diretamente ao `<Button>` com `rounded-[var(--radius)]` para alinhar com o token do `Input`.
183
- - **Card stories** — enriquecidas com 3 novas variações: `WithAction` (uso de `CardAction` no header), `TeamMember` (grid de member cards com avatar e status), `SettingsCard` (lista de settings com `Separator` e `Badge`). Background `bg-muted` adicionado via decorator global da stories file para contraste com o fundo dos cards.
184
- - **Storybook — docs stories** — adicionado `render: (args) => <Component {...args} />` no nível do `meta` em todos os 60 arquivos de stories em `components/ui/`. Resolve o problema onde stories com apenas `args` (sem `render` explícito) mostravam a mesma variação repetida na aba Docs por dependerem do `projectAnnotations.render` implícito do framework React.
185
- - **Storybook`preview.tsx`** — `min-h-screen` passou a ser condicional a `layout: 'fullscreen'`, resolvendo a altura excessiva dos exemplos na aba Docs.
186
- - **Template npm** — `templates/package.json` atualizado para `2.1.0` e dependência `xertica-ui` para `^2.1.0`.
187
- - **Template version badge** — o template passa a exibir um indicador visual discreto da versão do pacote `xertica-ui` usada pelo projeto.
188
- - **Documentação** — atualizados `calendar.md` (props `captionLayout`/`buttonVariant`, nota sobre `size` no trigger), `card.md` (`CardAction` na anatomia, exemplos WithAction/Stats/TeamMember/Settings), `chart.md` (nova seção Stacked Bar Chart), `architecture.md` (domínio `blocks/` com árvore de arquivos).
189
-
190
- ### Fixed
191
-
192
- - **Chart — stacked bar radius** — em `DashboardBarChart` com `stacked`, apenas a série no topo de cada `stackId` recebe `radius={[4,4,0,0]}`; as demais recebem `radius={[0,0,0,0]}`. Elimina a borda arredondada no topo das barras intermediárias e inferiores da pilha.
193
- - **`FeatureCard` — badge overflow** — alterado de `flex items-center` para `flex flex-wrap` no container título+badge, garantindo que o badge quebre para a linha seguinte em vez de vazar fora do card quando o título ocupa toda a largura disponível.
194
-
195
- ---
196
-
197
- ## [2.0.6] — 2026-05-13
198
-
199
- ### Added
200
-
201
- - **Contrato de independência dos componentes** — documentado que `xertica-ui/style.css` é a única importação global obrigatória e que componentes públicos devem funcionar isoladamente sempre que possível.
202
- - **`useOptionalLayout`** — nova API compatível para componentes reutilizáveis consumirem o layout com fallback seguro, mantendo `useLayout` como hook estrito para apps que querem falhar cedo.
203
- - **Smoke tests de API pública** — adicionada validação de import/render dos subpaths públicos (`ui`, `brand`, `layout`, `assistant`, `media` e `hooks`).
204
- - **Exports públicos de Maps** — `useMapLayers`, `GOOGLE_MAPS_ID` e `GOOGLE_MAPS_LIBRARIES` agora são expostos pelo subpath `xertica-ui/ui`.
205
-
206
- ### Changed
207
-
208
- - **`XerticaProvider` completo** — passa a compor providers de theme, brand colors, language, layout, assistant, API keys, Google Maps, tooltip e toaster como wrapper de conveniência para apps consumidores.
209
- - **Componentes com contexto de layout** — `Header`, `Sidebar`, páginas e componentes de mídia foram ajustados para renderizar com fallback interno quando importados sem provider.
210
- - **Arquitetura FSD/FDA** tipos compartilhados do assistant foram movidos para camada neutra, evitando dependência runtime de `components/shared` para implementação de feature.
211
- - **Documentação LLM e componentes** — README, docs de provider/mapa, `llms.txt`, `llms-compact.txt` e `docs/llms.md` foram alinhados ao contrato de independência e aos subpaths consumíveis.
212
- - **Storybook Docs de UI** — páginas MDX dos componentes de UI agora renderizam as variações reais das stories, evitando repetição do mesmo exemplo nos blocos de variação.
213
- - **Storybook Maps** — stories de mapa usam um frame responsivo mais largo para melhorar a visualização na aba Docs.
214
-
215
- ### Fixed
216
-
217
- - **Guards de browser/SSR** — providers e componentes browser-only agora protegem acessos a `window`, `document`, `localStorage`, `navigator` e scripts externos.
218
- - **Google Maps sem configuração** — componentes relacionados a Maps renderizam estados de configuração/erro sem quebrar a aplicação consumidora.
219
-
220
- ---
221
-
222
- ## [2.0.5] — 2026-05-12
223
-
224
- ### Added
225
-
226
- - **`llms-compact.txt`** — novo arquivo de referência compacto para LLMs, sintetizando todos os componentes em formato reduzido ideal para contextos de tokens limitados.
227
- - **`docs/decision-tree.md`** — guia de árvore de decisão para agentes de IA selecionarem o componente correto com base nos requisitos da UI.
228
- - **`templates/CLAUDE.md`** — `CLAUDE.md` agora é scaffolded automaticamente em projetos criados via `npx xertica-ui@latest init`, fornecendo contexto arquitetural (FSD/FDA, subpath imports, tokens semânticos) para Claude Code e outros assistentes de IA.
229
- - **Storybook stories** adicionadas stories interativas para Accordion, AlertDialog, Button, Checkbox, Dialog, Input, Switch, Tabs, HomePage e TemplatePage.
230
- - **`components/pages/home-page/home-page.mdx`** e **`template-page.mdx`**novas entradas de documentação MDX para as page components.
231
-
232
- ### Changed
233
-
234
- - **`guidelines/Guidelines.md`** — reescrita completa do guia de arquitetura FSD/FDA: maior detalhamento de responsabilidades por camada, convenções de import e fluxo de adição de novas rotas.
235
- - **`components.json`** — atualização completa do registro de componentes, cobrindo todos os 97 componentes com metadados de subpath, props e variantes.
236
- - **`llms.txt`** — seção de subpath imports e mapeamento de camadas FSD/FDA atualizados.
237
- - **`vite.config.ts`**ajustes no build multi-entry para garantir correta emissão dos arquivos CJS/ESM.
238
-
239
- ### Fixed
240
-
241
- - **`npx xertica-ui init` usa versão em cache** — documentado que o npx armazena pacotes em cache localmente sem TTL curto. Sempre use `npx xertica-ui@latest init` para garantir a versão mais recente. O `templates/CLAUDE.md` scaffolded no projeto gerado inclui essa orientação.
242
-
243
- ---
244
-
245
- ## [2.0.3] — 2026-05-11
246
-
247
- ### Added
248
-
249
- - **CLI `update`atualização de projeto** — novo modo no comando `update` permite atualizar os arquivos do projeto (app shell, shared, features, pages) para qualquer versão publicada do `xertica-ui`, com seleção granular de quais partes atualizar e confirmação antes de sobrescrever.
250
-
251
- ---
252
-
253
- ## [2.0.2] — 2026-05-11
254
-
255
- ### Fixed
256
-
257
- - **CLI rewritten for FSD/FDA structure** — `npx xertica-ui@latest init` agora copia corretamente a estrutura Feature-Sliced Design:
258
- - Removida cópia de `src/app/routes.tsx` (arquivo não existe mais após refatoração)
259
- - Adicionada cópia de `src/app/components/AppLayout.tsx`
260
- - Adicionada cópia completa de `src/shared/` (`auth.ts`, `navigation.ts`, `types/auth.ts`)
261
- - Adicionada cópia de `src/features/auth|home|template` conforme seleções do usuário
262
- - Cópia de pages corrigida de `src/app/pages/` → `src/pages/`
263
- - `AuthGuard.tsx` agora gerado dinamicamente com imports e rotas apenas das páginas selecionadas
264
- - **`generateDemoResponse` exportado via `xertica-ui/assistant`** estava ausente do barrel causando `SyntaxError: does not provide an export named 'generateDemoResponse'`
265
- - **Build corrigido: UMD CJS** — múltiplos entry points não são suportados com formato UMD no Vite; migrado para CJS (todos os `*.umd.js` `*.cjs.js` no `package.json` exports)
266
-
267
- ---
268
-
269
- ## [2.0.0]2026-05-11
270
-
271
- ### Added
272
-
273
- - **Subpath exports** — The package now exposes 6 granular entry points alongside the full root barrel:
274
- - `xertica-ui/ui`all UI primitives (Button, Card, Input, Table, Dialog, etc.)
275
- - `xertica-ui/layout` — Sidebar and Header
276
- - `xertica-ui/brand` — XerticaProvider, XerticaLogo, XerticaXLogo, XerticaOrbe, ThemeToggle, LanguageSelector
277
- - `xertica-ui/assistant` — XerticaAssistant, MarkdownMessage, CodeBlock, FormattedDocument, ModernChatInput
278
- - `xertica-ui/media`VideoPlayer, AudioPlayer, FloatingMediaWrapper
279
- - `xertica-ui/hooks` — useLayout, useTheme, useLanguage, useBrandColors, useAssistente, useApiKey
280
- - Root `from 'xertica-ui'` remains fully supported for backward compatibility.
281
- - **`ImageWithFallback` added to `xertica-ui/ui`** — previously only in the root barrel; now accessible via the `/ui` subpath.
282
- - **Multi-entry Vite build** `vite.config.ts` now uses `lib.entry` as an object (7 entry points). Output filenames follow `[entryName].[format].js` pattern.
283
- - **CLI template FSD/FDA architecture** The scaffolded template was restructured to follow Feature-Sliced Design + Feature-Driven Architecture:
284
- - `src/app/`BrowserRouter, XerticaProvider, AuthGuard (auth state + route definitions), AppLayout (Sidebar + children shell)
285
- - `src/shared/``config/navigation.ts` (route registry), `lib/auth.ts` (localStorage helpers), `types/auth.ts` (User interface)
286
- - `src/features/auth/ui/` LoginContent, ForgotPasswordContent, VerifyEmailContent, ResetPasswordContent; with shared `AuthPageShell` and `SocialLoginButtons` DRY extractions
287
- - `src/features/home/ui/` — HomeContent
288
- - `src/features/template/ui/` — TemplateContent, FormTemplate
289
- - `src/pages/` — thin page wrappers (LoginPage, HomePage, TemplatePage, ForgotPasswordPage, VerifyEmailPage, ResetPasswordPage)
290
- - **`templates/guidelines/Guidelines.md`** — new architecture guide documenting FSD/FDA layers, layer responsibilities, and "Adding New Routes" step-by-step.
291
-
292
- ### Changed
293
-
294
- - **Template imports** — All template source files updated to use subpath imports (`xertica-ui/ui`, `xertica-ui/brand`, `xertica-ui/layout`, `xertica-ui/assistant`, `xertica-ui/hooks`) instead of the root barrel.
295
- - **`FormTemplate.tsx` rewritten** — Removed dependency on `@hookform/resolvers/zod`, `react-hook-form`, and `zod` (packages not included in the CLI template's `package.json`). Now uses plain React `useState` + inline validation with only `xertica-ui/ui` primitives.
296
- - **`tsconfig.build.json`** — `include` array updated to cover all new barrel source directories (`components/**/*`, `contexts/**/*`, `hooks/**/*`).
297
- - **Documentation** (`llms.txt`, `llms-full.txt`) Added subpath import reference table and FSD/FDA layer mapping.
298
-
299
- ### Fixed
300
-
301
- - **Stale compiled artifacts** — Removed `App.js`, `App.d.ts`, `main.js`, `main.d.ts` from `templates/src/app/` that were being resolved by Vite's extension priority (`.js` before `.tsx`), causing `Failed to fetch dynamically imported module` errors after the FSD restructure.
302
-
303
- ---
304
-
305
- ## [1.10.0]2026-05-08
306
-
307
- ### Added
308
-
309
- - **Semantic Variants** Added `success`, `info`, and `warning` variants to components that lacked them:
310
- - **Button** — now supports 9 variants: `default`, `secondary`, `outline`, `ghost`, `destructive`, `link`, `success`, `info`, `warning`.
311
- - **Progress** — new `variant` prop (`default`, `success`, `info`, `warning`, `destructive`) colors both the track and the indicator.
312
- - **NotificationBadge** — added `secondary`, `outline`, `success`, `info`, `warning`; standardized `default` to primary color for consistency with Badge and Button.
313
- - **TimelineDot** added `info` and `outline` variants; replaced hardcoded `rgb()` values with semantic CSS tokens (`bg-success`, `bg-warning`).
314
- - **DialogBody** new sub-component for the Dialog. When used, `DialogHeader` and `DialogFooter` stay pinned while `DialogBody` scrolls independently. Exported from `xertica-ui`.
315
- - **Dialog height management** `DialogContent` now has `max-h-[calc(100dvh-2rem)] overflow-hidden`. The close button (×) is pinned and never scrolls with content. `size="full"` fills the full viewport height.
316
- - **Header `breadcrumbSlot`** new prop accepting any `ReactNode` rendered immediately after the breadcrumb/title area (badges, buttons, status chips, etc.).
317
- - **Sidebar default variant groups** — `variant="default"` now renders `navigationGroups` with labeled group headers. Each `RouteConfig` supports a `children` field (sub-routes shown in a contextual `DropdownMenu` via a `ChevronRight` button at the end of the item).
318
-
319
- ### Fixed
320
-
321
- - **Search double clear icon** — `type="search"` caused browsers to inject a native clear button on top of the custom × icon. Changed to `type="text"`.
322
- - **CSS `@source` path** — CLI template `src/styles/index.css` had `../node_modules/xertica-ui` (one level short); corrected to `../../node_modules/xertica-ui/components`.
323
- - **`theme-map.css` incomplete** — `--color-success`, `--color-info`, `--color-warning` and their `foreground` variants were missing, preventing `bg-success`, `text-info`, etc. from being generated in the compiled library CSS.
324
-
325
- ### Changed
326
-
327
- - **Storybook argTypes** — Multiple components had controls missing from the Storybook panel: Badge (`success`/`info`/`warning` options), Select (`size`), Avatar (`size`), Rating (`readonly` casing), Timeline (`dotVariant`), Dialog (`size` available in all stories). All corrected.
328
- - **LLM documentation** (`llms-full.txt`) — Updated Badge, Button, Dialog, Header, NotificationBadge, Progress, Search, Sidebar, and Timeline sections to reflect current APIs.
329
-
330
- ---
331
-
332
- ## [1.9.0]2026-05-05
333
-
334
- ### Added
335
-
336
- - **Standardized Form Sizing System** — Implemented a unified `size` prop (`sm`, `md`, `lg`) across all form-related components for perfect visual alignment in grid layouts:
337
- - **Text Components** `Input`, `SelectTrigger`, `Textarea`, `Search`, and `InputOTPSlot` now share consistent height/padding/font-size tokens.
338
- - **Toggle Components** — `Checkbox`, `RadioGroupItem`, and `Switch` now feature dynamic sizing for both containers and internal indicators (check icon, dot, thumb).
339
- - **Labels** — `Label` component now supports `size` to match the text size of the associated input.
340
- - **Reference Guide** Added `docs/form-sizing.md` as a comprehensive guide for the standardized sizing scale.
341
- - **Assistant Individual Controls** Added granular control props to `XerticaAssistant` to toggle specific features independently:
342
- - `showHistory`, `showFavorites`, `allowAudioInput`, `allowFileUpload`, `allowDocCreation`, `allowPodcastGen`, `allowResearchGen`.
343
- - **Header Breadcrumb Navigation** Standardized `Header` to use breadcrumbs as the default navigation pattern:
344
- - Added support for `react-router-dom` links in breadcrumbs to prevent page reloads.
345
- - Configurable hierarchy levels and labels directly via props.
346
-
347
- ### Changed
348
-
349
- - **Form Component Architecture** — Migrated form elements from legacy tokens to standardized design system tokens (`bg-background`, `border-border`) for better theme consistency.
350
- - **Documentation & Storybook** — Updated all 9 affected form components with new "Sizes" sections in Storybook (Stories + MDX) and enriched LLM-facing markdown documentation.
351
- - **Unit Testing** — Updated test suites for `Checkbox`, `RadioGroup`, `Switch`, `InputOTP`, `Label`, `Search`, `Select`, and `Textarea` to verify sizing variant classes.
352
-
353
- ### Fixed
354
-
355
- - **Search Component** — Removed obsolete `loading` prop which was causing TypeScript errors and was redundant with the current design system patterns.
356
- - **SelectTrigger Sizing** — Standardized `md` height to `h-10` (40px) to match the rest of the form system.
357
-
358
- ---
359
-
360
- ## [1.8.0] — 2026-04-27
361
-
362
- ### Added
363
-
364
- - **VideoPlayer UI Enhancements** — Added gradient overlay on controls for improved contrast against video content:
365
- - Gradient: `from-black/60 via-black/30 to-transparent` with `pt-12` spacing
366
- - White progress bar with `bg-white/30` track, `bg-white` fill, and `rounded-r-sm` on filled portion
367
- - White icons with `drop-shadow-md` for visibility
368
- - Buttons use `text-white hover:text-white hover:bg-black/50` for proper hover states
369
- - **Slider Visual Fixes** — Improved progress bar alignment:
370
- - Added left margin `ml-2` to track for thumb alignment
371
- - Added `rounded-r-sm` to Range for filled portion
372
- - Adjusted track/margins for proper visual alignment at full value
373
-
374
- ### Changed
375
-
376
- - **Documentation** — Updated component counts across all docs:
377
- - `llms.txt`: 75 97 components
378
- - `llms-full.txt`: Added statistics table
379
- - `docs/llms.md`: Added statistics section
380
- - `Introduction.mdx`: Added "97 Components" badge
381
- - **components.json** — 75 → 89 components (added missing Media, Assistant, Pages, and Map components)
382
-
383
- ### Fixed
384
-
385
- - **Slider Progress Bar** — Fixed visual gap where thumb doesn't align with filled bar at end position by adjusting track margins
386
-
387
- ---
388
-
389
- ## [1.7.0] — 2026-04-23
390
-
391
- ### Fixed
392
-
393
- - **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.).
394
- - **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.
395
- - **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.
396
-
397
- ### Added
398
-
399
- - **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.
400
- - **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.
401
- - **Documentation** `docs/getting-started.md` updated with CLI `update` command reference and a new "CSS Setup (Critical)" section explaining the `@theme inline` requirement.
402
-
403
- ---
404
-
405
- ## [1.6.0]2026-04-20
406
-
407
- ### Added
408
-
409
- - **`docs/llms.md`** — Master LLM/AI-agent entrypoint index with full component catalog, token quick reference, and reading order guide.
410
- - **`docs/layout.md`** — Complete `LayoutContext` and `useLayout()` API reference.
411
- - **`docs/components/route-map.md`**New documentation for `RouteMap` component.
412
- - **`docs/components/use-mobile.md`**New documentation for `useMobile` / `useIsMobile` hooks.
413
- - **`Header`** — New props: `user` (profile with avatar, name, email, and dropdown menu items), `actions` (custom icon action buttons), `showSettings` / `onSettingsClick`, `showLogout` / `onLogoutClick`. Fixed render order: Language → Theme → Actions → Settings → User → Logout.
414
- - **`Sidebar`** — New `width` prop (`expandedWidth: number`) for configuring the expanded sidebar pixel width. Width is now read and stored via `LayoutContext.sidebarWidth`.
415
-
416
- ### Changed
417
-
418
- - **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).
419
- - **JSDoc** — All Portuguese JSDoc comments in `components/ui/` translated to English and enriched with accurate `@ai-rules`.
420
- - **`README.md`**Complete rewrite in English, restructured for npm page quality (quick start, install guide, component catalog, token reference, AI agent entrypoint, troubleshooting).
421
- - **`package.json`** Version bumped to `1.6.0`. Description translated to English.
422
-
423
- ### Fixed
424
-
425
- - **`docs/components/page-header.md`** Was documenting a wrong API (`title/description/actions`). Now correctly documents the real API: `breadcrumbs[]`, `showLanguageSelector`, `rightContent`, `PageHeaderHeading`, `PageHeaderDescription`.
426
- - **`docs/components/stepper.md`** Was documenting a `steps[]` array prop. Now correctly documents the composable `<Stepper currentStep> + <Step step label>` API (1-indexed).
427
- - **`docs/components/empty.md`** — Was documenting single-prop component. Now correctly documents the composable sub-component pattern: `Empty > EmptyIcon > EmptyTitle > EmptyDescription > EmptyAction`.
428
- - **`docs/components/stats-card.md`** `trend` was documented as a string. Now correctly documented as `{ value: number; label?: string }`.
429
- - **`docs/components/chart.md`** — Was documenting raw Recharts usage. Now correctly documents the `ChartContainer + ChartConfig + var(--color-*)` pattern.
430
-
431
- ---
432
-
433
- ## [1.5.2] 2026-04-15
434
-
435
- ### Fixed
436
-
437
- - Resolved regression where modal components (Dialog/AlertDialog) failed to render in projects initialized via the CLI.
438
- - Implemented robust CSS integration using Tailwind v4 theme mappings.
439
- - Ensured Radix UI portals correctly inherit theme variables.
440
-
441
- ---
442
-
443
- ## [1.5.1] — 2026-04-14
444
-
445
- ### Changed
446
-
447
- - Sidebar: Added `assistente` variant with fixed areas, searchable navigation, and grouped navigation structures.
448
- - Template page updated to demonstrate the assistant sidebar variant.
449
-
450
- ---
451
-
452
- ## [1.5.0] — 2026-04-13
453
-
454
- ### Added
455
-
456
- - `Sidebar` — `width` / `expandedWidth` prop for configurable expanded sidebar width.
457
- - `LayoutContext` — `sidebarWidth` and `setSidebarWidth` for global sidebar width management.
458
- - `Header` — User profile section with avatar, dropdown menu, settings button, and logout button.
459
- - `StatsCard` — KPI metric card component.
460
- - `Timeline` — Chronological event list with dot variants.
461
- - `TreeView`Hierarchical tree navigation.
462
- - `Rating` — Star-based rating input.
463
- - `FileUpload` — Drag-and-drop file input.
464
- - `Search` — Pre-built search input with icon and clear button.
465
- - `NotificationBadge`Dot/count badge overlay.
466
- - `RouteMap`Google Maps route display and direction calculation.
467
- - `Stepper`Multi-step progress indicator.
468
- - `Map`Advanced Google Maps integration with markers, circles, polygons, and layers.
469
- - `XerticaAssistant` Embedded Gemini AI assistant panel.
1
+ # Changelog
2
+
3
+ All notable changes to `xertica-ui` will be documented in this file.
4
+
5
+ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
+ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ---
9
+
10
+ ## [Unreleased]
11
+
12
+ ---
13
+
14
+ ## [2.2.0] 2026-05-21
15
+
16
+ ### Added
17
+
18
+ - **i18n — Cobertura completa na página de Template** — `TemplateContent.tsx` e os 4 starter templates (`LoginTemplate`, `FormTemplate`, `DashboardTemplate`, `CrudTemplate`) estão 100% traduzidos (pt-BR, en, es). Anteriormente a maioria dos textos era hard-coded em PT-BR.
19
+ - **i18n — Namespace `templates.*` completo** novo namespace com 539 chaves cobrindo todos os textos visíveis: seções, alertas, abas, formulários, tabela de dados, configurações, botões (variantes/tamanhos), badges, dialogs, sidebar, componentes avançados (Pagination, Stepper, TreeView, RichTextEditor) e rodapé. Suporte completo para `<Trans>` com interpolação de `<code>` nas descrições técnicas.
20
+ - **i18n Novos namespaces de starter templates** — 4 novos arquivos de locale por idioma: `loginTemplate`, `formTemplate`, `dashboardTemplate`, `crudTemplate` (total de 12 novos JSONs × 2 mirrors = 24 arquivos).
21
+ - **i18n Estrutura de locales reorganizada** — os monolitos `locales/<lang>.json` foram divididos em pastas por categoria:
22
+ - `locales/<lang>/{common,nav,errors,languageSelector,themeToggle}.json` (transversal)
23
+ - `locales/<lang>/pages/{home,templates,login,resetPassword,verifyEmail,loginTemplate,formTemplate,dashboardTemplate,crudTemplate}.json`
24
+ - `locales/<lang>/components/{assistant,sidebar,media,projectCard,profileCard,notificationCard,activityCard,stats,team}.json`
25
+ - **i18n Loader via `import.meta.glob`** — `i18n.ts` (base e templates) substituiu os 57 imports estáticos por 3 chamadas `import.meta.glob('./locales/<lang>/**/*.json', { eager: true })` + função `bundleLang()`. Adicionar um novo arquivo JSON é suficiente — sem tocar no `i18n.ts`.
26
+ - **CLILocale em pastas** — `syncLocaleFiles` e `generateI18nFile` em `bin/language-config.ts` atualizados para copiar/gerar a nova estrutura de pastas. Projetos legados com `<lang>.json` flat são migrados automaticamente no próximo `update`.
27
+ - **`templates/vite.config.ts` — aliases de monorepo** aliases automáticos detectam se o `vite.config.ts` está dentro do monorepo (`../components/index.ts` existe) e apontam `xertica-ui/*` diretamente para o source TypeScript, permitindo HMR sem rebuild da lib. Em projetos gerados pelo CLI, o check retorna `false` e `xertica-ui` resolve do `node_modules` normalmente.
28
+ - **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:
29
+ - Copies **only** the locale folders for the selected languages into `src/locales/` (no orphan locales)
30
+ - Generates `src/i18n.ts` with `import.meta.glob` calls for exactly those languages
31
+ - Injects the `availableLanguages` prop into the generated `src/app/App.tsx`
32
+ - Persists the selection in `src/locales/.languages.json` (schema v1)
33
+ - **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 folders, and prunes removed ones.
34
+ - **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.
35
+ - **`bin/language-config.ts`** — new module encapsulating the supported-language registry (`SUPPORTED_LANGUAGES`), code generators (`generateI18nFile`, `generateAppTsx`), and persistence helpers (`readLanguagesConfig`, `writeLanguagesConfig`, `syncLocaleFiles`).
36
+
37
+ ### Fixed
38
+
39
+ - **Dark mode toggle no CLI** — `XerticaProvider` no `templates/src/app/App.tsx` era gerado com `disableDarkMode` hard-coded, tornando o `ThemeToggle` um no-op. Removido de `App.tsx`, do template literal do CLI em `bin/language-config.ts` e do exemplo em `templates/CLAUDE.md`.
40
+
41
+ ### Changed
42
+
43
+ - **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.
44
+ - **`DashboardTemplate`** — `StatsCard` deixou de chamar `useTranslation()` internamente; o sufixo de tendência (`lastMonth`) é resolvido no pai e passado como prop, reduzindo o número de subscribers i18n de 5 para 1.
45
+ - **`TemplateContent` — dialog inputs controlados** — os `Input` do dialog "Editar Perfil" foram convertidos de `defaultValue` (uncontrolled) para `value`/`onChange` com lazy `useState`, garantindo que o valor reflita o idioma ativo no momento da montagem sem sobrescrever edições do usuário.
46
+ - **`TemplateContent` — `treeData` movido para dentro do componente** — os labels dos nós do TreeView (`Components`, `UI`, `Button`…) agora reagem ao switch de idioma em tempo real, pois `treeData` é construído após `const { t } = useTranslation()`.
47
+
48
+ ---
49
+
50
+ ## [2.1.11]2026-05-20
51
+
52
+ ### Fixed
53
+
54
+ - **CLI Initialization** — Correções essenciais no comando `init`:
55
+ - `i18n.ts` e o diretório `locales/` agora são copiados corretamente, restaurando as traduções na aplicação gerada.
56
+ - `AuthContext.tsx` e dependências agora são incluídas, habilitando o hook `useAuth`.
57
+ - 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.
58
+ - O diretório `features/assistant/` agora é sempre copiado visto que o `AppLayout` depende nativamente da `AssistantPage`.
59
+ - **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.
60
+ - **`LanguageSelector` e `LanguageContext`** — Correção de bugs na seleção de idiomas e fallback:
61
+ - `LanguageContext.tsx` agora valida de forma robusta e intercepta valores legados como `'PT'` no `localStorage`, realizando um *fallback* seguro para `'pt-BR'`.
62
+ - 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.
63
+
64
+ ---
65
+
66
+ ## [2.1.10]2026-05-20
67
+
68
+ ### Added
69
+
70
+ - **`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`).
71
+ - **`ErrorBoundary` — três variantes pré-configuradas** em `components/shared/error-boundary.tsx`:
72
+ - `AppErrorBoundary`envolve todo o `App` antes dos providers; fallback full-screen com inline styles (funciona mesmo se o Tailwind falhar)
73
+ - `PageErrorBoundary`envolve `<Routes>` / `<AuthGuard>`; captura lazy-chunk failures e erros de renderização de página
74
+ - `SectionErrorBoundary` — envolve seções isoladas (tabelas, charts, assistente); um seção quebrada não derruba a página
75
+ - Props: `onError` (callback para Sentry/Datadog), `resetKeys` (auto-reset quando um valor muda, ex: `[location.pathname]`)
76
+ - **i18n completo com `i18next` + `react-i18next`** integração completa de internacionalização:
77
+ - Arquivo `i18n.ts` configurado com `pt-BR` (padrão), `en` e `es`
78
+ - Locale files em `locales/pt-BR.json`, `en.json`, `es.json` com namespaces: `common`, `nav`, `home`, `stats`, `team`, `assistant`, `languageSelector`
79
+ - `LanguageContext.setLanguage()` agora chama `i18n.changeLanguage()` — todos os `useTranslation()` re-renderizam
80
+ - `HomeContent.tsx` e `TemplateContent.tsx` usam `useTranslation()` para todos os textos
81
+ - Mock data usa `i18n.t()` (instância) para responder ao idioma ativo no `queryFn`
82
+ - **`features/`camada de estado separada da UI**:
83
+ - `features/home/data/mock.ts`tipos + dados mock + funções `fetch*()` (swap point para API real)
84
+ - `features/home/hooks/` — `useDashboardStats`, `useTeamMembers`, `useFeatureCards` (TanStack React Query)
85
+ - `features/home/store/dashboardStore.ts` — Zustand (progress, slider, switch, activeTab)
86
+ - `features/assistant/data/mock.ts` — `AssistantConfig` + `fetchAssistantConfig()`
87
+ - `features/assistant/hooks/useAssistantConfig.ts` — React Query, staleTime 30 min
88
+ - **`QueryClientProvider`** adicionado ao stack de providers em `App.tsx` como camada mais externa (abaixo de `AppErrorBoundary`)
89
+ - **Lazy loading** em todas as rotas via `React.lazy()` + `<Suspense fallback={null}>` cada página é um chunk separado
90
+ - **`ProtectedRoute` + `GuestRoute`** como componentes de guarda de rota baseados em `useAuth()` eliminam lógica de redirect do `AuthGuard`
91
+ - **`components/shared/navigation.ts`**fonte canônica de `RouteConfig`, `routes[]`, `getRouteByPath` e `isValidRoute` para o app devops (substituiu `routes.tsx` na raiz)
92
+
93
+ ### Changed
94
+
95
+ - **`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.
96
+ - **`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'`.
97
+ - **`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.
98
+ - **`HomePage` + `TemplatePage` — sem props `user`/`onLogout`** — ambos consomem `useAuth()` diretamente; prop-drilling eliminado em toda a árvore de páginas (`HomeContent`, `TemplateContent`, `AppLayout`).
99
+ - **`routes.tsx` deletado** — conteúdo movido para `components/shared/navigation.ts`; todos os imports atualizados.
100
+
101
+ ### Fixed
102
+
103
+ - **`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.
104
+ - **`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.
105
+ - **`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`.
106
+ - **`useAssistant` — hydration one-shot de `initialMessages`** — `hydratedRef` garante que `setMensagens(initialMessages)` ocorra apenas uma vez, evitando reset do histórico em re-renders.
107
+ - **`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.
108
+ - **`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.
109
+ - **`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]`.
110
+ - **`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.
111
+ - **`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.
112
+ - **`useAssistant` — `setConversas(savedConversations)` em loop corrigido** — removido `useEffect` que chamava `setConversas` com `savedConversations = []` (default do destructuring), causando re-render infinito.
113
+
114
+ ### Changed (continued)
115
+
116
+ - **`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é.
117
+ - **`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.
118
+ - **`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`.
119
+ - **`usePagination` algoritmo deduplicado com `Set`** reescrito usando `Set<number>` para garantir que cada página apareça exatamente uma vez.
120
+ - **`TreeView`prop `ariaLabel` + roving tabindex** `<TreeView>` aceita `ariaLabel?: string`; roving tabindex: `focusableId = effectiveSelectedId ?? data[0]?.id`.
121
+ - **`DashboardBarChart``topOfStack` com `useMemo`** IIFE extraída para `React.useMemo([stacked, chartSeries])` antes do `return`.
122
+ - **`useAssistant``conversasFiltradas` com `useMemo`** e tipos fortalecidos (`handleEnviarMensagem: (arg?: string | ActionType) => Promise<void>`).
123
+ - **`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`.
124
+
125
+ ---
126
+
127
+ - **`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.
128
+ - **`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.
129
+ - **`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`.
130
+ - **`useAssistant` — hydration one-shot de `initialMessages`** — `hydratedRef` garante que `setMensagens(initialMessages)` ocorra apenas uma vez, evitando reset do histórico em re-renders.
131
+ - **`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.
132
+ - **`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.
133
+ - **`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]`.
134
+ - **`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.
135
+
136
+ ### Changed
137
+
138
+ - **`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é (informação sem valor de UX).
139
+ - **`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 (atual/concluída).
140
+ - **`Pagination` — prop `disabled` em `PaginationLink`** — `PaginationLink` aceita `disabled?: boolean`; quando ativo aplica `pointer-events-none opacity-50`, `aria-disabled`, `tabIndex={-1}` e remove `href`. `PaginationPrevious` e `PaginationNext` repassam `disabled` ao link.
141
+ - **`usePagination`algoritmo deduplicado com `Set`** — o cálculo de `items` foi reescrito usando `Set<number>` para garantir que cada página apareça exatamente uma vez, eliminando edge cases do algoritmo anterior com `leftSibling === 2` / `rightSibling === totalPages - 1`.
142
+ - **`TreeView` — prop `ariaLabel` + roving tabindex** — `<TreeView>` aceita `ariaLabel?: string` (padrão `"Navegação em árvore"`) aplicado ao `role="tree"`. O `tabIndex` de cada item usa roving tabindex: `focusableId = effectiveSelectedId ?? data[0]?.id` em vez de `isSelected ? 0 : -1`.
143
+ - **`DashboardBarChart` — `topOfStack` com `useMemo`** — a IIFE que calculava o conjunto de barras do topo do stack no JSX foi extraída para `React.useMemo([stacked, chartSeries])` antes do `return`, separando lógica de render.
144
+ - **`useAssistant` — `conversasFiltradas` com `useMemo`** — substituída computação inline por `useMemo([conversas, abaSelecionada])`.
145
+ - **`useAssistant` — sincronização de `conversas` com `savedConversations`** adicionado `useEffect([savedConversations])` que mantém `conversas` em sync com a prop `savedConversations`.
146
+ - **`useAssistant` — tipos fortalecidos** — `handleEnviarMensagem` tipado como `(arg?: string | ActionType) => Promise<void>` na interface e na implementação, substituindo `string | any`.
147
+ - **`sidebar.tsx` — ARIA e `useMemo`** — botão de toggle recebe `aria-expanded` e `aria-controls="sidebar-nav"`; o `<nav>` recebe `id="sidebar-nav"` e `aria-label="Navegação principal"`. `labelTranslations` e `navigationItems` memoizados com `useMemo`; dependência do effect de overflow atualizada de `navigationItems.length` para `navigationItems`.
148
+
149
+ ---
150
+
151
+ ## [2.1.4] — 2026-05-19
152
+
153
+ ### Changed
154
+
155
+ - **`XerticaAssistant` — decomposição em sub-componentes** — o componente monolítico (1 468 linhas) foi dividido em 9 sub-componentes focados em `parts/`: `AssistantHeader`, `AssistantCollapsedView`, `AssistantTabBar`, `AssistantWelcomeScreen`, `AssistantMessageBubble`, `AssistantTypingIndicator`, `AssistantConversationList`, `AssistantFeedbackDialog` e `AssistantDocumentEditor`. A API pública (`XerticaAssistantProps`) permanece 100% compatível.
156
+ - **`useAudioPlayer` — headless hook** — toda a lógica do `AudioPlayer` foi extraída para `components/media/audio-player/use-audio-player.ts`. O componente `AudioPlayer` agora consome o hook internamente; API pública inalterada. O hook é exportado via `components/hooks/index.ts`.
157
+ - **`useLayoutShortcuts` — headless hook** — registro de atalhos de teclado (Ctrl+B, Ctrl+I) extraído do `LayoutContext` para `components/hooks/use-layout-shortcuts.ts`. Exportado via `components/hooks/index.ts`.
158
+ - **`CustomTooltipContent` — componente compartilhado** — implementação duplicada de tooltip customizado (existia em `sidebar.tsx` e `xertica-assistant.tsx`) consolidada em `components/shared/CustomTooltipContent.tsx`.
159
+ - **`useIsMobile` — fonte única de detecção mobile** — `use-sidebar.ts`, `use-assistant.ts`, `LayoutContext.tsx` e `AudioPlayer.tsx` agora importam de `components/shared/use-mobile.ts` em vez de duplicar a lógica de `matchMedia`.
160
+ - **`utils/color-utils.ts` — utilitários de cor** — funções `hexToRgb`, `hexToRgba` e `isLightColor` extraídas do `BrandColorsContext` para `utils/color-utils.ts` como funções puras reutilizáveis.
161
+ - **`ThemeToggle` — usa `useTheme()`** — substituída referência direta ao `localStorage` pelo hook `useTheme()` do `ThemeContext`.
162
+ - **`types.ts` — fonte única de tipos do assistente** — `Message`, `Conversation`, `Suggestion`, `MockResponse`, `SearchResult`, `SearchSource`, `SearchCommand` e enums relacionados movidos para `components/assistant/xertica-assistant/types.ts`. `xertica-assistant.tsx` e `AssistenteContext.tsx` re-exportam os tipos para backward compatibility.
163
+
164
+ ---
165
+
166
+ ## [2.1.3] — 2026-05-16
167
+
168
+ ### Added
169
+
170
+ - **Headless hooks 4 new logic-only hooks** all logic extracted from their UI components into standalone, tree-shakeable hooks:
171
+ - **`useFileUpload`** — drag state, file validation (size + count), error messaging, and hidden input ref. Props: `maxFiles`, `maxSize`, `onFilesChange`, `onError`, `disabled`. Returns: `files`, `dragActive`, `errorMessage`, `inputRef`, `handleFiles`, `handleDrag`, `handleDrop`, `handleChange`, `removeFile`, `openFileDialog`.
172
+ - **`usePagination`** — computes the full page item list (page numbers + ellipsis markers) and exposes navigation helpers. Supports controlled (`page` prop) and uncontrolled modes. Props: `totalItems`, `pageSize`, `initialPage`, `page`, `onPageChange`, `siblingCount`. Returns: `currentPage`, `totalPages`, `startIndex`, `endIndex`, `canGoPrev`, `canGoNext`, `isFirstPage`, `isLastPage`, `items: PaginationPageItem[]`, `goTo`, `next`, `prev`, `first`, `last`.
173
+ - **`useStepper`** — step navigation with optional async `onBeforeNext` guard for per-step validation. Supports controlled (`step` prop) and uncontrolled modes. Props: `totalSteps`, `initialStep`, `step`, `onStepChange`, `onBeforeNext`. Returns: `currentStep`, `totalSteps`, `isFirstStep`, `isLastStep`, `canGoPrev`, `canGoNext`, `next` (async), `prev`, `goTo`, `reset`.
174
+ - **`useTreeView`** expand/collapse state, single-node selection, full WAI-ARIA keyboard navigation (Arrow keys, Home, End, Space), and DOM focus management via `nodeRefs`. Supports controlled `selectedNodeId`. Returns: `expanded`, `effectiveSelectedId`, `nodeRefs`, `getNodeRef`, `toggleExpand`, `handleSelect`, `handleKeyDown`, `getVisibleNodes`.
175
+ - **New chart types4 new Recharts wrappers** added to `components/ui/chart/chart.tsx`:
176
+ - **`RadarMetricChart`** — multi-axis radar chart with optional fill, dots, and multi-series overlay.
177
+ - **`PieMetricChart`**pie chart with optional percentage labels and exploded slice support.
178
+ - **`RadialBarMetricChart`** — radial bar chart with stacked rings and configurable arc angle.
179
+ - **`GaugeChart`** — pure SVG semicircle gauge with needle, threshold color zones, and optional label. Supports `thresholds` array for dynamic color changes at value breakpoints.
180
+ - **Chart color tokens expanded** — added `--chart-6`, `--chart-7`, `--chart-8` tokens to `styles/xertica/tokens.css`, `templates/src/styles/xertica/tokens.css`, and `bin/generate-tokens.ts`. All 8 chart tokens now use a vibrant, accessible palette.
181
+ - **Headless hook stories** — added `HeadlessHook` story variant to `file-upload.stories.tsx`, `pagination.stories.tsx`, `stepper.stories.tsx`, and `tree-view.stories.tsx` demonstrating fully custom UIs built with each hook.
182
+
183
+ ### Fixed
184
+
185
+ - **`GaugeChart`filled-blob visual bug for values > 50%** the SVG arc `largeArc` flag was set to `1` when `percent > 0.5`, causing the arc command to draw the reflex arc (> 180°) which rendered as a solid filled blob. Since the gauge is a semicircle (max 180°), `largeArc` is always `0`. Removed the conditional entirely and hardcoded `0` for both arc commands.
186
+ - **`GaugeChart` — needle overlapping value text** — the value text at `y=cy+4` was directly behind the needle pivot circle. Fixed by expanding the SVG `viewBox` from `"0 0 200 110"` to `"0 0 200 130"` and moving the value text to `y=cy+18` (13 px below the needle base circle bottom) and the label text to `y=cy+36`.
187
+
188
+ ### Changed
189
+
190
+ - **`FileUpload` component** — refactored to consume `useFileUpload` internally; public API unchanged.
191
+ - **`TreeView` component** — refactored to consume `useTreeView` internally; public API unchanged.
192
+ - **`Stepper` component** — refactored to consume `useStepper` internally; public API unchanged.
193
+ - **Documentation**updated `docs/components/chart.md`, `docs/components/file-upload.md`, `docs/components/pagination.md`, `docs/components/stepper.md`, and `docs/components/tree-view.md` with full hook API reference, props/return tables, controlled/uncontrolled examples, and AI Rules sections.
194
+
195
+ ---
196
+
197
+ ## [2.1.2] — 2026-05-14
198
+
199
+ ### Fixed
200
+
201
+ - **`MarkdownMessage` suporte a tabelas GFM** — o parser regex do componente não convertia blocos de tabela Markdown (`| col | col |`) em HTML. Adicionada transformação de tabelas GFM completa (header, separador, linhas de dados) com estilos do design system (`border-border`, `hover:bg-muted/50`, `rounded-[var(--radius)]`, `overflow-x-auto`). A transformação roda antes das substituições de quebra de linha para evitar `<br/>` dentro das células.
202
+
203
+ ### Added
204
+
205
+ - **Template — `AssistantPage`** — nova página de assistente completa: sidebar em modo `assistant` aberta por padrão (largura 320px), botão "Nova Conversa" (`variant="secondary"`), busca de conversas com filtro em tempo real, histórico de 8 conversas de exemplo em 3 grupos (Hoje / Ontem / Esta semana), modal de exclusão com `AlertDialog`, modal de renomeação com `Dialog` + `Input`, simulação de conteúdo ao selecionar conversa via `initialMessages`, botão "Voltar" em `variant` primário no `Header`.
206
+ - **Template — `AppLayout`** — novas props `sidebarVariant?: 'default' | 'assistant'` e `sidebarProps?: Record<string, any>` para permitir que páginas customizem a sidebar sem quebrar o contrato do layout.
207
+
208
+ ---
209
+
210
+ ## [2.1.1]2026-05-14
211
+
212
+ ### Fixed
213
+
214
+ - **XerticaAssistant — tab bar oculta em modo chat-only** — quando `showHistory` e `showFavorites` estão ambas desativadas, a barra de abas (incluindo a aba "Chat") deixa de ser renderizada, eliminando a exibição de uma aba isolada sem alternativas de navegação.
215
+ - **`xertica-ui/style.css` — import duplo de Roboto removido** — o `@import url(Google Fonts/Roboto)` foi removido de `styles/globals.css`. A importação da fonte passa a ser responsabilidade do app consumidor, eliminando o alerta `@import must precede all other statements` do PostCSS quando o CSS compilado era injetado após o output do Tailwind v4.
216
+
217
+ ---
218
+
219
+ ## [2.1.0] — 2026-05-13
220
+
221
+ ### Added
222
+
223
+ - **`components/blocks/card-patterns/`** — novo domínio `blocks/` com 6 componentes de alto nível compostos exclusivamente de primitivos `ui/`:
224
+ - **`FeatureCard`** — ícone com fundo colorido, título, badge opcional, descrição e botão de ação. Suporta 10 tokens de cor (`primary`, `chart-1..5`, `success`, `info`, `warning`, `destructive`). Replica o padrão de cards da Home page.
225
+ - **`ActivityCard`** — feed de atividades recentes com avatar, descrição de ação, timestamp e badge por tipo (`create`, `update`, `delete`, `comment`, `deploy`).
226
+ - **`ProfileCard`** — card de usuário/membro com avatar, badge de status (`online`, `offline`, `away`, `busy`), linha de stats e ações primária/secundária.
227
+ - **`ProjectCard`** — status de projeto com badge, barra de progresso (usa `Progress` com variant semântica por status), stack de avatares de membros e data limite.
228
+ - **`QuickActionCard`** — tile de ação rápida com ícone em caixa colorida, badge e botão full-width.
229
+ - **`NotificationCard`**lista de notificações com indicador de não-lido, badge de tipo, "Marcar todas como lidas" e "Ver todas".
230
+ - **Exportação do domínio `blocks/`** todos os componentes disponíveis via `import { ... } from 'xertica-ui'` e via `components/blocks/index.ts`.
231
+ - **Subpath público `xertica-ui/blocks`** — `FeatureCard`, `ActivityCard`, `ProfileCard`, `ProjectCard`, `QuickActionCard` e `NotificationCard` agora podem ser importados diretamente de `xertica-ui/blocks`.
232
+ - **Subpath público `xertica-ui/pages`** — `LoginPage`, `HomePage`, `TemplatePage`, `ForgotPasswordPage`, `ResetPasswordPage`, `VerifyEmailPage` e seus contents agora são publicados com entrypoint dedicado.
233
+ - **Documentação** — criado `docs/components/card-patterns.md` com props, exemplos e layout de dashboard completo para todos os 6 block components.
234
+
235
+ ### Changed
236
+
237
+ - **Calendardropdown caption styling** — quando `captionLayout="dropdown"` ou variações, os seletores de mês/ano agora têm visual de input (borda, fundo `bg-background`, focus ring `ring-primary`, `rounded-[var(--radius)]`, padding compacto fixo `px-2.5 py-1`). O `caption_label` em modo dropdown passa a usar `h-full w-full` com layout flexível.
238
+ - **Calendar — prop `size` removida** — o tamanho e o arredondamento do trigger ("Pick a date") são responsabilidade do elemento trigger, não do `Calendar`. A story `InPopover` demonstra o padrão correto com `triggerSizeClasses` aplicado diretamente ao `<Button>` com `rounded-[var(--radius)]` para alinhar com o token do `Input`.
239
+ - **Card stories** — enriquecidas com 3 novas variações: `WithAction` (uso de `CardAction` no header), `TeamMember` (grid de member cards com avatar e status), `SettingsCard` (lista de settings com `Separator` e `Badge`). Background `bg-muted` adicionado via decorator global da stories file para contraste com o fundo dos cards.
240
+ - **Storybook — docs stories** — adicionado `render: (args) => <Component {...args} />` no nível do `meta` em todos os 60 arquivos de stories em `components/ui/`. Resolve o problema onde stories com apenas `args` (sem `render` explícito) mostravam a mesma variação repetida na aba Docs por dependerem do `projectAnnotations.render` implícito do framework React.
241
+ - **Storybook`preview.tsx`** `min-h-screen` passou a ser condicional a `layout: 'fullscreen'`, resolvendo a altura excessiva dos exemplos na aba Docs.
242
+ - **Template npm** — `templates/package.json` atualizado para `2.1.0` e dependência `xertica-ui` para `^2.1.0`.
243
+ - **Template version badge** — o template passa a exibir um indicador visual discreto da versão do pacote `xertica-ui` usada pelo projeto.
244
+ - **Documentação** — atualizados `calendar.md` (props `captionLayout`/`buttonVariant`, nota sobre `size` no trigger), `card.md` (`CardAction` na anatomia, exemplos WithAction/Stats/TeamMember/Settings), `chart.md` (nova seção Stacked Bar Chart), `architecture.md` (domínio `blocks/` com árvore de arquivos).
245
+
246
+ ### Fixed
247
+
248
+ - **Chart — stacked bar radius** — em `DashboardBarChart` com `stacked`, apenas a série no topo de cada `stackId` recebe `radius={[4,4,0,0]}`; as demais recebem `radius={[0,0,0,0]}`. Elimina a borda arredondada no topo das barras intermediárias e inferiores da pilha.
249
+ - **`FeatureCard` — badge overflow** — alterado de `flex items-center` para `flex flex-wrap` no container título+badge, garantindo que o badge quebre para a linha seguinte em vez de vazar fora do card quando o título ocupa toda a largura disponível.
250
+
251
+ ---
252
+
253
+ ## [2.0.6] — 2026-05-13
254
+
255
+ ### Added
256
+
257
+ - **Contrato de independência dos componentes** — documentado que `xertica-ui/style.css` é a única importação global obrigatória e que componentes públicos devem funcionar isoladamente sempre que possível.
258
+ - **`useOptionalLayout`** nova API compatível para componentes reutilizáveis consumirem o layout com fallback seguro, mantendo `useLayout` como hook estrito para apps que querem falhar cedo.
259
+ - **Smoke tests de API pública** — adicionada validação de import/render dos subpaths públicos (`ui`, `brand`, `layout`, `assistant`, `media` e `hooks`).
260
+ - **Exports públicos de Maps** `useMapLayers`, `GOOGLE_MAPS_ID` e `GOOGLE_MAPS_LIBRARIES` agora são expostos pelo subpath `xertica-ui/ui`.
261
+
262
+ ### Changed
263
+
264
+ - **`XerticaProvider` completo** passa a compor providers de theme, brand colors, language, layout, assistant, API keys, Google Maps, tooltip e toaster como wrapper de conveniência para apps consumidores.
265
+ - **Componentes com contexto de layout** — `Header`, `Sidebar`, páginas e componentes de mídia foram ajustados para renderizar com fallback interno quando importados sem provider.
266
+ - **Arquitetura FSD/FDA** — tipos compartilhados do assistant foram movidos para camada neutra, evitando dependência runtime de `components/shared` para implementação de feature.
267
+ - **Documentação LLM e componentes** — README, docs de provider/mapa, `llms.txt`, `llms-compact.txt` e `docs/llms.md` foram alinhados ao contrato de independência e aos subpaths consumíveis.
268
+ - **Storybook Docs de UI** — páginas MDX dos componentes de UI agora renderizam as variações reais das stories, evitando repetição do mesmo exemplo nos blocos de variação.
269
+ - **Storybook Maps** stories de mapa usam um frame responsivo mais largo para melhorar a visualização na aba Docs.
270
+
271
+ ### Fixed
272
+
273
+ - **Guards de browser/SSR** — providers e componentes browser-only agora protegem acessos a `window`, `document`, `localStorage`, `navigator` e scripts externos.
274
+ - **Google Maps sem configuração** componentes relacionados a Maps renderizam estados de configuração/erro sem quebrar a aplicação consumidora.
275
+
276
+ ---
277
+
278
+ ## [2.0.5]2026-05-12
279
+
280
+ ### Added
281
+
282
+ - **`llms-compact.txt`** novo arquivo de referência compacto para LLMs, sintetizando todos os componentes em formato reduzido ideal para contextos de tokens limitados.
283
+ - **`docs/decision-tree.md`**guia de árvore de decisão para agentes de IA selecionarem o componente correto com base nos requisitos da UI.
284
+ - **`templates/CLAUDE.md`**`CLAUDE.md` agora é scaffolded automaticamente em projetos criados via `npx xertica-ui@latest init`, fornecendo contexto arquitetural (FSD/FDA, subpath imports, tokens semânticos) para Claude Code e outros assistentes de IA.
285
+ - **Storybook stories** adicionadas stories interativas para Accordion, AlertDialog, Button, Checkbox, Dialog, Input, Switch, Tabs, HomePage e TemplatePage.
286
+ - **`components/pages/home-page/home-page.mdx`** e **`template-page.mdx`** novas entradas de documentação MDX para as page components.
287
+
288
+ ### Changed
289
+
290
+ - **`guidelines/Guidelines.md`** — reescrita completa do guia de arquitetura FSD/FDA: maior detalhamento de responsabilidades por camada, convenções de import e fluxo de adição de novas rotas.
291
+ - **`components.json`** — atualização completa do registro de componentes, cobrindo todos os 97 componentes com metadados de subpath, props e variantes.
292
+ - **`llms.txt`** — seção de subpath imports e mapeamento de camadas FSD/FDA atualizados.
293
+ - **`vite.config.ts`** — ajustes no build multi-entry para garantir correta emissão dos arquivos CJS/ESM.
294
+
295
+ ### Fixed
296
+
297
+ - **`npx xertica-ui init` usa versão em cache** — documentado que o npx armazena pacotes em cache localmente sem TTL curto. Sempre use `npx xertica-ui@latest init` para garantir a versão mais recente. O `templates/CLAUDE.md` scaffolded no projeto gerado inclui essa orientação.
298
+
299
+ ---
300
+
301
+ ## [2.0.3] 2026-05-11
302
+
303
+ ### Added
304
+
305
+ - **CLI `update` atualização de projeto** — novo modo no comando `update` permite atualizar os arquivos do projeto (app shell, shared, features, pages) para qualquer versão publicada do `xertica-ui`, com seleção granular de quais partes atualizar e confirmação antes de sobrescrever.
306
+
307
+ ---
308
+
309
+ ## [2.0.2]2026-05-11
310
+
311
+ ### Fixed
312
+
313
+ - **CLI rewritten for FSD/FDA structure** `npx xertica-ui@latest init` agora copia corretamente a estrutura Feature-Sliced Design:
314
+ - Removida cópia de `src/app/routes.tsx` (arquivo não existe mais após refatoração)
315
+ - Adicionada cópia de `src/app/components/AppLayout.tsx`
316
+ - Adicionada cópia completa de `src/shared/` (`auth.ts`, `navigation.ts`, `types/auth.ts`)
317
+ - Adicionada cópia de `src/features/auth|home|template` conforme seleções do usuário
318
+ - Cópia de pages corrigida de `src/app/pages/` → `src/pages/`
319
+ - `AuthGuard.tsx` agora gerado dinamicamente com imports e rotas apenas das páginas selecionadas
320
+ - **`generateDemoResponse` exportado via `xertica-ui/assistant`** — estava ausente do barrel causando `SyntaxError: does not provide an export named 'generateDemoResponse'`
321
+ - **Build corrigido: UMD → CJS** — múltiplos entry points não são suportados com formato UMD no Vite; migrado para CJS (todos os `*.umd.js` `*.cjs.js` no `package.json` exports)
322
+
323
+ ---
324
+
325
+ ## [2.0.0] — 2026-05-11
326
+
327
+ ### Added
328
+
329
+ - **Subpath exports** — The package now exposes 6 granular entry points alongside the full root barrel:
330
+ - `xertica-ui/ui` — all UI primitives (Button, Card, Input, Table, Dialog, etc.)
331
+ - `xertica-ui/layout` — Sidebar and Header
332
+ - `xertica-ui/brand`XerticaProvider, XerticaLogo, XerticaXLogo, XerticaOrbe, ThemeToggle, LanguageSelector
333
+ - `xertica-ui/assistant` — XerticaAssistant, MarkdownMessage, CodeBlock, FormattedDocument, ModernChatInput
334
+ - `xertica-ui/media` — VideoPlayer, AudioPlayer, FloatingMediaWrapper
335
+ - `xertica-ui/hooks` — useLayout, useTheme, useLanguage, useBrandColors, useAssistente, useApiKey
336
+ - Root `from 'xertica-ui'` remains fully supported for backward compatibility.
337
+ - **`ImageWithFallback` added to `xertica-ui/ui`** previously only in the root barrel; now accessible via the `/ui` subpath.
338
+ - **Multi-entry Vite build** — `vite.config.ts` now uses `lib.entry` as an object (7 entry points). Output filenames follow `[entryName].[format].js` pattern.
339
+ - **CLI template — FSD/FDA architecture** — The scaffolded template was restructured to follow Feature-Sliced Design + Feature-Driven Architecture:
340
+ - `src/app/`BrowserRouter, XerticaProvider, AuthGuard (auth state + route definitions), AppLayout (Sidebar + children shell)
341
+ - `src/shared/``config/navigation.ts` (route registry), `lib/auth.ts` (localStorage helpers), `types/auth.ts` (User interface)
342
+ - `src/features/auth/ui/` LoginContent, ForgotPasswordContent, VerifyEmailContent, ResetPasswordContent; with shared `AuthPageShell` and `SocialLoginButtons` DRY extractions
343
+ - `src/features/home/ui/`HomeContent
344
+ - `src/features/template/ui/` TemplateContent, FormTemplate
345
+ - `src/pages/` thin page wrappers (LoginPage, HomePage, TemplatePage, ForgotPasswordPage, VerifyEmailPage, ResetPasswordPage)
346
+ - **`templates/guidelines/Guidelines.md`** — new architecture guide documenting FSD/FDA layers, layer responsibilities, and "Adding New Routes" step-by-step.
347
+
348
+ ### Changed
349
+
350
+ - **Template imports** — All template source files updated to use subpath imports (`xertica-ui/ui`, `xertica-ui/brand`, `xertica-ui/layout`, `xertica-ui/assistant`, `xertica-ui/hooks`) instead of the root barrel.
351
+ - **`FormTemplate.tsx` rewritten** — Removed dependency on `@hookform/resolvers/zod`, `react-hook-form`, and `zod` (packages not included in the CLI template's `package.json`). Now uses plain React `useState` + inline validation with only `xertica-ui/ui` primitives.
352
+ - **`tsconfig.build.json`** — `include` array updated to cover all new barrel source directories (`components/**/*`, `contexts/**/*`, `hooks/**/*`).
353
+ - **Documentation** (`llms.txt`, `llms-full.txt`) — Added subpath import reference table and FSD/FDA layer mapping.
354
+
355
+ ### Fixed
356
+
357
+ - **Stale compiled artifacts** — Removed `App.js`, `App.d.ts`, `main.js`, `main.d.ts` from `templates/src/app/` that were being resolved by Vite's extension priority (`.js` before `.tsx`), causing `Failed to fetch dynamically imported module` errors after the FSD restructure.
358
+
359
+ ---
360
+
361
+ ## [1.10.0] — 2026-05-08
362
+
363
+ ### Added
364
+
365
+ - **Semantic Variants** Added `success`, `info`, and `warning` variants to components that lacked them:
366
+ - **Button** now supports 9 variants: `default`, `secondary`, `outline`, `ghost`, `destructive`, `link`, `success`, `info`, `warning`.
367
+ - **Progress** new `variant` prop (`default`, `success`, `info`, `warning`, `destructive`) colors both the track and the indicator.
368
+ - **NotificationBadge** added `secondary`, `outline`, `success`, `info`, `warning`; standardized `default` to primary color for consistency with Badge and Button.
369
+ - **TimelineDot** — added `info` and `outline` variants; replaced hardcoded `rgb()` values with semantic CSS tokens (`bg-success`, `bg-warning`).
370
+ - **DialogBody** new sub-component for the Dialog. When used, `DialogHeader` and `DialogFooter` stay pinned while `DialogBody` scrolls independently. Exported from `xertica-ui`.
371
+ - **Dialog height management** — `DialogContent` now has `max-h-[calc(100dvh-2rem)] overflow-hidden`. The close button (×) is pinned and never scrolls with content. `size="full"` fills the full viewport height.
372
+ - **Header `breadcrumbSlot`** — new prop accepting any `ReactNode` rendered immediately after the breadcrumb/title area (badges, buttons, status chips, etc.).
373
+ - **Sidebar default variant groups** — `variant="default"` now renders `navigationGroups` with labeled group headers. Each `RouteConfig` supports a `children` field (sub-routes shown in a contextual `DropdownMenu` via a `ChevronRight` button at the end of the item).
374
+
375
+ ### Fixed
376
+
377
+ - **Search double clear icon** — `type="search"` caused browsers to inject a native clear button on top of the custom × icon. Changed to `type="text"`.
378
+ - **CSS `@source` path** — CLI template `src/styles/index.css` had `../node_modules/xertica-ui` (one level short); corrected to `../../node_modules/xertica-ui/components`.
379
+ - **`theme-map.css` incomplete** — `--color-success`, `--color-info`, `--color-warning` and their `foreground` variants were missing, preventing `bg-success`, `text-info`, etc. from being generated in the compiled library CSS.
380
+
381
+ ### Changed
382
+
383
+ - **Storybook argTypes** — Multiple components had controls missing from the Storybook panel: Badge (`success`/`info`/`warning` options), Select (`size`), Avatar (`size`), Rating (`readonly` casing), Timeline (`dotVariant`), Dialog (`size` available in all stories). All corrected.
384
+ - **LLM documentation** (`llms-full.txt`) — Updated Badge, Button, Dialog, Header, NotificationBadge, Progress, Search, Sidebar, and Timeline sections to reflect current APIs.
385
+
386
+ ---
387
+
388
+ ## [1.9.0] — 2026-05-05
389
+
390
+ ### Added
391
+
392
+ - **Standardized Form Sizing System** — Implemented a unified `size` prop (`sm`, `md`, `lg`) across all form-related components for perfect visual alignment in grid layouts:
393
+ - **Text Components** — `Input`, `SelectTrigger`, `Textarea`, `Search`, and `InputOTPSlot` now share consistent height/padding/font-size tokens.
394
+ - **Toggle Components**`Checkbox`, `RadioGroupItem`, and `Switch` now feature dynamic sizing for both containers and internal indicators (check icon, dot, thumb).
395
+ - **Labels** — `Label` component now supports `size` to match the text size of the associated input.
396
+ - **Reference Guide** — Added `docs/form-sizing.md` as a comprehensive guide for the standardized sizing scale.
397
+ - **Assistant Individual Controls** — Added granular control props to `XerticaAssistant` to toggle specific features independently:
398
+ - `showHistory`, `showFavorites`, `allowAudioInput`, `allowFileUpload`, `allowDocCreation`, `allowPodcastGen`, `allowResearchGen`.
399
+ - **Header Breadcrumb Navigation** — Standardized `Header` to use breadcrumbs as the default navigation pattern:
400
+ - Added support for `react-router-dom` links in breadcrumbs to prevent page reloads.
401
+ - Configurable hierarchy levels and labels directly via props.
402
+
403
+ ### Changed
404
+
405
+ - **Form Component Architecture** Migrated form elements from legacy tokens to standardized design system tokens (`bg-background`, `border-border`) for better theme consistency.
406
+ - **Documentation & Storybook** — Updated all 9 affected form components with new "Sizes" sections in Storybook (Stories + MDX) and enriched LLM-facing markdown documentation.
407
+ - **Unit Testing** — Updated test suites for `Checkbox`, `RadioGroup`, `Switch`, `InputOTP`, `Label`, `Search`, `Select`, and `Textarea` to verify sizing variant classes.
408
+
409
+ ### Fixed
410
+
411
+ - **Search Component** Removed obsolete `loading` prop which was causing TypeScript errors and was redundant with the current design system patterns.
412
+ - **SelectTrigger Sizing** Standardized `md` height to `h-10` (40px) to match the rest of the form system.
413
+
414
+ ---
415
+
416
+ ## [1.8.0] — 2026-04-27
417
+
418
+ ### Added
419
+
420
+ - **VideoPlayer UI Enhancements** Added gradient overlay on controls for improved contrast against video content:
421
+ - Gradient: `from-black/60 via-black/30 to-transparent` with `pt-12` spacing
422
+ - White progress bar with `bg-white/30` track, `bg-white` fill, and `rounded-r-sm` on filled portion
423
+ - White icons with `drop-shadow-md` for visibility
424
+ - Buttons use `text-white hover:text-white hover:bg-black/50` for proper hover states
425
+ - **Slider Visual Fixes** Improved progress bar alignment:
426
+ - Added left margin `ml-2` to track for thumb alignment
427
+ - Added `rounded-r-sm` to Range for filled portion
428
+ - Adjusted track/margins for proper visual alignment at full value
429
+
430
+ ### Changed
431
+
432
+ - **Documentation** — Updated component counts across all docs:
433
+ - `llms.txt`: 75 → 97 components
434
+ - `llms-full.txt`: Added statistics table
435
+ - `docs/llms.md`: Added statistics section
436
+ - `Introduction.mdx`: Added "97 Components" badge
437
+ - **components.json** 75 89 components (added missing Media, Assistant, Pages, and Map components)
438
+
439
+ ### Fixed
440
+
441
+ - **Slider Progress Bar** — Fixed visual gap where thumb doesn't align with filled bar at end position by adjusting track margins
442
+
443
+ ---
444
+
445
+ ## [1.7.0] — 2026-04-23
446
+
447
+ ### Fixed
448
+
449
+ - **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.).
450
+ - **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.
451
+ - **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.
452
+
453
+ ### Added
454
+
455
+ - **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.
456
+ - **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.
457
+ - **Documentation** — `docs/getting-started.md` updated with CLI `update` command reference and a new "CSS Setup (Critical)" section explaining the `@theme inline` requirement.
458
+
459
+ ---
460
+
461
+ ## [1.6.0]2026-04-20
462
+
463
+ ### Added
464
+
465
+ - **`docs/llms.md`**Master LLM/AI-agent entrypoint index with full component catalog, token quick reference, and reading order guide.
466
+ - **`docs/layout.md`**Complete `LayoutContext` and `useLayout()` API reference.
467
+ - **`docs/components/route-map.md`**New documentation for `RouteMap` component.
468
+ - **`docs/components/use-mobile.md`**New documentation for `useMobile` / `useIsMobile` hooks.
469
+ - **`Header`** — New props: `user` (profile with avatar, name, email, and dropdown menu items), `actions` (custom icon action buttons), `showSettings` / `onSettingsClick`, `showLogout` / `onLogoutClick`. Fixed render order: Language → Theme → Actions → Settings → User → Logout.
470
+ - **`Sidebar`** — New `width` prop (`expandedWidth: number`) for configuring the expanded sidebar pixel width. Width is now read and stored via `LayoutContext.sidebarWidth`.
471
+
472
+ ### Changed
473
+
474
+ - **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).
475
+ - **JSDoc** — All Portuguese JSDoc comments in `components/ui/` translated to English and enriched with accurate `@ai-rules`.
476
+ - **`README.md`** — Complete rewrite in English, restructured for npm page quality (quick start, install guide, component catalog, token reference, AI agent entrypoint, troubleshooting).
477
+ - **`package.json`** — Version bumped to `1.6.0`. Description translated to English.
478
+
479
+ ### Fixed
480
+
481
+ - **`docs/components/page-header.md`** — Was documenting a wrong API (`title/description/actions`). Now correctly documents the real API: `breadcrumbs[]`, `showLanguageSelector`, `rightContent`, `PageHeaderHeading`, `PageHeaderDescription`.
482
+ - **`docs/components/stepper.md`** — Was documenting a `steps[]` array prop. Now correctly documents the composable `<Stepper currentStep> + <Step step label>` API (1-indexed).
483
+ - **`docs/components/empty.md`** — Was documenting single-prop component. Now correctly documents the composable sub-component pattern: `Empty > EmptyIcon > EmptyTitle > EmptyDescription > EmptyAction`.
484
+ - **`docs/components/stats-card.md`** — `trend` was documented as a string. Now correctly documented as `{ value: number; label?: string }`.
485
+ - **`docs/components/chart.md`** — Was documenting raw Recharts usage. Now correctly documents the `ChartContainer + ChartConfig + var(--color-*)` pattern.
486
+
487
+ ---
488
+
489
+ ## [1.5.2] — 2026-04-15
490
+
491
+ ### Fixed
492
+
493
+ - Resolved regression where modal components (Dialog/AlertDialog) failed to render in projects initialized via the CLI.
494
+ - Implemented robust CSS integration using Tailwind v4 theme mappings.
495
+ - Ensured Radix UI portals correctly inherit theme variables.
496
+
497
+ ---
498
+
499
+ ## [1.5.1] — 2026-04-14
500
+
501
+ ### Changed
502
+
503
+ - Sidebar: Added `assistente` variant with fixed areas, searchable navigation, and grouped navigation structures.
504
+ - Template page updated to demonstrate the assistant sidebar variant.
505
+
506
+ ---
507
+
508
+ ## [1.5.0] — 2026-04-13
509
+
510
+ ### Added
511
+
512
+ - `Sidebar` — `width` / `expandedWidth` prop for configurable expanded sidebar width.
513
+ - `LayoutContext` — `sidebarWidth` and `setSidebarWidth` for global sidebar width management.
514
+ - `Header` — User profile section with avatar, dropdown menu, settings button, and logout button.
515
+ - `StatsCard` — KPI metric card component.
516
+ - `Timeline` — Chronological event list with dot variants.
517
+ - `TreeView` — Hierarchical tree navigation.
518
+ - `Rating` — Star-based rating input.
519
+ - `FileUpload` — Drag-and-drop file input.
520
+ - `Search` — Pre-built search input with icon and clear button.
521
+ - `NotificationBadge` — Dot/count badge overlay.
522
+ - `RouteMap` — Google Maps route display and direction calculation.
523
+ - `Stepper` — Multi-step progress indicator.
524
+ - `Map` — Advanced Google Maps integration with markers, circles, polygons, and layers.
525
+ - `XerticaAssistant` — Embedded Gemini AI assistant panel.