xertica-ui 2.5.3 → 2.6.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 +687 -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 +5 -4
- package/components/assistant/xertica-assistant/xertica-assistant.mdx +66 -66
- package/components/assistant/xertica-assistant/xertica-assistant.test.tsx +2 -1
- package/components/blocks/card-patterns/card-patterns.mdx +123 -123
- 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 +188 -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 +218 -218
- package/components/pages/login-page/login-page.test.tsx +2 -1
- package/components/pages/reset-password-page/ResetPasswordPage.tsx +243 -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 +206 -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-BW9JK6jw.cjs → AssistantChart-CVF2uh37.cjs} +4 -4
- 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/{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/{ThemeContext-BgclCB35.js → ThemeContext-BGeh_Kdr.js} +290 -212
- package/dist/{ThemeContext-BblcjQup.cjs → ThemeContext-D50irx5T.cjs} +291 -205
- package/dist/{VerifyEmailPage-C_Zk6Gen.cjs → VerifyEmailPage-B6bOrybJ.cjs} +17 -17
- package/dist/{VerifyEmailPage-B31mCrMc.js → VerifyEmailPage-BRE5Fz59.js} +8 -8
- package/dist/{VerifyEmailPage-Cyl55sJb.js → VerifyEmailPage-BcCluouh.js} +135 -65
- 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-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-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-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/assistant.cjs.js +2 -2
- package/dist/assistant.es.js +2 -2
- package/dist/brand.cjs.js +6 -6
- package/dist/brand.es.js +2 -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/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/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 +2 -1
- 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 +2 -2
- package/dist/hooks.es.js +2 -2
- package/dist/{index-9GWd0qxq.cjs → index-BQjx1Mdf.cjs} +1 -1
- package/dist/index-Bei5DzAL.js +6 -0
- package/dist/index.cjs.js +15 -15
- package/dist/index.es.js +11 -11
- 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-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-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 +4 -4
- package/dist/ui.es.js +4 -4
- 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 +31 -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/AuthPageShell.tsx +32 -32
- package/templates/src/features/home/ui/HomeContent.tsx +116 -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/ui/TemplateContent.tsx +1321 -1321
- package/templates/src/i18n.ts +36 -13
- package/templates/src/locales/en/pages/settings.json +15 -0
- package/templates/src/locales/es/pages/settings.json +15 -0
- package/templates/src/locales/pt-BR/pages/settings.json +15 -0
- 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/templates/vite.config.d.ts +2 -2
- package/templates/vite.config.js +20 -20
- 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-BXU1ACnh.js +0 -3489
- package/dist/AssistantChart-CVko2A1W.js +0 -3348
- package/dist/AssistantChart-CVzmmhx4.js +0 -3337
- package/dist/AssistantChart-CeU2dIb6.js +0 -3469
- package/dist/AssistantChart-D0A1FPYt.cjs +0 -3515
- 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-Cfs6Ishq.js +0 -485
- package/dist/FeatureCard-CkPd2psQ.cjs +0 -301
- package/dist/FeatureCard-Dkp-xmzM.cjs +0 -335
- package/dist/FeatureCard-ie3L8Fpr.cjs +0 -484
- 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-RTy1m2Uq.js +0 -82
- package/dist/ThemeContext-U4dEYc6C.cjs +0 -187
- package/dist/ThemeContext-bSzuOit2.cjs +0 -81
- 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-B8CaV7xu.cjs +0 -39
- 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-DQtvJU7m.js +0 -40
- 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-CFuIlYFH.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-CziKMQil.cjs +0 -242
- 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/alert-dialog-iDe5VE5o.js +0 -842
- package/dist/alert-dialog-yckpaOpy.cjs +0 -865
- 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-Cs9i4DPx.js +0 -81
- package/dist/progress-D9mtsf6j.js +0 -89
- package/dist/progress-DDeuWPZw.cjs +0 -97
- 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-B4ZWaMrE.js +0 -792
- 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-DyYvgyBj.cjs +0 -795
- 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-BbgzsgsG.js +0 -2164
- 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-d2qs2Vd9.cjs +0 -2163
- 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/dist/{XerticaXLogo-qBPhwK3g.cjs → LanguageSelector-1cINLJ23.cjs} +80 -80
|
@@ -1,121 +1,121 @@
|
|
|
1
|
-
import { Meta } from '@storybook/addon-docs/blocks';
|
|
2
|
-
import { XerticaLogo } from './brand/xertica-logo/XerticaLogo';
|
|
3
|
-
|
|
4
|
-
<Meta title="Introduction" />
|
|
5
|
-
|
|
6
|
-
<div className="flex flex-col gap-8 py-12 max-w-4xl mx-auto">
|
|
7
|
-
<div className="flex flex-col items-center text-center space-y-4">
|
|
8
|
-
<div className="p-3">
|
|
9
|
-
<XerticaLogo className="h-16 w-auto" />
|
|
10
|
-
</div>
|
|
11
|
-
<h1 className="text-5xl font-extrabold tracking-tight text-foreground">Design System</h1>
|
|
12
|
-
<p className="text-xl text-muted-foreground max-w-2xl">
|
|
13
|
-
Official Design System for Xertica projects. Built with Tailwind CSS v4, Radix UI, and AI-first engineering.
|
|
14
|
-
</p>
|
|
15
|
-
<div className="text-lg font-mono text-muted-foreground bg-muted px-4 py-2 rounded-lg">
|
|
16
|
-
97 Components
|
|
17
|
-
</div>
|
|
18
|
-
<div className="flex gap-4 pt-4">
|
|
19
|
-
<a href="https://www.npmjs.com/package/xertica-ui" target="_blank" className="h-11 px-8 rounded-full border border-border bg-background text-foreground font-medium flex items-center hover:bg-accent transition-colors no-underline">
|
|
20
|
-
NPM
|
|
21
|
-
</a>
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
24
|
-
|
|
25
|
-
{/* Installation */}
|
|
26
|
-
<div className="bg-muted p-8 rounded-2xl space-y-6">
|
|
27
|
-
<h2 className="text-2xl font-bold">Installation</h2>
|
|
28
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
29
|
-
<div className="space-y-3">
|
|
30
|
-
<h3 className="font-semibold flex items-center gap-2">
|
|
31
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/></svg>
|
|
32
|
-
npm
|
|
33
|
-
</h3>
|
|
34
|
-
<div className="bg-background p-4 rounded-lg border border-border font-mono text-sm overflow-x-auto">
|
|
35
|
-
<pre className="text-foreground"><code>npm install xertica-ui</code></pre>
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
<div className="space-y-3">
|
|
39
|
-
<h3 className="font-semibold flex items-center gap-2">
|
|
40
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M12 2v8"/><path d="m16 6-4 4-4-4"/><rect width="20" height="8" x="2" y="14" rx="2"/></svg>
|
|
41
|
-
npx (CLI)
|
|
42
|
-
</h3>
|
|
43
|
-
<div className="bg-background p-4 rounded-lg border border-border font-mono text-sm overflow-x-auto">
|
|
44
|
-
<pre className="text-foreground"><code>npx xertica-ui@latest init</code></pre>
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
</div>
|
|
48
|
-
<p className="text-sm text-muted-foreground">
|
|
49
|
-
Use <code>npm</code> to install the package, or <code>npx</code> to scaffold a new project with the CLI.
|
|
50
|
-
</p>
|
|
51
|
-
</div>
|
|
52
|
-
|
|
53
|
-
<div className="grid grid-cols-1 md:grid-cols-3 gap-6 pt-8">
|
|
54
|
-
<div className="p-6 rounded-[var(--radius-card)] border border-border bg-card shadow-sm hover:shadow-md transition-shadow">
|
|
55
|
-
<div className="w-10 h-10 bg-info/10 rounded-lg flex items-center justify-center mb-4 text-info">
|
|
56
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M12 2v8"/><path d="m16 6-4 4-4-4"/><rect width="20" height="8" x="2" y="14" rx="2"/></svg>
|
|
57
|
-
</div>
|
|
58
|
-
<h3 className="text-lg font-semibold mb-2">Instant Installation</h3>
|
|
59
|
-
<p className="text-sm text-muted-foreground leading-relaxed">
|
|
60
|
-
Add to your project with a single command. Integrated CLI for layout and theme scaffolding.
|
|
61
|
-
</p>
|
|
62
|
-
</div>
|
|
63
|
-
|
|
64
|
-
<div className="p-6 rounded-[var(--radius-card)] border border-border bg-card shadow-sm hover:shadow-md transition-shadow">
|
|
65
|
-
<div className="w-10 h-10 bg-success/10 rounded-lg flex items-center justify-center mb-4 text-success">
|
|
66
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg>
|
|
67
|
-
</div>
|
|
68
|
-
<h3 className="text-lg font-semibold mb-2">Tailwind v4 Native</h3>
|
|
69
|
-
<p className="text-sm text-muted-foreground leading-relaxed">
|
|
70
|
-
Leverage the power of Tailwind CSS v4 with its new faster and more flexible engine.
|
|
71
|
-
</p>
|
|
72
|
-
</div>
|
|
73
|
-
|
|
74
|
-
<div className="p-6 rounded-[var(--radius-card)] border border-border bg-card shadow-sm hover:shadow-md transition-shadow">
|
|
75
|
-
<div className="w-10 h-10 bg-warning/10 rounded-lg flex items-center justify-center mb-4 text-warning">
|
|
76
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>
|
|
77
|
-
</div>
|
|
78
|
-
<h3 className="text-lg font-semibold mb-2">AI-Ready</h3>
|
|
79
|
-
<p className="text-sm text-muted-foreground leading-relaxed">
|
|
80
|
-
Documentation optimized for LLM prompt systems (Antigravity, Cursor, etc).
|
|
81
|
-
</p>
|
|
82
|
-
</div>
|
|
83
|
-
</div>
|
|
84
|
-
|
|
85
|
-
<div className="space-y-6 pt-12">
|
|
86
|
-
<h2 className="text-3xl font-bold border-b pb-2 border-border">Design Philosophy</h2>
|
|
87
|
-
<p className="text-lg leading-relaxed text-muted-foreground">
|
|
88
|
-
Xertica UI focuses on modularity and high performance for Xertica's ecosystem of products.
|
|
89
|
-
Our goal is to ensure functional consistency, accessibility (via Radix UI), and rapid development at scale.
|
|
90
|
-
</p>
|
|
91
|
-
|
|
92
|
-
<div className="bg-muted p-8 rounded-2xl space-y-4">
|
|
93
|
-
<h4 className="font-bold flex items-center gap-2">
|
|
94
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><rect width="8" height="4" x="8" y="2" rx="1" ry="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/></svg>
|
|
95
|
-
Ecosystem Highlights
|
|
96
|
-
</h4>
|
|
97
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
98
|
-
<div className="flex items-center gap-2 bg-background p-3 rounded-lg border border-border shadow-sm">
|
|
99
|
-
<span className="w-2 h-2 rounded-full bg-primary" />
|
|
100
|
-
<span><b>Radix UI</b> for accessible, unstyled primitives.</span>
|
|
101
|
-
</div>
|
|
102
|
-
<div className="flex items-center gap-2 bg-background p-3 rounded-lg border border-border shadow-sm">
|
|
103
|
-
<span className="w-2 h-2 rounded-full bg-primary" />
|
|
104
|
-
<span><b>Tailwind v4</b> ultra-fast engine.</span>
|
|
105
|
-
</div>
|
|
106
|
-
<div className="flex items-center gap-2 bg-background p-3 rounded-lg border border-border shadow-sm">
|
|
107
|
-
<span className="w-2 h-2 rounded-full bg-primary" />
|
|
108
|
-
<span><b>Dark Mode</b> native via CSS Tokens.</span>
|
|
109
|
-
</div>
|
|
110
|
-
<div className="flex items-center gap-2 bg-background p-3 rounded-lg border border-border shadow-sm">
|
|
111
|
-
<span className="w-2 h-2 rounded-full bg-primary" />
|
|
112
|
-
<span><b>Full Customization</b> via <code>tokens.css</code>.</span>
|
|
113
|
-
</div>
|
|
114
|
-
</div>
|
|
115
|
-
</div>
|
|
116
|
-
</div>
|
|
117
|
-
|
|
118
|
-
<div className="pt-12 text-center text-sm text-muted-foreground border-t border-border">
|
|
119
|
-
© 2026 Xertica. All rights reserved.
|
|
120
|
-
</div>
|
|
121
|
-
</div>
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import { XerticaLogo } from './brand/xertica-logo/XerticaLogo';
|
|
3
|
+
|
|
4
|
+
<Meta title="Introduction" />
|
|
5
|
+
|
|
6
|
+
<div className="flex flex-col gap-8 py-12 max-w-4xl mx-auto">
|
|
7
|
+
<div className="flex flex-col items-center text-center space-y-4">
|
|
8
|
+
<div className="p-3">
|
|
9
|
+
<XerticaLogo className="h-16 w-auto" />
|
|
10
|
+
</div>
|
|
11
|
+
<h1 className="text-5xl font-extrabold tracking-tight text-foreground">Design System</h1>
|
|
12
|
+
<p className="text-xl text-muted-foreground max-w-2xl">
|
|
13
|
+
Official Design System for Xertica projects. Built with Tailwind CSS v4, Radix UI, and AI-first engineering.
|
|
14
|
+
</p>
|
|
15
|
+
<div className="text-lg font-mono text-muted-foreground bg-muted px-4 py-2 rounded-lg">
|
|
16
|
+
97 Components
|
|
17
|
+
</div>
|
|
18
|
+
<div className="flex gap-4 pt-4">
|
|
19
|
+
<a href="https://www.npmjs.com/package/xertica-ui" target="_blank" className="h-11 px-8 rounded-full border border-border bg-background text-foreground font-medium flex items-center hover:bg-accent transition-colors no-underline">
|
|
20
|
+
NPM
|
|
21
|
+
</a>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
{/* Installation */}
|
|
26
|
+
<div className="bg-muted p-8 rounded-2xl space-y-6">
|
|
27
|
+
<h2 className="text-2xl font-bold">Installation</h2>
|
|
28
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
29
|
+
<div className="space-y-3">
|
|
30
|
+
<h3 className="font-semibold flex items-center gap-2">
|
|
31
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/></svg>
|
|
32
|
+
npm
|
|
33
|
+
</h3>
|
|
34
|
+
<div className="bg-background p-4 rounded-lg border border-border font-mono text-sm overflow-x-auto">
|
|
35
|
+
<pre className="text-foreground"><code>npm install xertica-ui</code></pre>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
<div className="space-y-3">
|
|
39
|
+
<h3 className="font-semibold flex items-center gap-2">
|
|
40
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M12 2v8"/><path d="m16 6-4 4-4-4"/><rect width="20" height="8" x="2" y="14" rx="2"/></svg>
|
|
41
|
+
npx (CLI)
|
|
42
|
+
</h3>
|
|
43
|
+
<div className="bg-background p-4 rounded-lg border border-border font-mono text-sm overflow-x-auto">
|
|
44
|
+
<pre className="text-foreground"><code>npx xertica-ui@latest init</code></pre>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
<p className="text-sm text-muted-foreground">
|
|
49
|
+
Use <code>npm</code> to install the package, or <code>npx</code> to scaffold a new project with the CLI.
|
|
50
|
+
</p>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-6 pt-8">
|
|
54
|
+
<div className="p-6 rounded-[var(--radius-card)] border border-border bg-card shadow-sm hover:shadow-md transition-shadow">
|
|
55
|
+
<div className="w-10 h-10 bg-info/10 rounded-lg flex items-center justify-center mb-4 text-info">
|
|
56
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M12 2v8"/><path d="m16 6-4 4-4-4"/><rect width="20" height="8" x="2" y="14" rx="2"/></svg>
|
|
57
|
+
</div>
|
|
58
|
+
<h3 className="text-lg font-semibold mb-2">Instant Installation</h3>
|
|
59
|
+
<p className="text-sm text-muted-foreground leading-relaxed">
|
|
60
|
+
Add to your project with a single command. Integrated CLI for layout and theme scaffolding.
|
|
61
|
+
</p>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<div className="p-6 rounded-[var(--radius-card)] border border-border bg-card shadow-sm hover:shadow-md transition-shadow">
|
|
65
|
+
<div className="w-10 h-10 bg-success/10 rounded-lg flex items-center justify-center mb-4 text-success">
|
|
66
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg>
|
|
67
|
+
</div>
|
|
68
|
+
<h3 className="text-lg font-semibold mb-2">Tailwind v4 Native</h3>
|
|
69
|
+
<p className="text-sm text-muted-foreground leading-relaxed">
|
|
70
|
+
Leverage the power of Tailwind CSS v4 with its new faster and more flexible engine.
|
|
71
|
+
</p>
|
|
72
|
+
</div>
|
|
73
|
+
|
|
74
|
+
<div className="p-6 rounded-[var(--radius-card)] border border-border bg-card shadow-sm hover:shadow-md transition-shadow">
|
|
75
|
+
<div className="w-10 h-10 bg-warning/10 rounded-lg flex items-center justify-center mb-4 text-warning">
|
|
76
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>
|
|
77
|
+
</div>
|
|
78
|
+
<h3 className="text-lg font-semibold mb-2">AI-Ready</h3>
|
|
79
|
+
<p className="text-sm text-muted-foreground leading-relaxed">
|
|
80
|
+
Documentation optimized for LLM prompt systems (Antigravity, Cursor, etc).
|
|
81
|
+
</p>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<div className="space-y-6 pt-12">
|
|
86
|
+
<h2 className="text-3xl font-bold border-b pb-2 border-border">Design Philosophy</h2>
|
|
87
|
+
<p className="text-lg leading-relaxed text-muted-foreground">
|
|
88
|
+
Xertica UI focuses on modularity and high performance for Xertica's ecosystem of products.
|
|
89
|
+
Our goal is to ensure functional consistency, accessibility (via Radix UI), and rapid development at scale.
|
|
90
|
+
</p>
|
|
91
|
+
|
|
92
|
+
<div className="bg-muted p-8 rounded-2xl space-y-4">
|
|
93
|
+
<h4 className="font-bold flex items-center gap-2">
|
|
94
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><rect width="8" height="4" x="8" y="2" rx="1" ry="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/></svg>
|
|
95
|
+
Ecosystem Highlights
|
|
96
|
+
</h4>
|
|
97
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
98
|
+
<div className="flex items-center gap-2 bg-background p-3 rounded-lg border border-border shadow-sm">
|
|
99
|
+
<span className="w-2 h-2 rounded-full bg-primary" />
|
|
100
|
+
<span><b>Radix UI</b> for accessible, unstyled primitives.</span>
|
|
101
|
+
</div>
|
|
102
|
+
<div className="flex items-center gap-2 bg-background p-3 rounded-lg border border-border shadow-sm">
|
|
103
|
+
<span className="w-2 h-2 rounded-full bg-primary" />
|
|
104
|
+
<span><b>Tailwind v4</b> ultra-fast engine.</span>
|
|
105
|
+
</div>
|
|
106
|
+
<div className="flex items-center gap-2 bg-background p-3 rounded-lg border border-border shadow-sm">
|
|
107
|
+
<span className="w-2 h-2 rounded-full bg-primary" />
|
|
108
|
+
<span><b>Dark Mode</b> native via CSS Tokens.</span>
|
|
109
|
+
</div>
|
|
110
|
+
<div className="flex items-center gap-2 bg-background p-3 rounded-lg border border-border shadow-sm">
|
|
111
|
+
<span className="w-2 h-2 rounded-full bg-primary" />
|
|
112
|
+
<span><b>Full Customization</b> via <code>tokens.css</code>.</span>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
|
|
118
|
+
<div className="pt-12 text-center text-sm text-muted-foreground border-t border-border">
|
|
119
|
+
© 2026 Xertica. All rights reserved.
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
@@ -5,7 +5,7 @@ import { Button } from '../../ui/button';
|
|
|
5
5
|
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
|
|
6
6
|
|
|
7
7
|
// Elegant custom theme inspired by Xertica.ai design system
|
|
8
|
-
const elegantTheme = {
|
|
8
|
+
const elegantTheme: { [key: string]: React.CSSProperties } = {
|
|
9
9
|
'code[class*="language-"]': {
|
|
10
10
|
color: 'var(--foreground)',
|
|
11
11
|
fontFamily: 'var(--font-mono)',
|
|
@@ -173,11 +173,12 @@ export const CodeBlock = ({
|
|
|
173
173
|
if (navigator.clipboard && navigator.clipboard.writeText) {
|
|
174
174
|
try {
|
|
175
175
|
await navigator.clipboard.writeText(code);
|
|
176
|
-
} catch (clipboardError
|
|
176
|
+
} catch (clipboardError) {
|
|
177
177
|
// If clipboard API fails due to permissions, fall back to execCommand
|
|
178
178
|
if (
|
|
179
|
-
clipboardError
|
|
180
|
-
clipboardError.
|
|
179
|
+
clipboardError instanceof Error &&
|
|
180
|
+
(clipboardError.name === 'NotAllowedError' ||
|
|
181
|
+
clipboardError.message.includes('permissions policy'))
|
|
181
182
|
) {
|
|
182
183
|
throw new Error('Clipboard permission denied, falling back');
|
|
183
184
|
}
|
|
@@ -189,7 +190,7 @@ export const CodeBlock = ({
|
|
|
189
190
|
|
|
190
191
|
setCopied(true);
|
|
191
192
|
setTimeout(() => setCopied(false), 2000);
|
|
192
|
-
} catch
|
|
193
|
+
} catch {
|
|
193
194
|
// Fallback for browsers that don't support Clipboard API or when permissions are denied
|
|
194
195
|
try {
|
|
195
196
|
const textArea = document.createElement('textarea');
|
|
@@ -246,7 +247,7 @@ export const CodeBlock = ({
|
|
|
246
247
|
<div className="overflow-x-auto w-full max-w-full">
|
|
247
248
|
<SyntaxHighlighter
|
|
248
249
|
language={language}
|
|
249
|
-
style={elegantTheme
|
|
250
|
+
style={elegantTheme}
|
|
250
251
|
showLineNumbers={showLineNumbers}
|
|
251
252
|
wrapLines={true}
|
|
252
253
|
customStyle={{
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Canvas } from '@storybook/addon-docs/blocks';
|
|
2
|
-
import * as CodeBlockStories from './code-block.stories';
|
|
3
|
-
|
|
4
|
-
<Meta of={CodeBlockStories} />
|
|
5
|
-
|
|
6
|
-
<Title />
|
|
7
|
-
<Subtitle>An elegant syntax highlighter with built-in copy functionality and Xertica branding.</Subtitle>
|
|
8
|
-
|
|
9
|
-
<Description />
|
|
10
|
-
|
|
11
|
-
<Primary />
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Usage Patterns
|
|
16
|
-
|
|
17
|
-
### Development Snippets
|
|
18
|
-
Ideal for showing code examples with line numbers and filename headers.
|
|
19
|
-
|
|
20
|
-
<Canvas>
|
|
21
|
-
<CodeBlockStories.Default />
|
|
22
|
-
</Canvas>
|
|
23
|
-
|
|
24
|
-
### Terminal Commands
|
|
25
|
-
Compact view for shell commands or configuration highlights.
|
|
26
|
-
|
|
27
|
-
<Canvas>
|
|
28
|
-
<CodeBlockStories.Simple />
|
|
29
|
-
</Canvas>
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## AI Best Practices
|
|
34
|
-
|
|
35
|
-
> [!IMPORTANT]
|
|
36
|
-
> - **Language Selection** — Always specify the correct `language` prop to ensure accurate syntax highlighting.
|
|
37
|
-
> - **Theme Consistency** — The underlying `elegantTheme` automatically maps to the system's CSS theme variables; ensure the `XerticaProvider` is wrapping the application for correct colors.
|
|
38
|
-
> - **Clipboard Support** — Copy functionality includes progressive fallbacks for browsers with restricted clipboard permissions.
|
|
1
|
+
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Canvas } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as CodeBlockStories from './code-block.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={CodeBlockStories} />
|
|
5
|
+
|
|
6
|
+
<Title />
|
|
7
|
+
<Subtitle>An elegant syntax highlighter with built-in copy functionality and Xertica branding.</Subtitle>
|
|
8
|
+
|
|
9
|
+
<Description />
|
|
10
|
+
|
|
11
|
+
<Primary />
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Usage Patterns
|
|
16
|
+
|
|
17
|
+
### Development Snippets
|
|
18
|
+
Ideal for showing code examples with line numbers and filename headers.
|
|
19
|
+
|
|
20
|
+
<Canvas>
|
|
21
|
+
<CodeBlockStories.Default />
|
|
22
|
+
</Canvas>
|
|
23
|
+
|
|
24
|
+
### Terminal Commands
|
|
25
|
+
Compact view for shell commands or configuration highlights.
|
|
26
|
+
|
|
27
|
+
<Canvas>
|
|
28
|
+
<CodeBlockStories.Simple />
|
|
29
|
+
</Canvas>
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## AI Best Practices
|
|
34
|
+
|
|
35
|
+
> [!IMPORTANT]
|
|
36
|
+
> - **Language Selection** — Always specify the correct `language` prop to ensure accurate syntax highlighting.
|
|
37
|
+
> - **Theme Consistency** — The underlying `elegantTheme` automatically maps to the system's CSS theme variables; ensure the `XerticaProvider` is wrapping the application for correct colors.
|
|
38
|
+
> - **Clipboard Support** — Copy functionality includes progressive fallbacks for browsers with restricted clipboard permissions.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { screen, fireEvent, waitFor } from '@testing-library/react';
|
|
2
|
+
import { renderWithProviders as render } from '../../../test/render';
|
|
2
3
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
3
4
|
import { CodeBlock } from './CodeBlock';
|
|
4
5
|
import React from 'react';
|
|
@@ -41,6 +41,9 @@ export function FormattedDocument({
|
|
|
41
41
|
const convertMarkdownToHtml = (markdown: string): string => {
|
|
42
42
|
let html = markdown;
|
|
43
43
|
|
|
44
|
+
// Escape existing HTML
|
|
45
|
+
html = html.replace(/</g, '<').replace(/>/g, '>');
|
|
46
|
+
|
|
44
47
|
// Headers (with improved styling, reduced spacing)
|
|
45
48
|
html = html.replace(
|
|
46
49
|
/^### (.*$)/gim,
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Canvas } from '@storybook/addon-docs/blocks';
|
|
2
|
-
import * as FormattedDocumentStories from './formatted-document.stories';
|
|
3
|
-
|
|
4
|
-
<Meta of={FormattedDocumentStories} />
|
|
5
|
-
|
|
6
|
-
<Title />
|
|
7
|
-
<Subtitle>A lightweight markdown renderer for displaying AI-generated summaries and documentation.</Subtitle>
|
|
8
|
-
|
|
9
|
-
<Description />
|
|
10
|
-
|
|
11
|
-
<Primary />
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Usage Patterns
|
|
16
|
-
|
|
17
|
-
### Collapsible Content
|
|
18
|
-
Ideal for displaying long AI responses where a "See more" toggle is needed to preserve page verticality.
|
|
19
|
-
|
|
20
|
-
<Canvas>
|
|
21
|
-
<FormattedDocumentStories.Default />
|
|
22
|
-
</Canvas>
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## AI Best Practices
|
|
27
|
-
|
|
28
|
-
> [!IMPORTANT]
|
|
29
|
-
> - **Markdown Compatibility** — Supports basic markdown: headers (`#`), bold (`**`), lists (`-`), and checkboxes (`- [ ]`). It does not support complex nested tables or markdown-in-html.
|
|
30
|
-
> - **Preview Mode** — Use `maxPreviewLength` to control the initial character count before truncation. Defaults to 500.
|
|
31
|
-
> - **Safe Injection** — Content is rendered via `dangerouslySetInnerHTML`. Ensure the source content (e.g., from an AI API) is trustable and sanitized if necessary.
|
|
1
|
+
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Canvas } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as FormattedDocumentStories from './formatted-document.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={FormattedDocumentStories} />
|
|
5
|
+
|
|
6
|
+
<Title />
|
|
7
|
+
<Subtitle>A lightweight markdown renderer for displaying AI-generated summaries and documentation.</Subtitle>
|
|
8
|
+
|
|
9
|
+
<Description />
|
|
10
|
+
|
|
11
|
+
<Primary />
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Usage Patterns
|
|
16
|
+
|
|
17
|
+
### Collapsible Content
|
|
18
|
+
Ideal for displaying long AI responses where a "See more" toggle is needed to preserve page verticality.
|
|
19
|
+
|
|
20
|
+
<Canvas>
|
|
21
|
+
<FormattedDocumentStories.Default />
|
|
22
|
+
</Canvas>
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## AI Best Practices
|
|
27
|
+
|
|
28
|
+
> [!IMPORTANT]
|
|
29
|
+
> - **Markdown Compatibility** — Supports basic markdown: headers (`#`), bold (`**`), lists (`-`), and checkboxes (`- [ ]`). It does not support complex nested tables or markdown-in-html.
|
|
30
|
+
> - **Preview Mode** — Use `maxPreviewLength` to control the initial character count before truncation. Defaults to 500.
|
|
31
|
+
> - **Safe Injection** — Content is rendered via `dangerouslySetInnerHTML`. Ensure the source content (e.g., from an AI API) is trustable and sanitized if necessary.
|
|
@@ -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 } from 'vitest';
|
|
3
4
|
import { FormattedDocument } from './FormattedDocument';
|
|
4
5
|
import React from 'react';
|
|
@@ -16,17 +17,17 @@ describe('FormattedDocument', () => {
|
|
|
16
17
|
|
|
17
18
|
// Check if it's truncated (contains ellipsis)
|
|
18
19
|
expect(screen.getByText(/A{50}\.\.\./)).toBeInTheDocument();
|
|
19
|
-
expect(screen.getByText('
|
|
20
|
+
expect(screen.getByText('Ver mais')).toBeInTheDocument();
|
|
20
21
|
});
|
|
21
22
|
|
|
22
23
|
it('expands content when See more is clicked', () => {
|
|
23
24
|
const longContent = 'A'.repeat(100);
|
|
24
25
|
render(<FormattedDocument content={longContent} maxPreviewLength={50} />);
|
|
25
26
|
|
|
26
|
-
fireEvent.click(screen.getByText('
|
|
27
|
+
fireEvent.click(screen.getByText('Ver mais'));
|
|
27
28
|
|
|
28
29
|
expect(screen.getByText('A'.repeat(100))).toBeInTheDocument();
|
|
29
|
-
expect(screen.getByText('
|
|
30
|
+
expect(screen.getByText('Ver menos')).toBeInTheDocument();
|
|
30
31
|
});
|
|
31
32
|
|
|
32
33
|
it('renders checkboxes correctly', () => {
|
|
@@ -29,7 +29,7 @@ export function MarkdownMessage({ content, className = '' }: MarkdownMessageProp
|
|
|
29
29
|
let html = markdown;
|
|
30
30
|
|
|
31
31
|
// Escape existing HTML
|
|
32
|
-
html = html.replace(/</g, '
|
|
32
|
+
html = html.replace(/</g, '<').replace(/>/g, '>');
|
|
33
33
|
|
|
34
34
|
// Headers (large to small to avoid conflicts)
|
|
35
35
|
html = html.replace(
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Canvas } from '@storybook/addon-docs/blocks';
|
|
2
|
-
import * as MarkdownMessageStories from './markdown-message.stories';
|
|
3
|
-
|
|
4
|
-
<Meta of={MarkdownMessageStories} />
|
|
5
|
-
|
|
6
|
-
<Title />
|
|
7
|
-
<Subtitle>Renders AI assistant messages as formatted Markdown with syntax-highlighted code blocks.</Subtitle>
|
|
8
|
-
|
|
9
|
-
<Description />
|
|
10
|
-
|
|
11
|
-
<Primary />
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Usage
|
|
16
|
-
|
|
17
|
-
```tsx
|
|
18
|
-
import { MarkdownMessage } from 'xertica-ui/assistant';
|
|
19
|
-
|
|
20
|
-
<MarkdownMessage content="**Hello!** Here is a `code` example." />
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Props
|
|
24
|
-
|
|
25
|
-
| Prop | Type | Default | Description |
|
|
26
|
-
|---|---|---|---|
|
|
27
|
-
| `content` | `string` | _(required)_ | The Markdown string to render |
|
|
28
|
-
| `className` | `string` | `''` | Additional CSS classes on the root container |
|
|
29
|
-
|
|
30
|
-
## Supported Markdown
|
|
31
|
-
|
|
32
|
-
- **Bold**, _italic_, ~~strikethrough~~
|
|
33
|
-
- `inline code` and fenced code blocks with syntax highlighting
|
|
34
|
-
- Lists (ordered and unordered)
|
|
35
|
-
- Headers (`# H1`, `## H2`, etc.)
|
|
36
|
-
- Tables
|
|
37
|
-
- Blockquotes
|
|
38
|
-
|
|
39
|
-
## AI Rules
|
|
40
|
-
|
|
41
|
-
> [!IMPORTANT]
|
|
42
|
-
> - This component is used **exclusively inside** `XerticaAssistant` message bubbles.
|
|
43
|
-
> - Do not use it for general-purpose Markdown rendering outside the assistant context — use a standard Markdown library instead.
|
|
44
|
-
> - Always sanitize content before passing it if coming from untrusted sources.
|
|
1
|
+
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Canvas } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as MarkdownMessageStories from './markdown-message.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={MarkdownMessageStories} />
|
|
5
|
+
|
|
6
|
+
<Title />
|
|
7
|
+
<Subtitle>Renders AI assistant messages as formatted Markdown with syntax-highlighted code blocks.</Subtitle>
|
|
8
|
+
|
|
9
|
+
<Description />
|
|
10
|
+
|
|
11
|
+
<Primary />
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import { MarkdownMessage } from 'xertica-ui/assistant';
|
|
19
|
+
|
|
20
|
+
<MarkdownMessage content="**Hello!** Here is a `code` example." />
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Props
|
|
24
|
+
|
|
25
|
+
| Prop | Type | Default | Description |
|
|
26
|
+
|---|---|---|---|
|
|
27
|
+
| `content` | `string` | _(required)_ | The Markdown string to render |
|
|
28
|
+
| `className` | `string` | `''` | Additional CSS classes on the root container |
|
|
29
|
+
|
|
30
|
+
## Supported Markdown
|
|
31
|
+
|
|
32
|
+
- **Bold**, _italic_, ~~strikethrough~~
|
|
33
|
+
- `inline code` and fenced code blocks with syntax highlighting
|
|
34
|
+
- Lists (ordered and unordered)
|
|
35
|
+
- Headers (`# H1`, `## H2`, etc.)
|
|
36
|
+
- Tables
|
|
37
|
+
- Blockquotes
|
|
38
|
+
|
|
39
|
+
## AI Rules
|
|
40
|
+
|
|
41
|
+
> [!IMPORTANT]
|
|
42
|
+
> - This component is used **exclusively inside** `XerticaAssistant` message bubbles.
|
|
43
|
+
> - Do not use it for general-purpose Markdown rendering outside the assistant context — use a standard Markdown library instead.
|
|
44
|
+
> - Always sanitize content before passing it if coming from untrusted sources.
|