@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
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Palette CSS Loader - Dynamically loads palette CSS files on demand using manifest
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
getPaletteFromManifest,
|
|
9
|
+
type PaletteManifestConfig,
|
|
10
|
+
} from './paletteManifest';
|
|
11
|
+
|
|
12
|
+
// Track loaded palettes to avoid duplicate loading
|
|
13
|
+
const loadedPalettes = new Set<string>();
|
|
14
|
+
|
|
15
|
+
// Track loading promises to avoid race conditions
|
|
16
|
+
const loadingPalettes = new Map<string, Promise<void>>();
|
|
17
|
+
|
|
18
|
+
// Default CDN URLs (prioritized)
|
|
19
|
+
const DEFAULT_CDN_URLS = [
|
|
20
|
+
'https://qwickapps.com/palettes/', // Primary CDN (Cloudflare)
|
|
21
|
+
'/palettes/', // Local fallback
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
// Global configuration
|
|
25
|
+
let globalConfig: PaletteManifestConfig = { enableRemote: true };
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Configure palette loader
|
|
29
|
+
*/
|
|
30
|
+
export function configurePaletteLoader(config: PaletteManifestConfig): void {
|
|
31
|
+
globalConfig = { ...globalConfig, ...config };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Dynamically load a palette CSS file
|
|
36
|
+
*
|
|
37
|
+
* @param paletteId - The ID of the palette to load (e.g., 'autumn', 'ocean')
|
|
38
|
+
* @param config - Optional configuration override
|
|
39
|
+
* @returns Promise that resolves when the palette is loaded
|
|
40
|
+
*/
|
|
41
|
+
export async function loadPalette(
|
|
42
|
+
paletteId: string,
|
|
43
|
+
config?: PaletteManifestConfig
|
|
44
|
+
): Promise<void> {
|
|
45
|
+
// Skip if already loaded
|
|
46
|
+
if (loadedPalettes.has(paletteId)) {
|
|
47
|
+
return Promise.resolve();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Return existing loading promise if already loading
|
|
51
|
+
if (loadingPalettes.has(paletteId)) {
|
|
52
|
+
return loadingPalettes.get(paletteId)!;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Create new loading promise
|
|
56
|
+
const loadingPromise = loadPaletteInternal(paletteId, config);
|
|
57
|
+
|
|
58
|
+
// Store the loading promise
|
|
59
|
+
loadingPalettes.set(paletteId, loadingPromise);
|
|
60
|
+
|
|
61
|
+
return loadingPromise;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Internal palette loading logic
|
|
66
|
+
*/
|
|
67
|
+
async function loadPaletteInternal(
|
|
68
|
+
paletteId: string,
|
|
69
|
+
config?: PaletteManifestConfig
|
|
70
|
+
): Promise<void> {
|
|
71
|
+
const finalConfig = { ...globalConfig, ...config };
|
|
72
|
+
|
|
73
|
+
// Don't load the default palette as it's already inlined in QwickApp.css
|
|
74
|
+
if (paletteId === 'default') {
|
|
75
|
+
loadedPalettes.add(paletteId);
|
|
76
|
+
loadingPalettes.delete(paletteId);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Check if we're in a browser environment
|
|
81
|
+
if (typeof document === 'undefined') {
|
|
82
|
+
// SSR environment - mark as loaded and continue
|
|
83
|
+
loadedPalettes.add(paletteId);
|
|
84
|
+
loadingPalettes.delete(paletteId);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Check if the palette link already exists
|
|
89
|
+
const existingLink = document.querySelector(`link[data-palette-id="${paletteId}"]`);
|
|
90
|
+
if (existingLink) {
|
|
91
|
+
loadedPalettes.add(paletteId);
|
|
92
|
+
loadingPalettes.delete(paletteId);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
try {
|
|
97
|
+
// Get palette metadata from manifest
|
|
98
|
+
const paletteEntry = await getPaletteFromManifest(paletteId, finalConfig);
|
|
99
|
+
|
|
100
|
+
if (!paletteEntry) {
|
|
101
|
+
// Palette not found in manifest
|
|
102
|
+
if ((import.meta as Record<string, unknown>).env?.DEV) {
|
|
103
|
+
console.warn(
|
|
104
|
+
`[PaletteLoader] Palette "${paletteId}" not found in manifest. ` +
|
|
105
|
+
`Available palettes will be limited. Falling back to default palette.`
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
loadedPalettes.add(paletteId);
|
|
109
|
+
loadingPalettes.delete(paletteId);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Skip if inlined (already available)
|
|
114
|
+
if (paletteEntry.inlined) {
|
|
115
|
+
loadedPalettes.add(paletteId);
|
|
116
|
+
loadingPalettes.delete(paletteId);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Determine which CSS file to use (minified in production, unminified in dev)
|
|
121
|
+
const isDevelopment = (import.meta as Record<string, unknown>).env?.DEV ?? false;
|
|
122
|
+
const useMinified = !isDevelopment && paletteEntry.fileMinified;
|
|
123
|
+
const filename = useMinified ? paletteEntry.fileMinified : paletteEntry.file;
|
|
124
|
+
|
|
125
|
+
// Build list of URLs to try
|
|
126
|
+
const urlsToTry: string[] = [];
|
|
127
|
+
|
|
128
|
+
// Add remote CDN URLs if enabled
|
|
129
|
+
if (finalConfig.enableRemote) {
|
|
130
|
+
urlsToTry.push(`${DEFAULT_CDN_URLS[0]}${filename}`);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Add local URL
|
|
134
|
+
urlsToTry.push(`${DEFAULT_CDN_URLS[1]}${filename}`);
|
|
135
|
+
|
|
136
|
+
// Try loading from each URL in order
|
|
137
|
+
let loaded = false;
|
|
138
|
+
for (const url of urlsToTry) {
|
|
139
|
+
const success = await tryLoadPaletteFromUrl(url, paletteId);
|
|
140
|
+
if (success) {
|
|
141
|
+
loaded = true;
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (!loaded) {
|
|
147
|
+
// All attempts failed
|
|
148
|
+
if ((import.meta as Record<string, unknown>).env?.DEV) {
|
|
149
|
+
console.warn(
|
|
150
|
+
`[PaletteLoader] Failed to load palette "${paletteId}" from all sources. ` +
|
|
151
|
+
`Falling back to default palette. Tried URLs:`,
|
|
152
|
+
urlsToTry
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
loadedPalettes.add(paletteId);
|
|
158
|
+
loadingPalettes.delete(paletteId);
|
|
159
|
+
} catch (error) {
|
|
160
|
+
if ((import.meta as Record<string, unknown>).env?.DEV) {
|
|
161
|
+
console.error(`[PaletteLoader] Error loading palette "${paletteId}":`, error);
|
|
162
|
+
}
|
|
163
|
+
loadedPalettes.add(paletteId);
|
|
164
|
+
loadingPalettes.delete(paletteId);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Try to load a palette from a specific URL
|
|
170
|
+
*/
|
|
171
|
+
function tryLoadPaletteFromUrl(url: string, paletteId: string): Promise<boolean> {
|
|
172
|
+
return new Promise((resolve) => {
|
|
173
|
+
const link = document.createElement('link');
|
|
174
|
+
link.rel = 'stylesheet';
|
|
175
|
+
link.href = url;
|
|
176
|
+
link.setAttribute('data-palette-id', paletteId);
|
|
177
|
+
|
|
178
|
+
link.onload = () => {
|
|
179
|
+
resolve(true);
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
link.onerror = () => {
|
|
183
|
+
// Remove failed link
|
|
184
|
+
document.head.removeChild(link);
|
|
185
|
+
resolve(false);
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
document.head.appendChild(link);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Preload multiple palettes at once
|
|
194
|
+
* @param paletteIds - Array of palette IDs to preload
|
|
195
|
+
* @param config - Optional configuration
|
|
196
|
+
*/
|
|
197
|
+
export async function preloadPalettes(
|
|
198
|
+
paletteIds: string[],
|
|
199
|
+
config?: PaletteManifestConfig
|
|
200
|
+
): Promise<void> {
|
|
201
|
+
await Promise.all(paletteIds.map(id => loadPalette(id, config)));
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Check if a palette is loaded
|
|
206
|
+
* @param paletteId - The palette ID to check
|
|
207
|
+
*/
|
|
208
|
+
export function isPaletteLoaded(paletteId: string): boolean {
|
|
209
|
+
return loadedPalettes.has(paletteId);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Clear loaded palettes cache (useful for testing)
|
|
214
|
+
*/
|
|
215
|
+
export function clearPaletteCache(): void {
|
|
216
|
+
loadedPalettes.clear();
|
|
217
|
+
loadingPalettes.clear();
|
|
218
|
+
}
|
|
@@ -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
|
}
|