@qwickapps/react-framework 1.4.9 → 1.5.1
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 +23 -0
- 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 +4143 -2318
- package/dist/index.js +4169 -2315
- 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.1.5.1.css +172 -0
- package/dist/palettes/palette-autumn.1.5.1.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.1.5.1.css +172 -0
- package/dist/palettes/palette-cosmic.1.5.1.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.1.5.1.css +178 -0
- package/dist/palettes/palette-default.1.5.1.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.1.5.1.css +172 -0
- package/dist/palettes/palette-ocean.1.5.1.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.1.5.1.css +160 -0
- package/dist/palettes/palette-spring.1.5.1.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.1.5.1.css +172 -0
- package/dist/palettes/palette-winter.1.5.1.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 +20 -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 +13 -16
- package/src/components/Logo.tsx +42 -29
- package/src/components/Markdown.tsx +9 -9
- package/src/components/ProductLogo.tsx +118 -0
- package/src/components/QwickApp.css +37 -1060
- package/src/components/QwickApp.tsx +1 -1
- package/src/components/QwickAppsLogo.tsx +1 -1
- package/src/components/ResponsiveMenu.tsx +1 -1
- package/src/components/SafeSpan.tsx +8 -8
- package/src/components/Scaffold.css +11 -1
- package/src/components/Scaffold.tsx +55 -25
- 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 +213 -69
- 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 +14 -9
- package/src/components/blocks/FeatureCard.tsx +16 -11
- package/src/components/blocks/FeatureGrid.tsx +13 -8
- package/src/components/blocks/Footer.tsx +25 -16
- package/src/components/blocks/HeroBlock.tsx +12 -13
- package/src/components/blocks/Image.tsx +16 -8
- package/src/components/blocks/PageBannerHeader.tsx +15 -11
- package/src/components/blocks/ProductCard.tsx +32 -25
- package/src/components/blocks/Section.tsx +21 -13
- package/src/components/blocks/Text.tsx +26 -11
- package/src/components/buttons/Button.tsx +22 -118
- 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/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 +2 -1
- 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/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 +6 -6
- package/src/schemas/transformers/ComponentTransformer.ts +37 -20
- package/src/schemas/transformers/ReactNodeTransformer.ts +18 -16
- 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/CardListGrid.stories.tsx +1 -1
- 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 +244 -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 -57
- 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 -22
- 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
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Palette Manifest Utilities - Fetch and manage palette manifests
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Manifest structure
|
|
8
|
+
export interface PaletteManifestEntry {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
author?: string;
|
|
13
|
+
license?: string;
|
|
14
|
+
version: string;
|
|
15
|
+
file: string;
|
|
16
|
+
fileMinified?: string;
|
|
17
|
+
thumbnail?: string;
|
|
18
|
+
primaryColor: string;
|
|
19
|
+
inlined?: boolean;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface PaletteManifest {
|
|
23
|
+
version: string;
|
|
24
|
+
palettes: PaletteManifestEntry[];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Configuration
|
|
28
|
+
export interface PaletteManifestConfig {
|
|
29
|
+
/** Enable/disable remote palette loading */
|
|
30
|
+
enableRemote?: boolean;
|
|
31
|
+
/** Custom remote URL for palette manifest */
|
|
32
|
+
remoteUrl?: string;
|
|
33
|
+
/** Custom local path for palette manifest */
|
|
34
|
+
localPath?: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Default configuration
|
|
38
|
+
const DEFAULT_CONFIG: Required<PaletteManifestConfig> = {
|
|
39
|
+
enableRemote: true,
|
|
40
|
+
remoteUrl: 'https://qwickapps.com/palettes/manifest.json',
|
|
41
|
+
localPath: '/palettes/manifest.json',
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// Cache for loaded manifests
|
|
45
|
+
let cachedManifest: PaletteManifest | null = null;
|
|
46
|
+
let manifestLoadAttempted = false;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Fetch a manifest from a URL
|
|
50
|
+
*/
|
|
51
|
+
async function fetchManifestFromUrl(url: string): Promise<PaletteManifest | null> {
|
|
52
|
+
try {
|
|
53
|
+
const response = await fetch(url, {
|
|
54
|
+
method: 'GET',
|
|
55
|
+
headers: {
|
|
56
|
+
'Accept': 'application/json',
|
|
57
|
+
},
|
|
58
|
+
// Short timeout for better UX
|
|
59
|
+
signal: AbortSignal.timeout(5000),
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
console.warn(`[PaletteManifest] Failed to fetch from ${url}: ${response.status} ${response.statusText}`);
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const manifest: PaletteManifest = await response.json();
|
|
68
|
+
|
|
69
|
+
// Basic validation
|
|
70
|
+
if (!manifest.version || !Array.isArray(manifest.palettes)) {
|
|
71
|
+
console.warn(`[PaletteManifest] Invalid manifest structure from ${url}`);
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return manifest;
|
|
76
|
+
} catch (error) {
|
|
77
|
+
// Only log in development
|
|
78
|
+
if ((import.meta as Record<string, unknown>).env?.DEV) {
|
|
79
|
+
console.warn(`[PaletteManifest] Error fetching from ${url}:`, error);
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Merge multiple manifests, with later manifests overriding earlier ones
|
|
87
|
+
*/
|
|
88
|
+
function mergeManifests(...manifests: (PaletteManifest | null)[]): PaletteManifest {
|
|
89
|
+
const paletteMap = new Map<string, PaletteManifestEntry>();
|
|
90
|
+
let latestVersion = '0.0.0';
|
|
91
|
+
|
|
92
|
+
for (const manifest of manifests) {
|
|
93
|
+
if (!manifest) continue;
|
|
94
|
+
|
|
95
|
+
// Track latest version
|
|
96
|
+
if (manifest.version > latestVersion) {
|
|
97
|
+
latestVersion = manifest.version;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Merge palettes (later manifests override)
|
|
101
|
+
for (const palette of manifest.palettes) {
|
|
102
|
+
paletteMap.set(palette.id, palette);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return {
|
|
107
|
+
version: latestVersion,
|
|
108
|
+
palettes: Array.from(paletteMap.values()),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Load palette manifest from configured sources
|
|
114
|
+
*/
|
|
115
|
+
export async function loadPaletteManifest(
|
|
116
|
+
config: PaletteManifestConfig = {}
|
|
117
|
+
): Promise<PaletteManifest> {
|
|
118
|
+
// Return cached manifest if available
|
|
119
|
+
if (cachedManifest) {
|
|
120
|
+
return cachedManifest;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Only attempt once
|
|
124
|
+
if (manifestLoadAttempted) {
|
|
125
|
+
return getFallbackManifest();
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
manifestLoadAttempted = true;
|
|
129
|
+
|
|
130
|
+
const finalConfig = { ...DEFAULT_CONFIG, ...config };
|
|
131
|
+
const manifests: (PaletteManifest | null)[] = [];
|
|
132
|
+
|
|
133
|
+
// Try remote manifest first (if enabled)
|
|
134
|
+
if (finalConfig.enableRemote) {
|
|
135
|
+
const remoteManifest = await fetchManifestFromUrl(finalConfig.remoteUrl);
|
|
136
|
+
manifests.push(remoteManifest);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Try local manifest
|
|
140
|
+
if (typeof window !== 'undefined') {
|
|
141
|
+
const localManifest = await fetchManifestFromUrl(finalConfig.localPath);
|
|
142
|
+
manifests.push(localManifest);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Merge all loaded manifests
|
|
146
|
+
const mergedManifest = mergeManifests(...manifests);
|
|
147
|
+
|
|
148
|
+
// If no manifests loaded, use fallback
|
|
149
|
+
if (mergedManifest.palettes.length === 0) {
|
|
150
|
+
if ((import.meta as Record<string, unknown>).env?.DEV) {
|
|
151
|
+
console.warn('[PaletteManifest] No manifests loaded, using fallback');
|
|
152
|
+
}
|
|
153
|
+
cachedManifest = getFallbackManifest();
|
|
154
|
+
return cachedManifest;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
cachedManifest = mergedManifest;
|
|
158
|
+
return cachedManifest;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Get fallback manifest with built-in palettes
|
|
163
|
+
*/
|
|
164
|
+
function getFallbackManifest(): PaletteManifest {
|
|
165
|
+
return {
|
|
166
|
+
version: '1.4.9',
|
|
167
|
+
palettes: [
|
|
168
|
+
{
|
|
169
|
+
id: 'default',
|
|
170
|
+
name: 'Default',
|
|
171
|
+
description: 'Classic blue and neutral color scheme',
|
|
172
|
+
version: '1.4.9',
|
|
173
|
+
file: 'PaletteDefault.css',
|
|
174
|
+
primaryColor: '#007bff',
|
|
175
|
+
inlined: true,
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
id: 'autumn',
|
|
179
|
+
name: 'Autumn',
|
|
180
|
+
description: 'Warm oranges, golden yellows, and earthy browns',
|
|
181
|
+
version: '1.4.9',
|
|
182
|
+
file: 'PaletteAutumn.css',
|
|
183
|
+
primaryColor: '#ea580c',
|
|
184
|
+
inlined: false,
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
id: 'cosmic',
|
|
188
|
+
name: 'Cosmic',
|
|
189
|
+
description: 'Modern purple gradient for creative and tech brands',
|
|
190
|
+
version: '1.4.9',
|
|
191
|
+
file: 'PaletteCosmic.css',
|
|
192
|
+
primaryColor: '#8b5cf6',
|
|
193
|
+
inlined: false,
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
id: 'ocean',
|
|
197
|
+
name: 'Ocean',
|
|
198
|
+
description: 'Deep blues, aqua teals, and seafoam greens',
|
|
199
|
+
version: '1.4.9',
|
|
200
|
+
file: 'PaletteOcean.css',
|
|
201
|
+
primaryColor: '#0891b2',
|
|
202
|
+
inlined: false,
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
id: 'spring',
|
|
206
|
+
name: 'Spring',
|
|
207
|
+
description: 'Fresh greens, soft pinks, and bright yellows',
|
|
208
|
+
version: '1.4.9',
|
|
209
|
+
file: 'PaletteSpring.css',
|
|
210
|
+
primaryColor: '#16a34a',
|
|
211
|
+
inlined: false,
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
id: 'winter',
|
|
215
|
+
name: 'Winter',
|
|
216
|
+
description: 'Cool blues, icy whites, and frosty grays',
|
|
217
|
+
version: '1.4.9',
|
|
218
|
+
file: 'PaletteWinter.css',
|
|
219
|
+
primaryColor: '#0077be',
|
|
220
|
+
inlined: false,
|
|
221
|
+
},
|
|
222
|
+
],
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Get a specific palette from the manifest
|
|
228
|
+
*/
|
|
229
|
+
export async function getPaletteFromManifest(
|
|
230
|
+
paletteId: string,
|
|
231
|
+
config?: PaletteManifestConfig
|
|
232
|
+
): Promise<PaletteManifestEntry | null> {
|
|
233
|
+
const manifest = await loadPaletteManifest(config);
|
|
234
|
+
return manifest.palettes.find(p => p.id === paletteId) || null;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Get all available palettes
|
|
239
|
+
*/
|
|
240
|
+
export async function getAvailablePalettes(
|
|
241
|
+
config?: PaletteManifestConfig
|
|
242
|
+
): Promise<PaletteManifestEntry[]> {
|
|
243
|
+
const manifest = await loadPaletteManifest(config);
|
|
244
|
+
return manifest.palettes;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Clear the cached manifest (useful for testing)
|
|
249
|
+
*/
|
|
250
|
+
export function clearManifestCache(): void {
|
|
251
|
+
cachedManifest = null;
|
|
252
|
+
manifestLoadAttempted = false;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Register a custom palette dynamically
|
|
257
|
+
*/
|
|
258
|
+
export function registerCustomPalette(palette: PaletteManifestEntry): void {
|
|
259
|
+
if (!cachedManifest) {
|
|
260
|
+
cachedManifest = getFallbackManifest();
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// Remove existing palette with same ID
|
|
264
|
+
cachedManifest.palettes = cachedManifest.palettes.filter(p => p.id !== palette.id);
|
|
265
|
+
|
|
266
|
+
// Add new palette
|
|
267
|
+
cachedManifest.palettes.push(palette);
|
|
268
|
+
}
|
|
@@ -17,6 +17,9 @@ export const AVAILABLE_PALETTES: PaletteConfig[] = [
|
|
|
17
17
|
* Get the current palette from CSS variables
|
|
18
18
|
*/
|
|
19
19
|
export const getCurrentPalette = (): string => {
|
|
20
|
+
if (typeof document === 'undefined') {
|
|
21
|
+
return 'default'; // SSR fallback
|
|
22
|
+
}
|
|
20
23
|
const root = document.documentElement;
|
|
21
24
|
return root.getAttribute('data-palette') || 'default';
|
|
22
25
|
};
|
|
@@ -25,9 +28,12 @@ export const getCurrentPalette = (): string => {
|
|
|
25
28
|
* Set palette and update CSS variables
|
|
26
29
|
*/
|
|
27
30
|
export const setPalette = (palette: string): void => {
|
|
31
|
+
if (typeof document === 'undefined' || typeof window === 'undefined') {
|
|
32
|
+
return; // SSR - no-op
|
|
33
|
+
}
|
|
28
34
|
const root = document.documentElement;
|
|
29
35
|
root.setAttribute('data-palette', palette);
|
|
30
|
-
|
|
36
|
+
|
|
31
37
|
// Trigger custom event for palette change
|
|
32
38
|
window.dispatchEvent(new CustomEvent('paletteChange', { detail: { palette } }));
|
|
33
39
|
};
|
|
@@ -51,6 +57,9 @@ export const getPaletteConfig = (paletteId: string): PaletteConfig | undefined =
|
|
|
51
57
|
* Initialize palette system
|
|
52
58
|
*/
|
|
53
59
|
export const initializePalette = (): void => {
|
|
60
|
+
if (typeof localStorage === 'undefined') {
|
|
61
|
+
return; // SSR - no-op
|
|
62
|
+
}
|
|
54
63
|
const savedPalette = localStorage.getItem('palette') || 'default';
|
|
55
64
|
setPalette(savedPalette);
|
|
56
65
|
};
|
|
@@ -59,6 +68,9 @@ export const initializePalette = (): void => {
|
|
|
59
68
|
* Save palette preference to localStorage
|
|
60
69
|
*/
|
|
61
70
|
export const savePalettePreference = (palette: string): void => {
|
|
71
|
+
if (typeof localStorage === 'undefined') {
|
|
72
|
+
return; // SSR - no-op
|
|
73
|
+
}
|
|
62
74
|
localStorage.setItem('palette', palette);
|
|
63
75
|
setPalette(palette);
|
|
64
76
|
};
|
|
@@ -67,6 +79,9 @@ export const savePalettePreference = (palette: string): void => {
|
|
|
67
79
|
* Get CSS custom property value
|
|
68
80
|
*/
|
|
69
81
|
export const getCSSVariable = (property: string): string => {
|
|
82
|
+
if (typeof document === 'undefined') {
|
|
83
|
+
return ''; // SSR fallback
|
|
84
|
+
}
|
|
70
85
|
return getComputedStyle(document.documentElement).getPropertyValue(property).trim();
|
|
71
86
|
};
|
|
72
87
|
|
|
@@ -74,5 +89,8 @@ export const getCSSVariable = (property: string): string => {
|
|
|
74
89
|
* Set CSS custom property value
|
|
75
90
|
*/
|
|
76
91
|
export const setCSSVariable = (property: string, value: string): void => {
|
|
92
|
+
if (typeof document === 'undefined') {
|
|
93
|
+
return; // SSR - no-op
|
|
94
|
+
}
|
|
77
95
|
document.documentElement.style.setProperty(property, value);
|
|
78
96
|
};
|
package/src/utils/reactUtils.tsx
CHANGED
|
@@ -1,54 +1,55 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* QwickApps React Framework - React Utilities
|
|
3
3
|
* This module provides utility functions for React components in the QwickApps React Framework.
|
|
4
|
-
*
|
|
4
|
+
*
|
|
5
5
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { ReactNode } from 'react';
|
|
9
|
-
import { useLocation, useNavigate } from 'react-router-dom';
|
|
10
9
|
|
|
11
|
-
/** Location type for
|
|
10
|
+
/** Location type for routing */
|
|
12
11
|
type LocationType = { pathname: string, search: string, hash: string };
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* Get the current location from browser or undefined in SSR
|
|
15
|
+
* Works without relying on routing libraries
|
|
16
|
+
* @returns {object | undefined} - The location object if in browser, otherwise undefined
|
|
17
17
|
*/
|
|
18
18
|
export const useSafeLocation = (): LocationType | undefined => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
// Use browser location if available (works in any React app)
|
|
20
|
+
if (typeof window !== 'undefined') {
|
|
21
|
+
return {
|
|
22
|
+
pathname: window.location.pathname,
|
|
23
|
+
search: window.location.search,
|
|
24
|
+
hash: window.location.hash
|
|
25
|
+
};
|
|
24
26
|
}
|
|
27
|
+
return undefined;
|
|
25
28
|
};
|
|
26
29
|
|
|
27
30
|
/**
|
|
28
|
-
*
|
|
29
|
-
|
|
31
|
+
* Navigate function type
|
|
32
|
+
*/
|
|
33
|
+
export type NavigateFunction = (to: string | number, options?: unknown) => void;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get a navigation function with fallback to window.location
|
|
37
|
+
* Works without relying on routing libraries
|
|
38
|
+
* @returns {NavigateFunction} - The navigate function
|
|
30
39
|
*/
|
|
31
|
-
export const useSafeNavigate = ():
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return (to: string | number, options?: any) => {
|
|
38
|
-
console.warn('React Router context not available, using window.location as fallback to navigate to:', to);
|
|
39
|
-
if (typeof to === 'string') {
|
|
40
|
-
// Handle relative and absolute paths
|
|
41
|
-
if (typeof window !== 'undefined') {
|
|
42
|
-
window.location.href = to;
|
|
43
|
-
}
|
|
44
|
-
} else if (typeof to === 'number') {
|
|
45
|
-
// Handle history.go() equivalent
|
|
46
|
-
if (typeof window !== 'undefined' && window.history) {
|
|
47
|
-
window.history.go(to);
|
|
48
|
-
}
|
|
40
|
+
export const useSafeNavigate = (): NavigateFunction => {
|
|
41
|
+
// Return function that uses window.location
|
|
42
|
+
return (to: string | number) => {
|
|
43
|
+
if (typeof to === 'string') {
|
|
44
|
+
if (typeof window !== 'undefined') {
|
|
45
|
+
window.location.href = to;
|
|
49
46
|
}
|
|
50
|
-
}
|
|
51
|
-
|
|
47
|
+
} else if (typeof to === 'number') {
|
|
48
|
+
if (typeof window !== 'undefined' && window.history) {
|
|
49
|
+
window.history.go(to);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
52
53
|
};
|
|
53
54
|
|
|
54
55
|
/**
|
|
@@ -77,7 +78,7 @@ export function extractTextFromReactNode(node: ReactNode): string {
|
|
|
77
78
|
|
|
78
79
|
// For React elements, try to extract text content
|
|
79
80
|
if (typeof node === 'object' && node !== null && 'props' in node) {
|
|
80
|
-
const element = node as
|
|
81
|
+
const element = node as { props?: { children?: ReactNode } };
|
|
81
82
|
if (element.props && element.props.children) {
|
|
82
83
|
return extractTextFromReactNode(element.props.children);
|
|
83
84
|
}
|
package/src/utils/spacing.ts
CHANGED
|
@@ -33,8 +33,7 @@ const CSS_SPACING_PATTERN = /^(\d+(\.\d+)?(px|em|rem|%)|0|auto|inherit|initial|u
|
|
|
33
33
|
* Resolves a spacing value to MUI spacing units or CSS value
|
|
34
34
|
*/
|
|
35
35
|
export function resolveSpacing(
|
|
36
|
-
value: SpacingValue
|
|
37
|
-
context: SpacingContext = 'padding'
|
|
36
|
+
value: SpacingValue
|
|
38
37
|
): number | string | undefined {
|
|
39
38
|
if (value === undefined || value === null) {
|
|
40
39
|
return undefined;
|
|
@@ -103,52 +102,52 @@ export function resolveSpacingProps(props: {
|
|
|
103
102
|
marginX?: SpacingValue;
|
|
104
103
|
marginY?: SpacingValue;
|
|
105
104
|
}) {
|
|
106
|
-
const resolved:
|
|
105
|
+
const resolved: Record<string, number | string | undefined> = {};
|
|
107
106
|
|
|
108
107
|
// Padding
|
|
109
108
|
if (props.padding !== undefined) {
|
|
110
|
-
resolved.p = resolveSpacing(props.padding
|
|
109
|
+
resolved.p = resolveSpacing(props.padding);
|
|
111
110
|
}
|
|
112
111
|
if (props.paddingTop !== undefined) {
|
|
113
|
-
resolved.pt = resolveSpacing(props.paddingTop
|
|
112
|
+
resolved.pt = resolveSpacing(props.paddingTop);
|
|
114
113
|
}
|
|
115
114
|
if (props.paddingRight !== undefined) {
|
|
116
|
-
resolved.pr = resolveSpacing(props.paddingRight
|
|
115
|
+
resolved.pr = resolveSpacing(props.paddingRight);
|
|
117
116
|
}
|
|
118
117
|
if (props.paddingBottom !== undefined) {
|
|
119
|
-
resolved.pb = resolveSpacing(props.paddingBottom
|
|
118
|
+
resolved.pb = resolveSpacing(props.paddingBottom);
|
|
120
119
|
}
|
|
121
120
|
if (props.paddingLeft !== undefined) {
|
|
122
|
-
resolved.pl = resolveSpacing(props.paddingLeft
|
|
121
|
+
resolved.pl = resolveSpacing(props.paddingLeft);
|
|
123
122
|
}
|
|
124
123
|
if (props.paddingX !== undefined) {
|
|
125
|
-
resolved.px = resolveSpacing(props.paddingX
|
|
124
|
+
resolved.px = resolveSpacing(props.paddingX);
|
|
126
125
|
}
|
|
127
126
|
if (props.paddingY !== undefined) {
|
|
128
|
-
resolved.py = resolveSpacing(props.paddingY
|
|
127
|
+
resolved.py = resolveSpacing(props.paddingY);
|
|
129
128
|
}
|
|
130
129
|
|
|
131
130
|
// Margin
|
|
132
131
|
if (props.margin !== undefined) {
|
|
133
|
-
resolved.m = resolveSpacing(props.margin
|
|
132
|
+
resolved.m = resolveSpacing(props.margin);
|
|
134
133
|
}
|
|
135
134
|
if (props.marginTop !== undefined) {
|
|
136
|
-
resolved.mt = resolveSpacing(props.marginTop
|
|
135
|
+
resolved.mt = resolveSpacing(props.marginTop);
|
|
137
136
|
}
|
|
138
137
|
if (props.marginRight !== undefined) {
|
|
139
|
-
resolved.mr = resolveSpacing(props.marginRight
|
|
138
|
+
resolved.mr = resolveSpacing(props.marginRight);
|
|
140
139
|
}
|
|
141
140
|
if (props.marginBottom !== undefined) {
|
|
142
|
-
resolved.mb = resolveSpacing(props.marginBottom
|
|
141
|
+
resolved.mb = resolveSpacing(props.marginBottom);
|
|
143
142
|
}
|
|
144
143
|
if (props.marginLeft !== undefined) {
|
|
145
|
-
resolved.ml = resolveSpacing(props.marginLeft
|
|
144
|
+
resolved.ml = resolveSpacing(props.marginLeft);
|
|
146
145
|
}
|
|
147
146
|
if (props.marginX !== undefined) {
|
|
148
|
-
resolved.mx = resolveSpacing(props.marginX
|
|
147
|
+
resolved.mx = resolveSpacing(props.marginX);
|
|
149
148
|
}
|
|
150
149
|
if (props.marginY !== undefined) {
|
|
151
|
-
resolved.my = resolveSpacing(props.marginY
|
|
150
|
+
resolved.my = resolveSpacing(props.marginY);
|
|
152
151
|
}
|
|
153
152
|
|
|
154
153
|
return resolved;
|
|
@@ -15,6 +15,11 @@ class ThemePerformanceMonitor {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
initializeListeners() {
|
|
18
|
+
// SSR guard - only initialize listeners in browser environment
|
|
19
|
+
if (typeof window === 'undefined') {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
18
23
|
// Listen for theme changes
|
|
19
24
|
window.addEventListener('theme-changed', (event) => {
|
|
20
25
|
this.measureThemeSwitch('theme', event.detail?.theme);
|
|
@@ -27,31 +32,34 @@ class ThemePerformanceMonitor {
|
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
measureThemeSwitch(type, value) {
|
|
30
|
-
|
|
35
|
+
// SSR guard
|
|
36
|
+
if (!this.isEnabled || typeof window === 'undefined' || typeof performance === 'undefined') {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
31
39
|
|
|
32
40
|
const startTime = performance.now();
|
|
33
|
-
|
|
41
|
+
|
|
34
42
|
// Use requestAnimationFrame to measure when the visual change is complete
|
|
35
43
|
requestAnimationFrame(() => {
|
|
36
44
|
// Wait for another frame to ensure CSS has been applied
|
|
37
45
|
requestAnimationFrame(() => {
|
|
38
46
|
const endTime = performance.now();
|
|
39
47
|
const duration = endTime - startTime;
|
|
40
|
-
|
|
48
|
+
|
|
41
49
|
const measurement = {
|
|
42
50
|
type,
|
|
43
51
|
value,
|
|
44
52
|
duration,
|
|
45
53
|
timestamp: new Date().toISOString(),
|
|
46
54
|
};
|
|
47
|
-
|
|
55
|
+
|
|
48
56
|
this.measurements.push(measurement);
|
|
49
|
-
|
|
57
|
+
|
|
50
58
|
// Keep only last 50 measurements
|
|
51
59
|
if (this.measurements.length > 50) {
|
|
52
60
|
this.measurements.shift();
|
|
53
61
|
}
|
|
54
|
-
|
|
62
|
+
|
|
55
63
|
// Log if it takes too long
|
|
56
64
|
if (duration > 100) {
|
|
57
65
|
console.warn(`Slow ${type} switch detected:`, measurement);
|
package/src/utils/themeUtils.ts
CHANGED
|
@@ -9,6 +9,9 @@ export type { ThemeMode, ActualThemeMode } from '../contexts/ThemeContext';
|
|
|
9
9
|
* Get the current theme mode from CSS variables
|
|
10
10
|
*/
|
|
11
11
|
export const getCurrentTheme = (): ThemeMode => {
|
|
12
|
+
if (typeof document === 'undefined') {
|
|
13
|
+
return 'system'; // SSR fallback
|
|
14
|
+
}
|
|
12
15
|
const root = document.documentElement;
|
|
13
16
|
const theme = root.getAttribute('data-theme') as ThemeMode;
|
|
14
17
|
return theme || 'system';
|
|
@@ -18,9 +21,12 @@ export const getCurrentTheme = (): ThemeMode => {
|
|
|
18
21
|
* Set theme mode and update CSS variables
|
|
19
22
|
*/
|
|
20
23
|
export const setTheme = (theme: ThemeMode): void => {
|
|
24
|
+
if (typeof document === 'undefined' || typeof window === 'undefined') {
|
|
25
|
+
return; // SSR - no-op
|
|
26
|
+
}
|
|
21
27
|
const root = document.documentElement;
|
|
22
28
|
root.setAttribute('data-theme', theme);
|
|
23
|
-
|
|
29
|
+
|
|
24
30
|
// Trigger custom event for theme change
|
|
25
31
|
window.dispatchEvent(new CustomEvent('themeChange', { detail: { theme } }));
|
|
26
32
|
};
|
|
@@ -29,6 +35,9 @@ export const setTheme = (theme: ThemeMode): void => {
|
|
|
29
35
|
* Get system preference for dark mode
|
|
30
36
|
*/
|
|
31
37
|
export const getSystemTheme = (): ActualThemeMode => {
|
|
38
|
+
if (typeof window === 'undefined') {
|
|
39
|
+
return 'light'; // SSR fallback
|
|
40
|
+
}
|
|
32
41
|
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
33
42
|
};
|
|
34
43
|
|
|
@@ -46,9 +55,12 @@ export const getComputedTheme = (theme: ThemeMode = getCurrentTheme()): ActualTh
|
|
|
46
55
|
* Initialize theme system
|
|
47
56
|
*/
|
|
48
57
|
export const initializeTheme = (): void => {
|
|
58
|
+
if (typeof window === 'undefined' || typeof localStorage === 'undefined') {
|
|
59
|
+
return; // SSR - no-op
|
|
60
|
+
}
|
|
49
61
|
const savedTheme = (localStorage.getItem('theme') as ThemeMode) || 'system';
|
|
50
62
|
setTheme(savedTheme);
|
|
51
|
-
|
|
63
|
+
|
|
52
64
|
// Listen for system theme changes
|
|
53
65
|
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
|
54
66
|
if (getCurrentTheme() === 'system') {
|
|
@@ -62,6 +74,9 @@ export const initializeTheme = (): void => {
|
|
|
62
74
|
* Save theme preference to localStorage
|
|
63
75
|
*/
|
|
64
76
|
export const saveThemePreference = (theme: ThemeMode): void => {
|
|
77
|
+
if (typeof localStorage === 'undefined') {
|
|
78
|
+
return; // SSR - no-op
|
|
79
|
+
}
|
|
65
80
|
localStorage.setItem('theme', theme);
|
|
66
81
|
setTheme(theme);
|
|
67
82
|
};
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ContainerView - Concrete Implementation Using ViewSchema
|
|
3
|
-
*
|
|
4
|
-
* A complete rewrite that replaces the abstract class pattern with a concrete
|
|
5
|
-
* React component that accepts ViewSchema-typed props and renders all
|
|
6
|
-
* comprehensive styling, layout, and behavioral features.
|
|
7
|
-
*
|
|
8
|
-
* Key Features:
|
|
9
|
-
* - Uses ViewSchema as props interface
|
|
10
|
-
* - Integrates with existing useBaseProps utility
|
|
11
|
-
* - Processes all grid, dimension, spacing, and styling props
|
|
12
|
-
* - Handles event conversion from strings to functions
|
|
13
|
-
* - Supports children rendering and data binding
|
|
14
|
-
* - Serialization support via component metadata
|
|
15
|
-
*
|
|
16
|
-
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
17
|
-
*/
|
|
18
|
-
import type { ModelProps, WithDataBinding } from '@qwickapps/schema';
|
|
19
|
-
import React, { FocusEventHandler, MouseEventHandler } from 'react';
|
|
20
|
-
import ViewSchema from '../../schemas/ViewSchema';
|
|
21
|
-
/**
|
|
22
|
-
* Props interface for ContainerView component
|
|
23
|
-
* Combines ViewSchema properties with React-specific props
|
|
24
|
-
*/
|
|
25
|
-
import type { SxProps, Theme } from '@mui/material/styles';
|
|
26
|
-
export interface ModelViewProps extends ModelProps<ViewSchema>, WithDataBinding {
|
|
27
|
-
/** React children to render inside the component */
|
|
28
|
-
children?: React.ReactNode;
|
|
29
|
-
sx?: SxProps<Theme>;
|
|
30
|
-
style?: React.CSSProperties;
|
|
31
|
-
onClick?: MouseEventHandler<any>;
|
|
32
|
-
onMouseEnter?: MouseEventHandler<any>;
|
|
33
|
-
onMouseLeave?: MouseEventHandler<any>;
|
|
34
|
-
onFocus?: FocusEventHandler<any>;
|
|
35
|
-
onBlur?: FocusEventHandler<any>;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* ContainerView - Concrete React component implementing ViewSchema
|
|
39
|
-
*
|
|
40
|
-
* This component accepts ViewSchema props and renders a fully styled
|
|
41
|
-
* container with all the comprehensive features from BaseComponentProps.
|
|
42
|
-
*/
|
|
43
|
-
export declare function ContainerView({ children, dataSource, bindingOptions, ...schemaProps }: ModelViewProps): import("react/jsx-runtime").JSX.Element;
|
|
44
|
-
export declare namespace ContainerView {
|
|
45
|
-
var tagName: string;
|
|
46
|
-
var version: string;
|
|
47
|
-
var fromJson: (jsonData: any) => React.ReactElement;
|
|
48
|
-
var toJson: (props: ModelViewProps) => any;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Type helper for ContainerView component constructor
|
|
52
|
-
* Provides compatibility with existing registration patterns
|
|
53
|
-
*/
|
|
54
|
-
export interface ContainerViewConstructor {
|
|
55
|
-
(props: ModelViewProps): React.ReactElement;
|
|
56
|
-
readonly tagName: string;
|
|
57
|
-
readonly version: string;
|
|
58
|
-
fromJson(jsonData: any): React.ReactElement;
|
|
59
|
-
toJson?(props: ModelViewProps): any;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Export the new functional component as default
|
|
63
|
-
*/
|
|
64
|
-
export default ContainerView;
|
|
65
|
-
//# sourceMappingURL=ContainerView.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContainerView.d.ts","sourceRoot":"","sources":["../../../src/components/base/ContainerView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAW,MAAM,OAAO,CAAC;AAE7E,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAElD;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,cAAe,SAAQ,UAAU,CAAC,UAAU,CAAC,EAAE,eAAe;IAC7E,oDAAoD;IACpD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;CACjC;AA0ED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,UAAU,EACV,cAAc,EACd,GAAG,WAAW,EACf,EAAE,cAAc,2CAgChB;yBArCe,aAAa;;;6BAgDO,GAAG,KAAG,KAAK,CAAC,YAAY;wBAO7B,cAAc,KAAG,GAAG;;AAsBnD;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC;IAC5C,MAAM,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,CAAC;CACrC;AAED;;GAEG;AACH,eAAe,aAAa,CAAC"}
|