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