@qwickapps/react-framework 1.4.8 → 1.5.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/README.md +36 -3
- package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts +9 -9
- package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +1 -1
- package/dist/components/AccessibilityProvider.d.ts +1 -1
- package/dist/components/AccessibilityProvider.d.ts.map +1 -1
- package/dist/components/ErrorBoundary.d.ts +1 -1
- package/dist/components/Html.d.ts +8 -8
- package/dist/components/Html.d.ts.map +1 -1
- package/dist/components/Logo.d.ts +2 -2
- package/dist/components/Logo.d.ts.map +1 -1
- package/dist/components/Markdown.d.ts +5 -5
- package/dist/components/Markdown.d.ts.map +1 -1
- package/dist/components/ProductLogo.d.ts +60 -0
- package/dist/components/ProductLogo.d.ts.map +1 -0
- package/dist/components/QwickAppsLogo.d.ts +1 -1
- package/dist/components/QwickAppsLogo.d.ts.map +1 -1
- package/dist/components/ResponsiveMenu.d.ts.map +1 -1
- package/dist/components/SafeSpan.d.ts +4 -4
- package/dist/components/SafeSpan.d.ts.map +1 -1
- package/dist/components/Scaffold.d.ts.map +1 -1
- package/dist/components/base/Container.d.ts +3 -2
- package/dist/components/base/Container.d.ts.map +1 -1
- package/dist/components/base/ModelView.d.ts +16 -16
- package/dist/components/base/ModelView.d.ts.map +1 -1
- package/dist/components/base/index.d.ts +1 -1
- package/dist/components/base/index.d.ts.map +1 -1
- package/dist/components/blocks/Article.d.ts +4 -18
- package/dist/components/blocks/Article.d.ts.map +1 -1
- package/dist/components/blocks/CardListGrid.d.ts +3 -3
- package/dist/components/blocks/CardListGrid.d.ts.map +1 -1
- package/dist/components/blocks/Code.d.ts +5 -31
- package/dist/components/blocks/Code.d.ts.map +1 -1
- package/dist/components/blocks/Content.d.ts +2 -17
- package/dist/components/blocks/Content.d.ts.map +1 -1
- package/dist/components/blocks/CoverImageHeader.d.ts +2 -12
- package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -1
- package/dist/components/blocks/FeatureCard.d.ts +0 -17
- package/dist/components/blocks/FeatureCard.d.ts.map +1 -1
- package/dist/components/blocks/FeatureGrid.d.ts.map +1 -1
- package/dist/components/blocks/Footer.d.ts +2 -14
- package/dist/components/blocks/Footer.d.ts.map +1 -1
- package/dist/components/blocks/HeroBlock.d.ts +35 -26
- package/dist/components/blocks/HeroBlock.d.ts.map +1 -1
- package/dist/components/blocks/Image.d.ts +23 -23
- package/dist/components/blocks/Image.d.ts.map +1 -1
- package/dist/components/blocks/PageBannerHeader.d.ts +2 -13
- package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -1
- package/dist/components/blocks/ProductCard.d.ts +0 -9
- package/dist/components/blocks/ProductCard.d.ts.map +1 -1
- package/dist/components/blocks/Section.d.ts +16 -24
- package/dist/components/blocks/Section.d.ts.map +1 -1
- package/dist/components/blocks/Text.d.ts +5 -20
- package/dist/components/blocks/Text.d.ts.map +1 -1
- package/dist/components/buttons/Button.d.ts +19 -23
- package/dist/components/buttons/Button.d.ts.map +1 -1
- package/dist/components/buttons/PaletteSwitcher.d.ts +2 -2
- package/dist/components/buttons/PaletteSwitcher.d.ts.map +1 -1
- package/dist/components/buttons/ThemeSwitcher.d.ts +2 -2
- package/dist/components/buttons/ThemeSwitcher.d.ts.map +1 -1
- package/dist/components/dialogs/Dialog.d.ts +35 -0
- package/dist/components/dialogs/Dialog.d.ts.map +1 -0
- package/dist/components/dialogs/index.d.ts +8 -0
- package/dist/components/dialogs/index.d.ts.map +1 -0
- package/dist/components/forms/Captcha.d.ts +55 -0
- package/dist/components/forms/Captcha.d.ts.map +1 -0
- package/dist/components/forms/FormBlock.d.ts +6 -6
- package/dist/components/forms/FormBlock.d.ts.map +1 -1
- package/dist/components/forms/FormCheckbox.d.ts +27 -0
- package/dist/components/forms/FormCheckbox.d.ts.map +1 -0
- package/dist/components/forms/FormField.d.ts +43 -0
- package/dist/components/forms/FormField.d.ts.map +1 -0
- package/dist/components/forms/FormSelect.d.ts +35 -0
- package/dist/components/forms/FormSelect.d.ts.map +1 -0
- package/dist/components/forms/index.d.ts +8 -0
- package/dist/components/forms/index.d.ts.map +1 -1
- package/dist/components/index.d.ts +10 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/input/ChoiceInputField.d.ts +13 -19
- package/dist/components/input/ChoiceInputField.d.ts.map +1 -1
- package/dist/components/input/HtmlInputField.d.ts +16 -17
- package/dist/components/input/HtmlInputField.d.ts.map +1 -1
- package/dist/components/input/SelectInputField.d.ts +14 -17
- package/dist/components/input/SelectInputField.d.ts.map +1 -1
- package/dist/components/input/SwitchInputField.d.ts +11 -18
- package/dist/components/input/SwitchInputField.d.ts.map +1 -1
- package/dist/components/input/TextInputField.d.ts +16 -19
- package/dist/components/input/TextInputField.d.ts.map +1 -1
- package/dist/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts.map +1 -1
- package/dist/components/layout/GridCell.d.ts +18 -19
- package/dist/components/layout/GridCell.d.ts.map +1 -1
- package/dist/components/layout/GridLayout.d.ts +36 -25
- package/dist/components/layout/GridLayout.d.ts.map +1 -1
- package/dist/components/menu/MenuItem.d.ts +2 -2
- package/dist/components/menu/MenuItem.d.ts.map +1 -1
- package/dist/components/pages/FormPage.d.ts.map +1 -1
- package/dist/components/pages/Page.d.ts +1 -1
- package/dist/components/pages/Page.d.ts.map +1 -1
- package/dist/components/shared/createSerializableView.d.ts +22 -10
- package/dist/components/shared/createSerializableView.d.ts.map +1 -1
- package/dist/components/shared/viewProps.d.ts +3 -3
- package/dist/components/shared/viewProps.d.ts.map +1 -1
- package/dist/config/AppConfig.d.ts +2 -2
- package/dist/config/AppConfig.d.ts.map +1 -1
- package/dist/config/types.d.ts +1 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/contexts/DataContext.d.ts +3 -3
- package/dist/contexts/DataContext.d.ts.map +1 -1
- package/dist/contexts/PaletteContext.d.ts.map +1 -1
- package/dist/contexts/ThemeContext.d.ts.map +1 -1
- package/dist/hooks/useDataBinding.d.ts +2 -2
- package/dist/hooks/useDataBinding.d.ts.map +1 -1
- package/dist/hooks/usePrintMode.d.ts +2 -2
- package/dist/hooks/usePrintMode.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +4929 -2942
- package/dist/index.js +4426 -2410
- package/dist/palettes/manifest.json +90 -0
- package/dist/palettes/palette-autumn.1.4.9.min.css +1 -0
- package/dist/palettes/palette-autumn.1.5.0.css +172 -0
- package/dist/palettes/palette-autumn.1.5.0.min.css +1 -0
- package/dist/palettes/palette-autumn.latest.css +172 -0
- package/dist/palettes/palette-autumn.latest.min.css +1 -0
- package/dist/palettes/palette-cosmic.1.4.9.min.css +1 -0
- package/dist/palettes/palette-cosmic.1.5.0.css +172 -0
- package/dist/palettes/palette-cosmic.1.5.0.min.css +1 -0
- package/dist/palettes/palette-cosmic.latest.css +172 -0
- package/dist/palettes/palette-cosmic.latest.min.css +1 -0
- package/dist/palettes/palette-default.1.4.9.min.css +1 -0
- package/dist/palettes/palette-default.1.5.0.css +178 -0
- package/dist/palettes/palette-default.1.5.0.min.css +1 -0
- package/dist/palettes/palette-default.latest.css +178 -0
- package/dist/palettes/palette-default.latest.min.css +1 -0
- package/dist/palettes/palette-ocean.1.4.9.min.css +1 -0
- package/dist/palettes/palette-ocean.1.5.0.css +172 -0
- package/dist/palettes/palette-ocean.1.5.0.min.css +1 -0
- package/dist/palettes/palette-ocean.latest.css +172 -0
- package/dist/palettes/palette-ocean.latest.min.css +1 -0
- package/dist/palettes/palette-spring.1.4.9.min.css +1 -0
- package/dist/palettes/palette-spring.1.5.0.css +160 -0
- package/dist/palettes/palette-spring.1.5.0.min.css +1 -0
- package/dist/palettes/palette-spring.latest.css +160 -0
- package/dist/palettes/palette-spring.latest.min.css +1 -0
- package/dist/palettes/palette-winter.1.4.9.min.css +1 -0
- package/dist/palettes/palette-winter.1.5.0.css +172 -0
- package/dist/palettes/palette-winter.1.5.0.min.css +1 -0
- package/dist/palettes/palette-winter.latest.css +172 -0
- package/dist/palettes/palette-winter.latest.min.css +1 -0
- package/dist/schemas/ButtonSchema.d.ts +5 -2
- package/dist/schemas/ButtonSchema.d.ts.map +1 -1
- package/dist/schemas/CardListGridSchema.d.ts +4 -4
- package/dist/schemas/CardListGridSchema.d.ts.map +1 -1
- package/dist/schemas/ChoiceInputFieldSchema.d.ts +2 -2
- package/dist/schemas/ChoiceInputFieldSchema.d.ts.map +1 -1
- package/dist/schemas/CodeSchema.d.ts +1 -2
- package/dist/schemas/CodeSchema.d.ts.map +1 -1
- package/dist/schemas/FormBlockSchema.d.ts +2 -2
- package/dist/schemas/FormBlockSchema.d.ts.map +1 -1
- package/dist/schemas/GridCellSchema.d.ts +2 -4
- package/dist/schemas/GridCellSchema.d.ts.map +1 -1
- package/dist/schemas/GridLayoutSchema.d.ts +3 -5
- package/dist/schemas/GridLayoutSchema.d.ts.map +1 -1
- package/dist/schemas/HeroBlockSchema.d.ts +2 -2
- package/dist/schemas/HeroBlockSchema.d.ts.map +1 -1
- package/dist/schemas/HtmlInputFieldSchema.d.ts +2 -2
- package/dist/schemas/HtmlInputFieldSchema.d.ts.map +1 -1
- package/dist/schemas/ImageSchema.d.ts +2 -2
- package/dist/schemas/ImageSchema.d.ts.map +1 -1
- package/dist/schemas/SectionSchema.d.ts +2 -4
- package/dist/schemas/SectionSchema.d.ts.map +1 -1
- package/dist/schemas/SelectInputFieldSchema.d.ts +2 -2
- package/dist/schemas/SelectInputFieldSchema.d.ts.map +1 -1
- package/dist/schemas/SwitchInputFieldSchema.d.ts +2 -2
- package/dist/schemas/SwitchInputFieldSchema.d.ts.map +1 -1
- package/dist/schemas/TextInputFieldSchema.d.ts +2 -2
- package/dist/schemas/TextInputFieldSchema.d.ts.map +1 -1
- package/dist/schemas/ViewSchema.d.ts +8 -7
- package/dist/schemas/ViewSchema.d.ts.map +1 -1
- package/dist/schemas/transformers/ComponentTransformer.d.ts +2 -2
- package/dist/schemas/transformers/ComponentTransformer.d.ts.map +1 -1
- package/dist/schemas/transformers/ReactNodeTransformer.d.ts +2 -2
- package/dist/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -1
- package/dist/schemas/transformers/registry.d.ts +0 -7
- package/dist/schemas/transformers/registry.d.ts.map +1 -1
- package/dist/schemas/types/Serializable.d.ts +3 -3
- package/dist/schemas/types/Serializable.d.ts.map +1 -1
- package/dist/stories/_templates/SerializationTemplate.d.ts.map +1 -0
- package/dist/types/CollapsibleLayout.d.ts +3 -3
- package/dist/types/CollapsibleLayout.d.ts.map +1 -1
- package/dist/types/ContentProxy.d.ts +4 -4
- package/dist/types/ContentProxy.d.ts.map +1 -1
- package/dist/types/DataTypes.d.ts +4 -4
- package/dist/types/DataTypes.d.ts.map +1 -1
- package/dist/types/TemplateProvider.d.ts +1 -1
- package/dist/types/TemplateProvider.d.ts.map +1 -1
- package/dist/types/TemplateResolver.d.ts +1 -1
- package/dist/types/TemplateResolver.d.ts.map +1 -1
- package/dist/utils/htmlTransform.d.ts +1 -1
- package/dist/utils/htmlTransform.d.ts.map +1 -1
- package/dist/utils/iconMap.d.ts +48 -0
- package/dist/utils/iconMap.d.ts.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +11 -7
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/paletteLoader.d.ts +34 -0
- package/dist/utils/paletteLoader.d.ts.map +1 -0
- package/dist/utils/paletteManifest.d.ts +51 -0
- package/dist/utils/paletteManifest.d.ts.map +1 -0
- package/dist/utils/paletteUtils.d.ts.map +1 -1
- package/dist/utils/reactUtils.d.ts +12 -6
- package/dist/utils/reactUtils.d.ts.map +1 -1
- package/dist/utils/spacing.d.ts +2 -2
- package/dist/utils/spacing.d.ts.map +1 -1
- package/dist/utils/themePerformanceMonitor.d.ts.map +1 -1
- package/dist/utils/themeUtils.d.ts.map +1 -1
- package/package.json +28 -9
- package/scripts/build-palettes.cjs +120 -0
- package/src/__tests__/components/Article.test.tsx +1 -1
- package/src/__tests__/components/Breadcrumbs.test.tsx +2 -2
- package/src/__tests__/components/Button.test.tsx +3 -3
- package/src/__tests__/components/CardListGrid.test.tsx +5 -5
- package/src/__tests__/components/ChoiceInputField.test.tsx +2 -2
- package/src/__tests__/components/Code.test.tsx +2 -2
- package/src/__tests__/components/Content.integration.test.tsx +1 -1
- package/src/__tests__/components/Content.test.tsx +5 -5
- package/src/__tests__/components/CoverImageHeader.test.tsx +3 -3
- package/src/__tests__/components/FeatureCard.integration.test.tsx +1 -1
- package/src/__tests__/components/FeatureGrid.integration.test.tsx +1 -1
- package/src/__tests__/components/FeatureGrid.test.tsx +3 -3
- package/src/__tests__/components/Footer.test.tsx +3 -3
- package/src/__tests__/components/FormBlock.test.tsx +2 -2
- package/src/__tests__/components/HeroBlock.integration.test.tsx +1 -1
- package/src/__tests__/components/HeroBlock.test.tsx +4 -4
- package/src/__tests__/components/HtmlInputField.test.tsx +8 -8
- package/src/__tests__/components/PageBannerHeader.test.tsx +7 -7
- package/src/__tests__/components/PaletteSwitcher.test.tsx +3 -3
- package/src/__tests__/components/ProductCard.test.tsx +1 -1
- package/src/__tests__/components/Section.integration.test.tsx +1 -1
- package/src/__tests__/components/Section.test.tsx +1 -1
- package/src/__tests__/components/SelectInputField.test.tsx +2 -2
- package/src/__tests__/components/TextInputField.test.tsx +4 -4
- package/src/__tests__/components/ThemeSwitcher.test.tsx +3 -3
- package/src/__tests__/components/base/Container.test.tsx +22 -21
- package/src/__tests__/components/blocks/Code.performance.test.tsx +10 -10
- package/src/__tests__/components/blocks/Code.serialization.test.tsx +9 -9
- package/src/__tests__/components/blocks/HeroBlock.serialization.test.tsx +2 -3
- package/src/__tests__/components/blocks/Image.serialization.test.tsx +8 -7
- package/src/__tests__/components/blocks/Section.serialization.test.tsx +8 -8
- package/src/__tests__/components/blocks/Text.performance.test.tsx +5 -5
- package/src/__tests__/components/blocks/Text.serialization.test.tsx +9 -9
- package/src/__tests__/components/buttons/Button.serialization.test.tsx +4 -4
- package/src/__tests__/components/input/FormComponents.serialization.test.tsx +9 -9
- package/src/__tests__/components/input/SelectInputField.serialization.test.tsx +16 -18
- package/src/__tests__/components/input/TextInputField.serialization.test.tsx +9 -9
- package/src/__tests__/components/layout/CollapsibleLayout.test.tsx +5 -9
- package/src/__tests__/components/layout/GridCell.serialization.test.tsx +5 -5
- package/src/__tests__/components/layout/GridLayout.serialization.test.tsx +5 -5
- package/src/__tests__/hooks/usePrintMode.test.ts +1 -0
- package/src/__tests__/schemas/builders.test.ts +2 -2
- package/src/__tests__/schemas/transformers/ComponentSerializationPatterns.test.tsx +28 -28
- package/src/__tests__/schemas/transformers/ComponentTransformer.htmlPatterns.test.ts +5 -5
- package/src/__tests__/schemas/transformers/ComponentTransformer.test.ts +11 -11
- package/src/__tests__/schemas/transformers/CrossBrowserCompatibility.test.ts +10 -10
- package/src/__tests__/schemas/transformers/MockSerializableComponent.ts +15 -15
- package/src/__tests__/schemas/transformers/RealWorldScenarios.test.tsx +19 -19
- package/src/__tests__/schemas/transformers/SerializationErrorHandling.test.ts +15 -15
- package/src/__tests__/schemas/transformers/SerializationIntegration.test.tsx +19 -21
- package/src/__tests__/schemas/transformers/SerializationPerformance.test.ts +15 -15
- package/src/__tests__/schemas/transformers/TestAutomation.test.ts +3 -3
- package/src/__tests__/schemas/transformers/nested-serialization.test.tsx +1 -1
- package/src/__tests__/schemas/transformers/round-trip-component-serialization.test.tsx +10 -10
- package/src/__tests__/utils/optional-logging.test.ts +3 -3
- package/src/components/AccessibilityProvider.tsx +4 -2
- package/src/components/ErrorBoundary.tsx +1 -1
- package/src/components/Html.tsx +14 -17
- package/src/components/Logo.tsx +44 -33
- package/src/components/Markdown.tsx +9 -9
- package/src/components/ProductLogo.tsx +118 -0
- package/src/components/QwickApp.css +46 -1063
- package/src/components/QwickApp.tsx +1 -1
- package/src/components/QwickAppsLogo.tsx +1 -1
- package/src/components/ResponsiveMenu.tsx +13 -2
- package/src/components/SafeSpan.tsx +8 -9
- package/src/components/Scaffold.css +14 -0
- package/src/components/Scaffold.tsx +71 -27
- package/src/components/base/Container.tsx +2 -2
- package/src/components/base/ModelView.tsx +28 -27
- package/src/components/base/index.ts +1 -1
- package/src/components/blocks/Article.tsx +251 -36
- package/src/components/blocks/CardListGrid.tsx +18 -14
- package/src/components/blocks/Code.tsx +18 -13
- package/src/components/blocks/Content.tsx +15 -10
- package/src/components/blocks/CoverImageHeader.tsx +15 -10
- package/src/components/blocks/FeatureCard.tsx +16 -11
- package/src/components/blocks/FeatureGrid.tsx +13 -8
- package/src/components/blocks/Footer.tsx +44 -35
- package/src/components/blocks/HeroBlock.tsx +12 -13
- package/src/components/blocks/Image.tsx +16 -8
- package/src/components/blocks/PageBannerHeader.tsx +16 -12
- package/src/components/blocks/ProductCard.tsx +32 -25
- package/src/components/blocks/Section.tsx +21 -13
- package/src/components/blocks/Text.tsx +33 -15
- package/src/components/buttons/Button.tsx +110 -30
- package/src/components/buttons/PaletteSwitcher.tsx +11 -8
- package/src/components/buttons/ThemeSwitcher.tsx +20 -16
- package/src/components/dialogs/Dialog.tsx +126 -0
- package/src/components/dialogs/index.ts +15 -0
- package/src/components/forms/Captcha.tsx +291 -0
- package/src/components/forms/FormBlock.tsx +22 -15
- package/src/components/forms/FormCheckbox.tsx +116 -0
- package/src/components/forms/FormField.tsx +180 -0
- package/src/components/forms/FormSelect.tsx +140 -0
- package/src/components/forms/index.ts +13 -1
- package/src/components/index.ts +13 -2
- package/src/components/input/ChoiceInputField.tsx +1 -2
- package/src/components/input/HtmlInputField.tsx +2 -3
- package/src/components/input/SelectInputField.tsx +31 -5
- package/src/components/input/SwitchInputField.tsx +3 -4
- package/src/components/input/TextField.tsx +2 -2
- package/src/components/input/TextInputField.tsx +32 -6
- package/src/components/layout/CollapsibleLayout/CollapsibleLayout.tsx +13 -13
- package/src/components/layout/GridCell.tsx +10 -9
- package/src/components/layout/GridCellWrapper.tsx +1 -1
- package/src/components/layout/GridLayout.tsx +29 -32
- package/src/components/menu/MenuItem.tsx +2 -2
- package/src/components/pages/FormPage.tsx +0 -1
- package/src/components/pages/Page.tsx +2 -2
- package/src/components/shared/createSerializableView.tsx +24 -23
- package/src/components/shared/viewProps.ts +11 -11
- package/src/config/AppConfig.ts +2 -2
- package/src/config/__tests__/AppConfig.test.ts +3 -3
- package/src/config/__tests__/AppConfigBuilder.test.ts +10 -11
- package/src/config/types.ts +1 -1
- package/src/contexts/DataContext.tsx +58 -52
- package/src/contexts/PaletteContext.tsx +22 -9
- package/src/contexts/PrintModeContext.tsx +4 -4
- package/src/contexts/ThemeContext.tsx +3 -2
- package/src/hooks/useBaseProps.ts +10 -10
- package/src/hooks/useDataBinding.ts +15 -18
- package/src/hooks/usePrintMode.ts +3 -3
- package/src/index.ts +2 -0
- package/src/palettes/manifest.json +72 -0
- package/src/palettes/manifest.schema.json +74 -0
- package/src/schemas/ButtonSchema.ts +33 -0
- package/src/schemas/CardListGridSchema.ts +3 -3
- package/src/schemas/CodeSchema.ts +0 -1
- package/src/schemas/FeatureGridSchema.ts +1 -1
- package/src/schemas/FormBlockSchema.ts +1 -1
- package/src/schemas/GridCellSchema.ts +0 -1
- package/src/schemas/GridLayoutSchema.ts +0 -1
- package/src/schemas/SectionSchema.ts +0 -1
- package/src/schemas/ViewSchema.ts +7 -7
- package/src/schemas/transformers/ComponentTransformer.ts +39 -28
- package/src/schemas/transformers/ReactNodeTransformer.ts +18 -17
- package/src/schemas/transformers/registry.ts +28 -24
- package/src/schemas/types/Serializable.ts +3 -3
- package/src/setupTests.js +9 -0
- package/src/stories/AccessibilityProvider.stories.tsx +0 -1
- package/src/stories/Article.stories.tsx +1 -1
- package/src/stories/CardListGrid.stories.tsx +1 -1
- package/src/stories/ChoiceInputField.stories.tsx +2 -2
- package/src/stories/Code.stories.tsx +2 -3
- package/src/stories/CollapsibleLayout.stories.tsx +41 -37
- package/src/stories/Container.stories.tsx +1 -2
- package/src/stories/DataBinding.advanced.stories.tsx +15 -9
- package/src/stories/DataProvider.stories.tsx +33 -16
- package/src/stories/ErrorBoundary.stories.tsx +28 -26
- package/src/stories/FeatureGrid.stories.tsx +0 -1
- package/src/stories/FormBlock.stories.tsx +8 -8
- package/src/stories/FormComponents.stories.tsx +15 -11
- package/src/stories/GridCell.stories.tsx +5 -5
- package/src/stories/GridLayout.stories.tsx +5 -5
- package/src/stories/Image.stories.tsx +5 -7
- package/src/stories/Introduction.stories.tsx +0 -1
- package/src/stories/ModelView.stories.tsx +7 -7
- package/src/stories/SafeSpan.stories.tsx +7 -3
- package/src/stories/Section.stories.tsx +2 -2
- package/src/stories/Text.stories.tsx +1 -3
- package/src/stories/_templates/SerializationTemplate.tsx +0 -1
- package/src/templates/TemplateResolver.ts +2 -2
- package/src/types/CollapsibleLayout.ts +2 -2
- package/src/types/ContentProxy.ts +6 -6
- package/src/types/DataTypes.ts +4 -4
- package/src/types/TemplateProvider.ts +1 -1
- package/src/types/TemplateResolver.ts +1 -1
- package/src/utils/htmlTransform.tsx +17 -11
- package/src/utils/iconMap.tsx +221 -0
- package/src/utils/index.ts +4 -1
- package/src/utils/logger.ts +20 -14
- package/src/utils/paletteLoader.ts +218 -0
- package/src/utils/paletteManifest.ts +268 -0
- package/src/utils/paletteUtils.ts +19 -1
- package/src/utils/reactUtils.tsx +34 -33
- package/src/utils/spacing.ts +16 -17
- package/src/utils/themePerformanceMonitor.js +14 -6
- package/src/utils/themeUtils.ts +17 -2
- package/dist/components/base/ContainerView.d.ts +0 -65
- package/dist/components/base/ContainerView.d.ts.map +0 -1
- package/dist/components/blocks/Code-factory.d.ts +0 -22
- package/dist/components/blocks/Code-factory.d.ts.map +0 -1
- package/dist/components/blocks/Code-old.d.ts +0 -31
- package/dist/components/blocks/Code-old.d.ts.map +0 -1
- package/dist/qa/ConsoleWarningTest.d.ts +0 -5
- package/dist/qa/ConsoleWarningTest.d.ts.map +0 -1
- package/dist/qa/StorageKeyTest.d.ts +0 -6
- package/dist/qa/StorageKeyTest.d.ts.map +0 -1
- package/dist/qa/ThemeStorageKeyTest.d.ts +0 -6
- package/dist/qa/ThemeStorageKeyTest.d.ts.map +0 -1
- package/dist/schemas/ViewModelSchema.d.ts +0 -63
- package/dist/schemas/ViewModelSchema.d.ts.map +0 -1
- package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts +0 -66
- package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts.map +0 -1
- package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts +0 -66
- package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +0 -1
- package/dist/src/components/AccessibilityChecker.d.ts +0 -12
- package/dist/src/components/AccessibilityChecker.d.ts.map +0 -1
- package/dist/src/components/AccessibilityProvider.d.ts +0 -64
- package/dist/src/components/AccessibilityProvider.d.ts.map +0 -1
- package/dist/src/components/Breadcrumbs.d.ts +0 -39
- package/dist/src/components/Breadcrumbs.d.ts.map +0 -1
- package/dist/src/components/ErrorBoundary.d.ts +0 -46
- package/dist/src/components/ErrorBoundary.d.ts.map +0 -1
- package/dist/src/components/Html.d.ts +0 -58
- package/dist/src/components/Html.d.ts.map +0 -1
- package/dist/src/components/Logo.d.ts +0 -56
- package/dist/src/components/Logo.d.ts.map +0 -1
- package/dist/src/components/Markdown.d.ts +0 -51
- package/dist/src/components/Markdown.d.ts.map +0 -1
- package/dist/src/components/QwickApp.d.ts +0 -69
- package/dist/src/components/QwickApp.d.ts.map +0 -1
- package/dist/src/components/QwickAppsLogo.d.ts +0 -25
- package/dist/src/components/QwickAppsLogo.d.ts.map +0 -1
- package/dist/src/components/QwickIcon.d.ts +0 -23
- package/dist/src/components/QwickIcon.d.ts.map +0 -1
- package/dist/src/components/ResponsiveMenu.d.ts +0 -38
- package/dist/src/components/ResponsiveMenu.d.ts.map +0 -1
- package/dist/src/components/SafeSpan.d.ts +0 -29
- package/dist/src/components/SafeSpan.d.ts.map +0 -1
- package/dist/src/components/Scaffold.d.ts +0 -57
- package/dist/src/components/Scaffold.d.ts.map +0 -1
- package/dist/src/components/base/Container.d.ts +0 -33
- package/dist/src/components/base/Container.d.ts.map +0 -1
- package/dist/src/components/base/ModelView.d.ts +0 -92
- package/dist/src/components/base/ModelView.d.ts.map +0 -1
- package/dist/src/components/base/index.d.ts +0 -12
- package/dist/src/components/base/index.d.ts.map +0 -1
- package/dist/src/components/blocks/Article.d.ts +0 -32
- package/dist/src/components/blocks/Article.d.ts.map +0 -1
- package/dist/src/components/blocks/CardListGrid.d.ts +0 -23
- package/dist/src/components/blocks/CardListGrid.d.ts.map +0 -1
- package/dist/src/components/blocks/Code.d.ts +0 -37
- package/dist/src/components/blocks/Code.d.ts.map +0 -1
- package/dist/src/components/blocks/Content.d.ts +0 -24
- package/dist/src/components/blocks/Content.d.ts.map +0 -1
- package/dist/src/components/blocks/CoverImageHeader.d.ts +0 -44
- package/dist/src/components/blocks/CoverImageHeader.d.ts.map +0 -1
- package/dist/src/components/blocks/FeatureCard.d.ts +0 -66
- package/dist/src/components/blocks/FeatureCard.d.ts.map +0 -1
- package/dist/src/components/blocks/FeatureGrid.d.ts +0 -48
- package/dist/src/components/blocks/FeatureGrid.d.ts.map +0 -1
- package/dist/src/components/blocks/Footer.d.ts +0 -56
- package/dist/src/components/blocks/Footer.d.ts.map +0 -1
- package/dist/src/components/blocks/HeroBlock.d.ts +0 -55
- package/dist/src/components/blocks/HeroBlock.d.ts.map +0 -1
- package/dist/src/components/blocks/Image.d.ts +0 -40
- package/dist/src/components/blocks/Image.d.ts.map +0 -1
- package/dist/src/components/blocks/PageBannerHeader.d.ts +0 -30
- package/dist/src/components/blocks/PageBannerHeader.d.ts.map +0 -1
- package/dist/src/components/blocks/ProductCard.d.ts +0 -57
- package/dist/src/components/blocks/ProductCard.d.ts.map +0 -1
- package/dist/src/components/blocks/Section.d.ts +0 -45
- package/dist/src/components/blocks/Section.d.ts.map +0 -1
- package/dist/src/components/blocks/Text.d.ts +0 -34
- package/dist/src/components/blocks/Text.d.ts.map +0 -1
- package/dist/src/components/blocks/index.d.ts +0 -41
- package/dist/src/components/blocks/index.d.ts.map +0 -1
- package/dist/src/components/buttons/Button.d.ts +0 -41
- package/dist/src/components/buttons/Button.d.ts.map +0 -1
- package/dist/src/components/buttons/PaletteSwitcher.d.ts +0 -24
- package/dist/src/components/buttons/PaletteSwitcher.d.ts.map +0 -1
- package/dist/src/components/buttons/ThemeSwitcher.d.ts +0 -24
- package/dist/src/components/buttons/ThemeSwitcher.d.ts.map +0 -1
- package/dist/src/components/buttons/index.d.ts +0 -11
- package/dist/src/components/buttons/index.d.ts.map +0 -1
- package/dist/src/components/forms/FormBlock.d.ts +0 -51
- package/dist/src/components/forms/FormBlock.d.ts.map +0 -1
- package/dist/src/components/forms/index.d.ts +0 -8
- package/dist/src/components/forms/index.d.ts.map +0 -1
- package/dist/src/components/index.d.ts +0 -41
- package/dist/src/components/index.d.ts.map +0 -1
- package/dist/src/components/input/ChoiceInputField.d.ts +0 -29
- package/dist/src/components/input/ChoiceInputField.d.ts.map +0 -1
- package/dist/src/components/input/HtmlInputField.d.ts +0 -33
- package/dist/src/components/input/HtmlInputField.d.ts.map +0 -1
- package/dist/src/components/input/SelectInputField.d.ts +0 -31
- package/dist/src/components/input/SelectInputField.d.ts.map +0 -1
- package/dist/src/components/input/SwitchInputField.d.ts +0 -27
- package/dist/src/components/input/SwitchInputField.d.ts.map +0 -1
- package/dist/src/components/input/TextField.d.ts +0 -18
- package/dist/src/components/input/TextField.d.ts.map +0 -1
- package/dist/src/components/input/TextInputField.d.ts +0 -34
- package/dist/src/components/input/TextInputField.d.ts.map +0 -1
- package/dist/src/components/input/index.d.ts +0 -19
- package/dist/src/components/input/index.d.ts.map +0 -1
- package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts +0 -34
- package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts.map +0 -1
- package/dist/src/components/layout/CollapsibleLayout/index.d.ts +0 -9
- package/dist/src/components/layout/CollapsibleLayout/index.d.ts.map +0 -1
- package/dist/src/components/layout/GridCell.d.ts +0 -32
- package/dist/src/components/layout/GridCell.d.ts.map +0 -1
- package/dist/src/components/layout/GridCellWrapper.d.ts +0 -46
- package/dist/src/components/layout/GridCellWrapper.d.ts.map +0 -1
- package/dist/src/components/layout/GridLayout.d.ts +0 -50
- package/dist/src/components/layout/GridLayout.d.ts.map +0 -1
- package/dist/src/components/layout/index.d.ts +0 -14
- package/dist/src/components/layout/index.d.ts.map +0 -1
- package/dist/src/components/menu/Menu.d.ts +0 -1
- package/dist/src/components/menu/Menu.d.ts.map +0 -1
- package/dist/src/components/menu/MenuItem.d.ts +0 -31
- package/dist/src/components/menu/MenuItem.d.ts.map +0 -1
- package/dist/src/components/menu/index.d.ts +0 -7
- package/dist/src/components/menu/index.d.ts.map +0 -1
- package/dist/src/components/pages/FormPage.d.ts +0 -66
- package/dist/src/components/pages/FormPage.d.ts.map +0 -1
- package/dist/src/components/pages/Page.d.ts +0 -68
- package/dist/src/components/pages/Page.d.ts.map +0 -1
- package/dist/src/components/pages/index.d.ts +0 -10
- package/dist/src/components/pages/index.d.ts.map +0 -1
- package/dist/src/components/shared/createSerializableView.d.ts +0 -81
- package/dist/src/components/shared/createSerializableView.d.ts.map +0 -1
- package/dist/src/components/shared/viewProps.d.ts +0 -37
- package/dist/src/components/shared/viewProps.d.ts.map +0 -1
- package/dist/src/config/AppConfig.d.ts +0 -49
- package/dist/src/config/AppConfig.d.ts.map +0 -1
- package/dist/src/config/AppConfigBuilder.d.ts +0 -75
- package/dist/src/config/AppConfigBuilder.d.ts.map +0 -1
- package/dist/src/config/index.d.ts +0 -13
- package/dist/src/config/index.d.ts.map +0 -1
- package/dist/src/config/types.d.ts +0 -130
- package/dist/src/config/types.d.ts.map +0 -1
- package/dist/src/config.d.ts +0 -15
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/contexts/DataContext.d.ts +0 -139
- package/dist/src/contexts/DataContext.d.ts.map +0 -1
- package/dist/src/contexts/DimensionsContext.d.ts +0 -42
- package/dist/src/contexts/DimensionsContext.d.ts.map +0 -1
- package/dist/src/contexts/PaletteContext.d.ts +0 -53
- package/dist/src/contexts/PaletteContext.d.ts.map +0 -1
- package/dist/src/contexts/PrintModeContext.d.ts +0 -27
- package/dist/src/contexts/PrintModeContext.d.ts.map +0 -1
- package/dist/src/contexts/QwickAppContext.d.ts +0 -71
- package/dist/src/contexts/QwickAppContext.d.ts.map +0 -1
- package/dist/src/contexts/ThemeContext.d.ts +0 -65
- package/dist/src/contexts/ThemeContext.d.ts.map +0 -1
- package/dist/src/contexts/index.d.ts +0 -11
- package/dist/src/contexts/index.d.ts.map +0 -1
- package/dist/src/hooks/index.d.ts +0 -12
- package/dist/src/hooks/index.d.ts.map +0 -1
- package/dist/src/hooks/useBaseProps.d.ts +0 -101
- package/dist/src/hooks/useBaseProps.d.ts.map +0 -1
- package/dist/src/hooks/useDataBinding.d.ts +0 -22
- package/dist/src/hooks/useDataBinding.d.ts.map +0 -1
- package/dist/src/hooks/usePrintMode.d.ts +0 -39
- package/dist/src/hooks/usePrintMode.d.ts.map +0 -1
- package/dist/src/index.d.ts +0 -9
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/palettes/PaletteAutumn.d.ts +0 -10
- package/dist/src/palettes/PaletteAutumn.d.ts.map +0 -1
- package/dist/src/palettes/PaletteCosmic.d.ts +0 -10
- package/dist/src/palettes/PaletteCosmic.d.ts.map +0 -1
- package/dist/src/palettes/PaletteDefault.d.ts +0 -10
- package/dist/src/palettes/PaletteDefault.d.ts.map +0 -1
- package/dist/src/palettes/PaletteOcean.d.ts +0 -10
- package/dist/src/palettes/PaletteOcean.d.ts.map +0 -1
- package/dist/src/palettes/PaletteSpring.d.ts +0 -10
- package/dist/src/palettes/PaletteSpring.d.ts.map +0 -1
- package/dist/src/palettes/PaletteWinter.d.ts +0 -10
- package/dist/src/palettes/PaletteWinter.d.ts.map +0 -1
- package/dist/src/palettes/index.d.ts +0 -13
- package/dist/src/palettes/index.d.ts.map +0 -1
- package/dist/src/schemas/ActionSchema.d.ts +0 -21
- package/dist/src/schemas/ActionSchema.d.ts.map +0 -1
- package/dist/src/schemas/ArticleSchema.d.ts +0 -13
- package/dist/src/schemas/ArticleSchema.d.ts.map +0 -1
- package/dist/src/schemas/ButtonSchema.d.ts +0 -19
- package/dist/src/schemas/ButtonSchema.d.ts.map +0 -1
- package/dist/src/schemas/CardListGridSchema.d.ts +0 -17
- package/dist/src/schemas/CardListGridSchema.d.ts.map +0 -1
- package/dist/src/schemas/ChoiceInputFieldSchema.d.ts +0 -18
- package/dist/src/schemas/ChoiceInputFieldSchema.d.ts.map +0 -1
- package/dist/src/schemas/CodeSchema.d.ts +0 -18
- package/dist/src/schemas/CodeSchema.d.ts.map +0 -1
- package/dist/src/schemas/CollapsibleLayoutSchema.d.ts +0 -32
- package/dist/src/schemas/CollapsibleLayoutSchema.d.ts.map +0 -1
- package/dist/src/schemas/ContainerSchema.d.ts +0 -12
- package/dist/src/schemas/ContainerSchema.d.ts.map +0 -1
- package/dist/src/schemas/ContentSchema.d.ts +0 -21
- package/dist/src/schemas/ContentSchema.d.ts.map +0 -1
- package/dist/src/schemas/CoverImageHeaderSchema.d.ts +0 -28
- package/dist/src/schemas/CoverImageHeaderSchema.d.ts.map +0 -1
- package/dist/src/schemas/FeatureCardSchema.d.ts +0 -28
- package/dist/src/schemas/FeatureCardSchema.d.ts.map +0 -1
- package/dist/src/schemas/FeatureGridSchema.d.ts +0 -17
- package/dist/src/schemas/FeatureGridSchema.d.ts.map +0 -1
- package/dist/src/schemas/FeatureItemSchema.d.ts +0 -16
- package/dist/src/schemas/FeatureItemSchema.d.ts.map +0 -1
- package/dist/src/schemas/FooterItemSchema.d.ts +0 -15
- package/dist/src/schemas/FooterItemSchema.d.ts.map +0 -1
- package/dist/src/schemas/FooterSchema.d.ts +0 -20
- package/dist/src/schemas/FooterSchema.d.ts.map +0 -1
- package/dist/src/schemas/FooterSectionSchema.d.ts +0 -15
- package/dist/src/schemas/FooterSectionSchema.d.ts.map +0 -1
- package/dist/src/schemas/FormBlockSchema.d.ts +0 -19
- package/dist/src/schemas/FormBlockSchema.d.ts.map +0 -1
- package/dist/src/schemas/GridCellSchema.d.ts +0 -23
- package/dist/src/schemas/GridCellSchema.d.ts.map +0 -1
- package/dist/src/schemas/GridLayoutSchema.d.ts +0 -21
- package/dist/src/schemas/GridLayoutSchema.d.ts.map +0 -1
- package/dist/src/schemas/HeaderActionSchema.d.ts +0 -17
- package/dist/src/schemas/HeaderActionSchema.d.ts.map +0 -1
- package/dist/src/schemas/HeroBlockSchema.d.ts +0 -22
- package/dist/src/schemas/HeroBlockSchema.d.ts.map +0 -1
- package/dist/src/schemas/HtmlInputFieldSchema.d.ts +0 -18
- package/dist/src/schemas/HtmlInputFieldSchema.d.ts.map +0 -1
- package/dist/src/schemas/HtmlSchema.d.ts +0 -14
- package/dist/src/schemas/HtmlSchema.d.ts.map +0 -1
- package/dist/src/schemas/ImageSchema.d.ts +0 -32
- package/dist/src/schemas/ImageSchema.d.ts.map +0 -1
- package/dist/src/schemas/LogoSchema.d.ts +0 -35
- package/dist/src/schemas/LogoSchema.d.ts.map +0 -1
- package/dist/src/schemas/MarkdownSchema.d.ts +0 -14
- package/dist/src/schemas/MarkdownSchema.d.ts.map +0 -1
- package/dist/src/schemas/MetadataItemSchema.d.ts +0 -13
- package/dist/src/schemas/MetadataItemSchema.d.ts.map +0 -1
- package/dist/src/schemas/PageBannerHeaderSchema.d.ts +0 -28
- package/dist/src/schemas/PageBannerHeaderSchema.d.ts.map +0 -1
- package/dist/src/schemas/PageTemplateSchema.d.ts +0 -31
- package/dist/src/schemas/PageTemplateSchema.d.ts.map +0 -1
- package/dist/src/schemas/PaletteSwitcherSchema.d.ts +0 -16
- package/dist/src/schemas/PaletteSwitcherSchema.d.ts.map +0 -1
- package/dist/src/schemas/PrintConfigSchema.d.ts +0 -31
- package/dist/src/schemas/PrintConfigSchema.d.ts.map +0 -1
- package/dist/src/schemas/ProductCardSchema.d.ts +0 -39
- package/dist/src/schemas/ProductCardSchema.d.ts.map +0 -1
- package/dist/src/schemas/SafeSpanSchema.d.ts +0 -13
- package/dist/src/schemas/SafeSpanSchema.d.ts.map +0 -1
- package/dist/src/schemas/SectionSchema.d.ts +0 -16
- package/dist/src/schemas/SectionSchema.d.ts.map +0 -1
- package/dist/src/schemas/SelectInputFieldSchema.d.ts +0 -27
- package/dist/src/schemas/SelectInputFieldSchema.d.ts.map +0 -1
- package/dist/src/schemas/SwitchInputFieldSchema.d.ts +0 -18
- package/dist/src/schemas/SwitchInputFieldSchema.d.ts.map +0 -1
- package/dist/src/schemas/TextInputFieldSchema.d.ts +0 -22
- package/dist/src/schemas/TextInputFieldSchema.d.ts.map +0 -1
- package/dist/src/schemas/TextSchema.d.ts +0 -37
- package/dist/src/schemas/TextSchema.d.ts.map +0 -1
- package/dist/src/schemas/ThemeSwitcherSchema.d.ts +0 -19
- package/dist/src/schemas/ThemeSwitcherSchema.d.ts.map +0 -1
- package/dist/src/schemas/ViewSchema.d.ts +0 -66
- package/dist/src/schemas/ViewSchema.d.ts.map +0 -1
- package/dist/src/schemas/index.d.ts +0 -47
- package/dist/src/schemas/index.d.ts.map +0 -1
- package/dist/src/schemas/transformers/ComponentTransformer.d.ts +0 -128
- package/dist/src/schemas/transformers/ComponentTransformer.d.ts.map +0 -1
- package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts +0 -53
- package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts.map +0 -1
- package/dist/src/schemas/transformers/registry.d.ts +0 -18
- package/dist/src/schemas/transformers/registry.d.ts.map +0 -1
- package/dist/src/schemas/types/Serializable.d.ts +0 -46
- package/dist/src/schemas/types/Serializable.d.ts.map +0 -1
- package/dist/src/stories/_templates/SerializationTemplate.d.ts.map +0 -1
- package/dist/src/templates/TemplateResolver.d.ts +0 -52
- package/dist/src/templates/TemplateResolver.d.ts.map +0 -1
- package/dist/src/templates/index.d.ts +0 -7
- package/dist/src/templates/index.d.ts.map +0 -1
- package/dist/src/types/CacheProvider.d.ts +0 -18
- package/dist/src/types/CacheProvider.d.ts.map +0 -1
- package/dist/src/types/CollapsibleLayout.d.ts +0 -142
- package/dist/src/types/CollapsibleLayout.d.ts.map +0 -1
- package/dist/src/types/ContentProxy.d.ts +0 -47
- package/dist/src/types/ContentProxy.d.ts.map +0 -1
- package/dist/src/types/DataTypes.d.ts +0 -185
- package/dist/src/types/DataTypes.d.ts.map +0 -1
- package/dist/src/types/TemplateProvider.d.ts +0 -10
- package/dist/src/types/TemplateProvider.d.ts.map +0 -1
- package/dist/src/types/TemplateResolver.d.ts +0 -23
- package/dist/src/types/TemplateResolver.d.ts.map +0 -1
- package/dist/src/types/index.d.ts +0 -82
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/utils/breakpoints.d.ts +0 -35
- package/dist/src/utils/breakpoints.d.ts.map +0 -1
- package/dist/src/utils/cssUtils.d.ts +0 -17
- package/dist/src/utils/cssUtils.d.ts.map +0 -1
- package/dist/src/utils/customPaletteManager.d.ts +0 -8
- package/dist/src/utils/customPaletteManager.d.ts.map +0 -1
- package/dist/src/utils/dimensions.d.ts +0 -34
- package/dist/src/utils/dimensions.d.ts.map +0 -1
- package/dist/src/utils/htmlTransform.d.ts +0 -44
- package/dist/src/utils/htmlTransform.d.ts.map +0 -1
- package/dist/src/utils/index.d.ts +0 -16
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/logger.d.ts +0 -26
- package/dist/src/utils/logger.d.ts.map +0 -1
- package/dist/src/utils/paletteUtils.d.ts +0 -38
- package/dist/src/utils/paletteUtils.d.ts.map +0 -1
- package/dist/src/utils/persistenceUtils.d.ts +0 -31
- package/dist/src/utils/persistenceUtils.d.ts.map +0 -1
- package/dist/src/utils/reactUtils.d.ts +0 -33
- package/dist/src/utils/reactUtils.d.ts.map +0 -1
- package/dist/src/utils/spacing.d.ts +0 -34
- package/dist/src/utils/spacing.d.ts.map +0 -1
- package/dist/src/utils/themePerformanceMonitor.d.ts +0 -32
- package/dist/src/utils/themePerformanceMonitor.d.ts.map +0 -1
- package/dist/src/utils/themeUtils.d.ts +0 -27
- package/dist/src/utils/themeUtils.d.ts.map +0 -1
- package/dist/tests/ConsoleWarningTest.d.ts +0 -5
- package/dist/tests/ConsoleWarningTest.d.ts.map +0 -1
- package/dist/tests/StorageKeyTest.d.ts +0 -6
- package/dist/tests/StorageKeyTest.d.ts.map +0 -1
- package/dist/tests/ThemeStorageKeyTest.d.ts +0 -6
- package/dist/tests/ThemeStorageKeyTest.d.ts.map +0 -1
- /package/dist/palettes/{PaletteAutumn.css → palette-autumn.1.4.9.css} +0 -0
- /package/dist/palettes/{PaletteCosmic.css → palette-cosmic.1.4.9.css} +0 -0
- /package/dist/palettes/{PaletteDefault.css → palette-default.1.4.9.css} +0 -0
- /package/dist/palettes/{PaletteOcean.css → palette-ocean.1.4.9.css} +0 -0
- /package/dist/palettes/{PaletteSpring.css → palette-spring.1.4.9.css} +0 -0
- /package/dist/palettes/{PaletteWinter.css → palette-winter.1.4.9.css} +0 -0
- /package/dist/{src/stories → stories}/_templates/SerializationTemplate.d.ts +0 -0
|
@@ -96,7 +96,7 @@ export const QwickApp: React.FC<QwickAppComponentProps> = ({
|
|
|
96
96
|
// Resolve configuration: explicit props override config defaults
|
|
97
97
|
const resolvedConfig = {
|
|
98
98
|
appName: appNameProp ?? config?.app.name,
|
|
99
|
-
appId: appIdProp ?? config?.app.id
|
|
99
|
+
appId: appIdProp ?? config?.app.id,
|
|
100
100
|
logo: logoProp ?? config?.app.logo,
|
|
101
101
|
enableScaffolding: enableScaffoldingProp ?? config?.ui.enableScaffolding ?? false,
|
|
102
102
|
showThemeSwitcher: showThemeSwitcherProp ?? config?.ui.showThemeSwitcher ?? false,
|
|
@@ -13,7 +13,7 @@ import { WithBaseProps, useBaseProps } from '../hooks/useBaseProps';
|
|
|
13
13
|
|
|
14
14
|
export type QwickAppsLogoSize = 'small' | 'medium' | 'large';
|
|
15
15
|
|
|
16
|
-
export interface QwickAppsLogoProps extends WithBaseProps
|
|
16
|
+
export interface QwickAppsLogoProps extends WithBaseProps {
|
|
17
17
|
/** Size variant of the logo */
|
|
18
18
|
size?: QwickAppsLogoSize;
|
|
19
19
|
/** Click handler for the logo */
|
|
@@ -20,6 +20,7 @@ import React, { useState, useEffect } from 'react';
|
|
|
20
20
|
import { WithBaseProps, useBaseProps, QWICKAPP_COMPONENT } from '../hooks/useBaseProps';
|
|
21
21
|
import { useQwickApp } from '../contexts/QwickAppContext';
|
|
22
22
|
import Logo from './Logo';
|
|
23
|
+
import { getIconComponent } from './buttons/Button';
|
|
23
24
|
import './ResponsiveMenu.css';
|
|
24
25
|
import { useSafeLocation, useSafeNavigate } from '../utils/reactUtils';
|
|
25
26
|
import { loggers } from '../utils/logger';
|
|
@@ -56,7 +57,7 @@ const ResponsiveMenu: React.FC<ResponsiveMenuProps> = (props) => {
|
|
|
56
57
|
} = restProps;
|
|
57
58
|
|
|
58
59
|
// Mark as QwickApp component
|
|
59
|
-
(ResponsiveMenu as
|
|
60
|
+
(ResponsiveMenu as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
|
|
60
61
|
const [screenSize, setScreenSize] = useState<ScreenSize>('desktop');
|
|
61
62
|
const [isNavRailExpanded, setIsNavRailExpanded] = useState(false);
|
|
62
63
|
const [isDrawerOpen, setIsDrawerOpen] = useState(false);
|
|
@@ -143,9 +144,19 @@ const ResponsiveMenu: React.FC<ResponsiveMenuProps> = (props) => {
|
|
|
143
144
|
}
|
|
144
145
|
};
|
|
145
146
|
|
|
147
|
+
// Transform icon string to component or use provided ReactNode
|
|
148
|
+
let displayIcon: React.ReactNode = null;
|
|
149
|
+
if (item.icon) {
|
|
150
|
+
if (typeof item.icon === 'string') {
|
|
151
|
+
displayIcon = getIconComponent(item.icon);
|
|
152
|
+
} else {
|
|
153
|
+
displayIcon = item.icon;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
146
157
|
const content = (
|
|
147
158
|
<>
|
|
148
|
-
{
|
|
159
|
+
{displayIcon && <span className="menu-item-icon">{displayIcon}</span>}
|
|
149
160
|
{!isCompact && <span className="menu-item-label">{item.label}</span>}
|
|
150
161
|
{item.badge && <span className="menu-item-badge">{item.badge}</span>}
|
|
151
162
|
</>
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import React
|
|
13
|
+
import React from 'react';
|
|
14
14
|
import { WithDataBinding, SchemaProps } from '@qwickapps/schema';
|
|
15
15
|
import sanitizeHtml from 'sanitize-html';
|
|
16
16
|
import { QWICKAPP_COMPONENT, useBaseProps, useDataBinding } from '../hooks';
|
|
@@ -23,10 +23,10 @@ export interface SafeSpanProps extends SafeSpanViewProps, WithDataBinding {}
|
|
|
23
23
|
// View component - handles the actual rendering
|
|
24
24
|
function SafeSpanView(props: SafeSpanViewProps) {
|
|
25
25
|
const { html, placeholder, ...restProps } = props;
|
|
26
|
-
const { styleProps, htmlProps
|
|
26
|
+
const { styleProps, htmlProps } = useBaseProps(restProps);
|
|
27
27
|
|
|
28
28
|
// Mark as QwickApp component
|
|
29
|
-
(SafeSpanView as
|
|
29
|
+
(SafeSpanView as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
|
|
30
30
|
|
|
31
31
|
// Enhanced HTML sanitization with strict security configuration
|
|
32
32
|
const sanitizeOptions = {
|
|
@@ -101,7 +101,7 @@ export class SafeSpan extends ModelView<SafeSpanProps, SafeSpanModel> {
|
|
|
101
101
|
static readonly version = '1.0.0';
|
|
102
102
|
|
|
103
103
|
// Component-specific serialization properties
|
|
104
|
-
protected getComponentSpecificProps():
|
|
104
|
+
protected getComponentSpecificProps(): unknown {
|
|
105
105
|
return {
|
|
106
106
|
html: this.props.html,
|
|
107
107
|
placeholder: this.props.placeholder
|
|
@@ -110,7 +110,7 @@ export class SafeSpan extends ModelView<SafeSpanProps, SafeSpanModel> {
|
|
|
110
110
|
|
|
111
111
|
// SafeSpan component renders traditional props view
|
|
112
112
|
protected renderView(): React.ReactElement {
|
|
113
|
-
const {
|
|
113
|
+
const { ...restProps } = this.props;
|
|
114
114
|
return <SafeSpanView {...restProps} />;
|
|
115
115
|
}
|
|
116
116
|
|
|
@@ -120,7 +120,7 @@ export class SafeSpan extends ModelView<SafeSpanProps, SafeSpanModel> {
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
// Register HTML patterns that SafeSpan component can handle
|
|
123
|
-
static registerPatternHandlers(registry:
|
|
123
|
+
static registerPatternHandlers(registry: unknown): void {
|
|
124
124
|
// Register span elements with specific classes or attributes
|
|
125
125
|
if (!registry.hasPattern('span.safe-content')) {
|
|
126
126
|
registry.registerPattern('span.safe-content', SafeSpan.transformSafeSpan);
|
|
@@ -133,7 +133,7 @@ export class SafeSpan extends ModelView<SafeSpanProps, SafeSpanModel> {
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
// Transform span elements to SafeSpan component
|
|
136
|
-
private static transformSafeSpan(element: Element):
|
|
136
|
+
private static transformSafeSpan(element: Element): unknown {
|
|
137
137
|
const placeholder = element.getAttribute('data-placeholder');
|
|
138
138
|
|
|
139
139
|
return {
|
|
@@ -151,7 +151,7 @@ function SafeSpanWithDataBinding(props: SafeSpanProps) {
|
|
|
151
151
|
const { dataSource, bindingOptions, ...restProps } = props;
|
|
152
152
|
|
|
153
153
|
// Use data binding
|
|
154
|
-
const {
|
|
154
|
+
const { loading, error, ...safeSpanProps } = useDataBinding<SafeSpanModel>(
|
|
155
155
|
dataSource!,
|
|
156
156
|
restProps as Partial<SafeSpanModel>,
|
|
157
157
|
SafeSpanModel.getSchema(),
|
|
@@ -171,7 +171,6 @@ function SafeSpanWithDataBinding(props: SafeSpanProps) {
|
|
|
171
171
|
return null;
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
console.log('Resolved props for SafeSpan:', safeSpanProps);
|
|
175
174
|
return <SafeSpanView {...safeSpanProps} />;
|
|
176
175
|
}
|
|
177
176
|
|
|
@@ -15,6 +15,14 @@
|
|
|
15
15
|
--rail-width-expanded: 280px;
|
|
16
16
|
--touch-target-size: 48px;
|
|
17
17
|
|
|
18
|
+
--menu-bg: var(--theme-surface);
|
|
19
|
+
--menu-text: var(--theme-on-surface);
|
|
20
|
+
--menu-hover: var(--theme-surface-variant);
|
|
21
|
+
--menu-active: var(--theme-primary);
|
|
22
|
+
--menu-active-text: var(--theme-on-primary);
|
|
23
|
+
--menu-border: var(--theme-outline-variant);
|
|
24
|
+
--menu-shadow: rgba(0, 0, 0, 0.1);
|
|
25
|
+
|
|
18
26
|
--scaffold-background: var(--theme-background);
|
|
19
27
|
--scaffold-surface: var(--theme-surface);
|
|
20
28
|
--scaffold-on-surface: var(--theme-on-surface);
|
|
@@ -92,6 +100,12 @@
|
|
|
92
100
|
gap: 8px;
|
|
93
101
|
}
|
|
94
102
|
|
|
103
|
+
.appbar-theme-controls {
|
|
104
|
+
display: flex;
|
|
105
|
+
align-items: center;
|
|
106
|
+
gap: 8px;
|
|
107
|
+
}
|
|
108
|
+
|
|
95
109
|
/* Menu button */
|
|
96
110
|
.menu-button {
|
|
97
111
|
display: flex;
|
|
@@ -22,6 +22,7 @@ import Logo from './Logo';
|
|
|
22
22
|
import ThemeSwitcher from './buttons/ThemeSwitcher';
|
|
23
23
|
import PaletteSwitcher from './buttons/PaletteSwitcher';
|
|
24
24
|
import { RadioButtonUnchecked as DefaultIcon } from '@mui/icons-material';
|
|
25
|
+
import { getIconComponent } from './buttons/Button';
|
|
25
26
|
import './Scaffold.css';
|
|
26
27
|
import { useSafeLocation, useSafeNavigate } from '../utils/reactUtils';
|
|
27
28
|
import { loggers } from '../utils/logger';
|
|
@@ -89,11 +90,12 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
89
90
|
const [screenSize, setScreenSize] = useState<ScreenSize>('desktop');
|
|
90
91
|
const [isDrawerOpen, setIsDrawerOpen] = useState(false);
|
|
91
92
|
const [isRailExpanded, setIsRailExpanded] = useState(false);
|
|
93
|
+
const [isMounted, setIsMounted] = useState(false);
|
|
92
94
|
|
|
93
95
|
// React Router hooks (if available)
|
|
94
96
|
const location = useSafeLocation();
|
|
95
97
|
const navigate = useSafeNavigate();
|
|
96
|
-
const currentPath = location?.pathname;
|
|
98
|
+
const currentPath = isMounted ? location?.pathname : undefined;
|
|
97
99
|
|
|
98
100
|
// Debug logging for navigation
|
|
99
101
|
React.useEffect(() => {
|
|
@@ -102,6 +104,11 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
102
104
|
}
|
|
103
105
|
}, [currentPath]);
|
|
104
106
|
|
|
107
|
+
// Set mounted state after hydration to prevent hydration mismatch
|
|
108
|
+
useEffect(() => {
|
|
109
|
+
setIsMounted(true);
|
|
110
|
+
}, []);
|
|
111
|
+
|
|
105
112
|
const { appName: contextAppName, logo: contextLogo } = useQwickApp();
|
|
106
113
|
const appName = propAppName || contextAppName;
|
|
107
114
|
|
|
@@ -135,23 +142,26 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
135
142
|
// Material UI Guidelines: Split items based on screen size
|
|
136
143
|
const getNavigationSplit = () => {
|
|
137
144
|
switch (screenSize) {
|
|
138
|
-
case 'mobile':
|
|
145
|
+
case 'mobile': {
|
|
139
146
|
// Bottom Nav: 3-5 items, rest in drawer
|
|
140
147
|
const bottomNavItems = sortedItems.slice(0, 5);
|
|
141
148
|
const drawerItems = sortedItems.slice(5);
|
|
142
149
|
return { primaryItems: bottomNavItems, drawerItems };
|
|
150
|
+
}
|
|
143
151
|
|
|
144
|
-
case 'tablet':
|
|
152
|
+
case 'tablet': {
|
|
145
153
|
// Nav Rail: 3-7 items, rest in drawer
|
|
146
154
|
const railItems = sortedItems.slice(0, 7);
|
|
147
155
|
const railDrawerItems = sortedItems.slice(7);
|
|
148
156
|
return { primaryItems: railItems, drawerItems: railDrawerItems };
|
|
157
|
+
}
|
|
149
158
|
|
|
150
|
-
case 'desktop':
|
|
159
|
+
case 'desktop': {
|
|
151
160
|
// App Bar: 5-7 items, rest in drawer
|
|
152
161
|
const appBarItems = sortedItems.slice(0, 7);
|
|
153
162
|
const appBarDrawerItems = sortedItems.slice(7);
|
|
154
163
|
return { primaryItems: appBarItems, drawerItems: appBarDrawerItems };
|
|
164
|
+
}
|
|
155
165
|
|
|
156
166
|
default:
|
|
157
167
|
return { primaryItems: sortedItems, drawerItems: [] };
|
|
@@ -251,9 +261,22 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
251
261
|
}
|
|
252
262
|
};
|
|
253
263
|
|
|
254
|
-
//
|
|
264
|
+
// Transform icon string to component, or use provided ReactNode, or fallback to DefaultIcon
|
|
255
265
|
const needsIcon = variant !== 'drawer';
|
|
256
|
-
|
|
266
|
+
let displayIcon: React.ReactNode = null;
|
|
267
|
+
|
|
268
|
+
if (item.icon) {
|
|
269
|
+
// If icon is a string, transform it to component
|
|
270
|
+
if (typeof item.icon === 'string') {
|
|
271
|
+
displayIcon = getIconComponent(item.icon) || (needsIcon ? <DefaultIcon /> : null);
|
|
272
|
+
} else {
|
|
273
|
+
// If icon is already a React component, use it
|
|
274
|
+
displayIcon = item.icon;
|
|
275
|
+
}
|
|
276
|
+
} else if (needsIcon) {
|
|
277
|
+
// No icon provided, use default for primary navigation
|
|
278
|
+
displayIcon = <DefaultIcon />;
|
|
279
|
+
}
|
|
257
280
|
|
|
258
281
|
const content = (
|
|
259
282
|
<>
|
|
@@ -281,7 +304,7 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
281
304
|
// External links
|
|
282
305
|
if (item.href && !item.disabled) {
|
|
283
306
|
return (
|
|
284
|
-
<a
|
|
307
|
+
<a href={item.href} {...commonProps} target="_blank" rel="noopener noreferrer">
|
|
285
308
|
{content}
|
|
286
309
|
</a>
|
|
287
310
|
);
|
|
@@ -290,7 +313,6 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
290
313
|
// Internal navigation or custom click handlers
|
|
291
314
|
return (
|
|
292
315
|
<button
|
|
293
|
-
key={item.id}
|
|
294
316
|
type="button"
|
|
295
317
|
{...commonProps}
|
|
296
318
|
disabled={Boolean(item.disabled || (isActiveItem && item.route === currentPath))}
|
|
@@ -302,7 +324,7 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
302
324
|
|
|
303
325
|
// Calculate layout spacing
|
|
304
326
|
const getLayoutSpacing = () => {
|
|
305
|
-
|
|
327
|
+
const paddingTop = showAppBar ? appBarHeight : 0;
|
|
306
328
|
let paddingBottom = 0;
|
|
307
329
|
let paddingLeft = 0;
|
|
308
330
|
|
|
@@ -341,31 +363,36 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
341
363
|
{/* Menu button for drawer (when needed) */}
|
|
342
364
|
{(drawerItems.length > 0 || screenSize === 'tablet') && (
|
|
343
365
|
<button
|
|
366
|
+
key="menu-button"
|
|
344
367
|
type="button"
|
|
345
368
|
className="menu-button"
|
|
346
369
|
onClick={screenSize === 'tablet' ? toggleRail : toggleDrawer}
|
|
347
370
|
aria-label={screenSize === 'tablet' ? 'Toggle navigation rail' : 'Open drawer menu'}
|
|
348
371
|
>
|
|
349
372
|
<span className="hamburger-icon">
|
|
350
|
-
<span></span>
|
|
351
|
-
<span></span>
|
|
352
|
-
<span></span>
|
|
373
|
+
<span key="hamburger-line-1"></span>
|
|
374
|
+
<span key="hamburger-line-2"></span>
|
|
375
|
+
<span key="hamburger-line-3"></span>
|
|
353
376
|
</span>
|
|
354
377
|
</button>
|
|
355
378
|
)}
|
|
356
379
|
|
|
357
380
|
{/* Logo/Title */}
|
|
358
|
-
{(!enhancedAppBar?.logoPosition || enhancedAppBar.logoPosition === 'left') && <AppLogo />}
|
|
381
|
+
{(!enhancedAppBar?.logoPosition || enhancedAppBar.logoPosition === 'left') && <AppLogo key="app-logo-left" />}
|
|
359
382
|
</div>
|
|
360
383
|
|
|
361
384
|
{/* Center section */}
|
|
362
385
|
<div className="appbar-center">
|
|
363
|
-
{enhancedAppBar?.logoPosition === 'center' && <AppLogo />}
|
|
386
|
+
{enhancedAppBar?.logoPosition === 'center' && <AppLogo key="app-logo-center" />}
|
|
364
387
|
|
|
365
388
|
{/* Desktop navigation items */}
|
|
366
389
|
{screenSize === 'desktop' && (
|
|
367
|
-
<nav className="appbar-navigation">
|
|
368
|
-
{primaryItems.map(item =>
|
|
390
|
+
<nav key="desktop-navigation" className="appbar-navigation">
|
|
391
|
+
{primaryItems.map(item => (
|
|
392
|
+
<React.Fragment key={item.id}>
|
|
393
|
+
{renderMenuItem(item, 'appbar')}
|
|
394
|
+
</React.Fragment>
|
|
395
|
+
))}
|
|
369
396
|
</nav>
|
|
370
397
|
)}
|
|
371
398
|
</div>
|
|
@@ -373,14 +400,14 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
373
400
|
{/* Right section */}
|
|
374
401
|
<div className="appbar-right">
|
|
375
402
|
{enhancedAppBar?.actions && (
|
|
376
|
-
<div className="appbar-actions">
|
|
403
|
+
<div key="appbar-actions" className="appbar-actions">
|
|
377
404
|
{enhancedAppBar.actions}
|
|
378
405
|
</div>
|
|
379
406
|
)}
|
|
380
407
|
{/* Theme and Palette Switchers */}
|
|
381
|
-
<div className="appbar-theme-controls">
|
|
382
|
-
{showThemeSwitcher && <ThemeSwitcher />}
|
|
383
|
-
{showPaletteSwitcher && <PaletteSwitcher />}
|
|
408
|
+
<div key="appbar-theme-controls" className="appbar-theme-controls">
|
|
409
|
+
{showThemeSwitcher && <ThemeSwitcher key="theme-switcher" />}
|
|
410
|
+
{showPaletteSwitcher && <PaletteSwitcher key="palette-switcher" />}
|
|
384
411
|
</div>
|
|
385
412
|
</div>
|
|
386
413
|
</div>
|
|
@@ -391,7 +418,11 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
391
418
|
{screenSize === 'tablet' && (
|
|
392
419
|
<nav className={`navigation-rail ${isRailExpanded ? 'expanded' : 'collapsed'}`}>
|
|
393
420
|
<div className="rail-items">
|
|
394
|
-
{primaryItems.map(item =>
|
|
421
|
+
{primaryItems.map(item => (
|
|
422
|
+
<React.Fragment key={item.id}>
|
|
423
|
+
{renderMenuItem(item, 'rail')}
|
|
424
|
+
</React.Fragment>
|
|
425
|
+
))}
|
|
395
426
|
</div>
|
|
396
427
|
</nav>
|
|
397
428
|
)}
|
|
@@ -400,7 +431,11 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
400
431
|
{screenSize === 'mobile' && primaryItems.length > 0 && (
|
|
401
432
|
<nav className="bottom-navigation">
|
|
402
433
|
<div className="bottom-nav-items">
|
|
403
|
-
{primaryItems.map(item =>
|
|
434
|
+
{primaryItems.map(item => (
|
|
435
|
+
<React.Fragment key={item.id}>
|
|
436
|
+
{renderMenuItem(item, 'bottom')}
|
|
437
|
+
</React.Fragment>
|
|
438
|
+
))}
|
|
404
439
|
</div>
|
|
405
440
|
</nav>
|
|
406
441
|
)}
|
|
@@ -410,8 +445,9 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
410
445
|
<div className="drawer-overlay" onClick={toggleDrawer}>
|
|
411
446
|
<nav className="navigation-drawer" onClick={(e) => e.stopPropagation()}>
|
|
412
447
|
<div className="drawer-header">
|
|
413
|
-
<h3>Menu</h3>
|
|
448
|
+
<h3 key="drawer-title">Menu</h3>
|
|
414
449
|
<button
|
|
450
|
+
key="drawer-close-button"
|
|
415
451
|
type="button"
|
|
416
452
|
className="drawer-close"
|
|
417
453
|
onClick={toggleDrawer}
|
|
@@ -423,15 +459,23 @@ const Scaffold: React.FC<ScaffoldProps> = ({
|
|
|
423
459
|
<div className="drawer-items">
|
|
424
460
|
{/* Show all primary items in drawer for consistency */}
|
|
425
461
|
<div className="drawer-section">
|
|
426
|
-
<h4>Navigation</h4>
|
|
427
|
-
{primaryItems.map(item =>
|
|
462
|
+
<h4 key="navigation-header">Navigation</h4>
|
|
463
|
+
{primaryItems.map(item => (
|
|
464
|
+
<React.Fragment key={item.id}>
|
|
465
|
+
{renderMenuItem(item, 'drawer')}
|
|
466
|
+
</React.Fragment>
|
|
467
|
+
))}
|
|
428
468
|
</div>
|
|
429
469
|
|
|
430
470
|
{/* Additional items */}
|
|
431
471
|
{drawerItems.length > 0 && (
|
|
432
472
|
<div className="drawer-section">
|
|
433
|
-
<h4>More</h4>
|
|
434
|
-
{drawerItems.map(item =>
|
|
473
|
+
<h4 key="more-header">More</h4>
|
|
474
|
+
{drawerItems.map(item => (
|
|
475
|
+
<React.Fragment key={item.id}>
|
|
476
|
+
{renderMenuItem(item, 'drawer')}
|
|
477
|
+
</React.Fragment>
|
|
478
|
+
))}
|
|
435
479
|
</div>
|
|
436
480
|
)}
|
|
437
481
|
</div>
|
|
@@ -32,12 +32,12 @@ export type ContainerProps = ViewProps & SchemaProps<typeof ContainerSchema>;
|
|
|
32
32
|
* This component receives fully processed props from createSerializableView
|
|
33
33
|
* and renders the container using Material-UI Box with all styling applied.
|
|
34
34
|
*/
|
|
35
|
-
function ContainerView({ children, gridProps, ...props }: ContainerProps & { gridProps?:
|
|
35
|
+
function ContainerView({ children, gridProps, ...props }: ContainerProps & { gridProps?: unknown }) {
|
|
36
36
|
// Render the component as a Box with all processed props
|
|
37
37
|
return (
|
|
38
38
|
<Box
|
|
39
39
|
{...props}
|
|
40
|
-
{...(gridProps
|
|
40
|
+
{...(gridProps ? { 'data-grid': JSON.stringify(gridProps) } : {})}
|
|
41
41
|
component="div"
|
|
42
42
|
>
|
|
43
43
|
{children}
|
|
@@ -73,21 +73,21 @@ function convertSchemaToBaseProps(schema: Partial<ViewSchema>): WithBaseProps {
|
|
|
73
73
|
/**
|
|
74
74
|
* Convert string event handler to function
|
|
75
75
|
*/
|
|
76
|
-
function convertEventHandler(handlerStr?: string): ((event:
|
|
76
|
+
function convertEventHandler(handlerStr?: string): ((event: unknown) => void) | undefined {
|
|
77
77
|
if (!handlerStr || typeof handlerStr !== 'string') {
|
|
78
78
|
return undefined;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
try {
|
|
82
82
|
// Create function from string - handle both function declarations and expressions
|
|
83
|
-
let func:
|
|
83
|
+
let func: (...args: unknown[]) => unknown;
|
|
84
84
|
if (handlerStr.trim().startsWith('function')) {
|
|
85
|
-
func = new Function(`return (${handlerStr})`)();
|
|
85
|
+
func = new Function(`return (${handlerStr})`)() as (...args: unknown[]) => unknown;
|
|
86
86
|
} else {
|
|
87
|
-
func = new Function('event', handlerStr);
|
|
87
|
+
func = new Function('event', handlerStr) as (...args: unknown[]) => unknown;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
return (event:
|
|
90
|
+
return (event: unknown) => func(event);
|
|
91
91
|
} catch (error) {
|
|
92
92
|
console.error('Error parsing event handler:', error);
|
|
93
93
|
return undefined;
|
|
@@ -98,17 +98,17 @@ function convertEventHandler(handlerStr?: string): ((event: any) => void) | unde
|
|
|
98
98
|
* Processed props that subclasses receive
|
|
99
99
|
*/
|
|
100
100
|
export interface ProcessedProps {
|
|
101
|
-
gridProps:
|
|
102
|
-
styleProps:
|
|
103
|
-
htmlProps:
|
|
104
|
-
restProps:
|
|
101
|
+
gridProps: unknown;
|
|
102
|
+
styleProps: unknown;
|
|
103
|
+
htmlProps: unknown;
|
|
104
|
+
restProps: unknown;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
/**
|
|
108
108
|
* Abstract base class implementing ViewSchema
|
|
109
109
|
* All concrete components should extend this class
|
|
110
110
|
*/
|
|
111
|
-
export abstract class ModelView<TProps =
|
|
111
|
+
export abstract class ModelView<TProps = Record<string, unknown>>
|
|
112
112
|
extends React.Component<TProps & SchemaProps<ViewSchema> & WithDataBinding>
|
|
113
113
|
implements Serializable {
|
|
114
114
|
|
|
@@ -119,8 +119,9 @@ export abstract class ModelView<TProps = any, TModel = any>
|
|
|
119
119
|
/**
|
|
120
120
|
* Common fromJson implementation
|
|
121
121
|
*/
|
|
122
|
-
static fromJson(jsonData:
|
|
123
|
-
const { tagName
|
|
122
|
+
static fromJson(jsonData: unknown): ReactElement {
|
|
123
|
+
const typedData = jsonData as { tagName?: string; version?: string; data?: unknown };
|
|
124
|
+
const { tagName, version, data } = typedData;
|
|
124
125
|
if (tagName !== this.tagName) {
|
|
125
126
|
throw new Error(`Cannot deserialize: Expected tagName '${this.tagName}' but got '${tagName}'`);
|
|
126
127
|
}
|
|
@@ -128,15 +129,15 @@ export abstract class ModelView<TProps = any, TModel = any>
|
|
|
128
129
|
console.warn(`Version mismatch: Expected ${this.version} but got ${version}`);
|
|
129
130
|
}
|
|
130
131
|
|
|
131
|
-
return React.createElement(this as
|
|
132
|
+
return React.createElement(this as React.ComponentType<unknown>, data || {});
|
|
132
133
|
}
|
|
133
134
|
|
|
134
135
|
/**
|
|
135
136
|
* Common toJson implementation with hooks for customization
|
|
136
137
|
*/
|
|
137
|
-
toJson():
|
|
138
|
-
const baseProps = this.getBaseSerializableProps()
|
|
139
|
-
const componentProps = this.getComponentSpecificProps()
|
|
138
|
+
toJson(): unknown {
|
|
139
|
+
const baseProps = this.getBaseSerializableProps() as Record<string, unknown>;
|
|
140
|
+
const componentProps = this.getComponentSpecificProps() as Record<string, unknown>;
|
|
140
141
|
return {
|
|
141
142
|
tagName: (this.constructor as typeof ModelView).tagName,
|
|
142
143
|
version: (this.constructor as typeof ModelView).version,
|
|
@@ -152,7 +153,7 @@ export abstract class ModelView<TProps = any, TModel = any>
|
|
|
152
153
|
* This converts ViewSchema props and processes them through useBaseProps
|
|
153
154
|
*/
|
|
154
155
|
protected getProcessedProps(): ProcessedProps {
|
|
155
|
-
const { dataSource, bindingOptions, ...schemaProps } = this.props;
|
|
156
|
+
const { dataSource: _dataSource, bindingOptions: _bindingOptions, ...schemaProps } = this.props;
|
|
156
157
|
|
|
157
158
|
// Convert ViewSchema props to BaseComponentProps format
|
|
158
159
|
const convertedProps = convertSchemaToBaseProps(schemaProps);
|
|
@@ -221,8 +222,8 @@ export abstract class ModelView<TProps = any, TModel = any>
|
|
|
221
222
|
/**
|
|
222
223
|
* Common base props that all components serialize
|
|
223
224
|
*/
|
|
224
|
-
protected getBaseSerializableProps():
|
|
225
|
-
const props = this.props as
|
|
225
|
+
protected getBaseSerializableProps(): unknown {
|
|
226
|
+
const props = this.props as TProps & SchemaProps<ViewSchema> & WithDataBinding;
|
|
226
227
|
return {
|
|
227
228
|
children: props.children ? this.serializeChildren(props.children) : undefined,
|
|
228
229
|
dataSource: props.dataSource,
|
|
@@ -235,12 +236,12 @@ export abstract class ModelView<TProps = any, TModel = any>
|
|
|
235
236
|
/**
|
|
236
237
|
* Hook for subclasses to add component-specific serialization
|
|
237
238
|
*/
|
|
238
|
-
protected abstract getComponentSpecificProps():
|
|
239
|
+
protected abstract getComponentSpecificProps(): unknown;
|
|
239
240
|
|
|
240
241
|
/**
|
|
241
242
|
* Common children serialization logic
|
|
242
243
|
*/
|
|
243
|
-
protected serializeChildren(children: ReactNode):
|
|
244
|
+
protected serializeChildren(children: ReactNode): unknown {
|
|
244
245
|
if (typeof children === 'string') {
|
|
245
246
|
return children;
|
|
246
247
|
}
|
|
@@ -255,7 +256,7 @@ export abstract class ModelView<TProps = any, TModel = any>
|
|
|
255
256
|
/**
|
|
256
257
|
* Helper to determine if children contain other serializable components
|
|
257
258
|
*/
|
|
258
|
-
protected hasNestedComponents(
|
|
259
|
+
protected hasNestedComponents(_children: ReactNode): boolean {
|
|
259
260
|
return false;
|
|
260
261
|
}
|
|
261
262
|
|
|
@@ -263,7 +264,7 @@ export abstract class ModelView<TProps = any, TModel = any>
|
|
|
263
264
|
* Common render pattern
|
|
264
265
|
*/
|
|
265
266
|
render() {
|
|
266
|
-
const props = this.props as
|
|
267
|
+
const props = this.props as TProps & SchemaProps<ViewSchema> & WithDataBinding;
|
|
267
268
|
|
|
268
269
|
if (props.dataSource) {
|
|
269
270
|
return this.renderWithDataBinding();
|
|
@@ -285,7 +286,7 @@ export abstract class ModelView<TProps = any, TModel = any>
|
|
|
285
286
|
/**
|
|
286
287
|
* Register HTML pattern handlers for this component
|
|
287
288
|
*/
|
|
288
|
-
static registerPatternHandlers(_registry:
|
|
289
|
+
static registerPatternHandlers(_registry: unknown): void {
|
|
289
290
|
// Default: no patterns to register
|
|
290
291
|
}
|
|
291
292
|
}
|
|
@@ -298,18 +299,18 @@ export function createModelViewClass<TProps, TModel>(
|
|
|
298
299
|
config: {
|
|
299
300
|
tagName: string;
|
|
300
301
|
version: string;
|
|
301
|
-
getComponentSpecificProps: (props: TProps, processedProps: ProcessedProps) =>
|
|
302
|
+
getComponentSpecificProps: (props: TProps, processedProps: ProcessedProps) => Record<string, unknown>;
|
|
302
303
|
hasNestedComponents?: (children: ReactNode) => boolean;
|
|
303
304
|
renderView: (props: TProps, processedProps: ProcessedProps) => React.ReactElement;
|
|
304
305
|
renderWithDataBinding: (props: TProps & WithDataBinding, processedProps: ProcessedProps) => React.ReactElement;
|
|
305
306
|
}
|
|
306
|
-
):
|
|
307
|
+
): unknown {
|
|
307
308
|
|
|
308
309
|
class DynamicModelView extends ModelView<TProps, TModel> {
|
|
309
310
|
static readonly tagName = config.tagName;
|
|
310
311
|
static readonly version = config.version;
|
|
311
312
|
|
|
312
|
-
protected getComponentSpecificProps():
|
|
313
|
+
protected getComponentSpecificProps(): unknown {
|
|
313
314
|
const processedProps = this.getProcessedProps();
|
|
314
315
|
return config.getComponentSpecificProps(this.props as TProps, processedProps);
|
|
315
316
|
}
|