@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,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * FeatureCard Component - Unified feature card with data binding support
3
5
  *
@@ -153,8 +155,8 @@ function FeatureCardView({
153
155
  onClick: onClick || (() => {})
154
156
  }] : []);
155
157
 
156
- const handleClick = onClick || htmlProps.onClick;
157
- const { onClick: _, ...filteredHtmlProps } = htmlProps || {};
158
+ const handleClick = onClick || htmlProps?.onClick;
159
+ const { onClick: _htmlOnClick, ...filteredHtmlProps } = htmlProps || {};
158
160
 
159
161
  return (
160
162
  <Paper
@@ -256,22 +258,25 @@ function FeatureCardView({
256
258
  */
257
259
  function FeatureCard(props: FeatureCardProps) {
258
260
  const { dataSource, bindingOptions, ...restProps } = props;
259
-
261
+
260
262
  // Mark as QwickApp component
261
- (FeatureCard as any)[QWICKAPP_COMPONENT] = true;
263
+ (FeatureCard as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
264
+
265
+ // Always call hooks unconditionally
266
+ const bindingResult = useDataBinding<FeatureCardModel>(
267
+ dataSource || '',
268
+ restProps as Partial<FeatureCardModel>,
269
+ FeatureCardModel.getSchema(),
270
+ { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
271
+ );
262
272
 
263
273
  // If no dataSource, use traditional props
264
274
  if (!dataSource) {
265
275
  return <FeatureCardView {...restProps} />;
266
276
  }
267
277
 
268
- // Use data binding
269
- const { dataSource: _source, loading, error, cached, ...featureProps } = useDataBinding<FeatureCardModel>(
270
- dataSource,
271
- restProps as Partial<FeatureCardModel>,
272
- FeatureCardModel.getSchema(),
273
- { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
274
- );
278
+ // Use data binding result
279
+ const { loading, error, ...featureProps } = bindingResult;
275
280
 
276
281
  // Show loading state
277
282
  if (loading) {
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * FeatureGrid Component - Responsive grid for showcasing features with data binding support
3
5
  *
@@ -62,7 +64,7 @@ function FeatureGridView({
62
64
  const { styleProps, htmlProps } = useBaseProps(restProps);
63
65
 
64
66
  // Mark as QwickApp component
65
- (FeatureGridView as any)[QWICKAPP_COMPONENT] = true;
67
+ (FeatureGridView as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
66
68
 
67
69
  // Map gap to spacing value for GridLayout
68
70
  const getSpacing = (): 'none' | 'tiny' | 'small' | 'medium' | 'large' | 'huge' => {
@@ -90,18 +92,21 @@ function FeatureGridView({
90
92
  function FeatureGrid(props: FeatureGridProps) {
91
93
  const { dataSource, bindingOptions, ...restProps } = props;
92
94
 
95
+ // Always call hooks unconditionally
96
+ const bindingResult = useDataBinding<FeatureGridModel>(
97
+ dataSource || '',
98
+ restProps as Partial<FeatureGridModel>,
99
+ FeatureGridModel.getSchema(),
100
+ { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
101
+ );
102
+
93
103
  // If no dataSource, use traditional props
94
104
  if (!dataSource) {
95
105
  return <FeatureGridView {...restProps} />;
96
106
  }
97
107
 
98
- // Use data binding
99
- const { dataSource: _source, loading, error, cached, ...featureGridProps } = useDataBinding<FeatureGridModel>(
100
- dataSource,
101
- restProps as Partial<FeatureGridModel>,
102
- FeatureGridModel.getSchema(),
103
- { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
104
- );
108
+ // Use data binding result
109
+ const { loading, error, ...featureGridProps } = bindingResult;
105
110
 
106
111
  // Show loading state
107
112
  if (loading) {
@@ -1,13 +1,15 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * Footer - Reusable footer component with flexible layout options
3
- *
5
+ *
4
6
  * Provides a clean footer layout with:
5
7
  * - Configurable orientation (vertical/horizontal)
6
8
  * - Optional logo/branding
7
9
  * - Multiple sections for links, text, or custom content
8
10
  * - Responsive design with MUI components
9
11
  * - Copyright and legal information support
10
- *
12
+ *
11
13
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
12
14
  */
13
15
 
@@ -52,8 +54,8 @@ interface FooterViewProps extends WithBaseProps {
52
54
  sections?: FooterSection[];
53
55
  /** Optional logo or branding element */
54
56
  logo?: React.ReactNode;
55
- /** Copyright text */
56
- copyright?: string;
57
+ /** Copyright text or custom React element */
58
+ copyright?: string | React.ReactNode;
57
59
  /** Additional legal or info text */
58
60
  legalText?: string;
59
61
  /** Layout orientation */
@@ -64,7 +66,7 @@ interface FooterViewProps extends WithBaseProps {
64
66
  showDivider?: boolean;
65
67
  }
66
68
 
67
- export interface FooterProps extends FooterViewProps, WithDataBinding { }
69
+ export interface FooterProps extends FooterViewProps, WithDataBinding {}
68
70
 
69
71
  function FooterView({
70
72
  sections = [],
@@ -79,7 +81,7 @@ function FooterView({
79
81
  const { gridProps, styleProps, htmlProps } = useBaseProps(restProps);
80
82
 
81
83
  // Mark as QwickApp component
82
- (FooterView as any)[QWICKAPP_COMPONENT] = true;
84
+ (FooterView as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
83
85
  const theme = useTheme();
84
86
  const isMobile = useMediaQuery(theme.breakpoints.down('md'));
85
87
 
@@ -263,9 +265,13 @@ function FooterView({
263
265
  }}
264
266
  >
265
267
  {copyright && (
266
- <Text variant="caption" customColor='var(--theme-text-secondary)'>
267
- {copyright}
268
- </Text>
268
+ typeof copyright === 'string' ? (
269
+ <Text variant="caption" customColor='var(--theme-text-secondary)'>
270
+ {copyright}
271
+ </Text>
272
+ ) : (
273
+ copyright
274
+ )
269
275
  )}
270
276
  {legalText && (
271
277
  <Text variant="caption" customColor="var(--theme-text-secondary)">
@@ -283,18 +289,21 @@ function FooterView({
283
289
  function Footer(props: FooterProps) {
284
290
  const { dataSource, bindingOptions, ...restProps } = props;
285
291
 
292
+ // Always call hooks unconditionally
293
+ const bindingResult = useDataBinding<FooterModel>(
294
+ dataSource || '',
295
+ restProps as Partial<FooterModel>,
296
+ FooterModel.getSchema(),
297
+ { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
298
+ );
299
+
286
300
  // If no dataSource, use traditional props
287
301
  if (!dataSource) {
288
302
  return <FooterView {...restProps} />;
289
303
  }
290
304
 
291
- // Use data binding
292
- const { dataSource: _source, loading, error, cached, ...footerProps } = useDataBinding<FooterModel>(
293
- dataSource,
294
- restProps as Partial<FooterModel>,
295
- FooterModel.getSchema(),
296
- { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
297
- );
305
+ // Use data binding result
306
+ const { loading, error, ...footerProps } = bindingResult;
298
307
 
299
308
  // Show loading state
300
309
  if (loading) {
@@ -19,11 +19,12 @@
19
19
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
20
20
  */
21
21
 
22
- import { Box, Container, Stack, Typography, useTheme } from '@mui/material';
22
+ import { Box, Container, Stack, useTheme } from '@mui/material';
23
23
  import React from 'react';
24
24
  import { createSerializableView, SerializableComponent } from '../shared/createSerializableView';
25
25
  import { ViewProps } from '../shared/viewProps';
26
26
  import { Button, ButtonProps } from '../buttons/Button';
27
+ import Text from './Text';
27
28
 
28
29
  /**
29
30
  * Props interface for HeroBlock component - extends ViewProps
@@ -68,7 +69,7 @@ function HeroBlockView({
68
69
  overlayOpacity = 0.5,
69
70
  gridProps,
70
71
  ...props
71
- }: HeroBlockProps & { gridProps?: any }) {
72
+ }: HeroBlockProps & { gridProps?: unknown }) {
72
73
  const theme = useTheme();
73
74
 
74
75
  // Map height variants to actual heights
@@ -107,10 +108,6 @@ function HeroBlockView({
107
108
 
108
109
  // Get text color based on background
109
110
  const getTextColor = () => {
110
- if (backgroundImage || backgroundGradient) {
111
- return '#ffffff'; // White text on images/gradients
112
- }
113
-
114
111
  switch (backgroundColor) {
115
112
  case 'primary':
116
113
  return theme.palette.primary.contrastText;
@@ -127,7 +124,7 @@ function HeroBlockView({
127
124
  <Box
128
125
  component="section"
129
126
  {...props}
130
- {...(gridProps && { 'data-grid': JSON.stringify(gridProps) })}
127
+ {...(gridProps ? { 'data-grid': JSON.stringify(gridProps) } : {})}
131
128
  sx={{
132
129
  position: 'relative',
133
130
  display: 'flex',
@@ -172,9 +169,10 @@ function HeroBlockView({
172
169
  >
173
170
  <Stack spacing={3} alignItems={textAlign === 'center' ? 'center' : textAlign === 'right' ? 'flex-end' : 'flex-start'}>
174
171
  {/* Title */}
175
- <Typography
172
+ <Text
176
173
  variant="h2"
177
174
  component="h1"
175
+ customColor='var(--theme-on-primary)'
178
176
  sx={{
179
177
  fontWeight: 700,
180
178
  fontSize: {
@@ -188,21 +186,22 @@ function HeroBlockView({
188
186
  }}
189
187
  >
190
188
  {title}
191
- </Typography>
189
+ </Text>
192
190
 
193
191
  {/* Subtitle */}
194
192
  {subtitle && (
195
- <Typography
193
+ <Text
196
194
  variant="h5"
197
195
  component="p"
196
+ customColor='var(--theme-on-primary)'
197
+ fontWeight='400'
198
198
  sx={{
199
199
  opacity: 0.9,
200
- maxWidth: '600px',
201
- fontWeight: 400,
200
+ maxWidth: '600px'
202
201
  }}
203
202
  >
204
203
  {subtitle}
205
- </Typography>
204
+ </Text>
206
205
  )}
207
206
 
208
207
  {/* Actions */}
@@ -1,6 +1,8 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * Image - Comprehensive image display component with serialization support
3
- *
5
+ *
4
6
  * Features:
5
7
  * - Responsive image handling with srcSet and sizes
6
8
  * - Multiple fit modes and positioning options
@@ -9,14 +11,14 @@
9
11
  * - Lazy loading support
10
12
  * - Fallback image handling
11
13
  * - Full serialization support via factory pattern
12
- *
14
+ *
13
15
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
14
16
  */
15
17
 
16
- import React, { ReactElement, useState, useCallback } from 'react';
18
+ import React, { useState, useCallback } from 'react';
17
19
  import { Box, Skeleton, Typography, useTheme } from '@mui/material';
18
20
  import { BrokenImage as BrokenImageIcon } from '@mui/icons-material';
19
- import ImageModel, { ImageFit, ImageLoading, ImagePosition } from '../../schemas/ImageSchema';
21
+ import { ImageFit, ImageLoading, ImagePosition } from '../../schemas/ImageSchema';
20
22
  import { createSerializableView, SerializableComponent } from '../shared/createSerializableView';
21
23
  import { ViewProps } from '../shared/viewProps';
22
24
 
@@ -221,13 +223,19 @@ export const Image: SerializableComponent<ImageProps> = createSerializableView<I
221
223
  // Image component uses default react-children strategy
222
224
  });
223
225
 
226
+ // Type for pattern registry with basic methods
227
+ interface PatternRegistry {
228
+ hasPattern(pattern: string): boolean;
229
+ registerPattern(pattern: string, handler: (element: Element) => unknown): void;
230
+ }
231
+
224
232
  // Register HTML patterns that Image component can handle
225
- (Image as any).registerPatternHandlers = (registry: any): void => {
233
+ (Image as unknown as { registerPatternHandlers: (registry: PatternRegistry) => void }).registerPatternHandlers = (registry: PatternRegistry): void => {
226
234
  // Register img elements
227
235
  if (!registry.hasPattern('img')) {
228
236
  registry.registerPattern('img', transformImage);
229
237
  }
230
-
238
+
231
239
  // Register figure elements with img
232
240
  if (!registry.hasPattern('figure img')) {
233
241
  registry.registerPattern('figure img', transformFigureImage);
@@ -235,7 +243,7 @@ export const Image: SerializableComponent<ImageProps> = createSerializableView<I
235
243
  };
236
244
 
237
245
  // Transform img elements to Image component
238
- function transformImage(element: Element): any {
246
+ function transformImage(element: Element): unknown {
239
247
  const src = element.getAttribute('src') || '';
240
248
  const alt = element.getAttribute('alt') || '';
241
249
  const width = element.getAttribute('width');
@@ -255,7 +263,7 @@ function transformImage(element: Element): any {
255
263
  }
256
264
 
257
265
  // Transform figure > img elements to Image component with caption support
258
- function transformFigureImage(element: Element): any {
266
+ function transformFigureImage(element: Element): unknown {
259
267
  const figure = element.closest('figure');
260
268
  const figcaption = figure?.querySelector('figcaption');
261
269
  const caption = figcaption?.textContent || '';
@@ -1,12 +1,14 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * PageBannerHeader - Facebook-style banner header with cover image and profile info
3
- *
5
+ *
4
6
  * Similar to social media banners with:
5
7
  * - Large cover/banner image background
6
8
  * - Profile image overlay (typically bottom-left)
7
9
  * - Info section with title, subtitle, and metadata
8
10
  * - Action buttons in various positions
9
- *
11
+ *
10
12
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
11
13
  */
12
14
 
@@ -26,7 +28,7 @@ import {
26
28
  } from '@mui/material';
27
29
  import { WithDataBinding, SchemaProps } from '@qwickapps/schema';
28
30
  import React from 'react';
29
- import { useBaseProps, useDataBinding, WithBaseProps } from '../../hooks';
31
+ import { useBaseProps, useDataBinding} from '../../hooks';
30
32
  import PageBannerHeaderModel from '../../schemas/PageBannerHeaderSchema';
31
33
  import { HeaderAction } from './CoverImageHeader';
32
34
 
@@ -45,7 +47,6 @@ export interface PageBannerHeaderProps extends PageBannerHeaderViewProps, WithDa
45
47
 
46
48
  function PageBannerHeaderView({
47
49
  coverImage,
48
- coverImageAlt = '',
49
50
  profileImage,
50
51
  profileImageAlt = '',
51
52
  profileImageSize = 'large',
@@ -383,18 +384,21 @@ function PageBannerHeaderView({
383
384
  function PageBannerHeader(props: PageBannerHeaderProps) {
384
385
  const { dataSource, bindingOptions, ...restProps } = props;
385
386
 
387
+ // Always call hooks unconditionally
388
+ const bindingResult = useDataBinding<PageBannerHeaderModel>(
389
+ dataSource || '',
390
+ restProps as Partial<PageBannerHeaderModel>,
391
+ PageBannerHeaderModel.getSchema(),
392
+ { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
393
+ );
394
+
386
395
  // If no dataSource, use traditional props
387
396
  if (!dataSource) {
388
397
  return <PageBannerHeaderView {...restProps} />;
389
398
  }
390
399
 
391
- // Use data binding
392
- const { dataSource: _source, loading, error, cached, ...modelProps } = useDataBinding<PageBannerHeaderModel>(
393
- dataSource,
394
- restProps as Partial<PageBannerHeaderModel>,
395
- PageBannerHeaderModel.getSchema(),
396
- { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
397
- );
400
+ // Use data binding result
401
+ const { loading, error, ...modelProps } = bindingResult;
398
402
 
399
403
  // Convert HeaderActionModel[] to HeaderAction[] by adding default onClick handlers
400
404
  const convertedActions: HeaderAction[] | undefined = modelProps.actions
@@ -1,10 +1,12 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * ProductCard - Unified product card component with variants
3
- *
5
+ *
4
6
  * A flexible product card that can display products in different formats:
5
7
  * - Compact variant: For showcases and lists (shows limited features)
6
8
  * - Detailed variant: For product pages (shows full details)
7
- *
9
+ *
8
10
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
9
11
  */
10
12
 
@@ -115,7 +117,7 @@ function ProductCardView({
115
117
  const actions: ProductCardAction[] = [
116
118
  {
117
119
  id: 'primary',
118
- label: product.status === 'launched' ? 'Launch App' :
120
+ label: product.status === 'launched' ? 'Learn More' :
119
121
  product.status === 'beta' ? 'Try Beta' :
120
122
  product.status === 'coming-soon' ? 'Coming Soon' :
121
123
  product.status,
@@ -286,6 +288,8 @@ function ProductCardView({
286
288
  fontWeight: 500,
287
289
  textTransform: 'capitalize',
288
290
  zIndex: 2,
291
+ height: '28px',
292
+ px: 1.5,
289
293
  '& .MuiChip-icon': {
290
294
  color: 'white'
291
295
  }
@@ -327,21 +331,21 @@ function ProductCardView({
327
331
 
328
332
  {/* Product Info */}
329
333
  <Box sx={{ flex: 1, display: 'flex', flexDirection: 'column' }}>
330
- <Box sx={{ mb: 2 }}>
331
- <Typography
332
- variant="h4"
334
+ <Box sx={{ mb: 3 }}>
335
+ <Typography
336
+ variant="h4"
333
337
  component="h3"
334
- sx={{
335
- mb: 1,
338
+ sx={{
339
+ mb: 1,
336
340
  fontSize: variant === 'detailed' ? '1.75rem' : '1.5rem',
337
341
  fontWeight: 600
338
342
  }}
339
343
  >
340
344
  {product.name}
341
345
  </Typography>
342
- <Typography
346
+ <Typography
343
347
  variant="overline"
344
- sx={{
348
+ sx={{
345
349
  mb: 1.5,
346
350
  color: 'primary.main',
347
351
  fontSize: '0.9rem',
@@ -352,9 +356,9 @@ function ProductCardView({
352
356
  >
353
357
  {product.category}
354
358
  </Typography>
355
- <Typography
359
+ <Typography
356
360
  variant="body1"
357
- sx={{
361
+ sx={{
358
362
  opacity: 0.8,
359
363
  lineHeight: 1.6
360
364
  }}
@@ -363,11 +367,11 @@ function ProductCardView({
363
367
  </Typography>
364
368
  </Box>
365
369
 
366
- {/* Features */}
367
- {featuresListElement}
370
+ {/* Features - only show if features exist */}
371
+ {product.features && product.features.length > 0 && featuresListElement}
368
372
 
369
- {/* Technologies */}
370
- {technologiesSectionElement}
373
+ {/* Technologies - only show if technologies exist */}
374
+ {product.technologies && product.technologies.length > 0 && technologiesSectionElement}
371
375
 
372
376
  {/* Action Buttons */}
373
377
  <Box sx={{
@@ -400,22 +404,25 @@ function ProductCardView({
400
404
  */
401
405
  function ProductCard(props: ProductCardProps) {
402
406
  const { dataSource, bindingOptions, ...restProps } = props;
403
-
407
+
404
408
  // Mark as QwickApp component
405
- (ProductCard as any)[QWICKAPP_COMPONENT] = true;
409
+ (ProductCard as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
410
+
411
+ // Always call hooks unconditionally
412
+ const bindingResult = useDataBinding<ProductCardModel>(
413
+ dataSource || '',
414
+ restProps as Partial<ProductCardModel>,
415
+ ProductCardModel.getSchema(),
416
+ { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
417
+ );
406
418
 
407
419
  // If no dataSource, use traditional props
408
420
  if (!dataSource) {
409
421
  return <ProductCardView {...restProps} />;
410
422
  }
411
423
 
412
- // Use data binding
413
- const { dataSource: _source, loading, error, cached, ...productProps } = useDataBinding<ProductCardModel>(
414
- dataSource,
415
- restProps as Partial<ProductCardModel>,
416
- ProductCardModel.getSchema(),
417
- { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
418
- );
424
+ // Use data binding result
425
+ const { loading, error, ...productProps } = bindingResult;
419
426
 
420
427
  // Show loading state
421
428
  if (loading) {
@@ -55,7 +55,7 @@ function SectionView({
55
55
  component = 'section',
56
56
  gridProps,
57
57
  ...props
58
- }: SectionProps & { gridProps?: any }) {
58
+ }: SectionProps & { gridProps?: unknown }) {
59
59
 
60
60
  // Return empty state if no content
61
61
  if (!children) {
@@ -63,7 +63,7 @@ function SectionView({
63
63
  <Box
64
64
  component={component}
65
65
  {...props}
66
- {...(gridProps && { 'data-grid': JSON.stringify(gridProps) })}
66
+ {...(gridProps ? { 'data-grid': JSON.stringify(gridProps) } : {})}
67
67
  sx={{
68
68
  backgroundColor: background,
69
69
  color,
@@ -117,7 +117,7 @@ function SectionView({
117
117
  <Box
118
118
  component={component}
119
119
  {...props}
120
- {...(gridProps && { 'data-grid': JSON.stringify(gridProps) })}
120
+ {...(gridProps ? { 'data-grid': JSON.stringify(gridProps) } : {})}
121
121
  sx={{
122
122
  backgroundColor: background,
123
123
  color,
@@ -153,35 +153,42 @@ export const Section: SerializableComponent<SectionProps> = createSerializableVi
153
153
  View: SectionView,
154
154
  finalize: (props: SectionProps) => {
155
155
  // Handle type conversion for contentMaxWidth - convert "false" string to boolean false
156
- if ((props.contentMaxWidth as any) === "false") {
156
+ if ((props.contentMaxWidth as unknown) === "false") {
157
157
  return { ...props, contentMaxWidth: false as BreakpointValue };
158
158
  }
159
159
  return props;
160
160
  }
161
161
  });
162
162
 
163
+ // Type for pattern registry with basic methods
164
+ interface PatternRegistry {
165
+ hasPattern(pattern: string): boolean;
166
+ registerPattern(pattern: string, handler: (element: Element) => unknown): void;
167
+ }
168
+
163
169
  // Register HTML patterns that Section component can handle
164
- (Section as any).registerPatternHandlers = (registry: any): void => {
170
+ (Section as unknown as { registerPatternHandlers: (registry: PatternRegistry) => void }).registerPatternHandlers = (registry: PatternRegistry): void => {
165
171
  // Register section element pattern
166
172
  if (!registry.hasPattern('section')) {
167
- registry.registerPattern('section', (Section as any).transformSection);
173
+ registry.registerPattern('section', (Section as unknown as { transformSection: (element: Element) => unknown }).transformSection);
168
174
  }
169
-
175
+
170
176
  // Register section with specific classes
171
177
  if (!registry.hasPattern('section.blog-section')) {
172
- registry.registerPattern('section.blog-section', (Section as any).transformBlogSection);
178
+ registry.registerPattern('section.blog-section', (Section as unknown as { transformBlogSection: (element: Element) => unknown }).transformBlogSection);
173
179
  }
174
180
  };
175
181
 
176
182
  // Transform generic section elements to Section component
177
- (Section as any).transformSection = (element: Element): any => {
183
+ (Section as unknown as { transformSection: (element: Element) => unknown }).transformSection = (element: Element): unknown => {
178
184
  const padding = element.getAttribute('data-padding') || 'medium';
179
185
  const background = element.getAttribute('data-background');
180
186
  const contentMaxWidth = element.getAttribute('data-max-width') || 'lg';
181
187
 
182
188
  return {
183
189
  tagName: 'Section',
184
- props: {
190
+ version: '1.0.0',
191
+ data: {
185
192
  padding,
186
193
  background,
187
194
  contentMaxWidth,
@@ -191,13 +198,14 @@ export const Section: SerializableComponent<SectionProps> = createSerializableVi
191
198
  };
192
199
 
193
200
  // Transform blog section elements to Section component with specific styling
194
- (Section as any).transformBlogSection = (element: Element): any => {
201
+ (Section as unknown as { transformBlogSection: (element: Element) => unknown }).transformBlogSection = (element: Element): unknown => {
195
202
  const padding = element.getAttribute('data-padding') || 'large';
196
203
  const background = element.getAttribute('data-background') || 'var(--theme-surface)';
197
-
204
+
198
205
  return {
199
206
  tagName: 'Section',
200
- props: {
207
+ version: '1.0.0',
208
+ data: {
201
209
  padding,
202
210
  background,
203
211
  contentMaxWidth: 'md',