@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
@@ -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,
@@ -242,7 +242,7 @@ export const ThemeProvider: React.FC<ThemeProviderProps> = ({
242
242
  const surfaceMain = getCSSCustomProperty('--theme-surface') || (isDark ? '#1e1e1e' : '#ffffff');
243
243
 
244
244
  const textPrimary = getCSSCustomProperty('--theme-text-primary') || (isDark ? '#ffffff' : '#000000');
245
- const textSecondary = getCSSCustomProperty('--theme-text-secondary') || (isDark ? '#000000' : '#ffffff');
245
+ const textSecondary = getCSSCustomProperty('--theme-text-secondary') || (isDark ? 'rgba(255, 255, 255, 0.7)' : 'rgba(0, 0, 0, 0.6)');
246
246
  const textDisabled = getCSSCustomProperty('--theme-on-disabled') || (isDark ? 'rgba(255, 255, 255, 0.38)' : 'rgba(0, 0, 0, 0.38)');
247
247
 
248
248
  return createTheme({
@@ -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;
@@ -8,7 +8,7 @@
8
8
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
9
9
  */
10
10
 
11
- import { DataBindingMeta, DataBindingOptions, Model, SchemaDefinition } from '@qwickapps/schema';
11
+ import { DataBindingMeta, Model } from '@qwickapps/schema';
12
12
  import { useMemo } from 'react';
13
13
  import { useDataSafe } from '../contexts/DataContext';
14
14
 
@@ -23,15 +23,13 @@ import { useDataSafe } from '../contexts/DataContext';
23
23
  */
24
24
  export function useDataBinding<T extends Model>(
25
25
  dataSource?: string,
26
- fallbackProps?: Partial<T>,
27
- schema?: SchemaDefinition,
28
- options?: DataBindingOptions
26
+ fallbackProps?: Partial<T>
29
27
  ): T & DataBindingMeta {
30
28
  // Determine if we should use data binding
31
29
  const isDataSourceAvailable = dataSource && dataSource.trim().length > 0;
32
30
 
33
- // Get data if dataSource is provided
34
- const safeDataResult = isDataSourceAvailable ? useDataSafe(dataSource) : { data: undefined, loading: false, error: null };
31
+ // Get data - always call the hook unconditionally, but pass empty string if not available
32
+ const safeDataResult = useDataSafe(isDataSourceAvailable ? dataSource : '');
35
33
 
36
34
  // Resolve the final props
37
35
  const resolvedData = useMemo(() => {
@@ -46,16 +44,15 @@ export function useDataBinding<T extends Model>(
46
44
  } as Partial<T>;
47
45
 
48
46
  return resolved;
47
+ }, [isDataSourceAvailable, safeDataResult.data, fallbackProps]);
49
48
 
50
- }, [isDataSourceAvailable, safeDataResult.data, fallbackProps, schema, options]);
51
-
52
- // Build the data binding metadata
53
- const metadata: DataBindingMeta = {
54
- loading: safeDataResult.loading,
55
- error: safeDataResult.error,
56
- dataSource,
57
- cached: false // TODO: Implement cache detection
58
- };
49
+ // Build the data binding metadata (not currently returned but available for future use)
50
+ // const metadata: DataBindingMeta = {
51
+ // loading: safeDataResult.loading,
52
+ // error: safeDataResult.error,
53
+ // dataSource,
54
+ // cached: false // TODO: Implement cache detection
55
+ // };
59
56
 
60
57
  // Return resolved data with metadata, ensuring data properties aren't overridden
61
58
  return {
@@ -66,10 +63,10 @@ export function useDataBinding<T extends Model>(
66
63
  $dataSource: dataSource,
67
64
  $cached: false,
68
65
  // Keep old names for backward compatibility, but data takes precedence
69
- ...(resolvedData.hasOwnProperty('loading') ? {} : { loading: safeDataResult.loading }),
70
- ...(resolvedData.hasOwnProperty('error') ? {} : { error: safeDataResult.error }),
66
+ ...(Object.prototype.hasOwnProperty.call(resolvedData, 'loading') ? {} : { loading: safeDataResult.loading }),
67
+ ...(Object.prototype.hasOwnProperty.call(resolvedData, 'error') ? {} : { error: safeDataResult.error }),
71
68
  cached: false
72
- } as any;
69
+ } as T & DataBindingMeta;
73
70
  }
74
71
 
75
72
  // Old validation function removed - using new schema system
@@ -43,11 +43,11 @@ export interface PrintModeState {
43
43
 
44
44
  /**
45
45
  * Hook to access print mode state from app-level context
46
- *
47
- * @param initialConfig - Initial print configuration (ignored, use context provider config)
46
+ *
47
+ * @param _initialConfig - Initial print configuration (ignored, use context provider config)
48
48
  * @returns Print mode state and controls
49
49
  */
50
- export function usePrintMode(initialConfig?: Partial<PrintConfigSchema>): PrintModeState {
50
+ export function usePrintMode(): PrintModeState {
51
51
  const context = usePrintModeContext();
52
52
 
53
53
  // Map context interface to legacy interface
package/src/index.ts CHANGED
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  // QwickApps React Framework
2
4
  // Main export file for the QwickApps React Framework
3
5
 
@@ -0,0 +1,72 @@
1
+ {
2
+ "$schema": "./manifest.schema.json",
3
+ "version": "1.4.9",
4
+ "palettes": [
5
+ {
6
+ "id": "default",
7
+ "name": "Default",
8
+ "description": "Classic blue and neutral color scheme - the original QwickApps palette",
9
+ "author": "QwickApps",
10
+ "license": "PolyForm-Shield-1.0.0",
11
+ "version": "1.4.9",
12
+ "file": "PaletteDefault.css",
13
+ "primaryColor": "#007bff",
14
+ "inlined": true
15
+ },
16
+ {
17
+ "id": "autumn",
18
+ "name": "Autumn",
19
+ "description": "Warm oranges, golden yellows, and earthy browns - inspired by fall foliage",
20
+ "author": "QwickApps",
21
+ "license": "PolyForm-Shield-1.0.0",
22
+ "version": "1.4.9",
23
+ "file": "PaletteAutumn.css",
24
+ "primaryColor": "#ea580c",
25
+ "inlined": false
26
+ },
27
+ {
28
+ "id": "cosmic",
29
+ "name": "Cosmic",
30
+ "description": "Modern purple gradient for creative and tech brands - inspired by cosmic nebulae",
31
+ "author": "QwickApps",
32
+ "license": "PolyForm-Shield-1.0.0",
33
+ "version": "1.4.9",
34
+ "file": "PaletteCosmic.css",
35
+ "primaryColor": "#8b5cf6",
36
+ "inlined": false
37
+ },
38
+ {
39
+ "id": "ocean",
40
+ "name": "Ocean",
41
+ "description": "Deep blues, aqua teals, and seafoam greens - inspired by ocean depths",
42
+ "author": "QwickApps",
43
+ "license": "PolyForm-Shield-1.0.0",
44
+ "version": "1.4.9",
45
+ "file": "PaletteOcean.css",
46
+ "primaryColor": "#0891b2",
47
+ "inlined": false
48
+ },
49
+ {
50
+ "id": "spring",
51
+ "name": "Spring",
52
+ "description": "Fresh greens, soft pinks, and bright yellows - inspired by spring blooms",
53
+ "author": "QwickApps",
54
+ "license": "PolyForm-Shield-1.0.0",
55
+ "version": "1.4.9",
56
+ "file": "PaletteSpring.css",
57
+ "primaryColor": "#16a34a",
58
+ "inlined": false
59
+ },
60
+ {
61
+ "id": "winter",
62
+ "name": "Winter",
63
+ "description": "Cool blues, icy whites, and frosty grays - inspired by winter landscapes",
64
+ "author": "QwickApps",
65
+ "license": "PolyForm-Shield-1.0.0",
66
+ "version": "1.4.9",
67
+ "file": "PaletteWinter.css",
68
+ "primaryColor": "#0077be",
69
+ "inlined": false
70
+ }
71
+ ]
72
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "QwickApps Palette Manifest",
4
+ "description": "Manifest file describing available color palettes for QwickApps React Framework",
5
+ "type": "object",
6
+ "required": ["version", "palettes"],
7
+ "properties": {
8
+ "version": {
9
+ "type": "string",
10
+ "description": "Version of the manifest/framework",
11
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
12
+ },
13
+ "palettes": {
14
+ "type": "array",
15
+ "description": "List of available color palettes",
16
+ "items": {
17
+ "type": "object",
18
+ "required": ["id", "name", "description", "version", "file", "primaryColor"],
19
+ "properties": {
20
+ "id": {
21
+ "type": "string",
22
+ "description": "Unique identifier for the palette (kebab-case)",
23
+ "pattern": "^[a-z][a-z0-9-]*$"
24
+ },
25
+ "name": {
26
+ "type": "string",
27
+ "description": "Human-readable name of the palette"
28
+ },
29
+ "description": {
30
+ "type": "string",
31
+ "description": "Brief description of the palette theme"
32
+ },
33
+ "author": {
34
+ "type": "string",
35
+ "description": "Author or organization that created the palette"
36
+ },
37
+ "license": {
38
+ "type": "string",
39
+ "description": "License under which the palette is distributed"
40
+ },
41
+ "version": {
42
+ "type": "string",
43
+ "description": "Version of the palette",
44
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
45
+ },
46
+ "file": {
47
+ "type": "string",
48
+ "description": "Filename of the palette CSS (unminified)",
49
+ "pattern": "^palette-[a-z][a-z0-9-]*\\.\\d+\\.\\d+\\.\\d+\\.css$"
50
+ },
51
+ "fileMinified": {
52
+ "type": "string",
53
+ "description": "Filename of the minified palette CSS",
54
+ "pattern": "^palette-[a-z][a-z0-9-]*\\.\\d+\\.\\d+\\.\\d+\\.min\\.css$"
55
+ },
56
+ "thumbnail": {
57
+ "type": "string",
58
+ "description": "Filename of the palette thumbnail image"
59
+ },
60
+ "primaryColor": {
61
+ "type": "string",
62
+ "description": "Primary color of the palette (hex format)",
63
+ "pattern": "^#[0-9a-fA-F]{6}$"
64
+ },
65
+ "inlined": {
66
+ "type": "boolean",
67
+ "description": "Whether this palette is inlined in the main CSS bundle",
68
+ "default": false
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
74
+ }
@@ -33,6 +33,17 @@ export class ButtonModel extends ViewSchema {
33
33
  @IsIn(['primary', 'secondary', 'outlined', 'text', 'contained'])
34
34
  variant?: 'primary' | 'secondary' | 'outlined' | 'text' | 'contained';
35
35
 
36
+ @Field()
37
+ @Editor({
38
+ field_type: FieldType.SELECT,
39
+ label: 'Button Color',
40
+ description: 'Color theme for the button (overrides variant color)'
41
+ })
42
+ @IsOptional()
43
+ @IsString()
44
+ @IsIn(['primary', 'secondary', 'error', 'warning', 'info', 'success'])
45
+ color?: 'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success';
46
+
36
47
  @Field({ defaultValue: 'medium' })
37
48
  @Editor({
38
49
  field_type: FieldType.SELECT,
@@ -95,6 +106,28 @@ export class ButtonModel extends ViewSchema {
95
106
  @IsOptional()
96
107
  @IsBoolean()
97
108
  fullWidth?: boolean;
109
+
110
+ @Field()
111
+ @Editor({
112
+ field_type: FieldType.TEXT,
113
+ label: 'Icon',
114
+ description: 'Icon name to display before button text (e.g., "home", "download", "settings")',
115
+ placeholder: 'Icon name...'
116
+ })
117
+ @IsOptional()
118
+ @IsString()
119
+ icon?: string;
120
+
121
+ @Field()
122
+ @Editor({
123
+ field_type: FieldType.TEXT,
124
+ label: 'End Icon',
125
+ description: 'Icon name to display after button text',
126
+ placeholder: 'Icon name...'
127
+ })
128
+ @IsOptional()
129
+ @IsString()
130
+ endIcon?: string;
98
131
  }
99
132
 
100
133
  export default ButtonModel;
@@ -4,7 +4,7 @@
4
4
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
5
5
  */
6
6
 
7
- import { IsArray, IsOptional, IsNumber, IsIn, IsBoolean, IsObject, IsString } from 'class-validator';
7
+ import { IsArray, IsOptional, IsNumber, IsIn, IsBoolean, IsObject } from 'class-validator';
8
8
  import 'reflect-metadata';
9
9
  import { Editor, Field, Schema, FieldType } from '@qwickapps/schema';
10
10
  import { ContainerSchema } from './ContainerSchema';
@@ -18,7 +18,7 @@ export class CardListGridModel extends ContainerSchema {
18
18
  description: 'Array of items to display in the grid'
19
19
  })
20
20
  @IsArray()
21
- items?: any[];
21
+ items?: unknown[];
22
22
 
23
23
  @Field()
24
24
  @Editor({
@@ -96,7 +96,7 @@ export class CardListGridModel extends ContainerSchema {
96
96
  })
97
97
  @IsOptional()
98
98
  @IsObject()
99
- itemProps?: Record<string, any>;
99
+ itemProps?: Record<string, unknown>;
100
100
  }
101
101
 
102
102
 
@@ -4,7 +4,6 @@
4
4
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
5
5
  */
6
6
 
7
- import type { ReactNode } from 'react';
8
7
  import { IsBoolean, IsOptional, IsString } from 'class-validator';
9
8
  import 'reflect-metadata';
10
9
  import { Editor, Field, Schema, FieldType } from '@qwickapps/schema';