xertica-ui 2.1.1 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +1 -1
  3. package/assets/xertica-logo.svg +37 -37
  4. package/assets/xertica-x-logo.svg +20 -20
  5. package/bin/cli.ts +1 -1
  6. package/bin/generate-tokens.ts +13 -7
  7. package/components/assistant/index.ts +6 -6
  8. package/components/assistant/markdown-message/MarkdownMessage.tsx +27 -1
  9. package/components/assistant/xertica-assistant/index.ts +2 -0
  10. package/components/assistant/xertica-assistant/use-assistant.ts +564 -0
  11. package/components/assistant/xertica-assistant/xertica-assistant.stories.tsx +200 -0
  12. package/components/assistant/xertica-assistant/xertica-assistant.tsx +183 -474
  13. package/components/blocks/card-patterns/ActivityCard.tsx +72 -72
  14. package/components/blocks/card-patterns/FeatureCard.tsx +100 -100
  15. package/components/blocks/card-patterns/NotificationCard.tsx +127 -127
  16. package/components/blocks/card-patterns/ProfileCard.tsx +84 -84
  17. package/components/blocks/card-patterns/ProjectCard.tsx +89 -89
  18. package/components/blocks/card-patterns/QuickActionCard.tsx +62 -62
  19. package/components/blocks/card-patterns/card-patterns.stories.tsx +445 -445
  20. package/components/blocks/card-patterns/index.ts +17 -17
  21. package/components/blocks/index.ts +1 -1
  22. package/components/brand/index.ts +6 -6
  23. package/components/brand/xertica-provider/XerticaProvider.tsx +48 -48
  24. package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
  25. package/components/brand/xertica-provider/xertica-provider.test.tsx +52 -52
  26. package/components/examples/MapExamples.tsx +282 -282
  27. package/components/examples/SimpleFilterableMap.tsx +191 -191
  28. package/components/examples/index.ts +51 -51
  29. package/components/figma/ImageWithFallback.tsx +27 -27
  30. package/components/hooks/index.ts +7 -7
  31. package/components/index.ts +5 -5
  32. package/components/layout/header/header.test.tsx +8 -8
  33. package/components/layout/header/header.tsx +4 -4
  34. package/components/layout/index.ts +2 -2
  35. package/components/layout/sidebar/index.ts +2 -0
  36. package/components/layout/sidebar/sidebar.mdx +1 -1
  37. package/components/layout/sidebar/sidebar.stories.tsx +160 -8
  38. package/components/layout/sidebar/sidebar.test.tsx +11 -11
  39. package/components/layout/sidebar/sidebar.tsx +610 -471
  40. package/components/layout/sidebar/use-sidebar.ts +113 -0
  41. package/components/media/FloatingMediaWrapper.tsx +11 -11
  42. package/components/media/audio-player/AudioPlayer.tsx +22 -22
  43. package/components/media/index.ts +3 -3
  44. package/components/pages/home-content/HomeContent.tsx +7 -7
  45. package/components/pages/home-content/home-content.mdx +62 -62
  46. package/components/pages/home-page/HomePage.stories.tsx +39 -39
  47. package/components/pages/home-page/HomePage.tsx +1 -1
  48. package/components/pages/home-page/home-page.mdx +53 -53
  49. package/components/pages/index.ts +8 -8
  50. package/components/pages/template-content/TemplateContent.tsx +5 -5
  51. package/components/pages/template-content/template-content.mdx +61 -61
  52. package/components/pages/template-page/TemplatePage.stories.tsx +39 -39
  53. package/components/pages/template-page/TemplatePage.tsx +5 -5
  54. package/components/pages/template-page/template-page.mdx +53 -53
  55. package/components/public-api-smoke.test.tsx +52 -52
  56. package/components/shared/assistant-utils.ts +43 -43
  57. package/components/shared/layout-constants.ts +1 -1
  58. package/components/ui/accordion/accordion.mdx +8 -8
  59. package/components/ui/accordion/accordion.stories.tsx +53 -53
  60. package/components/ui/alert/alert.mdx +8 -8
  61. package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
  62. package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
  63. package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
  64. package/components/ui/avatar/avatar.mdx +8 -8
  65. package/components/ui/badge/badge.mdx +8 -8
  66. package/components/ui/badge/badge.tsx +9 -9
  67. package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
  68. package/components/ui/button/button.mdx +8 -8
  69. package/components/ui/calendar/calendar.mdx +8 -8
  70. package/components/ui/calendar/calendar.tsx +258 -258
  71. package/components/ui/card/card.mdx +8 -8
  72. package/components/ui/card/card.stories.tsx +245 -245
  73. package/components/ui/carousel/carousel.mdx +8 -8
  74. package/components/ui/chart/chart.mdx +8 -8
  75. package/components/ui/chart/chart.stories.tsx +1303 -344
  76. package/components/ui/chart/chart.test.tsx +154 -154
  77. package/components/ui/chart/chart.tsx +2367 -1494
  78. package/components/ui/checkbox/checkbox.mdx +8 -8
  79. package/components/ui/checkbox/checkbox.stories.tsx +20 -20
  80. package/components/ui/collapsible/collapsible.mdx +8 -8
  81. package/components/ui/command/command.mdx +8 -8
  82. package/components/ui/context-menu/context-menu.mdx +8 -8
  83. package/components/ui/dialog/dialog.mdx +8 -8
  84. package/components/ui/drawer/drawer.mdx +8 -8
  85. package/components/ui/dropdown-menu/dropdown-menu.mdx +8 -8
  86. package/components/ui/empty/empty.mdx +8 -8
  87. package/components/ui/file-upload/file-upload.mdx +8 -8
  88. package/components/ui/file-upload/file-upload.stories.tsx +100 -0
  89. package/components/ui/file-upload/file-upload.tsx +14 -74
  90. package/components/ui/file-upload/index.ts +1 -0
  91. package/components/ui/file-upload/use-file-upload.ts +181 -0
  92. package/components/ui/google-maps-loader/google-maps-loader.tsx +2 -2
  93. package/components/ui/hover-card/hover-card.mdx +8 -8
  94. package/components/ui/index.ts +1 -1
  95. package/components/ui/input/input.mdx +8 -8
  96. package/components/ui/input-otp/input-otp.mdx +8 -8
  97. package/components/ui/input-otp/input-otp.stories.tsx +6 -6
  98. package/components/ui/label/label.mdx +8 -8
  99. package/components/ui/map/map.mdx +8 -8
  100. package/components/ui/map/map.stories.tsx +51 -51
  101. package/components/ui/map/map.tsx +2 -2
  102. package/components/ui/menubar/menubar.mdx +8 -8
  103. package/components/ui/navigation-menu/navigation-menu.mdx +8 -8
  104. package/components/ui/notification-badge/notification-badge.mdx +8 -8
  105. package/components/ui/pagination/index.ts +2 -0
  106. package/components/ui/pagination/pagination.mdx +8 -8
  107. package/components/ui/pagination/pagination.stories.tsx +94 -0
  108. package/components/ui/pagination/use-pagination.ts +194 -0
  109. package/components/ui/popover/popover.mdx +8 -8
  110. package/components/ui/progress/progress.mdx +8 -8
  111. package/components/ui/progress/progress.tsx +68 -68
  112. package/components/ui/radio-group/radio-group.mdx +8 -8
  113. package/components/ui/rating/rating.mdx +8 -8
  114. package/components/ui/resizable/resizable.mdx +8 -8
  115. package/components/ui/rich-text-editor/index.ts +2 -0
  116. package/components/ui/rich-text-editor/rich-text-editor.stories.tsx +129 -1
  117. package/components/ui/rich-text-editor/rich-text-editor.tsx +86 -305
  118. package/components/ui/rich-text-editor/use-rich-text-editor.ts +439 -0
  119. package/components/ui/route-map/route-map.mdx +8 -8
  120. package/components/ui/route-map/route-map.stories.tsx +19 -13
  121. package/components/ui/route-map/route-map.tsx +2 -2
  122. package/components/ui/scroll-area/scroll-area.mdx +8 -8
  123. package/components/ui/search/search.mdx +8 -8
  124. package/components/ui/select/select.mdx +8 -8
  125. package/components/ui/select/select.stories.tsx +9 -9
  126. package/components/ui/separator/separator.mdx +8 -8
  127. package/components/ui/sheet/sheet.mdx +8 -8
  128. package/components/ui/sheet/sheet.stories.tsx +3 -2
  129. package/components/ui/sheet/sheet.tsx +11 -0
  130. package/components/ui/simple-map/simple-map.mdx +8 -8
  131. package/components/ui/simple-map/simple-map.stories.tsx +16 -11
  132. package/components/ui/skeleton/skeleton.mdx +8 -8
  133. package/components/ui/slider/slider.mdx +8 -8
  134. package/components/ui/sonner/sonner.mdx +8 -8
  135. package/components/ui/stats-card/stats-card.mdx +8 -8
  136. package/components/ui/stepper/index.ts +3 -1
  137. package/components/ui/stepper/stepper.mdx +8 -8
  138. package/components/ui/stepper/stepper.stories.tsx +116 -0
  139. package/components/ui/stepper/stepper.tsx +4 -4
  140. package/components/ui/stepper/use-stepper.ts +137 -0
  141. package/components/ui/switch/switch.mdx +8 -8
  142. package/components/ui/switch/switch.stories.tsx +20 -20
  143. package/components/ui/table/table.mdx +8 -8
  144. package/components/ui/tabs/tabs.mdx +8 -8
  145. package/components/ui/tabs/tabs.stories.tsx +26 -26
  146. package/components/ui/textarea/textarea.mdx +8 -8
  147. package/components/ui/timeline/timeline.mdx +8 -8
  148. package/components/ui/toggle/toggle.mdx +8 -8
  149. package/components/ui/toggle-group/toggle-group.mdx +8 -8
  150. package/components/ui/tooltip/tooltip.mdx +8 -8
  151. package/components/ui/tree-view/index.ts +4 -1
  152. package/components/ui/tree-view/tree-view.mdx +8 -8
  153. package/components/ui/tree-view/tree-view.stories.tsx +110 -4
  154. package/components/ui/tree-view/tree-view.tsx +17 -125
  155. package/components/ui/tree-view/use-tree-view.ts +229 -0
  156. package/components.json +1512 -1512
  157. package/contexts/ApiKeyContext.tsx +72 -72
  158. package/contexts/BrandColorsContext.tsx +26 -26
  159. package/contexts/LanguageContext.tsx +13 -13
  160. package/contexts/LayoutContext.test.tsx +11 -11
  161. package/contexts/LayoutContext.tsx +29 -29
  162. package/contexts/ThemeContext.tsx +26 -26
  163. package/contexts/theme-data.ts +4 -4
  164. package/dist/{AssistantChart-CVzmmhx4.js → AssistantChart-C_hwFRRr.js} +4 -4
  165. package/dist/AssistantChart-CldVCVDe.cjs +3591 -0
  166. package/dist/AssistantChart-Cu3m7RBo.js +3565 -0
  167. package/dist/{AssistantChart-9w31gdAb.cjs → AssistantChart-DoZCyS5r.cjs} +4 -4
  168. package/dist/AudioPlayer-B1lt5cPl.cjs +989 -0
  169. package/dist/AudioPlayer-BZ7bibzU.cjs +982 -0
  170. package/dist/AudioPlayer-C12BjQBV.cjs +997 -0
  171. package/dist/AudioPlayer-DMcG_c7L.js +990 -0
  172. package/dist/AudioPlayer-DcFKRJE_.js +998 -0
  173. package/dist/AudioPlayer-e8LfNoqO.js +983 -0
  174. package/dist/CodeBlock-7TTgmdGG.cjs +2094 -0
  175. package/dist/{xertica-assistant-gnCJdcZY.js → CodeBlock-BeSt1h5P.js} +219 -7
  176. package/dist/CodeBlock-BgfYL_rD.cjs +2094 -0
  177. package/dist/CodeBlock-BlcqlA9M.cjs +2094 -0
  178. package/dist/CodeBlock-Bnmeu5ez.cjs +2094 -0
  179. package/dist/CodeBlock-BtfPlbAI.js +2078 -0
  180. package/dist/CodeBlock-CIySIuYr.js +2078 -0
  181. package/dist/CodeBlock-CuPtUM-7.cjs +2094 -0
  182. package/dist/CodeBlock-D6ffWXgc.js +2078 -0
  183. package/dist/CodeBlock-D8dcwbit.cjs +2094 -0
  184. package/dist/CodeBlock-DMZrFnlw.cjs +2094 -0
  185. package/dist/CodeBlock-DlBehYN8.js +2078 -0
  186. package/dist/CodeBlock-DnYNI8rQ.js +2078 -0
  187. package/dist/CodeBlock-DvKWbSnE.cjs +2094 -0
  188. package/dist/CodeBlock-DwMCfkFY.js +2078 -0
  189. package/dist/CodeBlock-Dy6CNYyj.js +2078 -0
  190. package/dist/CodeBlock-U1pPOQI7.cjs +2094 -0
  191. package/dist/CodeBlock-f_GpNhEB.js +2078 -0
  192. package/dist/CodeBlock-oB6u8nI1.js +2078 -0
  193. package/dist/CodeBlock-tZC31B73.cjs +2094 -0
  194. package/dist/ImageWithFallback-CGtidP6B.cjs +4542 -0
  195. package/dist/ImageWithFallback-lsg3pdFg.js +4508 -0
  196. package/dist/LanguageSelector-B5YfbHra.js +231 -0
  197. package/dist/LanguageSelector-D6uacAIM.cjs +230 -0
  198. package/dist/LayoutContext-BAql6ZRY.js +97 -0
  199. package/dist/LayoutContext-BvK-ggDa.cjs +96 -0
  200. package/dist/ThemeContext-BoH4NLfN.js +734 -0
  201. package/dist/{ThemeContext-BbBNoFTG.js → ThemeContext-C2EwAPDt.js} +2 -2
  202. package/dist/ThemeContext-r69W20Xg.cjs +733 -0
  203. package/dist/{ThemeContext-Cmr8Ex8H.cjs → ThemeContext-vTjumZeM.cjs} +2 -2
  204. package/dist/{VerifyEmailPage-CbgjOF0v.js → VerifyEmailPage-C0c2e5n0.js} +7 -7
  205. package/dist/{VerifyEmailPage-DMBh4NM9.cjs → VerifyEmailPage-CYXtbKi3.cjs} +1 -1
  206. package/dist/{VerifyEmailPage-Bae2cBXT.cjs → VerifyEmailPage-Cwi3kbol.cjs} +7 -7
  207. package/dist/{VerifyEmailPage-CdYPSJoO.js → VerifyEmailPage-DvMLZgFt.js} +1 -1
  208. package/dist/XerticaOrbe-KL1RBHzw.cjs +1354 -0
  209. package/dist/XerticaOrbe-zwS1p2a8.js +1355 -0
  210. package/dist/XerticaProvider-6btlAlzc.js +17 -0
  211. package/dist/XerticaProvider-BNoNOxQ5.cjs +16 -0
  212. package/dist/XerticaProvider-BlY2limY.cjs +38 -0
  213. package/dist/{XerticaProvider-BITjgC5p.js → XerticaProvider-CEoWMTxu.js} +2 -2
  214. package/dist/{XerticaProvider-By8q3Roe.cjs → XerticaProvider-CllrbMEJ.cjs} +2 -2
  215. package/dist/XerticaProvider-DDuiIcKo.js +39 -0
  216. package/dist/XerticaProvider-cI9hSs27.cjs +38 -0
  217. package/dist/XerticaProvider-hSwhNQex.js +39 -0
  218. package/dist/{alert-dialog-yckpaOpy.cjs → alert-dialog-DSKByiKZ.cjs} +3 -3
  219. package/dist/{alert-dialog-iDe5VE5o.js → alert-dialog-s-vmNkJ_.js} +3 -3
  220. package/dist/assistant.cjs.js +2 -1
  221. package/dist/assistant.es.js +3 -2
  222. package/dist/brand.cjs.js +1 -1
  223. package/dist/brand.es.js +1 -1
  224. package/dist/breadcrumb-CqJ7bHY5.js +161 -0
  225. package/dist/breadcrumb-m9Hb2_XN.cjs +177 -0
  226. package/dist/cli.js +14 -8
  227. package/dist/components/assistant/xertica-assistant/index.d.ts +2 -0
  228. package/dist/components/assistant/xertica-assistant/use-assistant.d.ts +126 -0
  229. package/dist/components/assistant/xertica-assistant/xertica-assistant.d.ts +7 -2
  230. package/dist/components/blocks/audio-player/AudioPlayer.d.ts +35 -0
  231. package/dist/components/blocks/audio-player/index.d.ts +1 -0
  232. package/dist/components/blocks/document-editor/DocumentEditor.d.ts +26 -0
  233. package/dist/components/blocks/document-editor/index.d.ts +1 -0
  234. package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +41 -0
  235. package/dist/components/blocks/podcast-player/index.d.ts +1 -0
  236. package/dist/components/layout/sidebar/index.d.ts +2 -0
  237. package/dist/components/layout/sidebar/sidebar.d.ts +80 -0
  238. package/dist/components/layout/sidebar/use-sidebar.d.ts +22 -0
  239. package/dist/components/shared/layout-constants.d.ts +1 -1
  240. package/dist/components/ui/button/button.d.ts +1 -1
  241. package/dist/components/ui/chart/chart.d.ts +162 -5
  242. package/dist/components/ui/file-upload/file-upload.d.ts +2 -0
  243. package/dist/components/ui/file-upload/index.d.ts +1 -0
  244. package/dist/components/ui/file-upload/use-file-upload.d.ts +49 -0
  245. package/dist/components/ui/index.d.ts +1 -1
  246. package/dist/components/ui/pagination/index.d.ts +2 -0
  247. package/dist/components/ui/pagination/use-pagination.d.ts +78 -0
  248. package/dist/components/ui/rich-text-editor/index.d.ts +2 -0
  249. package/dist/components/ui/rich-text-editor/use-rich-text-editor.d.ts +107 -0
  250. package/dist/components/ui/sheet/sheet.d.ts +2 -1
  251. package/dist/components/ui/stepper/index.d.ts +3 -1
  252. package/dist/components/ui/stepper/stepper.d.ts +2 -2
  253. package/dist/components/ui/stepper/use-stepper.d.ts +60 -0
  254. package/dist/components/ui/tree-view/index.d.ts +4 -1
  255. package/dist/components/ui/tree-view/tree-view.d.ts +4 -6
  256. package/dist/components/ui/tree-view/use-tree-view.d.ts +60 -0
  257. package/dist/dropdown-menu-BDB5CmQs.cjs +247 -0
  258. package/dist/dropdown-menu-DQidbKBD.js +231 -0
  259. package/dist/google-maps-loader-BFWp6VPd.js +287 -0
  260. package/dist/{google-maps-loader-t2IlYBzw.js → google-maps-loader-CTYySAun.js} +4 -0
  261. package/dist/{google-maps-loader-BqsYL48U.cjs → google-maps-loader-Y-QkD-Li.cjs} +5 -0
  262. package/dist/google-maps-loader-eS3uQ5TA.cjs +287 -0
  263. package/dist/header-Cgy6vYPk.cjs +731 -0
  264. package/dist/header-DRlT4jgI.js +715 -0
  265. package/dist/header-Dux00SI4.cjs +731 -0
  266. package/dist/header-EkGKXPsD.js +715 -0
  267. package/dist/header-WfEywpyc.cjs +731 -0
  268. package/dist/header-tifNQn2U.js +715 -0
  269. package/dist/hooks.cjs.js +1 -1
  270. package/dist/hooks.es.js +1 -1
  271. package/dist/index-BhapVLVj.js +8 -0
  272. package/dist/{index-D3RLKRAs.cjs → index-COtD8bRW.cjs} +1 -1
  273. package/dist/index-D6fxYEY8.cjs +7 -0
  274. package/dist/index-DW5tYe26.js +8 -0
  275. package/dist/index.cjs.js +20 -8
  276. package/dist/index.es.js +65 -53
  277. package/dist/index.umd.js +1043 -470
  278. package/dist/input-2R4loU86.js +127 -0
  279. package/dist/input-DWANSKGb.cjs +145 -0
  280. package/dist/layout.cjs.js +89 -1
  281. package/dist/layout.es.js +90 -2
  282. package/dist/pages.cjs.js +1 -1
  283. package/dist/pages.es.js +1 -1
  284. package/dist/rich-text-editor-0mraWT5y.cjs +2376 -0
  285. package/dist/rich-text-editor-B6jMRLzk.cjs +1939 -0
  286. package/dist/rich-text-editor-B8_oYcIR.js +1730 -0
  287. package/dist/rich-text-editor-B9UbSXNb.js +1203 -0
  288. package/dist/rich-text-editor-BYuRBNBU.js +2373 -0
  289. package/dist/rich-text-editor-Bb9pySTs.cjs +2374 -0
  290. package/dist/rich-text-editor-BcL6L3cm.cjs +2374 -0
  291. package/dist/rich-text-editor-BoVZYtTs.cjs +2391 -0
  292. package/dist/rich-text-editor-CPV1lEPH.cjs +1748 -0
  293. package/dist/rich-text-editor-CoKqbCtu.cjs +1799 -0
  294. package/dist/rich-text-editor-Cw56T_mB.js +2356 -0
  295. package/dist/rich-text-editor-Cyt8qs2b.js +1921 -0
  296. package/dist/rich-text-editor-D6H84OcX.cjs +1220 -0
  297. package/dist/rich-text-editor-D76gD-QI.js +2328 -0
  298. package/dist/rich-text-editor-DKkokOnA.js +1781 -0
  299. package/dist/rich-text-editor-DNsdpN64.cjs +2359 -0
  300. package/dist/rich-text-editor-DfG8bCyY.js +2358 -0
  301. package/dist/rich-text-editor-DgF8s7xW.js +2949 -0
  302. package/dist/rich-text-editor-Dxjw31Z4.js +2341 -0
  303. package/dist/rich-text-editor-DzP0Epmb.js +2356 -0
  304. package/dist/rich-text-editor-mWoaSCE4.cjs +2966 -0
  305. package/dist/rich-text-editor-skplNlBM.cjs +2345 -0
  306. package/dist/select-Bkbr0f-Z.cjs +162 -0
  307. package/dist/select-CvIVdX2n.js +145 -0
  308. package/dist/sidebar-CK_0ZQHj.cjs +803 -0
  309. package/dist/sidebar-CUuOvYhK.js +787 -0
  310. package/dist/slider-Bc5Hd0y1.js +56 -0
  311. package/dist/slider-N7hFFj6X.cjs +73 -0
  312. package/dist/tooltip-Ded96neP.cjs +137 -0
  313. package/dist/tooltip-HDOoD2-0.js +120 -0
  314. package/dist/ui.cjs.js +15 -4
  315. package/dist/ui.es.js +52 -41
  316. package/dist/use-mobile-B0hNy_Y6.cjs +4303 -0
  317. package/dist/use-mobile-BXuYROXM.js +4202 -0
  318. package/dist/use-mobile-Bbd51ASU.cjs +4392 -0
  319. package/dist/use-mobile-Bk6CX-TC.js +4359 -0
  320. package/dist/use-mobile-BvYdisLP.js +4202 -0
  321. package/dist/use-mobile-BzuxjzNX.cjs +4392 -0
  322. package/dist/use-mobile-CG2-SdXV.cjs +4235 -0
  323. package/dist/use-mobile-CKb5pqTs.js +4269 -0
  324. package/dist/use-mobile-CYuAuGDl.js +4202 -0
  325. package/dist/use-mobile-CaENcqm-.js +4508 -0
  326. package/dist/use-mobile-CbrYgJGJ.js +4203 -0
  327. package/dist/use-mobile-DMOvImGQ.cjs +4542 -0
  328. package/dist/use-mobile-DRB3BQgD.cjs +4235 -0
  329. package/dist/use-mobile-DZvv7QMR.js +4359 -0
  330. package/dist/use-mobile-DdI_TXam.cjs +4235 -0
  331. package/dist/use-mobile-DlceKf8a.js +4359 -0
  332. package/dist/use-mobile-DsOnow1o.cjs +4236 -0
  333. package/dist/use-mobile-Kcj6jSnK.cjs +4392 -0
  334. package/dist/use-mobile-bnKcua_i.js +4202 -0
  335. package/dist/use-mobile-ncXBeE2z.cjs +4235 -0
  336. package/dist/{xertica-assistant-Qp3ydksa.cjs → xertica-assistant-dyP7KHM5.cjs} +545 -392
  337. package/dist/xertica-assistant-yX1CFBBo.js +2019 -0
  338. package/dist/xertica-ui.css +2 -2
  339. package/docs/ai-usage.md +28 -10
  340. package/docs/architecture.md +76 -0
  341. package/docs/components/assistant.md +159 -0
  342. package/docs/components/calendar.md +154 -154
  343. package/docs/components/card-patterns.md +337 -337
  344. package/docs/components/card.md +235 -235
  345. package/docs/components/chart.md +354 -39
  346. package/docs/components/file-upload.md +119 -2
  347. package/docs/components/map.md +84 -84
  348. package/docs/components/markdown-message.md +1 -0
  349. package/docs/components/pagination.md +187 -0
  350. package/docs/components/rich-text-editor.md +164 -0
  351. package/docs/components/sidebar.md +153 -4
  352. package/docs/components/stepper.md +157 -12
  353. package/docs/components/tree-view.md +164 -6
  354. package/docs/components/xertica-provider.md +24 -24
  355. package/docs/decision-tree.md +287 -287
  356. package/docs/getting-started.md +1 -1
  357. package/docs/guidelines.md +14 -8
  358. package/docs/layout.md +2 -2
  359. package/docs/llms.md +4 -4
  360. package/guidelines/Guidelines.md +252 -250
  361. package/hooks/useTheme.ts +3 -3
  362. package/imports/Podcast.tsx +388 -388
  363. package/imports/XerticaAi.tsx +45 -45
  364. package/imports/XerticaX.tsx +19 -19
  365. package/imports/svg-aueiaqngck.ts +11 -11
  366. package/imports/svg-v9krss1ozd.ts +16 -16
  367. package/imports/svg-vhrdofe3qe.ts +5 -5
  368. package/llms-compact.txt +327 -327
  369. package/llms-full.txt +1 -0
  370. package/llms.txt +160 -160
  371. package/package.json +203 -203
  372. package/styles/xertica/app-overrides/chat.css +61 -61
  373. package/styles/xertica/app-overrides/scrollbar.css +33 -33
  374. package/styles/xertica/integrations/google-maps.css +76 -76
  375. package/styles/xertica/integrations/sonner.css +73 -73
  376. package/styles/xertica/tokens.css +41 -12
  377. package/templates/CLAUDE.md +182 -172
  378. package/templates/guidelines/Guidelines.md +325 -313
  379. package/templates/package.json +3 -3
  380. package/templates/src/app/components/AppLayout.tsx +5 -1
  381. package/templates/src/app/components/AuthGuard.tsx +1 -1
  382. package/templates/src/features/auth/index.ts +4 -4
  383. package/templates/src/features/auth/ui/AuthPageShell.tsx +34 -34
  384. package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +70 -70
  385. package/templates/src/features/auth/ui/LoginContent.tsx +90 -90
  386. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +151 -151
  387. package/templates/src/features/auth/ui/SocialLoginButtons.tsx +59 -59
  388. package/templates/src/features/auth/ui/VerifyEmailContent.tsx +82 -82
  389. package/templates/src/features/home/index.ts +1 -1
  390. package/templates/src/features/home/ui/HomeContent.tsx +100 -100
  391. package/templates/src/features/template/index.ts +5 -5
  392. package/templates/src/features/template/ui/CrudTemplate.tsx +3 -3
  393. package/templates/src/features/template/ui/DashboardTemplate.tsx +3 -3
  394. package/templates/src/features/template/ui/FormTemplate.tsx +120 -120
  395. package/templates/src/features/template/ui/LoginTemplate.tsx +3 -3
  396. package/templates/src/pages/AssistantPage.tsx +328 -43
  397. package/templates/src/pages/ForgotPasswordPage.tsx +6 -6
  398. package/templates/src/pages/HomePage.tsx +57 -57
  399. package/templates/src/pages/LoginPage.tsx +10 -10
  400. package/templates/src/pages/ResetPasswordPage.tsx +6 -6
  401. package/templates/src/pages/TemplatePage.tsx +30 -30
  402. package/templates/src/pages/VerifyEmailPage.tsx +6 -6
  403. package/templates/src/shared/config/navigation.ts +20 -20
  404. package/templates/src/shared/lib/auth.ts +20 -20
  405. package/templates/src/shared/types/auth.ts +3 -3
  406. package/templates/src/styles/xertica/tokens.css +39 -10
  407. package/templates/tsconfig.json +5 -5
  408. package/utils/gemini.ts +140 -140
  409. package/dist/index-CkTUgOwX.js +0 -8
package/CHANGELOG.md CHANGED
@@ -7,6 +7,50 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ---
9
9
 
10
+ ## [2.1.3] — 2026-05-16
11
+
12
+ ### Added
13
+
14
+ - **Headless hooks — 4 new logic-only hooks** — all logic extracted from their UI components into standalone, tree-shakeable hooks:
15
+ - **`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`.
16
+ - **`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`.
17
+ - **`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`.
18
+ - **`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`.
19
+ - **New chart types — 4 new Recharts wrappers** added to `components/ui/chart/chart.tsx`:
20
+ - **`RadarMetricChart`** — multi-axis radar chart with optional fill, dots, and multi-series overlay.
21
+ - **`PieMetricChart`** — pie chart with optional percentage labels and exploded slice support.
22
+ - **`RadialBarMetricChart`** — radial bar chart with stacked rings and configurable arc angle.
23
+ - **`GaugeChart`** — pure SVG semicircle gauge with needle, threshold color zones, and optional label. Supports `thresholds` array for dynamic color changes at value breakpoints.
24
+ - **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.
25
+ - **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.
26
+
27
+ ### Fixed
28
+
29
+ - **`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.
30
+ - **`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`.
31
+
32
+ ### Changed
33
+
34
+ - **`FileUpload` component** — refactored to consume `useFileUpload` internally; public API unchanged.
35
+ - **`TreeView` component** — refactored to consume `useTreeView` internally; public API unchanged.
36
+ - **`Stepper` component** — refactored to consume `useStepper` internally; public API unchanged.
37
+ - **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.
38
+
39
+ ---
40
+
41
+ ## [2.1.2] — 2026-05-14
42
+
43
+ ### Fixed
44
+
45
+ - **`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.
46
+
47
+ ### Added
48
+
49
+ - **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`.
50
+ - **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.
51
+
52
+ ---
53
+
10
54
  ## [2.1.1] — 2026-05-14
11
55
 
12
56
  ### Fixed
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **Enterprise-grade React design system** built on Tailwind CSS v4, Radix UI, and Lucide Icons — with a robust AI-first documentation layer for precise LLM-driven composition and autonomous agent interaction.
4
4
 
5
- [![npm version](https://img.shields.io/badge/npm-2.1.0-blue)](https://www.npmjs.com/package/xertica-ui)
5
+ [![npm version](https://img.shields.io/badge/npm-2.1.3-blue)](https://www.npmjs.com/package/xertica-ui)
6
6
  [![license](https://img.shields.io/badge/license-proprietary-red)](./LICENSE)
7
7
 
8
8
  ---
@@ -1,38 +1,38 @@
1
- <svg
2
- fill="none"
3
- preserveAspectRatio="xMidYMid meet"
4
- viewBox="0 0 1543 289"
5
- xmlns="http://www.w3.org/2000/svg"
6
- >
7
- <g id="Xertica.ai">
8
- <path d="M1352.82 239.808V285.425H1304.73V239.808H1352.82Z" fill="#00BEFF" />
9
- <path d="M814.8 284.848H766.711V77.4971H814.8V284.848Z" fill="#00BEFF" />
10
- <path d="M1543 284.438H1514.2V160.28H1543V284.438Z" fill="#00BEFF" />
11
- <path
12
- clip-rule="evenodd"
13
- d="M1432.83 157.796C1446.98 157.796 1459.14 162.515 1468.58 170.709V160.28H1497.38V284.438H1468.58V274.01C1459.14 282.451 1446.98 286.921 1432.83 286.921C1395.1 286.921 1368.29 260.352 1368.29 222.359C1368.29 184.616 1395.1 157.796 1432.83 157.796ZM1432.83 183.778C1410.79 183.778 1396.27 199.061 1396.27 222.359C1396.27 245.658 1410.79 260.94 1432.83 260.94C1454.63 260.94 1468.9 245.658 1468.9 222.359C1468.9 199.06 1454.63 183.778 1432.83 183.778Z"
14
- fill="#00BEFF"
15
- fill-rule="evenodd"
16
- />
17
- <path d="M947.87 73.3516C1002.88 73.3516 1044.42 107.647 1053.57 159.234H1004.68C997.221 132.988 976.34 117.308 947.87 117.308C911.387 117.308 887.337 142.612 887.337 181.176C887.337 219.739 911.387 245.036 947.87 245.036C976.34 245.036 997.221 229.356 1004.68 203.109H1053.57C1044.47 254.701 1003.26 289 947.87 289C884.853 289 840.078 244.626 840.078 181.176C840.078 118.142 884.854 73.3516 947.87 73.3516Z" fill="#00BEFF" />
18
- <path d="M88.4971 39.8242L157.353 142.191L83.5371 251.524L60.9277 284.854H0L96.3154 142.191L5.37695 7H66.3047L88.4971 39.8242Z" fill="#00BEFF" />
19
- <path d="M254.314 284.855H193.387L151.914 223.71L182.548 178.551L254.314 284.855Z" fill="#00BEFF" />
20
- <path
21
- clip-rule="evenodd"
22
- d="M1179.14 73.3477C1202.77 73.3477 1223.08 81.2286 1238.84 94.9121V77.4971H1286.94V284.847H1238.84V267.431C1223.09 281.528 1202.77 288.992 1179.14 288.992C1116.12 288.992 1071.35 244.622 1071.35 181.172C1071.35 118.139 1116.12 73.3478 1179.14 73.3477ZM1179.14 117.308C1142.66 117.308 1118.61 142.604 1118.61 181.172C1118.61 219.739 1142.66 245.035 1179.14 245.035C1215.21 245.035 1238.84 219.739 1238.84 181.172C1238.84 142.605 1215.21 117.308 1179.14 117.308Z"
23
- fill="#00BEFF"
24
- fill-rule="evenodd"
25
- />
26
- <path d="M1543 145.383H1514.2V118.067H1543V145.383Z" fill="#00BEFF" />
27
- <path d="M672.466 77.501H736.31V121.457H672.466V211.448C672.466 230.939 682.415 240.891 702.313 240.891H736.309V284.852H698.999C649.246 284.851 625.203 259.968 625.203 211.449V7H672.466V77.501Z" fill="#00BEFF" />
28
- <path d="M814.8 52.6172H766.711V7H814.8V52.6172Z" fill="#00BEFF" />
29
- <path
30
- clip-rule="evenodd"
31
- d="M354.069 73.3516C417.086 73.3517 461.864 118.143 461.864 181.176C461.864 187.396 461.031 193.615 460.204 199.422H295.197C301.829 228.864 323.392 246.696 354.069 246.696C372.724 246.696 389.309 241.721 399.675 226.376H452.742C441.132 265.774 400.501 288.996 354.069 288.996C291.053 288.996 246.274 244.626 246.273 181.176C246.273 118.142 291.053 73.3516 354.069 73.3516ZM354.068 115.65C325.044 115.65 303.902 131.826 296.44 158.78H410.863C403.819 131.826 382.672 115.65 354.068 115.65Z"
32
- fill="#00BEFF"
33
- fill-rule="evenodd"
34
- />
35
- <path d="M596.957 121.453H562.962C543.064 121.453 533.114 131.409 533.114 150.899V284.847H485.852V150.899C485.852 102.38 509.894 77.4972 559.647 77.4971H596.957V121.453Z" fill="#00BEFF" />
36
- <path d="M182.552 98.6992L151.922 53.3906L188.014 0H248.941L182.552 98.6992Z" fill="#00BEFF" />
37
- </g>
1
+ <svg
2
+ fill="none"
3
+ preserveAspectRatio="xMidYMid meet"
4
+ viewBox="0 0 1543 289"
5
+ xmlns="http://www.w3.org/2000/svg"
6
+ >
7
+ <g id="Xertica.ai">
8
+ <path d="M1352.82 239.808V285.425H1304.73V239.808H1352.82Z" fill="#00BEFF" />
9
+ <path d="M814.8 284.848H766.711V77.4971H814.8V284.848Z" fill="#00BEFF" />
10
+ <path d="M1543 284.438H1514.2V160.28H1543V284.438Z" fill="#00BEFF" />
11
+ <path
12
+ clip-rule="evenodd"
13
+ d="M1432.83 157.796C1446.98 157.796 1459.14 162.515 1468.58 170.709V160.28H1497.38V284.438H1468.58V274.01C1459.14 282.451 1446.98 286.921 1432.83 286.921C1395.1 286.921 1368.29 260.352 1368.29 222.359C1368.29 184.616 1395.1 157.796 1432.83 157.796ZM1432.83 183.778C1410.79 183.778 1396.27 199.061 1396.27 222.359C1396.27 245.658 1410.79 260.94 1432.83 260.94C1454.63 260.94 1468.9 245.658 1468.9 222.359C1468.9 199.06 1454.63 183.778 1432.83 183.778Z"
14
+ fill="#00BEFF"
15
+ fill-rule="evenodd"
16
+ />
17
+ <path d="M947.87 73.3516C1002.88 73.3516 1044.42 107.647 1053.57 159.234H1004.68C997.221 132.988 976.34 117.308 947.87 117.308C911.387 117.308 887.337 142.612 887.337 181.176C887.337 219.739 911.387 245.036 947.87 245.036C976.34 245.036 997.221 229.356 1004.68 203.109H1053.57C1044.47 254.701 1003.26 289 947.87 289C884.853 289 840.078 244.626 840.078 181.176C840.078 118.142 884.854 73.3516 947.87 73.3516Z" fill="#00BEFF" />
18
+ <path d="M88.4971 39.8242L157.353 142.191L83.5371 251.524L60.9277 284.854H0L96.3154 142.191L5.37695 7H66.3047L88.4971 39.8242Z" fill="#00BEFF" />
19
+ <path d="M254.314 284.855H193.387L151.914 223.71L182.548 178.551L254.314 284.855Z" fill="#00BEFF" />
20
+ <path
21
+ clip-rule="evenodd"
22
+ d="M1179.14 73.3477C1202.77 73.3477 1223.08 81.2286 1238.84 94.9121V77.4971H1286.94V284.847H1238.84V267.431C1223.09 281.528 1202.77 288.992 1179.14 288.992C1116.12 288.992 1071.35 244.622 1071.35 181.172C1071.35 118.139 1116.12 73.3478 1179.14 73.3477ZM1179.14 117.308C1142.66 117.308 1118.61 142.604 1118.61 181.172C1118.61 219.739 1142.66 245.035 1179.14 245.035C1215.21 245.035 1238.84 219.739 1238.84 181.172C1238.84 142.605 1215.21 117.308 1179.14 117.308Z"
23
+ fill="#00BEFF"
24
+ fill-rule="evenodd"
25
+ />
26
+ <path d="M1543 145.383H1514.2V118.067H1543V145.383Z" fill="#00BEFF" />
27
+ <path d="M672.466 77.501H736.31V121.457H672.466V211.448C672.466 230.939 682.415 240.891 702.313 240.891H736.309V284.852H698.999C649.246 284.851 625.203 259.968 625.203 211.449V7H672.466V77.501Z" fill="#00BEFF" />
28
+ <path d="M814.8 52.6172H766.711V7H814.8V52.6172Z" fill="#00BEFF" />
29
+ <path
30
+ clip-rule="evenodd"
31
+ d="M354.069 73.3516C417.086 73.3517 461.864 118.143 461.864 181.176C461.864 187.396 461.031 193.615 460.204 199.422H295.197C301.829 228.864 323.392 246.696 354.069 246.696C372.724 246.696 389.309 241.721 399.675 226.376H452.742C441.132 265.774 400.501 288.996 354.069 288.996C291.053 288.996 246.274 244.626 246.273 181.176C246.273 118.142 291.053 73.3516 354.069 73.3516ZM354.068 115.65C325.044 115.65 303.902 131.826 296.44 158.78H410.863C403.819 131.826 382.672 115.65 354.068 115.65Z"
32
+ fill="#00BEFF"
33
+ fill-rule="evenodd"
34
+ />
35
+ <path d="M596.957 121.453H562.962C543.064 121.453 533.114 131.409 533.114 150.899V284.847H485.852V150.899C485.852 102.38 509.894 77.4972 559.647 77.4971H596.957V121.453Z" fill="#00BEFF" />
36
+ <path d="M182.552 98.6992L151.922 53.3906L188.014 0H248.941L182.552 98.6992Z" fill="#00BEFF" />
37
+ </g>
38
38
  </svg>
@@ -1,21 +1,21 @@
1
- <svg
2
- fill="none"
3
- preserveAspectRatio="xMidYMid meet"
4
- viewBox="0 0 258 282"
5
- xmlns="http://www.w3.org/2000/svg"
6
- >
7
- <g id="Xertica X">
8
- <path
9
- d="M67.2666 0.0361328L89.7793 33.3447L159.63 137.228L84.7471 248.178L61.8115 282H0L97.7109 137.228L5.45508 0.0361328H67.2666Z"
10
- fill="#00BEFF"
11
- />
12
- <path
13
- d="M258 282H196.185L154.114 219.951L185.192 174.123L258 282Z"
14
- fill="#00BEFF"
15
- />
16
- <path
17
- d="M252.696 0.186523L185.042 100.142L154.106 54.0693L190.884 0L252.696 0.186523Z"
18
- fill="#00BEFF"
19
- />
20
- </g>
1
+ <svg
2
+ fill="none"
3
+ preserveAspectRatio="xMidYMid meet"
4
+ viewBox="0 0 258 282"
5
+ xmlns="http://www.w3.org/2000/svg"
6
+ >
7
+ <g id="Xertica X">
8
+ <path
9
+ d="M67.2666 0.0361328L89.7793 33.3447L159.63 137.228L84.7471 248.178L61.8115 282H0L97.7109 137.228L5.45508 0.0361328H67.2666Z"
10
+ fill="#00BEFF"
11
+ />
12
+ <path
13
+ d="M258 282H196.185L154.114 219.951L185.192 174.123L258 282Z"
14
+ fill="#00BEFF"
15
+ />
16
+ <path
17
+ d="M252.696 0.186523L185.042 100.142L154.106 54.0693L190.884 0L252.696 0.186523Z"
18
+ fill="#00BEFF"
19
+ />
20
+ </g>
21
21
  </svg>
package/bin/cli.ts CHANGED
@@ -18,7 +18,7 @@ const program = new Command();
18
18
  program
19
19
  .name('xertica-ui')
20
20
  .description('CLI to initialize Xertica UI projects')
21
- .version('2.0.6');
21
+ .version('2.1.3');
22
22
 
23
23
  program
24
24
  .command('init')
@@ -71,8 +71,8 @@ export const generateTokensCss = (theme: ColorTheme): string => {
71
71
  --success-foreground: rgba(250, 250, 250, 1);
72
72
  --info: rgba(37, 99, 235, 1);
73
73
  --info-foreground: rgba(250, 250, 250, 1);
74
- --warning: rgba(245, 158, 11, 1);
75
- --warning-foreground: rgba(24, 24, 27, 1);
74
+ --warning: rgba(234, 179, 8, 1);
75
+ --warning-foreground: rgba(28, 25, 23, 1);
76
76
 
77
77
  --border: rgba(228, 228, 231, 1);
78
78
  --input: rgba(244, 244, 245, 0.5);
@@ -95,12 +95,15 @@ export const generateTokensCss = (theme: ColorTheme): string => {
95
95
  --sidebar-border: rgba(255, 255, 255, 0.1);
96
96
  --sidebar-ring: ${rgba(colors.primary, 0.5)};
97
97
 
98
- /* Charts */
98
+ /* Charts — vibrant, accessible, harmonious palette */
99
99
  --chart-1: ${rgba(colors.chart1)};
100
100
  --chart-2: ${rgba(colors.chart2)};
101
101
  --chart-3: ${rgba(colors.chart3)};
102
102
  --chart-4: ${rgba(colors.chart4)};
103
103
  --chart-5: ${rgba(colors.chart5)};
104
+ --chart-6: rgba(168, 85, 247, 1); /* purple — extended palette */
105
+ --chart-7: rgba(20, 184, 166, 1); /* teal — extended palette */
106
+ --chart-8: rgba(251, 113, 133, 1); /* rose — extended palette */
104
107
 
105
108
  /* Gradients */
106
109
  --gradient-diagonal: linear-gradient(135deg, ${colors.gradientStart} 0%, ${colors.gradientEnd} 100%);
@@ -153,9 +156,9 @@ export const generateTokensCss = (theme: ColorTheme): string => {
153
156
  --toast-success-border: rgba(5, 150, 105, 1);
154
157
  --toast-success-icon: rgba(5, 150, 105, 1);
155
158
  /* Toast - Warning */
156
- --toast-warning-bg: rgba(254, 243, 199, 1);
157
- --toast-warning-border: rgba(245, 158, 11, 1);
158
- --toast-warning-icon: rgba(245, 158, 11, 1);
159
+ --toast-warning-bg: rgba(254, 249, 195, 1);
160
+ --toast-warning-border: rgba(161, 98, 7, 1);
161
+ --toast-warning-icon: rgba(161, 98, 7, 1);
159
162
  /* Toast - Info */
160
163
  --toast-info-bg: rgba(219, 234, 254, 1);
161
164
  --toast-info-border: rgba(37, 99, 235, 1);
@@ -213,12 +216,15 @@ export const generateTokensCss = (theme: ColorTheme): string => {
213
216
 
214
217
  --elevation-sm: 0px 0px 48px 0px rgba(0, 0, 0, 0.3);
215
218
 
216
- /* Charts */
219
+ /* Charts — dark mode: slightly lighter/more saturated for contrast on dark bg */
217
220
  --chart-1: ${rgba(colors.chart1)};
218
221
  --chart-2: ${rgba(colors.chart2)};
219
222
  --chart-3: ${rgba(colors.chart3)};
220
223
  --chart-4: ${rgba(colors.chart4)};
221
224
  --chart-5: ${rgba(colors.chart5)};
225
+ --chart-6: rgba(196, 132, 252, 1); /* purple lighter */
226
+ --chart-7: rgba(45, 212, 191, 1); /* teal lighter */
227
+ --chart-8: rgba(253, 164, 175, 1); /* rose lighter */
222
228
 
223
229
  /* Sidebar */
224
230
  --sidebar: ${rgba(colors.sidebarDark)};
@@ -1,6 +1,6 @@
1
- export * from './xertica-assistant';
2
- export { CodeBlock } from './code-block';
3
- export { MarkdownMessage } from './markdown-message';
4
- export { ModernChatInput } from './modern-chat-input';
5
- export { FormattedDocument } from './formatted-document';
6
- export { generateDemoResponse } from '../../utils/demo-responses';
1
+ export * from './xertica-assistant';
2
+ export { CodeBlock } from './code-block';
3
+ export { MarkdownMessage } from './markdown-message';
4
+ export { ModernChatInput } from './modern-chat-input';
5
+ export { FormattedDocument } from './formatted-document';
6
+ export { generateDemoResponse } from '../../utils/demo-responses';
@@ -64,8 +64,34 @@ export function MarkdownMessage({ content, className = '' }: MarkdownMessageProp
64
64
  return `<ol class="list-decimal my-2">${items}</ol>`;
65
65
  });
66
66
 
67
+ // GFM Tables — must run before line-break transforms
68
+ html = html.replace(/((?:^\|.+\|[ \t]*(?:\r?\n|$))+)/gm, (match) => {
69
+ const rows = match.trim().split(/\r?\n/).filter(line => line.trim());
70
+ if (rows.length < 2) return match;
71
+
72
+ const isSeparatorRow = /^\|[\s\-:|]+\|$/.test(rows[1].trim());
73
+ if (!isSeparatorRow) return match;
74
+
75
+ const parseCells = (row: string) =>
76
+ row.split('|').slice(1, -1).map(cell => cell.trim());
77
+
78
+ const headerCells = parseCells(rows[0])
79
+ .map(cell => `<th class="px-3 py-2 text-left font-medium text-xs uppercase tracking-wide border-b border-border">${cell}</th>`)
80
+ .join('');
81
+
82
+ const bodyRows = rows.slice(2)
83
+ .map(row =>
84
+ `<tr class="border-b border-border last:border-0 hover:bg-muted/50">${
85
+ parseCells(row).map(cell => `<td class="px-3 py-2 text-sm">${cell}</td>`).join('')
86
+ }</tr>`
87
+ )
88
+ .join('');
89
+
90
+ return `<div class="overflow-x-auto my-3 rounded-[var(--radius)] border border-border"><table class="w-full text-sm"><thead class="bg-muted/50"><tr>${headerCells}</tr></thead><tbody>${bodyRows}</tbody></table></div>`;
91
+ });
92
+
67
93
  // Emojis and icons (keep as is)
68
-
94
+
69
95
  // Line breaks (preserve double line breaks as paragraphs)
70
96
  html = html.replace(/\n\n/g, '</p><p class="mb-2 break-words">');
71
97
  html = html.replace(/\n/g, '<br/>');
@@ -1 +1,3 @@
1
1
  export * from './xertica-assistant';
2
+ export { useAssistant } from './use-assistant';
3
+ export type { UseAssistantProps, UseAssistantReturn } from './use-assistant';