@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,605 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SelectInputField Component Stories - Select dropdown 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 } from '../components/blocks';
|
|
11
|
+
import SelectInputField from '../components/input/SelectInputField';
|
|
12
|
+
import QwickApp from '../components/QwickApp';
|
|
13
|
+
|
|
14
|
+
// Sample select field data for different use cases
|
|
15
|
+
const sampleCmsData = {
|
|
16
|
+
'selectInputFields': {
|
|
17
|
+
'basic-dropdown': {
|
|
18
|
+
label: 'Country',
|
|
19
|
+
placeholder: 'Select your country',
|
|
20
|
+
required: true,
|
|
21
|
+
options: [
|
|
22
|
+
{ label: 'United States', value: 'us' },
|
|
23
|
+
{ label: 'Canada', value: 'ca' },
|
|
24
|
+
{ label: 'United Kingdom', value: 'uk' },
|
|
25
|
+
{ label: 'Germany', value: 'de' },
|
|
26
|
+
{ label: 'France', value: 'fr' },
|
|
27
|
+
{ label: 'Australia', value: 'au' },
|
|
28
|
+
{ label: 'Japan', value: 'jp' }
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
'user-role': {
|
|
32
|
+
label: 'User Role',
|
|
33
|
+
placeholder: 'Choose user role',
|
|
34
|
+
required: true,
|
|
35
|
+
helperText: 'Select the appropriate role for this user',
|
|
36
|
+
options: [
|
|
37
|
+
{ label: 'Administrator', value: 'admin' },
|
|
38
|
+
{ label: 'Editor', value: 'editor' },
|
|
39
|
+
{ label: 'Author', value: 'author' },
|
|
40
|
+
{ label: 'Contributor', value: 'contributor' },
|
|
41
|
+
{ label: 'Subscriber', value: 'subscriber' }
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
'product-category': {
|
|
45
|
+
label: 'Product Category',
|
|
46
|
+
placeholder: 'Select category',
|
|
47
|
+
helperText: 'Choose the most appropriate category',
|
|
48
|
+
options: [
|
|
49
|
+
{ label: 'Electronics', value: 'electronics' },
|
|
50
|
+
{ label: 'Clothing & Fashion', value: 'clothing' },
|
|
51
|
+
{ label: 'Home & Garden', value: 'home-garden' },
|
|
52
|
+
{ label: 'Books & Media', value: 'books-media' },
|
|
53
|
+
{ label: 'Sports & Outdoors', value: 'sports' },
|
|
54
|
+
{ label: 'Health & Beauty', value: 'health-beauty' }
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
'priority-level': {
|
|
58
|
+
label: 'Priority Level',
|
|
59
|
+
placeholder: 'Set priority',
|
|
60
|
+
required: true,
|
|
61
|
+
options: [
|
|
62
|
+
{ label: '🔥 Critical', value: 'critical' },
|
|
63
|
+
{ label: '⚡ High', value: 'high' },
|
|
64
|
+
{ label: '🟡 Medium', value: 'medium' },
|
|
65
|
+
{ label: '🔵 Low', value: 'low' },
|
|
66
|
+
{ label: '⚪ Minimal', value: 'minimal' }
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
'subscription-plan': {
|
|
70
|
+
label: 'Subscription Plan',
|
|
71
|
+
placeholder: 'Choose your plan',
|
|
72
|
+
required: true,
|
|
73
|
+
helperText: 'You can upgrade or downgrade at any time',
|
|
74
|
+
options: [
|
|
75
|
+
{ label: 'Free Plan - $0/month', value: 'free' },
|
|
76
|
+
{ label: 'Starter Plan - $9/month', value: 'starter' },
|
|
77
|
+
{ label: 'Professional Plan - $29/month', value: 'professional' },
|
|
78
|
+
{ label: 'Enterprise Plan - $99/month', value: 'enterprise' }
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
'language-preference': {
|
|
82
|
+
label: 'Language Preference',
|
|
83
|
+
placeholder: 'Select language',
|
|
84
|
+
helperText: 'Choose your preferred interface language',
|
|
85
|
+
options: [
|
|
86
|
+
{ label: '🇺🇸 English', value: 'en' },
|
|
87
|
+
{ label: '🇪🇸 Spanish', value: 'es' },
|
|
88
|
+
{ label: '🇫🇷 French', value: 'fr' },
|
|
89
|
+
{ label: '🇩🇪 German', value: 'de' },
|
|
90
|
+
{ label: '🇮🇹 Italian', value: 'it' },
|
|
91
|
+
{ label: '🇯🇵 Japanese', value: 'ja' },
|
|
92
|
+
{ label: '🇰🇷 Korean', value: 'ko' },
|
|
93
|
+
{ label: '🇨🇳 Chinese (Simplified)', value: 'zh-cn' }
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
'status-select': {
|
|
97
|
+
label: 'Status',
|
|
98
|
+
value: 'active',
|
|
99
|
+
options: [
|
|
100
|
+
{ label: '✅ Active', value: 'active' },
|
|
101
|
+
{ label: '⏸️ Pending', value: 'pending' },
|
|
102
|
+
{ label: '❌ Inactive', value: 'inactive' },
|
|
103
|
+
{ label: '🛑 Suspended', value: 'suspended' }
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
'disabled-select': {
|
|
107
|
+
label: 'Read-only Field',
|
|
108
|
+
value: 'locked-value',
|
|
109
|
+
disabled: true,
|
|
110
|
+
helperText: 'This field cannot be modified',
|
|
111
|
+
options: [
|
|
112
|
+
{ label: 'Locked Value', value: 'locked-value' },
|
|
113
|
+
{ label: 'Alternative Option', value: 'alt-option' }
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
'error-select': {
|
|
117
|
+
label: 'Department',
|
|
118
|
+
placeholder: 'Select department',
|
|
119
|
+
error: 'Please select a valid department',
|
|
120
|
+
required: true,
|
|
121
|
+
options: [
|
|
122
|
+
{ label: 'Engineering', value: 'engineering' },
|
|
123
|
+
{ label: 'Design', value: 'design' },
|
|
124
|
+
{ label: 'Marketing', value: 'marketing' },
|
|
125
|
+
{ label: 'Sales', value: 'sales' }
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
'numeric-options': {
|
|
129
|
+
label: 'Team Size',
|
|
130
|
+
placeholder: 'Select team size',
|
|
131
|
+
helperText: 'Approximate number of team members',
|
|
132
|
+
options: [
|
|
133
|
+
{ label: '1-5 people', value: 5 },
|
|
134
|
+
{ label: '6-10 people', value: 10 },
|
|
135
|
+
{ label: '11-25 people', value: 25 },
|
|
136
|
+
{ label: '26-50 people', value: 50 },
|
|
137
|
+
{ label: '51-100 people', value: 100 },
|
|
138
|
+
{ label: '100+ people', value: 999 }
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
const dataProvider = new JsonDataProvider({ data: sampleCmsData });
|
|
145
|
+
|
|
146
|
+
const meta = {
|
|
147
|
+
title: 'Forms/SelectInputField',
|
|
148
|
+
component: SelectInputField,
|
|
149
|
+
parameters: {
|
|
150
|
+
layout: 'padded',
|
|
151
|
+
docs: {
|
|
152
|
+
description: {
|
|
153
|
+
component: `SelectInputField is a dropdown select component with comprehensive features and data binding support for form building.
|
|
154
|
+
|
|
155
|
+
**Key Features:**
|
|
156
|
+
- **Flexible Options**: Support for string and numeric values with custom labels
|
|
157
|
+
- **Rich Option Display**: Support for emoji and formatted option labels
|
|
158
|
+
- **Validation States**: Built-in error handling and helper text display
|
|
159
|
+
- **Data Binding**: Full CMS integration through dataSource prop
|
|
160
|
+
- **Accessibility**: Complete ARIA support and keyboard navigation
|
|
161
|
+
- **Theme Integration**: Automatically uses QwickApp theme styling
|
|
162
|
+
- **Base Props**: Supports grid behavior and consistent styling patterns
|
|
163
|
+
- **Placeholder Support**: Configurable placeholder text for empty state
|
|
164
|
+
|
|
165
|
+
**Perfect For:**
|
|
166
|
+
- User role and permission selection
|
|
167
|
+
- Category and classification dropdowns
|
|
168
|
+
- Settings and preference selection
|
|
169
|
+
- Status and priority selection
|
|
170
|
+
- Language and region selection
|
|
171
|
+
- Any single-choice selection requirement`,
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
tags: ['autodocs'],
|
|
176
|
+
} satisfies Meta<typeof SelectInputField>;
|
|
177
|
+
|
|
178
|
+
export default meta;
|
|
179
|
+
type Story = StoryObj<typeof SelectInputField>;
|
|
180
|
+
|
|
181
|
+
// Traditional Usage Examples
|
|
182
|
+
export const BasicDropdown: Story = {
|
|
183
|
+
render: () => (
|
|
184
|
+
<QwickApp appId="select-basic" appName='Basic Select'>
|
|
185
|
+
<SelectInputField
|
|
186
|
+
label="Country"
|
|
187
|
+
placeholder="Select your country"
|
|
188
|
+
options={[
|
|
189
|
+
{ label: 'United States', value: 'us' },
|
|
190
|
+
{ label: 'Canada', value: 'ca' },
|
|
191
|
+
{ label: 'United Kingdom', value: 'uk' },
|
|
192
|
+
{ label: 'Germany', value: 'de' }
|
|
193
|
+
]}
|
|
194
|
+
onChange={(value) => console.log('Country selected:', value)}
|
|
195
|
+
/>
|
|
196
|
+
</QwickApp>
|
|
197
|
+
),
|
|
198
|
+
parameters: {
|
|
199
|
+
docs: {
|
|
200
|
+
description: {
|
|
201
|
+
story: 'Basic select dropdown with country options.',
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
export const WithIcons: Story = {
|
|
208
|
+
render: () => (
|
|
209
|
+
<QwickApp appId="select-icons" appName='Select with Icons'>
|
|
210
|
+
<SelectInputField
|
|
211
|
+
label="Priority Level"
|
|
212
|
+
placeholder="Set priority"
|
|
213
|
+
options={[
|
|
214
|
+
{ label: '🔥 Critical', value: 'critical' },
|
|
215
|
+
{ label: '⚡ High', value: 'high' },
|
|
216
|
+
{ label: '🟡 Medium', value: 'medium' },
|
|
217
|
+
{ label: '🔵 Low', value: 'low' },
|
|
218
|
+
{ label: '⚪ Minimal', value: 'minimal' }
|
|
219
|
+
]}
|
|
220
|
+
onChange={(value) => console.log('Priority selected:', value)}
|
|
221
|
+
/>
|
|
222
|
+
</QwickApp>
|
|
223
|
+
),
|
|
224
|
+
parameters: {
|
|
225
|
+
docs: {
|
|
226
|
+
description: {
|
|
227
|
+
story: 'Select dropdown with emoji icons in option labels.',
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
export const NumericValues: Story = {
|
|
234
|
+
render: () => (
|
|
235
|
+
<QwickApp appId="select-numeric" appName='Select with Numeric Values'>
|
|
236
|
+
<SelectInputField
|
|
237
|
+
label="Team Size"
|
|
238
|
+
placeholder="Select team size"
|
|
239
|
+
helperText="Approximate number of team members"
|
|
240
|
+
options={[
|
|
241
|
+
{ label: '1-5 people', value: 5 },
|
|
242
|
+
{ label: '6-10 people', value: 10 },
|
|
243
|
+
{ label: '11-25 people', value: 25 },
|
|
244
|
+
{ label: '26-50 people', value: 50 },
|
|
245
|
+
{ label: '100+ people', value: 999 }
|
|
246
|
+
]}
|
|
247
|
+
onChange={(value) => console.log('Team size selected:', value)}
|
|
248
|
+
/>
|
|
249
|
+
</QwickApp>
|
|
250
|
+
),
|
|
251
|
+
parameters: {
|
|
252
|
+
docs: {
|
|
253
|
+
description: {
|
|
254
|
+
story: 'Select dropdown with numeric values and descriptive labels.',
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
export const WithHelperText: Story = {
|
|
261
|
+
render: () => (
|
|
262
|
+
<QwickApp appId="select-helper" appName='Select with Helper Text'>
|
|
263
|
+
<SelectInputField
|
|
264
|
+
label="Subscription Plan"
|
|
265
|
+
placeholder="Choose your plan"
|
|
266
|
+
required={true}
|
|
267
|
+
helperText="You can upgrade or downgrade at any time"
|
|
268
|
+
options={[
|
|
269
|
+
{ label: 'Free Plan - $0/month', value: 'free' },
|
|
270
|
+
{ label: 'Starter Plan - $9/month', value: 'starter' },
|
|
271
|
+
{ label: 'Professional Plan - $29/month', value: 'professional' },
|
|
272
|
+
{ label: 'Enterprise Plan - $99/month', value: 'enterprise' }
|
|
273
|
+
]}
|
|
274
|
+
onChange={(value) => console.log('Plan selected:', value)}
|
|
275
|
+
/>
|
|
276
|
+
</QwickApp>
|
|
277
|
+
),
|
|
278
|
+
parameters: {
|
|
279
|
+
docs: {
|
|
280
|
+
description: {
|
|
281
|
+
story: 'Select dropdown with helper text and pricing information.',
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
export const States: Story = {
|
|
288
|
+
render: () => (
|
|
289
|
+
<QwickApp appId="select-states" appName='Select Field States'>
|
|
290
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 500 }}>
|
|
291
|
+
<SelectInputField
|
|
292
|
+
label="Normal State"
|
|
293
|
+
placeholder="Select an option"
|
|
294
|
+
options={[
|
|
295
|
+
{ label: 'Option 1', value: 'option1' },
|
|
296
|
+
{ label: 'Option 2', value: 'option2' },
|
|
297
|
+
{ label: 'Option 3', value: 'option3' }
|
|
298
|
+
]}
|
|
299
|
+
onChange={(value) => console.log('Normal selected:', value)}
|
|
300
|
+
/>
|
|
301
|
+
|
|
302
|
+
<SelectInputField
|
|
303
|
+
label="Required Field"
|
|
304
|
+
placeholder="This field is required"
|
|
305
|
+
required={true}
|
|
306
|
+
options={[
|
|
307
|
+
{ label: 'Option A', value: 'a' },
|
|
308
|
+
{ label: 'Option B', value: 'b' }
|
|
309
|
+
]}
|
|
310
|
+
onChange={(value) => console.log('Required selected:', value)}
|
|
311
|
+
/>
|
|
312
|
+
|
|
313
|
+
<SelectInputField
|
|
314
|
+
label="Pre-selected Value"
|
|
315
|
+
value="active"
|
|
316
|
+
options={[
|
|
317
|
+
{ label: '✅ Active', value: 'active' },
|
|
318
|
+
{ label: '❌ Inactive', value: 'inactive' }
|
|
319
|
+
]}
|
|
320
|
+
onChange={(value) => console.log('Pre-selected changed:', value)}
|
|
321
|
+
/>
|
|
322
|
+
|
|
323
|
+
<SelectInputField
|
|
324
|
+
label="Disabled Field"
|
|
325
|
+
value="locked"
|
|
326
|
+
disabled={true}
|
|
327
|
+
options={[
|
|
328
|
+
{ label: 'Locked Value', value: 'locked' },
|
|
329
|
+
{ label: 'Alternative', value: 'alt' }
|
|
330
|
+
]}
|
|
331
|
+
/>
|
|
332
|
+
|
|
333
|
+
<SelectInputField
|
|
334
|
+
label="Error State"
|
|
335
|
+
placeholder="Select a department"
|
|
336
|
+
error="Please select a valid department"
|
|
337
|
+
options={[
|
|
338
|
+
{ label: 'Engineering', value: 'eng' },
|
|
339
|
+
{ label: 'Design', value: 'design' },
|
|
340
|
+
{ label: 'Marketing', value: 'marketing' }
|
|
341
|
+
]}
|
|
342
|
+
onChange={(value) => console.log('Error field selected:', value)}
|
|
343
|
+
/>
|
|
344
|
+
</Box>
|
|
345
|
+
</QwickApp>
|
|
346
|
+
),
|
|
347
|
+
parameters: {
|
|
348
|
+
docs: {
|
|
349
|
+
description: {
|
|
350
|
+
story: 'Different select field states including normal, required, pre-selected, disabled, and error states.',
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
},
|
|
354
|
+
};
|
|
355
|
+
|
|
356
|
+
// Data Binding Examples
|
|
357
|
+
export const DataBindingBasic: Story = {
|
|
358
|
+
render: () => (
|
|
359
|
+
<QwickApp appId="select-data-binding" appName='SelectInputField Data Binding' dataSource={{ dataProvider }}>
|
|
360
|
+
<Box>
|
|
361
|
+
|
|
362
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
363
|
+
<Typography variant="h5" gutterBottom>📊 Data-Driven Select</Typography>
|
|
364
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
365
|
+
SelectInputField components can be completely driven by CMS data, loading options and configuration from your data source.
|
|
366
|
+
</Typography>
|
|
367
|
+
|
|
368
|
+
<Code title="Usage" language="tsx">{`<SelectInputField dataSource="selectInputFields.basic-dropdown" />`}</Code>
|
|
369
|
+
|
|
370
|
+
<Code title="Data Structure" language="json">{JSON.stringify(sampleCmsData.selectInputFields['basic-dropdown'], null, 2)}</Code>
|
|
371
|
+
</Box>
|
|
372
|
+
|
|
373
|
+
<SelectInputField dataSource="selectInputFields.basic-dropdown" />
|
|
374
|
+
|
|
375
|
+
</Box>
|
|
376
|
+
</QwickApp>
|
|
377
|
+
),
|
|
378
|
+
parameters: {
|
|
379
|
+
docs: {
|
|
380
|
+
description: {
|
|
381
|
+
story: 'SelectInputField with data binding - options and configuration resolved from CMS data through dataSource.',
|
|
382
|
+
},
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
export const DataBindingAdvanced: Story = {
|
|
388
|
+
render: () => (
|
|
389
|
+
<QwickApp appId="select-data-advanced" appName='Advanced SelectInputField Data Binding' dataSource={{ dataProvider }}>
|
|
390
|
+
<Box>
|
|
391
|
+
|
|
392
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
393
|
+
<Typography variant="h5" gutterBottom>🎯 Multiple Select Types</Typography>
|
|
394
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
395
|
+
Different SelectInputField instances can load different option sets and configurations from separate data sources.
|
|
396
|
+
</Typography>
|
|
397
|
+
</Box>
|
|
398
|
+
|
|
399
|
+
{/* User Management */}
|
|
400
|
+
<Box sx={{ mb: 4 }}>
|
|
401
|
+
<Typography variant="h4" gutterBottom>User Management</Typography>
|
|
402
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 500 }}>
|
|
403
|
+
<SelectInputField dataSource="selectInputFields.user-role" />
|
|
404
|
+
<SelectInputField dataSource="selectInputFields.status-select" />
|
|
405
|
+
<SelectInputField dataSource="selectInputFields.language-preference" />
|
|
406
|
+
</Box>
|
|
407
|
+
</Box>
|
|
408
|
+
|
|
409
|
+
{/* Business Settings */}
|
|
410
|
+
<Box sx={{ mb: 4 }}>
|
|
411
|
+
<Typography variant="h4" gutterBottom>Business Configuration</Typography>
|
|
412
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 500 }}>
|
|
413
|
+
<SelectInputField dataSource="selectInputFields.subscription-plan" />
|
|
414
|
+
<SelectInputField dataSource="selectInputFields.numeric-options" />
|
|
415
|
+
<SelectInputField dataSource="selectInputFields.basic-dropdown" />
|
|
416
|
+
</Box>
|
|
417
|
+
</Box>
|
|
418
|
+
|
|
419
|
+
{/* Project Management */}
|
|
420
|
+
<Box sx={{ mb: 4 }}>
|
|
421
|
+
<Typography variant="h4" gutterBottom>Project Settings</Typography>
|
|
422
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 500 }}>
|
|
423
|
+
<SelectInputField dataSource="selectInputFields.priority-level" />
|
|
424
|
+
<SelectInputField dataSource="selectInputFields.product-category" />
|
|
425
|
+
<SelectInputField dataSource="selectInputFields.error-select" />
|
|
426
|
+
</Box>
|
|
427
|
+
</Box>
|
|
428
|
+
|
|
429
|
+
</Box>
|
|
430
|
+
</QwickApp>
|
|
431
|
+
),
|
|
432
|
+
parameters: {
|
|
433
|
+
docs: {
|
|
434
|
+
description: {
|
|
435
|
+
story: 'Advanced data binding with multiple select types showcasing different option sets and configurations.',
|
|
436
|
+
},
|
|
437
|
+
},
|
|
438
|
+
},
|
|
439
|
+
};
|
|
440
|
+
|
|
441
|
+
export const DataBindingWithFallback: Story = {
|
|
442
|
+
render: () => (
|
|
443
|
+
<QwickApp appId="select-fallback" appName='SelectInputField Data Binding with Fallback' dataSource={{ dataProvider }}>
|
|
444
|
+
<Box>
|
|
445
|
+
|
|
446
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
447
|
+
<Typography variant="h5" gutterBottom>🛡️ Fallback Support</Typography>
|
|
448
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
449
|
+
SelectInputField components gracefully handle missing data sources with fallback options.
|
|
450
|
+
</Typography>
|
|
451
|
+
|
|
452
|
+
<Code title="Fallback Usage" language="tsx">{`<SelectInputField
|
|
453
|
+
dataSource="nonexistent.field"
|
|
454
|
+
label="Fallback Select"
|
|
455
|
+
placeholder="Choose option"
|
|
456
|
+
options={[
|
|
457
|
+
{ label: 'Fallback Option 1', value: 'fb1' },
|
|
458
|
+
{ label: 'Fallback Option 2', value: 'fb2' }
|
|
459
|
+
]}
|
|
460
|
+
/>`}</Code>
|
|
461
|
+
</Box>
|
|
462
|
+
|
|
463
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 4 }}>
|
|
464
|
+
<Box>
|
|
465
|
+
<Typography variant="h6" gutterBottom>Missing Data Source (Fallback)</Typography>
|
|
466
|
+
<SelectInputField
|
|
467
|
+
dataSource="nonexistent.field"
|
|
468
|
+
label="Fallback Select"
|
|
469
|
+
placeholder="Choose option"
|
|
470
|
+
options={[
|
|
471
|
+
{ label: 'Fallback Option 1', value: 'fb1' },
|
|
472
|
+
{ label: 'Fallback Option 2', value: 'fb2' }
|
|
473
|
+
]}
|
|
474
|
+
/>
|
|
475
|
+
</Box>
|
|
476
|
+
<Box>
|
|
477
|
+
<Typography variant="h6" gutterBottom>Valid Data Source</Typography>
|
|
478
|
+
<SelectInputField dataSource="selectInputFields.basic-dropdown" />
|
|
479
|
+
</Box>
|
|
480
|
+
</Box>
|
|
481
|
+
|
|
482
|
+
</Box>
|
|
483
|
+
</QwickApp>
|
|
484
|
+
),
|
|
485
|
+
parameters: {
|
|
486
|
+
docs: {
|
|
487
|
+
description: {
|
|
488
|
+
story: 'SelectInputField with fallback options when dataSource is missing or unavailable.',
|
|
489
|
+
},
|
|
490
|
+
},
|
|
491
|
+
},
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
export const RealWorldExample: Story = {
|
|
495
|
+
render: () => (
|
|
496
|
+
<QwickApp appId="select-real-world" appName='Real World SelectInputField Example' dataSource={{ dataProvider }}>
|
|
497
|
+
<Box>
|
|
498
|
+
|
|
499
|
+
{/* User Profile Setup */}
|
|
500
|
+
<Box sx={{ mb: 6, p: 4, backgroundColor: 'background.paper', borderRadius: 2 }}>
|
|
501
|
+
<Typography variant="h3" gutterBottom>User Profile Setup</Typography>
|
|
502
|
+
<Typography variant="body1" sx={{ mb: 4, opacity: 0.8 }}>
|
|
503
|
+
Configure your account settings and preferences
|
|
504
|
+
</Typography>
|
|
505
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: { xs: '1fr', md: '1fr 1fr' }, gap: 3, maxWidth: 800 }}>
|
|
506
|
+
<SelectInputField dataSource="selectInputFields.basic-dropdown" />
|
|
507
|
+
<SelectInputField dataSource="selectInputFields.language-preference" />
|
|
508
|
+
<SelectInputField dataSource="selectInputFields.user-role" />
|
|
509
|
+
<SelectInputField dataSource="selectInputFields.subscription-plan" />
|
|
510
|
+
</Box>
|
|
511
|
+
</Box>
|
|
512
|
+
|
|
513
|
+
{/* Project Management Dashboard */}
|
|
514
|
+
<Box sx={{ mb: 6, p: 4, backgroundColor: 'primary.main', color: 'primary.contrastText', borderRadius: 2 }}>
|
|
515
|
+
<Typography variant="h3" gutterBottom>Project Configuration</Typography>
|
|
516
|
+
<Typography variant="body1" sx={{ mb: 4, opacity: 0.9 }}>
|
|
517
|
+
Set up your project parameters and team settings
|
|
518
|
+
</Typography>
|
|
519
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: { xs: '1fr', md: '1fr 1fr 1fr' }, gap: 3, maxWidth: 1000 }}>
|
|
520
|
+
<SelectInputField dataSource="selectInputFields.priority-level" />
|
|
521
|
+
<SelectInputField dataSource="selectInputFields.product-category" />
|
|
522
|
+
<SelectInputField dataSource="selectInputFields.numeric-options" />
|
|
523
|
+
</Box>
|
|
524
|
+
</Box>
|
|
525
|
+
|
|
526
|
+
{/* System Administration */}
|
|
527
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper', borderRadius: 2 }}>
|
|
528
|
+
<Typography variant="h3" gutterBottom>System Administration</Typography>
|
|
529
|
+
<Typography variant="body1" sx={{ mb: 4, opacity: 0.8 }}>
|
|
530
|
+
Manage system-wide settings and user permissions
|
|
531
|
+
</Typography>
|
|
532
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 500 }}>
|
|
533
|
+
<SelectInputField dataSource="selectInputFields.status-select" />
|
|
534
|
+
<SelectInputField dataSource="selectInputFields.disabled-select" />
|
|
535
|
+
<SelectInputField dataSource="selectInputFields.error-select" />
|
|
536
|
+
</Box>
|
|
537
|
+
</Box>
|
|
538
|
+
|
|
539
|
+
</Box>
|
|
540
|
+
</QwickApp>
|
|
541
|
+
),
|
|
542
|
+
parameters: {
|
|
543
|
+
docs: {
|
|
544
|
+
description: {
|
|
545
|
+
story: 'Real-world example showing SelectInputField in various contexts: user profiles, project management, and system administration.',
|
|
546
|
+
},
|
|
547
|
+
},
|
|
548
|
+
},
|
|
549
|
+
};
|
|
550
|
+
|
|
551
|
+
export const OptionsShowcase: Story = {
|
|
552
|
+
render: () => (
|
|
553
|
+
<QwickApp appId="select-showcase" appName='SelectInputField Options Showcase' dataSource={{ dataProvider }}>
|
|
554
|
+
<Box>
|
|
555
|
+
|
|
556
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
557
|
+
<Typography variant="h5" gutterBottom>🎨 Options Showcase</Typography>
|
|
558
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
559
|
+
SelectInputField supports various option formats including icons, pricing, status indicators, and numeric values.
|
|
560
|
+
</Typography>
|
|
561
|
+
</Box>
|
|
562
|
+
|
|
563
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(350px, 1fr))', gap: 4 }}>
|
|
564
|
+
<Box>
|
|
565
|
+
<Typography variant="h6" gutterBottom>Basic Text Options</Typography>
|
|
566
|
+
<SelectInputField dataSource="selectInputFields.basic-dropdown" />
|
|
567
|
+
</Box>
|
|
568
|
+
|
|
569
|
+
<Box>
|
|
570
|
+
<Typography variant="h6" gutterBottom>Icon-Enhanced Options</Typography>
|
|
571
|
+
<SelectInputField dataSource="selectInputFields.priority-level" />
|
|
572
|
+
</Box>
|
|
573
|
+
|
|
574
|
+
<Box>
|
|
575
|
+
<Typography variant="h6" gutterBottom>Pricing Options</Typography>
|
|
576
|
+
<SelectInputField dataSource="selectInputFields.subscription-plan" />
|
|
577
|
+
</Box>
|
|
578
|
+
|
|
579
|
+
<Box>
|
|
580
|
+
<Typography variant="h6" gutterBottom>Status Indicators</Typography>
|
|
581
|
+
<SelectInputField dataSource="selectInputFields.status-select" />
|
|
582
|
+
</Box>
|
|
583
|
+
|
|
584
|
+
<Box>
|
|
585
|
+
<Typography variant="h6" gutterBottom>Numeric Values</Typography>
|
|
586
|
+
<SelectInputField dataSource="selectInputFields.numeric-options" />
|
|
587
|
+
</Box>
|
|
588
|
+
|
|
589
|
+
<Box>
|
|
590
|
+
<Typography variant="h6" gutterBottom>Multi-language Options</Typography>
|
|
591
|
+
<SelectInputField dataSource="selectInputFields.language-preference" />
|
|
592
|
+
</Box>
|
|
593
|
+
</Box>
|
|
594
|
+
|
|
595
|
+
</Box>
|
|
596
|
+
</QwickApp>
|
|
597
|
+
),
|
|
598
|
+
parameters: {
|
|
599
|
+
docs: {
|
|
600
|
+
description: {
|
|
601
|
+
story: 'Comprehensive showcase of different SelectInputField option formats and styles.',
|
|
602
|
+
},
|
|
603
|
+
},
|
|
604
|
+
},
|
|
605
|
+
};
|