@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,558 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HtmlInputField Component Stories - Rich HTML text editor with data binding support
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Box, Typography, Alert } from '@mui/material';
|
|
8
|
+
import { JsonDataProvider } from '@qwickapps/schema';
|
|
9
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
10
|
+
import { Code } from '../components/blocks';
|
|
11
|
+
import HtmlInputField from '../components/input/HtmlInputField';
|
|
12
|
+
import QwickApp from '../components/QwickApp';
|
|
13
|
+
|
|
14
|
+
// Sample HTML input field data for different use cases
|
|
15
|
+
const sampleCmsData = {
|
|
16
|
+
'htmlInputFields': {
|
|
17
|
+
'blog-content': {
|
|
18
|
+
label: 'Blog Post Content',
|
|
19
|
+
placeholder: 'Write your blog post content with HTML formatting...',
|
|
20
|
+
required: true,
|
|
21
|
+
multiline: true,
|
|
22
|
+
rows: 6,
|
|
23
|
+
value: '<p>Welcome to our <b>amazing</b> blog! Here you can share your <i>thoughts</i> and <u>experiences</u>.</p>'
|
|
24
|
+
},
|
|
25
|
+
'product-description': {
|
|
26
|
+
label: 'Product Description',
|
|
27
|
+
placeholder: 'Describe your product with rich formatting...',
|
|
28
|
+
required: true,
|
|
29
|
+
multiline: true,
|
|
30
|
+
rows: 4,
|
|
31
|
+
value: '<p>This <b>premium product</b> features:</p><br/>• Advanced <code>technology</code><br/>• <i>Elegant</i> design<br/>• <u>Lifetime warranty</u>'
|
|
32
|
+
},
|
|
33
|
+
'announcement-banner': {
|
|
34
|
+
label: 'Site Announcement',
|
|
35
|
+
placeholder: 'Create an announcement with HTML styling...',
|
|
36
|
+
multiline: false,
|
|
37
|
+
value: '🎉 <b>New Feature Launch!</b> Experience our <i>enhanced</i> <code>user interface</code>'
|
|
38
|
+
},
|
|
39
|
+
'email-signature': {
|
|
40
|
+
label: 'Email Signature',
|
|
41
|
+
placeholder: 'Create your HTML email signature...',
|
|
42
|
+
multiline: true,
|
|
43
|
+
rows: 3,
|
|
44
|
+
value: '<b>John Doe</b><br/><i>Senior Developer</i><br/>📧 john@example.com | 📱 +1-555-0123'
|
|
45
|
+
},
|
|
46
|
+
'newsletter-intro': {
|
|
47
|
+
label: 'Newsletter Introduction',
|
|
48
|
+
placeholder: 'Write the newsletter intro with formatting...',
|
|
49
|
+
required: true,
|
|
50
|
+
multiline: true,
|
|
51
|
+
rows: 4,
|
|
52
|
+
value: '<p>Hello <b>subscribers</b>! Welcome to our <i>monthly newsletter</i>.</p><p>This month we are excited to share <u>exciting updates</u> and <code>new features</code>.</p>'
|
|
53
|
+
},
|
|
54
|
+
'testimonial-quote': {
|
|
55
|
+
label: 'Customer Testimonial',
|
|
56
|
+
placeholder: 'Add customer testimonial with HTML styling...',
|
|
57
|
+
multiline: true,
|
|
58
|
+
rows: 3,
|
|
59
|
+
value: '<i>"This product has <b>transformed</b> our workflow. The <code>automation features</code> are incredible!"</i><br/><br/>- <b>Sarah Johnson</b>, CEO'
|
|
60
|
+
},
|
|
61
|
+
'feature-highlight': {
|
|
62
|
+
label: 'Feature Highlight',
|
|
63
|
+
placeholder: 'Highlight key features with HTML...',
|
|
64
|
+
multiline: true,
|
|
65
|
+
rows: 5,
|
|
66
|
+
value: '<p><b>🚀 Key Features:</b></p><p>• <u>Real-time</u> collaboration<br/>• <code>API integration</code><br/>• <i>Advanced</i> analytics<br/>• <b>24/7</b> support</p>'
|
|
67
|
+
},
|
|
68
|
+
'code-snippet': {
|
|
69
|
+
label: 'Code Documentation',
|
|
70
|
+
placeholder: 'Document code with HTML formatting...',
|
|
71
|
+
multiline: true,
|
|
72
|
+
rows: 4,
|
|
73
|
+
value: '<p>Use the <code>useState</code> hook for <b>state management</b>:</p><br/><code>const [count, setCount] = useState(0);</code><br/><br/><i>Remember to import from React!</i>'
|
|
74
|
+
},
|
|
75
|
+
'event-details': {
|
|
76
|
+
label: 'Event Details',
|
|
77
|
+
placeholder: 'Add event information with styling...',
|
|
78
|
+
multiline: true,
|
|
79
|
+
rows: 5,
|
|
80
|
+
value: '<b>🎪 Annual Tech Conference 2025</b><br/><br/>📅 <i>March 15-17, 2025</i><br/>📍 <u>San Francisco Convention Center</u><br/>🎟️ <code>Early bird tickets available</code>'
|
|
81
|
+
},
|
|
82
|
+
'basic-html': {
|
|
83
|
+
label: 'Basic HTML Content',
|
|
84
|
+
placeholder: 'Enter HTML content...',
|
|
85
|
+
multiline: true,
|
|
86
|
+
rows: 4
|
|
87
|
+
},
|
|
88
|
+
'disabled-field': {
|
|
89
|
+
label: 'Read-only Content',
|
|
90
|
+
value: 'This content is <b>read-only</b> and <i>cannot be edited</i>.',
|
|
91
|
+
disabled: true,
|
|
92
|
+
multiline: true,
|
|
93
|
+
rows: 2
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
const dataProvider = new JsonDataProvider({ data: sampleCmsData });
|
|
99
|
+
|
|
100
|
+
const meta = {
|
|
101
|
+
title: 'Forms/HtmlInputField',
|
|
102
|
+
component: HtmlInputField,
|
|
103
|
+
parameters: {
|
|
104
|
+
layout: 'padded',
|
|
105
|
+
docs: {
|
|
106
|
+
description: {
|
|
107
|
+
component: `HtmlInputField is a rich text editor component with HTML formatting capabilities and data binding support for content creation.
|
|
108
|
+
|
|
109
|
+
**Key Features:**
|
|
110
|
+
- **Rich Text Formatting**: Built-in toolbar with bold, italic, underline, and code formatting
|
|
111
|
+
- **HTML Preview Mode**: Toggle between edit and preview modes to see rendered output
|
|
112
|
+
- **HTML Sanitization**: Automatic sanitization for security and safe rendering
|
|
113
|
+
- **Interactive Help**: Built-in help system showing supported HTML tags
|
|
114
|
+
- **Data Binding**: Full CMS integration through dataSource prop
|
|
115
|
+
- **Accessibility**: Complete ARIA support and keyboard navigation
|
|
116
|
+
- **Theme Integration**: Automatically uses QwickApp theme styling
|
|
117
|
+
- **Flexible Layout**: Support for single-line and multiline configurations
|
|
118
|
+
|
|
119
|
+
**Perfect For:**
|
|
120
|
+
- Blog and article content creation
|
|
121
|
+
- Product descriptions and marketing copy
|
|
122
|
+
- Email templates and signatures
|
|
123
|
+
- Rich text comments and feedback
|
|
124
|
+
- Documentation and help content
|
|
125
|
+
- Any content requiring HTML formatting capabilities`,
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
tags: ['autodocs'],
|
|
130
|
+
} satisfies Meta<typeof HtmlInputField>;
|
|
131
|
+
|
|
132
|
+
export default meta;
|
|
133
|
+
type Story = StoryObj<typeof HtmlInputField>;
|
|
134
|
+
|
|
135
|
+
// Traditional Usage Examples
|
|
136
|
+
export const BasicHtmlEditor: Story = {
|
|
137
|
+
render: () => (
|
|
138
|
+
<QwickApp appId="html-input-basic" appName='Basic HTML Editor'>
|
|
139
|
+
<HtmlInputField
|
|
140
|
+
label="Content Editor"
|
|
141
|
+
placeholder="Enter HTML content..."
|
|
142
|
+
multiline={true}
|
|
143
|
+
rows={4}
|
|
144
|
+
onChange={(value) => console.log('HTML content changed:', value)}
|
|
145
|
+
/>
|
|
146
|
+
</QwickApp>
|
|
147
|
+
),
|
|
148
|
+
parameters: {
|
|
149
|
+
docs: {
|
|
150
|
+
description: {
|
|
151
|
+
story: 'Basic HTML input field with formatting toolbar and preview capabilities.',
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
export const BlogContentEditor: Story = {
|
|
158
|
+
render: () => (
|
|
159
|
+
<QwickApp appId="html-input-blog" appName='Blog Content Editor'>
|
|
160
|
+
<HtmlInputField
|
|
161
|
+
label="Blog Post Content"
|
|
162
|
+
placeholder="Write your blog post content with HTML formatting..."
|
|
163
|
+
required={true}
|
|
164
|
+
multiline={true}
|
|
165
|
+
rows={6}
|
|
166
|
+
value='<p>Welcome to our <b>amazing</b> blog! Here you can share your <i>thoughts</i> and <u>experiences</u>.</p>'
|
|
167
|
+
onChange={(value) => console.log('Blog content:', value)}
|
|
168
|
+
/>
|
|
169
|
+
</QwickApp>
|
|
170
|
+
),
|
|
171
|
+
parameters: {
|
|
172
|
+
docs: {
|
|
173
|
+
description: {
|
|
174
|
+
story: 'Rich HTML editor configured for blog post content creation with initial content.',
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
export const ProductDescription: Story = {
|
|
181
|
+
render: () => (
|
|
182
|
+
<QwickApp appId="html-input-product" appName='Product Description Editor'>
|
|
183
|
+
<HtmlInputField
|
|
184
|
+
label="Product Description"
|
|
185
|
+
placeholder="Describe your product with rich formatting..."
|
|
186
|
+
required={true}
|
|
187
|
+
multiline={true}
|
|
188
|
+
rows={4}
|
|
189
|
+
value='<p>This <b>premium product</b> features:</p><br/>• Advanced <code>technology</code><br/>• <i>Elegant</i> design<br/>• <u>Lifetime warranty</u>'
|
|
190
|
+
onChange={(value) => console.log('Product description:', value)}
|
|
191
|
+
/>
|
|
192
|
+
</QwickApp>
|
|
193
|
+
),
|
|
194
|
+
parameters: {
|
|
195
|
+
docs: {
|
|
196
|
+
description: {
|
|
197
|
+
story: 'HTML editor for product descriptions with formatting for features and highlights.',
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
export const SingleLineHtml: Story = {
|
|
204
|
+
render: () => (
|
|
205
|
+
<QwickApp appId="html-input-single" appName='Single Line HTML'>
|
|
206
|
+
<HtmlInputField
|
|
207
|
+
label="Site Announcement"
|
|
208
|
+
placeholder="Create an announcement with HTML styling..."
|
|
209
|
+
multiline={false}
|
|
210
|
+
value='🎉 <b>New Feature Launch!</b> Experience our <i>enhanced</i> <code>user interface</code>'
|
|
211
|
+
onChange={(value) => console.log('Announcement:', value)}
|
|
212
|
+
/>
|
|
213
|
+
</QwickApp>
|
|
214
|
+
),
|
|
215
|
+
parameters: {
|
|
216
|
+
docs: {
|
|
217
|
+
description: {
|
|
218
|
+
story: 'Single-line HTML input field for announcements and short formatted content.',
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
export const FormattingShowcase: Story = {
|
|
225
|
+
render: () => (
|
|
226
|
+
<QwickApp appId="html-input-formatting" appName='HTML Formatting Showcase'>
|
|
227
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
|
228
|
+
<Alert severity="info">
|
|
229
|
+
<Typography variant="body2">
|
|
230
|
+
Use the toolbar buttons to format selected text, or click for insertion. Toggle preview mode to see the rendered output.
|
|
231
|
+
</Typography>
|
|
232
|
+
</Alert>
|
|
233
|
+
|
|
234
|
+
<HtmlInputField
|
|
235
|
+
label="Formatting Examples"
|
|
236
|
+
placeholder="Try the formatting tools above..."
|
|
237
|
+
multiline={true}
|
|
238
|
+
rows={6}
|
|
239
|
+
value='<p>Examples of <b>formatting</b>:</p><br/>• <b>Bold text</b> for emphasis<br/>• <i>Italic text</i> for style<br/>• <u>Underlined text</u> for highlighting<br/>• <code>Code snippets</code> for technical content<br/><br/><p>Mix and match: <b><i>Bold italic</i></b> and <u><code>underlined code</code></u>!</p>'
|
|
240
|
+
onChange={(value) => console.log('Formatted content:', value)}
|
|
241
|
+
/>
|
|
242
|
+
</Box>
|
|
243
|
+
</QwickApp>
|
|
244
|
+
),
|
|
245
|
+
parameters: {
|
|
246
|
+
docs: {
|
|
247
|
+
description: {
|
|
248
|
+
story: 'Showcase of HTML formatting capabilities with examples of different text styles.',
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
export const States: Story = {
|
|
255
|
+
render: () => (
|
|
256
|
+
<QwickApp appId="html-input-states" appName='HTML Input States'>
|
|
257
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 800 }}>
|
|
258
|
+
<HtmlInputField
|
|
259
|
+
label="Normal State"
|
|
260
|
+
placeholder="Enter HTML content..."
|
|
261
|
+
multiline={true}
|
|
262
|
+
rows={3}
|
|
263
|
+
onChange={(value) => console.log('Normal:', value)}
|
|
264
|
+
/>
|
|
265
|
+
|
|
266
|
+
<HtmlInputField
|
|
267
|
+
label="Required Field"
|
|
268
|
+
placeholder="This field is required"
|
|
269
|
+
required={true}
|
|
270
|
+
multiline={true}
|
|
271
|
+
rows={3}
|
|
272
|
+
onChange={(value) => console.log('Required:', value)}
|
|
273
|
+
/>
|
|
274
|
+
|
|
275
|
+
<HtmlInputField
|
|
276
|
+
label="Pre-filled Content"
|
|
277
|
+
value="<p>This field has <b>pre-filled</b> <i>content</i> with <code>formatting</code>.</p>"
|
|
278
|
+
multiline={true}
|
|
279
|
+
rows={3}
|
|
280
|
+
onChange={(value) => console.log('Pre-filled:', value)}
|
|
281
|
+
/>
|
|
282
|
+
|
|
283
|
+
<HtmlInputField
|
|
284
|
+
label="Disabled Field"
|
|
285
|
+
value="This content is <b>read-only</b> and <i>cannot be edited</i>."
|
|
286
|
+
disabled={true}
|
|
287
|
+
multiline={true}
|
|
288
|
+
rows={2}
|
|
289
|
+
/>
|
|
290
|
+
</Box>
|
|
291
|
+
</QwickApp>
|
|
292
|
+
),
|
|
293
|
+
parameters: {
|
|
294
|
+
docs: {
|
|
295
|
+
description: {
|
|
296
|
+
story: 'Different HTML input field states including normal, required, pre-filled, and disabled.',
|
|
297
|
+
},
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
// Data Binding Examples
|
|
303
|
+
export const DataBindingBasic: Story = {
|
|
304
|
+
render: () => (
|
|
305
|
+
<QwickApp appId="html-input-data-binding" appName='HtmlInputField Data Binding' dataSource={{ dataProvider }}>
|
|
306
|
+
<Box>
|
|
307
|
+
|
|
308
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
309
|
+
<Typography variant="h5" gutterBottom>📊 Data-Driven HTML Editor</Typography>
|
|
310
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
311
|
+
HtmlInputField components can be completely driven by CMS data, loading content and configuration from your data source.
|
|
312
|
+
</Typography>
|
|
313
|
+
|
|
314
|
+
<Code title="Usage" language="tsx">{`<HtmlInputField dataSource="htmlInputFields.blog-content" />`}</Code>
|
|
315
|
+
|
|
316
|
+
<Code title="Data Structure" language="json">{JSON.stringify(sampleCmsData.htmlInputFields['blog-content'], null, 2)}</Code>
|
|
317
|
+
</Box>
|
|
318
|
+
|
|
319
|
+
<HtmlInputField dataSource="htmlInputFields.blog-content" />
|
|
320
|
+
|
|
321
|
+
</Box>
|
|
322
|
+
</QwickApp>
|
|
323
|
+
),
|
|
324
|
+
parameters: {
|
|
325
|
+
docs: {
|
|
326
|
+
description: {
|
|
327
|
+
story: 'HtmlInputField with data binding - content and configuration resolved from CMS data through dataSource.',
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
export const DataBindingAdvanced: Story = {
|
|
334
|
+
render: () => (
|
|
335
|
+
<QwickApp appId="html-input-data-advanced" appName='Advanced HtmlInputField Data Binding' dataSource={{ dataProvider }}>
|
|
336
|
+
<Box>
|
|
337
|
+
|
|
338
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
339
|
+
<Typography variant="h5" gutterBottom>🎯 Multiple Content Types</Typography>
|
|
340
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
341
|
+
Different HtmlInputField instances can load different content types and configurations from separate data sources.
|
|
342
|
+
</Typography>
|
|
343
|
+
</Box>
|
|
344
|
+
|
|
345
|
+
{/* Content Creation */}
|
|
346
|
+
<Box sx={{ mb: 4 }}>
|
|
347
|
+
<Typography variant="h4" gutterBottom>Content Creation</Typography>
|
|
348
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 800 }}>
|
|
349
|
+
<HtmlInputField dataSource="htmlInputFields.blog-content" />
|
|
350
|
+
<HtmlInputField dataSource="htmlInputFields.newsletter-intro" />
|
|
351
|
+
</Box>
|
|
352
|
+
</Box>
|
|
353
|
+
|
|
354
|
+
{/* Marketing Content */}
|
|
355
|
+
<Box sx={{ mb: 4 }}>
|
|
356
|
+
<Typography variant="h4" gutterBottom>Marketing & Sales</Typography>
|
|
357
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 800 }}>
|
|
358
|
+
<HtmlInputField dataSource="htmlInputFields.product-description" />
|
|
359
|
+
<HtmlInputField dataSource="htmlInputFields.testimonial-quote" />
|
|
360
|
+
<HtmlInputField dataSource="htmlInputFields.feature-highlight" />
|
|
361
|
+
</Box>
|
|
362
|
+
</Box>
|
|
363
|
+
|
|
364
|
+
{/* Communication */}
|
|
365
|
+
<Box sx={{ mb: 4 }}>
|
|
366
|
+
<Typography variant="h4" gutterBottom>Communication</Typography>
|
|
367
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 800 }}>
|
|
368
|
+
<HtmlInputField dataSource="htmlInputFields.email-signature" />
|
|
369
|
+
<HtmlInputField dataSource="htmlInputFields.announcement-banner" />
|
|
370
|
+
</Box>
|
|
371
|
+
</Box>
|
|
372
|
+
|
|
373
|
+
</Box>
|
|
374
|
+
</QwickApp>
|
|
375
|
+
),
|
|
376
|
+
parameters: {
|
|
377
|
+
docs: {
|
|
378
|
+
description: {
|
|
379
|
+
story: 'Advanced data binding with multiple HTML content types showcasing different configurations and use cases.',
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
},
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
export const DataBindingWithFallback: Story = {
|
|
386
|
+
render: () => (
|
|
387
|
+
<QwickApp appId="html-input-fallback" appName='HtmlInputField Data Binding with Fallback' dataSource={{ dataProvider }}>
|
|
388
|
+
<Box>
|
|
389
|
+
|
|
390
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
391
|
+
<Typography variant="h5" gutterBottom>🛡️ Fallback Support</Typography>
|
|
392
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
393
|
+
HtmlInputField components gracefully handle missing data sources with fallback configurations.
|
|
394
|
+
</Typography>
|
|
395
|
+
|
|
396
|
+
<Code title="Fallback Usage" language="tsx">{`<HtmlInputField
|
|
397
|
+
dataSource="nonexistent.field"
|
|
398
|
+
label="Fallback Editor"
|
|
399
|
+
placeholder="This is fallback content"
|
|
400
|
+
multiline={true}
|
|
401
|
+
rows={4}
|
|
402
|
+
/>`}</Code>
|
|
403
|
+
</Box>
|
|
404
|
+
|
|
405
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 4 }}>
|
|
406
|
+
<Box>
|
|
407
|
+
<Typography variant="h6" gutterBottom>Missing Data Source (Fallback)</Typography>
|
|
408
|
+
<HtmlInputField
|
|
409
|
+
dataSource="nonexistent.field"
|
|
410
|
+
label="Fallback Editor"
|
|
411
|
+
placeholder="This is fallback content..."
|
|
412
|
+
multiline={true}
|
|
413
|
+
rows={4}
|
|
414
|
+
/>
|
|
415
|
+
</Box>
|
|
416
|
+
<Box>
|
|
417
|
+
<Typography variant="h6" gutterBottom>Valid Data Source</Typography>
|
|
418
|
+
<HtmlInputField dataSource="htmlInputFields.blog-content" />
|
|
419
|
+
</Box>
|
|
420
|
+
</Box>
|
|
421
|
+
|
|
422
|
+
</Box>
|
|
423
|
+
</QwickApp>
|
|
424
|
+
),
|
|
425
|
+
parameters: {
|
|
426
|
+
docs: {
|
|
427
|
+
description: {
|
|
428
|
+
story: 'HtmlInputField with fallback configuration when dataSource is missing or unavailable.',
|
|
429
|
+
},
|
|
430
|
+
},
|
|
431
|
+
},
|
|
432
|
+
};
|
|
433
|
+
|
|
434
|
+
export const RealWorldExample: Story = {
|
|
435
|
+
render: () => (
|
|
436
|
+
<QwickApp appId="html-input-real-world" appName='Real World HtmlInputField Example' dataSource={{ dataProvider }}>
|
|
437
|
+
<Box>
|
|
438
|
+
|
|
439
|
+
{/* Content Management System */}
|
|
440
|
+
<Box sx={{ mb: 6, p: 4, backgroundColor: 'background.paper', borderRadius: 2 }}>
|
|
441
|
+
<Typography variant="h3" gutterBottom>Content Management</Typography>
|
|
442
|
+
<Typography variant="body1" sx={{ mb: 4, opacity: 0.8 }}>
|
|
443
|
+
Create and manage rich content with HTML formatting capabilities
|
|
444
|
+
</Typography>
|
|
445
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 4, maxWidth: 900 }}>
|
|
446
|
+
<HtmlInputField dataSource="htmlInputFields.blog-content" />
|
|
447
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: { xs: '1fr', md: '1fr 1fr' }, gap: 3 }}>
|
|
448
|
+
<HtmlInputField dataSource="htmlInputFields.product-description" />
|
|
449
|
+
<HtmlInputField dataSource="htmlInputFields.announcement-banner" />
|
|
450
|
+
</Box>
|
|
451
|
+
</Box>
|
|
452
|
+
</Box>
|
|
453
|
+
|
|
454
|
+
{/* Documentation Platform */}
|
|
455
|
+
<Box sx={{ mb: 6, p: 4, backgroundColor: 'primary.main', color: 'primary.contrastText', borderRadius: 2 }}>
|
|
456
|
+
<Typography variant="h3" gutterBottom>Documentation & Support</Typography>
|
|
457
|
+
<Typography variant="body1" sx={{ mb: 4, opacity: 0.9 }}>
|
|
458
|
+
Create technical documentation and support content with code formatting
|
|
459
|
+
</Typography>
|
|
460
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 4, maxWidth: 900 }}>
|
|
461
|
+
<HtmlInputField dataSource="htmlInputFields.code-snippet" />
|
|
462
|
+
<HtmlInputField dataSource="htmlInputFields.feature-highlight" />
|
|
463
|
+
</Box>
|
|
464
|
+
</Box>
|
|
465
|
+
|
|
466
|
+
{/* Event Management */}
|
|
467
|
+
<Box sx={{ mb: 6, p: 4, backgroundColor: 'background.paper', borderRadius: 2 }}>
|
|
468
|
+
<Typography variant="h3" gutterBottom>Event & Communication</Typography>
|
|
469
|
+
<Typography variant="body1" sx={{ mb: 4, opacity: 0.8 }}>
|
|
470
|
+
Manage event details, newsletters, and customer communications
|
|
471
|
+
</Typography>
|
|
472
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 4, maxWidth: 900 }}>
|
|
473
|
+
<HtmlInputField dataSource="htmlInputFields.event-details" />
|
|
474
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: { xs: '1fr', md: '1fr 1fr' }, gap: 3 }}>
|
|
475
|
+
<HtmlInputField dataSource="htmlInputFields.newsletter-intro" />
|
|
476
|
+
<HtmlInputField dataSource="htmlInputFields.email-signature" />
|
|
477
|
+
</Box>
|
|
478
|
+
</Box>
|
|
479
|
+
</Box>
|
|
480
|
+
|
|
481
|
+
{/* Customer Testimonials */}
|
|
482
|
+
<Box sx={{ p: 4, backgroundColor: 'secondary.main', color: 'secondary.contrastText', borderRadius: 2 }}>
|
|
483
|
+
<Typography variant="h3" gutterBottom>Customer Success</Typography>
|
|
484
|
+
<Typography variant="body1" sx={{ mb: 4, opacity: 0.9 }}>
|
|
485
|
+
Showcase customer testimonials and success stories
|
|
486
|
+
</Typography>
|
|
487
|
+
<Box sx={{ maxWidth: 700 }}>
|
|
488
|
+
<HtmlInputField dataSource="htmlInputFields.testimonial-quote" />
|
|
489
|
+
</Box>
|
|
490
|
+
</Box>
|
|
491
|
+
|
|
492
|
+
</Box>
|
|
493
|
+
</QwickApp>
|
|
494
|
+
),
|
|
495
|
+
parameters: {
|
|
496
|
+
docs: {
|
|
497
|
+
description: {
|
|
498
|
+
story: 'Real-world example showing HtmlInputField in various contexts: content management, documentation, events, and testimonials.',
|
|
499
|
+
},
|
|
500
|
+
},
|
|
501
|
+
},
|
|
502
|
+
};
|
|
503
|
+
|
|
504
|
+
export const EditorFeatureShowcase: Story = {
|
|
505
|
+
render: () => (
|
|
506
|
+
<QwickApp appId="html-input-features" appName='HTML Editor Features Showcase' dataSource={{ dataProvider }}>
|
|
507
|
+
<Box>
|
|
508
|
+
|
|
509
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
510
|
+
<Typography variant="h5" gutterBottom>🎨 Editor Features</Typography>
|
|
511
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
512
|
+
Comprehensive showcase of HtmlInputField features including formatting, preview, and various content types.
|
|
513
|
+
</Typography>
|
|
514
|
+
</Box>
|
|
515
|
+
|
|
516
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(400px, 1fr))', gap: 4 }}>
|
|
517
|
+
<Box>
|
|
518
|
+
<Typography variant="h6" gutterBottom>Rich Blog Content</Typography>
|
|
519
|
+
<HtmlInputField dataSource="htmlInputFields.blog-content" />
|
|
520
|
+
</Box>
|
|
521
|
+
|
|
522
|
+
<Box>
|
|
523
|
+
<Typography variant="h6" gutterBottom>Product Marketing</Typography>
|
|
524
|
+
<HtmlInputField dataSource="htmlInputFields.product-description" />
|
|
525
|
+
</Box>
|
|
526
|
+
|
|
527
|
+
<Box>
|
|
528
|
+
<Typography variant="h6" gutterBottom>Code Documentation</Typography>
|
|
529
|
+
<HtmlInputField dataSource="htmlInputFields.code-snippet" />
|
|
530
|
+
</Box>
|
|
531
|
+
|
|
532
|
+
<Box>
|
|
533
|
+
<Typography variant="h6" gutterBottom>Event Information</Typography>
|
|
534
|
+
<HtmlInputField dataSource="htmlInputFields.event-details" />
|
|
535
|
+
</Box>
|
|
536
|
+
|
|
537
|
+
<Box>
|
|
538
|
+
<Typography variant="h6" gutterBottom>Email Templates</Typography>
|
|
539
|
+
<HtmlInputField dataSource="htmlInputFields.email-signature" />
|
|
540
|
+
</Box>
|
|
541
|
+
|
|
542
|
+
<Box>
|
|
543
|
+
<Typography variant="h6" gutterBottom>Customer Feedback</Typography>
|
|
544
|
+
<HtmlInputField dataSource="htmlInputFields.testimonial-quote" />
|
|
545
|
+
</Box>
|
|
546
|
+
</Box>
|
|
547
|
+
|
|
548
|
+
</Box>
|
|
549
|
+
</QwickApp>
|
|
550
|
+
),
|
|
551
|
+
parameters: {
|
|
552
|
+
docs: {
|
|
553
|
+
description: {
|
|
554
|
+
story: 'Comprehensive showcase of HtmlInputField capabilities across different content types and use cases.',
|
|
555
|
+
},
|
|
556
|
+
},
|
|
557
|
+
},
|
|
558
|
+
};
|