@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,382 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import {
|
|
3
|
+
HeroBlock,
|
|
4
|
+
Content,
|
|
5
|
+
FeatureGrid,
|
|
6
|
+
Section
|
|
7
|
+
} from '../components/blocks';
|
|
8
|
+
import {
|
|
9
|
+
GridLayout,
|
|
10
|
+
GridCell
|
|
11
|
+
} from '../components/layout';
|
|
12
|
+
import { QwickApp } from '../components/QwickApp';
|
|
13
|
+
import { Button } from '../components/buttons/Button';
|
|
14
|
+
|
|
15
|
+
const meta: Meta = {
|
|
16
|
+
title: 'Layout/LayoutBlocks',
|
|
17
|
+
decorators: [
|
|
18
|
+
(Story) => (
|
|
19
|
+
<QwickApp appName="Layout Demo">
|
|
20
|
+
<Story />
|
|
21
|
+
</QwickApp>
|
|
22
|
+
),
|
|
23
|
+
],
|
|
24
|
+
parameters: {
|
|
25
|
+
layout: 'fullscreen',
|
|
26
|
+
docs: {
|
|
27
|
+
description: {
|
|
28
|
+
component: `Comprehensive collection of layout components for building responsive, professional content layouts with minimal effort.
|
|
29
|
+
|
|
30
|
+
**Key Features:**
|
|
31
|
+
- **HeroBlock**: Full-width hero sections with background images, gradients, and call-to-action buttons
|
|
32
|
+
- **GridLayout**: Responsive multi-column layouts (1-5 columns) with automatic mobile adaptation
|
|
33
|
+
- **GridCell**: Flexible column component with background colors, spacing, and elevation options
|
|
34
|
+
- **Content**: Structured content containers with titles, variants, and action buttons
|
|
35
|
+
- **FeatureGrid**: Grid layouts for showcasing features with icons, titles, and descriptions
|
|
36
|
+
- **Section**: Page-level containers with theming, spacing, and max-width controls
|
|
37
|
+
- **Responsive Design**: All components automatically adapt to mobile, tablet, and desktop
|
|
38
|
+
- **Theme Integration**: Full support for theme colors, spacing, and typography
|
|
39
|
+
|
|
40
|
+
**Perfect for:**
|
|
41
|
+
- Landing pages and marketing websites
|
|
42
|
+
- Product feature showcases and comparisons
|
|
43
|
+
- Documentation and help pages
|
|
44
|
+
- Dashboard layouts and admin panels
|
|
45
|
+
- Blog posts and article layouts
|
|
46
|
+
- Portfolio and showcase websites
|
|
47
|
+
- Any application requiring structured content presentation`,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export default meta;
|
|
54
|
+
|
|
55
|
+
// Hero Block Stories
|
|
56
|
+
export const HeroBlocks: StoryObj = {
|
|
57
|
+
render: () => (
|
|
58
|
+
<div>
|
|
59
|
+
<HeroBlock
|
|
60
|
+
title="Welcome to QwickApps React Framework"
|
|
61
|
+
subtitle="Build beautiful, responsive React applications with ease"
|
|
62
|
+
backgroundGradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
|
|
63
|
+
height="medium"
|
|
64
|
+
actions={[
|
|
65
|
+
{
|
|
66
|
+
label: 'Get Started',
|
|
67
|
+
variant: 'primary',
|
|
68
|
+
onClick: () => { alert('Get Started clicked'); }
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
label: 'Learn More',
|
|
72
|
+
variant: 'outlined',
|
|
73
|
+
onClick: () => { alert('Learn More clicked'); }
|
|
74
|
+
}
|
|
75
|
+
]}
|
|
76
|
+
/>
|
|
77
|
+
|
|
78
|
+
<Section spacing="spacious">
|
|
79
|
+
<HeroBlock
|
|
80
|
+
title="Small Hero with Image"
|
|
81
|
+
subtitle="This hero uses a background image with overlay"
|
|
82
|
+
backgroundImage="https://images.unsplash.com/photo-1558618666-fcd25c85cd64?ixlib=rb-4.0.3&auto=format&fit=crop&w=1200&q=80"
|
|
83
|
+
height="small"
|
|
84
|
+
overlayOpacity={0.7}
|
|
85
|
+
textAlign="left"
|
|
86
|
+
/>
|
|
87
|
+
</Section>
|
|
88
|
+
</div>
|
|
89
|
+
),
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
// GridCell Layout Stories
|
|
93
|
+
export const ColumnLayouts: StoryObj = {
|
|
94
|
+
render: () => (
|
|
95
|
+
<div>
|
|
96
|
+
<Section spacing="spacious">
|
|
97
|
+
<Content title="Two GridCell Layout" centered>
|
|
98
|
+
<GridLayout columns={2} spacing="large">
|
|
99
|
+
<GridCell background="background.paper">
|
|
100
|
+
<h3>Left GridCell</h3>
|
|
101
|
+
<p>This is the left column content with automatic responsive behavior.</p>
|
|
102
|
+
</GridCell>
|
|
103
|
+
<GridCell background="grey.100">
|
|
104
|
+
<h3>Right GridCell</h3>
|
|
105
|
+
<p>This is the right column content that will stack below on mobile.</p>
|
|
106
|
+
</GridCell>
|
|
107
|
+
</GridLayout>
|
|
108
|
+
</Content>
|
|
109
|
+
</Section>
|
|
110
|
+
|
|
111
|
+
<Section background="grey.50">
|
|
112
|
+
<Content title="Three GridCell Layout" centered>
|
|
113
|
+
<GridLayout columns={3} spacing="medium" equalHeight>
|
|
114
|
+
<GridCell background="background.paper">
|
|
115
|
+
<h4>Feature One</h4>
|
|
116
|
+
<p>Equal height columns ensure consistent layout.</p>
|
|
117
|
+
</GridCell>
|
|
118
|
+
<GridCell background="background.paper">
|
|
119
|
+
<h4>Feature Two</h4>
|
|
120
|
+
<p>This column has more content to demonstrate the equal height functionality working properly.</p>
|
|
121
|
+
</GridCell>
|
|
122
|
+
<GridCell background="background.paper">
|
|
123
|
+
<h4>Feature Three</h4>
|
|
124
|
+
<p>Short content.</p>
|
|
125
|
+
</GridCell>
|
|
126
|
+
</GridLayout>
|
|
127
|
+
</Content>
|
|
128
|
+
</Section>
|
|
129
|
+
|
|
130
|
+
<Section spacing="spacious">
|
|
131
|
+
<Content title="Four & Five GridCell Layouts" centered>
|
|
132
|
+
<GridLayout columns={4} spacing="small" sx={{ mb: 3 }}>
|
|
133
|
+
{[1, 2, 3, 4].map((i) => (
|
|
134
|
+
<GridCell key={i} background="primary.main" sx={{ textAlign: 'center' }}>
|
|
135
|
+
<strong>Col {i}</strong>
|
|
136
|
+
</GridCell>
|
|
137
|
+
))}
|
|
138
|
+
</GridLayout>
|
|
139
|
+
|
|
140
|
+
<GridLayout columns={5} spacing="small">
|
|
141
|
+
{[1, 2, 3, 4, 5].map((i) => (
|
|
142
|
+
<GridCell key={i} background="grey.200" sx={{ textAlign: 'center' }}>
|
|
143
|
+
<strong>{i}</strong>
|
|
144
|
+
</GridCell>
|
|
145
|
+
))}
|
|
146
|
+
</GridLayout>
|
|
147
|
+
</Content>
|
|
148
|
+
</Section>
|
|
149
|
+
</div>
|
|
150
|
+
),
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// Content Block Stories
|
|
154
|
+
export const Contents: StoryObj = {
|
|
155
|
+
render: () => (
|
|
156
|
+
<div>
|
|
157
|
+
<Section spacing="spacious">
|
|
158
|
+
<Content
|
|
159
|
+
title="Default Content Block"
|
|
160
|
+
centered
|
|
161
|
+
maxWidth="md"
|
|
162
|
+
>
|
|
163
|
+
<p>This is a default content block with automatic responsive behavior and theme-aware styling.</p>
|
|
164
|
+
</Content>
|
|
165
|
+
</Section>
|
|
166
|
+
|
|
167
|
+
<Section background="default">
|
|
168
|
+
<Content
|
|
169
|
+
title="Elevated Content Block"
|
|
170
|
+
variant="elevated"
|
|
171
|
+
spacing="spacious"
|
|
172
|
+
centered
|
|
173
|
+
maxWidth="md"
|
|
174
|
+
>
|
|
175
|
+
<p>This elevated content block has a subtle shadow and stands out from the background.</p>
|
|
176
|
+
</Content>
|
|
177
|
+
</Section>
|
|
178
|
+
|
|
179
|
+
<Section spacing="spacious">
|
|
180
|
+
<GridLayout columns={2} spacing="large">
|
|
181
|
+
<GridCell>
|
|
182
|
+
<Content
|
|
183
|
+
title="Outlined Block"
|
|
184
|
+
variant="outlined"
|
|
185
|
+
spacing="spacious"
|
|
186
|
+
>
|
|
187
|
+
<p>This content block has a border instead of a shadow.</p>
|
|
188
|
+
</Content>
|
|
189
|
+
</GridCell>
|
|
190
|
+
<GridCell>
|
|
191
|
+
<Content
|
|
192
|
+
title="Filled Block"
|
|
193
|
+
variant="filled"
|
|
194
|
+
spacing="spacious"
|
|
195
|
+
>
|
|
196
|
+
<p>This content block has a filled background color.</p>
|
|
197
|
+
</Content>
|
|
198
|
+
</GridCell>
|
|
199
|
+
</GridLayout>
|
|
200
|
+
</Section>
|
|
201
|
+
</div>
|
|
202
|
+
),
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
// Feature Grid Stories
|
|
206
|
+
export const FeatureGrids: StoryObj = {
|
|
207
|
+
render: () => (
|
|
208
|
+
<div>
|
|
209
|
+
<Section spacing="spacious">
|
|
210
|
+
<Content title="Feature Grid" centered maxWidth="lg">
|
|
211
|
+
<FeatureGrid
|
|
212
|
+
columns={3}
|
|
213
|
+
gap="large"
|
|
214
|
+
features={[
|
|
215
|
+
{
|
|
216
|
+
id: 'responsive',
|
|
217
|
+
icon: <span style={{ fontSize: '2rem' }}>📱</span>,
|
|
218
|
+
title: 'Responsive Design',
|
|
219
|
+
description: 'All components automatically adapt to different screen sizes for optimal user experience.',
|
|
220
|
+
action: <Button label="Learn More" buttonSize="small" onClick={() => { alert('Learn More clicked'); }} />
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
id: 'themes',
|
|
224
|
+
icon: <span style={{ fontSize: '2rem' }}>🎨</span>,
|
|
225
|
+
title: 'Theme Support',
|
|
226
|
+
description: 'Built-in light/dark theme support with customizable color palettes.',
|
|
227
|
+
action: <Button label="Explore" buttonSize="small" onClick={() => { alert('Explore clicked'); }} />
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
id: 'accessible',
|
|
231
|
+
icon: <span style={{ fontSize: '2rem' }}>♿</span>,
|
|
232
|
+
title: 'Accessibility First',
|
|
233
|
+
description: 'All components follow WCAG guidelines and include proper ARIA labels.',
|
|
234
|
+
action: <Button label="Details" buttonSize="small" onClick={() => { alert('Details clicked'); }} />
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
id: 'typescript',
|
|
238
|
+
icon: <span style={{ fontSize: '2rem' }}>🔷</span>,
|
|
239
|
+
title: 'TypeScript Ready',
|
|
240
|
+
description: 'Full TypeScript support with comprehensive type definitions.',
|
|
241
|
+
action: <Button label="Documentation" buttonSize="small" onClick={() => { alert('Documentation clicked'); }} />
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
id: 'performance',
|
|
245
|
+
icon: <span style={{ fontSize: '2rem' }}>⚡</span>,
|
|
246
|
+
title: 'High Performance',
|
|
247
|
+
description: 'Optimized for speed with minimal bundle size and efficient rendering.',
|
|
248
|
+
action: <Button label="Benchmarks" buttonSize="small" onClick={() => { alert('Benchmarks clicked'); }} />
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
id: 'customizable',
|
|
252
|
+
icon: <span style={{ fontSize: '2rem' }}>🛠️</span>,
|
|
253
|
+
title: 'Highly Customizable',
|
|
254
|
+
description: 'Easy to customize and extend with your own design system.',
|
|
255
|
+
action: <Button label="Customize" buttonSize="small" onClick={() => { alert('Customize clicked'); }} />
|
|
256
|
+
},
|
|
257
|
+
]}
|
|
258
|
+
/>
|
|
259
|
+
</Content>
|
|
260
|
+
</Section>
|
|
261
|
+
</div>
|
|
262
|
+
),
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
// Complete Layout Example
|
|
266
|
+
export const CompleteLayout: StoryObj = {
|
|
267
|
+
render: () => (
|
|
268
|
+
<div>
|
|
269
|
+
{/* Hero Section */}
|
|
270
|
+
<HeroBlock
|
|
271
|
+
title="QwickApps React Framework"
|
|
272
|
+
subtitle="The complete React framework for building modern applications"
|
|
273
|
+
backgroundGradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
|
|
274
|
+
height="large"
|
|
275
|
+
actions={[
|
|
276
|
+
{
|
|
277
|
+
label: 'Get Started',
|
|
278
|
+
variant: 'primary',
|
|
279
|
+
size: 'large',
|
|
280
|
+
onClick: () => { alert('Get Started clicked'); }
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
label: 'View Demo',
|
|
284
|
+
variant: 'outlined',
|
|
285
|
+
size: 'large',
|
|
286
|
+
onClick: () => { alert('View Demo clicked'); }
|
|
287
|
+
}
|
|
288
|
+
]}
|
|
289
|
+
/>
|
|
290
|
+
|
|
291
|
+
{/* Features Section */}
|
|
292
|
+
<Section background="alternate">
|
|
293
|
+
<Content title="Why Choose QwickApps?" centered maxWidth="lg">
|
|
294
|
+
<p style={{ fontSize: '1.2rem', textAlign: 'center', marginBottom: '3rem', opacity: 0.8 }}>
|
|
295
|
+
Everything you need to build beautiful, responsive applications
|
|
296
|
+
</p>
|
|
297
|
+
<FeatureGrid
|
|
298
|
+
columns={3}
|
|
299
|
+
gap="large"
|
|
300
|
+
features={[
|
|
301
|
+
{
|
|
302
|
+
id: 'components',
|
|
303
|
+
icon: <span style={{ fontSize: '3rem' }}>🧩</span>,
|
|
304
|
+
title: 'Rich Components',
|
|
305
|
+
description: 'Comprehensive set of pre-built, customizable components for rapid development.',
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
id: 'layouts',
|
|
309
|
+
icon: <span style={{ fontSize: '3rem' }}>📐</span>,
|
|
310
|
+
title: 'Flexible Layouts',
|
|
311
|
+
description: 'Powerful layout blocks that adapt to any design and screen size automatically.',
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
id: 'navigation',
|
|
315
|
+
icon: <span style={{ fontSize: '3rem' }}>🧭</span>,
|
|
316
|
+
title: 'Smart Navigation',
|
|
317
|
+
description: 'Responsive navigation that transforms based on device: bottom nav, rail, or top nav.',
|
|
318
|
+
},
|
|
319
|
+
]}
|
|
320
|
+
/>
|
|
321
|
+
</Content>
|
|
322
|
+
</Section>
|
|
323
|
+
|
|
324
|
+
{/* Content Sections */}
|
|
325
|
+
<Section spacing="spacious">
|
|
326
|
+
<GridLayout columns={2} spacing="large">
|
|
327
|
+
<GridCell>
|
|
328
|
+
<Content title="Easy to Use" variant="elevated" spacing="spacious">
|
|
329
|
+
<p>QwickApps React Framework is designed for developers who want to build great applications without spending time on boilerplate.</p>
|
|
330
|
+
<ul>
|
|
331
|
+
<li>Simple API design</li>
|
|
332
|
+
<li>Comprehensive documentation</li>
|
|
333
|
+
<li>TypeScript support</li>
|
|
334
|
+
<li>Storybook examples</li>
|
|
335
|
+
</ul>
|
|
336
|
+
</Content>
|
|
337
|
+
</GridCell>
|
|
338
|
+
<GridCell>
|
|
339
|
+
<Content title="Production Ready" variant="elevated" spacing="spacious">
|
|
340
|
+
<p>Built with best practices and tested in real-world applications to ensure reliability and performance.</p>
|
|
341
|
+
<ul>
|
|
342
|
+
<li>Accessibility compliant</li>
|
|
343
|
+
<li>Performance optimized</li>
|
|
344
|
+
<li>Theme system</li>
|
|
345
|
+
<li>Mobile-first design</li>
|
|
346
|
+
</ul>
|
|
347
|
+
</Content>
|
|
348
|
+
</GridCell>
|
|
349
|
+
</GridLayout>
|
|
350
|
+
</Section>
|
|
351
|
+
|
|
352
|
+
{/* Call to Action */}
|
|
353
|
+
<Section background="primary">
|
|
354
|
+
<Content
|
|
355
|
+
centered
|
|
356
|
+
maxWidth="md"
|
|
357
|
+
actions={[
|
|
358
|
+
{
|
|
359
|
+
label: 'Start Building',
|
|
360
|
+
variant: 'secondary',
|
|
361
|
+
size: 'large',
|
|
362
|
+
onClick: () => { alert('Start Building clicked'); }
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
label: 'Documentation',
|
|
366
|
+
variant: 'outlined',
|
|
367
|
+
size: 'large',
|
|
368
|
+
onClick: () => console.log('Documentation clicked')
|
|
369
|
+
}
|
|
370
|
+
]}
|
|
371
|
+
>
|
|
372
|
+
<h2 style={{ fontSize: '2.5rem', marginBottom: '1rem' }}>
|
|
373
|
+
Ready to Get Started?
|
|
374
|
+
</h2>
|
|
375
|
+
<p style={{ fontSize: '1.2rem', opacity: 0.9, marginBottom: '2rem' }}>
|
|
376
|
+
Join thousands of developers building with QwickApps React Framework
|
|
377
|
+
</p>
|
|
378
|
+
</Content>
|
|
379
|
+
</Section>
|
|
380
|
+
</div>
|
|
381
|
+
),
|
|
382
|
+
};
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Layout System - Complete guide to QwickApps layout components
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
6
|
+
import { Box, Typography, Paper, Chip } from '@mui/material';
|
|
7
|
+
import { GridLayout } from '../components/layout/GridLayout';
|
|
8
|
+
import {
|
|
9
|
+
HeroBlock,
|
|
10
|
+
Content,
|
|
11
|
+
Section
|
|
12
|
+
} from '../components/blocks';
|
|
13
|
+
import { QwickApp } from '../components/QwickApp';
|
|
14
|
+
|
|
15
|
+
const meta: Meta = {
|
|
16
|
+
title: 'Layout/Layout System',
|
|
17
|
+
parameters: {
|
|
18
|
+
layout: 'fullscreen',
|
|
19
|
+
docs: {
|
|
20
|
+
description: {
|
|
21
|
+
component: `Complete layout system for building responsive, professional interfaces with minimal code.
|
|
22
|
+
|
|
23
|
+
**Key Features:**
|
|
24
|
+
- **GridLayout**: Flexible CSS Grid-based layout with automatic responsive behavior
|
|
25
|
+
- **GridCell**: Simple wrapper for custom content with base props support
|
|
26
|
+
- **LayoutBlocks**: Pre-built content blocks (Hero, Content, Feature Grid, Section)
|
|
27
|
+
- **Base Props**: Standardized props for all layout components (spacing, dimensions, grid behavior)
|
|
28
|
+
- **Responsive Design**: Automatic mobile-first responsive behavior
|
|
29
|
+
- **T-shirt Sizing**: Intuitive sizing system (tiny, small, medium, large, huge)
|
|
30
|
+
|
|
31
|
+
**Perfect For:**
|
|
32
|
+
- Landing pages and marketing websites
|
|
33
|
+
- Dashboard and admin panel layouts
|
|
34
|
+
- Content-heavy applications and blogs
|
|
35
|
+
- E-commerce product showcases
|
|
36
|
+
- Documentation and help systems
|
|
37
|
+
- Any application requiring structured, responsive layouts`,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export default meta;
|
|
44
|
+
|
|
45
|
+
export const LayoutSystemOverview: StoryObj = {
|
|
46
|
+
render: () => (
|
|
47
|
+
<QwickApp appName="Layout System Demo">
|
|
48
|
+
<Section sectionBackground="background.default" padding="comfortable">
|
|
49
|
+
<Typography variant="h3" gutterBottom>
|
|
50
|
+
QwickApps Layout System
|
|
51
|
+
</Typography>
|
|
52
|
+
|
|
53
|
+
<Typography variant="h5" color="text.secondary" paragraph>
|
|
54
|
+
Build responsive layouts with our comprehensive layout component system
|
|
55
|
+
</Typography>
|
|
56
|
+
|
|
57
|
+
<GridLayout columns={2} spacing="large" margin="large">
|
|
58
|
+
<Content
|
|
59
|
+
title="GridLayout"
|
|
60
|
+
variant="elevated"
|
|
61
|
+
blockSpacing="comfortable"
|
|
62
|
+
>
|
|
63
|
+
<Typography paragraph>
|
|
64
|
+
CSS Grid-based layout component that automatically wraps child components
|
|
65
|
+
with grid props in Material-UI Grid items.
|
|
66
|
+
</Typography>
|
|
67
|
+
<Box sx={{ display: 'flex', gap: 1, flexWrap: 'wrap' }}>
|
|
68
|
+
<Chip label="Responsive" size="small" />
|
|
69
|
+
<Chip label="Auto-wrapping" size="small" />
|
|
70
|
+
<Chip label="Flexible columns" size="small" />
|
|
71
|
+
</Box>
|
|
72
|
+
</Content>
|
|
73
|
+
|
|
74
|
+
<Content
|
|
75
|
+
title="LayoutBlocks"
|
|
76
|
+
variant="elevated"
|
|
77
|
+
blockSpacing="comfortable"
|
|
78
|
+
>
|
|
79
|
+
<Typography paragraph>
|
|
80
|
+
Pre-built content blocks including Hero sections, Content blocks,
|
|
81
|
+
Feature grids, and Section containers for rapid development.
|
|
82
|
+
</Typography>
|
|
83
|
+
<Box sx={{ display: 'flex', gap: 1, flexWrap: 'wrap' }}>
|
|
84
|
+
<Chip label="Pre-styled" size="small" />
|
|
85
|
+
<Chip label="Theme-aware" size="small" />
|
|
86
|
+
<Chip label="Content-ready" size="small" />
|
|
87
|
+
</Box>
|
|
88
|
+
</Content>
|
|
89
|
+
|
|
90
|
+
<Content
|
|
91
|
+
title="Base Props System"
|
|
92
|
+
variant="elevated"
|
|
93
|
+
blockSpacing="comfortable"
|
|
94
|
+
span={12}
|
|
95
|
+
>
|
|
96
|
+
<Typography paragraph>
|
|
97
|
+
All layout components support standardized base props for consistent
|
|
98
|
+
styling, spacing, and grid behavior across your application.
|
|
99
|
+
</Typography>
|
|
100
|
+
<GridLayout columns={4} spacing="small">
|
|
101
|
+
<Paper sx={{ p: 1, textAlign: 'center', background: '#e3f2fd' }}>
|
|
102
|
+
<Typography variant="caption" display="block">Grid Props</Typography>
|
|
103
|
+
<Typography variant="body2">span, xs, sm, md, lg, xl</Typography>
|
|
104
|
+
</Paper>
|
|
105
|
+
<Paper sx={{ p: 1, textAlign: 'center', background: '#e8f5e8' }}>
|
|
106
|
+
<Typography variant="caption" display="block">Dimensions</Typography>
|
|
107
|
+
<Typography variant="body2">width, height, min/max</Typography>
|
|
108
|
+
</Paper>
|
|
109
|
+
<Paper sx={{ p: 1, textAlign: 'center', background: '#fff3e0' }}>
|
|
110
|
+
<Typography variant="caption" display="block">Spacing</Typography>
|
|
111
|
+
<Typography variant="body2">padding, margin</Typography>
|
|
112
|
+
</Paper>
|
|
113
|
+
<Paper sx={{ p: 1, textAlign: 'center', background: '#fce4ec' }}>
|
|
114
|
+
<Typography variant="caption" display="block">Styling</Typography>
|
|
115
|
+
<Typography variant="body2">background, className, sx</Typography>
|
|
116
|
+
</Paper>
|
|
117
|
+
</GridLayout>
|
|
118
|
+
</Content>
|
|
119
|
+
</GridLayout>
|
|
120
|
+
</Section>
|
|
121
|
+
|
|
122
|
+
<Section sectionBackground="grey.50" padding="comfortable">
|
|
123
|
+
<Typography variant="h4" gutterBottom>
|
|
124
|
+
T-shirt Sizing System
|
|
125
|
+
</Typography>
|
|
126
|
+
|
|
127
|
+
<Typography variant="body1" paragraph>
|
|
128
|
+
All components support intuitive t-shirt sizing for dimensions and spacing:
|
|
129
|
+
</Typography>
|
|
130
|
+
|
|
131
|
+
<GridLayout columns={5} spacing="medium">
|
|
132
|
+
<Paper sx={{ p: 2, textAlign: 'center', background: 'primary.light' }}>
|
|
133
|
+
<Typography variant="h6" color="primary.contrastText">Tiny</Typography>
|
|
134
|
+
<Typography variant="caption" color="primary.contrastText">4px / 0.25rem</Typography>
|
|
135
|
+
</Paper>
|
|
136
|
+
<Paper sx={{ p: 2, textAlign: 'center', background: 'secondary.light' }}>
|
|
137
|
+
<Typography variant="h6" color="secondary.contrastText">Small</Typography>
|
|
138
|
+
<Typography variant="caption" color="secondary.contrastText">8px / 0.5rem</Typography>
|
|
139
|
+
</Paper>
|
|
140
|
+
<Paper sx={{ p: 2, textAlign: 'center', background: 'success.light' }}>
|
|
141
|
+
<Typography variant="h6" color="success.contrastText">Medium</Typography>
|
|
142
|
+
<Typography variant="caption" color="success.contrastText">16px / 1rem</Typography>
|
|
143
|
+
</Paper>
|
|
144
|
+
<Paper sx={{ p: 2, textAlign: 'center', background: 'warning.light' }}>
|
|
145
|
+
<Typography variant="h6" color="warning.contrastText">Large</Typography>
|
|
146
|
+
<Typography variant="caption" color="warning.contrastText">24px / 1.5rem</Typography>
|
|
147
|
+
</Paper>
|
|
148
|
+
<Paper sx={{ p: 2, textAlign: 'center', background: 'error.light' }}>
|
|
149
|
+
<Typography variant="h6" color="error.contrastText">Huge</Typography>
|
|
150
|
+
<Typography variant="caption" color="error.contrastText">32px / 2rem</Typography>
|
|
151
|
+
</Paper>
|
|
152
|
+
</GridLayout>
|
|
153
|
+
</Section>
|
|
154
|
+
|
|
155
|
+
<HeroBlock
|
|
156
|
+
title="Start Building Beautiful Layouts"
|
|
157
|
+
subtitle="Use GridLayout and LayoutBlocks to create responsive, professional interfaces"
|
|
158
|
+
actions={[
|
|
159
|
+
{ label: "View GridLayout Stories", variant: "primary" },
|
|
160
|
+
{ label: "View LayoutBlocks Stories", variant: "outlined" }
|
|
161
|
+
]}
|
|
162
|
+
backgroundColor="primary"
|
|
163
|
+
blockHeight="small"
|
|
164
|
+
/>
|
|
165
|
+
</QwickApp>
|
|
166
|
+
),
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
export const GridLayoutDemo: StoryObj = {
|
|
170
|
+
render: () => (
|
|
171
|
+
<QwickApp appName="GridLayout Demo">
|
|
172
|
+
<Section padding="comfortable">
|
|
173
|
+
<Typography variant="h4" gutterBottom>
|
|
174
|
+
GridLayout Examples
|
|
175
|
+
</Typography>
|
|
176
|
+
|
|
177
|
+
<Content title="Equal Column Distribution" blockSpacing="comfortable" margin="large">
|
|
178
|
+
<Typography paragraph>
|
|
179
|
+
Use the <code>columns</code> prop to automatically distribute children into equal-width columns:
|
|
180
|
+
</Typography>
|
|
181
|
+
<GridLayout columns={3} spacing="medium">
|
|
182
|
+
<Paper sx={{ p: 2, textAlign: 'center', background: '#ffebee' }}>
|
|
183
|
+
<Typography>Column 1</Typography>
|
|
184
|
+
</Paper>
|
|
185
|
+
<Paper sx={{ p: 2, textAlign: 'center', background: '#e8f5e8' }}>
|
|
186
|
+
<Typography>Column 2</Typography>
|
|
187
|
+
</Paper>
|
|
188
|
+
<Paper sx={{ p: 2, textAlign: 'center', background: '#e3f2fd' }}>
|
|
189
|
+
<Typography>Column 3</Typography>
|
|
190
|
+
</Paper>
|
|
191
|
+
</GridLayout>
|
|
192
|
+
</Content>
|
|
193
|
+
|
|
194
|
+
<Content title="Custom Grid Spans" blockSpacing="comfortable" margin="large">
|
|
195
|
+
<Typography paragraph>
|
|
196
|
+
Use <code>span</code> props on children for custom column widths:
|
|
197
|
+
</Typography>
|
|
198
|
+
<GridLayout spacing="medium">
|
|
199
|
+
<Paper sx={{ p: 2, textAlign: 'center', background: '#f3e5f5' }} data-grid-span={8}>
|
|
200
|
+
<Typography>Main Content (8 columns)</Typography>
|
|
201
|
+
</Paper>
|
|
202
|
+
<Paper sx={{ p: 2, textAlign: 'center', background: '#e0f2f1' }} data-grid-span={4}>
|
|
203
|
+
<Typography>Sidebar (4 columns)</Typography>
|
|
204
|
+
</Paper>
|
|
205
|
+
</GridLayout>
|
|
206
|
+
</Content>
|
|
207
|
+
|
|
208
|
+
<Content title="Responsive Behavior" blockSpacing="comfortable" margin="large">
|
|
209
|
+
<Typography paragraph>
|
|
210
|
+
Use breakpoint props for responsive layouts:
|
|
211
|
+
</Typography>
|
|
212
|
+
<GridLayout spacing="medium">
|
|
213
|
+
<Paper
|
|
214
|
+
sx={{ p: 2, textAlign: 'center', background: '#fff3e0' }}
|
|
215
|
+
data-grid-xs={12}
|
|
216
|
+
data-grid-sm={6}
|
|
217
|
+
data-grid-md={4}
|
|
218
|
+
>
|
|
219
|
+
<Typography variant="body2">
|
|
220
|
+
Mobile: Full width<br/>
|
|
221
|
+
Tablet: Half width<br/>
|
|
222
|
+
Desktop: One third
|
|
223
|
+
</Typography>
|
|
224
|
+
</Paper>
|
|
225
|
+
<Paper
|
|
226
|
+
sx={{ p: 2, textAlign: 'center', background: '#fce4ec' }}
|
|
227
|
+
data-grid-xs={12}
|
|
228
|
+
data-grid-sm={6}
|
|
229
|
+
data-grid-md={4}
|
|
230
|
+
>
|
|
231
|
+
<Typography variant="body2">
|
|
232
|
+
Responsive<br/>
|
|
233
|
+
Column 2
|
|
234
|
+
</Typography>
|
|
235
|
+
</Paper>
|
|
236
|
+
<Paper
|
|
237
|
+
sx={{ p: 2, textAlign: 'center', background: '#e8eaf6' }}
|
|
238
|
+
data-grid-xs={12}
|
|
239
|
+
data-grid-sm={12}
|
|
240
|
+
data-grid-md={4}
|
|
241
|
+
>
|
|
242
|
+
<Typography variant="body2">
|
|
243
|
+
Mobile: Full width<br/>
|
|
244
|
+
Tablet: Full width<br/>
|
|
245
|
+
Desktop: One third
|
|
246
|
+
</Typography>
|
|
247
|
+
</Paper>
|
|
248
|
+
</GridLayout>
|
|
249
|
+
</Content>
|
|
250
|
+
</Section>
|
|
251
|
+
</QwickApp>
|
|
252
|
+
),
|
|
253
|
+
};
|