@qwickapps/react-framework 1.3.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/LICENSE +44 -0
- package/README.md +794 -0
- package/dist/components/AccessibilityChecker.d.ts +12 -0
- package/dist/components/AccessibilityChecker.d.ts.map +1 -0
- package/dist/components/Html.d.ts +48 -0
- package/dist/components/Html.d.ts.map +1 -0
- package/dist/components/Logo.d.ts +79 -0
- package/dist/components/Logo.d.ts.map +1 -0
- package/dist/components/Markdown.d.ts +47 -0
- package/dist/components/Markdown.d.ts.map +1 -0
- package/dist/components/QwickApp.d.ts +56 -0
- package/dist/components/QwickApp.d.ts.map +1 -0
- package/dist/components/QwickAppsLogo.d.ts +25 -0
- package/dist/components/QwickAppsLogo.d.ts.map +1 -0
- package/dist/components/ResponsiveMenu.d.ts +38 -0
- package/dist/components/ResponsiveMenu.d.ts.map +1 -0
- package/dist/components/SafeSpan.d.ts +23 -0
- package/dist/components/SafeSpan.d.ts.map +1 -0
- package/dist/components/Scaffold.d.ts +57 -0
- package/dist/components/Scaffold.d.ts.map +1 -0
- package/dist/components/blocks/Article.d.ts +23 -0
- package/dist/components/blocks/Article.d.ts.map +1 -0
- package/dist/components/blocks/CardListGrid.d.ts +23 -0
- package/dist/components/blocks/CardListGrid.d.ts.map +1 -0
- package/dist/components/blocks/Code.d.ts +21 -0
- package/dist/components/blocks/Code.d.ts.map +1 -0
- package/dist/components/blocks/Content.d.ts +24 -0
- package/dist/components/blocks/Content.d.ts.map +1 -0
- package/dist/components/blocks/CoverImageHeader.d.ts +44 -0
- package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -0
- package/dist/components/blocks/FeatureCard.d.ts +66 -0
- package/dist/components/blocks/FeatureCard.d.ts.map +1 -0
- package/dist/components/blocks/FeatureGrid.d.ts +48 -0
- package/dist/components/blocks/FeatureGrid.d.ts.map +1 -0
- package/dist/components/blocks/Footer.d.ts +56 -0
- package/dist/components/blocks/Footer.d.ts.map +1 -0
- package/dist/components/blocks/HeroBlock.d.ts +33 -0
- package/dist/components/blocks/HeroBlock.d.ts.map +1 -0
- package/dist/components/blocks/PageBannerHeader.d.ts +30 -0
- package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -0
- package/dist/components/blocks/ProductCard.d.ts +57 -0
- package/dist/components/blocks/ProductCard.d.ts.map +1 -0
- package/dist/components/blocks/Section.d.ts +40 -0
- package/dist/components/blocks/Section.d.ts.map +1 -0
- package/dist/components/blocks/index.d.ts +37 -0
- package/dist/components/blocks/index.d.ts.map +1 -0
- package/dist/components/buttons/Button.d.ts +38 -0
- package/dist/components/buttons/Button.d.ts.map +1 -0
- package/dist/components/buttons/PaletteSwitcher.d.ts +24 -0
- package/dist/components/buttons/PaletteSwitcher.d.ts.map +1 -0
- package/dist/components/buttons/ThemeSwitcher.d.ts +24 -0
- package/dist/components/buttons/ThemeSwitcher.d.ts.map +1 -0
- package/dist/components/buttons/index.d.ts +11 -0
- package/dist/components/buttons/index.d.ts.map +1 -0
- package/dist/components/forms/FormBlock.d.ts +45 -0
- package/dist/components/forms/FormBlock.d.ts.map +1 -0
- package/dist/components/forms/index.d.ts +8 -0
- package/dist/components/forms/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +32 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/input/ChoiceInputField.d.ts +30 -0
- package/dist/components/input/ChoiceInputField.d.ts.map +1 -0
- package/dist/components/input/HtmlInputField.d.ts +29 -0
- package/dist/components/input/HtmlInputField.d.ts.map +1 -0
- package/dist/components/input/SelectInputField.d.ts +29 -0
- package/dist/components/input/SelectInputField.d.ts.map +1 -0
- package/dist/components/input/TextField.d.ts +18 -0
- package/dist/components/input/TextField.d.ts.map +1 -0
- package/dist/components/input/TextInputField.d.ts +32 -0
- package/dist/components/input/TextInputField.d.ts.map +1 -0
- package/dist/components/input/index.d.ts +17 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/layout/GridCell.d.ts +16 -0
- package/dist/components/layout/GridCell.d.ts.map +1 -0
- package/dist/components/layout/GridCellWrapper.d.ts +46 -0
- package/dist/components/layout/GridCellWrapper.d.ts.map +1 -0
- package/dist/components/layout/GridLayout.d.ts +38 -0
- package/dist/components/layout/GridLayout.d.ts.map +1 -0
- package/dist/components/layout/index.d.ts +12 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/menu/Menu.d.ts +1 -0
- package/dist/components/menu/Menu.d.ts.map +1 -0
- package/dist/components/menu/MenuItem.d.ts +31 -0
- package/dist/components/menu/MenuItem.d.ts.map +1 -0
- package/dist/components/menu/index.d.ts +7 -0
- package/dist/components/menu/index.d.ts.map +1 -0
- package/dist/components/pages/FormPage.d.ts +66 -0
- package/dist/components/pages/FormPage.d.ts.map +1 -0
- package/dist/components/pages/Page.d.ts +124 -0
- package/dist/components/pages/Page.d.ts.map +1 -0
- package/dist/components/pages/index.d.ts +11 -0
- package/dist/components/pages/index.d.ts.map +1 -0
- package/dist/contexts/DataContext.d.ts +139 -0
- package/dist/contexts/DataContext.d.ts.map +1 -0
- package/dist/contexts/DimensionsContext.d.ts +42 -0
- package/dist/contexts/DimensionsContext.d.ts.map +1 -0
- package/dist/contexts/PaletteContext.d.ts +53 -0
- package/dist/contexts/PaletteContext.d.ts.map +1 -0
- package/dist/contexts/QwickAppContext.d.ts +71 -0
- package/dist/contexts/QwickAppContext.d.ts.map +1 -0
- package/dist/contexts/ThemeContext.d.ts +65 -0
- package/dist/contexts/ThemeContext.d.ts.map +1 -0
- package/dist/contexts/index.d.ts +9 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +10 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/useBaseProps.d.ts +101 -0
- package/dist/hooks/useBaseProps.d.ts.map +1 -0
- package/dist/hooks/useDataBinding.d.ts +22 -0
- package/dist/hooks/useDataBinding.d.ts.map +1 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.css +1 -0
- package/dist/index.esm.js +24143 -0
- package/dist/index.js +24245 -0
- package/dist/palettes/PaletteAutumn.d.ts +10 -0
- package/dist/palettes/PaletteAutumn.d.ts.map +1 -0
- package/dist/palettes/PaletteCosmic.d.ts +10 -0
- package/dist/palettes/PaletteCosmic.d.ts.map +1 -0
- package/dist/palettes/PaletteDefault.d.ts +10 -0
- package/dist/palettes/PaletteDefault.d.ts.map +1 -0
- package/dist/palettes/PaletteOcean.d.ts +10 -0
- package/dist/palettes/PaletteOcean.d.ts.map +1 -0
- package/dist/palettes/PaletteSpring.d.ts +10 -0
- package/dist/palettes/PaletteSpring.d.ts.map +1 -0
- package/dist/palettes/PaletteWinter.d.ts +10 -0
- package/dist/palettes/PaletteWinter.d.ts.map +1 -0
- package/dist/palettes/index.d.ts +13 -0
- package/dist/palettes/index.d.ts.map +1 -0
- package/dist/schemas/ActionSchema.d.ts +21 -0
- package/dist/schemas/ActionSchema.d.ts.map +1 -0
- package/dist/schemas/ArticleSchema.d.ts +13 -0
- package/dist/schemas/ArticleSchema.d.ts.map +1 -0
- package/dist/schemas/Builders.d.ts +7 -0
- package/dist/schemas/Builders.d.ts.map +1 -0
- package/dist/schemas/ButtonSchema.d.ts +19 -0
- package/dist/schemas/ButtonSchema.d.ts.map +1 -0
- package/dist/schemas/CardListGridSchema.d.ts +17 -0
- package/dist/schemas/CardListGridSchema.d.ts.map +1 -0
- package/dist/schemas/ChoiceInputFieldSchema.d.ts +18 -0
- package/dist/schemas/ChoiceInputFieldSchema.d.ts.map +1 -0
- package/dist/schemas/CodeSchema.d.ts +18 -0
- package/dist/schemas/CodeSchema.d.ts.map +1 -0
- package/dist/schemas/ContentSchema.d.ts +20 -0
- package/dist/schemas/ContentSchema.d.ts.map +1 -0
- package/dist/schemas/CoverImageHeaderSchema.d.ts +28 -0
- package/dist/schemas/CoverImageHeaderSchema.d.ts.map +1 -0
- package/dist/schemas/FeatureCardSchema.d.ts +28 -0
- package/dist/schemas/FeatureCardSchema.d.ts.map +1 -0
- package/dist/schemas/FeatureGridSchema.d.ts +17 -0
- package/dist/schemas/FeatureGridSchema.d.ts.map +1 -0
- package/dist/schemas/FeatureItemSchema.d.ts +16 -0
- package/dist/schemas/FeatureItemSchema.d.ts.map +1 -0
- package/dist/schemas/FooterItemSchema.d.ts +15 -0
- package/dist/schemas/FooterItemSchema.d.ts.map +1 -0
- package/dist/schemas/FooterSchema.d.ts +20 -0
- package/dist/schemas/FooterSchema.d.ts.map +1 -0
- package/dist/schemas/FooterSectionSchema.d.ts +15 -0
- package/dist/schemas/FooterSectionSchema.d.ts.map +1 -0
- package/dist/schemas/FormBlockSchema.d.ts +19 -0
- package/dist/schemas/FormBlockSchema.d.ts.map +1 -0
- package/dist/schemas/HeaderActionSchema.d.ts +17 -0
- package/dist/schemas/HeaderActionSchema.d.ts.map +1 -0
- package/dist/schemas/HeroBlockSchema.d.ts +22 -0
- package/dist/schemas/HeroBlockSchema.d.ts.map +1 -0
- package/dist/schemas/HtmlInputFieldSchema.d.ts +18 -0
- package/dist/schemas/HtmlInputFieldSchema.d.ts.map +1 -0
- package/dist/schemas/MetadataItemSchema.d.ts +13 -0
- package/dist/schemas/MetadataItemSchema.d.ts.map +1 -0
- package/dist/schemas/PageBannerHeaderSchema.d.ts +28 -0
- package/dist/schemas/PageBannerHeaderSchema.d.ts.map +1 -0
- package/dist/schemas/PaletteSwitcherSchema.d.ts +16 -0
- package/dist/schemas/PaletteSwitcherSchema.d.ts.map +1 -0
- package/dist/schemas/ProductCardSchema.d.ts +39 -0
- package/dist/schemas/ProductCardSchema.d.ts.map +1 -0
- package/dist/schemas/SafeSpanSchema.d.ts +13 -0
- package/dist/schemas/SafeSpanSchema.d.ts.map +1 -0
- package/dist/schemas/SectionSchema.d.ts +17 -0
- package/dist/schemas/SectionSchema.d.ts.map +1 -0
- package/dist/schemas/SelectInputFieldSchema.d.ts +27 -0
- package/dist/schemas/SelectInputFieldSchema.d.ts.map +1 -0
- package/dist/schemas/TextInputFieldSchema.d.ts +22 -0
- package/dist/schemas/TextInputFieldSchema.d.ts.map +1 -0
- package/dist/schemas/ThemeSwitcherSchema.d.ts +19 -0
- package/dist/schemas/ThemeSwitcherSchema.d.ts.map +1 -0
- package/dist/schemas/index.d.ts +33 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/types.d.ts +7 -0
- package/dist/schemas/types.d.ts.map +1 -0
- package/dist/templates/TemplateResolver.d.ts +52 -0
- package/dist/templates/TemplateResolver.d.ts.map +1 -0
- package/dist/templates/index.d.ts +7 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/tests/ConsoleWarningTest.d.ts +5 -0
- package/dist/tests/ConsoleWarningTest.d.ts.map +1 -0
- package/dist/tests/StorageKeyTest.d.ts +6 -0
- package/dist/tests/StorageKeyTest.d.ts.map +1 -0
- package/dist/tests/ThemeStorageKeyTest.d.ts +6 -0
- package/dist/tests/ThemeStorageKeyTest.d.ts.map +1 -0
- package/dist/types/CacheProvider.d.ts +18 -0
- package/dist/types/CacheProvider.d.ts.map +1 -0
- package/dist/types/ContentProxy.d.ts +47 -0
- package/dist/types/ContentProxy.d.ts.map +1 -0
- package/dist/types/DataBinding.d.ts +7 -0
- package/dist/types/DataBinding.d.ts.map +1 -0
- package/dist/types/DataProvider.d.ts +7 -0
- package/dist/types/DataProvider.d.ts.map +1 -0
- package/dist/types/DataTypes.d.ts +185 -0
- package/dist/types/DataTypes.d.ts.map +1 -0
- package/dist/types/TemplateProvider.d.ts +10 -0
- package/dist/types/TemplateProvider.d.ts.map +1 -0
- package/dist/types/TemplateResolver.d.ts +23 -0
- package/dist/types/TemplateResolver.d.ts.map +1 -0
- package/dist/types/index.d.ts +81 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/breakpoints.d.ts +35 -0
- package/dist/utils/breakpoints.d.ts.map +1 -0
- package/dist/utils/customPaletteManager.d.ts +8 -0
- package/dist/utils/customPaletteManager.d.ts.map +1 -0
- package/dist/utils/dimensions.d.ts +34 -0
- package/dist/utils/dimensions.d.ts.map +1 -0
- package/dist/utils/htmlTransform.d.ts +44 -0
- package/dist/utils/htmlTransform.d.ts.map +1 -0
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/paletteUtils.d.ts +38 -0
- package/dist/utils/paletteUtils.d.ts.map +1 -0
- package/dist/utils/persistenceUtils.d.ts +31 -0
- package/dist/utils/persistenceUtils.d.ts.map +1 -0
- package/dist/utils/reactUtils.d.ts +24 -0
- package/dist/utils/reactUtils.d.ts.map +1 -0
- package/dist/utils/spacing.d.ts +34 -0
- package/dist/utils/spacing.d.ts.map +1 -0
- package/dist/utils/themePerformanceMonitor.d.ts +32 -0
- package/dist/utils/themePerformanceMonitor.d.ts.map +1 -0
- package/dist/utils/themeUtils.d.ts +27 -0
- package/dist/utils/themeUtils.d.ts.map +1 -0
- package/package.json +141 -0
- package/src/__tests__/components/Logo.test.js +172 -0
- package/src/__tests__/contexts/DataContext.test.js +505 -0
- package/src/__tests__/contexts/PaletteContext.test.js +115 -0
- package/src/__tests__/contexts/ThemeContext.test.js +123 -0
- package/src/__tests__/utils/paletteUtils.test.js +142 -0
- package/src/__tests__/utils/themeUtils.test.js +142 -0
- package/src/components/AccessibilityChecker.tsx +264 -0
- package/src/components/Html.tsx +191 -0
- package/src/components/Logo.css +217 -0
- package/src/components/Logo.tsx +370 -0
- package/src/components/Markdown.tsx +191 -0
- package/src/components/QwickApp.css +257 -0
- package/src/components/QwickApp.tsx +157 -0
- package/src/components/QwickAppsLogo.tsx +77 -0
- package/src/components/ResponsiveMenu.css +416 -0
- package/src/components/ResponsiveMenu.tsx +310 -0
- package/src/components/SafeSpan.tsx +128 -0
- package/src/components/Scaffold.css +541 -0
- package/src/components/Scaffold.tsx +463 -0
- package/src/components/__tests__/Article.test.tsx +419 -0
- package/src/components/__tests__/Button.test.tsx +702 -0
- package/src/components/__tests__/CardListGrid.test.tsx +478 -0
- package/src/components/__tests__/ChoiceInputField.test.tsx +864 -0
- package/src/components/__tests__/Code.test.tsx +595 -0
- package/src/components/__tests__/Content.integration.test.tsx +193 -0
- package/src/components/__tests__/Content.test.tsx +504 -0
- package/src/components/__tests__/CoverImageHeader.test.tsx +456 -0
- package/src/components/__tests__/FeatureCard.integration.test.tsx +384 -0
- package/src/components/__tests__/FeatureGrid.integration.test.tsx +364 -0
- package/src/components/__tests__/FeatureGrid.test.tsx +494 -0
- package/src/components/__tests__/Footer.test.tsx +544 -0
- package/src/components/__tests__/FormBlock.test.tsx +857 -0
- package/src/components/__tests__/HeroBlock.integration.test.tsx +272 -0
- package/src/components/__tests__/HeroBlock.test.tsx +463 -0
- package/src/components/__tests__/Html.test.tsx +174 -0
- package/src/components/__tests__/HtmlInputField.test.tsx +856 -0
- package/src/components/__tests__/Markdown.test.tsx +233 -0
- package/src/components/__tests__/PageBannerHeader.test.tsx +614 -0
- package/src/components/__tests__/PaletteSwitcher.test.tsx +864 -0
- package/src/components/__tests__/ProductCard.test.tsx +377 -0
- package/src/components/__tests__/SafeSpan.integration.test.tsx +123 -0
- package/src/components/__tests__/SafeSpan.simple.test.tsx +65 -0
- package/src/components/__tests__/SafeSpan.test.tsx +388 -0
- package/src/components/__tests__/Section.integration.test.tsx +288 -0
- package/src/components/__tests__/Section.test.tsx +494 -0
- package/src/components/__tests__/SelectInputField.test.tsx +886 -0
- package/src/components/__tests__/TextInputField.test.tsx +749 -0
- package/src/components/__tests__/ThemeSwitcher.test.tsx +777 -0
- package/src/components/blocks/Article.tsx +194 -0
- package/src/components/blocks/CardListGrid.tsx +132 -0
- package/src/components/blocks/Code.tsx +313 -0
- package/src/components/blocks/Content.tsx +265 -0
- package/src/components/blocks/CoverImageHeader.css +17 -0
- package/src/components/blocks/CoverImageHeader.tsx +435 -0
- package/src/components/blocks/FeatureCard.tsx +321 -0
- package/src/components/blocks/FeatureGrid.tsx +147 -0
- package/src/components/blocks/Footer.tsx +343 -0
- package/src/components/blocks/HeroBlock.tsx +280 -0
- package/src/components/blocks/PageBannerHeader.tsx +471 -0
- package/src/components/blocks/ProductCard.tsx +472 -0
- package/src/components/blocks/Section.tsx +209 -0
- package/src/components/blocks/index.ts +37 -0
- package/src/components/buttons/Button.tsx +233 -0
- package/src/components/buttons/PaletteSwitcher.tsx +268 -0
- package/src/components/buttons/ThemeSwitcher.tsx +283 -0
- package/src/components/buttons/index.ts +11 -0
- package/src/components/forms/FormBlock.tsx +291 -0
- package/src/components/forms/index.ts +7 -0
- package/src/components/index.ts +37 -0
- package/src/components/input/ChoiceInputField.tsx +188 -0
- package/src/components/input/HtmlInputField.tsx +326 -0
- package/src/components/input/SelectInputField.tsx +197 -0
- package/src/components/input/TextField.tsx +47 -0
- package/src/components/input/TextInputField.tsx +144 -0
- package/src/components/input/index.ts +17 -0
- package/src/components/layout/GridCell.tsx +46 -0
- package/src/components/layout/GridCellWrapper.tsx +87 -0
- package/src/components/layout/GridLayout.tsx +169 -0
- package/src/components/layout/index.ts +13 -0
- package/src/components/menu/Menu.tsx +0 -0
- package/src/components/menu/MenuItem.tsx +32 -0
- package/src/components/menu/index.ts +6 -0
- package/src/components/pages/FormPage.tsx +108 -0
- package/src/components/pages/Page.css +460 -0
- package/src/components/pages/Page.tsx +345 -0
- package/src/components/pages/index.ts +11 -0
- package/src/contexts/DataContext.tsx +355 -0
- package/src/contexts/DimensionsContext.tsx +154 -0
- package/src/contexts/PaletteContext.tsx +217 -0
- package/src/contexts/QwickAppContext.tsx +95 -0
- package/src/contexts/ThemeContext.tsx +376 -0
- package/src/contexts/index.ts +9 -0
- package/src/hooks/__tests__/useDataBinding.test.tsx.disabled +229 -0
- package/src/hooks/index.ts +11 -0
- package/src/hooks/useBaseProps.ts +267 -0
- package/src/hooks/useDataBinding.ts +77 -0
- package/src/index.ts +23 -0
- package/src/palettes/PaletteAutumn.css +172 -0
- package/src/palettes/PaletteAutumn.ts +16 -0
- package/src/palettes/PaletteCosmic.css +172 -0
- package/src/palettes/PaletteCosmic.ts +16 -0
- package/src/palettes/PaletteDefault.css +178 -0
- package/src/palettes/PaletteDefault.ts +17 -0
- package/src/palettes/PaletteOcean.css +172 -0
- package/src/palettes/PaletteOcean.ts +16 -0
- package/src/palettes/PaletteSpring.css +160 -0
- package/src/palettes/PaletteSpring.ts +16 -0
- package/src/palettes/PaletteWinter.css +172 -0
- package/src/palettes/PaletteWinter.ts +16 -0
- package/src/palettes/index.css +12 -0
- package/src/palettes/index.ts +29 -0
- package/src/schemas/ActionSchema.ts +140 -0
- package/src/schemas/ArticleSchema.ts +35 -0
- package/src/schemas/ButtonSchema.ts +99 -0
- package/src/schemas/CardListGridSchema.ts +102 -0
- package/src/schemas/ChoiceInputFieldSchema.ts +89 -0
- package/src/schemas/CodeSchema.ts +88 -0
- package/src/schemas/ContentSchema.ts +128 -0
- package/src/schemas/CoverImageHeaderSchema.ts +208 -0
- package/src/schemas/FeatureCardSchema.ts +161 -0
- package/src/schemas/FeatureGridSchema.ts +87 -0
- package/src/schemas/FeatureItemSchema.ts +68 -0
- package/src/schemas/FooterItemSchema.ts +57 -0
- package/src/schemas/FooterSchema.ts +116 -0
- package/src/schemas/FooterSectionSchema.ts +50 -0
- package/src/schemas/FormBlockSchema.ts +102 -0
- package/src/schemas/HeaderActionSchema.ts +83 -0
- package/src/schemas/HeroBlockSchema.ts +149 -0
- package/src/schemas/HtmlInputFieldSchema.ts +88 -0
- package/src/schemas/MetadataItemSchema.ts +35 -0
- package/src/schemas/PageBannerHeaderSchema.ts +206 -0
- package/src/schemas/PaletteSwitcherSchema.ts +66 -0
- package/src/schemas/ProductCardSchema.ts +264 -0
- package/src/schemas/SafeSpanSchema.ts +36 -0
- package/src/schemas/SectionSchema.ts +106 -0
- package/src/schemas/SelectInputFieldSchema.ts +137 -0
- package/src/schemas/TextInputFieldSchema.ts +129 -0
- package/src/schemas/ThemeSwitcherSchema.ts +97 -0
- package/src/schemas/__tests__/builders.test.ts +313 -0
- package/src/schemas/index.ts +34 -0
- package/src/setupTests.js +60 -0
- package/src/stories/Article.stories.tsx +549 -0
- package/src/stories/Button.stories.tsx +498 -0
- package/src/stories/CardListGrid.stories.tsx +539 -0
- package/src/stories/ChoiceInputField.stories.tsx +591 -0
- package/src/stories/Code.stories.tsx +711 -0
- package/src/stories/Content.stories.tsx +463 -0
- package/src/stories/CoverImageHeader.stories.tsx +794 -0
- package/src/stories/DataBinding.advanced.stories.tsx +548 -0
- package/src/stories/DataBinding.stories.tsx +452 -0
- package/src/stories/DataProvider.stories.tsx +1361 -0
- package/src/stories/FeatureCard.stories.tsx +642 -0
- package/src/stories/FeatureGrid.stories.tsx +669 -0
- package/src/stories/Footer.stories.tsx +724 -0
- package/src/stories/FormBlock.stories.tsx +834 -0
- package/src/stories/HeroBlock.stories.tsx +442 -0
- package/src/stories/Html.stories.tsx +264 -0
- package/src/stories/HtmlInputField.stories.tsx +558 -0
- package/src/stories/Introduction.stories.tsx +721 -0
- package/src/stories/LayoutBlocks.stories.tsx +382 -0
- package/src/stories/LayoutSystem.stories.tsx +253 -0
- package/src/stories/Logo.stories.tsx +400 -0
- package/src/stories/Markdown.stories.tsx +349 -0
- package/src/stories/Page.stories.tsx +762 -0
- package/src/stories/PageBannerHeader.stories.tsx +949 -0
- package/src/stories/PaletteSwitcher.stories.tsx +156 -0
- package/src/stories/ProductCard.stories.tsx +504 -0
- package/src/stories/QwickApp.stories.tsx +461 -0
- package/src/stories/ResponsiveMenu.stories.tsx +299 -0
- package/src/stories/SafeSpan.stories.tsx +612 -0
- package/src/stories/Section.stories.tsx +613 -0
- package/src/stories/SelectInputField.stories.tsx +605 -0
- package/src/stories/TextInputField.stories.tsx +526 -0
- package/src/stories/ThemeSwitcher.stories.tsx +170 -0
- package/src/stories/form/FormComponents.stories.tsx +588 -0
- package/src/templates/TemplateResolver.ts +156 -0
- package/src/templates/index.ts +6 -0
- package/src/tests/ConsoleWarningTest.tsx +30 -0
- package/src/tests/StorageKeyTest.tsx +110 -0
- package/src/tests/ThemeStorageKeyTest.tsx +114 -0
- package/src/types/CacheProvider.ts +14 -0
- package/src/types/ContentProxy.ts +99 -0
- package/src/types/DataTypes.ts +196 -0
- package/src/types/TemplateProvider.ts +9 -0
- package/src/types/TemplateResolver.ts +26 -0
- package/src/types/index.ts +99 -0
- package/src/utils/__tests__/createDataDrivenComponent.test.tsx.disabled +193 -0
- package/src/utils/__tests__/htmlTransform.test.tsx +255 -0
- package/src/utils/breakpoints.ts +87 -0
- package/src/utils/customPaletteManager.js +214 -0
- package/src/utils/dimensions.ts +147 -0
- package/src/utils/htmlTransform.tsx +323 -0
- package/src/utils/index.ts +16 -0
- package/src/utils/logger.ts +28 -0
- package/src/utils/paletteUtils.ts +78 -0
- package/src/utils/persistenceUtils.ts +107 -0
- package/src/utils/reactUtils.tsx +37 -0
- package/src/utils/spacing.ts +155 -0
- package/src/utils/themePerformanceMonitor.js +113 -0
- package/src/utils/themeUtils.ts +67 -0
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logo Component Stories
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
8
|
+
import Logo from '../components/Logo';
|
|
9
|
+
|
|
10
|
+
const meta = {
|
|
11
|
+
title: 'Components/Logo',
|
|
12
|
+
component: Logo,
|
|
13
|
+
parameters: {
|
|
14
|
+
layout: 'centered',
|
|
15
|
+
docs: {
|
|
16
|
+
description: {
|
|
17
|
+
component: `Logo component provides flexible brand identity display with dynamic theming and customization options.
|
|
18
|
+
|
|
19
|
+
**Key Features:**
|
|
20
|
+
- **Theme Integration**: Automatically adapts colors based on current theme and variant
|
|
21
|
+
- **Multiple Sizes**: Five size variants from tiny to extra-large with consistent scaling
|
|
22
|
+
- **Badge System**: Optional badges with customizable shapes, positions, and offsets
|
|
23
|
+
- **Text Formatting**: Supports line breaks (\\n) and explicit spaces (\\s) for multi-line logos
|
|
24
|
+
- **Variant Support**: Multiple visual variants including high-contrast and monochrome options
|
|
25
|
+
- **Animation Ready**: Built-in support for CSS animations and transitions
|
|
26
|
+
- **Responsive Design**: Scales appropriately across different screen sizes
|
|
27
|
+
|
|
28
|
+
**Perfect for:**
|
|
29
|
+
- Application headers and navigation bars
|
|
30
|
+
- Brand identity in sidebars and footers
|
|
31
|
+
- Loading screens and splash pages
|
|
32
|
+
- Social media profile displays
|
|
33
|
+
- Business card and contact layouts
|
|
34
|
+
- Multi-brand applications requiring flexible branding`,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
tags: ['autodocs'],
|
|
39
|
+
argTypes: {
|
|
40
|
+
name: {
|
|
41
|
+
control: 'text',
|
|
42
|
+
description: 'Logo name/text to display. Supports up to TWO parts with \\n for line breaks and \\s for explicit spaces.',
|
|
43
|
+
},
|
|
44
|
+
variant: {
|
|
45
|
+
control: 'select',
|
|
46
|
+
options: ['default', 'high-contrast', 'monochrome', 'on-primary'],
|
|
47
|
+
description: 'Visual variant of the logo',
|
|
48
|
+
},
|
|
49
|
+
size: {
|
|
50
|
+
control: 'select',
|
|
51
|
+
options: ['tiny', 'small', 'medium', 'large', 'extra-large'],
|
|
52
|
+
description: 'Size variant of the logo (controls both text size and component height)',
|
|
53
|
+
},
|
|
54
|
+
badge: {
|
|
55
|
+
control: 'select',
|
|
56
|
+
options: ['none', 'top-left', 'top-center', 'top-right', 'center-left', 'center', 'center-right', 'bottom-left', 'bottom-center', 'bottom-right'],
|
|
57
|
+
description: 'Badge position and visibility',
|
|
58
|
+
},
|
|
59
|
+
badgeShape: {
|
|
60
|
+
control: 'select',
|
|
61
|
+
options: ['circle', 'star', 'square', 'heart'],
|
|
62
|
+
description: 'Shape of the badge',
|
|
63
|
+
},
|
|
64
|
+
badgeOffset: {
|
|
65
|
+
control: 'object',
|
|
66
|
+
description: 'Offset from the calculated badge position. Automatically scales with logo size. Use this with any semantic position for precise control.',
|
|
67
|
+
},
|
|
68
|
+
fontFamily: {
|
|
69
|
+
control: 'text',
|
|
70
|
+
description: 'Font family for the logo text',
|
|
71
|
+
},
|
|
72
|
+
fontWeight: {
|
|
73
|
+
control: 'text',
|
|
74
|
+
description: 'Font weight for the logo text',
|
|
75
|
+
},
|
|
76
|
+
firstPartClass: {
|
|
77
|
+
control: 'text',
|
|
78
|
+
description: 'CSS class name for the first part of the logo text',
|
|
79
|
+
},
|
|
80
|
+
secondPartClass: {
|
|
81
|
+
control: 'text',
|
|
82
|
+
description: 'CSS class name for the second part of the logo text',
|
|
83
|
+
},
|
|
84
|
+
onClick: {
|
|
85
|
+
description: 'Click handler for the logo',
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
} satisfies Meta<typeof Logo>;
|
|
89
|
+
|
|
90
|
+
export default meta;
|
|
91
|
+
type Story = StoryObj<typeof meta>;
|
|
92
|
+
|
|
93
|
+
// Default story
|
|
94
|
+
export const Default: Story = {
|
|
95
|
+
args: {
|
|
96
|
+
name: 'Qwick Apps',
|
|
97
|
+
variant: 'default',
|
|
98
|
+
size: 'medium',
|
|
99
|
+
badge: 'top-right',
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// Size Comparisons
|
|
104
|
+
export const SizeComparison: Story = {
|
|
105
|
+
render: () => (
|
|
106
|
+
<div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
|
|
107
|
+
<div style={{ textAlign: 'center' }}>
|
|
108
|
+
<Logo name="Tiny Logo" size="tiny" />
|
|
109
|
+
<p>Tiny (16px font, 32px height)</p>
|
|
110
|
+
</div>
|
|
111
|
+
<div style={{ textAlign: 'center' }}>
|
|
112
|
+
<Logo name="Small Logo" size="small" />
|
|
113
|
+
<p>Small (20px font, 40px height)</p>
|
|
114
|
+
</div>
|
|
115
|
+
<div style={{ textAlign: 'center' }}>
|
|
116
|
+
<Logo name="Medium Logo" size="medium" />
|
|
117
|
+
<p>Medium (28px font, 50px height)</p>
|
|
118
|
+
</div>
|
|
119
|
+
<div style={{ textAlign: 'center' }}>
|
|
120
|
+
<Logo name="Large Logo" size="large" />
|
|
121
|
+
<p>Large (36px font, 64px height)</p>
|
|
122
|
+
</div>
|
|
123
|
+
<div style={{ textAlign: 'center' }}>
|
|
124
|
+
<Logo name="X-Large Logo" size="extra-large" />
|
|
125
|
+
<p>Extra Large (48px font, 84px height)</p>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
),
|
|
129
|
+
parameters: {
|
|
130
|
+
docs: {
|
|
131
|
+
description: {
|
|
132
|
+
story: 'Comparison of all five Material UI-style logo sizes. Text, badges, and overall component height scale proportionally.',
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
// Color Variant Comparisons
|
|
139
|
+
export const ColorVariantComparison: Story = {
|
|
140
|
+
render: () => (
|
|
141
|
+
<div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
|
|
142
|
+
<div style={{ textAlign: 'center' }}>
|
|
143
|
+
<Logo variant="default" />
|
|
144
|
+
<p>Default</p>
|
|
145
|
+
</div>
|
|
146
|
+
<div style={{ textAlign: 'center' }}>
|
|
147
|
+
<Logo variant="high-contrast" />
|
|
148
|
+
<p>High Contrast</p>
|
|
149
|
+
</div>
|
|
150
|
+
<div style={{ textAlign: 'center' }}>
|
|
151
|
+
<Logo variant="monochrome" />
|
|
152
|
+
<p>Monochrome</p>
|
|
153
|
+
</div>
|
|
154
|
+
<div style={{ textAlign: 'center', background: 'var(--palette-primary-main, #3b82f6)', padding: '20px', borderRadius: '8px' }}>
|
|
155
|
+
<Logo variant="on-primary" />
|
|
156
|
+
<p style={{ color: 'white', margin: '10px 0 0 0' }}>On Primary</p>
|
|
157
|
+
</div>
|
|
158
|
+
</div>
|
|
159
|
+
),
|
|
160
|
+
parameters: {
|
|
161
|
+
docs: {
|
|
162
|
+
description: {
|
|
163
|
+
story: 'Comparison of different color variants for various use cases and backgrounds.',
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
// Badge Shape Comparisons
|
|
170
|
+
export const BadgeShapeComparison: Story = {
|
|
171
|
+
render: () => (
|
|
172
|
+
<div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
|
|
173
|
+
<div style={{ textAlign: 'center' }}>
|
|
174
|
+
<Logo name="Circle Badge" badgeShape="circle" />
|
|
175
|
+
<p>Circle</p>
|
|
176
|
+
</div>
|
|
177
|
+
<div style={{ textAlign: 'center' }}>
|
|
178
|
+
<Logo name="Star Badge" badgeShape="star" />
|
|
179
|
+
<p>Star</p>
|
|
180
|
+
</div>
|
|
181
|
+
<div style={{ textAlign: 'center' }}>
|
|
182
|
+
<Logo name="Square Badge" badgeShape="square" />
|
|
183
|
+
<p>Square</p>
|
|
184
|
+
</div>
|
|
185
|
+
<div style={{ textAlign: 'center' }}>
|
|
186
|
+
<Logo name="Heart Badge" badgeShape="heart" />
|
|
187
|
+
<p>Heart</p>
|
|
188
|
+
</div>
|
|
189
|
+
<div style={{ textAlign: 'center' }}>
|
|
190
|
+
<Logo name="No Badge" badge="none" />
|
|
191
|
+
<p>None</p>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
),
|
|
195
|
+
parameters: {
|
|
196
|
+
docs: {
|
|
197
|
+
description: {
|
|
198
|
+
story: 'Comparison of different badge shapes and the option to hide the badge completely.',
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
// Badge Positioning
|
|
205
|
+
export const BadgePositioning: Story = {
|
|
206
|
+
render: () => (
|
|
207
|
+
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '20px', alignItems: 'center', maxWidth: '600px' }}>
|
|
208
|
+
<div style={{ textAlign: 'center' }}>
|
|
209
|
+
<Logo name="TL" size="large" badge="top-left" />
|
|
210
|
+
<p>Top Left</p>
|
|
211
|
+
</div>
|
|
212
|
+
<div style={{ textAlign: 'center' }}>
|
|
213
|
+
<Logo name="TC" size="large" badge="top-center" />
|
|
214
|
+
<p>Top Center</p>
|
|
215
|
+
</div>
|
|
216
|
+
<div style={{ textAlign: 'center' }}>
|
|
217
|
+
<Logo name="TR" size="large" badge="top-right" />
|
|
218
|
+
<p>Top Right</p>
|
|
219
|
+
</div>
|
|
220
|
+
<div style={{ textAlign: 'center' }}>
|
|
221
|
+
<Logo name="CL" size="large" badge="center-left" />
|
|
222
|
+
<p>Center Left</p>
|
|
223
|
+
</div>
|
|
224
|
+
<div style={{ textAlign: 'center' }}>
|
|
225
|
+
<Logo name="C" size="large" badge="center" />
|
|
226
|
+
<p>Center</p>
|
|
227
|
+
</div>
|
|
228
|
+
<div style={{ textAlign: 'center' }}>
|
|
229
|
+
<Logo name="CR" size="large" badge="center-right" />
|
|
230
|
+
<p>Center Right</p>
|
|
231
|
+
</div>
|
|
232
|
+
<div style={{ textAlign: 'center' }}>
|
|
233
|
+
<Logo name="BL" size="large" badge="bottom-left" />
|
|
234
|
+
<p>Bottom Left</p>
|
|
235
|
+
</div>
|
|
236
|
+
<div style={{ textAlign: 'center' }}>
|
|
237
|
+
<Logo name="BC" size="large" badge="bottom-center" />
|
|
238
|
+
<p>Bottom Center</p>
|
|
239
|
+
</div>
|
|
240
|
+
<div style={{ textAlign: 'center' }}>
|
|
241
|
+
<Logo name="BR" size="large" badge="bottom-right" />
|
|
242
|
+
<p>Bottom Right</p>
|
|
243
|
+
</div>
|
|
244
|
+
</div>
|
|
245
|
+
),
|
|
246
|
+
parameters: {
|
|
247
|
+
docs: {
|
|
248
|
+
description: {
|
|
249
|
+
story: 'Demonstrates all semantic positioning options for the badge. Notice how the badge positions adapt to the text size and position.',
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
// Font and Styling Customization
|
|
256
|
+
export const FontStylingComparison: Story = {
|
|
257
|
+
render: () => (
|
|
258
|
+
<div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
|
|
259
|
+
<div style={{ textAlign: 'center' }}>
|
|
260
|
+
<Logo name="Default Font" size="large" />
|
|
261
|
+
<p>Default (Segoe UI, Bold)</p>
|
|
262
|
+
</div>
|
|
263
|
+
<div style={{ textAlign: 'center' }}>
|
|
264
|
+
<Logo name="Light Weight" fontWeight="300" size="large" />
|
|
265
|
+
<p>Light Weight</p>
|
|
266
|
+
</div>
|
|
267
|
+
<div style={{ textAlign: 'center' }}>
|
|
268
|
+
<Logo name="Serif Font" fontFamily="Georgia, serif" fontWeight="normal" size="large" />
|
|
269
|
+
<p>Serif Font</p>
|
|
270
|
+
</div>
|
|
271
|
+
<div style={{ textAlign: 'center' }}>
|
|
272
|
+
<Logo
|
|
273
|
+
name="Custom Colors"
|
|
274
|
+
firstPartClass="custom-first-part"
|
|
275
|
+
secondPartClass="custom-second-part"
|
|
276
|
+
size="large"
|
|
277
|
+
/>
|
|
278
|
+
<p>Custom CSS Classes</p>
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
),
|
|
282
|
+
parameters: {
|
|
283
|
+
docs: {
|
|
284
|
+
description: {
|
|
285
|
+
story: 'Comparison of different font and styling options including weight, family, and custom CSS classes.',
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
// Advanced Badge Positioning
|
|
292
|
+
export const AdvancedBadgePositioning: Story = {
|
|
293
|
+
render: () => (
|
|
294
|
+
<div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
|
|
295
|
+
<div style={{ textAlign: 'center' }}>
|
|
296
|
+
<Logo name="Qwick Apps" size="large" />
|
|
297
|
+
<p>Default Position</p>
|
|
298
|
+
</div>
|
|
299
|
+
<div style={{ textAlign: 'center' }}>
|
|
300
|
+
<Logo name="Qwick Apps" size="large" badge="center" badgeOffset={{ x: -29, y: -12 }} />
|
|
301
|
+
<p>Center + (-29, -12)</p>
|
|
302
|
+
</div>
|
|
303
|
+
</div>
|
|
304
|
+
),
|
|
305
|
+
parameters: {
|
|
306
|
+
docs: {
|
|
307
|
+
description: {
|
|
308
|
+
story: 'Advanced badge positioning using semantic positions combined with offset adjustments. Offsets automatically scale with logo size for consistent relative positioning.',
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
},
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
// Interactive Example
|
|
315
|
+
export const Interactive: Story = {
|
|
316
|
+
args: {
|
|
317
|
+
name: 'Qwick Apps',
|
|
318
|
+
variant: 'default',
|
|
319
|
+
size: 'large',
|
|
320
|
+
badge: 'top-right',
|
|
321
|
+
badgeShape: 'circle',
|
|
322
|
+
},
|
|
323
|
+
parameters: {
|
|
324
|
+
docs: {
|
|
325
|
+
description: {
|
|
326
|
+
story: 'Interactive example - use the controls below to customize the logo in real-time.',
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
// Text Formatting Examples
|
|
333
|
+
export const TextFormatting: Story = {
|
|
334
|
+
render: () => (
|
|
335
|
+
<div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
|
|
336
|
+
<div style={{ textAlign: 'center' }}>
|
|
337
|
+
<Logo name="QwickApps" size="medium" />
|
|
338
|
+
<p>Single word (one color)</p>
|
|
339
|
+
</div>
|
|
340
|
+
<div style={{ textAlign: 'center' }}>
|
|
341
|
+
<Logo name="Qwick Apps" size="medium" />
|
|
342
|
+
<p>Two words (two colors, no space)</p>
|
|
343
|
+
</div>
|
|
344
|
+
<div style={{ textAlign: 'center' }}>
|
|
345
|
+
<Logo name="Qwick\sApps" size="medium" />
|
|
346
|
+
<p>Explicit space (\\s)</p>
|
|
347
|
+
</div>
|
|
348
|
+
<div style={{ textAlign: 'center' }}>
|
|
349
|
+
<Logo name="Qwick\nApps" size="medium" />
|
|
350
|
+
<p>Line break (\\n)</p>
|
|
351
|
+
</div>
|
|
352
|
+
<div style={{ textAlign: 'center' }}>
|
|
353
|
+
<Logo name="My\sCompany\nInc" size="medium" />
|
|
354
|
+
<p>Combined formatting</p>
|
|
355
|
+
</div>
|
|
356
|
+
<div style={{ textAlign: 'center' }}>
|
|
357
|
+
<Logo name="Part1\nPart2\nPart3" size="medium" />
|
|
358
|
+
<p>Multiple \\n (only 2 parts max)</p>
|
|
359
|
+
</div>
|
|
360
|
+
</div>
|
|
361
|
+
),
|
|
362
|
+
parameters: {
|
|
363
|
+
docs: {
|
|
364
|
+
description: {
|
|
365
|
+
story: 'Text formatting examples showing single words, two-color text, explicit spaces (\\s), line breaks (\\n), and combined formatting. Note: Multiple \\n sequences only create TWO parts maximum.',
|
|
366
|
+
},
|
|
367
|
+
},
|
|
368
|
+
},
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
// Badge Position Scaling Demo
|
|
372
|
+
export const BadgePositionScaling: Story = {
|
|
373
|
+
render: () => (
|
|
374
|
+
<div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
|
|
375
|
+
<div style={{ textAlign: 'center' }}>
|
|
376
|
+
<Logo size="tiny" badge="center" badgeOffset={{ x: -29, y: -11 }} />
|
|
377
|
+
<p>Tiny + Center + Offset</p>
|
|
378
|
+
</div>
|
|
379
|
+
<div style={{ textAlign: 'center' }}>
|
|
380
|
+
<Logo size="small" badge="center" badgeOffset={{ x: -29, y: -11 }} />
|
|
381
|
+
<p>Small + same + Offset</p>
|
|
382
|
+
</div>
|
|
383
|
+
<div style={{ textAlign: 'center' }}>
|
|
384
|
+
<Logo size="medium" badge="center" badgeOffset={{ x: -29, y: -11 }} />
|
|
385
|
+
<p>Medium + Same Offset</p>
|
|
386
|
+
</div>
|
|
387
|
+
<div style={{ textAlign: 'center' }}>
|
|
388
|
+
<Logo size="large" badge="center" badgeOffset={{ x: -29, y: -11 }} />
|
|
389
|
+
<p>Large + Same Offset</p>
|
|
390
|
+
</div>
|
|
391
|
+
</div>
|
|
392
|
+
),
|
|
393
|
+
parameters: {
|
|
394
|
+
docs: {
|
|
395
|
+
description: {
|
|
396
|
+
story: 'Demonstrates how badge offsets automatically scale with logo size. The same semantic position + offset values maintain consistent relative positioning across different sizes.',
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
},
|
|
400
|
+
};
|