@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,461 @@
1
+ /**
2
+ * QwickApp Component Stories - Complete theme system setup
3
+ *
4
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
5
+ */
6
+
7
+ import { Box, Button, Typography } from '@mui/material';
8
+ import type { Meta, StoryObj } from '@storybook/react';
9
+ import { usePalette } from '../contexts/PaletteContext';
10
+ import { useTheme } from '../contexts/ThemeContext';
11
+ import AccessibilityChecker from '../components/AccessibilityChecker';
12
+ import { Content, FeatureGrid, HeroBlock, Section } from '../components/blocks';
13
+ import Logo from '../components/Logo';
14
+ import PaletteSwitcher from '../components/buttons/PaletteSwitcher';
15
+ import QwickApp from '../components/QwickApp';
16
+ import Scaffold from '../components/Scaffold';
17
+ import ThemeSwitcher from '../components/buttons/ThemeSwitcher';
18
+
19
+ const meta = {
20
+ title: 'Framework/QwickApp',
21
+ component: QwickApp,
22
+ parameters: {
23
+ layout: 'fullscreen',
24
+ docs: {
25
+ description: {
26
+ component: `QwickApp is the easiest way to set up the QwickApps React Framework with complete theme system and component library integration.
27
+
28
+ **Key Features:**
29
+ - **CSS Loading**: Imports all necessary theme system styles
30
+ - **Provider Setup**: Configures ThemeProvider, PaletteProvider, and DimensionsProvider
31
+ - **Component Library**: Access to 50+ production-ready components
32
+ - **Header & Footer System**: Flexible page layout components
33
+ - **Storage Keys**: Uses unique storage keys with your appId
34
+ - **Type Safety**: Full TypeScript support with comprehensive interfaces
35
+ - **Theme Integration**: Automatic theme and palette switching
36
+ - **Scaffolding Support**: Built-in responsive navigation system
37
+
38
+ **Perfect For:**
39
+ - Starting new React applications with comprehensive theming
40
+ - Rapid prototyping with production-ready components
41
+ - Applications requiring consistent design systems
42
+ - Multi-tenant applications with dynamic branding
43
+ - Teams needing standardized UI components
44
+ - Projects requiring dark/light mode switching`,
45
+ },
46
+ },
47
+ },
48
+ tags: ['autodocs'],
49
+ argTypes: {
50
+ appId: {
51
+ description: 'Unique app identifier for localStorage keys',
52
+ control: false, // Disable control since it cannot be changed dynamically
53
+ },
54
+ appName: {
55
+ description: 'Application name for display purposes',
56
+ control: { type: 'text' },
57
+ },
58
+ logo: {
59
+ description: 'Logo component to display',
60
+ control: false,
61
+ },
62
+ children: {
63
+ description: 'Child components to render',
64
+ control: false,
65
+ },
66
+ className: {
67
+ description: 'Additional CSS class name',
68
+ control: false,
69
+ },
70
+ style: {
71
+ description: 'Additional inline styles',
72
+ control: { type: 'object' },
73
+ },
74
+ defaultTheme: {
75
+ description: 'Default theme to use when no user preference exists',
76
+ control: false,
77
+ },
78
+ defaultPalette: {
79
+ description: 'Default palette to use when no user preference exists',
80
+ control: false,
81
+ },
82
+ enableScaffolding: {
83
+ description: 'Enable scaffolding features',
84
+ control: false,
85
+ },
86
+ showAppBar: {
87
+ description: 'Whether to show the app bar',
88
+ control: { type: 'boolean' },
89
+ defaultValue: false,
90
+ },
91
+ appBar: {
92
+ description: 'App bar configuration for scaffolding',
93
+ control: false, // Disable control since it's an object
94
+ },
95
+ navigationItems: {
96
+ description: 'Navigation items for scaffolding',
97
+ control: false, // Disable control since it's an array of objects
98
+ },
99
+ appBarHeight: {
100
+ description: 'Height of the app bar',
101
+ control: { type: 'text' },
102
+ defaultValue: '64px',
103
+ },
104
+ },
105
+ } satisfies Meta<typeof QwickApp>;
106
+
107
+ export default meta;
108
+ type Story = StoryObj<typeof meta>;
109
+
110
+ // Demo component that shows theme system integration
111
+ function ThemeSystemDemo() {
112
+ const { currentTheme, actualThemeMode, setPreferredTheme } = useTheme();
113
+ const { currentPalette, setPreferredPalette, availablePalettes } = usePalette();
114
+
115
+ return (
116
+ <Scaffold
117
+ navigationItems={[]}
118
+ showAppBar={true}
119
+ appBar={{
120
+ title: "QwickApp Demo",
121
+ logo: <Logo name="My App" variant={'on-primary'} size="small" badge="none" />,
122
+ actions: (
123
+ <div style={{ display: 'flex', gap: '8px' }}>
124
+ <ThemeSwitcher />
125
+ <PaletteSwitcher />
126
+ </div>
127
+ ),
128
+ }}
129
+ >
130
+ <Section spacing="spacious">
131
+ <Content
132
+ title="🚀 Welcome to QwickApp!"
133
+ centered
134
+ maxWidth="lg"
135
+ >
136
+ <Typography variant="body1" color="text.secondary">
137
+ This entire demo is wrapped in a single <code>&lt;QwickApp&gt;</code> component.
138
+ No manual provider setup required - everything just works!
139
+ </Typography>
140
+ </Content>
141
+ </Section>
142
+
143
+ <Section background="alternate" spacing="comfortable">
144
+ <Content title="📊 Current Theme System State" centered maxWidth="lg">
145
+ <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(200px, 1fr))', gap: 2, mb: 2 }}>
146
+ <Box>
147
+ <Typography variant="subtitle2" color="text.secondary">
148
+ Theme Mode
149
+ </Typography>
150
+ <Typography variant="body1" color="text.primary">
151
+ {currentTheme} → {actualThemeMode}
152
+ </Typography>
153
+ </Box>
154
+ <Box>
155
+ <Typography variant="subtitle2" color="text.secondary">
156
+ Current Palette
157
+ </Typography>
158
+ <Typography variant="body1" color="text.primary">
159
+ {currentPalette}
160
+ </Typography>
161
+ </Box>
162
+ <Box>
163
+ <Typography variant="subtitle2" color="text.secondary">
164
+ Available Palettes
165
+ </Typography>
166
+ <Typography variant="body1" color="text.primary">
167
+ {availablePalettes.length} palettes
168
+ </Typography>
169
+ </Box>
170
+ </Box>
171
+ </Content>
172
+ </Section>
173
+
174
+ <Section spacing="comfortable">
175
+ <Content
176
+ title="🎮 Interactive Demo"
177
+ centered
178
+ maxWidth="lg"
179
+ actions={[
180
+ { label: "☀️ Light Mode", onClick: () => setPreferredTheme('light'), disabled: actualThemeMode === 'light' },
181
+ { label: "🌙 Dark Mode", onClick: () => setPreferredTheme('dark'), disabled: actualThemeMode === 'dark' },
182
+ { label: "🖥️ System Mode", onClick: () => setPreferredTheme('system'), disabled: currentTheme === 'system' },
183
+ ]}
184
+ >
185
+ <Typography variant="body2" color="text.secondary">
186
+ Try these buttons to see the theme system in action:
187
+ </Typography>
188
+
189
+ <Typography variant="body2" color="text.secondary" sx={{ mt: 2 }}>
190
+ Available palettes:
191
+ </Typography>
192
+ <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 1, justifyContent: 'center', mt: 1 }}>
193
+ {availablePalettes.map((palette) => (
194
+ <Button
195
+ key={palette.id}
196
+ variant={currentPalette === palette.id ? 'contained' : 'outlined'}
197
+ size="small"
198
+ onClick={() => setPreferredPalette(palette.id)}
199
+ >
200
+ {palette.name}
201
+ </Button>
202
+ ))}
203
+ </Box>
204
+ </Content>
205
+ </Section>
206
+
207
+ <Section background="alternate" spacing="comfortable">
208
+ <Content title="🎨 Current Color Palette" centered maxWidth="lg">
209
+ <Box sx={{
210
+ display: 'grid',
211
+ gridTemplateColumns: 'repeat(auto-fit, minmax(120px, 1fr))',
212
+ gap: 2
213
+ }}>
214
+ {[
215
+ { name: 'Primary', color: 'primary.main' },
216
+ { name: 'Secondary', color: 'secondary.main' },
217
+ { name: 'Background', color: 'background.default' },
218
+ { name: 'Surface', color: 'background.paper' },
219
+ { name: 'Success', color: 'success.main' },
220
+ { name: 'Warning', color: 'warning.main' },
221
+ { name: 'Error', color: 'error.main' },
222
+ { name: 'Info', color: 'info.main' },
223
+ ].map(({ name, color }) => (
224
+ <Box key={name} sx={{ textAlign: 'center' }}>
225
+ <Box sx={{
226
+ width: '100%',
227
+ height: 60,
228
+ backgroundColor: color,
229
+ border: color.includes('background') ? '1px solid' : 'none',
230
+ borderColor: 'divider',
231
+ borderRadius: 1,
232
+ mb: 1,
233
+ boxShadow: 1
234
+ }} />
235
+ <Typography variant="caption" color="text.secondary">
236
+ {name}
237
+ </Typography>
238
+ </Box>
239
+ ))}
240
+ </Box>
241
+ </Content>
242
+ </Section>
243
+
244
+ <Section spacing="comfortable">
245
+ <Content title="♿ Accessibility Monitoring" centered maxWidth="lg">
246
+ <Typography variant="body2" sx={{ mb: 2 }} color="text.secondary">
247
+ QwickApp includes automatic accessibility monitoring via the AccessibilityChecker component:
248
+ </Typography>
249
+ <AccessibilityChecker />
250
+ </Content>
251
+ </Section>
252
+ </Scaffold>
253
+ );
254
+ }
255
+
256
+ // Complete App Example Story
257
+ export const CompleteExample: Story = {
258
+ args: {
259
+ appId: 'com.example.qwickapp-demo',
260
+ children: undefined, // Will be overridden by render function
261
+ },
262
+ render: (args) => (
263
+ <Scaffold navigationItems={[]} {...args}>
264
+ <ThemeSystemDemo />
265
+ </Scaffold>
266
+ ),
267
+ parameters: {
268
+ docs: {
269
+ description: {
270
+ story: `This story demonstrates a complete application setup using QwickApp.
271
+
272
+ **Key Features Demonstrated:**
273
+ - Single component setup with automatic provider configuration
274
+ - Theme and palette switching with real-time updates
275
+ - MUI integration with automatic theme synchronization
276
+ - Accessibility monitoring and compliance checking
277
+ - Storage isolation with unique appId
278
+
279
+ **Usage in your app:**
280
+ \`\`\`jsx
281
+ import { QwickApp } from '@qwickapps/react-framework';
282
+
283
+ function App() {
284
+ return (
285
+ <QwickApp appId="com.mycompany.myapp">
286
+ {/* Your entire app goes here */}
287
+ </QwickApp>
288
+ );
289
+ }
290
+ \`\`\``,
291
+ },
292
+ },
293
+ },
294
+ };
295
+
296
+ // Simple Example Story
297
+ export const SimpleExample: Story = {
298
+ args: {
299
+ appId: 'com.example.simple-demo',
300
+ children: undefined, // Will be overridden by render function
301
+ },
302
+ render: (args) => (
303
+ <Scaffold navigationItems={[]} {...args}>
304
+ <Box sx={{ p: 3, textAlign: 'center' }}>
305
+ <Logo name="Simple App" size="large" />
306
+ <Typography variant="h4" sx={{ mt: 2, mb: 3 }}>
307
+ Hello QwickApp! 👋
308
+ </Typography>
309
+ <Typography variant="body1" sx={{ mb: 2 }} color="text.secondary">
310
+ This simple example shows how easy it is to get started.
311
+ Just wrap your content with QwickApp and you're ready to go!
312
+ </Typography>
313
+ <Box sx={{ display: 'flex', gap: 2, justifyContent: 'center', flexWrap: 'wrap' }}>
314
+ <ThemeSwitcher />
315
+ <PaletteSwitcher />
316
+ </Box>
317
+ </Box>
318
+ </Scaffold>
319
+ ),
320
+ parameters: {
321
+ docs: {
322
+ description: {
323
+ story: `The simplest possible QwickApp setup. Perfect for getting started quickly!
324
+
325
+ **This example shows:**
326
+ - Minimal QwickApp setup
327
+ - Automatic theme system initialization
328
+ - Theme and palette switchers working out of the box
329
+ - Clean, semantic HTML structure`,
330
+ },
331
+ },
332
+ },
333
+ };
334
+
335
+ // Storage Isolation Example
336
+ export const StorageIsolation: Story = {
337
+ args: {
338
+ appId: 'com.example.isolated-storage',
339
+ children: undefined, // Will be overridden by render function
340
+ },
341
+ render: (args) => (
342
+ <Scaffold navigationItems={[]} {...args}>
343
+ <Box sx={{ p: 3 }}>
344
+ <Typography variant="h5" gutterBottom>
345
+ 🔒 Storage Isolation Demo
346
+ </Typography>
347
+ <Typography variant="body1" sx={{ mb: 2 }} color="text.secondary">
348
+ This instance uses appId: <code>"{args.appId}"</code>
349
+ </Typography>
350
+ <Typography variant="body2" sx={{ mb: 2 }} color="text.secondary">
351
+ Theme preferences are stored in localStorage with unique keys:
352
+ </Typography>
353
+ <Box sx={{
354
+ p: 2,
355
+ backgroundColor: 'background.paper',
356
+ borderRadius: 1,
357
+ fontFamily: 'monospace',
358
+ fontSize: '0.875rem',
359
+ border: '1px solid',
360
+ borderColor: 'divider'
361
+ }}>
362
+ <div>Theme: {args.appId}.theme</div>
363
+ <div>Palette: {args.appId}.palette</div>
364
+ </Box>
365
+ <Box sx={{ mt: 3, display: 'flex', gap: 2 }}>
366
+ <ThemeSwitcher />
367
+ <PaletteSwitcher />
368
+ </Box>
369
+ </Box>
370
+ </Scaffold>
371
+ ),
372
+ parameters: {
373
+ docs: {
374
+ description: {
375
+ story: `Demonstrates how QwickApp uses the appId to create isolated storage keys.
376
+
377
+ **Benefits:**
378
+ - No conflicts between different applications
379
+ - Clean separation of theme preferences
380
+ - Easy to identify which app stored which preferences
381
+ - Supports multiple QwickApps on the same domain`,
382
+ },
383
+ },
384
+ },
385
+ };
386
+
387
+ // Complete Framework Integration Example
388
+ export const CompleteFrameworkExample: Story = {
389
+ args: {
390
+ appId: 'com.example.complete-framework',
391
+ appName: 'QwickApp Demo',
392
+ enableScaffolding: true,
393
+ showThemeSwitcher: true,
394
+ showPaletteSwitcher: true,
395
+ },
396
+ render: (args) => (
397
+ <QwickApp {...args}>
398
+ <HeroBlock
399
+ title="Complete QwickApp Framework"
400
+ subtitle="Theme system, components, and layout working together seamlessly"
401
+ backgroundGradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
402
+ blockHeight="medium"
403
+ textAlign="center"
404
+ />
405
+
406
+ <Section>
407
+ <Content title="Framework Benefits" centered>
408
+ <FeatureGrid
409
+ columns={2}
410
+ gap="large"
411
+ features={[
412
+ {
413
+ id: 'theme-system',
414
+ title: '🎨 Complete Theme System',
415
+ description: 'Automatic theme and palette management with localStorage persistence and MUI integration.',
416
+ },
417
+ {
418
+ id: 'component-library',
419
+ title: '🧩 Rich Component Library',
420
+ description: '50+ production-ready components with consistent styling and data binding support.',
421
+ },
422
+ {
423
+ id: 'developer-experience',
424
+ title: '🛠️ Great Developer Experience',
425
+ description: 'Simple setup with TypeScript support, comprehensive documentation, and live examples.',
426
+ },
427
+ {
428
+ id: 'responsive-design',
429
+ title: '📱 Mobile-First Design',
430
+ description: 'All components are responsive and work perfectly across all device sizes.',
431
+ },
432
+ ]}
433
+ />
434
+ </Content>
435
+ </Section>
436
+
437
+ <Section background="alternate">
438
+ <Content title="Theme System Demo" centered>
439
+ <Typography variant="body1">
440
+ Try switching themes and palettes using the controls above. All components automatically adapt to your selected theme and color scheme.
441
+ </Typography>
442
+ </Content>
443
+ </Section>
444
+ </QwickApp>
445
+ ),
446
+ decorators: [],
447
+ parameters: {
448
+ docs: {
449
+ description: {
450
+ story: `Demonstrates QwickApp and Scaffold integration - the two core components working together.
451
+
452
+ **Integration Highlights:**
453
+ - QwickApp manages theme system and storage isolation
454
+ - Scaffold provides responsive navigation and app layout
455
+ - Theme switchers in app bar demonstrate real-time updates
456
+ - All layout components automatically inherit theme colors
457
+ - Clean component separation with clear responsibilities`,
458
+ },
459
+ },
460
+ },
461
+ };