@qwickapps/react-framework 1.4.9 → 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 (725) hide show
  1. package/README.md +23 -0
  2. package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts +9 -9
  3. package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +1 -1
  4. package/dist/components/AccessibilityProvider.d.ts +1 -1
  5. package/dist/components/AccessibilityProvider.d.ts.map +1 -1
  6. package/dist/components/ErrorBoundary.d.ts +1 -1
  7. package/dist/components/Html.d.ts +8 -8
  8. package/dist/components/Html.d.ts.map +1 -1
  9. package/dist/components/Logo.d.ts +2 -2
  10. package/dist/components/Logo.d.ts.map +1 -1
  11. package/dist/components/Markdown.d.ts +5 -5
  12. package/dist/components/Markdown.d.ts.map +1 -1
  13. package/dist/components/ProductLogo.d.ts +60 -0
  14. package/dist/components/ProductLogo.d.ts.map +1 -0
  15. package/dist/components/QwickAppsLogo.d.ts +1 -1
  16. package/dist/components/QwickAppsLogo.d.ts.map +1 -1
  17. package/dist/components/ResponsiveMenu.d.ts.map +1 -1
  18. package/dist/components/SafeSpan.d.ts +4 -4
  19. package/dist/components/SafeSpan.d.ts.map +1 -1
  20. package/dist/components/Scaffold.d.ts.map +1 -1
  21. package/dist/components/base/Container.d.ts +3 -2
  22. package/dist/components/base/Container.d.ts.map +1 -1
  23. package/dist/components/base/ModelView.d.ts +16 -16
  24. package/dist/components/base/ModelView.d.ts.map +1 -1
  25. package/dist/components/base/index.d.ts +1 -1
  26. package/dist/components/base/index.d.ts.map +1 -1
  27. package/dist/components/blocks/Article.d.ts +4 -18
  28. package/dist/components/blocks/Article.d.ts.map +1 -1
  29. package/dist/components/blocks/CardListGrid.d.ts +3 -3
  30. package/dist/components/blocks/CardListGrid.d.ts.map +1 -1
  31. package/dist/components/blocks/Code.d.ts +5 -31
  32. package/dist/components/blocks/Code.d.ts.map +1 -1
  33. package/dist/components/blocks/Content.d.ts +2 -17
  34. package/dist/components/blocks/Content.d.ts.map +1 -1
  35. package/dist/components/blocks/CoverImageHeader.d.ts +2 -12
  36. package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -1
  37. package/dist/components/blocks/FeatureCard.d.ts +0 -17
  38. package/dist/components/blocks/FeatureCard.d.ts.map +1 -1
  39. package/dist/components/blocks/FeatureGrid.d.ts.map +1 -1
  40. package/dist/components/blocks/Footer.d.ts +2 -14
  41. package/dist/components/blocks/Footer.d.ts.map +1 -1
  42. package/dist/components/blocks/HeroBlock.d.ts +35 -26
  43. package/dist/components/blocks/HeroBlock.d.ts.map +1 -1
  44. package/dist/components/blocks/Image.d.ts +23 -23
  45. package/dist/components/blocks/Image.d.ts.map +1 -1
  46. package/dist/components/blocks/PageBannerHeader.d.ts +2 -13
  47. package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -1
  48. package/dist/components/blocks/ProductCard.d.ts +0 -9
  49. package/dist/components/blocks/ProductCard.d.ts.map +1 -1
  50. package/dist/components/blocks/Section.d.ts +16 -24
  51. package/dist/components/blocks/Section.d.ts.map +1 -1
  52. package/dist/components/blocks/Text.d.ts +5 -20
  53. package/dist/components/blocks/Text.d.ts.map +1 -1
  54. package/dist/components/buttons/Button.d.ts +19 -23
  55. package/dist/components/buttons/Button.d.ts.map +1 -1
  56. package/dist/components/buttons/PaletteSwitcher.d.ts +2 -2
  57. package/dist/components/buttons/PaletteSwitcher.d.ts.map +1 -1
  58. package/dist/components/buttons/ThemeSwitcher.d.ts +2 -2
  59. package/dist/components/buttons/ThemeSwitcher.d.ts.map +1 -1
  60. package/dist/components/dialogs/Dialog.d.ts +35 -0
  61. package/dist/components/dialogs/Dialog.d.ts.map +1 -0
  62. package/dist/components/dialogs/index.d.ts +8 -0
  63. package/dist/components/dialogs/index.d.ts.map +1 -0
  64. package/dist/components/forms/Captcha.d.ts +55 -0
  65. package/dist/components/forms/Captcha.d.ts.map +1 -0
  66. package/dist/components/forms/FormBlock.d.ts +6 -6
  67. package/dist/components/forms/FormBlock.d.ts.map +1 -1
  68. package/dist/components/forms/FormCheckbox.d.ts +27 -0
  69. package/dist/components/forms/FormCheckbox.d.ts.map +1 -0
  70. package/dist/components/forms/FormField.d.ts +43 -0
  71. package/dist/components/forms/FormField.d.ts.map +1 -0
  72. package/dist/components/forms/FormSelect.d.ts +35 -0
  73. package/dist/components/forms/FormSelect.d.ts.map +1 -0
  74. package/dist/components/forms/index.d.ts +8 -0
  75. package/dist/components/forms/index.d.ts.map +1 -1
  76. package/dist/components/index.d.ts +10 -2
  77. package/dist/components/index.d.ts.map +1 -1
  78. package/dist/components/input/ChoiceInputField.d.ts +13 -19
  79. package/dist/components/input/ChoiceInputField.d.ts.map +1 -1
  80. package/dist/components/input/HtmlInputField.d.ts +16 -17
  81. package/dist/components/input/HtmlInputField.d.ts.map +1 -1
  82. package/dist/components/input/SelectInputField.d.ts +14 -17
  83. package/dist/components/input/SelectInputField.d.ts.map +1 -1
  84. package/dist/components/input/SwitchInputField.d.ts +11 -18
  85. package/dist/components/input/SwitchInputField.d.ts.map +1 -1
  86. package/dist/components/input/TextInputField.d.ts +16 -19
  87. package/dist/components/input/TextInputField.d.ts.map +1 -1
  88. package/dist/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts.map +1 -1
  89. package/dist/components/layout/GridCell.d.ts +18 -19
  90. package/dist/components/layout/GridCell.d.ts.map +1 -1
  91. package/dist/components/layout/GridLayout.d.ts +36 -25
  92. package/dist/components/layout/GridLayout.d.ts.map +1 -1
  93. package/dist/components/menu/MenuItem.d.ts +2 -2
  94. package/dist/components/menu/MenuItem.d.ts.map +1 -1
  95. package/dist/components/pages/FormPage.d.ts.map +1 -1
  96. package/dist/components/pages/Page.d.ts +1 -1
  97. package/dist/components/pages/Page.d.ts.map +1 -1
  98. package/dist/components/shared/createSerializableView.d.ts +22 -10
  99. package/dist/components/shared/createSerializableView.d.ts.map +1 -1
  100. package/dist/components/shared/viewProps.d.ts +3 -3
  101. package/dist/components/shared/viewProps.d.ts.map +1 -1
  102. package/dist/config/AppConfig.d.ts +2 -2
  103. package/dist/config/AppConfig.d.ts.map +1 -1
  104. package/dist/config/types.d.ts +1 -1
  105. package/dist/config/types.d.ts.map +1 -1
  106. package/dist/contexts/DataContext.d.ts +3 -3
  107. package/dist/contexts/DataContext.d.ts.map +1 -1
  108. package/dist/contexts/PaletteContext.d.ts.map +1 -1
  109. package/dist/contexts/ThemeContext.d.ts.map +1 -1
  110. package/dist/hooks/useDataBinding.d.ts +2 -2
  111. package/dist/hooks/useDataBinding.d.ts.map +1 -1
  112. package/dist/hooks/usePrintMode.d.ts +2 -2
  113. package/dist/hooks/usePrintMode.d.ts.map +1 -1
  114. package/dist/index.css +1 -1
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.esm.css +1 -1
  117. package/dist/index.esm.js +3980 -2194
  118. package/dist/index.js +4006 -2191
  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 +20 -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 +13 -16
  278. package/src/components/Logo.tsx +42 -29
  279. package/src/components/Markdown.tsx +9 -9
  280. package/src/components/ProductLogo.tsx +118 -0
  281. package/src/components/QwickApp.css +37 -1060
  282. package/src/components/QwickApp.tsx +1 -1
  283. package/src/components/QwickAppsLogo.tsx +1 -1
  284. package/src/components/ResponsiveMenu.tsx +1 -1
  285. package/src/components/SafeSpan.tsx +8 -8
  286. package/src/components/Scaffold.tsx +55 -25
  287. package/src/components/base/Container.tsx +2 -2
  288. package/src/components/base/ModelView.tsx +28 -27
  289. package/src/components/base/index.ts +1 -1
  290. package/src/components/blocks/Article.tsx +213 -69
  291. package/src/components/blocks/CardListGrid.tsx +18 -14
  292. package/src/components/blocks/Code.tsx +18 -13
  293. package/src/components/blocks/Content.tsx +15 -10
  294. package/src/components/blocks/CoverImageHeader.tsx +14 -9
  295. package/src/components/blocks/FeatureCard.tsx +16 -11
  296. package/src/components/blocks/FeatureGrid.tsx +13 -8
  297. package/src/components/blocks/Footer.tsx +25 -16
  298. package/src/components/blocks/HeroBlock.tsx +12 -13
  299. package/src/components/blocks/Image.tsx +16 -8
  300. package/src/components/blocks/PageBannerHeader.tsx +15 -11
  301. package/src/components/blocks/ProductCard.tsx +32 -25
  302. package/src/components/blocks/Section.tsx +21 -13
  303. package/src/components/blocks/Text.tsx +26 -11
  304. package/src/components/buttons/Button.tsx +18 -112
  305. package/src/components/buttons/PaletteSwitcher.tsx +11 -8
  306. package/src/components/buttons/ThemeSwitcher.tsx +20 -16
  307. package/src/components/dialogs/Dialog.tsx +126 -0
  308. package/src/components/dialogs/index.ts +15 -0
  309. package/src/components/forms/Captcha.tsx +291 -0
  310. package/src/components/forms/FormBlock.tsx +22 -15
  311. package/src/components/forms/FormCheckbox.tsx +116 -0
  312. package/src/components/forms/FormField.tsx +180 -0
  313. package/src/components/forms/FormSelect.tsx +140 -0
  314. package/src/components/forms/index.ts +13 -1
  315. package/src/components/index.ts +13 -2
  316. package/src/components/input/ChoiceInputField.tsx +1 -2
  317. package/src/components/input/HtmlInputField.tsx +2 -3
  318. package/src/components/input/SelectInputField.tsx +31 -5
  319. package/src/components/input/SwitchInputField.tsx +3 -4
  320. package/src/components/input/TextField.tsx +2 -2
  321. package/src/components/input/TextInputField.tsx +32 -6
  322. package/src/components/layout/CollapsibleLayout/CollapsibleLayout.tsx +13 -13
  323. package/src/components/layout/GridCell.tsx +10 -9
  324. package/src/components/layout/GridCellWrapper.tsx +1 -1
  325. package/src/components/layout/GridLayout.tsx +29 -32
  326. package/src/components/pages/FormPage.tsx +0 -1
  327. package/src/components/pages/Page.tsx +2 -2
  328. package/src/components/shared/createSerializableView.tsx +24 -23
  329. package/src/components/shared/viewProps.ts +11 -11
  330. package/src/config/AppConfig.ts +2 -2
  331. package/src/config/__tests__/AppConfig.test.ts +3 -3
  332. package/src/config/__tests__/AppConfigBuilder.test.ts +10 -11
  333. package/src/config/types.ts +1 -1
  334. package/src/contexts/DataContext.tsx +58 -52
  335. package/src/contexts/PaletteContext.tsx +22 -9
  336. package/src/contexts/PrintModeContext.tsx +4 -4
  337. package/src/contexts/ThemeContext.tsx +2 -1
  338. package/src/hooks/useBaseProps.ts +10 -10
  339. package/src/hooks/useDataBinding.ts +15 -18
  340. package/src/hooks/usePrintMode.ts +3 -3
  341. package/src/index.ts +2 -0
  342. package/src/palettes/manifest.json +72 -0
  343. package/src/palettes/manifest.schema.json +74 -0
  344. package/src/schemas/CardListGridSchema.ts +3 -3
  345. package/src/schemas/CodeSchema.ts +0 -1
  346. package/src/schemas/FeatureGridSchema.ts +1 -1
  347. package/src/schemas/FormBlockSchema.ts +1 -1
  348. package/src/schemas/GridCellSchema.ts +0 -1
  349. package/src/schemas/GridLayoutSchema.ts +0 -1
  350. package/src/schemas/SectionSchema.ts +0 -1
  351. package/src/schemas/ViewSchema.ts +6 -6
  352. package/src/schemas/transformers/ComponentTransformer.ts +37 -20
  353. package/src/schemas/transformers/ReactNodeTransformer.ts +18 -16
  354. package/src/schemas/transformers/registry.ts +28 -24
  355. package/src/schemas/types/Serializable.ts +3 -3
  356. package/src/setupTests.js +9 -0
  357. package/src/stories/AccessibilityProvider.stories.tsx +0 -1
  358. package/src/stories/CardListGrid.stories.tsx +1 -1
  359. package/src/stories/Code.stories.tsx +2 -3
  360. package/src/stories/CollapsibleLayout.stories.tsx +41 -37
  361. package/src/stories/Container.stories.tsx +1 -2
  362. package/src/stories/DataBinding.advanced.stories.tsx +15 -9
  363. package/src/stories/DataProvider.stories.tsx +33 -16
  364. package/src/stories/ErrorBoundary.stories.tsx +28 -26
  365. package/src/stories/FeatureGrid.stories.tsx +0 -1
  366. package/src/stories/FormBlock.stories.tsx +8 -8
  367. package/src/stories/FormComponents.stories.tsx +15 -11
  368. package/src/stories/GridCell.stories.tsx +5 -5
  369. package/src/stories/GridLayout.stories.tsx +5 -5
  370. package/src/stories/Image.stories.tsx +5 -7
  371. package/src/stories/Introduction.stories.tsx +0 -1
  372. package/src/stories/ModelView.stories.tsx +7 -7
  373. package/src/stories/SafeSpan.stories.tsx +7 -3
  374. package/src/stories/Section.stories.tsx +2 -2
  375. package/src/stories/Text.stories.tsx +1 -3
  376. package/src/stories/_templates/SerializationTemplate.tsx +0 -1
  377. package/src/templates/TemplateResolver.ts +2 -2
  378. package/src/types/CollapsibleLayout.ts +2 -2
  379. package/src/types/ContentProxy.ts +6 -6
  380. package/src/types/DataTypes.ts +4 -4
  381. package/src/types/TemplateProvider.ts +1 -1
  382. package/src/types/TemplateResolver.ts +1 -1
  383. package/src/utils/htmlTransform.tsx +17 -11
  384. package/src/utils/iconMap.tsx +221 -0
  385. package/src/utils/index.ts +4 -1
  386. package/src/utils/logger.ts +20 -14
  387. package/src/utils/paletteLoader.ts +218 -0
  388. package/src/utils/paletteManifest.ts +268 -0
  389. package/src/utils/paletteUtils.ts +19 -1
  390. package/src/utils/reactUtils.tsx +34 -33
  391. package/src/utils/spacing.ts +16 -17
  392. package/src/utils/themePerformanceMonitor.js +14 -6
  393. package/src/utils/themeUtils.ts +17 -2
  394. package/dist/components/base/ContainerView.d.ts +0 -65
  395. package/dist/components/base/ContainerView.d.ts.map +0 -1
  396. package/dist/components/blocks/Code-factory.d.ts +0 -22
  397. package/dist/components/blocks/Code-factory.d.ts.map +0 -1
  398. package/dist/components/blocks/Code-old.d.ts +0 -31
  399. package/dist/components/blocks/Code-old.d.ts.map +0 -1
  400. package/dist/qa/ConsoleWarningTest.d.ts +0 -5
  401. package/dist/qa/ConsoleWarningTest.d.ts.map +0 -1
  402. package/dist/qa/StorageKeyTest.d.ts +0 -6
  403. package/dist/qa/StorageKeyTest.d.ts.map +0 -1
  404. package/dist/qa/ThemeStorageKeyTest.d.ts +0 -6
  405. package/dist/qa/ThemeStorageKeyTest.d.ts.map +0 -1
  406. package/dist/schemas/ViewModelSchema.d.ts +0 -63
  407. package/dist/schemas/ViewModelSchema.d.ts.map +0 -1
  408. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts +0 -66
  409. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts.map +0 -1
  410. package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts +0 -66
  411. package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +0 -1
  412. package/dist/src/components/AccessibilityChecker.d.ts +0 -12
  413. package/dist/src/components/AccessibilityChecker.d.ts.map +0 -1
  414. package/dist/src/components/AccessibilityProvider.d.ts +0 -64
  415. package/dist/src/components/AccessibilityProvider.d.ts.map +0 -1
  416. package/dist/src/components/Breadcrumbs.d.ts +0 -39
  417. package/dist/src/components/Breadcrumbs.d.ts.map +0 -1
  418. package/dist/src/components/ErrorBoundary.d.ts +0 -46
  419. package/dist/src/components/ErrorBoundary.d.ts.map +0 -1
  420. package/dist/src/components/Html.d.ts +0 -58
  421. package/dist/src/components/Html.d.ts.map +0 -1
  422. package/dist/src/components/Logo.d.ts +0 -56
  423. package/dist/src/components/Logo.d.ts.map +0 -1
  424. package/dist/src/components/Markdown.d.ts +0 -51
  425. package/dist/src/components/Markdown.d.ts.map +0 -1
  426. package/dist/src/components/QwickApp.d.ts +0 -69
  427. package/dist/src/components/QwickApp.d.ts.map +0 -1
  428. package/dist/src/components/QwickAppsLogo.d.ts +0 -25
  429. package/dist/src/components/QwickAppsLogo.d.ts.map +0 -1
  430. package/dist/src/components/QwickIcon.d.ts +0 -23
  431. package/dist/src/components/QwickIcon.d.ts.map +0 -1
  432. package/dist/src/components/ResponsiveMenu.d.ts +0 -38
  433. package/dist/src/components/ResponsiveMenu.d.ts.map +0 -1
  434. package/dist/src/components/SafeSpan.d.ts +0 -29
  435. package/dist/src/components/SafeSpan.d.ts.map +0 -1
  436. package/dist/src/components/Scaffold.d.ts +0 -57
  437. package/dist/src/components/Scaffold.d.ts.map +0 -1
  438. package/dist/src/components/base/Container.d.ts +0 -33
  439. package/dist/src/components/base/Container.d.ts.map +0 -1
  440. package/dist/src/components/base/ModelView.d.ts +0 -92
  441. package/dist/src/components/base/ModelView.d.ts.map +0 -1
  442. package/dist/src/components/base/index.d.ts +0 -12
  443. package/dist/src/components/base/index.d.ts.map +0 -1
  444. package/dist/src/components/blocks/Article.d.ts +0 -32
  445. package/dist/src/components/blocks/Article.d.ts.map +0 -1
  446. package/dist/src/components/blocks/CardListGrid.d.ts +0 -23
  447. package/dist/src/components/blocks/CardListGrid.d.ts.map +0 -1
  448. package/dist/src/components/blocks/Code.d.ts +0 -37
  449. package/dist/src/components/blocks/Code.d.ts.map +0 -1
  450. package/dist/src/components/blocks/Content.d.ts +0 -24
  451. package/dist/src/components/blocks/Content.d.ts.map +0 -1
  452. package/dist/src/components/blocks/CoverImageHeader.d.ts +0 -44
  453. package/dist/src/components/blocks/CoverImageHeader.d.ts.map +0 -1
  454. package/dist/src/components/blocks/FeatureCard.d.ts +0 -66
  455. package/dist/src/components/blocks/FeatureCard.d.ts.map +0 -1
  456. package/dist/src/components/blocks/FeatureGrid.d.ts +0 -48
  457. package/dist/src/components/blocks/FeatureGrid.d.ts.map +0 -1
  458. package/dist/src/components/blocks/Footer.d.ts +0 -56
  459. package/dist/src/components/blocks/Footer.d.ts.map +0 -1
  460. package/dist/src/components/blocks/HeroBlock.d.ts +0 -55
  461. package/dist/src/components/blocks/HeroBlock.d.ts.map +0 -1
  462. package/dist/src/components/blocks/Image.d.ts +0 -40
  463. package/dist/src/components/blocks/Image.d.ts.map +0 -1
  464. package/dist/src/components/blocks/PageBannerHeader.d.ts +0 -30
  465. package/dist/src/components/blocks/PageBannerHeader.d.ts.map +0 -1
  466. package/dist/src/components/blocks/ProductCard.d.ts +0 -57
  467. package/dist/src/components/blocks/ProductCard.d.ts.map +0 -1
  468. package/dist/src/components/blocks/Section.d.ts +0 -45
  469. package/dist/src/components/blocks/Section.d.ts.map +0 -1
  470. package/dist/src/components/blocks/Text.d.ts +0 -34
  471. package/dist/src/components/blocks/Text.d.ts.map +0 -1
  472. package/dist/src/components/blocks/index.d.ts +0 -41
  473. package/dist/src/components/blocks/index.d.ts.map +0 -1
  474. package/dist/src/components/buttons/Button.d.ts +0 -57
  475. package/dist/src/components/buttons/Button.d.ts.map +0 -1
  476. package/dist/src/components/buttons/PaletteSwitcher.d.ts +0 -24
  477. package/dist/src/components/buttons/PaletteSwitcher.d.ts.map +0 -1
  478. package/dist/src/components/buttons/ThemeSwitcher.d.ts +0 -24
  479. package/dist/src/components/buttons/ThemeSwitcher.d.ts.map +0 -1
  480. package/dist/src/components/buttons/index.d.ts +0 -11
  481. package/dist/src/components/buttons/index.d.ts.map +0 -1
  482. package/dist/src/components/forms/FormBlock.d.ts +0 -51
  483. package/dist/src/components/forms/FormBlock.d.ts.map +0 -1
  484. package/dist/src/components/forms/index.d.ts +0 -8
  485. package/dist/src/components/forms/index.d.ts.map +0 -1
  486. package/dist/src/components/index.d.ts +0 -41
  487. package/dist/src/components/index.d.ts.map +0 -1
  488. package/dist/src/components/input/ChoiceInputField.d.ts +0 -29
  489. package/dist/src/components/input/ChoiceInputField.d.ts.map +0 -1
  490. package/dist/src/components/input/HtmlInputField.d.ts +0 -33
  491. package/dist/src/components/input/HtmlInputField.d.ts.map +0 -1
  492. package/dist/src/components/input/SelectInputField.d.ts +0 -31
  493. package/dist/src/components/input/SelectInputField.d.ts.map +0 -1
  494. package/dist/src/components/input/SwitchInputField.d.ts +0 -27
  495. package/dist/src/components/input/SwitchInputField.d.ts.map +0 -1
  496. package/dist/src/components/input/TextField.d.ts +0 -18
  497. package/dist/src/components/input/TextField.d.ts.map +0 -1
  498. package/dist/src/components/input/TextInputField.d.ts +0 -34
  499. package/dist/src/components/input/TextInputField.d.ts.map +0 -1
  500. package/dist/src/components/input/index.d.ts +0 -19
  501. package/dist/src/components/input/index.d.ts.map +0 -1
  502. package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts +0 -34
  503. package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts.map +0 -1
  504. package/dist/src/components/layout/CollapsibleLayout/index.d.ts +0 -9
  505. package/dist/src/components/layout/CollapsibleLayout/index.d.ts.map +0 -1
  506. package/dist/src/components/layout/GridCell.d.ts +0 -32
  507. package/dist/src/components/layout/GridCell.d.ts.map +0 -1
  508. package/dist/src/components/layout/GridCellWrapper.d.ts +0 -46
  509. package/dist/src/components/layout/GridCellWrapper.d.ts.map +0 -1
  510. package/dist/src/components/layout/GridLayout.d.ts +0 -50
  511. package/dist/src/components/layout/GridLayout.d.ts.map +0 -1
  512. package/dist/src/components/layout/index.d.ts +0 -14
  513. package/dist/src/components/layout/index.d.ts.map +0 -1
  514. package/dist/src/components/menu/Menu.d.ts +0 -1
  515. package/dist/src/components/menu/Menu.d.ts.map +0 -1
  516. package/dist/src/components/menu/MenuItem.d.ts +0 -31
  517. package/dist/src/components/menu/MenuItem.d.ts.map +0 -1
  518. package/dist/src/components/menu/index.d.ts +0 -7
  519. package/dist/src/components/menu/index.d.ts.map +0 -1
  520. package/dist/src/components/pages/FormPage.d.ts +0 -66
  521. package/dist/src/components/pages/FormPage.d.ts.map +0 -1
  522. package/dist/src/components/pages/Page.d.ts +0 -68
  523. package/dist/src/components/pages/Page.d.ts.map +0 -1
  524. package/dist/src/components/pages/index.d.ts +0 -10
  525. package/dist/src/components/pages/index.d.ts.map +0 -1
  526. package/dist/src/components/shared/createSerializableView.d.ts +0 -81
  527. package/dist/src/components/shared/createSerializableView.d.ts.map +0 -1
  528. package/dist/src/components/shared/viewProps.d.ts +0 -37
  529. package/dist/src/components/shared/viewProps.d.ts.map +0 -1
  530. package/dist/src/config/AppConfig.d.ts +0 -49
  531. package/dist/src/config/AppConfig.d.ts.map +0 -1
  532. package/dist/src/config/AppConfigBuilder.d.ts +0 -75
  533. package/dist/src/config/AppConfigBuilder.d.ts.map +0 -1
  534. package/dist/src/config/index.d.ts +0 -13
  535. package/dist/src/config/index.d.ts.map +0 -1
  536. package/dist/src/config/types.d.ts +0 -130
  537. package/dist/src/config/types.d.ts.map +0 -1
  538. package/dist/src/config.d.ts +0 -15
  539. package/dist/src/config.d.ts.map +0 -1
  540. package/dist/src/contexts/DataContext.d.ts +0 -139
  541. package/dist/src/contexts/DataContext.d.ts.map +0 -1
  542. package/dist/src/contexts/DimensionsContext.d.ts +0 -42
  543. package/dist/src/contexts/DimensionsContext.d.ts.map +0 -1
  544. package/dist/src/contexts/PaletteContext.d.ts +0 -53
  545. package/dist/src/contexts/PaletteContext.d.ts.map +0 -1
  546. package/dist/src/contexts/PrintModeContext.d.ts +0 -27
  547. package/dist/src/contexts/PrintModeContext.d.ts.map +0 -1
  548. package/dist/src/contexts/QwickAppContext.d.ts +0 -71
  549. package/dist/src/contexts/QwickAppContext.d.ts.map +0 -1
  550. package/dist/src/contexts/ThemeContext.d.ts +0 -65
  551. package/dist/src/contexts/ThemeContext.d.ts.map +0 -1
  552. package/dist/src/contexts/index.d.ts +0 -11
  553. package/dist/src/contexts/index.d.ts.map +0 -1
  554. package/dist/src/hooks/index.d.ts +0 -12
  555. package/dist/src/hooks/index.d.ts.map +0 -1
  556. package/dist/src/hooks/useBaseProps.d.ts +0 -101
  557. package/dist/src/hooks/useBaseProps.d.ts.map +0 -1
  558. package/dist/src/hooks/useDataBinding.d.ts +0 -22
  559. package/dist/src/hooks/useDataBinding.d.ts.map +0 -1
  560. package/dist/src/hooks/usePrintMode.d.ts +0 -39
  561. package/dist/src/hooks/usePrintMode.d.ts.map +0 -1
  562. package/dist/src/index.d.ts +0 -9
  563. package/dist/src/index.d.ts.map +0 -1
  564. package/dist/src/palettes/PaletteAutumn.d.ts +0 -10
  565. package/dist/src/palettes/PaletteAutumn.d.ts.map +0 -1
  566. package/dist/src/palettes/PaletteCosmic.d.ts +0 -10
  567. package/dist/src/palettes/PaletteCosmic.d.ts.map +0 -1
  568. package/dist/src/palettes/PaletteDefault.d.ts +0 -10
  569. package/dist/src/palettes/PaletteDefault.d.ts.map +0 -1
  570. package/dist/src/palettes/PaletteOcean.d.ts +0 -10
  571. package/dist/src/palettes/PaletteOcean.d.ts.map +0 -1
  572. package/dist/src/palettes/PaletteSpring.d.ts +0 -10
  573. package/dist/src/palettes/PaletteSpring.d.ts.map +0 -1
  574. package/dist/src/palettes/PaletteWinter.d.ts +0 -10
  575. package/dist/src/palettes/PaletteWinter.d.ts.map +0 -1
  576. package/dist/src/palettes/index.d.ts +0 -13
  577. package/dist/src/palettes/index.d.ts.map +0 -1
  578. package/dist/src/schemas/ActionSchema.d.ts +0 -21
  579. package/dist/src/schemas/ActionSchema.d.ts.map +0 -1
  580. package/dist/src/schemas/ArticleSchema.d.ts +0 -13
  581. package/dist/src/schemas/ArticleSchema.d.ts.map +0 -1
  582. package/dist/src/schemas/ButtonSchema.d.ts +0 -22
  583. package/dist/src/schemas/ButtonSchema.d.ts.map +0 -1
  584. package/dist/src/schemas/CardListGridSchema.d.ts +0 -17
  585. package/dist/src/schemas/CardListGridSchema.d.ts.map +0 -1
  586. package/dist/src/schemas/ChoiceInputFieldSchema.d.ts +0 -18
  587. package/dist/src/schemas/ChoiceInputFieldSchema.d.ts.map +0 -1
  588. package/dist/src/schemas/CodeSchema.d.ts +0 -18
  589. package/dist/src/schemas/CodeSchema.d.ts.map +0 -1
  590. package/dist/src/schemas/CollapsibleLayoutSchema.d.ts +0 -32
  591. package/dist/src/schemas/CollapsibleLayoutSchema.d.ts.map +0 -1
  592. package/dist/src/schemas/ContainerSchema.d.ts +0 -12
  593. package/dist/src/schemas/ContainerSchema.d.ts.map +0 -1
  594. package/dist/src/schemas/ContentSchema.d.ts +0 -21
  595. package/dist/src/schemas/ContentSchema.d.ts.map +0 -1
  596. package/dist/src/schemas/CoverImageHeaderSchema.d.ts +0 -28
  597. package/dist/src/schemas/CoverImageHeaderSchema.d.ts.map +0 -1
  598. package/dist/src/schemas/FeatureCardSchema.d.ts +0 -28
  599. package/dist/src/schemas/FeatureCardSchema.d.ts.map +0 -1
  600. package/dist/src/schemas/FeatureGridSchema.d.ts +0 -17
  601. package/dist/src/schemas/FeatureGridSchema.d.ts.map +0 -1
  602. package/dist/src/schemas/FeatureItemSchema.d.ts +0 -16
  603. package/dist/src/schemas/FeatureItemSchema.d.ts.map +0 -1
  604. package/dist/src/schemas/FooterItemSchema.d.ts +0 -15
  605. package/dist/src/schemas/FooterItemSchema.d.ts.map +0 -1
  606. package/dist/src/schemas/FooterSchema.d.ts +0 -20
  607. package/dist/src/schemas/FooterSchema.d.ts.map +0 -1
  608. package/dist/src/schemas/FooterSectionSchema.d.ts +0 -15
  609. package/dist/src/schemas/FooterSectionSchema.d.ts.map +0 -1
  610. package/dist/src/schemas/FormBlockSchema.d.ts +0 -19
  611. package/dist/src/schemas/FormBlockSchema.d.ts.map +0 -1
  612. package/dist/src/schemas/GridCellSchema.d.ts +0 -23
  613. package/dist/src/schemas/GridCellSchema.d.ts.map +0 -1
  614. package/dist/src/schemas/GridLayoutSchema.d.ts +0 -21
  615. package/dist/src/schemas/GridLayoutSchema.d.ts.map +0 -1
  616. package/dist/src/schemas/HeaderActionSchema.d.ts +0 -17
  617. package/dist/src/schemas/HeaderActionSchema.d.ts.map +0 -1
  618. package/dist/src/schemas/HeroBlockSchema.d.ts +0 -22
  619. package/dist/src/schemas/HeroBlockSchema.d.ts.map +0 -1
  620. package/dist/src/schemas/HtmlInputFieldSchema.d.ts +0 -18
  621. package/dist/src/schemas/HtmlInputFieldSchema.d.ts.map +0 -1
  622. package/dist/src/schemas/HtmlSchema.d.ts +0 -14
  623. package/dist/src/schemas/HtmlSchema.d.ts.map +0 -1
  624. package/dist/src/schemas/ImageSchema.d.ts +0 -32
  625. package/dist/src/schemas/ImageSchema.d.ts.map +0 -1
  626. package/dist/src/schemas/LogoSchema.d.ts +0 -35
  627. package/dist/src/schemas/LogoSchema.d.ts.map +0 -1
  628. package/dist/src/schemas/MarkdownSchema.d.ts +0 -14
  629. package/dist/src/schemas/MarkdownSchema.d.ts.map +0 -1
  630. package/dist/src/schemas/MetadataItemSchema.d.ts +0 -13
  631. package/dist/src/schemas/MetadataItemSchema.d.ts.map +0 -1
  632. package/dist/src/schemas/PageBannerHeaderSchema.d.ts +0 -28
  633. package/dist/src/schemas/PageBannerHeaderSchema.d.ts.map +0 -1
  634. package/dist/src/schemas/PageTemplateSchema.d.ts +0 -31
  635. package/dist/src/schemas/PageTemplateSchema.d.ts.map +0 -1
  636. package/dist/src/schemas/PaletteSwitcherSchema.d.ts +0 -16
  637. package/dist/src/schemas/PaletteSwitcherSchema.d.ts.map +0 -1
  638. package/dist/src/schemas/PrintConfigSchema.d.ts +0 -31
  639. package/dist/src/schemas/PrintConfigSchema.d.ts.map +0 -1
  640. package/dist/src/schemas/ProductCardSchema.d.ts +0 -39
  641. package/dist/src/schemas/ProductCardSchema.d.ts.map +0 -1
  642. package/dist/src/schemas/SafeSpanSchema.d.ts +0 -13
  643. package/dist/src/schemas/SafeSpanSchema.d.ts.map +0 -1
  644. package/dist/src/schemas/SectionSchema.d.ts +0 -16
  645. package/dist/src/schemas/SectionSchema.d.ts.map +0 -1
  646. package/dist/src/schemas/SelectInputFieldSchema.d.ts +0 -27
  647. package/dist/src/schemas/SelectInputFieldSchema.d.ts.map +0 -1
  648. package/dist/src/schemas/SwitchInputFieldSchema.d.ts +0 -18
  649. package/dist/src/schemas/SwitchInputFieldSchema.d.ts.map +0 -1
  650. package/dist/src/schemas/TextInputFieldSchema.d.ts +0 -22
  651. package/dist/src/schemas/TextInputFieldSchema.d.ts.map +0 -1
  652. package/dist/src/schemas/TextSchema.d.ts +0 -37
  653. package/dist/src/schemas/TextSchema.d.ts.map +0 -1
  654. package/dist/src/schemas/ThemeSwitcherSchema.d.ts +0 -19
  655. package/dist/src/schemas/ThemeSwitcherSchema.d.ts.map +0 -1
  656. package/dist/src/schemas/ViewSchema.d.ts +0 -66
  657. package/dist/src/schemas/ViewSchema.d.ts.map +0 -1
  658. package/dist/src/schemas/index.d.ts +0 -47
  659. package/dist/src/schemas/index.d.ts.map +0 -1
  660. package/dist/src/schemas/transformers/ComponentTransformer.d.ts +0 -128
  661. package/dist/src/schemas/transformers/ComponentTransformer.d.ts.map +0 -1
  662. package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts +0 -53
  663. package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts.map +0 -1
  664. package/dist/src/schemas/transformers/registry.d.ts +0 -18
  665. package/dist/src/schemas/transformers/registry.d.ts.map +0 -1
  666. package/dist/src/schemas/types/Serializable.d.ts +0 -46
  667. package/dist/src/schemas/types/Serializable.d.ts.map +0 -1
  668. package/dist/src/stories/_templates/SerializationTemplate.d.ts.map +0 -1
  669. package/dist/src/templates/TemplateResolver.d.ts +0 -52
  670. package/dist/src/templates/TemplateResolver.d.ts.map +0 -1
  671. package/dist/src/templates/index.d.ts +0 -7
  672. package/dist/src/templates/index.d.ts.map +0 -1
  673. package/dist/src/types/CacheProvider.d.ts +0 -18
  674. package/dist/src/types/CacheProvider.d.ts.map +0 -1
  675. package/dist/src/types/CollapsibleLayout.d.ts +0 -142
  676. package/dist/src/types/CollapsibleLayout.d.ts.map +0 -1
  677. package/dist/src/types/ContentProxy.d.ts +0 -47
  678. package/dist/src/types/ContentProxy.d.ts.map +0 -1
  679. package/dist/src/types/DataTypes.d.ts +0 -185
  680. package/dist/src/types/DataTypes.d.ts.map +0 -1
  681. package/dist/src/types/TemplateProvider.d.ts +0 -10
  682. package/dist/src/types/TemplateProvider.d.ts.map +0 -1
  683. package/dist/src/types/TemplateResolver.d.ts +0 -23
  684. package/dist/src/types/TemplateResolver.d.ts.map +0 -1
  685. package/dist/src/types/index.d.ts +0 -82
  686. package/dist/src/types/index.d.ts.map +0 -1
  687. package/dist/src/utils/breakpoints.d.ts +0 -35
  688. package/dist/src/utils/breakpoints.d.ts.map +0 -1
  689. package/dist/src/utils/cssUtils.d.ts +0 -17
  690. package/dist/src/utils/cssUtils.d.ts.map +0 -1
  691. package/dist/src/utils/customPaletteManager.d.ts +0 -8
  692. package/dist/src/utils/customPaletteManager.d.ts.map +0 -1
  693. package/dist/src/utils/dimensions.d.ts +0 -34
  694. package/dist/src/utils/dimensions.d.ts.map +0 -1
  695. package/dist/src/utils/htmlTransform.d.ts +0 -44
  696. package/dist/src/utils/htmlTransform.d.ts.map +0 -1
  697. package/dist/src/utils/index.d.ts +0 -16
  698. package/dist/src/utils/index.d.ts.map +0 -1
  699. package/dist/src/utils/logger.d.ts +0 -26
  700. package/dist/src/utils/logger.d.ts.map +0 -1
  701. package/dist/src/utils/paletteUtils.d.ts +0 -38
  702. package/dist/src/utils/paletteUtils.d.ts.map +0 -1
  703. package/dist/src/utils/persistenceUtils.d.ts +0 -31
  704. package/dist/src/utils/persistenceUtils.d.ts.map +0 -1
  705. package/dist/src/utils/reactUtils.d.ts +0 -33
  706. package/dist/src/utils/reactUtils.d.ts.map +0 -1
  707. package/dist/src/utils/spacing.d.ts +0 -34
  708. package/dist/src/utils/spacing.d.ts.map +0 -1
  709. package/dist/src/utils/themePerformanceMonitor.d.ts +0 -32
  710. package/dist/src/utils/themePerformanceMonitor.d.ts.map +0 -1
  711. package/dist/src/utils/themeUtils.d.ts +0 -27
  712. package/dist/src/utils/themeUtils.d.ts.map +0 -1
  713. package/dist/tests/ConsoleWarningTest.d.ts +0 -5
  714. package/dist/tests/ConsoleWarningTest.d.ts.map +0 -1
  715. package/dist/tests/StorageKeyTest.d.ts +0 -6
  716. package/dist/tests/StorageKeyTest.d.ts.map +0 -1
  717. package/dist/tests/ThemeStorageKeyTest.d.ts +0 -6
  718. package/dist/tests/ThemeStorageKeyTest.d.ts.map +0 -1
  719. /package/dist/palettes/{PaletteAutumn.css → palette-autumn.1.4.9.css} +0 -0
  720. /package/dist/palettes/{PaletteCosmic.css → palette-cosmic.1.4.9.css} +0 -0
  721. /package/dist/palettes/{PaletteDefault.css → palette-default.1.4.9.css} +0 -0
  722. /package/dist/palettes/{PaletteOcean.css → palette-ocean.1.4.9.css} +0 -0
  723. /package/dist/palettes/{PaletteSpring.css → palette-spring.1.4.9.css} +0 -0
  724. /package/dist/palettes/{PaletteWinter.css → palette-winter.1.4.9.css} +0 -0
  725. /package/dist/{src/stories → stories}/_templates/SerializationTemplate.d.ts +0 -0
@@ -57,12 +57,11 @@ interface CreateSerializableViewConfig<P extends ViewProps> {
57
57
  /**
58
58
  * Serializable component interface with all required static properties
59
59
  */
60
- export interface SerializableComponent<P extends ViewProps> {
61
- (props: P): ReactElement;
60
+ export interface SerializableComponent<P extends ViewProps> extends React.FC<P> {
62
61
  tagName: string;
63
62
  version: string;
64
- fromJson: (data: any) => ReactElement;
65
- toJson: (props: P) => any;
63
+ fromJson: (data: unknown) => ReactElement;
64
+ toJson: (props: P) => unknown;
66
65
  displayName?: string;
67
66
  [QWICKAPP_COMPONENT]: symbol;
68
67
  }
@@ -80,7 +79,7 @@ export function createSerializableView<P extends ViewProps>(
80
79
 
81
80
  // Create the main component function
82
81
  function SerializableViewComponent(props: P): ReactElement {
83
- const { dataSource, bindingOptions, children, ...schemaProps } = props as any;
82
+ const { dataSource, bindingOptions, children, ...schemaProps } = props as P & { dataSource?: string; bindingOptions?: Record<string, unknown>; children?: ReactNode };
84
83
 
85
84
  // Step 1: Handle content-prop strategy (map JSX children → content)
86
85
  let propsForProcessing = schemaProps;
@@ -162,14 +161,15 @@ export function createSerializableView<P extends ViewProps>(
162
161
  component[QWICKAPP_COMPONENT] = QWICKAPP_COMPONENT;
163
162
 
164
163
  // Serialization methods
165
- component.fromJson = function fromJson(data: any): ReactElement {
166
- const { tagName: dataTagName, version: dataVersion, data: componentData } = data;
167
-
164
+ component.fromJson = function fromJson(data: unknown): ReactElement {
165
+ const typedData = data as { tagName?: string; version?: string; data?: unknown };
166
+ const { tagName: dataTagName, version: dataVersion, data: componentData } = typedData;
167
+
168
168
  // Validate deserialization data
169
169
  if (dataTagName !== tagName) {
170
170
  throw new Error(`Tag name mismatch: expected ${tagName}, got ${dataTagName}`);
171
171
  }
172
-
172
+
173
173
  if (dataVersion !== version) {
174
174
  console.warn(`Version mismatch for ${tagName}: expected ${version}, got ${dataVersion}`);
175
175
  }
@@ -177,30 +177,31 @@ export function createSerializableView<P extends ViewProps>(
177
177
  // Handle deserialization based on children strategy
178
178
  if (childrenStrategy.mode === 'content-prop') {
179
179
  const propName = childrenStrategy.propName || 'content';
180
- const { children: _ignored, ...rest } = componentData || {};
180
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
181
+ const { children, ...rest } = componentData || {};
181
182
  const contentData = { ...rest, [propName]: componentData?.[propName] || '' };
182
183
  return React.createElement(component as ComponentType<P>, contentData as P);
183
184
  } else {
184
185
  // For react-children strategy, recursively deserialize children
185
- const deserializedData = { ...componentData };
186
- if (componentData.children !== undefined) {
187
- // Import ComponentTransformer here to avoid circular dependency
188
- const { ComponentTransformer } = require('../../schemas/transformers/ComponentTransformer');
189
- deserializedData.children = ComponentTransformer.deserialize(componentData.children);
186
+ const deserializedData = { ...(componentData as Record<string, unknown>) };
187
+ if ((componentData as Record<string, unknown>).children !== undefined) {
188
+ // Recursively deserialize children using ComponentTransformer
189
+ deserializedData.children = ComponentTransformer.deserialize((componentData as Record<string, unknown>).children);
190
190
  }
191
191
  return React.createElement(component as ComponentType<P>, deserializedData as P);
192
192
  }
193
193
  };
194
194
 
195
- component.toJson = function toJson(props: P): any {
195
+ component.toJson = function toJson(props: P): unknown {
196
196
  // Handle serialization based on children strategy
197
197
  if (childrenStrategy.mode === 'content-prop') {
198
198
  const propName = childrenStrategy.propName || 'content';
199
- const { children: _ignored, ...rest } = props || {};
200
- const contentValue = (props as any)?.[propName] ?? toText((props as any)?.children);
201
-
199
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
200
+ const { children, ...rest } = props || {};
201
+ const contentValue = (props as Record<string, unknown>)?.[propName] ?? toText((props as Record<string, unknown>)?.children as ReactNode);
202
+
202
203
  // Clean props for content-prop serialization
203
- const cleanProps: any = {};
204
+ const cleanProps: Record<string, unknown> = {};
204
205
  for (const [key, value] of Object.entries(rest)) {
205
206
  if (typeof value === 'function' && key.startsWith('on')) {
206
207
  cleanProps[key] = value.toString();
@@ -216,7 +217,7 @@ export function createSerializableView<P extends ViewProps>(
216
217
  };
217
218
  } else {
218
219
  // Handle react-children strategy (existing logic)
219
- const cleanProps: any = {};
220
+ const cleanProps: unknown = {};
220
221
 
221
222
  for (const [key, value] of Object.entries(props)) {
222
223
  if (typeof value === 'function' && key.startsWith('on')) {
@@ -257,7 +258,7 @@ export type SerializableViewComponent<P extends ViewProps> = SerializableCompone
257
258
  /**
258
259
  * Type guard to check if a component is serializable
259
260
  */
260
- export function isSerializableComponent(component: any): component is SerializableComponent<any> {
261
+ export function isSerializableComponent(component: unknown): component is SerializableComponent<unknown> {
261
262
  return component &&
262
263
  typeof component === 'function' &&
263
264
  typeof component.tagName === 'string' &&
@@ -270,7 +271,7 @@ export function isSerializableComponent(component: any): component is Serializab
270
271
  /**
271
272
  * Extract component metadata for registration
272
273
  */
273
- export function getComponentMetadata(component: SerializableComponent<any>) {
274
+ export function getComponentMetadata(component: SerializableComponent<unknown>) {
274
275
  return {
275
276
  tagName: component.tagName,
276
277
  version: component.version,
@@ -29,17 +29,17 @@ export interface ViewProps extends SchemaProps<ViewSchema>, WithDataBinding {
29
29
  /**
30
30
  * Type for string event handlers in schema
31
31
  */
32
- type EventHandlerValue = string | React.MouseEventHandler<any> | React.FocusEventHandler<any> | undefined;
32
+ type EventHandlerValue = string | React.MouseEventHandler<unknown> | React.FocusEventHandler<unknown> | undefined;
33
33
 
34
34
  /**
35
35
  * Runtime event handler conversion map
36
36
  */
37
37
  interface EventHandlers {
38
- onClick?: React.MouseEventHandler<any>;
39
- onMouseEnter?: React.MouseEventHandler<any>;
40
- onMouseLeave?: React.MouseEventHandler<any>;
41
- onFocus?: React.FocusEventHandler<any>;
42
- onBlur?: React.FocusEventHandler<any>;
38
+ onClick?: React.MouseEventHandler<unknown>;
39
+ onMouseEnter?: React.MouseEventHandler<unknown>;
40
+ onMouseLeave?: React.MouseEventHandler<unknown>;
41
+ onFocus?: React.FocusEventHandler<unknown>;
42
+ onBlur?: React.FocusEventHandler<unknown>;
43
43
  }
44
44
 
45
45
  /**
@@ -49,21 +49,21 @@ interface EventHandlers {
49
49
  */
50
50
  function parseEventHandlers(eventHandlers: Record<string, EventHandlerValue>): EventHandlers {
51
51
  const result: EventHandlers = {};
52
-
52
+
53
53
  for (const [key, value] of Object.entries(eventHandlers)) {
54
54
  if (typeof value === 'string' && value.trim()) {
55
55
  try {
56
56
  // Convert string to function - safe eval for event handlers
57
57
  // This creates a function that executes the string as code
58
58
  const func = new Function('event', value);
59
- result[key as keyof EventHandlers] = func as any;
59
+ result[key as keyof EventHandlers] = func as React.MouseEventHandler<unknown> | React.FocusEventHandler<unknown>;
60
60
  } catch (error) {
61
61
  console.warn(`Invalid event handler string for ${key}:`, value, error);
62
62
  // Keep as undefined for invalid handlers
63
63
  }
64
64
  } else if (typeof value === 'function') {
65
65
  // Already a function, use as-is
66
- result[key as keyof EventHandlers] = value as any;
66
+ result[key as keyof EventHandlers] = value as React.MouseEventHandler<unknown> | React.FocusEventHandler<unknown>;
67
67
  }
68
68
  }
69
69
 
@@ -187,7 +187,7 @@ export function normalizeViewProps<T extends ViewProps>(props: T): T & BaseCompo
187
187
  };
188
188
 
189
189
  // Canonicalize background prop (backgroundColor → background)
190
- const canonicalBackground = (restProps as any).background ?? backgroundColor;
190
+ const canonicalBackground = (restProps as { background?: string }).background ?? backgroundColor;
191
191
 
192
192
  // Return normalized props with proper typing
193
193
  const normalized = {
@@ -201,7 +201,7 @@ export function normalizeViewProps<T extends ViewProps>(props: T): T & BaseCompo
201
201
  } as T & BaseComponentProps;
202
202
 
203
203
  // Remove backgroundColor to avoid duplication
204
- delete (normalized as any).backgroundColor;
204
+ delete (normalized as T & BaseComponentProps & { backgroundColor?: string }).backgroundColor;
205
205
 
206
206
  return normalized;
207
207
  }
@@ -73,7 +73,7 @@ export class AppConfig implements IAppConfig {
73
73
  /**
74
74
  * Generate PWA manifest
75
75
  */
76
- get pwaManifest(): Record<string, any> {
76
+ get pwaManifest(): Record<string, unknown> {
77
77
  return {
78
78
  name: this.app.name,
79
79
  short_name: this.app.shortName,
@@ -102,7 +102,7 @@ export class AppConfig implements IAppConfig {
102
102
  /**
103
103
  * Convert to plain object (for serialization)
104
104
  */
105
- toJSON(): Record<string, any> {
105
+ toJSON(): Record<string, unknown> {
106
106
  return {
107
107
  app: this.app,
108
108
  build: this.build,
@@ -79,11 +79,11 @@ describe('AppConfig', () => {
79
79
 
80
80
  // Attempt to modify should fail
81
81
  expect(() => {
82
- (config.app as any).name = 'Modified Name';
82
+ (config.app as { name: string }).name = 'Modified Name';
83
83
  }).toThrow();
84
84
 
85
85
  expect(() => {
86
- (config.build as any).port = 4000;
86
+ (config.build as { port: number }).port = 4000;
87
87
  }).toThrow();
88
88
  });
89
89
  });
@@ -319,7 +319,7 @@ describe('AppConfig', () => {
319
319
  });
320
320
 
321
321
  expect(() => {
322
- (newConfig.app as any).name = 'Another Name';
322
+ (newConfig.app as { name: string }).name = 'Another Name';
323
323
  }).toThrow();
324
324
  });
325
325
  });
@@ -7,7 +7,6 @@
7
7
  */
8
8
 
9
9
  import * as fs from 'fs';
10
- import * as path from 'path';
11
10
  import { AppConfigBuilder } from '../AppConfigBuilder';
12
11
  import { AppConfig } from '../AppConfig';
13
12
 
@@ -164,7 +163,7 @@ describe('AppConfigBuilder', () => {
164
163
  AppConfigBuilder.create()
165
164
  .withName('Test App')
166
165
  .withId('test-app')
167
- .withPort(3000.5 as any)
166
+ .withPort(3000.5 as unknown as number)
168
167
  .build();
169
168
  }).toThrow('Port must be a valid integer between 1 and 65535');
170
169
  });
@@ -206,9 +205,9 @@ describe('AppConfigBuilder', () => {
206
205
  });
207
206
 
208
207
  it('should skip validation when skipValidation option is true', () => {
209
- const consoleWarn = jest.spyOn(console, 'warn').mockImplementation();
208
+ jest.spyOn(console, 'warn').mockImplementation();
210
209
 
211
- const config = AppConfigBuilder.create()
210
+ AppConfigBuilder.create()
212
211
  .withOptions({ skipValidation: true })
213
212
  .withName('Test App')
214
213
  .withId('test-app')
@@ -241,9 +240,9 @@ describe('AppConfigBuilder', () => {
241
240
  });
242
241
 
243
242
  it('should accept named colors', () => {
244
- const consoleWarn = jest.spyOn(console, 'warn').mockImplementation();
243
+ jest.spyOn(console, 'warn').mockImplementation();
245
244
 
246
- const config = AppConfigBuilder.create()
245
+ AppConfigBuilder.create()
247
246
  .withName('Test App')
248
247
  .withId('test-app')
249
248
  .withThemeColor('red')
@@ -258,7 +257,7 @@ describe('AppConfigBuilder', () => {
258
257
  it('should warn for potentially invalid colors', () => {
259
258
  const consoleWarn = jest.spyOn(console, 'warn').mockImplementation();
260
259
 
261
- const config = AppConfigBuilder.create()
260
+ AppConfigBuilder.create()
262
261
  .withName('Test App')
263
262
  .withId('test-app')
264
263
  .withThemeColor('invalid-color')
@@ -330,7 +329,7 @@ describe('AppConfigBuilder', () => {
330
329
  throw new Error('File not found');
331
330
  });
332
331
 
333
- const config = AppConfigBuilder.create()
332
+ AppConfigBuilder.create()
334
333
  .withConfig('./missing.json')
335
334
  .withName('Test App')
336
335
  .withId('test-app')
@@ -403,7 +402,7 @@ describe('AppConfigBuilder', () => {
403
402
  AppConfigBuilder.create()
404
403
  .withPort(0)
405
404
  .build();
406
- } catch (error: any) {
405
+ } catch (error: unknown) {
407
406
  const message = error.message;
408
407
  expect(message).toContain('App name is required');
409
408
  expect(message).toContain('App ID is required');
@@ -421,11 +420,11 @@ describe('AppConfigBuilder', () => {
421
420
 
422
421
  // Attempt to modify the configuration should not work
423
422
  expect(() => {
424
- (config.app as any).name = 'Modified Name';
423
+ (config.app as { name: string }).name = 'Modified Name';
425
424
  }).toThrow();
426
425
 
427
426
  expect(() => {
428
- (config as any).app = { name: 'New App' };
427
+ (config as { app: unknown }).app = { name: 'New App' };
429
428
  }).toThrow();
430
429
  });
431
430
  });
@@ -32,7 +32,7 @@ export interface AppConfig {
32
32
  readonly viteConfig: ViteUserConfig;
33
33
 
34
34
  /** Computed PWA manifest */
35
- readonly pwaManifest: Record<string, any>;
35
+ readonly pwaManifest: Record<string, unknown>;
36
36
  }
37
37
 
38
38
  /**
@@ -8,7 +8,7 @@
8
8
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
9
9
  */
10
10
 
11
- import React, { createContext, useContext, useEffect, useState, ReactNode } from 'react';
11
+ import React, { createContext, useContext, useEffect, useState, useCallback, ReactNode } from 'react';
12
12
  import { ITemplateResolver, TemplateResolverConfig } from '../types';
13
13
  import { TemplateResolver } from '../templates';
14
14
  import { Model } from '@qwickapps/schema';
@@ -19,7 +19,7 @@ import { Model } from '@qwickapps/schema';
19
19
  interface DataContextValue {
20
20
  provider: ITemplateResolver | null;
21
21
  get<T extends Model>(slug: string): Promise<T | undefined>;
22
- select<T extends Model>(schema: string, options?: any): Promise<T[]>;
22
+ select<T extends Model>(schema: string, options?: unknown): Promise<T[]>;
23
23
  resolveTemplate(template: string): Promise<string>;
24
24
  }
25
25
 
@@ -67,7 +67,7 @@ export function DataProvider({ dataSource, children }: DataProviderProps) {
67
67
  const result = await dataProvider.get(slug);
68
68
  return result && result.data ? (result.data as T) : undefined;
69
69
  },
70
- select: async <T extends Model>(schema: string, options?: any): Promise<T[]> => {
70
+ select: async <T extends Model>(schema: string, options?: unknown): Promise<T[]> => {
71
71
  const result = await dataProvider.select(schema, options);
72
72
  return result && Array.isArray(result.data) ? (result.data as T[]) : [];
73
73
  },
@@ -106,35 +106,45 @@ export function useDataSafe<T extends Model>(slug: string): {
106
106
  error: Error | null;
107
107
  } {
108
108
  const context = useContext(DataContext);
109
- if (!context) {
110
- return { data: undefined, loading: false, error: null };
111
- }
112
109
 
110
+ // Always call hooks before any returns
113
111
  const [data, setData] = useState<T | undefined>(undefined);
114
112
  const [loading, setLoading] = useState(true);
115
113
  const [error, setError] = useState<Error | null>(null);
116
114
 
117
- const fetchData = async () => {
118
- if (!slug) {
115
+ // Always call useEffect unconditionally
116
+ useEffect(() => {
117
+ // Only fetch if context exists
118
+ if (!context) {
119
119
  setLoading(false);
120
120
  return;
121
121
  }
122
122
 
123
- try {
124
- setLoading(true);
125
- setError(null);
126
- const result = await context.get<T>(slug);
127
- setData(result);
128
- setLoading(false);
129
- } catch (err) {
130
- setError(err instanceof Error ? err : new Error(String(err)));
131
- setLoading(false);
132
- }
133
- };
123
+ const fetchData = async () => {
124
+ if (!slug) {
125
+ setLoading(false);
126
+ return;
127
+ }
128
+
129
+ try {
130
+ setLoading(true);
131
+ setError(null);
132
+ const result = await context.get<T>(slug);
133
+ setData(result);
134
+ setLoading(false);
135
+ } catch (err) {
136
+ setError(err instanceof Error ? err : new Error(String(err)));
137
+ setLoading(false);
138
+ }
139
+ };
134
140
 
135
- useEffect(() => {
136
141
  fetchData();
137
- }, [slug]);
142
+ }, [context, slug]);
143
+
144
+ // Return early if no context
145
+ if (!context) {
146
+ return { data: undefined, loading: false, error: null };
147
+ }
138
148
 
139
149
  return { data, loading, error };
140
150
  }
@@ -156,7 +166,7 @@ export function useData<T extends Model>(fieldGroupId: string): {
156
166
  const [loading, setLoading] = useState(true);
157
167
  const [error, setError] = useState<Error | null>(null);
158
168
 
159
- const fetchData = async () => {
169
+ const fetchData = useCallback(async () => {
160
170
  if (!fieldGroupId) {
161
171
  setLoading(false);
162
172
  return;
@@ -172,16 +182,16 @@ export function useData<T extends Model>(fieldGroupId: string): {
172
182
  setError(err instanceof Error ? err : new Error(String(err)));
173
183
  setLoading(false);
174
184
  }
175
- };
185
+ }, [fieldGroupId, get]);
176
186
 
177
187
  useEffect(() => {
178
188
  fetchData();
179
- }, [fieldGroupId, get]);
189
+ }, [fetchData]);
180
190
 
181
- return {
182
- data,
183
- loading,
184
- error,
191
+ return {
192
+ data,
193
+ loading,
194
+ error,
185
195
  refetch: fetchData
186
196
  };
187
197
  }
@@ -258,33 +268,29 @@ export function useDataProvider(): ITemplateResolver {
258
268
  * <T template="Hello {{user.name}}" fallback="Guest" />
259
269
  * ```
260
270
  */
261
- export const T: React.FC<{ template: string; fallback?: ReactNode; wrapper?: React.ComponentType<{ children: ReactNode }> }> = ({
262
- template,
271
+ export const T: React.FC<{ template: string; fallback?: ReactNode; wrapper?: React.ComponentType<{ children: ReactNode }> }> = ({
272
+ template,
263
273
  fallback,
264
- wrapper: Wrapper
274
+ wrapper: Wrapper
265
275
  }) => {
266
- try {
267
- const context = useContext(DataContext);
268
- if (!context) {
269
- throw new Error('T component must be used within a DataProvider. Did you wrap your component with <DataProvider>?');
270
- }
276
+ const context = useContext(DataContext);
277
+ if (!context) {
278
+ throw new Error('T component must be used within a DataProvider. Did you wrap your component with <DataProvider>?');
279
+ }
271
280
 
272
- const { resolved, loading, error } = useResolveTemplate(template);
273
-
274
- if (loading) {
275
- return fallback ? <>{fallback}</> : null;
276
- } else if (error) {
277
- if (process.env.NODE_ENV === 'development') {
278
- return <>[Template Error: {error.message}]</>;
279
- } else {
280
- return fallback ? <>{fallback}</> : null;
281
- }
281
+ const { resolved, loading, error } = useResolveTemplate(template);
282
+
283
+ if (loading) {
284
+ return fallback ? <>{fallback}</> : null;
285
+ } else if (error) {
286
+ if (process.env.NODE_ENV === 'development') {
287
+ return <>[Template Error: {error.message}]</>;
282
288
  } else {
283
- const content = <>{resolved}</>;
284
- return Wrapper ? <Wrapper>{content}</Wrapper> : content;
289
+ return fallback ? <>{fallback}</> : null;
285
290
  }
286
- } catch (error) {
287
- throw error;
291
+ } else {
292
+ const content = <>{resolved}</>;
293
+ return Wrapper ? <Wrapper>{content}</Wrapper> : content;
288
294
  }
289
295
  };
290
296
 
@@ -321,7 +327,7 @@ export function useTemplate(template: string): string | null {
321
327
  * {t.wrap(CustomComponent)`{{company.slogan}}`}
322
328
  * ```
323
329
  */
324
- export function t(strings: TemplateStringsArray, ...values: any[]): ReactNode {
330
+ export function t(strings: TemplateStringsArray, ...values: unknown[]): ReactNode {
325
331
  // First do regular template literal interpolation
326
332
  const template = String.raw(strings, ...values);
327
333
 
@@ -343,7 +349,7 @@ export function t(strings: TemplateStringsArray, ...values: any[]): ReactNode {
343
349
  * ```
344
350
  */
345
351
  t.wrap = (WrapperComponent: React.ComponentType<{ children: ReactNode }>) =>
346
- (strings: TemplateStringsArray, ...values: any[]): ReactNode => {
352
+ (strings: TemplateStringsArray, ...values: unknown[]): ReactNode => {
347
353
  const template = String.raw(strings, ...values);
348
354
 
349
355
  const WrappedTemplate = () => {
@@ -6,11 +6,12 @@
6
6
 
7
7
  import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react';
8
8
  import { AllPalettes } from '../palettes';
9
- import {
10
- loadUserPalettePreference,
11
- saveUserPalettePreference,
12
- clearUserPalettePreference
9
+ import {
10
+ loadUserPalettePreference,
11
+ saveUserPalettePreference,
12
+ clearUserPalettePreference
13
13
  } from '../utils/persistenceUtils';
14
+ import { loadPalette } from '../utils/paletteLoader';
14
15
 
15
16
  // Type definitions
16
17
  export interface PaletteConfig {
@@ -136,15 +137,27 @@ export const PaletteProvider: React.FC<PaletteProviderProps> = ({
136
137
  // Apply palette to document root immediately and on changes
137
138
  useEffect(() => {
138
139
  if (typeof document !== 'undefined') {
139
- document.documentElement.setAttribute('data-palette', currentPalette);
140
-
141
- // Dispatch custom event to notify theme system (with small delay to ensure CSS is applied)
142
- setTimeout(() => {
140
+ // Dynamically load the palette CSS if not already loaded
141
+ loadPalette(currentPalette).then(() => {
142
+ // Set the data-palette attribute after CSS is loaded
143
+ document.documentElement.setAttribute('data-palette', currentPalette);
144
+
145
+ // Dispatch custom event to notify theme system (with small delay to ensure CSS is applied)
146
+ setTimeout(() => {
147
+ const event = new CustomEvent('palette-changed', {
148
+ detail: { palette: currentPalette }
149
+ });
150
+ window.dispatchEvent(event);
151
+ }, 50);
152
+ }).catch((error) => {
153
+ console.error(`[PaletteContext] Failed to load palette "${currentPalette}":`, error);
154
+ // Still set the attribute and dispatch event even if loading fails
155
+ document.documentElement.setAttribute('data-palette', currentPalette);
143
156
  const event = new CustomEvent('palette-changed', {
144
157
  detail: { palette: currentPalette }
145
158
  });
146
159
  window.dispatchEvent(event);
147
- }, 50);
160
+ });
148
161
  }
149
162
  }, [currentPalette]);
150
163
 
@@ -191,7 +191,7 @@ export const PrintModeProvider: React.FC<PrintModeProviderProps> = ({ children }
191
191
 
192
192
  if (state.printConfig.theme) {
193
193
  dispatch({ type: 'SET_ORIGINAL_THEME', theme: getCurrentTheme() });
194
- setCurrentTheme(state.printConfig.theme as any);
194
+ setCurrentTheme(state.printConfig.theme as 'light' | 'dark');
195
195
  }
196
196
 
197
197
  if (state.printConfig.palette) {
@@ -261,7 +261,7 @@ export const PrintModeProvider: React.FC<PrintModeProviderProps> = ({ children }
261
261
 
262
262
  // Restore original theme and palette
263
263
  if (state.originalTheme) {
264
- setCurrentTheme(state.originalTheme as any);
264
+ setCurrentTheme(state.originalTheme as 'light' | 'dark');
265
265
  }
266
266
 
267
267
  if (state.originalPalette) {
@@ -293,7 +293,7 @@ export const PrintModeProvider: React.FC<PrintModeProviderProps> = ({ children }
293
293
  }
294
294
  }, [state.printModeState]);
295
295
 
296
- // Effect to handle browser print events (stable handlers using refs)
296
+ // Effect to handle browser print events
297
297
  useEffect(() => {
298
298
  const handleBeforePrint = () => {
299
299
  triggerPrint();
@@ -312,7 +312,7 @@ export const PrintModeProvider: React.FC<PrintModeProviderProps> = ({ children }
312
312
  window.removeEventListener('afterprint', handleAfterPrint);
313
313
  };
314
314
  }
315
- }, []); // Empty dependency array for stable event handlers
315
+ }, [exitPrintMode, triggerPrint]);
316
316
 
317
317
  const contextValue: PrintModeContextValue = {
318
318
  printModeState: state.printModeState,
@@ -303,7 +303,8 @@ export const ThemeProvider: React.FC<ThemeProviderProps> = ({
303
303
  },
304
304
  },
305
305
  });
306
- }, [actualThemeMode, paletteChangeCounter]); // paletteChangeCounter is needed to force theme rebuild // Re-create theme when palette changes
306
+ // eslint-disable-next-line react-hooks/exhaustive-deps
307
+ }, [actualThemeMode, paletteChangeCounter]); // paletteChangeCounter is needed to force theme rebuild
307
308
 
308
309
  // Theme preference management methods
309
310
  const setPreferredTheme = (theme: ThemeMode): void => {
@@ -70,11 +70,11 @@ export interface BaseComponentProps {
70
70
  'data-testid'?: string;
71
71
 
72
72
  // Common event handlers (generic for compatibility)
73
- onClick?: React.MouseEventHandler<any>;
74
- onMouseEnter?: React.MouseEventHandler<any>;
75
- onMouseLeave?: React.MouseEventHandler<any>;
76
- onFocus?: React.FocusEventHandler<any>;
77
- onBlur?: React.FocusEventHandler<any>;
73
+ onClick?: React.MouseEventHandler<unknown>;
74
+ onMouseEnter?: React.MouseEventHandler<unknown>;
75
+ onMouseLeave?: React.MouseEventHandler<unknown>;
76
+ onFocus?: React.FocusEventHandler<unknown>;
77
+ onBlur?: React.FocusEventHandler<unknown>;
78
78
  }
79
79
 
80
80
  /**
@@ -203,8 +203,8 @@ export function useBaseProps<T extends BaseComponentProps>(props: T) {
203
203
 
204
204
  // Memoize background and text styles
205
205
  const backgroundAndTextStyles = useMemo(() => {
206
- const styles: any = {};
207
-
206
+ const styles: Record<string, unknown> = {};
207
+
208
208
  if (backgroundGradient) {
209
209
  styles.background = backgroundGradient;
210
210
  } else if (backgroundImage) {
@@ -216,11 +216,11 @@ export function useBaseProps<T extends BaseComponentProps>(props: T) {
216
216
  // Could be a color or theme path
217
217
  styles.background = background;
218
218
  }
219
-
219
+
220
220
  if (textAlign) {
221
221
  styles.textAlign = textAlign;
222
222
  }
223
-
223
+
224
224
  return styles;
225
225
  }, [background, backgroundImage, backgroundGradient, textAlign]);
226
226
 
@@ -264,4 +264,4 @@ export function useBaseProps<T extends BaseComponentProps>(props: T) {
264
264
  /**
265
265
  * Type helper for components using base props
266
266
  */
267
- export type WithBaseProps<P = {}> = P & BaseComponentProps;
267
+ export type WithBaseProps<P = Record<string, never>> = P & BaseComponentProps;