@qwickapps/react-framework 1.4.8 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (730) hide show
  1. package/README.md +36 -3
  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 +4929 -2942
  118. package/dist/index.js +4426 -2410
  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.latest.css +172 -0
  124. package/dist/palettes/palette-autumn.latest.min.css +1 -0
  125. package/dist/palettes/palette-cosmic.1.4.9.min.css +1 -0
  126. package/dist/palettes/palette-cosmic.1.5.0.css +172 -0
  127. package/dist/palettes/palette-cosmic.1.5.0.min.css +1 -0
  128. package/dist/palettes/palette-cosmic.latest.css +172 -0
  129. package/dist/palettes/palette-cosmic.latest.min.css +1 -0
  130. package/dist/palettes/palette-default.1.4.9.min.css +1 -0
  131. package/dist/palettes/palette-default.1.5.0.css +178 -0
  132. package/dist/palettes/palette-default.1.5.0.min.css +1 -0
  133. package/dist/palettes/palette-default.latest.css +178 -0
  134. package/dist/palettes/palette-default.latest.min.css +1 -0
  135. package/dist/palettes/palette-ocean.1.4.9.min.css +1 -0
  136. package/dist/palettes/palette-ocean.1.5.0.css +172 -0
  137. package/dist/palettes/palette-ocean.1.5.0.min.css +1 -0
  138. package/dist/palettes/palette-ocean.latest.css +172 -0
  139. package/dist/palettes/palette-ocean.latest.min.css +1 -0
  140. package/dist/palettes/palette-spring.1.4.9.min.css +1 -0
  141. package/dist/palettes/palette-spring.1.5.0.css +160 -0
  142. package/dist/palettes/palette-spring.1.5.0.min.css +1 -0
  143. package/dist/palettes/palette-spring.latest.css +160 -0
  144. package/dist/palettes/palette-spring.latest.min.css +1 -0
  145. package/dist/palettes/palette-winter.1.4.9.min.css +1 -0
  146. package/dist/palettes/palette-winter.1.5.0.css +172 -0
  147. package/dist/palettes/palette-winter.1.5.0.min.css +1 -0
  148. package/dist/palettes/palette-winter.latest.css +172 -0
  149. package/dist/palettes/palette-winter.latest.min.css +1 -0
  150. package/dist/schemas/ButtonSchema.d.ts +5 -2
  151. package/dist/schemas/ButtonSchema.d.ts.map +1 -1
  152. package/dist/schemas/CardListGridSchema.d.ts +4 -4
  153. package/dist/schemas/CardListGridSchema.d.ts.map +1 -1
  154. package/dist/schemas/ChoiceInputFieldSchema.d.ts +2 -2
  155. package/dist/schemas/ChoiceInputFieldSchema.d.ts.map +1 -1
  156. package/dist/schemas/CodeSchema.d.ts +1 -2
  157. package/dist/schemas/CodeSchema.d.ts.map +1 -1
  158. package/dist/schemas/FormBlockSchema.d.ts +2 -2
  159. package/dist/schemas/FormBlockSchema.d.ts.map +1 -1
  160. package/dist/schemas/GridCellSchema.d.ts +2 -4
  161. package/dist/schemas/GridCellSchema.d.ts.map +1 -1
  162. package/dist/schemas/GridLayoutSchema.d.ts +3 -5
  163. package/dist/schemas/GridLayoutSchema.d.ts.map +1 -1
  164. package/dist/schemas/HeroBlockSchema.d.ts +2 -2
  165. package/dist/schemas/HeroBlockSchema.d.ts.map +1 -1
  166. package/dist/schemas/HtmlInputFieldSchema.d.ts +2 -2
  167. package/dist/schemas/HtmlInputFieldSchema.d.ts.map +1 -1
  168. package/dist/schemas/ImageSchema.d.ts +2 -2
  169. package/dist/schemas/ImageSchema.d.ts.map +1 -1
  170. package/dist/schemas/SectionSchema.d.ts +2 -4
  171. package/dist/schemas/SectionSchema.d.ts.map +1 -1
  172. package/dist/schemas/SelectInputFieldSchema.d.ts +2 -2
  173. package/dist/schemas/SelectInputFieldSchema.d.ts.map +1 -1
  174. package/dist/schemas/SwitchInputFieldSchema.d.ts +2 -2
  175. package/dist/schemas/SwitchInputFieldSchema.d.ts.map +1 -1
  176. package/dist/schemas/TextInputFieldSchema.d.ts +2 -2
  177. package/dist/schemas/TextInputFieldSchema.d.ts.map +1 -1
  178. package/dist/schemas/ViewSchema.d.ts +8 -7
  179. package/dist/schemas/ViewSchema.d.ts.map +1 -1
  180. package/dist/schemas/transformers/ComponentTransformer.d.ts +2 -2
  181. package/dist/schemas/transformers/ComponentTransformer.d.ts.map +1 -1
  182. package/dist/schemas/transformers/ReactNodeTransformer.d.ts +2 -2
  183. package/dist/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -1
  184. package/dist/schemas/transformers/registry.d.ts +0 -7
  185. package/dist/schemas/transformers/registry.d.ts.map +1 -1
  186. package/dist/schemas/types/Serializable.d.ts +3 -3
  187. package/dist/schemas/types/Serializable.d.ts.map +1 -1
  188. package/dist/stories/_templates/SerializationTemplate.d.ts.map +1 -0
  189. package/dist/types/CollapsibleLayout.d.ts +3 -3
  190. package/dist/types/CollapsibleLayout.d.ts.map +1 -1
  191. package/dist/types/ContentProxy.d.ts +4 -4
  192. package/dist/types/ContentProxy.d.ts.map +1 -1
  193. package/dist/types/DataTypes.d.ts +4 -4
  194. package/dist/types/DataTypes.d.ts.map +1 -1
  195. package/dist/types/TemplateProvider.d.ts +1 -1
  196. package/dist/types/TemplateProvider.d.ts.map +1 -1
  197. package/dist/types/TemplateResolver.d.ts +1 -1
  198. package/dist/types/TemplateResolver.d.ts.map +1 -1
  199. package/dist/utils/htmlTransform.d.ts +1 -1
  200. package/dist/utils/htmlTransform.d.ts.map +1 -1
  201. package/dist/utils/iconMap.d.ts +48 -0
  202. package/dist/utils/iconMap.d.ts.map +1 -0
  203. package/dist/utils/index.d.ts +3 -0
  204. package/dist/utils/index.d.ts.map +1 -1
  205. package/dist/utils/logger.d.ts +11 -7
  206. package/dist/utils/logger.d.ts.map +1 -1
  207. package/dist/utils/paletteLoader.d.ts +34 -0
  208. package/dist/utils/paletteLoader.d.ts.map +1 -0
  209. package/dist/utils/paletteManifest.d.ts +51 -0
  210. package/dist/utils/paletteManifest.d.ts.map +1 -0
  211. package/dist/utils/paletteUtils.d.ts.map +1 -1
  212. package/dist/utils/reactUtils.d.ts +12 -6
  213. package/dist/utils/reactUtils.d.ts.map +1 -1
  214. package/dist/utils/spacing.d.ts +2 -2
  215. package/dist/utils/spacing.d.ts.map +1 -1
  216. package/dist/utils/themePerformanceMonitor.d.ts.map +1 -1
  217. package/dist/utils/themeUtils.d.ts.map +1 -1
  218. package/package.json +28 -9
  219. package/scripts/build-palettes.cjs +120 -0
  220. package/src/__tests__/components/Article.test.tsx +1 -1
  221. package/src/__tests__/components/Breadcrumbs.test.tsx +2 -2
  222. package/src/__tests__/components/Button.test.tsx +3 -3
  223. package/src/__tests__/components/CardListGrid.test.tsx +5 -5
  224. package/src/__tests__/components/ChoiceInputField.test.tsx +2 -2
  225. package/src/__tests__/components/Code.test.tsx +2 -2
  226. package/src/__tests__/components/Content.integration.test.tsx +1 -1
  227. package/src/__tests__/components/Content.test.tsx +5 -5
  228. package/src/__tests__/components/CoverImageHeader.test.tsx +3 -3
  229. package/src/__tests__/components/FeatureCard.integration.test.tsx +1 -1
  230. package/src/__tests__/components/FeatureGrid.integration.test.tsx +1 -1
  231. package/src/__tests__/components/FeatureGrid.test.tsx +3 -3
  232. package/src/__tests__/components/Footer.test.tsx +3 -3
  233. package/src/__tests__/components/FormBlock.test.tsx +2 -2
  234. package/src/__tests__/components/HeroBlock.integration.test.tsx +1 -1
  235. package/src/__tests__/components/HeroBlock.test.tsx +4 -4
  236. package/src/__tests__/components/HtmlInputField.test.tsx +8 -8
  237. package/src/__tests__/components/PageBannerHeader.test.tsx +7 -7
  238. package/src/__tests__/components/PaletteSwitcher.test.tsx +3 -3
  239. package/src/__tests__/components/ProductCard.test.tsx +1 -1
  240. package/src/__tests__/components/Section.integration.test.tsx +1 -1
  241. package/src/__tests__/components/Section.test.tsx +1 -1
  242. package/src/__tests__/components/SelectInputField.test.tsx +2 -2
  243. package/src/__tests__/components/TextInputField.test.tsx +4 -4
  244. package/src/__tests__/components/ThemeSwitcher.test.tsx +3 -3
  245. package/src/__tests__/components/base/Container.test.tsx +22 -21
  246. package/src/__tests__/components/blocks/Code.performance.test.tsx +10 -10
  247. package/src/__tests__/components/blocks/Code.serialization.test.tsx +9 -9
  248. package/src/__tests__/components/blocks/HeroBlock.serialization.test.tsx +2 -3
  249. package/src/__tests__/components/blocks/Image.serialization.test.tsx +8 -7
  250. package/src/__tests__/components/blocks/Section.serialization.test.tsx +8 -8
  251. package/src/__tests__/components/blocks/Text.performance.test.tsx +5 -5
  252. package/src/__tests__/components/blocks/Text.serialization.test.tsx +9 -9
  253. package/src/__tests__/components/buttons/Button.serialization.test.tsx +4 -4
  254. package/src/__tests__/components/input/FormComponents.serialization.test.tsx +9 -9
  255. package/src/__tests__/components/input/SelectInputField.serialization.test.tsx +16 -18
  256. package/src/__tests__/components/input/TextInputField.serialization.test.tsx +9 -9
  257. package/src/__tests__/components/layout/CollapsibleLayout.test.tsx +5 -9
  258. package/src/__tests__/components/layout/GridCell.serialization.test.tsx +5 -5
  259. package/src/__tests__/components/layout/GridLayout.serialization.test.tsx +5 -5
  260. package/src/__tests__/hooks/usePrintMode.test.ts +1 -0
  261. package/src/__tests__/schemas/builders.test.ts +2 -2
  262. package/src/__tests__/schemas/transformers/ComponentSerializationPatterns.test.tsx +28 -28
  263. package/src/__tests__/schemas/transformers/ComponentTransformer.htmlPatterns.test.ts +5 -5
  264. package/src/__tests__/schemas/transformers/ComponentTransformer.test.ts +11 -11
  265. package/src/__tests__/schemas/transformers/CrossBrowserCompatibility.test.ts +10 -10
  266. package/src/__tests__/schemas/transformers/MockSerializableComponent.ts +15 -15
  267. package/src/__tests__/schemas/transformers/RealWorldScenarios.test.tsx +19 -19
  268. package/src/__tests__/schemas/transformers/SerializationErrorHandling.test.ts +15 -15
  269. package/src/__tests__/schemas/transformers/SerializationIntegration.test.tsx +19 -21
  270. package/src/__tests__/schemas/transformers/SerializationPerformance.test.ts +15 -15
  271. package/src/__tests__/schemas/transformers/TestAutomation.test.ts +3 -3
  272. package/src/__tests__/schemas/transformers/nested-serialization.test.tsx +1 -1
  273. package/src/__tests__/schemas/transformers/round-trip-component-serialization.test.tsx +10 -10
  274. package/src/__tests__/utils/optional-logging.test.ts +3 -3
  275. package/src/components/AccessibilityProvider.tsx +4 -2
  276. package/src/components/ErrorBoundary.tsx +1 -1
  277. package/src/components/Html.tsx +14 -17
  278. package/src/components/Logo.tsx +44 -33
  279. package/src/components/Markdown.tsx +9 -9
  280. package/src/components/ProductLogo.tsx +118 -0
  281. package/src/components/QwickApp.css +46 -1063
  282. package/src/components/QwickApp.tsx +1 -1
  283. package/src/components/QwickAppsLogo.tsx +1 -1
  284. package/src/components/ResponsiveMenu.tsx +13 -2
  285. package/src/components/SafeSpan.tsx +8 -9
  286. package/src/components/Scaffold.css +14 -0
  287. package/src/components/Scaffold.tsx +71 -27
  288. package/src/components/base/Container.tsx +2 -2
  289. package/src/components/base/ModelView.tsx +28 -27
  290. package/src/components/base/index.ts +1 -1
  291. package/src/components/blocks/Article.tsx +251 -36
  292. package/src/components/blocks/CardListGrid.tsx +18 -14
  293. package/src/components/blocks/Code.tsx +18 -13
  294. package/src/components/blocks/Content.tsx +15 -10
  295. package/src/components/blocks/CoverImageHeader.tsx +15 -10
  296. package/src/components/blocks/FeatureCard.tsx +16 -11
  297. package/src/components/blocks/FeatureGrid.tsx +13 -8
  298. package/src/components/blocks/Footer.tsx +44 -35
  299. package/src/components/blocks/HeroBlock.tsx +12 -13
  300. package/src/components/blocks/Image.tsx +16 -8
  301. package/src/components/blocks/PageBannerHeader.tsx +16 -12
  302. package/src/components/blocks/ProductCard.tsx +32 -25
  303. package/src/components/blocks/Section.tsx +21 -13
  304. package/src/components/blocks/Text.tsx +33 -15
  305. package/src/components/buttons/Button.tsx +110 -30
  306. package/src/components/buttons/PaletteSwitcher.tsx +11 -8
  307. package/src/components/buttons/ThemeSwitcher.tsx +20 -16
  308. package/src/components/dialogs/Dialog.tsx +126 -0
  309. package/src/components/dialogs/index.ts +15 -0
  310. package/src/components/forms/Captcha.tsx +291 -0
  311. package/src/components/forms/FormBlock.tsx +22 -15
  312. package/src/components/forms/FormCheckbox.tsx +116 -0
  313. package/src/components/forms/FormField.tsx +180 -0
  314. package/src/components/forms/FormSelect.tsx +140 -0
  315. package/src/components/forms/index.ts +13 -1
  316. package/src/components/index.ts +13 -2
  317. package/src/components/input/ChoiceInputField.tsx +1 -2
  318. package/src/components/input/HtmlInputField.tsx +2 -3
  319. package/src/components/input/SelectInputField.tsx +31 -5
  320. package/src/components/input/SwitchInputField.tsx +3 -4
  321. package/src/components/input/TextField.tsx +2 -2
  322. package/src/components/input/TextInputField.tsx +32 -6
  323. package/src/components/layout/CollapsibleLayout/CollapsibleLayout.tsx +13 -13
  324. package/src/components/layout/GridCell.tsx +10 -9
  325. package/src/components/layout/GridCellWrapper.tsx +1 -1
  326. package/src/components/layout/GridLayout.tsx +29 -32
  327. package/src/components/menu/MenuItem.tsx +2 -2
  328. package/src/components/pages/FormPage.tsx +0 -1
  329. package/src/components/pages/Page.tsx +2 -2
  330. package/src/components/shared/createSerializableView.tsx +24 -23
  331. package/src/components/shared/viewProps.ts +11 -11
  332. package/src/config/AppConfig.ts +2 -2
  333. package/src/config/__tests__/AppConfig.test.ts +3 -3
  334. package/src/config/__tests__/AppConfigBuilder.test.ts +10 -11
  335. package/src/config/types.ts +1 -1
  336. package/src/contexts/DataContext.tsx +58 -52
  337. package/src/contexts/PaletteContext.tsx +22 -9
  338. package/src/contexts/PrintModeContext.tsx +4 -4
  339. package/src/contexts/ThemeContext.tsx +3 -2
  340. package/src/hooks/useBaseProps.ts +10 -10
  341. package/src/hooks/useDataBinding.ts +15 -18
  342. package/src/hooks/usePrintMode.ts +3 -3
  343. package/src/index.ts +2 -0
  344. package/src/palettes/manifest.json +72 -0
  345. package/src/palettes/manifest.schema.json +74 -0
  346. package/src/schemas/ButtonSchema.ts +33 -0
  347. package/src/schemas/CardListGridSchema.ts +3 -3
  348. package/src/schemas/CodeSchema.ts +0 -1
  349. package/src/schemas/FeatureGridSchema.ts +1 -1
  350. package/src/schemas/FormBlockSchema.ts +1 -1
  351. package/src/schemas/GridCellSchema.ts +0 -1
  352. package/src/schemas/GridLayoutSchema.ts +0 -1
  353. package/src/schemas/SectionSchema.ts +0 -1
  354. package/src/schemas/ViewSchema.ts +7 -7
  355. package/src/schemas/transformers/ComponentTransformer.ts +39 -28
  356. package/src/schemas/transformers/ReactNodeTransformer.ts +18 -17
  357. package/src/schemas/transformers/registry.ts +28 -24
  358. package/src/schemas/types/Serializable.ts +3 -3
  359. package/src/setupTests.js +9 -0
  360. package/src/stories/AccessibilityProvider.stories.tsx +0 -1
  361. package/src/stories/Article.stories.tsx +1 -1
  362. package/src/stories/CardListGrid.stories.tsx +1 -1
  363. package/src/stories/ChoiceInputField.stories.tsx +2 -2
  364. package/src/stories/Code.stories.tsx +2 -3
  365. package/src/stories/CollapsibleLayout.stories.tsx +41 -37
  366. package/src/stories/Container.stories.tsx +1 -2
  367. package/src/stories/DataBinding.advanced.stories.tsx +15 -9
  368. package/src/stories/DataProvider.stories.tsx +33 -16
  369. package/src/stories/ErrorBoundary.stories.tsx +28 -26
  370. package/src/stories/FeatureGrid.stories.tsx +0 -1
  371. package/src/stories/FormBlock.stories.tsx +8 -8
  372. package/src/stories/FormComponents.stories.tsx +15 -11
  373. package/src/stories/GridCell.stories.tsx +5 -5
  374. package/src/stories/GridLayout.stories.tsx +5 -5
  375. package/src/stories/Image.stories.tsx +5 -7
  376. package/src/stories/Introduction.stories.tsx +0 -1
  377. package/src/stories/ModelView.stories.tsx +7 -7
  378. package/src/stories/SafeSpan.stories.tsx +7 -3
  379. package/src/stories/Section.stories.tsx +2 -2
  380. package/src/stories/Text.stories.tsx +1 -3
  381. package/src/stories/_templates/SerializationTemplate.tsx +0 -1
  382. package/src/templates/TemplateResolver.ts +2 -2
  383. package/src/types/CollapsibleLayout.ts +2 -2
  384. package/src/types/ContentProxy.ts +6 -6
  385. package/src/types/DataTypes.ts +4 -4
  386. package/src/types/TemplateProvider.ts +1 -1
  387. package/src/types/TemplateResolver.ts +1 -1
  388. package/src/utils/htmlTransform.tsx +17 -11
  389. package/src/utils/iconMap.tsx +221 -0
  390. package/src/utils/index.ts +4 -1
  391. package/src/utils/logger.ts +20 -14
  392. package/src/utils/paletteLoader.ts +218 -0
  393. package/src/utils/paletteManifest.ts +268 -0
  394. package/src/utils/paletteUtils.ts +19 -1
  395. package/src/utils/reactUtils.tsx +34 -33
  396. package/src/utils/spacing.ts +16 -17
  397. package/src/utils/themePerformanceMonitor.js +14 -6
  398. package/src/utils/themeUtils.ts +17 -2
  399. package/dist/components/base/ContainerView.d.ts +0 -65
  400. package/dist/components/base/ContainerView.d.ts.map +0 -1
  401. package/dist/components/blocks/Code-factory.d.ts +0 -22
  402. package/dist/components/blocks/Code-factory.d.ts.map +0 -1
  403. package/dist/components/blocks/Code-old.d.ts +0 -31
  404. package/dist/components/blocks/Code-old.d.ts.map +0 -1
  405. package/dist/qa/ConsoleWarningTest.d.ts +0 -5
  406. package/dist/qa/ConsoleWarningTest.d.ts.map +0 -1
  407. package/dist/qa/StorageKeyTest.d.ts +0 -6
  408. package/dist/qa/StorageKeyTest.d.ts.map +0 -1
  409. package/dist/qa/ThemeStorageKeyTest.d.ts +0 -6
  410. package/dist/qa/ThemeStorageKeyTest.d.ts.map +0 -1
  411. package/dist/schemas/ViewModelSchema.d.ts +0 -63
  412. package/dist/schemas/ViewModelSchema.d.ts.map +0 -1
  413. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts +0 -66
  414. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts.map +0 -1
  415. package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts +0 -66
  416. package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +0 -1
  417. package/dist/src/components/AccessibilityChecker.d.ts +0 -12
  418. package/dist/src/components/AccessibilityChecker.d.ts.map +0 -1
  419. package/dist/src/components/AccessibilityProvider.d.ts +0 -64
  420. package/dist/src/components/AccessibilityProvider.d.ts.map +0 -1
  421. package/dist/src/components/Breadcrumbs.d.ts +0 -39
  422. package/dist/src/components/Breadcrumbs.d.ts.map +0 -1
  423. package/dist/src/components/ErrorBoundary.d.ts +0 -46
  424. package/dist/src/components/ErrorBoundary.d.ts.map +0 -1
  425. package/dist/src/components/Html.d.ts +0 -58
  426. package/dist/src/components/Html.d.ts.map +0 -1
  427. package/dist/src/components/Logo.d.ts +0 -56
  428. package/dist/src/components/Logo.d.ts.map +0 -1
  429. package/dist/src/components/Markdown.d.ts +0 -51
  430. package/dist/src/components/Markdown.d.ts.map +0 -1
  431. package/dist/src/components/QwickApp.d.ts +0 -69
  432. package/dist/src/components/QwickApp.d.ts.map +0 -1
  433. package/dist/src/components/QwickAppsLogo.d.ts +0 -25
  434. package/dist/src/components/QwickAppsLogo.d.ts.map +0 -1
  435. package/dist/src/components/QwickIcon.d.ts +0 -23
  436. package/dist/src/components/QwickIcon.d.ts.map +0 -1
  437. package/dist/src/components/ResponsiveMenu.d.ts +0 -38
  438. package/dist/src/components/ResponsiveMenu.d.ts.map +0 -1
  439. package/dist/src/components/SafeSpan.d.ts +0 -29
  440. package/dist/src/components/SafeSpan.d.ts.map +0 -1
  441. package/dist/src/components/Scaffold.d.ts +0 -57
  442. package/dist/src/components/Scaffold.d.ts.map +0 -1
  443. package/dist/src/components/base/Container.d.ts +0 -33
  444. package/dist/src/components/base/Container.d.ts.map +0 -1
  445. package/dist/src/components/base/ModelView.d.ts +0 -92
  446. package/dist/src/components/base/ModelView.d.ts.map +0 -1
  447. package/dist/src/components/base/index.d.ts +0 -12
  448. package/dist/src/components/base/index.d.ts.map +0 -1
  449. package/dist/src/components/blocks/Article.d.ts +0 -32
  450. package/dist/src/components/blocks/Article.d.ts.map +0 -1
  451. package/dist/src/components/blocks/CardListGrid.d.ts +0 -23
  452. package/dist/src/components/blocks/CardListGrid.d.ts.map +0 -1
  453. package/dist/src/components/blocks/Code.d.ts +0 -37
  454. package/dist/src/components/blocks/Code.d.ts.map +0 -1
  455. package/dist/src/components/blocks/Content.d.ts +0 -24
  456. package/dist/src/components/blocks/Content.d.ts.map +0 -1
  457. package/dist/src/components/blocks/CoverImageHeader.d.ts +0 -44
  458. package/dist/src/components/blocks/CoverImageHeader.d.ts.map +0 -1
  459. package/dist/src/components/blocks/FeatureCard.d.ts +0 -66
  460. package/dist/src/components/blocks/FeatureCard.d.ts.map +0 -1
  461. package/dist/src/components/blocks/FeatureGrid.d.ts +0 -48
  462. package/dist/src/components/blocks/FeatureGrid.d.ts.map +0 -1
  463. package/dist/src/components/blocks/Footer.d.ts +0 -56
  464. package/dist/src/components/blocks/Footer.d.ts.map +0 -1
  465. package/dist/src/components/blocks/HeroBlock.d.ts +0 -55
  466. package/dist/src/components/blocks/HeroBlock.d.ts.map +0 -1
  467. package/dist/src/components/blocks/Image.d.ts +0 -40
  468. package/dist/src/components/blocks/Image.d.ts.map +0 -1
  469. package/dist/src/components/blocks/PageBannerHeader.d.ts +0 -30
  470. package/dist/src/components/blocks/PageBannerHeader.d.ts.map +0 -1
  471. package/dist/src/components/blocks/ProductCard.d.ts +0 -57
  472. package/dist/src/components/blocks/ProductCard.d.ts.map +0 -1
  473. package/dist/src/components/blocks/Section.d.ts +0 -45
  474. package/dist/src/components/blocks/Section.d.ts.map +0 -1
  475. package/dist/src/components/blocks/Text.d.ts +0 -34
  476. package/dist/src/components/blocks/Text.d.ts.map +0 -1
  477. package/dist/src/components/blocks/index.d.ts +0 -41
  478. package/dist/src/components/blocks/index.d.ts.map +0 -1
  479. package/dist/src/components/buttons/Button.d.ts +0 -41
  480. package/dist/src/components/buttons/Button.d.ts.map +0 -1
  481. package/dist/src/components/buttons/PaletteSwitcher.d.ts +0 -24
  482. package/dist/src/components/buttons/PaletteSwitcher.d.ts.map +0 -1
  483. package/dist/src/components/buttons/ThemeSwitcher.d.ts +0 -24
  484. package/dist/src/components/buttons/ThemeSwitcher.d.ts.map +0 -1
  485. package/dist/src/components/buttons/index.d.ts +0 -11
  486. package/dist/src/components/buttons/index.d.ts.map +0 -1
  487. package/dist/src/components/forms/FormBlock.d.ts +0 -51
  488. package/dist/src/components/forms/FormBlock.d.ts.map +0 -1
  489. package/dist/src/components/forms/index.d.ts +0 -8
  490. package/dist/src/components/forms/index.d.ts.map +0 -1
  491. package/dist/src/components/index.d.ts +0 -41
  492. package/dist/src/components/index.d.ts.map +0 -1
  493. package/dist/src/components/input/ChoiceInputField.d.ts +0 -29
  494. package/dist/src/components/input/ChoiceInputField.d.ts.map +0 -1
  495. package/dist/src/components/input/HtmlInputField.d.ts +0 -33
  496. package/dist/src/components/input/HtmlInputField.d.ts.map +0 -1
  497. package/dist/src/components/input/SelectInputField.d.ts +0 -31
  498. package/dist/src/components/input/SelectInputField.d.ts.map +0 -1
  499. package/dist/src/components/input/SwitchInputField.d.ts +0 -27
  500. package/dist/src/components/input/SwitchInputField.d.ts.map +0 -1
  501. package/dist/src/components/input/TextField.d.ts +0 -18
  502. package/dist/src/components/input/TextField.d.ts.map +0 -1
  503. package/dist/src/components/input/TextInputField.d.ts +0 -34
  504. package/dist/src/components/input/TextInputField.d.ts.map +0 -1
  505. package/dist/src/components/input/index.d.ts +0 -19
  506. package/dist/src/components/input/index.d.ts.map +0 -1
  507. package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts +0 -34
  508. package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts.map +0 -1
  509. package/dist/src/components/layout/CollapsibleLayout/index.d.ts +0 -9
  510. package/dist/src/components/layout/CollapsibleLayout/index.d.ts.map +0 -1
  511. package/dist/src/components/layout/GridCell.d.ts +0 -32
  512. package/dist/src/components/layout/GridCell.d.ts.map +0 -1
  513. package/dist/src/components/layout/GridCellWrapper.d.ts +0 -46
  514. package/dist/src/components/layout/GridCellWrapper.d.ts.map +0 -1
  515. package/dist/src/components/layout/GridLayout.d.ts +0 -50
  516. package/dist/src/components/layout/GridLayout.d.ts.map +0 -1
  517. package/dist/src/components/layout/index.d.ts +0 -14
  518. package/dist/src/components/layout/index.d.ts.map +0 -1
  519. package/dist/src/components/menu/Menu.d.ts +0 -1
  520. package/dist/src/components/menu/Menu.d.ts.map +0 -1
  521. package/dist/src/components/menu/MenuItem.d.ts +0 -31
  522. package/dist/src/components/menu/MenuItem.d.ts.map +0 -1
  523. package/dist/src/components/menu/index.d.ts +0 -7
  524. package/dist/src/components/menu/index.d.ts.map +0 -1
  525. package/dist/src/components/pages/FormPage.d.ts +0 -66
  526. package/dist/src/components/pages/FormPage.d.ts.map +0 -1
  527. package/dist/src/components/pages/Page.d.ts +0 -68
  528. package/dist/src/components/pages/Page.d.ts.map +0 -1
  529. package/dist/src/components/pages/index.d.ts +0 -10
  530. package/dist/src/components/pages/index.d.ts.map +0 -1
  531. package/dist/src/components/shared/createSerializableView.d.ts +0 -81
  532. package/dist/src/components/shared/createSerializableView.d.ts.map +0 -1
  533. package/dist/src/components/shared/viewProps.d.ts +0 -37
  534. package/dist/src/components/shared/viewProps.d.ts.map +0 -1
  535. package/dist/src/config/AppConfig.d.ts +0 -49
  536. package/dist/src/config/AppConfig.d.ts.map +0 -1
  537. package/dist/src/config/AppConfigBuilder.d.ts +0 -75
  538. package/dist/src/config/AppConfigBuilder.d.ts.map +0 -1
  539. package/dist/src/config/index.d.ts +0 -13
  540. package/dist/src/config/index.d.ts.map +0 -1
  541. package/dist/src/config/types.d.ts +0 -130
  542. package/dist/src/config/types.d.ts.map +0 -1
  543. package/dist/src/config.d.ts +0 -15
  544. package/dist/src/config.d.ts.map +0 -1
  545. package/dist/src/contexts/DataContext.d.ts +0 -139
  546. package/dist/src/contexts/DataContext.d.ts.map +0 -1
  547. package/dist/src/contexts/DimensionsContext.d.ts +0 -42
  548. package/dist/src/contexts/DimensionsContext.d.ts.map +0 -1
  549. package/dist/src/contexts/PaletteContext.d.ts +0 -53
  550. package/dist/src/contexts/PaletteContext.d.ts.map +0 -1
  551. package/dist/src/contexts/PrintModeContext.d.ts +0 -27
  552. package/dist/src/contexts/PrintModeContext.d.ts.map +0 -1
  553. package/dist/src/contexts/QwickAppContext.d.ts +0 -71
  554. package/dist/src/contexts/QwickAppContext.d.ts.map +0 -1
  555. package/dist/src/contexts/ThemeContext.d.ts +0 -65
  556. package/dist/src/contexts/ThemeContext.d.ts.map +0 -1
  557. package/dist/src/contexts/index.d.ts +0 -11
  558. package/dist/src/contexts/index.d.ts.map +0 -1
  559. package/dist/src/hooks/index.d.ts +0 -12
  560. package/dist/src/hooks/index.d.ts.map +0 -1
  561. package/dist/src/hooks/useBaseProps.d.ts +0 -101
  562. package/dist/src/hooks/useBaseProps.d.ts.map +0 -1
  563. package/dist/src/hooks/useDataBinding.d.ts +0 -22
  564. package/dist/src/hooks/useDataBinding.d.ts.map +0 -1
  565. package/dist/src/hooks/usePrintMode.d.ts +0 -39
  566. package/dist/src/hooks/usePrintMode.d.ts.map +0 -1
  567. package/dist/src/index.d.ts +0 -9
  568. package/dist/src/index.d.ts.map +0 -1
  569. package/dist/src/palettes/PaletteAutumn.d.ts +0 -10
  570. package/dist/src/palettes/PaletteAutumn.d.ts.map +0 -1
  571. package/dist/src/palettes/PaletteCosmic.d.ts +0 -10
  572. package/dist/src/palettes/PaletteCosmic.d.ts.map +0 -1
  573. package/dist/src/palettes/PaletteDefault.d.ts +0 -10
  574. package/dist/src/palettes/PaletteDefault.d.ts.map +0 -1
  575. package/dist/src/palettes/PaletteOcean.d.ts +0 -10
  576. package/dist/src/palettes/PaletteOcean.d.ts.map +0 -1
  577. package/dist/src/palettes/PaletteSpring.d.ts +0 -10
  578. package/dist/src/palettes/PaletteSpring.d.ts.map +0 -1
  579. package/dist/src/palettes/PaletteWinter.d.ts +0 -10
  580. package/dist/src/palettes/PaletteWinter.d.ts.map +0 -1
  581. package/dist/src/palettes/index.d.ts +0 -13
  582. package/dist/src/palettes/index.d.ts.map +0 -1
  583. package/dist/src/schemas/ActionSchema.d.ts +0 -21
  584. package/dist/src/schemas/ActionSchema.d.ts.map +0 -1
  585. package/dist/src/schemas/ArticleSchema.d.ts +0 -13
  586. package/dist/src/schemas/ArticleSchema.d.ts.map +0 -1
  587. package/dist/src/schemas/ButtonSchema.d.ts +0 -19
  588. package/dist/src/schemas/ButtonSchema.d.ts.map +0 -1
  589. package/dist/src/schemas/CardListGridSchema.d.ts +0 -17
  590. package/dist/src/schemas/CardListGridSchema.d.ts.map +0 -1
  591. package/dist/src/schemas/ChoiceInputFieldSchema.d.ts +0 -18
  592. package/dist/src/schemas/ChoiceInputFieldSchema.d.ts.map +0 -1
  593. package/dist/src/schemas/CodeSchema.d.ts +0 -18
  594. package/dist/src/schemas/CodeSchema.d.ts.map +0 -1
  595. package/dist/src/schemas/CollapsibleLayoutSchema.d.ts +0 -32
  596. package/dist/src/schemas/CollapsibleLayoutSchema.d.ts.map +0 -1
  597. package/dist/src/schemas/ContainerSchema.d.ts +0 -12
  598. package/dist/src/schemas/ContainerSchema.d.ts.map +0 -1
  599. package/dist/src/schemas/ContentSchema.d.ts +0 -21
  600. package/dist/src/schemas/ContentSchema.d.ts.map +0 -1
  601. package/dist/src/schemas/CoverImageHeaderSchema.d.ts +0 -28
  602. package/dist/src/schemas/CoverImageHeaderSchema.d.ts.map +0 -1
  603. package/dist/src/schemas/FeatureCardSchema.d.ts +0 -28
  604. package/dist/src/schemas/FeatureCardSchema.d.ts.map +0 -1
  605. package/dist/src/schemas/FeatureGridSchema.d.ts +0 -17
  606. package/dist/src/schemas/FeatureGridSchema.d.ts.map +0 -1
  607. package/dist/src/schemas/FeatureItemSchema.d.ts +0 -16
  608. package/dist/src/schemas/FeatureItemSchema.d.ts.map +0 -1
  609. package/dist/src/schemas/FooterItemSchema.d.ts +0 -15
  610. package/dist/src/schemas/FooterItemSchema.d.ts.map +0 -1
  611. package/dist/src/schemas/FooterSchema.d.ts +0 -20
  612. package/dist/src/schemas/FooterSchema.d.ts.map +0 -1
  613. package/dist/src/schemas/FooterSectionSchema.d.ts +0 -15
  614. package/dist/src/schemas/FooterSectionSchema.d.ts.map +0 -1
  615. package/dist/src/schemas/FormBlockSchema.d.ts +0 -19
  616. package/dist/src/schemas/FormBlockSchema.d.ts.map +0 -1
  617. package/dist/src/schemas/GridCellSchema.d.ts +0 -23
  618. package/dist/src/schemas/GridCellSchema.d.ts.map +0 -1
  619. package/dist/src/schemas/GridLayoutSchema.d.ts +0 -21
  620. package/dist/src/schemas/GridLayoutSchema.d.ts.map +0 -1
  621. package/dist/src/schemas/HeaderActionSchema.d.ts +0 -17
  622. package/dist/src/schemas/HeaderActionSchema.d.ts.map +0 -1
  623. package/dist/src/schemas/HeroBlockSchema.d.ts +0 -22
  624. package/dist/src/schemas/HeroBlockSchema.d.ts.map +0 -1
  625. package/dist/src/schemas/HtmlInputFieldSchema.d.ts +0 -18
  626. package/dist/src/schemas/HtmlInputFieldSchema.d.ts.map +0 -1
  627. package/dist/src/schemas/HtmlSchema.d.ts +0 -14
  628. package/dist/src/schemas/HtmlSchema.d.ts.map +0 -1
  629. package/dist/src/schemas/ImageSchema.d.ts +0 -32
  630. package/dist/src/schemas/ImageSchema.d.ts.map +0 -1
  631. package/dist/src/schemas/LogoSchema.d.ts +0 -35
  632. package/dist/src/schemas/LogoSchema.d.ts.map +0 -1
  633. package/dist/src/schemas/MarkdownSchema.d.ts +0 -14
  634. package/dist/src/schemas/MarkdownSchema.d.ts.map +0 -1
  635. package/dist/src/schemas/MetadataItemSchema.d.ts +0 -13
  636. package/dist/src/schemas/MetadataItemSchema.d.ts.map +0 -1
  637. package/dist/src/schemas/PageBannerHeaderSchema.d.ts +0 -28
  638. package/dist/src/schemas/PageBannerHeaderSchema.d.ts.map +0 -1
  639. package/dist/src/schemas/PageTemplateSchema.d.ts +0 -31
  640. package/dist/src/schemas/PageTemplateSchema.d.ts.map +0 -1
  641. package/dist/src/schemas/PaletteSwitcherSchema.d.ts +0 -16
  642. package/dist/src/schemas/PaletteSwitcherSchema.d.ts.map +0 -1
  643. package/dist/src/schemas/PrintConfigSchema.d.ts +0 -31
  644. package/dist/src/schemas/PrintConfigSchema.d.ts.map +0 -1
  645. package/dist/src/schemas/ProductCardSchema.d.ts +0 -39
  646. package/dist/src/schemas/ProductCardSchema.d.ts.map +0 -1
  647. package/dist/src/schemas/SafeSpanSchema.d.ts +0 -13
  648. package/dist/src/schemas/SafeSpanSchema.d.ts.map +0 -1
  649. package/dist/src/schemas/SectionSchema.d.ts +0 -16
  650. package/dist/src/schemas/SectionSchema.d.ts.map +0 -1
  651. package/dist/src/schemas/SelectInputFieldSchema.d.ts +0 -27
  652. package/dist/src/schemas/SelectInputFieldSchema.d.ts.map +0 -1
  653. package/dist/src/schemas/SwitchInputFieldSchema.d.ts +0 -18
  654. package/dist/src/schemas/SwitchInputFieldSchema.d.ts.map +0 -1
  655. package/dist/src/schemas/TextInputFieldSchema.d.ts +0 -22
  656. package/dist/src/schemas/TextInputFieldSchema.d.ts.map +0 -1
  657. package/dist/src/schemas/TextSchema.d.ts +0 -37
  658. package/dist/src/schemas/TextSchema.d.ts.map +0 -1
  659. package/dist/src/schemas/ThemeSwitcherSchema.d.ts +0 -19
  660. package/dist/src/schemas/ThemeSwitcherSchema.d.ts.map +0 -1
  661. package/dist/src/schemas/ViewSchema.d.ts +0 -66
  662. package/dist/src/schemas/ViewSchema.d.ts.map +0 -1
  663. package/dist/src/schemas/index.d.ts +0 -47
  664. package/dist/src/schemas/index.d.ts.map +0 -1
  665. package/dist/src/schemas/transformers/ComponentTransformer.d.ts +0 -128
  666. package/dist/src/schemas/transformers/ComponentTransformer.d.ts.map +0 -1
  667. package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts +0 -53
  668. package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts.map +0 -1
  669. package/dist/src/schemas/transformers/registry.d.ts +0 -18
  670. package/dist/src/schemas/transformers/registry.d.ts.map +0 -1
  671. package/dist/src/schemas/types/Serializable.d.ts +0 -46
  672. package/dist/src/schemas/types/Serializable.d.ts.map +0 -1
  673. package/dist/src/stories/_templates/SerializationTemplate.d.ts.map +0 -1
  674. package/dist/src/templates/TemplateResolver.d.ts +0 -52
  675. package/dist/src/templates/TemplateResolver.d.ts.map +0 -1
  676. package/dist/src/templates/index.d.ts +0 -7
  677. package/dist/src/templates/index.d.ts.map +0 -1
  678. package/dist/src/types/CacheProvider.d.ts +0 -18
  679. package/dist/src/types/CacheProvider.d.ts.map +0 -1
  680. package/dist/src/types/CollapsibleLayout.d.ts +0 -142
  681. package/dist/src/types/CollapsibleLayout.d.ts.map +0 -1
  682. package/dist/src/types/ContentProxy.d.ts +0 -47
  683. package/dist/src/types/ContentProxy.d.ts.map +0 -1
  684. package/dist/src/types/DataTypes.d.ts +0 -185
  685. package/dist/src/types/DataTypes.d.ts.map +0 -1
  686. package/dist/src/types/TemplateProvider.d.ts +0 -10
  687. package/dist/src/types/TemplateProvider.d.ts.map +0 -1
  688. package/dist/src/types/TemplateResolver.d.ts +0 -23
  689. package/dist/src/types/TemplateResolver.d.ts.map +0 -1
  690. package/dist/src/types/index.d.ts +0 -82
  691. package/dist/src/types/index.d.ts.map +0 -1
  692. package/dist/src/utils/breakpoints.d.ts +0 -35
  693. package/dist/src/utils/breakpoints.d.ts.map +0 -1
  694. package/dist/src/utils/cssUtils.d.ts +0 -17
  695. package/dist/src/utils/cssUtils.d.ts.map +0 -1
  696. package/dist/src/utils/customPaletteManager.d.ts +0 -8
  697. package/dist/src/utils/customPaletteManager.d.ts.map +0 -1
  698. package/dist/src/utils/dimensions.d.ts +0 -34
  699. package/dist/src/utils/dimensions.d.ts.map +0 -1
  700. package/dist/src/utils/htmlTransform.d.ts +0 -44
  701. package/dist/src/utils/htmlTransform.d.ts.map +0 -1
  702. package/dist/src/utils/index.d.ts +0 -16
  703. package/dist/src/utils/index.d.ts.map +0 -1
  704. package/dist/src/utils/logger.d.ts +0 -26
  705. package/dist/src/utils/logger.d.ts.map +0 -1
  706. package/dist/src/utils/paletteUtils.d.ts +0 -38
  707. package/dist/src/utils/paletteUtils.d.ts.map +0 -1
  708. package/dist/src/utils/persistenceUtils.d.ts +0 -31
  709. package/dist/src/utils/persistenceUtils.d.ts.map +0 -1
  710. package/dist/src/utils/reactUtils.d.ts +0 -33
  711. package/dist/src/utils/reactUtils.d.ts.map +0 -1
  712. package/dist/src/utils/spacing.d.ts +0 -34
  713. package/dist/src/utils/spacing.d.ts.map +0 -1
  714. package/dist/src/utils/themePerformanceMonitor.d.ts +0 -32
  715. package/dist/src/utils/themePerformanceMonitor.d.ts.map +0 -1
  716. package/dist/src/utils/themeUtils.d.ts +0 -27
  717. package/dist/src/utils/themeUtils.d.ts.map +0 -1
  718. package/dist/tests/ConsoleWarningTest.d.ts +0 -5
  719. package/dist/tests/ConsoleWarningTest.d.ts.map +0 -1
  720. package/dist/tests/StorageKeyTest.d.ts +0 -6
  721. package/dist/tests/StorageKeyTest.d.ts.map +0 -1
  722. package/dist/tests/ThemeStorageKeyTest.d.ts +0 -6
  723. package/dist/tests/ThemeStorageKeyTest.d.ts.map +0 -1
  724. /package/dist/palettes/{PaletteAutumn.css → palette-autumn.1.4.9.css} +0 -0
  725. /package/dist/palettes/{PaletteCosmic.css → palette-cosmic.1.4.9.css} +0 -0
  726. /package/dist/palettes/{PaletteDefault.css → palette-default.1.4.9.css} +0 -0
  727. /package/dist/palettes/{PaletteOcean.css → palette-ocean.1.4.9.css} +0 -0
  728. /package/dist/palettes/{PaletteSpring.css → palette-spring.1.4.9.css} +0 -0
  729. /package/dist/palettes/{PaletteWinter.css → palette-winter.1.4.9.css} +0 -0
  730. /package/dist/{src/stories → stories}/_templates/SerializationTemplate.d.ts +0 -0
@@ -96,7 +96,7 @@ export const QwickApp: React.FC<QwickAppComponentProps> = ({
96
96
  // Resolve configuration: explicit props override config defaults
97
97
  const resolvedConfig = {
98
98
  appName: appNameProp ?? config?.app.name,
99
- appId: appIdProp ?? config?.app.id ?? true,
99
+ appId: appIdProp ?? config?.app.id,
100
100
  logo: logoProp ?? config?.app.logo,
101
101
  enableScaffolding: enableScaffoldingProp ?? config?.ui.enableScaffolding ?? false,
102
102
  showThemeSwitcher: showThemeSwitcherProp ?? config?.ui.showThemeSwitcher ?? false,
@@ -13,7 +13,7 @@ import { WithBaseProps, useBaseProps } from '../hooks/useBaseProps';
13
13
 
14
14
  export type QwickAppsLogoSize = 'small' | 'medium' | 'large';
15
15
 
16
- export interface QwickAppsLogoProps extends WithBaseProps, Omit<React.SVGProps<SVGSVGElement>, 'width' | 'height' | 'className' | 'style' | 'onClick' | 'onBlur' | 'onFocus' | 'onMouseEnter' | 'onMouseLeave' | 'role'> {
16
+ export interface QwickAppsLogoProps extends WithBaseProps {
17
17
  /** Size variant of the logo */
18
18
  size?: QwickAppsLogoSize;
19
19
  /** Click handler for the logo */
@@ -20,6 +20,7 @@ import React, { useState, useEffect } from 'react';
20
20
  import { WithBaseProps, useBaseProps, QWICKAPP_COMPONENT } from '../hooks/useBaseProps';
21
21
  import { useQwickApp } from '../contexts/QwickAppContext';
22
22
  import Logo from './Logo';
23
+ import { getIconComponent } from './buttons/Button';
23
24
  import './ResponsiveMenu.css';
24
25
  import { useSafeLocation, useSafeNavigate } from '../utils/reactUtils';
25
26
  import { loggers } from '../utils/logger';
@@ -56,7 +57,7 @@ const ResponsiveMenu: React.FC<ResponsiveMenuProps> = (props) => {
56
57
  } = restProps;
57
58
 
58
59
  // Mark as QwickApp component
59
- (ResponsiveMenu as any)[QWICKAPP_COMPONENT] = true;
60
+ (ResponsiveMenu as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
60
61
  const [screenSize, setScreenSize] = useState<ScreenSize>('desktop');
61
62
  const [isNavRailExpanded, setIsNavRailExpanded] = useState(false);
62
63
  const [isDrawerOpen, setIsDrawerOpen] = useState(false);
@@ -143,9 +144,19 @@ const ResponsiveMenu: React.FC<ResponsiveMenuProps> = (props) => {
143
144
  }
144
145
  };
145
146
 
147
+ // Transform icon string to component or use provided ReactNode
148
+ let displayIcon: React.ReactNode = null;
149
+ if (item.icon) {
150
+ if (typeof item.icon === 'string') {
151
+ displayIcon = getIconComponent(item.icon);
152
+ } else {
153
+ displayIcon = item.icon;
154
+ }
155
+ }
156
+
146
157
  const content = (
147
158
  <>
148
- {item.icon && <span className="menu-item-icon">{item.icon}</span>}
159
+ {displayIcon && <span className="menu-item-icon">{displayIcon}</span>}
149
160
  {!isCompact && <span className="menu-item-label">{item.label}</span>}
150
161
  {item.badge && <span className="menu-item-badge">{item.badge}</span>}
151
162
  </>
@@ -10,7 +10,7 @@
10
10
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
11
11
  */
12
12
 
13
- import React, { ReactElement } from 'react';
13
+ import React from 'react';
14
14
  import { WithDataBinding, SchemaProps } from '@qwickapps/schema';
15
15
  import sanitizeHtml from 'sanitize-html';
16
16
  import { QWICKAPP_COMPONENT, useBaseProps, useDataBinding } from '../hooks';
@@ -23,10 +23,10 @@ export interface SafeSpanProps extends SafeSpanViewProps, WithDataBinding {}
23
23
  // View component - handles the actual rendering
24
24
  function SafeSpanView(props: SafeSpanViewProps) {
25
25
  const { html, placeholder, ...restProps } = props;
26
- const { styleProps, htmlProps, restProps: otherProps } = useBaseProps(restProps);
26
+ const { styleProps, htmlProps } = useBaseProps(restProps);
27
27
 
28
28
  // Mark as QwickApp component
29
- (SafeSpanView as any)[QWICKAPP_COMPONENT] = true;
29
+ (SafeSpanView as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
30
30
 
31
31
  // Enhanced HTML sanitization with strict security configuration
32
32
  const sanitizeOptions = {
@@ -101,7 +101,7 @@ export class SafeSpan extends ModelView<SafeSpanProps, SafeSpanModel> {
101
101
  static readonly version = '1.0.0';
102
102
 
103
103
  // Component-specific serialization properties
104
- protected getComponentSpecificProps(): any {
104
+ protected getComponentSpecificProps(): unknown {
105
105
  return {
106
106
  html: this.props.html,
107
107
  placeholder: this.props.placeholder
@@ -110,7 +110,7 @@ export class SafeSpan extends ModelView<SafeSpanProps, SafeSpanModel> {
110
110
 
111
111
  // SafeSpan component renders traditional props view
112
112
  protected renderView(): React.ReactElement {
113
- const { dataSource, bindingOptions, ...restProps } = this.props;
113
+ const { ...restProps } = this.props;
114
114
  return <SafeSpanView {...restProps} />;
115
115
  }
116
116
 
@@ -120,7 +120,7 @@ export class SafeSpan extends ModelView<SafeSpanProps, SafeSpanModel> {
120
120
  }
121
121
 
122
122
  // Register HTML patterns that SafeSpan component can handle
123
- static registerPatternHandlers(registry: any): void {
123
+ static registerPatternHandlers(registry: unknown): void {
124
124
  // Register span elements with specific classes or attributes
125
125
  if (!registry.hasPattern('span.safe-content')) {
126
126
  registry.registerPattern('span.safe-content', SafeSpan.transformSafeSpan);
@@ -133,7 +133,7 @@ export class SafeSpan extends ModelView<SafeSpanProps, SafeSpanModel> {
133
133
  }
134
134
 
135
135
  // Transform span elements to SafeSpan component
136
- private static transformSafeSpan(element: Element): any {
136
+ private static transformSafeSpan(element: Element): unknown {
137
137
  const placeholder = element.getAttribute('data-placeholder');
138
138
 
139
139
  return {
@@ -151,7 +151,7 @@ function SafeSpanWithDataBinding(props: SafeSpanProps) {
151
151
  const { dataSource, bindingOptions, ...restProps } = props;
152
152
 
153
153
  // Use data binding
154
- const { dataSource: _source, loading, error, cached, ...safeSpanProps } = useDataBinding<SafeSpanModel>(
154
+ const { loading, error, ...safeSpanProps } = useDataBinding<SafeSpanModel>(
155
155
  dataSource!,
156
156
  restProps as Partial<SafeSpanModel>,
157
157
  SafeSpanModel.getSchema(),
@@ -171,7 +171,6 @@ function SafeSpanWithDataBinding(props: SafeSpanProps) {
171
171
  return null;
172
172
  }
173
173
 
174
- console.log('Resolved props for SafeSpan:', safeSpanProps);
175
174
  return <SafeSpanView {...safeSpanProps} />;
176
175
  }
177
176
 
@@ -15,6 +15,14 @@
15
15
  --rail-width-expanded: 280px;
16
16
  --touch-target-size: 48px;
17
17
 
18
+ --menu-bg: var(--theme-surface);
19
+ --menu-text: var(--theme-on-surface);
20
+ --menu-hover: var(--theme-surface-variant);
21
+ --menu-active: var(--theme-primary);
22
+ --menu-active-text: var(--theme-on-primary);
23
+ --menu-border: var(--theme-outline-variant);
24
+ --menu-shadow: rgba(0, 0, 0, 0.1);
25
+
18
26
  --scaffold-background: var(--theme-background);
19
27
  --scaffold-surface: var(--theme-surface);
20
28
  --scaffold-on-surface: var(--theme-on-surface);
@@ -92,6 +100,12 @@
92
100
  gap: 8px;
93
101
  }
94
102
 
103
+ .appbar-theme-controls {
104
+ display: flex;
105
+ align-items: center;
106
+ gap: 8px;
107
+ }
108
+
95
109
  /* Menu button */
96
110
  .menu-button {
97
111
  display: flex;
@@ -22,6 +22,7 @@ import Logo from './Logo';
22
22
  import ThemeSwitcher from './buttons/ThemeSwitcher';
23
23
  import PaletteSwitcher from './buttons/PaletteSwitcher';
24
24
  import { RadioButtonUnchecked as DefaultIcon } from '@mui/icons-material';
25
+ import { getIconComponent } from './buttons/Button';
25
26
  import './Scaffold.css';
26
27
  import { useSafeLocation, useSafeNavigate } from '../utils/reactUtils';
27
28
  import { loggers } from '../utils/logger';
@@ -89,11 +90,12 @@ const Scaffold: React.FC<ScaffoldProps> = ({
89
90
  const [screenSize, setScreenSize] = useState<ScreenSize>('desktop');
90
91
  const [isDrawerOpen, setIsDrawerOpen] = useState(false);
91
92
  const [isRailExpanded, setIsRailExpanded] = useState(false);
93
+ const [isMounted, setIsMounted] = useState(false);
92
94
 
93
95
  // React Router hooks (if available)
94
96
  const location = useSafeLocation();
95
97
  const navigate = useSafeNavigate();
96
- const currentPath = location?.pathname;
98
+ const currentPath = isMounted ? location?.pathname : undefined;
97
99
 
98
100
  // Debug logging for navigation
99
101
  React.useEffect(() => {
@@ -102,6 +104,11 @@ const Scaffold: React.FC<ScaffoldProps> = ({
102
104
  }
103
105
  }, [currentPath]);
104
106
 
107
+ // Set mounted state after hydration to prevent hydration mismatch
108
+ useEffect(() => {
109
+ setIsMounted(true);
110
+ }, []);
111
+
105
112
  const { appName: contextAppName, logo: contextLogo } = useQwickApp();
106
113
  const appName = propAppName || contextAppName;
107
114
 
@@ -135,23 +142,26 @@ const Scaffold: React.FC<ScaffoldProps> = ({
135
142
  // Material UI Guidelines: Split items based on screen size
136
143
  const getNavigationSplit = () => {
137
144
  switch (screenSize) {
138
- case 'mobile':
145
+ case 'mobile': {
139
146
  // Bottom Nav: 3-5 items, rest in drawer
140
147
  const bottomNavItems = sortedItems.slice(0, 5);
141
148
  const drawerItems = sortedItems.slice(5);
142
149
  return { primaryItems: bottomNavItems, drawerItems };
150
+ }
143
151
 
144
- case 'tablet':
152
+ case 'tablet': {
145
153
  // Nav Rail: 3-7 items, rest in drawer
146
154
  const railItems = sortedItems.slice(0, 7);
147
155
  const railDrawerItems = sortedItems.slice(7);
148
156
  return { primaryItems: railItems, drawerItems: railDrawerItems };
157
+ }
149
158
 
150
- case 'desktop':
159
+ case 'desktop': {
151
160
  // App Bar: 5-7 items, rest in drawer
152
161
  const appBarItems = sortedItems.slice(0, 7);
153
162
  const appBarDrawerItems = sortedItems.slice(7);
154
163
  return { primaryItems: appBarItems, drawerItems: appBarDrawerItems };
164
+ }
155
165
 
156
166
  default:
157
167
  return { primaryItems: sortedItems, drawerItems: [] };
@@ -251,9 +261,22 @@ const Scaffold: React.FC<ScaffoldProps> = ({
251
261
  }
252
262
  };
253
263
 
254
- // For primary navigation (bottom, rail, appbar), enforce icon requirement
264
+ // Transform icon string to component, or use provided ReactNode, or fallback to DefaultIcon
255
265
  const needsIcon = variant !== 'drawer';
256
- const displayIcon = item.icon || (needsIcon ? <DefaultIcon /> : null);
266
+ let displayIcon: React.ReactNode = null;
267
+
268
+ if (item.icon) {
269
+ // If icon is a string, transform it to component
270
+ if (typeof item.icon === 'string') {
271
+ displayIcon = getIconComponent(item.icon) || (needsIcon ? <DefaultIcon /> : null);
272
+ } else {
273
+ // If icon is already a React component, use it
274
+ displayIcon = item.icon;
275
+ }
276
+ } else if (needsIcon) {
277
+ // No icon provided, use default for primary navigation
278
+ displayIcon = <DefaultIcon />;
279
+ }
257
280
 
258
281
  const content = (
259
282
  <>
@@ -281,7 +304,7 @@ const Scaffold: React.FC<ScaffoldProps> = ({
281
304
  // External links
282
305
  if (item.href && !item.disabled) {
283
306
  return (
284
- <a key={item.id} href={item.href} {...commonProps} target="_blank" rel="noopener noreferrer">
307
+ <a href={item.href} {...commonProps} target="_blank" rel="noopener noreferrer">
285
308
  {content}
286
309
  </a>
287
310
  );
@@ -290,7 +313,6 @@ const Scaffold: React.FC<ScaffoldProps> = ({
290
313
  // Internal navigation or custom click handlers
291
314
  return (
292
315
  <button
293
- key={item.id}
294
316
  type="button"
295
317
  {...commonProps}
296
318
  disabled={Boolean(item.disabled || (isActiveItem && item.route === currentPath))}
@@ -302,7 +324,7 @@ const Scaffold: React.FC<ScaffoldProps> = ({
302
324
 
303
325
  // Calculate layout spacing
304
326
  const getLayoutSpacing = () => {
305
- let paddingTop = showAppBar ? appBarHeight : 0;
327
+ const paddingTop = showAppBar ? appBarHeight : 0;
306
328
  let paddingBottom = 0;
307
329
  let paddingLeft = 0;
308
330
 
@@ -341,31 +363,36 @@ const Scaffold: React.FC<ScaffoldProps> = ({
341
363
  {/* Menu button for drawer (when needed) */}
342
364
  {(drawerItems.length > 0 || screenSize === 'tablet') && (
343
365
  <button
366
+ key="menu-button"
344
367
  type="button"
345
368
  className="menu-button"
346
369
  onClick={screenSize === 'tablet' ? toggleRail : toggleDrawer}
347
370
  aria-label={screenSize === 'tablet' ? 'Toggle navigation rail' : 'Open drawer menu'}
348
371
  >
349
372
  <span className="hamburger-icon">
350
- <span></span>
351
- <span></span>
352
- <span></span>
373
+ <span key="hamburger-line-1"></span>
374
+ <span key="hamburger-line-2"></span>
375
+ <span key="hamburger-line-3"></span>
353
376
  </span>
354
377
  </button>
355
378
  )}
356
379
 
357
380
  {/* Logo/Title */}
358
- {(!enhancedAppBar?.logoPosition || enhancedAppBar.logoPosition === 'left') && <AppLogo />}
381
+ {(!enhancedAppBar?.logoPosition || enhancedAppBar.logoPosition === 'left') && <AppLogo key="app-logo-left" />}
359
382
  </div>
360
383
 
361
384
  {/* Center section */}
362
385
  <div className="appbar-center">
363
- {enhancedAppBar?.logoPosition === 'center' && <AppLogo />}
386
+ {enhancedAppBar?.logoPosition === 'center' && <AppLogo key="app-logo-center" />}
364
387
 
365
388
  {/* Desktop navigation items */}
366
389
  {screenSize === 'desktop' && (
367
- <nav className="appbar-navigation">
368
- {primaryItems.map(item => renderMenuItem(item, 'appbar'))}
390
+ <nav key="desktop-navigation" className="appbar-navigation">
391
+ {primaryItems.map(item => (
392
+ <React.Fragment key={item.id}>
393
+ {renderMenuItem(item, 'appbar')}
394
+ </React.Fragment>
395
+ ))}
369
396
  </nav>
370
397
  )}
371
398
  </div>
@@ -373,14 +400,14 @@ const Scaffold: React.FC<ScaffoldProps> = ({
373
400
  {/* Right section */}
374
401
  <div className="appbar-right">
375
402
  {enhancedAppBar?.actions && (
376
- <div className="appbar-actions">
403
+ <div key="appbar-actions" className="appbar-actions">
377
404
  {enhancedAppBar.actions}
378
405
  </div>
379
406
  )}
380
407
  {/* Theme and Palette Switchers */}
381
- <div className="appbar-theme-controls">
382
- {showThemeSwitcher && <ThemeSwitcher />}
383
- {showPaletteSwitcher && <PaletteSwitcher />}
408
+ <div key="appbar-theme-controls" className="appbar-theme-controls">
409
+ {showThemeSwitcher && <ThemeSwitcher key="theme-switcher" />}
410
+ {showPaletteSwitcher && <PaletteSwitcher key="palette-switcher" />}
384
411
  </div>
385
412
  </div>
386
413
  </div>
@@ -391,7 +418,11 @@ const Scaffold: React.FC<ScaffoldProps> = ({
391
418
  {screenSize === 'tablet' && (
392
419
  <nav className={`navigation-rail ${isRailExpanded ? 'expanded' : 'collapsed'}`}>
393
420
  <div className="rail-items">
394
- {primaryItems.map(item => renderMenuItem(item, 'rail'))}
421
+ {primaryItems.map(item => (
422
+ <React.Fragment key={item.id}>
423
+ {renderMenuItem(item, 'rail')}
424
+ </React.Fragment>
425
+ ))}
395
426
  </div>
396
427
  </nav>
397
428
  )}
@@ -400,7 +431,11 @@ const Scaffold: React.FC<ScaffoldProps> = ({
400
431
  {screenSize === 'mobile' && primaryItems.length > 0 && (
401
432
  <nav className="bottom-navigation">
402
433
  <div className="bottom-nav-items">
403
- {primaryItems.map(item => renderMenuItem(item, 'bottom'))}
434
+ {primaryItems.map(item => (
435
+ <React.Fragment key={item.id}>
436
+ {renderMenuItem(item, 'bottom')}
437
+ </React.Fragment>
438
+ ))}
404
439
  </div>
405
440
  </nav>
406
441
  )}
@@ -410,8 +445,9 @@ const Scaffold: React.FC<ScaffoldProps> = ({
410
445
  <div className="drawer-overlay" onClick={toggleDrawer}>
411
446
  <nav className="navigation-drawer" onClick={(e) => e.stopPropagation()}>
412
447
  <div className="drawer-header">
413
- <h3>Menu</h3>
448
+ <h3 key="drawer-title">Menu</h3>
414
449
  <button
450
+ key="drawer-close-button"
415
451
  type="button"
416
452
  className="drawer-close"
417
453
  onClick={toggleDrawer}
@@ -423,15 +459,23 @@ const Scaffold: React.FC<ScaffoldProps> = ({
423
459
  <div className="drawer-items">
424
460
  {/* Show all primary items in drawer for consistency */}
425
461
  <div className="drawer-section">
426
- <h4>Navigation</h4>
427
- {primaryItems.map(item => renderMenuItem(item, 'drawer'))}
462
+ <h4 key="navigation-header">Navigation</h4>
463
+ {primaryItems.map(item => (
464
+ <React.Fragment key={item.id}>
465
+ {renderMenuItem(item, 'drawer')}
466
+ </React.Fragment>
467
+ ))}
428
468
  </div>
429
469
 
430
470
  {/* Additional items */}
431
471
  {drawerItems.length > 0 && (
432
472
  <div className="drawer-section">
433
- <h4>More</h4>
434
- {drawerItems.map(item => renderMenuItem(item, 'drawer'))}
473
+ <h4 key="more-header">More</h4>
474
+ {drawerItems.map(item => (
475
+ <React.Fragment key={item.id}>
476
+ {renderMenuItem(item, 'drawer')}
477
+ </React.Fragment>
478
+ ))}
435
479
  </div>
436
480
  )}
437
481
  </div>
@@ -32,12 +32,12 @@ export type ContainerProps = ViewProps & SchemaProps<typeof ContainerSchema>;
32
32
  * This component receives fully processed props from createSerializableView
33
33
  * and renders the container using Material-UI Box with all styling applied.
34
34
  */
35
- function ContainerView({ children, gridProps, ...props }: ContainerProps & { gridProps?: any }) {
35
+ function ContainerView({ children, gridProps, ...props }: ContainerProps & { gridProps?: unknown }) {
36
36
  // Render the component as a Box with all processed props
37
37
  return (
38
38
  <Box
39
39
  {...props}
40
- {...(gridProps && { 'data-grid': JSON.stringify(gridProps) })}
40
+ {...(gridProps ? { 'data-grid': JSON.stringify(gridProps) } : {})}
41
41
  component="div"
42
42
  >
43
43
  {children}
@@ -73,21 +73,21 @@ function convertSchemaToBaseProps(schema: Partial<ViewSchema>): WithBaseProps {
73
73
  /**
74
74
  * Convert string event handler to function
75
75
  */
76
- function convertEventHandler(handlerStr?: string): ((event: any) => void) | undefined {
76
+ function convertEventHandler(handlerStr?: string): ((event: unknown) => void) | undefined {
77
77
  if (!handlerStr || typeof handlerStr !== 'string') {
78
78
  return undefined;
79
79
  }
80
80
 
81
81
  try {
82
82
  // Create function from string - handle both function declarations and expressions
83
- let func: Function;
83
+ let func: (...args: unknown[]) => unknown;
84
84
  if (handlerStr.trim().startsWith('function')) {
85
- func = new Function(`return (${handlerStr})`)();
85
+ func = new Function(`return (${handlerStr})`)() as (...args: unknown[]) => unknown;
86
86
  } else {
87
- func = new Function('event', handlerStr);
87
+ func = new Function('event', handlerStr) as (...args: unknown[]) => unknown;
88
88
  }
89
89
 
90
- return (event: any) => func(event);
90
+ return (event: unknown) => func(event);
91
91
  } catch (error) {
92
92
  console.error('Error parsing event handler:', error);
93
93
  return undefined;
@@ -98,17 +98,17 @@ function convertEventHandler(handlerStr?: string): ((event: any) => void) | unde
98
98
  * Processed props that subclasses receive
99
99
  */
100
100
  export interface ProcessedProps {
101
- gridProps: any;
102
- styleProps: any;
103
- htmlProps: any;
104
- restProps: any;
101
+ gridProps: unknown;
102
+ styleProps: unknown;
103
+ htmlProps: unknown;
104
+ restProps: unknown;
105
105
  }
106
106
 
107
107
  /**
108
108
  * Abstract base class implementing ViewSchema
109
109
  * All concrete components should extend this class
110
110
  */
111
- export abstract class ModelView<TProps = any, TModel = any>
111
+ export abstract class ModelView<TProps = Record<string, unknown>>
112
112
  extends React.Component<TProps & SchemaProps<ViewSchema> & WithDataBinding>
113
113
  implements Serializable {
114
114
 
@@ -119,8 +119,9 @@ export abstract class ModelView<TProps = any, TModel = any>
119
119
  /**
120
120
  * Common fromJson implementation
121
121
  */
122
- static fromJson(jsonData: any): ReactElement {
123
- const { tagName, version, data } = jsonData;
122
+ static fromJson(jsonData: unknown): ReactElement {
123
+ const typedData = jsonData as { tagName?: string; version?: string; data?: unknown };
124
+ const { tagName, version, data } = typedData;
124
125
  if (tagName !== this.tagName) {
125
126
  throw new Error(`Cannot deserialize: Expected tagName '${this.tagName}' but got '${tagName}'`);
126
127
  }
@@ -128,15 +129,15 @@ export abstract class ModelView<TProps = any, TModel = any>
128
129
  console.warn(`Version mismatch: Expected ${this.version} but got ${version}`);
129
130
  }
130
131
 
131
- return React.createElement(this as any, data || {});
132
+ return React.createElement(this as React.ComponentType<unknown>, data || {});
132
133
  }
133
134
 
134
135
  /**
135
136
  * Common toJson implementation with hooks for customization
136
137
  */
137
- toJson(): any {
138
- const baseProps = this.getBaseSerializableProps();
139
- const componentProps = this.getComponentSpecificProps();
138
+ toJson(): unknown {
139
+ const baseProps = this.getBaseSerializableProps() as Record<string, unknown>;
140
+ const componentProps = this.getComponentSpecificProps() as Record<string, unknown>;
140
141
  return {
141
142
  tagName: (this.constructor as typeof ModelView).tagName,
142
143
  version: (this.constructor as typeof ModelView).version,
@@ -152,7 +153,7 @@ export abstract class ModelView<TProps = any, TModel = any>
152
153
  * This converts ViewSchema props and processes them through useBaseProps
153
154
  */
154
155
  protected getProcessedProps(): ProcessedProps {
155
- const { dataSource, bindingOptions, ...schemaProps } = this.props;
156
+ const { dataSource: _dataSource, bindingOptions: _bindingOptions, ...schemaProps } = this.props;
156
157
 
157
158
  // Convert ViewSchema props to BaseComponentProps format
158
159
  const convertedProps = convertSchemaToBaseProps(schemaProps);
@@ -221,8 +222,8 @@ export abstract class ModelView<TProps = any, TModel = any>
221
222
  /**
222
223
  * Common base props that all components serialize
223
224
  */
224
- protected getBaseSerializableProps(): any {
225
- const props = this.props as any;
225
+ protected getBaseSerializableProps(): unknown {
226
+ const props = this.props as TProps & SchemaProps<ViewSchema> & WithDataBinding;
226
227
  return {
227
228
  children: props.children ? this.serializeChildren(props.children) : undefined,
228
229
  dataSource: props.dataSource,
@@ -235,12 +236,12 @@ export abstract class ModelView<TProps = any, TModel = any>
235
236
  /**
236
237
  * Hook for subclasses to add component-specific serialization
237
238
  */
238
- protected abstract getComponentSpecificProps(): any;
239
+ protected abstract getComponentSpecificProps(): unknown;
239
240
 
240
241
  /**
241
242
  * Common children serialization logic
242
243
  */
243
- protected serializeChildren(children: ReactNode): any {
244
+ protected serializeChildren(children: ReactNode): unknown {
244
245
  if (typeof children === 'string') {
245
246
  return children;
246
247
  }
@@ -255,7 +256,7 @@ export abstract class ModelView<TProps = any, TModel = any>
255
256
  /**
256
257
  * Helper to determine if children contain other serializable components
257
258
  */
258
- protected hasNestedComponents(children: ReactNode): boolean {
259
+ protected hasNestedComponents(_children: ReactNode): boolean {
259
260
  return false;
260
261
  }
261
262
 
@@ -263,7 +264,7 @@ export abstract class ModelView<TProps = any, TModel = any>
263
264
  * Common render pattern
264
265
  */
265
266
  render() {
266
- const props = this.props as any;
267
+ const props = this.props as TProps & SchemaProps<ViewSchema> & WithDataBinding;
267
268
 
268
269
  if (props.dataSource) {
269
270
  return this.renderWithDataBinding();
@@ -285,7 +286,7 @@ export abstract class ModelView<TProps = any, TModel = any>
285
286
  /**
286
287
  * Register HTML pattern handlers for this component
287
288
  */
288
- static registerPatternHandlers(_registry: any): void {
289
+ static registerPatternHandlers(_registry: unknown): void {
289
290
  // Default: no patterns to register
290
291
  }
291
292
  }
@@ -298,18 +299,18 @@ export function createModelViewClass<TProps, TModel>(
298
299
  config: {
299
300
  tagName: string;
300
301
  version: string;
301
- getComponentSpecificProps: (props: TProps, processedProps: ProcessedProps) => any;
302
+ getComponentSpecificProps: (props: TProps, processedProps: ProcessedProps) => Record<string, unknown>;
302
303
  hasNestedComponents?: (children: ReactNode) => boolean;
303
304
  renderView: (props: TProps, processedProps: ProcessedProps) => React.ReactElement;
304
305
  renderWithDataBinding: (props: TProps & WithDataBinding, processedProps: ProcessedProps) => React.ReactElement;
305
306
  }
306
- ): any {
307
+ ): unknown {
307
308
 
308
309
  class DynamicModelView extends ModelView<TProps, TModel> {
309
310
  static readonly tagName = config.tagName;
310
311
  static readonly version = config.version;
311
312
 
312
- protected getComponentSpecificProps(): any {
313
+ protected getComponentSpecificProps(): unknown {
313
314
  const processedProps = this.getProcessedProps();
314
315
  return config.getComponentSpecificProps(this.props as TProps, processedProps);
315
316
  }
@@ -8,5 +8,5 @@
8
8
  */
9
9
 
10
10
  export { ModelView, createModelViewClass } from './ModelView';
11
- export { default as Container, } from './Container';
11
+ export { default as Container} from './Container';
12
12
  export type { ContainerProps } from './Container';