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.
- package/CHANGELOG.md +31 -0
- package/README.md +1 -1
- package/assets/xertica-logo.svg +37 -37
- package/assets/xertica-x-logo.svg +20 -20
- package/bin/cli.ts +1 -1
- package/bin/generate-tokens.ts +13 -7
- package/components/assistant/index.ts +6 -6
- package/components/assistant/xertica-assistant/index.ts +2 -0
- package/components/assistant/xertica-assistant/use-assistant.ts +564 -0
- package/components/assistant/xertica-assistant/xertica-assistant.stories.tsx +200 -0
- package/components/assistant/xertica-assistant/xertica-assistant.tsx +183 -474
- package/components/blocks/card-patterns/ActivityCard.tsx +72 -72
- package/components/blocks/card-patterns/FeatureCard.tsx +100 -100
- package/components/blocks/card-patterns/NotificationCard.tsx +127 -127
- package/components/blocks/card-patterns/ProfileCard.tsx +84 -84
- package/components/blocks/card-patterns/ProjectCard.tsx +89 -89
- package/components/blocks/card-patterns/QuickActionCard.tsx +62 -62
- package/components/blocks/card-patterns/card-patterns.stories.tsx +445 -445
- package/components/blocks/card-patterns/index.ts +17 -17
- package/components/blocks/index.ts +1 -1
- package/components/brand/index.ts +6 -6
- package/components/brand/xertica-provider/XerticaProvider.tsx +48 -48
- package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
- package/components/brand/xertica-provider/xertica-provider.test.tsx +52 -52
- package/components/examples/MapExamples.tsx +282 -282
- package/components/examples/SimpleFilterableMap.tsx +191 -191
- package/components/examples/index.ts +51 -51
- package/components/figma/ImageWithFallback.tsx +27 -27
- package/components/hooks/index.ts +7 -7
- package/components/index.ts +5 -5
- package/components/layout/header/header.test.tsx +8 -8
- package/components/layout/header/header.tsx +4 -4
- package/components/layout/index.ts +2 -2
- package/components/layout/sidebar/index.ts +2 -0
- package/components/layout/sidebar/sidebar.mdx +1 -1
- package/components/layout/sidebar/sidebar.stories.tsx +160 -8
- package/components/layout/sidebar/sidebar.test.tsx +11 -11
- package/components/layout/sidebar/sidebar.tsx +610 -471
- package/components/layout/sidebar/use-sidebar.ts +113 -0
- package/components/media/FloatingMediaWrapper.tsx +11 -11
- package/components/media/audio-player/AudioPlayer.tsx +22 -22
- package/components/media/index.ts +3 -3
- package/components/pages/home-content/HomeContent.tsx +7 -7
- package/components/pages/home-content/home-content.mdx +62 -62
- package/components/pages/home-page/HomePage.stories.tsx +39 -39
- package/components/pages/home-page/HomePage.tsx +1 -1
- package/components/pages/home-page/home-page.mdx +53 -53
- package/components/pages/index.ts +8 -8
- package/components/pages/template-content/TemplateContent.tsx +5 -5
- package/components/pages/template-content/template-content.mdx +61 -61
- package/components/pages/template-page/TemplatePage.stories.tsx +39 -39
- package/components/pages/template-page/TemplatePage.tsx +5 -5
- package/components/pages/template-page/template-page.mdx +53 -53
- package/components/public-api-smoke.test.tsx +52 -52
- package/components/shared/assistant-utils.ts +43 -43
- package/components/shared/layout-constants.ts +1 -1
- package/components/ui/accordion/accordion.mdx +8 -8
- package/components/ui/accordion/accordion.stories.tsx +53 -53
- package/components/ui/alert/alert.mdx +8 -8
- package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
- package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
- package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
- package/components/ui/avatar/avatar.mdx +8 -8
- package/components/ui/badge/badge.mdx +8 -8
- package/components/ui/badge/badge.tsx +9 -9
- package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
- package/components/ui/button/button.mdx +8 -8
- package/components/ui/calendar/calendar.mdx +8 -8
- package/components/ui/calendar/calendar.tsx +258 -258
- package/components/ui/card/card.mdx +8 -8
- package/components/ui/card/card.stories.tsx +245 -245
- package/components/ui/carousel/carousel.mdx +8 -8
- package/components/ui/chart/chart.mdx +8 -8
- package/components/ui/chart/chart.stories.tsx +1303 -344
- package/components/ui/chart/chart.test.tsx +154 -154
- package/components/ui/chart/chart.tsx +2367 -1494
- package/components/ui/checkbox/checkbox.mdx +8 -8
- package/components/ui/checkbox/checkbox.stories.tsx +20 -20
- package/components/ui/collapsible/collapsible.mdx +8 -8
- package/components/ui/command/command.mdx +8 -8
- package/components/ui/context-menu/context-menu.mdx +8 -8
- package/components/ui/dialog/dialog.mdx +8 -8
- package/components/ui/drawer/drawer.mdx +8 -8
- package/components/ui/dropdown-menu/dropdown-menu.mdx +8 -8
- package/components/ui/empty/empty.mdx +8 -8
- package/components/ui/file-upload/file-upload.mdx +8 -8
- package/components/ui/file-upload/file-upload.stories.tsx +100 -0
- package/components/ui/file-upload/file-upload.tsx +14 -74
- package/components/ui/file-upload/index.ts +1 -0
- package/components/ui/file-upload/use-file-upload.ts +181 -0
- package/components/ui/google-maps-loader/google-maps-loader.tsx +2 -2
- package/components/ui/hover-card/hover-card.mdx +8 -8
- package/components/ui/input/input.mdx +8 -8
- package/components/ui/input-otp/input-otp.mdx +8 -8
- package/components/ui/input-otp/input-otp.stories.tsx +6 -6
- package/components/ui/label/label.mdx +8 -8
- package/components/ui/map/map.mdx +8 -8
- package/components/ui/map/map.stories.tsx +51 -51
- package/components/ui/map/map.tsx +2 -2
- package/components/ui/menubar/menubar.mdx +8 -8
- package/components/ui/navigation-menu/navigation-menu.mdx +8 -8
- package/components/ui/notification-badge/notification-badge.mdx +8 -8
- package/components/ui/pagination/index.ts +2 -0
- package/components/ui/pagination/pagination.mdx +8 -8
- package/components/ui/pagination/pagination.stories.tsx +94 -0
- package/components/ui/pagination/use-pagination.ts +194 -0
- package/components/ui/popover/popover.mdx +8 -8
- package/components/ui/progress/progress.mdx +8 -8
- package/components/ui/progress/progress.tsx +68 -68
- package/components/ui/radio-group/radio-group.mdx +8 -8
- package/components/ui/rating/rating.mdx +8 -8
- package/components/ui/resizable/resizable.mdx +8 -8
- package/components/ui/rich-text-editor/index.ts +2 -0
- package/components/ui/rich-text-editor/rich-text-editor.stories.tsx +129 -1
- package/components/ui/rich-text-editor/rich-text-editor.tsx +86 -305
- package/components/ui/rich-text-editor/use-rich-text-editor.ts +439 -0
- package/components/ui/route-map/route-map.mdx +8 -8
- package/components/ui/route-map/route-map.stories.tsx +54 -54
- package/components/ui/route-map/route-map.tsx +2 -2
- package/components/ui/scroll-area/scroll-area.mdx +8 -8
- package/components/ui/search/search.mdx +8 -8
- package/components/ui/select/select.mdx +8 -8
- package/components/ui/select/select.stories.tsx +9 -9
- package/components/ui/separator/separator.mdx +8 -8
- package/components/ui/sheet/sheet.mdx +8 -8
- package/components/ui/sheet/sheet.stories.tsx +95 -95
- package/components/ui/simple-map/simple-map.mdx +8 -8
- package/components/ui/simple-map/simple-map.stories.tsx +48 -48
- package/components/ui/skeleton/skeleton.mdx +8 -8
- package/components/ui/slider/slider.mdx +8 -8
- package/components/ui/sonner/sonner.mdx +8 -8
- package/components/ui/stats-card/stats-card.mdx +8 -8
- package/components/ui/stepper/index.ts +3 -1
- package/components/ui/stepper/stepper.mdx +8 -8
- package/components/ui/stepper/stepper.stories.tsx +116 -0
- package/components/ui/stepper/stepper.tsx +4 -4
- package/components/ui/stepper/use-stepper.ts +137 -0
- package/components/ui/switch/switch.mdx +8 -8
- package/components/ui/switch/switch.stories.tsx +20 -20
- package/components/ui/table/table.mdx +8 -8
- package/components/ui/tabs/tabs.mdx +8 -8
- package/components/ui/tabs/tabs.stories.tsx +26 -26
- package/components/ui/textarea/textarea.mdx +8 -8
- package/components/ui/timeline/timeline.mdx +8 -8
- package/components/ui/toggle/toggle.mdx +8 -8
- package/components/ui/toggle-group/toggle-group.mdx +8 -8
- package/components/ui/tooltip/tooltip.mdx +8 -8
- package/components/ui/tree-view/index.ts +4 -1
- package/components/ui/tree-view/tree-view.mdx +8 -8
- package/components/ui/tree-view/tree-view.stories.tsx +110 -4
- package/components/ui/tree-view/tree-view.tsx +17 -125
- package/components/ui/tree-view/use-tree-view.ts +229 -0
- package/components.json +1512 -1512
- package/contexts/ApiKeyContext.tsx +72 -72
- package/contexts/BrandColorsContext.tsx +26 -26
- package/contexts/LanguageContext.tsx +13 -13
- package/contexts/LayoutContext.test.tsx +11 -11
- package/contexts/LayoutContext.tsx +29 -29
- package/contexts/ThemeContext.tsx +26 -26
- package/contexts/theme-data.ts +4 -4
- package/dist/{AssistantChart-CVzmmhx4.js β AssistantChart-C_hwFRRr.js} +4 -4
- package/dist/{AssistantChart-BAx9VQvb.cjs β AssistantChart-CldVCVDe.cjs} +311 -94
- package/dist/{AssistantChart-CVko2A1W.js β AssistantChart-Cu3m7RBo.js} +314 -97
- package/dist/{AssistantChart-9w31gdAb.cjs β AssistantChart-DoZCyS5r.cjs} +4 -4
- package/dist/AudioPlayer-B1lt5cPl.cjs +989 -0
- package/dist/AudioPlayer-BZ7bibzU.cjs +982 -0
- package/dist/AudioPlayer-C12BjQBV.cjs +997 -0
- package/dist/AudioPlayer-DMcG_c7L.js +990 -0
- package/dist/AudioPlayer-DcFKRJE_.js +998 -0
- package/dist/AudioPlayer-e8LfNoqO.js +983 -0
- package/dist/{xertica-assistant-Qp3ydksa.cjs β CodeBlock-7TTgmdGG.cjs} +263 -51
- package/dist/{xertica-assistant-gnCJdcZY.js β CodeBlock-BeSt1h5P.js} +219 -7
- package/dist/CodeBlock-BgfYL_rD.cjs +2094 -0
- package/dist/CodeBlock-BlcqlA9M.cjs +2094 -0
- package/dist/CodeBlock-Bnmeu5ez.cjs +2094 -0
- package/dist/CodeBlock-BtfPlbAI.js +2078 -0
- package/dist/CodeBlock-CIySIuYr.js +2078 -0
- package/dist/CodeBlock-CuPtUM-7.cjs +2094 -0
- package/dist/CodeBlock-D6ffWXgc.js +2078 -0
- package/dist/CodeBlock-D8dcwbit.cjs +2094 -0
- package/dist/CodeBlock-DMZrFnlw.cjs +2094 -0
- package/dist/CodeBlock-DlBehYN8.js +2078 -0
- package/dist/CodeBlock-DnYNI8rQ.js +2078 -0
- package/dist/CodeBlock-DvKWbSnE.cjs +2094 -0
- package/dist/CodeBlock-DwMCfkFY.js +2078 -0
- package/dist/CodeBlock-Dy6CNYyj.js +2078 -0
- package/dist/CodeBlock-U1pPOQI7.cjs +2094 -0
- package/dist/CodeBlock-f_GpNhEB.js +2078 -0
- package/dist/CodeBlock-oB6u8nI1.js +2078 -0
- package/dist/CodeBlock-tZC31B73.cjs +2094 -0
- package/dist/ImageWithFallback-CGtidP6B.cjs +4542 -0
- package/dist/ImageWithFallback-lsg3pdFg.js +4508 -0
- package/dist/LanguageSelector-B5YfbHra.js +231 -0
- package/dist/LanguageSelector-D6uacAIM.cjs +230 -0
- package/dist/LayoutContext-BAql6ZRY.js +97 -0
- package/dist/LayoutContext-BvK-ggDa.cjs +96 -0
- package/dist/ThemeContext-BoH4NLfN.js +734 -0
- package/dist/{ThemeContext-BbBNoFTG.js β ThemeContext-C2EwAPDt.js} +2 -2
- package/dist/ThemeContext-r69W20Xg.cjs +733 -0
- package/dist/{ThemeContext-Cmr8Ex8H.cjs β ThemeContext-vTjumZeM.cjs} +2 -2
- package/dist/{VerifyEmailPage-BE-L9mB7.js β VerifyEmailPage-C0c2e5n0.js} +7 -7
- package/dist/{VerifyEmailPage-DMBh4NM9.cjs β VerifyEmailPage-CYXtbKi3.cjs} +1 -1
- package/dist/{VerifyEmailPage-CR7kb5df.cjs β VerifyEmailPage-Cwi3kbol.cjs} +7 -7
- package/dist/{VerifyEmailPage-CdYPSJoO.js β VerifyEmailPage-DvMLZgFt.js} +1 -1
- package/dist/XerticaOrbe-KL1RBHzw.cjs +1354 -0
- package/dist/XerticaOrbe-zwS1p2a8.js +1355 -0
- package/dist/XerticaProvider-6btlAlzc.js +17 -0
- package/dist/XerticaProvider-BNoNOxQ5.cjs +16 -0
- package/dist/XerticaProvider-BlY2limY.cjs +38 -0
- package/dist/{XerticaProvider-BITjgC5p.js β XerticaProvider-CEoWMTxu.js} +2 -2
- package/dist/{XerticaProvider-By8q3Roe.cjs β XerticaProvider-CllrbMEJ.cjs} +2 -2
- package/dist/XerticaProvider-DDuiIcKo.js +39 -0
- package/dist/XerticaProvider-cI9hSs27.cjs +38 -0
- package/dist/XerticaProvider-hSwhNQex.js +39 -0
- package/dist/{alert-dialog-yckpaOpy.cjs β alert-dialog-DSKByiKZ.cjs} +3 -3
- package/dist/{alert-dialog-iDe5VE5o.js β alert-dialog-s-vmNkJ_.js} +3 -3
- package/dist/assistant.cjs.js +2 -1
- package/dist/assistant.es.js +3 -2
- package/dist/brand.cjs.js +1 -1
- package/dist/brand.es.js +1 -1
- package/dist/breadcrumb-CqJ7bHY5.js +161 -0
- package/dist/breadcrumb-m9Hb2_XN.cjs +177 -0
- package/dist/cli.js +14 -8
- package/dist/components/assistant/xertica-assistant/index.d.ts +2 -0
- package/dist/components/assistant/xertica-assistant/use-assistant.d.ts +126 -0
- package/dist/components/assistant/xertica-assistant/xertica-assistant.d.ts +7 -2
- package/dist/components/blocks/audio-player/AudioPlayer.d.ts +35 -0
- package/dist/components/blocks/audio-player/index.d.ts +1 -0
- package/dist/components/blocks/document-editor/DocumentEditor.d.ts +26 -0
- package/dist/components/blocks/document-editor/index.d.ts +1 -0
- package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +41 -0
- package/dist/components/blocks/podcast-player/index.d.ts +1 -0
- package/dist/components/layout/sidebar/index.d.ts +2 -0
- package/dist/components/layout/sidebar/sidebar.d.ts +80 -0
- package/dist/components/layout/sidebar/use-sidebar.d.ts +22 -0
- package/dist/components/shared/layout-constants.d.ts +1 -1
- package/dist/components/ui/button/button.d.ts +1 -1
- package/dist/components/ui/chart/chart.d.ts +162 -5
- package/dist/components/ui/file-upload/file-upload.d.ts +2 -0
- package/dist/components/ui/file-upload/index.d.ts +1 -0
- package/dist/components/ui/file-upload/use-file-upload.d.ts +49 -0
- package/dist/components/ui/pagination/index.d.ts +2 -0
- package/dist/components/ui/pagination/use-pagination.d.ts +78 -0
- package/dist/components/ui/rich-text-editor/index.d.ts +2 -0
- package/dist/components/ui/rich-text-editor/use-rich-text-editor.d.ts +107 -0
- package/dist/components/ui/stepper/index.d.ts +3 -1
- package/dist/components/ui/stepper/stepper.d.ts +2 -2
- package/dist/components/ui/stepper/use-stepper.d.ts +60 -0
- package/dist/components/ui/tree-view/index.d.ts +4 -1
- package/dist/components/ui/tree-view/tree-view.d.ts +4 -6
- package/dist/components/ui/tree-view/use-tree-view.d.ts +60 -0
- package/dist/dropdown-menu-BDB5CmQs.cjs +247 -0
- package/dist/dropdown-menu-DQidbKBD.js +231 -0
- package/dist/google-maps-loader-BFWp6VPd.js +287 -0
- package/dist/{google-maps-loader-t2IlYBzw.js β google-maps-loader-CTYySAun.js} +4 -0
- package/dist/{google-maps-loader-BqsYL48U.cjs β google-maps-loader-Y-QkD-Li.cjs} +5 -0
- package/dist/google-maps-loader-eS3uQ5TA.cjs +287 -0
- package/dist/header-Cgy6vYPk.cjs +731 -0
- package/dist/header-DRlT4jgI.js +715 -0
- package/dist/header-Dux00SI4.cjs +731 -0
- package/dist/header-EkGKXPsD.js +715 -0
- package/dist/header-WfEywpyc.cjs +731 -0
- package/dist/header-tifNQn2U.js +715 -0
- package/dist/hooks.cjs.js +1 -1
- package/dist/hooks.es.js +1 -1
- package/dist/index-BhapVLVj.js +8 -0
- package/dist/{index-D3RLKRAs.cjs β index-COtD8bRW.cjs} +1 -1
- package/dist/index-D6fxYEY8.cjs +7 -0
- package/dist/index-DW5tYe26.js +8 -0
- package/dist/index.cjs.js +19 -8
- package/dist/index.es.js +39 -28
- package/dist/index.umd.js +1043 -470
- package/dist/input-2R4loU86.js +127 -0
- package/dist/input-DWANSKGb.cjs +145 -0
- package/dist/layout.cjs.js +89 -1
- package/dist/layout.es.js +90 -2
- package/dist/pages.cjs.js +1 -1
- package/dist/pages.es.js +1 -1
- package/dist/rich-text-editor-0mraWT5y.cjs +2376 -0
- package/dist/rich-text-editor-B6jMRLzk.cjs +1939 -0
- package/dist/rich-text-editor-B8_oYcIR.js +1730 -0
- package/dist/rich-text-editor-B9UbSXNb.js +1203 -0
- package/dist/rich-text-editor-BYuRBNBU.js +2373 -0
- package/dist/rich-text-editor-Bb9pySTs.cjs +2374 -0
- package/dist/rich-text-editor-BcL6L3cm.cjs +2374 -0
- package/dist/rich-text-editor-BoVZYtTs.cjs +2391 -0
- package/dist/rich-text-editor-CPV1lEPH.cjs +1748 -0
- package/dist/rich-text-editor-CoKqbCtu.cjs +1799 -0
- package/dist/rich-text-editor-Cw56T_mB.js +2356 -0
- package/dist/rich-text-editor-Cyt8qs2b.js +1921 -0
- package/dist/rich-text-editor-D6H84OcX.cjs +1220 -0
- package/dist/rich-text-editor-D76gD-QI.js +2328 -0
- package/dist/rich-text-editor-DKkokOnA.js +1781 -0
- package/dist/rich-text-editor-DNsdpN64.cjs +2359 -0
- package/dist/rich-text-editor-DfG8bCyY.js +2358 -0
- package/dist/rich-text-editor-DgF8s7xW.js +2949 -0
- package/dist/rich-text-editor-Dxjw31Z4.js +2341 -0
- package/dist/rich-text-editor-DzP0Epmb.js +2356 -0
- package/dist/rich-text-editor-mWoaSCE4.cjs +2966 -0
- package/dist/rich-text-editor-skplNlBM.cjs +2345 -0
- package/dist/select-Bkbr0f-Z.cjs +162 -0
- package/dist/select-CvIVdX2n.js +145 -0
- package/dist/sidebar-CK_0ZQHj.cjs +803 -0
- package/dist/sidebar-CUuOvYhK.js +787 -0
- package/dist/slider-Bc5Hd0y1.js +56 -0
- package/dist/slider-N7hFFj6X.cjs +73 -0
- package/dist/tooltip-Ded96neP.cjs +137 -0
- package/dist/tooltip-HDOoD2-0.js +120 -0
- package/dist/ui.cjs.js +14 -4
- package/dist/ui.es.js +26 -16
- package/dist/use-mobile-B0hNy_Y6.cjs +4303 -0
- package/dist/use-mobile-BXuYROXM.js +4202 -0
- package/dist/use-mobile-Bbd51ASU.cjs +4392 -0
- package/dist/use-mobile-Bk6CX-TC.js +4359 -0
- package/dist/use-mobile-BvYdisLP.js +4202 -0
- package/dist/use-mobile-BzuxjzNX.cjs +4392 -0
- package/dist/use-mobile-CG2-SdXV.cjs +4235 -0
- package/dist/use-mobile-CKb5pqTs.js +4269 -0
- package/dist/use-mobile-CYuAuGDl.js +4202 -0
- package/dist/use-mobile-CaENcqm-.js +4508 -0
- package/dist/use-mobile-CbrYgJGJ.js +4203 -0
- package/dist/use-mobile-DMOvImGQ.cjs +4542 -0
- package/dist/use-mobile-DRB3BQgD.cjs +4235 -0
- package/dist/use-mobile-DZvv7QMR.js +4359 -0
- package/dist/use-mobile-DdI_TXam.cjs +4235 -0
- package/dist/use-mobile-DlceKf8a.js +4359 -0
- package/dist/use-mobile-DsOnow1o.cjs +4236 -0
- package/dist/use-mobile-Kcj6jSnK.cjs +4392 -0
- package/dist/use-mobile-bnKcua_i.js +4202 -0
- package/dist/use-mobile-ncXBeE2z.cjs +4235 -0
- package/dist/{xertica-assistant-B1IaHXnB.cjs β xertica-assistant-dyP7KHM5.cjs} +533 -392
- package/dist/{xertica-assistant-DPsESB6t.js β xertica-assistant-yX1CFBBo.js} +535 -394
- package/dist/xertica-ui.css +2 -2
- package/docs/ai-usage.md +28 -10
- package/docs/architecture.md +76 -0
- package/docs/components/assistant.md +159 -0
- package/docs/components/calendar.md +154 -154
- package/docs/components/card-patterns.md +337 -337
- package/docs/components/card.md +235 -235
- package/docs/components/chart.md +354 -39
- package/docs/components/file-upload.md +119 -2
- package/docs/components/map.md +84 -84
- package/docs/components/pagination.md +187 -0
- package/docs/components/rich-text-editor.md +164 -0
- package/docs/components/sidebar.md +153 -4
- package/docs/components/stepper.md +157 -12
- package/docs/components/tree-view.md +164 -6
- package/docs/components/xertica-provider.md +24 -24
- package/docs/decision-tree.md +287 -287
- package/docs/getting-started.md +1 -1
- package/docs/guidelines.md +14 -8
- package/docs/layout.md +2 -2
- package/docs/llms.md +4 -4
- package/guidelines/Guidelines.md +252 -250
- package/hooks/useTheme.ts +3 -3
- package/imports/Podcast.tsx +388 -388
- package/imports/XerticaAi.tsx +45 -45
- package/imports/XerticaX.tsx +19 -19
- package/imports/svg-aueiaqngck.ts +11 -11
- package/imports/svg-v9krss1ozd.ts +16 -16
- package/imports/svg-vhrdofe3qe.ts +5 -5
- package/llms-compact.txt +327 -327
- package/llms.txt +160 -160
- package/package.json +203 -203
- package/styles/xertica/app-overrides/chat.css +61 -61
- package/styles/xertica/app-overrides/scrollbar.css +33 -33
- package/styles/xertica/integrations/google-maps.css +76 -76
- package/styles/xertica/integrations/sonner.css +73 -73
- package/styles/xertica/tokens.css +41 -12
- package/templates/CLAUDE.md +182 -172
- package/templates/guidelines/Guidelines.md +325 -313
- package/templates/package.json +3 -3
- package/templates/src/features/auth/index.ts +4 -4
- package/templates/src/features/auth/ui/AuthPageShell.tsx +34 -34
- package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +70 -70
- package/templates/src/features/auth/ui/LoginContent.tsx +90 -90
- package/templates/src/features/auth/ui/ResetPasswordContent.tsx +151 -151
- package/templates/src/features/auth/ui/SocialLoginButtons.tsx +59 -59
- package/templates/src/features/auth/ui/VerifyEmailContent.tsx +82 -82
- package/templates/src/features/home/index.ts +1 -1
- package/templates/src/features/home/ui/HomeContent.tsx +100 -100
- package/templates/src/features/template/index.ts +5 -5
- package/templates/src/features/template/ui/CrudTemplate.tsx +3 -3
- package/templates/src/features/template/ui/DashboardTemplate.tsx +3 -3
- package/templates/src/features/template/ui/FormTemplate.tsx +120 -120
- package/templates/src/features/template/ui/LoginTemplate.tsx +3 -3
- package/templates/src/pages/AssistantPage.tsx +328 -328
- package/templates/src/pages/ForgotPasswordPage.tsx +6 -6
- package/templates/src/pages/HomePage.tsx +57 -57
- package/templates/src/pages/LoginPage.tsx +10 -10
- package/templates/src/pages/ResetPasswordPage.tsx +6 -6
- package/templates/src/pages/TemplatePage.tsx +30 -30
- package/templates/src/pages/VerifyEmailPage.tsx +6 -6
- package/templates/src/shared/config/navigation.ts +20 -20
- package/templates/src/shared/lib/auth.ts +20 -20
- package/templates/src/shared/types/auth.ts +3 -3
- package/templates/src/styles/xertica/tokens.css +39 -10
- package/templates/tsconfig.json +5 -5
- package/utils/gemini.ts +140 -140
- package/dist/VerifyEmailPage-Bae2cBXT.cjs +0 -2827
- package/dist/VerifyEmailPage-CbgjOF0v.js +0 -2828
- package/dist/index-CkTUgOwX.js +0 -8
|
@@ -1,245 +1,245 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import {
|
|
3
|
-
Card,
|
|
4
|
-
CardHeader,
|
|
5
|
-
CardFooter,
|
|
6
|
-
CardTitle,
|
|
7
|
-
CardDescription,
|
|
8
|
-
CardContent,
|
|
9
|
-
CardAction,
|
|
10
|
-
} from './card';
|
|
11
|
-
import { Button } from '../button';
|
|
12
|
-
import { Input } from '../input';
|
|
13
|
-
import { Label } from '../label';
|
|
14
|
-
import { Badge } from '../badge';
|
|
15
|
-
import { Avatar, AvatarFallback } from '../avatar';
|
|
16
|
-
import { Separator } from '../separator';
|
|
17
|
-
import {
|
|
18
|
-
Bell, DollarSign, Download, ExternalLink,
|
|
19
|
-
MoreHorizontal, Projector, Settings as SettingsIcon, Users,
|
|
20
|
-
} from 'lucide-react';
|
|
21
|
-
import React from 'react';
|
|
22
|
-
|
|
23
|
-
const meta: Meta<typeof Card> = {
|
|
24
|
-
title: 'UI/Card',
|
|
25
|
-
component: Card,
|
|
26
|
-
render: (args) => <Card {...args} />,
|
|
27
|
-
decorators: [
|
|
28
|
-
(Story) => (
|
|
29
|
-
<div className="bg-muted rounded-xl p-8 w-full flex items-center justify-center">
|
|
30
|
-
<Story />
|
|
31
|
-
</div>
|
|
32
|
-
),
|
|
33
|
-
],
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export default meta;
|
|
37
|
-
type Story = StoryObj<typeof Card>;
|
|
38
|
-
|
|
39
|
-
// βββ Estrutura bΓ‘sica βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
40
|
-
|
|
41
|
-
export const Default: Story = {
|
|
42
|
-
render: (args) => (
|
|
43
|
-
<Card {...args} className="w-[350px]">
|
|
44
|
-
<CardHeader>
|
|
45
|
-
<CardTitle>Detalhes do Projeto</CardTitle>
|
|
46
|
-
<CardDescription>Gerencie as configuraΓ§Γ΅es do seu workspace.</CardDescription>
|
|
47
|
-
</CardHeader>
|
|
48
|
-
<CardContent>
|
|
49
|
-
<p className="text-sm text-muted-foreground">
|
|
50
|
-
Este workspace contΓ©m todos os assets e documentaΓ§Γ΅es do projeto Xertica UI.
|
|
51
|
-
</p>
|
|
52
|
-
</CardContent>
|
|
53
|
-
<CardFooter className="flex justify-between">
|
|
54
|
-
<Button variant="outline">Descartar</Button>
|
|
55
|
-
<Button>Salvar</Button>
|
|
56
|
-
</CardFooter>
|
|
57
|
-
</Card>
|
|
58
|
-
),
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
// βββ Com CardAction βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
62
|
-
|
|
63
|
-
export const WithAction: Story = {
|
|
64
|
-
render: () => (
|
|
65
|
-
<Card className="w-[380px]">
|
|
66
|
-
<CardHeader>
|
|
67
|
-
<CardTitle>NotificaΓ§Γ΅es</CardTitle>
|
|
68
|
-
<CardDescription>Gerencie suas preferΓͺncias de alerta.</CardDescription>
|
|
69
|
-
<CardAction>
|
|
70
|
-
<Button variant="ghost" size="icon">
|
|
71
|
-
<MoreHorizontal className="size-4" />
|
|
72
|
-
</Button>
|
|
73
|
-
</CardAction>
|
|
74
|
-
</CardHeader>
|
|
75
|
-
<CardContent className="space-y-3">
|
|
76
|
-
{[
|
|
77
|
-
{ label: "Deploy concluΓdo", desc: "ProduΓ§Γ£o atualizada", badge: "Sucesso", v: "success" as const },
|
|
78
|
-
{ label: "RevisΓ£o pendente", desc: "PR #42 aguarda vocΓͺ", badge: "Info", v: "info" as const },
|
|
79
|
-
{ label: "Erro detectado", desc: "Auth service β 503", badge: "Erro", v: "destructive" as const },
|
|
80
|
-
].map((item) => (
|
|
81
|
-
<div key={item.label} className="flex items-center justify-between gap-2">
|
|
82
|
-
<div>
|
|
83
|
-
<p className="text-sm font-medium">{item.label}</p>
|
|
84
|
-
<p className="text-xs text-muted-foreground">{item.desc}</p>
|
|
85
|
-
</div>
|
|
86
|
-
<Badge variant={item.v}>{item.badge}</Badge>
|
|
87
|
-
</div>
|
|
88
|
-
))}
|
|
89
|
-
</CardContent>
|
|
90
|
-
<CardFooter>
|
|
91
|
-
<Button variant="outline" size="sm" className="w-full">
|
|
92
|
-
<Bell className="size-4" /> Ver todas
|
|
93
|
-
</Button>
|
|
94
|
-
</CardFooter>
|
|
95
|
-
</Card>
|
|
96
|
-
),
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
// βββ Stats ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
100
|
-
|
|
101
|
-
export const Stats: Story = {
|
|
102
|
-
render: () => (
|
|
103
|
-
<div className="grid gap-4 md:grid-cols-3 w-full max-w-3xl">
|
|
104
|
-
<Card>
|
|
105
|
-
<CardHeader>
|
|
106
|
-
<CardTitle className="text-sm font-medium">Receita Total</CardTitle>
|
|
107
|
-
<CardAction><DollarSign className="size-4 text-muted-foreground" /></CardAction>
|
|
108
|
-
</CardHeader>
|
|
109
|
-
<CardContent>
|
|
110
|
-
<p className="text-2xl font-bold">R$ 45.231</p>
|
|
111
|
-
<p className="text-xs text-muted-foreground">+20.1% vs mΓͺs anterior</p>
|
|
112
|
-
</CardContent>
|
|
113
|
-
</Card>
|
|
114
|
-
<Card>
|
|
115
|
-
<CardHeader>
|
|
116
|
-
<CardTitle className="text-sm font-medium">Assinantes</CardTitle>
|
|
117
|
-
<CardAction><Users className="size-4 text-muted-foreground" /></CardAction>
|
|
118
|
-
</CardHeader>
|
|
119
|
-
<CardContent>
|
|
120
|
-
<p className="text-2xl font-bold">+2.350</p>
|
|
121
|
-
<p className="text-xs text-muted-foreground">+180.1% vs mΓͺs anterior</p>
|
|
122
|
-
</CardContent>
|
|
123
|
-
</Card>
|
|
124
|
-
<Card>
|
|
125
|
-
<CardHeader>
|
|
126
|
-
<CardTitle className="text-sm font-medium">Projetos Ativos</CardTitle>
|
|
127
|
-
<CardAction><Projector className="size-4 text-muted-foreground" /></CardAction>
|
|
128
|
-
</CardHeader>
|
|
129
|
-
<CardContent>
|
|
130
|
-
<p className="text-2xl font-bold">12.234</p>
|
|
131
|
-
<p className="text-xs text-muted-foreground">+19% vs mΓͺs anterior</p>
|
|
132
|
-
</CardContent>
|
|
133
|
-
</Card>
|
|
134
|
-
</div>
|
|
135
|
-
),
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
// βββ FormulΓ‘rio βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
139
|
-
|
|
140
|
-
export const Form: Story = {
|
|
141
|
-
render: () => (
|
|
142
|
-
<Card className="w-[400px]">
|
|
143
|
-
<CardHeader>
|
|
144
|
-
<CardTitle>Acesso Γ Conta</CardTitle>
|
|
145
|
-
<CardDescription>Insira suas credenciais para acessar a plataforma.</CardDescription>
|
|
146
|
-
</CardHeader>
|
|
147
|
-
<CardContent className="space-y-4">
|
|
148
|
-
<div className="space-y-2">
|
|
149
|
-
<Label htmlFor="email">Email</Label>
|
|
150
|
-
<Input id="email" placeholder="nome@empresa.com" />
|
|
151
|
-
</div>
|
|
152
|
-
<div className="space-y-2">
|
|
153
|
-
<Label htmlFor="password">Senha</Label>
|
|
154
|
-
<Input id="password" type="password" />
|
|
155
|
-
</div>
|
|
156
|
-
</CardContent>
|
|
157
|
-
<CardFooter className="flex-col gap-2">
|
|
158
|
-
<Button className="w-full">Entrar</Button>
|
|
159
|
-
<Button variant="ghost" size="sm" className="w-full text-muted-foreground">
|
|
160
|
-
Esqueci minha senha
|
|
161
|
-
</Button>
|
|
162
|
-
</CardFooter>
|
|
163
|
-
</Card>
|
|
164
|
-
),
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
// βββ Perfil / Team Member βββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
168
|
-
|
|
169
|
-
export const TeamMember: Story = {
|
|
170
|
-
render: () => (
|
|
171
|
-
<div className="flex gap-4 flex-wrap justify-center">
|
|
172
|
-
{[
|
|
173
|
-
{ name: "Ana Souza", role: "Frontend Engineer", initials: "AS", projects: 12, status: "Online" as const, sv: "success" as const },
|
|
174
|
-
{ name: "Bruno Lima", role: "Design System", initials: "BL", projects: 8, status: "Ausente" as const, sv: "warning" as const },
|
|
175
|
-
{ name: "Carla Rocha", role: "Product Designer", initials: "CR", projects: 15, status: "Ocupada" as const, sv: "destructive" as const },
|
|
176
|
-
].map((member) => (
|
|
177
|
-
<Card key={member.name} className="w-52">
|
|
178
|
-
<CardContent className="pt-6 flex flex-col items-center text-center gap-3">
|
|
179
|
-
<Avatar className="size-14">
|
|
180
|
-
<AvatarFallback className="text-base font-semibold">{member.initials}</AvatarFallback>
|
|
181
|
-
</Avatar>
|
|
182
|
-
<div>
|
|
183
|
-
<p className="font-semibold text-sm">{member.name}</p>
|
|
184
|
-
<p className="text-xs text-muted-foreground">{member.role}</p>
|
|
185
|
-
</div>
|
|
186
|
-
<Badge variant={member.sv}>{member.status}</Badge>
|
|
187
|
-
<Separator />
|
|
188
|
-
<p className="text-xs text-muted-foreground">{member.projects} projetos</p>
|
|
189
|
-
<div className="flex gap-2 w-full">
|
|
190
|
-
<Button variant="outline" size="sm" className="flex-1 text-xs">Perfil</Button>
|
|
191
|
-
<Button size="sm" className="flex-1 text-xs">Contato</Button>
|
|
192
|
-
</div>
|
|
193
|
-
</CardContent>
|
|
194
|
-
</Card>
|
|
195
|
-
))}
|
|
196
|
-
</div>
|
|
197
|
-
),
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
// βββ ConfiguraΓ§Γ΅es ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
201
|
-
|
|
202
|
-
export const SettingsCard: Story = {
|
|
203
|
-
render: () => (
|
|
204
|
-
<Card className="w-[480px]">
|
|
205
|
-
<CardHeader>
|
|
206
|
-
<CardTitle>PreferΓͺncias da Conta</CardTitle>
|
|
207
|
-
<CardDescription>Ajuste as configuraΓ§Γ΅es do seu perfil e seguranΓ§a.</CardDescription>
|
|
208
|
-
<CardAction>
|
|
209
|
-
<Button variant="ghost" size="icon">
|
|
210
|
-
<SettingsIcon className="size-4" />
|
|
211
|
-
</Button>
|
|
212
|
-
</CardAction>
|
|
213
|
-
</CardHeader>
|
|
214
|
-
<CardContent className="space-y-0 p-0">
|
|
215
|
-
{[
|
|
216
|
-
{ label: "NotificaΓ§Γ΅es por email", desc: "Receba alertas de deploy e reviews", active: true },
|
|
217
|
-
{ label: "AutenticaΓ§Γ£o 2FA", desc: "Camada extra de seguranΓ§a", active: true },
|
|
218
|
-
{ label: "Modo escuro automΓ‘tico", desc: "Segue o sistema operacional", active: false },
|
|
219
|
-
{ label: "API pΓΊblica", desc: "Permite acesso externo via token", active: false },
|
|
220
|
-
].map((item, i, arr) => (
|
|
221
|
-
<div key={item.label}>
|
|
222
|
-
<div className="flex items-center justify-between px-6 py-4">
|
|
223
|
-
<div>
|
|
224
|
-
<p className="text-sm font-medium">{item.label}</p>
|
|
225
|
-
<p className="text-xs text-muted-foreground">{item.desc}</p>
|
|
226
|
-
</div>
|
|
227
|
-
<Badge variant={item.active ? "success" : "secondary"}>
|
|
228
|
-
{item.active ? "Ativo" : "Inativo"}
|
|
229
|
-
</Badge>
|
|
230
|
-
</div>
|
|
231
|
-
{i < arr.length - 1 && <Separator />}
|
|
232
|
-
</div>
|
|
233
|
-
))}
|
|
234
|
-
</CardContent>
|
|
235
|
-
<CardFooter className="flex justify-between">
|
|
236
|
-
<Button variant="ghost" size="sm" className="gap-1.5">
|
|
237
|
-
<ExternalLink className="size-3.5" /> DocumentaΓ§Γ£o
|
|
238
|
-
</Button>
|
|
239
|
-
<Button size="sm" className="gap-1.5">
|
|
240
|
-
<Download className="size-3.5" /> Exportar config
|
|
241
|
-
</Button>
|
|
242
|
-
</CardFooter>
|
|
243
|
-
</Card>
|
|
244
|
-
),
|
|
245
|
-
};
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import {
|
|
3
|
+
Card,
|
|
4
|
+
CardHeader,
|
|
5
|
+
CardFooter,
|
|
6
|
+
CardTitle,
|
|
7
|
+
CardDescription,
|
|
8
|
+
CardContent,
|
|
9
|
+
CardAction,
|
|
10
|
+
} from './card';
|
|
11
|
+
import { Button } from '../button';
|
|
12
|
+
import { Input } from '../input';
|
|
13
|
+
import { Label } from '../label';
|
|
14
|
+
import { Badge } from '../badge';
|
|
15
|
+
import { Avatar, AvatarFallback } from '../avatar';
|
|
16
|
+
import { Separator } from '../separator';
|
|
17
|
+
import {
|
|
18
|
+
Bell, DollarSign, Download, ExternalLink,
|
|
19
|
+
MoreHorizontal, Projector, Settings as SettingsIcon, Users,
|
|
20
|
+
} from 'lucide-react';
|
|
21
|
+
import React from 'react';
|
|
22
|
+
|
|
23
|
+
const meta: Meta<typeof Card> = {
|
|
24
|
+
title: 'UI/Card',
|
|
25
|
+
component: Card,
|
|
26
|
+
render: (args) => <Card {...args} />,
|
|
27
|
+
decorators: [
|
|
28
|
+
(Story) => (
|
|
29
|
+
<div className="bg-muted rounded-xl p-8 w-full flex items-center justify-center">
|
|
30
|
+
<Story />
|
|
31
|
+
</div>
|
|
32
|
+
),
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export default meta;
|
|
37
|
+
type Story = StoryObj<typeof Card>;
|
|
38
|
+
|
|
39
|
+
// βββ Estrutura bΓ‘sica βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
40
|
+
|
|
41
|
+
export const Default: Story = {
|
|
42
|
+
render: (args) => (
|
|
43
|
+
<Card {...args} className="w-[350px]">
|
|
44
|
+
<CardHeader>
|
|
45
|
+
<CardTitle>Detalhes do Projeto</CardTitle>
|
|
46
|
+
<CardDescription>Gerencie as configuraΓ§Γ΅es do seu workspace.</CardDescription>
|
|
47
|
+
</CardHeader>
|
|
48
|
+
<CardContent>
|
|
49
|
+
<p className="text-sm text-muted-foreground">
|
|
50
|
+
Este workspace contΓ©m todos os assets e documentaΓ§Γ΅es do projeto Xertica UI.
|
|
51
|
+
</p>
|
|
52
|
+
</CardContent>
|
|
53
|
+
<CardFooter className="flex justify-between">
|
|
54
|
+
<Button variant="outline">Descartar</Button>
|
|
55
|
+
<Button>Salvar</Button>
|
|
56
|
+
</CardFooter>
|
|
57
|
+
</Card>
|
|
58
|
+
),
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// βββ Com CardAction βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
62
|
+
|
|
63
|
+
export const WithAction: Story = {
|
|
64
|
+
render: () => (
|
|
65
|
+
<Card className="w-[380px]">
|
|
66
|
+
<CardHeader>
|
|
67
|
+
<CardTitle>NotificaΓ§Γ΅es</CardTitle>
|
|
68
|
+
<CardDescription>Gerencie suas preferΓͺncias de alerta.</CardDescription>
|
|
69
|
+
<CardAction>
|
|
70
|
+
<Button variant="ghost" size="icon">
|
|
71
|
+
<MoreHorizontal className="size-4" />
|
|
72
|
+
</Button>
|
|
73
|
+
</CardAction>
|
|
74
|
+
</CardHeader>
|
|
75
|
+
<CardContent className="space-y-3">
|
|
76
|
+
{[
|
|
77
|
+
{ label: "Deploy concluΓdo", desc: "ProduΓ§Γ£o atualizada", badge: "Sucesso", v: "success" as const },
|
|
78
|
+
{ label: "RevisΓ£o pendente", desc: "PR #42 aguarda vocΓͺ", badge: "Info", v: "info" as const },
|
|
79
|
+
{ label: "Erro detectado", desc: "Auth service β 503", badge: "Erro", v: "destructive" as const },
|
|
80
|
+
].map((item) => (
|
|
81
|
+
<div key={item.label} className="flex items-center justify-between gap-2">
|
|
82
|
+
<div>
|
|
83
|
+
<p className="text-sm font-medium">{item.label}</p>
|
|
84
|
+
<p className="text-xs text-muted-foreground">{item.desc}</p>
|
|
85
|
+
</div>
|
|
86
|
+
<Badge variant={item.v}>{item.badge}</Badge>
|
|
87
|
+
</div>
|
|
88
|
+
))}
|
|
89
|
+
</CardContent>
|
|
90
|
+
<CardFooter>
|
|
91
|
+
<Button variant="outline" size="sm" className="w-full">
|
|
92
|
+
<Bell className="size-4" /> Ver todas
|
|
93
|
+
</Button>
|
|
94
|
+
</CardFooter>
|
|
95
|
+
</Card>
|
|
96
|
+
),
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
// βββ Stats ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
100
|
+
|
|
101
|
+
export const Stats: Story = {
|
|
102
|
+
render: () => (
|
|
103
|
+
<div className="grid gap-4 md:grid-cols-3 w-full max-w-3xl">
|
|
104
|
+
<Card>
|
|
105
|
+
<CardHeader>
|
|
106
|
+
<CardTitle className="text-sm font-medium">Receita Total</CardTitle>
|
|
107
|
+
<CardAction><DollarSign className="size-4 text-muted-foreground" /></CardAction>
|
|
108
|
+
</CardHeader>
|
|
109
|
+
<CardContent>
|
|
110
|
+
<p className="text-2xl font-bold">R$ 45.231</p>
|
|
111
|
+
<p className="text-xs text-muted-foreground">+20.1% vs mΓͺs anterior</p>
|
|
112
|
+
</CardContent>
|
|
113
|
+
</Card>
|
|
114
|
+
<Card>
|
|
115
|
+
<CardHeader>
|
|
116
|
+
<CardTitle className="text-sm font-medium">Assinantes</CardTitle>
|
|
117
|
+
<CardAction><Users className="size-4 text-muted-foreground" /></CardAction>
|
|
118
|
+
</CardHeader>
|
|
119
|
+
<CardContent>
|
|
120
|
+
<p className="text-2xl font-bold">+2.350</p>
|
|
121
|
+
<p className="text-xs text-muted-foreground">+180.1% vs mΓͺs anterior</p>
|
|
122
|
+
</CardContent>
|
|
123
|
+
</Card>
|
|
124
|
+
<Card>
|
|
125
|
+
<CardHeader>
|
|
126
|
+
<CardTitle className="text-sm font-medium">Projetos Ativos</CardTitle>
|
|
127
|
+
<CardAction><Projector className="size-4 text-muted-foreground" /></CardAction>
|
|
128
|
+
</CardHeader>
|
|
129
|
+
<CardContent>
|
|
130
|
+
<p className="text-2xl font-bold">12.234</p>
|
|
131
|
+
<p className="text-xs text-muted-foreground">+19% vs mΓͺs anterior</p>
|
|
132
|
+
</CardContent>
|
|
133
|
+
</Card>
|
|
134
|
+
</div>
|
|
135
|
+
),
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
// βββ FormulΓ‘rio βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
139
|
+
|
|
140
|
+
export const Form: Story = {
|
|
141
|
+
render: () => (
|
|
142
|
+
<Card className="w-[400px]">
|
|
143
|
+
<CardHeader>
|
|
144
|
+
<CardTitle>Acesso Γ Conta</CardTitle>
|
|
145
|
+
<CardDescription>Insira suas credenciais para acessar a plataforma.</CardDescription>
|
|
146
|
+
</CardHeader>
|
|
147
|
+
<CardContent className="space-y-4">
|
|
148
|
+
<div className="space-y-2">
|
|
149
|
+
<Label htmlFor="email">Email</Label>
|
|
150
|
+
<Input id="email" placeholder="nome@empresa.com" />
|
|
151
|
+
</div>
|
|
152
|
+
<div className="space-y-2">
|
|
153
|
+
<Label htmlFor="password">Senha</Label>
|
|
154
|
+
<Input id="password" type="password" />
|
|
155
|
+
</div>
|
|
156
|
+
</CardContent>
|
|
157
|
+
<CardFooter className="flex-col gap-2">
|
|
158
|
+
<Button className="w-full">Entrar</Button>
|
|
159
|
+
<Button variant="ghost" size="sm" className="w-full text-muted-foreground">
|
|
160
|
+
Esqueci minha senha
|
|
161
|
+
</Button>
|
|
162
|
+
</CardFooter>
|
|
163
|
+
</Card>
|
|
164
|
+
),
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
// βββ Perfil / Team Member βββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
168
|
+
|
|
169
|
+
export const TeamMember: Story = {
|
|
170
|
+
render: () => (
|
|
171
|
+
<div className="flex gap-4 flex-wrap justify-center">
|
|
172
|
+
{[
|
|
173
|
+
{ name: "Ana Souza", role: "Frontend Engineer", initials: "AS", projects: 12, status: "Online" as const, sv: "success" as const },
|
|
174
|
+
{ name: "Bruno Lima", role: "Design System", initials: "BL", projects: 8, status: "Ausente" as const, sv: "warning" as const },
|
|
175
|
+
{ name: "Carla Rocha", role: "Product Designer", initials: "CR", projects: 15, status: "Ocupada" as const, sv: "destructive" as const },
|
|
176
|
+
].map((member) => (
|
|
177
|
+
<Card key={member.name} className="w-52">
|
|
178
|
+
<CardContent className="pt-6 flex flex-col items-center text-center gap-3">
|
|
179
|
+
<Avatar className="size-14">
|
|
180
|
+
<AvatarFallback className="text-base font-semibold">{member.initials}</AvatarFallback>
|
|
181
|
+
</Avatar>
|
|
182
|
+
<div>
|
|
183
|
+
<p className="font-semibold text-sm">{member.name}</p>
|
|
184
|
+
<p className="text-xs text-muted-foreground">{member.role}</p>
|
|
185
|
+
</div>
|
|
186
|
+
<Badge variant={member.sv}>{member.status}</Badge>
|
|
187
|
+
<Separator />
|
|
188
|
+
<p className="text-xs text-muted-foreground">{member.projects} projetos</p>
|
|
189
|
+
<div className="flex gap-2 w-full">
|
|
190
|
+
<Button variant="outline" size="sm" className="flex-1 text-xs">Perfil</Button>
|
|
191
|
+
<Button size="sm" className="flex-1 text-xs">Contato</Button>
|
|
192
|
+
</div>
|
|
193
|
+
</CardContent>
|
|
194
|
+
</Card>
|
|
195
|
+
))}
|
|
196
|
+
</div>
|
|
197
|
+
),
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
// βββ ConfiguraΓ§Γ΅es ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
201
|
+
|
|
202
|
+
export const SettingsCard: Story = {
|
|
203
|
+
render: () => (
|
|
204
|
+
<Card className="w-[480px]">
|
|
205
|
+
<CardHeader>
|
|
206
|
+
<CardTitle>PreferΓͺncias da Conta</CardTitle>
|
|
207
|
+
<CardDescription>Ajuste as configuraΓ§Γ΅es do seu perfil e seguranΓ§a.</CardDescription>
|
|
208
|
+
<CardAction>
|
|
209
|
+
<Button variant="ghost" size="icon">
|
|
210
|
+
<SettingsIcon className="size-4" />
|
|
211
|
+
</Button>
|
|
212
|
+
</CardAction>
|
|
213
|
+
</CardHeader>
|
|
214
|
+
<CardContent className="space-y-0 p-0">
|
|
215
|
+
{[
|
|
216
|
+
{ label: "NotificaΓ§Γ΅es por email", desc: "Receba alertas de deploy e reviews", active: true },
|
|
217
|
+
{ label: "AutenticaΓ§Γ£o 2FA", desc: "Camada extra de seguranΓ§a", active: true },
|
|
218
|
+
{ label: "Modo escuro automΓ‘tico", desc: "Segue o sistema operacional", active: false },
|
|
219
|
+
{ label: "API pΓΊblica", desc: "Permite acesso externo via token", active: false },
|
|
220
|
+
].map((item, i, arr) => (
|
|
221
|
+
<div key={item.label}>
|
|
222
|
+
<div className="flex items-center justify-between px-6 py-4">
|
|
223
|
+
<div>
|
|
224
|
+
<p className="text-sm font-medium">{item.label}</p>
|
|
225
|
+
<p className="text-xs text-muted-foreground">{item.desc}</p>
|
|
226
|
+
</div>
|
|
227
|
+
<Badge variant={item.active ? "success" : "secondary"}>
|
|
228
|
+
{item.active ? "Ativo" : "Inativo"}
|
|
229
|
+
</Badge>
|
|
230
|
+
</div>
|
|
231
|
+
{i < arr.length - 1 && <Separator />}
|
|
232
|
+
</div>
|
|
233
|
+
))}
|
|
234
|
+
</CardContent>
|
|
235
|
+
<CardFooter className="flex justify-between">
|
|
236
|
+
<Button variant="ghost" size="sm" className="gap-1.5">
|
|
237
|
+
<ExternalLink className="size-3.5" /> DocumentaΓ§Γ£o
|
|
238
|
+
</Button>
|
|
239
|
+
<Button size="sm" className="gap-1.5">
|
|
240
|
+
<Download className="size-3.5" /> Exportar config
|
|
241
|
+
</Button>
|
|
242
|
+
</CardFooter>
|
|
243
|
+
</Card>
|
|
244
|
+
),
|
|
245
|
+
};
|
|
@@ -10,14 +10,14 @@ import * as CarouselStories from './carousel.stories';
|
|
|
10
10
|
|
|
11
11
|
<Primary />
|
|
12
12
|
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Variations
|
|
16
|
-
|
|
17
|
-
<Stories />
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Variations
|
|
16
|
+
|
|
17
|
+
<Stories />
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
21
|
## AI Best Practices
|
|
22
22
|
|
|
23
23
|
> [!IMPORTANT]
|
|
@@ -10,14 +10,14 @@ import * as ChartStories from './chart.stories';
|
|
|
10
10
|
|
|
11
11
|
<Primary />
|
|
12
12
|
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Variations
|
|
16
|
-
|
|
17
|
-
<Stories />
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Variations
|
|
16
|
+
|
|
17
|
+
<Stories />
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
21
|
## AI Best Practices
|
|
22
22
|
|
|
23
23
|
> [!IMPORTANT]
|