xertica-ui 2.1.2 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/README.md +1 -1
- package/assets/xertica-logo.svg +37 -37
- package/assets/xertica-x-logo.svg +20 -20
- package/bin/cli.ts +1 -1
- package/bin/generate-tokens.ts +13 -7
- package/components/assistant/index.ts +6 -6
- package/components/assistant/xertica-assistant/index.ts +2 -0
- package/components/assistant/xertica-assistant/use-assistant.ts +564 -0
- package/components/assistant/xertica-assistant/xertica-assistant.stories.tsx +200 -0
- package/components/assistant/xertica-assistant/xertica-assistant.tsx +183 -474
- package/components/blocks/card-patterns/ActivityCard.tsx +72 -72
- package/components/blocks/card-patterns/FeatureCard.tsx +100 -100
- package/components/blocks/card-patterns/NotificationCard.tsx +127 -127
- package/components/blocks/card-patterns/ProfileCard.tsx +84 -84
- package/components/blocks/card-patterns/ProjectCard.tsx +89 -89
- package/components/blocks/card-patterns/QuickActionCard.tsx +62 -62
- package/components/blocks/card-patterns/card-patterns.stories.tsx +445 -445
- package/components/blocks/card-patterns/index.ts +17 -17
- package/components/blocks/index.ts +1 -1
- package/components/brand/index.ts +6 -6
- package/components/brand/xertica-provider/XerticaProvider.tsx +48 -48
- package/components/brand/xertica-provider/xertica-provider.mdx +61 -61
- package/components/brand/xertica-provider/xertica-provider.test.tsx +52 -52
- package/components/examples/MapExamples.tsx +282 -282
- package/components/examples/SimpleFilterableMap.tsx +191 -191
- package/components/examples/index.ts +51 -51
- package/components/figma/ImageWithFallback.tsx +27 -27
- package/components/hooks/index.ts +7 -7
- package/components/index.ts +5 -5
- package/components/layout/header/header.test.tsx +8 -8
- package/components/layout/header/header.tsx +4 -4
- package/components/layout/index.ts +2 -2
- package/components/layout/sidebar/index.ts +2 -0
- package/components/layout/sidebar/sidebar.mdx +1 -1
- package/components/layout/sidebar/sidebar.stories.tsx +160 -8
- package/components/layout/sidebar/sidebar.test.tsx +11 -11
- package/components/layout/sidebar/sidebar.tsx +610 -471
- package/components/layout/sidebar/use-sidebar.ts +113 -0
- package/components/media/FloatingMediaWrapper.tsx +11 -11
- package/components/media/audio-player/AudioPlayer.tsx +22 -22
- package/components/media/index.ts +3 -3
- package/components/pages/home-content/HomeContent.tsx +7 -7
- package/components/pages/home-content/home-content.mdx +62 -62
- package/components/pages/home-page/HomePage.stories.tsx +39 -39
- package/components/pages/home-page/HomePage.tsx +1 -1
- package/components/pages/home-page/home-page.mdx +53 -53
- package/components/pages/index.ts +8 -8
- package/components/pages/template-content/TemplateContent.tsx +5 -5
- package/components/pages/template-content/template-content.mdx +61 -61
- package/components/pages/template-page/TemplatePage.stories.tsx +39 -39
- package/components/pages/template-page/TemplatePage.tsx +5 -5
- package/components/pages/template-page/template-page.mdx +53 -53
- package/components/public-api-smoke.test.tsx +52 -52
- package/components/shared/assistant-utils.ts +43 -43
- package/components/shared/layout-constants.ts +1 -1
- package/components/ui/accordion/accordion.mdx +8 -8
- package/components/ui/accordion/accordion.stories.tsx +53 -53
- package/components/ui/alert/alert.mdx +8 -8
- package/components/ui/alert-dialog/alert-dialog.mdx +8 -8
- package/components/ui/aspect-ratio/aspect-ratio.mdx +8 -8
- package/components/ui/assistant-chart/assistant-chart.mdx +8 -8
- package/components/ui/avatar/avatar.mdx +8 -8
- package/components/ui/badge/badge.mdx +8 -8
- package/components/ui/badge/badge.tsx +9 -9
- package/components/ui/breadcrumb/breadcrumb.mdx +8 -8
- package/components/ui/button/button.mdx +8 -8
- package/components/ui/calendar/calendar.mdx +8 -8
- package/components/ui/calendar/calendar.tsx +258 -258
- package/components/ui/card/card.mdx +8 -8
- package/components/ui/card/card.stories.tsx +245 -245
- package/components/ui/carousel/carousel.mdx +8 -8
- package/components/ui/chart/chart.mdx +8 -8
- package/components/ui/chart/chart.stories.tsx +1303 -344
- package/components/ui/chart/chart.test.tsx +154 -154
- package/components/ui/chart/chart.tsx +2367 -1494
- package/components/ui/checkbox/checkbox.mdx +8 -8
- package/components/ui/checkbox/checkbox.stories.tsx +20 -20
- package/components/ui/collapsible/collapsible.mdx +8 -8
- package/components/ui/command/command.mdx +8 -8
- package/components/ui/context-menu/context-menu.mdx +8 -8
- package/components/ui/dialog/dialog.mdx +8 -8
- package/components/ui/drawer/drawer.mdx +8 -8
- package/components/ui/dropdown-menu/dropdown-menu.mdx +8 -8
- package/components/ui/empty/empty.mdx +8 -8
- package/components/ui/file-upload/file-upload.mdx +8 -8
- package/components/ui/file-upload/file-upload.stories.tsx +100 -0
- package/components/ui/file-upload/file-upload.tsx +14 -74
- package/components/ui/file-upload/index.ts +1 -0
- package/components/ui/file-upload/use-file-upload.ts +181 -0
- package/components/ui/google-maps-loader/google-maps-loader.tsx +2 -2
- package/components/ui/hover-card/hover-card.mdx +8 -8
- package/components/ui/input/input.mdx +8 -8
- package/components/ui/input-otp/input-otp.mdx +8 -8
- package/components/ui/input-otp/input-otp.stories.tsx +6 -6
- package/components/ui/label/label.mdx +8 -8
- package/components/ui/map/map.mdx +8 -8
- package/components/ui/map/map.stories.tsx +51 -51
- package/components/ui/map/map.tsx +2 -2
- package/components/ui/menubar/menubar.mdx +8 -8
- package/components/ui/navigation-menu/navigation-menu.mdx +8 -8
- package/components/ui/notification-badge/notification-badge.mdx +8 -8
- package/components/ui/pagination/index.ts +2 -0
- package/components/ui/pagination/pagination.mdx +8 -8
- package/components/ui/pagination/pagination.stories.tsx +94 -0
- package/components/ui/pagination/use-pagination.ts +194 -0
- package/components/ui/popover/popover.mdx +8 -8
- package/components/ui/progress/progress.mdx +8 -8
- package/components/ui/progress/progress.tsx +68 -68
- package/components/ui/radio-group/radio-group.mdx +8 -8
- package/components/ui/rating/rating.mdx +8 -8
- package/components/ui/resizable/resizable.mdx +8 -8
- package/components/ui/rich-text-editor/index.ts +2 -0
- package/components/ui/rich-text-editor/rich-text-editor.stories.tsx +129 -1
- package/components/ui/rich-text-editor/rich-text-editor.tsx +86 -305
- package/components/ui/rich-text-editor/use-rich-text-editor.ts +439 -0
- package/components/ui/route-map/route-map.mdx +8 -8
- package/components/ui/route-map/route-map.stories.tsx +54 -54
- package/components/ui/route-map/route-map.tsx +2 -2
- package/components/ui/scroll-area/scroll-area.mdx +8 -8
- package/components/ui/search/search.mdx +8 -8
- package/components/ui/select/select.mdx +8 -8
- package/components/ui/select/select.stories.tsx +9 -9
- package/components/ui/separator/separator.mdx +8 -8
- package/components/ui/sheet/sheet.mdx +8 -8
- package/components/ui/sheet/sheet.stories.tsx +95 -95
- package/components/ui/simple-map/simple-map.mdx +8 -8
- package/components/ui/simple-map/simple-map.stories.tsx +48 -48
- package/components/ui/skeleton/skeleton.mdx +8 -8
- package/components/ui/slider/slider.mdx +8 -8
- package/components/ui/sonner/sonner.mdx +8 -8
- package/components/ui/stats-card/stats-card.mdx +8 -8
- package/components/ui/stepper/index.ts +3 -1
- package/components/ui/stepper/stepper.mdx +8 -8
- package/components/ui/stepper/stepper.stories.tsx +116 -0
- package/components/ui/stepper/stepper.tsx +4 -4
- package/components/ui/stepper/use-stepper.ts +137 -0
- package/components/ui/switch/switch.mdx +8 -8
- package/components/ui/switch/switch.stories.tsx +20 -20
- package/components/ui/table/table.mdx +8 -8
- package/components/ui/tabs/tabs.mdx +8 -8
- package/components/ui/tabs/tabs.stories.tsx +26 -26
- package/components/ui/textarea/textarea.mdx +8 -8
- package/components/ui/timeline/timeline.mdx +8 -8
- package/components/ui/toggle/toggle.mdx +8 -8
- package/components/ui/toggle-group/toggle-group.mdx +8 -8
- package/components/ui/tooltip/tooltip.mdx +8 -8
- package/components/ui/tree-view/index.ts +4 -1
- package/components/ui/tree-view/tree-view.mdx +8 -8
- package/components/ui/tree-view/tree-view.stories.tsx +110 -4
- package/components/ui/tree-view/tree-view.tsx +17 -125
- package/components/ui/tree-view/use-tree-view.ts +229 -0
- package/components.json +1512 -1512
- package/contexts/ApiKeyContext.tsx +72 -72
- package/contexts/BrandColorsContext.tsx +26 -26
- package/contexts/LanguageContext.tsx +13 -13
- package/contexts/LayoutContext.test.tsx +11 -11
- package/contexts/LayoutContext.tsx +29 -29
- package/contexts/ThemeContext.tsx +26 -26
- package/contexts/theme-data.ts +4 -4
- package/dist/{AssistantChart-CVzmmhx4.js → AssistantChart-C_hwFRRr.js} +4 -4
- package/dist/{AssistantChart-BAx9VQvb.cjs → AssistantChart-CldVCVDe.cjs} +311 -94
- package/dist/{AssistantChart-CVko2A1W.js → AssistantChart-Cu3m7RBo.js} +314 -97
- package/dist/{AssistantChart-9w31gdAb.cjs → AssistantChart-DoZCyS5r.cjs} +4 -4
- package/dist/AudioPlayer-B1lt5cPl.cjs +989 -0
- package/dist/AudioPlayer-BZ7bibzU.cjs +982 -0
- package/dist/AudioPlayer-C12BjQBV.cjs +997 -0
- package/dist/AudioPlayer-DMcG_c7L.js +990 -0
- package/dist/AudioPlayer-DcFKRJE_.js +998 -0
- package/dist/AudioPlayer-e8LfNoqO.js +983 -0
- package/dist/{xertica-assistant-Qp3ydksa.cjs → CodeBlock-7TTgmdGG.cjs} +263 -51
- package/dist/{xertica-assistant-gnCJdcZY.js → CodeBlock-BeSt1h5P.js} +219 -7
- package/dist/CodeBlock-BgfYL_rD.cjs +2094 -0
- package/dist/CodeBlock-BlcqlA9M.cjs +2094 -0
- package/dist/CodeBlock-Bnmeu5ez.cjs +2094 -0
- package/dist/CodeBlock-BtfPlbAI.js +2078 -0
- package/dist/CodeBlock-CIySIuYr.js +2078 -0
- package/dist/CodeBlock-CuPtUM-7.cjs +2094 -0
- package/dist/CodeBlock-D6ffWXgc.js +2078 -0
- package/dist/CodeBlock-D8dcwbit.cjs +2094 -0
- package/dist/CodeBlock-DMZrFnlw.cjs +2094 -0
- package/dist/CodeBlock-DlBehYN8.js +2078 -0
- package/dist/CodeBlock-DnYNI8rQ.js +2078 -0
- package/dist/CodeBlock-DvKWbSnE.cjs +2094 -0
- package/dist/CodeBlock-DwMCfkFY.js +2078 -0
- package/dist/CodeBlock-Dy6CNYyj.js +2078 -0
- package/dist/CodeBlock-U1pPOQI7.cjs +2094 -0
- package/dist/CodeBlock-f_GpNhEB.js +2078 -0
- package/dist/CodeBlock-oB6u8nI1.js +2078 -0
- package/dist/CodeBlock-tZC31B73.cjs +2094 -0
- package/dist/ImageWithFallback-CGtidP6B.cjs +4542 -0
- package/dist/ImageWithFallback-lsg3pdFg.js +4508 -0
- package/dist/LanguageSelector-B5YfbHra.js +231 -0
- package/dist/LanguageSelector-D6uacAIM.cjs +230 -0
- package/dist/LayoutContext-BAql6ZRY.js +97 -0
- package/dist/LayoutContext-BvK-ggDa.cjs +96 -0
- package/dist/ThemeContext-BoH4NLfN.js +734 -0
- package/dist/{ThemeContext-BbBNoFTG.js → ThemeContext-C2EwAPDt.js} +2 -2
- package/dist/ThemeContext-r69W20Xg.cjs +733 -0
- package/dist/{ThemeContext-Cmr8Ex8H.cjs → ThemeContext-vTjumZeM.cjs} +2 -2
- package/dist/{VerifyEmailPage-BE-L9mB7.js → VerifyEmailPage-C0c2e5n0.js} +7 -7
- package/dist/{VerifyEmailPage-DMBh4NM9.cjs → VerifyEmailPage-CYXtbKi3.cjs} +1 -1
- package/dist/{VerifyEmailPage-CR7kb5df.cjs → VerifyEmailPage-Cwi3kbol.cjs} +7 -7
- package/dist/{VerifyEmailPage-CdYPSJoO.js → VerifyEmailPage-DvMLZgFt.js} +1 -1
- package/dist/XerticaOrbe-KL1RBHzw.cjs +1354 -0
- package/dist/XerticaOrbe-zwS1p2a8.js +1355 -0
- package/dist/XerticaProvider-6btlAlzc.js +17 -0
- package/dist/XerticaProvider-BNoNOxQ5.cjs +16 -0
- package/dist/XerticaProvider-BlY2limY.cjs +38 -0
- package/dist/{XerticaProvider-BITjgC5p.js → XerticaProvider-CEoWMTxu.js} +2 -2
- package/dist/{XerticaProvider-By8q3Roe.cjs → XerticaProvider-CllrbMEJ.cjs} +2 -2
- package/dist/XerticaProvider-DDuiIcKo.js +39 -0
- package/dist/XerticaProvider-cI9hSs27.cjs +38 -0
- package/dist/XerticaProvider-hSwhNQex.js +39 -0
- package/dist/{alert-dialog-yckpaOpy.cjs → alert-dialog-DSKByiKZ.cjs} +3 -3
- package/dist/{alert-dialog-iDe5VE5o.js → alert-dialog-s-vmNkJ_.js} +3 -3
- package/dist/assistant.cjs.js +2 -1
- package/dist/assistant.es.js +3 -2
- package/dist/brand.cjs.js +1 -1
- package/dist/brand.es.js +1 -1
- package/dist/breadcrumb-CqJ7bHY5.js +161 -0
- package/dist/breadcrumb-m9Hb2_XN.cjs +177 -0
- package/dist/cli.js +14 -8
- package/dist/components/assistant/xertica-assistant/index.d.ts +2 -0
- package/dist/components/assistant/xertica-assistant/use-assistant.d.ts +126 -0
- package/dist/components/assistant/xertica-assistant/xertica-assistant.d.ts +7 -2
- package/dist/components/blocks/audio-player/AudioPlayer.d.ts +35 -0
- package/dist/components/blocks/audio-player/index.d.ts +1 -0
- package/dist/components/blocks/document-editor/DocumentEditor.d.ts +26 -0
- package/dist/components/blocks/document-editor/index.d.ts +1 -0
- package/dist/components/blocks/podcast-player/PodcastPlayer.d.ts +41 -0
- package/dist/components/blocks/podcast-player/index.d.ts +1 -0
- package/dist/components/layout/sidebar/index.d.ts +2 -0
- package/dist/components/layout/sidebar/sidebar.d.ts +80 -0
- package/dist/components/layout/sidebar/use-sidebar.d.ts +22 -0
- package/dist/components/shared/layout-constants.d.ts +1 -1
- package/dist/components/ui/button/button.d.ts +1 -1
- package/dist/components/ui/chart/chart.d.ts +162 -5
- package/dist/components/ui/file-upload/file-upload.d.ts +2 -0
- package/dist/components/ui/file-upload/index.d.ts +1 -0
- package/dist/components/ui/file-upload/use-file-upload.d.ts +49 -0
- package/dist/components/ui/pagination/index.d.ts +2 -0
- package/dist/components/ui/pagination/use-pagination.d.ts +78 -0
- package/dist/components/ui/rich-text-editor/index.d.ts +2 -0
- package/dist/components/ui/rich-text-editor/use-rich-text-editor.d.ts +107 -0
- package/dist/components/ui/stepper/index.d.ts +3 -1
- package/dist/components/ui/stepper/stepper.d.ts +2 -2
- package/dist/components/ui/stepper/use-stepper.d.ts +60 -0
- package/dist/components/ui/tree-view/index.d.ts +4 -1
- package/dist/components/ui/tree-view/tree-view.d.ts +4 -6
- package/dist/components/ui/tree-view/use-tree-view.d.ts +60 -0
- package/dist/dropdown-menu-BDB5CmQs.cjs +247 -0
- package/dist/dropdown-menu-DQidbKBD.js +231 -0
- package/dist/google-maps-loader-BFWp6VPd.js +287 -0
- package/dist/{google-maps-loader-t2IlYBzw.js → google-maps-loader-CTYySAun.js} +4 -0
- package/dist/{google-maps-loader-BqsYL48U.cjs → google-maps-loader-Y-QkD-Li.cjs} +5 -0
- package/dist/google-maps-loader-eS3uQ5TA.cjs +287 -0
- package/dist/header-Cgy6vYPk.cjs +731 -0
- package/dist/header-DRlT4jgI.js +715 -0
- package/dist/header-Dux00SI4.cjs +731 -0
- package/dist/header-EkGKXPsD.js +715 -0
- package/dist/header-WfEywpyc.cjs +731 -0
- package/dist/header-tifNQn2U.js +715 -0
- package/dist/hooks.cjs.js +1 -1
- package/dist/hooks.es.js +1 -1
- package/dist/index-BhapVLVj.js +8 -0
- package/dist/{index-D3RLKRAs.cjs → index-COtD8bRW.cjs} +1 -1
- package/dist/index-D6fxYEY8.cjs +7 -0
- package/dist/index-DW5tYe26.js +8 -0
- package/dist/index.cjs.js +19 -8
- package/dist/index.es.js +39 -28
- package/dist/index.umd.js +1043 -470
- package/dist/input-2R4loU86.js +127 -0
- package/dist/input-DWANSKGb.cjs +145 -0
- package/dist/layout.cjs.js +89 -1
- package/dist/layout.es.js +90 -2
- package/dist/pages.cjs.js +1 -1
- package/dist/pages.es.js +1 -1
- package/dist/rich-text-editor-0mraWT5y.cjs +2376 -0
- package/dist/rich-text-editor-B6jMRLzk.cjs +1939 -0
- package/dist/rich-text-editor-B8_oYcIR.js +1730 -0
- package/dist/rich-text-editor-B9UbSXNb.js +1203 -0
- package/dist/rich-text-editor-BYuRBNBU.js +2373 -0
- package/dist/rich-text-editor-Bb9pySTs.cjs +2374 -0
- package/dist/rich-text-editor-BcL6L3cm.cjs +2374 -0
- package/dist/rich-text-editor-BoVZYtTs.cjs +2391 -0
- package/dist/rich-text-editor-CPV1lEPH.cjs +1748 -0
- package/dist/rich-text-editor-CoKqbCtu.cjs +1799 -0
- package/dist/rich-text-editor-Cw56T_mB.js +2356 -0
- package/dist/rich-text-editor-Cyt8qs2b.js +1921 -0
- package/dist/rich-text-editor-D6H84OcX.cjs +1220 -0
- package/dist/rich-text-editor-D76gD-QI.js +2328 -0
- package/dist/rich-text-editor-DKkokOnA.js +1781 -0
- package/dist/rich-text-editor-DNsdpN64.cjs +2359 -0
- package/dist/rich-text-editor-DfG8bCyY.js +2358 -0
- package/dist/rich-text-editor-DgF8s7xW.js +2949 -0
- package/dist/rich-text-editor-Dxjw31Z4.js +2341 -0
- package/dist/rich-text-editor-DzP0Epmb.js +2356 -0
- package/dist/rich-text-editor-mWoaSCE4.cjs +2966 -0
- package/dist/rich-text-editor-skplNlBM.cjs +2345 -0
- package/dist/select-Bkbr0f-Z.cjs +162 -0
- package/dist/select-CvIVdX2n.js +145 -0
- package/dist/sidebar-CK_0ZQHj.cjs +803 -0
- package/dist/sidebar-CUuOvYhK.js +787 -0
- package/dist/slider-Bc5Hd0y1.js +56 -0
- package/dist/slider-N7hFFj6X.cjs +73 -0
- package/dist/tooltip-Ded96neP.cjs +137 -0
- package/dist/tooltip-HDOoD2-0.js +120 -0
- package/dist/ui.cjs.js +14 -4
- package/dist/ui.es.js +26 -16
- package/dist/use-mobile-B0hNy_Y6.cjs +4303 -0
- package/dist/use-mobile-BXuYROXM.js +4202 -0
- package/dist/use-mobile-Bbd51ASU.cjs +4392 -0
- package/dist/use-mobile-Bk6CX-TC.js +4359 -0
- package/dist/use-mobile-BvYdisLP.js +4202 -0
- package/dist/use-mobile-BzuxjzNX.cjs +4392 -0
- package/dist/use-mobile-CG2-SdXV.cjs +4235 -0
- package/dist/use-mobile-CKb5pqTs.js +4269 -0
- package/dist/use-mobile-CYuAuGDl.js +4202 -0
- package/dist/use-mobile-CaENcqm-.js +4508 -0
- package/dist/use-mobile-CbrYgJGJ.js +4203 -0
- package/dist/use-mobile-DMOvImGQ.cjs +4542 -0
- package/dist/use-mobile-DRB3BQgD.cjs +4235 -0
- package/dist/use-mobile-DZvv7QMR.js +4359 -0
- package/dist/use-mobile-DdI_TXam.cjs +4235 -0
- package/dist/use-mobile-DlceKf8a.js +4359 -0
- package/dist/use-mobile-DsOnow1o.cjs +4236 -0
- package/dist/use-mobile-Kcj6jSnK.cjs +4392 -0
- package/dist/use-mobile-bnKcua_i.js +4202 -0
- package/dist/use-mobile-ncXBeE2z.cjs +4235 -0
- package/dist/{xertica-assistant-B1IaHXnB.cjs → xertica-assistant-dyP7KHM5.cjs} +533 -392
- package/dist/{xertica-assistant-DPsESB6t.js → xertica-assistant-yX1CFBBo.js} +535 -394
- package/dist/xertica-ui.css +2 -2
- package/docs/ai-usage.md +28 -10
- package/docs/architecture.md +76 -0
- package/docs/components/assistant.md +159 -0
- package/docs/components/calendar.md +154 -154
- package/docs/components/card-patterns.md +337 -337
- package/docs/components/card.md +235 -235
- package/docs/components/chart.md +354 -39
- package/docs/components/file-upload.md +119 -2
- package/docs/components/map.md +84 -84
- package/docs/components/pagination.md +187 -0
- package/docs/components/rich-text-editor.md +164 -0
- package/docs/components/sidebar.md +153 -4
- package/docs/components/stepper.md +157 -12
- package/docs/components/tree-view.md +164 -6
- package/docs/components/xertica-provider.md +24 -24
- package/docs/decision-tree.md +287 -287
- package/docs/getting-started.md +1 -1
- package/docs/guidelines.md +14 -8
- package/docs/layout.md +2 -2
- package/docs/llms.md +4 -4
- package/guidelines/Guidelines.md +252 -250
- package/hooks/useTheme.ts +3 -3
- package/imports/Podcast.tsx +388 -388
- package/imports/XerticaAi.tsx +45 -45
- package/imports/XerticaX.tsx +19 -19
- package/imports/svg-aueiaqngck.ts +11 -11
- package/imports/svg-v9krss1ozd.ts +16 -16
- package/imports/svg-vhrdofe3qe.ts +5 -5
- package/llms-compact.txt +327 -327
- package/llms.txt +160 -160
- package/package.json +203 -203
- package/styles/xertica/app-overrides/chat.css +61 -61
- package/styles/xertica/app-overrides/scrollbar.css +33 -33
- package/styles/xertica/integrations/google-maps.css +76 -76
- package/styles/xertica/integrations/sonner.css +73 -73
- package/styles/xertica/tokens.css +41 -12
- package/templates/CLAUDE.md +182 -172
- package/templates/guidelines/Guidelines.md +325 -313
- package/templates/package.json +3 -3
- package/templates/src/features/auth/index.ts +4 -4
- package/templates/src/features/auth/ui/AuthPageShell.tsx +34 -34
- package/templates/src/features/auth/ui/ForgotPasswordContent.tsx +70 -70
- package/templates/src/features/auth/ui/LoginContent.tsx +90 -90
- package/templates/src/features/auth/ui/ResetPasswordContent.tsx +151 -151
- package/templates/src/features/auth/ui/SocialLoginButtons.tsx +59 -59
- package/templates/src/features/auth/ui/VerifyEmailContent.tsx +82 -82
- package/templates/src/features/home/index.ts +1 -1
- package/templates/src/features/home/ui/HomeContent.tsx +100 -100
- package/templates/src/features/template/index.ts +5 -5
- package/templates/src/features/template/ui/CrudTemplate.tsx +3 -3
- package/templates/src/features/template/ui/DashboardTemplate.tsx +3 -3
- package/templates/src/features/template/ui/FormTemplate.tsx +120 -120
- package/templates/src/features/template/ui/LoginTemplate.tsx +3 -3
- package/templates/src/pages/AssistantPage.tsx +328 -328
- package/templates/src/pages/ForgotPasswordPage.tsx +6 -6
- package/templates/src/pages/HomePage.tsx +57 -57
- package/templates/src/pages/LoginPage.tsx +10 -10
- package/templates/src/pages/ResetPasswordPage.tsx +6 -6
- package/templates/src/pages/TemplatePage.tsx +30 -30
- package/templates/src/pages/VerifyEmailPage.tsx +6 -6
- package/templates/src/shared/config/navigation.ts +20 -20
- package/templates/src/shared/lib/auth.ts +20 -20
- package/templates/src/shared/types/auth.ts +3 -3
- package/templates/src/styles/xertica/tokens.css +39 -10
- package/templates/tsconfig.json +5 -5
- package/utils/gemini.ts +140 -140
- package/dist/VerifyEmailPage-Bae2cBXT.cjs +0 -2827
- package/dist/VerifyEmailPage-CbgjOF0v.js +0 -2828
- package/dist/index-CkTUgOwX.js +0 -8
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
export { ActivityCard } from "./ActivityCard"
|
|
2
|
-
export type { ActivityCardProps, ActivityItem } from "./ActivityCard"
|
|
3
|
-
|
|
4
|
-
export { ProfileCard } from "./ProfileCard"
|
|
5
|
-
export type { ProfileCardProps } from "./ProfileCard"
|
|
6
|
-
|
|
7
|
-
export { ProjectCard } from "./ProjectCard"
|
|
8
|
-
export type { ProjectCardProps, ProjectMember, ProjectStatus } from "./ProjectCard"
|
|
9
|
-
|
|
10
|
-
export { QuickActionCard } from "./QuickActionCard"
|
|
11
|
-
export type { QuickActionCardProps } from "./QuickActionCard"
|
|
12
|
-
|
|
13
|
-
export { NotificationCard } from "./NotificationCard"
|
|
14
|
-
export type { NotificationCardProps, NotificationItem, NotificationType } from "./NotificationCard"
|
|
15
|
-
|
|
16
|
-
export { FeatureCard } from "./FeatureCard"
|
|
17
|
-
export type { FeatureCardProps, FeatureCardColor } from "./FeatureCard"
|
|
1
|
+
export { ActivityCard } from "./ActivityCard"
|
|
2
|
+
export type { ActivityCardProps, ActivityItem } from "./ActivityCard"
|
|
3
|
+
|
|
4
|
+
export { ProfileCard } from "./ProfileCard"
|
|
5
|
+
export type { ProfileCardProps } from "./ProfileCard"
|
|
6
|
+
|
|
7
|
+
export { ProjectCard } from "./ProjectCard"
|
|
8
|
+
export type { ProjectCardProps, ProjectMember, ProjectStatus } from "./ProjectCard"
|
|
9
|
+
|
|
10
|
+
export { QuickActionCard } from "./QuickActionCard"
|
|
11
|
+
export type { QuickActionCardProps } from "./QuickActionCard"
|
|
12
|
+
|
|
13
|
+
export { NotificationCard } from "./NotificationCard"
|
|
14
|
+
export type { NotificationCardProps, NotificationItem, NotificationType } from "./NotificationCard"
|
|
15
|
+
|
|
16
|
+
export { FeatureCard } from "./FeatureCard"
|
|
17
|
+
export type { FeatureCardProps, FeatureCardColor } from "./FeatureCard"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./card-patterns"
|
|
1
|
+
export * from "./card-patterns"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './xertica-provider';
|
|
2
|
-
export * from './xertica-logo';
|
|
3
|
-
export * from './xertica-xlogo';
|
|
4
|
-
export * from './xertica-orbe';
|
|
5
|
-
export * from './theme-toggle';
|
|
6
|
-
export * from './language-selector';
|
|
1
|
+
export * from './xertica-provider';
|
|
2
|
+
export * from './xertica-logo';
|
|
3
|
+
export * from './xertica-xlogo';
|
|
4
|
+
export * from './xertica-orbe';
|
|
5
|
+
export * from './theme-toggle';
|
|
6
|
+
export * from './language-selector';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ApiKeyProvider } from '../../../contexts/ApiKeyContext';
|
|
3
|
-
import { AssistenteProvider } from '../../../contexts/AssistenteContext';
|
|
4
|
-
import { BrandColorsProvider } from '../../../contexts/BrandColorsContext';
|
|
5
|
-
import { LanguageProvider } from '../../../contexts/LanguageContext';
|
|
6
|
-
import { LayoutProvider } from '../../../contexts/LayoutContext';
|
|
7
|
-
import { ThemeProvider } from '../../../contexts/ThemeContext';
|
|
8
|
-
import { GoogleMapsLoaderProvider } from '../../ui/google-maps-loader';
|
|
9
|
-
import { Toaster } from '../../ui/sonner';
|
|
10
|
-
import { TooltipProvider } from '../../ui/tooltip';
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ApiKeyProvider } from '../../../contexts/ApiKeyContext';
|
|
3
|
+
import { AssistenteProvider } from '../../../contexts/AssistenteContext';
|
|
4
|
+
import { BrandColorsProvider } from '../../../contexts/BrandColorsContext';
|
|
5
|
+
import { LanguageProvider } from '../../../contexts/LanguageContext';
|
|
6
|
+
import { LayoutProvider } from '../../../contexts/LayoutContext';
|
|
7
|
+
import { ThemeProvider } from '../../../contexts/ThemeContext';
|
|
8
|
+
import { GoogleMapsLoaderProvider } from '../../ui/google-maps-loader';
|
|
9
|
+
import { Toaster } from '../../ui/sonner';
|
|
10
|
+
import { TooltipProvider } from '../../ui/tooltip';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Props for the XerticaProvider component.
|
|
@@ -36,41 +36,41 @@ interface XerticaProviderProps {
|
|
|
36
36
|
* This component aggregates all necessary context providers. It should be placed at the
|
|
37
37
|
* root of your application, ideally inside the App component.
|
|
38
38
|
*/
|
|
39
|
-
export function XerticaProvider({
|
|
40
|
-
children,
|
|
41
|
-
apiKey,
|
|
42
|
-
googleMapsApiKey,
|
|
43
|
-
defaultBrandTheme,
|
|
44
|
-
primaryColor,
|
|
45
|
-
useCustomTokens,
|
|
46
|
-
disableDarkMode,
|
|
47
|
-
}: XerticaProviderProps) {
|
|
48
|
-
return (
|
|
49
|
-
<ThemeProvider disableDarkMode={disableDarkMode}>
|
|
50
|
-
<BrandColorsProvider
|
|
51
|
-
defaultTheme={defaultBrandTheme}
|
|
52
|
-
primaryColor={primaryColor}
|
|
53
|
-
useCustomTokens={useCustomTokens}
|
|
54
|
-
>
|
|
55
|
-
<LanguageProvider>
|
|
56
|
-
<ApiKeyProvider
|
|
57
|
-
initialApiKey={apiKey}
|
|
58
|
-
initialGeminiApiKey={apiKey}
|
|
59
|
-
initialGoogleMapsApiKey={googleMapsApiKey}
|
|
60
|
-
>
|
|
61
|
-
<GoogleMapsLoaderProvider apiKey={googleMapsApiKey}>
|
|
62
|
-
<AssistenteProvider>
|
|
63
|
-
<LayoutProvider>
|
|
64
|
-
<TooltipProvider>
|
|
65
|
-
{children}
|
|
66
|
-
<Toaster position="top-right" richColors />
|
|
67
|
-
</TooltipProvider>
|
|
68
|
-
</LayoutProvider>
|
|
69
|
-
</AssistenteProvider>
|
|
70
|
-
</GoogleMapsLoaderProvider>
|
|
71
|
-
</ApiKeyProvider>
|
|
72
|
-
</LanguageProvider>
|
|
73
|
-
</BrandColorsProvider>
|
|
74
|
-
</ThemeProvider>
|
|
75
|
-
);
|
|
76
|
-
}
|
|
39
|
+
export function XerticaProvider({
|
|
40
|
+
children,
|
|
41
|
+
apiKey,
|
|
42
|
+
googleMapsApiKey,
|
|
43
|
+
defaultBrandTheme,
|
|
44
|
+
primaryColor,
|
|
45
|
+
useCustomTokens,
|
|
46
|
+
disableDarkMode,
|
|
47
|
+
}: XerticaProviderProps) {
|
|
48
|
+
return (
|
|
49
|
+
<ThemeProvider disableDarkMode={disableDarkMode}>
|
|
50
|
+
<BrandColorsProvider
|
|
51
|
+
defaultTheme={defaultBrandTheme}
|
|
52
|
+
primaryColor={primaryColor}
|
|
53
|
+
useCustomTokens={useCustomTokens}
|
|
54
|
+
>
|
|
55
|
+
<LanguageProvider>
|
|
56
|
+
<ApiKeyProvider
|
|
57
|
+
initialApiKey={apiKey}
|
|
58
|
+
initialGeminiApiKey={apiKey}
|
|
59
|
+
initialGoogleMapsApiKey={googleMapsApiKey}
|
|
60
|
+
>
|
|
61
|
+
<GoogleMapsLoaderProvider apiKey={googleMapsApiKey}>
|
|
62
|
+
<AssistenteProvider>
|
|
63
|
+
<LayoutProvider>
|
|
64
|
+
<TooltipProvider>
|
|
65
|
+
{children}
|
|
66
|
+
<Toaster position="top-right" richColors />
|
|
67
|
+
</TooltipProvider>
|
|
68
|
+
</LayoutProvider>
|
|
69
|
+
</AssistenteProvider>
|
|
70
|
+
</GoogleMapsLoaderProvider>
|
|
71
|
+
</ApiKeyProvider>
|
|
72
|
+
</LanguageProvider>
|
|
73
|
+
</BrandColorsProvider>
|
|
74
|
+
</ThemeProvider>
|
|
75
|
+
);
|
|
76
|
+
}
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import { Meta, Title, Subtitle } from '@storybook/addon-docs/blocks';
|
|
2
|
-
|
|
3
|
-
<Meta title="System/XerticaProvider" />
|
|
4
|
-
|
|
5
|
-
<Title>XerticaProvider</Title>
|
|
6
|
-
<Subtitle>The recommended root wrapper for shared Xertica UI services.</Subtitle>
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Overview
|
|
11
|
-
|
|
12
|
-
The `XerticaProvider` orchestrates the shared services used by complete applications: theme, brand colors, language, API keys, assistant state, layout, tooltips, Google Maps loading, and toast notifications.
|
|
13
|
-
|
|
14
|
-
Most components have local fallbacks and can render without it, but app shells should still place it at the root so state is synchronized across layout, assistant, maps, theme, and notifications.
|
|
15
|
-
|
|
16
|
-
```tsx
|
|
17
|
-
import { XerticaProvider } from 'xertica-ui/brand';
|
|
18
|
-
import 'xertica-ui/style.css';
|
|
19
|
-
|
|
20
|
-
function App() {
|
|
21
|
-
return (
|
|
22
|
-
<XerticaProvider>
|
|
23
|
-
<YourAppContent />
|
|
24
|
-
</XerticaProvider>
|
|
25
|
-
);
|
|
26
|
-
}
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Props
|
|
32
|
-
|
|
33
|
-
| Prop | Type | Default | Description |
|
|
34
|
-
|---|---|---|---|
|
|
35
|
-
| `children` | `ReactNode` | **Required** | The application content to be wrapped by all providers. |
|
|
36
|
-
| `googleMapsApiKey` | `string` | - | Initial Google Maps JavaScript API key. |
|
|
37
|
-
| `apiKey` | `string` | - | Initial Gemini / AI service API key forwarded to `ApiKeyProvider`. |
|
|
38
|
-
| `defaultBrandTheme` | `string` | - | Initial brand color theme id forwarded to `BrandColorsProvider`. |
|
|
39
|
-
| `primaryColor` | `string` | - | Hex color override for the primary brand token. |
|
|
40
|
-
| `useCustomTokens` | `boolean` | `false` | Skips runtime brand token injection when the host app owns tokens. |
|
|
41
|
-
| `disableDarkMode` | `boolean` | `false` | Forces light mode and disables dark-mode toggling from the theme provider. |
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## What It Provides
|
|
46
|
-
|
|
47
|
-
1. **Theme, Language, Brand, and API Key Contexts**: Centralizes app-level preferences and service keys.
|
|
48
|
-
2. **Assistant Context**: Provides shared assistant conversation state.
|
|
49
|
-
3. **Layout Context**: Enables `useLayout()` for synchronized sidebar and assistant state.
|
|
50
|
-
4. **Tooltip Provider**: Standardizes Radix tooltip behavior across the app.
|
|
51
|
-
5. **Google Maps Loader**: Handles asynchronous loading of the Maps API.
|
|
52
|
-
6. **Toast Notifications**: Injects the `Sonner` toaster into the DOM.
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## AI Best Practices
|
|
57
|
-
|
|
58
|
-
> [!CAUTION]
|
|
59
|
-
> - **Recommended App Wrapper** - Components should render independently when possible, but apps should still use this provider once at the root for synchronized state and shared services.
|
|
60
|
-
> - **Environment Safety** - Never hardcode API keys. Always use environment variables when passing them to the provider.
|
|
61
|
-
> - **Toaster Injection** - The provider automatically injects the `Sonner` toaster. Do not add another `<Toaster />` in your app root unless you specifically need to override it.
|
|
1
|
+
import { Meta, Title, Subtitle } from '@storybook/addon-docs/blocks';
|
|
2
|
+
|
|
3
|
+
<Meta title="System/XerticaProvider" />
|
|
4
|
+
|
|
5
|
+
<Title>XerticaProvider</Title>
|
|
6
|
+
<Subtitle>The recommended root wrapper for shared Xertica UI services.</Subtitle>
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
The `XerticaProvider` orchestrates the shared services used by complete applications: theme, brand colors, language, API keys, assistant state, layout, tooltips, Google Maps loading, and toast notifications.
|
|
13
|
+
|
|
14
|
+
Most components have local fallbacks and can render without it, but app shells should still place it at the root so state is synchronized across layout, assistant, maps, theme, and notifications.
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { XerticaProvider } from 'xertica-ui/brand';
|
|
18
|
+
import 'xertica-ui/style.css';
|
|
19
|
+
|
|
20
|
+
function App() {
|
|
21
|
+
return (
|
|
22
|
+
<XerticaProvider>
|
|
23
|
+
<YourAppContent />
|
|
24
|
+
</XerticaProvider>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Props
|
|
32
|
+
|
|
33
|
+
| Prop | Type | Default | Description |
|
|
34
|
+
|---|---|---|---|
|
|
35
|
+
| `children` | `ReactNode` | **Required** | The application content to be wrapped by all providers. |
|
|
36
|
+
| `googleMapsApiKey` | `string` | - | Initial Google Maps JavaScript API key. |
|
|
37
|
+
| `apiKey` | `string` | - | Initial Gemini / AI service API key forwarded to `ApiKeyProvider`. |
|
|
38
|
+
| `defaultBrandTheme` | `string` | - | Initial brand color theme id forwarded to `BrandColorsProvider`. |
|
|
39
|
+
| `primaryColor` | `string` | - | Hex color override for the primary brand token. |
|
|
40
|
+
| `useCustomTokens` | `boolean` | `false` | Skips runtime brand token injection when the host app owns tokens. |
|
|
41
|
+
| `disableDarkMode` | `boolean` | `false` | Forces light mode and disables dark-mode toggling from the theme provider. |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## What It Provides
|
|
46
|
+
|
|
47
|
+
1. **Theme, Language, Brand, and API Key Contexts**: Centralizes app-level preferences and service keys.
|
|
48
|
+
2. **Assistant Context**: Provides shared assistant conversation state.
|
|
49
|
+
3. **Layout Context**: Enables `useLayout()` for synchronized sidebar and assistant state.
|
|
50
|
+
4. **Tooltip Provider**: Standardizes Radix tooltip behavior across the app.
|
|
51
|
+
5. **Google Maps Loader**: Handles asynchronous loading of the Maps API.
|
|
52
|
+
6. **Toast Notifications**: Injects the `Sonner` toaster into the DOM.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## AI Best Practices
|
|
57
|
+
|
|
58
|
+
> [!CAUTION]
|
|
59
|
+
> - **Recommended App Wrapper** - Components should render independently when possible, but apps should still use this provider once at the root for synchronized state and shared services.
|
|
60
|
+
> - **Environment Safety** - Never hardcode API keys. Always use environment variables when passing them to the provider.
|
|
61
|
+
> - **Toaster Injection** - The provider automatically injects the `Sonner` toaster. Do not add another `<Toaster />` in your app root unless you specifically need to override it.
|
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
import { render, screen } from '@testing-library/react';
|
|
2
2
|
import { describe, it, expect } from 'vitest';
|
|
3
|
-
import { XerticaProvider } from './XerticaProvider';
|
|
4
|
-
import React from 'react';
|
|
5
|
-
import { useApiKey } from '../../../contexts/ApiKeyContext';
|
|
6
|
-
import { useAssistente } from '../../../contexts/AssistenteContext';
|
|
7
|
-
import { useBrandColors } from '../../../contexts/BrandColorsContext';
|
|
8
|
-
import { useLanguage } from '../../../contexts/LanguageContext';
|
|
9
|
-
import { useLayout } from '../../../contexts/LayoutContext';
|
|
10
|
-
import { useTheme } from '../../../contexts/ThemeContext';
|
|
11
|
-
|
|
12
|
-
function ProviderProbe() {
|
|
13
|
-
const layout = useLayout();
|
|
14
|
-
const theme = useTheme();
|
|
15
|
-
const language = useLanguage();
|
|
16
|
-
const brand = useBrandColors();
|
|
17
|
-
const api = useApiKey();
|
|
18
|
-
const assistant = useAssistente();
|
|
19
|
-
|
|
20
|
-
return (
|
|
21
|
-
<div
|
|
22
|
-
data-testid="provider-probe"
|
|
23
|
-
data-sidebar={layout.sidebarExpanded ? 'open' : 'closed'}
|
|
24
|
-
data-theme={theme.theme}
|
|
25
|
-
data-language={language.language}
|
|
26
|
-
data-brand={brand.currentTheme}
|
|
27
|
-
data-api={api.geminiApiKey}
|
|
28
|
-
data-conversation={assistant.conversaAtual}
|
|
29
|
-
/>
|
|
30
|
-
);
|
|
31
|
-
}
|
|
3
|
+
import { XerticaProvider } from './XerticaProvider';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { useApiKey } from '../../../contexts/ApiKeyContext';
|
|
6
|
+
import { useAssistente } from '../../../contexts/AssistenteContext';
|
|
7
|
+
import { useBrandColors } from '../../../contexts/BrandColorsContext';
|
|
8
|
+
import { useLanguage } from '../../../contexts/LanguageContext';
|
|
9
|
+
import { useLayout } from '../../../contexts/LayoutContext';
|
|
10
|
+
import { useTheme } from '../../../contexts/ThemeContext';
|
|
11
|
+
|
|
12
|
+
function ProviderProbe() {
|
|
13
|
+
const layout = useLayout();
|
|
14
|
+
const theme = useTheme();
|
|
15
|
+
const language = useLanguage();
|
|
16
|
+
const brand = useBrandColors();
|
|
17
|
+
const api = useApiKey();
|
|
18
|
+
const assistant = useAssistente();
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<div
|
|
22
|
+
data-testid="provider-probe"
|
|
23
|
+
data-sidebar={layout.sidebarExpanded ? 'open' : 'closed'}
|
|
24
|
+
data-theme={theme.theme}
|
|
25
|
+
data-language={language.language}
|
|
26
|
+
data-brand={brand.currentTheme}
|
|
27
|
+
data-api={api.geminiApiKey}
|
|
28
|
+
data-conversation={assistant.conversaAtual}
|
|
29
|
+
/>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
32
|
|
|
33
33
|
describe('XerticaProvider', () => {
|
|
34
34
|
it('renders children correctly', () => {
|
|
@@ -41,7 +41,7 @@ describe('XerticaProvider', () => {
|
|
|
41
41
|
expect(screen.getByTestId('provider-child')).toBeInTheDocument();
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
it('renders global components like Toaster', () => {
|
|
44
|
+
it('renders global components like Toaster', () => {
|
|
45
45
|
const { container } = render(
|
|
46
46
|
<XerticaProvider>
|
|
47
47
|
<div>Content</div>
|
|
@@ -50,25 +50,25 @@ describe('XerticaProvider', () => {
|
|
|
50
50
|
|
|
51
51
|
// Check for sonner's toaster container (it has a specific data attribute or class)
|
|
52
52
|
// Actually, sonner injects a [data-sonner-toaster] element
|
|
53
|
-
const toaster = container.querySelector('[data-sonner-toaster]');
|
|
54
|
-
expect(toaster).toBeDefined();
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it('composes all public providers and forwards initial keys/theme props', () => {
|
|
58
|
-
render(
|
|
59
|
-
<XerticaProvider
|
|
60
|
-
apiKey="test-gemini-key"
|
|
61
|
-
googleMapsApiKey="test-maps-key"
|
|
62
|
-
defaultBrandTheme="xertica-original"
|
|
63
|
-
>
|
|
64
|
-
<ProviderProbe />
|
|
65
|
-
</XerticaProvider>
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
const probe = screen.getByTestId('provider-probe');
|
|
69
|
-
expect(probe).toHaveAttribute('data-theme', 'light');
|
|
70
|
-
expect(probe).toHaveAttribute('data-language', 'pt-BR');
|
|
71
|
-
expect(probe).toHaveAttribute('data-api', 'test-gemini-key');
|
|
72
|
-
expect(probe).toHaveAttribute('data-conversation', '1');
|
|
73
|
-
});
|
|
74
|
-
});
|
|
53
|
+
const toaster = container.querySelector('[data-sonner-toaster]');
|
|
54
|
+
expect(toaster).toBeDefined();
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('composes all public providers and forwards initial keys/theme props', () => {
|
|
58
|
+
render(
|
|
59
|
+
<XerticaProvider
|
|
60
|
+
apiKey="test-gemini-key"
|
|
61
|
+
googleMapsApiKey="test-maps-key"
|
|
62
|
+
defaultBrandTheme="xertica-original"
|
|
63
|
+
>
|
|
64
|
+
<ProviderProbe />
|
|
65
|
+
</XerticaProvider>
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
const probe = screen.getByTestId('provider-probe');
|
|
69
|
+
expect(probe).toHaveAttribute('data-theme', 'light');
|
|
70
|
+
expect(probe).toHaveAttribute('data-language', 'pt-BR');
|
|
71
|
+
expect(probe).toHaveAttribute('data-api', 'test-gemini-key');
|
|
72
|
+
expect(probe).toHaveAttribute('data-conversation', '1');
|
|
73
|
+
});
|
|
74
|
+
});
|