xertica-ui 2.5.3 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +705 -664
- package/README.md +482 -482
- package/assets/xertica-logo.svg +37 -37
- package/assets/xertica-x-logo.svg +20 -20
- package/bin/cli.ts +1293 -1256
- package/bin/generate-tokens.ts +256 -262
- package/bin/language-config.test.ts +32 -0
- package/bin/language-config.ts +384 -359
- package/components/Introduction.mdx +121 -121
- package/components/assistant/code-block/CodeBlock.tsx +7 -6
- package/components/assistant/code-block/code-block.mdx +38 -38
- package/components/assistant/code-block/code-block.test.tsx +2 -1
- package/components/assistant/formatted-document/FormattedDocument.tsx +3 -0
- package/components/assistant/formatted-document/formatted-document.mdx +31 -31
- package/components/assistant/formatted-document/formatted-document.test.tsx +5 -4
- package/components/assistant/markdown-message/MarkdownMessage.tsx +1 -1
- package/components/assistant/markdown-message/markdown-message.mdx +44 -44
- package/components/assistant/modern-chat-input/modern-chat-input.mdx +71 -71
- package/components/assistant/modern-chat-input/modern-chat-input.test.tsx +3 -2
- package/components/assistant/xertica-assistant/parts/AssistantMessageBubble.tsx +1 -1
- package/components/assistant/xertica-assistant/types.ts +3 -2
- package/components/assistant/xertica-assistant/use-assistant.ts +10 -10
- package/components/assistant/xertica-assistant/xertica-assistant.mdx +66 -66
- package/components/assistant/xertica-assistant/xertica-assistant.test.tsx +2 -1
- package/{templates/src/features/auth/ui → components/blocks/auth}/AuthPageShell.tsx +37 -32
- package/components/blocks/auth/PasswordStrengthMeter.tsx +41 -0
- package/components/blocks/auth/SocialLoginButtons.tsx +95 -0
- package/components/blocks/auth/index.ts +11 -0
- package/components/blocks/auth/usePasswordStrength.ts +13 -0
- package/components/blocks/card-patterns/card-patterns.mdx +123 -123
- package/components/blocks/index.ts +1 -0
- package/components/brand/branding/branding.mdx +27 -27
- package/components/brand/language-selector/language-selector.mdx +126 -126
- package/components/brand/theme-toggle/theme-toggle.mdx +47 -47
- package/components/brand/theme-toggle/theme-toggle.test.tsx +6 -2
- package/components/brand/xertica-logo/xertica-logo.mdx +56 -56
- package/components/brand/xertica-orbe/xertica-orbe.mdx +38 -38
- package/components/brand/xertica-provider/XerticaProvider.tsx +112 -112
- package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
- package/components/brand/xertica-provider/xertica-provider.test.tsx +25 -13
- package/components/brand/xertica-xlogo/xertica-xlogo.mdx +55 -55
- package/components/examples/DrawingMapExample.tsx +1 -4
- package/components/layout/header/header.mdx +117 -117
- package/components/layout/header/header.test.tsx +2 -1
- package/components/layout/sidebar/sidebar.mdx +99 -99
- package/components/layout/sidebar/sidebar.stories.tsx +1033 -1033
- package/components/layout/sidebar/sidebar.test.tsx +2 -1
- package/components/layout/sidebar/sidebar.tsx +1509 -1506
- package/components/media/audio-player/AudioPlayer.mdx +67 -67
- package/components/media/audio-player/AudioPlayer.test.tsx +2 -1
- package/components/media/floating-media-wrapper.mdx +74 -74
- package/components/media/video-player/VideoPlayer.mdx +102 -102
- package/components/media/video-player/VideoPlayer.test.tsx +3 -2
- package/components/pages/forgot-password-page/ForgotPasswordPage.tsx +94 -188
- package/components/pages/forgot-password-page/forgot-password-page.mdx +60 -60
- package/components/pages/forgot-password-page/forgot-password-page.test.tsx +2 -1
- package/components/pages/home-content/HomeContent.tsx +119 -119
- package/components/pages/home-content/home-content.mdx +62 -62
- package/components/pages/home-page/HomePage.stories.tsx +8 -15
- package/components/pages/home-page/home-page.mdx +53 -53
- package/components/pages/home-page/home-page.test.tsx +2 -1
- package/components/pages/login-page/LoginPage.mdx +31 -31
- package/components/pages/login-page/LoginPage.tsx +125 -218
- package/components/pages/login-page/login-page.test.tsx +2 -1
- package/components/pages/reset-password-page/ResetPasswordPage.tsx +153 -243
- package/components/pages/reset-password-page/reset-password-page.mdx +63 -63
- package/components/pages/template-content/TemplateContent.tsx +1353 -1353
- package/components/pages/template-content/template-content.mdx +61 -61
- package/components/pages/template-page/TemplatePage.stories.tsx +32 -32
- package/components/pages/template-page/template-page.mdx +53 -53
- package/components/pages/template-page/template-page.test.tsx +2 -1
- package/components/pages/verify-email-page/VerifyEmailPage.tsx +104 -206
- package/components/pages/verify-email-page/verify-email-page.mdx +55 -55
- package/components/public-api-smoke.test.tsx +10 -6
- package/components/shared/assistant-utils.ts +3 -2
- package/components/shared/navigation.ts +2 -2
- package/components/ui/accordion/accordion.mdx +29 -29
- package/components/ui/alert/alert.mdx +29 -29
- package/components/ui/alert-dialog/alert-dialog.mdx +26 -26
- package/components/ui/aspect-ratio/aspect-ratio.mdx +25 -25
- package/components/ui/assistant-chart/AssistantChart.tsx +8 -2
- package/components/ui/assistant-chart/assistant-chart.mdx +25 -25
- package/components/ui/avatar/avatar.mdx +26 -26
- package/components/ui/badge/badge.mdx +28 -28
- package/components/ui/breadcrumb/breadcrumb.mdx +26 -26
- package/components/ui/button/button.mdx +29 -29
- package/components/ui/calendar/calendar.mdx +26 -26
- package/components/ui/card/card.mdx +26 -26
- package/components/ui/carousel/carousel.mdx +26 -26
- package/components/ui/chart/chart.mdx +26 -26
- package/components/ui/chart/chart.test.tsx +178 -178
- package/components/ui/chart/chart.tsx +2252 -2245
- package/components/ui/checkbox/checkbox.mdx +26 -26
- package/components/ui/collapsible/collapsible.mdx +25 -25
- package/components/ui/command/command.mdx +26 -26
- package/components/ui/context-menu/context-menu.mdx +26 -26
- package/components/ui/dialog/dialog.mdx +26 -26
- package/components/ui/drawer/drawer.mdx +26 -26
- package/components/ui/dropdown-menu/dropdown-menu.mdx +26 -26
- package/components/ui/empty/empty.mdx +26 -26
- package/components/ui/file-upload/file-upload.mdx +26 -26
- package/components/ui/form/form.mdx +20 -20
- package/components/ui/google-maps-loader/google-maps-loader.mdx +68 -68
- package/components/ui/hover-card/hover-card.mdx +26 -26
- package/components/ui/input/input.mdx +29 -29
- package/components/ui/input-otp/input-otp.mdx +26 -26
- package/components/ui/label/label.mdx +25 -25
- package/components/ui/map/map.mdx +26 -26
- package/components/ui/map/map.tsx +6 -1
- package/components/ui/menubar/menubar.mdx +26 -26
- package/components/ui/navigation-menu/navigation-menu.mdx +26 -26
- package/components/ui/notification-badge/notification-badge.mdx +26 -26
- package/components/ui/page-header/page-header.mdx +44 -44
- package/components/ui/pagination/pagination.mdx +26 -26
- package/components/ui/popover/popover.mdx +26 -26
- package/components/ui/progress/progress.mdx +25 -25
- package/components/ui/radio-group/radio-group.mdx +26 -26
- package/components/ui/rating/rating.mdx +26 -26
- package/components/ui/resizable/resizable.mdx +26 -26
- package/components/ui/resizable/resizable.tsx +13 -8
- package/components/ui/rich-text-editor/rich-text-editor.mdx +47 -47
- package/components/ui/route-map/route-map.mdx +26 -26
- package/components/ui/scroll-area/scroll-area.mdx +25 -25
- package/components/ui/search/search.mdx +27 -27
- package/components/ui/select/select.mdx +26 -26
- package/components/ui/separator/separator.mdx +25 -25
- package/components/ui/sheet/sheet.mdx +26 -26
- package/components/ui/simple-map/simple-map.mdx +25 -25
- package/components/ui/skeleton/skeleton.mdx +25 -25
- package/components/ui/slider/slider.mdx +26 -26
- package/components/ui/sonner/sonner.mdx +26 -26
- package/components/ui/stats-card/stats-card.mdx +26 -26
- package/components/ui/stats-card/stats-card.stories.tsx +117 -117
- package/components/ui/stats-card/stats-card.tsx +109 -109
- package/components/ui/stepper/stepper.mdx +26 -26
- package/components/ui/switch/switch.mdx +25 -25
- package/components/ui/table/table.mdx +27 -27
- package/components/ui/tabs/tabs.mdx +26 -26
- package/components/ui/textarea/textarea.mdx +25 -25
- package/components/ui/timeline/timeline.mdx +26 -26
- package/components/ui/toggle/toggle.mdx +26 -26
- package/components/ui/toggle-group/toggle-group.mdx +26 -26
- package/components/ui/tooltip/tooltip.mdx +26 -26
- package/components/ui/tree-view/tree-view.mdx +26 -26
- package/components.json +511 -511
- package/contexts/BrandColorsContext.tsx +282 -282
- package/contexts/i18n-singleton.test.tsx +57 -0
- package/contexts/theme-data.ts +391 -391
- package/dist/{AssistantChart-DNdwuS-t.js → AssistantChart-BMNSA_Pk.js} +4 -4
- package/dist/{AssistantChart-COGiOV-g.cjs → AssistantChart-BzM7plyc.cjs} +31 -21
- package/dist/{AssistantChart-CWX1OWNM.js → AssistantChart-C842evTi.js} +31 -21
- package/dist/{AssistantChart-D0A1FPYt.cjs → AssistantChart-CImCNLfD.cjs} +150 -114
- package/dist/{AssistantChart-BW9JK6jw.cjs → AssistantChart-CVF2uh37.cjs} +4 -4
- package/dist/{AssistantChart-BXU1ACnh.js → AssistantChart-DfdIfmQr.js} +134 -240
- package/dist/{AssistantChart-BZTPJ5dP.cjs → AssistantChart-JooMdVQU.cjs} +5 -5
- package/dist/{AssistantChart-DMJJ_Amf.js → AssistantChart-KHS-tp-L.js} +5 -5
- package/dist/{BrandColorsContext-BwY-b6M4.cjs → BrandColorsContext-B4_81eas.cjs} +2 -2
- package/dist/{BrandColorsContext-BMRJ04Wf.js → BrandColorsContext-DbK5LnQ_.js} +2 -2
- package/dist/{CodeBlock-CjeFavqV.js → CodeBlock-DiKO8ocT.js} +11 -11
- package/dist/{CodeBlock-CV6dtsTM.cjs → CodeBlock-ZYThr7Kn.cjs} +12 -9
- package/dist/{FeatureCard-Cfs6Ishq.js → FeatureCard-BhpfmPPx.js} +20 -20
- package/dist/{FeatureCard-ie3L8Fpr.cjs → FeatureCard-D-5yS_OD.cjs} +31 -18
- package/dist/{progress-DDeuWPZw.cjs → ImageWithFallback-CfkAkctC.cjs} +34 -9
- package/dist/{progress-Cs9i4DPx.js → ImageWithFallback-bw-CxxDc.js} +27 -10
- package/dist/LanguageContext-CX_zdxre.js +1912 -0
- package/dist/LanguageContext-CjhSSqJT.cjs +1917 -0
- package/dist/LanguageSelector-BR3Ss0k_.js +46 -0
- package/dist/LanguageSelector-CHOLPmHr.cjs +48 -0
- package/dist/{XerticaXLogo-mqjoBiLI.js → LanguageSelector-CmTj3lWq.js} +85 -82
- package/dist/{XerticaXLogo-BX3ueACh.js → LanguageSelector-DxW6o7bt.js} +81 -81
- package/dist/{XerticaXLogo-uQgwns_E.cjs → LanguageSelector-Sw73qvWV.cjs} +84 -81
- package/dist/PasswordStrengthMeter-C8irs0G1.js +173 -0
- package/dist/PasswordStrengthMeter-MLzhax-d.cjs +179 -0
- package/dist/{ThemeContext-BgclCB35.js → ThemeContext-BGeh_Kdr.js} +290 -212
- package/dist/{ThemeContext-bSzuOit2.cjs → ThemeContext-CEY9pCn-.cjs} +15 -10
- package/dist/{ThemeContext-BblcjQup.cjs → ThemeContext-D50irx5T.cjs} +291 -205
- package/dist/{ThemeContext-RTy1m2Uq.js → ThemeContext-Dk3tH7Ym.js} +14 -13
- package/dist/{XerticaXLogo-CFuIlYFH.js → ThemeToggle-BpM_iHh8.js} +56 -93
- package/dist/{XerticaXLogo-CziKMQil.cjs → ThemeToggle-CZRlv0d4.cjs} +62 -85
- package/dist/{VerifyEmailPage-C_Zk6Gen.cjs → VerifyEmailPage-B6bOrybJ.cjs} +17 -17
- package/dist/VerifyEmailPage-BKiaw2YK.js +2954 -0
- package/dist/{VerifyEmailPage-B31mCrMc.js → VerifyEmailPage-BRE5Fz59.js} +8 -8
- package/dist/{VerifyEmailPage-Cyl55sJb.js → VerifyEmailPage-BcCluouh.js} +135 -65
- package/dist/VerifyEmailPage-Beaicc6V.cjs +2963 -0
- package/dist/VerifyEmailPage-BehPBp0F.cjs +2963 -0
- package/dist/VerifyEmailPage-Bx1sr0uQ.cjs +3298 -0
- package/dist/{VerifyEmailPage-Bci0bA-P.js → VerifyEmailPage-DUYyXCX9.js} +3 -3
- package/dist/VerifyEmailPage-DXXMHbzq.js +3289 -0
- package/dist/VerifyEmailPage-Djb6hthM.js +2954 -0
- package/dist/{VerifyEmailPage-u_Dn7t1U.cjs → VerifyEmailPage-DpYtFk35.cjs} +21 -21
- package/dist/{VerifyEmailPage-X14vhdyl.js → VerifyEmailPage-NXKWW3Dk.js} +12 -12
- package/dist/{VerifyEmailPage-C7KiYXrm.cjs → VerifyEmailPage-QrCz4Wqr.cjs} +11 -11
- package/dist/{VerifyEmailPage-Bv8Ah_TK.cjs → VerifyEmailPage-ZmQra0Wi.cjs} +144 -74
- package/dist/{XerticaProvider-BErr83Bg.js → XerticaProvider-BF3q_myt.js} +5 -4
- package/dist/{XerticaProvider-B8CaV7xu.cjs → XerticaProvider-BijpC_py.cjs} +18 -11
- package/dist/{XerticaProvider-DQtvJU7m.js → XerticaProvider-C2wDRQhT.js} +17 -13
- package/dist/{XerticaProvider-CeS5G_n5.cjs → XerticaProvider-C_JSOz1U.cjs} +2 -2
- package/dist/{XerticaProvider-CwOkHxiT.cjs → XerticaProvider-D5zjrqZq.cjs} +5 -4
- package/dist/{XerticaProvider-ra2NciRq.js → XerticaProvider-KTGl4Cn1.js} +2 -2
- package/dist/{alert-dialog-DqlRW_An.js → alert-dialog-BrpwXKwS.js} +3 -3
- package/dist/{alert-dialog-yckpaOpy.cjs → alert-dialog-BzIcTKn_.cjs} +173 -166
- package/dist/{alert-dialog-DhwPioBa.cjs → alert-dialog-CZU1Zase.cjs} +3 -3
- package/dist/{alert-dialog-KpoabzJb.js → alert-dialog-ClRoLH7l.js} +40 -56
- package/dist/{alert-dialog-B4M3vQKS.cjs → alert-dialog-DBBqvU-V.cjs} +53 -38
- package/dist/{alert-dialog-iDe5VE5o.js → alert-dialog-kty5pxQp.js} +160 -183
- package/dist/assistant.cjs.js +2 -2
- package/dist/assistant.es.js +2 -2
- package/dist/blocks.cjs.js +7 -3
- package/dist/blocks.es.js +2 -2
- package/dist/brand.cjs.js +7 -6
- package/dist/brand.es.js +3 -2
- package/dist/cli.js +63 -21
- package/dist/components/assistant/code-block/CodeBlock.d.ts +2 -1
- package/dist/components/assistant/formatted-document/FormattedDocument.d.ts +2 -1
- package/dist/components/assistant/markdown-message/MarkdownMessage.d.ts +2 -1
- package/dist/components/assistant/modern-chat-input/ModernChatInput.d.ts +2 -1
- package/dist/components/assistant/xertica-assistant/parts/AssistantCollapsedView.d.ts +2 -1
- package/dist/components/assistant/xertica-assistant/parts/AssistantConversationList.d.ts +2 -1
- package/dist/components/assistant/xertica-assistant/parts/AssistantDocumentEditor.d.ts +2 -1
- package/dist/components/assistant/xertica-assistant/parts/AssistantFeedbackDialog.d.ts +2 -1
- package/dist/components/assistant/xertica-assistant/parts/AssistantHeader.d.ts +2 -1
- package/dist/components/assistant/xertica-assistant/parts/AssistantMessageBubble.d.ts +2 -1
- package/dist/components/assistant/xertica-assistant/parts/AssistantTabBar.d.ts +2 -1
- package/dist/components/assistant/xertica-assistant/parts/AssistantTypingIndicator.d.ts +2 -1
- package/dist/components/assistant/xertica-assistant/parts/AssistantWelcomeScreen.d.ts +2 -1
- package/dist/components/assistant/xertica-assistant/types.d.ts +3 -2
- package/dist/components/assistant/xertica-assistant/use-assistant.d.ts +1 -1
- package/dist/components/assistant/xertica-assistant/xertica-assistant.d.ts +2 -1
- package/dist/components/blocks/auth/AuthPageShell.d.ts +12 -0
- package/dist/components/blocks/auth/PasswordStrengthMeter.d.ts +7 -0
- package/dist/components/blocks/auth/SocialLoginButtons.d.ts +8 -0
- package/dist/components/blocks/auth/index.d.ts +8 -0
- package/dist/components/blocks/auth/usePasswordStrength.d.ts +3 -0
- package/dist/components/blocks/card-patterns/ActivityCard.d.ts +1 -1
- package/dist/components/blocks/card-patterns/ActivityCardSkeleton.d.ts +1 -1
- package/dist/components/blocks/card-patterns/FeatureCard.d.ts +1 -1
- package/dist/components/blocks/card-patterns/FeatureCardSkeleton.d.ts +1 -1
- package/dist/components/blocks/card-patterns/NotificationCard.d.ts +1 -1
- package/dist/components/blocks/card-patterns/NotificationCardSkeleton.d.ts +1 -1
- package/dist/components/blocks/card-patterns/ProfileCard.d.ts +1 -1
- package/dist/components/blocks/card-patterns/ProfileCardSkeleton.d.ts +1 -1
- package/dist/components/blocks/card-patterns/ProjectCard.d.ts +1 -1
- package/dist/components/blocks/card-patterns/ProjectCardSkeleton.d.ts +1 -1
- package/dist/components/blocks/card-patterns/QuickActionCard.d.ts +1 -1
- package/dist/components/blocks/card-patterns/QuickActionCardSkeleton.d.ts +1 -1
- package/dist/components/blocks/index.d.ts +1 -0
- package/dist/components/brand/language-selector/LanguageSelector.d.ts +2 -1
- package/dist/components/brand/theme-toggle/ThemeToggle.d.ts +2 -1
- package/dist/components/brand/xertica-logo/XerticaLogo.d.ts +2 -1
- package/dist/components/brand/xertica-orbe/XerticaOrbe.d.ts +2 -1
- package/dist/components/brand/xertica-provider/XerticaProvider.d.ts +1 -1
- package/dist/components/brand/xertica-xlogo/XerticaXLogo.d.ts +2 -1
- package/dist/components/examples/DrawingMapExample.d.ts +2 -1
- package/dist/components/examples/FilterableMapExample.d.ts +1 -1
- package/dist/components/examples/MapShowcase.d.ts +2 -1
- package/dist/components/examples/SimpleFilterableMap.d.ts +2 -1
- package/dist/components/figma/ImageWithFallback.d.ts +1 -1
- package/dist/components/layout/header/header.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar.d.ts +25 -13
- package/dist/components/media/FloatingMediaWrapper.d.ts +1 -1
- package/dist/components/media/audio-player/AudioPlayer.d.ts +2 -1
- package/dist/components/media/video-player/VideoPlayer.d.ts +2 -1
- package/dist/components/pages/forgot-password-page/ForgotPasswordPage.d.ts +2 -1
- package/dist/components/pages/home-content/HomeContent.d.ts +2 -1
- package/dist/components/pages/home-page/HomePage.d.ts +2 -1
- package/dist/components/pages/login-page/LoginPage.d.ts +2 -1
- package/dist/components/pages/reset-password-page/ResetPasswordPage.d.ts +3 -2
- package/dist/components/pages/template-content/TemplateContent.d.ts +2 -1
- package/dist/components/pages/template-page/TemplatePage.d.ts +2 -1
- package/dist/components/pages/verify-email-page/VerifyEmailPage.d.ts +2 -1
- package/dist/components/shared/CustomTooltipContent.d.ts +1 -1
- package/dist/components/shared/assistant-utils.d.ts +3 -2
- package/dist/components/shared/error-boundary.d.ts +4 -4
- package/dist/components/shared/error-fallbacks.d.ts +4 -3
- package/dist/components/shared/navigation.d.ts +6 -2
- package/dist/components/ui/accordion/accordion.d.ts +4 -4
- package/dist/components/ui/alert/alert.d.ts +3 -3
- package/dist/components/ui/alert-dialog/alert-dialog.d.ts +10 -10
- package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts +1 -1
- package/dist/components/ui/assistant-chart/AssistantChart.d.ts +4 -3
- package/dist/components/ui/avatar/avatar.d.ts +3 -3
- package/dist/components/ui/badge/badge.d.ts +1 -1
- package/dist/components/ui/breadcrumb/breadcrumb.d.ts +7 -7
- package/dist/components/ui/calendar/calendar.d.ts +2 -2
- package/dist/components/ui/card/card.d.ts +7 -7
- package/dist/components/ui/carousel/carousel.d.ts +5 -5
- package/dist/components/ui/chart/chart.d.ts +16 -16
- package/dist/components/ui/collapsible/collapsible.d.ts +3 -3
- package/dist/components/ui/command/command.d.ts +9 -9
- package/dist/components/ui/context-menu/context-menu.d.ts +15 -15
- package/dist/components/ui/dialog/dialog.d.ts +9 -9
- package/dist/components/ui/drawer/drawer.d.ts +10 -10
- package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +15 -15
- package/dist/components/ui/form/form.d.ts +7 -7
- package/dist/components/ui/google-maps-loader/google-maps-loader.d.ts +3 -3
- package/dist/components/ui/hover-card/hover-card.d.ts +3 -3
- package/dist/components/ui/input-otp/input-otp.d.ts +4 -4
- package/dist/components/ui/label/label.d.ts +1 -1
- package/dist/components/ui/menubar/menubar.d.ts +16 -16
- package/dist/components/ui/navigation-menu/navigation-menu.d.ts +8 -8
- package/dist/components/ui/page-header/page-header.d.ts +3 -3
- package/dist/components/ui/pagination/pagination.d.ts +7 -7
- package/dist/components/ui/popover/popover.d.ts +4 -4
- package/dist/components/ui/progress/progress.d.ts +1 -1
- package/dist/components/ui/resizable/resizable.d.ts +11 -7
- package/dist/components/ui/rich-text-editor/rich-text-editor.d.ts +1 -1
- package/dist/components/ui/scroll-area/scroll-area.d.ts +2 -2
- package/dist/components/ui/separator/separator.d.ts +1 -1
- package/dist/components/ui/sheet/sheet.d.ts +10 -10
- package/dist/components/ui/skeleton/skeleton.d.ts +1 -1
- package/dist/components/ui/sonner/sonner.d.ts +2 -1
- package/dist/components/ui/stats-card/stats-card-skeleton.d.ts +1 -1
- package/dist/components/ui/table/table.d.ts +8 -8
- package/dist/components/ui/tabs/tabs.d.ts +4 -4
- package/dist/components/ui/tooltip/tooltip.d.ts +4 -4
- package/dist/contexts/ApiKeyContext.d.ts +2 -2
- package/dist/contexts/AssistenteContext.d.ts +1 -1
- package/dist/contexts/AuthContext.d.ts +1 -1
- package/dist/contexts/LanguageContext.d.ts +2 -2
- package/dist/contexts/LayoutContext.d.ts +2 -2
- package/dist/contexts/ThemeContext.d.ts +1 -1
- package/dist/features/assistant/hooks/useAssistantConfig.d.ts +1 -1
- package/dist/features/home/hooks/useDashboardStats.d.ts +1 -1
- package/dist/features/home/hooks/useFeatureCards.d.ts +1 -1
- package/dist/features/home/hooks/useTeamMembers.d.ts +1 -1
- package/dist/{google-maps-loader-BCe58h9D.js → google-maps-loader-BOug999f.js} +0 -4
- package/dist/{google-maps-loader-casMyxlo.cjs → google-maps-loader-DfeBRI8Q.cjs} +0 -5
- package/dist/hooks.cjs.js +6 -5
- package/dist/hooks.es.js +3 -2
- package/dist/{index-9GWd0qxq.cjs → index-BQjx1Mdf.cjs} +1 -1
- package/dist/index-Bei5DzAL.js +6 -0
- package/dist/index.cjs.js +32 -27
- package/dist/index.es.js +15 -14
- package/dist/layout.cjs.js +1 -1
- package/dist/layout.es.js +1 -1
- package/dist/pages.cjs.js +1 -1
- package/dist/pages.es.js +1 -1
- package/dist/{rich-text-editor-B2CKz7nx.cjs → rich-text-editor-BuqSu718.cjs} +68 -3
- package/dist/{rich-text-editor-DloeW0wc.js → rich-text-editor-CV8FtA_l.js} +66 -4
- package/dist/{sidebar-B4ZWaMrE.js → sidebar-B7YzwAp3.js} +365 -6
- package/dist/{sidebar-CLmIjgNd.cjs → sidebar-BGJ0j567.cjs} +84 -67
- package/dist/{sidebar-Duermn32.js → sidebar-BI6mZlC8.js} +81 -64
- package/dist/{sidebar-BS1p2V7t.cjs → sidebar-BtmotOg-.cjs} +367 -9
- package/dist/{sidebar-DyYvgyBj.cjs → sidebar-Cb0U7NsV.cjs} +368 -9
- package/dist/{sidebar-QwCoeoZ_.js → sidebar-D3EgGVxF.js} +1 -1
- package/dist/{sidebar-CQn_rwxP.cjs → sidebar-DDTqMGnR.cjs} +4 -4
- package/dist/{sidebar-3XyzjVBw.js → sidebar-I7EXyf5D.js} +364 -6
- package/dist/ui.cjs.js +9 -9
- package/dist/ui.es.js +5 -5
- package/dist/{xertica-assistant-BbgzsgsG.js → xertica-assistant-8fh8KA2K.js} +60 -51
- package/dist/{xertica-assistant-d2qs2Vd9.cjs → xertica-assistant-BjfG3zyL.cjs} +63 -46
- package/dist/{xertica-assistant-B687qEPU.js → xertica-assistant-CJVnvMqU.js} +17 -8
- package/dist/{xertica-assistant-sOHwTgIP.cjs → xertica-assistant-CKPtc1z5.cjs} +19 -10
- package/dist/{xertica-assistant-QFUnv5I2.cjs → xertica-assistant-DER0brPQ.cjs} +6 -5
- package/dist/{xertica-assistant-CyikE3N_.js → xertica-assistant-DQCjpk5M.js} +4 -3
- package/dist/{xertica-assistant-B1NaSFFj.js → xertica-assistant-Dk-9AJzw.js} +6 -5
- package/dist/{xertica-assistant-CIaUlbIt.cjs → xertica-assistant-DxhIKvuY.cjs} +8 -7
- package/dist/xertica-ui.css +2 -2
- package/docs/components/audio-player.md +1 -1
- package/docs/components/sidebar.md +331 -331
- package/docs/components/stats-card.md +138 -138
- package/docs/components/toggle.md +12 -0
- package/docs/doc-audit.md +35 -229
- package/docs/i18n.md +33 -10
- package/docs/llms.md +6 -4
- package/llms-compact.txt +444 -444
- package/llms-full.txt +12144 -12144
- package/llms.txt +187 -187
- package/package.json +223 -219
- package/scripts/a11y-audit.mjs +162 -162
- package/scripts/fix-stories.cjs +19 -19
- package/styles/globals.css +0 -1
- package/styles/xertica/base.css +8 -0
- package/styles/xertica/tokens.css +240 -240
- package/templates/.env.example +2 -2
- package/templates/.prettierignore +4 -4
- package/templates/.prettierrc +10 -10
- package/templates/guidelines/Guidelines.md +865 -865
- package/templates/index.html +13 -13
- package/templates/package.json +69 -69
- package/templates/src/app/components/AuthGuard.tsx +11 -0
- package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +1 -2
- package/templates/src/features/auth/ui/LoginContent.tsx +1 -2
- package/templates/src/features/auth/ui/ResetPasswordContent.tsx +3 -57
- package/templates/src/features/auth/ui/VerifyEmailContent.tsx +1 -2
- package/templates/src/features/home/index.ts +0 -10
- package/templates/src/features/home/ui/HomeContent.tsx +62 -116
- package/templates/src/features/settings/index.ts +2 -0
- package/templates/src/features/settings/ui/SettingsContent.tsx +134 -0
- package/templates/src/features/template/index.ts +0 -4
- package/templates/src/features/template/ui/TemplateContent.tsx +68 -1321
- package/templates/src/i18n.ts +36 -13
- package/templates/src/locales/en/pages/settings.json +15 -0
- package/templates/src/locales/en/pages/templates.json +5 -313
- package/templates/src/locales/es/pages/settings.json +15 -0
- package/templates/src/locales/es/pages/templates.json +5 -313
- package/templates/src/locales/pt-BR/pages/settings.json +15 -0
- package/templates/src/locales/pt-BR/pages/templates.json +5 -313
- package/templates/src/pages/SettingsPage.tsx +28 -0
- package/templates/src/shared/config/navigation.ts +2 -2
- package/templates/src/styles/xertica/tokens.css +240 -240
- package/utils/gemini.ts +2 -2
- package/dist/AssistantChart-9w31gdAb.cjs +0 -3363
- package/dist/AssistantChart-BAudAfne.cjs +0 -3591
- package/dist/AssistantChart-BAx9VQvb.cjs +0 -3374
- package/dist/AssistantChart-BP8upjMk.js +0 -3565
- package/dist/AssistantChart-CVko2A1W.js +0 -3348
- package/dist/AssistantChart-CVzmmhx4.js +0 -3337
- package/dist/AssistantChart-CeU2dIb6.js +0 -3469
- package/dist/AssistantChart-DO5UuX4J.cjs +0 -3495
- package/dist/AudioPlayer-1ypwE2Wh.cjs +0 -936
- package/dist/AudioPlayer-BJ2IuRQW.cjs +0 -1275
- package/dist/AudioPlayer-BWDW6TN9.cjs +0 -1279
- package/dist/AudioPlayer-CM962GEh.js +0 -1280
- package/dist/AudioPlayer-CbZId7cj.cjs +0 -998
- package/dist/AudioPlayer-DU8zt8-z.js +0 -999
- package/dist/AudioPlayer-DuKXrCfy.js +0 -937
- package/dist/AudioPlayer-Xxma6_-H.js +0 -1276
- package/dist/BrandColorsContext-DLVJgtmH.js +0 -666
- package/dist/BrandColorsContext-DZT7JjeD.js +0 -659
- package/dist/BrandColorsContext-GUyFmkX0.cjs +0 -665
- package/dist/BrandColorsContext-awnBCmC4.cjs +0 -666
- package/dist/CodeBlock-C2ZUXt8V.js +0 -219
- package/dist/CodeBlock-C5oYnLQp.cjs +0 -218
- package/dist/CodeBlock-DuxdtN-l.js +0 -219
- package/dist/CodeBlock-POVYONvC.cjs +0 -218
- package/dist/CustomTooltipContent-BT6brkVJ.cjs +0 -49
- package/dist/CustomTooltipContent-CfOfikhq.js +0 -33
- package/dist/CustomTooltipContent-DHjkY0ww.js +0 -40
- package/dist/CustomTooltipContent-c_K-DWRr.cjs +0 -56
- package/dist/FeatureCard-9GhnlgL3.js +0 -336
- package/dist/FeatureCard-Bcb3Zi54.js +0 -302
- package/dist/FeatureCard-CkPd2psQ.cjs +0 -301
- package/dist/FeatureCard-Dkp-xmzM.cjs +0 -335
- package/dist/FeatureCardSkeleton-CAgu8stE.js +0 -27
- package/dist/FeatureCardSkeleton-mO3Bdm_V.cjs +0 -26
- package/dist/LanguageContext-BwhwC3G2.js +0 -657
- package/dist/LanguageContext-DvUt5jBg.cjs +0 -656
- package/dist/LayoutContext-BDmcZfMH.cjs +0 -84
- package/dist/LayoutContext-C4kKN9RV.cjs +0 -93
- package/dist/LayoutContext-CGEe1oPq.js +0 -94
- package/dist/LayoutContext-CwT5KLiW.cjs +0 -104
- package/dist/LayoutContext-DVLCsoQn.js +0 -105
- package/dist/LayoutContext-dbQvdC4O.js +0 -85
- package/dist/ThemeContext-BbBNoFTG.js +0 -735
- package/dist/ThemeContext-Bo-W2WZH.js +0 -1856
- package/dist/ThemeContext-CP3a0jxy.cjs +0 -1855
- package/dist/ThemeContext-Cmr8Ex8H.cjs +0 -734
- package/dist/ThemeContext-CpqYShLq.cjs +0 -324
- package/dist/ThemeContext-D3LzacmG.js +0 -188
- package/dist/ThemeContext-DQUOeziy.cjs +0 -1855
- package/dist/ThemeContext-Du2nE1PL.js +0 -325
- package/dist/ThemeContext-GeEBTJ3q.cjs +0 -1621
- package/dist/ThemeContext-JyLK9B1o.js +0 -1622
- package/dist/ThemeContext-U4dEYc6C.cjs +0 -187
- package/dist/ThemeContext-ept8jhXI.js +0 -1856
- package/dist/VerifyEmailPage-BE-L9mB7.js +0 -2828
- package/dist/VerifyEmailPage-BIBOKV7Z.js +0 -3214
- package/dist/VerifyEmailPage-BJjAMUTW.js +0 -3223
- package/dist/VerifyEmailPage-BRSP-Pwt.cjs +0 -3196
- package/dist/VerifyEmailPage-Bae2cBXT.cjs +0 -2827
- package/dist/VerifyEmailPage-BiRm7Nh4.cjs +0 -3213
- package/dist/VerifyEmailPage-Bvfv8HVQ.js +0 -3214
- package/dist/VerifyEmailPage-CR7kb5df.cjs +0 -2827
- package/dist/VerifyEmailPage-C_ihbcth.js +0 -2828
- package/dist/VerifyEmailPage-CbgjOF0v.js +0 -2828
- package/dist/VerifyEmailPage-CdYPSJoO.js +0 -2828
- package/dist/VerifyEmailPage-CkBYfsNy.cjs +0 -3232
- package/dist/VerifyEmailPage-D-FRj5TU.cjs +0 -3213
- package/dist/VerifyEmailPage-DF2ilhum.cjs +0 -3210
- package/dist/VerifyEmailPage-DMBh4NM9.cjs +0 -2827
- package/dist/VerifyEmailPage-DTtFfC-J.js +0 -3197
- package/dist/VerifyEmailPage-Dt7zgA4w.cjs +0 -2827
- package/dist/VerifyEmailPage-EhudUdqF.js +0 -3211
- package/dist/VerifyEmailPage-RrUApqBN.js +0 -3214
- package/dist/VerifyEmailPage-VoMI7MYH.cjs +0 -3213
- package/dist/VerifyEmailPage-hdB8JQGv.cjs +0 -3213
- package/dist/VerifyEmailPage-vYHbYK3q.js +0 -3214
- package/dist/XerticaOrbe-BCUVSPPB.cjs +0 -1924
- package/dist/XerticaOrbe-BGIB1CTK.js +0 -1355
- package/dist/XerticaOrbe-By8eEvR-.js +0 -1925
- package/dist/XerticaOrbe-FWGjBj0U.cjs +0 -1354
- package/dist/XerticaProvider-AChwphCO.cjs +0 -48
- package/dist/XerticaProvider-AbWlr7Af.cjs +0 -48
- package/dist/XerticaProvider-BITjgC5p.js +0 -39
- package/dist/XerticaProvider-BSyFrmC0.js +0 -49
- package/dist/XerticaProvider-By8q3Roe.cjs +0 -38
- package/dist/XerticaProvider-CUYJZc32.js +0 -49
- package/dist/XerticaProvider-CW9hpCdF.cjs +0 -39
- package/dist/XerticaProvider-CWgby5mY.js +0 -49
- package/dist/XerticaProvider-CWs6EwNa.js +0 -49
- package/dist/XerticaProvider-CiNKjMx1.cjs +0 -48
- package/dist/XerticaProvider-CjQAQPcn.cjs +0 -48
- package/dist/XerticaProvider-D5lLumH-.js +0 -49
- package/dist/XerticaProvider-DUOJg9iX.js +0 -49
- package/dist/XerticaProvider-Dl_b72_l.cjs +0 -51
- package/dist/XerticaProvider-qQUDop71.cjs +0 -48
- package/dist/XerticaProvider-siSt9uG2.js +0 -40
- package/dist/XerticaXLogo-8TTzBjHw.cjs +0 -251
- package/dist/XerticaXLogo-B2svDGZh.cjs +0 -251
- package/dist/XerticaXLogo-BWaag64t.js +0 -252
- package/dist/XerticaXLogo-CU-U-GP4.cjs +0 -251
- package/dist/XerticaXLogo-ChryA6xj.js +0 -252
- package/dist/XerticaXLogo-CowGv7BC.js +0 -252
- package/dist/XerticaXLogo-D8jf0SNv.cjs +0 -214
- package/dist/XerticaXLogo-DHz5SugF.js +0 -252
- package/dist/XerticaXLogo-DTee_y8X.cjs +0 -251
- package/dist/XerticaXLogo-DfUvz-lD.js +0 -243
- package/dist/XerticaXLogo-DzXKZBtG.js +0 -231
- package/dist/XerticaXLogo-fAJMy3H4.js +0 -215
- package/dist/XerticaXLogo-kslQ8Tk_.cjs +0 -251
- package/dist/XerticaXLogo-xWbElCZj.cjs +0 -230
- package/dist/avatar-Cq5_E8r9.cjs +0 -78
- package/dist/avatar-CuYu2MKt.cjs +0 -72
- package/dist/avatar-Cxyofu1H.js +0 -56
- package/dist/avatar-DSBfJMRJ.js +0 -62
- package/dist/breadcrumb-CVzzzqfo.js +0 -103
- package/dist/breadcrumb-DIJ0X3Ot.js +0 -96
- package/dist/breadcrumb-DjSxkjlQ.cjs +0 -95
- package/dist/breadcrumb-DnDlQFg2.cjs +0 -102
- package/dist/button-0CXwCRTm.cjs +0 -85
- package/dist/button-Bnv9SvYK.cjs +0 -79
- package/dist/button-C6uvh0rV.js +0 -63
- package/dist/button-qkz7Icqf.js +0 -69
- package/dist/card-B8-Gl5DL.js +0 -73
- package/dist/card-Bv_c57KU.cjs +0 -72
- package/dist/card-DJTsYhLL.cjs +0 -89
- package/dist/card-fi8zAN-I.js +0 -90
- package/dist/dropdown-menu-B_uEXNc4.cjs +0 -220
- package/dist/dropdown-menu-CFuCssWA.js +0 -204
- package/dist/dropdown-menu-Ze1YZFyc.cjs +0 -247
- package/dist/dropdown-menu-nc_Lvg-u.js +0 -231
- package/dist/google-maps-loader-BVoVhUwA.js +0 -316
- package/dist/google-maps-loader-BqsYL48U.cjs +0 -285
- package/dist/google-maps-loader-DjJaYhV6.cjs +0 -316
- package/dist/google-maps-loader-t2IlYBzw.js +0 -286
- package/dist/index-B7A523O_.js +0 -8
- package/dist/index-BabBx2pa.js +0 -6
- package/dist/index-CkTUgOwX.js +0 -8
- package/dist/index-D3RLKRAs.cjs +0 -7
- package/dist/index-DmHhnb7a.cjs +0 -7
- package/dist/index.umd.js +0 -13712
- package/dist/input-CNFHVKvo.cjs +0 -145
- package/dist/input-CPl84zAx.cjs +0 -151
- package/dist/input-C_UiS2Py.cjs +0 -152
- package/dist/input-D-6IsAca.js +0 -133
- package/dist/input-cc-PTD4R.js +0 -123
- package/dist/input-wPYg0d0P.js +0 -127
- package/dist/progress-BLwqortq.cjs +0 -105
- package/dist/progress-D9mtsf6j.js +0 -89
- package/dist/rich-text-editor-1UW3Y2JK.js +0 -2891
- package/dist/rich-text-editor-BM-LPpTh.js +0 -2902
- package/dist/rich-text-editor-BmsjY03B.js +0 -2949
- package/dist/rich-text-editor-BrdC5evx.js +0 -2244
- package/dist/rich-text-editor-CyggTOLQ.cjs +0 -2908
- package/dist/rich-text-editor-DbV-S7Fi.cjs +0 -2261
- package/dist/rich-text-editor-DoCkKhzk.cjs +0 -2919
- package/dist/rich-text-editor-DqLICivI.js +0 -2832
- package/dist/rich-text-editor-DxO1Hz3a.cjs +0 -2903
- package/dist/rich-text-editor-GS2kpTAK.cjs +0 -2966
- package/dist/routes.d.ts +0 -10
- package/dist/select-Cmb8zF7w.cjs +0 -156
- package/dist/select-CprSNX0z.js +0 -139
- package/dist/select-DT7Zjn42.cjs +0 -162
- package/dist/select-En8DkoaQ.js +0 -145
- package/dist/sidebar-B3EYhli0.cjs +0 -800
- package/dist/sidebar-B9NR0lCe.cjs +0 -800
- package/dist/sidebar-BcJ6LxvX.cjs +0 -733
- package/dist/sidebar-BvF5I2Ue.cjs +0 -800
- package/dist/sidebar-C5B_LHek.cjs +0 -795
- package/dist/sidebar-CA6_ek3f.js +0 -801
- package/dist/sidebar-CRMiBtAi.js +0 -801
- package/dist/sidebar-CVUGHOS_.cjs +0 -756
- package/dist/sidebar-CZ2mWaMM.cjs +0 -800
- package/dist/sidebar-CmvwjnVb.js +0 -757
- package/dist/sidebar-CplprZpM.js +0 -801
- package/dist/sidebar-Dz7bd3zP.js +0 -796
- package/dist/sidebar-KIS0C2JH.js +0 -801
- package/dist/sidebar-OTO_up7Z.js +0 -801
- package/dist/sidebar-WoKvFWCN.js +0 -717
- package/dist/sidebar-zowjejT2.cjs +0 -800
- package/dist/skeleton-4zoHiFJ_.cjs +0 -83
- package/dist/skeleton-C4bHqUBf.js +0 -84
- package/dist/slider-C0JKA9k3.js +0 -56
- package/dist/slider-CPmwzm_3.cjs +0 -73
- package/dist/slider-DcJharR9.cjs +0 -73
- package/dist/slider-Pay3fka2.js +0 -56
- package/dist/sonner-DeUIj0Zg.cjs +0 -63
- package/dist/sonner-g9RIfi35.js +0 -47
- package/dist/tooltip-CNtsL5cB.cjs +0 -71
- package/dist/tooltip-CTyZCD8h.js +0 -55
- package/dist/tooltip-CwgSdy3h.cjs +0 -67
- package/dist/tooltip-D-OrYnKO.js +0 -51
- package/dist/use-audio-player-BJFV24XW.js +0 -188
- package/dist/use-audio-player-Bkh23vQ3.js +0 -177
- package/dist/use-audio-player-Dn1NR9xN.cjs +0 -176
- package/dist/use-audio-player-DyVYlOnR.cjs +0 -187
- package/dist/use-mobile-BB4M_4Ru.cjs +0 -47
- package/dist/use-mobile-CLu9nqGL.js +0 -31
- package/dist/use-mobile-CNwiBNxu.js +0 -33
- package/dist/use-mobile-Dlf74ufz.cjs +0 -49
- package/dist/xertica-assistant-B1IaHXnB.cjs +0 -1894
- package/dist/xertica-assistant-BMqdyRVi.js +0 -2082
- package/dist/xertica-assistant-Bj3vBCq_.cjs +0 -2081
- package/dist/xertica-assistant-CfBCo21g.js +0 -2148
- package/dist/xertica-assistant-DIM_Do1k.js +0 -1866
- package/dist/xertica-assistant-DPsESB6t.js +0 -1878
- package/dist/xertica-assistant-DrsRwla1.cjs +0 -2147
- package/dist/xertica-assistant-Qp3ydksa.cjs +0 -1882
- package/dist/xertica-assistant-gnCJdcZY.js +0 -1866
- package/dist/xertica-assistant-yyrR0JKl.cjs +0 -1882
- package/styles/xertica/app-overrides/scrollbar.css +0 -33
- package/templates/src/features/auth/ui/SocialLoginButtons.tsx +0 -78
- package/templates/src/features/home/data/mock.ts +0 -41
- package/templates/src/features/home/hooks/useFeatureCards.ts +0 -20
- package/templates/src/features/home/store/dashboardStore.ts +0 -25
- package/templates/src/features/template/ui/CrudTemplate.tsx +0 -112
- package/templates/src/features/template/ui/DashboardTemplate.tsx +0 -110
- package/templates/src/features/template/ui/FormTemplate.tsx +0 -117
- package/templates/src/features/template/ui/LoginTemplate.tsx +0 -59
- package/templates/src/locales/en/pages/crudTemplate.json +0 -25
- package/templates/src/locales/en/pages/dashboardTemplate.json +0 -20
- package/templates/src/locales/en/pages/formTemplate.json +0 -16
- package/templates/src/locales/en/pages/loginTemplate.json +0 -9
- package/templates/src/locales/es/pages/crudTemplate.json +0 -25
- package/templates/src/locales/es/pages/dashboardTemplate.json +0 -20
- package/templates/src/locales/es/pages/formTemplate.json +0 -16
- package/templates/src/locales/es/pages/loginTemplate.json +0 -9
- package/templates/src/locales/pt-BR/pages/crudTemplate.json +0 -25
- package/templates/src/locales/pt-BR/pages/dashboardTemplate.json +0 -20
- package/templates/src/locales/pt-BR/pages/formTemplate.json +0 -16
- package/templates/src/locales/pt-BR/pages/loginTemplate.json +0 -9
- package/templates/vite.config.d.ts +0 -2
- package/templates/vite.config.js +0 -20
- package/dist/{XerticaXLogo-qBPhwK3g.cjs → LanguageSelector-1cINLJ23.cjs} +80 -80
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import { Meta, Title, Subtitle } from '@storybook/addon-docs/blocks';
|
|
2
|
-
|
|
3
|
-
<Meta title="Brand/XerticaXLogo" />
|
|
4
|
-
|
|
5
|
-
<Title>XerticaXLogo</Title>
|
|
6
|
-
<Subtitle>Compact X-symbol mark for favicons, avatars, and collapsed sidebar slots.</Subtitle>
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Overview
|
|
11
|
-
|
|
12
|
-
`XerticaXLogo` renders only the X-symbol portion of the Xertica identity. It shares the same prop API as `XerticaLogo` and is the preferred choice wherever horizontal space is constrained.
|
|
13
|
-
|
|
14
|
-
```tsx
|
|
15
|
-
import { XerticaXLogo } from 'xertica-ui/brand';
|
|
16
|
-
|
|
17
|
-
<XerticaXLogo className="h-8 w-8" />
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Props
|
|
23
|
-
|
|
24
|
-
| Prop | Type | Default | Description |
|
|
25
|
-
|---|---|---|---|
|
|
26
|
-
| `variant` | `'default' \| 'white' \| 'theme'` | `'default'` | Color variant. `default` uses `var(--primary)`, `white` forces white fill, `theme` inherits `currentColor`. |
|
|
27
|
-
| `color` | `string` | — | Direct color override. Overrides `variant`. |
|
|
28
|
-
| `className` | `string` | `'w-auto h-8'` | Additional CSS classes applied to the SVG element. |
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Usage Examples
|
|
33
|
-
|
|
34
|
-
```tsx
|
|
35
|
-
// Default — primary color
|
|
36
|
-
<XerticaXLogo className="h-10 w-10" />
|
|
37
|
-
|
|
38
|
-
// On a dark background
|
|
39
|
-
<XerticaXLogo variant="white" className="h-10 w-10" />
|
|
40
|
-
|
|
41
|
-
// Inherits current text color
|
|
42
|
-
<XerticaXLogo variant="theme" className="h-10 w-10 text-blue-600" />
|
|
43
|
-
|
|
44
|
-
// Collapsed sidebar icon slot
|
|
45
|
-
<XerticaXLogo className="h-6 w-6 shrink-0" />
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## AI Best Practices
|
|
51
|
-
|
|
52
|
-
> [!IMPORTANT]
|
|
53
|
-
> - **Square sizing** — Unlike the full logo, set both width and height to the same value (e.g., `h-10 w-10`) since the X symbol has a near-square aspect ratio (viewBox `0 0 258 282`).
|
|
54
|
-
> - **Favicon** — Export as a PNG at 32×32 and 192×192 for web manifest icons; do not use the SVG component directly in `<link rel="icon">`.
|
|
55
|
-
> - **Collapsed sidebar** — Replace the full `XerticaLogo` with `XerticaXLogo` when `sidebarExpanded === false` to avoid clipping.
|
|
1
|
+
import { Meta, Title, Subtitle } from '@storybook/addon-docs/blocks';
|
|
2
|
+
|
|
3
|
+
<Meta title="Brand/XerticaXLogo" />
|
|
4
|
+
|
|
5
|
+
<Title>XerticaXLogo</Title>
|
|
6
|
+
<Subtitle>Compact X-symbol mark for favicons, avatars, and collapsed sidebar slots.</Subtitle>
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
`XerticaXLogo` renders only the X-symbol portion of the Xertica identity. It shares the same prop API as `XerticaLogo` and is the preferred choice wherever horizontal space is constrained.
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
import { XerticaXLogo } from 'xertica-ui/brand';
|
|
16
|
+
|
|
17
|
+
<XerticaXLogo className="h-8 w-8" />
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Props
|
|
23
|
+
|
|
24
|
+
| Prop | Type | Default | Description |
|
|
25
|
+
|---|---|---|---|
|
|
26
|
+
| `variant` | `'default' \| 'white' \| 'theme'` | `'default'` | Color variant. `default` uses `var(--primary)`, `white` forces white fill, `theme` inherits `currentColor`. |
|
|
27
|
+
| `color` | `string` | — | Direct color override. Overrides `variant`. |
|
|
28
|
+
| `className` | `string` | `'w-auto h-8'` | Additional CSS classes applied to the SVG element. |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Usage Examples
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
// Default — primary color
|
|
36
|
+
<XerticaXLogo className="h-10 w-10" />
|
|
37
|
+
|
|
38
|
+
// On a dark background
|
|
39
|
+
<XerticaXLogo variant="white" className="h-10 w-10" />
|
|
40
|
+
|
|
41
|
+
// Inherits current text color
|
|
42
|
+
<XerticaXLogo variant="theme" className="h-10 w-10 text-blue-600" />
|
|
43
|
+
|
|
44
|
+
// Collapsed sidebar icon slot
|
|
45
|
+
<XerticaXLogo className="h-6 w-6 shrink-0" />
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## AI Best Practices
|
|
51
|
+
|
|
52
|
+
> [!IMPORTANT]
|
|
53
|
+
> - **Square sizing** — Unlike the full logo, set both width and height to the same value (e.g., `h-10 w-10`) since the X symbol has a near-square aspect ratio (viewBox `0 0 258 282`).
|
|
54
|
+
> - **Favicon** — Export as a PNG at 32×32 and 192×192 for web manifest icons; do not use the SVG component directly in `<link rel="icon">`.
|
|
55
|
+
> - **Collapsed sidebar** — Replace the full `XerticaLogo` with `XerticaXLogo` when `sidebarExpanded === false` to avoid clipping.
|
|
@@ -547,10 +547,7 @@ export function DrawingMapExample({ apiKey }: DrawingMapExampleProps) {
|
|
|
547
547
|
<DialogDescription>Copie os dados das formas desenhadas abaixo.</DialogDescription>
|
|
548
548
|
</DialogHeader>
|
|
549
549
|
<div className="relative mt-2">
|
|
550
|
-
<pre
|
|
551
|
-
className="p-4 rounded-lg bg-muted overflow-auto max-h-[300px] text-xs font-mono"
|
|
552
|
-
data-custom-scrollbar
|
|
553
|
-
>
|
|
550
|
+
<pre className="p-4 rounded-lg bg-muted overflow-auto max-h-[300px] text-xs font-mono scrollbar-thin scrollbar-thumb-border scrollbar-track-transparent">
|
|
554
551
|
{savedData}
|
|
555
552
|
</pre>
|
|
556
553
|
</div>
|
|
@@ -1,117 +1,117 @@
|
|
|
1
|
-
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Canvas } from '@storybook/addon-docs/blocks';
|
|
2
|
-
import * as HeaderStories from './header.stories';
|
|
3
|
-
|
|
4
|
-
<Meta of={HeaderStories} />
|
|
5
|
-
|
|
6
|
-
<Title />
|
|
7
|
-
<Subtitle>The primary Top Bar component for the application shell.</Subtitle>
|
|
8
|
-
|
|
9
|
-
The `Header` represents the global top bar of the application ecosystem. It provides navigation context (breadcrumbs), system controls (language and theme), and management of the logged-in user profile.
|
|
10
|
-
|
|
11
|
-
<Primary />
|
|
12
|
-
|
|
13
|
-
## Properties
|
|
14
|
-
|
|
15
|
-
The `Header` is highly configurable, allowing for everything from basic title control to complete customization of the user menu.
|
|
16
|
-
|
|
17
|
-
<Controls />
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Usage Differentiation
|
|
22
|
-
|
|
23
|
-
It is essential to understand the difference between the **Header** and the **PageHeader** to maintain visual consistency:
|
|
24
|
-
|
|
25
|
-
- **Header (Global)**: Fixed top bar (`sticky`). Contains the navigation trail (breadcrumbs) and the user profile. There is only **ONE** per application.
|
|
26
|
-
- **PageHeader (Local)**: Located inside the content area. Contains the large page title (`h1`), subtitle, and specific action buttons (such as "Save" or "New").
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## Navigation Modes
|
|
31
|
-
|
|
32
|
-
### 1. Breadcrumbs (Default — Recommended)
|
|
33
|
-
|
|
34
|
-
The **primary pattern**. Use `breadcrumbs` for any page with navigation hierarchy. The component supports **unlimited** depth levels — do not limit to 2 or 3 items.
|
|
35
|
-
|
|
36
|
-
<Canvas of={HeaderStories.Default} />
|
|
37
|
-
|
|
38
|
-
### 2. Deep Navigation (5+ Levels)
|
|
39
|
-
|
|
40
|
-
Breadcrumbs gracefully handle deeply nested navigation structures with automatic separators and horizontal scrolling.
|
|
41
|
-
|
|
42
|
-
<Canvas of={HeaderStories.DeepNavigation} />
|
|
43
|
-
|
|
44
|
-
### 3. Title Only (Exception)
|
|
45
|
-
|
|
46
|
-
Use `title` **only** when the page is a standalone top-level page with no navigation context (e.g., a standalone dashboard or landing page). This renders a plain text label without separators.
|
|
47
|
-
|
|
48
|
-
> [!WARNING]
|
|
49
|
-
> The `title`-only pattern is the **exception**, not the default. Always prefer `breadcrumbs` when the page has any navigation hierarchy.
|
|
50
|
-
|
|
51
|
-
<Canvas of={HeaderStories.TitleOnly} />
|
|
52
|
-
|
|
53
|
-
### 4. SPA Navigation (React Router)
|
|
54
|
-
|
|
55
|
-
Use the `renderLink` prop to integrate with client-side routers like React Router or Next.js Link. This prevents full-page reloads when users click breadcrumb links.
|
|
56
|
-
|
|
57
|
-
```tsx
|
|
58
|
-
import { Link } from 'react-router-dom';
|
|
59
|
-
|
|
60
|
-
<Header
|
|
61
|
-
breadcrumbs={[...]}
|
|
62
|
-
renderLink={(href, props) => <Link to={href} {...props} />}
|
|
63
|
-
/>
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
<Canvas of={HeaderStories.WithReactRouter} />
|
|
67
|
-
|
|
68
|
-
### 5. Global Actions and User Menu
|
|
69
|
-
|
|
70
|
-
Use the `actions` prop for buttons that should always be visible (such as notifications or messages). The `user` prop allows for full customization of the profile dropdown.
|
|
71
|
-
|
|
72
|
-
<Canvas of={HeaderStories.WithActions} />
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Fallback Logic
|
|
77
|
-
|
|
78
|
-
The `Header` ensures a navigation area is **never empty**:
|
|
79
|
-
|
|
80
|
-
1. **Breadcrumbs** → If provided, renders the full navigation trail with separators.
|
|
81
|
-
2. **Title** → If provided (without breadcrumbs), renders a simple text label.
|
|
82
|
-
3. **Default** → If neither is provided, falls back to `Xertica.ai`.
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Best Practices & AI Rules
|
|
87
|
-
|
|
88
|
-
> [!IMPORTANT]
|
|
89
|
-
> - **Breadcrumbs First** — Always prefer `breadcrumbs` for navigable pages. Use `title` only for standalone pages with no hierarchy.
|
|
90
|
-
> - **Unlimited Levels** — Breadcrumbs support any depth. Do not artificially limit to 2–3 items.
|
|
91
|
-
> - **Mobile Navigation** — The `Header` contains the automatic trigger to open/close the Sidebar on mobile devices following the `LayoutContext` state.
|
|
92
|
-
> - **Height Consistency** — The header has a fixed height of `64px` (`h-[64px]`). Its breadcrumbs are automatically truncated on small screens to prevent layout breaking.
|
|
93
|
-
> - **Right Area Actions** — Use `actions` for frequently used interaction items. Less used configuration items should be placed inside `user.menuItems`.
|
|
94
|
-
|
|
95
|
-
### Developer Integration Guide
|
|
96
|
-
```tsx
|
|
97
|
-
import { Header } from 'xertica-ui/layout';
|
|
98
|
-
import { Home, Settings, Users } from 'lucide-react';
|
|
99
|
-
|
|
100
|
-
export function MyLayout({ children }) {
|
|
101
|
-
return (
|
|
102
|
-
<div className="flex flex-col min-h-screen">
|
|
103
|
-
<Header
|
|
104
|
-
breadcrumbs={[
|
|
105
|
-
{ label: 'Home', href: '/', icon: <Home className="size-4" /> },
|
|
106
|
-
{ label: 'Settings', href: '/settings', icon: <Settings className="size-4" /> },
|
|
107
|
-
{ label: 'Team Management' },
|
|
108
|
-
]}
|
|
109
|
-
user={{ name: "John Doe", email: "john@example.com" }}
|
|
110
|
-
/>
|
|
111
|
-
<main className="flex-1 p-6">
|
|
112
|
-
{children}
|
|
113
|
-
</main>
|
|
114
|
-
</div>
|
|
115
|
-
)
|
|
116
|
-
}
|
|
117
|
-
```
|
|
1
|
+
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Canvas } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as HeaderStories from './header.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={HeaderStories} />
|
|
5
|
+
|
|
6
|
+
<Title />
|
|
7
|
+
<Subtitle>The primary Top Bar component for the application shell.</Subtitle>
|
|
8
|
+
|
|
9
|
+
The `Header` represents the global top bar of the application ecosystem. It provides navigation context (breadcrumbs), system controls (language and theme), and management of the logged-in user profile.
|
|
10
|
+
|
|
11
|
+
<Primary />
|
|
12
|
+
|
|
13
|
+
## Properties
|
|
14
|
+
|
|
15
|
+
The `Header` is highly configurable, allowing for everything from basic title control to complete customization of the user menu.
|
|
16
|
+
|
|
17
|
+
<Controls />
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Usage Differentiation
|
|
22
|
+
|
|
23
|
+
It is essential to understand the difference between the **Header** and the **PageHeader** to maintain visual consistency:
|
|
24
|
+
|
|
25
|
+
- **Header (Global)**: Fixed top bar (`sticky`). Contains the navigation trail (breadcrumbs) and the user profile. There is only **ONE** per application.
|
|
26
|
+
- **PageHeader (Local)**: Located inside the content area. Contains the large page title (`h1`), subtitle, and specific action buttons (such as "Save" or "New").
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Navigation Modes
|
|
31
|
+
|
|
32
|
+
### 1. Breadcrumbs (Default — Recommended)
|
|
33
|
+
|
|
34
|
+
The **primary pattern**. Use `breadcrumbs` for any page with navigation hierarchy. The component supports **unlimited** depth levels — do not limit to 2 or 3 items.
|
|
35
|
+
|
|
36
|
+
<Canvas of={HeaderStories.Default} />
|
|
37
|
+
|
|
38
|
+
### 2. Deep Navigation (5+ Levels)
|
|
39
|
+
|
|
40
|
+
Breadcrumbs gracefully handle deeply nested navigation structures with automatic separators and horizontal scrolling.
|
|
41
|
+
|
|
42
|
+
<Canvas of={HeaderStories.DeepNavigation} />
|
|
43
|
+
|
|
44
|
+
### 3. Title Only (Exception)
|
|
45
|
+
|
|
46
|
+
Use `title` **only** when the page is a standalone top-level page with no navigation context (e.g., a standalone dashboard or landing page). This renders a plain text label without separators.
|
|
47
|
+
|
|
48
|
+
> [!WARNING]
|
|
49
|
+
> The `title`-only pattern is the **exception**, not the default. Always prefer `breadcrumbs` when the page has any navigation hierarchy.
|
|
50
|
+
|
|
51
|
+
<Canvas of={HeaderStories.TitleOnly} />
|
|
52
|
+
|
|
53
|
+
### 4. SPA Navigation (React Router)
|
|
54
|
+
|
|
55
|
+
Use the `renderLink` prop to integrate with client-side routers like React Router or Next.js Link. This prevents full-page reloads when users click breadcrumb links.
|
|
56
|
+
|
|
57
|
+
```tsx
|
|
58
|
+
import { Link } from 'react-router-dom';
|
|
59
|
+
|
|
60
|
+
<Header
|
|
61
|
+
breadcrumbs={[...]}
|
|
62
|
+
renderLink={(href, props) => <Link to={href} {...props} />}
|
|
63
|
+
/>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
<Canvas of={HeaderStories.WithReactRouter} />
|
|
67
|
+
|
|
68
|
+
### 5. Global Actions and User Menu
|
|
69
|
+
|
|
70
|
+
Use the `actions` prop for buttons that should always be visible (such as notifications or messages). The `user` prop allows for full customization of the profile dropdown.
|
|
71
|
+
|
|
72
|
+
<Canvas of={HeaderStories.WithActions} />
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Fallback Logic
|
|
77
|
+
|
|
78
|
+
The `Header` ensures a navigation area is **never empty**:
|
|
79
|
+
|
|
80
|
+
1. **Breadcrumbs** → If provided, renders the full navigation trail with separators.
|
|
81
|
+
2. **Title** → If provided (without breadcrumbs), renders a simple text label.
|
|
82
|
+
3. **Default** → If neither is provided, falls back to `Xertica.ai`.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Best Practices & AI Rules
|
|
87
|
+
|
|
88
|
+
> [!IMPORTANT]
|
|
89
|
+
> - **Breadcrumbs First** — Always prefer `breadcrumbs` for navigable pages. Use `title` only for standalone pages with no hierarchy.
|
|
90
|
+
> - **Unlimited Levels** — Breadcrumbs support any depth. Do not artificially limit to 2–3 items.
|
|
91
|
+
> - **Mobile Navigation** — The `Header` contains the automatic trigger to open/close the Sidebar on mobile devices following the `LayoutContext` state.
|
|
92
|
+
> - **Height Consistency** — The header has a fixed height of `64px` (`h-[64px]`). Its breadcrumbs are automatically truncated on small screens to prevent layout breaking.
|
|
93
|
+
> - **Right Area Actions** — Use `actions` for frequently used interaction items. Less used configuration items should be placed inside `user.menuItems`.
|
|
94
|
+
|
|
95
|
+
### Developer Integration Guide
|
|
96
|
+
```tsx
|
|
97
|
+
import { Header } from 'xertica-ui/layout';
|
|
98
|
+
import { Home, Settings, Users } from 'lucide-react';
|
|
99
|
+
|
|
100
|
+
export function MyLayout({ children }) {
|
|
101
|
+
return (
|
|
102
|
+
<div className="flex flex-col min-h-screen">
|
|
103
|
+
<Header
|
|
104
|
+
breadcrumbs={[
|
|
105
|
+
{ label: 'Home', href: '/', icon: <Home className="size-4" /> },
|
|
106
|
+
{ label: 'Settings', href: '/settings', icon: <Settings className="size-4" /> },
|
|
107
|
+
{ label: 'Team Management' },
|
|
108
|
+
]}
|
|
109
|
+
user={{ name: "John Doe", email: "john@example.com" }}
|
|
110
|
+
/>
|
|
111
|
+
<main className="flex-1 p-6">
|
|
112
|
+
{children}
|
|
113
|
+
</main>
|
|
114
|
+
</div>
|
|
115
|
+
)
|
|
116
|
+
}
|
|
117
|
+
```
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { screen, fireEvent } from '@testing-library/react';
|
|
2
|
+
import { renderWithProviders as render } from '../../../test/render';
|
|
2
3
|
import { describe, it, expect, vi } from 'vitest';
|
|
3
4
|
import { Header } from './header';
|
|
4
5
|
import React from 'react';
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Canvas, ArgTypes } from '@storybook/addon-docs/blocks';
|
|
2
|
-
import * as SidebarStories from './sidebar.stories';
|
|
3
|
-
|
|
4
|
-
<Meta of={SidebarStories} />
|
|
5
|
-
|
|
6
|
-
# Sidebar
|
|
7
|
-
|
|
8
|
-
<Subtitle>Customized navigation shell for enterprise platforms.</Subtitle>
|
|
9
|
-
|
|
10
|
-
<Description>
|
|
11
|
-
The Sidebar is the main structural component of the application layout. It supports responsive toggling, hierarchical navigation groups, and an advanced **Assistant Mode** for AI-driven or tool-centric interfaces.
|
|
12
|
-
</Description>
|
|
13
|
-
|
|
14
|
-
<Primary />
|
|
15
|
-
|
|
16
|
-
## Interactive Props
|
|
17
|
-
<ArgTypes of={SidebarStories.Default} />
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Autonomous Operation
|
|
22
|
-
|
|
23
|
-
The Sidebar component is designed to be **autonomous**. While it is typically used with `LayoutProvider`, it can function completely independently:
|
|
24
|
-
|
|
25
|
-
- **Automatic Context Detection**: If a `LayoutProvider` is found, it synchronizes with the global state (expanded, width, toggles).
|
|
26
|
-
- **Local State Fallback**: If no context is provided, it manages its own `expanded` state internally.
|
|
27
|
-
- **Optional Props**: All structural props (`expanded`, `onToggle`, `navigate`, `location`) are now optional with smart fallbacks to global objects or local state.
|
|
28
|
-
|
|
29
|
-
```tsx
|
|
30
|
-
// Simple, autonomous usage
|
|
31
|
-
<Sidebar routes={myRoutes} />
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Usage Patterns
|
|
37
|
-
|
|
38
|
-
### Traditional System Navigation
|
|
39
|
-
The `default` variant provides a clean, standard list of routes. Use this for management dashboards and settings-heavy areas.
|
|
40
|
-
|
|
41
|
-
<Canvas>
|
|
42
|
-
<SidebarStories.Default />
|
|
43
|
-
</Canvas>
|
|
44
|
-
|
|
45
|
-
### AI Assistant & Monitoring
|
|
46
|
-
The `assistant` variant is designed for dynamic content like conversation history, project monitoring, and searchable toolsets. It supports search filters, primary action buttons, and progress indicators within descriptions.
|
|
47
|
-
|
|
48
|
-
<Canvas>
|
|
49
|
-
<SidebarStories.Assistant />
|
|
50
|
-
</Canvas>
|
|
51
|
-
|
|
52
|
-
### Compact (Collapsed) View
|
|
53
|
-
Maximizes the workspace by collapsing the sidebar to an icon-only strip. Interactive tooltips provide context for each item.
|
|
54
|
-
|
|
55
|
-
<Canvas>
|
|
56
|
-
<SidebarStories.Collapsed />
|
|
57
|
-
</Canvas>
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## Layout Features
|
|
62
|
-
|
|
63
|
-
### Keyboard Shortcuts
|
|
64
|
-
The sidebar expansion can be toggled using the global shortcut:
|
|
65
|
-
- **`Ctrl + B`** (Windows/Linux)
|
|
66
|
-
- **`Cmd + B`** (macOS)
|
|
67
|
-
|
|
68
|
-
### State Persistence
|
|
69
|
-
The expansion state is automatically persisted in a cookie (`sidebar_state`), ensuring the user's preference is maintained across page reloads and sessions.
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
## Technical Integration
|
|
74
|
-
|
|
75
|
-
### Global Layout Hook
|
|
76
|
-
The Sidebar should ideally be synchronized with the `useLayout()` hook to ensure the main application container adjusts its padding accordingly.
|
|
77
|
-
|
|
78
|
-
```tsx
|
|
79
|
-
import { Sidebar } from 'xertica-ui/layout';
|
|
80
|
-
import { useLayout } from 'xertica-ui/hooks';
|
|
81
|
-
|
|
82
|
-
const { sidebarExpanded, toggleSidebar, sidebarWidth } = useLayout();
|
|
83
|
-
|
|
84
|
-
return (
|
|
85
|
-
<Sidebar
|
|
86
|
-
expanded={sidebarExpanded}
|
|
87
|
-
onToggle={toggleSidebar}
|
|
88
|
-
width={sidebarWidth}
|
|
89
|
-
// ...
|
|
90
|
-
/>
|
|
91
|
-
);
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### AI Best Practices
|
|
95
|
-
|
|
96
|
-
> [!TIP]
|
|
97
|
-
> - **Primary Actions** — Use the `fixedArea` property to place critical CTA buttons (like "New Conversation") always in view.
|
|
98
|
-
> - **Search & Filtering** — Enable `search.filter` to allow users to toggle between different states (e.g., Active, Archived).
|
|
99
|
-
> - **Contextual Menus** — Add `actions` to navigation items to provide quick management (Rename, Delete, Move) without leaving the current view.
|
|
1
|
+
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Canvas, ArgTypes } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as SidebarStories from './sidebar.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={SidebarStories} />
|
|
5
|
+
|
|
6
|
+
# Sidebar
|
|
7
|
+
|
|
8
|
+
<Subtitle>Customized navigation shell for enterprise platforms.</Subtitle>
|
|
9
|
+
|
|
10
|
+
<Description>
|
|
11
|
+
The Sidebar is the main structural component of the application layout. It supports responsive toggling, hierarchical navigation groups, and an advanced **Assistant Mode** for AI-driven or tool-centric interfaces.
|
|
12
|
+
</Description>
|
|
13
|
+
|
|
14
|
+
<Primary />
|
|
15
|
+
|
|
16
|
+
## Interactive Props
|
|
17
|
+
<ArgTypes of={SidebarStories.Default} />
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Autonomous Operation
|
|
22
|
+
|
|
23
|
+
The Sidebar component is designed to be **autonomous**. While it is typically used with `LayoutProvider`, it can function completely independently:
|
|
24
|
+
|
|
25
|
+
- **Automatic Context Detection**: If a `LayoutProvider` is found, it synchronizes with the global state (expanded, width, toggles).
|
|
26
|
+
- **Local State Fallback**: If no context is provided, it manages its own `expanded` state internally.
|
|
27
|
+
- **Optional Props**: All structural props (`expanded`, `onToggle`, `navigate`, `location`) are now optional with smart fallbacks to global objects or local state.
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
// Simple, autonomous usage
|
|
31
|
+
<Sidebar routes={myRoutes} />
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Usage Patterns
|
|
37
|
+
|
|
38
|
+
### Traditional System Navigation
|
|
39
|
+
The `default` variant provides a clean, standard list of routes. Use this for management dashboards and settings-heavy areas.
|
|
40
|
+
|
|
41
|
+
<Canvas>
|
|
42
|
+
<SidebarStories.Default />
|
|
43
|
+
</Canvas>
|
|
44
|
+
|
|
45
|
+
### AI Assistant & Monitoring
|
|
46
|
+
The `assistant` variant is designed for dynamic content like conversation history, project monitoring, and searchable toolsets. It supports search filters, primary action buttons, and progress indicators within descriptions.
|
|
47
|
+
|
|
48
|
+
<Canvas>
|
|
49
|
+
<SidebarStories.Assistant />
|
|
50
|
+
</Canvas>
|
|
51
|
+
|
|
52
|
+
### Compact (Collapsed) View
|
|
53
|
+
Maximizes the workspace by collapsing the sidebar to an icon-only strip. Interactive tooltips provide context for each item.
|
|
54
|
+
|
|
55
|
+
<Canvas>
|
|
56
|
+
<SidebarStories.Collapsed />
|
|
57
|
+
</Canvas>
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Layout Features
|
|
62
|
+
|
|
63
|
+
### Keyboard Shortcuts
|
|
64
|
+
The sidebar expansion can be toggled using the global shortcut:
|
|
65
|
+
- **`Ctrl + B`** (Windows/Linux)
|
|
66
|
+
- **`Cmd + B`** (macOS)
|
|
67
|
+
|
|
68
|
+
### State Persistence
|
|
69
|
+
The expansion state is automatically persisted in a cookie (`sidebar_state`), ensuring the user's preference is maintained across page reloads and sessions.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Technical Integration
|
|
74
|
+
|
|
75
|
+
### Global Layout Hook
|
|
76
|
+
The Sidebar should ideally be synchronized with the `useLayout()` hook to ensure the main application container adjusts its padding accordingly.
|
|
77
|
+
|
|
78
|
+
```tsx
|
|
79
|
+
import { Sidebar } from 'xertica-ui/layout';
|
|
80
|
+
import { useLayout } from 'xertica-ui/hooks';
|
|
81
|
+
|
|
82
|
+
const { sidebarExpanded, toggleSidebar, sidebarWidth } = useLayout();
|
|
83
|
+
|
|
84
|
+
return (
|
|
85
|
+
<Sidebar
|
|
86
|
+
expanded={sidebarExpanded}
|
|
87
|
+
onToggle={toggleSidebar}
|
|
88
|
+
width={sidebarWidth}
|
|
89
|
+
// ...
|
|
90
|
+
/>
|
|
91
|
+
);
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### AI Best Practices
|
|
95
|
+
|
|
96
|
+
> [!TIP]
|
|
97
|
+
> - **Primary Actions** — Use the `fixedArea` property to place critical CTA buttons (like "New Conversation") always in view.
|
|
98
|
+
> - **Search & Filtering** — Enable `search.filter` to allow users to toggle between different states (e.g., Active, Archived).
|
|
99
|
+
> - **Contextual Menus** — Add `actions` to navigation items to provide quick management (Rename, Delete, Move) without leaving the current view.
|