@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,463 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Component Stories - Content blocks with data binding support
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Box, Typography } from '@mui/material';
|
|
8
|
+
import { JsonDataProvider } from '@qwickapps/schema';
|
|
9
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
10
|
+
import { Code, Section } from '../components/blocks';
|
|
11
|
+
import Content from '../components/blocks/Content';
|
|
12
|
+
import { GridLayout } from '../components/layout';
|
|
13
|
+
import QwickApp from '../components/QwickApp';
|
|
14
|
+
|
|
15
|
+
// Sample CMS data for data binding stories
|
|
16
|
+
const sampleCmsData = {
|
|
17
|
+
'pages.home.intro': [
|
|
18
|
+
{
|
|
19
|
+
title: 'Welcome to QwickApps React Framework',
|
|
20
|
+
subtitle: 'The most developer-friendly React framework that turns complex UI development into a joy',
|
|
21
|
+
actions: [
|
|
22
|
+
{ label: 'Get Started', variant: 'primary', href: '/docs/getting-started' },
|
|
23
|
+
{ label: 'View Examples', variant: 'outlined', href: '/examples' }
|
|
24
|
+
],
|
|
25
|
+
variant: 'elevated',
|
|
26
|
+
centered: true,
|
|
27
|
+
blockSpacing: 'spacious'
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
'features.development': [
|
|
31
|
+
{
|
|
32
|
+
title: 'Development Experience',
|
|
33
|
+
subtitle: 'Built for developer productivity and satisfaction',
|
|
34
|
+
variant: 'default',
|
|
35
|
+
contentMaxWidth: 'lg',
|
|
36
|
+
blockSpacing: 'comfortable'
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
'company.about': [
|
|
40
|
+
{
|
|
41
|
+
title: 'About QwickApps',
|
|
42
|
+
subtitle: 'Empowering developers to build amazing applications',
|
|
43
|
+
actions: [
|
|
44
|
+
{ label: 'Learn More', variant: 'secondary' },
|
|
45
|
+
{ label: 'Contact Us', variant: 'text', href: 'mailto:hello@qwickapps.com' }
|
|
46
|
+
],
|
|
47
|
+
variant: 'outlined',
|
|
48
|
+
centered: false,
|
|
49
|
+
contentMaxWidth: 'md'
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
'marketing.hero': [
|
|
53
|
+
{
|
|
54
|
+
title: '🚀 Launch Faster',
|
|
55
|
+
subtitle: 'Skip the boilerplate, focus on what matters - your unique features and business logic',
|
|
56
|
+
actions: [
|
|
57
|
+
{ label: 'Start Building', variant: 'primary', buttonSize: 'large' },
|
|
58
|
+
{ label: 'Watch Demo', variant: 'outlined', buttonSize: 'large', icon: '▶️' }
|
|
59
|
+
],
|
|
60
|
+
variant: 'filled',
|
|
61
|
+
centered: true,
|
|
62
|
+
blockSpacing: 'spacious',
|
|
63
|
+
contentMaxWidth: 'lg'
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const dataProvider = new JsonDataProvider({ data: sampleCmsData });
|
|
69
|
+
|
|
70
|
+
const meta = {
|
|
71
|
+
title: 'Components/Content',
|
|
72
|
+
component: Content,
|
|
73
|
+
parameters: {
|
|
74
|
+
layout: 'fullscreen',
|
|
75
|
+
docs: {
|
|
76
|
+
description: {
|
|
77
|
+
component: `Content is a versatile content container component that supports both traditional props and data binding through dataSource.
|
|
78
|
+
|
|
79
|
+
**Key Features:**
|
|
80
|
+
- **Flexible Content**: Optional title, subtitle, and child content
|
|
81
|
+
- **Action Buttons**: Built-in support for multiple action buttons
|
|
82
|
+
- **Visual Variants**: Default, elevated, outlined, and filled styles
|
|
83
|
+
- **Responsive Layout**: Configurable spacing, max width, and alignment
|
|
84
|
+
- **Data Binding**: Support for CMS-driven content through dataSource prop
|
|
85
|
+
- **Theme Integration**: Consistent styling with QwickApps theme system
|
|
86
|
+
|
|
87
|
+
**Perfect For:**
|
|
88
|
+
- Hero sections and feature highlights
|
|
89
|
+
- Content blocks in marketing pages
|
|
90
|
+
- Structured content areas with actions
|
|
91
|
+
- CMS-driven dynamic content sections`,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
tags: ['autodocs'],
|
|
96
|
+
} satisfies Meta<typeof Content>;
|
|
97
|
+
|
|
98
|
+
export default meta;
|
|
99
|
+
type Story = StoryObj<typeof meta>;
|
|
100
|
+
|
|
101
|
+
// Traditional Usage Examples
|
|
102
|
+
export const BasicUsage: Story = {
|
|
103
|
+
render: () => (
|
|
104
|
+
<QwickApp appId="content-basic" appName='Content Basic Usage'>
|
|
105
|
+
<Section>
|
|
106
|
+
<GridLayout columns={1} spacing="large">
|
|
107
|
+
<Content
|
|
108
|
+
title="Basic Content Block"
|
|
109
|
+
subtitle="Simple content with title and subtitle"
|
|
110
|
+
>
|
|
111
|
+
<Typography>
|
|
112
|
+
This is a basic content block with traditional prop usage.
|
|
113
|
+
Perfect for static content that doesn't need dynamic data binding.
|
|
114
|
+
</Typography>
|
|
115
|
+
</Content>
|
|
116
|
+
</GridLayout>
|
|
117
|
+
</Section>
|
|
118
|
+
</QwickApp>
|
|
119
|
+
),
|
|
120
|
+
parameters: {
|
|
121
|
+
docs: {
|
|
122
|
+
description: {
|
|
123
|
+
story: 'Basic Content usage with traditional props - title, subtitle, and children content.',
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
export const WithActions: Story = {
|
|
130
|
+
render: () => (
|
|
131
|
+
<QwickApp appId="content-actions" appName='Content With Actions'>
|
|
132
|
+
<Section>
|
|
133
|
+
<Content
|
|
134
|
+
title="Content with Actions"
|
|
135
|
+
subtitle="Demonstrating built-in action button support"
|
|
136
|
+
actions={[
|
|
137
|
+
{ label: 'Primary Action', variant: 'primary', onClick: () => alert('Primary clicked!') },
|
|
138
|
+
{ label: 'Secondary', variant: 'outlined', onClick: () => alert('Secondary clicked!') },
|
|
139
|
+
{ label: 'Learn More', variant: 'text', href: '/docs' }
|
|
140
|
+
]}
|
|
141
|
+
centered={true}
|
|
142
|
+
>
|
|
143
|
+
<Typography>
|
|
144
|
+
Content blocks can include multiple action buttons with different variants and behaviors.
|
|
145
|
+
</Typography>
|
|
146
|
+
</Content>
|
|
147
|
+
</Section>
|
|
148
|
+
</QwickApp>
|
|
149
|
+
),
|
|
150
|
+
parameters: {
|
|
151
|
+
docs: {
|
|
152
|
+
description: {
|
|
153
|
+
story: 'Content with action buttons supporting different variants and both onClick handlers and href links.',
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
export const VariantStyles: Story = {
|
|
160
|
+
render: () => (
|
|
161
|
+
<QwickApp appId="content-variants" appName='Content Variants'>
|
|
162
|
+
<Section>
|
|
163
|
+
<GridLayout columns={2} spacing="large">
|
|
164
|
+
<Content
|
|
165
|
+
title="Default Variant"
|
|
166
|
+
subtitle="Clean minimal styling"
|
|
167
|
+
variant="default"
|
|
168
|
+
blockSpacing="comfortable"
|
|
169
|
+
>
|
|
170
|
+
<Typography>The default variant provides clean, minimal styling for standard content blocks.</Typography>
|
|
171
|
+
</Content>
|
|
172
|
+
|
|
173
|
+
<Content
|
|
174
|
+
title="Elevated Variant"
|
|
175
|
+
subtitle="Shadow and prominence"
|
|
176
|
+
variant="elevated"
|
|
177
|
+
blockSpacing="comfortable"
|
|
178
|
+
>
|
|
179
|
+
<Typography>The elevated variant adds shadow and background for visual prominence.</Typography>
|
|
180
|
+
</Content>
|
|
181
|
+
|
|
182
|
+
<Content
|
|
183
|
+
title="Outlined Variant"
|
|
184
|
+
subtitle="Border definition"
|
|
185
|
+
variant="outlined"
|
|
186
|
+
blockSpacing="comfortable"
|
|
187
|
+
>
|
|
188
|
+
<Typography>The outlined variant provides clear borders and defined areas.</Typography>
|
|
189
|
+
</Content>
|
|
190
|
+
|
|
191
|
+
<Content
|
|
192
|
+
title="Filled Variant"
|
|
193
|
+
subtitle="Background highlight"
|
|
194
|
+
variant="filled"
|
|
195
|
+
blockSpacing="comfortable"
|
|
196
|
+
>
|
|
197
|
+
<Typography>The filled variant uses background color for emphasis and highlighting.</Typography>
|
|
198
|
+
</Content>
|
|
199
|
+
</GridLayout>
|
|
200
|
+
</Section>
|
|
201
|
+
</QwickApp>
|
|
202
|
+
),
|
|
203
|
+
parameters: {
|
|
204
|
+
docs: {
|
|
205
|
+
description: {
|
|
206
|
+
story: 'All available Content variants: default, elevated, outlined, and filled styles.',
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
// Data Binding Examples
|
|
213
|
+
export const DataBindingBasic: Story = {
|
|
214
|
+
render: () => (
|
|
215
|
+
<QwickApp
|
|
216
|
+
appId="content-data-binding"
|
|
217
|
+
appName='Content Data Binding'
|
|
218
|
+
dataSource={{ dataProvider }}
|
|
219
|
+
>
|
|
220
|
+
<Section>
|
|
221
|
+
<GridLayout columns={1} spacing="large">
|
|
222
|
+
|
|
223
|
+
<Box>
|
|
224
|
+
<Typography variant="h5" gutterBottom>📊 Data-Driven Content</Typography>
|
|
225
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
226
|
+
Content components can be driven entirely by CMS data using the dataSource prop.
|
|
227
|
+
</Typography>
|
|
228
|
+
|
|
229
|
+
<Code title="Usage" language="tsx">{`<Content dataSource="pages.home.intro" />`}</Code>
|
|
230
|
+
|
|
231
|
+
<Code title="Data Structure" language="json">{JSON.stringify(sampleCmsData['pages.home.intro'][0], null, 2)}</Code>
|
|
232
|
+
</Box>
|
|
233
|
+
|
|
234
|
+
<Content dataSource="pages.home.intro" />
|
|
235
|
+
|
|
236
|
+
</GridLayout>
|
|
237
|
+
</Section>
|
|
238
|
+
</QwickApp>
|
|
239
|
+
),
|
|
240
|
+
parameters: {
|
|
241
|
+
docs: {
|
|
242
|
+
description: {
|
|
243
|
+
story: 'Content component with data binding - all props resolved from CMS data through dataSource.',
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
export const DataBindingAdvanced: Story = {
|
|
250
|
+
render: () => (
|
|
251
|
+
<QwickApp
|
|
252
|
+
appId="content-data-advanced"
|
|
253
|
+
appName='Advanced Data Binding'
|
|
254
|
+
dataSource={{ dataProvider }}
|
|
255
|
+
>
|
|
256
|
+
<Section>
|
|
257
|
+
<GridLayout columns={1} spacing="large">
|
|
258
|
+
|
|
259
|
+
<Box>
|
|
260
|
+
<Typography variant="h5" gutterBottom>🎯 Multiple Data Sources</Typography>
|
|
261
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
262
|
+
Different Content components can pull from different data sources with varying configurations.
|
|
263
|
+
</Typography>
|
|
264
|
+
</Box>
|
|
265
|
+
|
|
266
|
+
<Content dataSource="marketing.hero" />
|
|
267
|
+
|
|
268
|
+
<GridLayout columns={2} spacing="large">
|
|
269
|
+
<Content dataSource="features.development">
|
|
270
|
+
<Typography>
|
|
271
|
+
Custom child content can be combined with data-driven props for maximum flexibility.
|
|
272
|
+
</Typography>
|
|
273
|
+
</Content>
|
|
274
|
+
|
|
275
|
+
<Content dataSource="company.about" />
|
|
276
|
+
</GridLayout>
|
|
277
|
+
|
|
278
|
+
</GridLayout>
|
|
279
|
+
</Section>
|
|
280
|
+
</QwickApp>
|
|
281
|
+
),
|
|
282
|
+
parameters: {
|
|
283
|
+
docs: {
|
|
284
|
+
description: {
|
|
285
|
+
story: 'Advanced data binding with multiple data sources and mixed traditional/data-driven usage.',
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
export const DataBindingWithFallback: Story = {
|
|
292
|
+
render: () => (
|
|
293
|
+
<QwickApp
|
|
294
|
+
appId="content-fallback"
|
|
295
|
+
appName='Data Binding with Fallback'
|
|
296
|
+
dataSource={{ dataProvider }}
|
|
297
|
+
>
|
|
298
|
+
<Section>
|
|
299
|
+
<GridLayout columns={1} spacing="large">
|
|
300
|
+
|
|
301
|
+
<Box>
|
|
302
|
+
<Typography variant="h5" gutterBottom>🛡️ Fallback Support</Typography>
|
|
303
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
304
|
+
Content components gracefully handle missing data sources with fallback props.
|
|
305
|
+
</Typography>
|
|
306
|
+
|
|
307
|
+
<Code title="Fallback Usage" language="tsx">{`<Content
|
|
308
|
+
dataSource="nonexistent.data"
|
|
309
|
+
title="Fallback Title"
|
|
310
|
+
subtitle="Shows when data source is missing"
|
|
311
|
+
variant="outlined"
|
|
312
|
+
/>`}</Code>
|
|
313
|
+
</Box>
|
|
314
|
+
|
|
315
|
+
<Content
|
|
316
|
+
dataSource="nonexistent.data"
|
|
317
|
+
title="Fallback Content"
|
|
318
|
+
subtitle="This content appears when the dataSource doesn't exist"
|
|
319
|
+
variant="outlined"
|
|
320
|
+
actions={[
|
|
321
|
+
{ label: 'Fallback Action', variant: 'secondary' }
|
|
322
|
+
]}
|
|
323
|
+
/>
|
|
324
|
+
|
|
325
|
+
</GridLayout>
|
|
326
|
+
</Section>
|
|
327
|
+
</QwickApp>
|
|
328
|
+
),
|
|
329
|
+
parameters: {
|
|
330
|
+
docs: {
|
|
331
|
+
description: {
|
|
332
|
+
story: 'Content with fallback props when dataSource is missing or unavailable.',
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
export const SpacingAndLayout: Story = {
|
|
339
|
+
render: () => (
|
|
340
|
+
<QwickApp appId="content-spacing" appName='Content Spacing & Layout'>
|
|
341
|
+
<Section>
|
|
342
|
+
<GridLayout columns={1} spacing="large">
|
|
343
|
+
|
|
344
|
+
<Box>
|
|
345
|
+
<Typography variant="h5" gutterBottom>📐 Spacing & Layout Options</Typography>
|
|
346
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
347
|
+
Content components offer flexible spacing and layout configuration.
|
|
348
|
+
</Typography>
|
|
349
|
+
</Box>
|
|
350
|
+
|
|
351
|
+
<Content
|
|
352
|
+
title="Spacious Padding"
|
|
353
|
+
subtitle="Maximum internal spacing"
|
|
354
|
+
blockSpacing="spacious"
|
|
355
|
+
variant="outlined"
|
|
356
|
+
/>
|
|
357
|
+
|
|
358
|
+
<Content
|
|
359
|
+
title="Comfortable Padding (Default)"
|
|
360
|
+
subtitle="Balanced internal spacing"
|
|
361
|
+
blockSpacing="comfortable"
|
|
362
|
+
variant="outlined"
|
|
363
|
+
/>
|
|
364
|
+
|
|
365
|
+
<Content
|
|
366
|
+
title="Compact Padding"
|
|
367
|
+
subtitle="Minimal internal spacing"
|
|
368
|
+
blockSpacing="compact"
|
|
369
|
+
variant="outlined"
|
|
370
|
+
/>
|
|
371
|
+
|
|
372
|
+
<GridLayout columns={2} spacing="medium">
|
|
373
|
+
<Content
|
|
374
|
+
title="Centered Layout"
|
|
375
|
+
subtitle="Content centered within container"
|
|
376
|
+
centered={true}
|
|
377
|
+
variant="filled"
|
|
378
|
+
/>
|
|
379
|
+
|
|
380
|
+
<Content
|
|
381
|
+
title="Left Aligned"
|
|
382
|
+
subtitle="Standard left-aligned content"
|
|
383
|
+
centered={false}
|
|
384
|
+
variant="filled"
|
|
385
|
+
/>
|
|
386
|
+
</GridLayout>
|
|
387
|
+
|
|
388
|
+
</GridLayout>
|
|
389
|
+
</Section>
|
|
390
|
+
</QwickApp>
|
|
391
|
+
),
|
|
392
|
+
parameters: {
|
|
393
|
+
docs: {
|
|
394
|
+
description: {
|
|
395
|
+
story: 'Content spacing options (spacious, comfortable, compact) and alignment (centered vs left).',
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
export const RealWorldExample: Story = {
|
|
402
|
+
render: () => (
|
|
403
|
+
<QwickApp
|
|
404
|
+
appId="content-real-world"
|
|
405
|
+
appName='Real World Content Example'
|
|
406
|
+
dataSource={{ dataProvider }}
|
|
407
|
+
>
|
|
408
|
+
<Box>
|
|
409
|
+
{/* Hero Section - Data Driven */}
|
|
410
|
+
<Section background="primary">
|
|
411
|
+
<Content dataSource="marketing.hero" />
|
|
412
|
+
</Section>
|
|
413
|
+
|
|
414
|
+
{/* Feature Section - Mixed Usage */}
|
|
415
|
+
<Section>
|
|
416
|
+
<Content dataSource="features.development">
|
|
417
|
+
<GridLayout columns={3} spacing="medium">
|
|
418
|
+
<Box sx={{ textAlign: 'center', p: 2 }}>
|
|
419
|
+
<Typography variant="h6" gutterBottom>🚀 Fast Setup</Typography>
|
|
420
|
+
<Typography>Get started in minutes, not hours</Typography>
|
|
421
|
+
</Box>
|
|
422
|
+
<Box sx={{ textAlign: 'center', p: 2 }}>
|
|
423
|
+
<Typography variant="h6" gutterBottom>🔧 Flexible</Typography>
|
|
424
|
+
<Typography>Customize everything to match your needs</Typography>
|
|
425
|
+
</Box>
|
|
426
|
+
<Box sx={{ textAlign: 'center', p: 2 }}>
|
|
427
|
+
<Typography variant="h6" gutterBottom>📱 Responsive</Typography>
|
|
428
|
+
<Typography>Works perfectly on all devices</Typography>
|
|
429
|
+
</Box>
|
|
430
|
+
</GridLayout>
|
|
431
|
+
</Content>
|
|
432
|
+
</Section>
|
|
433
|
+
|
|
434
|
+
{/* About Section - Traditional Props */}
|
|
435
|
+
<Section background="alternate">
|
|
436
|
+
<Content
|
|
437
|
+
title="Built for Developers"
|
|
438
|
+
subtitle="By developers, for developers"
|
|
439
|
+
variant="elevated"
|
|
440
|
+
centered={true}
|
|
441
|
+
actions={[
|
|
442
|
+
{ label: 'View GitHub', variant: 'outlined', href: 'https://github.com' },
|
|
443
|
+
{ label: 'Join Community', variant: 'text' }
|
|
444
|
+
]}
|
|
445
|
+
>
|
|
446
|
+
<Typography sx={{ fontSize: '1.1rem', maxWidth: '600px', mx: 'auto' }}>
|
|
447
|
+
QwickApps React Framework was created to solve real problems that developers face every day.
|
|
448
|
+
We focus on developer experience, performance, and flexibility.
|
|
449
|
+
</Typography>
|
|
450
|
+
</Content>
|
|
451
|
+
</Section>
|
|
452
|
+
|
|
453
|
+
</Box>
|
|
454
|
+
</QwickApp>
|
|
455
|
+
),
|
|
456
|
+
parameters: {
|
|
457
|
+
docs: {
|
|
458
|
+
description: {
|
|
459
|
+
story: 'Real-world example combining data-driven Content with traditional usage in a complete layout.',
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
},
|
|
463
|
+
};
|