@qwickapps/react-framework 1.4.9 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (738) hide show
  1. package/README.md +23 -0
  2. package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts +9 -9
  3. package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +1 -1
  4. package/dist/components/AccessibilityProvider.d.ts +1 -1
  5. package/dist/components/AccessibilityProvider.d.ts.map +1 -1
  6. package/dist/components/ErrorBoundary.d.ts +1 -1
  7. package/dist/components/Html.d.ts +8 -8
  8. package/dist/components/Html.d.ts.map +1 -1
  9. package/dist/components/Logo.d.ts +2 -2
  10. package/dist/components/Logo.d.ts.map +1 -1
  11. package/dist/components/Markdown.d.ts +5 -5
  12. package/dist/components/Markdown.d.ts.map +1 -1
  13. package/dist/components/ProductLogo.d.ts +60 -0
  14. package/dist/components/ProductLogo.d.ts.map +1 -0
  15. package/dist/components/QwickAppsLogo.d.ts +1 -1
  16. package/dist/components/QwickAppsLogo.d.ts.map +1 -1
  17. package/dist/components/ResponsiveMenu.d.ts.map +1 -1
  18. package/dist/components/SafeSpan.d.ts +4 -4
  19. package/dist/components/SafeSpan.d.ts.map +1 -1
  20. package/dist/components/Scaffold.d.ts.map +1 -1
  21. package/dist/components/base/Container.d.ts +3 -2
  22. package/dist/components/base/Container.d.ts.map +1 -1
  23. package/dist/components/base/ModelView.d.ts +16 -16
  24. package/dist/components/base/ModelView.d.ts.map +1 -1
  25. package/dist/components/base/index.d.ts +1 -1
  26. package/dist/components/base/index.d.ts.map +1 -1
  27. package/dist/components/blocks/Article.d.ts +4 -18
  28. package/dist/components/blocks/Article.d.ts.map +1 -1
  29. package/dist/components/blocks/CardListGrid.d.ts +3 -3
  30. package/dist/components/blocks/CardListGrid.d.ts.map +1 -1
  31. package/dist/components/blocks/Code.d.ts +5 -31
  32. package/dist/components/blocks/Code.d.ts.map +1 -1
  33. package/dist/components/blocks/Content.d.ts +2 -17
  34. package/dist/components/blocks/Content.d.ts.map +1 -1
  35. package/dist/components/blocks/CoverImageHeader.d.ts +2 -12
  36. package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -1
  37. package/dist/components/blocks/FeatureCard.d.ts +0 -17
  38. package/dist/components/blocks/FeatureCard.d.ts.map +1 -1
  39. package/dist/components/blocks/FeatureGrid.d.ts.map +1 -1
  40. package/dist/components/blocks/Footer.d.ts +2 -14
  41. package/dist/components/blocks/Footer.d.ts.map +1 -1
  42. package/dist/components/blocks/HeroBlock.d.ts +35 -26
  43. package/dist/components/blocks/HeroBlock.d.ts.map +1 -1
  44. package/dist/components/blocks/Image.d.ts +23 -23
  45. package/dist/components/blocks/Image.d.ts.map +1 -1
  46. package/dist/components/blocks/PageBannerHeader.d.ts +2 -13
  47. package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -1
  48. package/dist/components/blocks/ProductCard.d.ts +0 -9
  49. package/dist/components/blocks/ProductCard.d.ts.map +1 -1
  50. package/dist/components/blocks/Section.d.ts +16 -24
  51. package/dist/components/blocks/Section.d.ts.map +1 -1
  52. package/dist/components/blocks/Text.d.ts +5 -20
  53. package/dist/components/blocks/Text.d.ts.map +1 -1
  54. package/dist/components/buttons/Button.d.ts +19 -23
  55. package/dist/components/buttons/Button.d.ts.map +1 -1
  56. package/dist/components/buttons/PaletteSwitcher.d.ts +2 -2
  57. package/dist/components/buttons/PaletteSwitcher.d.ts.map +1 -1
  58. package/dist/components/buttons/ThemeSwitcher.d.ts +2 -2
  59. package/dist/components/buttons/ThemeSwitcher.d.ts.map +1 -1
  60. package/dist/components/dialogs/Dialog.d.ts +35 -0
  61. package/dist/components/dialogs/Dialog.d.ts.map +1 -0
  62. package/dist/components/dialogs/index.d.ts +8 -0
  63. package/dist/components/dialogs/index.d.ts.map +1 -0
  64. package/dist/components/forms/Captcha.d.ts +55 -0
  65. package/dist/components/forms/Captcha.d.ts.map +1 -0
  66. package/dist/components/forms/FormBlock.d.ts +6 -6
  67. package/dist/components/forms/FormBlock.d.ts.map +1 -1
  68. package/dist/components/forms/FormCheckbox.d.ts +27 -0
  69. package/dist/components/forms/FormCheckbox.d.ts.map +1 -0
  70. package/dist/components/forms/FormField.d.ts +43 -0
  71. package/dist/components/forms/FormField.d.ts.map +1 -0
  72. package/dist/components/forms/FormSelect.d.ts +35 -0
  73. package/dist/components/forms/FormSelect.d.ts.map +1 -0
  74. package/dist/components/forms/index.d.ts +8 -0
  75. package/dist/components/forms/index.d.ts.map +1 -1
  76. package/dist/components/index.d.ts +10 -2
  77. package/dist/components/index.d.ts.map +1 -1
  78. package/dist/components/input/ChoiceInputField.d.ts +13 -19
  79. package/dist/components/input/ChoiceInputField.d.ts.map +1 -1
  80. package/dist/components/input/HtmlInputField.d.ts +16 -17
  81. package/dist/components/input/HtmlInputField.d.ts.map +1 -1
  82. package/dist/components/input/SelectInputField.d.ts +14 -17
  83. package/dist/components/input/SelectInputField.d.ts.map +1 -1
  84. package/dist/components/input/SwitchInputField.d.ts +11 -18
  85. package/dist/components/input/SwitchInputField.d.ts.map +1 -1
  86. package/dist/components/input/TextInputField.d.ts +16 -19
  87. package/dist/components/input/TextInputField.d.ts.map +1 -1
  88. package/dist/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts.map +1 -1
  89. package/dist/components/layout/GridCell.d.ts +18 -19
  90. package/dist/components/layout/GridCell.d.ts.map +1 -1
  91. package/dist/components/layout/GridLayout.d.ts +36 -25
  92. package/dist/components/layout/GridLayout.d.ts.map +1 -1
  93. package/dist/components/menu/MenuItem.d.ts +2 -2
  94. package/dist/components/menu/MenuItem.d.ts.map +1 -1
  95. package/dist/components/pages/FormPage.d.ts.map +1 -1
  96. package/dist/components/pages/Page.d.ts +1 -1
  97. package/dist/components/pages/Page.d.ts.map +1 -1
  98. package/dist/components/shared/createSerializableView.d.ts +22 -10
  99. package/dist/components/shared/createSerializableView.d.ts.map +1 -1
  100. package/dist/components/shared/viewProps.d.ts +3 -3
  101. package/dist/components/shared/viewProps.d.ts.map +1 -1
  102. package/dist/config/AppConfig.d.ts +2 -2
  103. package/dist/config/AppConfig.d.ts.map +1 -1
  104. package/dist/config/types.d.ts +1 -1
  105. package/dist/config/types.d.ts.map +1 -1
  106. package/dist/contexts/DataContext.d.ts +3 -3
  107. package/dist/contexts/DataContext.d.ts.map +1 -1
  108. package/dist/contexts/PaletteContext.d.ts.map +1 -1
  109. package/dist/contexts/ThemeContext.d.ts.map +1 -1
  110. package/dist/hooks/useDataBinding.d.ts +2 -2
  111. package/dist/hooks/useDataBinding.d.ts.map +1 -1
  112. package/dist/hooks/usePrintMode.d.ts +2 -2
  113. package/dist/hooks/usePrintMode.d.ts.map +1 -1
  114. package/dist/index.css +1 -1
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.esm.css +1 -1
  117. package/dist/index.esm.js +4143 -2318
  118. package/dist/index.js +4169 -2315
  119. package/dist/palettes/manifest.json +90 -0
  120. package/dist/palettes/palette-autumn.1.4.9.min.css +1 -0
  121. package/dist/palettes/palette-autumn.1.5.0.css +172 -0
  122. package/dist/palettes/palette-autumn.1.5.0.min.css +1 -0
  123. package/dist/palettes/palette-autumn.1.5.1.css +172 -0
  124. package/dist/palettes/palette-autumn.1.5.1.min.css +1 -0
  125. package/dist/palettes/palette-autumn.latest.css +172 -0
  126. package/dist/palettes/palette-autumn.latest.min.css +1 -0
  127. package/dist/palettes/palette-cosmic.1.4.9.min.css +1 -0
  128. package/dist/palettes/palette-cosmic.1.5.0.css +172 -0
  129. package/dist/palettes/palette-cosmic.1.5.0.min.css +1 -0
  130. package/dist/palettes/palette-cosmic.1.5.1.css +172 -0
  131. package/dist/palettes/palette-cosmic.1.5.1.min.css +1 -0
  132. package/dist/palettes/palette-cosmic.latest.css +172 -0
  133. package/dist/palettes/palette-cosmic.latest.min.css +1 -0
  134. package/dist/palettes/palette-default.1.4.9.min.css +1 -0
  135. package/dist/palettes/palette-default.1.5.0.css +178 -0
  136. package/dist/palettes/palette-default.1.5.0.min.css +1 -0
  137. package/dist/palettes/palette-default.1.5.1.css +178 -0
  138. package/dist/palettes/palette-default.1.5.1.min.css +1 -0
  139. package/dist/palettes/palette-default.latest.css +178 -0
  140. package/dist/palettes/palette-default.latest.min.css +1 -0
  141. package/dist/palettes/palette-ocean.1.4.9.min.css +1 -0
  142. package/dist/palettes/palette-ocean.1.5.0.css +172 -0
  143. package/dist/palettes/palette-ocean.1.5.0.min.css +1 -0
  144. package/dist/palettes/palette-ocean.1.5.1.css +172 -0
  145. package/dist/palettes/palette-ocean.1.5.1.min.css +1 -0
  146. package/dist/palettes/palette-ocean.latest.css +172 -0
  147. package/dist/palettes/palette-ocean.latest.min.css +1 -0
  148. package/dist/palettes/palette-spring.1.4.9.min.css +1 -0
  149. package/dist/palettes/palette-spring.1.5.0.css +160 -0
  150. package/dist/palettes/palette-spring.1.5.0.min.css +1 -0
  151. package/dist/palettes/palette-spring.1.5.1.css +160 -0
  152. package/dist/palettes/palette-spring.1.5.1.min.css +1 -0
  153. package/dist/palettes/palette-spring.latest.css +160 -0
  154. package/dist/palettes/palette-spring.latest.min.css +1 -0
  155. package/dist/palettes/palette-winter.1.4.9.min.css +1 -0
  156. package/dist/palettes/palette-winter.1.5.0.css +172 -0
  157. package/dist/palettes/palette-winter.1.5.0.min.css +1 -0
  158. package/dist/palettes/palette-winter.1.5.1.css +172 -0
  159. package/dist/palettes/palette-winter.1.5.1.min.css +1 -0
  160. package/dist/palettes/palette-winter.latest.css +172 -0
  161. package/dist/palettes/palette-winter.latest.min.css +1 -0
  162. package/dist/schemas/ButtonSchema.d.ts +5 -2
  163. package/dist/schemas/ButtonSchema.d.ts.map +1 -1
  164. package/dist/schemas/CardListGridSchema.d.ts +4 -4
  165. package/dist/schemas/CardListGridSchema.d.ts.map +1 -1
  166. package/dist/schemas/ChoiceInputFieldSchema.d.ts +2 -2
  167. package/dist/schemas/ChoiceInputFieldSchema.d.ts.map +1 -1
  168. package/dist/schemas/CodeSchema.d.ts +1 -2
  169. package/dist/schemas/CodeSchema.d.ts.map +1 -1
  170. package/dist/schemas/FormBlockSchema.d.ts +2 -2
  171. package/dist/schemas/FormBlockSchema.d.ts.map +1 -1
  172. package/dist/schemas/GridCellSchema.d.ts +2 -4
  173. package/dist/schemas/GridCellSchema.d.ts.map +1 -1
  174. package/dist/schemas/GridLayoutSchema.d.ts +3 -5
  175. package/dist/schemas/GridLayoutSchema.d.ts.map +1 -1
  176. package/dist/schemas/HeroBlockSchema.d.ts +2 -2
  177. package/dist/schemas/HeroBlockSchema.d.ts.map +1 -1
  178. package/dist/schemas/HtmlInputFieldSchema.d.ts +2 -2
  179. package/dist/schemas/HtmlInputFieldSchema.d.ts.map +1 -1
  180. package/dist/schemas/ImageSchema.d.ts +2 -2
  181. package/dist/schemas/ImageSchema.d.ts.map +1 -1
  182. package/dist/schemas/SectionSchema.d.ts +2 -4
  183. package/dist/schemas/SectionSchema.d.ts.map +1 -1
  184. package/dist/schemas/SelectInputFieldSchema.d.ts +2 -2
  185. package/dist/schemas/SelectInputFieldSchema.d.ts.map +1 -1
  186. package/dist/schemas/SwitchInputFieldSchema.d.ts +2 -2
  187. package/dist/schemas/SwitchInputFieldSchema.d.ts.map +1 -1
  188. package/dist/schemas/TextInputFieldSchema.d.ts +2 -2
  189. package/dist/schemas/TextInputFieldSchema.d.ts.map +1 -1
  190. package/dist/schemas/ViewSchema.d.ts +8 -7
  191. package/dist/schemas/ViewSchema.d.ts.map +1 -1
  192. package/dist/schemas/transformers/ComponentTransformer.d.ts +2 -2
  193. package/dist/schemas/transformers/ComponentTransformer.d.ts.map +1 -1
  194. package/dist/schemas/transformers/ReactNodeTransformer.d.ts +2 -2
  195. package/dist/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -1
  196. package/dist/schemas/transformers/registry.d.ts +0 -7
  197. package/dist/schemas/transformers/registry.d.ts.map +1 -1
  198. package/dist/schemas/types/Serializable.d.ts +3 -3
  199. package/dist/schemas/types/Serializable.d.ts.map +1 -1
  200. package/dist/stories/_templates/SerializationTemplate.d.ts.map +1 -0
  201. package/dist/types/CollapsibleLayout.d.ts +3 -3
  202. package/dist/types/CollapsibleLayout.d.ts.map +1 -1
  203. package/dist/types/ContentProxy.d.ts +4 -4
  204. package/dist/types/ContentProxy.d.ts.map +1 -1
  205. package/dist/types/DataTypes.d.ts +4 -4
  206. package/dist/types/DataTypes.d.ts.map +1 -1
  207. package/dist/types/TemplateProvider.d.ts +1 -1
  208. package/dist/types/TemplateProvider.d.ts.map +1 -1
  209. package/dist/types/TemplateResolver.d.ts +1 -1
  210. package/dist/types/TemplateResolver.d.ts.map +1 -1
  211. package/dist/utils/htmlTransform.d.ts +1 -1
  212. package/dist/utils/htmlTransform.d.ts.map +1 -1
  213. package/dist/utils/iconMap.d.ts +48 -0
  214. package/dist/utils/iconMap.d.ts.map +1 -0
  215. package/dist/utils/index.d.ts +3 -0
  216. package/dist/utils/index.d.ts.map +1 -1
  217. package/dist/utils/logger.d.ts +11 -7
  218. package/dist/utils/logger.d.ts.map +1 -1
  219. package/dist/utils/paletteLoader.d.ts +34 -0
  220. package/dist/utils/paletteLoader.d.ts.map +1 -0
  221. package/dist/utils/paletteManifest.d.ts +51 -0
  222. package/dist/utils/paletteManifest.d.ts.map +1 -0
  223. package/dist/utils/paletteUtils.d.ts.map +1 -1
  224. package/dist/utils/reactUtils.d.ts +12 -6
  225. package/dist/utils/reactUtils.d.ts.map +1 -1
  226. package/dist/utils/spacing.d.ts +2 -2
  227. package/dist/utils/spacing.d.ts.map +1 -1
  228. package/dist/utils/themePerformanceMonitor.d.ts.map +1 -1
  229. package/dist/utils/themeUtils.d.ts.map +1 -1
  230. package/package.json +20 -9
  231. package/scripts/build-palettes.cjs +120 -0
  232. package/src/__tests__/components/Article.test.tsx +1 -1
  233. package/src/__tests__/components/Breadcrumbs.test.tsx +2 -2
  234. package/src/__tests__/components/Button.test.tsx +3 -3
  235. package/src/__tests__/components/CardListGrid.test.tsx +5 -5
  236. package/src/__tests__/components/ChoiceInputField.test.tsx +2 -2
  237. package/src/__tests__/components/Code.test.tsx +2 -2
  238. package/src/__tests__/components/Content.integration.test.tsx +1 -1
  239. package/src/__tests__/components/Content.test.tsx +5 -5
  240. package/src/__tests__/components/CoverImageHeader.test.tsx +3 -3
  241. package/src/__tests__/components/FeatureCard.integration.test.tsx +1 -1
  242. package/src/__tests__/components/FeatureGrid.integration.test.tsx +1 -1
  243. package/src/__tests__/components/FeatureGrid.test.tsx +3 -3
  244. package/src/__tests__/components/Footer.test.tsx +3 -3
  245. package/src/__tests__/components/FormBlock.test.tsx +2 -2
  246. package/src/__tests__/components/HeroBlock.integration.test.tsx +1 -1
  247. package/src/__tests__/components/HeroBlock.test.tsx +4 -4
  248. package/src/__tests__/components/HtmlInputField.test.tsx +8 -8
  249. package/src/__tests__/components/PageBannerHeader.test.tsx +7 -7
  250. package/src/__tests__/components/PaletteSwitcher.test.tsx +3 -3
  251. package/src/__tests__/components/ProductCard.test.tsx +1 -1
  252. package/src/__tests__/components/Section.integration.test.tsx +1 -1
  253. package/src/__tests__/components/Section.test.tsx +1 -1
  254. package/src/__tests__/components/SelectInputField.test.tsx +2 -2
  255. package/src/__tests__/components/TextInputField.test.tsx +4 -4
  256. package/src/__tests__/components/ThemeSwitcher.test.tsx +3 -3
  257. package/src/__tests__/components/base/Container.test.tsx +22 -21
  258. package/src/__tests__/components/blocks/Code.performance.test.tsx +10 -10
  259. package/src/__tests__/components/blocks/Code.serialization.test.tsx +9 -9
  260. package/src/__tests__/components/blocks/HeroBlock.serialization.test.tsx +2 -3
  261. package/src/__tests__/components/blocks/Image.serialization.test.tsx +8 -7
  262. package/src/__tests__/components/blocks/Section.serialization.test.tsx +8 -8
  263. package/src/__tests__/components/blocks/Text.performance.test.tsx +5 -5
  264. package/src/__tests__/components/blocks/Text.serialization.test.tsx +9 -9
  265. package/src/__tests__/components/buttons/Button.serialization.test.tsx +4 -4
  266. package/src/__tests__/components/input/FormComponents.serialization.test.tsx +9 -9
  267. package/src/__tests__/components/input/SelectInputField.serialization.test.tsx +16 -18
  268. package/src/__tests__/components/input/TextInputField.serialization.test.tsx +9 -9
  269. package/src/__tests__/components/layout/CollapsibleLayout.test.tsx +5 -9
  270. package/src/__tests__/components/layout/GridCell.serialization.test.tsx +5 -5
  271. package/src/__tests__/components/layout/GridLayout.serialization.test.tsx +5 -5
  272. package/src/__tests__/hooks/usePrintMode.test.ts +1 -0
  273. package/src/__tests__/schemas/builders.test.ts +2 -2
  274. package/src/__tests__/schemas/transformers/ComponentSerializationPatterns.test.tsx +28 -28
  275. package/src/__tests__/schemas/transformers/ComponentTransformer.htmlPatterns.test.ts +5 -5
  276. package/src/__tests__/schemas/transformers/ComponentTransformer.test.ts +11 -11
  277. package/src/__tests__/schemas/transformers/CrossBrowserCompatibility.test.ts +10 -10
  278. package/src/__tests__/schemas/transformers/MockSerializableComponent.ts +15 -15
  279. package/src/__tests__/schemas/transformers/RealWorldScenarios.test.tsx +19 -19
  280. package/src/__tests__/schemas/transformers/SerializationErrorHandling.test.ts +15 -15
  281. package/src/__tests__/schemas/transformers/SerializationIntegration.test.tsx +19 -21
  282. package/src/__tests__/schemas/transformers/SerializationPerformance.test.ts +15 -15
  283. package/src/__tests__/schemas/transformers/TestAutomation.test.ts +3 -3
  284. package/src/__tests__/schemas/transformers/nested-serialization.test.tsx +1 -1
  285. package/src/__tests__/schemas/transformers/round-trip-component-serialization.test.tsx +10 -10
  286. package/src/__tests__/utils/optional-logging.test.ts +3 -3
  287. package/src/components/AccessibilityProvider.tsx +4 -2
  288. package/src/components/ErrorBoundary.tsx +1 -1
  289. package/src/components/Html.tsx +13 -16
  290. package/src/components/Logo.tsx +42 -29
  291. package/src/components/Markdown.tsx +9 -9
  292. package/src/components/ProductLogo.tsx +118 -0
  293. package/src/components/QwickApp.css +37 -1060
  294. package/src/components/QwickApp.tsx +1 -1
  295. package/src/components/QwickAppsLogo.tsx +1 -1
  296. package/src/components/ResponsiveMenu.tsx +1 -1
  297. package/src/components/SafeSpan.tsx +8 -8
  298. package/src/components/Scaffold.css +11 -1
  299. package/src/components/Scaffold.tsx +55 -25
  300. package/src/components/base/Container.tsx +2 -2
  301. package/src/components/base/ModelView.tsx +28 -27
  302. package/src/components/base/index.ts +1 -1
  303. package/src/components/blocks/Article.tsx +213 -69
  304. package/src/components/blocks/CardListGrid.tsx +18 -14
  305. package/src/components/blocks/Code.tsx +18 -13
  306. package/src/components/blocks/Content.tsx +15 -10
  307. package/src/components/blocks/CoverImageHeader.tsx +14 -9
  308. package/src/components/blocks/FeatureCard.tsx +16 -11
  309. package/src/components/blocks/FeatureGrid.tsx +13 -8
  310. package/src/components/blocks/Footer.tsx +25 -16
  311. package/src/components/blocks/HeroBlock.tsx +12 -13
  312. package/src/components/blocks/Image.tsx +16 -8
  313. package/src/components/blocks/PageBannerHeader.tsx +15 -11
  314. package/src/components/blocks/ProductCard.tsx +32 -25
  315. package/src/components/blocks/Section.tsx +21 -13
  316. package/src/components/blocks/Text.tsx +26 -11
  317. package/src/components/buttons/Button.tsx +22 -118
  318. package/src/components/buttons/PaletteSwitcher.tsx +11 -8
  319. package/src/components/buttons/ThemeSwitcher.tsx +20 -16
  320. package/src/components/dialogs/Dialog.tsx +126 -0
  321. package/src/components/dialogs/index.ts +15 -0
  322. package/src/components/forms/Captcha.tsx +291 -0
  323. package/src/components/forms/FormBlock.tsx +22 -15
  324. package/src/components/forms/FormCheckbox.tsx +116 -0
  325. package/src/components/forms/FormField.tsx +180 -0
  326. package/src/components/forms/FormSelect.tsx +140 -0
  327. package/src/components/forms/index.ts +13 -1
  328. package/src/components/index.ts +13 -2
  329. package/src/components/input/ChoiceInputField.tsx +1 -2
  330. package/src/components/input/HtmlInputField.tsx +2 -3
  331. package/src/components/input/SelectInputField.tsx +31 -5
  332. package/src/components/input/SwitchInputField.tsx +3 -4
  333. package/src/components/input/TextField.tsx +2 -2
  334. package/src/components/input/TextInputField.tsx +32 -6
  335. package/src/components/layout/CollapsibleLayout/CollapsibleLayout.tsx +13 -13
  336. package/src/components/layout/GridCell.tsx +10 -9
  337. package/src/components/layout/GridCellWrapper.tsx +1 -1
  338. package/src/components/layout/GridLayout.tsx +29 -32
  339. package/src/components/pages/FormPage.tsx +0 -1
  340. package/src/components/pages/Page.tsx +2 -2
  341. package/src/components/shared/createSerializableView.tsx +24 -23
  342. package/src/components/shared/viewProps.ts +11 -11
  343. package/src/config/AppConfig.ts +2 -2
  344. package/src/config/__tests__/AppConfig.test.ts +3 -3
  345. package/src/config/__tests__/AppConfigBuilder.test.ts +10 -11
  346. package/src/config/types.ts +1 -1
  347. package/src/contexts/DataContext.tsx +58 -52
  348. package/src/contexts/PaletteContext.tsx +22 -9
  349. package/src/contexts/PrintModeContext.tsx +4 -4
  350. package/src/contexts/ThemeContext.tsx +2 -1
  351. package/src/hooks/useBaseProps.ts +10 -10
  352. package/src/hooks/useDataBinding.ts +15 -18
  353. package/src/hooks/usePrintMode.ts +3 -3
  354. package/src/index.ts +2 -0
  355. package/src/palettes/manifest.json +72 -0
  356. package/src/palettes/manifest.schema.json +74 -0
  357. package/src/schemas/CardListGridSchema.ts +3 -3
  358. package/src/schemas/CodeSchema.ts +0 -1
  359. package/src/schemas/FeatureGridSchema.ts +1 -1
  360. package/src/schemas/FormBlockSchema.ts +1 -1
  361. package/src/schemas/GridCellSchema.ts +0 -1
  362. package/src/schemas/GridLayoutSchema.ts +0 -1
  363. package/src/schemas/SectionSchema.ts +0 -1
  364. package/src/schemas/ViewSchema.ts +6 -6
  365. package/src/schemas/transformers/ComponentTransformer.ts +37 -20
  366. package/src/schemas/transformers/ReactNodeTransformer.ts +18 -16
  367. package/src/schemas/transformers/registry.ts +28 -24
  368. package/src/schemas/types/Serializable.ts +3 -3
  369. package/src/setupTests.js +9 -0
  370. package/src/stories/AccessibilityProvider.stories.tsx +0 -1
  371. package/src/stories/CardListGrid.stories.tsx +1 -1
  372. package/src/stories/Code.stories.tsx +2 -3
  373. package/src/stories/CollapsibleLayout.stories.tsx +41 -37
  374. package/src/stories/Container.stories.tsx +1 -2
  375. package/src/stories/DataBinding.advanced.stories.tsx +15 -9
  376. package/src/stories/DataProvider.stories.tsx +33 -16
  377. package/src/stories/ErrorBoundary.stories.tsx +28 -26
  378. package/src/stories/FeatureGrid.stories.tsx +0 -1
  379. package/src/stories/FormBlock.stories.tsx +8 -8
  380. package/src/stories/FormComponents.stories.tsx +15 -11
  381. package/src/stories/GridCell.stories.tsx +5 -5
  382. package/src/stories/GridLayout.stories.tsx +5 -5
  383. package/src/stories/Image.stories.tsx +5 -7
  384. package/src/stories/Introduction.stories.tsx +0 -1
  385. package/src/stories/ModelView.stories.tsx +7 -7
  386. package/src/stories/SafeSpan.stories.tsx +7 -3
  387. package/src/stories/Section.stories.tsx +2 -2
  388. package/src/stories/Text.stories.tsx +1 -3
  389. package/src/stories/_templates/SerializationTemplate.tsx +0 -1
  390. package/src/templates/TemplateResolver.ts +2 -2
  391. package/src/types/CollapsibleLayout.ts +2 -2
  392. package/src/types/ContentProxy.ts +6 -6
  393. package/src/types/DataTypes.ts +4 -4
  394. package/src/types/TemplateProvider.ts +1 -1
  395. package/src/types/TemplateResolver.ts +1 -1
  396. package/src/utils/htmlTransform.tsx +17 -11
  397. package/src/utils/iconMap.tsx +244 -0
  398. package/src/utils/index.ts +4 -1
  399. package/src/utils/logger.ts +20 -14
  400. package/src/utils/paletteLoader.ts +218 -0
  401. package/src/utils/paletteManifest.ts +268 -0
  402. package/src/utils/paletteUtils.ts +19 -1
  403. package/src/utils/reactUtils.tsx +34 -33
  404. package/src/utils/spacing.ts +16 -17
  405. package/src/utils/themePerformanceMonitor.js +14 -6
  406. package/src/utils/themeUtils.ts +17 -2
  407. package/dist/components/base/ContainerView.d.ts +0 -65
  408. package/dist/components/base/ContainerView.d.ts.map +0 -1
  409. package/dist/components/blocks/Code-factory.d.ts +0 -22
  410. package/dist/components/blocks/Code-factory.d.ts.map +0 -1
  411. package/dist/components/blocks/Code-old.d.ts +0 -31
  412. package/dist/components/blocks/Code-old.d.ts.map +0 -1
  413. package/dist/qa/ConsoleWarningTest.d.ts +0 -5
  414. package/dist/qa/ConsoleWarningTest.d.ts.map +0 -1
  415. package/dist/qa/StorageKeyTest.d.ts +0 -6
  416. package/dist/qa/StorageKeyTest.d.ts.map +0 -1
  417. package/dist/qa/ThemeStorageKeyTest.d.ts +0 -6
  418. package/dist/qa/ThemeStorageKeyTest.d.ts.map +0 -1
  419. package/dist/schemas/ViewModelSchema.d.ts +0 -63
  420. package/dist/schemas/ViewModelSchema.d.ts.map +0 -1
  421. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts +0 -66
  422. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts.map +0 -1
  423. package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts +0 -66
  424. package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +0 -1
  425. package/dist/src/components/AccessibilityChecker.d.ts +0 -12
  426. package/dist/src/components/AccessibilityChecker.d.ts.map +0 -1
  427. package/dist/src/components/AccessibilityProvider.d.ts +0 -64
  428. package/dist/src/components/AccessibilityProvider.d.ts.map +0 -1
  429. package/dist/src/components/Breadcrumbs.d.ts +0 -39
  430. package/dist/src/components/Breadcrumbs.d.ts.map +0 -1
  431. package/dist/src/components/ErrorBoundary.d.ts +0 -46
  432. package/dist/src/components/ErrorBoundary.d.ts.map +0 -1
  433. package/dist/src/components/Html.d.ts +0 -58
  434. package/dist/src/components/Html.d.ts.map +0 -1
  435. package/dist/src/components/Logo.d.ts +0 -56
  436. package/dist/src/components/Logo.d.ts.map +0 -1
  437. package/dist/src/components/Markdown.d.ts +0 -51
  438. package/dist/src/components/Markdown.d.ts.map +0 -1
  439. package/dist/src/components/QwickApp.d.ts +0 -69
  440. package/dist/src/components/QwickApp.d.ts.map +0 -1
  441. package/dist/src/components/QwickAppsLogo.d.ts +0 -25
  442. package/dist/src/components/QwickAppsLogo.d.ts.map +0 -1
  443. package/dist/src/components/QwickIcon.d.ts +0 -23
  444. package/dist/src/components/QwickIcon.d.ts.map +0 -1
  445. package/dist/src/components/ResponsiveMenu.d.ts +0 -38
  446. package/dist/src/components/ResponsiveMenu.d.ts.map +0 -1
  447. package/dist/src/components/SafeSpan.d.ts +0 -29
  448. package/dist/src/components/SafeSpan.d.ts.map +0 -1
  449. package/dist/src/components/Scaffold.d.ts +0 -57
  450. package/dist/src/components/Scaffold.d.ts.map +0 -1
  451. package/dist/src/components/base/Container.d.ts +0 -33
  452. package/dist/src/components/base/Container.d.ts.map +0 -1
  453. package/dist/src/components/base/ModelView.d.ts +0 -92
  454. package/dist/src/components/base/ModelView.d.ts.map +0 -1
  455. package/dist/src/components/base/index.d.ts +0 -12
  456. package/dist/src/components/base/index.d.ts.map +0 -1
  457. package/dist/src/components/blocks/Article.d.ts +0 -32
  458. package/dist/src/components/blocks/Article.d.ts.map +0 -1
  459. package/dist/src/components/blocks/CardListGrid.d.ts +0 -23
  460. package/dist/src/components/blocks/CardListGrid.d.ts.map +0 -1
  461. package/dist/src/components/blocks/Code.d.ts +0 -37
  462. package/dist/src/components/blocks/Code.d.ts.map +0 -1
  463. package/dist/src/components/blocks/Content.d.ts +0 -24
  464. package/dist/src/components/blocks/Content.d.ts.map +0 -1
  465. package/dist/src/components/blocks/CoverImageHeader.d.ts +0 -44
  466. package/dist/src/components/blocks/CoverImageHeader.d.ts.map +0 -1
  467. package/dist/src/components/blocks/FeatureCard.d.ts +0 -66
  468. package/dist/src/components/blocks/FeatureCard.d.ts.map +0 -1
  469. package/dist/src/components/blocks/FeatureGrid.d.ts +0 -48
  470. package/dist/src/components/blocks/FeatureGrid.d.ts.map +0 -1
  471. package/dist/src/components/blocks/Footer.d.ts +0 -56
  472. package/dist/src/components/blocks/Footer.d.ts.map +0 -1
  473. package/dist/src/components/blocks/HeroBlock.d.ts +0 -55
  474. package/dist/src/components/blocks/HeroBlock.d.ts.map +0 -1
  475. package/dist/src/components/blocks/Image.d.ts +0 -40
  476. package/dist/src/components/blocks/Image.d.ts.map +0 -1
  477. package/dist/src/components/blocks/PageBannerHeader.d.ts +0 -30
  478. package/dist/src/components/blocks/PageBannerHeader.d.ts.map +0 -1
  479. package/dist/src/components/blocks/ProductCard.d.ts +0 -57
  480. package/dist/src/components/blocks/ProductCard.d.ts.map +0 -1
  481. package/dist/src/components/blocks/Section.d.ts +0 -45
  482. package/dist/src/components/blocks/Section.d.ts.map +0 -1
  483. package/dist/src/components/blocks/Text.d.ts +0 -34
  484. package/dist/src/components/blocks/Text.d.ts.map +0 -1
  485. package/dist/src/components/blocks/index.d.ts +0 -41
  486. package/dist/src/components/blocks/index.d.ts.map +0 -1
  487. package/dist/src/components/buttons/Button.d.ts +0 -57
  488. package/dist/src/components/buttons/Button.d.ts.map +0 -1
  489. package/dist/src/components/buttons/PaletteSwitcher.d.ts +0 -24
  490. package/dist/src/components/buttons/PaletteSwitcher.d.ts.map +0 -1
  491. package/dist/src/components/buttons/ThemeSwitcher.d.ts +0 -24
  492. package/dist/src/components/buttons/ThemeSwitcher.d.ts.map +0 -1
  493. package/dist/src/components/buttons/index.d.ts +0 -11
  494. package/dist/src/components/buttons/index.d.ts.map +0 -1
  495. package/dist/src/components/forms/FormBlock.d.ts +0 -51
  496. package/dist/src/components/forms/FormBlock.d.ts.map +0 -1
  497. package/dist/src/components/forms/index.d.ts +0 -8
  498. package/dist/src/components/forms/index.d.ts.map +0 -1
  499. package/dist/src/components/index.d.ts +0 -41
  500. package/dist/src/components/index.d.ts.map +0 -1
  501. package/dist/src/components/input/ChoiceInputField.d.ts +0 -29
  502. package/dist/src/components/input/ChoiceInputField.d.ts.map +0 -1
  503. package/dist/src/components/input/HtmlInputField.d.ts +0 -33
  504. package/dist/src/components/input/HtmlInputField.d.ts.map +0 -1
  505. package/dist/src/components/input/SelectInputField.d.ts +0 -31
  506. package/dist/src/components/input/SelectInputField.d.ts.map +0 -1
  507. package/dist/src/components/input/SwitchInputField.d.ts +0 -27
  508. package/dist/src/components/input/SwitchInputField.d.ts.map +0 -1
  509. package/dist/src/components/input/TextField.d.ts +0 -18
  510. package/dist/src/components/input/TextField.d.ts.map +0 -1
  511. package/dist/src/components/input/TextInputField.d.ts +0 -34
  512. package/dist/src/components/input/TextInputField.d.ts.map +0 -1
  513. package/dist/src/components/input/index.d.ts +0 -19
  514. package/dist/src/components/input/index.d.ts.map +0 -1
  515. package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts +0 -34
  516. package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts.map +0 -1
  517. package/dist/src/components/layout/CollapsibleLayout/index.d.ts +0 -9
  518. package/dist/src/components/layout/CollapsibleLayout/index.d.ts.map +0 -1
  519. package/dist/src/components/layout/GridCell.d.ts +0 -32
  520. package/dist/src/components/layout/GridCell.d.ts.map +0 -1
  521. package/dist/src/components/layout/GridCellWrapper.d.ts +0 -46
  522. package/dist/src/components/layout/GridCellWrapper.d.ts.map +0 -1
  523. package/dist/src/components/layout/GridLayout.d.ts +0 -50
  524. package/dist/src/components/layout/GridLayout.d.ts.map +0 -1
  525. package/dist/src/components/layout/index.d.ts +0 -14
  526. package/dist/src/components/layout/index.d.ts.map +0 -1
  527. package/dist/src/components/menu/Menu.d.ts +0 -1
  528. package/dist/src/components/menu/Menu.d.ts.map +0 -1
  529. package/dist/src/components/menu/MenuItem.d.ts +0 -31
  530. package/dist/src/components/menu/MenuItem.d.ts.map +0 -1
  531. package/dist/src/components/menu/index.d.ts +0 -7
  532. package/dist/src/components/menu/index.d.ts.map +0 -1
  533. package/dist/src/components/pages/FormPage.d.ts +0 -66
  534. package/dist/src/components/pages/FormPage.d.ts.map +0 -1
  535. package/dist/src/components/pages/Page.d.ts +0 -68
  536. package/dist/src/components/pages/Page.d.ts.map +0 -1
  537. package/dist/src/components/pages/index.d.ts +0 -10
  538. package/dist/src/components/pages/index.d.ts.map +0 -1
  539. package/dist/src/components/shared/createSerializableView.d.ts +0 -81
  540. package/dist/src/components/shared/createSerializableView.d.ts.map +0 -1
  541. package/dist/src/components/shared/viewProps.d.ts +0 -37
  542. package/dist/src/components/shared/viewProps.d.ts.map +0 -1
  543. package/dist/src/config/AppConfig.d.ts +0 -49
  544. package/dist/src/config/AppConfig.d.ts.map +0 -1
  545. package/dist/src/config/AppConfigBuilder.d.ts +0 -75
  546. package/dist/src/config/AppConfigBuilder.d.ts.map +0 -1
  547. package/dist/src/config/index.d.ts +0 -13
  548. package/dist/src/config/index.d.ts.map +0 -1
  549. package/dist/src/config/types.d.ts +0 -130
  550. package/dist/src/config/types.d.ts.map +0 -1
  551. package/dist/src/config.d.ts +0 -15
  552. package/dist/src/config.d.ts.map +0 -1
  553. package/dist/src/contexts/DataContext.d.ts +0 -139
  554. package/dist/src/contexts/DataContext.d.ts.map +0 -1
  555. package/dist/src/contexts/DimensionsContext.d.ts +0 -42
  556. package/dist/src/contexts/DimensionsContext.d.ts.map +0 -1
  557. package/dist/src/contexts/PaletteContext.d.ts +0 -53
  558. package/dist/src/contexts/PaletteContext.d.ts.map +0 -1
  559. package/dist/src/contexts/PrintModeContext.d.ts +0 -27
  560. package/dist/src/contexts/PrintModeContext.d.ts.map +0 -1
  561. package/dist/src/contexts/QwickAppContext.d.ts +0 -71
  562. package/dist/src/contexts/QwickAppContext.d.ts.map +0 -1
  563. package/dist/src/contexts/ThemeContext.d.ts +0 -65
  564. package/dist/src/contexts/ThemeContext.d.ts.map +0 -1
  565. package/dist/src/contexts/index.d.ts +0 -11
  566. package/dist/src/contexts/index.d.ts.map +0 -1
  567. package/dist/src/hooks/index.d.ts +0 -12
  568. package/dist/src/hooks/index.d.ts.map +0 -1
  569. package/dist/src/hooks/useBaseProps.d.ts +0 -101
  570. package/dist/src/hooks/useBaseProps.d.ts.map +0 -1
  571. package/dist/src/hooks/useDataBinding.d.ts +0 -22
  572. package/dist/src/hooks/useDataBinding.d.ts.map +0 -1
  573. package/dist/src/hooks/usePrintMode.d.ts +0 -39
  574. package/dist/src/hooks/usePrintMode.d.ts.map +0 -1
  575. package/dist/src/index.d.ts +0 -9
  576. package/dist/src/index.d.ts.map +0 -1
  577. package/dist/src/palettes/PaletteAutumn.d.ts +0 -10
  578. package/dist/src/palettes/PaletteAutumn.d.ts.map +0 -1
  579. package/dist/src/palettes/PaletteCosmic.d.ts +0 -10
  580. package/dist/src/palettes/PaletteCosmic.d.ts.map +0 -1
  581. package/dist/src/palettes/PaletteDefault.d.ts +0 -10
  582. package/dist/src/palettes/PaletteDefault.d.ts.map +0 -1
  583. package/dist/src/palettes/PaletteOcean.d.ts +0 -10
  584. package/dist/src/palettes/PaletteOcean.d.ts.map +0 -1
  585. package/dist/src/palettes/PaletteSpring.d.ts +0 -10
  586. package/dist/src/palettes/PaletteSpring.d.ts.map +0 -1
  587. package/dist/src/palettes/PaletteWinter.d.ts +0 -10
  588. package/dist/src/palettes/PaletteWinter.d.ts.map +0 -1
  589. package/dist/src/palettes/index.d.ts +0 -13
  590. package/dist/src/palettes/index.d.ts.map +0 -1
  591. package/dist/src/schemas/ActionSchema.d.ts +0 -21
  592. package/dist/src/schemas/ActionSchema.d.ts.map +0 -1
  593. package/dist/src/schemas/ArticleSchema.d.ts +0 -13
  594. package/dist/src/schemas/ArticleSchema.d.ts.map +0 -1
  595. package/dist/src/schemas/ButtonSchema.d.ts +0 -22
  596. package/dist/src/schemas/ButtonSchema.d.ts.map +0 -1
  597. package/dist/src/schemas/CardListGridSchema.d.ts +0 -17
  598. package/dist/src/schemas/CardListGridSchema.d.ts.map +0 -1
  599. package/dist/src/schemas/ChoiceInputFieldSchema.d.ts +0 -18
  600. package/dist/src/schemas/ChoiceInputFieldSchema.d.ts.map +0 -1
  601. package/dist/src/schemas/CodeSchema.d.ts +0 -18
  602. package/dist/src/schemas/CodeSchema.d.ts.map +0 -1
  603. package/dist/src/schemas/CollapsibleLayoutSchema.d.ts +0 -32
  604. package/dist/src/schemas/CollapsibleLayoutSchema.d.ts.map +0 -1
  605. package/dist/src/schemas/ContainerSchema.d.ts +0 -12
  606. package/dist/src/schemas/ContainerSchema.d.ts.map +0 -1
  607. package/dist/src/schemas/ContentSchema.d.ts +0 -21
  608. package/dist/src/schemas/ContentSchema.d.ts.map +0 -1
  609. package/dist/src/schemas/CoverImageHeaderSchema.d.ts +0 -28
  610. package/dist/src/schemas/CoverImageHeaderSchema.d.ts.map +0 -1
  611. package/dist/src/schemas/FeatureCardSchema.d.ts +0 -28
  612. package/dist/src/schemas/FeatureCardSchema.d.ts.map +0 -1
  613. package/dist/src/schemas/FeatureGridSchema.d.ts +0 -17
  614. package/dist/src/schemas/FeatureGridSchema.d.ts.map +0 -1
  615. package/dist/src/schemas/FeatureItemSchema.d.ts +0 -16
  616. package/dist/src/schemas/FeatureItemSchema.d.ts.map +0 -1
  617. package/dist/src/schemas/FooterItemSchema.d.ts +0 -15
  618. package/dist/src/schemas/FooterItemSchema.d.ts.map +0 -1
  619. package/dist/src/schemas/FooterSchema.d.ts +0 -20
  620. package/dist/src/schemas/FooterSchema.d.ts.map +0 -1
  621. package/dist/src/schemas/FooterSectionSchema.d.ts +0 -15
  622. package/dist/src/schemas/FooterSectionSchema.d.ts.map +0 -1
  623. package/dist/src/schemas/FormBlockSchema.d.ts +0 -19
  624. package/dist/src/schemas/FormBlockSchema.d.ts.map +0 -1
  625. package/dist/src/schemas/GridCellSchema.d.ts +0 -23
  626. package/dist/src/schemas/GridCellSchema.d.ts.map +0 -1
  627. package/dist/src/schemas/GridLayoutSchema.d.ts +0 -21
  628. package/dist/src/schemas/GridLayoutSchema.d.ts.map +0 -1
  629. package/dist/src/schemas/HeaderActionSchema.d.ts +0 -17
  630. package/dist/src/schemas/HeaderActionSchema.d.ts.map +0 -1
  631. package/dist/src/schemas/HeroBlockSchema.d.ts +0 -22
  632. package/dist/src/schemas/HeroBlockSchema.d.ts.map +0 -1
  633. package/dist/src/schemas/HtmlInputFieldSchema.d.ts +0 -18
  634. package/dist/src/schemas/HtmlInputFieldSchema.d.ts.map +0 -1
  635. package/dist/src/schemas/HtmlSchema.d.ts +0 -14
  636. package/dist/src/schemas/HtmlSchema.d.ts.map +0 -1
  637. package/dist/src/schemas/ImageSchema.d.ts +0 -32
  638. package/dist/src/schemas/ImageSchema.d.ts.map +0 -1
  639. package/dist/src/schemas/LogoSchema.d.ts +0 -35
  640. package/dist/src/schemas/LogoSchema.d.ts.map +0 -1
  641. package/dist/src/schemas/MarkdownSchema.d.ts +0 -14
  642. package/dist/src/schemas/MarkdownSchema.d.ts.map +0 -1
  643. package/dist/src/schemas/MetadataItemSchema.d.ts +0 -13
  644. package/dist/src/schemas/MetadataItemSchema.d.ts.map +0 -1
  645. package/dist/src/schemas/PageBannerHeaderSchema.d.ts +0 -28
  646. package/dist/src/schemas/PageBannerHeaderSchema.d.ts.map +0 -1
  647. package/dist/src/schemas/PageTemplateSchema.d.ts +0 -31
  648. package/dist/src/schemas/PageTemplateSchema.d.ts.map +0 -1
  649. package/dist/src/schemas/PaletteSwitcherSchema.d.ts +0 -16
  650. package/dist/src/schemas/PaletteSwitcherSchema.d.ts.map +0 -1
  651. package/dist/src/schemas/PrintConfigSchema.d.ts +0 -31
  652. package/dist/src/schemas/PrintConfigSchema.d.ts.map +0 -1
  653. package/dist/src/schemas/ProductCardSchema.d.ts +0 -39
  654. package/dist/src/schemas/ProductCardSchema.d.ts.map +0 -1
  655. package/dist/src/schemas/SafeSpanSchema.d.ts +0 -13
  656. package/dist/src/schemas/SafeSpanSchema.d.ts.map +0 -1
  657. package/dist/src/schemas/SectionSchema.d.ts +0 -16
  658. package/dist/src/schemas/SectionSchema.d.ts.map +0 -1
  659. package/dist/src/schemas/SelectInputFieldSchema.d.ts +0 -27
  660. package/dist/src/schemas/SelectInputFieldSchema.d.ts.map +0 -1
  661. package/dist/src/schemas/SwitchInputFieldSchema.d.ts +0 -18
  662. package/dist/src/schemas/SwitchInputFieldSchema.d.ts.map +0 -1
  663. package/dist/src/schemas/TextInputFieldSchema.d.ts +0 -22
  664. package/dist/src/schemas/TextInputFieldSchema.d.ts.map +0 -1
  665. package/dist/src/schemas/TextSchema.d.ts +0 -37
  666. package/dist/src/schemas/TextSchema.d.ts.map +0 -1
  667. package/dist/src/schemas/ThemeSwitcherSchema.d.ts +0 -19
  668. package/dist/src/schemas/ThemeSwitcherSchema.d.ts.map +0 -1
  669. package/dist/src/schemas/ViewSchema.d.ts +0 -66
  670. package/dist/src/schemas/ViewSchema.d.ts.map +0 -1
  671. package/dist/src/schemas/index.d.ts +0 -47
  672. package/dist/src/schemas/index.d.ts.map +0 -1
  673. package/dist/src/schemas/transformers/ComponentTransformer.d.ts +0 -128
  674. package/dist/src/schemas/transformers/ComponentTransformer.d.ts.map +0 -1
  675. package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts +0 -53
  676. package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts.map +0 -1
  677. package/dist/src/schemas/transformers/registry.d.ts +0 -18
  678. package/dist/src/schemas/transformers/registry.d.ts.map +0 -1
  679. package/dist/src/schemas/types/Serializable.d.ts +0 -46
  680. package/dist/src/schemas/types/Serializable.d.ts.map +0 -1
  681. package/dist/src/stories/_templates/SerializationTemplate.d.ts.map +0 -1
  682. package/dist/src/templates/TemplateResolver.d.ts +0 -52
  683. package/dist/src/templates/TemplateResolver.d.ts.map +0 -1
  684. package/dist/src/templates/index.d.ts +0 -7
  685. package/dist/src/templates/index.d.ts.map +0 -1
  686. package/dist/src/types/CacheProvider.d.ts +0 -18
  687. package/dist/src/types/CacheProvider.d.ts.map +0 -1
  688. package/dist/src/types/CollapsibleLayout.d.ts +0 -142
  689. package/dist/src/types/CollapsibleLayout.d.ts.map +0 -1
  690. package/dist/src/types/ContentProxy.d.ts +0 -47
  691. package/dist/src/types/ContentProxy.d.ts.map +0 -1
  692. package/dist/src/types/DataTypes.d.ts +0 -185
  693. package/dist/src/types/DataTypes.d.ts.map +0 -1
  694. package/dist/src/types/TemplateProvider.d.ts +0 -10
  695. package/dist/src/types/TemplateProvider.d.ts.map +0 -1
  696. package/dist/src/types/TemplateResolver.d.ts +0 -23
  697. package/dist/src/types/TemplateResolver.d.ts.map +0 -1
  698. package/dist/src/types/index.d.ts +0 -82
  699. package/dist/src/types/index.d.ts.map +0 -1
  700. package/dist/src/utils/breakpoints.d.ts +0 -35
  701. package/dist/src/utils/breakpoints.d.ts.map +0 -1
  702. package/dist/src/utils/cssUtils.d.ts +0 -17
  703. package/dist/src/utils/cssUtils.d.ts.map +0 -1
  704. package/dist/src/utils/customPaletteManager.d.ts +0 -8
  705. package/dist/src/utils/customPaletteManager.d.ts.map +0 -1
  706. package/dist/src/utils/dimensions.d.ts +0 -34
  707. package/dist/src/utils/dimensions.d.ts.map +0 -1
  708. package/dist/src/utils/htmlTransform.d.ts +0 -44
  709. package/dist/src/utils/htmlTransform.d.ts.map +0 -1
  710. package/dist/src/utils/index.d.ts +0 -16
  711. package/dist/src/utils/index.d.ts.map +0 -1
  712. package/dist/src/utils/logger.d.ts +0 -26
  713. package/dist/src/utils/logger.d.ts.map +0 -1
  714. package/dist/src/utils/paletteUtils.d.ts +0 -38
  715. package/dist/src/utils/paletteUtils.d.ts.map +0 -1
  716. package/dist/src/utils/persistenceUtils.d.ts +0 -31
  717. package/dist/src/utils/persistenceUtils.d.ts.map +0 -1
  718. package/dist/src/utils/reactUtils.d.ts +0 -33
  719. package/dist/src/utils/reactUtils.d.ts.map +0 -1
  720. package/dist/src/utils/spacing.d.ts +0 -34
  721. package/dist/src/utils/spacing.d.ts.map +0 -1
  722. package/dist/src/utils/themePerformanceMonitor.d.ts +0 -32
  723. package/dist/src/utils/themePerformanceMonitor.d.ts.map +0 -1
  724. package/dist/src/utils/themeUtils.d.ts +0 -27
  725. package/dist/src/utils/themeUtils.d.ts.map +0 -1
  726. package/dist/tests/ConsoleWarningTest.d.ts +0 -5
  727. package/dist/tests/ConsoleWarningTest.d.ts.map +0 -1
  728. package/dist/tests/StorageKeyTest.d.ts +0 -6
  729. package/dist/tests/StorageKeyTest.d.ts.map +0 -1
  730. package/dist/tests/ThemeStorageKeyTest.d.ts +0 -6
  731. package/dist/tests/ThemeStorageKeyTest.d.ts.map +0 -1
  732. /package/dist/palettes/{PaletteAutumn.css → palette-autumn.1.4.9.css} +0 -0
  733. /package/dist/palettes/{PaletteCosmic.css → palette-cosmic.1.4.9.css} +0 -0
  734. /package/dist/palettes/{PaletteDefault.css → palette-default.1.4.9.css} +0 -0
  735. /package/dist/palettes/{PaletteOcean.css → palette-ocean.1.4.9.css} +0 -0
  736. /package/dist/palettes/{PaletteSpring.css → palette-spring.1.4.9.css} +0 -0
  737. /package/dist/palettes/{PaletteWinter.css → palette-winter.1.4.9.css} +0 -0
  738. /package/dist/{src/stories → stories}/_templates/SerializationTemplate.d.ts +0 -0
@@ -1,21 +1,23 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * Article - Transforms HTML content to use framework components with data binding support
3
- *
5
+ *
4
6
  * Automatically transforms:
5
7
  * - <pre><code> blocks to Code components with syntax highlighting
6
8
  * - Complex <code> elements to Code components
7
9
  * - <section class="blog-section"> to Section components
8
10
  * - Other framework-compatible elements
9
11
  * - Preserves all other HTML structure and attributes
10
- *
12
+ *
11
13
  * Supports both traditional props and data binding through dataSource.
12
- *
14
+ *
13
15
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
14
16
  */
15
17
 
16
18
  import { Box, Typography } from '@mui/material';
17
19
  import { WithDataBinding, SchemaProps } from '@qwickapps/schema';
18
- import React, { ReactElement } from 'react';
20
+ import React from 'react';
19
21
  import { QWICKAPP_COMPONENT, useBaseProps, useDataBinding } from '../../hooks';
20
22
  import ArticleModel from '../../schemas/ArticleSchema';
21
23
  import { ModelView } from '../base/ModelView';
@@ -37,7 +39,7 @@ function ArticleView({
37
39
  const { styleProps, htmlProps, restProps: otherProps } = useBaseProps(restProps);
38
40
 
39
41
  // Mark as QwickApp component
40
- (ArticleView as any)[QWICKAPP_COMPONENT] = true;
42
+ (ArticleView as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
41
43
 
42
44
  // Return empty state if no HTML content
43
45
  if (!html.trim()) {
@@ -55,10 +57,10 @@ function ArticleView({
55
57
  ...styleProps.sx
56
58
  }}
57
59
  >
58
- <Typography variant="h6" color="text.secondary">
60
+ <Typography variant="h6" color="var(--theme-text)">
59
61
  No Content Available
60
62
  </Typography>
61
- <Typography variant="body2" color="text.secondary">
63
+ <Typography variant="body2" color="var(--theme-text)">
62
64
  No HTML content provided for this article
63
65
  </Typography>
64
66
  </Box>
@@ -74,115 +76,257 @@ function ArticleView({
74
76
  {...otherProps}
75
77
  {...styleProps}
76
78
  {...{
77
- // Ensure proper width constraints for article content
78
- maxWidth: '800px',
79
+ // Modern article layout
80
+ maxWidth: '900px',
79
81
  mx: 'auto',
80
- p: 3,
81
- // Header styling when headers are present
82
+ px: { xs: 2, sm: 3, md: 4 },
83
+ py: { xs: 3, md: 5 },
84
+
85
+ // Typography - Modern, readable hierarchy
82
86
  '& h1, & h2, & h3, & h4, & h5, & h6': {
83
- maxWidth: '100%',
84
- mb: 2,
85
- mt: 3,
86
- color: 'var(--theme-text-primary)',
87
+ fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
88
+ fontWeight: 700,
89
+ letterSpacing: '-0.02em',
90
+ color: 'var(--theme-text)',
91
+ scrollMarginTop: '100px', // For anchor links
87
92
  '&:first-of-type': {
88
93
  mt: 0
89
94
  }
90
95
  },
91
96
  '& h1': {
92
- fontSize: '2.5rem',
93
- fontWeight: 700,
94
- lineHeight: 1.2
97
+ fontSize: { xs: '2rem', md: '2.75rem' },
98
+ lineHeight: 1.15,
99
+ mb: 3,
100
+ mt: 5
95
101
  },
96
102
  '& h2': {
97
- fontSize: '2rem',
98
- fontWeight: 600,
99
- lineHeight: 1.3
103
+ fontSize: { xs: '1.5rem', md: '2rem' },
104
+ lineHeight: 1.25,
105
+ mb: 2.5,
106
+ mt: 5,
107
+ pb: 1.5,
108
+ borderBottom: '1px solid var(--theme-border-lighter)'
100
109
  },
101
110
  '& h3': {
102
- fontSize: '1.5rem',
103
- fontWeight: 600,
104
- lineHeight: 1.4
111
+ fontSize: { xs: '1.25rem', md: '1.5rem' },
112
+ lineHeight: 1.3,
113
+ mb: 2,
114
+ mt: 4
105
115
  },
106
116
  '& h4': {
107
- fontSize: '1.25rem',
108
- fontWeight: 600,
117
+ fontSize: { xs: '1.1rem', md: '1.25rem' },
109
118
  lineHeight: 1.4,
110
- mt: 2.5,
111
- mb: 1.5
119
+ mb: 1.5,
120
+ mt: 3,
121
+ color: 'var(--theme-text)',
122
+ fontWeight: 600
112
123
  },
113
- // Ensure paragraphs have proper spacing
124
+
125
+ // Body text - Optimized for reading
114
126
  '& p': {
127
+ fontSize: { xs: '1rem', md: '1.0625rem' },
128
+ lineHeight: 1.75,
115
129
  mb: 2,
116
- lineHeight: 1.8,
117
- fontSize: '1.1rem',
118
- color: 'var(--theme-text-primary)'
130
+ color: 'var(--theme-text)',
131
+ fontFamily: 'Georgia, "Times New Roman", serif',
132
+ '&:last-child': {
133
+ mb: 0
134
+ }
119
135
  },
120
- // Ensure lists have proper spacing
136
+
137
+ // Lists - Better visual hierarchy
121
138
  '& ul, & ol': {
122
- mb: 2.5,
123
- pl: 4,
139
+ mb: 3,
140
+ pl: { xs: 3, md: 4 },
124
141
  '& li': {
125
- mb: 1,
126
- lineHeight: 1.8,
127
- fontSize: '1.05rem',
128
- color: 'var(--theme-text-primary)'
142
+ mb: 1.25,
143
+ lineHeight: 1.7,
144
+ fontSize: { xs: '1rem', md: '1.0625rem' },
145
+ color: 'var(--theme-text)',
146
+ fontFamily: 'Georgia, "Times New Roman", serif',
147
+ '&::marker': {
148
+ color: 'var(--theme-primary)',
149
+ fontWeight: 600
150
+ },
151
+ '& p': {
152
+ mb: 0.5
153
+ }
154
+ },
155
+ '& ul, & ol': {
156
+ mt: 1,
157
+ mb: 0
158
+ }
159
+ },
160
+
161
+ // Code blocks - Modern syntax highlighting style
162
+ '& pre': {
163
+ backgroundColor: 'var(--theme-surface-elevated)',
164
+ color: 'var(--theme-text)',
165
+ borderRadius: 'var(--theme-border-radius)',
166
+ p: { xs: 2, md: 3 },
167
+ mb: 3,
168
+ overflow: 'auto',
169
+ fontSize: '0.9rem',
170
+ lineHeight: 1.6,
171
+ fontFamily: '"Fira Code", "Cascadia Code", "SF Mono", Monaco, Consolas, monospace',
172
+ border: '1px solid var(--theme-border-light)',
173
+ boxShadow: 'var(--theme-elevation-2)',
174
+ '& code': {
175
+ backgroundColor: 'transparent',
176
+ color: 'inherit',
177
+ padding: 0,
178
+ fontSize: 'inherit',
179
+ fontFamily: 'inherit'
129
180
  }
130
181
  },
131
- // Blockquote styling
182
+
183
+ // Inline code - Subtle highlight
184
+ '& code': {
185
+ backgroundColor: 'var(--theme-code-bg)',
186
+ color: 'var(--theme-error)',
187
+ padding: '0.2em 0.4em',
188
+ borderRadius: 'var(--theme-border-radius-small)',
189
+ fontSize: '0.9em',
190
+ fontFamily: '"Fira Code", "Cascadia Code", "SF Mono", Monaco, Consolas, monospace',
191
+ fontWeight: 500
192
+ },
193
+
194
+ // Blockquotes - Elegant callouts
132
195
  '& blockquote': {
133
196
  borderLeft: '4px solid var(--theme-primary)',
197
+ backgroundColor: 'var(--theme-surface-variant)',
198
+ borderRadius: `0 var(--theme-border-radius-small) var(--theme-border-radius-small) 0`,
134
199
  pl: 3,
135
- pr: 2,
136
- py: 2,
137
- my: 3,
200
+ pr: 3,
201
+ py: 2.5,
202
+ my: 4,
138
203
  ml: 0,
139
204
  mr: 0,
140
- background: 'var(--theme-surface)',
141
- borderRadius: '8px',
142
205
  '& p': {
143
- fontSize: '1.15rem',
206
+ fontSize: { xs: '1.05rem', md: '1.125rem' },
144
207
  fontStyle: 'italic',
145
- lineHeight: 1.7,
146
- mb: 1,
147
- color: 'var(--theme-text-primary)'
208
+ lineHeight: 1.6,
209
+ mb: 1.5,
210
+ color: 'var(--theme-text)',
211
+ '&:last-child': {
212
+ mb: 0
213
+ }
148
214
  },
149
215
  '& cite': {
150
216
  display: 'block',
151
- fontSize: '0.95rem',
217
+ fontSize: '0.9rem',
152
218
  fontStyle: 'normal',
153
- fontWeight: 600,
154
- color: 'var(--theme-text-secondary)',
155
- mt: 1
219
+ fontWeight: 500,
220
+ color: 'var(--theme-text)',
221
+ mt: 1,
222
+ '&::before': {
223
+ content: '"— "',
224
+ color: 'var(--theme-primary)'
225
+ }
226
+ }
227
+ },
228
+
229
+ // Tables - Clean, modern design
230
+ '& table': {
231
+ width: '100%',
232
+ borderCollapse: 'separate',
233
+ borderSpacing: 0,
234
+ mb: 3,
235
+ fontSize: '0.95rem',
236
+ overflow: 'hidden',
237
+ borderRadius: 'var(--theme-border-radius-small)',
238
+ border: '1px solid var(--theme-border-light)',
239
+ '& thead': {
240
+ backgroundColor: 'var(--theme-surface-variant)',
241
+ '& th': {
242
+ padding: '12px 16px',
243
+ textAlign: 'left',
244
+ fontWeight: 600,
245
+ color: 'var(--theme-text)',
246
+ borderBottom: '2px solid var(--theme-border-main)',
247
+ fontSize: '0.875rem',
248
+ textTransform: 'uppercase',
249
+ letterSpacing: '0.05em'
250
+ }
251
+ },
252
+ '& tbody': {
253
+ '& tr': {
254
+ borderBottom: '1px solid var(--theme-border-lighter)',
255
+ transition: 'background-color 0.2s ease',
256
+ '&:hover': {
257
+ backgroundColor: 'var(--theme-surface-variant)'
258
+ },
259
+ '&:last-child': {
260
+ borderBottom: 'none'
261
+ }
262
+ },
263
+ '& td': {
264
+ padding: '12px 16px',
265
+ color: 'var(--theme-text)',
266
+ lineHeight: 1.6
267
+ }
156
268
  }
157
269
  },
158
- // Strong/bold text
270
+
271
+ // Text emphasis
159
272
  '& strong': {
160
- fontWeight: 600,
161
- color: 'var(--theme-text-primary)'
273
+ fontWeight: 700,
274
+ color: 'var(--theme-text)'
162
275
  },
163
- // Emphasis/italic text
164
276
  '& em': {
165
277
  fontStyle: 'italic',
166
- color: 'var(--theme-text-primary)'
278
+ color: 'var(--theme-text)'
167
279
  },
168
- // Links
280
+
281
+ // Links - Modern, accessible
169
282
  '& a': {
170
283
  color: 'var(--theme-primary)',
171
284
  textDecoration: 'none',
172
285
  fontWeight: 500,
286
+ borderBottom: '1px solid transparent',
287
+ transition: 'border-color 0.2s ease',
173
288
  '&:hover': {
174
- textDecoration: 'underline'
289
+ borderBottomColor: 'var(--theme-primary)'
290
+ },
291
+ '&:focus-visible': {
292
+ outline: '2px solid var(--theme-primary)',
293
+ outlineOffset: '2px',
294
+ borderRadius: '2px'
175
295
  }
176
296
  },
297
+
177
298
  // Images and figures
299
+ '& img': {
300
+ maxWidth: '100%',
301
+ height: 'auto',
302
+ borderRadius: 'var(--theme-border-radius-small)',
303
+ display: 'block',
304
+ my: 3
305
+ },
178
306
  '& figure': {
179
- margin: '2rem 0',
307
+ margin: '3rem 0',
180
308
  '& img': {
181
309
  maxWidth: '100%',
182
310
  height: 'auto',
183
- borderRadius: '8px'
311
+ borderRadius: 'var(--theme-border-radius-small)',
312
+ boxShadow: 'var(--theme-elevation-2)'
313
+ },
314
+ '& figcaption': {
315
+ textAlign: 'center',
316
+ fontSize: '0.875rem',
317
+ color: 'var(--theme-text)',
318
+ mt: 1.5,
319
+ fontStyle: 'italic'
184
320
  }
185
321
  },
322
+
323
+ // Horizontal rules
324
+ '& hr': {
325
+ border: 'none',
326
+ borderTop: '1px solid var(--theme-border-light)',
327
+ my: 5
328
+ },
329
+
186
330
  ...styleProps.sx
187
331
  }}
188
332
  >
@@ -198,7 +342,7 @@ export class Article extends ModelView<ArticleProps, ArticleModel> {
198
342
  static readonly version = '1.0.0';
199
343
 
200
344
  // Component-specific serialization properties
201
- protected getComponentSpecificProps(): any {
345
+ protected getComponentSpecificProps(): unknown {
202
346
  return {
203
347
  html: this.props.html,
204
348
  skipHeader: this.props.skipHeader
@@ -207,7 +351,7 @@ export class Article extends ModelView<ArticleProps, ArticleModel> {
207
351
 
208
352
  // Article component renders traditional props view
209
353
  protected renderView(): React.ReactElement {
210
- const { dataSource, bindingOptions, ...restProps } = this.props;
354
+ const { ...restProps } = this.props;
211
355
  return <ArticleView {...restProps} />;
212
356
  }
213
357
 
@@ -217,7 +361,7 @@ export class Article extends ModelView<ArticleProps, ArticleModel> {
217
361
  }
218
362
 
219
363
  // Register HTML patterns that Article component can handle
220
- static registerPatternHandlers(registry: any): void {
364
+ static registerPatternHandlers(registry: unknown): void {
221
365
  // Register article elements
222
366
  if (!registry.hasPattern('article')) {
223
367
  registry.registerPattern('article', Article.transformArticle);
@@ -225,7 +369,7 @@ export class Article extends ModelView<ArticleProps, ArticleModel> {
225
369
  }
226
370
 
227
371
  // Transform article elements to Article component
228
- private static transformArticle(element: Element): any {
372
+ private static transformArticle(element: Element): unknown {
229
373
  const skipHeader = element.getAttribute('data-skip-header') === 'true';
230
374
 
231
375
  return {
@@ -243,7 +387,7 @@ function ArticleWithDataBinding(props: ArticleProps) {
243
387
  const { dataSource, bindingOptions, ...restProps } = props;
244
388
 
245
389
  // Use data binding
246
- const { dataSource: _source, loading, error, cached, ...articleProps } = useDataBinding<ArticleModel>(
390
+ const { loading, error, ...articleProps } = useDataBinding<ArticleModel>(
247
391
  dataSource!,
248
392
  restProps as Partial<ArticleModel>,
249
393
  ArticleModel.getSchema(),
@@ -263,7 +407,7 @@ function ArticleWithDataBinding(props: ArticleProps) {
263
407
  }}
264
408
  >
265
409
  <Typography variant="h6">Loading Article...</Typography>
266
- <Typography variant="body2" color="text.secondary">
410
+ <Typography variant="body2" color="var(--theme-text)">
267
411
  Loading
268
412
  </Typography>
269
413
  </Box>
@@ -284,7 +428,7 @@ function ArticleWithDataBinding(props: ArticleProps) {
284
428
  }}
285
429
  >
286
430
  <Typography variant="h6">Error Loading Article</Typography>
287
- <Typography variant="body2" color="text.secondary">
431
+ <Typography variant="body2" color="var(--theme-text)">
288
432
  {error.message}
289
433
  </Typography>
290
434
  </Box>
@@ -1,11 +1,13 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * CardListGrid - Generic grid layout for cards with data binding support
3
- *
5
+ *
4
6
  * A unified grid component that can display any type of card component
5
7
  * with consistent spacing and layout. Works with ProductCard, FeatureCard,
6
- * or any other card-like components. Supports both traditional props and
8
+ * or any other card-like components. Supports both traditional props and
7
9
  * data binding through dataSource.
8
- *
10
+ *
9
11
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
10
12
  */
11
13
 
@@ -19,15 +21,15 @@ import { ProductCard } from './ProductCard';
19
21
 
20
22
  type CardListGridViewProps = SchemaProps<CardListGridModel> & {
21
23
  /** Render function for each item (traditional usage) */
22
- renderItem?: (item: any, index: number) => React.ReactNode;
24
+ renderItem?: (item: unknown, index: number) => React.ReactNode;
23
25
  };
24
26
 
25
27
  export interface CardListGridProps extends CardListGridViewProps, WithDataBinding {
26
28
  }
27
29
 
28
30
  // Default render function based on component type
29
- const getDefaultRenderItem = (renderComponent: string = 'ProductCard', itemProps: Record<string, any> = {}) => {
30
- return (item: any, index: number) => {
31
+ const getDefaultRenderItem = (renderComponent: string = 'ProductCard', itemProps: Record<string, unknown> = {}) => {
32
+ return (item: unknown, index: number) => {
31
33
  const key = item?.id || item?.key || index;
32
34
 
33
35
  switch (renderComponent) {
@@ -82,19 +84,21 @@ function CardListGridView({
82
84
  function CardListGrid(props: CardListGridProps) {
83
85
  const { dataSource, bindingOptions, ...restProps } = props;
84
86
 
85
- // If no dataSource, use traditional props
86
- if (!dataSource) {
87
- return <CardListGridView {...restProps} />;
88
- }
89
-
90
- // Use data binding
87
+ // Always call hooks unconditionally
91
88
  const result = useDataBinding<CardListGridModel>(
92
- dataSource,
89
+ dataSource || '',
93
90
  restProps as Partial<CardListGridModel>,
94
91
  CardListGridModel.getSchema(),
95
92
  { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
96
93
  );
97
- const { dataSource: _source, loading, error, cached, ...cardListGridProps } = result;
94
+
95
+ // If no dataSource, use traditional props
96
+ if (!dataSource) {
97
+ return <CardListGridView {...restProps} />;
98
+ }
99
+
100
+ // Use data binding result
101
+ const { loading, error, ...cardListGridProps } = result;
98
102
 
99
103
  // Show loading state
100
104
  if (loading) {
@@ -1,25 +1,27 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * Code - Content-prop leaf component for secure code display
3
- *
5
+ *
4
6
  * Uses content-prop strategy to prevent JSON deserialization vulnerabilities.
5
7
  * Code content is serialized as data.content (string), not data.children,
6
8
  * preventing recursive deserialization of example JSON that looks like components.
7
- *
9
+ *
8
10
  * Features preserved:
9
11
  * - Syntax highlighting support
10
- * - Copy to clipboard functionality
12
+ * - Copy to clipboard functionality
11
13
  * - Light/dark theme support
12
14
  * - Multiple language support
13
15
  * - Responsive design
14
16
  * - Line numbers support
15
17
  * - Title display
16
18
  * - Custom backgrounds
17
- *
19
+ *
18
20
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
19
21
  */
20
22
 
21
23
  import React, { useState } from 'react';
22
- import { Box, Paper, Typography, Tooltip, IconButton, Snackbar, Alert, useTheme } from '@mui/material';
24
+ import { Box, Typography, Tooltip, IconButton, Snackbar, Alert, useTheme, Paper } from '@mui/material';
23
25
  import { ContentCopy as CopyIcon, Check as CheckIcon } from '@mui/icons-material';
24
26
  import CodeSchema from '../../schemas/CodeSchema';
25
27
  import type { SchemaProps } from '@qwickapps/schema/src/types/ModelProps';
@@ -40,7 +42,7 @@ export type CodeProps = ViewProps & SchemaProps<typeof CodeSchema>;
40
42
  */
41
43
  function CodeView({
42
44
  content,
43
- language = 'text',
45
+ language: _language = 'text',
44
46
  showCopy = true,
45
47
  showLineNumbers = false,
46
48
  title,
@@ -54,7 +56,7 @@ function CodeView({
54
56
  const [copied, setCopied] = useState(false);
55
57
  const [showCopiedAlert, setShowCopiedAlert] = useState(false);
56
58
 
57
- const codeMaxHeight = (restProps.sx as any)?.maxHeight || 400;
59
+ const codeMaxHeight = (restProps.sx as Record<string, unknown>)?.maxHeight as number || 400;
58
60
 
59
61
  // Use content prop directly (already a string from content-prop strategy)
60
62
  const codeContent = content || '';
@@ -257,20 +259,23 @@ export const Code: SerializableComponent<CodeProps> = createSerializableView<Cod
257
259
  });
258
260
 
259
261
  // Register HTML patterns that Code component can handle
260
- (Code as any).registerPatternHandlers = (registry: any): void => {
262
+ (Code as Record<string, unknown>).registerPatternHandlers = (registry: Record<string, (...args: unknown[]) => unknown>): void => {
261
263
  // Register pre + code pattern
264
+ if (!registry.hasPattern) {
265
+ return;
266
+ }
262
267
  if (!registry.hasPattern('pre code')) {
263
- registry.registerPattern('pre code', (Code as any).transformPreCode);
268
+ registry.registerPattern('pre code', (Code as Record<string, unknown>).transformPreCode as (...args: unknown[]) => unknown);
264
269
  }
265
-
270
+
266
271
  // Register standalone code pattern for complex code blocks
267
272
  if (!registry.hasPattern('code.highlight')) {
268
- registry.registerPattern('code.highlight', (Code as any).transformCodeHighlight);
273
+ registry.registerPattern('code.highlight', (Code as Record<string, unknown>).transformCodeHighlight as (...args: unknown[]) => unknown);
269
274
  }
270
275
  };
271
276
 
272
277
  // Transform pre + code elements to Code component
273
- (Code as any).transformPreCode = (element: Element): any => {
278
+ (Code as Record<string, unknown>).transformPreCode = (element: Element): unknown => {
274
279
  const codeChild = element.querySelector('code');
275
280
  if (!codeChild) return null;
276
281
 
@@ -290,7 +295,7 @@ export const Code: SerializableComponent<CodeProps> = createSerializableView<Cod
290
295
  };
291
296
 
292
297
  // Transform highlighted code elements to Code component
293
- (Code as any).transformCodeHighlight = (element: Element): any => {
298
+ (Code as Record<string, unknown>).transformCodeHighlight = (element: Element): unknown => {
294
299
  const language = Array.from(element.classList)
295
300
  .find(cls => cls.startsWith('language-'))
296
301
  ?.replace('language-', '') || 'text';
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * Content Component - General-purpose content container with data binding support
3
5
  *
@@ -14,7 +16,7 @@
14
16
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
15
17
  */
16
18
 
17
- import { Box, Paper, Stack, SxProps, Theme, Typography, useTheme } from '@mui/material';
19
+ import { Box, Stack, SxProps, Theme, Typography, useTheme, Paper } from '@mui/material';
18
20
  import { WithDataBinding, SchemaProps } from '@qwickapps/schema';
19
21
  import React from 'react';
20
22
  import { QWICKAPP_COMPONENT, useBaseProps, useDataBinding } from '../../hooks';
@@ -43,7 +45,7 @@ function ContentView({
43
45
  const theme = useTheme();
44
46
 
45
47
  // Mark as QwickApp component
46
- (ContentView as any)[QWICKAPP_COMPONENT] = true;
48
+ (ContentView as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
47
49
 
48
50
  // Map spacing to padding values
49
51
  const getPadding = () => {
@@ -74,7 +76,7 @@ function ContentView({
74
76
  };
75
77
 
76
78
  let Wrapper: React.ElementType = Box;
77
- let wrapperProps: Record<string, any> = { ...htmlProps, ...otherProps, sx: commonSx };
79
+ let wrapperProps: Record<string, unknown> = { ...htmlProps, ...otherProps, sx: commonSx };
78
80
  if (variant === 'elevated') {
79
81
  Wrapper = Paper;
80
82
  wrapperProps = { ...wrapperProps, elevation: 4, sx: { ...commonSx, backgroundColor: theme.palette.background.paper } };
@@ -165,18 +167,21 @@ function ContentView({
165
167
  function Content(props: ContentProps) {
166
168
  const { dataSource, bindingOptions, ...restProps } = props;
167
169
 
170
+ // Always call hooks unconditionally
171
+ const bindingResult = useDataBinding<ContentModel>(
172
+ dataSource || '',
173
+ restProps as Partial<ContentModel>,
174
+ ContentModel.getSchema(),
175
+ { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
176
+ );
177
+
168
178
  // If no dataSource, use traditional props
169
179
  if (!dataSource) {
170
180
  return <ContentView {...restProps} />;
171
181
  }
172
182
 
173
- // Use data binding
174
- const { dataSource: _source, loading, error, cached, ...contentProps } = useDataBinding<ContentModel>(
175
- dataSource,
176
- restProps as Partial<ContentModel>,
177
- ContentModel.getSchema(),
178
- { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
179
- );
183
+ // Use data binding result
184
+ const { loading, error, ...contentProps } = bindingResult;
180
185
 
181
186
  // Show loading state
182
187
  if (loading) {
@@ -1,11 +1,13 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * CoverImageHeader - Flexible header with optional image, info section, and context menu
3
- *
5
+ *
4
6
  * Provides a clean header layout similar to modern app interfaces with:
5
7
  * - Optional image/avatar on the left
6
8
  * - Info section with overline, title, subtitle, and tags
7
9
  * - Context menu with up to 3 visible actions + overflow menu
8
- *
10
+ *
9
11
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
10
12
  */
11
13
 
@@ -396,18 +398,21 @@ function ErrorState() {
396
398
  function CoverImageHeader(props: CoverImageHeaderProps) {
397
399
  const { dataSource, bindingOptions, ...restProps } = props;
398
400
 
401
+ // Always call hooks unconditionally
402
+ const bindingResult = useDataBinding<CoverImageHeaderModel>(
403
+ dataSource || '',
404
+ restProps as Partial<CoverImageHeaderModel>,
405
+ CoverImageHeaderModel.getSchema(),
406
+ { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
407
+ );
408
+
399
409
  // If no dataSource, use traditional props
400
410
  if (!dataSource) {
401
411
  return <CoverImageHeaderView {...restProps} />;
402
412
  }
403
413
 
404
- // Use data binding
405
- const { dataSource: _source, loading, error, cached, ...coverImageHeaderProps } = useDataBinding<CoverImageHeaderModel>(
406
- dataSource,
407
- restProps as Partial<CoverImageHeaderModel>,
408
- CoverImageHeaderModel.getSchema(),
409
- { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
410
- );
414
+ // Use data binding result
415
+ const { loading, error, ...coverImageHeaderProps } = bindingResult;
411
416
 
412
417
  // Show loading state
413
418
  if (loading) {