@qwickapps/react-framework 1.3.4 → 1.4.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 +1688 -2
- package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts +66 -0
- package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +1 -0
- package/dist/components/ErrorBoundary.d.ts +7 -0
- package/dist/components/ErrorBoundary.d.ts.map +1 -1
- package/dist/components/Html.d.ts +28 -18
- package/dist/components/Html.d.ts.map +1 -1
- package/dist/components/Logo.d.ts +12 -35
- package/dist/components/Logo.d.ts.map +1 -1
- package/dist/components/Markdown.d.ts +18 -13
- package/dist/components/Markdown.d.ts.map +1 -1
- package/dist/components/QwickApp.d.ts +16 -3
- package/dist/components/QwickApp.d.ts.map +1 -1
- package/dist/components/QwickIcon.d.ts +23 -0
- package/dist/components/QwickIcon.d.ts.map +1 -0
- package/dist/components/SafeSpan.d.ts +12 -5
- package/dist/components/SafeSpan.d.ts.map +1 -1
- package/dist/components/Scaffold.d.ts.map +1 -1
- package/dist/components/base/ModelView.d.ts +101 -0
- package/dist/components/base/ModelView.d.ts.map +1 -0
- package/dist/components/base/index.d.ts +11 -0
- package/dist/components/base/index.d.ts.map +1 -0
- package/dist/components/blocks/Article.d.ts +12 -2
- package/dist/components/blocks/Article.d.ts.map +1 -1
- package/dist/components/blocks/Code.d.ts +13 -2
- package/dist/components/blocks/Code.d.ts.map +1 -1
- package/dist/components/blocks/Content.d.ts.map +1 -1
- package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/components/blocks/HeroBlock.d.ts +27 -13
- package/dist/components/blocks/HeroBlock.d.ts.map +1 -1
- package/dist/components/blocks/Image.d.ts +41 -0
- package/dist/components/blocks/Image.d.ts.map +1 -0
- package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -1
- package/dist/components/blocks/ProductCard.d.ts.map +1 -1
- package/dist/components/blocks/Section.d.ts +16 -2
- package/dist/components/blocks/Section.d.ts.map +1 -1
- package/dist/components/blocks/Text.d.ts +41 -0
- package/dist/components/blocks/Text.d.ts.map +1 -0
- package/dist/components/blocks/index.d.ts +4 -0
- package/dist/components/blocks/index.d.ts.map +1 -1
- package/dist/components/buttons/Button.d.ts +23 -7
- package/dist/components/buttons/Button.d.ts.map +1 -1
- package/dist/components/forms/FormBlock.d.ts +19 -13
- package/dist/components/forms/FormBlock.d.ts.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/input/ChoiceInputField.d.ts +17 -11
- package/dist/components/input/ChoiceInputField.d.ts.map +1 -1
- package/dist/components/input/HtmlInputField.d.ts +17 -11
- package/dist/components/input/HtmlInputField.d.ts.map +1 -1
- package/dist/components/input/SelectInputField.d.ts +16 -10
- package/dist/components/input/SelectInputField.d.ts.map +1 -1
- package/dist/components/input/SwitchInputField.d.ts +16 -10
- package/dist/components/input/SwitchInputField.d.ts.map +1 -1
- package/dist/components/input/TextField.d.ts.map +1 -1
- package/dist/components/input/TextInputField.d.ts +16 -11
- package/dist/components/input/TextInputField.d.ts.map +1 -1
- package/dist/components/layout/GridCell.d.ts +23 -6
- package/dist/components/layout/GridCell.d.ts.map +1 -1
- package/dist/components/layout/GridLayout.d.ts +24 -23
- package/dist/components/layout/GridLayout.d.ts.map +1 -1
- package/dist/components/pages/FormPage.d.ts.map +1 -1
- package/dist/components/pages/Page.d.ts +49 -87
- package/dist/components/pages/Page.d.ts.map +1 -1
- package/dist/components/pages/index.d.ts +2 -2
- package/dist/components/pages/index.d.ts.map +1 -1
- package/dist/config/AppConfig.d.ts +49 -0
- package/dist/config/AppConfig.d.ts.map +1 -0
- package/dist/config/AppConfigBuilder.d.ts +75 -0
- package/dist/config/AppConfigBuilder.d.ts.map +1 -0
- package/dist/config/index.d.ts +13 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/types.d.ts +130 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config.d.ts +15 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.esm.js +451 -0
- package/dist/config.js +455 -0
- package/dist/contexts/PrintModeContext.d.ts +27 -0
- package/dist/contexts/PrintModeContext.d.ts.map +1 -0
- package/dist/contexts/QwickAppContext.d.ts +2 -2
- package/dist/contexts/QwickAppContext.d.ts.map +1 -1
- package/dist/contexts/ThemeContext.d.ts.map +1 -1
- package/dist/contexts/index.d.ts +2 -0
- package/dist/contexts/index.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/usePrintMode.d.ts +39 -0
- package/dist/hooks/usePrintMode.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +20722 -16021
- package/dist/index.js +20725 -16010
- package/dist/schemas/CodeSchema.d.ts +2 -1
- package/dist/schemas/CodeSchema.d.ts.map +1 -1
- package/dist/schemas/CollapsibleLayoutSchema.d.ts +2 -1
- package/dist/schemas/CollapsibleLayoutSchema.d.ts.map +1 -1
- package/dist/schemas/ContentSchema.d.ts +2 -1
- package/dist/schemas/ContentSchema.d.ts.map +1 -1
- package/dist/schemas/GridCellSchema.d.ts +25 -0
- package/dist/schemas/GridCellSchema.d.ts.map +1 -0
- package/dist/schemas/GridLayoutSchema.d.ts +23 -0
- package/dist/schemas/GridLayoutSchema.d.ts.map +1 -0
- package/dist/schemas/HtmlSchema.d.ts +14 -0
- package/dist/schemas/HtmlSchema.d.ts.map +1 -0
- package/dist/schemas/ImageSchema.d.ts +32 -0
- package/dist/schemas/ImageSchema.d.ts.map +1 -0
- package/dist/schemas/LogoSchema.d.ts +35 -0
- package/dist/schemas/LogoSchema.d.ts.map +1 -0
- package/dist/schemas/MarkdownSchema.d.ts +14 -0
- package/dist/schemas/MarkdownSchema.d.ts.map +1 -0
- package/dist/schemas/PageTemplateSchema.d.ts +31 -0
- package/dist/schemas/PageTemplateSchema.d.ts.map +1 -0
- package/dist/schemas/PrintConfigSchema.d.ts +31 -0
- package/dist/schemas/PrintConfigSchema.d.ts.map +1 -0
- package/dist/schemas/SectionSchema.d.ts +2 -1
- package/dist/schemas/SectionSchema.d.ts.map +1 -1
- package/dist/schemas/TextSchema.d.ts +37 -0
- package/dist/schemas/TextSchema.d.ts.map +1 -0
- package/dist/schemas/ViewModelSchema.d.ts +23 -0
- package/dist/schemas/ViewModelSchema.d.ts.map +1 -0
- package/dist/schemas/index.d.ts +15 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/transformers/ComponentTransformer.d.ts +116 -0
- package/dist/schemas/transformers/ComponentTransformer.d.ts.map +1 -0
- package/dist/schemas/transformers/ReactNodeTransformer.d.ts +53 -0
- package/dist/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -0
- package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts +66 -0
- package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts.map +1 -0
- package/dist/schemas/transformers/registry.d.ts +15 -0
- package/dist/schemas/transformers/registry.d.ts.map +1 -0
- package/dist/schemas/types/Serializable.d.ts +46 -0
- package/dist/schemas/types/Serializable.d.ts.map +1 -0
- package/dist/utils/htmlTransform.d.ts.map +1 -1
- package/dist/utils/reactUtils.d.ts +12 -3
- package/dist/utils/reactUtils.d.ts.map +1 -1
- package/package.json +17 -3
- package/src/{components/__tests__ → __tests__/components}/AccessibilityProvider.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Article.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Breadcrumbs.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Button.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/CardListGrid.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/ChoiceInputField.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Code.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Content.integration.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Content.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/CoverImageHeader.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/ErrorBoundary.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/FeatureCard.integration.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/FeatureGrid.integration.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/FeatureGrid.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/Footer.test.tsx +4 -4
- package/src/{components/__tests__ → __tests__/components}/FormBlock.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/HeroBlock.integration.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/HeroBlock.test.tsx +233 -7
- package/src/{components/__tests__ → __tests__/components}/Html.test.tsx +11 -2
- package/src/{components/__tests__ → __tests__/components}/HtmlInputField.test.tsx +3 -3
- package/src/__tests__/components/Logo.test.js +3 -3
- package/src/{components/__tests__ → __tests__/components}/Markdown.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/PageBannerHeader.test.tsx +3 -3
- package/src/{components/__tests__ → __tests__/components}/PaletteSwitcher.test.tsx +3 -3
- package/src/{components/__tests__ → __tests__/components}/ProductCard.test.tsx +4 -4
- package/src/{components/__tests__ → __tests__/components}/SafeSpan.integration.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/SafeSpan.simple.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/SafeSpan.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Section.integration.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Section.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/SelectInputField.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/TextInputField.test.tsx +3 -3
- package/src/{components/__tests__ → __tests__/components}/ThemeSwitcher.test.tsx +3 -3
- package/src/__tests__/components/base/ModelView.test.tsx +220 -0
- package/src/__tests__/components/blocks/Code.performance.test.tsx +625 -0
- package/src/__tests__/components/blocks/Code.serialization.test.tsx +507 -0
- package/src/__tests__/components/blocks/HeroBlock.serialization.test.tsx +414 -0
- package/src/__tests__/components/blocks/Image.serialization.test.tsx +257 -0
- package/src/__tests__/components/blocks/Section.serialization.test.tsx +553 -0
- package/src/__tests__/components/blocks/Text.performance.test.tsx +442 -0
- package/src/__tests__/components/blocks/Text.serialization.test.tsx +491 -0
- package/src/__tests__/components/buttons/Button.serialization.test.tsx +443 -0
- package/src/__tests__/components/input/FormComponents.serialization.test.tsx +482 -0
- package/src/__tests__/components/input/SelectInputField.serialization.test.tsx +439 -0
- package/src/__tests__/components/input/TextInputField.serialization.test.tsx +359 -0
- package/src/{components/layout/CollapsibleLayout/__tests__ → __tests__/components/layout}/CollapsibleLayout.test.tsx +4 -4
- package/src/__tests__/components/layout/GridCell.serialization.test.tsx +403 -0
- package/src/__tests__/components/layout/GridLayout.serialization.test.tsx +311 -0
- package/src/__tests__/hooks/usePrintMode.test.ts +89 -0
- package/src/__tests__/schemas/PageTemplateSchema.test.ts +161 -0
- package/src/__tests__/schemas/PrintConfigSchema.test.ts +127 -0
- package/src/__tests__/schemas/ViewModelSchema.test.ts +80 -0
- package/src/__tests__/schemas/transformers/ComponentSerializationPatterns.test.tsx +602 -0
- package/src/__tests__/schemas/transformers/ComponentTransformer.htmlPatterns.test.ts +301 -0
- package/src/__tests__/schemas/transformers/ComponentTransformer.test.ts +521 -0
- package/src/__tests__/schemas/transformers/CrossBrowserCompatibility.test.ts +586 -0
- package/src/__tests__/schemas/transformers/MockSerializableComponent.ts +103 -0
- package/src/__tests__/schemas/transformers/RealWorldScenarios.test.tsx +1165 -0
- package/src/__tests__/schemas/transformers/SerializationErrorHandling.test.ts +602 -0
- package/src/__tests__/schemas/transformers/SerializationIntegration.test.tsx +691 -0
- package/src/__tests__/schemas/transformers/SerializationPerformance.test.ts +460 -0
- package/src/__tests__/schemas/transformers/TestAutomation.test.ts +597 -0
- package/src/{utils/__tests__ → __tests__/utils}/nested-dom-fix.test.tsx +1 -1
- package/src/components/ErrorBoundary.tsx +8 -8
- package/src/components/Html.tsx +147 -44
- package/src/components/Logo.tsx +198 -100
- package/src/components/Markdown.tsx +125 -16
- package/src/components/QwickApp.tsx +64 -31
- package/src/components/QwickIcon.tsx +59 -0
- package/src/components/SafeSpan.tsx +65 -10
- package/src/components/Scaffold.tsx +2 -8
- package/src/components/base/ModelView.tsx +199 -0
- package/src/components/base/index.ts +11 -0
- package/src/components/blocks/Article.tsx +57 -18
- package/src/components/blocks/Code.md +529 -0
- package/src/components/blocks/Code.tsx +102 -15
- package/src/components/blocks/Content.tsx +25 -77
- package/src/components/blocks/CoverImageHeader.tsx +9 -4
- package/src/components/blocks/FeatureCard.tsx +1 -2
- package/src/components/blocks/FeatureGrid.tsx +19 -1
- package/src/components/blocks/Footer.tsx +13 -1
- package/src/components/blocks/HeroBlock.tsx +87 -20
- package/src/components/blocks/Image.tsx +395 -0
- package/src/components/blocks/PageBannerHeader.tsx +14 -12
- package/src/components/blocks/ProductCard.tsx +51 -52
- package/src/components/blocks/Section.tsx +113 -8
- package/src/components/blocks/Text.tsx +285 -0
- package/src/components/blocks/index.ts +4 -0
- package/src/components/buttons/Button.tsx +184 -15
- package/src/components/forms/FormBlock.tsx +70 -17
- package/src/components/index.ts +5 -0
- package/src/components/input/ChoiceInputField.tsx +48 -18
- package/src/components/input/HtmlInputField.tsx +48 -18
- package/src/components/input/SelectInputField.tsx +48 -16
- package/src/components/input/SwitchInputField.tsx +48 -17
- package/src/components/input/TextField.tsx +41 -1
- package/src/components/input/TextInputField.tsx +52 -18
- package/src/components/layout/GridCell.tsx +118 -9
- package/src/components/layout/GridLayout.tsx +125 -24
- package/src/components/pages/FormPage.tsx +0 -1
- package/src/components/pages/Page.css +304 -332
- package/src/components/pages/Page.tsx +307 -255
- package/src/components/pages/index.ts +2 -2
- package/src/config/AppConfig.ts +133 -0
- package/src/config/AppConfigBuilder.ts +421 -0
- package/src/config/__tests__/AppConfig.test.ts +385 -0
- package/src/config/__tests__/AppConfigBuilder.test.ts +432 -0
- package/src/config/index.ts +24 -0
- package/src/config/types.ts +170 -0
- package/src/config.ts +25 -0
- package/src/contexts/PrintModeContext.tsx +332 -0
- package/src/contexts/QwickAppContext.tsx +2 -2
- package/src/contexts/ThemeContext.tsx +1 -2
- package/src/contexts/index.ts +2 -0
- package/src/hooks/index.ts +5 -1
- package/src/hooks/usePrintMode.ts +73 -0
- package/src/index.ts +3 -0
- package/src/schemas/CodeSchema.ts +3 -3
- package/src/schemas/CollapsibleLayoutSchema.ts +2 -1
- package/src/schemas/ContentSchema.ts +2 -1
- package/src/schemas/GridCellSchema.ts +164 -0
- package/src/schemas/GridLayoutSchema.ts +133 -0
- package/src/schemas/HtmlSchema.ts +47 -0
- package/src/schemas/ImageSchema.ts +235 -0
- package/src/schemas/LogoSchema.ts +241 -0
- package/src/schemas/MarkdownSchema.ts +47 -0
- package/src/schemas/PageTemplateSchema.ts +186 -0
- package/src/schemas/PrintConfigSchema.ts +207 -0
- package/src/schemas/README.md +661 -0
- package/src/schemas/SectionSchema.ts +2 -1
- package/src/schemas/TextSchema.ts +329 -0
- package/src/schemas/ViewModelSchema.ts +115 -0
- package/src/schemas/index.ts +21 -2
- package/src/schemas/transformers/ComponentTransformer.ts +403 -0
- package/src/schemas/transformers/ReactNodeTransformer.ts +236 -0
- package/src/schemas/transformers/registry.ts +72 -0
- package/src/schemas/types/Serializable.ts +51 -0
- package/src/stories/AccessibilityProvider.stories.tsx +253 -253
- package/src/stories/Article.stories.tsx +433 -433
- package/src/stories/Button.stories.tsx +1 -1
- package/src/stories/CardListGrid.stories.tsx +451 -451
- package/src/stories/ChoiceInputField.stories.tsx +503 -503
- package/src/stories/Code.stories.tsx +1 -1
- package/src/stories/CollapsibleLayout.stories.tsx +1414 -1414
- package/src/stories/Content.stories.tsx +393 -393
- package/src/stories/CoverImageHeader.stories.tsx +701 -701
- package/src/stories/DataBinding.advanced.stories.tsx +432 -432
- package/src/stories/DataProvider.stories.tsx +1192 -1192
- package/src/stories/FeatureCard.stories.tsx +557 -557
- package/src/stories/FeatureGrid.stories.tsx +594 -594
- package/src/stories/Footer.stories.tsx +640 -640
- package/src/stories/FormBlock.stories.tsx +760 -760
- package/src/stories/FormComponents.stories.tsx +349 -541
- package/src/stories/GridCell.stories.tsx +417 -0
- package/src/stories/GridLayout.stories.tsx +353 -0
- package/src/stories/HeroBlock.stories.tsx +862 -373
- package/src/stories/HtmlInputField.stories.tsx +474 -474
- package/src/stories/Image.stories.tsx +819 -0
- package/src/stories/Introduction.stories.tsx +667 -667
- package/src/stories/LayoutBlocks.stories.tsx +324 -324
- package/src/stories/Logo.stories.tsx +165 -6
- package/src/stories/Markdown.stories.tsx +137 -137
- package/src/stories/ModelView.stories.tsx +477 -0
- package/src/stories/Page.stories.tsx +688 -688
- package/src/stories/PageBannerHeader.stories.tsx +864 -864
- package/src/stories/PaletteSwitcher.stories.tsx +119 -119
- package/src/stories/ProductCard.stories.tsx +424 -424
- package/src/stories/QwickApp.stories.tsx +368 -368
- package/src/stories/ResponsiveMenu.stories.tsx +249 -249
- package/src/stories/SafeSpan.stories.tsx +531 -531
- package/src/stories/Section.stories.tsx +90 -2
- package/src/stories/SelectInputField.stories.tsx +524 -524
- package/src/stories/Text.stories.tsx +560 -0
- package/src/stories/TextInputField.stories.tsx +443 -443
- package/src/stories/ThemeSwitcher.stories.tsx +123 -123
- package/src/utils/htmlTransform.tsx +74 -53
- package/src/utils/reactUtils.tsx +57 -6
- package/dist/index.bundled.css +0 -12
- /package/src/{hooks/__tests__ → __tests__/hooks}/useDataBinding.test.tsx.disabled +0 -0
- /package/src/{schemas/__tests__ → __tests__/schemas}/builders.test.ts +0 -0
- /package/src/{utils/__tests__ → __tests__/utils}/createDataDrivenComponent.test.tsx.disabled +0 -0
- /package/src/{utils/__tests__ → __tests__/utils}/htmlTransform.test.tsx +0 -0
- /package/src/{utils/__tests__ → __tests__/utils}/optional-logging.test.ts +0 -0
|
@@ -14,67 +14,67 @@ import QwickApp from '../components/QwickApp';
|
|
|
14
14
|
|
|
15
15
|
// Sample CMS data for data binding stories
|
|
16
16
|
const sampleCmsData = {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
17
|
+
'pages.home.intro': [
|
|
18
|
+
{
|
|
19
|
+
title: 'Welcome to QwickApps React Framework',
|
|
20
|
+
subtitle: 'The most developer-friendly React framework that turns complex UI development into a joy',
|
|
21
|
+
actions: [
|
|
22
|
+
{ label: 'Get Started', variant: 'primary', href: '/docs/getting-started' },
|
|
23
|
+
{ label: 'View Examples', variant: 'outlined', href: '/examples' }
|
|
24
|
+
],
|
|
25
|
+
variant: 'elevated',
|
|
26
|
+
centered: true,
|
|
27
|
+
blockSpacing: 'spacious'
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
'features.development': [
|
|
31
|
+
{
|
|
32
|
+
title: 'Development Experience',
|
|
33
|
+
subtitle: 'Built for developer productivity and satisfaction',
|
|
34
|
+
variant: 'default',
|
|
35
|
+
contentMaxWidth: 'lg',
|
|
36
|
+
blockSpacing: 'comfortable'
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
'company.about': [
|
|
40
|
+
{
|
|
41
|
+
title: 'About QwickApps',
|
|
42
|
+
subtitle: 'Empowering developers to build amazing applications',
|
|
43
|
+
actions: [
|
|
44
|
+
{ label: 'Learn More', variant: 'secondary' },
|
|
45
|
+
{ label: 'Contact Us', variant: 'text', href: 'mailto:hello@qwickapps.com' }
|
|
46
|
+
],
|
|
47
|
+
variant: 'outlined',
|
|
48
|
+
centered: false,
|
|
49
|
+
contentMaxWidth: 'md'
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
'marketing.hero': [
|
|
53
|
+
{
|
|
54
|
+
title: ' Launch Faster',
|
|
55
|
+
subtitle: 'Skip the boilerplate, focus on what matters - your unique features and business logic',
|
|
56
|
+
actions: [
|
|
57
|
+
{ label: 'Start Building', variant: 'primary', buttonSize: 'large' },
|
|
58
|
+
{ label: 'Watch Demo', variant: 'outlined', buttonSize: 'large', icon: '▶' }
|
|
59
|
+
],
|
|
60
|
+
variant: 'filled',
|
|
61
|
+
centered: true,
|
|
62
|
+
blockSpacing: 'spacious',
|
|
63
|
+
contentMaxWidth: 'lg'
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
66
|
};
|
|
67
67
|
|
|
68
68
|
const dataProvider = new JsonDataProvider({ data: sampleCmsData });
|
|
69
69
|
|
|
70
70
|
const meta = {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
71
|
+
title: 'Components/Content',
|
|
72
|
+
component: Content,
|
|
73
|
+
parameters: {
|
|
74
|
+
layout: 'fullscreen',
|
|
75
|
+
docs: {
|
|
76
|
+
description: {
|
|
77
|
+
component: `Content is a versatile content container component that supports both traditional props and data binding through dataSource.
|
|
78
78
|
|
|
79
79
|
**Key Features:**
|
|
80
80
|
- **Flexible Content**: Optional title, subtitle, and child content
|
|
@@ -89,10 +89,10 @@ const meta = {
|
|
|
89
89
|
- Content blocks in marketing pages
|
|
90
90
|
- Structured content areas with actions
|
|
91
91
|
- CMS-driven dynamic content sections`,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
tags: ['autodocs'],
|
|
96
96
|
} satisfies Meta<typeof Content>;
|
|
97
97
|
|
|
98
98
|
export default meta;
|
|
@@ -100,364 +100,364 @@ type Story = StoryObj<typeof meta>;
|
|
|
100
100
|
|
|
101
101
|
// Traditional Usage Examples
|
|
102
102
|
export const BasicUsage: Story = {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
103
|
+
render: () => (
|
|
104
|
+
<QwickApp appId="content-basic" appName='Content Basic Usage'>
|
|
105
|
+
<Section>
|
|
106
|
+
<GridLayout columns={1} spacing="large">
|
|
107
|
+
<Content
|
|
108
|
+
title="Basic Content Block"
|
|
109
|
+
subtitle="Simple content with title and subtitle"
|
|
110
|
+
>
|
|
111
|
+
<Typography>
|
|
112
|
+
This is a basic content block with traditional prop usage.
|
|
113
|
+
Perfect for static content that doesn't need dynamic data binding.
|
|
114
|
+
</Typography>
|
|
115
|
+
</Content>
|
|
116
|
+
</GridLayout>
|
|
117
|
+
</Section>
|
|
118
|
+
</QwickApp>
|
|
119
|
+
),
|
|
120
|
+
parameters: {
|
|
121
|
+
docs: {
|
|
122
|
+
description: {
|
|
123
|
+
story: 'Basic Content usage with traditional props - title, subtitle, and children content.',
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
127
|
};
|
|
128
128
|
|
|
129
129
|
export const WithActions: Story = {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
130
|
+
render: () => (
|
|
131
|
+
<QwickApp appId="content-actions" appName='Content With Actions'>
|
|
132
|
+
<Section>
|
|
133
|
+
<Content
|
|
134
|
+
title="Content with Actions"
|
|
135
|
+
subtitle="Demonstrating built-in action button support"
|
|
136
|
+
actions={[
|
|
137
|
+
{ label: 'Primary Action', variant: 'primary', onClick: () => alert('Primary clicked!') },
|
|
138
|
+
{ label: 'Secondary', variant: 'outlined', onClick: () => alert('Secondary clicked!') },
|
|
139
|
+
{ label: 'Learn More', variant: 'text', href: '/docs' }
|
|
140
|
+
]}
|
|
141
|
+
centered={true}
|
|
142
|
+
>
|
|
143
|
+
<Typography>
|
|
144
|
+
Content blocks can include multiple action buttons with different variants and behaviors.
|
|
145
|
+
</Typography>
|
|
146
|
+
</Content>
|
|
147
|
+
</Section>
|
|
148
|
+
</QwickApp>
|
|
149
|
+
),
|
|
150
|
+
parameters: {
|
|
151
|
+
docs: {
|
|
152
|
+
description: {
|
|
153
|
+
story: 'Content with action buttons supporting different variants and both onClick handlers and href links.',
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
157
|
};
|
|
158
158
|
|
|
159
159
|
export const VariantStyles: Story = {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
160
|
+
render: () => (
|
|
161
|
+
<QwickApp appId="content-variants" appName='Content Variants'>
|
|
162
|
+
<Section>
|
|
163
|
+
<GridLayout columns={2} spacing="large">
|
|
164
|
+
<Content
|
|
165
|
+
title="Default Variant"
|
|
166
|
+
subtitle="Clean minimal styling"
|
|
167
|
+
variant="default"
|
|
168
|
+
blockSpacing="comfortable"
|
|
169
|
+
>
|
|
170
|
+
<Typography>The default variant provides clean, minimal styling for standard content blocks.</Typography>
|
|
171
|
+
</Content>
|
|
172
|
+
|
|
173
|
+
<Content
|
|
174
|
+
title="Elevated Variant"
|
|
175
|
+
subtitle="Shadow and prominence"
|
|
176
|
+
variant="elevated"
|
|
177
|
+
blockSpacing="comfortable"
|
|
178
|
+
>
|
|
179
|
+
<Typography>The elevated variant adds shadow and background for visual prominence.</Typography>
|
|
180
|
+
</Content>
|
|
181
|
+
|
|
182
|
+
<Content
|
|
183
|
+
title="Outlined Variant"
|
|
184
|
+
subtitle="Border definition"
|
|
185
|
+
variant="outlined"
|
|
186
|
+
blockSpacing="comfortable"
|
|
187
|
+
>
|
|
188
|
+
<Typography>The outlined variant provides clear borders and defined areas.</Typography>
|
|
189
|
+
</Content>
|
|
190
|
+
|
|
191
|
+
<Content
|
|
192
|
+
title="Filled Variant"
|
|
193
|
+
subtitle="Background highlight"
|
|
194
|
+
variant="filled"
|
|
195
|
+
blockSpacing="comfortable"
|
|
196
|
+
>
|
|
197
|
+
<Typography>The filled variant uses background color for emphasis and highlighting.</Typography>
|
|
198
|
+
</Content>
|
|
199
|
+
</GridLayout>
|
|
200
|
+
</Section>
|
|
201
|
+
</QwickApp>
|
|
202
|
+
),
|
|
203
|
+
parameters: {
|
|
204
|
+
docs: {
|
|
205
|
+
description: {
|
|
206
|
+
story: 'All available Content variants: default, elevated, outlined, and filled styles.',
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
210
|
};
|
|
211
211
|
|
|
212
212
|
// Data Binding Examples
|
|
213
213
|
export const DataBindingBasic: Story = {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
214
|
+
render: () => (
|
|
215
|
+
<QwickApp
|
|
216
|
+
appId="content-data-binding"
|
|
217
|
+
appName='Content Data Binding'
|
|
218
|
+
dataSource={{ dataProvider }}
|
|
219
|
+
>
|
|
220
|
+
<Section>
|
|
221
|
+
<GridLayout columns={1} spacing="large">
|
|
222
|
+
|
|
223
|
+
<Box>
|
|
224
|
+
<Typography variant="h5" gutterBottom> Data-Driven Content</Typography>
|
|
225
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
226
|
+
Content components can be driven entirely by CMS data using the dataSource prop.
|
|
227
|
+
</Typography>
|
|
228
|
+
|
|
229
|
+
<Code title="Usage" language="tsx">{`<Content dataSource="pages.home.intro" />`}</Code>
|
|
230
|
+
|
|
231
|
+
<Code title="Data Structure" language="json">{JSON.stringify(sampleCmsData['pages.home.intro'][0], null, 2)}</Code>
|
|
232
|
+
</Box>
|
|
233
233
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
234
|
+
<Content dataSource="pages.home.intro" />
|
|
235
|
+
|
|
236
|
+
</GridLayout>
|
|
237
|
+
</Section>
|
|
238
|
+
</QwickApp>
|
|
239
|
+
),
|
|
240
|
+
parameters: {
|
|
241
|
+
docs: {
|
|
242
|
+
description: {
|
|
243
|
+
story: 'Content component with data binding - all props resolved from CMS data through dataSource.',
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
247
|
};
|
|
248
248
|
|
|
249
249
|
export const DataBindingAdvanced: Story = {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
250
|
+
render: () => (
|
|
251
|
+
<QwickApp
|
|
252
|
+
appId="content-data-advanced"
|
|
253
|
+
appName='Advanced Data Binding'
|
|
254
|
+
dataSource={{ dataProvider }}
|
|
255
|
+
>
|
|
256
|
+
<Section>
|
|
257
|
+
<GridLayout columns={1} spacing="large">
|
|
258
|
+
|
|
259
|
+
<Box>
|
|
260
|
+
<Typography variant="h5" gutterBottom> Multiple Data Sources</Typography>
|
|
261
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
262
|
+
Different Content components can pull from different data sources with varying configurations.
|
|
263
|
+
</Typography>
|
|
264
|
+
</Box>
|
|
265
265
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
266
|
+
<Content dataSource="marketing.hero" />
|
|
267
|
+
|
|
268
|
+
<GridLayout columns={2} spacing="large">
|
|
269
|
+
<Content dataSource="features.development">
|
|
270
|
+
<Typography>
|
|
271
|
+
Custom child content can be combined with data-driven props for maximum flexibility.
|
|
272
|
+
</Typography>
|
|
273
|
+
</Content>
|
|
274
|
+
|
|
275
|
+
<Content dataSource="company.about" />
|
|
276
|
+
</GridLayout>
|
|
277
|
+
|
|
278
|
+
</GridLayout>
|
|
279
|
+
</Section>
|
|
280
|
+
</QwickApp>
|
|
281
|
+
),
|
|
282
|
+
parameters: {
|
|
283
|
+
docs: {
|
|
284
|
+
description: {
|
|
285
|
+
story: 'Advanced data binding with multiple data sources and mixed traditional/data-driven usage.',
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
289
|
};
|
|
290
290
|
|
|
291
291
|
export const DataBindingWithFallback: Story = {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
292
|
+
render: () => (
|
|
293
|
+
<QwickApp
|
|
294
|
+
appId="content-fallback"
|
|
295
|
+
appName='Data Binding with Fallback'
|
|
296
|
+
dataSource={{ dataProvider }}
|
|
297
|
+
>
|
|
298
|
+
<Section>
|
|
299
|
+
<GridLayout columns={1} spacing="large">
|
|
300
|
+
|
|
301
|
+
<Box>
|
|
302
|
+
<Typography variant="h5" gutterBottom> Fallback Support</Typography>
|
|
303
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
304
|
+
Content components gracefully handle missing data sources with fallback props.
|
|
305
|
+
</Typography>
|
|
306
|
+
|
|
307
|
+
<Code title="Fallback Usage" language="tsx">{`<Content
|
|
308
|
+
dataSource="nonexistent.data"
|
|
309
|
+
title="Fallback Title"
|
|
310
|
+
subtitle="Shows when data source is missing"
|
|
311
|
+
variant="outlined"
|
|
312
312
|
/>`}</Code>
|
|
313
|
-
|
|
313
|
+
</Box>
|
|
314
314
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
315
|
+
<Content
|
|
316
|
+
dataSource="nonexistent.data"
|
|
317
|
+
title="Fallback Content"
|
|
318
|
+
subtitle="This content appears when the dataSource doesn't exist"
|
|
319
|
+
variant="outlined"
|
|
320
|
+
actions={[
|
|
321
|
+
{ label: 'Fallback Action', variant: 'secondary' }
|
|
322
|
+
]}
|
|
323
|
+
/>
|
|
324
|
+
|
|
325
|
+
</GridLayout>
|
|
326
|
+
</Section>
|
|
327
|
+
</QwickApp>
|
|
328
|
+
),
|
|
329
|
+
parameters: {
|
|
330
|
+
docs: {
|
|
331
|
+
description: {
|
|
332
|
+
story: 'Content with fallback props when dataSource is missing or unavailable.',
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
336
|
};
|
|
337
337
|
|
|
338
338
|
export const SpacingAndLayout: Story = {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
339
|
+
render: () => (
|
|
340
|
+
<QwickApp appId="content-spacing" appName='Content Spacing & Layout'>
|
|
341
|
+
<Section>
|
|
342
|
+
<GridLayout columns={1} spacing="large">
|
|
343
|
+
|
|
344
|
+
<Box>
|
|
345
|
+
<Typography variant="h5" gutterBottom>📐 Spacing & Layout Options</Typography>
|
|
346
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
347
|
+
Content components offer flexible spacing and layout configuration.
|
|
348
|
+
</Typography>
|
|
349
|
+
</Box>
|
|
350
350
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
351
|
+
<Content
|
|
352
|
+
title="Spacious Padding"
|
|
353
|
+
subtitle="Maximum internal spacing"
|
|
354
|
+
blockSpacing="spacious"
|
|
355
|
+
variant="outlined"
|
|
356
|
+
/>
|
|
357
|
+
|
|
358
|
+
<Content
|
|
359
|
+
title="Comfortable Padding (Default)"
|
|
360
|
+
subtitle="Balanced internal spacing"
|
|
361
|
+
blockSpacing="comfortable"
|
|
362
|
+
variant="outlined"
|
|
363
|
+
/>
|
|
364
|
+
|
|
365
|
+
<Content
|
|
366
|
+
title="Compact Padding"
|
|
367
|
+
subtitle="Minimal internal spacing"
|
|
368
|
+
blockSpacing="compact"
|
|
369
|
+
variant="outlined"
|
|
370
|
+
/>
|
|
371
|
+
|
|
372
|
+
<GridLayout columns={2} spacing="medium">
|
|
373
|
+
<Content
|
|
374
|
+
title="Centered Layout"
|
|
375
|
+
subtitle="Content centered within container"
|
|
376
|
+
centered={true}
|
|
377
|
+
variant="filled"
|
|
378
|
+
/>
|
|
379
|
+
|
|
380
|
+
<Content
|
|
381
|
+
title="Left Aligned"
|
|
382
|
+
subtitle="Standard left-aligned content"
|
|
383
|
+
centered={false}
|
|
384
|
+
variant="filled"
|
|
385
|
+
/>
|
|
386
|
+
</GridLayout>
|
|
387
|
+
|
|
388
|
+
</GridLayout>
|
|
389
|
+
</Section>
|
|
390
|
+
</QwickApp>
|
|
391
|
+
),
|
|
392
|
+
parameters: {
|
|
393
|
+
docs: {
|
|
394
|
+
description: {
|
|
395
|
+
story: 'Content spacing options (spacious, comfortable, compact) and alignment (centered vs left).',
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
399
|
};
|
|
400
400
|
|
|
401
401
|
export const RealWorldExample: Story = {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
402
|
+
render: () => (
|
|
403
|
+
<QwickApp
|
|
404
|
+
appId="content-real-world"
|
|
405
|
+
appName='Real World Content Example'
|
|
406
|
+
dataSource={{ dataProvider }}
|
|
407
|
+
>
|
|
408
|
+
<Box>
|
|
409
|
+
{/* Hero Section - Data Driven */}
|
|
410
|
+
<Section background="primary">
|
|
411
|
+
<Content dataSource="marketing.hero" />
|
|
412
|
+
</Section>
|
|
413
|
+
|
|
414
|
+
{/* Feature Section - Mixed Usage */}
|
|
415
|
+
<Section>
|
|
416
|
+
<Content dataSource="features.development">
|
|
417
|
+
<GridLayout columns={3} spacing="medium">
|
|
418
|
+
<Box sx={{ textAlign: 'center', p: 2 }}>
|
|
419
|
+
<Typography variant="h6" gutterBottom> Fast Setup</Typography>
|
|
420
|
+
<Typography>Get started in minutes, not hours</Typography>
|
|
421
|
+
</Box>
|
|
422
|
+
<Box sx={{ textAlign: 'center', p: 2 }}>
|
|
423
|
+
<Typography variant="h6" gutterBottom> Flexible</Typography>
|
|
424
|
+
<Typography>Customize everything to match your needs</Typography>
|
|
425
|
+
</Box>
|
|
426
|
+
<Box sx={{ textAlign: 'center', p: 2 }}>
|
|
427
|
+
<Typography variant="h6" gutterBottom> Responsive</Typography>
|
|
428
|
+
<Typography>Works perfectly on all devices</Typography>
|
|
429
|
+
</Box>
|
|
430
|
+
</GridLayout>
|
|
431
|
+
</Content>
|
|
432
|
+
</Section>
|
|
433
|
+
|
|
434
|
+
{/* About Section - Traditional Props */}
|
|
435
|
+
<Section background="alternate">
|
|
436
|
+
<Content
|
|
437
|
+
title="Built for Developers"
|
|
438
|
+
subtitle="By developers, for developers"
|
|
439
|
+
variant="elevated"
|
|
440
|
+
centered={true}
|
|
441
|
+
actions={[
|
|
442
|
+
{ label: 'View GitHub', variant: 'outlined', href: 'https://github.com' },
|
|
443
|
+
{ label: 'Join Community', variant: 'text' }
|
|
444
|
+
]}
|
|
445
|
+
>
|
|
446
|
+
<Typography sx={{ fontSize: '1.1rem', maxWidth: '600px', mx: 'auto' }}>
|
|
447
|
+
QwickApps React Framework was created to solve real problems that developers face every day.
|
|
448
|
+
We focus on developer experience, performance, and flexibility.
|
|
449
|
+
</Typography>
|
|
450
|
+
</Content>
|
|
451
|
+
</Section>
|
|
452
|
+
|
|
453
|
+
</Box>
|
|
454
|
+
</QwickApp>
|
|
455
|
+
),
|
|
456
|
+
parameters: {
|
|
457
|
+
docs: {
|
|
458
|
+
description: {
|
|
459
|
+
story: 'Real-world example combining data-driven Content with traditional usage in a complete layout.',
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
},
|
|
463
463
|
};
|