@qwickapps/react-framework 1.3.5 → 1.4.1

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