@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
@@ -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',
@@ -19,7 +19,6 @@ import { Typography } from '@mui/material';
19
19
  import React from 'react';
20
20
  import { createSerializableView, SerializableComponent } from '../shared/createSerializableView';
21
21
  import { ViewProps } from '../shared/viewProps';
22
- import { ComponentTransformer } from '../../schemas/transformers/ComponentTransformer';
23
22
  import TextSchema from '../../schemas/TextSchema';
24
23
  import type { SchemaProps } from '@qwickapps/schema/src/types/ModelProps';
25
24
 
@@ -90,7 +89,7 @@ function TextView({
90
89
  <Typography
91
90
  {...restProps}
92
91
  variant={variant}
93
- color={color as any}
92
+ color={color as 'initial' | 'inherit' | 'primary' | 'secondary' | 'textPrimary' | 'textSecondary' | 'error'}
94
93
  align={align}
95
94
  component={component}
96
95
  noWrap={noWrap}
@@ -115,32 +114,49 @@ export const Text: SerializableComponent<TextProps> = createSerializableView<Tex
115
114
  childrenStrategy: { mode: 'content-prop', propName: 'content' }
116
115
  });
117
116
 
117
+ // Type for pattern registry with basic methods
118
+ interface PatternRegistry {
119
+ hasPattern(pattern: string): boolean;
120
+ registerPattern(pattern: string, handler: (element: Element) => unknown): void;
121
+ }
122
+
123
+ // Type for Text component with pattern handlers
124
+ interface TextComponentWithPatterns {
125
+ registerPatternHandlers: (registry: PatternRegistry) => void;
126
+ transformParagraph: (element: Element) => unknown;
127
+ transformHeading: (element: Element, tagName: string) => unknown;
128
+ transformSpan: (element: Element) => unknown;
129
+ }
130
+
118
131
  // Register HTML patterns that Text component can handle
119
- (Text as any).registerPatternHandlers = (registry: any): void => {
132
+ (Text as unknown as TextComponentWithPatterns).registerPatternHandlers = (registry: PatternRegistry): void => {
133
+ const textComponent = Text as unknown as TextComponentWithPatterns;
134
+
120
135
  // Register paragraph elements
121
136
  if (!registry.hasPattern('p')) {
122
- registry.registerPattern('p', (Text as any).transformParagraph);
137
+ registry.registerPattern('p', textComponent.transformParagraph);
123
138
  }
124
-
139
+
125
140
  // Register heading elements
126
141
  const headings = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
127
142
  headings.forEach(heading => {
128
143
  if (!registry.hasPattern(heading)) {
129
- registry.registerPattern(heading, (element: Element) => (Text as any).transformHeading(element, heading));
144
+ registry.registerPattern(heading, (element: Element) => textComponent.transformHeading(element, heading));
130
145
  }
131
146
  });
132
-
147
+
133
148
  // Register span elements
134
149
  if (!registry.hasPattern('span')) {
135
- registry.registerPattern('span', (Text as any).transformSpan);
150
+ registry.registerPattern('span', textComponent.transformSpan);
136
151
  }
137
152
  };
138
153
 
139
154
  // Transform paragraph elements to Text component
140
- (Text as any).transformParagraph = (element: Element): any => {
155
+ (Text as unknown as TextComponentWithPatterns).transformParagraph = (element: Element): unknown => {
141
156
  return {
142
157
  tagName: 'Text',
143
- props: {
158
+ version: '1.0.0',
159
+ data: {
144
160
  variant: 'body1',
145
161
  component: 'p',
146
162
  content: element.textContent || ''
@@ -149,10 +165,10 @@ export const Text: SerializableComponent<TextProps> = createSerializableView<Tex
149
165
  };
150
166
 
151
167
  // Transform heading elements to Text component
152
- (Text as any).transformHeading = (element: Element, tagName: string): any => {
168
+ (Text as unknown as TextComponentWithPatterns).transformHeading = (element: Element, tagName: string): unknown => {
153
169
  const variantMap: { [key: string]: string } = {
154
170
  'h1': 'h1',
155
- 'h2': 'h2',
171
+ 'h2': 'h2',
156
172
  'h3': 'h3',
157
173
  'h4': 'h4',
158
174
  'h5': 'h5',
@@ -161,7 +177,8 @@ export const Text: SerializableComponent<TextProps> = createSerializableView<Tex
161
177
 
162
178
  return {
163
179
  tagName: 'Text',
164
- props: {
180
+ version: '1.0.0',
181
+ data: {
165
182
  variant: variantMap[tagName] || 'h4',
166
183
  component: tagName,
167
184
  content: element.textContent || ''
@@ -170,10 +187,11 @@ export const Text: SerializableComponent<TextProps> = createSerializableView<Tex
170
187
  };
171
188
 
172
189
  // Transform span elements to Text component
173
- (Text as any).transformSpan = (element: Element): any => {
190
+ (Text as unknown as TextComponentWithPatterns).transformSpan = (element: Element): unknown => {
174
191
  return {
175
192
  tagName: 'Text',
176
- props: {
193
+ version: '1.0.0',
194
+ data: {
177
195
  variant: 'body2',
178
196
  component: 'span',
179
197
  content: element.textContent || ''
@@ -14,11 +14,19 @@
14
14
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
15
15
  */
16
16
 
17
- import React, { ReactElement } from 'react';
17
+ import React from 'react';
18
18
  import { Button as MuiButton, ButtonProps as MuiButtonProps, CircularProgress } from '@mui/material';
19
19
  import ButtonModel from '../../schemas/ButtonSchema';
20
20
  import { createSerializableView, SerializableComponent } from '../shared/createSerializableView';
21
21
  import { ViewProps } from '../shared/viewProps';
22
+ import type { SchemaProps } from '@qwickapps/schema/src/types/ModelProps';
23
+ import { getIconComponent } from '../../utils/iconMap';
24
+
25
+ /**
26
+ * Re-export getIconComponent from iconMap for backwards compatibility
27
+ * Other components (Scaffold, ResponsiveMenu, etc.) may import from this file
28
+ */
29
+ export { getIconComponent, iconMap } from '../../utils/iconMap';
22
30
 
23
31
  // Action serialization pattern for button clicks
24
32
  export interface ButtonAction {
@@ -29,27 +37,30 @@ export interface ButtonAction {
29
37
  customHandler?: string;
30
38
  }
31
39
 
32
- export interface ButtonProps extends ViewProps {
33
- // Component-specific props from ButtonModel
34
- label?: string;
35
- variant?: 'primary' | 'secondary' | 'outlined' | 'text' | 'contained';
36
- buttonSize?: 'small' | 'medium' | 'large';
37
- href?: string;
38
- target?: '_blank' | '_self' | '_parent' | '_top';
39
- disabled?: boolean;
40
- loading?: boolean;
41
- fullWidth?: boolean;
42
- // Additional props for enhanced functionality
40
+ /**
41
+ * Props interface for Button component
42
+ * Uses SchemaProps<typeof ButtonSchema> for schema-driven typing
43
+ * Icons are transformed from strings to React components by finalize function
44
+ *
45
+ * Note: We omit 'icon' and 'endIcon' from schema props because they are strings in the schema
46
+ * but get transformed to ReactElements by the finalize function.
47
+ */
48
+ export type ButtonProps = ViewProps & Omit<SchemaProps<typeof ButtonModel>, 'icon' | 'endIcon'> & {
49
+ // Runtime props (transformed from schema strings by finalize function)
43
50
  icon?: React.ReactNode;
44
51
  endIcon?: React.ReactNode;
52
+ // Additional runtime-only props
45
53
  action?: ButtonAction;
46
- }
54
+ // HTML button attributes
55
+ type?: 'button' | 'submit' | 'reset';
56
+ };
47
57
 
48
58
  // View component - handles the actual rendering
49
59
  const ButtonView = React.forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => {
50
60
  const {
51
61
  label,
52
62
  variant = 'primary',
63
+ color,
53
64
  buttonSize = 'medium',
54
65
  icon,
55
66
  endIcon,
@@ -82,8 +93,14 @@ const ButtonView = React.forwardRef<HTMLButtonElement, ButtonProps>((props, ref)
82
93
  }
83
94
  };
84
95
 
85
- // Map our variants to MUI colors
86
- const getMuiColor = (): MuiButtonProps['color'] => {
96
+ // Get theme color name - prioritize explicit color prop over variant-derived color
97
+ const getThemeColorName = (): string => {
98
+ // If color prop is explicitly provided, use it
99
+ if (color) {
100
+ return color;
101
+ }
102
+
103
+ // Otherwise derive from variant
87
104
  switch (variant) {
88
105
  case 'primary':
89
106
  return 'primary';
@@ -100,6 +117,54 @@ const ButtonView = React.forwardRef<HTMLButtonElement, ButtonProps>((props, ref)
100
117
  }
101
118
  };
102
119
 
120
+ // Get CSS theme variable styles based on variant and color
121
+ const getColorStyles = () => {
122
+ const muiVariant = getMuiVariant();
123
+ const colorName = getThemeColorName();
124
+
125
+ // For contained buttons: use solid background
126
+ if (muiVariant === 'contained') {
127
+ return {
128
+ backgroundColor: `var(--theme-${colorName})`,
129
+ color: `var(--theme-on-${colorName})`,
130
+ '&:hover': {
131
+ backgroundColor: `var(--theme-${colorName}-dark)`,
132
+ },
133
+ '&.Mui-disabled': {
134
+ backgroundColor: 'var(--theme-text-disabled)',
135
+ color: 'var(--theme-on-surface)',
136
+ }
137
+ };
138
+ }
139
+
140
+ // For outlined buttons: border and text color
141
+ if (muiVariant === 'outlined') {
142
+ return {
143
+ borderColor: `var(--theme-${colorName})`,
144
+ color: `var(--theme-${colorName})`,
145
+ '&:hover': {
146
+ borderColor: `var(--theme-${colorName}-dark)`,
147
+ backgroundColor: `var(--theme-${colorName}-light)`,
148
+ },
149
+ '&.Mui-disabled': {
150
+ borderColor: 'var(--theme-border-main)',
151
+ color: 'var(--theme-text-disabled)',
152
+ }
153
+ };
154
+ }
155
+
156
+ // For text buttons: just text color
157
+ return {
158
+ color: `var(--theme-${colorName})`,
159
+ '&:hover': {
160
+ backgroundColor: `var(--theme-${colorName}-light)`,
161
+ },
162
+ '&.Mui-disabled': {
163
+ color: 'var(--theme-text-disabled)',
164
+ }
165
+ };
166
+ };
167
+
103
168
  // Handle action serialization pattern for onClick
104
169
  const handleActionClick = React.useCallback((event: React.MouseEvent<HTMLButtonElement>) => {
105
170
  if (action) {
@@ -111,15 +176,8 @@ const ButtonView = React.forwardRef<HTMLButtonElement, ButtonProps>((props, ref)
111
176
  if (action.target === '_blank') {
112
177
  window.open(action.url, '_blank', 'noopener,noreferrer');
113
178
  } else {
114
- // Try to use React Router navigation if available
115
- try {
116
- // eslint-disable-next-line react-hooks/rules-of-hooks
117
- const navigate = require('react-router-dom').useNavigate();
118
- navigate(action.url);
119
- } catch {
120
- // Fallback to regular navigation
121
- window.location.href = action.url;
122
- }
179
+ // Fallback to regular navigation
180
+ window.location.href = action.url;
123
181
  }
124
182
  }
125
183
  break;
@@ -142,7 +200,7 @@ const ButtonView = React.forwardRef<HTMLButtonElement, ButtonProps>((props, ref)
142
200
  case 'custom':
143
201
  if (action.customHandler && typeof window !== 'undefined') {
144
202
  // Look for custom handler function on window
145
- const handler = (window as any)[action.customHandler];
203
+ const handler = (window as Record<string, unknown>)[action.customHandler];
146
204
  if (typeof handler === 'function') {
147
205
  handler(event);
148
206
  }
@@ -163,12 +221,13 @@ const ButtonView = React.forwardRef<HTMLButtonElement, ButtonProps>((props, ref)
163
221
  // Base button props
164
222
  const baseProps: Partial<MuiButtonProps> = {
165
223
  variant: getMuiVariant(),
166
- color: getMuiColor(),
167
224
  size: buttonSize,
168
225
  disabled: disabled || loading,
169
226
  fullWidth,
170
227
  ...restProps,
171
228
  sx: {
229
+ // Apply CSS theme variable colors
230
+ ...getColorStyles(),
172
231
  // Ensure consistent text transform
173
232
  textTransform: 'none',
174
233
  // Loading state adjustments
@@ -177,6 +236,7 @@ const ButtonView = React.forwardRef<HTMLButtonElement, ButtonProps>((props, ref)
177
236
  marginRight: 1,
178
237
  },
179
238
  }),
239
+ // Merge user-provided sx prop last to allow overrides
180
240
  ...(restProps.sx || {}),
181
241
  },
182
242
  startIcon: loading ? (
@@ -229,10 +289,30 @@ export const Button: SerializableComponent<ButtonProps> = createSerializableView
229
289
  role: 'view',
230
290
  View: ButtonView,
231
291
  // Button component uses default react-children strategy for potential child content
292
+ finalize: (props: ButtonProps) => {
293
+ // Transform icon string names to React icon components
294
+ const transformedProps = { ...props };
295
+
296
+ if (typeof (props as Record<string, unknown>).icon === 'string') {
297
+ const iconComponent = getIconComponent((props as Record<string, unknown>).icon as string);
298
+ if (iconComponent) {
299
+ transformedProps.icon = iconComponent;
300
+ }
301
+ }
302
+
303
+ if (typeof (props as Record<string, unknown>).endIcon === 'string') {
304
+ const endIconComponent = getIconComponent((props as Record<string, unknown>).endIcon as string);
305
+ if (endIconComponent) {
306
+ transformedProps.endIcon = endIconComponent;
307
+ }
308
+ }
309
+
310
+ return transformedProps;
311
+ }
232
312
  });
233
313
 
234
314
  // Register HTML patterns that Button component can handle
235
- (Button as any).registerPatternHandlers = (registry: any): void => {
315
+ (Button as Record<string, unknown>).registerPatternHandlers = (registry: Record<string, (...args: unknown[]) => unknown>): void => {
236
316
  // Register button elements
237
317
  if (!registry.hasPattern('button')) {
238
318
  registry.registerPattern('button', transformButton);
@@ -250,7 +330,7 @@ export const Button: SerializableComponent<ButtonProps> = createSerializableView
250
330
  };
251
331
 
252
332
  // Transform button elements to Button component
253
- function transformButton(element: Element): any {
333
+ function transformButton(element: Element): unknown {
254
334
  const variant = element.getAttribute('data-variant') ||
255
335
  (element.className.includes('btn-primary') ? 'primary' :
256
336
  element.className.includes('btn-outlined') ? 'outlined' : 'secondary');
@@ -271,7 +351,7 @@ function transformButton(element: Element): any {
271
351
  }
272
352
 
273
353
  // Transform input type="button" elements to Button component
274
- function transformInputButton(element: Element): any {
354
+ function transformInputButton(element: Element): unknown {
275
355
  const disabled = element.hasAttribute('disabled');
276
356
  const value = element.getAttribute('value') || 'Button';
277
357
 
@@ -286,7 +366,7 @@ function transformInputButton(element: Element): any {
286
366
  }
287
367
 
288
368
  // Transform input type="submit" elements to Button component
289
- function transformSubmitButton(element: Element): any {
369
+ function transformSubmitButton(element: Element): unknown {
290
370
  const disabled = element.hasAttribute('disabled');
291
371
  const value = element.getAttribute('value') || 'Submit';
292
372
 
@@ -207,18 +207,21 @@ function PaletteSwitcherView({
207
207
  function PaletteSwitcher(props: PaletteSwitcherProps) {
208
208
  const { dataSource, bindingOptions, ...restProps } = props;
209
209
 
210
+ // Always call hooks unconditionally
211
+ const bindingResult = useDataBinding<PaletteSwitcherModel>(
212
+ dataSource || '',
213
+ restProps as Partial<PaletteSwitcherModel>,
214
+ PaletteSwitcherModel.getSchema(),
215
+ { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
216
+ );
217
+
210
218
  // If no dataSource, use traditional props
211
219
  if (!dataSource) {
212
220
  return <PaletteSwitcherView {...restProps} />;
213
221
  }
214
222
 
215
- // Use data binding
216
- const { dataSource: _source, loading, error, cached, ...paletteSwitcherProps } = useDataBinding<PaletteSwitcherModel>(
217
- dataSource,
218
- restProps as Partial<PaletteSwitcherModel>,
219
- PaletteSwitcherModel.getSchema(),
220
- { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
221
- );
223
+ // Use data binding result
224
+ const { loading, error, ...paletteSwitcherProps } = bindingResult;
222
225
 
223
226
  // Show loading state
224
227
  if (loading) {
@@ -263,6 +266,6 @@ function PaletteSwitcher(props: PaletteSwitcherProps) {
263
266
  }
264
267
 
265
268
  // Mark as QwickApp component
266
- (PaletteSwitcher as any)[QWICKAPP_COMPONENT] = true;
269
+ (PaletteSwitcher as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
267
270
 
268
271
  export default PaletteSwitcher;
@@ -140,7 +140,7 @@ function ThemeSwitcherView({
140
140
  }
141
141
 
142
142
  const themeSwitcher = (
143
- <>
143
+ <span suppressHydrationWarning>
144
144
  <IconButton
145
145
  {...htmlProps}
146
146
  onClick={handleClick}
@@ -150,6 +150,7 @@ function ThemeSwitcherView({
150
150
  aria-controls={open ? 'theme-menu' : undefined}
151
151
  aria-haspopup="true"
152
152
  aria-expanded={open ? 'true' : undefined}
153
+ suppressHydrationWarning
153
154
  sx={{
154
155
  color: 'var(--theme-on-surface, inherit)',
155
156
  '&:hover': {
@@ -164,7 +165,7 @@ function ThemeSwitcherView({
164
165
  >
165
166
  {getCurrentIcon()}
166
167
  </IconButton>
167
-
168
+
168
169
  <Menu
169
170
  id="theme-menu"
170
171
  anchorEl={anchorEl}
@@ -179,7 +180,7 @@ function ThemeSwitcherView({
179
180
  transformOrigin={getMenuTransformOrigin()}
180
181
  >
181
182
  {showLightTheme && (
182
- <MenuItem
183
+ <MenuItem
183
184
  onClick={() => handleThemeSelect('light')}
184
185
  selected={currentTheme === 'light'}
185
186
  >
@@ -189,9 +190,9 @@ function ThemeSwitcherView({
189
190
  <ListItemText>Light</ListItemText>
190
191
  </MenuItem>
191
192
  )}
192
-
193
+
193
194
  {showDarkTheme && (
194
- <MenuItem
195
+ <MenuItem
195
196
  onClick={() => handleThemeSelect('dark')}
196
197
  selected={currentTheme === 'dark'}
197
198
  >
@@ -201,9 +202,9 @@ function ThemeSwitcherView({
201
202
  <ListItemText>Dark</ListItemText>
202
203
  </MenuItem>
203
204
  )}
204
-
205
+
205
206
  {showSystemTheme && (
206
- <MenuItem
207
+ <MenuItem
207
208
  onClick={() => handleThemeSelect('system')}
208
209
  selected={currentTheme === 'system'}
209
210
  >
@@ -214,7 +215,7 @@ function ThemeSwitcherView({
214
215
  </MenuItem>
215
216
  )}
216
217
  </Menu>
217
- </>
218
+ </span>
218
219
  );
219
220
 
220
221
  return showTooltip ? (
@@ -231,18 +232,21 @@ function ThemeSwitcherView({
231
232
  function ThemeSwitcher(props: ThemeSwitcherProps) {
232
233
  const { dataSource, bindingOptions, ...restProps } = props;
233
234
 
235
+ // Always call hooks unconditionally
236
+ const bindingResult = useDataBinding<ThemeSwitcherModel>(
237
+ dataSource || '',
238
+ restProps as Partial<ThemeSwitcherModel>,
239
+ ThemeSwitcherModel.getSchema(),
240
+ { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
241
+ );
242
+
234
243
  // If no dataSource, use traditional props
235
244
  if (!dataSource) {
236
245
  return <ThemeSwitcherView {...restProps} />;
237
246
  }
238
247
 
239
- // Use data binding
240
- const { dataSource: _source, loading, error, cached, ...themeSwitcherProps } = useDataBinding<ThemeSwitcherModel>(
241
- dataSource,
242
- restProps as Partial<ThemeSwitcherModel>,
243
- ThemeSwitcherModel.getSchema(),
244
- { cache: true, cacheTTL: 300000, strict: false, ...bindingOptions }
245
- );
248
+ // Use data binding result
249
+ const { loading, error, ...themeSwitcherProps } = bindingResult;
246
250
 
247
251
  // Show loading state
248
252
  if (loading) {
@@ -278,6 +282,6 @@ function ThemeSwitcher(props: ThemeSwitcherProps) {
278
282
  }
279
283
 
280
284
  // Mark as QwickApp component
281
- (ThemeSwitcher as any)[QWICKAPP_COMPONENT] = true;
285
+ (ThemeSwitcher as Record<string, unknown>)[QWICKAPP_COMPONENT] = true;
282
286
 
283
287
  export default ThemeSwitcher;