@qwickapps/react-framework 1.4.0 → 1.4.2
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/QUICK_START_GUIDE.md +82 -0
- package/README.md +231 -21
- package/dist/components/Html.d.ts.map +1 -1
- package/dist/components/Markdown.d.ts +1 -2
- package/dist/components/Markdown.d.ts.map +1 -1
- package/dist/components/SafeSpan.d.ts +1 -2
- package/dist/components/SafeSpan.d.ts.map +1 -1
- package/dist/components/base/Container.d.ts +32 -0
- package/dist/components/base/Container.d.ts.map +1 -0
- package/dist/components/base/ContainerView.d.ts +65 -0
- package/dist/components/base/ContainerView.d.ts.map +1 -0
- package/dist/components/base/ModelView.d.ts +37 -46
- package/dist/components/base/ModelView.d.ts.map +1 -1
- package/dist/components/base/index.d.ts +3 -2
- package/dist/components/base/index.d.ts.map +1 -1
- package/dist/components/blocks/Article.d.ts +1 -2
- package/dist/components/blocks/Article.d.ts.map +1 -1
- package/dist/components/blocks/Code-factory.d.ts +22 -0
- package/dist/components/blocks/Code-factory.d.ts.map +1 -0
- package/dist/components/blocks/Code-old.d.ts +31 -0
- package/dist/components/blocks/Code-old.d.ts.map +1 -0
- package/dist/components/blocks/Code.d.ts +30 -18
- package/dist/components/blocks/Code.d.ts.map +1 -1
- package/dist/components/blocks/HeroBlock.d.ts +1 -2
- package/dist/components/blocks/HeroBlock.d.ts.map +1 -1
- package/dist/components/blocks/Image.d.ts +1 -2
- package/dist/components/blocks/Image.d.ts.map +1 -1
- package/dist/components/blocks/Section.d.ts +1 -2
- package/dist/components/blocks/Section.d.ts.map +1 -1
- package/dist/components/blocks/Text.d.ts +35 -27
- package/dist/components/blocks/Text.d.ts.map +1 -1
- package/dist/components/buttons/Button.d.ts +1 -2
- package/dist/components/buttons/Button.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/input/ChoiceInputField.d.ts +1 -2
- package/dist/components/input/ChoiceInputField.d.ts.map +1 -1
- package/dist/components/input/HtmlInputField.d.ts +1 -2
- package/dist/components/input/HtmlInputField.d.ts.map +1 -1
- package/dist/components/input/SelectInputField.d.ts +1 -2
- package/dist/components/input/SelectInputField.d.ts.map +1 -1
- package/dist/components/pages/Page.d.ts +29 -47
- package/dist/components/pages/Page.d.ts.map +1 -1
- package/dist/components/pages/index.d.ts +2 -3
- package/dist/components/pages/index.d.ts.map +1 -1
- package/dist/components/shared/createSerializableView.d.ts +68 -0
- package/dist/components/shared/createSerializableView.d.ts.map +1 -0
- package/dist/components/shared/viewProps.d.ts +37 -0
- package/dist/components/shared/viewProps.d.ts.map +1 -0
- package/dist/index.esm.js +21782 -22580
- package/dist/index.js +21782 -22579
- package/dist/qa/ConsoleWarningTest.d.ts +5 -0
- package/dist/qa/ConsoleWarningTest.d.ts.map +1 -0
- package/dist/qa/StorageKeyTest.d.ts +6 -0
- package/dist/qa/StorageKeyTest.d.ts.map +1 -0
- package/dist/qa/ThemeStorageKeyTest.d.ts +6 -0
- package/dist/qa/ThemeStorageKeyTest.d.ts.map +1 -0
- package/dist/schemas/CodeSchema.d.ts +2 -2
- package/dist/schemas/CodeSchema.d.ts.map +1 -1
- package/dist/schemas/ContainerSchema.d.ts +12 -0
- package/dist/schemas/ContainerSchema.d.ts.map +1 -0
- package/dist/schemas/PageTemplateSchema.d.ts +3 -3
- package/dist/schemas/PageTemplateSchema.d.ts.map +1 -1
- package/dist/schemas/ViewModelSchema.d.ts +46 -6
- package/dist/schemas/ViewModelSchema.d.ts.map +1 -1
- package/dist/schemas/ViewSchema.d.ts +65 -0
- package/dist/schemas/ViewSchema.d.ts.map +1 -0
- package/dist/schemas/index.d.ts +1 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/transformers/ComponentTransformer.d.ts +27 -15
- package/dist/schemas/transformers/ComponentTransformer.d.ts.map +1 -1
- package/dist/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -1
- package/dist/schemas/transformers/registry.d.ts +3 -0
- package/dist/schemas/transformers/registry.d.ts.map +1 -1
- package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts +66 -0
- package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +1 -0
- package/dist/src/components/AccessibilityChecker.d.ts +12 -0
- package/dist/src/components/AccessibilityChecker.d.ts.map +1 -0
- package/dist/src/components/AccessibilityProvider.d.ts +64 -0
- package/dist/src/components/AccessibilityProvider.d.ts.map +1 -0
- package/dist/src/components/Breadcrumbs.d.ts +39 -0
- package/dist/src/components/Breadcrumbs.d.ts.map +1 -0
- package/dist/src/components/ErrorBoundary.d.ts +46 -0
- package/dist/src/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/src/components/Html.d.ts +58 -0
- package/dist/src/components/Html.d.ts.map +1 -0
- package/dist/src/components/Logo.d.ts +56 -0
- package/dist/src/components/Logo.d.ts.map +1 -0
- package/dist/src/components/Markdown.d.ts +51 -0
- package/dist/src/components/Markdown.d.ts.map +1 -0
- package/dist/src/components/QwickApp.d.ts +69 -0
- package/dist/src/components/QwickApp.d.ts.map +1 -0
- package/dist/src/components/QwickAppsLogo.d.ts +25 -0
- package/dist/src/components/QwickAppsLogo.d.ts.map +1 -0
- package/dist/src/components/QwickIcon.d.ts +23 -0
- package/dist/src/components/QwickIcon.d.ts.map +1 -0
- package/dist/src/components/ResponsiveMenu.d.ts +38 -0
- package/dist/src/components/ResponsiveMenu.d.ts.map +1 -0
- package/dist/src/components/SafeSpan.d.ts +29 -0
- package/dist/src/components/SafeSpan.d.ts.map +1 -0
- package/dist/src/components/Scaffold.d.ts +57 -0
- package/dist/src/components/Scaffold.d.ts.map +1 -0
- package/dist/src/components/base/Container.d.ts +33 -0
- package/dist/src/components/base/Container.d.ts.map +1 -0
- package/dist/src/components/base/ModelView.d.ts +92 -0
- package/dist/src/components/base/ModelView.d.ts.map +1 -0
- package/dist/src/components/base/index.d.ts +12 -0
- package/dist/src/components/base/index.d.ts.map +1 -0
- package/dist/src/components/blocks/Article.d.ts +32 -0
- package/dist/src/components/blocks/Article.d.ts.map +1 -0
- package/dist/src/components/blocks/CardListGrid.d.ts +23 -0
- package/dist/src/components/blocks/CardListGrid.d.ts.map +1 -0
- package/dist/src/components/blocks/Code.d.ts +37 -0
- package/dist/src/components/blocks/Code.d.ts.map +1 -0
- package/dist/src/components/blocks/Content.d.ts +24 -0
- package/dist/src/components/blocks/Content.d.ts.map +1 -0
- package/dist/src/components/blocks/CoverImageHeader.d.ts +44 -0
- package/dist/src/components/blocks/CoverImageHeader.d.ts.map +1 -0
- package/dist/src/components/blocks/FeatureCard.d.ts +66 -0
- package/dist/src/components/blocks/FeatureCard.d.ts.map +1 -0
- package/dist/src/components/blocks/FeatureGrid.d.ts +48 -0
- package/dist/src/components/blocks/FeatureGrid.d.ts.map +1 -0
- package/dist/src/components/blocks/Footer.d.ts +56 -0
- package/dist/src/components/blocks/Footer.d.ts.map +1 -0
- package/dist/src/components/blocks/HeroBlock.d.ts +55 -0
- package/dist/src/components/blocks/HeroBlock.d.ts.map +1 -0
- package/dist/src/components/blocks/Image.d.ts +40 -0
- package/dist/src/components/blocks/Image.d.ts.map +1 -0
- package/dist/src/components/blocks/PageBannerHeader.d.ts +30 -0
- package/dist/src/components/blocks/PageBannerHeader.d.ts.map +1 -0
- package/dist/src/components/blocks/ProductCard.d.ts +57 -0
- package/dist/src/components/blocks/ProductCard.d.ts.map +1 -0
- package/dist/src/components/blocks/Section.d.ts +45 -0
- package/dist/src/components/blocks/Section.d.ts.map +1 -0
- package/dist/src/components/blocks/Text.d.ts +34 -0
- package/dist/src/components/blocks/Text.d.ts.map +1 -0
- package/dist/src/components/blocks/index.d.ts +41 -0
- package/dist/src/components/blocks/index.d.ts.map +1 -0
- package/dist/src/components/buttons/Button.d.ts +41 -0
- package/dist/src/components/buttons/Button.d.ts.map +1 -0
- package/dist/src/components/buttons/PaletteSwitcher.d.ts +24 -0
- package/dist/src/components/buttons/PaletteSwitcher.d.ts.map +1 -0
- package/dist/src/components/buttons/ThemeSwitcher.d.ts +24 -0
- package/dist/src/components/buttons/ThemeSwitcher.d.ts.map +1 -0
- package/dist/src/components/buttons/index.d.ts +11 -0
- package/dist/src/components/buttons/index.d.ts.map +1 -0
- package/dist/src/components/forms/FormBlock.d.ts +51 -0
- package/dist/src/components/forms/FormBlock.d.ts.map +1 -0
- package/dist/src/components/forms/index.d.ts +8 -0
- package/dist/src/components/forms/index.d.ts.map +1 -0
- package/dist/src/components/index.d.ts +41 -0
- package/dist/src/components/index.d.ts.map +1 -0
- package/dist/src/components/input/ChoiceInputField.d.ts +29 -0
- package/dist/src/components/input/ChoiceInputField.d.ts.map +1 -0
- package/dist/src/components/input/HtmlInputField.d.ts +33 -0
- package/dist/src/components/input/HtmlInputField.d.ts.map +1 -0
- package/dist/src/components/input/SelectInputField.d.ts +31 -0
- package/dist/src/components/input/SelectInputField.d.ts.map +1 -0
- package/dist/src/components/input/SwitchInputField.d.ts +27 -0
- package/dist/src/components/input/SwitchInputField.d.ts.map +1 -0
- package/dist/src/components/input/TextField.d.ts +18 -0
- package/dist/src/components/input/TextField.d.ts.map +1 -0
- package/dist/src/components/input/TextInputField.d.ts +34 -0
- package/dist/src/components/input/TextInputField.d.ts.map +1 -0
- package/dist/src/components/input/index.d.ts +19 -0
- package/dist/src/components/input/index.d.ts.map +1 -0
- package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts +34 -0
- package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts.map +1 -0
- package/dist/src/components/layout/CollapsibleLayout/index.d.ts +9 -0
- package/dist/src/components/layout/CollapsibleLayout/index.d.ts.map +1 -0
- package/dist/src/components/layout/GridCell.d.ts +32 -0
- package/dist/src/components/layout/GridCell.d.ts.map +1 -0
- package/dist/src/components/layout/GridCellWrapper.d.ts +46 -0
- package/dist/src/components/layout/GridCellWrapper.d.ts.map +1 -0
- package/dist/src/components/layout/GridLayout.d.ts +50 -0
- package/dist/src/components/layout/GridLayout.d.ts.map +1 -0
- package/dist/src/components/layout/index.d.ts +14 -0
- package/dist/src/components/layout/index.d.ts.map +1 -0
- package/dist/src/components/menu/Menu.d.ts +1 -0
- package/dist/src/components/menu/Menu.d.ts.map +1 -0
- package/dist/src/components/menu/MenuItem.d.ts +31 -0
- package/dist/src/components/menu/MenuItem.d.ts.map +1 -0
- package/dist/src/components/menu/index.d.ts +7 -0
- package/dist/src/components/menu/index.d.ts.map +1 -0
- package/dist/src/components/pages/FormPage.d.ts +66 -0
- package/dist/src/components/pages/FormPage.d.ts.map +1 -0
- package/dist/src/components/pages/Page.d.ts +68 -0
- package/dist/src/components/pages/Page.d.ts.map +1 -0
- package/dist/src/components/pages/index.d.ts +10 -0
- package/dist/src/components/pages/index.d.ts.map +1 -0
- package/dist/src/components/shared/createSerializableView.d.ts +81 -0
- package/dist/src/components/shared/createSerializableView.d.ts.map +1 -0
- package/dist/src/components/shared/viewProps.d.ts +37 -0
- package/dist/src/components/shared/viewProps.d.ts.map +1 -0
- package/dist/src/config/AppConfig.d.ts +49 -0
- package/dist/src/config/AppConfig.d.ts.map +1 -0
- package/dist/src/config/AppConfigBuilder.d.ts +75 -0
- package/dist/src/config/AppConfigBuilder.d.ts.map +1 -0
- package/dist/src/config/index.d.ts +13 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/types.d.ts +130 -0
- package/dist/src/config/types.d.ts.map +1 -0
- package/dist/src/config.d.ts +15 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/contexts/DataContext.d.ts +139 -0
- package/dist/src/contexts/DataContext.d.ts.map +1 -0
- package/dist/src/contexts/DimensionsContext.d.ts +42 -0
- package/dist/src/contexts/DimensionsContext.d.ts.map +1 -0
- package/dist/src/contexts/PaletteContext.d.ts +53 -0
- package/dist/src/contexts/PaletteContext.d.ts.map +1 -0
- package/dist/src/contexts/PrintModeContext.d.ts +27 -0
- package/dist/src/contexts/PrintModeContext.d.ts.map +1 -0
- package/dist/src/contexts/QwickAppContext.d.ts +71 -0
- package/dist/src/contexts/QwickAppContext.d.ts.map +1 -0
- package/dist/src/contexts/ThemeContext.d.ts +65 -0
- package/dist/src/contexts/ThemeContext.d.ts.map +1 -0
- package/dist/src/contexts/index.d.ts +11 -0
- package/dist/src/contexts/index.d.ts.map +1 -0
- package/dist/src/hooks/index.d.ts +12 -0
- package/dist/src/hooks/index.d.ts.map +1 -0
- package/dist/src/hooks/useBaseProps.d.ts +101 -0
- package/dist/src/hooks/useBaseProps.d.ts.map +1 -0
- package/dist/src/hooks/useDataBinding.d.ts +22 -0
- package/dist/src/hooks/useDataBinding.d.ts.map +1 -0
- package/dist/src/hooks/usePrintMode.d.ts +39 -0
- package/dist/src/hooks/usePrintMode.d.ts.map +1 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/palettes/PaletteAutumn.d.ts +10 -0
- package/dist/src/palettes/PaletteAutumn.d.ts.map +1 -0
- package/dist/src/palettes/PaletteCosmic.d.ts +10 -0
- package/dist/src/palettes/PaletteCosmic.d.ts.map +1 -0
- package/dist/src/palettes/PaletteDefault.d.ts +10 -0
- package/dist/src/palettes/PaletteDefault.d.ts.map +1 -0
- package/dist/src/palettes/PaletteOcean.d.ts +10 -0
- package/dist/src/palettes/PaletteOcean.d.ts.map +1 -0
- package/dist/src/palettes/PaletteSpring.d.ts +10 -0
- package/dist/src/palettes/PaletteSpring.d.ts.map +1 -0
- package/dist/src/palettes/PaletteWinter.d.ts +10 -0
- package/dist/src/palettes/PaletteWinter.d.ts.map +1 -0
- package/dist/src/palettes/index.d.ts +13 -0
- package/dist/src/palettes/index.d.ts.map +1 -0
- package/dist/src/schemas/ActionSchema.d.ts +21 -0
- package/dist/src/schemas/ActionSchema.d.ts.map +1 -0
- package/dist/src/schemas/ArticleSchema.d.ts +13 -0
- package/dist/src/schemas/ArticleSchema.d.ts.map +1 -0
- package/dist/src/schemas/ButtonSchema.d.ts +19 -0
- package/dist/src/schemas/ButtonSchema.d.ts.map +1 -0
- package/dist/src/schemas/CardListGridSchema.d.ts +17 -0
- package/dist/src/schemas/CardListGridSchema.d.ts.map +1 -0
- package/dist/src/schemas/ChoiceInputFieldSchema.d.ts +18 -0
- package/dist/src/schemas/ChoiceInputFieldSchema.d.ts.map +1 -0
- package/dist/src/schemas/CodeSchema.d.ts +18 -0
- package/dist/src/schemas/CodeSchema.d.ts.map +1 -0
- package/dist/src/schemas/CollapsibleLayoutSchema.d.ts +32 -0
- package/dist/src/schemas/CollapsibleLayoutSchema.d.ts.map +1 -0
- package/dist/src/schemas/ContainerSchema.d.ts +12 -0
- package/dist/src/schemas/ContainerSchema.d.ts.map +1 -0
- package/dist/src/schemas/ContentSchema.d.ts +21 -0
- package/dist/src/schemas/ContentSchema.d.ts.map +1 -0
- package/dist/src/schemas/CoverImageHeaderSchema.d.ts +28 -0
- package/dist/src/schemas/CoverImageHeaderSchema.d.ts.map +1 -0
- package/dist/src/schemas/FeatureCardSchema.d.ts +28 -0
- package/dist/src/schemas/FeatureCardSchema.d.ts.map +1 -0
- package/dist/src/schemas/FeatureGridSchema.d.ts +17 -0
- package/dist/src/schemas/FeatureGridSchema.d.ts.map +1 -0
- package/dist/src/schemas/FeatureItemSchema.d.ts +16 -0
- package/dist/src/schemas/FeatureItemSchema.d.ts.map +1 -0
- package/dist/src/schemas/FooterItemSchema.d.ts +15 -0
- package/dist/src/schemas/FooterItemSchema.d.ts.map +1 -0
- package/dist/src/schemas/FooterSchema.d.ts +20 -0
- package/dist/src/schemas/FooterSchema.d.ts.map +1 -0
- package/dist/src/schemas/FooterSectionSchema.d.ts +15 -0
- package/dist/src/schemas/FooterSectionSchema.d.ts.map +1 -0
- package/dist/src/schemas/FormBlockSchema.d.ts +19 -0
- package/dist/src/schemas/FormBlockSchema.d.ts.map +1 -0
- package/dist/src/schemas/GridCellSchema.d.ts +23 -0
- package/dist/src/schemas/GridCellSchema.d.ts.map +1 -0
- package/dist/src/schemas/GridLayoutSchema.d.ts +21 -0
- package/dist/src/schemas/GridLayoutSchema.d.ts.map +1 -0
- package/dist/src/schemas/HeaderActionSchema.d.ts +17 -0
- package/dist/src/schemas/HeaderActionSchema.d.ts.map +1 -0
- package/dist/src/schemas/HeroBlockSchema.d.ts +22 -0
- package/dist/src/schemas/HeroBlockSchema.d.ts.map +1 -0
- package/dist/src/schemas/HtmlInputFieldSchema.d.ts +18 -0
- package/dist/src/schemas/HtmlInputFieldSchema.d.ts.map +1 -0
- package/dist/src/schemas/HtmlSchema.d.ts +14 -0
- package/dist/src/schemas/HtmlSchema.d.ts.map +1 -0
- package/dist/src/schemas/ImageSchema.d.ts +32 -0
- package/dist/src/schemas/ImageSchema.d.ts.map +1 -0
- package/dist/src/schemas/LogoSchema.d.ts +35 -0
- package/dist/src/schemas/LogoSchema.d.ts.map +1 -0
- package/dist/src/schemas/MarkdownSchema.d.ts +14 -0
- package/dist/src/schemas/MarkdownSchema.d.ts.map +1 -0
- package/dist/src/schemas/MetadataItemSchema.d.ts +13 -0
- package/dist/src/schemas/MetadataItemSchema.d.ts.map +1 -0
- package/dist/src/schemas/PageBannerHeaderSchema.d.ts +28 -0
- package/dist/src/schemas/PageBannerHeaderSchema.d.ts.map +1 -0
- package/dist/src/schemas/PageTemplateSchema.d.ts +31 -0
- package/dist/src/schemas/PageTemplateSchema.d.ts.map +1 -0
- package/dist/src/schemas/PaletteSwitcherSchema.d.ts +16 -0
- package/dist/src/schemas/PaletteSwitcherSchema.d.ts.map +1 -0
- package/dist/src/schemas/PrintConfigSchema.d.ts +31 -0
- package/dist/src/schemas/PrintConfigSchema.d.ts.map +1 -0
- package/dist/src/schemas/ProductCardSchema.d.ts +39 -0
- package/dist/src/schemas/ProductCardSchema.d.ts.map +1 -0
- package/dist/src/schemas/SafeSpanSchema.d.ts +13 -0
- package/dist/src/schemas/SafeSpanSchema.d.ts.map +1 -0
- package/dist/src/schemas/SectionSchema.d.ts +16 -0
- package/dist/src/schemas/SectionSchema.d.ts.map +1 -0
- package/dist/src/schemas/SelectInputFieldSchema.d.ts +27 -0
- package/dist/src/schemas/SelectInputFieldSchema.d.ts.map +1 -0
- package/dist/src/schemas/SwitchInputFieldSchema.d.ts +18 -0
- package/dist/src/schemas/SwitchInputFieldSchema.d.ts.map +1 -0
- package/dist/src/schemas/TextInputFieldSchema.d.ts +22 -0
- package/dist/src/schemas/TextInputFieldSchema.d.ts.map +1 -0
- package/dist/src/schemas/TextSchema.d.ts +37 -0
- package/dist/src/schemas/TextSchema.d.ts.map +1 -0
- package/dist/src/schemas/ThemeSwitcherSchema.d.ts +19 -0
- package/dist/src/schemas/ThemeSwitcherSchema.d.ts.map +1 -0
- package/dist/src/schemas/ViewSchema.d.ts +66 -0
- package/dist/src/schemas/ViewSchema.d.ts.map +1 -0
- package/dist/src/schemas/index.d.ts +47 -0
- package/dist/src/schemas/index.d.ts.map +1 -0
- package/dist/src/schemas/transformers/ComponentTransformer.d.ts +128 -0
- package/dist/src/schemas/transformers/ComponentTransformer.d.ts.map +1 -0
- package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts +53 -0
- package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -0
- package/dist/src/schemas/transformers/registry.d.ts +18 -0
- package/dist/src/schemas/transformers/registry.d.ts.map +1 -0
- package/dist/src/schemas/types/Serializable.d.ts +46 -0
- package/dist/src/schemas/types/Serializable.d.ts.map +1 -0
- package/dist/src/stories/_templates/SerializationTemplate.d.ts +44 -0
- package/dist/src/stories/_templates/SerializationTemplate.d.ts.map +1 -0
- package/dist/src/templates/TemplateResolver.d.ts +52 -0
- package/dist/src/templates/TemplateResolver.d.ts.map +1 -0
- package/dist/src/templates/index.d.ts +7 -0
- package/dist/src/templates/index.d.ts.map +1 -0
- package/dist/src/types/CacheProvider.d.ts +18 -0
- package/dist/src/types/CacheProvider.d.ts.map +1 -0
- package/dist/src/types/CollapsibleLayout.d.ts +142 -0
- package/dist/src/types/CollapsibleLayout.d.ts.map +1 -0
- package/dist/src/types/ContentProxy.d.ts +47 -0
- package/dist/src/types/ContentProxy.d.ts.map +1 -0
- package/dist/src/types/DataTypes.d.ts +185 -0
- package/dist/src/types/DataTypes.d.ts.map +1 -0
- package/dist/src/types/TemplateProvider.d.ts +10 -0
- package/dist/src/types/TemplateProvider.d.ts.map +1 -0
- package/dist/src/types/TemplateResolver.d.ts +23 -0
- package/dist/src/types/TemplateResolver.d.ts.map +1 -0
- package/dist/src/types/index.d.ts +82 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/utils/breakpoints.d.ts +35 -0
- package/dist/src/utils/breakpoints.d.ts.map +1 -0
- package/dist/src/utils/cssUtils.d.ts +17 -0
- package/dist/src/utils/cssUtils.d.ts.map +1 -0
- package/dist/src/utils/customPaletteManager.d.ts +8 -0
- package/dist/src/utils/customPaletteManager.d.ts.map +1 -0
- package/dist/src/utils/dimensions.d.ts +34 -0
- package/dist/src/utils/dimensions.d.ts.map +1 -0
- package/dist/src/utils/htmlTransform.d.ts +44 -0
- package/dist/src/utils/htmlTransform.d.ts.map +1 -0
- package/dist/src/utils/index.d.ts +16 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/logger.d.ts +26 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/paletteUtils.d.ts +38 -0
- package/dist/src/utils/paletteUtils.d.ts.map +1 -0
- package/dist/src/utils/persistenceUtils.d.ts +31 -0
- package/dist/src/utils/persistenceUtils.d.ts.map +1 -0
- package/dist/src/utils/reactUtils.d.ts +33 -0
- package/dist/src/utils/reactUtils.d.ts.map +1 -0
- package/dist/src/utils/spacing.d.ts +34 -0
- package/dist/src/utils/spacing.d.ts.map +1 -0
- package/dist/src/utils/themePerformanceMonitor.d.ts +32 -0
- package/dist/src/utils/themePerformanceMonitor.d.ts.map +1 -0
- package/dist/src/utils/themeUtils.d.ts +27 -0
- package/dist/src/utils/themeUtils.d.ts.map +1 -0
- package/dist/utils/cssUtils.d.ts +17 -0
- package/dist/utils/cssUtils.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +5 -2
- package/scripts/bundle-css.cjs +27 -0
- package/scripts/create-project.sh +28 -0
- package/scripts/create-qwickapps-project.js +284 -0
- package/src/__tests__/components/base/Container.test.tsx +966 -0
- package/src/__tests__/schemas/PageTemplateSchema.test.ts +1 -1
- package/src/__tests__/schemas/ViewSchema.test.ts +805 -0
- package/src/__tests__/schemas/builders.test.ts +2 -2
- package/src/__tests__/schemas/transformers/ComponentTransformer.test.ts +19 -19
- package/src/__tests__/schemas/transformers/CrossBrowserCompatibility.test.ts +13 -13
- package/src/__tests__/schemas/transformers/SerializationErrorHandling.test.ts +39 -39
- package/src/__tests__/schemas/transformers/SerializationPerformance.test.ts +14 -14
- package/src/__tests__/schemas/transformers/TestAutomation.test.ts +8 -8
- package/src/__tests__/schemas/transformers/nested-serialization.test.tsx +181 -0
- package/src/__tests__/schemas/transformers/round-trip-component-serialization.test.tsx +458 -0
- package/src/__tests__/test_image_accessibility.test.tsx +226 -0
- package/src/__tests__/utils/optional-logging.test.ts +3 -3
- package/src/components/Html.tsx +24 -15
- package/src/components/Logo.tsx +2 -2
- package/src/components/Markdown.tsx +2 -7
- package/src/components/SafeSpan.tsx +2 -7
- package/src/components/base/Container.tsx +61 -0
- package/src/components/base/ModelView.tsx +225 -91
- package/src/components/base/index.ts +3 -2
- package/src/components/blocks/Article.tsx +2 -7
- package/src/components/blocks/CardListGrid.tsx +2 -2
- package/src/components/blocks/Code.tsx +91 -179
- package/src/components/blocks/Content.tsx +2 -2
- package/src/components/blocks/CoverImageHeader.tsx +2 -2
- package/src/components/blocks/HeroBlock.tsx +54 -146
- package/src/components/blocks/Image.tsx +82 -196
- package/src/components/blocks/PageBannerHeader.tsx +2 -2
- package/src/components/blocks/Section.tsx +79 -181
- package/src/components/blocks/Text.tsx +100 -198
- package/src/components/buttons/Button.tsx +85 -183
- package/src/components/buttons/PaletteSwitcher.tsx +2 -2
- package/src/components/buttons/ThemeSwitcher.tsx +2 -2
- package/src/components/forms/FormBlock.tsx +2 -2
- package/src/components/index.ts +5 -0
- package/src/components/input/ChoiceInputField.tsx +76 -160
- package/src/components/input/HtmlInputField.tsx +141 -264
- package/src/components/input/SelectInputField.tsx +48 -153
- package/src/components/input/SwitchInputField.tsx +41 -139
- package/src/components/input/TextInputField.tsx +39 -116
- package/src/components/layout/GridCell.tsx +36 -122
- package/src/components/layout/GridLayout.tsx +55 -127
- package/src/components/pages/Page.tsx +268 -276
- package/src/components/pages/index.ts +2 -3
- package/src/components/shared/createSerializableView.tsx +280 -0
- package/src/components/shared/viewProps.ts +207 -0
- package/src/config/__tests__/AppConfigBuilder.test.ts +2 -2
- package/src/contexts/DataContext.tsx +1 -1
- package/src/schemas/ButtonSchema.ts +3 -2
- package/src/schemas/CardListGridSchema.ts +3 -2
- package/src/schemas/ChoiceInputFieldSchema.ts +3 -2
- package/src/schemas/CodeSchema.ts +8 -6
- package/src/schemas/ContainerSchema.ts +25 -0
- package/src/schemas/FeatureCardSchema.ts +1 -1
- package/src/schemas/FormBlockSchema.ts +3 -2
- package/src/schemas/GridCellSchema.ts +4 -10
- package/src/schemas/GridLayoutSchema.ts +8 -14
- package/src/schemas/HeroBlockSchema.ts +3 -2
- package/src/schemas/HtmlInputFieldSchema.ts +3 -2
- package/src/schemas/ImageSchema.ts +3 -2
- package/src/schemas/PageTemplateSchema.ts +5 -5
- package/src/schemas/SectionSchema.ts +4 -12
- package/src/schemas/SelectInputFieldSchema.ts +3 -2
- package/src/schemas/SwitchInputFieldSchema.ts +2 -2
- package/src/schemas/TextInputFieldSchema.ts +3 -2
- package/src/schemas/ViewSchema.ts +570 -0
- package/src/schemas/index.ts +1 -1
- package/src/schemas/transformers/ComponentTransformer.ts +185 -163
- package/src/schemas/transformers/ReactNodeTransformer.ts +31 -28
- package/src/schemas/transformers/registry.ts +17 -10
- package/src/stories/Button.stories.tsx +24 -0
- package/src/stories/ChoiceInputField.stories.tsx +28 -1
- package/src/stories/Code.stories.tsx +61 -1
- package/src/stories/Container.stories.tsx +954 -0
- package/src/stories/FormBlock.stories.tsx +54 -0
- package/src/stories/FormComponents.stories.tsx +8 -13
- package/src/stories/GridCell.stories.tsx +23 -64
- package/src/stories/GridLayout.stories.tsx +22 -47
- package/src/stories/HeroBlock.stories.tsx +28 -0
- package/src/stories/HtmlInputField.stories.tsx +23 -1
- package/src/stories/Image.stories.tsx +45 -233
- package/src/stories/Markdown.stories.tsx +1 -1
- package/src/stories/Section.stories.tsx +38 -4
- package/src/stories/SelectInputField.stories.tsx +26 -1
- package/src/stories/Text.stories.tsx +22 -54
- package/src/stories/TextInputField.stories.tsx +24 -1
- package/src/stories/_templates/SerializationTemplate.tsx +165 -0
- package/src/templates/TemplateResolver.ts +2 -2
- package/src/types/CollapsibleLayout.ts +2 -2
- package/src/utils/cssUtils.ts +49 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/logger.ts +13 -13
- package/src/__tests__/components/base/ModelView.test.tsx +0 -220
- package/src/__tests__/schemas/ViewModelSchema.test.ts +0 -80
- package/src/components/blocks/Code.md +0 -529
- package/src/schemas/README.md +0 -661
- package/src/schemas/ViewModelSchema.ts +0 -115
- package/src/tests/ConsoleWarningTest.tsx +0 -30
- package/src/tests/StorageKeyTest.tsx +0 -110
- package/src/tests/ThemeStorageKeyTest.tsx +0 -114
package/README.md
CHANGED
|
@@ -4,15 +4,48 @@ A complete React framework for building modern, responsive applications with int
|
|
|
4
4
|
|
|
5
5
|
## What's New
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### September 29, 2025 - Production Ready Release (v1.4.2)
|
|
8
|
+
|
|
9
|
+
- **NPM Publishing Ready**: Package prepared for official NPM distribution with optimized build configuration and comprehensive exports
|
|
10
|
+
- **Enhanced Build System**: Improved rollup configuration with both development and production builds, automatic CSS bundling, and TypeScript declarations
|
|
11
|
+
- **Complete API Exports**: All framework components, utilities, and configuration modules properly exported for external consumption
|
|
12
|
+
- **Project Creation Scripts**: Included automated project scaffolding tools for rapid QwickApps React Framework adoption
|
|
13
|
+
- **Storybook Integration**: Full component documentation and interactive examples ready for developers
|
|
14
|
+
- **Production Optimizations**: Stripped logging in production builds, optimized bundle sizes, and enhanced performance characteristics
|
|
15
|
+
- **Publishing Pipeline**: Configured with proper package metadata, repository links, and NPM publishing workflows
|
|
16
|
+
|
|
17
|
+
### September 13, 2025 - Schema-Driven Factory Pattern Architecture Completed ✅
|
|
18
|
+
|
|
19
|
+
- **Phase 2 Migration Complete**: Successfully migrated 10+ core components to schema-driven factory pattern with 100% feature parity maintained
|
|
20
|
+
- **Factory Pattern Architecture**: Complete implementation of `createSerializableView` factory generating functional components with static serialization methods
|
|
21
|
+
- **Container vs View Components**: Clear architectural distinction established - Container components (Section, HeroBlock, GridLayout) use `react-children` strategy, View components use appropriate serialization patterns
|
|
22
|
+
- **Security Enhancement**: Content-prop strategy from Phase 1 successfully maintained, preventing JSON deserialization vulnerabilities
|
|
23
|
+
- **Schema Integration**: Components extend ViewSchema or ContainerSchema for standardized prop definitions with existing BaseComponentProps compatibility
|
|
24
|
+
- **QA Results**: All unit tests updated and passing, all Storybook stories rendering correctly, serialization round-trip tests working, build passes successfully
|
|
25
|
+
- **Component Roster**: Section, HeroBlock, GridLayout, GridCell, Image, Button, TextInputField, SelectInputField, HtmlInputField, ChoiceInputField, SwitchInputField migrated
|
|
26
|
+
- **Performance**: All components maintain sub-millisecond serialization performance, factory pattern establishes foundation for future development
|
|
27
|
+
- **Architecture Ready**: Phase 3 cleanup now ready to remove ModelView legacy code and complete transition to modern schema-driven architecture
|
|
28
|
+
|
|
29
|
+
### September 9, 2025 - Advanced Print System with Professional Layout Control (v1.4.1)
|
|
30
|
+
|
|
31
|
+
- **Complete Print View System**: Professional print functionality for React Framework with intelligent detection, dynamic configuration, and sophisticated print layouts
|
|
32
|
+
- **Multi-Channel Print Detection**: Browser event integration (Ctrl+P/Cmd+P), and manual print mode controls with comprehensive state management
|
|
33
|
+
- **Advanced Print Configuration**: Complete PrintConfigSchema with theme control (light/dark), palette selection, monochrome optimization, and interactive element hiding
|
|
34
|
+
- **Dynamic Header/Footer System**: ReactNode | string support for print headers and footers with separate first-page variants, automatic height measurement, and CSS variable-driven positioning
|
|
35
|
+
- **Edge-to-Edge Printing**: Configurable page margins (0mm, 6mm, 12mm, 20mm, 25mm) with automatic CSS class application and complete borderless printing capabilities
|
|
36
|
+
- **Print Background Control**: Full background image/color support for printed pages with separate first-page backgrounds and professional document styling
|
|
37
|
+
- **CSS Variable Architecture**: Dynamic injection of print-specific variables (--print-header-height, --print-footer-height, --print-background) with automatic @page rule generation
|
|
38
|
+
- **Schema-Driven Architecture**: Complete integration with PageTemplateSchema for CMS-managed print configurations and serializable page content
|
|
39
|
+
|
|
40
|
+
### September 5, 2025 - Component Serialization System ("WebView for React")
|
|
8
41
|
|
|
9
42
|
- **Complete Component Serialization**: Full "WebView for React" functionality enabling components to be serialized to JSON and reconstructed while preserving functionality
|
|
10
43
|
- **Data Binding Preservation**: Serialization system seamlessly preserves data binding configuration across serialize/deserialize cycles
|
|
11
44
|
- **Code Component Reference Implementation**: Code component serves as the canonical example with <1ms serialization performance and comprehensive ReactNode handling
|
|
12
|
-
- **Image Component
|
|
13
|
-
- **Text Component
|
|
45
|
+
- **Image Component Schema Integration**: Image component successfully converted to Schema architecture with 300-500x performance targets exceeded and 100% backward compatibility
|
|
46
|
+
- **Text Component Schema Integration**: Text component successfully converted to Schema architecture with 125-500x performance targets exceeded, comprehensive typography serialization, and 96.3% test coverage
|
|
14
47
|
- **HeroBlock Component Complex Serialization**: **First component with nested component serialization** - HeroBlock successfully converted with Button actions array support and 500x performance targets exceeded (0.0009ms basic, 0.0058ms complex serialization)
|
|
15
|
-
- **GridLayout & GridCell Components**: **First responsive grid system with complete serialization** - GridLayout and GridCell components successfully converted to
|
|
48
|
+
- **GridLayout & GridCell Components**: **First responsive grid system with complete serialization** - GridLayout and GridCell components successfully converted to Schema with 3-169x performance targets exceeded and complete responsive breakpoint preservation
|
|
16
49
|
- **Responsive Grid Breakthrough**: GridLayout and GridCell establish patterns for responsive layout serialization with all breakpoint configurations (xs,sm,md,lg,xl) preserved through serialization cycles
|
|
17
50
|
- **Complex Layout Support**: GridLayout handles 1-6 column responsive layouts with nested GridCell components, maintaining complete functionality after reconstruction
|
|
18
51
|
- **Nested Component Breakthrough**: HeroBlock establishes architectural patterns for complex components with nested React elements, demonstrating serialization system capability for sophisticated component hierarchies
|
|
@@ -28,8 +61,8 @@ A complete React framework for building modern, responsive applications with int
|
|
|
28
61
|
- **Preventive Lint Rule**: Repo now enforces a custom `no-inline-component-wrapper` ESLint rule (scoped rollout) to block reintroduction of the remount pattern.
|
|
29
62
|
- **Internal Refactor Only**: No public API changes; safe patch update.
|
|
30
63
|
|
|
31
|
-
|
|
32
64
|
### September 2, 2025 - Built-in Error Handling & Accessibility
|
|
65
|
+
|
|
33
66
|
- **Automatic Error Boundaries**: QwickApp now automatically wraps all content with ErrorBoundary for robust error handling
|
|
34
67
|
- **Built-in Accessibility**: AccessibilityProvider automatically included for WCAG 2.1 AA compliance
|
|
35
68
|
- **Generic Components**: Moved ErrorBoundary, AccessibilityProvider, and Breadcrumbs to framework level
|
|
@@ -37,12 +70,14 @@ A complete React framework for building modern, responsive applications with int
|
|
|
37
70
|
- **Zero Configuration**: Error handling and accessibility features work out-of-the-box with QwickApp
|
|
38
71
|
|
|
39
72
|
### September 1, 2025 - Optional Dependencies & Performance
|
|
73
|
+
|
|
40
74
|
- **Optional Logging**: Made `@qwickapps/logging` an optional dependency with console fallback
|
|
41
75
|
- **Reduced Bundle Size**: Core framework no longer includes logging overhead by default
|
|
42
76
|
- **React Error Fixes**: Fixed React error #62 in Markdown mixed content scenarios
|
|
43
77
|
- **DOM Nesting**: Added automatic cleanup of invalid DOM nesting from marked.js output
|
|
44
78
|
|
|
45
79
|
### August 31, 2025 - CMS Content Components
|
|
80
|
+
|
|
46
81
|
- **Html Component**: Transform HTML strings into React components with configurable transformation rules
|
|
47
82
|
- **Markdown Component**: Convert Markdown to React components using marked library with Html component integration
|
|
48
83
|
- **Transform System**: Extensible HTML transformation architecture with optimized rule sets for Article and Markdown content
|
|
@@ -51,12 +86,14 @@ A complete React framework for building modern, responsive applications with int
|
|
|
51
86
|
## Features
|
|
52
87
|
|
|
53
88
|
### 🧭 **Responsive Navigation**
|
|
89
|
+
|
|
54
90
|
- **Mobile**: Bottom navigation bar for touch-friendly access
|
|
55
91
|
- **Tablet**: Expandable nav rail with collapsible sidebar
|
|
56
92
|
- **Desktop**: Top navigation with overflow drawer
|
|
57
93
|
- **Automatic**: Adapts based on screen size without configuration
|
|
58
94
|
|
|
59
95
|
### 📐 **Flexible Layout System**
|
|
96
|
+
|
|
60
97
|
- **Hero Blocks**: Full-width hero sections with background images/gradients
|
|
61
98
|
- **Multi-Column Layouts**: Responsive 2-5 column layouts with equal heights
|
|
62
99
|
- **Content Blocks**: Styled containers with variants (elevated, outlined, filled)
|
|
@@ -65,12 +102,14 @@ A complete React framework for building modern, responsive applications with int
|
|
|
65
102
|
- **CollapsibleLayout**: Advanced expandable/collapsible containers with state management
|
|
66
103
|
|
|
67
104
|
### 🎨 **Advanced Theming**
|
|
105
|
+
|
|
68
106
|
- **Theme Management**: Light, dark, and system theme support
|
|
69
107
|
- **Color Palettes**: Multiple built-in palettes (Ocean, Autumn, Spring, Winter)
|
|
70
108
|
- **CSS Variables**: Dynamic theme switching without re-renders
|
|
71
109
|
- **Custom Palettes**: Easy to create and integrate custom color schemes
|
|
72
110
|
|
|
73
111
|
### 🧩 **Component Library**
|
|
112
|
+
|
|
74
113
|
- **Logo Component**: Dynamic, customizable logos with badges and animations
|
|
75
114
|
- **Theme Controls**: Built-in theme and palette switchers
|
|
76
115
|
- **Form Components**: Accessible, themed form inputs with complete serialization support
|
|
@@ -82,9 +121,10 @@ A complete React framework for building modern, responsive applications with int
|
|
|
82
121
|
- **Transform System**: Extensible HTML element transformation with fallback handling
|
|
83
122
|
|
|
84
123
|
### 🔄 **Component Serialization System**
|
|
124
|
+
|
|
85
125
|
- **"WebView for React" Functionality**: Serialize React components to JSON and reconstruct with full functionality preserved
|
|
86
126
|
- **Complete Form Serialization**: **First form state management serialization system** - All form components preserve controlled component state, validation rules, and error handling
|
|
87
|
-
- **Production-Ready Components**: 11 components with complete
|
|
127
|
+
- **Production-Ready Components**: 11 components with complete Schema architecture and comprehensive QA validation (Code, Image, Text, HeroBlock, GridLayout, GridCell, TextInputField, SelectInputField, HtmlInputField, ChoiceInputField, SwitchInputField, FormBlock)
|
|
88
128
|
- **Form Components Innovation**: TextInputField, SelectInputField, HtmlInputField, ChoiceInputField, SwitchInputField, and FormBlock with 97.5% test pass rate and 0.4ms average serialization
|
|
89
129
|
- **Complex Form Data Handling**: Options arrays, HTML content, validation configurations, choice fields, and boolean controls fully supported through serialization
|
|
90
130
|
- **Production Form Workflows**: Complete form creation, editing, validation, and submission workflows preserved through serialize/deserialize cycles
|
|
@@ -99,13 +139,15 @@ A complete React framework for building modern, responsive applications with int
|
|
|
99
139
|
- **Cross-Platform**: Consistent serialization across all major browsers and environments
|
|
100
140
|
|
|
101
141
|
### 🛡️ **Built-in Error Handling & Accessibility**
|
|
142
|
+
|
|
102
143
|
- **ErrorBoundary**: Automatic error catching with user-friendly fallback UI and retry functionality
|
|
103
144
|
- **AccessibilityProvider**: WCAG 2.1 AA compliance with system preference detection and ARIA announcements
|
|
104
145
|
- **Breadcrumbs**: Accessible navigation hierarchy with keyboard support and customization
|
|
105
146
|
- **Automatic Integration**: All features automatically enabled in QwickApp without configuration
|
|
106
147
|
|
|
107
148
|
### 📄 **Serializable Page System with Advanced Print Support**
|
|
108
|
-
|
|
149
|
+
|
|
150
|
+
- **Schema-Driven Architecture**: Complete page templates with ViewSchema, PrintConfigSchema, and PageTemplateSchema for full serialization
|
|
109
151
|
- **Intelligent Print Detection**: Automatic print mode activation via browser events (Ctrl+P/Cmd+P) with comprehensive state management
|
|
110
152
|
- **Advanced Print Configuration**: Complete print theming system with headers, footers, backgrounds, page margins (0mm-25mm), and CSS variable-driven positioning
|
|
111
153
|
- **Dynamic Print Layout**: Edge-to-edge printing capabilities with configurable page margins, automatic height measurement, and proper page break handling
|
|
@@ -115,6 +157,7 @@ A complete React framework for building modern, responsive applications with int
|
|
|
115
157
|
- **Page Context System**: Automatic QwickApp scaffolding integration with print-aware navigation and routing
|
|
116
158
|
|
|
117
159
|
### 🚀 **Developer Experience**
|
|
160
|
+
|
|
118
161
|
- **TypeScript First**: Full TypeScript support with comprehensive types
|
|
119
162
|
- **Storybook**: Interactive component documentation
|
|
120
163
|
- **Performance**: Optimized rendering and minimal bundle size
|
|
@@ -122,8 +165,31 @@ A complete React framework for building modern, responsive applications with int
|
|
|
122
165
|
|
|
123
166
|
## Installation
|
|
124
167
|
|
|
168
|
+
### 🚀 Quick Start (Recommended)
|
|
169
|
+
|
|
170
|
+
**Create a new QwickApps project in one command:**
|
|
171
|
+
|
|
125
172
|
```bash
|
|
126
|
-
|
|
173
|
+
npx @qwickapps/react-framework/scripts/create-qwickapps-project my-qwickapps-project
|
|
174
|
+
cd my-qwickapps-project
|
|
175
|
+
npm start
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
This will:
|
|
179
|
+
|
|
180
|
+
1. Create a new React app with TypeScript
|
|
181
|
+
2. Install QwickApps React Framework and all dependencies
|
|
182
|
+
3. Set up a complete QwickApps application template
|
|
183
|
+
4. Start the development server
|
|
184
|
+
|
|
185
|
+
Your app will be running at `http://localhost:3000` with QwickApps pre-configured!
|
|
186
|
+
|
|
187
|
+
### 📦 Manual Installation
|
|
188
|
+
|
|
189
|
+
If you have an existing React project, install the framework manually:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
npm install @qwickapps/react-framework @emotion/react @emotion/styled @mui/material @mui/icons-material react-router-dom
|
|
127
193
|
```
|
|
128
194
|
|
|
129
195
|
### Optional Dependencies
|
|
@@ -138,7 +204,13 @@ This will enable structured logging with configurable levels and outputs. If not
|
|
|
138
204
|
|
|
139
205
|
## Quick Start
|
|
140
206
|
|
|
141
|
-
###
|
|
207
|
+
### ⚡ Already Used the Quick Start Script?
|
|
208
|
+
|
|
209
|
+
If you used the quick start script above, your app is already set up and running! Skip to the [Advanced Usage](#advanced-usage) section.
|
|
210
|
+
|
|
211
|
+
### 🔧 Manual Setup (for existing React projects)
|
|
212
|
+
|
|
213
|
+
If you're adding QwickApps to an existing React project or installed manually:
|
|
142
214
|
|
|
143
215
|
```tsx
|
|
144
216
|
import {
|
|
@@ -255,6 +327,7 @@ function App() {
|
|
|
255
327
|
```
|
|
256
328
|
|
|
257
329
|
**Responsive Behavior:**
|
|
330
|
+
|
|
258
331
|
- **Mobile (< 768px)**: Bottom navigation bar
|
|
259
332
|
- **Tablet (768-1024px)**: Collapsible sidebar nav rail
|
|
260
333
|
- **Desktop (> 1024px)**: Top navigation with drawer for overflow
|
|
@@ -386,6 +459,7 @@ import { CollapsibleLayout } from '@qwickapps/react-framework';
|
|
|
386
459
|
```
|
|
387
460
|
|
|
388
461
|
**Key Features:**
|
|
462
|
+
|
|
389
463
|
- **Controlled & Uncontrolled State**: Use `collapsed` prop for controlled state or `defaultCollapsed` for uncontrolled
|
|
390
464
|
- **State Persistence**: `persistState` option saves collapsed state to localStorage
|
|
391
465
|
- **Multiple Animations**: Choose from fade, slide, or scale animations with customizable duration
|
|
@@ -467,6 +541,7 @@ const customRules = [
|
|
|
467
541
|
```
|
|
468
542
|
|
|
469
543
|
**Default Transformations:**
|
|
544
|
+
|
|
470
545
|
- `<pre><code>` → Code component with syntax highlighting
|
|
471
546
|
- `<section class="blog-section">` → Section component
|
|
472
547
|
- `<button>` → Button component
|
|
@@ -517,9 +592,10 @@ And some inline \`code\` here.
|
|
|
517
592
|
```
|
|
518
593
|
|
|
519
594
|
**Key Features:**
|
|
595
|
+
|
|
520
596
|
- GitHub Flavored Markdown support via marked library
|
|
521
597
|
- Automatic syntax highlighting for code blocks
|
|
522
|
-
- Inline code preservation
|
|
598
|
+
- Inline code preservation
|
|
523
599
|
- Custom transformation rules for HTML elements
|
|
524
600
|
- Error handling with development debugging
|
|
525
601
|
- TypeScript support with comprehensive props interface
|
|
@@ -567,6 +643,7 @@ const config: TransformConfig = {
|
|
|
567
643
|
```
|
|
568
644
|
|
|
569
645
|
**Built-in Rule Sets:**
|
|
646
|
+
|
|
570
647
|
- `defaultArticleRules` - Optimized for blog/article content with header stripping
|
|
571
648
|
- `defaultMarkdownRules` - Optimized for Markdown content with inline code preservation
|
|
572
649
|
|
|
@@ -622,18 +699,21 @@ The QwickApps React Framework includes a sophisticated Page System that enables
|
|
|
622
699
|
### Core Page System Features
|
|
623
700
|
|
|
624
701
|
#### 🎯 **Schema-Driven Architecture**
|
|
625
|
-
|
|
702
|
+
|
|
703
|
+
- **ViewSchema**: Base schema with common UI attributes (styling, accessibility, layout)
|
|
626
704
|
- **PrintConfigSchema**: Complete print mode configuration with theming and optimization
|
|
627
|
-
- **PageTemplateSchema**: Full page models extending
|
|
705
|
+
- **PageTemplateSchema**: Full page models extending ViewSchema with metadata, SEO, and print settings
|
|
628
706
|
- **JSON Serialization**: Complete page configurations stored and transmitted as JSON
|
|
629
707
|
|
|
630
708
|
#### 🖨️ **Intelligent Print Detection**
|
|
709
|
+
|
|
631
710
|
- **Automatic URL Detection**: `?print=true` parameter triggers print mode instantly
|
|
632
711
|
- **Browser Event Integration**: Captures Ctrl+P and print menu events automatically
|
|
633
712
|
- **Manual Control**: Programmatic print mode activation with custom configurations
|
|
634
713
|
- **Scaffolding Awareness**: Automatically hides navigation and headers in print mode
|
|
635
714
|
|
|
636
715
|
#### 📊 **CMS Integration Ready**
|
|
716
|
+
|
|
637
717
|
- **Database Storage**: Store complete page templates as JSON in any database
|
|
638
718
|
- **Headless CMS**: Direct integration with Strapi, Contentful, Sanity, and custom APIs
|
|
639
719
|
- **Dynamic Loading**: Fetch page templates at runtime with fallback handling
|
|
@@ -642,6 +722,7 @@ The QwickApps React Framework includes a sophisticated Page System that enables
|
|
|
642
722
|
### Page Component Usage
|
|
643
723
|
|
|
644
724
|
#### Basic Page Implementation
|
|
725
|
+
|
|
645
726
|
```tsx
|
|
646
727
|
import { Page, usePrintMode, PageTemplateSchema } from '@qwickapps/react-framework';
|
|
647
728
|
|
|
@@ -703,12 +784,13 @@ function AboutPage() {
|
|
|
703
784
|
|
|
704
785
|
### Schema Architecture
|
|
705
786
|
|
|
706
|
-
####
|
|
787
|
+
#### ViewSchema - Base UI Schema
|
|
788
|
+
|
|
707
789
|
```tsx
|
|
708
|
-
import {
|
|
790
|
+
import { ViewSchema } from '@qwickapps/react-framework';
|
|
709
791
|
|
|
710
792
|
// Base schema for all UI components - provides consistent styling and accessibility
|
|
711
|
-
interface
|
|
793
|
+
interface ViewSchema {
|
|
712
794
|
// Styling Properties
|
|
713
795
|
className?: string; // CSS class name for custom styling
|
|
714
796
|
style?: string; // Inline styles as JSON string
|
|
@@ -725,19 +807,20 @@ interface ViewModelSchema {
|
|
|
725
807
|
'data-testid'?: string; // Test automation identifier
|
|
726
808
|
}
|
|
727
809
|
|
|
728
|
-
// Example: Custom component extending
|
|
729
|
-
class CustomCard extends
|
|
810
|
+
// Example: Custom component extending ViewSchema
|
|
811
|
+
class CustomCard extends ViewSchema {
|
|
730
812
|
@Field()
|
|
731
813
|
title?: string;
|
|
732
814
|
|
|
733
815
|
@Field()
|
|
734
816
|
content?: string;
|
|
735
817
|
|
|
736
|
-
// Inherits all styling and accessibility properties from
|
|
818
|
+
// Inherits all styling and accessibility properties from ViewSchema
|
|
737
819
|
}
|
|
738
820
|
```
|
|
739
821
|
|
|
740
822
|
#### PrintConfigSchema - Print Configuration
|
|
823
|
+
|
|
741
824
|
```tsx
|
|
742
825
|
import { PrintConfigSchema } from '@qwickapps/react-framework';
|
|
743
826
|
|
|
@@ -782,10 +865,11 @@ const invoicePrintConfig: PrintConfigSchema = {
|
|
|
782
865
|
```
|
|
783
866
|
|
|
784
867
|
#### PageTemplateSchema - Complete Page Model
|
|
868
|
+
|
|
785
869
|
```tsx
|
|
786
870
|
import { PageTemplateSchema, PrintConfigSchema } from '@qwickapps/react-framework';
|
|
787
871
|
|
|
788
|
-
interface PageTemplateSchema extends
|
|
872
|
+
interface PageTemplateSchema extends ViewSchema {
|
|
789
873
|
// Page Identity & Navigation
|
|
790
874
|
slug?: string; // URL-friendly identifier (e.g., "about-us")
|
|
791
875
|
name?: string; // Human-readable page name
|
|
@@ -898,6 +982,7 @@ const adminDashboardTemplate: PageTemplateSchema = {
|
|
|
898
982
|
### Print Mode Integration
|
|
899
983
|
|
|
900
984
|
#### usePrintMode Hook - Comprehensive Print Control
|
|
985
|
+
|
|
901
986
|
```tsx
|
|
902
987
|
import { usePrintMode } from '@qwickapps/react-framework';
|
|
903
988
|
|
|
@@ -974,6 +1059,7 @@ function DocumentPage() {
|
|
|
974
1059
|
```
|
|
975
1060
|
|
|
976
1061
|
#### Print URL Integration
|
|
1062
|
+
|
|
977
1063
|
```tsx
|
|
978
1064
|
// Automatic print mode via URL
|
|
979
1065
|
// Navigate to: https://yourapp.com/document?print=true
|
|
@@ -1005,6 +1091,7 @@ function App() {
|
|
|
1005
1091
|
### CMS and Database Integration
|
|
1006
1092
|
|
|
1007
1093
|
#### Dynamic Page Loading from CMS
|
|
1094
|
+
|
|
1008
1095
|
```tsx
|
|
1009
1096
|
import { Page, PageTemplateSchema } from '@qwickapps/react-framework';
|
|
1010
1097
|
|
|
@@ -1100,6 +1187,7 @@ async function fetchPageFromCMS(slug: string): Promise<PageTemplateSchema> {
|
|
|
1100
1187
|
```
|
|
1101
1188
|
|
|
1102
1189
|
#### Database Storage Example
|
|
1190
|
+
|
|
1103
1191
|
```tsx
|
|
1104
1192
|
// Example: Storing page templates in database
|
|
1105
1193
|
const pageTemplates = [
|
|
@@ -1140,6 +1228,7 @@ function DatabasePage({ pageId }: { pageId: number }) {
|
|
|
1140
1228
|
### Page Context and Lifecycle
|
|
1141
1229
|
|
|
1142
1230
|
#### Advanced Page Context Usage
|
|
1231
|
+
|
|
1143
1232
|
```tsx
|
|
1144
1233
|
import { usePageContext, usePage } from '@qwickapps/react-framework';
|
|
1145
1234
|
|
|
@@ -1182,6 +1271,7 @@ function PageAwareComponent() {
|
|
|
1182
1271
|
### Page Variants and Layout Options
|
|
1183
1272
|
|
|
1184
1273
|
#### Advanced Page Styling
|
|
1274
|
+
|
|
1185
1275
|
```tsx
|
|
1186
1276
|
// Different page layout variants for different use cases
|
|
1187
1277
|
function LayoutExamples() {
|
|
@@ -1254,6 +1344,7 @@ The QwickApps React Framework includes a sophisticated print system that enables
|
|
|
1254
1344
|
The print system automatically detects print mode through multiple channels:
|
|
1255
1345
|
|
|
1256
1346
|
#### URL Parameter Detection
|
|
1347
|
+
|
|
1257
1348
|
```tsx
|
|
1258
1349
|
// Navigate to URL with print parameter to automatically enter print mode
|
|
1259
1350
|
https://yourapp.com/document?print=true
|
|
@@ -1262,6 +1353,7 @@ https://yourapp.com/document?print=true
|
|
|
1262
1353
|
```
|
|
1263
1354
|
|
|
1264
1355
|
#### Browser Print Event Detection
|
|
1356
|
+
|
|
1265
1357
|
```tsx
|
|
1266
1358
|
// Automatic detection of Ctrl+P (Windows/Linux) or Cmd+P (Mac)
|
|
1267
1359
|
// Also detects File > Print menu usage
|
|
@@ -1269,6 +1361,7 @@ https://yourapp.com/document?print=true
|
|
|
1269
1361
|
```
|
|
1270
1362
|
|
|
1271
1363
|
#### Manual Print Mode Control
|
|
1364
|
+
|
|
1272
1365
|
```tsx
|
|
1273
1366
|
import { usePrintMode } from '@qwickapps/react-framework';
|
|
1274
1367
|
|
|
@@ -1317,6 +1410,7 @@ function DocumentPage() {
|
|
|
1317
1410
|
### Print Configuration System
|
|
1318
1411
|
|
|
1319
1412
|
#### Complete Print Configuration Options
|
|
1413
|
+
|
|
1320
1414
|
```tsx
|
|
1321
1415
|
import { PrintConfigSchema } from '@qwickapps/react-framework';
|
|
1322
1416
|
|
|
@@ -1352,6 +1446,7 @@ const advancedPrintConfig: PrintConfigSchema = {
|
|
|
1352
1446
|
```
|
|
1353
1447
|
|
|
1354
1448
|
#### Page Component with Print Configuration
|
|
1449
|
+
|
|
1355
1450
|
```tsx
|
|
1356
1451
|
import { Page, PrintConfigSchema } from '@qwickapps/react-framework';
|
|
1357
1452
|
|
|
@@ -1387,6 +1482,7 @@ function ReportPage() {
|
|
|
1387
1482
|
### Page Margins and Layout Options
|
|
1388
1483
|
|
|
1389
1484
|
#### Edge-to-Edge Printing (0mm margins)
|
|
1485
|
+
|
|
1390
1486
|
```tsx
|
|
1391
1487
|
const borderlessPrintConfig = {
|
|
1392
1488
|
pageMargins: '0mm', // Complete edge-to-edge printing
|
|
@@ -1395,6 +1491,7 @@ const borderlessPrintConfig = {
|
|
|
1395
1491
|
```
|
|
1396
1492
|
|
|
1397
1493
|
#### Standard Margin Options
|
|
1494
|
+
|
|
1398
1495
|
```tsx
|
|
1399
1496
|
const marginOptions = {
|
|
1400
1497
|
compact: { pageMargins: '6mm' }, // Minimal margins
|
|
@@ -1429,6 +1526,7 @@ The print system uses CSS variables for dynamic header/footer positioning:
|
|
|
1429
1526
|
### Advanced Print Headers and Footers
|
|
1430
1527
|
|
|
1431
1528
|
#### ReactNode Headers/Footers
|
|
1529
|
+
|
|
1432
1530
|
```tsx
|
|
1433
1531
|
import { SafeSpan } from '@qwickapps/react-framework';
|
|
1434
1532
|
|
|
@@ -1461,6 +1559,7 @@ const customPrintConfig = {
|
|
|
1461
1559
|
```
|
|
1462
1560
|
|
|
1463
1561
|
#### Template Variables in Headers/Footers
|
|
1562
|
+
|
|
1464
1563
|
```tsx
|
|
1465
1564
|
const templatePrintConfig = {
|
|
1466
1565
|
printFooter: 'Page [page] of [total] • Generated on [date] • company.com',
|
|
@@ -1478,6 +1577,7 @@ const templatePrintConfig = {
|
|
|
1478
1577
|
### Print-Specific Page Variants
|
|
1479
1578
|
|
|
1480
1579
|
#### Different Layout Variants for Print
|
|
1580
|
+
|
|
1481
1581
|
```tsx
|
|
1482
1582
|
function DocumentPage() {
|
|
1483
1583
|
return (
|
|
@@ -1522,6 +1622,7 @@ function DataTablePage() {
|
|
|
1522
1622
|
### Integration with Page Templates
|
|
1523
1623
|
|
|
1524
1624
|
#### Schema-Driven Print Configuration
|
|
1625
|
+
|
|
1525
1626
|
```tsx
|
|
1526
1627
|
import { PageTemplateSchema } from '@qwickapps/react-framework';
|
|
1527
1628
|
|
|
@@ -1564,6 +1665,7 @@ function FinancialReportPage() {
|
|
|
1564
1665
|
### Print Mode Context and State Management
|
|
1565
1666
|
|
|
1566
1667
|
#### Accessing Print State Throughout App
|
|
1668
|
+
|
|
1567
1669
|
```tsx
|
|
1568
1670
|
import { usePageContext } from '@qwickapps/react-framework';
|
|
1569
1671
|
|
|
@@ -1602,6 +1704,7 @@ function PrintAwareComponent() {
|
|
|
1602
1704
|
### Print CSS Classes and Styling
|
|
1603
1705
|
|
|
1604
1706
|
#### Automatic Print Mode Classes
|
|
1707
|
+
|
|
1605
1708
|
```css
|
|
1606
1709
|
/* Page automatically gets print mode classes */
|
|
1607
1710
|
.page-print-mode {
|
|
@@ -1630,6 +1733,7 @@ function PrintAwareComponent() {
|
|
|
1630
1733
|
```
|
|
1631
1734
|
|
|
1632
1735
|
#### Custom Print Styling
|
|
1736
|
+
|
|
1633
1737
|
```css
|
|
1634
1738
|
/* Print-specific component styling */
|
|
1635
1739
|
@media print {
|
|
@@ -1679,6 +1783,7 @@ function PrintAwareComponent() {
|
|
|
1679
1783
|
### Print System Best Practices
|
|
1680
1784
|
|
|
1681
1785
|
#### Performance Optimization
|
|
1786
|
+
|
|
1682
1787
|
```tsx
|
|
1683
1788
|
// Efficient print mode detection
|
|
1684
1789
|
const { isPrintMode } = usePrintMode();
|
|
@@ -1695,6 +1800,7 @@ const printConfig = useMemo(() => ({
|
|
|
1695
1800
|
```
|
|
1696
1801
|
|
|
1697
1802
|
#### Accessibility in Print Mode
|
|
1803
|
+
|
|
1698
1804
|
```tsx
|
|
1699
1805
|
const accessiblePrintConfig = {
|
|
1700
1806
|
// High contrast for accessibility
|
|
@@ -1710,6 +1816,7 @@ const accessiblePrintConfig = {
|
|
|
1710
1816
|
```
|
|
1711
1817
|
|
|
1712
1818
|
#### Multi-Page Document Handling
|
|
1819
|
+
|
|
1713
1820
|
```tsx
|
|
1714
1821
|
function MultiPageDocument() {
|
|
1715
1822
|
return (
|
|
@@ -1741,6 +1848,7 @@ function MultiPageDocument() {
|
|
|
1741
1848
|
### Migration Guide
|
|
1742
1849
|
|
|
1743
1850
|
#### Converting Legacy Pages to New System
|
|
1851
|
+
|
|
1744
1852
|
```tsx
|
|
1745
1853
|
// BEFORE: Legacy page implementation
|
|
1746
1854
|
function LegacyHomePage() {
|
|
@@ -1818,6 +1926,7 @@ function CMSHomePage() {
|
|
|
1818
1926
|
```
|
|
1819
1927
|
|
|
1820
1928
|
#### Print-Aware Migration
|
|
1929
|
+
|
|
1821
1930
|
```tsx
|
|
1822
1931
|
// BEFORE: Manual print handling
|
|
1823
1932
|
function LegacyPrintablePage() {
|
|
@@ -1867,6 +1976,7 @@ function NewPrintablePage() {
|
|
|
1867
1976
|
### Best Practices
|
|
1868
1977
|
|
|
1869
1978
|
#### Page System Best Practices
|
|
1979
|
+
|
|
1870
1980
|
1. **Use Templates for CMS**: Always use `PageTemplateSchema` for CMS-driven content
|
|
1871
1981
|
2. **Print Configuration**: Define print behavior early in development
|
|
1872
1982
|
3. **SEO Optimization**: Always include title, description, and metadata
|
|
@@ -1874,6 +1984,7 @@ function NewPrintablePage() {
|
|
|
1874
1984
|
5. **Performance**: Lazy load heavy content and optimize images for print
|
|
1875
1985
|
|
|
1876
1986
|
#### Schema Design Patterns
|
|
1987
|
+
|
|
1877
1988
|
```tsx
|
|
1878
1989
|
// Good: Comprehensive page template
|
|
1879
1990
|
const wellDesignedTemplate: PageTemplateSchema = {
|
|
@@ -2302,6 +2413,7 @@ The framework exposes CSS custom properties for consistent theming:
|
|
|
2302
2413
|
```
|
|
2303
2414
|
|
|
2304
2415
|
**Available Variables:**
|
|
2416
|
+
|
|
2305
2417
|
- `--theme-primary`, `--theme-on-primary`
|
|
2306
2418
|
- `--theme-secondary`, `--theme-on-secondary`
|
|
2307
2419
|
- `--theme-surface`, `--theme-on-surface`
|
|
@@ -2673,6 +2785,7 @@ myLogger.info('Component initialized');
|
|
|
2673
2785
|
```
|
|
2674
2786
|
|
|
2675
2787
|
**Key Benefits:**
|
|
2788
|
+
|
|
2676
2789
|
- ✅ No boilerplate conditionals
|
|
2677
2790
|
- ✅ Automatic production silencing
|
|
2678
2791
|
- ✅ Namespaced for clarity
|
|
@@ -2723,6 +2836,7 @@ QwickApp automatically includes robust error handling and accessibility features
|
|
|
2723
2836
|
### ErrorBoundary
|
|
2724
2837
|
|
|
2725
2838
|
All QwickApp instances are automatically wrapped with an ErrorBoundary that:
|
|
2839
|
+
|
|
2726
2840
|
- Catches JavaScript errors anywhere in the component tree
|
|
2727
2841
|
- Displays user-friendly fallback UI with retry functionality
|
|
2728
2842
|
- Shows error details in development mode
|
|
@@ -2745,6 +2859,7 @@ const SafeComponent = withErrorBoundary(MyComponent, {
|
|
|
2745
2859
|
### AccessibilityProvider
|
|
2746
2860
|
|
|
2747
2861
|
All QwickApp instances automatically include accessibility features:
|
|
2862
|
+
|
|
2748
2863
|
- **System Preferences**: Detects high contrast, reduced motion preferences
|
|
2749
2864
|
- **Keyboard Navigation**: Enhanced focus indicators for keyboard users
|
|
2750
2865
|
- **Screen Reader Support**: ARIA live announcements
|
|
@@ -2814,12 +2929,14 @@ function DynamicBreadcrumbs() {
|
|
|
2814
2929
|
This software is licensed under the **PolyForm Shield License 1.0.0**.
|
|
2815
2930
|
|
|
2816
2931
|
### 📋 **Quick Summary**
|
|
2932
|
+
|
|
2817
2933
|
- ✅ **Free to use** for non-competitive purposes
|
|
2818
2934
|
- ✅ **Source code available** for learning and development
|
|
2819
2935
|
- ❌ **Cannot be used** to compete with QwickApps
|
|
2820
2936
|
- ❌ **Cannot be reverse engineered** for competitive purposes
|
|
2821
2937
|
|
|
2822
2938
|
### ✅ **Permitted Uses**
|
|
2939
|
+
|
|
2823
2940
|
- Internal business applications
|
|
2824
2941
|
- Learning and educational projects
|
|
2825
2942
|
- Non-competitive commercial applications
|
|
@@ -2827,6 +2944,7 @@ This software is licensed under the **PolyForm Shield License 1.0.0**.
|
|
|
2827
2944
|
- Contributing to this project
|
|
2828
2945
|
|
|
2829
2946
|
### ❌ **Prohibited Uses**
|
|
2947
|
+
|
|
2830
2948
|
- Creating competing React frameworks
|
|
2831
2949
|
- Building competing CMS or application builder tools
|
|
2832
2950
|
- Reselling or redistributing as a competing product
|
|
@@ -2834,10 +2952,102 @@ This software is licensed under the **PolyForm Shield License 1.0.0**.
|
|
|
2834
2952
|
|
|
2835
2953
|
For complete license terms, see [LICENSE](./LICENSE) and [LICENSE-POLYFORM-SHIELD.txt](./LICENSE-POLYFORM-SHIELD.txt).
|
|
2836
2954
|
|
|
2837
|
-
**Need commercial licensing?** Contact us at
|
|
2955
|
+
**Need commercial licensing?** Contact us at **<legal@qwickapps.com>**
|
|
2956
|
+
|
|
2957
|
+
## 📚 Complete Documentation
|
|
2958
|
+
|
|
2959
|
+
The QwickApps React Framework includes comprehensive documentation covering all aspects of development, architecture, and usage.
|
|
2960
|
+
|
|
2961
|
+
### 🎯 **Quick Links**
|
|
2962
|
+
|
|
2963
|
+
- **[📖 Documentation Hub](./docs/README.md)** - Complete documentation index and navigation
|
|
2964
|
+
- **[🏗️ Component Architecture](./docs/architecture/component-system.md)** - Modern component architecture with ViewSchema v2.0.0
|
|
2965
|
+
- **[🔄 Migration Guide](./docs/architecture/migration-guides/useBaseProps-to-viewmodelschema.md)** - Migrate from useBaseProps to ViewSchema pattern
|
|
2966
|
+
- **[⚡ Serialization Guide](./docs/guides/COMPONENT_SERIALIZATION_GUIDE.md)** - Complete component serialization implementation guide
|
|
2967
|
+
|
|
2968
|
+
### 🧩 **Component Documentation**
|
|
2969
|
+
|
|
2970
|
+
#### Core Components
|
|
2971
|
+
|
|
2972
|
+
- **[ViewSchema v2.0.0](./docs/components/base/ViewSchema.md)** - Comprehensive base schema (40+ properties)
|
|
2973
|
+
- **[Container](./docs/components/Container.md)** - Core schema-driven component implementation
|
|
2974
|
+
- **[Page System](./docs/components/pages/Page.md)** - Advanced page component with print support
|
|
2975
|
+
|
|
2976
|
+
#### Layout & Content
|
|
2977
|
+
|
|
2978
|
+
- **[GridLayout](./docs/components/layout/GridLayout.md)** - Responsive grid system with serialization
|
|
2979
|
+
- **[HeroBlock](./docs/components/blocks/HeroBlock.md)** - Hero sections with complex serialization
|
|
2980
|
+
- **[Code Component](./docs/components/blocks/Code.md)** - Reference implementation for serialization
|
|
2981
|
+
|
|
2982
|
+
#### Form System
|
|
2983
|
+
|
|
2984
|
+
- **[FormBlock](./docs/components/forms/FormBlock.md)** - Form container with state management
|
|
2985
|
+
- **[TextInputField](./docs/components/input/TextInputField.md)** - Text input with serialization support
|
|
2986
|
+
- **[SelectInputField](./docs/components/input/SelectInputField.md)** - Select dropdown with options serialization
|
|
2987
|
+
|
|
2988
|
+
### 📋 **Quick Start with Documentation**
|
|
2989
|
+
|
|
2990
|
+
```tsx
|
|
2991
|
+
import {
|
|
2992
|
+
QwickApp,
|
|
2993
|
+
Container,
|
|
2994
|
+
ViewSchema
|
|
2995
|
+
} from '@qwickapps/react-framework';
|
|
2996
|
+
|
|
2997
|
+
// Use ViewSchema v2.0.0 for complete UI control
|
|
2998
|
+
interface MyComponentProps extends SchemaProps<ViewSchema> {
|
|
2999
|
+
title: string;
|
|
3000
|
+
}
|
|
3001
|
+
|
|
3002
|
+
function MyComponent({ title, ...schemaProps }: MyComponentProps) {
|
|
3003
|
+
return (
|
|
3004
|
+
<Container {...schemaProps}>
|
|
3005
|
+
<h1>{title}</h1>
|
|
3006
|
+
</Container>
|
|
3007
|
+
);
|
|
3008
|
+
}
|
|
3009
|
+
```
|
|
3010
|
+
|
|
3011
|
+
For detailed implementation examples, architecture explanations, and migration guides, visit the **[Documentation Hub](./docs/README.md)**.
|
|
2838
3012
|
|
|
2839
3013
|
## About QwickApps
|
|
2840
3014
|
|
|
2841
3015
|
This framework is part of the QwickApps ecosystem, providing high-quality solutions for educational and productivity applications.
|
|
2842
3016
|
|
|
2843
|
-
For more information, visit [QwickApps.com](https://qwickapps.com).
|
|
3017
|
+
For more information, visit [QwickApps.com](https://qwickapps.com).
|
|
3018
|
+
|
|
3019
|
+
## Troubleshooting
|
|
3020
|
+
|
|
3021
|
+
### ❌ "react-scripts is not recognized" Error
|
|
3022
|
+
|
|
3023
|
+
**Problem**: You're getting an error like `'react-scripts' is not recognized as an internal or external command`
|
|
3024
|
+
|
|
3025
|
+
**Solution**: This happens when trying to use QwickApps React Framework without first setting up a React project. QwickApps is a React framework library, not a project generator.
|
|
3026
|
+
|
|
3027
|
+
**Fix Options:**
|
|
3028
|
+
|
|
3029
|
+
1. **Use the Quick Start Script (Recommended)**:
|
|
3030
|
+
|
|
3031
|
+
```bash
|
|
3032
|
+
npx @qwickapps/react-framework/scripts/create-qwickapps-project my-project-name
|
|
3033
|
+
```
|
|
3034
|
+
|
|
3035
|
+
2. **Create React App First**:
|
|
3036
|
+
|
|
3037
|
+
```bash
|
|
3038
|
+
npx create-react-app my-project --template typescript
|
|
3039
|
+
cd my-project
|
|
3040
|
+
npm install @qwickapps/react-framework @emotion/react @emotion/styled @mui/material @mui/icons-material react-router-dom
|
|
3041
|
+
```
|
|
3042
|
+
|
|
3043
|
+
3. **Use with Existing React Project**:
|
|
3044
|
+
- QwickApps works with any existing React 16.8+ project
|
|
3045
|
+
- Just install the dependencies and follow the manual setup guide above
|
|
3046
|
+
|
|
3047
|
+
### Other Common Issues
|
|
3048
|
+
|
|
3049
|
+
- **Node.js Version**: Make sure you're using Node.js 16 or later
|
|
3050
|
+
- **Clear Cache**: If installation fails, try `npm cache clean --force`
|
|
3051
|
+
- **Dependency Conflicts**: Delete `node_modules` and `package-lock.json`, then run `npm install`
|
|
3052
|
+
|
|
3053
|
+
For more help, [open an issue](https://github.com/raajkumars/qwickapps/issues) on GitHub.
|