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,138 +1,138 @@
|
|
|
1
|
-
# StatsCard
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
A pre-built KPI (Key Performance Indicator) card for dashboard overview pages. Renders a metric title, a large value, an optional trend indicator with automatic up/down/neutral icon, and an optional icon.
|
|
6
|
-
|
|
7
|
-
Built on top of `<Card>`. Use it for dashboard stat widgets where a consistent metric display is needed.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## When to Use
|
|
12
|
-
|
|
13
|
-
- Dashboard overview pages to show summary metrics (revenue, users, conversion)
|
|
14
|
-
- KPI widgets that need to show value + trend direction
|
|
15
|
-
|
|
16
|
-
## When NOT to Use
|
|
17
|
-
|
|
18
|
-
- For arbitrary content — use `<Card>` directly.
|
|
19
|
-
- When you need to heavily customize layout — compose from `<Card>` primitives instead.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Props
|
|
24
|
-
|
|
25
|
-
| Prop | Type | Required | Description |
|
|
26
|
-
| ------------- | ----------------------------------- | -------- | --------------------------------------------------------------------------------------------------------- |
|
|
27
|
-
| `title` | `string` | **Yes** | Metric label (short) |
|
|
28
|
-
| `value` | `string \| number` | **Yes** | The displayed metric value |
|
|
29
|
-
| `description` | `string` | No | Additional supplementary text below the value |
|
|
30
|
-
| `trend` | `{ value: number; label?: string }` | No | Trend object. `value` is a number (positive = up, negative = down). `label` overrides `description` text. |
|
|
31
|
-
| `icon` | `ReactNode` | No | Icon from `lucide-react` |
|
|
32
|
-
| `iconColor` | `string` | No | Tailwind class for the icon text/foreground color (defaults to `text-muted-foreground`) |
|
|
33
|
-
| `iconBg` | `string` | No | Tailwind class for the icon background color (defaults to `bg-muted`) |
|
|
34
|
-
| `className` | `string` | No | Additional CSS classes |
|
|
35
|
-
|
|
36
|
-
### trend
|
|
37
|
-
|
|
38
|
-
The `trend` prop controls the automatic trend icon and color:
|
|
39
|
-
|
|
40
|
-
- `trend.value > 0` → shows `TrendingUp` icon in green
|
|
41
|
-
- `trend.value < 0` → shows `TrendingDown` icon in red (destructive)
|
|
42
|
-
- `trend.value === 0` → shows `Minus` icon in muted
|
|
43
|
-
|
|
44
|
-
The numeric value is displayed as an absolute percentage: `Math.abs(trend.value)%`.
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Examples
|
|
49
|
-
|
|
50
|
-
### Basic KPI Card
|
|
51
|
-
|
|
52
|
-
```tsx
|
|
53
|
-
import { StatsCard } from 'xertica-ui/ui';
|
|
54
|
-
import { DollarSign } from 'lucide-react';
|
|
55
|
-
|
|
56
|
-
<StatsCard
|
|
57
|
-
title="Total Revenue"
|
|
58
|
-
value="$45,231.89"
|
|
59
|
-
trend={{ value: 20.1, label: 'from last month' }}
|
|
60
|
-
icon={<DollarSign className="size-5" />}
|
|
61
|
-
/>;
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Custom Icon Colors
|
|
65
|
-
|
|
66
|
-
```tsx
|
|
67
|
-
import { StatsCard } from 'xertica-ui/ui';
|
|
68
|
-
import { Users } from 'lucide-react';
|
|
69
|
-
|
|
70
|
-
<StatsCard
|
|
71
|
-
title="Active Users"
|
|
72
|
-
value="2,350"
|
|
73
|
-
trend={{ value: 8.2, label: 'new this week' }}
|
|
74
|
-
icon={<Users className="size-5" />}
|
|
75
|
-
iconBg="bg-primary/10"
|
|
76
|
-
iconColor="text-primary"
|
|
77
|
-
/>;
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Negative Trend
|
|
81
|
-
|
|
82
|
-
```tsx
|
|
83
|
-
<StatsCard
|
|
84
|
-
title="Churn Rate"
|
|
85
|
-
value="3.2%"
|
|
86
|
-
trend={{ value: -0.8, label: 'vs last quarter' }}
|
|
87
|
-
icon={<TrendingDown className="size-5" />}
|
|
88
|
-
/>
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Stats Grid (4 columns)
|
|
92
|
-
|
|
93
|
-
```tsx
|
|
94
|
-
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
|
|
95
|
-
<StatsCard
|
|
96
|
-
title="Revenue"
|
|
97
|
-
value="$45,231"
|
|
98
|
-
trend={{ value: 20.1, label: 'from last month' }}
|
|
99
|
-
icon={<DollarSign className="size-5" />}
|
|
100
|
-
/>
|
|
101
|
-
<StatsCard
|
|
102
|
-
title="Active Users"
|
|
103
|
-
value="2,350"
|
|
104
|
-
trend={{ value: 8.2, label: 'new this week' }}
|
|
105
|
-
icon={<Users className="size-5" />}
|
|
106
|
-
/>
|
|
107
|
-
<StatsCard
|
|
108
|
-
title="Conversion"
|
|
109
|
-
value="3.6%"
|
|
110
|
-
trend={{ value: -0.4, label: 'vs last month' }}
|
|
111
|
-
icon={<Activity className="size-5" />}
|
|
112
|
-
/>
|
|
113
|
-
<StatsCard
|
|
114
|
-
title="Avg. Ticket"
|
|
115
|
-
value="$89.40"
|
|
116
|
-
description="All time average"
|
|
117
|
-
icon={<ShoppingCart className="size-5" />}
|
|
118
|
-
/>
|
|
119
|
-
</div>
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## AI Rules
|
|
125
|
-
|
|
126
|
-
- `trend.value` is a **numeric percentage** (e.g., `20.1` for +20.1%) — the component displays `Math.abs(value)%` automatically.
|
|
127
|
-
- Do NOT pre-format the trend value as a string — pass the raw number.
|
|
128
|
-
- `value` IS pre-formatted as a display string: `"$45,231"`, `"3.6%"`, `"2,350"`.
|
|
129
|
-
- Icons render inside a rounded background. By default, background is `bg-muted` and color is `text-muted-foreground`, but they can be customized using `iconBg` and `iconColor` props. Use `size-5` for the icon.
|
|
130
|
-
- Always use in a 4-column responsive grid for dashboard overviews.
|
|
131
|
-
- `trend.label` takes precedence over `description` for below-value text.
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Related Components
|
|
136
|
-
|
|
137
|
-
- [`Card`](./card.md) — The underlying primitive
|
|
138
|
-
- [Dashboard Pattern](../patterns/dashboard.md) — Standard usage context
|
|
1
|
+
# StatsCard
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
A pre-built KPI (Key Performance Indicator) card for dashboard overview pages. Renders a metric title, a large value, an optional trend indicator with automatic up/down/neutral icon, and an optional icon.
|
|
6
|
+
|
|
7
|
+
Built on top of `<Card>`. Use it for dashboard stat widgets where a consistent metric display is needed.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- Dashboard overview pages to show summary metrics (revenue, users, conversion)
|
|
14
|
+
- KPI widgets that need to show value + trend direction
|
|
15
|
+
|
|
16
|
+
## When NOT to Use
|
|
17
|
+
|
|
18
|
+
- For arbitrary content — use `<Card>` directly.
|
|
19
|
+
- When you need to heavily customize layout — compose from `<Card>` primitives instead.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Props
|
|
24
|
+
|
|
25
|
+
| Prop | Type | Required | Description |
|
|
26
|
+
| ------------- | ----------------------------------- | -------- | --------------------------------------------------------------------------------------------------------- |
|
|
27
|
+
| `title` | `string` | **Yes** | Metric label (short) |
|
|
28
|
+
| `value` | `string \| number` | **Yes** | The displayed metric value |
|
|
29
|
+
| `description` | `string` | No | Additional supplementary text below the value |
|
|
30
|
+
| `trend` | `{ value: number; label?: string }` | No | Trend object. `value` is a number (positive = up, negative = down). `label` overrides `description` text. |
|
|
31
|
+
| `icon` | `ReactNode` | No | Icon from `lucide-react` |
|
|
32
|
+
| `iconColor` | `string` | No | Tailwind class for the icon text/foreground color (defaults to `text-muted-foreground`) |
|
|
33
|
+
| `iconBg` | `string` | No | Tailwind class for the icon background color (defaults to `bg-muted`) |
|
|
34
|
+
| `className` | `string` | No | Additional CSS classes |
|
|
35
|
+
|
|
36
|
+
### trend
|
|
37
|
+
|
|
38
|
+
The `trend` prop controls the automatic trend icon and color:
|
|
39
|
+
|
|
40
|
+
- `trend.value > 0` → shows `TrendingUp` icon in green
|
|
41
|
+
- `trend.value < 0` → shows `TrendingDown` icon in red (destructive)
|
|
42
|
+
- `trend.value === 0` → shows `Minus` icon in muted
|
|
43
|
+
|
|
44
|
+
The numeric value is displayed as an absolute percentage: `Math.abs(trend.value)%`.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
|
|
50
|
+
### Basic KPI Card
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
import { StatsCard } from 'xertica-ui/ui';
|
|
54
|
+
import { DollarSign } from 'lucide-react';
|
|
55
|
+
|
|
56
|
+
<StatsCard
|
|
57
|
+
title="Total Revenue"
|
|
58
|
+
value="$45,231.89"
|
|
59
|
+
trend={{ value: 20.1, label: 'from last month' }}
|
|
60
|
+
icon={<DollarSign className="size-5" />}
|
|
61
|
+
/>;
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Custom Icon Colors
|
|
65
|
+
|
|
66
|
+
```tsx
|
|
67
|
+
import { StatsCard } from 'xertica-ui/ui';
|
|
68
|
+
import { Users } from 'lucide-react';
|
|
69
|
+
|
|
70
|
+
<StatsCard
|
|
71
|
+
title="Active Users"
|
|
72
|
+
value="2,350"
|
|
73
|
+
trend={{ value: 8.2, label: 'new this week' }}
|
|
74
|
+
icon={<Users className="size-5" />}
|
|
75
|
+
iconBg="bg-primary/10"
|
|
76
|
+
iconColor="text-primary"
|
|
77
|
+
/>;
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Negative Trend
|
|
81
|
+
|
|
82
|
+
```tsx
|
|
83
|
+
<StatsCard
|
|
84
|
+
title="Churn Rate"
|
|
85
|
+
value="3.2%"
|
|
86
|
+
trend={{ value: -0.8, label: 'vs last quarter' }}
|
|
87
|
+
icon={<TrendingDown className="size-5" />}
|
|
88
|
+
/>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Stats Grid (4 columns)
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
|
|
95
|
+
<StatsCard
|
|
96
|
+
title="Revenue"
|
|
97
|
+
value="$45,231"
|
|
98
|
+
trend={{ value: 20.1, label: 'from last month' }}
|
|
99
|
+
icon={<DollarSign className="size-5" />}
|
|
100
|
+
/>
|
|
101
|
+
<StatsCard
|
|
102
|
+
title="Active Users"
|
|
103
|
+
value="2,350"
|
|
104
|
+
trend={{ value: 8.2, label: 'new this week' }}
|
|
105
|
+
icon={<Users className="size-5" />}
|
|
106
|
+
/>
|
|
107
|
+
<StatsCard
|
|
108
|
+
title="Conversion"
|
|
109
|
+
value="3.6%"
|
|
110
|
+
trend={{ value: -0.4, label: 'vs last month' }}
|
|
111
|
+
icon={<Activity className="size-5" />}
|
|
112
|
+
/>
|
|
113
|
+
<StatsCard
|
|
114
|
+
title="Avg. Ticket"
|
|
115
|
+
value="$89.40"
|
|
116
|
+
description="All time average"
|
|
117
|
+
icon={<ShoppingCart className="size-5" />}
|
|
118
|
+
/>
|
|
119
|
+
</div>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## AI Rules
|
|
125
|
+
|
|
126
|
+
- `trend.value` is a **numeric percentage** (e.g., `20.1` for +20.1%) — the component displays `Math.abs(value)%` automatically.
|
|
127
|
+
- Do NOT pre-format the trend value as a string — pass the raw number.
|
|
128
|
+
- `value` IS pre-formatted as a display string: `"$45,231"`, `"3.6%"`, `"2,350"`.
|
|
129
|
+
- Icons render inside a rounded background. By default, background is `bg-muted` and color is `text-muted-foreground`, but they can be customized using `iconBg` and `iconColor` props. Use `size-5` for the icon.
|
|
130
|
+
- Always use in a 4-column responsive grid for dashboard overviews.
|
|
131
|
+
- `trend.label` takes precedence over `description` for below-value text.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Related Components
|
|
136
|
+
|
|
137
|
+
- [`Card`](./card.md) — The underlying primitive
|
|
138
|
+
- [Dashboard Pattern](../patterns/dashboard.md) — Standard usage context
|
|
@@ -56,6 +56,18 @@ const [bold, setBold] = useState(false);
|
|
|
56
56
|
|
|
57
57
|
---
|
|
58
58
|
|
|
59
|
+
## AI Rules
|
|
60
|
+
|
|
61
|
+
> [!IMPORTANT]
|
|
62
|
+
>
|
|
63
|
+
> - **Icon-only toggles require `aria-label`** — never render a `<Toggle>` with only an icon and no accessible name.
|
|
64
|
+
> - **Do not use `<Toggle>` for immediate actions** — use `<Button>`; `<Toggle>` is for persistent on/off state.
|
|
65
|
+
> - **Do not use `<Toggle>` for settings** — use `<Switch>` or `<Checkbox>` for clearer on/off semantics.
|
|
66
|
+
> - **For mutually exclusive sets, use `<ToggleGroup>`** instead of managing multiple `<Toggle>` states manually.
|
|
67
|
+
> - **Never use a raw `<button>`** to emulate a pressable state — always use `<Toggle>`.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
59
71
|
## Related Components
|
|
60
72
|
|
|
61
73
|
- [`ToggleGroup`](./toggle-group.md) — Multiple related toggles with exclusion
|
package/docs/doc-audit.md
CHANGED
|
@@ -1,244 +1,50 @@
|
|
|
1
1
|
# Xertica UI — Auditoria de Documentação
|
|
2
2
|
|
|
3
|
-
> **Status (2026-
|
|
4
|
-
>
|
|
5
|
-
> Antes de seguir qualquer recomendação aqui, verifique se a documentação correspondente já existe em `docs/components/`. A inventário real abaixo foi atualizado para refletir o estado em 2026-05-21:
|
|
6
|
-
>
|
|
7
|
-
> | Categoria | Total | Com Doc | Sem Doc |
|
|
8
|
-
> | ----------------------------------------------- | --------------------- | ------------------------------------------ | ------- |
|
|
9
|
-
> | Componentes UI (`components/ui/`) | 65 | 65 | 0 |
|
|
10
|
-
> | Componentes Assistant (`components/assistant/`) | 5 | 5 | 0 |
|
|
11
|
-
> | Componentes Brand (`components/brand/`) | 7 | 7 | 0 |
|
|
12
|
-
> | Componentes Layout (`components/layout/`) | 2 | 2 | 0 |
|
|
13
|
-
> | Componentes Media (`components/media/`) | 3 | 3 | 0 |
|
|
14
|
-
> | Componentes Blocks (`components/blocks/`) | 6 cards + 6 skeletons | card-patterns.md (cobre cards + skeletons) | 0 |
|
|
15
|
-
> | Páginas (`components/pages/`) | 8 | pages.md (cobertura agregada) | 0 |
|
|
16
|
-
> | Hooks/Contextos | 9 hooks | hooks.md (cobertura agregada) | 0 |
|
|
17
|
-
> | Utilitários (`components/figma/`) | 1 | image-with-fallback.md | 0 |
|
|
18
|
-
>
|
|
19
|
-
> **Lacunas ainda em aberto (verificar antes de fechar):**
|
|
20
|
-
>
|
|
21
|
-
> - Storybook `.mdx` para os 6 card skeletons (existe `.md`, mas não `.mdx`)
|
|
22
|
-
> - `lib/query-client.ts` — singleton não documentado externamente (intencionalmente interno)
|
|
23
|
-
>
|
|
24
|
-
> **Última auditoria completa:** ver mensagem do agente em 2026-05-21 que cobriu i18n flexibilidade, skeletons, queryKey language-aware, e correções em `hooks.md`, `branding.md`, `card-patterns.md`, `language-selector.md`, `architecture.md`, `getting-started.md`, `state-management.md`, `components.json`.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Resumo Executivo (histórico, possivelmente desatualizado)
|
|
29
|
-
|
|
30
|
-
| Categoria | Total no Código | Com Doc | Sem Doc |
|
|
31
|
-
| ----------------------------------------------- | --------------- | --------------------- | ------- |
|
|
32
|
-
| Componentes UI (`components/ui/`) | 65 | 65 | 0 |
|
|
33
|
-
| Componentes Assistant (`components/assistant/`) | 5 | 2 | **3** |
|
|
34
|
-
| Componentes Brand (`components/brand/`) | 7 | 6 | **1** |
|
|
35
|
-
| Componentes Layout (`components/layout/`) | 2 | 2 | 0 |
|
|
36
|
-
| Componentes Media (`components/media/`) | 3 | 3 | 0 |
|
|
37
|
-
| Componentes Blocks (`components/blocks/`) | 6 cards | 1 doc (card-patterns) | 0 |
|
|
38
|
-
| Páginas (`components/pages/`) | 8 | 0 | **8** |
|
|
39
|
-
| Hooks/Contextos (`components/hooks/`) | 6 hooks | 1 (use-mobile) | **5** |
|
|
40
|
-
| Utilitários (`components/figma/`) | 1 | 0 | **1** |
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## 1. Componentes SEM Documentação
|
|
45
|
-
|
|
46
|
-
### 1.1 Componentes Assistant — Sem doc própria
|
|
47
|
-
|
|
48
|
-
O [`docs/llms.md`](./llms.md) menciona estes três como _"in Storybook"_, mas não há arquivo `.md` em `docs/components/`:
|
|
49
|
-
|
|
50
|
-
| Componente | Arquivo | Importação | Status |
|
|
51
|
-
| ------------------- | ------------------------------------------ | ---------------------- | ---------- |
|
|
52
|
-
| `CodeBlock` | `components/assistant/code-block/` | `xertica-ui/assistant` | ❌ Sem doc |
|
|
53
|
-
| `ModernChatInput` | `components/assistant/modern-chat-input/` | `xertica-ui/assistant` | ❌ Sem doc |
|
|
54
|
-
| `FormattedDocument` | `components/assistant/formatted-document/` | `xertica-ui/assistant` | ❌ Sem doc |
|
|
55
|
-
|
|
56
|
-
**Impacto:** Agentes de IA não conseguem usar esses componentes corretamente sem prop tables e exemplos.
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
### 1.2 Componente Brand — Sem doc
|
|
61
|
-
|
|
62
|
-
| Componente | Arquivo | Status |
|
|
63
|
-
| ---------- | ---------------------------- | ------------------------------------------- |
|
|
64
|
-
| `Branding` | `components/brand/branding/` | ❌ Sem doc (apenas `.mdx` e `.stories.tsx`) |
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
### 1.3 Hook `useMapLayers` — Sem doc
|
|
69
|
-
|
|
70
|
-
O hook [`useMapLayers`](../components/ui/map-layers/map-layers.tsx) é exportado publicamente via `xertica-ui/ui` mas não tem documentação em `docs/components/`. Está relacionado ao sistema de mapas mas não aparece no catálogo do [`docs/llms.md`](./llms.md).
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
### 1.4 Utilitário `ImageWithFallback` — Sem doc
|
|
75
|
-
|
|
76
|
-
| Componente | Arquivo | Status |
|
|
77
|
-
| ------------------- | ---------------------------------------- | ---------- |
|
|
78
|
-
| `ImageWithFallback` | `components/figma/ImageWithFallback.tsx` | ❌ Sem doc |
|
|
79
|
-
|
|
80
|
-
Exportado publicamente via `xertica-ui` mas sem documentação.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
### 1.5 Páginas — Completamente sem documentação
|
|
85
|
-
|
|
86
|
-
Nenhuma das 8 páginas-template tem documentação em `docs/`:
|
|
87
|
-
|
|
88
|
-
| Página | Arquivo |
|
|
89
|
-
| -------------------- | ---------------------------------------- |
|
|
90
|
-
| `LoginPage` | `components/pages/login-page/` |
|
|
91
|
-
| `ForgotPasswordPage` | `components/pages/forgot-password-page/` |
|
|
92
|
-
| `ResetPasswordPage` | `components/pages/reset-password-page/` |
|
|
93
|
-
| `VerifyEmailPage` | `components/pages/verify-email-page/` |
|
|
94
|
-
| `HomePage` | `components/pages/home-page/` |
|
|
95
|
-
| `HomeContent` | `components/pages/home-content/` |
|
|
96
|
-
| `TemplatePage` | `components/pages/template-page/` |
|
|
97
|
-
| `TemplateContent` | `components/pages/template-content/` |
|
|
98
|
-
|
|
99
|
-
**Impacto:** Desenvolvedores e agentes de IA não sabem que essas páginas existem, quais props aceitam, ou como customizá-las. O [`docs/llms.md`](./llms.md) menciona "8 Page Templates" nas estatísticas mas não lista nenhuma delas no catálogo.
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
### 1.6 Hooks/Contextos — Sem documentação
|
|
104
|
-
|
|
105
|
-
O subpath `xertica-ui/hooks` exporta 6 hooks mas apenas `useMobile` tem doc:
|
|
3
|
+
> **Status (2026-06-25):** ✅ **ATUAL** — esta auditoria substitui integralmente o relatório histórico de 2026-05-19. O conteúdo abaixo reflete o estado verificado da documentação contra o código-fonte.
|
|
106
4
|
|
|
107
|
-
|
|
108
|
-
| --------------------------- | -------------------- | ------------------------------------------------------------------------------- |
|
|
109
|
-
| `useLayout` | `LayoutContext` | ✅ Documentado em [`docs/layout.md`](./layout.md) |
|
|
110
|
-
| `useMobile` / `useIsMobile` | `use-mobile` | ✅ Documentado em [`docs/components/use-mobile.md`](./components/use-mobile.md) |
|
|
111
|
-
| `useTheme` | `ThemeContext` | ❌ Sem doc |
|
|
112
|
-
| `useLanguage` | `LanguageContext` | ❌ Sem doc |
|
|
113
|
-
| `useBrandColors` | `BrandColorsContext` | ❌ Sem doc |
|
|
114
|
-
| `useAssistente` | `AssistenteContext` | ❌ Sem doc |
|
|
115
|
-
| `useApiKey` | `ApiKeyContext` | ❌ Sem doc |
|
|
5
|
+
## Resumo Executivo
|
|
116
6
|
|
|
117
|
-
|
|
7
|
+
A documentação está **completa e em bom estado**. Todos os componentes públicos, hooks, contextos e páginas-template possuem cobertura em `docs/`. Nenhum arquivo de documentação está truncado ou contém seções vazias.
|
|
118
8
|
|
|
119
|
-
|
|
9
|
+
| Categoria | Total no Código | Com Doc | Sem Doc |
|
|
10
|
+
| -------------------------------- | --------------- | ------- | ------- |
|
|
11
|
+
| Componentes UI (`components/ui/`) | 60 | 60 | 0 |
|
|
12
|
+
| Componentes Assistant (`components/assistant/`) | 5 | 5 | 0 |
|
|
13
|
+
| Componentes Brand (`components/brand/`) | 6\* | 6 | 0 |
|
|
14
|
+
| Componentes Layout (`components/layout/`)| 2 | 2 | 0 |
|
|
15
|
+
| Componentes Media (`components/media/`) | 3 | 3 | 0 |
|
|
16
|
+
| Componentes Blocks (`components/blocks/`)| 12 (6 cards + 6 skeletons) | `card-patterns.md` (cobertura agregada) | 0 |
|
|
17
|
+
| Páginas (`components/pages/`) | 8 | `pages.md` (cobertura agregada) | 0 |
|
|
18
|
+
| Hooks/Contextos | 10 | `hooks.md` + `use-mobile.md` + `layout.md` | 0 |
|
|
19
|
+
| Utilitários (`components/figma/`) | 1 | `image-with-fallback.md` | 0 |
|
|
120
20
|
|
|
121
|
-
|
|
21
|
+
\* `components/brand/branding/` existe apenas como showcase de Storybook (`.stories.tsx` + `.mdx`), não é um export público.
|
|
122
22
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
### 2.2 `docs/components/assistant-chart.md` — Doc muito rasa
|
|
130
|
-
|
|
131
|
-
O doc do [`AssistantChart`](./components/assistant-chart.md) tem apenas 47 linhas e contém uma regra problemática:
|
|
132
|
-
|
|
133
|
-
> _"Data Format: Ensure your data objects contain keys that match the `dataKey` set in the internal implementation (currently `month`, `desktop`, and `mobile`)."_
|
|
134
|
-
|
|
135
|
-
Isso sugere que o componente só aceita dados com essas chaves específicas, o que é enganoso. Faltam:
|
|
136
|
-
|
|
137
|
-
- Explicação de como usar `dataKey` customizado
|
|
138
|
-
- Exemplos com dados reais de negócio
|
|
139
|
-
- Seção "When to Use / When NOT to Use"
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
### 2.3 `docs/llms.md` — Estatísticas desatualizadas e catálogo incompleto
|
|
144
|
-
|
|
145
|
-
- **Linha 6:** `Total Components: 97` — o número real é maior (inclui páginas, hooks adicionais, `useMapLayers`, etc.)
|
|
146
|
-
- **Seção AI Features:** `CodeBlock`, `ModernChatInput`, `FormattedDocument` listados como _"in Storybook"_ sem link de doc — isso instrui agentes a não usá-los quando na verdade são componentes públicos
|
|
147
|
-
- **Seção Pages:** não existe no catálogo — as 8 páginas-template são invisíveis para agentes de IA
|
|
148
|
-
- **Seção Hooks:** `useTheme`, `useLanguage`, `useBrandColors`, `useAssistente`, `useApiKey` não estão listados
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
### 2.4 `docs/components/floating-media-wrapper.md` — Doc incompleta
|
|
153
|
-
|
|
154
|
-
O arquivo tem apenas 64 linhas e está truncado — a seção "Related Components" (linha 60) não tem conteúdo.
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
### 2.5 `docs/components/xertica-provider.md` — Seção "AI Rules" incompleta
|
|
159
|
-
|
|
160
|
-
O arquivo tem 65 linhas e a seção `## AI Rules` (linha 60) está vazia/truncada.
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## 3. Padrões (Patterns) Faltando
|
|
165
|
-
|
|
166
|
-
Os 5 padrões existentes cobrem casos básicos, mas faltam padrões para fluxos muito comuns:
|
|
167
|
-
|
|
168
|
-
| Padrão Faltando | Descrição |
|
|
169
|
-
| ---------------------------- | -------------------------------------------------------------------------------- |
|
|
170
|
-
| **Wizard / Multi-step Form** | Formulário com `Stepper` + validação por etapa + `useStepper` |
|
|
171
|
-
| **Detail Page** | Página de detalhe de registro com `PageHeader` + back button + seções com `Card` |
|
|
172
|
-
| **Settings Page** | Página de configurações com `Tabs` + seções de formulário + `Switch` |
|
|
173
|
-
| **Empty + Loading States** | Padrão completo de `Skeleton` → `Empty` → dados com `Table` |
|
|
174
|
-
| **File Upload Form** | Formulário com `FileUpload` integrado ao `react-hook-form` |
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
## 4. Docs Gerais — Pontos de Melhoria
|
|
179
|
-
|
|
180
|
-
### 4.1 `docs/getting-started.md` — Falta seção de troubleshooting
|
|
181
|
-
|
|
182
|
-
Não há seção de problemas comuns (ex: componentes sem estilo = CSS não importado, erros de TypeScript com subpath imports, etc.).
|
|
183
|
-
|
|
184
|
-
### 4.2 `docs/installation.md` — Falta menção ao `moduleResolution`
|
|
185
|
-
|
|
186
|
-
O arquivo [`docs/architecture.md`](./architecture.md) menciona que TypeScript precisa de `"moduleResolution": "bundler"` para subpath exports, mas [`docs/installation.md`](./installation.md) não menciona isso — é um erro de configuração muito comum.
|
|
187
|
-
|
|
188
|
-
### 4.3 `docs/ai-usage.md` — Falta regra sobre páginas-template
|
|
189
|
-
|
|
190
|
-
Não há instrução para agentes de IA sobre quando usar as páginas-template (`LoginPage`, `TemplatePage`, etc.) vs. compor do zero.
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
## 5. Priorização das Lacunas
|
|
195
|
-
|
|
196
|
-
### 🔴 Alta Prioridade (impacto direto em agentes de IA e desenvolvedores)
|
|
23
|
+
> Notas de contagem:
|
|
24
|
+
>
|
|
25
|
+
> - `components/ui/` contém 64 diretórios, dos quais 60 são componentes documentados. Os 4 restantes são módulos internos de configuração/re-export: `map-config`, `map-layers` (hook `useMapLayers`, documentado em `map-layers.md`), `map.exports`, e `google-maps-loader` (documentado em `google-maps-loader.md`).
|
|
26
|
+
> - `AssistantChart` reside em `components/ui/assistant-chart/` e é contado como componente UI; aparece de forma cruzada na seção "AI Features" do catálogo de `llms.md`.
|
|
197
27
|
|
|
198
|
-
|
|
199
|
-
2. **Criar `docs/components/modern-chat-input.md`** — componente de input do assistente
|
|
200
|
-
3. **Criar `docs/components/formatted-document.md`** — componente de documento do assistente
|
|
201
|
-
4. **Criar `docs/components/pages.md`** (ou docs individuais) — 8 páginas-template completamente invisíveis
|
|
202
|
-
5. **Criar `docs/components/hooks.md`** — documentar `useTheme`, `useLanguage`, `useBrandColors`, `useAssistente`, `useApiKey`
|
|
203
|
-
6. **Atualizar `docs/llms.md`** — corrigir estatísticas, adicionar páginas e hooks ao catálogo, adicionar links para docs dos componentes assistant
|
|
28
|
+
## Verificações de Qualidade (2026-06-25)
|
|
204
29
|
|
|
205
|
-
|
|
30
|
+
| Item | Resultado |
|
|
31
|
+
| ---------------------------------------------------------------- | --------- |
|
|
32
|
+
| `docs/architecture.md` — título H1 correto (`# Xertica UI — Architecture`) | ✅ OK |
|
|
33
|
+
| `docs/installation.md` — menciona `moduleResolution: "bundler"` | ✅ OK |
|
|
34
|
+
| `docs/getting-started.md` — possui seção de Troubleshooting | ✅ OK |
|
|
35
|
+
| `docs/llms.md` — estatísticas reconciliadas com subtotais | ✅ Corrigido |
|
|
36
|
+
| Seções truncadas / vazias em `docs/components/` | ✅ Nenhuma encontrada |
|
|
37
|
+
| Marcadores TODO / WIP / placeholder reais | ✅ Nenhum encontrado |
|
|
206
38
|
|
|
207
|
-
|
|
208
|
-
8. **Expandir `docs/components/assistant-chart.md`** — remover restrição enganosa de dataKey
|
|
209
|
-
9. **Completar `docs/components/floating-media-wrapper.md`** — seção "Related Components"
|
|
210
|
-
10. **Completar `docs/components/xertica-provider.md`** — seção "AI Rules"
|
|
211
|
-
11. **Criar `docs/components/map-layers.md`** — documentar `useMapLayers`
|
|
212
|
-
12. **Adicionar `"moduleResolution": "bundler"` em `docs/installation.md`**
|
|
39
|
+
## Padrões (`docs/patterns/`)
|
|
213
40
|
|
|
214
|
-
|
|
41
|
+
Cobertura atual: `analytics`, `crud`, `dashboard`, `detail-page`, `form`, `login`, `settings`, `wizard` (8 padrões). Os fluxos comuns identificados em auditorias anteriores (wizard/multi-step, detail page, settings page) já estão documentados.
|
|
215
42
|
|
|
216
|
-
|
|
217
|
-
14. **Criar padrão `docs/patterns/detail-page.md`** — página de detalhe
|
|
218
|
-
15. **Criar padrão `docs/patterns/settings.md`** — página de configurações
|
|
219
|
-
16. **Adicionar seção de troubleshooting em `docs/getting-started.md`**
|
|
220
|
-
17. **Criar `docs/components/image-with-fallback.md`** — utilitário de imagem
|
|
221
|
-
18. **Criar `docs/components/branding.md`** — componente de branding
|
|
43
|
+
## Pontos de Atenção Menores
|
|
222
44
|
|
|
223
|
-
|
|
45
|
+
- **Convenção de seção "AI Rules":** padronizada em todos os docs de componentes. Verificar novos docs para garantir uso de "AI Rules" (e não variações como "AI Best Practices").
|
|
46
|
+
- **`lib/query-client.ts`:** singleton intencionalmente interno; não exposto na API pública e não documentado externamente por design.
|
|
224
47
|
|
|
225
|
-
##
|
|
48
|
+
## Histórico
|
|
226
49
|
|
|
227
|
-
-
|
|
228
|
-
- [ ] `docs/components/modern-chat-input.md` — criar
|
|
229
|
-
- [ ] `docs/components/formatted-document.md` — criar
|
|
230
|
-
- [ ] `docs/components/pages.md` — criar (ou 8 docs individuais)
|
|
231
|
-
- [ ] `docs/components/hooks.md` — criar (useTheme, useLanguage, useBrandColors, useAssistente, useApiKey)
|
|
232
|
-
- [ ] `docs/llms.md` — atualizar estatísticas + adicionar páginas + hooks + links dos assistant components
|
|
233
|
-
- [ ] `docs/architecture.md` — corrigir título (linha 1)
|
|
234
|
-
- [ ] `docs/components/assistant-chart.md` — expandir e corrigir regra de dataKey
|
|
235
|
-
- [ ] `docs/components/floating-media-wrapper.md` — completar seção "Related Components"
|
|
236
|
-
- [ ] `docs/components/xertica-provider.md` — completar seção "AI Rules"
|
|
237
|
-
- [ ] `docs/components/map-layers.md` — criar
|
|
238
|
-
- [ ] `docs/installation.md` — adicionar requisito de `moduleResolution`
|
|
239
|
-
- [ ] `docs/patterns/wizard.md` — criar
|
|
240
|
-
- [ ] `docs/patterns/detail-page.md` — criar
|
|
241
|
-
- [ ] `docs/patterns/settings.md` — criar
|
|
242
|
-
- [ ] `docs/getting-started.md` — adicionar seção de troubleshooting
|
|
243
|
-
- [ ] `docs/components/image-with-fallback.md` — criar
|
|
244
|
-
- [ ] `docs/components/branding.md` — criar
|
|
50
|
+
O relatório original (2026-05-19) listava lacunas em componentes Assistant, páginas-template, hooks e utilitários. Todas foram resolvidas em auditorias subsequentes (2026-05-21 em diante). Aquele conteúdo foi removido deste arquivo por estar desatualizado e contradizer o estado real verificado.
|