xertica-ui 2.1.8 → 2.1.10

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 (830) hide show
  1. package/CHANGELOG.md +469 -454
  2. package/README.md +299 -285
  3. package/bin/cli.ts +548 -473
  4. package/bin/generate-tokens.ts +262 -260
  5. package/components/assets/xertica-orbe-animation.ts +1162 -804
  6. package/components/assistant/code-block/CodeBlock.tsx +266 -263
  7. package/components/assistant/code-block/code-block.stories.tsx +57 -57
  8. package/components/assistant/code-block/code-block.test.tsx +44 -44
  9. package/components/assistant/code-block/index.ts +1 -1
  10. package/components/assistant/formatted-document/FormattedDocument.tsx +145 -118
  11. package/components/assistant/formatted-document/formatted-document.stories.tsx +51 -51
  12. package/components/assistant/formatted-document/formatted-document.test.tsx +42 -42
  13. package/components/assistant/formatted-document/index.ts +1 -1
  14. package/components/assistant/markdown-message/MarkdownMessage.tsx +152 -116
  15. package/components/assistant/markdown-message/index.ts +1 -1
  16. package/components/assistant/markdown-message/markdown-message.stories.tsx +50 -50
  17. package/components/assistant/markdown-message/markdown-message.test.tsx +33 -33
  18. package/components/assistant/modern-chat-input/ModernChatInput.tsx +549 -560
  19. package/components/assistant/modern-chat-input/index.ts +1 -1
  20. package/components/assistant/modern-chat-input/modern-chat-input.stories.tsx +131 -131
  21. package/components/assistant/modern-chat-input/modern-chat-input.test.tsx +79 -72
  22. package/components/assistant/xertica-assistant/index.ts +3 -3
  23. package/components/assistant/xertica-assistant/parts/AssistantCollapsedView.tsx +97 -97
  24. package/components/assistant/xertica-assistant/parts/AssistantConversationList.tsx +104 -104
  25. package/components/assistant/xertica-assistant/parts/AssistantDocumentEditor.tsx +79 -81
  26. package/components/assistant/xertica-assistant/parts/AssistantFeedbackDialog.tsx +74 -86
  27. package/components/assistant/xertica-assistant/parts/AssistantHeader.tsx +73 -77
  28. package/components/assistant/xertica-assistant/parts/AssistantMessageBubble.tsx +558 -573
  29. package/components/assistant/xertica-assistant/parts/AssistantTabBar.tsx +65 -65
  30. package/components/assistant/xertica-assistant/parts/AssistantTypingIndicator.tsx +41 -41
  31. package/components/assistant/xertica-assistant/parts/AssistantWelcomeScreen.tsx +101 -98
  32. package/components/assistant/xertica-assistant/parts/index.ts +16 -16
  33. package/components/assistant/xertica-assistant/types.ts +134 -139
  34. package/components/assistant/xertica-assistant/use-assistant.ts +546 -232
  35. package/components/assistant/xertica-assistant/xertica-assistant.stories.tsx +407 -401
  36. package/components/assistant/xertica-assistant/xertica-assistant.test.tsx +65 -65
  37. package/components/assistant/xertica-assistant/xertica-assistant.tsx +609 -593
  38. package/components/blocks/card-patterns/ActivityCard.tsx +41 -32
  39. package/components/blocks/card-patterns/FeatureCard.tsx +54 -45
  40. package/components/blocks/card-patterns/NotificationCard.tsx +59 -49
  41. package/components/blocks/card-patterns/ProfileCard.tsx +45 -29
  42. package/components/blocks/card-patterns/ProjectCard.tsx +59 -38
  43. package/components/blocks/card-patterns/QuickActionCard.tsx +31 -25
  44. package/components/blocks/card-patterns/card-patterns.stories.tsx +162 -92
  45. package/components/blocks/card-patterns/index.ts +12 -12
  46. package/components/blocks/index.ts +1 -1
  47. package/components/brand/branding/branding.stories.tsx +57 -55
  48. package/components/brand/language-selector/LanguageSelector.tsx +67 -61
  49. package/components/brand/language-selector/index.ts +1 -1
  50. package/components/brand/language-selector/language-selector.stories.tsx +64 -28
  51. package/components/brand/language-selector/language-selector.test.tsx +45 -27
  52. package/components/brand/theme-toggle/ThemeToggle.tsx +68 -66
  53. package/components/brand/theme-toggle/index.ts +1 -1
  54. package/components/brand/theme-toggle/theme-toggle.stories.tsx +34 -34
  55. package/components/brand/theme-toggle/theme-toggle.test.tsx +34 -34
  56. package/components/brand/xertica-logo/XerticaLogo.stories.tsx +82 -82
  57. package/components/brand/xertica-logo/XerticaLogo.tsx +104 -87
  58. package/components/brand/xertica-logo/index.ts +1 -1
  59. package/components/brand/xertica-logo/xertica-logo.test.tsx +26 -26
  60. package/components/brand/xertica-orbe/XerticaOrbe.tsx +1927 -1357
  61. package/components/brand/xertica-orbe/index.ts +1 -1
  62. package/components/brand/xertica-orbe/xertica-orbe.stories.tsx +40 -40
  63. package/components/brand/xertica-orbe/xertica-orbe.test.tsx +19 -19
  64. package/components/brand/xertica-provider/XerticaProvider.tsx +63 -63
  65. package/components/brand/xertica-provider/index.ts +1 -1
  66. package/components/brand/xertica-provider/xertica-provider.test.tsx +22 -22
  67. package/components/brand/xertica-xlogo/XerticaXLogo.stories.tsx +79 -79
  68. package/components/brand/xertica-xlogo/XerticaXLogo.tsx +65 -69
  69. package/components/brand/xertica-xlogo/index.ts +1 -1
  70. package/components/brand/xertica-xlogo/xertica-xlogo.test.tsx +16 -16
  71. package/components/examples/ApiKeyMapExample.tsx +71 -72
  72. package/components/examples/DrawingMapExample.tsx +565 -539
  73. package/components/examples/FilterableMapExample.tsx +393 -385
  74. package/components/examples/LocationPickerExample.tsx +348 -328
  75. package/components/examples/MapExamples.tsx +61 -75
  76. package/components/examples/MapGmpExample.tsx +169 -154
  77. package/components/examples/MapShowcase.tsx +471 -471
  78. package/components/examples/RouteMapExamples.tsx +329 -329
  79. package/components/examples/SidebarLogoExample.tsx +65 -65
  80. package/components/examples/SimpleFilterableMap.tsx +40 -13
  81. package/components/examples/index.ts +9 -16
  82. package/components/figma/ImageWithFallback.tsx +7 -7
  83. package/components/hooks/index.ts +13 -22
  84. package/components/hooks/use-layout-shortcuts.ts +43 -46
  85. package/components/index.ts +72 -72
  86. package/components/layout/header/header.stories.tsx +204 -193
  87. package/components/layout/header/header.test.tsx +67 -68
  88. package/components/layout/header/header.tsx +347 -334
  89. package/components/layout/header/index.ts +1 -1
  90. package/components/layout/sidebar/index.ts +3 -3
  91. package/components/layout/sidebar/sidebar.stories.tsx +586 -510
  92. package/components/layout/sidebar/sidebar.test.tsx +65 -62
  93. package/components/layout/sidebar/sidebar.tsx +1068 -1073
  94. package/components/layout/sidebar/use-sidebar.ts +104 -104
  95. package/components/media/FloatingMediaWrapper.tsx +365 -313
  96. package/components/media/audio-player/AudioPlayer.stories.tsx +124 -120
  97. package/components/media/audio-player/AudioPlayer.test.tsx +106 -106
  98. package/components/media/audio-player/AudioPlayer.tsx +763 -587
  99. package/components/media/audio-player/index.ts +1 -1
  100. package/components/media/audio-player/use-audio-player.ts +312 -308
  101. package/components/media/video-player/VideoPlayer.stories.tsx +98 -94
  102. package/components/media/video-player/VideoPlayer.test.tsx +73 -73
  103. package/components/media/video-player/VideoPlayer.tsx +308 -297
  104. package/components/media/video-player/index.ts +1 -1
  105. package/components/pages/forgot-password-page/ForgotPasswordPage.stories.tsx +24 -24
  106. package/components/pages/forgot-password-page/ForgotPasswordPage.tsx +188 -180
  107. package/components/pages/forgot-password-page/forgot-password-page.test.tsx +45 -42
  108. package/components/pages/forgot-password-page/index.ts +1 -1
  109. package/components/pages/home-content/HomeContent.stories.tsx +43 -39
  110. package/components/pages/home-content/HomeContent.tsx +120 -122
  111. package/components/pages/home-content/index.ts +1 -1
  112. package/components/pages/home-page/HomePage.stories.tsx +1 -1
  113. package/components/pages/home-page/HomePage.tsx +75 -94
  114. package/components/pages/home-page/home-page.test.tsx +53 -42
  115. package/components/pages/home-page/index.ts +1 -1
  116. package/components/pages/login-page/LoginPage.stories.tsx +39 -39
  117. package/components/pages/login-page/LoginPage.tsx +216 -216
  118. package/components/pages/login-page/index.ts +1 -1
  119. package/components/pages/login-page/login-page.test.tsx +63 -60
  120. package/components/pages/reset-password-page/ResetPasswordPage.stories.tsx +24 -24
  121. package/components/pages/reset-password-page/ResetPasswordPage.tsx +237 -246
  122. package/components/pages/reset-password-page/index.ts +1 -1
  123. package/components/pages/template-content/TemplateContent.stories.tsx +43 -39
  124. package/components/pages/template-content/TemplateContent.tsx +1237 -1030
  125. package/components/pages/template-content/index.ts +1 -1
  126. package/components/pages/template-page/TemplatePage.stories.tsx +1 -1
  127. package/components/pages/template-page/TemplatePage.tsx +62 -73
  128. package/components/pages/template-page/index.ts +1 -1
  129. package/components/pages/template-page/template-page.test.tsx +52 -39
  130. package/components/pages/verify-email-page/VerifyEmailPage.stories.tsx +41 -41
  131. package/components/pages/verify-email-page/VerifyEmailPage.tsx +206 -198
  132. package/components/pages/verify-email-page/index.ts +1 -1
  133. package/components/shared/CustomTooltipContent.tsx +48 -52
  134. package/components/shared/assistant-utils.test.ts +16 -18
  135. package/components/shared/assistant-utils.ts +208 -171
  136. package/components/shared/error-boundary.stories.tsx +132 -0
  137. package/components/shared/error-boundary.tsx +154 -0
  138. package/components/shared/error-fallbacks.tsx +226 -0
  139. package/components/shared/layout-constants.ts +8 -8
  140. package/components/shared/navigation.ts +35 -0
  141. package/components/shared/use-mobile.test.ts +16 -16
  142. package/components/shared/use-mobile.ts +36 -38
  143. package/components/shared/utils.test.ts +14 -14
  144. package/components/shared/utils.ts +6 -6
  145. package/components/ui/accordion/accordion.stories.tsx +60 -71
  146. package/components/ui/accordion/accordion.test.tsx +59 -64
  147. package/components/ui/accordion/accordion.tsx +77 -79
  148. package/components/ui/accordion/index.ts +1 -1
  149. package/components/ui/alert/alert.stories.tsx +86 -90
  150. package/components/ui/alert/alert.test.tsx +53 -55
  151. package/components/ui/alert/alert.tsx +93 -116
  152. package/components/ui/alert/index.ts +1 -1
  153. package/components/ui/alert-dialog/alert-dialog.stories.tsx +84 -84
  154. package/components/ui/alert-dialog/alert-dialog.test.tsx +70 -68
  155. package/components/ui/alert-dialog/alert-dialog.tsx +149 -171
  156. package/components/ui/alert-dialog/index.ts +1 -1
  157. package/components/ui/aspect-ratio/aspect-ratio.stories.tsx +46 -46
  158. package/components/ui/aspect-ratio/aspect-ratio.test.tsx +28 -28
  159. package/components/ui/aspect-ratio/aspect-ratio.tsx +20 -22
  160. package/components/ui/aspect-ratio/index.ts +1 -1
  161. package/components/ui/assistant-chart/AssistantChart.tsx +64 -64
  162. package/components/ui/assistant-chart/assistant-chart.stories.tsx +44 -44
  163. package/components/ui/assistant-chart/assistant-chart.test.tsx +46 -42
  164. package/components/ui/assistant-chart/index.ts +1 -1
  165. package/components/ui/avatar/avatar.stories.tsx +86 -86
  166. package/components/ui/avatar/avatar.test.tsx +55 -55
  167. package/components/ui/avatar/avatar.tsx +71 -77
  168. package/components/ui/avatar/index.ts +1 -1
  169. package/components/ui/badge/badge.stories.tsx +72 -72
  170. package/components/ui/badge/badge.test.tsx +40 -40
  171. package/components/ui/badge/badge.tsx +57 -67
  172. package/components/ui/badge/index.ts +1 -1
  173. package/components/ui/breadcrumb/breadcrumb.stories.tsx +123 -118
  174. package/components/ui/breadcrumb/breadcrumb.test.tsx +70 -70
  175. package/components/ui/breadcrumb/breadcrumb.tsx +114 -121
  176. package/components/ui/breadcrumb/index.ts +1 -1
  177. package/components/ui/button/button.stories.tsx +183 -161
  178. package/components/ui/button/button.test.tsx +64 -64
  179. package/components/ui/button/button.tsx +98 -109
  180. package/components/ui/button/index.ts +1 -1
  181. package/components/ui/calendar/calendar.stories.tsx +108 -108
  182. package/components/ui/calendar/calendar.test.tsx +53 -53
  183. package/components/ui/calendar/calendar.tsx +75 -103
  184. package/components/ui/calendar/index.ts +1 -1
  185. package/components/ui/card/card.stories.tsx +80 -24
  186. package/components/ui/card/card.test.tsx +55 -55
  187. package/components/ui/card/card.tsx +83 -104
  188. package/components/ui/card/index.ts +1 -1
  189. package/components/ui/carousel/carousel.stories.tsx +80 -80
  190. package/components/ui/carousel/carousel.test.tsx +75 -74
  191. package/components/ui/carousel/carousel.tsx +242 -253
  192. package/components/ui/carousel/index.ts +1 -1
  193. package/components/ui/chart/chart.stories.tsx +175 -150
  194. package/components/ui/chart/chart.test.tsx +93 -269
  195. package/components/ui/chart/chart.tsx +2211 -58
  196. package/components/ui/chart/index.ts +1 -1
  197. package/components/ui/checkbox/checkbox.stories.tsx +89 -83
  198. package/components/ui/checkbox/checkbox.test.tsx +49 -49
  199. package/components/ui/checkbox/checkbox.tsx +68 -68
  200. package/components/ui/checkbox/index.ts +1 -1
  201. package/components/ui/collapsible/collapsible.stories.tsx +45 -60
  202. package/components/ui/collapsible/collapsible.test.tsx +51 -51
  203. package/components/ui/collapsible/collapsible.tsx +32 -44
  204. package/components/ui/collapsible/index.ts +1 -1
  205. package/components/ui/command/command.stories.tsx +134 -141
  206. package/components/ui/command/command.test.tsx +48 -48
  207. package/components/ui/command/command.tsx +163 -192
  208. package/components/ui/command/index.ts +1 -1
  209. package/components/ui/context-menu/context-menu.stories.tsx +76 -78
  210. package/components/ui/context-menu/context-menu.test.tsx +61 -59
  211. package/components/ui/context-menu/context-menu.tsx +236 -264
  212. package/components/ui/context-menu/index.ts +1 -1
  213. package/components/ui/dialog/dialog.stories.tsx +174 -174
  214. package/components/ui/dialog/dialog.test.tsx +78 -76
  215. package/components/ui/dialog/dialog.tsx +189 -201
  216. package/components/ui/dialog/index.ts +1 -1
  217. package/components/ui/drawer/drawer.stories.tsx +71 -75
  218. package/components/ui/drawer/drawer.test.tsx +67 -65
  219. package/components/ui/drawer/drawer.tsx +146 -158
  220. package/components/ui/drawer/index.ts +1 -1
  221. package/components/ui/dropdown-menu/dropdown-menu.stories.tsx +156 -156
  222. package/components/ui/dropdown-menu/dropdown-menu.test.tsx +62 -60
  223. package/components/ui/dropdown-menu/dropdown-menu.tsx +240 -269
  224. package/components/ui/dropdown-menu/index.ts +1 -1
  225. package/components/ui/empty/empty.stories.tsx +85 -92
  226. package/components/ui/empty/empty.test.tsx +31 -37
  227. package/components/ui/empty/empty.tsx +88 -104
  228. package/components/ui/empty/index.ts +1 -1
  229. package/components/ui/file-upload/file-upload.stories.tsx +144 -153
  230. package/components/ui/file-upload/file-upload.test.tsx +65 -69
  231. package/components/ui/file-upload/file-upload.tsx +142 -149
  232. package/components/ui/file-upload/index.ts +2 -2
  233. package/components/ui/file-upload/use-file-upload.ts +177 -232
  234. package/components/ui/form/form.stories.tsx +85 -87
  235. package/components/ui/form/form.test.tsx +75 -80
  236. package/components/ui/form/form.tsx +163 -208
  237. package/components/ui/form/index.ts +1 -1
  238. package/components/ui/google-maps-loader/google-maps-loader.test.tsx +35 -35
  239. package/components/ui/google-maps-loader/google-maps-loader.tsx +463 -443
  240. package/components/ui/google-maps-loader/index.ts +1 -1
  241. package/components/ui/hover-card/hover-card.stories.tsx +61 -67
  242. package/components/ui/hover-card/hover-card.test.tsx +48 -50
  243. package/components/ui/hover-card/hover-card.tsx +50 -56
  244. package/components/ui/hover-card/index.ts +1 -1
  245. package/components/ui/index.ts +400 -313
  246. package/components/ui/input/index.ts +1 -1
  247. package/components/ui/input/input.stories.tsx +153 -143
  248. package/components/ui/input/input.test.tsx +47 -47
  249. package/components/ui/input/input.tsx +57 -57
  250. package/components/ui/input-otp/index.ts +1 -1
  251. package/components/ui/input-otp/input-otp.stories.tsx +117 -118
  252. package/components/ui/input-otp/input-otp.test.tsx +74 -79
  253. package/components/ui/input-otp/input-otp.tsx +101 -104
  254. package/components/ui/label/index.ts +1 -1
  255. package/components/ui/label/label.stories.tsx +74 -74
  256. package/components/ui/label/label.test.tsx +45 -45
  257. package/components/ui/label/label.tsx +53 -53
  258. package/components/ui/map/index.ts +1 -1
  259. package/components/ui/map/map.stories.tsx +39 -39
  260. package/components/ui/map/map.test.tsx +82 -74
  261. package/components/ui/map/map.tsx +505 -470
  262. package/components/ui/map/mock.test.tsx +13 -13
  263. package/components/ui/map-config/index.ts +1 -1
  264. package/components/ui/map-config/map-config.ts +18 -12
  265. package/components/ui/map-layers/index.ts +1 -1
  266. package/components/ui/map-layers/map-layers.test.tsx +48 -44
  267. package/components/ui/map-layers/map-layers.tsx +126 -129
  268. package/components/ui/map.exports/index.ts +1 -1
  269. package/components/ui/map.exports/map.exports.ts +31 -31
  270. package/components/ui/menubar/index.ts +1 -1
  271. package/components/ui/menubar/menubar.stories.tsx +130 -130
  272. package/components/ui/menubar/menubar.test.tsx +53 -51
  273. package/components/ui/menubar/menubar.tsx +265 -289
  274. package/components/ui/navigation-menu/index.ts +1 -1
  275. package/components/ui/navigation-menu/navigation-menu.stories.tsx +126 -128
  276. package/components/ui/navigation-menu/navigation-menu.test.tsx +47 -47
  277. package/components/ui/navigation-menu/navigation-menu.tsx +165 -174
  278. package/components/ui/notification-badge/index.ts +1 -1
  279. package/components/ui/notification-badge/notification-badge.stories.tsx +66 -75
  280. package/components/ui/notification-badge/notification-badge.test.tsx +61 -61
  281. package/components/ui/notification-badge/notification-badge.tsx +91 -88
  282. package/components/ui/page-header/index.ts +1 -1
  283. package/components/ui/page-header/page-header.stories.tsx +69 -69
  284. package/components/ui/page-header/page-header.test.tsx +37 -42
  285. package/components/ui/page-header/page-header.tsx +124 -131
  286. package/components/ui/pagination/index.ts +3 -3
  287. package/components/ui/pagination/pagination.stories.tsx +210 -200
  288. package/components/ui/pagination/pagination.test.tsx +63 -61
  289. package/components/ui/pagination/pagination.tsx +140 -156
  290. package/components/ui/pagination/use-pagination.ts +173 -211
  291. package/components/ui/popover/index.ts +1 -1
  292. package/components/ui/popover/popover.stories.tsx +73 -75
  293. package/components/ui/popover/popover.test.tsx +48 -50
  294. package/components/ui/popover/popover.tsx +54 -60
  295. package/components/ui/progress/index.ts +1 -1
  296. package/components/ui/progress/progress.stories.tsx +55 -55
  297. package/components/ui/progress/progress.test.tsx +23 -23
  298. package/components/ui/progress/progress.tsx +68 -68
  299. package/components/ui/radio-group/index.ts +1 -1
  300. package/components/ui/radio-group/radio-group.stories.tsx +114 -106
  301. package/components/ui/radio-group/radio-group.test.tsx +78 -78
  302. package/components/ui/radio-group/radio-group.tsx +93 -92
  303. package/components/ui/rating/index.ts +1 -1
  304. package/components/ui/rating/rating.stories.tsx +50 -50
  305. package/components/ui/rating/rating.test.tsx +48 -48
  306. package/components/ui/rating/rating.tsx +145 -145
  307. package/components/ui/resizable/index.ts +1 -1
  308. package/components/ui/resizable/resizable.stories.tsx +88 -101
  309. package/components/ui/resizable/resizable.test.tsx +61 -58
  310. package/components/ui/resizable/resizable.tsx +452 -417
  311. package/components/ui/rich-text-editor/index.ts +7 -3
  312. package/components/ui/rich-text-editor/rich-text-editor.stories.tsx +290 -262
  313. package/components/ui/rich-text-editor/rich-text-editor.test.tsx +86 -84
  314. package/components/ui/rich-text-editor/rich-text-editor.tsx +634 -450
  315. package/components/ui/rich-text-editor/use-rich-text-editor.ts +453 -466
  316. package/components/ui/route-map/index.ts +1 -1
  317. package/components/ui/route-map/route-map.stories.tsx +48 -54
  318. package/components/ui/route-map/route-map.test.tsx +108 -95
  319. package/components/ui/route-map/route-map.tsx +348 -300
  320. package/components/ui/scroll-area/index.ts +1 -1
  321. package/components/ui/scroll-area/scroll-area.stories.tsx +31 -35
  322. package/components/ui/scroll-area/scroll-area.test.tsx +27 -27
  323. package/components/ui/scroll-area/scroll-area.tsx +70 -72
  324. package/components/ui/search/index.ts +1 -1
  325. package/components/ui/search/search.stories.tsx +107 -108
  326. package/components/ui/search/search.test.tsx +67 -67
  327. package/components/ui/search/search.tsx +141 -135
  328. package/components/ui/select/index.ts +1 -1
  329. package/components/ui/select/select.stories.tsx +157 -151
  330. package/components/ui/select/select.test.tsx +99 -103
  331. package/components/ui/select/select.tsx +195 -203
  332. package/components/ui/separator/index.ts +1 -1
  333. package/components/ui/separator/separator.stories.tsx +55 -57
  334. package/components/ui/separator/separator.test.tsx +23 -23
  335. package/components/ui/separator/separator.tsx +39 -39
  336. package/components/ui/sheet/index.ts +1 -1
  337. package/components/ui/sheet/sheet.stories.tsx +93 -95
  338. package/components/ui/sheet/sheet.test.tsx +62 -60
  339. package/components/ui/sheet/sheet.tsx +149 -162
  340. package/components/ui/simple-map/index.ts +1 -1
  341. package/components/ui/simple-map/simple-map.stories.tsx +44 -48
  342. package/components/ui/simple-map/simple-map.test.tsx +36 -47
  343. package/components/ui/simple-map/simple-map.tsx +92 -98
  344. package/components/ui/skeleton/index.ts +1 -1
  345. package/components/ui/skeleton/skeleton.stories.tsx +36 -36
  346. package/components/ui/skeleton/skeleton.test.tsx +19 -19
  347. package/components/ui/skeleton/skeleton.tsx +25 -25
  348. package/components/ui/slider/index.ts +1 -1
  349. package/components/ui/slider/slider.stories.tsx +44 -44
  350. package/components/ui/slider/slider.test.tsx +25 -25
  351. package/components/ui/slider/slider.tsx +66 -71
  352. package/components/ui/sonner/index.ts +1 -1
  353. package/components/ui/sonner/sonner.stories.tsx +41 -47
  354. package/components/ui/sonner/sonner.test.tsx +24 -24
  355. package/components/ui/sonner/sonner.tsx +74 -69
  356. package/components/ui/stats-card/index.ts +1 -1
  357. package/components/ui/stats-card/stats-card.stories.tsx +77 -77
  358. package/components/ui/stats-card/stats-card.test.tsx +34 -38
  359. package/components/ui/stats-card/stats-card.tsx +93 -99
  360. package/components/ui/stepper/index.ts +3 -3
  361. package/components/ui/stepper/stepper.stories.tsx +171 -174
  362. package/components/ui/stepper/stepper.test.tsx +47 -47
  363. package/components/ui/stepper/stepper.tsx +190 -168
  364. package/components/ui/stepper/use-stepper.ts +139 -140
  365. package/components/ui/switch/index.ts +1 -1
  366. package/components/ui/switch/switch.stories.tsx +73 -67
  367. package/components/ui/switch/switch.test.tsx +44 -44
  368. package/components/ui/switch/switch.tsx +70 -70
  369. package/components/ui/table/index.ts +1 -1
  370. package/components/ui/table/table.stories.tsx +114 -109
  371. package/components/ui/table/table.test.tsx +43 -50
  372. package/components/ui/table/table.tsx +104 -128
  373. package/components/ui/tabs/index.ts +1 -1
  374. package/components/ui/tabs/tabs.stories.tsx +117 -111
  375. package/components/ui/tabs/tabs.test.tsx +50 -50
  376. package/components/ui/tabs/tabs.tsx +66 -78
  377. package/components/ui/textarea/index.ts +1 -1
  378. package/components/ui/textarea/textarea.stories.tsx +69 -67
  379. package/components/ui/textarea/textarea.test.tsx +41 -41
  380. package/components/ui/textarea/textarea.tsx +61 -61
  381. package/components/ui/timeline/index.ts +1 -1
  382. package/components/ui/timeline/timeline.stories.tsx +97 -87
  383. package/components/ui/timeline/timeline.test.tsx +53 -53
  384. package/components/ui/timeline/timeline.tsx +124 -156
  385. package/components/ui/toggle/index.ts +1 -1
  386. package/components/ui/toggle/toggle.stories.tsx +56 -56
  387. package/components/ui/toggle/toggle.test.tsx +32 -32
  388. package/components/ui/toggle/toggle.tsx +55 -57
  389. package/components/ui/toggle-group/index.ts +1 -1
  390. package/components/ui/toggle-group/toggle-group.stories.tsx +66 -66
  391. package/components/ui/toggle-group/toggle-group.test.tsx +47 -47
  392. package/components/ui/toggle-group/toggle-group.tsx +79 -83
  393. package/components/ui/tooltip/index.ts +1 -1
  394. package/components/ui/tooltip/tooltip.stories.tsx +83 -82
  395. package/components/ui/tooltip/tooltip.test.tsx +39 -37
  396. package/components/ui/tooltip/tooltip.tsx +69 -73
  397. package/components/ui/tree-view/index.ts +4 -4
  398. package/components/ui/tree-view/tree-view.stories.tsx +154 -166
  399. package/components/ui/tree-view/tree-view.test.tsx +58 -58
  400. package/components/ui/tree-view/tree-view.tsx +171 -165
  401. package/components/ui/tree-view/use-tree-view.ts +237 -248
  402. package/components.json +161 -781
  403. package/contexts/ApiKeyContext.test.tsx +26 -26
  404. package/contexts/ApiKeyContext.tsx +125 -121
  405. package/contexts/AssistenteContext.test.tsx +17 -17
  406. package/contexts/AssistenteContext.tsx +113 -107
  407. package/contexts/AuthContext.tsx +118 -0
  408. package/contexts/BrandColorsContext.test.tsx +21 -21
  409. package/contexts/BrandColorsContext.tsx +251 -236
  410. package/contexts/LanguageContext.test.tsx +29 -29
  411. package/contexts/LanguageContext.tsx +60 -33
  412. package/contexts/LayoutContext.test.tsx +18 -18
  413. package/contexts/LayoutContext.tsx +140 -126
  414. package/contexts/ThemeContext.test.tsx +38 -36
  415. package/contexts/ThemeContext.tsx +86 -85
  416. package/contexts/index.ts +8 -7
  417. package/contexts/theme-data.ts +340 -340
  418. package/dist/AssistantChart-Bdd44uBn.cjs +3635 -0
  419. package/dist/AssistantChart-CFhDdGyU.js +3609 -0
  420. package/dist/AssistantChart-CeU2dIb6.js +3469 -0
  421. package/dist/AssistantChart-DO5UuX4J.cjs +3495 -0
  422. package/dist/AudioPlayer-BJ2IuRQW.cjs +1275 -0
  423. package/dist/AudioPlayer-CFeV8t-5.cjs +936 -0
  424. package/dist/AudioPlayer-CySJIyvL.js +937 -0
  425. package/dist/AudioPlayer-Xxma6_-H.js +1276 -0
  426. package/dist/BrandColorsContext-DLVJgtmH.js +666 -0
  427. package/dist/BrandColorsContext-GUyFmkX0.cjs +665 -0
  428. package/dist/CodeBlock-C2ZUXt8V.js +219 -0
  429. package/dist/CodeBlock-C5oYnLQp.cjs +218 -0
  430. package/dist/CustomTooltipContent-BT6brkVJ.cjs +49 -0
  431. package/dist/CustomTooltipContent-CfOfikhq.js +33 -0
  432. package/dist/FeatureCard-9GhnlgL3.js +336 -0
  433. package/dist/FeatureCard-Dkp-xmzM.cjs +335 -0
  434. package/dist/LayoutContext-C4kKN9RV.cjs +93 -0
  435. package/dist/LayoutContext-CGEe1oPq.js +94 -0
  436. package/dist/ThemeContext-CGk3KK0k.cjs +180 -0
  437. package/dist/ThemeContext-CQSo4Iwc.js +181 -0
  438. package/dist/VerifyEmailPage--1Vurewl.cjs +3196 -0
  439. package/dist/VerifyEmailPage-1WwWczAn.js +2818 -0
  440. package/dist/VerifyEmailPage-BComraR7.cjs +2817 -0
  441. package/dist/VerifyEmailPage-CFLMls1p.cjs +2827 -0
  442. package/dist/VerifyEmailPage-COiyNl1y.js +2825 -0
  443. package/dist/VerifyEmailPage-CgMxRb4z.js +3197 -0
  444. package/dist/VerifyEmailPage-DjQKRlUS.cjs +2824 -0
  445. package/dist/VerifyEmailPage-MTD7AG1Z.js +2828 -0
  446. package/dist/XerticaOrbe-BCUVSPPB.cjs +1924 -0
  447. package/dist/XerticaOrbe-By8eEvR-.js +1925 -0
  448. package/dist/XerticaProvider-D-yNhF94.cjs +39 -0
  449. package/dist/XerticaProvider-DYq4JWtg.js +40 -0
  450. package/dist/XerticaXLogo-CQUUjXoH.cjs +242 -0
  451. package/dist/XerticaXLogo-Cmsp-Eey.js +243 -0
  452. package/dist/alert-dialog-B4M3vQKS.cjs +875 -0
  453. package/dist/alert-dialog-KpoabzJb.js +852 -0
  454. package/dist/assistant.cjs.js +18 -4
  455. package/dist/assistant.es.js +18 -4
  456. package/dist/avatar-CuYu2MKt.cjs +72 -0
  457. package/dist/avatar-Cxyofu1H.js +56 -0
  458. package/dist/blocks.cjs.js +1 -1
  459. package/dist/blocks.es.js +1 -1
  460. package/dist/brand.cjs.js +3 -3
  461. package/dist/brand.es.js +3 -3
  462. package/dist/breadcrumb-DIJ0X3Ot.js +96 -0
  463. package/dist/breadcrumb-DjSxkjlQ.cjs +95 -0
  464. package/dist/button-Bnv9SvYK.cjs +79 -0
  465. package/dist/button-C6uvh0rV.js +63 -0
  466. package/dist/card-B8-Gl5DL.js +73 -0
  467. package/dist/card-Bv_c57KU.cjs +72 -0
  468. package/dist/cli.js +98 -23
  469. package/dist/components/assistant/code-block/CodeBlock.d.ts +1 -1
  470. package/dist/components/assistant/formatted-document/FormattedDocument.d.ts +1 -1
  471. package/dist/components/assistant/xertica-assistant/use-assistant.d.ts +2 -1
  472. package/dist/components/assistant/xertica-assistant/xertica-assistant.d.ts +13 -5
  473. package/dist/components/blocks/card-patterns/ActivityCard.d.ts +2 -2
  474. package/dist/components/blocks/card-patterns/FeatureCard.d.ts +6 -6
  475. package/dist/components/blocks/card-patterns/NotificationCard.d.ts +2 -2
  476. package/dist/components/blocks/card-patterns/ProfileCard.d.ts +2 -2
  477. package/dist/components/blocks/card-patterns/ProjectCard.d.ts +2 -2
  478. package/dist/components/blocks/card-patterns/QuickActionCard.d.ts +5 -5
  479. package/dist/components/blocks/card-patterns/index.d.ts +12 -12
  480. package/dist/components/blocks/index.d.ts +1 -1
  481. package/dist/components/brand/language-selector/LanguageSelector.d.ts +13 -7
  482. package/dist/components/brand/theme-toggle/ThemeToggle.d.ts +1 -1
  483. package/dist/components/brand/xertica-logo/XerticaLogo.d.ts +1 -1
  484. package/dist/components/brand/xertica-xlogo/XerticaXLogo.d.ts +1 -1
  485. package/dist/components/hooks/index.d.ts +1 -11
  486. package/dist/components/index.d.ts +1 -1
  487. package/dist/components/layout/sidebar/sidebar.d.ts +6 -6
  488. package/dist/components/layout/sidebar/use-sidebar.d.ts +1 -1
  489. package/dist/components/media/video-player/VideoPlayer.d.ts +1 -1
  490. package/dist/components/pages/home-content/HomeContent.d.ts +6 -20
  491. package/dist/components/pages/home-page/HomePage.d.ts +7 -19
  492. package/dist/components/pages/template-content/TemplateContent.d.ts +1 -11
  493. package/dist/components/pages/template-page/TemplatePage.d.ts +2 -14
  494. package/dist/components/shared/error-boundary.d.ts +60 -0
  495. package/dist/components/shared/error-fallbacks.d.ts +16 -0
  496. package/dist/components/shared/navigation.d.ts +14 -0
  497. package/dist/components/shared/utils.d.ts +1 -1
  498. package/dist/components/ui/accordion/accordion.d.ts +2 -2
  499. package/dist/components/ui/alert/alert.d.ts +17 -17
  500. package/dist/components/ui/alert-dialog/alert-dialog.d.ts +4 -4
  501. package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts +1 -1
  502. package/dist/components/ui/assistant-chart/AssistantChart.d.ts +1 -1
  503. package/dist/components/ui/avatar/avatar.d.ts +3 -3
  504. package/dist/components/ui/badge/badge.d.ts +3 -3
  505. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +8 -8
  506. package/dist/components/ui/button/button.d.ts +4 -4
  507. package/dist/components/ui/calendar/calendar.d.ts +4 -4
  508. package/dist/components/ui/card/card.d.ts +9 -9
  509. package/dist/components/ui/carousel/carousel.d.ts +7 -7
  510. package/dist/components/ui/chart/chart.d.ts +324 -9
  511. package/dist/components/ui/checkbox/checkbox.d.ts +2 -2
  512. package/dist/components/ui/collapsible/collapsible.d.ts +1 -1
  513. package/dist/components/ui/command/command.d.ts +4 -4
  514. package/dist/components/ui/context-menu/context-menu.d.ts +4 -4
  515. package/dist/components/ui/dialog/dialog.d.ts +6 -6
  516. package/dist/components/ui/drawer/drawer.d.ts +5 -5
  517. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +4 -4
  518. package/dist/components/ui/empty/empty.d.ts +2 -2
  519. package/dist/components/ui/file-upload/file-upload.d.ts +1 -1
  520. package/dist/components/ui/file-upload/use-file-upload.d.ts +15 -9
  521. package/dist/components/ui/form/form.d.ts +7 -7
  522. package/dist/components/ui/hover-card/hover-card.d.ts +2 -2
  523. package/dist/components/ui/index.d.ts +144 -144
  524. package/dist/components/ui/input/input.d.ts +3 -3
  525. package/dist/components/ui/input-otp/input-otp.d.ts +6 -6
  526. package/dist/components/ui/label/label.d.ts +3 -3
  527. package/dist/components/ui/map-config/map-config.d.ts +1 -1
  528. package/dist/components/ui/map.exports/map.exports.d.ts +1 -1
  529. package/dist/components/ui/menubar/menubar.d.ts +4 -4
  530. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +2 -2
  531. package/dist/components/ui/notification-badge/notification-badge.d.ts +2 -2
  532. package/dist/components/ui/page-header/page-header.d.ts +1 -1
  533. package/dist/components/ui/pagination/pagination.d.ts +8 -9
  534. package/dist/components/ui/popover/popover.d.ts +2 -2
  535. package/dist/components/ui/progress/progress.d.ts +3 -3
  536. package/dist/components/ui/radio-group/radio-group.d.ts +2 -2
  537. package/dist/components/ui/rating/rating.d.ts +2 -2
  538. package/dist/components/ui/resizable/resizable.d.ts +1 -1
  539. package/dist/components/ui/rich-text-editor/index.d.ts +1 -1
  540. package/dist/components/ui/scroll-area/scroll-area.d.ts +2 -2
  541. package/dist/components/ui/search/search.d.ts +3 -3
  542. package/dist/components/ui/select/select.d.ts +2 -2
  543. package/dist/components/ui/separator/separator.d.ts +2 -2
  544. package/dist/components/ui/sheet/sheet.d.ts +6 -6
  545. package/dist/components/ui/skeleton/skeleton.d.ts +1 -1
  546. package/dist/components/ui/slider/slider.d.ts +2 -2
  547. package/dist/components/ui/sonner/sonner.d.ts +1 -1
  548. package/dist/components/ui/stats-card/stats-card.d.ts +1 -1
  549. package/dist/components/ui/stepper/stepper.d.ts +1 -1
  550. package/dist/components/ui/switch/switch.d.ts +2 -2
  551. package/dist/components/ui/table/table.d.ts +10 -10
  552. package/dist/components/ui/tabs/tabs.d.ts +2 -2
  553. package/dist/components/ui/textarea/textarea.d.ts +3 -3
  554. package/dist/components/ui/timeline/timeline.d.ts +1 -1
  555. package/dist/components/ui/toggle/toggle.d.ts +3 -3
  556. package/dist/components/ui/toggle-group/toggle-group.d.ts +3 -3
  557. package/dist/components/ui/tooltip/tooltip.d.ts +2 -2
  558. package/dist/components/ui/tree-view/tree-view.d.ts +4 -4
  559. package/dist/contexts/AuthContext.d.ts +47 -0
  560. package/dist/contexts/LanguageContext.d.ts +1 -0
  561. package/dist/contexts/ThemeContext.d.ts +1 -1
  562. package/dist/contexts/index.d.ts +1 -0
  563. package/dist/dropdown-menu-B_uEXNc4.cjs +220 -0
  564. package/dist/dropdown-menu-CFuCssWA.js +204 -0
  565. package/dist/features/assistant/data/mock.d.ts +12 -0
  566. package/dist/features/assistant/hooks/useAssistantConfig.d.ts +3 -0
  567. package/dist/features/assistant/index.d.ts +2 -0
  568. package/dist/features/home/data/mock.d.ts +28 -0
  569. package/dist/features/home/hooks/useDashboardStats.d.ts +3 -0
  570. package/dist/features/home/hooks/useFeatureCards.d.ts +3 -0
  571. package/dist/features/home/hooks/useTeamMembers.d.ts +3 -0
  572. package/dist/features/home/index.d.ts +5 -0
  573. package/dist/features/home/store/dashboardStore.d.ts +16 -0
  574. package/dist/google-maps-loader-BVoVhUwA.js +316 -0
  575. package/dist/google-maps-loader-DjJaYhV6.cjs +316 -0
  576. package/dist/hooks.cjs.js +13 -20
  577. package/dist/hooks.es.js +10 -17
  578. package/dist/i18n.d.ts +2 -0
  579. package/dist/index-B7A523O_.js +8 -0
  580. package/dist/index-DmHhnb7a.cjs +7 -0
  581. package/dist/index.cjs.js +53 -67
  582. package/dist/index.es.js +247 -261
  583. package/dist/input-CNFHVKvo.cjs +145 -0
  584. package/dist/input-wPYg0d0P.js +127 -0
  585. package/dist/layout.cjs.js +2 -2
  586. package/dist/layout.es.js +2 -2
  587. package/dist/media.cjs.js +1 -1
  588. package/dist/media.es.js +1 -1
  589. package/dist/pages.cjs.js +1 -1
  590. package/dist/pages.es.js +1 -1
  591. package/dist/progress-Cs9i4DPx.js +81 -0
  592. package/dist/progress-DDeuWPZw.cjs +97 -0
  593. package/dist/rich-text-editor-BM-LPpTh.js +2902 -0
  594. package/dist/rich-text-editor-Bp3zQqMC.js +2954 -0
  595. package/dist/rich-text-editor-CeucBdIv.cjs +2971 -0
  596. package/dist/rich-text-editor-DoCkKhzk.cjs +2919 -0
  597. package/dist/select-Cmb8zF7w.cjs +156 -0
  598. package/dist/select-CprSNX0z.js +139 -0
  599. package/dist/sidebar-BbVIQvlP.js +796 -0
  600. package/dist/sidebar-DQj1z3jG.cjs +758 -0
  601. package/dist/sidebar-Djn5syhi.cjs +786 -0
  602. package/dist/sidebar-LluMXfam.js +759 -0
  603. package/dist/sidebar-_rT7rBMk.js +787 -0
  604. package/dist/sidebar-q7P2Godd.cjs +795 -0
  605. package/dist/slider-DcJharR9.cjs +73 -0
  606. package/dist/slider-Pay3fka2.js +56 -0
  607. package/dist/tooltip-CwgSdy3h.cjs +67 -0
  608. package/dist/tooltip-D-OrYnKO.js +51 -0
  609. package/dist/ui.cjs.js +43 -57
  610. package/dist/ui.es.js +224 -238
  611. package/dist/use-audio-player-BJFV24XW.js +188 -0
  612. package/dist/use-audio-player-BkmEmj8Q.js +185 -0
  613. package/dist/use-audio-player-CLFTWFW1.cjs +184 -0
  614. package/dist/use-audio-player-DyVYlOnR.cjs +187 -0
  615. package/dist/use-mobile-BB4M_4Ru.cjs +47 -0
  616. package/dist/use-mobile-CLu9nqGL.js +31 -0
  617. package/dist/xertica-assistant-CfBCo21g.js +2148 -0
  618. package/dist/xertica-assistant-DrsRwla1.cjs +2147 -0
  619. package/dist/xertica-assistant-V_IdW4WF.cjs +2099 -0
  620. package/dist/xertica-assistant-ciJaWqm1.js +2100 -0
  621. package/dist/xertica-ui.css +1 -1
  622. package/docs/ai-usage.md +195 -192
  623. package/docs/architecture-improvements.md +476 -463
  624. package/docs/architecture.md +273 -139
  625. package/docs/components/accordion.md +109 -114
  626. package/docs/components/alert-dialog.md +127 -127
  627. package/docs/components/alert.md +106 -108
  628. package/docs/components/aspect-ratio.md +58 -58
  629. package/docs/components/assistant-chart.md +47 -46
  630. package/docs/components/assistant.md +426 -397
  631. package/docs/components/audio-player.md +167 -126
  632. package/docs/components/avatar.md +101 -103
  633. package/docs/components/badge.md +84 -84
  634. package/docs/components/branding.md +249 -251
  635. package/docs/components/breadcrumb.md +104 -104
  636. package/docs/components/button.md +156 -156
  637. package/docs/components/calendar.md +19 -32
  638. package/docs/components/card-patterns.md +114 -75
  639. package/docs/components/card.md +45 -35
  640. package/docs/components/carousel.md +100 -100
  641. package/docs/components/chart.md +638 -656
  642. package/docs/components/checkbox.md +88 -88
  643. package/docs/components/code-block.md +105 -108
  644. package/docs/components/collapsible.md +86 -91
  645. package/docs/components/command.md +113 -98
  646. package/docs/components/context-menu.md +81 -81
  647. package/docs/components/dialog.md +198 -180
  648. package/docs/components/drawer.md +105 -107
  649. package/docs/components/dropdown-menu.md +127 -131
  650. package/docs/components/empty.md +127 -136
  651. package/docs/components/error-boundary.md +191 -0
  652. package/docs/components/file-upload.md +189 -206
  653. package/docs/components/floating-media-wrapper.md +63 -63
  654. package/docs/components/form.md +177 -150
  655. package/docs/components/formatted-document.md +105 -113
  656. package/docs/components/google-maps-loader.md +44 -43
  657. package/docs/components/header.md +177 -175
  658. package/docs/components/hooks.md +425 -909
  659. package/docs/components/hover-card.md +86 -86
  660. package/docs/components/image-with-fallback.md +107 -106
  661. package/docs/components/input-otp.md +95 -104
  662. package/docs/components/input.md +130 -130
  663. package/docs/components/label.md +69 -69
  664. package/docs/components/language-selector.md +117 -76
  665. package/docs/components/map-layers.md +138 -140
  666. package/docs/components/map.md +12 -12
  667. package/docs/components/markdown-message.md +47 -48
  668. package/docs/components/menubar.md +89 -83
  669. package/docs/components/modern-chat-input.md +164 -163
  670. package/docs/components/navigation-menu.md +83 -83
  671. package/docs/components/notification-badge.md +78 -78
  672. package/docs/components/page-header.md +93 -95
  673. package/docs/components/pages.md +309 -351
  674. package/docs/components/pagination.md +334 -319
  675. package/docs/components/popover.md +116 -121
  676. package/docs/components/progress.md +103 -103
  677. package/docs/components/radio-group.md +133 -129
  678. package/docs/components/rating.md +77 -77
  679. package/docs/components/resizable.md +84 -88
  680. package/docs/components/rich-text-editor.md +255 -244
  681. package/docs/components/route-map.md +124 -124
  682. package/docs/components/scroll-area.md +58 -58
  683. package/docs/components/search.md +87 -87
  684. package/docs/components/select.md +144 -150
  685. package/docs/components/separator.md +58 -58
  686. package/docs/components/sheet.md +122 -124
  687. package/docs/components/sidebar.md +314 -328
  688. package/docs/components/simple-map.md +51 -49
  689. package/docs/components/skeleton.md +99 -92
  690. package/docs/components/slider.md +84 -90
  691. package/docs/components/sonner.md +115 -118
  692. package/docs/components/stats-card.md +120 -119
  693. package/docs/components/stepper.md +268 -268
  694. package/docs/components/switch.md +106 -113
  695. package/docs/components/table.md +138 -138
  696. package/docs/components/tabs.md +117 -117
  697. package/docs/components/textarea.md +86 -90
  698. package/docs/components/theme-toggle.md +73 -72
  699. package/docs/components/timeline.md +121 -117
  700. package/docs/components/toggle-group.md +68 -68
  701. package/docs/components/toggle.md +62 -66
  702. package/docs/components/tooltip.md +116 -116
  703. package/docs/components/tree-view.md +238 -237
  704. package/docs/components/use-mobile.md +96 -100
  705. package/docs/components/video-player.md +68 -68
  706. package/docs/components/xertica-logo.md +36 -35
  707. package/docs/components/xertica-orbe.md +35 -34
  708. package/docs/components/xertica-provider.md +50 -49
  709. package/docs/components/xertica-xlogo.md +35 -34
  710. package/docs/decision-tree.md +37 -31
  711. package/docs/doc-audit.md +224 -223
  712. package/docs/form-sizing.md +162 -154
  713. package/docs/getting-started.md +568 -415
  714. package/docs/guidelines.md +222 -209
  715. package/docs/i18n.md +195 -0
  716. package/docs/installation.md +267 -213
  717. package/docs/layout.md +143 -145
  718. package/docs/llms.md +295 -261
  719. package/docs/patterns/analytics.md +194 -208
  720. package/docs/patterns/crud.md +149 -158
  721. package/docs/patterns/dashboard.md +138 -148
  722. package/docs/patterns/detail-page.md +296 -276
  723. package/docs/patterns/form.md +241 -244
  724. package/docs/patterns/login.md +156 -167
  725. package/docs/patterns/settings.md +368 -346
  726. package/docs/patterns/wizard.md +213 -217
  727. package/docs/state-management.md +283 -0
  728. package/guidelines/Guidelines.md +21 -16
  729. package/hooks/useTheme.test.tsx +16 -16
  730. package/hooks/useTheme.ts +1 -1
  731. package/imports/Podcast.tsx +189 -38
  732. package/imports/XerticaAi.tsx +2 -2
  733. package/imports/XerticaX.tsx +3 -8
  734. package/imports/svg-aueiaqngck.ts +19 -10
  735. package/imports/svg-v9krss1ozd.ts +22 -15
  736. package/imports/svg-vhrdofe3qe.ts +5 -4
  737. package/llms-compact.txt +414 -376
  738. package/llms-full.txt +154 -33
  739. package/llms.txt +26 -0
  740. package/mcp/resources.json +22 -22
  741. package/mcp/tools.json +35 -35
  742. package/package.json +14 -4
  743. package/scripts/ai-validator.ts +91 -83
  744. package/scripts/cleanup-case-dupes.ts +62 -59
  745. package/scripts/generate-ai-manifests.ts +107 -96
  746. package/styles/globals.css +13 -13
  747. package/styles/xertica/app-overrides/chat.css +1 -1
  748. package/styles/xertica/base.css +71 -71
  749. package/styles/xertica/integrations/sonner.css +8 -8
  750. package/styles/xertica/theme-map.css +99 -99
  751. package/styles/xertica/tokens.css +236 -236
  752. package/templates/.prettierignore +4 -0
  753. package/templates/.prettierrc +10 -0
  754. package/templates/CLAUDE.md +34 -85
  755. package/templates/eslint.config.js +26 -29
  756. package/templates/guidelines/Guidelines.md +104 -329
  757. package/templates/package.json +69 -63
  758. package/templates/postcss.config.js +6 -6
  759. package/templates/src/app/App.tsx +46 -26
  760. package/templates/src/app/components/AppLayout.tsx +55 -46
  761. package/templates/src/app/components/AuthGuard.tsx +82 -108
  762. package/templates/src/app/context/AuthContext.tsx +108 -0
  763. package/templates/src/features/assistant/data/mock.ts +66 -0
  764. package/templates/src/features/assistant/hooks/useAssistantConfig.ts +19 -0
  765. package/templates/src/features/assistant/index.ts +5 -0
  766. package/templates/src/features/auth/ui/AuthPageShell.tsx +1 -3
  767. package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +2 -0
  768. package/templates/src/features/auth/ui/LoginContent.tsx +3 -4
  769. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +47 -22
  770. package/templates/src/features/auth/ui/SocialLoginButtons.tsx +19 -5
  771. package/templates/src/features/auth/ui/VerifyEmailContent.tsx +6 -4
  772. package/templates/src/features/home/data/mock.ts +35 -0
  773. package/templates/src/features/home/hooks/useFeatureCards.ts +19 -0
  774. package/templates/src/features/home/index.ts +10 -0
  775. package/templates/src/features/home/store/dashboardStore.ts +25 -0
  776. package/templates/src/features/home/ui/HomeContent.tsx +85 -83
  777. package/templates/src/features/template/ui/CrudTemplate.tsx +57 -225
  778. package/templates/src/features/template/ui/DashboardTemplate.tsx +59 -166
  779. package/templates/src/features/template/ui/FormTemplate.tsx +79 -189
  780. package/templates/src/features/template/ui/LoginTemplate.tsx +52 -50
  781. package/templates/src/features/template/ui/TemplateContent.tsx +1199 -921
  782. package/templates/src/i18n.ts +38 -0
  783. package/templates/src/locales/en.json +79 -0
  784. package/templates/src/locales/es.json +79 -0
  785. package/templates/src/locales/pt-BR.json +79 -0
  786. package/templates/src/main.tsx +11 -10
  787. package/templates/src/pages/AssistantPage.tsx +463 -334
  788. package/templates/src/pages/HomePage.tsx +19 -16
  789. package/templates/src/pages/TemplatePage.tsx +8 -28
  790. package/templates/src/shared/config/navigation.ts +6 -8
  791. package/templates/src/shared/error-boundary.tsx +154 -0
  792. package/templates/src/shared/error-fallbacks.tsx +226 -0
  793. package/templates/src/shared/lib/auth.ts +0 -11
  794. package/templates/src/shared/types/auth.ts +0 -6
  795. package/templates/src/styles/index.css +95 -95
  796. package/templates/src/styles/xertica/tokens.css +236 -236
  797. package/templates/tsconfig.json +24 -31
  798. package/templates/tsconfig.node.json +12 -12
  799. package/templates/vite-env.d.ts +1 -1
  800. package/templates/vite.config.ts +22 -22
  801. package/utils/color-utils.ts +72 -72
  802. package/utils/demo-responses.test.ts +10 -10
  803. package/utils/demo-responses.ts +151 -115
  804. package/utils/gemini.test.ts +25 -25
  805. package/utils/gemini.ts +29 -14
  806. package/components/assistant/xertica-assistant/hooks/index.ts +0 -8
  807. package/components/assistant/xertica-assistant/hooks/use-assistant-conversations.ts +0 -119
  808. package/components/assistant/xertica-assistant/hooks/use-assistant-messages.ts +0 -323
  809. package/components/assistant/xertica-assistant/hooks/use-assistant-suggestions.ts +0 -64
  810. package/components/blocks/card-patterns/card-patterns.test.tsx +0 -448
  811. package/components/ui/chart/parts/chart-dashboard.tsx +0 -1025
  812. package/components/ui/chart/parts/chart-metric.tsx +0 -622
  813. package/components/ui/chart/parts/chart-primitives.tsx +0 -432
  814. package/components/ui/chart/parts/chart-shared.tsx +0 -201
  815. package/components/ui/chart/parts/chart-utils.ts +0 -145
  816. package/components/ui/chart/parts/index.ts +0 -5
  817. package/components/ui/file-upload/use-file-upload.test.ts +0 -173
  818. package/components/ui/pagination/use-pagination.test.ts +0 -104
  819. package/components/ui/rich-text-editor/use-rich-text-editor.test.ts +0 -110
  820. package/components/ui/stepper/use-stepper.test.ts +0 -109
  821. package/components/ui/tree-view/use-tree-view.test.ts +0 -91
  822. package/templates/README.md +0 -152
  823. package/templates/src/features/settings/index.ts +0 -1
  824. package/templates/src/features/settings/ui/SettingsContent.tsx +0 -210
  825. package/templates/src/pages/NotFoundPage.tsx +0 -29
  826. package/templates/src/pages/SettingsPage.tsx +0 -21
  827. package/templates/src/shared/config/assistant.ts +0 -20
  828. package/templates/src/shared/lib/api.ts +0 -79
  829. package/templates/src/shared/ui/PageContent.tsx +0 -35
  830. package/templates/src/vite-env.d.ts +0 -12
package/CHANGELOG.md CHANGED
@@ -1,454 +1,469 @@
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.8] — 2026-05-19
11
-
12
- ### Fixed
13
-
14
- - **`templates/TemplateContent.tsx` navegação entre páginas do template não funcionava** o componente era uma página monolítica sem sistema de tabs roteáveis. Reestruturado completamente:
15
- - Tab bar controlada por `useSearchParams`a URL `/template?tab=dashboard` ativa a tab correta diretamente, permitindo deep-link e navegação pelo histórico do browser
16
- - Botões de `HomeContent` (`/template?tab=dashboard`, `/template?tab=crud`) agora funcionam e ativam a tab correspondente ao carregar
17
- - Cada tab renderiza o sub-template isolado: `DashboardTemplate`, `CrudTemplate`, `FormTemplate`, `LoginTemplate`
18
- - Sub-templates renderizados fora do wrapper de padding do showcase UI sem padding duplo
19
- - Tab `ui` mantém o showcase completo de componentes (Alerts, Cards, Buttons, Forms, Dialogs, etc.)
20
- - Breadcrumb corrigido de "Design System / Página de Template" para "Início / Template"
21
-
22
- ---
23
-
24
- ## [2.1.7] 2026-05-19
25
-
26
- ### Fixed
27
-
28
- - **`templates/TemplateContent.tsx`wrapper raiz não era SPA-router-aware** — o `paddingLeft` manual foi substituído por `<PageContent>` (wrapper compartilhado de `shared/ui/PageContent.tsx`) eliminando código duplicado e garantindo que a lógica de offset do sidebar fique em um único lugar.
29
- - **`templates/TemplateContent.tsx` — `renderLink` tipado como `any`** — corrigido para `Record<string, unknown>` prevenindo erros silenciosos de tipos no spread `{...props}`.
30
- - **`templates/TemplateContent.tsx` — imports mortos removidos** — `Menu`, `ChevronRight`, `Trash2`, `Archive`, `ArrowRightLeft`, `History`, `FileEdit`, `Filter`, `Map` estavam no import mas não eram usados (ou eram usados mas faltavam). Sincronizado imports com uso real.
31
- - **`templates/TemplateContent.tsx` — `<h2>` raw na página** — substituído por `<PageHeader title=... subtitle=... />` para consistência com as regras do projeto.
32
- - **`templates/TemplatePage.tsx` `user` tipado como `{ email: string }` em vez de `User`** — tipo corrigido para `User | null`; `onEvaluation` migrado de `console.log` para `toast.success/info`; componente agora usa `generateDemoResponse`, `richSuggestions`, `feedbackOptions` e `userName` dinâmico.
33
- - **`templates/HomePage.tsx` + `templates/AssistantPage.tsx` `user` tipado como `{ email: string }`**tipo corrigido para `User | null` em ambas as páginas.
34
- - **`templates/AssistantPage.tsx` `userName="Ariel Santos"` hardcoded** substituído por `user?.name ?? 'Usuário'` para usar o dado real do usuário autenticado.
35
-
36
- ---
37
-
38
- ## [2.1.6] — 2026-05-19
39
-
40
- ### Fixed
41
-
42
- - **`templates/HomeContent.tsx` JSX malformado causava crash da página** tags `</div>`, `</ScrollArea>` e `</main>` estavam faltando após refatoração para `<PageContent>`, fazendo a página Home quebrar completamente ao renderizar.
43
- - **`templates/DashboardTemplate.tsx` — `StatsCard.trend` com tipo errado** — `trend` recebia um `number` primitivo (`trend={20.1}`) mas o prop exige um objeto `{ value: number; label?: string }`. Corrigido para `trend={{ value: 20.1, label: 'vs mês anterior' }}` em todos os 4 cards.
44
- - **`templates/DashboardTemplate.tsx` — `DonutBreakdownChart` com chaves acentuadas** — o `channelConfig` usava chaves como `Orgânico` que falhavam no lookup interno do chart. Renomeadas para ASCII (`organico`, `pago`, `social`, `direto`) com labels legíveis mantidas via `label:`.
45
- - **`templates/DashboardTemplate.tsx` — cast de `Badge.variant` sem type safety** — `event.status as 'default' | ...` foi substituído por um mapa `EVENT_BADGE_VARIANT` com tipagem `EventStatus` explícita.
46
- - **`templates/SettingsContent.tsx` — imports duplicados de `xertica-ui/hooks`** — `useTheme` e `useLayout` eram importados em duas linhas separadas do mesmo módulo. Unificados em um único import.
47
- - **`templates/SettingsContent.tsx` — `Separator`, `Badge` e `useNavigate` importados mas nunca usados** removidos para evitar erros de lint/build.
48
- - **`templates/SettingsContent.tsx` — `Switch.onCheckedChange` com tipo incompatível** — `toggleTheme` é `() => void` mas `onCheckedChange` exige `(checked: boolean) => void`. Corrigido com wrapper arrow `() => toggleTheme()`.
49
-
50
- ---
51
-
52
- ## [2.1.5]2026-05-19
53
-
54
- ### Fixed
55
-
56
- - **`use-rich-text-editor` — `wordCount`/`characterCount` não reativos** — os contadores eram lidos via `editorRef.current` no corpo do render (sem estado reativo), ficando stale após cada keystroke. Convertidos para `useState` e atualizados dentro de `handleInput`. Um segundo `useEffect([value])` foi adicionado para atualizar os contadores quando o valor externo é sincronizado ao editor.
57
- - **`use-assistant-messages` — `setTimeout` da resposta AI nunca cancelado** — o timer da resposta simulada (1–2 s) não era cancelado ao desmontar o componente, causando chamadas de `setMensagens` em componente desmontado. Adicionado `responseTimerRef` + `useEffect` cleanup com `clearTimeout`.
58
- - **`use-assistant-messages` — `initialMessages` resetava a conversa a cada re-render** — o `useEffect` que sincronizava `initialMessages` disparava toda vez que a referência do array mudava, sobrescrevendo mensagens digitadas pelo usuário. Corrigido com `hydratedRef` (hydration one-shot).
59
- - **`use-assistant-messages` — auto-scroll forçado ignorava scroll do usuário** — `scrollIntoView` era chamado incondicionalmente em todo novo `mensagens`. Agora só rola se o usuário já está a menos de 120 px do final do container.
60
- - **`use-assistant-conversations` — `conversas` não sincronizado quando `savedConversations` muda** o estado era inicializado uma vez no mount; atualizações externas da prop eram ignoradas. Adicionado `useEffect([savedConversations])` para re-sincronizar.
61
- - **`use-assistant-conversations` — `setTimeout` do comando não limpo no unmount** `commandTimerRef` + cleanup `useEffect` adicionados para cancelar o timer ao desmontar.
62
- - **`use-audio-player` — `eslint-disable` mascarando deps stale no modo-switch effect** o efeito de restauração de estado ao trocar `isFloating`/`variant` lia `currentTime` e `isPlaying` de uma closure stale. Corrigido com `currentTimeRef` e `isPlayingRef` (padrão "latest ref"), eliminando o `eslint-disable`.
63
- - **`use-rich-text-editor` — `eslint-disable` no `useEffect` de seleção** o listener de `selectionchange` chamava `updateActiveFormats` via closure stale. Separado em dois effects: init (mount-only) e listener (via `updateActiveFormatsRef` para evitar re-registro a cada render).
64
- - **`use-assistant-conversations` — `conversasFiltradas` não memoizado** — recalculado em todo re-render do componente pai. Substituído por `useMemo([conversas, abaSelecionada])`.
65
- - **`use-assistant-messages` — `handleEnviarMensagem` tipado como `string | any`** — tipo colapsado para `any`. Corrigido para `(arg?: string) => Promise<void>`.
66
- - **`FileUpload` / `useFileUpload` drop-zone inacessível por teclado** — adicionados `role="button"`, `tabIndex`, `onKeyDown` (Enter/Space abre o file picker) e `focus-visible:ring` à drop-zone.
67
- - **`useFileUpload` — `accept` não validado em drag-and-drop** — o browser aplica `accept` nativamente no picker; arquivos de tipo diferente podiam ser soltos livremente. Adicionado helper `matchesAccept` que filtra por MIME type e extensão antes da validação de tamanho/contagem.
68
- - **`FileUpload` — tamanho de arquivo sempre em KB** — arquivos grandes exibiam `102400.00 KB`. Corrigido para exibição adaptativa KB/MB.
69
- - **`useStepper` — `initialStep` não clampado no mount** — valores fora de `[1, totalSteps]` vazavam diretamente para o estado. Corrigido com lazy initializer `Math.min(Math.max(1, initialStep), totalSteps)`.
70
- - **`use-pagination` — páginas duplicadas quando `siblingCount` grande** — o algoritmo de construção do `items` array podia inserir a mesma página duas vezes quando o sibling range coincidia com os push explícitos de `page 2` / `page totalPages-1`. Reescrito com `Set` deduplicado; ellipsis inferido do gap entre páginas consecutivas.
71
- - **`use-tree-view` — Space key disparava `handleSelect` em nós pai** segundo a spec WAI-ARIA tree, Space em branch deve apenas expandir/colapsar; Select fica reservado para Enter e nós folha. Corrigido no `handleKeyDown`.
72
- - **`chart-metric.tsx` — `stateClassName` passado duas vezes para `getChartState`**em todas as 3 instâncias de `RadarMetricChart`, `PieMetricChart` e `RadialBarMetricChart`, `stateClassName` aparecia dentro do props object e novamente como argumento separado. argumento removido.
73
- - **`use-assistant-conversations` — magic string `'5'` como command ID hardcoded** comentário de TODO mantido; o timer cleanup foi aplicado independentemente.
74
-
75
- ### Added
76
-
77
- - **`useFileUpload` — `clearFiles()`**nova função na API pública do hook que remove todos os arquivos aceitos e limpa o `errorMessage` em uma única chamada.
78
- - **`useFileUpload` — prop `accept`** — o hook agora aceita e aplica o filtro `accept` tanto no drag-and-drop quanto no click-to-browse (anteriormente, `accept` era apenas passado ao `<input>` sem enforçar em drops).
79
-
80
- ### Changed
81
-
82
- - **`Stepper` — ARIA** — adicionados `role="list"` + `aria-label="Progresso: etapa X de Y"` no `<Stepper>` e `role="listitem"` + `aria-current="step"` + `aria-label` descritivo em cada `<Step>`, tornando o componente acessível a screen readers.
83
- - **`PaginationLink` — `disabled` prop + `href` fallback** — `PaginationLink` agora aceita `disabled` (aplica `aria-disabled`, `tabIndex=-1` e `pointer-events-none`) e faz fallback para `href="#"` quando `href` não é passado, garantindo que o link permaneça focusável via Tab em SPAs. `PaginationPrevious` e `PaginationNext` receberam o `disabled` pass-through.
84
- - **`TreeView` — ARIA e roving tabindex** — adicionado `aria-label` (padrão `"Navegação em árvore"`) no `role="tree"` (WCAG 4.1.2); implementado roving tabindex correto: `focusableId = selectedId ?? firstRootId` garante que sempre haja um focusável por Tab mesmo sem seleção ativa.
85
- - **`RichTextEditor` — ARIA no `contentEditable`** — adicionados `role="textbox"`, `aria-multiline="true"`, `aria-label`, `aria-readonly` e `aria-disabled` ao div editável.
86
- - **`RichTextEditor` — removido "Auto-save ativo"** — texto no rodapé que indicava auto-save não implementado. Removido para não enganar o usuário.
87
- - **`RichTextEditor` — sync de `value` externo** adicionado `useEffect([value])` que sincroniza o HTML do editor quando o valor muda externamente e o editor não está em foco (ex.: carregar dados da API após o mount).
88
- - **`Sidebar` — `<nav>` landmark + `aria-expanded` + `useMemo`** — o root `<div>` foi substituído por `<nav aria-label="Navegação principal" id="sidebar-nav">`; o botão de toggle recebeu `aria-expanded` e `aria-controls`; `navigationItems` foi envolvido em `useMemo([routes, pathname])` e a dependency do effect de overflow foi atualizada de `navigationItems.length` para `navigationItems`.
89
- - **`DashboardBarChart` — `topOfStack` com `useMemo`** — computação que determinava qual bar recebe radius no topo do stack foi extraída da IIFE inline para `React.useMemo([stacked, chartSeries])`, evitando recalcular a cada render.
90
- - **Documentação**corrigidas e atualizadas as docs de `file-upload.md`, `stepper.md`, `pagination.md`, `tree-view.md`, `rich-text-editor.md`, `sidebar.md`, `chart.md` e `hooks.md` para refletir todas as mudanças desta versão.
91
-
92
- ---
93
-
94
- ## [2.1.4] — 2026-05-19
95
-
96
- ### Changed
97
-
98
- - **`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.
99
- - **`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`.
100
- - **`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`.
101
- - **`CustomTooltipContent` — componente compartilhado** — implementação duplicada de tooltip customizado (existia em `sidebar.tsx` e `xertica-assistant.tsx`) consolidada em `components/shared/CustomTooltipContent.tsx`.
102
- - **`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`.
103
- - **`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.
104
- - **`ThemeToggle` — usa `useTheme()`**substituída referência direta ao `localStorage` pelo hook `useTheme()` do `ThemeContext`.
105
- - **`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.
106
-
107
- ---
108
-
109
- ## [2.1.3] — 2026-05-16
110
-
111
- ### Added
112
-
113
- - **Headless hooks — 4 new logic-only hooks** — all logic extracted from their UI components into standalone, tree-shakeable hooks:
114
- - **`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`.
115
- - **`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`.
116
- - **`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`.
117
- - **`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`.
118
- - **New chart types 4 new Recharts wrappers** added to `components/ui/chart/chart.tsx`:
119
- - **`RadarMetricChart`** multi-axis radar chart with optional fill, dots, and multi-series overlay.
120
- - **`PieMetricChart`** — pie chart with optional percentage labels and exploded slice support.
121
- - **`RadialBarMetricChart`** — radial bar chart with stacked rings and configurable arc angle.
122
- - **`GaugeChart`** — pure SVG semicircle gauge with needle, threshold color zones, and optional label. Supports `thresholds` array for dynamic color changes at value breakpoints.
123
- - **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.
124
- - **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.
125
-
126
- ### Fixed
127
-
128
- - **`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.
129
- - **`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`.
130
-
131
- ### Changed
132
-
133
- - **`FileUpload` component** — refactored to consume `useFileUpload` internally; public API unchanged.
134
- - **`TreeView` component** — refactored to consume `useTreeView` internally; public API unchanged.
135
- - **`Stepper` component** — refactored to consume `useStepper` internally; public API unchanged.
136
- - **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.
137
-
138
- ---
139
-
140
- ## [2.1.2] — 2026-05-14
141
-
142
- ### Fixed
143
-
144
- - **`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.
145
-
146
- ### Added
147
-
148
- - **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`.
149
- - **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.
150
-
151
- ---
152
-
153
- ## [2.1.1] — 2026-05-14
154
-
155
- ### Fixed
156
-
157
- - **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.
158
- - **`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.
159
-
160
- ---
161
-
162
- ## [2.1.0] — 2026-05-13
163
-
164
- ### Added
165
-
166
- - **`components/blocks/card-patterns/`** — novo domínio `blocks/` com 6 componentes de alto nível compostos exclusivamente de primitivos `ui/`:
167
- - **`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.
168
- - **`ActivityCard`** — feed de atividades recentes com avatar, descrição de ação, timestamp e badge por tipo (`create`, `update`, `delete`, `comment`, `deploy`).
169
- - **`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.
170
- - **`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.
171
- - **`QuickActionCard`** — tile de ação rápida com ícone em caixa colorida, badge e botão full-width.
172
- - **`NotificationCard`** — lista de notificações com indicador de não-lido, badge de tipo, "Marcar todas como lidas" e "Ver todas".
173
- - **Exportação do domínio `blocks/`** todos os componentes disponíveis via `import { ... } from 'xertica-ui'` e via `components/blocks/index.ts`.
174
- - **Subpath público `xertica-ui/blocks`**`FeatureCard`, `ActivityCard`, `ProfileCard`, `ProjectCard`, `QuickActionCard` e `NotificationCard` agora podem ser importados diretamente de `xertica-ui/blocks`.
175
- - **Subpath público `xertica-ui/pages`** — `LoginPage`, `HomePage`, `TemplatePage`, `ForgotPasswordPage`, `ResetPasswordPage`, `VerifyEmailPage` e seus contents agora são publicados com entrypoint dedicado.
176
- - **Documentação**criado `docs/components/card-patterns.md` com props, exemplos e layout de dashboard completo para todos os 6 block components.
177
-
178
- ### Changed
179
-
180
- - **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.
181
- - **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`.
182
- - **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.
183
- - **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.
184
- - **Storybook — `preview.tsx`** — `min-h-screen` passou a ser condicional a `layout: 'fullscreen'`, resolvendo a altura excessiva dos exemplos na aba Docs.
185
- - **Template npm** — `templates/package.json` atualizado para `2.1.0` e dependência `xertica-ui` para `^2.1.0`.
186
- - **Template version badge** — o template passa a exibir um indicador visual discreto da versão do pacote `xertica-ui` usada pelo projeto.
187
- - **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).
188
-
189
- ### Fixed
190
-
191
- - **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.
192
- - **`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.
193
-
194
- ---
195
-
196
- ## [2.0.6] — 2026-05-13
197
-
198
- ### Added
199
-
200
- - **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.
201
- - **`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.
202
- - **Smoke tests de API pública** adicionada validação de import/render dos subpaths públicos (`ui`, `brand`, `layout`, `assistant`, `media` e `hooks`).
203
- - **Exports públicos de Maps** — `useMapLayers`, `GOOGLE_MAPS_ID` e `GOOGLE_MAPS_LIBRARIES` agora são expostos pelo subpath `xertica-ui/ui`.
204
-
205
- ### Changed
206
-
207
- - **`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.
208
- - **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.
209
- - **Arquitetura FSD/FDA** — tipos compartilhados do assistant foram movidos para camada neutra, evitando dependência runtime de `components/shared` para implementação de feature.
210
- - **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.
211
- - **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.
212
- - **Storybook Maps** — stories de mapa usam um frame responsivo mais largo para melhorar a visualização na aba Docs.
213
-
214
- ### Fixed
215
-
216
- - **Guards de browser/SSR** — providers e componentes browser-only agora protegem acessos a `window`, `document`, `localStorage`, `navigator` e scripts externos.
217
- - **Google Maps sem configuração** — componentes relacionados a Maps renderizam estados de configuração/erro sem quebrar a aplicação consumidora.
218
-
219
- ---
220
-
221
- ## [2.0.5] — 2026-05-12
222
-
223
- ### Added
224
-
225
- - **`llms-compact.txt`** — novo arquivo de referência compacto para LLMs, sintetizando todos os componentes em formato reduzido ideal para contextos de tokens limitados.
226
- - **`docs/decision-tree.md`** — guia de árvore de decisão para agentes de IA selecionarem o componente correto com base nos requisitos da UI.
227
- - **`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.
228
- - **Storybook stories** adicionadas stories interativas para Accordion, AlertDialog, Button, Checkbox, Dialog, Input, Switch, Tabs, HomePage e TemplatePage.
229
- - **`components/pages/home-page/home-page.mdx`** e **`template-page.mdx`** novas entradas de documentação MDX para as page components.
230
-
231
- ### Changed
232
-
233
- - **`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.
234
- - **`components.json`** — atualização completa do registro de componentes, cobrindo todos os 97 componentes com metadados de subpath, props e variantes.
235
- - **`llms.txt`** — seção de subpath imports e mapeamento de camadas FSD/FDA atualizados.
236
- - **`vite.config.ts`** — ajustes no build multi-entry para garantir correta emissão dos arquivos CJS/ESM.
237
-
238
- ### Fixed
239
-
240
- - **`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.
241
-
242
- ---
243
-
244
- ## [2.0.3] — 2026-05-11
245
-
246
- ### Added
247
-
248
- - **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.
249
-
250
- ---
251
-
252
- ## [2.0.2] — 2026-05-11
253
-
254
- ### Fixed
255
-
256
- - **CLI rewritten for FSD/FDA structure** — `npx xertica-ui@latest init` agora copia corretamente a estrutura Feature-Sliced Design:
257
- - Removida cópia de `src/app/routes.tsx` (arquivo não existe mais após refatoração)
258
- - Adicionada cópia de `src/app/components/AppLayout.tsx`
259
- - Adicionada cópia completa de `src/shared/` (`auth.ts`, `navigation.ts`, `types/auth.ts`)
260
- - Adicionada cópia de `src/features/auth|home|template` conforme seleções do usuário
261
- - Cópia de pages corrigida de `src/app/pages/` `src/pages/`
262
- - `AuthGuard.tsx` agora gerado dinamicamente com imports e rotas apenas das páginas selecionadas
263
- - **`generateDemoResponse` exportado via `xertica-ui/assistant`** estava ausente do barrel causando `SyntaxError: does not provide an export named 'generateDemoResponse'`
264
- - **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)
265
-
266
- ---
267
-
268
- ## [2.0.0] — 2026-05-11
269
-
270
- ### Added
271
-
272
- - **Subpath exports** — The package now exposes 6 granular entry points alongside the full root barrel:
273
- - `xertica-ui/ui`all UI primitives (Button, Card, Input, Table, Dialog, etc.)
274
- - `xertica-ui/layout` — Sidebar and Header
275
- - `xertica-ui/brand` — XerticaProvider, XerticaLogo, XerticaXLogo, XerticaOrbe, ThemeToggle, LanguageSelector
276
- - `xertica-ui/assistant` — XerticaAssistant, MarkdownMessage, CodeBlock, FormattedDocument, ModernChatInput
277
- - `xertica-ui/media` — VideoPlayer, AudioPlayer, FloatingMediaWrapper
278
- - `xertica-ui/hooks` — useLayout, useTheme, useLanguage, useBrandColors, useAssistente, useApiKey
279
- - Root `from 'xertica-ui'` remains fully supported for backward compatibility.
280
- - **`ImageWithFallback` added to `xertica-ui/ui`** previously only in the root barrel; now accessible via the `/ui` subpath.
281
- - **Multi-entry Vite build** `vite.config.ts` now uses `lib.entry` as an object (7 entry points). Output filenames follow `[entryName].[format].js` pattern.
282
- - **CLI templateFSD/FDA architecture** The scaffolded template was restructured to follow Feature-Sliced Design + Feature-Driven Architecture:
283
- - `src/app/`BrowserRouter, XerticaProvider, AuthGuard (auth state + route definitions), AppLayout (Sidebar + children shell)
284
- - `src/shared/` — `config/navigation.ts` (route registry), `lib/auth.ts` (localStorage helpers), `types/auth.ts` (User interface)
285
- - `src/features/auth/ui/` — LoginContent, ForgotPasswordContent, VerifyEmailContent, ResetPasswordContent; with shared `AuthPageShell` and `SocialLoginButtons` DRY extractions
286
- - `src/features/home/ui/` — HomeContent
287
- - `src/features/template/ui/` — TemplateContent, FormTemplate
288
- - `src/pages/` — thin page wrappers (LoginPage, HomePage, TemplatePage, ForgotPasswordPage, VerifyEmailPage, ResetPasswordPage)
289
- - **`templates/guidelines/Guidelines.md`**new architecture guide documenting FSD/FDA layers, layer responsibilities, and "Adding New Routes" step-by-step.
290
-
291
- ### Changed
292
-
293
- - **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.
294
- - **`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.
295
- - **`tsconfig.build.json`** — `include` array updated to cover all new barrel source directories (`components/**/*`, `contexts/**/*`, `hooks/**/*`).
296
- - **Documentation** (`llms.txt`, `llms-full.txt`) Added subpath import reference table and FSD/FDA layer mapping.
297
-
298
- ### Fixed
299
-
300
- - **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.
301
-
302
- ---
303
-
304
- ## [1.10.0] — 2026-05-08
305
-
306
- ### Added
307
-
308
- - **Semantic Variants** — Added `success`, `info`, and `warning` variants to components that lacked them:
309
- - **Button** — now supports 9 variants: `default`, `secondary`, `outline`, `ghost`, `destructive`, `link`, `success`, `info`, `warning`.
310
- - **Progress** — new `variant` prop (`default`, `success`, `info`, `warning`, `destructive`) colors both the track and the indicator.
311
- - **NotificationBadge** — added `secondary`, `outline`, `success`, `info`, `warning`; standardized `default` to primary color for consistency with Badge and Button.
312
- - **TimelineDot** — added `info` and `outline` variants; replaced hardcoded `rgb()` values with semantic CSS tokens (`bg-success`, `bg-warning`).
313
- - **DialogBody** — new sub-component for the Dialog. When used, `DialogHeader` and `DialogFooter` stay pinned while `DialogBody` scrolls independently. Exported from `xertica-ui`.
314
- - **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.
315
- - **Header `breadcrumbSlot`**new prop accepting any `ReactNode` rendered immediately after the breadcrumb/title area (badges, buttons, status chips, etc.).
316
- - **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).
317
-
318
- ### Fixed
319
-
320
- - **Search double clear icon** — `type="search"` caused browsers to inject a native clear button on top of the custom × icon. Changed to `type="text"`.
321
- - **CSS `@source` path** — CLI template `src/styles/index.css` had `../node_modules/xertica-ui` (one level short); corrected to `../../node_modules/xertica-ui/components`.
322
- - **`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.
323
-
324
- ### Changed
325
-
326
- - **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.
327
- - **LLM documentation** (`llms-full.txt`) Updated Badge, Button, Dialog, Header, NotificationBadge, Progress, Search, Sidebar, and Timeline sections to reflect current APIs.
328
-
329
- ---
330
-
331
- ## [1.9.0] — 2026-05-05
332
-
333
- ### Added
334
- - **Standardized Form Sizing System** — Implemented a unified `size` prop (`sm`, `md`, `lg`) across all form-related components for perfect visual alignment in grid layouts:
335
- - **Text Components** — `Input`, `SelectTrigger`, `Textarea`, `Search`, and `InputOTPSlot` now share consistent height/padding/font-size tokens.
336
- - **Toggle Components** — `Checkbox`, `RadioGroupItem`, and `Switch` now feature dynamic sizing for both containers and internal indicators (check icon, dot, thumb).
337
- - **Labels** — `Label` component now supports `size` to match the text size of the associated input.
338
- - **Reference Guide** — Added `docs/form-sizing.md` as a comprehensive guide for the standardized sizing scale.
339
- - **Assistant Individual Controls** — Added granular control props to `XerticaAssistant` to toggle specific features independently:
340
- - `showHistory`, `showFavorites`, `allowAudioInput`, `allowFileUpload`, `allowDocCreation`, `allowPodcastGen`, `allowResearchGen`.
341
- - **Header Breadcrumb Navigation** — Standardized `Header` to use breadcrumbs as the default navigation pattern:
342
- - Added support for `react-router-dom` links in breadcrumbs to prevent page reloads.
343
- - Configurable hierarchy levels and labels directly via props.
344
-
345
- ### Changed
346
- - **Form Component Architecture** — Migrated form elements from legacy tokens to standardized design system tokens (`bg-background`, `border-border`) for better theme consistency.
347
- - **Documentation & Storybook** — Updated all 9 affected form components with new "Sizes" sections in Storybook (Stories + MDX) and enriched LLM-facing markdown documentation.
348
- - **Unit Testing** — Updated test suites for `Checkbox`, `RadioGroup`, `Switch`, `InputOTP`, `Label`, `Search`, `Select`, and `Textarea` to verify sizing variant classes.
349
-
350
- ### Fixed
351
- - **Search Component** — Removed obsolete `loading` prop which was causing TypeScript errors and was redundant with the current design system patterns.
352
- - **SelectTrigger Sizing** — Standardized `md` height to `h-10` (40px) to match the rest of the form system.
353
-
354
- ---
355
-
356
- ## [1.8.0]2026-04-27
357
-
358
- ### Added
359
- - **VideoPlayer UI Enhancements** — Added gradient overlay on controls for improved contrast against video content:
360
- - Gradient: `from-black/60 via-black/30 to-transparent` with `pt-12` spacing
361
- - White progress bar with `bg-white/30` track, `bg-white` fill, and `rounded-r-sm` on filled portion
362
- - White icons with `drop-shadow-md` for visibility
363
- - Buttons use `text-white hover:text-white hover:bg-black/50` for proper hover states
364
- - **Slider Visual Fixes** — Improved progress bar alignment:
365
- - Added left margin `ml-2` to track for thumb alignment
366
- - Added `rounded-r-sm` to Range for filled portion
367
- - Adjusted track/margins for proper visual alignment at full value
368
-
369
- ### Changed
370
- - **Documentation** Updated component counts across all docs:
371
- - `llms.txt`: 75 97 components
372
- - `llms-full.txt`: Added statistics table
373
- - `docs/llms.md`: Added statistics section
374
- - `Introduction.mdx`: Added "97 Components" badge
375
- - **components.json** — 75 → 89 components (added missing Media, Assistant, Pages, and Map components)
376
-
377
- ### Fixed
378
- - **Slider Progress Bar** — Fixed visual gap where thumb doesn't align with filled bar at end position by adjusting track margins
379
-
380
- ---
381
-
382
- ## [1.7.0] — 2026-04-23
383
-
384
- ### Fixed
385
- - **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.).
386
- - **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.
387
- - **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.
388
-
389
- ### Added
390
- - **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.
391
- - **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.
392
- - **Documentation** — `docs/getting-started.md` updated with CLI `update` command reference and a new "CSS Setup (Critical)" section explaining the `@theme inline` requirement.
393
-
394
- ---
395
-
396
- ## [1.6.0] — 2026-04-20
397
-
398
- ### Added
399
- - **`docs/llms.md`**Master LLM/AI-agent entrypoint index with full component catalog, token quick reference, and reading order guide.
400
- - **`docs/layout.md`**Complete `LayoutContext` and `useLayout()` API reference.
401
- - **`docs/components/route-map.md`** New documentation for `RouteMap` component.
402
- - **`docs/components/use-mobile.md`** — New documentation for `useMobile` / `useIsMobile` hooks.
403
- - **`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.
404
- - **`Sidebar`** — New `width` prop (`expandedWidth: number`) for configuring the expanded sidebar pixel width. Width is now read and stored via `LayoutContext.sidebarWidth`.
405
-
406
- ### Changed
407
- - **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).
408
- - **JSDoc** — All Portuguese JSDoc comments in `components/ui/` translated to English and enriched with accurate `@ai-rules`.
409
- - **`README.md`** — Complete rewrite in English, restructured for npm page quality (quick start, install guide, component catalog, token reference, AI agent entrypoint, troubleshooting).
410
- - **`package.json`** — Version bumped to `1.6.0`. Description translated to English.
411
-
412
- ### Fixed
413
- - **`docs/components/page-header.md`** — Was documenting a wrong API (`title/description/actions`). Now correctly documents the real API: `breadcrumbs[]`, `showLanguageSelector`, `rightContent`, `PageHeaderHeading`, `PageHeaderDescription`.
414
- - **`docs/components/stepper.md`** — Was documenting a `steps[]` array prop. Now correctly documents the composable `<Stepper currentStep> + <Step step label>` API (1-indexed).
415
- - **`docs/components/empty.md`** — Was documenting single-prop component. Now correctly documents the composable sub-component pattern: `Empty > EmptyIcon > EmptyTitle > EmptyDescription > EmptyAction`.
416
- - **`docs/components/stats-card.md`** — `trend` was documented as a string. Now correctly documented as `{ value: number; label?: string }`.
417
- - **`docs/components/chart.md`** — Was documenting raw Recharts usage. Now correctly documents the `ChartContainer + ChartConfig + var(--color-*)` pattern.
418
-
419
- ---
420
-
421
- ## [1.5.2] 2026-04-15
422
-
423
- ### Fixed
424
- - Resolved regression where modal components (Dialog/AlertDialog) failed to render in projects initialized via the CLI.
425
- - Implemented robust CSS integration using Tailwind v4 theme mappings.
426
- - Ensured Radix UI portals correctly inherit theme variables.
427
-
428
- ---
429
-
430
- ## [1.5.1] — 2026-04-14
431
-
432
- ### Changed
433
- - Sidebar: Added `assistente` variant with fixed areas, searchable navigation, and grouped navigation structures.
434
- - Template page updated to demonstrate the assistant sidebar variant.
435
-
436
- ---
437
-
438
- ## [1.5.0] 2026-04-13
439
-
440
- ### Added
441
- - `Sidebar` — `width` / `expandedWidth` prop for configurable expanded sidebar width.
442
- - `LayoutContext` — `sidebarWidth` and `setSidebarWidth` for global sidebar width management.
443
- - `Header`User profile section with avatar, dropdown menu, settings button, and logout button.
444
- - `StatsCard` — KPI metric card component.
445
- - `Timeline` — Chronological event list with dot variants.
446
- - `TreeView` — Hierarchical tree navigation.
447
- - `Rating` Star-based rating input.
448
- - `FileUpload` Drag-and-drop file input.
449
- - `Search` — Pre-built search input with icon and clear button.
450
- - `NotificationBadge` — Dot/count badge overlay.
451
- - `RouteMap` — Google Maps route display and direction calculation.
452
- - `Stepper`Multi-step progress indicator.
453
- - `Map` — Advanced Google Maps integration with markers, circles, polygons, and layers.
454
- - `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
+ ## [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 types 4 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
+ - **Calendarprop `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
+ - **Chartstacked 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.