@qwickapps/react-framework 1.3.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 (441) hide show
  1. package/LICENSE +44 -0
  2. package/README.md +794 -0
  3. package/dist/components/AccessibilityChecker.d.ts +12 -0
  4. package/dist/components/AccessibilityChecker.d.ts.map +1 -0
  5. package/dist/components/Html.d.ts +48 -0
  6. package/dist/components/Html.d.ts.map +1 -0
  7. package/dist/components/Logo.d.ts +79 -0
  8. package/dist/components/Logo.d.ts.map +1 -0
  9. package/dist/components/Markdown.d.ts +47 -0
  10. package/dist/components/Markdown.d.ts.map +1 -0
  11. package/dist/components/QwickApp.d.ts +56 -0
  12. package/dist/components/QwickApp.d.ts.map +1 -0
  13. package/dist/components/QwickAppsLogo.d.ts +25 -0
  14. package/dist/components/QwickAppsLogo.d.ts.map +1 -0
  15. package/dist/components/ResponsiveMenu.d.ts +38 -0
  16. package/dist/components/ResponsiveMenu.d.ts.map +1 -0
  17. package/dist/components/SafeSpan.d.ts +23 -0
  18. package/dist/components/SafeSpan.d.ts.map +1 -0
  19. package/dist/components/Scaffold.d.ts +57 -0
  20. package/dist/components/Scaffold.d.ts.map +1 -0
  21. package/dist/components/blocks/Article.d.ts +23 -0
  22. package/dist/components/blocks/Article.d.ts.map +1 -0
  23. package/dist/components/blocks/CardListGrid.d.ts +23 -0
  24. package/dist/components/blocks/CardListGrid.d.ts.map +1 -0
  25. package/dist/components/blocks/Code.d.ts +21 -0
  26. package/dist/components/blocks/Code.d.ts.map +1 -0
  27. package/dist/components/blocks/Content.d.ts +24 -0
  28. package/dist/components/blocks/Content.d.ts.map +1 -0
  29. package/dist/components/blocks/CoverImageHeader.d.ts +44 -0
  30. package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -0
  31. package/dist/components/blocks/FeatureCard.d.ts +66 -0
  32. package/dist/components/blocks/FeatureCard.d.ts.map +1 -0
  33. package/dist/components/blocks/FeatureGrid.d.ts +48 -0
  34. package/dist/components/blocks/FeatureGrid.d.ts.map +1 -0
  35. package/dist/components/blocks/Footer.d.ts +56 -0
  36. package/dist/components/blocks/Footer.d.ts.map +1 -0
  37. package/dist/components/blocks/HeroBlock.d.ts +33 -0
  38. package/dist/components/blocks/HeroBlock.d.ts.map +1 -0
  39. package/dist/components/blocks/PageBannerHeader.d.ts +30 -0
  40. package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -0
  41. package/dist/components/blocks/ProductCard.d.ts +57 -0
  42. package/dist/components/blocks/ProductCard.d.ts.map +1 -0
  43. package/dist/components/blocks/Section.d.ts +40 -0
  44. package/dist/components/blocks/Section.d.ts.map +1 -0
  45. package/dist/components/blocks/index.d.ts +37 -0
  46. package/dist/components/blocks/index.d.ts.map +1 -0
  47. package/dist/components/buttons/Button.d.ts +38 -0
  48. package/dist/components/buttons/Button.d.ts.map +1 -0
  49. package/dist/components/buttons/PaletteSwitcher.d.ts +24 -0
  50. package/dist/components/buttons/PaletteSwitcher.d.ts.map +1 -0
  51. package/dist/components/buttons/ThemeSwitcher.d.ts +24 -0
  52. package/dist/components/buttons/ThemeSwitcher.d.ts.map +1 -0
  53. package/dist/components/buttons/index.d.ts +11 -0
  54. package/dist/components/buttons/index.d.ts.map +1 -0
  55. package/dist/components/forms/FormBlock.d.ts +45 -0
  56. package/dist/components/forms/FormBlock.d.ts.map +1 -0
  57. package/dist/components/forms/index.d.ts +8 -0
  58. package/dist/components/forms/index.d.ts.map +1 -0
  59. package/dist/components/index.d.ts +32 -0
  60. package/dist/components/index.d.ts.map +1 -0
  61. package/dist/components/input/ChoiceInputField.d.ts +30 -0
  62. package/dist/components/input/ChoiceInputField.d.ts.map +1 -0
  63. package/dist/components/input/HtmlInputField.d.ts +29 -0
  64. package/dist/components/input/HtmlInputField.d.ts.map +1 -0
  65. package/dist/components/input/SelectInputField.d.ts +29 -0
  66. package/dist/components/input/SelectInputField.d.ts.map +1 -0
  67. package/dist/components/input/TextField.d.ts +18 -0
  68. package/dist/components/input/TextField.d.ts.map +1 -0
  69. package/dist/components/input/TextInputField.d.ts +32 -0
  70. package/dist/components/input/TextInputField.d.ts.map +1 -0
  71. package/dist/components/input/index.d.ts +17 -0
  72. package/dist/components/input/index.d.ts.map +1 -0
  73. package/dist/components/layout/GridCell.d.ts +16 -0
  74. package/dist/components/layout/GridCell.d.ts.map +1 -0
  75. package/dist/components/layout/GridCellWrapper.d.ts +46 -0
  76. package/dist/components/layout/GridCellWrapper.d.ts.map +1 -0
  77. package/dist/components/layout/GridLayout.d.ts +38 -0
  78. package/dist/components/layout/GridLayout.d.ts.map +1 -0
  79. package/dist/components/layout/index.d.ts +12 -0
  80. package/dist/components/layout/index.d.ts.map +1 -0
  81. package/dist/components/menu/Menu.d.ts +1 -0
  82. package/dist/components/menu/Menu.d.ts.map +1 -0
  83. package/dist/components/menu/MenuItem.d.ts +31 -0
  84. package/dist/components/menu/MenuItem.d.ts.map +1 -0
  85. package/dist/components/menu/index.d.ts +7 -0
  86. package/dist/components/menu/index.d.ts.map +1 -0
  87. package/dist/components/pages/FormPage.d.ts +66 -0
  88. package/dist/components/pages/FormPage.d.ts.map +1 -0
  89. package/dist/components/pages/Page.d.ts +124 -0
  90. package/dist/components/pages/Page.d.ts.map +1 -0
  91. package/dist/components/pages/index.d.ts +11 -0
  92. package/dist/components/pages/index.d.ts.map +1 -0
  93. package/dist/contexts/DataContext.d.ts +139 -0
  94. package/dist/contexts/DataContext.d.ts.map +1 -0
  95. package/dist/contexts/DimensionsContext.d.ts +42 -0
  96. package/dist/contexts/DimensionsContext.d.ts.map +1 -0
  97. package/dist/contexts/PaletteContext.d.ts +53 -0
  98. package/dist/contexts/PaletteContext.d.ts.map +1 -0
  99. package/dist/contexts/QwickAppContext.d.ts +71 -0
  100. package/dist/contexts/QwickAppContext.d.ts.map +1 -0
  101. package/dist/contexts/ThemeContext.d.ts +65 -0
  102. package/dist/contexts/ThemeContext.d.ts.map +1 -0
  103. package/dist/contexts/index.d.ts +9 -0
  104. package/dist/contexts/index.d.ts.map +1 -0
  105. package/dist/hooks/index.d.ts +10 -0
  106. package/dist/hooks/index.d.ts.map +1 -0
  107. package/dist/hooks/useBaseProps.d.ts +101 -0
  108. package/dist/hooks/useBaseProps.d.ts.map +1 -0
  109. package/dist/hooks/useDataBinding.d.ts +22 -0
  110. package/dist/hooks/useDataBinding.d.ts.map +1 -0
  111. package/dist/index.css +1 -0
  112. package/dist/index.d.ts +8 -0
  113. package/dist/index.d.ts.map +1 -0
  114. package/dist/index.esm.css +1 -0
  115. package/dist/index.esm.js +24143 -0
  116. package/dist/index.js +24245 -0
  117. package/dist/palettes/PaletteAutumn.d.ts +10 -0
  118. package/dist/palettes/PaletteAutumn.d.ts.map +1 -0
  119. package/dist/palettes/PaletteCosmic.d.ts +10 -0
  120. package/dist/palettes/PaletteCosmic.d.ts.map +1 -0
  121. package/dist/palettes/PaletteDefault.d.ts +10 -0
  122. package/dist/palettes/PaletteDefault.d.ts.map +1 -0
  123. package/dist/palettes/PaletteOcean.d.ts +10 -0
  124. package/dist/palettes/PaletteOcean.d.ts.map +1 -0
  125. package/dist/palettes/PaletteSpring.d.ts +10 -0
  126. package/dist/palettes/PaletteSpring.d.ts.map +1 -0
  127. package/dist/palettes/PaletteWinter.d.ts +10 -0
  128. package/dist/palettes/PaletteWinter.d.ts.map +1 -0
  129. package/dist/palettes/index.d.ts +13 -0
  130. package/dist/palettes/index.d.ts.map +1 -0
  131. package/dist/schemas/ActionSchema.d.ts +21 -0
  132. package/dist/schemas/ActionSchema.d.ts.map +1 -0
  133. package/dist/schemas/ArticleSchema.d.ts +13 -0
  134. package/dist/schemas/ArticleSchema.d.ts.map +1 -0
  135. package/dist/schemas/Builders.d.ts +7 -0
  136. package/dist/schemas/Builders.d.ts.map +1 -0
  137. package/dist/schemas/ButtonSchema.d.ts +19 -0
  138. package/dist/schemas/ButtonSchema.d.ts.map +1 -0
  139. package/dist/schemas/CardListGridSchema.d.ts +17 -0
  140. package/dist/schemas/CardListGridSchema.d.ts.map +1 -0
  141. package/dist/schemas/ChoiceInputFieldSchema.d.ts +18 -0
  142. package/dist/schemas/ChoiceInputFieldSchema.d.ts.map +1 -0
  143. package/dist/schemas/CodeSchema.d.ts +18 -0
  144. package/dist/schemas/CodeSchema.d.ts.map +1 -0
  145. package/dist/schemas/ContentSchema.d.ts +20 -0
  146. package/dist/schemas/ContentSchema.d.ts.map +1 -0
  147. package/dist/schemas/CoverImageHeaderSchema.d.ts +28 -0
  148. package/dist/schemas/CoverImageHeaderSchema.d.ts.map +1 -0
  149. package/dist/schemas/FeatureCardSchema.d.ts +28 -0
  150. package/dist/schemas/FeatureCardSchema.d.ts.map +1 -0
  151. package/dist/schemas/FeatureGridSchema.d.ts +17 -0
  152. package/dist/schemas/FeatureGridSchema.d.ts.map +1 -0
  153. package/dist/schemas/FeatureItemSchema.d.ts +16 -0
  154. package/dist/schemas/FeatureItemSchema.d.ts.map +1 -0
  155. package/dist/schemas/FooterItemSchema.d.ts +15 -0
  156. package/dist/schemas/FooterItemSchema.d.ts.map +1 -0
  157. package/dist/schemas/FooterSchema.d.ts +20 -0
  158. package/dist/schemas/FooterSchema.d.ts.map +1 -0
  159. package/dist/schemas/FooterSectionSchema.d.ts +15 -0
  160. package/dist/schemas/FooterSectionSchema.d.ts.map +1 -0
  161. package/dist/schemas/FormBlockSchema.d.ts +19 -0
  162. package/dist/schemas/FormBlockSchema.d.ts.map +1 -0
  163. package/dist/schemas/HeaderActionSchema.d.ts +17 -0
  164. package/dist/schemas/HeaderActionSchema.d.ts.map +1 -0
  165. package/dist/schemas/HeroBlockSchema.d.ts +22 -0
  166. package/dist/schemas/HeroBlockSchema.d.ts.map +1 -0
  167. package/dist/schemas/HtmlInputFieldSchema.d.ts +18 -0
  168. package/dist/schemas/HtmlInputFieldSchema.d.ts.map +1 -0
  169. package/dist/schemas/MetadataItemSchema.d.ts +13 -0
  170. package/dist/schemas/MetadataItemSchema.d.ts.map +1 -0
  171. package/dist/schemas/PageBannerHeaderSchema.d.ts +28 -0
  172. package/dist/schemas/PageBannerHeaderSchema.d.ts.map +1 -0
  173. package/dist/schemas/PaletteSwitcherSchema.d.ts +16 -0
  174. package/dist/schemas/PaletteSwitcherSchema.d.ts.map +1 -0
  175. package/dist/schemas/ProductCardSchema.d.ts +39 -0
  176. package/dist/schemas/ProductCardSchema.d.ts.map +1 -0
  177. package/dist/schemas/SafeSpanSchema.d.ts +13 -0
  178. package/dist/schemas/SafeSpanSchema.d.ts.map +1 -0
  179. package/dist/schemas/SectionSchema.d.ts +17 -0
  180. package/dist/schemas/SectionSchema.d.ts.map +1 -0
  181. package/dist/schemas/SelectInputFieldSchema.d.ts +27 -0
  182. package/dist/schemas/SelectInputFieldSchema.d.ts.map +1 -0
  183. package/dist/schemas/TextInputFieldSchema.d.ts +22 -0
  184. package/dist/schemas/TextInputFieldSchema.d.ts.map +1 -0
  185. package/dist/schemas/ThemeSwitcherSchema.d.ts +19 -0
  186. package/dist/schemas/ThemeSwitcherSchema.d.ts.map +1 -0
  187. package/dist/schemas/index.d.ts +33 -0
  188. package/dist/schemas/index.d.ts.map +1 -0
  189. package/dist/schemas/types.d.ts +7 -0
  190. package/dist/schemas/types.d.ts.map +1 -0
  191. package/dist/templates/TemplateResolver.d.ts +52 -0
  192. package/dist/templates/TemplateResolver.d.ts.map +1 -0
  193. package/dist/templates/index.d.ts +7 -0
  194. package/dist/templates/index.d.ts.map +1 -0
  195. package/dist/tests/ConsoleWarningTest.d.ts +5 -0
  196. package/dist/tests/ConsoleWarningTest.d.ts.map +1 -0
  197. package/dist/tests/StorageKeyTest.d.ts +6 -0
  198. package/dist/tests/StorageKeyTest.d.ts.map +1 -0
  199. package/dist/tests/ThemeStorageKeyTest.d.ts +6 -0
  200. package/dist/tests/ThemeStorageKeyTest.d.ts.map +1 -0
  201. package/dist/types/CacheProvider.d.ts +18 -0
  202. package/dist/types/CacheProvider.d.ts.map +1 -0
  203. package/dist/types/ContentProxy.d.ts +47 -0
  204. package/dist/types/ContentProxy.d.ts.map +1 -0
  205. package/dist/types/DataBinding.d.ts +7 -0
  206. package/dist/types/DataBinding.d.ts.map +1 -0
  207. package/dist/types/DataProvider.d.ts +7 -0
  208. package/dist/types/DataProvider.d.ts.map +1 -0
  209. package/dist/types/DataTypes.d.ts +185 -0
  210. package/dist/types/DataTypes.d.ts.map +1 -0
  211. package/dist/types/TemplateProvider.d.ts +10 -0
  212. package/dist/types/TemplateProvider.d.ts.map +1 -0
  213. package/dist/types/TemplateResolver.d.ts +23 -0
  214. package/dist/types/TemplateResolver.d.ts.map +1 -0
  215. package/dist/types/index.d.ts +81 -0
  216. package/dist/types/index.d.ts.map +1 -0
  217. package/dist/utils/breakpoints.d.ts +35 -0
  218. package/dist/utils/breakpoints.d.ts.map +1 -0
  219. package/dist/utils/customPaletteManager.d.ts +8 -0
  220. package/dist/utils/customPaletteManager.d.ts.map +1 -0
  221. package/dist/utils/dimensions.d.ts +34 -0
  222. package/dist/utils/dimensions.d.ts.map +1 -0
  223. package/dist/utils/htmlTransform.d.ts +44 -0
  224. package/dist/utils/htmlTransform.d.ts.map +1 -0
  225. package/dist/utils/index.d.ts +15 -0
  226. package/dist/utils/index.d.ts.map +1 -0
  227. package/dist/utils/logger.d.ts +14 -0
  228. package/dist/utils/logger.d.ts.map +1 -0
  229. package/dist/utils/paletteUtils.d.ts +38 -0
  230. package/dist/utils/paletteUtils.d.ts.map +1 -0
  231. package/dist/utils/persistenceUtils.d.ts +31 -0
  232. package/dist/utils/persistenceUtils.d.ts.map +1 -0
  233. package/dist/utils/reactUtils.d.ts +24 -0
  234. package/dist/utils/reactUtils.d.ts.map +1 -0
  235. package/dist/utils/spacing.d.ts +34 -0
  236. package/dist/utils/spacing.d.ts.map +1 -0
  237. package/dist/utils/themePerformanceMonitor.d.ts +32 -0
  238. package/dist/utils/themePerformanceMonitor.d.ts.map +1 -0
  239. package/dist/utils/themeUtils.d.ts +27 -0
  240. package/dist/utils/themeUtils.d.ts.map +1 -0
  241. package/package.json +141 -0
  242. package/src/__tests__/components/Logo.test.js +172 -0
  243. package/src/__tests__/contexts/DataContext.test.js +505 -0
  244. package/src/__tests__/contexts/PaletteContext.test.js +115 -0
  245. package/src/__tests__/contexts/ThemeContext.test.js +123 -0
  246. package/src/__tests__/utils/paletteUtils.test.js +142 -0
  247. package/src/__tests__/utils/themeUtils.test.js +142 -0
  248. package/src/components/AccessibilityChecker.tsx +264 -0
  249. package/src/components/Html.tsx +191 -0
  250. package/src/components/Logo.css +217 -0
  251. package/src/components/Logo.tsx +370 -0
  252. package/src/components/Markdown.tsx +191 -0
  253. package/src/components/QwickApp.css +257 -0
  254. package/src/components/QwickApp.tsx +157 -0
  255. package/src/components/QwickAppsLogo.tsx +77 -0
  256. package/src/components/ResponsiveMenu.css +416 -0
  257. package/src/components/ResponsiveMenu.tsx +310 -0
  258. package/src/components/SafeSpan.tsx +128 -0
  259. package/src/components/Scaffold.css +541 -0
  260. package/src/components/Scaffold.tsx +463 -0
  261. package/src/components/__tests__/Article.test.tsx +419 -0
  262. package/src/components/__tests__/Button.test.tsx +702 -0
  263. package/src/components/__tests__/CardListGrid.test.tsx +478 -0
  264. package/src/components/__tests__/ChoiceInputField.test.tsx +864 -0
  265. package/src/components/__tests__/Code.test.tsx +595 -0
  266. package/src/components/__tests__/Content.integration.test.tsx +193 -0
  267. package/src/components/__tests__/Content.test.tsx +504 -0
  268. package/src/components/__tests__/CoverImageHeader.test.tsx +456 -0
  269. package/src/components/__tests__/FeatureCard.integration.test.tsx +384 -0
  270. package/src/components/__tests__/FeatureGrid.integration.test.tsx +364 -0
  271. package/src/components/__tests__/FeatureGrid.test.tsx +494 -0
  272. package/src/components/__tests__/Footer.test.tsx +544 -0
  273. package/src/components/__tests__/FormBlock.test.tsx +857 -0
  274. package/src/components/__tests__/HeroBlock.integration.test.tsx +272 -0
  275. package/src/components/__tests__/HeroBlock.test.tsx +463 -0
  276. package/src/components/__tests__/Html.test.tsx +174 -0
  277. package/src/components/__tests__/HtmlInputField.test.tsx +856 -0
  278. package/src/components/__tests__/Markdown.test.tsx +233 -0
  279. package/src/components/__tests__/PageBannerHeader.test.tsx +614 -0
  280. package/src/components/__tests__/PaletteSwitcher.test.tsx +864 -0
  281. package/src/components/__tests__/ProductCard.test.tsx +377 -0
  282. package/src/components/__tests__/SafeSpan.integration.test.tsx +123 -0
  283. package/src/components/__tests__/SafeSpan.simple.test.tsx +65 -0
  284. package/src/components/__tests__/SafeSpan.test.tsx +388 -0
  285. package/src/components/__tests__/Section.integration.test.tsx +288 -0
  286. package/src/components/__tests__/Section.test.tsx +494 -0
  287. package/src/components/__tests__/SelectInputField.test.tsx +886 -0
  288. package/src/components/__tests__/TextInputField.test.tsx +749 -0
  289. package/src/components/__tests__/ThemeSwitcher.test.tsx +777 -0
  290. package/src/components/blocks/Article.tsx +194 -0
  291. package/src/components/blocks/CardListGrid.tsx +132 -0
  292. package/src/components/blocks/Code.tsx +313 -0
  293. package/src/components/blocks/Content.tsx +265 -0
  294. package/src/components/blocks/CoverImageHeader.css +17 -0
  295. package/src/components/blocks/CoverImageHeader.tsx +435 -0
  296. package/src/components/blocks/FeatureCard.tsx +321 -0
  297. package/src/components/blocks/FeatureGrid.tsx +147 -0
  298. package/src/components/blocks/Footer.tsx +343 -0
  299. package/src/components/blocks/HeroBlock.tsx +280 -0
  300. package/src/components/blocks/PageBannerHeader.tsx +471 -0
  301. package/src/components/blocks/ProductCard.tsx +472 -0
  302. package/src/components/blocks/Section.tsx +209 -0
  303. package/src/components/blocks/index.ts +37 -0
  304. package/src/components/buttons/Button.tsx +233 -0
  305. package/src/components/buttons/PaletteSwitcher.tsx +268 -0
  306. package/src/components/buttons/ThemeSwitcher.tsx +283 -0
  307. package/src/components/buttons/index.ts +11 -0
  308. package/src/components/forms/FormBlock.tsx +291 -0
  309. package/src/components/forms/index.ts +7 -0
  310. package/src/components/index.ts +37 -0
  311. package/src/components/input/ChoiceInputField.tsx +188 -0
  312. package/src/components/input/HtmlInputField.tsx +326 -0
  313. package/src/components/input/SelectInputField.tsx +197 -0
  314. package/src/components/input/TextField.tsx +47 -0
  315. package/src/components/input/TextInputField.tsx +144 -0
  316. package/src/components/input/index.ts +17 -0
  317. package/src/components/layout/GridCell.tsx +46 -0
  318. package/src/components/layout/GridCellWrapper.tsx +87 -0
  319. package/src/components/layout/GridLayout.tsx +169 -0
  320. package/src/components/layout/index.ts +13 -0
  321. package/src/components/menu/Menu.tsx +0 -0
  322. package/src/components/menu/MenuItem.tsx +32 -0
  323. package/src/components/menu/index.ts +6 -0
  324. package/src/components/pages/FormPage.tsx +108 -0
  325. package/src/components/pages/Page.css +460 -0
  326. package/src/components/pages/Page.tsx +345 -0
  327. package/src/components/pages/index.ts +11 -0
  328. package/src/contexts/DataContext.tsx +355 -0
  329. package/src/contexts/DimensionsContext.tsx +154 -0
  330. package/src/contexts/PaletteContext.tsx +217 -0
  331. package/src/contexts/QwickAppContext.tsx +95 -0
  332. package/src/contexts/ThemeContext.tsx +376 -0
  333. package/src/contexts/index.ts +9 -0
  334. package/src/hooks/__tests__/useDataBinding.test.tsx.disabled +229 -0
  335. package/src/hooks/index.ts +11 -0
  336. package/src/hooks/useBaseProps.ts +267 -0
  337. package/src/hooks/useDataBinding.ts +77 -0
  338. package/src/index.ts +23 -0
  339. package/src/palettes/PaletteAutumn.css +172 -0
  340. package/src/palettes/PaletteAutumn.ts +16 -0
  341. package/src/palettes/PaletteCosmic.css +172 -0
  342. package/src/palettes/PaletteCosmic.ts +16 -0
  343. package/src/palettes/PaletteDefault.css +178 -0
  344. package/src/palettes/PaletteDefault.ts +17 -0
  345. package/src/palettes/PaletteOcean.css +172 -0
  346. package/src/palettes/PaletteOcean.ts +16 -0
  347. package/src/palettes/PaletteSpring.css +160 -0
  348. package/src/palettes/PaletteSpring.ts +16 -0
  349. package/src/palettes/PaletteWinter.css +172 -0
  350. package/src/palettes/PaletteWinter.ts +16 -0
  351. package/src/palettes/index.css +12 -0
  352. package/src/palettes/index.ts +29 -0
  353. package/src/schemas/ActionSchema.ts +140 -0
  354. package/src/schemas/ArticleSchema.ts +35 -0
  355. package/src/schemas/ButtonSchema.ts +99 -0
  356. package/src/schemas/CardListGridSchema.ts +102 -0
  357. package/src/schemas/ChoiceInputFieldSchema.ts +89 -0
  358. package/src/schemas/CodeSchema.ts +88 -0
  359. package/src/schemas/ContentSchema.ts +128 -0
  360. package/src/schemas/CoverImageHeaderSchema.ts +208 -0
  361. package/src/schemas/FeatureCardSchema.ts +161 -0
  362. package/src/schemas/FeatureGridSchema.ts +87 -0
  363. package/src/schemas/FeatureItemSchema.ts +68 -0
  364. package/src/schemas/FooterItemSchema.ts +57 -0
  365. package/src/schemas/FooterSchema.ts +116 -0
  366. package/src/schemas/FooterSectionSchema.ts +50 -0
  367. package/src/schemas/FormBlockSchema.ts +102 -0
  368. package/src/schemas/HeaderActionSchema.ts +83 -0
  369. package/src/schemas/HeroBlockSchema.ts +149 -0
  370. package/src/schemas/HtmlInputFieldSchema.ts +88 -0
  371. package/src/schemas/MetadataItemSchema.ts +35 -0
  372. package/src/schemas/PageBannerHeaderSchema.ts +206 -0
  373. package/src/schemas/PaletteSwitcherSchema.ts +66 -0
  374. package/src/schemas/ProductCardSchema.ts +264 -0
  375. package/src/schemas/SafeSpanSchema.ts +36 -0
  376. package/src/schemas/SectionSchema.ts +106 -0
  377. package/src/schemas/SelectInputFieldSchema.ts +137 -0
  378. package/src/schemas/TextInputFieldSchema.ts +129 -0
  379. package/src/schemas/ThemeSwitcherSchema.ts +97 -0
  380. package/src/schemas/__tests__/builders.test.ts +313 -0
  381. package/src/schemas/index.ts +34 -0
  382. package/src/setupTests.js +60 -0
  383. package/src/stories/Article.stories.tsx +549 -0
  384. package/src/stories/Button.stories.tsx +498 -0
  385. package/src/stories/CardListGrid.stories.tsx +539 -0
  386. package/src/stories/ChoiceInputField.stories.tsx +591 -0
  387. package/src/stories/Code.stories.tsx +711 -0
  388. package/src/stories/Content.stories.tsx +463 -0
  389. package/src/stories/CoverImageHeader.stories.tsx +794 -0
  390. package/src/stories/DataBinding.advanced.stories.tsx +548 -0
  391. package/src/stories/DataBinding.stories.tsx +452 -0
  392. package/src/stories/DataProvider.stories.tsx +1361 -0
  393. package/src/stories/FeatureCard.stories.tsx +642 -0
  394. package/src/stories/FeatureGrid.stories.tsx +669 -0
  395. package/src/stories/Footer.stories.tsx +724 -0
  396. package/src/stories/FormBlock.stories.tsx +834 -0
  397. package/src/stories/HeroBlock.stories.tsx +442 -0
  398. package/src/stories/Html.stories.tsx +264 -0
  399. package/src/stories/HtmlInputField.stories.tsx +558 -0
  400. package/src/stories/Introduction.stories.tsx +721 -0
  401. package/src/stories/LayoutBlocks.stories.tsx +382 -0
  402. package/src/stories/LayoutSystem.stories.tsx +253 -0
  403. package/src/stories/Logo.stories.tsx +400 -0
  404. package/src/stories/Markdown.stories.tsx +349 -0
  405. package/src/stories/Page.stories.tsx +762 -0
  406. package/src/stories/PageBannerHeader.stories.tsx +949 -0
  407. package/src/stories/PaletteSwitcher.stories.tsx +156 -0
  408. package/src/stories/ProductCard.stories.tsx +504 -0
  409. package/src/stories/QwickApp.stories.tsx +461 -0
  410. package/src/stories/ResponsiveMenu.stories.tsx +299 -0
  411. package/src/stories/SafeSpan.stories.tsx +612 -0
  412. package/src/stories/Section.stories.tsx +613 -0
  413. package/src/stories/SelectInputField.stories.tsx +605 -0
  414. package/src/stories/TextInputField.stories.tsx +526 -0
  415. package/src/stories/ThemeSwitcher.stories.tsx +170 -0
  416. package/src/stories/form/FormComponents.stories.tsx +588 -0
  417. package/src/templates/TemplateResolver.ts +156 -0
  418. package/src/templates/index.ts +6 -0
  419. package/src/tests/ConsoleWarningTest.tsx +30 -0
  420. package/src/tests/StorageKeyTest.tsx +110 -0
  421. package/src/tests/ThemeStorageKeyTest.tsx +114 -0
  422. package/src/types/CacheProvider.ts +14 -0
  423. package/src/types/ContentProxy.ts +99 -0
  424. package/src/types/DataTypes.ts +196 -0
  425. package/src/types/TemplateProvider.ts +9 -0
  426. package/src/types/TemplateResolver.ts +26 -0
  427. package/src/types/index.ts +99 -0
  428. package/src/utils/__tests__/createDataDrivenComponent.test.tsx.disabled +193 -0
  429. package/src/utils/__tests__/htmlTransform.test.tsx +255 -0
  430. package/src/utils/breakpoints.ts +87 -0
  431. package/src/utils/customPaletteManager.js +214 -0
  432. package/src/utils/dimensions.ts +147 -0
  433. package/src/utils/htmlTransform.tsx +323 -0
  434. package/src/utils/index.ts +16 -0
  435. package/src/utils/logger.ts +28 -0
  436. package/src/utils/paletteUtils.ts +78 -0
  437. package/src/utils/persistenceUtils.ts +107 -0
  438. package/src/utils/reactUtils.tsx +37 -0
  439. package/src/utils/spacing.ts +155 -0
  440. package/src/utils/themePerformanceMonitor.js +113 -0
  441. package/src/utils/themeUtils.ts +67 -0
@@ -0,0 +1,382 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import {
3
+ HeroBlock,
4
+ Content,
5
+ FeatureGrid,
6
+ Section
7
+ } from '../components/blocks';
8
+ import {
9
+ GridLayout,
10
+ GridCell
11
+ } from '../components/layout';
12
+ import { QwickApp } from '../components/QwickApp';
13
+ import { Button } from '../components/buttons/Button';
14
+
15
+ const meta: Meta = {
16
+ title: 'Layout/LayoutBlocks',
17
+ decorators: [
18
+ (Story) => (
19
+ <QwickApp appName="Layout Demo">
20
+ <Story />
21
+ </QwickApp>
22
+ ),
23
+ ],
24
+ parameters: {
25
+ layout: 'fullscreen',
26
+ docs: {
27
+ description: {
28
+ component: `Comprehensive collection of layout components for building responsive, professional content layouts with minimal effort.
29
+
30
+ **Key Features:**
31
+ - **HeroBlock**: Full-width hero sections with background images, gradients, and call-to-action buttons
32
+ - **GridLayout**: Responsive multi-column layouts (1-5 columns) with automatic mobile adaptation
33
+ - **GridCell**: Flexible column component with background colors, spacing, and elevation options
34
+ - **Content**: Structured content containers with titles, variants, and action buttons
35
+ - **FeatureGrid**: Grid layouts for showcasing features with icons, titles, and descriptions
36
+ - **Section**: Page-level containers with theming, spacing, and max-width controls
37
+ - **Responsive Design**: All components automatically adapt to mobile, tablet, and desktop
38
+ - **Theme Integration**: Full support for theme colors, spacing, and typography
39
+
40
+ **Perfect for:**
41
+ - Landing pages and marketing websites
42
+ - Product feature showcases and comparisons
43
+ - Documentation and help pages
44
+ - Dashboard layouts and admin panels
45
+ - Blog posts and article layouts
46
+ - Portfolio and showcase websites
47
+ - Any application requiring structured content presentation`,
48
+ },
49
+ },
50
+ },
51
+ };
52
+
53
+ export default meta;
54
+
55
+ // Hero Block Stories
56
+ export const HeroBlocks: StoryObj = {
57
+ render: () => (
58
+ <div>
59
+ <HeroBlock
60
+ title="Welcome to QwickApps React Framework"
61
+ subtitle="Build beautiful, responsive React applications with ease"
62
+ backgroundGradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
63
+ height="medium"
64
+ actions={[
65
+ {
66
+ label: 'Get Started',
67
+ variant: 'primary',
68
+ onClick: () => { alert('Get Started clicked'); }
69
+ },
70
+ {
71
+ label: 'Learn More',
72
+ variant: 'outlined',
73
+ onClick: () => { alert('Learn More clicked'); }
74
+ }
75
+ ]}
76
+ />
77
+
78
+ <Section spacing="spacious">
79
+ <HeroBlock
80
+ title="Small Hero with Image"
81
+ subtitle="This hero uses a background image with overlay"
82
+ backgroundImage="https://images.unsplash.com/photo-1558618666-fcd25c85cd64?ixlib=rb-4.0.3&auto=format&fit=crop&w=1200&q=80"
83
+ height="small"
84
+ overlayOpacity={0.7}
85
+ textAlign="left"
86
+ />
87
+ </Section>
88
+ </div>
89
+ ),
90
+ };
91
+
92
+ // GridCell Layout Stories
93
+ export const ColumnLayouts: StoryObj = {
94
+ render: () => (
95
+ <div>
96
+ <Section spacing="spacious">
97
+ <Content title="Two GridCell Layout" centered>
98
+ <GridLayout columns={2} spacing="large">
99
+ <GridCell background="background.paper">
100
+ <h3>Left GridCell</h3>
101
+ <p>This is the left column content with automatic responsive behavior.</p>
102
+ </GridCell>
103
+ <GridCell background="grey.100">
104
+ <h3>Right GridCell</h3>
105
+ <p>This is the right column content that will stack below on mobile.</p>
106
+ </GridCell>
107
+ </GridLayout>
108
+ </Content>
109
+ </Section>
110
+
111
+ <Section background="grey.50">
112
+ <Content title="Three GridCell Layout" centered>
113
+ <GridLayout columns={3} spacing="medium" equalHeight>
114
+ <GridCell background="background.paper">
115
+ <h4>Feature One</h4>
116
+ <p>Equal height columns ensure consistent layout.</p>
117
+ </GridCell>
118
+ <GridCell background="background.paper">
119
+ <h4>Feature Two</h4>
120
+ <p>This column has more content to demonstrate the equal height functionality working properly.</p>
121
+ </GridCell>
122
+ <GridCell background="background.paper">
123
+ <h4>Feature Three</h4>
124
+ <p>Short content.</p>
125
+ </GridCell>
126
+ </GridLayout>
127
+ </Content>
128
+ </Section>
129
+
130
+ <Section spacing="spacious">
131
+ <Content title="Four & Five GridCell Layouts" centered>
132
+ <GridLayout columns={4} spacing="small" sx={{ mb: 3 }}>
133
+ {[1, 2, 3, 4].map((i) => (
134
+ <GridCell key={i} background="primary.main" sx={{ textAlign: 'center' }}>
135
+ <strong>Col {i}</strong>
136
+ </GridCell>
137
+ ))}
138
+ </GridLayout>
139
+
140
+ <GridLayout columns={5} spacing="small">
141
+ {[1, 2, 3, 4, 5].map((i) => (
142
+ <GridCell key={i} background="grey.200" sx={{ textAlign: 'center' }}>
143
+ <strong>{i}</strong>
144
+ </GridCell>
145
+ ))}
146
+ </GridLayout>
147
+ </Content>
148
+ </Section>
149
+ </div>
150
+ ),
151
+ };
152
+
153
+ // Content Block Stories
154
+ export const Contents: StoryObj = {
155
+ render: () => (
156
+ <div>
157
+ <Section spacing="spacious">
158
+ <Content
159
+ title="Default Content Block"
160
+ centered
161
+ maxWidth="md"
162
+ >
163
+ <p>This is a default content block with automatic responsive behavior and theme-aware styling.</p>
164
+ </Content>
165
+ </Section>
166
+
167
+ <Section background="default">
168
+ <Content
169
+ title="Elevated Content Block"
170
+ variant="elevated"
171
+ spacing="spacious"
172
+ centered
173
+ maxWidth="md"
174
+ >
175
+ <p>This elevated content block has a subtle shadow and stands out from the background.</p>
176
+ </Content>
177
+ </Section>
178
+
179
+ <Section spacing="spacious">
180
+ <GridLayout columns={2} spacing="large">
181
+ <GridCell>
182
+ <Content
183
+ title="Outlined Block"
184
+ variant="outlined"
185
+ spacing="spacious"
186
+ >
187
+ <p>This content block has a border instead of a shadow.</p>
188
+ </Content>
189
+ </GridCell>
190
+ <GridCell>
191
+ <Content
192
+ title="Filled Block"
193
+ variant="filled"
194
+ spacing="spacious"
195
+ >
196
+ <p>This content block has a filled background color.</p>
197
+ </Content>
198
+ </GridCell>
199
+ </GridLayout>
200
+ </Section>
201
+ </div>
202
+ ),
203
+ };
204
+
205
+ // Feature Grid Stories
206
+ export const FeatureGrids: StoryObj = {
207
+ render: () => (
208
+ <div>
209
+ <Section spacing="spacious">
210
+ <Content title="Feature Grid" centered maxWidth="lg">
211
+ <FeatureGrid
212
+ columns={3}
213
+ gap="large"
214
+ features={[
215
+ {
216
+ id: 'responsive',
217
+ icon: <span style={{ fontSize: '2rem' }}>📱</span>,
218
+ title: 'Responsive Design',
219
+ description: 'All components automatically adapt to different screen sizes for optimal user experience.',
220
+ action: <Button label="Learn More" buttonSize="small" onClick={() => { alert('Learn More clicked'); }} />
221
+ },
222
+ {
223
+ id: 'themes',
224
+ icon: <span style={{ fontSize: '2rem' }}>🎨</span>,
225
+ title: 'Theme Support',
226
+ description: 'Built-in light/dark theme support with customizable color palettes.',
227
+ action: <Button label="Explore" buttonSize="small" onClick={() => { alert('Explore clicked'); }} />
228
+ },
229
+ {
230
+ id: 'accessible',
231
+ icon: <span style={{ fontSize: '2rem' }}>♿</span>,
232
+ title: 'Accessibility First',
233
+ description: 'All components follow WCAG guidelines and include proper ARIA labels.',
234
+ action: <Button label="Details" buttonSize="small" onClick={() => { alert('Details clicked'); }} />
235
+ },
236
+ {
237
+ id: 'typescript',
238
+ icon: <span style={{ fontSize: '2rem' }}>🔷</span>,
239
+ title: 'TypeScript Ready',
240
+ description: 'Full TypeScript support with comprehensive type definitions.',
241
+ action: <Button label="Documentation" buttonSize="small" onClick={() => { alert('Documentation clicked'); }} />
242
+ },
243
+ {
244
+ id: 'performance',
245
+ icon: <span style={{ fontSize: '2rem' }}>⚡</span>,
246
+ title: 'High Performance',
247
+ description: 'Optimized for speed with minimal bundle size and efficient rendering.',
248
+ action: <Button label="Benchmarks" buttonSize="small" onClick={() => { alert('Benchmarks clicked'); }} />
249
+ },
250
+ {
251
+ id: 'customizable',
252
+ icon: <span style={{ fontSize: '2rem' }}>🛠️</span>,
253
+ title: 'Highly Customizable',
254
+ description: 'Easy to customize and extend with your own design system.',
255
+ action: <Button label="Customize" buttonSize="small" onClick={() => { alert('Customize clicked'); }} />
256
+ },
257
+ ]}
258
+ />
259
+ </Content>
260
+ </Section>
261
+ </div>
262
+ ),
263
+ };
264
+
265
+ // Complete Layout Example
266
+ export const CompleteLayout: StoryObj = {
267
+ render: () => (
268
+ <div>
269
+ {/* Hero Section */}
270
+ <HeroBlock
271
+ title="QwickApps React Framework"
272
+ subtitle="The complete React framework for building modern applications"
273
+ backgroundGradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
274
+ height="large"
275
+ actions={[
276
+ {
277
+ label: 'Get Started',
278
+ variant: 'primary',
279
+ size: 'large',
280
+ onClick: () => { alert('Get Started clicked'); }
281
+ },
282
+ {
283
+ label: 'View Demo',
284
+ variant: 'outlined',
285
+ size: 'large',
286
+ onClick: () => { alert('View Demo clicked'); }
287
+ }
288
+ ]}
289
+ />
290
+
291
+ {/* Features Section */}
292
+ <Section background="alternate">
293
+ <Content title="Why Choose QwickApps?" centered maxWidth="lg">
294
+ <p style={{ fontSize: '1.2rem', textAlign: 'center', marginBottom: '3rem', opacity: 0.8 }}>
295
+ Everything you need to build beautiful, responsive applications
296
+ </p>
297
+ <FeatureGrid
298
+ columns={3}
299
+ gap="large"
300
+ features={[
301
+ {
302
+ id: 'components',
303
+ icon: <span style={{ fontSize: '3rem' }}>🧩</span>,
304
+ title: 'Rich Components',
305
+ description: 'Comprehensive set of pre-built, customizable components for rapid development.',
306
+ },
307
+ {
308
+ id: 'layouts',
309
+ icon: <span style={{ fontSize: '3rem' }}>📐</span>,
310
+ title: 'Flexible Layouts',
311
+ description: 'Powerful layout blocks that adapt to any design and screen size automatically.',
312
+ },
313
+ {
314
+ id: 'navigation',
315
+ icon: <span style={{ fontSize: '3rem' }}>🧭</span>,
316
+ title: 'Smart Navigation',
317
+ description: 'Responsive navigation that transforms based on device: bottom nav, rail, or top nav.',
318
+ },
319
+ ]}
320
+ />
321
+ </Content>
322
+ </Section>
323
+
324
+ {/* Content Sections */}
325
+ <Section spacing="spacious">
326
+ <GridLayout columns={2} spacing="large">
327
+ <GridCell>
328
+ <Content title="Easy to Use" variant="elevated" spacing="spacious">
329
+ <p>QwickApps React Framework is designed for developers who want to build great applications without spending time on boilerplate.</p>
330
+ <ul>
331
+ <li>Simple API design</li>
332
+ <li>Comprehensive documentation</li>
333
+ <li>TypeScript support</li>
334
+ <li>Storybook examples</li>
335
+ </ul>
336
+ </Content>
337
+ </GridCell>
338
+ <GridCell>
339
+ <Content title="Production Ready" variant="elevated" spacing="spacious">
340
+ <p>Built with best practices and tested in real-world applications to ensure reliability and performance.</p>
341
+ <ul>
342
+ <li>Accessibility compliant</li>
343
+ <li>Performance optimized</li>
344
+ <li>Theme system</li>
345
+ <li>Mobile-first design</li>
346
+ </ul>
347
+ </Content>
348
+ </GridCell>
349
+ </GridLayout>
350
+ </Section>
351
+
352
+ {/* Call to Action */}
353
+ <Section background="primary">
354
+ <Content
355
+ centered
356
+ maxWidth="md"
357
+ actions={[
358
+ {
359
+ label: 'Start Building',
360
+ variant: 'secondary',
361
+ size: 'large',
362
+ onClick: () => { alert('Start Building clicked'); }
363
+ },
364
+ {
365
+ label: 'Documentation',
366
+ variant: 'outlined',
367
+ size: 'large',
368
+ onClick: () => console.log('Documentation clicked')
369
+ }
370
+ ]}
371
+ >
372
+ <h2 style={{ fontSize: '2.5rem', marginBottom: '1rem' }}>
373
+ Ready to Get Started?
374
+ </h2>
375
+ <p style={{ fontSize: '1.2rem', opacity: 0.9, marginBottom: '2rem' }}>
376
+ Join thousands of developers building with QwickApps React Framework
377
+ </p>
378
+ </Content>
379
+ </Section>
380
+ </div>
381
+ ),
382
+ };
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Layout System - Complete guide to QwickApps layout components
3
+ */
4
+
5
+ import type { Meta, StoryObj } from '@storybook/react';
6
+ import { Box, Typography, Paper, Chip } from '@mui/material';
7
+ import { GridLayout } from '../components/layout/GridLayout';
8
+ import {
9
+ HeroBlock,
10
+ Content,
11
+ Section
12
+ } from '../components/blocks';
13
+ import { QwickApp } from '../components/QwickApp';
14
+
15
+ const meta: Meta = {
16
+ title: 'Layout/Layout System',
17
+ parameters: {
18
+ layout: 'fullscreen',
19
+ docs: {
20
+ description: {
21
+ component: `Complete layout system for building responsive, professional interfaces with minimal code.
22
+
23
+ **Key Features:**
24
+ - **GridLayout**: Flexible CSS Grid-based layout with automatic responsive behavior
25
+ - **GridCell**: Simple wrapper for custom content with base props support
26
+ - **LayoutBlocks**: Pre-built content blocks (Hero, Content, Feature Grid, Section)
27
+ - **Base Props**: Standardized props for all layout components (spacing, dimensions, grid behavior)
28
+ - **Responsive Design**: Automatic mobile-first responsive behavior
29
+ - **T-shirt Sizing**: Intuitive sizing system (tiny, small, medium, large, huge)
30
+
31
+ **Perfect For:**
32
+ - Landing pages and marketing websites
33
+ - Dashboard and admin panel layouts
34
+ - Content-heavy applications and blogs
35
+ - E-commerce product showcases
36
+ - Documentation and help systems
37
+ - Any application requiring structured, responsive layouts`,
38
+ },
39
+ },
40
+ },
41
+ };
42
+
43
+ export default meta;
44
+
45
+ export const LayoutSystemOverview: StoryObj = {
46
+ render: () => (
47
+ <QwickApp appName="Layout System Demo">
48
+ <Section sectionBackground="background.default" padding="comfortable">
49
+ <Typography variant="h3" gutterBottom>
50
+ QwickApps Layout System
51
+ </Typography>
52
+
53
+ <Typography variant="h5" color="text.secondary" paragraph>
54
+ Build responsive layouts with our comprehensive layout component system
55
+ </Typography>
56
+
57
+ <GridLayout columns={2} spacing="large" margin="large">
58
+ <Content
59
+ title="GridLayout"
60
+ variant="elevated"
61
+ blockSpacing="comfortable"
62
+ >
63
+ <Typography paragraph>
64
+ CSS Grid-based layout component that automatically wraps child components
65
+ with grid props in Material-UI Grid items.
66
+ </Typography>
67
+ <Box sx={{ display: 'flex', gap: 1, flexWrap: 'wrap' }}>
68
+ <Chip label="Responsive" size="small" />
69
+ <Chip label="Auto-wrapping" size="small" />
70
+ <Chip label="Flexible columns" size="small" />
71
+ </Box>
72
+ </Content>
73
+
74
+ <Content
75
+ title="LayoutBlocks"
76
+ variant="elevated"
77
+ blockSpacing="comfortable"
78
+ >
79
+ <Typography paragraph>
80
+ Pre-built content blocks including Hero sections, Content blocks,
81
+ Feature grids, and Section containers for rapid development.
82
+ </Typography>
83
+ <Box sx={{ display: 'flex', gap: 1, flexWrap: 'wrap' }}>
84
+ <Chip label="Pre-styled" size="small" />
85
+ <Chip label="Theme-aware" size="small" />
86
+ <Chip label="Content-ready" size="small" />
87
+ </Box>
88
+ </Content>
89
+
90
+ <Content
91
+ title="Base Props System"
92
+ variant="elevated"
93
+ blockSpacing="comfortable"
94
+ span={12}
95
+ >
96
+ <Typography paragraph>
97
+ All layout components support standardized base props for consistent
98
+ styling, spacing, and grid behavior across your application.
99
+ </Typography>
100
+ <GridLayout columns={4} spacing="small">
101
+ <Paper sx={{ p: 1, textAlign: 'center', background: '#e3f2fd' }}>
102
+ <Typography variant="caption" display="block">Grid Props</Typography>
103
+ <Typography variant="body2">span, xs, sm, md, lg, xl</Typography>
104
+ </Paper>
105
+ <Paper sx={{ p: 1, textAlign: 'center', background: '#e8f5e8' }}>
106
+ <Typography variant="caption" display="block">Dimensions</Typography>
107
+ <Typography variant="body2">width, height, min/max</Typography>
108
+ </Paper>
109
+ <Paper sx={{ p: 1, textAlign: 'center', background: '#fff3e0' }}>
110
+ <Typography variant="caption" display="block">Spacing</Typography>
111
+ <Typography variant="body2">padding, margin</Typography>
112
+ </Paper>
113
+ <Paper sx={{ p: 1, textAlign: 'center', background: '#fce4ec' }}>
114
+ <Typography variant="caption" display="block">Styling</Typography>
115
+ <Typography variant="body2">background, className, sx</Typography>
116
+ </Paper>
117
+ </GridLayout>
118
+ </Content>
119
+ </GridLayout>
120
+ </Section>
121
+
122
+ <Section sectionBackground="grey.50" padding="comfortable">
123
+ <Typography variant="h4" gutterBottom>
124
+ T-shirt Sizing System
125
+ </Typography>
126
+
127
+ <Typography variant="body1" paragraph>
128
+ All components support intuitive t-shirt sizing for dimensions and spacing:
129
+ </Typography>
130
+
131
+ <GridLayout columns={5} spacing="medium">
132
+ <Paper sx={{ p: 2, textAlign: 'center', background: 'primary.light' }}>
133
+ <Typography variant="h6" color="primary.contrastText">Tiny</Typography>
134
+ <Typography variant="caption" color="primary.contrastText">4px / 0.25rem</Typography>
135
+ </Paper>
136
+ <Paper sx={{ p: 2, textAlign: 'center', background: 'secondary.light' }}>
137
+ <Typography variant="h6" color="secondary.contrastText">Small</Typography>
138
+ <Typography variant="caption" color="secondary.contrastText">8px / 0.5rem</Typography>
139
+ </Paper>
140
+ <Paper sx={{ p: 2, textAlign: 'center', background: 'success.light' }}>
141
+ <Typography variant="h6" color="success.contrastText">Medium</Typography>
142
+ <Typography variant="caption" color="success.contrastText">16px / 1rem</Typography>
143
+ </Paper>
144
+ <Paper sx={{ p: 2, textAlign: 'center', background: 'warning.light' }}>
145
+ <Typography variant="h6" color="warning.contrastText">Large</Typography>
146
+ <Typography variant="caption" color="warning.contrastText">24px / 1.5rem</Typography>
147
+ </Paper>
148
+ <Paper sx={{ p: 2, textAlign: 'center', background: 'error.light' }}>
149
+ <Typography variant="h6" color="error.contrastText">Huge</Typography>
150
+ <Typography variant="caption" color="error.contrastText">32px / 2rem</Typography>
151
+ </Paper>
152
+ </GridLayout>
153
+ </Section>
154
+
155
+ <HeroBlock
156
+ title="Start Building Beautiful Layouts"
157
+ subtitle="Use GridLayout and LayoutBlocks to create responsive, professional interfaces"
158
+ actions={[
159
+ { label: "View GridLayout Stories", variant: "primary" },
160
+ { label: "View LayoutBlocks Stories", variant: "outlined" }
161
+ ]}
162
+ backgroundColor="primary"
163
+ blockHeight="small"
164
+ />
165
+ </QwickApp>
166
+ ),
167
+ };
168
+
169
+ export const GridLayoutDemo: StoryObj = {
170
+ render: () => (
171
+ <QwickApp appName="GridLayout Demo">
172
+ <Section padding="comfortable">
173
+ <Typography variant="h4" gutterBottom>
174
+ GridLayout Examples
175
+ </Typography>
176
+
177
+ <Content title="Equal Column Distribution" blockSpacing="comfortable" margin="large">
178
+ <Typography paragraph>
179
+ Use the <code>columns</code> prop to automatically distribute children into equal-width columns:
180
+ </Typography>
181
+ <GridLayout columns={3} spacing="medium">
182
+ <Paper sx={{ p: 2, textAlign: 'center', background: '#ffebee' }}>
183
+ <Typography>Column 1</Typography>
184
+ </Paper>
185
+ <Paper sx={{ p: 2, textAlign: 'center', background: '#e8f5e8' }}>
186
+ <Typography>Column 2</Typography>
187
+ </Paper>
188
+ <Paper sx={{ p: 2, textAlign: 'center', background: '#e3f2fd' }}>
189
+ <Typography>Column 3</Typography>
190
+ </Paper>
191
+ </GridLayout>
192
+ </Content>
193
+
194
+ <Content title="Custom Grid Spans" blockSpacing="comfortable" margin="large">
195
+ <Typography paragraph>
196
+ Use <code>span</code> props on children for custom column widths:
197
+ </Typography>
198
+ <GridLayout spacing="medium">
199
+ <Paper sx={{ p: 2, textAlign: 'center', background: '#f3e5f5' }} data-grid-span={8}>
200
+ <Typography>Main Content (8 columns)</Typography>
201
+ </Paper>
202
+ <Paper sx={{ p: 2, textAlign: 'center', background: '#e0f2f1' }} data-grid-span={4}>
203
+ <Typography>Sidebar (4 columns)</Typography>
204
+ </Paper>
205
+ </GridLayout>
206
+ </Content>
207
+
208
+ <Content title="Responsive Behavior" blockSpacing="comfortable" margin="large">
209
+ <Typography paragraph>
210
+ Use breakpoint props for responsive layouts:
211
+ </Typography>
212
+ <GridLayout spacing="medium">
213
+ <Paper
214
+ sx={{ p: 2, textAlign: 'center', background: '#fff3e0' }}
215
+ data-grid-xs={12}
216
+ data-grid-sm={6}
217
+ data-grid-md={4}
218
+ >
219
+ <Typography variant="body2">
220
+ Mobile: Full width<br/>
221
+ Tablet: Half width<br/>
222
+ Desktop: One third
223
+ </Typography>
224
+ </Paper>
225
+ <Paper
226
+ sx={{ p: 2, textAlign: 'center', background: '#fce4ec' }}
227
+ data-grid-xs={12}
228
+ data-grid-sm={6}
229
+ data-grid-md={4}
230
+ >
231
+ <Typography variant="body2">
232
+ Responsive<br/>
233
+ Column 2
234
+ </Typography>
235
+ </Paper>
236
+ <Paper
237
+ sx={{ p: 2, textAlign: 'center', background: '#e8eaf6' }}
238
+ data-grid-xs={12}
239
+ data-grid-sm={12}
240
+ data-grid-md={4}
241
+ >
242
+ <Typography variant="body2">
243
+ Mobile: Full width<br/>
244
+ Tablet: Full width<br/>
245
+ Desktop: One third
246
+ </Typography>
247
+ </Paper>
248
+ </GridLayout>
249
+ </Content>
250
+ </Section>
251
+ </QwickApp>
252
+ ),
253
+ };