@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.
Files changed (325) hide show
  1. package/README.md +1688 -2
  2. package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts +66 -0
  3. package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +1 -0
  4. package/dist/components/ErrorBoundary.d.ts +7 -0
  5. package/dist/components/ErrorBoundary.d.ts.map +1 -1
  6. package/dist/components/Html.d.ts +28 -18
  7. package/dist/components/Html.d.ts.map +1 -1
  8. package/dist/components/Logo.d.ts +12 -35
  9. package/dist/components/Logo.d.ts.map +1 -1
  10. package/dist/components/Markdown.d.ts +18 -13
  11. package/dist/components/Markdown.d.ts.map +1 -1
  12. package/dist/components/QwickApp.d.ts +16 -3
  13. package/dist/components/QwickApp.d.ts.map +1 -1
  14. package/dist/components/QwickIcon.d.ts +23 -0
  15. package/dist/components/QwickIcon.d.ts.map +1 -0
  16. package/dist/components/SafeSpan.d.ts +12 -5
  17. package/dist/components/SafeSpan.d.ts.map +1 -1
  18. package/dist/components/Scaffold.d.ts.map +1 -1
  19. package/dist/components/base/ModelView.d.ts +101 -0
  20. package/dist/components/base/ModelView.d.ts.map +1 -0
  21. package/dist/components/base/index.d.ts +11 -0
  22. package/dist/components/base/index.d.ts.map +1 -0
  23. package/dist/components/blocks/Article.d.ts +12 -2
  24. package/dist/components/blocks/Article.d.ts.map +1 -1
  25. package/dist/components/blocks/Code.d.ts +13 -2
  26. package/dist/components/blocks/Code.d.ts.map +1 -1
  27. package/dist/components/blocks/Content.d.ts.map +1 -1
  28. package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -1
  29. package/dist/components/blocks/FeatureCard.d.ts.map +1 -1
  30. package/dist/components/blocks/FeatureGrid.d.ts.map +1 -1
  31. package/dist/components/blocks/Footer.d.ts.map +1 -1
  32. package/dist/components/blocks/HeroBlock.d.ts +27 -13
  33. package/dist/components/blocks/HeroBlock.d.ts.map +1 -1
  34. package/dist/components/blocks/Image.d.ts +41 -0
  35. package/dist/components/blocks/Image.d.ts.map +1 -0
  36. package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -1
  37. package/dist/components/blocks/ProductCard.d.ts.map +1 -1
  38. package/dist/components/blocks/Section.d.ts +16 -2
  39. package/dist/components/blocks/Section.d.ts.map +1 -1
  40. package/dist/components/blocks/Text.d.ts +41 -0
  41. package/dist/components/blocks/Text.d.ts.map +1 -0
  42. package/dist/components/blocks/index.d.ts +4 -0
  43. package/dist/components/blocks/index.d.ts.map +1 -1
  44. package/dist/components/buttons/Button.d.ts +23 -7
  45. package/dist/components/buttons/Button.d.ts.map +1 -1
  46. package/dist/components/forms/FormBlock.d.ts +19 -13
  47. package/dist/components/forms/FormBlock.d.ts.map +1 -1
  48. package/dist/components/index.d.ts +4 -0
  49. package/dist/components/index.d.ts.map +1 -1
  50. package/dist/components/input/ChoiceInputField.d.ts +17 -11
  51. package/dist/components/input/ChoiceInputField.d.ts.map +1 -1
  52. package/dist/components/input/HtmlInputField.d.ts +17 -11
  53. package/dist/components/input/HtmlInputField.d.ts.map +1 -1
  54. package/dist/components/input/SelectInputField.d.ts +16 -10
  55. package/dist/components/input/SelectInputField.d.ts.map +1 -1
  56. package/dist/components/input/SwitchInputField.d.ts +16 -10
  57. package/dist/components/input/SwitchInputField.d.ts.map +1 -1
  58. package/dist/components/input/TextField.d.ts.map +1 -1
  59. package/dist/components/input/TextInputField.d.ts +16 -11
  60. package/dist/components/input/TextInputField.d.ts.map +1 -1
  61. package/dist/components/layout/GridCell.d.ts +23 -6
  62. package/dist/components/layout/GridCell.d.ts.map +1 -1
  63. package/dist/components/layout/GridLayout.d.ts +24 -23
  64. package/dist/components/layout/GridLayout.d.ts.map +1 -1
  65. package/dist/components/pages/FormPage.d.ts.map +1 -1
  66. package/dist/components/pages/Page.d.ts +49 -87
  67. package/dist/components/pages/Page.d.ts.map +1 -1
  68. package/dist/components/pages/index.d.ts +2 -2
  69. package/dist/components/pages/index.d.ts.map +1 -1
  70. package/dist/config/AppConfig.d.ts +49 -0
  71. package/dist/config/AppConfig.d.ts.map +1 -0
  72. package/dist/config/AppConfigBuilder.d.ts +75 -0
  73. package/dist/config/AppConfigBuilder.d.ts.map +1 -0
  74. package/dist/config/index.d.ts +13 -0
  75. package/dist/config/index.d.ts.map +1 -0
  76. package/dist/config/types.d.ts +130 -0
  77. package/dist/config/types.d.ts.map +1 -0
  78. package/dist/config.d.ts +15 -0
  79. package/dist/config.d.ts.map +1 -0
  80. package/dist/config.esm.js +451 -0
  81. package/dist/config.js +455 -0
  82. package/dist/contexts/PrintModeContext.d.ts +27 -0
  83. package/dist/contexts/PrintModeContext.d.ts.map +1 -0
  84. package/dist/contexts/QwickAppContext.d.ts +2 -2
  85. package/dist/contexts/QwickAppContext.d.ts.map +1 -1
  86. package/dist/contexts/ThemeContext.d.ts.map +1 -1
  87. package/dist/contexts/index.d.ts +2 -0
  88. package/dist/contexts/index.d.ts.map +1 -1
  89. package/dist/hooks/index.d.ts +2 -0
  90. package/dist/hooks/index.d.ts.map +1 -1
  91. package/dist/hooks/usePrintMode.d.ts +39 -0
  92. package/dist/hooks/usePrintMode.d.ts.map +1 -0
  93. package/dist/index.css +1 -1
  94. package/dist/index.d.ts +1 -0
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.esm.css +1 -1
  97. package/dist/index.esm.js +20722 -16021
  98. package/dist/index.js +20725 -16010
  99. package/dist/schemas/CodeSchema.d.ts +2 -1
  100. package/dist/schemas/CodeSchema.d.ts.map +1 -1
  101. package/dist/schemas/CollapsibleLayoutSchema.d.ts +2 -1
  102. package/dist/schemas/CollapsibleLayoutSchema.d.ts.map +1 -1
  103. package/dist/schemas/ContentSchema.d.ts +2 -1
  104. package/dist/schemas/ContentSchema.d.ts.map +1 -1
  105. package/dist/schemas/GridCellSchema.d.ts +25 -0
  106. package/dist/schemas/GridCellSchema.d.ts.map +1 -0
  107. package/dist/schemas/GridLayoutSchema.d.ts +23 -0
  108. package/dist/schemas/GridLayoutSchema.d.ts.map +1 -0
  109. package/dist/schemas/HtmlSchema.d.ts +14 -0
  110. package/dist/schemas/HtmlSchema.d.ts.map +1 -0
  111. package/dist/schemas/ImageSchema.d.ts +32 -0
  112. package/dist/schemas/ImageSchema.d.ts.map +1 -0
  113. package/dist/schemas/LogoSchema.d.ts +35 -0
  114. package/dist/schemas/LogoSchema.d.ts.map +1 -0
  115. package/dist/schemas/MarkdownSchema.d.ts +14 -0
  116. package/dist/schemas/MarkdownSchema.d.ts.map +1 -0
  117. package/dist/schemas/PageTemplateSchema.d.ts +31 -0
  118. package/dist/schemas/PageTemplateSchema.d.ts.map +1 -0
  119. package/dist/schemas/PrintConfigSchema.d.ts +31 -0
  120. package/dist/schemas/PrintConfigSchema.d.ts.map +1 -0
  121. package/dist/schemas/SectionSchema.d.ts +2 -1
  122. package/dist/schemas/SectionSchema.d.ts.map +1 -1
  123. package/dist/schemas/TextSchema.d.ts +37 -0
  124. package/dist/schemas/TextSchema.d.ts.map +1 -0
  125. package/dist/schemas/ViewModelSchema.d.ts +23 -0
  126. package/dist/schemas/ViewModelSchema.d.ts.map +1 -0
  127. package/dist/schemas/index.d.ts +15 -1
  128. package/dist/schemas/index.d.ts.map +1 -1
  129. package/dist/schemas/transformers/ComponentTransformer.d.ts +116 -0
  130. package/dist/schemas/transformers/ComponentTransformer.d.ts.map +1 -0
  131. package/dist/schemas/transformers/ReactNodeTransformer.d.ts +53 -0
  132. package/dist/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -0
  133. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts +66 -0
  134. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts.map +1 -0
  135. package/dist/schemas/transformers/registry.d.ts +15 -0
  136. package/dist/schemas/transformers/registry.d.ts.map +1 -0
  137. package/dist/schemas/types/Serializable.d.ts +46 -0
  138. package/dist/schemas/types/Serializable.d.ts.map +1 -0
  139. package/dist/utils/htmlTransform.d.ts.map +1 -1
  140. package/dist/utils/reactUtils.d.ts +12 -3
  141. package/dist/utils/reactUtils.d.ts.map +1 -1
  142. package/package.json +17 -3
  143. package/src/{components/__tests__ → __tests__/components}/AccessibilityProvider.test.tsx +1 -1
  144. package/src/{components/__tests__ → __tests__/components}/Article.test.tsx +1 -1
  145. package/src/{components/__tests__ → __tests__/components}/Breadcrumbs.test.tsx +1 -1
  146. package/src/{components/__tests__ → __tests__/components}/Button.test.tsx +1 -1
  147. package/src/{components/__tests__ → __tests__/components}/CardListGrid.test.tsx +2 -2
  148. package/src/{components/__tests__ → __tests__/components}/ChoiceInputField.test.tsx +1 -1
  149. package/src/{components/__tests__ → __tests__/components}/Code.test.tsx +1 -1
  150. package/src/{components/__tests__ → __tests__/components}/Content.integration.test.tsx +1 -1
  151. package/src/{components/__tests__ → __tests__/components}/Content.test.tsx +1 -1
  152. package/src/{components/__tests__ → __tests__/components}/CoverImageHeader.test.tsx +2 -2
  153. package/src/{components/__tests__ → __tests__/components}/ErrorBoundary.test.tsx +1 -1
  154. package/src/{components/__tests__ → __tests__/components}/FeatureCard.integration.test.tsx +2 -2
  155. package/src/{components/__tests__ → __tests__/components}/FeatureGrid.integration.test.tsx +2 -2
  156. package/src/{components/__tests__ → __tests__/components}/FeatureGrid.test.tsx +2 -2
  157. package/src/{components/__tests__ → __tests__/components}/Footer.test.tsx +4 -4
  158. package/src/{components/__tests__ → __tests__/components}/FormBlock.test.tsx +1 -1
  159. package/src/{components/__tests__ → __tests__/components}/HeroBlock.integration.test.tsx +2 -2
  160. package/src/{components/__tests__ → __tests__/components}/HeroBlock.test.tsx +233 -7
  161. package/src/{components/__tests__ → __tests__/components}/Html.test.tsx +11 -2
  162. package/src/{components/__tests__ → __tests__/components}/HtmlInputField.test.tsx +3 -3
  163. package/src/__tests__/components/Logo.test.js +3 -3
  164. package/src/{components/__tests__ → __tests__/components}/Markdown.test.tsx +1 -1
  165. package/src/{components/__tests__ → __tests__/components}/PageBannerHeader.test.tsx +3 -3
  166. package/src/{components/__tests__ → __tests__/components}/PaletteSwitcher.test.tsx +3 -3
  167. package/src/{components/__tests__ → __tests__/components}/ProductCard.test.tsx +4 -4
  168. package/src/{components/__tests__ → __tests__/components}/SafeSpan.integration.test.tsx +2 -2
  169. package/src/{components/__tests__ → __tests__/components}/SafeSpan.simple.test.tsx +1 -1
  170. package/src/{components/__tests__ → __tests__/components}/SafeSpan.test.tsx +1 -1
  171. package/src/{components/__tests__ → __tests__/components}/Section.integration.test.tsx +1 -1
  172. package/src/{components/__tests__ → __tests__/components}/Section.test.tsx +1 -1
  173. package/src/{components/__tests__ → __tests__/components}/SelectInputField.test.tsx +1 -1
  174. package/src/{components/__tests__ → __tests__/components}/TextInputField.test.tsx +3 -3
  175. package/src/{components/__tests__ → __tests__/components}/ThemeSwitcher.test.tsx +3 -3
  176. package/src/__tests__/components/base/ModelView.test.tsx +220 -0
  177. package/src/__tests__/components/blocks/Code.performance.test.tsx +625 -0
  178. package/src/__tests__/components/blocks/Code.serialization.test.tsx +507 -0
  179. package/src/__tests__/components/blocks/HeroBlock.serialization.test.tsx +414 -0
  180. package/src/__tests__/components/blocks/Image.serialization.test.tsx +257 -0
  181. package/src/__tests__/components/blocks/Section.serialization.test.tsx +553 -0
  182. package/src/__tests__/components/blocks/Text.performance.test.tsx +442 -0
  183. package/src/__tests__/components/blocks/Text.serialization.test.tsx +491 -0
  184. package/src/__tests__/components/buttons/Button.serialization.test.tsx +443 -0
  185. package/src/__tests__/components/input/FormComponents.serialization.test.tsx +482 -0
  186. package/src/__tests__/components/input/SelectInputField.serialization.test.tsx +439 -0
  187. package/src/__tests__/components/input/TextInputField.serialization.test.tsx +359 -0
  188. package/src/{components/layout/CollapsibleLayout/__tests__ → __tests__/components/layout}/CollapsibleLayout.test.tsx +4 -4
  189. package/src/__tests__/components/layout/GridCell.serialization.test.tsx +403 -0
  190. package/src/__tests__/components/layout/GridLayout.serialization.test.tsx +311 -0
  191. package/src/__tests__/hooks/usePrintMode.test.ts +89 -0
  192. package/src/__tests__/schemas/PageTemplateSchema.test.ts +161 -0
  193. package/src/__tests__/schemas/PrintConfigSchema.test.ts +127 -0
  194. package/src/__tests__/schemas/ViewModelSchema.test.ts +80 -0
  195. package/src/__tests__/schemas/transformers/ComponentSerializationPatterns.test.tsx +602 -0
  196. package/src/__tests__/schemas/transformers/ComponentTransformer.htmlPatterns.test.ts +301 -0
  197. package/src/__tests__/schemas/transformers/ComponentTransformer.test.ts +521 -0
  198. package/src/__tests__/schemas/transformers/CrossBrowserCompatibility.test.ts +586 -0
  199. package/src/__tests__/schemas/transformers/MockSerializableComponent.ts +103 -0
  200. package/src/__tests__/schemas/transformers/RealWorldScenarios.test.tsx +1165 -0
  201. package/src/__tests__/schemas/transformers/SerializationErrorHandling.test.ts +602 -0
  202. package/src/__tests__/schemas/transformers/SerializationIntegration.test.tsx +691 -0
  203. package/src/__tests__/schemas/transformers/SerializationPerformance.test.ts +460 -0
  204. package/src/__tests__/schemas/transformers/TestAutomation.test.ts +597 -0
  205. package/src/{utils/__tests__ → __tests__/utils}/nested-dom-fix.test.tsx +1 -1
  206. package/src/components/ErrorBoundary.tsx +8 -8
  207. package/src/components/Html.tsx +147 -44
  208. package/src/components/Logo.tsx +198 -100
  209. package/src/components/Markdown.tsx +125 -16
  210. package/src/components/QwickApp.tsx +64 -31
  211. package/src/components/QwickIcon.tsx +59 -0
  212. package/src/components/SafeSpan.tsx +65 -10
  213. package/src/components/Scaffold.tsx +2 -8
  214. package/src/components/base/ModelView.tsx +199 -0
  215. package/src/components/base/index.ts +11 -0
  216. package/src/components/blocks/Article.tsx +57 -18
  217. package/src/components/blocks/Code.md +529 -0
  218. package/src/components/blocks/Code.tsx +102 -15
  219. package/src/components/blocks/Content.tsx +25 -77
  220. package/src/components/blocks/CoverImageHeader.tsx +9 -4
  221. package/src/components/blocks/FeatureCard.tsx +1 -2
  222. package/src/components/blocks/FeatureGrid.tsx +19 -1
  223. package/src/components/blocks/Footer.tsx +13 -1
  224. package/src/components/blocks/HeroBlock.tsx +87 -20
  225. package/src/components/blocks/Image.tsx +395 -0
  226. package/src/components/blocks/PageBannerHeader.tsx +14 -12
  227. package/src/components/blocks/ProductCard.tsx +51 -52
  228. package/src/components/blocks/Section.tsx +113 -8
  229. package/src/components/blocks/Text.tsx +285 -0
  230. package/src/components/blocks/index.ts +4 -0
  231. package/src/components/buttons/Button.tsx +184 -15
  232. package/src/components/forms/FormBlock.tsx +70 -17
  233. package/src/components/index.ts +5 -0
  234. package/src/components/input/ChoiceInputField.tsx +48 -18
  235. package/src/components/input/HtmlInputField.tsx +48 -18
  236. package/src/components/input/SelectInputField.tsx +48 -16
  237. package/src/components/input/SwitchInputField.tsx +48 -17
  238. package/src/components/input/TextField.tsx +41 -1
  239. package/src/components/input/TextInputField.tsx +52 -18
  240. package/src/components/layout/GridCell.tsx +118 -9
  241. package/src/components/layout/GridLayout.tsx +125 -24
  242. package/src/components/pages/FormPage.tsx +0 -1
  243. package/src/components/pages/Page.css +304 -332
  244. package/src/components/pages/Page.tsx +307 -255
  245. package/src/components/pages/index.ts +2 -2
  246. package/src/config/AppConfig.ts +133 -0
  247. package/src/config/AppConfigBuilder.ts +421 -0
  248. package/src/config/__tests__/AppConfig.test.ts +385 -0
  249. package/src/config/__tests__/AppConfigBuilder.test.ts +432 -0
  250. package/src/config/index.ts +24 -0
  251. package/src/config/types.ts +170 -0
  252. package/src/config.ts +25 -0
  253. package/src/contexts/PrintModeContext.tsx +332 -0
  254. package/src/contexts/QwickAppContext.tsx +2 -2
  255. package/src/contexts/ThemeContext.tsx +1 -2
  256. package/src/contexts/index.ts +2 -0
  257. package/src/hooks/index.ts +5 -1
  258. package/src/hooks/usePrintMode.ts +73 -0
  259. package/src/index.ts +3 -0
  260. package/src/schemas/CodeSchema.ts +3 -3
  261. package/src/schemas/CollapsibleLayoutSchema.ts +2 -1
  262. package/src/schemas/ContentSchema.ts +2 -1
  263. package/src/schemas/GridCellSchema.ts +164 -0
  264. package/src/schemas/GridLayoutSchema.ts +133 -0
  265. package/src/schemas/HtmlSchema.ts +47 -0
  266. package/src/schemas/ImageSchema.ts +235 -0
  267. package/src/schemas/LogoSchema.ts +241 -0
  268. package/src/schemas/MarkdownSchema.ts +47 -0
  269. package/src/schemas/PageTemplateSchema.ts +186 -0
  270. package/src/schemas/PrintConfigSchema.ts +207 -0
  271. package/src/schemas/README.md +661 -0
  272. package/src/schemas/SectionSchema.ts +2 -1
  273. package/src/schemas/TextSchema.ts +329 -0
  274. package/src/schemas/ViewModelSchema.ts +115 -0
  275. package/src/schemas/index.ts +21 -2
  276. package/src/schemas/transformers/ComponentTransformer.ts +403 -0
  277. package/src/schemas/transformers/ReactNodeTransformer.ts +236 -0
  278. package/src/schemas/transformers/registry.ts +72 -0
  279. package/src/schemas/types/Serializable.ts +51 -0
  280. package/src/stories/AccessibilityProvider.stories.tsx +253 -253
  281. package/src/stories/Article.stories.tsx +433 -433
  282. package/src/stories/Button.stories.tsx +1 -1
  283. package/src/stories/CardListGrid.stories.tsx +451 -451
  284. package/src/stories/ChoiceInputField.stories.tsx +503 -503
  285. package/src/stories/Code.stories.tsx +1 -1
  286. package/src/stories/CollapsibleLayout.stories.tsx +1414 -1414
  287. package/src/stories/Content.stories.tsx +393 -393
  288. package/src/stories/CoverImageHeader.stories.tsx +701 -701
  289. package/src/stories/DataBinding.advanced.stories.tsx +432 -432
  290. package/src/stories/DataProvider.stories.tsx +1192 -1192
  291. package/src/stories/FeatureCard.stories.tsx +557 -557
  292. package/src/stories/FeatureGrid.stories.tsx +594 -594
  293. package/src/stories/Footer.stories.tsx +640 -640
  294. package/src/stories/FormBlock.stories.tsx +760 -760
  295. package/src/stories/FormComponents.stories.tsx +349 -541
  296. package/src/stories/GridCell.stories.tsx +417 -0
  297. package/src/stories/GridLayout.stories.tsx +353 -0
  298. package/src/stories/HeroBlock.stories.tsx +862 -373
  299. package/src/stories/HtmlInputField.stories.tsx +474 -474
  300. package/src/stories/Image.stories.tsx +819 -0
  301. package/src/stories/Introduction.stories.tsx +667 -667
  302. package/src/stories/LayoutBlocks.stories.tsx +324 -324
  303. package/src/stories/Logo.stories.tsx +165 -6
  304. package/src/stories/Markdown.stories.tsx +137 -137
  305. package/src/stories/ModelView.stories.tsx +477 -0
  306. package/src/stories/Page.stories.tsx +688 -688
  307. package/src/stories/PageBannerHeader.stories.tsx +864 -864
  308. package/src/stories/PaletteSwitcher.stories.tsx +119 -119
  309. package/src/stories/ProductCard.stories.tsx +424 -424
  310. package/src/stories/QwickApp.stories.tsx +368 -368
  311. package/src/stories/ResponsiveMenu.stories.tsx +249 -249
  312. package/src/stories/SafeSpan.stories.tsx +531 -531
  313. package/src/stories/Section.stories.tsx +90 -2
  314. package/src/stories/SelectInputField.stories.tsx +524 -524
  315. package/src/stories/Text.stories.tsx +560 -0
  316. package/src/stories/TextInputField.stories.tsx +443 -443
  317. package/src/stories/ThemeSwitcher.stories.tsx +123 -123
  318. package/src/utils/htmlTransform.tsx +74 -53
  319. package/src/utils/reactUtils.tsx +57 -6
  320. package/dist/index.bundled.css +0 -12
  321. /package/src/{hooks/__tests__ → __tests__/hooks}/useDataBinding.test.tsx.disabled +0 -0
  322. /package/src/{schemas/__tests__ → __tests__/schemas}/builders.test.ts +0 -0
  323. /package/src/{utils/__tests__ → __tests__/utils}/createDataDrivenComponent.test.tsx.disabled +0 -0
  324. /package/src/{utils/__tests__ → __tests__/utils}/htmlTransform.test.tsx +0 -0
  325. /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
- '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
- ]
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
- 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.
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
- tags: ['autodocs'],
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
- 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
- },
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
- 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
- },
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
- 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
- },
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
- 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>
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
- <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
- },
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
- 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>
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
- <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
- },
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
- 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"
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
- </Box>
313
+ </Box>
314
314
 
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
- },
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
- 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>
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
- <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
- },
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
- 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
- },
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
  };