xertica-ui 2.1.3 → 2.1.4

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 (404) hide show
  1. package/CHANGELOG.md +15 -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/components/assistant/index.ts +6 -6
  6. package/components/assistant/xertica-assistant/parts/AssistantCollapsedView.tsx +97 -0
  7. package/components/assistant/xertica-assistant/parts/AssistantConversationList.tsx +104 -0
  8. package/components/assistant/xertica-assistant/parts/AssistantDocumentEditor.tsx +81 -0
  9. package/components/assistant/xertica-assistant/parts/AssistantFeedbackDialog.tsx +86 -0
  10. package/components/assistant/xertica-assistant/parts/AssistantHeader.tsx +77 -0
  11. package/components/assistant/xertica-assistant/parts/AssistantMessageBubble.tsx +573 -0
  12. package/components/assistant/xertica-assistant/parts/AssistantTabBar.tsx +65 -0
  13. package/components/assistant/xertica-assistant/parts/AssistantTypingIndicator.tsx +41 -0
  14. package/components/assistant/xertica-assistant/parts/AssistantWelcomeScreen.tsx +98 -0
  15. package/components/assistant/xertica-assistant/parts/index.ts +16 -0
  16. package/components/assistant/xertica-assistant/types.ts +139 -0
  17. package/components/assistant/xertica-assistant/use-assistant.ts +5 -10
  18. package/components/assistant/xertica-assistant/xertica-assistant.tsx +125 -1096
  19. package/components/blocks/card-patterns/ActivityCard.tsx +72 -72
  20. package/components/blocks/card-patterns/FeatureCard.tsx +100 -100
  21. package/components/blocks/card-patterns/NotificationCard.tsx +127 -127
  22. package/components/blocks/card-patterns/ProfileCard.tsx +84 -84
  23. package/components/blocks/card-patterns/ProjectCard.tsx +89 -89
  24. package/components/blocks/card-patterns/QuickActionCard.tsx +62 -62
  25. package/components/blocks/card-patterns/card-patterns.stories.tsx +445 -445
  26. package/components/blocks/card-patterns/index.ts +17 -17
  27. package/components/blocks/index.ts +1 -1
  28. package/components/brand/index.ts +6 -6
  29. package/components/brand/theme-toggle/ThemeToggle.tsx +8 -27
  30. package/components/brand/xertica-provider/XerticaProvider.tsx +48 -48
  31. package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
  32. package/components/brand/xertica-provider/xertica-provider.test.tsx +52 -52
  33. package/components/examples/MapExamples.tsx +282 -282
  34. package/components/examples/SimpleFilterableMap.tsx +191 -191
  35. package/components/examples/index.ts +51 -51
  36. package/components/figma/ImageWithFallback.tsx +27 -27
  37. package/components/hooks/index.ts +10 -7
  38. package/components/hooks/use-layout-shortcuts.ts +46 -0
  39. package/components/index.ts +5 -5
  40. package/components/layout/header/header.test.tsx +8 -8
  41. package/components/layout/header/header.tsx +4 -4
  42. package/components/layout/index.ts +2 -2
  43. package/components/layout/sidebar/sidebar.mdx +1 -1
  44. package/components/layout/sidebar/sidebar.test.tsx +11 -11
  45. package/components/layout/sidebar/sidebar.tsx +1 -31
  46. package/components/layout/sidebar/use-sidebar.ts +2 -11
  47. package/components/media/FloatingMediaWrapper.tsx +11 -11
  48. package/components/media/audio-player/AudioPlayer.tsx +140 -215
  49. package/components/media/audio-player/use-audio-player.ts +298 -0
  50. package/components/media/index.ts +3 -3
  51. package/components/pages/home-content/HomeContent.tsx +7 -7
  52. package/components/pages/home-content/home-content.mdx +62 -62
  53. package/components/pages/home-page/HomePage.stories.tsx +39 -39
  54. package/components/pages/home-page/home-page.mdx +53 -53
  55. package/components/pages/index.ts +8 -8
  56. package/components/pages/template-content/template-content.mdx +61 -61
  57. package/components/pages/template-page/TemplatePage.stories.tsx +39 -39
  58. package/components/pages/template-page/template-page.mdx +53 -53
  59. package/components/public-api-smoke.test.tsx +52 -52
  60. package/components/shared/CustomTooltipContent.tsx +52 -0
  61. package/components/shared/assistant-utils.ts +43 -43
  62. package/components/ui/accordion/accordion.mdx +8 -8
  63. package/components/ui/accordion/accordion.stories.tsx +53 -53
  64. package/components/ui/alert/alert.mdx +8 -8
  65. package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
  66. package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
  67. package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
  68. package/components/ui/avatar/avatar.mdx +8 -8
  69. package/components/ui/badge/badge.mdx +8 -8
  70. package/components/ui/badge/badge.tsx +9 -9
  71. package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
  72. package/components/ui/button/button.mdx +8 -8
  73. package/components/ui/calendar/calendar.mdx +8 -8
  74. package/components/ui/calendar/calendar.tsx +258 -258
  75. package/components/ui/card/card.mdx +8 -8
  76. package/components/ui/card/card.stories.tsx +245 -245
  77. package/components/ui/carousel/carousel.mdx +8 -8
  78. package/components/ui/chart/chart.mdx +8 -8
  79. package/components/ui/chart/chart.stories.tsx +1303 -1303
  80. package/components/ui/chart/chart.test.tsx +154 -154
  81. package/components/ui/chart/chart.tsx +2367 -2367
  82. package/components/ui/checkbox/checkbox.mdx +8 -8
  83. package/components/ui/checkbox/checkbox.stories.tsx +20 -20
  84. package/components/ui/collapsible/collapsible.mdx +8 -8
  85. package/components/ui/command/command.mdx +8 -8
  86. package/components/ui/context-menu/context-menu.mdx +8 -8
  87. package/components/ui/dialog/dialog.mdx +8 -8
  88. package/components/ui/drawer/drawer.mdx +8 -8
  89. package/components/ui/dropdown-menu/dropdown-menu.mdx +8 -8
  90. package/components/ui/empty/empty.mdx +8 -8
  91. package/components/ui/file-upload/file-upload.mdx +8 -8
  92. package/components/ui/google-maps-loader/google-maps-loader.tsx +2 -2
  93. package/components/ui/hover-card/hover-card.mdx +8 -8
  94. package/components/ui/input/input.mdx +8 -8
  95. package/components/ui/input-otp/input-otp.mdx +8 -8
  96. package/components/ui/input-otp/input-otp.stories.tsx +6 -6
  97. package/components/ui/label/label.mdx +8 -8
  98. package/components/ui/map/map.mdx +8 -8
  99. package/components/ui/map/map.stories.tsx +51 -51
  100. package/components/ui/map/map.tsx +2 -2
  101. package/components/ui/menubar/menubar.mdx +8 -8
  102. package/components/ui/navigation-menu/navigation-menu.mdx +8 -8
  103. package/components/ui/notification-badge/notification-badge.mdx +8 -8
  104. package/components/ui/pagination/pagination.mdx +8 -8
  105. package/components/ui/popover/popover.mdx +8 -8
  106. package/components/ui/progress/progress.mdx +8 -8
  107. package/components/ui/progress/progress.tsx +68 -68
  108. package/components/ui/radio-group/radio-group.mdx +8 -8
  109. package/components/ui/rating/rating.mdx +8 -8
  110. package/components/ui/resizable/resizable.mdx +8 -8
  111. package/components/ui/route-map/route-map.mdx +8 -8
  112. package/components/ui/route-map/route-map.stories.tsx +54 -54
  113. package/components/ui/route-map/route-map.tsx +2 -2
  114. package/components/ui/scroll-area/scroll-area.mdx +8 -8
  115. package/components/ui/search/search.mdx +8 -8
  116. package/components/ui/select/select.mdx +8 -8
  117. package/components/ui/select/select.stories.tsx +9 -9
  118. package/components/ui/separator/separator.mdx +8 -8
  119. package/components/ui/sheet/sheet.mdx +8 -8
  120. package/components/ui/sheet/sheet.stories.tsx +95 -95
  121. package/components/ui/simple-map/simple-map.mdx +8 -8
  122. package/components/ui/simple-map/simple-map.stories.tsx +48 -48
  123. package/components/ui/skeleton/skeleton.mdx +8 -8
  124. package/components/ui/slider/slider.mdx +8 -8
  125. package/components/ui/sonner/sonner.mdx +8 -8
  126. package/components/ui/stats-card/stats-card.mdx +8 -8
  127. package/components/ui/stepper/stepper.mdx +8 -8
  128. package/components/ui/switch/switch.mdx +8 -8
  129. package/components/ui/switch/switch.stories.tsx +20 -20
  130. package/components/ui/table/table.mdx +8 -8
  131. package/components/ui/tabs/tabs.mdx +8 -8
  132. package/components/ui/tabs/tabs.stories.tsx +26 -26
  133. package/components/ui/textarea/textarea.mdx +8 -8
  134. package/components/ui/timeline/timeline.mdx +8 -8
  135. package/components/ui/toggle/toggle.mdx +8 -8
  136. package/components/ui/toggle-group/toggle-group.mdx +8 -8
  137. package/components/ui/tooltip/tooltip.mdx +8 -8
  138. package/components/ui/tree-view/tree-view.mdx +8 -8
  139. package/components.json +1512 -1512
  140. package/contexts/ApiKeyContext.tsx +72 -72
  141. package/contexts/AssistenteContext.tsx +17 -54
  142. package/contexts/BrandColorsContext.tsx +32 -43
  143. package/contexts/LanguageContext.tsx +13 -13
  144. package/contexts/LayoutContext.test.tsx +11 -11
  145. package/contexts/LayoutContext.tsx +24 -50
  146. package/contexts/ThemeContext.tsx +26 -26
  147. package/contexts/theme-data.ts +4 -4
  148. package/dist/{AssistantChart-DoZCyS5r.cjs → AssistantChart-9w31gdAb.cjs} +4 -4
  149. package/dist/{AssistantChart-CldVCVDe.cjs → AssistantChart-BAudAfne.cjs} +5 -5
  150. package/dist/{use-mobile-DRB3BQgD.cjs → AssistantChart-BAx9VQvb.cjs} +209 -1070
  151. package/dist/{AssistantChart-Cu3m7RBo.js → AssistantChart-BP8upjMk.js} +5 -5
  152. package/dist/{use-mobile-BvYdisLP.js → AssistantChart-CVko2A1W.js} +171 -1025
  153. package/dist/{AssistantChart-C_hwFRRr.js → AssistantChart-CVzmmhx4.js} +4 -4
  154. package/dist/{AudioPlayer-C12BjQBV.cjs → AudioPlayer-1ypwE2Wh.cjs} +126 -187
  155. package/dist/{AudioPlayer-DcFKRJE_.js → AudioPlayer-DuKXrCfy.js} +80 -141
  156. package/dist/CustomTooltipContent-DHjkY0ww.js +40 -0
  157. package/dist/CustomTooltipContent-c_K-DWRr.cjs +56 -0
  158. package/dist/{ThemeContext-BoH4NLfN.js → LanguageContext-BwhwC3G2.js} +27 -104
  159. package/dist/{ThemeContext-r69W20Xg.cjs → LanguageContext-DvUt5jBg.cjs} +27 -104
  160. package/dist/{LayoutContext-BvK-ggDa.cjs → LayoutContext-BDmcZfMH.cjs} +8 -20
  161. package/dist/{LayoutContext-BAql6ZRY.js → LayoutContext-dbQvdC4O.js} +8 -20
  162. package/dist/{ThemeContext-C2EwAPDt.js → ThemeContext-BbBNoFTG.js} +2 -2
  163. package/dist/{ThemeContext-vTjumZeM.cjs → ThemeContext-Cmr8Ex8H.cjs} +2 -2
  164. package/dist/ThemeContext-RTy1m2Uq.js +82 -0
  165. package/dist/ThemeContext-bSzuOit2.cjs +81 -0
  166. package/dist/VerifyEmailPage-BE-L9mB7.js +2828 -0
  167. package/dist/{VerifyEmailPage-Cwi3kbol.cjs → VerifyEmailPage-Bae2cBXT.cjs} +7 -7
  168. package/dist/VerifyEmailPage-CR7kb5df.cjs +2827 -0
  169. package/dist/{VerifyEmailPage-C0c2e5n0.js → VerifyEmailPage-C_ihbcth.js} +6 -6
  170. package/dist/VerifyEmailPage-CbgjOF0v.js +2828 -0
  171. package/dist/{VerifyEmailPage-DvMLZgFt.js → VerifyEmailPage-CdYPSJoO.js} +1 -1
  172. package/dist/{VerifyEmailPage-CYXtbKi3.cjs → VerifyEmailPage-DMBh4NM9.cjs} +1 -1
  173. package/dist/VerifyEmailPage-Dt7zgA4w.cjs +2827 -0
  174. package/dist/{XerticaProvider-CEoWMTxu.js → XerticaProvider-BITjgC5p.js} +2 -2
  175. package/dist/{XerticaProvider-CllrbMEJ.cjs → XerticaProvider-By8q3Roe.cjs} +2 -2
  176. package/dist/{XerticaProvider-cI9hSs27.cjs → XerticaProvider-CW9hpCdF.cjs} +9 -8
  177. package/dist/{XerticaProvider-DDuiIcKo.js → XerticaProvider-siSt9uG2.js} +5 -4
  178. package/dist/{LanguageSelector-D6uacAIM.cjs → XerticaXLogo-D8jf0SNv.cjs} +86 -102
  179. package/dist/{LanguageSelector-B5YfbHra.js → XerticaXLogo-fAJMy3H4.js} +87 -103
  180. package/dist/{alert-dialog-s-vmNkJ_.js → alert-dialog-iDe5VE5o.js} +3 -3
  181. package/dist/{alert-dialog-DSKByiKZ.cjs → alert-dialog-yckpaOpy.cjs} +3 -3
  182. package/dist/assistant.cjs.js +1 -1
  183. package/dist/assistant.es.js +1 -1
  184. package/dist/brand.cjs.js +2 -2
  185. package/dist/brand.es.js +2 -2
  186. package/dist/components/assistant/xertica-assistant/parts/AssistantCollapsedView.d.ts +13 -0
  187. package/dist/components/assistant/xertica-assistant/parts/AssistantConversationList.d.ts +16 -0
  188. package/dist/components/assistant/xertica-assistant/parts/AssistantDocumentEditor.d.ts +17 -0
  189. package/dist/components/assistant/xertica-assistant/parts/AssistantFeedbackDialog.d.ts +19 -0
  190. package/dist/components/assistant/xertica-assistant/parts/AssistantHeader.d.ts +11 -0
  191. package/dist/components/assistant/xertica-assistant/parts/AssistantMessageBubble.d.ts +29 -0
  192. package/dist/components/assistant/xertica-assistant/parts/AssistantTabBar.d.ts +13 -0
  193. package/dist/components/assistant/xertica-assistant/parts/AssistantTypingIndicator.d.ts +4 -0
  194. package/dist/components/assistant/xertica-assistant/parts/AssistantWelcomeScreen.d.ts +17 -0
  195. package/dist/components/assistant/xertica-assistant/parts/index.d.ts +16 -0
  196. package/dist/components/assistant/xertica-assistant/types.d.ts +106 -0
  197. package/dist/components/assistant/xertica-assistant/use-assistant.d.ts +1 -2
  198. package/dist/components/assistant/xertica-assistant/xertica-assistant.d.ts +2 -96
  199. package/dist/components/hooks/index.d.ts +3 -0
  200. package/dist/components/hooks/use-layout-shortcuts.d.ts +22 -0
  201. package/dist/components/media/audio-player/AudioPlayer.d.ts +4 -1
  202. package/dist/components/media/audio-player/use-audio-player.d.ts +72 -0
  203. package/dist/components/shared/CustomTooltipContent.d.ts +20 -0
  204. package/dist/components/ui/alert/alert.d.ts +1 -1
  205. package/dist/components/ui/badge/badge.d.ts +1 -1
  206. package/dist/components/ui/button/button.d.ts +2 -2
  207. package/dist/contexts/AssistenteContext.d.ts +10 -49
  208. package/dist/{google-maps-loader-Y-QkD-Li.cjs → google-maps-loader-BqsYL48U.cjs} +0 -5
  209. package/dist/{google-maps-loader-CTYySAun.js → google-maps-loader-t2IlYBzw.js} +0 -4
  210. package/dist/hooks.cjs.js +30 -10
  211. package/dist/hooks.es.js +25 -4
  212. package/dist/index-CkTUgOwX.js +8 -0
  213. package/dist/{index-COtD8bRW.cjs → index-D3RLKRAs.cjs} +1 -1
  214. package/dist/index.cjs.js +11 -11
  215. package/dist/index.es.js +11 -11
  216. package/dist/index.umd.js +454 -1027
  217. package/dist/layout.cjs.js +3 -10
  218. package/dist/layout.es.js +3 -10
  219. package/dist/media.cjs.js +1 -1
  220. package/dist/media.es.js +1 -1
  221. package/dist/pages.cjs.js +1 -1
  222. package/dist/pages.es.js +1 -1
  223. package/dist/{sidebar-CK_0ZQHj.cjs → sidebar-CVUGHOS_.cjs} +10 -57
  224. package/dist/{sidebar-CUuOvYhK.js → sidebar-CmvwjnVb.js} +10 -40
  225. package/dist/ui.cjs.js +4 -4
  226. package/dist/ui.es.js +4 -4
  227. package/dist/use-audio-player-Bkh23vQ3.js +177 -0
  228. package/dist/use-audio-player-Dn1NR9xN.cjs +176 -0
  229. package/dist/utils/color-utils.d.ts +51 -0
  230. package/dist/{xertica-assistant-dyP7KHM5.cjs → xertica-assistant-B1IaHXnB.cjs} +388 -529
  231. package/dist/xertica-assistant-BMqdyRVi.js +2082 -0
  232. package/dist/xertica-assistant-Bj3vBCq_.cjs +2081 -0
  233. package/dist/{xertica-assistant-yX1CFBBo.js → xertica-assistant-DPsESB6t.js} +390 -531
  234. package/dist/{CodeBlock-BgfYL_rD.cjs → xertica-assistant-Qp3ydksa.cjs} +51 -263
  235. package/dist/{CodeBlock-DnYNI8rQ.js → xertica-assistant-gnCJdcZY.js} +7 -219
  236. package/dist/xertica-ui.css +2 -2
  237. package/docs/architecture-improvements.md +463 -0
  238. package/docs/architecture.md +1 -1
  239. package/docs/components/assistant-chart.md +1 -1
  240. package/docs/components/audio-player.md +46 -0
  241. package/docs/components/branding.md +251 -0
  242. package/docs/components/calendar.md +154 -154
  243. package/docs/components/card-patterns.md +337 -337
  244. package/docs/components/card.md +235 -235
  245. package/docs/components/code-block.md +108 -0
  246. package/docs/components/formatted-document.md +113 -0
  247. package/docs/components/hooks.md +430 -0
  248. package/docs/components/image-with-fallback.md +106 -0
  249. package/docs/components/map-layers.md +140 -0
  250. package/docs/components/map.md +84 -84
  251. package/docs/components/modern-chat-input.md +163 -0
  252. package/docs/components/pages.md +351 -0
  253. package/docs/components/xertica-provider.md +24 -24
  254. package/docs/decision-tree.md +287 -287
  255. package/docs/doc-audit.md +223 -0
  256. package/docs/getting-started.md +154 -0
  257. package/docs/llms.md +25 -5
  258. package/docs/patterns/detail-page.md +276 -0
  259. package/docs/patterns/settings.md +346 -0
  260. package/docs/patterns/wizard.md +217 -0
  261. package/guidelines/Guidelines.md +252 -252
  262. package/hooks/useTheme.ts +3 -3
  263. package/imports/Podcast.tsx +388 -388
  264. package/imports/XerticaAi.tsx +45 -45
  265. package/imports/XerticaX.tsx +19 -19
  266. package/imports/svg-aueiaqngck.ts +11 -11
  267. package/imports/svg-v9krss1ozd.ts +16 -16
  268. package/imports/svg-vhrdofe3qe.ts +5 -5
  269. package/llms-compact.txt +327 -327
  270. package/llms.txt +160 -160
  271. package/package.json +203 -203
  272. package/styles/xertica/app-overrides/chat.css +61 -61
  273. package/styles/xertica/app-overrides/scrollbar.css +33 -33
  274. package/styles/xertica/integrations/google-maps.css +76 -76
  275. package/styles/xertica/integrations/sonner.css +73 -73
  276. package/templates/CLAUDE.md +182 -182
  277. package/templates/guidelines/Guidelines.md +325 -325
  278. package/templates/package.json +2 -2
  279. package/templates/src/features/auth/index.ts +4 -4
  280. package/templates/src/features/auth/ui/AuthPageShell.tsx +34 -34
  281. package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +70 -70
  282. package/templates/src/features/auth/ui/LoginContent.tsx +90 -90
  283. package/templates/src/features/auth/ui/ResetPasswordContent.tsx +151 -151
  284. package/templates/src/features/auth/ui/SocialLoginButtons.tsx +59 -59
  285. package/templates/src/features/auth/ui/VerifyEmailContent.tsx +82 -82
  286. package/templates/src/features/home/index.ts +1 -1
  287. package/templates/src/features/home/ui/HomeContent.tsx +100 -100
  288. package/templates/src/features/template/index.ts +5 -5
  289. package/templates/src/features/template/ui/CrudTemplate.tsx +3 -3
  290. package/templates/src/features/template/ui/DashboardTemplate.tsx +3 -3
  291. package/templates/src/features/template/ui/FormTemplate.tsx +120 -120
  292. package/templates/src/features/template/ui/LoginTemplate.tsx +3 -3
  293. package/templates/src/pages/AssistantPage.tsx +328 -328
  294. package/templates/src/pages/ForgotPasswordPage.tsx +6 -6
  295. package/templates/src/pages/HomePage.tsx +57 -57
  296. package/templates/src/pages/LoginPage.tsx +10 -10
  297. package/templates/src/pages/ResetPasswordPage.tsx +6 -6
  298. package/templates/src/pages/TemplatePage.tsx +30 -30
  299. package/templates/src/pages/VerifyEmailPage.tsx +6 -6
  300. package/templates/src/shared/config/navigation.ts +20 -20
  301. package/templates/src/shared/lib/auth.ts +20 -20
  302. package/templates/src/shared/types/auth.ts +3 -3
  303. package/templates/tsconfig.json +5 -5
  304. package/utils/color-utils.ts +72 -0
  305. package/utils/gemini.ts +140 -140
  306. package/dist/AudioPlayer-B1lt5cPl.cjs +0 -989
  307. package/dist/AudioPlayer-BZ7bibzU.cjs +0 -982
  308. package/dist/AudioPlayer-DMcG_c7L.js +0 -990
  309. package/dist/AudioPlayer-e8LfNoqO.js +0 -983
  310. package/dist/CodeBlock-7TTgmdGG.cjs +0 -2094
  311. package/dist/CodeBlock-BeSt1h5P.js +0 -2078
  312. package/dist/CodeBlock-BlcqlA9M.cjs +0 -2094
  313. package/dist/CodeBlock-Bnmeu5ez.cjs +0 -2094
  314. package/dist/CodeBlock-BtfPlbAI.js +0 -2078
  315. package/dist/CodeBlock-CIySIuYr.js +0 -2078
  316. package/dist/CodeBlock-CuPtUM-7.cjs +0 -2094
  317. package/dist/CodeBlock-D6ffWXgc.js +0 -2078
  318. package/dist/CodeBlock-D8dcwbit.cjs +0 -2094
  319. package/dist/CodeBlock-DMZrFnlw.cjs +0 -2094
  320. package/dist/CodeBlock-DlBehYN8.js +0 -2078
  321. package/dist/CodeBlock-DvKWbSnE.cjs +0 -2094
  322. package/dist/CodeBlock-DwMCfkFY.js +0 -2078
  323. package/dist/CodeBlock-Dy6CNYyj.js +0 -2078
  324. package/dist/CodeBlock-U1pPOQI7.cjs +0 -2094
  325. package/dist/CodeBlock-f_GpNhEB.js +0 -2078
  326. package/dist/CodeBlock-oB6u8nI1.js +0 -2078
  327. package/dist/CodeBlock-tZC31B73.cjs +0 -2094
  328. package/dist/ImageWithFallback-CGtidP6B.cjs +0 -4542
  329. package/dist/ImageWithFallback-lsg3pdFg.js +0 -4508
  330. package/dist/XerticaOrbe-KL1RBHzw.cjs +0 -1354
  331. package/dist/XerticaOrbe-zwS1p2a8.js +0 -1355
  332. package/dist/XerticaProvider-6btlAlzc.js +0 -17
  333. package/dist/XerticaProvider-BNoNOxQ5.cjs +0 -16
  334. package/dist/XerticaProvider-BlY2limY.cjs +0 -38
  335. package/dist/XerticaProvider-hSwhNQex.js +0 -39
  336. package/dist/breadcrumb-CqJ7bHY5.js +0 -161
  337. package/dist/breadcrumb-m9Hb2_XN.cjs +0 -177
  338. package/dist/components/blocks/audio-player/AudioPlayer.d.ts +0 -35
  339. package/dist/components/blocks/audio-player/index.d.ts +0 -1
  340. package/dist/components/blocks/document-editor/DocumentEditor.d.ts +0 -26
  341. package/dist/components/blocks/document-editor/index.d.ts +0 -1
  342. package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +0 -41
  343. package/dist/components/blocks/podcast-player/index.d.ts +0 -1
  344. package/dist/dropdown-menu-BDB5CmQs.cjs +0 -247
  345. package/dist/dropdown-menu-DQidbKBD.js +0 -231
  346. package/dist/google-maps-loader-BFWp6VPd.js +0 -287
  347. package/dist/google-maps-loader-eS3uQ5TA.cjs +0 -287
  348. package/dist/header-Cgy6vYPk.cjs +0 -731
  349. package/dist/header-DRlT4jgI.js +0 -715
  350. package/dist/header-Dux00SI4.cjs +0 -731
  351. package/dist/header-EkGKXPsD.js +0 -715
  352. package/dist/header-WfEywpyc.cjs +0 -731
  353. package/dist/header-tifNQn2U.js +0 -715
  354. package/dist/index-BhapVLVj.js +0 -8
  355. package/dist/index-D6fxYEY8.cjs +0 -7
  356. package/dist/index-DW5tYe26.js +0 -8
  357. package/dist/input-2R4loU86.js +0 -127
  358. package/dist/input-DWANSKGb.cjs +0 -145
  359. package/dist/rich-text-editor-0mraWT5y.cjs +0 -2376
  360. package/dist/rich-text-editor-B6jMRLzk.cjs +0 -1939
  361. package/dist/rich-text-editor-B8_oYcIR.js +0 -1730
  362. package/dist/rich-text-editor-B9UbSXNb.js +0 -1203
  363. package/dist/rich-text-editor-BYuRBNBU.js +0 -2373
  364. package/dist/rich-text-editor-Bb9pySTs.cjs +0 -2374
  365. package/dist/rich-text-editor-BcL6L3cm.cjs +0 -2374
  366. package/dist/rich-text-editor-BoVZYtTs.cjs +0 -2391
  367. package/dist/rich-text-editor-CPV1lEPH.cjs +0 -1748
  368. package/dist/rich-text-editor-CoKqbCtu.cjs +0 -1799
  369. package/dist/rich-text-editor-Cw56T_mB.js +0 -2356
  370. package/dist/rich-text-editor-Cyt8qs2b.js +0 -1921
  371. package/dist/rich-text-editor-D6H84OcX.cjs +0 -1220
  372. package/dist/rich-text-editor-D76gD-QI.js +0 -2328
  373. package/dist/rich-text-editor-DKkokOnA.js +0 -1781
  374. package/dist/rich-text-editor-DNsdpN64.cjs +0 -2359
  375. package/dist/rich-text-editor-DfG8bCyY.js +0 -2358
  376. package/dist/rich-text-editor-Dxjw31Z4.js +0 -2341
  377. package/dist/rich-text-editor-DzP0Epmb.js +0 -2356
  378. package/dist/rich-text-editor-skplNlBM.cjs +0 -2345
  379. package/dist/select-Bkbr0f-Z.cjs +0 -162
  380. package/dist/select-CvIVdX2n.js +0 -145
  381. package/dist/slider-Bc5Hd0y1.js +0 -56
  382. package/dist/slider-N7hFFj6X.cjs +0 -73
  383. package/dist/tooltip-Ded96neP.cjs +0 -137
  384. package/dist/tooltip-HDOoD2-0.js +0 -120
  385. package/dist/use-mobile-B0hNy_Y6.cjs +0 -4303
  386. package/dist/use-mobile-BXuYROXM.js +0 -4202
  387. package/dist/use-mobile-Bbd51ASU.cjs +0 -4392
  388. package/dist/use-mobile-Bk6CX-TC.js +0 -4359
  389. package/dist/use-mobile-BzuxjzNX.cjs +0 -4392
  390. package/dist/use-mobile-CG2-SdXV.cjs +0 -4235
  391. package/dist/use-mobile-CKb5pqTs.js +0 -4269
  392. package/dist/use-mobile-CYuAuGDl.js +0 -4202
  393. package/dist/use-mobile-CaENcqm-.js +0 -4508
  394. package/dist/use-mobile-CbrYgJGJ.js +0 -4203
  395. package/dist/use-mobile-DMOvImGQ.cjs +0 -4542
  396. package/dist/use-mobile-DZvv7QMR.js +0 -4359
  397. package/dist/use-mobile-DdI_TXam.cjs +0 -4235
  398. package/dist/use-mobile-DlceKf8a.js +0 -4359
  399. package/dist/use-mobile-DsOnow1o.cjs +0 -4236
  400. package/dist/use-mobile-Kcj6jSnK.cjs +0 -4392
  401. package/dist/use-mobile-bnKcua_i.js +0 -4202
  402. package/dist/use-mobile-ncXBeE2z.cjs +0 -4235
  403. package/dist/{rich-text-editor-DgF8s7xW.js → rich-text-editor-BmsjY03B.js} +26 -26
  404. package/dist/{rich-text-editor-mWoaSCE4.cjs → rich-text-editor-GS2kpTAK.cjs} +26 -26
@@ -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
+ }