@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,721 @@
1
+ /**
2
+ * QwickApps React Framework - Introduction and Getting Started Guide
3
+ *
4
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
5
+ */
6
+
7
+ import type { Meta, StoryObj } from '@storybook/react';
8
+ import QwickApp from '../components/QwickApp';
9
+ import { Page } from '../components/pages';
10
+ import CoverImageHeader from '../components/blocks/CoverImageHeader';
11
+ import PageBannerHeader from '../components/blocks/PageBannerHeader';
12
+ import Footer from '../components/blocks/Footer';
13
+ import Scaffold from '../components/Scaffold';
14
+ import { GridLayout, GridCell } from '../components/layout';
15
+ import { Section, Content, FeatureGrid, HeroBlock } from '../components/blocks';
16
+ import { BrowserRouter, Routes, Route } from 'react-router-dom';
17
+ import {
18
+ Rocket as RocketIcon,
19
+ Palette as PaletteIcon,
20
+ Phone as PhoneIcon,
21
+ Code as CodeIcon,
22
+ Speed as SpeedIcon,
23
+ Security as SecurityIcon,
24
+ Accessibility as AccessibilityIcon,
25
+ GitHub as GitHubIcon,
26
+ Download as DownloadIcon,
27
+ MenuBook as DocsIcon,
28
+ PlayArrow as DemoIcon,
29
+ Category as ComponentsIcon,
30
+ Layers as LayersIcon,
31
+ Settings as SettingsIcon
32
+ } from '@mui/icons-material';
33
+ import Logo from '../components/Logo';
34
+ import { Code } from '../components/blocks';
35
+ import { Button } from '../components/buttons/Button';
36
+
37
+ const meta: Meta = {
38
+ title: 'Introduction',
39
+ parameters: {
40
+ layout: 'fullscreen',
41
+ docs: {
42
+ page: () => (
43
+ <div style={{ padding: '2rem', maxWidth: '1200px', margin: '0 auto' }}>
44
+ <div style={{ textAlign: 'center', marginBottom: '3rem' }}>
45
+ <h1 style={{ fontSize: '3rem', margin: '0 0 1rem 0', background: 'linear-gradient(45deg, #2196F3, #21CBF3)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent' }}>
46
+ QwickApps React Framework
47
+ </h1>
48
+ <p style={{ fontSize: '1.5rem', color: 'var(--theme-on-background)', opacity: 0.8, margin: '0 0 2rem 0' }}>
49
+ The most developer-friendly React framework that turns complex UI development into a joy. Build production-ready applications in hours, not weeks.
50
+ </p>
51
+ <div style={{ display: 'flex', gap: '1rem', justifyContent: 'center', flexWrap: 'wrap' }}>
52
+ <span style={{ padding: '0.5rem 1rem', backgroundColor: 'var(--theme-primary)', color: 'white', borderRadius: '20px', fontSize: '0.875rem' }}>
53
+ 50+ Components
54
+ </span>
55
+ <span style={{ padding: '0.5rem 1rem', backgroundColor: 'var(--theme-secondary)', color: 'white', borderRadius: '20px', fontSize: '0.875rem' }}>
56
+ TypeScript
57
+ </span>
58
+ <span style={{ padding: '0.5rem 1rem', backgroundColor: 'var(--theme-success)', color: 'white', borderRadius: '20px', fontSize: '0.875rem' }}>
59
+ Material UI
60
+ </span>
61
+ <span style={{ padding: '0.5rem 1rem', backgroundColor: 'var(--theme-warning)', color: 'white', borderRadius: '20px', fontSize: '0.875rem' }}>
62
+ Responsive
63
+ </span>
64
+ </div>
65
+ </div>
66
+
67
+ {/* Quick Start Section */}
68
+ <div style={{ marginBottom: '3rem' }}>
69
+ <h2>🚀 Quick Start</h2>
70
+ <div style={{ marginBottom: '1rem' }}>
71
+ <h3>Installation</h3>
72
+ <Code language="bash" title="terminal" maxHeight={60}>
73
+ npm install @qwickapps/react-framework
74
+ </Code>
75
+ </div>
76
+
77
+ <div style={{ marginBottom: '1rem' }}>
78
+ <h3>Basic Setup</h3>
79
+ <Code language="typescript" title="App.tsx">
80
+ {`import { QwickApp } from '@qwickapps/react-framework';
81
+
82
+ function App() {
83
+ return (
84
+ <QwickApp appId="com.mycompany.myapp">
85
+ {/* Your app content */}
86
+ </QwickApp>
87
+ );
88
+ }`}
89
+ </Code>
90
+ </div>
91
+
92
+ <div style={{ marginBottom: '1rem' }}>
93
+ <h3>With Navigation</h3>
94
+ <Code language="typescript" title="App.tsx">
95
+ {`import { QwickApp, Page, Scaffold } from '@qwickapps/react-framework';
96
+
97
+ const navigationItems = [
98
+ {
99
+ id: 'home',
100
+ label: 'Home',
101
+ icon: <HomeIcon />,
102
+ onClick: () => navigate('/'),
103
+ active: true,
104
+ },
105
+ {
106
+ id: 'about',
107
+ label: 'About',
108
+ icon: <AboutIcon />,
109
+ onClick: () => navigate('/about'),
110
+ },
111
+ ];
112
+
113
+ function App() {
114
+ return (
115
+ <QwickApp appId="com.mycompany.myapp">
116
+ <Scaffold
117
+ appName="My App"
118
+ navigationItems={navigationItems}
119
+ showAppBar={true}
120
+ >
121
+ <Page title="Welcome" route="/">
122
+ {/* Your page content */}
123
+ </Page>
124
+ </Scaffold>
125
+ </QwickApp>
126
+ );
127
+ }`}
128
+ </Code>
129
+ </div>
130
+
131
+ <div style={{ marginBottom: '1rem' }}>
132
+ <h3>Complete Example</h3>
133
+ <Code language="typescript" title="App.tsx" maxHeight={500}>
134
+ {`import {
135
+ QwickApp,
136
+ Page,
137
+ HeroBlock,
138
+ Section,
139
+ Content,
140
+ GridLayout,
141
+ GridCell,
142
+ FeatureGrid,
143
+ Scaffold
144
+ } from '@qwickapps/react-framework';
145
+
146
+ function App() {
147
+ return (
148
+ <QwickApp appId="com.mycompany.myapp">
149
+ <Scaffold appName="My App" showAppBar={true}>
150
+ <Page title="Home">
151
+ <HeroBlock
152
+ title="Welcome to My App"
153
+ subtitle="Build amazing applications with QwickApps React Framework"
154
+ backgroundGradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
155
+ actions={[{
156
+ label: 'Get Started',
157
+ variant: 'primary',
158
+ onClick: () => console.log('Getting started!')
159
+ }]}
160
+ />
161
+
162
+ <Section padding="large" background="alternate">
163
+ <Content title="Features" centered>
164
+ <FeatureGrid
165
+ columns={3}
166
+ features={[{
167
+ id: 'responsive',
168
+ title: 'Responsive Design',
169
+ description: 'Works perfectly on all devices',
170
+ icon: <span>📱</span>
171
+ }, {
172
+ id: 'accessible',
173
+ title: 'Accessible',
174
+ description: 'WCAG compliant out of the box',
175
+ icon: <span>♿</span>
176
+ }, {
177
+ id: 'secure',
178
+ title: 'Secure',
179
+ description: 'Built-in XSS protection',
180
+ icon: <span>🔒</span>
181
+ }]}
182
+ />
183
+ </Content>
184
+ </Section>
185
+
186
+ <Section padding="large">
187
+ <GridLayout columns={2} gap="large">
188
+ <GridCell>
189
+ <Content variant="elevated" spacing="spacious">
190
+ <h3>Easy to Use</h3>
191
+ <p>Simple, intuitive API that gets you productive immediately.</p>
192
+ </Content>
193
+ </GridCell>
194
+ <GridCell>
195
+ <Content variant="elevated" spacing="spacious">
196
+ <h3>Fully Featured</h3>
197
+ <p>Everything you need for modern web applications.</p>
198
+ </Content>
199
+ </GridCell>
200
+ </GridLayout>
201
+ </Section>
202
+ </Page>
203
+ </Scaffold>
204
+ </QwickApp>
205
+ );
206
+ }`}
207
+ </Code>
208
+ </div>
209
+ </div>
210
+
211
+ {/* What's New Section */}
212
+ <div style={{ marginBottom: '3rem' }}>
213
+ <h2>✨ What's New in 2025</h2>
214
+ <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))', gap: '1.5rem' }}>
215
+ <div style={{ padding: '1.5rem', border: '1px solid var(--theme-outline)', borderRadius: '8px' }}>
216
+ <h3>🎯 Page Component Redesign</h3>
217
+ <p>Simplified with optional header and footer props. No more complex menu/actions logic!</p>
218
+ </div>
219
+ <div style={{ padding: '1.5rem', border: '1px solid var(--theme-outline)', borderRadius: '8px' }}>
220
+ <h3>🖼️ New Header Components</h3>
221
+ <p>CoverImageHeader and PageBannerHeader for flexible page layouts and social media style designs.</p>
222
+ </div>
223
+ <div style={{ padding: '1.5rem', border: '1px solid var(--theme-outline)', borderRadius: '8px' }}>
224
+ <h3>🦶 Footer Component</h3>
225
+ <p>Comprehensive footer with sections, legal info, and responsive vertical/horizontal layouts.</p>
226
+ </div>
227
+ <div style={{ padding: '1.5rem', border: '1px solid var(--theme-outline)', borderRadius: '8px' }}>
228
+ <h3>💻 Code Component</h3>
229
+ <p>Syntax-highlighted code display with copy functionality and theme-aware styling for documentation.</p>
230
+ </div>
231
+ </div>
232
+ </div>
233
+
234
+ {/* Key Features Section */}
235
+ <div style={{ marginBottom: '3rem' }}>
236
+ <h2>🎨 Key Features</h2>
237
+ <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(250px, 1fr))', gap: '1rem' }}>
238
+ <div style={{ textAlign: 'center', padding: '1rem' }}>
239
+ <div style={{ fontSize: '2rem', marginBottom: '0.5rem' }}>🎨</div>
240
+ <h4>Theming System</h4>
241
+ <p>Dark/light mode with custom palettes</p>
242
+ </div>
243
+ <div style={{ textAlign: 'center', padding: '1rem' }}>
244
+ <div style={{ fontSize: '2rem', marginBottom: '0.5rem' }}>📱</div>
245
+ <h4>Responsive Design</h4>
246
+ <p>Mobile-first with Material UI breakpoints</p>
247
+ </div>
248
+ <div style={{ textAlign: 'center', padding: '1rem' }}>
249
+ <div style={{ fontSize: '2rem', marginBottom: '0.5rem' }}>♿</div>
250
+ <h4>Accessibility</h4>
251
+ <p>WCAG compliant with screen reader support</p>
252
+ </div>
253
+ <div style={{ textAlign: 'center', padding: '1rem' }}>
254
+ <div style={{ fontSize: '2rem', marginBottom: '0.5rem' }}>⚡</div>
255
+ <h4>Performance</h4>
256
+ <p>Optimized components with lazy loading</p>
257
+ </div>
258
+ <div style={{ textAlign: 'center', padding: '1rem' }}>
259
+ <div style={{ fontSize: '2rem', marginBottom: '0.5rem' }}>🔧</div>
260
+ <h4>TypeScript</h4>
261
+ <p>Full type safety and IntelliSense support</p>
262
+ </div>
263
+ <div style={{ textAlign: 'center', padding: '1rem' }}>
264
+ <div style={{ fontSize: '2rem', marginBottom: '0.5rem' }}>🏗️</div>
265
+ <h4>Layout System</h4>
266
+ <p>Flexible sections, columns, and grids</p>
267
+ </div>
268
+ </div>
269
+ </div>
270
+
271
+ {/* Component Categories Section */}
272
+ <div style={{ marginBottom: '3rem' }}>
273
+ <h2>📚 Component Categories</h2>
274
+ <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(200px, 1fr))', gap: '1rem' }}>
275
+ <div style={{ padding: '1rem', backgroundColor: 'var(--theme-surface)', borderRadius: '8px', border: '1px solid var(--theme-outline)' }}>
276
+ <h4>🏗️ Layout</h4>
277
+ <ul style={{ margin: 0, paddingLeft: '1rem' }}>
278
+ <li>Page</li>
279
+ <li>Section</li>
280
+ <li>GridLayout</li>
281
+ <li>Content</li>
282
+ <li>FeatureGrid</li>
283
+ </ul>
284
+ </div>
285
+ <div style={{ padding: '1rem', backgroundColor: 'var(--theme-surface)', borderRadius: '8px', border: '1px solid var(--theme-outline)' }}>
286
+ <h4>🎯 Headers</h4>
287
+ <ul style={{ margin: 0, paddingLeft: '1rem' }}>
288
+ <li>CoverImageHeader</li>
289
+ <li>PageBannerHeader</li>
290
+ <li>HeroBlock</li>
291
+ </ul>
292
+ </div>
293
+ <div style={{ padding: '1rem', backgroundColor: 'var(--theme-surface)', borderRadius: '8px', border: '1px solid var(--theme-outline)' }}>
294
+ <h4>🧭 Navigation</h4>
295
+ <ul style={{ margin: 0, paddingLeft: '1rem' }}>
296
+ <li>Scaffold</li>
297
+ <li>ResponsiveMenu</li>
298
+ <li>Footer</li>
299
+ </ul>
300
+ </div>
301
+ <div style={{ padding: '1rem', backgroundColor: 'var(--theme-surface)', borderRadius: '8px', border: '1px solid var(--theme-outline)' }}>
302
+ <h4>🎨 Branding</h4>
303
+ <ul style={{ margin: 0, paddingLeft: '1rem' }}>
304
+ <li>Logo</li>
305
+ <li>ThemeSwitcher</li>
306
+ <li>PaletteSwitcher</li>
307
+ </ul>
308
+ </div>
309
+ <div style={{ padding: '1rem', backgroundColor: 'var(--theme-surface)', borderRadius: '8px', border: '1px solid var(--theme-outline)' }}>
310
+ <h4>🔧 Utilities</h4>
311
+ <ul style={{ margin: 0, paddingLeft: '1rem' }}>
312
+ <li>SafeSpan</li>
313
+ <li>HtmlInputField</li>
314
+ <li>Button</li>
315
+ <li>Code</li>
316
+ <li>AccessibilityChecker</li>
317
+ </ul>
318
+ </div>
319
+ </div>
320
+ </div>
321
+
322
+ {/* Final Call to Action Section */}
323
+ <div style={{ textAlign: 'center', padding: '3rem 2rem', backgroundColor: 'var(--theme-surface)', borderRadius: '12px', margin: '2rem 0' }}>
324
+ <h2>Ready to build amazing applications?</h2>
325
+ <p style={{ fontSize: '1.1rem', margin: '1rem 0 2rem' }}>
326
+ Explore the component stories to see everything in action!
327
+ </p>
328
+ <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', gap: '1rem' }}>
329
+ <span>Made with ❤️ by</span>
330
+ <Logo size="tiny" badgeShape="heart" style={{ display: 'inline-block' }} />
331
+ </div>
332
+ <div style={{ display: 'flex', gap: '1rem', justifyContent: 'center', flexWrap: 'wrap', marginTop: '2rem' }}>
333
+ <button style={{
334
+ padding: '1rem 2rem',
335
+ fontSize: '1.1rem',
336
+ backgroundColor: 'var(--theme-primary)',
337
+ color: 'var(--theme-on-primary)',
338
+ border: 'none',
339
+ borderRadius: '8px',
340
+ cursor: 'pointer',
341
+ fontWeight: 'bold'
342
+ }}>
343
+ Browse Components
344
+ </button>
345
+ <button style={{
346
+ padding: '1rem 2rem',
347
+ fontSize: '1.1rem',
348
+ backgroundColor: 'transparent',
349
+ color: 'var(--theme-primary)',
350
+ border: '2px solid var(--theme-primary)',
351
+ borderRadius: '8px',
352
+ cursor: 'pointer',
353
+ fontWeight: 'bold'
354
+ }}>
355
+ View on GitHub
356
+ </button>
357
+ </div>
358
+ </div>
359
+ </div>
360
+ ),
361
+ },
362
+ },
363
+ tags: ['autodocs'],
364
+ };
365
+
366
+ export default meta;
367
+ type Story = StoryObj<typeof meta>;
368
+
369
+ export const Welcome: Story = {
370
+ render: () => (
371
+ <QwickApp appId="framework-introduction" appName='Framework Introduction'>
372
+ <BrowserRouter>
373
+ <Scaffold
374
+ appName="QwickApps React Framework"
375
+ navigationItems={[
376
+ {
377
+ id: 'home',
378
+ label: 'Home',
379
+ icon: <RocketIcon />,
380
+ route: '/',
381
+ priority: 1,
382
+ },
383
+ {
384
+ id: 'components',
385
+ label: 'Components',
386
+ icon: <ComponentsIcon />,
387
+ route: '/components',
388
+ priority: 2,
389
+ },
390
+ {
391
+ id: 'examples',
392
+ label: 'Examples',
393
+ icon: <LayersIcon />,
394
+ route: '/examples',
395
+ priority: 3,
396
+ },
397
+ {
398
+ id: 'docs',
399
+ label: 'Documentation',
400
+ icon: <DocsIcon />,
401
+ route: '/docs',
402
+ priority: 4,
403
+ },
404
+ ]}
405
+ showAppBar={true}
406
+ >
407
+ <Routes>
408
+ <Route path="/" element={
409
+ <Page
410
+ header={
411
+ <PageBannerHeader
412
+ coverImage="https://images.unsplash.com/photo-1557804506-669a67965ba0?ixlib=rb-4.0.3&auto=format&fit=crop&w=1200&q=80"
413
+ profileImage={(
414
+ <div style={{
415
+ width: '100%',
416
+ height: '100%',
417
+ background: 'linear-gradient(45deg, #2196F3, #21CBF3)',
418
+ borderRadius: '16px',
419
+ display: 'flex',
420
+ alignItems: 'center',
421
+ justifyContent: 'center',
422
+ fontSize: '3rem',
423
+ fontWeight: 'bold',
424
+ color: 'white',
425
+ }}>
426
+ Q
427
+ </div>
428
+ )}
429
+ title="QwickApps React Framework"
430
+ subtitle="Complete React framework for building modern applications"
431
+ overline="VERSION 2025"
432
+ metadata={[
433
+ { label: 'Components', value: '50+' },
434
+ { label: 'Downloads', value: '10K+' },
435
+ { label: 'Stars', value: '2.1K' },
436
+ ]}
437
+ tags={['React', 'TypeScript', 'Material UI', 'Responsive', 'Accessible']}
438
+ actions={[
439
+ {
440
+ id: 'demo',
441
+ label: 'Try Demo',
442
+ icon: <DemoIcon />,
443
+ onClick: () => alert('Opening demo...'),
444
+ priority: 1,
445
+ },
446
+ {
447
+ id: 'github',
448
+ label: 'GitHub',
449
+ icon: <GitHubIcon />,
450
+ onClick: () => alert('Opening GitHub...'),
451
+ priority: 2,
452
+ },
453
+ {
454
+ id: 'install',
455
+ label: 'Install',
456
+ icon: <DownloadIcon />,
457
+ onClick: () => navigator.clipboard.writeText('npm install @qwickapps/react-framework'),
458
+ priority: 3,
459
+ },
460
+ ]}
461
+ height={200}
462
+ />
463
+ }
464
+ footer={
465
+ <Footer
466
+ logo={
467
+ <div style={{
468
+ display: 'flex',
469
+ alignItems: 'center',
470
+ gap: '0.5rem',
471
+ fontWeight: 'bold',
472
+ fontSize: '1.2rem',
473
+ background: 'linear-gradient(45deg, #2196F3, #21CBF3)',
474
+ WebkitBackgroundClip: 'text',
475
+ WebkitTextFillColor: 'transparent'
476
+ }}>
477
+ QwickApps
478
+ </div>
479
+ }
480
+ sections={[
481
+ {
482
+ id: 'framework',
483
+ title: 'Framework',
484
+ items: [
485
+ { id: 'components', label: 'Components', href: '#components' },
486
+ { id: 'theming', label: 'Theming', href: '#theming' },
487
+ { id: 'layout', label: 'Layout System', href: '#layout' },
488
+ { id: 'examples', label: 'Examples', href: '#examples' },
489
+ ],
490
+ },
491
+ {
492
+ id: 'resources',
493
+ title: 'Resources',
494
+ items: [
495
+ { id: 'docs', label: 'Documentation', href: '#docs' },
496
+ { id: 'storybook', label: 'Storybook', href: '#storybook' },
497
+ { id: 'changelog', label: 'Changelog', href: '#changelog' },
498
+ { id: 'migration', label: 'Migration Guide', href: '#migration' },
499
+ ],
500
+ },
501
+ {
502
+ id: 'community',
503
+ title: 'Community',
504
+ items: [
505
+ { id: 'github', label: 'GitHub', href: 'https://github.com/qwickapps', external: true },
506
+ { id: 'discord', label: 'Discord', href: 'https://discord.gg/qwickapps', external: true },
507
+ { id: 'twitter', label: 'Twitter', href: 'https://twitter.com/qwickapps', external: true },
508
+ { id: 'support', label: 'Support', href: 'mailto:support@qwickapps.com' },
509
+ ],
510
+ },
511
+ ]}
512
+ copyright="© 2025 QwickApps. All rights reserved."
513
+ legalText="Proprietary License • Privacy Policy • Terms of Service"
514
+ orientation="horizontal"
515
+ variant="contained"
516
+ />
517
+ }
518
+ variant="fullwidth"
519
+ padding="none"
520
+ >
521
+ <Section padding="large">
522
+ <Content centered maxWidth="large">
523
+ <HeroBlock
524
+ title="Build Faster with QwickApps"
525
+ subtitle="Everything you need to create modern React applications with professional UI components, responsive design, and accessible interfaces."
526
+ actions={[
527
+ {
528
+ label: "Get Started",
529
+ onClick: () => { alert('Get Started clicked'); }
530
+ },
531
+ {
532
+ label: "View Components",
533
+ variant: "outlined",
534
+ onClick: () => { alert('View Components clicked'); }
535
+ }
536
+ ]}
537
+ />
538
+ </Content>
539
+ </Section>
540
+
541
+ <Section padding="large" background="alternate">
542
+ <Content title="✨ What's New in 2025" centered maxWidth="extra-large">
543
+ <FeatureGrid
544
+ columns={3}
545
+ gap="large"
546
+ features={[
547
+ {
548
+ id: 'page-redesign',
549
+ icon: <LayersIcon style={{ fontSize: '3rem', color: 'var(--theme-primary)' }} />,
550
+ title: 'Page Component Redesign',
551
+ description: 'Simplified architecture with optional header and footer props. Clean separation of concerns.',
552
+ },
553
+ {
554
+ id: 'header-components',
555
+ icon: <ComponentsIcon style={{ fontSize: '3rem', color: 'var(--theme-secondary)' }} />,
556
+ title: 'Header Components',
557
+ description: 'CoverImageHeader and PageBannerHeader for flexible page layouts and social media styles.',
558
+ },
559
+ {
560
+ id: 'footer-system',
561
+ icon: <SettingsIcon style={{ fontSize: '3rem', color: 'var(--theme-success)' }} />,
562
+ title: 'Footer System',
563
+ description: 'Comprehensive footer with sections, legal information, and responsive layouts.',
564
+ },
565
+ ]}
566
+ />
567
+ </Content>
568
+ </Section>
569
+
570
+ <Section padding="large">
571
+ <Content title="🚀 Key Features" centered maxWidth="large">
572
+ <GridLayout columns={2} spacing="large">
573
+ <GridCell>
574
+ <FeatureGrid
575
+ columns={1}
576
+ gap="medium"
577
+ features={[
578
+ {
579
+ id: 'theming',
580
+ icon: <PaletteIcon style={{ fontSize: '2rem', color: 'var(--theme-primary)' }} />,
581
+ title: 'Advanced Theming',
582
+ description: 'Dark/light mode with custom color palettes and CSS variable system.',
583
+ },
584
+ {
585
+ id: 'responsive',
586
+ icon: <PhoneIcon style={{ fontSize: '2rem', color: 'var(--theme-secondary)' }} />,
587
+ title: 'Mobile First',
588
+ description: 'Responsive design with Material UI breakpoints and touch-friendly interfaces.',
589
+ },
590
+ {
591
+ id: 'accessibility',
592
+ icon: <AccessibilityIcon style={{ fontSize: '2rem', color: 'var(--theme-success)' }} />,
593
+ title: 'Accessibility',
594
+ description: 'WCAG 2.1 compliant with screen reader support and keyboard navigation.',
595
+ },
596
+ ]}
597
+ />
598
+ </GridCell>
599
+
600
+ <GridCell>
601
+ <FeatureGrid
602
+ columns={1}
603
+ gap="medium"
604
+ features={[
605
+ {
606
+ id: 'typescript',
607
+ icon: <CodeIcon style={{ fontSize: '2rem', color: 'var(--theme-warning)' }} />,
608
+ title: 'TypeScript First',
609
+ description: 'Full type safety with comprehensive interfaces and IntelliSense support.',
610
+ },
611
+ {
612
+ id: 'performance',
613
+ icon: <SpeedIcon style={{ fontSize: '2rem', color: 'var(--theme-error)' }} />,
614
+ title: 'Performance',
615
+ description: 'Optimized components with lazy loading and efficient re-rendering.',
616
+ },
617
+ {
618
+ id: 'secure',
619
+ icon: <SecurityIcon style={{ fontSize: '2rem', color: 'var(--theme-info)' }} />,
620
+ title: 'Secure by Default',
621
+ description: 'Built-in security features and protection against common vulnerabilities.',
622
+ },
623
+ ]}
624
+ />
625
+ </GridCell>
626
+ </GridLayout>
627
+ </Content>
628
+ </Section>
629
+ </Page>
630
+ } />
631
+
632
+ <Route path="/components" element={
633
+ <Page
634
+ header={
635
+ <CoverImageHeader
636
+ title="Component Library"
637
+ subtitle="Explore 50+ production-ready components"
638
+ overline="DOCUMENTATION"
639
+ tags={['Components', 'TypeScript', 'Responsive']}
640
+ />
641
+ }
642
+ >
643
+ <Section padding="large">
644
+ <Content title="Browse by Category" maxWidth="large">
645
+ <FeatureGrid
646
+ columns={3}
647
+ gap="large"
648
+ features={[
649
+ {
650
+ id: 'layout',
651
+ icon: <LayersIcon style={{ fontSize: '2rem' }} />,
652
+ title: 'Layout',
653
+ description: 'Page, Section, GridLayout, Content, FeatureGrid',
654
+ },
655
+ {
656
+ id: 'navigation',
657
+ icon: <ComponentsIcon style={{ fontSize: '2rem' }} />,
658
+ title: 'Navigation',
659
+ description: 'Scaffold, ResponsiveMenu, Footer with responsive behavior',
660
+ },
661
+ {
662
+ id: 'branding',
663
+ icon: <PaletteIcon style={{ fontSize: '2rem' }} />,
664
+ title: 'Branding',
665
+ description: 'Logo, ThemeSwitcher, PaletteSwitcher for brand identity',
666
+ },
667
+ ]}
668
+ />
669
+ </Content>
670
+ </Section>
671
+ </Page>
672
+ } />
673
+
674
+ <Route path="/examples" element={
675
+ <Page
676
+ header={
677
+ <CoverImageHeader
678
+ title="Examples & Templates"
679
+ subtitle="Ready-to-use templates and code examples"
680
+ overline="EXAMPLES"
681
+ />
682
+ }
683
+ >
684
+ <Section padding="large">
685
+ <Content title="Coming Soon" centered>
686
+ <p>Example templates and code samples will be available here.</p>
687
+ </Content>
688
+ </Section>
689
+ </Page>
690
+ } />
691
+
692
+ <Route path="/docs" element={
693
+ <Page
694
+ header={
695
+ <CoverImageHeader
696
+ title="Documentation"
697
+ subtitle="Complete guides and API references"
698
+ overline="DOCUMENTATION"
699
+ />
700
+ }
701
+ >
702
+ <Section padding="large">
703
+ <Content title="Documentation Links" centered>
704
+ <p>Full documentation will be available on our website.</p>
705
+ </Content>
706
+ </Section>
707
+ </Page>
708
+ } />
709
+ </Routes>
710
+ </Scaffold>
711
+ </BrowserRouter>
712
+ </QwickApp>
713
+ ),
714
+ parameters: {
715
+ docs: {
716
+ description: {
717
+ story: 'Complete framework introduction with navigation, header components, and footer. Demonstrates the new Page architecture with flexible headers and footers.',
718
+ },
719
+ },
720
+ },
721
+ };