xertica-ui 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (559) hide show
  1. package/CHANGELOG.md +621 -564
  2. package/README.md +443 -417
  3. package/assets/xertica-logo.svg +37 -37
  4. package/assets/xertica-x-logo.svg +20 -20
  5. package/bin/cli.ts +1244 -1244
  6. package/bin/generate-tokens.ts +9 -9
  7. package/bin/language-config.ts +358 -358
  8. package/components/assistant/code-block/CodeBlock.tsx +268 -268
  9. package/components/assistant/formatted-document/FormattedDocument.tsx +147 -147
  10. package/components/assistant/modern-chat-input/ModernChatInput.tsx +564 -564
  11. package/components/assistant/xertica-assistant/parts/AssistantCollapsedView.tsx +99 -99
  12. package/components/assistant/xertica-assistant/parts/AssistantConversationList.tsx +104 -104
  13. package/components/assistant/xertica-assistant/parts/AssistantDocumentEditor.tsx +81 -81
  14. package/components/assistant/xertica-assistant/parts/AssistantFeedbackDialog.tsx +88 -88
  15. package/components/assistant/xertica-assistant/parts/AssistantHeader.tsx +75 -75
  16. package/components/assistant/xertica-assistant/parts/AssistantMessageBubble.tsx +564 -564
  17. package/components/assistant/xertica-assistant/parts/AssistantTabBar.tsx +67 -67
  18. package/components/assistant/xertica-assistant/parts/AssistantWelcomeScreen.tsx +103 -103
  19. package/components/assistant/xertica-assistant/use-assistant.ts +615 -615
  20. package/components/assistant/xertica-assistant/xertica-assistant.tsx +611 -611
  21. package/components/blocks/card-patterns/ActivityCard.tsx +100 -100
  22. package/components/blocks/card-patterns/ActivityCardSkeleton.tsx +56 -56
  23. package/components/blocks/card-patterns/FeatureCardSkeleton.tsx +58 -58
  24. package/components/blocks/card-patterns/NotificationCard.tsx +140 -140
  25. package/components/blocks/card-patterns/NotificationCardSkeleton.tsx +81 -81
  26. package/components/blocks/card-patterns/ProfileCard.tsx +112 -112
  27. package/components/blocks/card-patterns/ProfileCardSkeleton.tsx +69 -69
  28. package/components/blocks/card-patterns/ProjectCard.tsx +123 -123
  29. package/components/blocks/card-patterns/ProjectCardSkeleton.tsx +67 -67
  30. package/components/blocks/card-patterns/QuickActionCardSkeleton.tsx +44 -44
  31. package/components/blocks/card-patterns/card-patterns.stories.tsx +594 -594
  32. package/components/blocks/card-patterns/index.ts +29 -29
  33. package/components/brand/language-selector/LanguageSelector.tsx +102 -102
  34. package/components/brand/language-selector/language-selector.stories.tsx +111 -111
  35. package/components/brand/language-selector/language-selector.test.tsx +101 -101
  36. package/components/brand/theme-toggle/ThemeToggle.tsx +74 -74
  37. package/components/brand/xertica-provider/XerticaProvider.tsx +112 -109
  38. package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
  39. package/components/index.ts +86 -86
  40. package/components/layout/sidebar/sidebar.mdx +1 -1
  41. package/components/layout/sidebar/sidebar.stories.tsx +201 -0
  42. package/components/layout/sidebar/sidebar.tsx +1164 -1079
  43. package/components/media/FloatingMediaWrapper.tsx +371 -371
  44. package/components/media/audio-player/AudioPlayer.tsx +768 -768
  45. package/components/media/video-player/VideoPlayer.tsx +310 -310
  46. package/components/pages/forgot-password-page/ForgotPasswordPage.tsx +188 -188
  47. package/components/pages/home-content/HomeContent.tsx +120 -120
  48. package/components/pages/home-content/home-content.mdx +62 -62
  49. package/components/pages/home-page/HomePage.tsx +78 -78
  50. package/components/pages/home-page/home-page.mdx +53 -53
  51. package/components/pages/login-page/LoginPage.tsx +218 -218
  52. package/components/pages/reset-password-page/ResetPasswordPage.tsx +243 -243
  53. package/components/pages/template-content/TemplateContent.tsx +1354 -1354
  54. package/components/pages/template-content/template-content.mdx +61 -61
  55. package/components/pages/template-page/TemplatePage.stories.tsx +8 -15
  56. package/components/pages/template-page/template-page.mdx +53 -53
  57. package/components/pages/verify-email-page/VerifyEmailPage.tsx +206 -206
  58. package/components/shared/error-boundary.stories.tsx +114 -114
  59. package/components/shared/error-boundary.tsx +150 -150
  60. package/components/shared/error-fallbacks.tsx +222 -222
  61. package/components/ui/accordion/accordion.mdx +8 -8
  62. package/components/ui/alert/alert.mdx +8 -8
  63. package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
  64. package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
  65. package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
  66. package/components/ui/avatar/avatar.mdx +8 -8
  67. package/components/ui/badge/badge.mdx +8 -8
  68. package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
  69. package/components/ui/button/button.mdx +8 -8
  70. package/components/ui/calendar/calendar.mdx +8 -8
  71. package/components/ui/card/card.mdx +8 -8
  72. package/components/ui/carousel/carousel.mdx +8 -8
  73. package/components/ui/chart/chart.mdx +8 -8
  74. package/components/ui/chart/chart.test.tsx +1 -1
  75. package/components/ui/chart/chart.tsx +13 -6
  76. package/components/ui/checkbox/checkbox.mdx +8 -8
  77. package/components/ui/collapsible/collapsible.mdx +8 -8
  78. package/components/ui/command/command.mdx +8 -8
  79. package/components/ui/context-menu/context-menu.mdx +8 -8
  80. package/components/ui/dialog/dialog.mdx +8 -8
  81. package/components/ui/drawer/drawer.mdx +8 -8
  82. package/components/ui/dropdown-menu/dropdown-menu.mdx +8 -8
  83. package/components/ui/empty/empty.mdx +8 -8
  84. package/components/ui/file-upload/file-upload.mdx +8 -8
  85. package/components/ui/hover-card/hover-card.mdx +8 -8
  86. package/components/ui/input/input.mdx +8 -8
  87. package/components/ui/input-otp/input-otp.mdx +8 -8
  88. package/components/ui/label/label.mdx +8 -8
  89. package/components/ui/map/map.mdx +8 -8
  90. package/components/ui/menubar/menubar.mdx +8 -8
  91. package/components/ui/navigation-menu/navigation-menu.mdx +8 -8
  92. package/components/ui/notification-badge/notification-badge.mdx +8 -8
  93. package/components/ui/pagination/pagination.mdx +8 -8
  94. package/components/ui/popover/popover.mdx +8 -8
  95. package/components/ui/progress/progress.mdx +8 -8
  96. package/components/ui/radio-group/radio-group.mdx +8 -8
  97. package/components/ui/rating/rating.mdx +8 -8
  98. package/components/ui/resizable/resizable.mdx +8 -8
  99. package/components/ui/route-map/route-map.mdx +8 -8
  100. package/components/ui/scroll-area/scroll-area.mdx +8 -8
  101. package/components/ui/search/search.mdx +8 -8
  102. package/components/ui/select/select.mdx +8 -8
  103. package/components/ui/separator/separator.mdx +8 -8
  104. package/components/ui/sheet/sheet.mdx +8 -8
  105. package/components/ui/simple-map/simple-map.mdx +8 -8
  106. package/components/ui/skeleton/skeleton.mdx +8 -8
  107. package/components/ui/slider/slider.mdx +8 -8
  108. package/components/ui/sonner/sonner.mdx +8 -8
  109. package/components/ui/stats-card/index.ts +2 -2
  110. package/components/ui/stats-card/stats-card-skeleton.tsx +60 -60
  111. package/components/ui/stats-card/stats-card.mdx +8 -8
  112. package/components/ui/stats-card/stats-card.stories.tsx +117 -99
  113. package/components/ui/stats-card/stats-card.tsx +18 -2
  114. package/components/ui/stepper/stepper.mdx +8 -8
  115. package/components/ui/switch/switch.mdx +8 -8
  116. package/components/ui/table/table.mdx +8 -8
  117. package/components/ui/tabs/tabs.mdx +8 -8
  118. package/components/ui/textarea/textarea.mdx +8 -8
  119. package/components/ui/timeline/timeline.mdx +8 -8
  120. package/components/ui/toggle/toggle.mdx +8 -8
  121. package/components/ui/toggle-group/toggle-group.mdx +8 -8
  122. package/components/ui/tooltip/tooltip.mdx +8 -8
  123. package/components/ui/tree-view/tree-view.mdx +8 -8
  124. package/components.json +153 -533
  125. package/contexts/AuthContext.tsx +121 -121
  126. package/contexts/BrandColorsContext.tsx +39 -8
  127. package/contexts/LanguageContext.test.tsx +121 -121
  128. package/contexts/LanguageContext.tsx +250 -250
  129. package/contexts/theme-data.ts +51 -0
  130. package/dist/AssistantChart-BKVtGUKF.js +3383 -0
  131. package/dist/AssistantChart-BZTPJ5dP.cjs +3551 -0
  132. package/dist/{AssistantChart-BAx9VQvb.cjs → AssistantChart-Bdd44uBn.cjs} +388 -127
  133. package/dist/{AssistantChart-CVko2A1W.js → AssistantChart-CFhDdGyU.js} +391 -130
  134. package/dist/{AssistantChart-CVzmmhx4.js → AssistantChart-C_hwFRRr.js} +4 -4
  135. package/dist/{AssistantChart-BAudAfne.cjs → AssistantChart-CldVCVDe.cjs} +5 -5
  136. package/dist/{AssistantChart-BP8upjMk.js → AssistantChart-Cu3m7RBo.js} +5 -5
  137. package/dist/AssistantChart-CxGjH7Qk.js +3477 -0
  138. package/dist/AssistantChart-DIpshm3i.js +4784 -0
  139. package/dist/AssistantChart-DMJJ_Amf.js +3383 -0
  140. package/dist/AssistantChart-D_PTeu8P.cjs +3503 -0
  141. package/dist/{AssistantChart-9w31gdAb.cjs → AssistantChart-DoZCyS5r.cjs} +4 -4
  142. package/dist/AssistantChart-WeycT5Pd.cjs +3551 -0
  143. package/dist/AssistantChart-zjsy2GaZ.cjs +4810 -0
  144. package/dist/AudioPlayer-B1lt5cPl.cjs +989 -0
  145. package/dist/AudioPlayer-BZ7bibzU.cjs +982 -0
  146. package/dist/AudioPlayer-BpRPS4-1.cjs +1277 -0
  147. package/dist/AudioPlayer-C12BjQBV.cjs +997 -0
  148. package/dist/{AudioPlayer-1ypwE2Wh.cjs → AudioPlayer-CFeV8t-5.cjs} +1 -1
  149. package/dist/{AudioPlayer-DuKXrCfy.js → AudioPlayer-CGRUtUdN.js} +1 -1
  150. package/dist/AudioPlayer-Coly3q5R.js +1278 -0
  151. package/dist/AudioPlayer-CySJIyvL.js +937 -0
  152. package/dist/AudioPlayer-DMcG_c7L.js +990 -0
  153. package/dist/AudioPlayer-DcFKRJE_.js +998 -0
  154. package/dist/AudioPlayer-IAU5q5T1.cjs +936 -0
  155. package/dist/AudioPlayer-e8LfNoqO.js +983 -0
  156. package/dist/BrandColorsContext-565dDHd5.js +660 -0
  157. package/dist/BrandColorsContext-BMRJ04Wf.js +718 -0
  158. package/dist/BrandColorsContext-BcJbtkqn.cjs +659 -0
  159. package/dist/BrandColorsContext-BwY-b6M4.cjs +725 -0
  160. package/dist/{xertica-assistant-Qp3ydksa.cjs → CodeBlock-7TTgmdGG.cjs} +263 -51
  161. package/dist/{xertica-assistant-gnCJdcZY.js → CodeBlock-BeSt1h5P.js} +219 -7
  162. package/dist/CodeBlock-BgfYL_rD.cjs +2094 -0
  163. package/dist/CodeBlock-BlcqlA9M.cjs +2094 -0
  164. package/dist/CodeBlock-Bnmeu5ez.cjs +2094 -0
  165. package/dist/CodeBlock-BtfPlbAI.js +2078 -0
  166. package/dist/CodeBlock-CIySIuYr.js +2078 -0
  167. package/dist/CodeBlock-CuPtUM-7.cjs +2094 -0
  168. package/dist/CodeBlock-D6ffWXgc.js +2078 -0
  169. package/dist/CodeBlock-D8dcwbit.cjs +2094 -0
  170. package/dist/CodeBlock-DMZrFnlw.cjs +2094 -0
  171. package/dist/CodeBlock-DlBehYN8.js +2078 -0
  172. package/dist/CodeBlock-DnYNI8rQ.js +2078 -0
  173. package/dist/CodeBlock-DvKWbSnE.cjs +2094 -0
  174. package/dist/CodeBlock-DwMCfkFY.js +2078 -0
  175. package/dist/CodeBlock-Dy6CNYyj.js +2078 -0
  176. package/dist/CodeBlock-U1pPOQI7.cjs +2094 -0
  177. package/dist/CodeBlock-f_GpNhEB.js +2078 -0
  178. package/dist/CodeBlock-oB6u8nI1.js +2078 -0
  179. package/dist/CodeBlock-tZC31B73.cjs +2094 -0
  180. package/dist/FeatureCard-CxC-7C-C.cjs +300 -0
  181. package/dist/FeatureCard-DbHWCb4E.js +301 -0
  182. package/dist/ImageWithFallback-CGtidP6B.cjs +4542 -0
  183. package/dist/ImageWithFallback-lsg3pdFg.js +4508 -0
  184. package/dist/{LanguageContext-DvUt5jBg.cjs → LanguageContext-B_KFTCzT.cjs} +2 -2
  185. package/dist/{LanguageContext-BwhwC3G2.js → LanguageContext-CS14yCpi.js} +2 -2
  186. package/dist/{XerticaXLogo-DHz5SugF.js → LanguageSelector-B5YfbHra.js} +115 -136
  187. package/dist/{XerticaXLogo-DTee_y8X.cjs → LanguageSelector-D6uacAIM.cjs} +115 -136
  188. package/dist/LayoutContext-B45-e9DI.cjs +93 -0
  189. package/dist/LayoutContext-BAql6ZRY.js +97 -0
  190. package/dist/LayoutContext-Bav3UMEA.js +94 -0
  191. package/dist/LayoutContext-BvK-ggDa.cjs +96 -0
  192. package/dist/{ThemeContext-Bo-W2WZH.js → ThemeContext-BWq9ACPo.js} +8 -13
  193. package/dist/{ThemeContext-ept8jhXI.js → ThemeContext-BXjrgUjW.js} +261 -200
  194. package/dist/{ThemeContext-BblcjQup.cjs → ThemeContext-Bmod0Cg2.cjs} +8 -13
  195. package/dist/ThemeContext-BoH4NLfN.js +734 -0
  196. package/dist/{ThemeContext-BbBNoFTG.js → ThemeContext-C2EwAPDt.js} +2 -2
  197. package/dist/{ThemeContext-U4dEYc6C.cjs → ThemeContext-CGk3KK0k.cjs} +1 -8
  198. package/dist/{ThemeContext-D3LzacmG.js → ThemeContext-CQSo4Iwc.js} +1 -8
  199. package/dist/{ThemeContext-CP3a0jxy.cjs → ThemeContext-j5aGtPky.cjs} +262 -193
  200. package/dist/ThemeContext-r69W20Xg.cjs +733 -0
  201. package/dist/{ThemeContext-Cmr8Ex8H.cjs → ThemeContext-vTjumZeM.cjs} +2 -2
  202. package/dist/{VerifyEmailPage-BRSP-Pwt.cjs → VerifyEmailPage--1Vurewl.cjs} +3 -3
  203. package/dist/{VerifyEmailPage-CbgjOF0v.js → VerifyEmailPage-1WwWczAn.js} +12 -22
  204. package/dist/{VerifyEmailPage-DF2ilhum.cjs → VerifyEmailPage-B4peJjAT.cjs} +356 -334
  205. package/dist/{VerifyEmailPage-CR7kb5df.cjs → VerifyEmailPage-BComraR7.cjs} +12 -22
  206. package/dist/{VerifyEmailPage-u_Dn7t1U.cjs → VerifyEmailPage-Bp1XXl3H.cjs} +4 -4
  207. package/dist/{VerifyEmailPage-CkBYfsNy.cjs → VerifyEmailPage-By3Jf__L.cjs} +4 -4
  208. package/dist/{VerifyEmailPage-Bv8Ah_TK.cjs → VerifyEmailPage-ByerOcm4.cjs} +20 -23
  209. package/dist/{VerifyEmailPage-BE-L9mB7.js → VerifyEmailPage-C0c2e5n0.js} +7 -7
  210. package/dist/{VerifyEmailPage-EhudUdqF.js → VerifyEmailPage-C5TNQTBa.js} +355 -343
  211. package/dist/{VerifyEmailPage-Dt7zgA4w.cjs → VerifyEmailPage-CFLMls1p.cjs} +4 -4
  212. package/dist/{VerifyEmailPage-Bvfv8HVQ.js → VerifyEmailPage-CGIwmWrm.js} +461 -379
  213. package/dist/{VerifyEmailPage-Cyl55sJb.js → VerifyEmailPage-CJLz3jrn.js} +20 -23
  214. package/dist/VerifyEmailPage-COiyNl1y.js +2825 -0
  215. package/dist/{VerifyEmailPage-DMBh4NM9.cjs → VerifyEmailPage-CYXtbKi3.cjs} +1 -1
  216. package/dist/{VerifyEmailPage-DTtFfC-J.js → VerifyEmailPage-CgMxRb4z.js} +3 -3
  217. package/dist/VerifyEmailPage-CpqqpLpo.cjs +3305 -0
  218. package/dist/VerifyEmailPage-CqKsR2v8.js +2827 -0
  219. package/dist/{VerifyEmailPage-Bae2cBXT.cjs → VerifyEmailPage-Cwi3kbol.cjs} +7 -7
  220. package/dist/{VerifyEmailPage-X14vhdyl.js → VerifyEmailPage-DGhuIqkb.js} +4 -4
  221. package/dist/{VerifyEmailPage-BIBOKV7Z.js → VerifyEmailPage-DSBMRHtl.js} +36 -41
  222. package/dist/{VerifyEmailPage-D-FRj5TU.cjs → VerifyEmailPage-De6bQjrz.cjs} +36 -41
  223. package/dist/{VerifyEmailPage-BJjAMUTW.js → VerifyEmailPage-DgIid028.js} +4 -4
  224. package/dist/VerifyEmailPage-DjQKRlUS.cjs +2824 -0
  225. package/dist/{VerifyEmailPage-CdYPSJoO.js → VerifyEmailPage-DvMLZgFt.js} +1 -1
  226. package/dist/{VerifyEmailPage-C_ihbcth.js → VerifyEmailPage-MTD7AG1Z.js} +4 -4
  227. package/dist/VerifyEmailPage-s-1X3LDJ.cjs +2826 -0
  228. package/dist/XerticaOrbe-KL1RBHzw.cjs +1354 -0
  229. package/dist/XerticaOrbe-zwS1p2a8.js +1355 -0
  230. package/dist/XerticaProvider-6btlAlzc.js +17 -0
  231. package/dist/{XerticaProvider-siSt9uG2.js → XerticaProvider-B7EVH-NF.js} +2 -2
  232. package/dist/{XerticaProvider-AbWlr7Af.cjs → XerticaProvider-BIrqfZ-i.cjs} +11 -8
  233. package/dist/XerticaProvider-BNoNOxQ5.cjs +16 -0
  234. package/dist/XerticaProvider-BlY2limY.cjs +38 -0
  235. package/dist/{XerticaProvider-CWgby5mY.js → XerticaProvider-C1DKnvLh.js} +4 -4
  236. package/dist/{XerticaProvider-AChwphCO.cjs → XerticaProvider-CBGc4EMA.cjs} +4 -4
  237. package/dist/{XerticaProvider-BITjgC5p.js → XerticaProvider-CEoWMTxu.js} +2 -2
  238. package/dist/XerticaProvider-CeS5G_n5.cjs +45 -0
  239. package/dist/{XerticaProvider-By8q3Roe.cjs → XerticaProvider-CllrbMEJ.cjs} +2 -2
  240. package/dist/{XerticaProvider-B8CaV7xu.cjs → XerticaProvider-D-yNhF94.cjs} +1 -1
  241. package/dist/XerticaProvider-DDuiIcKo.js +39 -0
  242. package/dist/{XerticaProvider-DQtvJU7m.js → XerticaProvider-DYq4JWtg.js} +1 -1
  243. package/dist/{XerticaProvider-CWs6EwNa.js → XerticaProvider-Dt5HEzbQ.js} +10 -10
  244. package/dist/{XerticaProvider-CW9hpCdF.cjs → XerticaProvider-ET0ihewn.cjs} +2 -2
  245. package/dist/XerticaProvider-cI9hSs27.cjs +38 -0
  246. package/dist/XerticaProvider-hSwhNQex.js +39 -0
  247. package/dist/XerticaProvider-ra2NciRq.js +43 -0
  248. package/dist/{XerticaXLogo-ChryA6xj.js → XerticaXLogo-B7xQ5dhi.js} +1 -1
  249. package/dist/{XerticaXLogo-CziKMQil.cjs → XerticaXLogo-CQUUjXoH.cjs} +8 -8
  250. package/dist/{XerticaXLogo-DfUvz-lD.js → XerticaXLogo-Cmsp-Eey.js} +9 -9
  251. package/dist/{XerticaXLogo-CFuIlYFH.js → XerticaXLogo-DZbo4vOE.js} +12 -12
  252. package/dist/{XerticaXLogo-8TTzBjHw.cjs → XerticaXLogo-Zw2B276b.cjs} +1 -1
  253. package/dist/{XerticaXLogo-kslQ8Tk_.cjs → XerticaXLogo-bvZSgwGF.cjs} +13 -7
  254. package/dist/alert-dialog-BOje--vD.js +847 -0
  255. package/dist/alert-dialog-BtEuQqrg.cjs +870 -0
  256. package/dist/{alert-dialog-yckpaOpy.cjs → alert-dialog-DSKByiKZ.cjs} +3 -3
  257. package/dist/{alert-dialog-iDe5VE5o.js → alert-dialog-s-vmNkJ_.js} +3 -3
  258. package/dist/assistant.cjs.js +1 -1
  259. package/dist/assistant.es.js +1 -1
  260. package/dist/brand.cjs.js +1 -1
  261. package/dist/brand.es.js +1 -1
  262. package/dist/breadcrumb-CqJ7bHY5.js +161 -0
  263. package/dist/breadcrumb-m9Hb2_XN.cjs +177 -0
  264. package/dist/cli.js +45 -9
  265. package/dist/components/assistant/xertica-assistant/hooks/index.d.ts +6 -0
  266. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-conversations.d.ts +21 -0
  267. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-messages.d.ts +49 -0
  268. package/dist/components/assistant/xertica-assistant/hooks/use-assistant-suggestions.d.ts +16 -0
  269. package/dist/components/blocks/audio-player/AudioPlayer.d.ts +35 -0
  270. package/dist/components/blocks/audio-player/index.d.ts +1 -0
  271. package/dist/components/blocks/document-editor/DocumentEditor.d.ts +26 -0
  272. package/dist/components/blocks/document-editor/index.d.ts +1 -0
  273. package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +41 -0
  274. package/dist/components/blocks/podcast-player/index.d.ts +1 -0
  275. package/dist/components/brand/xertica-provider/XerticaProvider.d.ts +3 -1
  276. package/dist/components/ui/chart/chart.d.ts +12 -3
  277. package/dist/components/ui/chart/parts/chart-dashboard.d.ts +113 -0
  278. package/dist/components/ui/chart/parts/chart-metric.d.ts +118 -0
  279. package/dist/components/ui/chart/parts/chart-primitives.d.ts +101 -0
  280. package/dist/components/ui/chart/parts/chart-shared.d.ts +20 -0
  281. package/dist/components/ui/chart/parts/chart-utils.d.ts +12 -0
  282. package/dist/components/ui/chart/parts/index.d.ts +5 -0
  283. package/dist/components/ui/stats-card/stats-card.d.ts +10 -0
  284. package/dist/contexts/theme-data.d.ts +4 -0
  285. package/dist/dropdown-menu-BDB5CmQs.cjs +247 -0
  286. package/dist/dropdown-menu-DQidbKBD.js +231 -0
  287. package/dist/google-maps-loader-BFWp6VPd.js +287 -0
  288. package/dist/google-maps-loader-BKcdgFbu.cjs +312 -0
  289. package/dist/{google-maps-loader-t2IlYBzw.js → google-maps-loader-CTYySAun.js} +4 -0
  290. package/dist/google-maps-loader-CumCNXeG.js +312 -0
  291. package/dist/{google-maps-loader-BqsYL48U.cjs → google-maps-loader-Y-QkD-Li.cjs} +5 -0
  292. package/dist/google-maps-loader-eS3uQ5TA.cjs +287 -0
  293. package/dist/header-Cgy6vYPk.cjs +731 -0
  294. package/dist/header-DRlT4jgI.js +715 -0
  295. package/dist/header-Dux00SI4.cjs +731 -0
  296. package/dist/header-EkGKXPsD.js +715 -0
  297. package/dist/header-WfEywpyc.cjs +731 -0
  298. package/dist/header-tifNQn2U.js +715 -0
  299. package/dist/hooks.cjs.js +1 -1
  300. package/dist/hooks.es.js +1 -1
  301. package/dist/index-BhapVLVj.js +8 -0
  302. package/dist/{index-D3RLKRAs.cjs → index-COtD8bRW.cjs} +1 -1
  303. package/dist/index-D6fxYEY8.cjs +7 -0
  304. package/dist/index-DAIp0_HK.js +8 -0
  305. package/dist/index-DW5tYe26.js +8 -0
  306. package/dist/index-GA__GvnG.cjs +7 -0
  307. package/dist/index.cjs.js +6 -6
  308. package/dist/index.es.js +6 -6
  309. package/dist/index.umd.js +1043 -470
  310. package/dist/input-2R4loU86.js +127 -0
  311. package/dist/input-DWANSKGb.cjs +145 -0
  312. package/dist/layout.cjs.js +1 -1
  313. package/dist/layout.es.js +1 -1
  314. package/dist/pages.cjs.js +1 -1
  315. package/dist/pages.es.js +1 -1
  316. package/dist/progress-DPtzoVV8.js +175 -0
  317. package/dist/progress-EeaoqqUs.cjs +191 -0
  318. package/dist/rich-text-editor-0mraWT5y.cjs +2376 -0
  319. package/dist/rich-text-editor-B-IkcPD0.js +2874 -0
  320. package/dist/rich-text-editor-B2CKz7nx.cjs +2903 -0
  321. package/dist/rich-text-editor-B6jMRLzk.cjs +1939 -0
  322. package/dist/rich-text-editor-B8_oYcIR.js +1730 -0
  323. package/dist/rich-text-editor-B9UbSXNb.js +1203 -0
  324. package/dist/rich-text-editor-BYuRBNBU.js +2373 -0
  325. package/dist/rich-text-editor-Bb9pySTs.cjs +2374 -0
  326. package/dist/rich-text-editor-BcL6L3cm.cjs +2374 -0
  327. package/dist/rich-text-editor-BoVZYtTs.cjs +2391 -0
  328. package/dist/rich-text-editor-Bp3zQqMC.js +2954 -0
  329. package/dist/rich-text-editor-CMgSN_w2.js +1189 -0
  330. package/dist/rich-text-editor-CPV1lEPH.cjs +1748 -0
  331. package/dist/rich-text-editor-CeucBdIv.cjs +2971 -0
  332. package/dist/rich-text-editor-CoKqbCtu.cjs +1799 -0
  333. package/dist/rich-text-editor-Cw56T_mB.js +2356 -0
  334. package/dist/rich-text-editor-Cyt8qs2b.js +1921 -0
  335. package/dist/rich-text-editor-D6H84OcX.cjs +1220 -0
  336. package/dist/rich-text-editor-D76gD-QI.js +2328 -0
  337. package/dist/rich-text-editor-DKkokOnA.js +1781 -0
  338. package/dist/rich-text-editor-DNsdpN64.cjs +2359 -0
  339. package/dist/rich-text-editor-DfG8bCyY.js +2358 -0
  340. package/dist/rich-text-editor-DloeW0wc.js +2832 -0
  341. package/dist/rich-text-editor-Dxjw31Z4.js +2341 -0
  342. package/dist/rich-text-editor-DzP0Epmb.js +2356 -0
  343. package/dist/rich-text-editor-bRkNoeZY.cjs +2891 -0
  344. package/dist/rich-text-editor-lyYE2ZG5.cjs +1207 -0
  345. package/dist/rich-text-editor-skplNlBM.cjs +2345 -0
  346. package/dist/select-Bkbr0f-Z.cjs +162 -0
  347. package/dist/select-CvIVdX2n.js +145 -0
  348. package/dist/{sidebar-CplprZpM.js → sidebar-0ocFLSks.js} +127 -50
  349. package/dist/{sidebar-CA6_ek3f.js → sidebar-B6SlKZYN.js} +40 -49
  350. package/dist/{sidebar-CmvwjnVb.js → sidebar-BViy8Eeu.js} +17 -9
  351. package/dist/{sidebar-Dz7bd3zP.js → sidebar-BbVIQvlP.js} +1 -1
  352. package/dist/{sidebar-CVUGHOS_.cjs → sidebar-BxGXsDAd.cjs} +16 -8
  353. package/dist/sidebar-CK_0ZQHj.cjs +803 -0
  354. package/dist/sidebar-CUuOvYhK.js +787 -0
  355. package/dist/{sidebar-B3EYhli0.cjs → sidebar-CeTMuzOx.cjs} +128 -47
  356. package/dist/{sidebar-KIS0C2JH.js → sidebar-CrQDDdcz.js} +24 -33
  357. package/dist/{sidebar-zowjejT2.cjs → sidebar-DAaY8bRU.cjs} +24 -33
  358. package/dist/{sidebar-B9NR0lCe.cjs → sidebar-DQj1z3jG.cjs} +227 -269
  359. package/dist/sidebar-Djn5syhi.cjs +786 -0
  360. package/dist/sidebar-LluMXfam.js +759 -0
  361. package/dist/sidebar-_rT7rBMk.js +787 -0
  362. package/dist/{sidebar-BvF5I2Ue.cjs → sidebar-nzPoVHBQ.cjs} +41 -46
  363. package/dist/{sidebar-C5B_LHek.cjs → sidebar-q7P2Godd.cjs} +1 -1
  364. package/dist/slider-Bc5Hd0y1.js +56 -0
  365. package/dist/slider-N7hFFj6X.cjs +73 -0
  366. package/dist/tooltip-Ded96neP.cjs +137 -0
  367. package/dist/tooltip-HDOoD2-0.js +120 -0
  368. package/dist/ui.cjs.js +2 -2
  369. package/dist/ui.es.js +2 -2
  370. package/dist/use-audio-player-B31J-aqh.cjs +187 -0
  371. package/dist/use-audio-player-BkmEmj8Q.js +185 -0
  372. package/dist/use-audio-player-CLFTWFW1.cjs +184 -0
  373. package/dist/use-audio-player-CLLn00I6.js +188 -0
  374. package/dist/{use-audio-player-Dn1NR9xN.cjs → use-audio-player-NKsWyjWu.cjs} +7 -3
  375. package/dist/{use-audio-player-Bkh23vQ3.js → use-audio-player-nv8ZSGa1.js} +7 -3
  376. package/dist/use-file-upload-BcjEo2S5.js +404 -0
  377. package/dist/use-file-upload-CRJR68Tj.cjs +403 -0
  378. package/dist/use-mobile-B0hNy_Y6.cjs +4303 -0
  379. package/dist/use-mobile-BXuYROXM.js +4202 -0
  380. package/dist/use-mobile-Bbd51ASU.cjs +4392 -0
  381. package/dist/use-mobile-Bk6CX-TC.js +4359 -0
  382. package/dist/use-mobile-BvYdisLP.js +4202 -0
  383. package/dist/use-mobile-BzuxjzNX.cjs +4392 -0
  384. package/dist/use-mobile-CG2-SdXV.cjs +4235 -0
  385. package/dist/use-mobile-CKb5pqTs.js +4269 -0
  386. package/dist/use-mobile-CYuAuGDl.js +4202 -0
  387. package/dist/use-mobile-CaENcqm-.js +4508 -0
  388. package/dist/use-mobile-CbrYgJGJ.js +4203 -0
  389. package/dist/use-mobile-Cd4xPrKq.cjs +46 -0
  390. package/dist/use-mobile-DMOvImGQ.cjs +4542 -0
  391. package/dist/use-mobile-DRB3BQgD.cjs +4235 -0
  392. package/dist/use-mobile-DZvv7QMR.js +4359 -0
  393. package/dist/use-mobile-DdI_TXam.cjs +4235 -0
  394. package/dist/use-mobile-DlceKf8a.js +4359 -0
  395. package/dist/use-mobile-DsOnow1o.cjs +4236 -0
  396. package/dist/use-mobile-Kcj6jSnK.cjs +4392 -0
  397. package/dist/use-mobile-bnKcua_i.js +4202 -0
  398. package/dist/use-mobile-j4w2Jrf1.js +30 -0
  399. package/dist/use-mobile-ncXBeE2z.cjs +4235 -0
  400. package/dist/use-rich-text-editor-DjiddBGv.js +282 -0
  401. package/dist/use-rich-text-editor-lpeswbCs.cjs +281 -0
  402. package/dist/xertica-assistant-BdiZag0h.js +2187 -0
  403. package/dist/xertica-assistant-CrgTb6Hs.cjs +2155 -0
  404. package/dist/xertica-assistant-CyikE3N_.js +2173 -0
  405. package/dist/xertica-assistant-DCsnQyi5.js +2156 -0
  406. package/dist/xertica-assistant-DUBpmEgo.cjs +2186 -0
  407. package/dist/xertica-assistant-QFUnv5I2.cjs +2180 -0
  408. package/dist/{xertica-assistant-Bj3vBCq_.cjs → xertica-assistant-V_IdW4WF.cjs} +27 -9
  409. package/dist/{xertica-assistant-BMqdyRVi.js → xertica-assistant-ciJaWqm1.js} +28 -10
  410. package/dist/{xertica-assistant-B1IaHXnB.cjs → xertica-assistant-dyP7KHM5.cjs} +533 -392
  411. package/dist/{xertica-assistant-DPsESB6t.js → xertica-assistant-yX1CFBBo.js} +535 -394
  412. package/dist/xertica-ui.css +2 -2
  413. package/docs/architecture-improvements.md +456 -456
  414. package/docs/architecture.md +312 -312
  415. package/docs/components/assistant.md +428 -428
  416. package/docs/components/branding.md +252 -252
  417. package/docs/components/card-patterns.md +447 -447
  418. package/docs/components/error-boundary.md +201 -201
  419. package/docs/components/hooks.md +432 -432
  420. package/docs/components/language-selector.md +176 -176
  421. package/docs/components/pages.md +323 -323
  422. package/docs/components/sidebar.md +19 -2
  423. package/docs/components/stats-card.md +20 -2
  424. package/docs/doc-audit.md +244 -244
  425. package/docs/getting-started.md +616 -616
  426. package/docs/guidelines.md +330 -330
  427. package/docs/i18n.md +480 -480
  428. package/docs/installation.md +268 -268
  429. package/docs/llms.md +295 -295
  430. package/docs/state-management.md +289 -289
  431. package/guidelines/Guidelines.md +409 -409
  432. package/llms-compact.txt +30 -1
  433. package/llms-full.txt +11553 -7133
  434. package/llms.txt +1 -1
  435. package/package.json +219 -219
  436. package/styles/xertica/base.css +90 -90
  437. package/styles/xertica/tokens.css +9 -9
  438. package/templates/.prettierignore +4 -4
  439. package/templates/.prettierrc +10 -10
  440. package/templates/CLAUDE.md +180 -180
  441. package/templates/guidelines/Guidelines.md +865 -577
  442. package/templates/package.json +69 -69
  443. package/templates/src/app/App.tsx +46 -46
  444. package/templates/src/app/components/AuthGuard.tsx +131 -131
  445. package/templates/src/features/assistant/data/mock.ts +75 -75
  446. package/templates/src/features/assistant/hooks/useAssistantConfig.ts +20 -20
  447. package/templates/src/features/assistant/index.ts +5 -5
  448. package/templates/src/features/auth/ui/AuthPageShell.tsx +32 -32
  449. package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +70 -70
  450. package/templates/src/features/auth/ui/LoginContent.tsx +92 -92
  451. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +183 -183
  452. package/templates/src/features/auth/ui/SocialLoginButtons.tsx +78 -78
  453. package/templates/src/features/auth/ui/VerifyEmailContent.tsx +80 -80
  454. package/templates/src/features/home/data/mock.ts +41 -41
  455. package/templates/src/features/home/hooks/useFeatureCards.ts +20 -20
  456. package/templates/src/features/home/index.ts +11 -11
  457. package/templates/src/features/home/ui/HomeContent.tsx +117 -117
  458. package/templates/src/features/template/ui/CrudTemplate.tsx +112 -112
  459. package/templates/src/features/template/ui/DashboardTemplate.tsx +110 -110
  460. package/templates/src/features/template/ui/FormTemplate.tsx +117 -117
  461. package/templates/src/features/template/ui/LoginTemplate.tsx +59 -59
  462. package/templates/src/features/template/ui/TemplateContent.tsx +1322 -1322
  463. package/templates/src/i18n.ts +124 -124
  464. package/templates/src/locales/en/common.json +21 -21
  465. package/templates/src/locales/en/components/activityCard.json +10 -10
  466. package/templates/src/locales/en/components/assistant.json +119 -119
  467. package/templates/src/locales/en/components/media.json +29 -29
  468. package/templates/src/locales/en/components/notificationCard.json +5 -5
  469. package/templates/src/locales/en/components/profileCard.json +8 -8
  470. package/templates/src/locales/en/components/projectCard.json +10 -10
  471. package/templates/src/locales/en/components/sidebar.json +14 -14
  472. package/templates/src/locales/en/components/stats.json +8 -8
  473. package/templates/src/locales/en/components/team.json +14 -14
  474. package/templates/src/locales/en/errors.json +9 -9
  475. package/templates/src/locales/en/languageSelector.json +7 -7
  476. package/templates/src/locales/en/nav.json +6 -6
  477. package/templates/src/locales/en/pages/crudTemplate.json +25 -25
  478. package/templates/src/locales/en/pages/dashboardTemplate.json +20 -20
  479. package/templates/src/locales/en/pages/forgotPassword.json +10 -10
  480. package/templates/src/locales/en/pages/formTemplate.json +16 -16
  481. package/templates/src/locales/en/pages/home.json +7 -7
  482. package/templates/src/locales/en/pages/login.json +15 -15
  483. package/templates/src/locales/en/pages/loginTemplate.json +9 -9
  484. package/templates/src/locales/en/pages/resetPassword.json +18 -18
  485. package/templates/src/locales/en/pages/templates.json +317 -317
  486. package/templates/src/locales/en/pages/verifyEmail.json +12 -12
  487. package/templates/src/locales/en/themeToggle.json +6 -6
  488. package/templates/src/locales/es/common.json +21 -21
  489. package/templates/src/locales/es/components/activityCard.json +10 -10
  490. package/templates/src/locales/es/components/assistant.json +119 -119
  491. package/templates/src/locales/es/components/media.json +29 -29
  492. package/templates/src/locales/es/components/notificationCard.json +5 -5
  493. package/templates/src/locales/es/components/profileCard.json +8 -8
  494. package/templates/src/locales/es/components/projectCard.json +10 -10
  495. package/templates/src/locales/es/components/sidebar.json +14 -14
  496. package/templates/src/locales/es/components/stats.json +8 -8
  497. package/templates/src/locales/es/components/team.json +14 -14
  498. package/templates/src/locales/es/errors.json +9 -9
  499. package/templates/src/locales/es/languageSelector.json +7 -7
  500. package/templates/src/locales/es/nav.json +6 -6
  501. package/templates/src/locales/es/pages/crudTemplate.json +25 -25
  502. package/templates/src/locales/es/pages/dashboardTemplate.json +20 -20
  503. package/templates/src/locales/es/pages/forgotPassword.json +10 -10
  504. package/templates/src/locales/es/pages/formTemplate.json +16 -16
  505. package/templates/src/locales/es/pages/home.json +7 -7
  506. package/templates/src/locales/es/pages/login.json +15 -15
  507. package/templates/src/locales/es/pages/loginTemplate.json +9 -9
  508. package/templates/src/locales/es/pages/resetPassword.json +18 -18
  509. package/templates/src/locales/es/pages/templates.json +317 -317
  510. package/templates/src/locales/es/pages/verifyEmail.json +12 -12
  511. package/templates/src/locales/es/themeToggle.json +6 -6
  512. package/templates/src/locales/pt-BR/common.json +21 -21
  513. package/templates/src/locales/pt-BR/components/activityCard.json +10 -10
  514. package/templates/src/locales/pt-BR/components/assistant.json +119 -119
  515. package/templates/src/locales/pt-BR/components/media.json +29 -29
  516. package/templates/src/locales/pt-BR/components/notificationCard.json +5 -5
  517. package/templates/src/locales/pt-BR/components/profileCard.json +8 -8
  518. package/templates/src/locales/pt-BR/components/projectCard.json +10 -10
  519. package/templates/src/locales/pt-BR/components/sidebar.json +14 -14
  520. package/templates/src/locales/pt-BR/components/stats.json +8 -8
  521. package/templates/src/locales/pt-BR/components/team.json +14 -14
  522. package/templates/src/locales/pt-BR/errors.json +9 -9
  523. package/templates/src/locales/pt-BR/languageSelector.json +7 -7
  524. package/templates/src/locales/pt-BR/nav.json +6 -6
  525. package/templates/src/locales/pt-BR/pages/crudTemplate.json +25 -25
  526. package/templates/src/locales/pt-BR/pages/dashboardTemplate.json +20 -20
  527. package/templates/src/locales/pt-BR/pages/forgotPassword.json +10 -10
  528. package/templates/src/locales/pt-BR/pages/formTemplate.json +16 -16
  529. package/templates/src/locales/pt-BR/pages/home.json +7 -7
  530. package/templates/src/locales/pt-BR/pages/login.json +15 -15
  531. package/templates/src/locales/pt-BR/pages/loginTemplate.json +9 -9
  532. package/templates/src/locales/pt-BR/pages/resetPassword.json +18 -18
  533. package/templates/src/locales/pt-BR/pages/templates.json +317 -317
  534. package/templates/src/locales/pt-BR/pages/verifyEmail.json +12 -12
  535. package/templates/src/locales/pt-BR/themeToggle.json +6 -6
  536. package/templates/src/pages/AssistantPage.tsx +470 -470
  537. package/templates/src/pages/HomePage.tsx +53 -53
  538. package/templates/src/shared/error-boundary.tsx +150 -150
  539. package/templates/src/shared/error-fallbacks.tsx +222 -222
  540. package/templates/src/styles/xertica/tokens.css +9 -9
  541. package/templates/vite.config.js +20 -20
  542. package/templates/vite.config.ts +55 -55
  543. package/dist/ThemeContext-CpqYShLq.cjs +0 -324
  544. package/dist/ThemeContext-Du2nE1PL.js +0 -325
  545. package/dist/ThemeContext-GeEBTJ3q.cjs +0 -1621
  546. package/dist/ThemeContext-JyLK9B1o.js +0 -1622
  547. package/dist/VerifyEmailPage-BiRm7Nh4.cjs +0 -3213
  548. package/dist/VerifyEmailPage-hdB8JQGv.cjs +0 -3213
  549. package/dist/VerifyEmailPage-vYHbYK3q.js +0 -3214
  550. package/dist/XerticaProvider-CUYJZc32.js +0 -49
  551. package/dist/XerticaProvider-CjQAQPcn.cjs +0 -48
  552. package/dist/XerticaProvider-D5lLumH-.js +0 -49
  553. package/dist/XerticaProvider-qQUDop71.cjs +0 -48
  554. package/dist/XerticaXLogo-BWaag64t.js +0 -252
  555. package/dist/XerticaXLogo-CU-U-GP4.cjs +0 -251
  556. package/dist/index-CkTUgOwX.js +0 -8
  557. package/dist/sidebar-OTO_up7Z.js +0 -801
  558. package/dist/{rich-text-editor-BmsjY03B.js → rich-text-editor-DgF8s7xW.js} +26 -26
  559. package/dist/{rich-text-editor-GS2kpTAK.cjs → rich-text-editor-mWoaSCE4.cjs} +26 -26
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Props for the AudioPlayer component.
3
+ */
4
+ interface AudioPlayerProps {
5
+ /** Whether the player is currently visible and open */
6
+ isOpen: boolean;
7
+ /** Callback to close the player bar */
8
+ onClose: () => void;
9
+ /** Pass sidebar expansion state to adjust layout positioning (optional, now uses LayoutContext) */
10
+ sidebarExpanded?: boolean;
11
+ /** Title of the audio track/podcast */
12
+ title?: string;
13
+ /** Subtitle or source information */
14
+ subtitle?: string;
15
+ /** Total duration in seconds */
16
+ duration?: number;
17
+ /** Initial or current playback time in seconds */
18
+ currentTime?: number;
19
+ }
20
+ /**
21
+ * Global floating Audio Player bar.
22
+ *
23
+ * @description
24
+ * A fixed-position playback bar that handles audio progress, volume,
25
+ * and specific podcast actions (reset, speed, info, refresh).
26
+ * It transitions smoothly from the bottom of the screen.
27
+ *
28
+ * @ai-rules
29
+ * 1. Placement: This component should typically be rendered once at the top level (e.g., in a Layout) and controlled via global state.
30
+ * 2. Positional logic: It automatically offsets itself based on `sidebarExpanded` to avoid overlapping navigation.
31
+ * 3. Use `duration` and `currentTime` to synchronize with external audio state if needed.
32
+ */
33
+ export declare function AudioPlayer({ isOpen, onClose, title, subtitle, duration, // 20:00
34
+ currentTime }: AudioPlayerProps): import("react/jsx-runtime").JSX.Element | null;
35
+ export {};
@@ -0,0 +1 @@
1
+ export * from './AudioPlayer';
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Props for the DocumentEditor component.
3
+ */
4
+ interface DocumentEditorProps {
5
+ /** Initial markdown or plain text content */
6
+ initialContent: string;
7
+ /** Title for the document (default: 'New Document') */
8
+ initialTitle?: string;
9
+ /** Callback to close the editor */
10
+ onClose: () => void;
11
+ }
12
+ /**
13
+ * Rich-text document editor with markdown compatibility.
14
+ *
15
+ * @description
16
+ * Provides a content-editable environment for document editing. It supports
17
+ * basic formatting (bold, italic, headers, lists) and maintains an edit history
18
+ * for Undo/Redo. It also handles simple markdown-to-HTML conversion for initial loading.
19
+ *
20
+ * @ai-rules
21
+ * 1. Use this component for full-screen editing experiences or side-panel document refinement.
22
+ * 2. It tracks unsaved changes internally; ensure you handle persistence via future prop extensions or external state.
23
+ * 3. The `convertMarkdownToHtml` helper is basic — it does not support complex nested markdown structures.
24
+ */
25
+ export declare function DocumentEditor({ initialContent, initialTitle, onClose }: DocumentEditorProps): import("react/jsx-runtime").JSX.Element;
26
+ export {};
@@ -0,0 +1 @@
1
+ export * from './DocumentEditor';
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Props for the PodcastPlayer component.
3
+ */
4
+ interface PodcastPlayerProps {
5
+ /** Whether the player is currently visible and open */
6
+ isOpen: boolean;
7
+ /** Callback to close the player bar */
8
+ onClose: () => void;
9
+ /** Pass sidebar expansion state to adjust layout positioning (optional, now uses LayoutContext) */
10
+ sidebarExpanded?: boolean;
11
+ /** Title of the podcast/process track */
12
+ title?: string;
13
+ /** Subtitle or source information */
14
+ subtitle?: string;
15
+ /** Total duration in seconds */
16
+ duration?: number;
17
+ /** Initial or current playback time in seconds */
18
+ currentTime?: number;
19
+ /** Display mode of the player */
20
+ variant?: 'fixed' | 'inline';
21
+ /** How the fixed player occupies space */
22
+ layoutMode?: 'viewport' | 'container';
23
+ /** Optional state of the right-side panel for layout adjustments */
24
+ rightSidebarState?: 'none' | 'collapsed' | 'expanded';
25
+ }
26
+ /**
27
+ * Advanced Podcast Player component.
28
+ *
29
+ * @description
30
+ * An enhanced version of the Audio Player that supports multiple layout modes
31
+ * (fixed or inline), viewport portals, and responsive mobile rendering. It uses
32
+ * a theme-aware primary background when fixed.
33
+ *
34
+ * @ai-rules
35
+ * 1. Portals: When `variant="fixed"` and `layoutMode="viewport"`, it uses `createPortal` to render at the document root.
36
+ * 2. Variant: Use `variant="fixed"` for global playback; use `variant="inline"` for embedding directly in content cards.
37
+ * 3. Mobile: This component has a dedicated vertical layout for mobile screens (< 768px).
38
+ */
39
+ export declare function PodcastPlayer({ isOpen, onClose, title, subtitle, duration, // 20:00
40
+ currentTime, variant, layoutMode, rightSidebarState }: PodcastPlayerProps): import("react/jsx-runtime").JSX.Element | null;
41
+ export {};
@@ -0,0 +1 @@
1
+ export * from './PodcastPlayer';
@@ -12,6 +12,8 @@ interface XerticaProviderProps {
12
12
  googleMapsApiKey?: string;
13
13
  /** Default theme name for branding ('default', 'dark', etc.) */
14
14
  defaultBrandTheme?: string;
15
+ /** Color theme ID (e.g. 'xertica-original', 'blue', 'rose') — selects a full ColorTheme preset */
16
+ defaultColorTheme?: string;
15
17
  /** Primary brand color hex value */
16
18
  primaryColor?: string;
17
19
  /** Whether to use custom theme tokens from CSS */
@@ -53,5 +55,5 @@ interface XerticaProviderProps {
53
55
  * This component aggregates all necessary context providers. It should be placed at the
54
56
  * root of your application, ideally inside the App component.
55
57
  */
56
- export declare function XerticaProvider({ children, apiKey, googleMapsApiKey, defaultBrandTheme, primaryColor, useCustomTokens, disableDarkMode, availableLanguages, defaultLanguage, }: XerticaProviderProps): import("react/jsx-runtime").JSX.Element;
58
+ export declare function XerticaProvider({ children, apiKey, googleMapsApiKey, defaultBrandTheme, defaultColorTheme, primaryColor, useCustomTokens, disableDarkMode, availableLanguages, defaultLanguage, }: XerticaProviderProps): import("react/jsx-runtime").JSX.Element;
57
59
  export {};
@@ -75,15 +75,24 @@ declare const ChartStyle: ({ id, config }: {
75
75
  config: ChartConfig;
76
76
  }) => import("react/jsx-runtime").JSX.Element | null;
77
77
  declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
78
- declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: React.ComponentProps<typeof RechartsPrimitive.Tooltip> & React.ComponentProps<'div'> & {
78
+ declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: React.ComponentProps<'div'> & {
79
+ active?: boolean;
80
+ payload?: RechartsPrimitive.TooltipPayload;
81
+ label?: React.ReactNode;
82
+ labelFormatter?: (label: React.ReactNode, payload: RechartsPrimitive.TooltipPayload) => React.ReactNode;
83
+ labelClassName?: string;
79
84
  hideLabel?: boolean;
80
85
  hideIndicator?: boolean;
81
86
  indicator?: 'line' | 'dot' | 'dashed';
82
87
  nameKey?: string;
83
88
  labelKey?: string;
89
+ color?: string;
90
+ formatter?: RechartsPrimitive.DefaultTooltipContentProps['formatter'];
84
91
  }): import("react/jsx-runtime").JSX.Element | null;
85
- declare const ChartLegend: typeof RechartsPrimitive.Legend;
86
- declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: React.ComponentProps<'div'> & Pick<RechartsPrimitive.LegendProps, 'payload' | 'verticalAlign'> & {
92
+ declare const ChartLegend: React.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => React.ReactPortal | null>;
93
+ declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: React.ComponentProps<'div'> & {
94
+ payload?: RechartsPrimitive.LegendPayload[];
95
+ verticalAlign?: 'top' | 'middle' | 'bottom';
87
96
  hideIcon?: boolean;
88
97
  nameKey?: string;
89
98
  }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,113 @@
1
+ import * as React from "react";
2
+ import type { ChartBarSize, ChartCurveType, ChartStateProps, DashboardChartColors, DashboardChartDatum, DashboardChartSeries, ChartPeriod } from "./chart-primitives";
3
+ import { ChartContainer } from "./chart-primitives";
4
+ export interface DashboardBarChartProps extends Omit<React.ComponentProps<typeof ChartContainer>, "children">, ChartStateProps {
5
+ data: DashboardChartDatum[];
6
+ indexKey?: string;
7
+ series?: DashboardChartSeries[];
8
+ colors?: DashboardChartColors;
9
+ barSize?: ChartBarSize;
10
+ stacked?: boolean;
11
+ showGrid?: boolean;
12
+ showLegend?: boolean;
13
+ valueFormatter?: (value: number | string) => string;
14
+ }
15
+ export declare function DashboardBarChart({ data, config, indexKey, series, colors, barSize, stacked, showGrid, showLegend, valueFormatter, isLoading, error, onRetry, retryLabel, emptyTitle, emptyDescription, errorTitle, errorDescription, loadingLabel, stateClassName, className, ...props }: DashboardBarChartProps): import("react/jsx-runtime").JSX.Element;
16
+ export interface DashboardLineChartProps extends Omit<React.ComponentProps<typeof ChartContainer>, "children">, ChartStateProps {
17
+ data: DashboardChartDatum[];
18
+ indexKey?: string;
19
+ series?: DashboardChartSeries[];
20
+ colors?: DashboardChartColors;
21
+ showDots?: boolean;
22
+ showGrid?: boolean;
23
+ showLegend?: boolean;
24
+ curveType?: ChartCurveType;
25
+ strokeWidth?: number;
26
+ valueFormatter?: (value: number | string) => string;
27
+ }
28
+ export declare function DashboardLineChart({ data, config, indexKey, series, colors, showDots, showGrid, showLegend, curveType, strokeWidth, valueFormatter, isLoading, error, onRetry, retryLabel, emptyTitle, emptyDescription, errorTitle, errorDescription, loadingLabel, stateClassName, className, ...props }: DashboardLineChartProps): import("react/jsx-runtime").JSX.Element;
29
+ export interface HorizontalBarChartProps extends Omit<React.ComponentProps<typeof ChartContainer>, "children">, ChartStateProps {
30
+ data: DashboardChartDatum[];
31
+ indexKey?: string;
32
+ series?: DashboardChartSeries[];
33
+ colors?: DashboardChartColors;
34
+ barSize?: ChartBarSize;
35
+ stacked?: boolean;
36
+ categoryWidth?: number;
37
+ showGrid?: boolean;
38
+ showLegend?: boolean;
39
+ valueFormatter?: (value: number | string) => string;
40
+ }
41
+ export declare function HorizontalBarChart({ data, config, indexKey, series, colors, barSize, stacked, categoryWidth, showGrid, showLegend, valueFormatter, isLoading, error, onRetry, retryLabel, emptyTitle, emptyDescription, errorTitle, errorDescription, loadingLabel, stateClassName, className, ...props }: HorizontalBarChartProps): import("react/jsx-runtime").JSX.Element;
42
+ export interface InteractiveTimeSeriesChartProps extends Omit<React.ComponentProps<typeof ChartContainer>, "children">, ChartStateProps {
43
+ data: DashboardChartDatum[];
44
+ indexKey?: string;
45
+ series?: DashboardChartSeries[];
46
+ colors?: DashboardChartColors;
47
+ periods?: ChartPeriod[];
48
+ defaultPeriod?: string;
49
+ defaultSeries?: string;
50
+ filterData?: (data: DashboardChartDatum[], period: string) => DashboardChartDatum[];
51
+ showGrid?: boolean;
52
+ showLegend?: boolean;
53
+ showDots?: boolean;
54
+ gradientFill?: boolean;
55
+ curveType?: ChartCurveType;
56
+ strokeWidth?: number;
57
+ valueFormatter?: (value: number | string) => string;
58
+ }
59
+ export declare function InteractiveTimeSeriesChart({ data, config, indexKey, series, colors, periods, defaultPeriod, defaultSeries, filterData, showGrid, showLegend, showDots, gradientFill, curveType, strokeWidth, valueFormatter, isLoading, error, onRetry, retryLabel, emptyTitle, emptyDescription, errorTitle, errorDescription, loadingLabel, stateClassName, className, ...props }: InteractiveTimeSeriesChartProps): import("react/jsx-runtime").JSX.Element;
60
+ export interface ComboMetricChartProps extends Omit<React.ComponentProps<typeof ChartContainer>, "children">, ChartStateProps {
61
+ data: DashboardChartDatum[];
62
+ indexKey?: string;
63
+ series?: DashboardChartSeries[];
64
+ colors?: DashboardChartColors;
65
+ barSize?: ChartBarSize;
66
+ showGrid?: boolean;
67
+ showLegend?: boolean;
68
+ gradientFill?: boolean;
69
+ curveType?: ChartCurveType;
70
+ valueFormatter?: (value: number | string) => string;
71
+ }
72
+ export declare function ComboMetricChart({ data, config, indexKey, series, colors, barSize, showGrid, showLegend, gradientFill, curveType, valueFormatter, isLoading, error, onRetry, retryLabel, emptyTitle, emptyDescription, errorTitle, errorDescription, loadingLabel, stateClassName, className, ...props }: ComboMetricChartProps): import("react/jsx-runtime").JSX.Element;
73
+ export interface DonutBreakdownChartProps extends Omit<React.ComponentProps<typeof ChartContainer>, "children">, ChartStateProps {
74
+ data: DashboardChartDatum[];
75
+ nameKey?: string;
76
+ valueKey?: string;
77
+ colors?: DashboardChartColors;
78
+ centerLabel?: React.ReactNode;
79
+ centerValue?: React.ReactNode;
80
+ showLegend?: boolean;
81
+ /** Inner radius as percentage string (e.g. "58%") or number */
82
+ innerRadius?: string | number;
83
+ /** Outer radius as percentage string (e.g. "82%") or number */
84
+ outerRadius?: string | number;
85
+ }
86
+ export declare function DonutBreakdownChart({ data, config, nameKey, valueKey, colors, centerLabel, centerValue, showLegend, innerRadius, outerRadius, isLoading, error, onRetry, retryLabel, emptyTitle, emptyDescription, errorTitle, errorDescription, loadingLabel, stateClassName, className, ...props }: DonutBreakdownChartProps): import("react/jsx-runtime").JSX.Element;
87
+ export interface SparklineChartProps {
88
+ /** Data array — each item must have the `dataKey` field */
89
+ data: DashboardChartDatum[];
90
+ /** Key to plot on the Y axis */
91
+ dataKey: string;
92
+ /** Color for the line/area — defaults to `var(--chart-1)` */
93
+ color?: string;
94
+ /** Show filled area under the line */
95
+ filled?: boolean;
96
+ /** Show the last data point as a dot */
97
+ showEndDot?: boolean;
98
+ /** Curve interpolation type */
99
+ curveType?: ChartCurveType;
100
+ /** Stroke width */
101
+ strokeWidth?: number;
102
+ className?: string;
103
+ }
104
+ /**
105
+ * Minimal inline sparkline chart — no axes, no grid, no tooltip.
106
+ * Ideal for embedding inside stat cards or table cells.
107
+ *
108
+ * @ai-rules
109
+ * - Use `filled` for area-style sparklines.
110
+ * - Keep `className` height small (e.g. `h-12` or `h-16`).
111
+ * - Do NOT wrap in `ChartCard` — it is designed to be inline.
112
+ */
113
+ export declare function SparklineChart({ data, dataKey, color, filled, showEndDot, curveType, strokeWidth, className, }: SparklineChartProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,118 @@
1
+ import * as React from "react";
2
+ import type { ChartStateProps, DashboardChartColors, DashboardChartDatum, DashboardChartSeries } from "./chart-primitives";
3
+ export interface RadarMetricChartProps extends ChartStateProps {
4
+ /** Data array — each item is one axis point on the radar */
5
+ data: DashboardChartDatum[];
6
+ /** Key in each datum used as the axis label */
7
+ labelKey: string;
8
+ /**
9
+ * Series to render. Each entry maps to one `<Radar>` element.
10
+ * Use a single entry for a simple radar, multiple for comparison.
11
+ */
12
+ series: DashboardChartSeries[];
13
+ /** Override colors per series key or as an ordered array */
14
+ colors?: DashboardChartColors;
15
+ /** Fill the radar polygon (default: true) */
16
+ filled?: boolean;
17
+ /** Fill opacity when `filled` is true (default: 0.25) */
18
+ fillOpacity?: number;
19
+ /** Show dots on each axis point (default: false) */
20
+ showDots?: boolean;
21
+ /** Show the polar grid lines (default: true) */
22
+ showGrid?: boolean;
23
+ /** Show the legend (default: true when multiple series) */
24
+ showLegend?: boolean;
25
+ /** Format axis tick values */
26
+ valueFormatter?: (value: number | string) => string;
27
+ className?: string;
28
+ }
29
+ export declare function RadarMetricChart({ data, labelKey, series, colors, filled, fillOpacity, showDots, showGrid, showLegend, valueFormatter, isLoading, error, onRetry, retryLabel, emptyTitle, emptyDescription, errorTitle, errorDescription, loadingLabel, stateClassName, className, }: RadarMetricChartProps): import("react/jsx-runtime").JSX.Element;
30
+ export interface PieMetricChartProps extends ChartStateProps {
31
+ /** Data array — each item is one slice */
32
+ data: DashboardChartDatum[];
33
+ /** Key in each datum used as the slice name/label */
34
+ nameKey: string;
35
+ /** Key in each datum used as the slice value */
36
+ valueKey: string;
37
+ /** Override colors as an ordered array or per-name map */
38
+ colors?: DashboardChartColors;
39
+ /** Outer radius of the pie (default: "80%") */
40
+ outerRadius?: number | string;
41
+ /** Inner radius — set > 0 to make a donut (default: 0) */
42
+ innerRadius?: number | string;
43
+ /** Show percentage labels inside/outside each slice (default: false) */
44
+ showLabels?: boolean;
45
+ /** Show the legend (default: true) */
46
+ showLegend?: boolean;
47
+ /**
48
+ * Index of the slice to "explode" (offset outward).
49
+ * Pass -1 or undefined to disable.
50
+ */
51
+ explodeIndex?: number;
52
+ /** Offset distance for the exploded slice in px (default: 12) */
53
+ explodeOffset?: number;
54
+ /** Format tooltip values */
55
+ valueFormatter?: (value: number | string) => string;
56
+ className?: string;
57
+ }
58
+ export declare function PieMetricChart({ data, nameKey, valueKey, colors, outerRadius, innerRadius, showLabels, showLegend, explodeIndex, explodeOffset, valueFormatter, isLoading, error, onRetry, retryLabel, emptyTitle, emptyDescription, errorTitle, errorDescription, loadingLabel, stateClassName, className, }: PieMetricChartProps): import("react/jsx-runtime").JSX.Element;
59
+ export interface RadialBarMetricChartProps extends ChartStateProps {
60
+ /**
61
+ * Data array. Each item should have a `name` field (for labels) and
62
+ * the `dataKey` field (for values, 0–100 for percentage-based display).
63
+ */
64
+ data: DashboardChartDatum[];
65
+ /** Key in each datum used as the bar value (default: "value") */
66
+ dataKey?: string;
67
+ /** Key in each datum used as the bar label (default: "name") */
68
+ nameKey?: string;
69
+ /** Override colors as an ordered array or per-name map */
70
+ colors?: DashboardChartColors;
71
+ /** Inner radius of the radial bar (default: "30%") */
72
+ innerRadius?: number | string;
73
+ /** Outer radius of the radial bar (default: "100%") */
74
+ outerRadius?: number | string;
75
+ /** Start angle in degrees (default: 90 — top) */
76
+ startAngle?: number;
77
+ /** End angle in degrees (default: -270 — full circle) */
78
+ endAngle?: number;
79
+ /** Show background track behind each bar (default: true) */
80
+ showBackground?: boolean;
81
+ /** Show the legend (default: true) */
82
+ showLegend?: boolean;
83
+ /** Format tooltip values */
84
+ valueFormatter?: (value: number | string) => string;
85
+ className?: string;
86
+ }
87
+ export declare function RadialBarMetricChart({ data, dataKey, nameKey, colors, innerRadius, outerRadius, startAngle, endAngle, showBackground, showLegend, valueFormatter, isLoading, error, onRetry, retryLabel, emptyTitle, emptyDescription, errorTitle, errorDescription, loadingLabel, stateClassName, className, }: RadialBarMetricChartProps): import("react/jsx-runtime").JSX.Element;
88
+ export interface GaugeChartThreshold {
89
+ /** Upper bound of this zone (0–100) */
90
+ value: number;
91
+ /** Color for this zone */
92
+ color: string;
93
+ /** Optional label for this zone */
94
+ label?: string;
95
+ }
96
+ export interface GaugeChartProps {
97
+ /** Current value (must be within [min, max]) */
98
+ value: number;
99
+ /** Minimum value (default: 0) */
100
+ min?: number;
101
+ /** Maximum value (default: 100) */
102
+ max?: number;
103
+ /**
104
+ * Color zones. Each threshold defines the upper bound of a zone.
105
+ * Zones are evaluated in order; the first zone whose `value >= current %`
106
+ * determines the active color.
107
+ * If omitted, uses `--chart-1`.
108
+ */
109
+ thresholds?: GaugeChartThreshold[];
110
+ /** Label shown below the value (e.g. "CPU Usage") */
111
+ label?: React.ReactNode;
112
+ /** Format the center value text (default: shows percentage) */
113
+ valueFormatter?: (value: number, percent: number) => string;
114
+ /** Show the needle indicator (default: true) */
115
+ showNeedle?: boolean;
116
+ className?: string;
117
+ }
118
+ export declare function GaugeChart({ value, min, max, thresholds, label, valueFormatter, showNeedle, className, }: GaugeChartProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,101 @@
1
+ import * as React from "react";
2
+ import * as RechartsPrimitive from "recharts";
3
+ declare const THEMES: {
4
+ readonly light: "";
5
+ readonly dark: ".dark";
6
+ };
7
+ export type ChartConfig = {
8
+ [k in string]: {
9
+ label?: React.ReactNode;
10
+ icon?: React.ComponentType;
11
+ } & ({
12
+ color?: string;
13
+ theme?: never;
14
+ } | {
15
+ color?: never;
16
+ theme: Record<keyof typeof THEMES, string>;
17
+ });
18
+ };
19
+ type ChartContextProps = {
20
+ config: ChartConfig;
21
+ };
22
+ export type DashboardChartDatum = Record<string, string | number | null | undefined>;
23
+ export type DashboardChartSeries = {
24
+ key: string;
25
+ label?: React.ReactNode;
26
+ type?: "bar" | "line" | "area";
27
+ stackId?: string;
28
+ yAxisId?: string;
29
+ };
30
+ export type DashboardChartColors = string[] | Record<string, string>;
31
+ export type ChartPeriod = {
32
+ value: string;
33
+ label: string;
34
+ };
35
+ export type ChartBarSize = "sm" | "md" | "lg" | "xl" | number;
36
+ /** Curve interpolation type for line and area charts */
37
+ export type ChartCurveType = "monotone" | "linear" | "step" | "stepBefore" | "stepAfter" | "natural" | "basis";
38
+ export type ChartErrorState = boolean | string | Error | React.ReactNode;
39
+ export type ChartStateProps = {
40
+ isLoading?: boolean;
41
+ error?: ChartErrorState;
42
+ onRetry?: () => void;
43
+ retryLabel?: React.ReactNode;
44
+ emptyTitle?: React.ReactNode;
45
+ emptyDescription?: React.ReactNode;
46
+ errorTitle?: React.ReactNode;
47
+ errorDescription?: React.ReactNode;
48
+ loadingLabel?: React.ReactNode;
49
+ stateClassName?: string;
50
+ };
51
+ export declare const defaultPeriods: ChartPeriod[];
52
+ export declare const defaultChartColors: string[];
53
+ export declare const chartBarSizes: Record<Exclude<ChartBarSize, number>, number>;
54
+ export declare function useChart(): ChartContextProps;
55
+ /**
56
+ * Root container for Recharts-based charts with theme-aware color injection.
57
+ *
58
+ * @description
59
+ * Wraps Recharts' `ResponsiveContainer` and injects CSS custom properties
60
+ * (`--color-*`) from a `ChartConfig` object, enabling full dark-mode
61
+ * support without hard-coded hex values in chart elements.
62
+ *
63
+ * @ai-rules
64
+ * 1. NEVER pass hex colors directly to Recharts elements (e.g., `fill="#4F46E5"`).
65
+ * Always use `fill="var(--color-keyName)"` referencing the injected CSS variables.
66
+ * 2. This wrapper is REQUIRED to use `ChartTooltipContent` and `ChartLegendContent`.
67
+ * 3. Set height via `className="h-[300px]"` on `ChartContainer`, not on Recharts components.
68
+ * 4. Do NOT add another `<ResponsiveContainer>` — it is already included inside.
69
+ */
70
+ export declare function ChartContainer({ id, className, children, config, ...props }: React.ComponentProps<"div"> & {
71
+ config: ChartConfig;
72
+ children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
73
+ }): import("react/jsx-runtime").JSX.Element;
74
+ export declare const ChartStyle: ({ id, config }: {
75
+ id: string;
76
+ config: ChartConfig;
77
+ }) => import("react/jsx-runtime").JSX.Element | null;
78
+ export declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
79
+ export declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: React.ComponentProps<typeof RechartsPrimitive.Tooltip> & React.ComponentProps<"div"> & {
80
+ hideLabel?: boolean;
81
+ hideIndicator?: boolean;
82
+ indicator?: "line" | "dot" | "dashed";
83
+ nameKey?: string;
84
+ labelKey?: string;
85
+ }): import("react/jsx-runtime").JSX.Element | null;
86
+ export declare const ChartLegend: typeof RechartsPrimitive.Legend;
87
+ export declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: React.ComponentProps<"div"> & Pick<RechartsPrimitive.LegendProps, "payload" | "verticalAlign"> & {
88
+ hideIcon?: boolean;
89
+ nameKey?: string;
90
+ }): import("react/jsx-runtime").JSX.Element | null;
91
+ export declare function getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string): ({
92
+ label?: React.ReactNode;
93
+ icon?: React.ComponentType;
94
+ } & ({
95
+ color?: string;
96
+ theme?: never;
97
+ } | {
98
+ color?: never;
99
+ theme: Record<keyof typeof THEMES, string>;
100
+ })) | undefined;
101
+ export {};
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ import { Card } from "../../card";
3
+ import type { ChartStateProps } from "./chart-primitives";
4
+ export declare function getChartState(state: ChartStateProps, hasData: boolean, className?: string): import("react/jsx-runtime").JSX.Element | null;
5
+ export interface ChartCardProps extends Omit<React.ComponentProps<typeof Card>, "title"> {
6
+ title: React.ReactNode;
7
+ description?: React.ReactNode;
8
+ action?: React.ReactNode;
9
+ footer?: React.ReactNode;
10
+ contentClassName?: string;
11
+ }
12
+ export declare function ChartCard({ title, description, action, footer, children, className, contentClassName, ...props }: ChartCardProps): import("react/jsx-runtime").JSX.Element;
13
+ /**
14
+ * Renders SVG `<defs>` with linear gradients for each series key.
15
+ * Used internally by area charts when `gradientFill` is enabled.
16
+ */
17
+ export declare function AreaGradientDefs({ seriesKeys, opacity, }: {
18
+ seriesKeys: string[];
19
+ opacity?: number;
20
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import type { ChartConfig, ChartBarSize, ChartErrorState, DashboardChartColors, DashboardChartDatum, DashboardChartSeries } from "./chart-primitives";
2
+ export declare function getChartSeries(config: ChartConfig, series?: DashboardChartSeries[]): DashboardChartSeries[];
3
+ export declare function getSeriesColor(key: string, index: number, colors?: DashboardChartColors): string;
4
+ export declare function getChartConfigWithColors(config: ChartConfig, keys: string[], colors?: DashboardChartColors): ChartConfig;
5
+ /** Build a ChartConfig from a list of keys (no pre-existing config needed). */
6
+ export declare function buildChartConfig(keys: string[], colors?: DashboardChartColors): ChartConfig;
7
+ export declare function formatTick(value: number | string): string;
8
+ export declare function defaultFilterData(data: DashboardChartDatum[], period: string): DashboardChartDatum[];
9
+ export declare function getErrorDescription(error: ChartErrorState): string | undefined;
10
+ export declare function getBarSize(barSize?: ChartBarSize): number;
11
+ export declare function hasChartData(data: DashboardChartDatum[], series: DashboardChartSeries[]): boolean;
12
+ export declare function hasPieData(data: DashboardChartDatum[], nameKey: string, valueKey: string): boolean;
@@ -0,0 +1,5 @@
1
+ export * from "./chart-primitives";
2
+ export * from "./chart-utils";
3
+ export * from "./chart-shared";
4
+ export * from "./chart-dashboard";
5
+ export * from "./chart-metric";
@@ -8,6 +8,16 @@ interface StatsCardProps extends React.HTMLAttributes<HTMLDivElement> {
8
8
  label?: string;
9
9
  };
10
10
  icon?: React.ReactNode;
11
+ /**
12
+ * Tailwind class for the icon text/foreground color.
13
+ * @default "text-muted-foreground"
14
+ */
15
+ iconColor?: string;
16
+ /**
17
+ * Tailwind class for the icon background color.
18
+ * @default "bg-muted"
19
+ */
20
+ iconBg?: string;
11
21
  }
12
22
  /**
13
23
  * KPI metric card for dashboard overview pages.
@@ -6,6 +6,10 @@ export interface BrandColors {
6
6
  primaryForegroundDark: string;
7
7
  sidebarLight: string;
8
8
  sidebarDark: string;
9
+ darkBackground: string;
10
+ darkCard: string;
11
+ darkMuted: string;
12
+ darkBorder: string;
9
13
  gradientStart: string;
10
14
  gradientEnd: string;
11
15
  gradientStartDark: string;