xertica-ui 2.1.2 → 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 (402) hide show
  1. package/CHANGELOG.md +31 -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/xertica-assistant/index.ts +2 -0
  9. package/components/assistant/xertica-assistant/use-assistant.ts +564 -0
  10. package/components/assistant/xertica-assistant/xertica-assistant.stories.tsx +200 -0
  11. package/components/assistant/xertica-assistant/xertica-assistant.tsx +183 -474
  12. package/components/blocks/card-patterns/ActivityCard.tsx +72 -72
  13. package/components/blocks/card-patterns/FeatureCard.tsx +100 -100
  14. package/components/blocks/card-patterns/NotificationCard.tsx +127 -127
  15. package/components/blocks/card-patterns/ProfileCard.tsx +84 -84
  16. package/components/blocks/card-patterns/ProjectCard.tsx +89 -89
  17. package/components/blocks/card-patterns/QuickActionCard.tsx +62 -62
  18. package/components/blocks/card-patterns/card-patterns.stories.tsx +445 -445
  19. package/components/blocks/card-patterns/index.ts +17 -17
  20. package/components/blocks/index.ts +1 -1
  21. package/components/brand/index.ts +6 -6
  22. package/components/brand/xertica-provider/XerticaProvider.tsx +48 -48
  23. package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
  24. package/components/brand/xertica-provider/xertica-provider.test.tsx +52 -52
  25. package/components/examples/MapExamples.tsx +282 -282
  26. package/components/examples/SimpleFilterableMap.tsx +191 -191
  27. package/components/examples/index.ts +51 -51
  28. package/components/figma/ImageWithFallback.tsx +27 -27
  29. package/components/hooks/index.ts +7 -7
  30. package/components/index.ts +5 -5
  31. package/components/layout/header/header.test.tsx +8 -8
  32. package/components/layout/header/header.tsx +4 -4
  33. package/components/layout/index.ts +2 -2
  34. package/components/layout/sidebar/index.ts +2 -0
  35. package/components/layout/sidebar/sidebar.mdx +1 -1
  36. package/components/layout/sidebar/sidebar.stories.tsx +160 -8
  37. package/components/layout/sidebar/sidebar.test.tsx +11 -11
  38. package/components/layout/sidebar/sidebar.tsx +610 -471
  39. package/components/layout/sidebar/use-sidebar.ts +113 -0
  40. package/components/media/FloatingMediaWrapper.tsx +11 -11
  41. package/components/media/audio-player/AudioPlayer.tsx +22 -22
  42. package/components/media/index.ts +3 -3
  43. package/components/pages/home-content/HomeContent.tsx +7 -7
  44. package/components/pages/home-content/home-content.mdx +62 -62
  45. package/components/pages/home-page/HomePage.stories.tsx +39 -39
  46. package/components/pages/home-page/HomePage.tsx +1 -1
  47. package/components/pages/home-page/home-page.mdx +53 -53
  48. package/components/pages/index.ts +8 -8
  49. package/components/pages/template-content/TemplateContent.tsx +5 -5
  50. package/components/pages/template-content/template-content.mdx +61 -61
  51. package/components/pages/template-page/TemplatePage.stories.tsx +39 -39
  52. package/components/pages/template-page/TemplatePage.tsx +5 -5
  53. package/components/pages/template-page/template-page.mdx +53 -53
  54. package/components/public-api-smoke.test.tsx +52 -52
  55. package/components/shared/assistant-utils.ts +43 -43
  56. package/components/shared/layout-constants.ts +1 -1
  57. package/components/ui/accordion/accordion.mdx +8 -8
  58. package/components/ui/accordion/accordion.stories.tsx +53 -53
  59. package/components/ui/alert/alert.mdx +8 -8
  60. package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
  61. package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
  62. package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
  63. package/components/ui/avatar/avatar.mdx +8 -8
  64. package/components/ui/badge/badge.mdx +8 -8
  65. package/components/ui/badge/badge.tsx +9 -9
  66. package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
  67. package/components/ui/button/button.mdx +8 -8
  68. package/components/ui/calendar/calendar.mdx +8 -8
  69. package/components/ui/calendar/calendar.tsx +258 -258
  70. package/components/ui/card/card.mdx +8 -8
  71. package/components/ui/card/card.stories.tsx +245 -245
  72. package/components/ui/carousel/carousel.mdx +8 -8
  73. package/components/ui/chart/chart.mdx +8 -8
  74. package/components/ui/chart/chart.stories.tsx +1303 -344
  75. package/components/ui/chart/chart.test.tsx +154 -154
  76. package/components/ui/chart/chart.tsx +2367 -1494
  77. package/components/ui/checkbox/checkbox.mdx +8 -8
  78. package/components/ui/checkbox/checkbox.stories.tsx +20 -20
  79. package/components/ui/collapsible/collapsible.mdx +8 -8
  80. package/components/ui/command/command.mdx +8 -8
  81. package/components/ui/context-menu/context-menu.mdx +8 -8
  82. package/components/ui/dialog/dialog.mdx +8 -8
  83. package/components/ui/drawer/drawer.mdx +8 -8
  84. package/components/ui/dropdown-menu/dropdown-menu.mdx +8 -8
  85. package/components/ui/empty/empty.mdx +8 -8
  86. package/components/ui/file-upload/file-upload.mdx +8 -8
  87. package/components/ui/file-upload/file-upload.stories.tsx +100 -0
  88. package/components/ui/file-upload/file-upload.tsx +14 -74
  89. package/components/ui/file-upload/index.ts +1 -0
  90. package/components/ui/file-upload/use-file-upload.ts +181 -0
  91. package/components/ui/google-maps-loader/google-maps-loader.tsx +2 -2
  92. package/components/ui/hover-card/hover-card.mdx +8 -8
  93. package/components/ui/input/input.mdx +8 -8
  94. package/components/ui/input-otp/input-otp.mdx +8 -8
  95. package/components/ui/input-otp/input-otp.stories.tsx +6 -6
  96. package/components/ui/label/label.mdx +8 -8
  97. package/components/ui/map/map.mdx +8 -8
  98. package/components/ui/map/map.stories.tsx +51 -51
  99. package/components/ui/map/map.tsx +2 -2
  100. package/components/ui/menubar/menubar.mdx +8 -8
  101. package/components/ui/navigation-menu/navigation-menu.mdx +8 -8
  102. package/components/ui/notification-badge/notification-badge.mdx +8 -8
  103. package/components/ui/pagination/index.ts +2 -0
  104. package/components/ui/pagination/pagination.mdx +8 -8
  105. package/components/ui/pagination/pagination.stories.tsx +94 -0
  106. package/components/ui/pagination/use-pagination.ts +194 -0
  107. package/components/ui/popover/popover.mdx +8 -8
  108. package/components/ui/progress/progress.mdx +8 -8
  109. package/components/ui/progress/progress.tsx +68 -68
  110. package/components/ui/radio-group/radio-group.mdx +8 -8
  111. package/components/ui/rating/rating.mdx +8 -8
  112. package/components/ui/resizable/resizable.mdx +8 -8
  113. package/components/ui/rich-text-editor/index.ts +2 -0
  114. package/components/ui/rich-text-editor/rich-text-editor.stories.tsx +129 -1
  115. package/components/ui/rich-text-editor/rich-text-editor.tsx +86 -305
  116. package/components/ui/rich-text-editor/use-rich-text-editor.ts +439 -0
  117. package/components/ui/route-map/route-map.mdx +8 -8
  118. package/components/ui/route-map/route-map.stories.tsx +54 -54
  119. package/components/ui/route-map/route-map.tsx +2 -2
  120. package/components/ui/scroll-area/scroll-area.mdx +8 -8
  121. package/components/ui/search/search.mdx +8 -8
  122. package/components/ui/select/select.mdx +8 -8
  123. package/components/ui/select/select.stories.tsx +9 -9
  124. package/components/ui/separator/separator.mdx +8 -8
  125. package/components/ui/sheet/sheet.mdx +8 -8
  126. package/components/ui/sheet/sheet.stories.tsx +95 -95
  127. package/components/ui/simple-map/simple-map.mdx +8 -8
  128. package/components/ui/simple-map/simple-map.stories.tsx +48 -48
  129. package/components/ui/skeleton/skeleton.mdx +8 -8
  130. package/components/ui/slider/slider.mdx +8 -8
  131. package/components/ui/sonner/sonner.mdx +8 -8
  132. package/components/ui/stats-card/stats-card.mdx +8 -8
  133. package/components/ui/stepper/index.ts +3 -1
  134. package/components/ui/stepper/stepper.mdx +8 -8
  135. package/components/ui/stepper/stepper.stories.tsx +116 -0
  136. package/components/ui/stepper/stepper.tsx +4 -4
  137. package/components/ui/stepper/use-stepper.ts +137 -0
  138. package/components/ui/switch/switch.mdx +8 -8
  139. package/components/ui/switch/switch.stories.tsx +20 -20
  140. package/components/ui/table/table.mdx +8 -8
  141. package/components/ui/tabs/tabs.mdx +8 -8
  142. package/components/ui/tabs/tabs.stories.tsx +26 -26
  143. package/components/ui/textarea/textarea.mdx +8 -8
  144. package/components/ui/timeline/timeline.mdx +8 -8
  145. package/components/ui/toggle/toggle.mdx +8 -8
  146. package/components/ui/toggle-group/toggle-group.mdx +8 -8
  147. package/components/ui/tooltip/tooltip.mdx +8 -8
  148. package/components/ui/tree-view/index.ts +4 -1
  149. package/components/ui/tree-view/tree-view.mdx +8 -8
  150. package/components/ui/tree-view/tree-view.stories.tsx +110 -4
  151. package/components/ui/tree-view/tree-view.tsx +17 -125
  152. package/components/ui/tree-view/use-tree-view.ts +229 -0
  153. package/components.json +1512 -1512
  154. package/contexts/ApiKeyContext.tsx +72 -72
  155. package/contexts/BrandColorsContext.tsx +26 -26
  156. package/contexts/LanguageContext.tsx +13 -13
  157. package/contexts/LayoutContext.test.tsx +11 -11
  158. package/contexts/LayoutContext.tsx +29 -29
  159. package/contexts/ThemeContext.tsx +26 -26
  160. package/contexts/theme-data.ts +4 -4
  161. package/dist/{AssistantChart-CVzmmhx4.js → AssistantChart-C_hwFRRr.js} +4 -4
  162. package/dist/{AssistantChart-BAx9VQvb.cjs → AssistantChart-CldVCVDe.cjs} +311 -94
  163. package/dist/{AssistantChart-CVko2A1W.js → AssistantChart-Cu3m7RBo.js} +314 -97
  164. package/dist/{AssistantChart-9w31gdAb.cjs → AssistantChart-DoZCyS5r.cjs} +4 -4
  165. package/dist/AudioPlayer-B1lt5cPl.cjs +989 -0
  166. package/dist/AudioPlayer-BZ7bibzU.cjs +982 -0
  167. package/dist/AudioPlayer-C12BjQBV.cjs +997 -0
  168. package/dist/AudioPlayer-DMcG_c7L.js +990 -0
  169. package/dist/AudioPlayer-DcFKRJE_.js +998 -0
  170. package/dist/AudioPlayer-e8LfNoqO.js +983 -0
  171. package/dist/{xertica-assistant-Qp3ydksa.cjs → CodeBlock-7TTgmdGG.cjs} +263 -51
  172. package/dist/{xertica-assistant-gnCJdcZY.js → CodeBlock-BeSt1h5P.js} +219 -7
  173. package/dist/CodeBlock-BgfYL_rD.cjs +2094 -0
  174. package/dist/CodeBlock-BlcqlA9M.cjs +2094 -0
  175. package/dist/CodeBlock-Bnmeu5ez.cjs +2094 -0
  176. package/dist/CodeBlock-BtfPlbAI.js +2078 -0
  177. package/dist/CodeBlock-CIySIuYr.js +2078 -0
  178. package/dist/CodeBlock-CuPtUM-7.cjs +2094 -0
  179. package/dist/CodeBlock-D6ffWXgc.js +2078 -0
  180. package/dist/CodeBlock-D8dcwbit.cjs +2094 -0
  181. package/dist/CodeBlock-DMZrFnlw.cjs +2094 -0
  182. package/dist/CodeBlock-DlBehYN8.js +2078 -0
  183. package/dist/CodeBlock-DnYNI8rQ.js +2078 -0
  184. package/dist/CodeBlock-DvKWbSnE.cjs +2094 -0
  185. package/dist/CodeBlock-DwMCfkFY.js +2078 -0
  186. package/dist/CodeBlock-Dy6CNYyj.js +2078 -0
  187. package/dist/CodeBlock-U1pPOQI7.cjs +2094 -0
  188. package/dist/CodeBlock-f_GpNhEB.js +2078 -0
  189. package/dist/CodeBlock-oB6u8nI1.js +2078 -0
  190. package/dist/CodeBlock-tZC31B73.cjs +2094 -0
  191. package/dist/ImageWithFallback-CGtidP6B.cjs +4542 -0
  192. package/dist/ImageWithFallback-lsg3pdFg.js +4508 -0
  193. package/dist/LanguageSelector-B5YfbHra.js +231 -0
  194. package/dist/LanguageSelector-D6uacAIM.cjs +230 -0
  195. package/dist/LayoutContext-BAql6ZRY.js +97 -0
  196. package/dist/LayoutContext-BvK-ggDa.cjs +96 -0
  197. package/dist/ThemeContext-BoH4NLfN.js +734 -0
  198. package/dist/{ThemeContext-BbBNoFTG.js → ThemeContext-C2EwAPDt.js} +2 -2
  199. package/dist/ThemeContext-r69W20Xg.cjs +733 -0
  200. package/dist/{ThemeContext-Cmr8Ex8H.cjs → ThemeContext-vTjumZeM.cjs} +2 -2
  201. package/dist/{VerifyEmailPage-BE-L9mB7.js → VerifyEmailPage-C0c2e5n0.js} +7 -7
  202. package/dist/{VerifyEmailPage-DMBh4NM9.cjs → VerifyEmailPage-CYXtbKi3.cjs} +1 -1
  203. package/dist/{VerifyEmailPage-CR7kb5df.cjs → VerifyEmailPage-Cwi3kbol.cjs} +7 -7
  204. package/dist/{VerifyEmailPage-CdYPSJoO.js → VerifyEmailPage-DvMLZgFt.js} +1 -1
  205. package/dist/XerticaOrbe-KL1RBHzw.cjs +1354 -0
  206. package/dist/XerticaOrbe-zwS1p2a8.js +1355 -0
  207. package/dist/XerticaProvider-6btlAlzc.js +17 -0
  208. package/dist/XerticaProvider-BNoNOxQ5.cjs +16 -0
  209. package/dist/XerticaProvider-BlY2limY.cjs +38 -0
  210. package/dist/{XerticaProvider-BITjgC5p.js → XerticaProvider-CEoWMTxu.js} +2 -2
  211. package/dist/{XerticaProvider-By8q3Roe.cjs → XerticaProvider-CllrbMEJ.cjs} +2 -2
  212. package/dist/XerticaProvider-DDuiIcKo.js +39 -0
  213. package/dist/XerticaProvider-cI9hSs27.cjs +38 -0
  214. package/dist/XerticaProvider-hSwhNQex.js +39 -0
  215. package/dist/{alert-dialog-yckpaOpy.cjs → alert-dialog-DSKByiKZ.cjs} +3 -3
  216. package/dist/{alert-dialog-iDe5VE5o.js → alert-dialog-s-vmNkJ_.js} +3 -3
  217. package/dist/assistant.cjs.js +2 -1
  218. package/dist/assistant.es.js +3 -2
  219. package/dist/brand.cjs.js +1 -1
  220. package/dist/brand.es.js +1 -1
  221. package/dist/breadcrumb-CqJ7bHY5.js +161 -0
  222. package/dist/breadcrumb-m9Hb2_XN.cjs +177 -0
  223. package/dist/cli.js +14 -8
  224. package/dist/components/assistant/xertica-assistant/index.d.ts +2 -0
  225. package/dist/components/assistant/xertica-assistant/use-assistant.d.ts +126 -0
  226. package/dist/components/assistant/xertica-assistant/xertica-assistant.d.ts +7 -2
  227. package/dist/components/blocks/audio-player/AudioPlayer.d.ts +35 -0
  228. package/dist/components/blocks/audio-player/index.d.ts +1 -0
  229. package/dist/components/blocks/document-editor/DocumentEditor.d.ts +26 -0
  230. package/dist/components/blocks/document-editor/index.d.ts +1 -0
  231. package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +41 -0
  232. package/dist/components/blocks/podcast-player/index.d.ts +1 -0
  233. package/dist/components/layout/sidebar/index.d.ts +2 -0
  234. package/dist/components/layout/sidebar/sidebar.d.ts +80 -0
  235. package/dist/components/layout/sidebar/use-sidebar.d.ts +22 -0
  236. package/dist/components/shared/layout-constants.d.ts +1 -1
  237. package/dist/components/ui/button/button.d.ts +1 -1
  238. package/dist/components/ui/chart/chart.d.ts +162 -5
  239. package/dist/components/ui/file-upload/file-upload.d.ts +2 -0
  240. package/dist/components/ui/file-upload/index.d.ts +1 -0
  241. package/dist/components/ui/file-upload/use-file-upload.d.ts +49 -0
  242. package/dist/components/ui/pagination/index.d.ts +2 -0
  243. package/dist/components/ui/pagination/use-pagination.d.ts +78 -0
  244. package/dist/components/ui/rich-text-editor/index.d.ts +2 -0
  245. package/dist/components/ui/rich-text-editor/use-rich-text-editor.d.ts +107 -0
  246. package/dist/components/ui/stepper/index.d.ts +3 -1
  247. package/dist/components/ui/stepper/stepper.d.ts +2 -2
  248. package/dist/components/ui/stepper/use-stepper.d.ts +60 -0
  249. package/dist/components/ui/tree-view/index.d.ts +4 -1
  250. package/dist/components/ui/tree-view/tree-view.d.ts +4 -6
  251. package/dist/components/ui/tree-view/use-tree-view.d.ts +60 -0
  252. package/dist/dropdown-menu-BDB5CmQs.cjs +247 -0
  253. package/dist/dropdown-menu-DQidbKBD.js +231 -0
  254. package/dist/google-maps-loader-BFWp6VPd.js +287 -0
  255. package/dist/{google-maps-loader-t2IlYBzw.js → google-maps-loader-CTYySAun.js} +4 -0
  256. package/dist/{google-maps-loader-BqsYL48U.cjs → google-maps-loader-Y-QkD-Li.cjs} +5 -0
  257. package/dist/google-maps-loader-eS3uQ5TA.cjs +287 -0
  258. package/dist/header-Cgy6vYPk.cjs +731 -0
  259. package/dist/header-DRlT4jgI.js +715 -0
  260. package/dist/header-Dux00SI4.cjs +731 -0
  261. package/dist/header-EkGKXPsD.js +715 -0
  262. package/dist/header-WfEywpyc.cjs +731 -0
  263. package/dist/header-tifNQn2U.js +715 -0
  264. package/dist/hooks.cjs.js +1 -1
  265. package/dist/hooks.es.js +1 -1
  266. package/dist/index-BhapVLVj.js +8 -0
  267. package/dist/{index-D3RLKRAs.cjs → index-COtD8bRW.cjs} +1 -1
  268. package/dist/index-D6fxYEY8.cjs +7 -0
  269. package/dist/index-DW5tYe26.js +8 -0
  270. package/dist/index.cjs.js +19 -8
  271. package/dist/index.es.js +39 -28
  272. package/dist/index.umd.js +1043 -470
  273. package/dist/input-2R4loU86.js +127 -0
  274. package/dist/input-DWANSKGb.cjs +145 -0
  275. package/dist/layout.cjs.js +89 -1
  276. package/dist/layout.es.js +90 -2
  277. package/dist/pages.cjs.js +1 -1
  278. package/dist/pages.es.js +1 -1
  279. package/dist/rich-text-editor-0mraWT5y.cjs +2376 -0
  280. package/dist/rich-text-editor-B6jMRLzk.cjs +1939 -0
  281. package/dist/rich-text-editor-B8_oYcIR.js +1730 -0
  282. package/dist/rich-text-editor-B9UbSXNb.js +1203 -0
  283. package/dist/rich-text-editor-BYuRBNBU.js +2373 -0
  284. package/dist/rich-text-editor-Bb9pySTs.cjs +2374 -0
  285. package/dist/rich-text-editor-BcL6L3cm.cjs +2374 -0
  286. package/dist/rich-text-editor-BoVZYtTs.cjs +2391 -0
  287. package/dist/rich-text-editor-CPV1lEPH.cjs +1748 -0
  288. package/dist/rich-text-editor-CoKqbCtu.cjs +1799 -0
  289. package/dist/rich-text-editor-Cw56T_mB.js +2356 -0
  290. package/dist/rich-text-editor-Cyt8qs2b.js +1921 -0
  291. package/dist/rich-text-editor-D6H84OcX.cjs +1220 -0
  292. package/dist/rich-text-editor-D76gD-QI.js +2328 -0
  293. package/dist/rich-text-editor-DKkokOnA.js +1781 -0
  294. package/dist/rich-text-editor-DNsdpN64.cjs +2359 -0
  295. package/dist/rich-text-editor-DfG8bCyY.js +2358 -0
  296. package/dist/rich-text-editor-DgF8s7xW.js +2949 -0
  297. package/dist/rich-text-editor-Dxjw31Z4.js +2341 -0
  298. package/dist/rich-text-editor-DzP0Epmb.js +2356 -0
  299. package/dist/rich-text-editor-mWoaSCE4.cjs +2966 -0
  300. package/dist/rich-text-editor-skplNlBM.cjs +2345 -0
  301. package/dist/select-Bkbr0f-Z.cjs +162 -0
  302. package/dist/select-CvIVdX2n.js +145 -0
  303. package/dist/sidebar-CK_0ZQHj.cjs +803 -0
  304. package/dist/sidebar-CUuOvYhK.js +787 -0
  305. package/dist/slider-Bc5Hd0y1.js +56 -0
  306. package/dist/slider-N7hFFj6X.cjs +73 -0
  307. package/dist/tooltip-Ded96neP.cjs +137 -0
  308. package/dist/tooltip-HDOoD2-0.js +120 -0
  309. package/dist/ui.cjs.js +14 -4
  310. package/dist/ui.es.js +26 -16
  311. package/dist/use-mobile-B0hNy_Y6.cjs +4303 -0
  312. package/dist/use-mobile-BXuYROXM.js +4202 -0
  313. package/dist/use-mobile-Bbd51ASU.cjs +4392 -0
  314. package/dist/use-mobile-Bk6CX-TC.js +4359 -0
  315. package/dist/use-mobile-BvYdisLP.js +4202 -0
  316. package/dist/use-mobile-BzuxjzNX.cjs +4392 -0
  317. package/dist/use-mobile-CG2-SdXV.cjs +4235 -0
  318. package/dist/use-mobile-CKb5pqTs.js +4269 -0
  319. package/dist/use-mobile-CYuAuGDl.js +4202 -0
  320. package/dist/use-mobile-CaENcqm-.js +4508 -0
  321. package/dist/use-mobile-CbrYgJGJ.js +4203 -0
  322. package/dist/use-mobile-DMOvImGQ.cjs +4542 -0
  323. package/dist/use-mobile-DRB3BQgD.cjs +4235 -0
  324. package/dist/use-mobile-DZvv7QMR.js +4359 -0
  325. package/dist/use-mobile-DdI_TXam.cjs +4235 -0
  326. package/dist/use-mobile-DlceKf8a.js +4359 -0
  327. package/dist/use-mobile-DsOnow1o.cjs +4236 -0
  328. package/dist/use-mobile-Kcj6jSnK.cjs +4392 -0
  329. package/dist/use-mobile-bnKcua_i.js +4202 -0
  330. package/dist/use-mobile-ncXBeE2z.cjs +4235 -0
  331. package/dist/{xertica-assistant-B1IaHXnB.cjs → xertica-assistant-dyP7KHM5.cjs} +533 -392
  332. package/dist/{xertica-assistant-DPsESB6t.js → xertica-assistant-yX1CFBBo.js} +535 -394
  333. package/dist/xertica-ui.css +2 -2
  334. package/docs/ai-usage.md +28 -10
  335. package/docs/architecture.md +76 -0
  336. package/docs/components/assistant.md +159 -0
  337. package/docs/components/calendar.md +154 -154
  338. package/docs/components/card-patterns.md +337 -337
  339. package/docs/components/card.md +235 -235
  340. package/docs/components/chart.md +354 -39
  341. package/docs/components/file-upload.md +119 -2
  342. package/docs/components/map.md +84 -84
  343. package/docs/components/pagination.md +187 -0
  344. package/docs/components/rich-text-editor.md +164 -0
  345. package/docs/components/sidebar.md +153 -4
  346. package/docs/components/stepper.md +157 -12
  347. package/docs/components/tree-view.md +164 -6
  348. package/docs/components/xertica-provider.md +24 -24
  349. package/docs/decision-tree.md +287 -287
  350. package/docs/getting-started.md +1 -1
  351. package/docs/guidelines.md +14 -8
  352. package/docs/layout.md +2 -2
  353. package/docs/llms.md +4 -4
  354. package/guidelines/Guidelines.md +252 -250
  355. package/hooks/useTheme.ts +3 -3
  356. package/imports/Podcast.tsx +388 -388
  357. package/imports/XerticaAi.tsx +45 -45
  358. package/imports/XerticaX.tsx +19 -19
  359. package/imports/svg-aueiaqngck.ts +11 -11
  360. package/imports/svg-v9krss1ozd.ts +16 -16
  361. package/imports/svg-vhrdofe3qe.ts +5 -5
  362. package/llms-compact.txt +327 -327
  363. package/llms.txt +160 -160
  364. package/package.json +203 -203
  365. package/styles/xertica/app-overrides/chat.css +61 -61
  366. package/styles/xertica/app-overrides/scrollbar.css +33 -33
  367. package/styles/xertica/integrations/google-maps.css +76 -76
  368. package/styles/xertica/integrations/sonner.css +73 -73
  369. package/styles/xertica/tokens.css +41 -12
  370. package/templates/CLAUDE.md +182 -172
  371. package/templates/guidelines/Guidelines.md +325 -313
  372. package/templates/package.json +3 -3
  373. package/templates/src/features/auth/index.ts +4 -4
  374. package/templates/src/features/auth/ui/AuthPageShell.tsx +34 -34
  375. package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +70 -70
  376. package/templates/src/features/auth/ui/LoginContent.tsx +90 -90
  377. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +151 -151
  378. package/templates/src/features/auth/ui/SocialLoginButtons.tsx +59 -59
  379. package/templates/src/features/auth/ui/VerifyEmailContent.tsx +82 -82
  380. package/templates/src/features/home/index.ts +1 -1
  381. package/templates/src/features/home/ui/HomeContent.tsx +100 -100
  382. package/templates/src/features/template/index.ts +5 -5
  383. package/templates/src/features/template/ui/CrudTemplate.tsx +3 -3
  384. package/templates/src/features/template/ui/DashboardTemplate.tsx +3 -3
  385. package/templates/src/features/template/ui/FormTemplate.tsx +120 -120
  386. package/templates/src/features/template/ui/LoginTemplate.tsx +3 -3
  387. package/templates/src/pages/AssistantPage.tsx +328 -328
  388. package/templates/src/pages/ForgotPasswordPage.tsx +6 -6
  389. package/templates/src/pages/HomePage.tsx +57 -57
  390. package/templates/src/pages/LoginPage.tsx +10 -10
  391. package/templates/src/pages/ResetPasswordPage.tsx +6 -6
  392. package/templates/src/pages/TemplatePage.tsx +30 -30
  393. package/templates/src/pages/VerifyEmailPage.tsx +6 -6
  394. package/templates/src/shared/config/navigation.ts +20 -20
  395. package/templates/src/shared/lib/auth.ts +20 -20
  396. package/templates/src/shared/types/auth.ts +3 -3
  397. package/templates/src/styles/xertica/tokens.css +39 -10
  398. package/templates/tsconfig.json +5 -5
  399. package/utils/gemini.ts +140 -140
  400. package/dist/VerifyEmailPage-Bae2cBXT.cjs +0 -2827
  401. package/dist/VerifyEmailPage-CbgjOF0v.js +0 -2828
  402. package/dist/index-CkTUgOwX.js +0 -8
@@ -1,445 +1,445 @@
1
- import type { Meta, StoryObj } from "@storybook/react"
2
- import React from "react"
3
- import {
4
- BarChart2, Bell, Briefcase, Download, FileText,
5
- Globe, LayoutDashboard, Lock, MoreHorizontal, Package,
6
- Plus, RefreshCw, Share2, Shield, Sparkles, Users, Zap,
7
- } from "lucide-react"
8
- import { Button } from "../../ui/button"
9
- import { ChartCard, ChartConfig, DashboardBarChart, DashboardLineChart } from "../../ui/chart"
10
- import { ActivityCard } from "./ActivityCard"
11
- import { FeatureCard } from "./FeatureCard"
12
- import { NotificationCard } from "./NotificationCard"
13
- import { ProfileCard } from "./ProfileCard"
14
- import { ProjectCard } from "./ProjectCard"
15
- import { QuickActionCard } from "./QuickActionCard"
16
-
17
- const meta: Meta = {
18
- title: "Blocks/Card Patterns",
19
- decorators: [
20
- (Story) => (
21
- <div className="bg-muted rounded-xl p-8 w-full flex items-start justify-center">
22
- <Story />
23
- </div>
24
- ),
25
- ],
26
- }
27
- export default meta
28
-
29
- // ─── ActivityCard ─────────────────────────────────────────────────────────────
30
-
31
- const ACTIVITY_ITEMS = [
32
- { id: "1", user: { name: "Ana Souza", initials: "AS" }, action: "criou o projeto", target: "Xertica Dashboard", time: "há 2 min", type: "create" as const },
33
- { id: "2", user: { name: "Bruno Lima", initials: "BL" }, action: "atualizou", target: "componente Button", time: "há 8 min", type: "update" as const },
34
- { id: "3", user: { name: "Carla Rocha", initials: "CR" }, action: "comentou em", target: "PR #42", time: "há 15 min", type: "comment" as const },
35
- { id: "4", user: { name: "Diego Ferraz", initials: "DF" }, action: "fez deploy de", target: "v2.1.0", time: "há 1h", type: "deploy" as const },
36
- { id: "5", user: { name: "Elena Moura", initials: "EM" }, action: "removeu", target: "badge legado", time: "há 2h", type: "delete" as const },
37
- ]
38
-
39
- export const Activity: StoryObj = {
40
- render: () => (
41
- <ActivityCard
42
- items={ACTIVITY_ITEMS}
43
- action={<Button variant="ghost" size="sm"><MoreHorizontal className="size-4" /></Button>}
44
- className="max-w-md"
45
- />
46
- ),
47
- }
48
-
49
- // ─── ProfileCard ──────────────────────────────────────────────────────────────
50
-
51
- export const Profile: StoryObj = {
52
- render: () => (
53
- <ProfileCard
54
- name="Ana Souza"
55
- role="Senior Frontend Engineer"
56
- department="Design System"
57
- initials="AS"
58
- status="online"
59
- stats={[
60
- { label: "Projetos", value: 12 },
61
- { label: "Commits", value: 348 },
62
- { label: "Reviews", value: 57 },
63
- ]}
64
- primaryAction={{ label: "Ver Perfil" }}
65
- secondaryAction={{ label: "Mensagem" }}
66
- className="w-64"
67
- />
68
- ),
69
- }
70
-
71
- // ─── ProjectCard ──────────────────────────────────────────────────────────────
72
-
73
- const MEMBERS = [
74
- { name: "Ana", initials: "AS" },
75
- { name: "Bruno", initials: "BL" },
76
- { name: "Carla", initials: "CR" },
77
- { name: "Diego", initials: "DF" },
78
- { name: "Elena", initials: "EM" },
79
- ]
80
-
81
- export const Project: StoryObj = {
82
- render: () => (
83
- <div className="grid gap-4 md:grid-cols-2 w-full max-w-2xl">
84
- <ProjectCard
85
- title="Xertica Dashboard v3"
86
- description="Redesign completo do painel com novos componentes."
87
- status="active"
88
- progress={68}
89
- dueDate="Vence em 12 dias"
90
- members={MEMBERS}
91
- />
92
- <ProjectCard
93
- title="Design System Tokens"
94
- description="Migração dos tokens de design para CSS variables."
95
- status="review"
96
- progress={91}
97
- dueDate="Vence amanhã"
98
- members={MEMBERS.slice(0, 2)}
99
- />
100
- <ProjectCard
101
- title="App Mobile"
102
- description="Versão móvel do Xertica com React Native."
103
- status="at-risk"
104
- progress={34}
105
- dueDate="Atrasado 3 dias"
106
- members={MEMBERS.slice(0, 3)}
107
- />
108
- <ProjectCard
109
- title="Onboarding Flow"
110
- description="Fluxo de cadastro e primeiros passos."
111
- status="done"
112
- progress={100}
113
- dueDate="Entregue"
114
- members={MEMBERS.slice(0, 4)}
115
- />
116
- </div>
117
- ),
118
- }
119
-
120
- // ─── QuickActionCard ──────────────────────────────────────────────────────────
121
-
122
- export const QuickActions: StoryObj = {
123
- render: () => (
124
- <div className="grid gap-4 grid-cols-2 md:grid-cols-3 max-w-2xl w-full">
125
- <QuickActionCard
126
- title="Novo Relatório"
127
- description="Gere relatórios personalizados de métricas."
128
- icon={<FileText className="size-5" />}
129
- actionLabel="Criar Relatório"
130
- />
131
- <QuickActionCard
132
- title="Convidar Membro"
133
- description="Adicione novos colaboradores ao workspace."
134
- icon={<Users className="size-5" />}
135
- actionLabel="Convidar"
136
- actionVariant="outline"
137
- badge="Novo"
138
- badgeVariant="success"
139
- />
140
- <QuickActionCard
141
- title="Exportar Dados"
142
- description="Exporte suas métricas em CSV ou JSON."
143
- icon={<Download className="size-5" />}
144
- actionLabel="Exportar"
145
- actionVariant="secondary"
146
- />
147
- <QuickActionCard
148
- title="Automação"
149
- description="Configure gatilhos e ações automáticas."
150
- icon={<Zap className="size-5" />}
151
- actionLabel="Configurar"
152
- badge="Pro"
153
- badgeVariant="warning"
154
- />
155
- <QuickActionCard
156
- title="Compartilhar"
157
- description="Compartilhe o dashboard com sua equipe."
158
- icon={<Share2 className="size-5" />}
159
- actionLabel="Compartilhar"
160
- actionVariant="outline"
161
- />
162
- <QuickActionCard
163
- title="Novo Projeto"
164
- description="Inicie um projeto a partir de um template."
165
- icon={<Plus className="size-5" />}
166
- actionLabel="Criar Projeto"
167
- badge="Beta"
168
- badgeVariant="info"
169
- />
170
- </div>
171
- ),
172
- }
173
-
174
- // ─── NotificationCard ─────────────────────────────────────────────────────────
175
-
176
- const NOTIFICATIONS = [
177
- { id: "1", title: "Deploy concluído", message: "v2.1.0 foi publicado com sucesso em produção.", time: "há 2 min", read: false, type: "success" as const },
178
- { id: "2", title: "Revisão solicitada", message: "Ana pediu revisão no PR #42: Novos tokens de cor.", time: "há 10 min", read: false, type: "info" as const },
179
- { id: "3", title: "Erro em produção", message: "Serviço de auth com falha intermitente — 503.", time: "há 1h", read: false, type: "error" as const },
180
- { id: "4", title: "Licença expirando", message: "Sua licença Pro expira em 7 dias. Renove para continuar.", time: "há 3h", read: true, type: "warning" as const },
181
- ]
182
-
183
- export const Notifications: StoryObj = {
184
- render: () => (
185
- <NotificationCard
186
- items={NOTIFICATIONS}
187
- onMarkAllRead={() => {}}
188
- onViewAll={() => {}}
189
- className="max-w-sm"
190
- />
191
- ),
192
- }
193
-
194
- // ─── ChartCard ────────────────────────────────────────────────────────────────
195
-
196
- const REVENUE_DATA = [
197
- { month: "Jan", receita: 18000, despesa: 12000 },
198
- { month: "Fev", receita: 22000, despesa: 14000 },
199
- { month: "Mar", receita: 19500, despesa: 13500 },
200
- { month: "Abr", receita: 27000, despesa: 15000 },
201
- { month: "Mai", receita: 31000, despesa: 17500 },
202
- { month: "Jun", receita: 28500, despesa: 16000 },
203
- ]
204
-
205
- const REVENUE_CONFIG: ChartConfig = {
206
- receita: { label: "Receita", color: "var(--chart-1)" },
207
- despesa: { label: "Despesa", color: "var(--chart-5)" },
208
- }
209
-
210
- const CHART_SERIES = [
211
- { key: "receita", label: "Receita" },
212
- { key: "despesa", label: "Despesa" },
213
- ]
214
-
215
- export const Chart: StoryObj = {
216
- render: () => (
217
- <ChartCard
218
- title="Receita vs Despesa"
219
- description="Últimos 6 meses"
220
- action={
221
- <Button variant="ghost" size="sm">
222
- <RefreshCw className="size-4" />
223
- </Button>
224
- }
225
- footer="Dados atualizados em tempo real via API financeira."
226
- className="max-w-xl w-full"
227
- contentClassName="h-[260px]"
228
- >
229
- <DashboardBarChart
230
- data={REVENUE_DATA}
231
- config={REVENUE_CONFIG}
232
- series={CHART_SERIES}
233
- indexKey="month"
234
- barSize="md"
235
- className="h-full w-full"
236
- />
237
- </ChartCard>
238
- ),
239
- }
240
-
241
- // ─── Dashboard completo ───────────────────────────────────────────────────────
242
-
243
- const LINE_DATA = [
244
- { dia: "Seg", usuarios: 240 },
245
- { dia: "Ter", usuarios: 380 },
246
- { dia: "Qua", usuarios: 310 },
247
- { dia: "Qui", usuarios: 470 },
248
- { dia: "Sex", usuarios: 520 },
249
- { dia: "Sáb", usuarios: 290 },
250
- { dia: "Dom", usuarios: 180 },
251
- ]
252
-
253
- const LINE_CONFIG: ChartConfig = {
254
- usuarios: { label: "Usuários", color: "var(--chart-1)" },
255
- }
256
-
257
- export const DashboardLayout: StoryObj = {
258
- render: () => (
259
- <div className="grid gap-4 w-full max-w-5xl">
260
- <div className="grid gap-4 md:grid-cols-3">
261
- <QuickActionCard
262
- title="Novo Projeto"
263
- description="Inicie a partir de um template."
264
- icon={<Briefcase className="size-5" />}
265
- actionLabel="Criar"
266
- />
267
- <QuickActionCard
268
- title="Convidar Equipe"
269
- description="Adicione membros ao workspace."
270
- icon={<Users className="size-5" />}
271
- actionLabel="Convidar"
272
- actionVariant="outline"
273
- />
274
- <QuickActionCard
275
- title="Ver Relatórios"
276
- description="Métricas e KPIs do período."
277
- icon={<BarChart2 className="size-5" />}
278
- actionLabel="Abrir"
279
- actionVariant="secondary"
280
- badge="Novo"
281
- badgeVariant="success"
282
- />
283
- </div>
284
-
285
- <div className="grid gap-4 md:grid-cols-3">
286
- <div className="md:col-span-2">
287
- <ChartCard
288
- title="Usuários Ativos"
289
- description="Esta semana"
290
- contentClassName="h-[220px]"
291
- >
292
- <DashboardLineChart
293
- data={LINE_DATA}
294
- config={LINE_CONFIG}
295
- series={[{ key: "usuarios", label: "Usuários" }]}
296
- indexKey="dia"
297
- className="h-full w-full"
298
- />
299
- </ChartCard>
300
- </div>
301
- <NotificationCard
302
- title="Alertas"
303
- items={NOTIFICATIONS.slice(0, 3)}
304
- onViewAll={() => {}}
305
- />
306
- </div>
307
-
308
- <div className="grid gap-4 md:grid-cols-2">
309
- <ActivityCard
310
- items={ACTIVITY_ITEMS}
311
- className="h-full"
312
- />
313
- <div className="grid gap-4">
314
- <ProfileCard
315
- name="Ana Souza"
316
- role="Product Designer"
317
- initials="AS"
318
- status="online"
319
- stats={[
320
- { label: "Projetos", value: 12 },
321
- { label: "Tarefas", value: 34 },
322
- { label: "Reviews", value: 8 },
323
- ]}
324
- />
325
- <ProjectCard
326
- title="Xertica Dashboard v3"
327
- status="active"
328
- progress={68}
329
- dueDate="12 dias restantes"
330
- members={MEMBERS.slice(0, 3)}
331
- />
332
- </div>
333
- </div>
334
- </div>
335
- ),
336
- }
337
-
338
- // ─── FeatureCard ──────────────────────────────────────────────────────────────
339
-
340
- export const Feature: StoryObj = {
341
- render: () => (
342
- <FeatureCard
343
- title="Template CLI"
344
- description="Página de template pronta para uso CLI com todos os componentes configurados."
345
- icon={<FileText />}
346
- color="chart-2"
347
- badge="Novo"
348
- actionLabel="Visualizar"
349
- />
350
- ),
351
- }
352
-
353
- export const FeatureColors: StoryObj = {
354
- render: () => (
355
- <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 w-full max-w-4xl">
356
- <FeatureCard
357
- title="Dashboard"
358
- description="Visualize métricas e KPIs em tempo real com gráficos interativos."
359
- icon={<LayoutDashboard />}
360
- color="primary"
361
- badge="Popular"
362
- badgeVariant="default"
363
- actionLabel="Abrir"
364
- />
365
- <FeatureCard
366
- title="Integrações"
367
- description="Conecte APIs externas e serviços de terceiros com um clique."
368
- icon={<Globe />}
369
- color="chart-1"
370
- actionLabel="Explorar"
371
- />
372
- <FeatureCard
373
- title="Automação"
374
- description="Crie fluxos automáticos com gatilhos e ações personalizadas."
375
- icon={<Zap />}
376
- color="chart-2"
377
- badge="Beta"
378
- badgeVariant="warning"
379
- actionLabel="Configurar"
380
- />
381
- <FeatureCard
382
- title="IA Generativa"
383
- description="Potencialize sua equipe com assistentes inteligentes e geração de conteúdo."
384
- icon={<Sparkles />}
385
- color="chart-3"
386
- badge="Pro"
387
- badgeVariant="info"
388
- actionLabel="Ativar"
389
- />
390
- <FeatureCard
391
- title="Equipes"
392
- description="Gerencie membros, permissões e workspaces de forma centralizada."
393
- icon={<Users />}
394
- color="chart-4"
395
- actionLabel="Gerenciar"
396
- />
397
- <FeatureCard
398
- title="Pacotes"
399
- description="Publique e distribua seus componentes como biblioteca reutilizável."
400
- icon={<Package />}
401
- color="chart-5"
402
- actionLabel="Publicar"
403
- />
404
- </div>
405
- ),
406
- }
407
-
408
- export const FeatureSemanticColors: StoryObj = {
409
- render: () => (
410
- <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 w-full max-w-4xl">
411
- <FeatureCard
412
- title="Segurança"
413
- description="Proteção avançada com autenticação multifator e logs de auditoria."
414
- icon={<Shield />}
415
- color="success"
416
- actionLabel="Configurar"
417
- />
418
- <FeatureCard
419
- title="Insights"
420
- description="Análises aprofundadas com relatórios automáticos e alertas inteligentes."
421
- icon={<BarChart2 />}
422
- color="info"
423
- actionLabel="Ver Dados"
424
- />
425
- <FeatureCard
426
- title="Permissões"
427
- description="Controle granular de acessos por função, projeto e recurso."
428
- icon={<Lock />}
429
- color="warning"
430
- badge="Atenção"
431
- badgeVariant="warning"
432
- actionLabel="Revisar"
433
- />
434
- <FeatureCard
435
- title="Compartilhar"
436
- description="Distribua relatórios e dashboards com stakeholders externos."
437
- icon={<Share2 />}
438
- color="destructive"
439
- badge="Restrito"
440
- badgeVariant="destructive"
441
- actionLabel="Solicitar"
442
- />
443
- </div>
444
- ),
445
- }
1
+ import type { Meta, StoryObj } from "@storybook/react"
2
+ import React from "react"
3
+ import {
4
+ BarChart2, Bell, Briefcase, Download, FileText,
5
+ Globe, LayoutDashboard, Lock, MoreHorizontal, Package,
6
+ Plus, RefreshCw, Share2, Shield, Sparkles, Users, Zap,
7
+ } from "lucide-react"
8
+ import { Button } from "../../ui/button"
9
+ import { ChartCard, ChartConfig, DashboardBarChart, DashboardLineChart } from "../../ui/chart"
10
+ import { ActivityCard } from "./ActivityCard"
11
+ import { FeatureCard } from "./FeatureCard"
12
+ import { NotificationCard } from "./NotificationCard"
13
+ import { ProfileCard } from "./ProfileCard"
14
+ import { ProjectCard } from "./ProjectCard"
15
+ import { QuickActionCard } from "./QuickActionCard"
16
+
17
+ const meta: Meta = {
18
+ title: "Blocks/Card Patterns",
19
+ decorators: [
20
+ (Story) => (
21
+ <div className="bg-muted rounded-xl p-8 w-full flex items-start justify-center">
22
+ <Story />
23
+ </div>
24
+ ),
25
+ ],
26
+ }
27
+ export default meta
28
+
29
+ // ─── ActivityCard ─────────────────────────────────────────────────────────────
30
+
31
+ const ACTIVITY_ITEMS = [
32
+ { id: "1", user: { name: "Ana Souza", initials: "AS" }, action: "criou o projeto", target: "Xertica Dashboard", time: "há 2 min", type: "create" as const },
33
+ { id: "2", user: { name: "Bruno Lima", initials: "BL" }, action: "atualizou", target: "componente Button", time: "há 8 min", type: "update" as const },
34
+ { id: "3", user: { name: "Carla Rocha", initials: "CR" }, action: "comentou em", target: "PR #42", time: "há 15 min", type: "comment" as const },
35
+ { id: "4", user: { name: "Diego Ferraz", initials: "DF" }, action: "fez deploy de", target: "v2.1.0", time: "há 1h", type: "deploy" as const },
36
+ { id: "5", user: { name: "Elena Moura", initials: "EM" }, action: "removeu", target: "badge legado", time: "há 2h", type: "delete" as const },
37
+ ]
38
+
39
+ export const Activity: StoryObj = {
40
+ render: () => (
41
+ <ActivityCard
42
+ items={ACTIVITY_ITEMS}
43
+ action={<Button variant="ghost" size="sm"><MoreHorizontal className="size-4" /></Button>}
44
+ className="max-w-md"
45
+ />
46
+ ),
47
+ }
48
+
49
+ // ─── ProfileCard ──────────────────────────────────────────────────────────────
50
+
51
+ export const Profile: StoryObj = {
52
+ render: () => (
53
+ <ProfileCard
54
+ name="Ana Souza"
55
+ role="Senior Frontend Engineer"
56
+ department="Design System"
57
+ initials="AS"
58
+ status="online"
59
+ stats={[
60
+ { label: "Projetos", value: 12 },
61
+ { label: "Commits", value: 348 },
62
+ { label: "Reviews", value: 57 },
63
+ ]}
64
+ primaryAction={{ label: "Ver Perfil" }}
65
+ secondaryAction={{ label: "Mensagem" }}
66
+ className="w-64"
67
+ />
68
+ ),
69
+ }
70
+
71
+ // ─── ProjectCard ──────────────────────────────────────────────────────────────
72
+
73
+ const MEMBERS = [
74
+ { name: "Ana", initials: "AS" },
75
+ { name: "Bruno", initials: "BL" },
76
+ { name: "Carla", initials: "CR" },
77
+ { name: "Diego", initials: "DF" },
78
+ { name: "Elena", initials: "EM" },
79
+ ]
80
+
81
+ export const Project: StoryObj = {
82
+ render: () => (
83
+ <div className="grid gap-4 md:grid-cols-2 w-full max-w-2xl">
84
+ <ProjectCard
85
+ title="Xertica Dashboard v3"
86
+ description="Redesign completo do painel com novos componentes."
87
+ status="active"
88
+ progress={68}
89
+ dueDate="Vence em 12 dias"
90
+ members={MEMBERS}
91
+ />
92
+ <ProjectCard
93
+ title="Design System Tokens"
94
+ description="Migração dos tokens de design para CSS variables."
95
+ status="review"
96
+ progress={91}
97
+ dueDate="Vence amanhã"
98
+ members={MEMBERS.slice(0, 2)}
99
+ />
100
+ <ProjectCard
101
+ title="App Mobile"
102
+ description="Versão móvel do Xertica com React Native."
103
+ status="at-risk"
104
+ progress={34}
105
+ dueDate="Atrasado 3 dias"
106
+ members={MEMBERS.slice(0, 3)}
107
+ />
108
+ <ProjectCard
109
+ title="Onboarding Flow"
110
+ description="Fluxo de cadastro e primeiros passos."
111
+ status="done"
112
+ progress={100}
113
+ dueDate="Entregue"
114
+ members={MEMBERS.slice(0, 4)}
115
+ />
116
+ </div>
117
+ ),
118
+ }
119
+
120
+ // ─── QuickActionCard ──────────────────────────────────────────────────────────
121
+
122
+ export const QuickActions: StoryObj = {
123
+ render: () => (
124
+ <div className="grid gap-4 grid-cols-2 md:grid-cols-3 max-w-2xl w-full">
125
+ <QuickActionCard
126
+ title="Novo Relatório"
127
+ description="Gere relatórios personalizados de métricas."
128
+ icon={<FileText className="size-5" />}
129
+ actionLabel="Criar Relatório"
130
+ />
131
+ <QuickActionCard
132
+ title="Convidar Membro"
133
+ description="Adicione novos colaboradores ao workspace."
134
+ icon={<Users className="size-5" />}
135
+ actionLabel="Convidar"
136
+ actionVariant="outline"
137
+ badge="Novo"
138
+ badgeVariant="success"
139
+ />
140
+ <QuickActionCard
141
+ title="Exportar Dados"
142
+ description="Exporte suas métricas em CSV ou JSON."
143
+ icon={<Download className="size-5" />}
144
+ actionLabel="Exportar"
145
+ actionVariant="secondary"
146
+ />
147
+ <QuickActionCard
148
+ title="Automação"
149
+ description="Configure gatilhos e ações automáticas."
150
+ icon={<Zap className="size-5" />}
151
+ actionLabel="Configurar"
152
+ badge="Pro"
153
+ badgeVariant="warning"
154
+ />
155
+ <QuickActionCard
156
+ title="Compartilhar"
157
+ description="Compartilhe o dashboard com sua equipe."
158
+ icon={<Share2 className="size-5" />}
159
+ actionLabel="Compartilhar"
160
+ actionVariant="outline"
161
+ />
162
+ <QuickActionCard
163
+ title="Novo Projeto"
164
+ description="Inicie um projeto a partir de um template."
165
+ icon={<Plus className="size-5" />}
166
+ actionLabel="Criar Projeto"
167
+ badge="Beta"
168
+ badgeVariant="info"
169
+ />
170
+ </div>
171
+ ),
172
+ }
173
+
174
+ // ─── NotificationCard ─────────────────────────────────────────────────────────
175
+
176
+ const NOTIFICATIONS = [
177
+ { id: "1", title: "Deploy concluído", message: "v2.1.0 foi publicado com sucesso em produção.", time: "há 2 min", read: false, type: "success" as const },
178
+ { id: "2", title: "Revisão solicitada", message: "Ana pediu revisão no PR #42: Novos tokens de cor.", time: "há 10 min", read: false, type: "info" as const },
179
+ { id: "3", title: "Erro em produção", message: "Serviço de auth com falha intermitente — 503.", time: "há 1h", read: false, type: "error" as const },
180
+ { id: "4", title: "Licença expirando", message: "Sua licença Pro expira em 7 dias. Renove para continuar.", time: "há 3h", read: true, type: "warning" as const },
181
+ ]
182
+
183
+ export const Notifications: StoryObj = {
184
+ render: () => (
185
+ <NotificationCard
186
+ items={NOTIFICATIONS}
187
+ onMarkAllRead={() => {}}
188
+ onViewAll={() => {}}
189
+ className="max-w-sm"
190
+ />
191
+ ),
192
+ }
193
+
194
+ // ─── ChartCard ────────────────────────────────────────────────────────────────
195
+
196
+ const REVENUE_DATA = [
197
+ { month: "Jan", receita: 18000, despesa: 12000 },
198
+ { month: "Fev", receita: 22000, despesa: 14000 },
199
+ { month: "Mar", receita: 19500, despesa: 13500 },
200
+ { month: "Abr", receita: 27000, despesa: 15000 },
201
+ { month: "Mai", receita: 31000, despesa: 17500 },
202
+ { month: "Jun", receita: 28500, despesa: 16000 },
203
+ ]
204
+
205
+ const REVENUE_CONFIG: ChartConfig = {
206
+ receita: { label: "Receita", color: "var(--chart-1)" },
207
+ despesa: { label: "Despesa", color: "var(--chart-5)" },
208
+ }
209
+
210
+ const CHART_SERIES = [
211
+ { key: "receita", label: "Receita" },
212
+ { key: "despesa", label: "Despesa" },
213
+ ]
214
+
215
+ export const Chart: StoryObj = {
216
+ render: () => (
217
+ <ChartCard
218
+ title="Receita vs Despesa"
219
+ description="Últimos 6 meses"
220
+ action={
221
+ <Button variant="ghost" size="sm">
222
+ <RefreshCw className="size-4" />
223
+ </Button>
224
+ }
225
+ footer="Dados atualizados em tempo real via API financeira."
226
+ className="max-w-xl w-full"
227
+ contentClassName="h-[260px]"
228
+ >
229
+ <DashboardBarChart
230
+ data={REVENUE_DATA}
231
+ config={REVENUE_CONFIG}
232
+ series={CHART_SERIES}
233
+ indexKey="month"
234
+ barSize="md"
235
+ className="h-full w-full"
236
+ />
237
+ </ChartCard>
238
+ ),
239
+ }
240
+
241
+ // ─── Dashboard completo ───────────────────────────────────────────────────────
242
+
243
+ const LINE_DATA = [
244
+ { dia: "Seg", usuarios: 240 },
245
+ { dia: "Ter", usuarios: 380 },
246
+ { dia: "Qua", usuarios: 310 },
247
+ { dia: "Qui", usuarios: 470 },
248
+ { dia: "Sex", usuarios: 520 },
249
+ { dia: "Sáb", usuarios: 290 },
250
+ { dia: "Dom", usuarios: 180 },
251
+ ]
252
+
253
+ const LINE_CONFIG: ChartConfig = {
254
+ usuarios: { label: "Usuários", color: "var(--chart-1)" },
255
+ }
256
+
257
+ export const DashboardLayout: StoryObj = {
258
+ render: () => (
259
+ <div className="grid gap-4 w-full max-w-5xl">
260
+ <div className="grid gap-4 md:grid-cols-3">
261
+ <QuickActionCard
262
+ title="Novo Projeto"
263
+ description="Inicie a partir de um template."
264
+ icon={<Briefcase className="size-5" />}
265
+ actionLabel="Criar"
266
+ />
267
+ <QuickActionCard
268
+ title="Convidar Equipe"
269
+ description="Adicione membros ao workspace."
270
+ icon={<Users className="size-5" />}
271
+ actionLabel="Convidar"
272
+ actionVariant="outline"
273
+ />
274
+ <QuickActionCard
275
+ title="Ver Relatórios"
276
+ description="Métricas e KPIs do período."
277
+ icon={<BarChart2 className="size-5" />}
278
+ actionLabel="Abrir"
279
+ actionVariant="secondary"
280
+ badge="Novo"
281
+ badgeVariant="success"
282
+ />
283
+ </div>
284
+
285
+ <div className="grid gap-4 md:grid-cols-3">
286
+ <div className="md:col-span-2">
287
+ <ChartCard
288
+ title="Usuários Ativos"
289
+ description="Esta semana"
290
+ contentClassName="h-[220px]"
291
+ >
292
+ <DashboardLineChart
293
+ data={LINE_DATA}
294
+ config={LINE_CONFIG}
295
+ series={[{ key: "usuarios", label: "Usuários" }]}
296
+ indexKey="dia"
297
+ className="h-full w-full"
298
+ />
299
+ </ChartCard>
300
+ </div>
301
+ <NotificationCard
302
+ title="Alertas"
303
+ items={NOTIFICATIONS.slice(0, 3)}
304
+ onViewAll={() => {}}
305
+ />
306
+ </div>
307
+
308
+ <div className="grid gap-4 md:grid-cols-2">
309
+ <ActivityCard
310
+ items={ACTIVITY_ITEMS}
311
+ className="h-full"
312
+ />
313
+ <div className="grid gap-4">
314
+ <ProfileCard
315
+ name="Ana Souza"
316
+ role="Product Designer"
317
+ initials="AS"
318
+ status="online"
319
+ stats={[
320
+ { label: "Projetos", value: 12 },
321
+ { label: "Tarefas", value: 34 },
322
+ { label: "Reviews", value: 8 },
323
+ ]}
324
+ />
325
+ <ProjectCard
326
+ title="Xertica Dashboard v3"
327
+ status="active"
328
+ progress={68}
329
+ dueDate="12 dias restantes"
330
+ members={MEMBERS.slice(0, 3)}
331
+ />
332
+ </div>
333
+ </div>
334
+ </div>
335
+ ),
336
+ }
337
+
338
+ // ─── FeatureCard ──────────────────────────────────────────────────────────────
339
+
340
+ export const Feature: StoryObj = {
341
+ render: () => (
342
+ <FeatureCard
343
+ title="Template CLI"
344
+ description="Página de template pronta para uso CLI com todos os componentes configurados."
345
+ icon={<FileText />}
346
+ color="chart-2"
347
+ badge="Novo"
348
+ actionLabel="Visualizar"
349
+ />
350
+ ),
351
+ }
352
+
353
+ export const FeatureColors: StoryObj = {
354
+ render: () => (
355
+ <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 w-full max-w-4xl">
356
+ <FeatureCard
357
+ title="Dashboard"
358
+ description="Visualize métricas e KPIs em tempo real com gráficos interativos."
359
+ icon={<LayoutDashboard />}
360
+ color="primary"
361
+ badge="Popular"
362
+ badgeVariant="default"
363
+ actionLabel="Abrir"
364
+ />
365
+ <FeatureCard
366
+ title="Integrações"
367
+ description="Conecte APIs externas e serviços de terceiros com um clique."
368
+ icon={<Globe />}
369
+ color="chart-1"
370
+ actionLabel="Explorar"
371
+ />
372
+ <FeatureCard
373
+ title="Automação"
374
+ description="Crie fluxos automáticos com gatilhos e ações personalizadas."
375
+ icon={<Zap />}
376
+ color="chart-2"
377
+ badge="Beta"
378
+ badgeVariant="warning"
379
+ actionLabel="Configurar"
380
+ />
381
+ <FeatureCard
382
+ title="IA Generativa"
383
+ description="Potencialize sua equipe com assistentes inteligentes e geração de conteúdo."
384
+ icon={<Sparkles />}
385
+ color="chart-3"
386
+ badge="Pro"
387
+ badgeVariant="info"
388
+ actionLabel="Ativar"
389
+ />
390
+ <FeatureCard
391
+ title="Equipes"
392
+ description="Gerencie membros, permissões e workspaces de forma centralizada."
393
+ icon={<Users />}
394
+ color="chart-4"
395
+ actionLabel="Gerenciar"
396
+ />
397
+ <FeatureCard
398
+ title="Pacotes"
399
+ description="Publique e distribua seus componentes como biblioteca reutilizável."
400
+ icon={<Package />}
401
+ color="chart-5"
402
+ actionLabel="Publicar"
403
+ />
404
+ </div>
405
+ ),
406
+ }
407
+
408
+ export const FeatureSemanticColors: StoryObj = {
409
+ render: () => (
410
+ <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 w-full max-w-4xl">
411
+ <FeatureCard
412
+ title="Segurança"
413
+ description="Proteção avançada com autenticação multifator e logs de auditoria."
414
+ icon={<Shield />}
415
+ color="success"
416
+ actionLabel="Configurar"
417
+ />
418
+ <FeatureCard
419
+ title="Insights"
420
+ description="Análises aprofundadas com relatórios automáticos e alertas inteligentes."
421
+ icon={<BarChart2 />}
422
+ color="info"
423
+ actionLabel="Ver Dados"
424
+ />
425
+ <FeatureCard
426
+ title="Permissões"
427
+ description="Controle granular de acessos por função, projeto e recurso."
428
+ icon={<Lock />}
429
+ color="warning"
430
+ badge="Atenção"
431
+ badgeVariant="warning"
432
+ actionLabel="Revisar"
433
+ />
434
+ <FeatureCard
435
+ title="Compartilhar"
436
+ description="Distribua relatórios e dashboards com stakeholders externos."
437
+ icon={<Share2 />}
438
+ color="destructive"
439
+ badge="Restrito"
440
+ badgeVariant="destructive"
441
+ actionLabel="Solicitar"
442
+ />
443
+ </div>
444
+ ),
445
+ }