@qwickapps/react-framework 1.4.1 → 1.4.3

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 (486) hide show
  1. package/QUICK_START_GUIDE.md +82 -0
  2. package/README.md +221 -21
  3. package/dist/components/Html.d.ts.map +1 -1
  4. package/dist/components/Markdown.d.ts +1 -2
  5. package/dist/components/Markdown.d.ts.map +1 -1
  6. package/dist/components/SafeSpan.d.ts +1 -2
  7. package/dist/components/SafeSpan.d.ts.map +1 -1
  8. package/dist/components/base/Container.d.ts +32 -0
  9. package/dist/components/base/Container.d.ts.map +1 -0
  10. package/dist/components/base/ContainerView.d.ts +65 -0
  11. package/dist/components/base/ContainerView.d.ts.map +1 -0
  12. package/dist/components/base/ModelView.d.ts +37 -46
  13. package/dist/components/base/ModelView.d.ts.map +1 -1
  14. package/dist/components/base/index.d.ts +3 -2
  15. package/dist/components/base/index.d.ts.map +1 -1
  16. package/dist/components/blocks/Article.d.ts +1 -2
  17. package/dist/components/blocks/Article.d.ts.map +1 -1
  18. package/dist/components/blocks/Code-factory.d.ts +22 -0
  19. package/dist/components/blocks/Code-factory.d.ts.map +1 -0
  20. package/dist/components/blocks/Code-old.d.ts +31 -0
  21. package/dist/components/blocks/Code-old.d.ts.map +1 -0
  22. package/dist/components/blocks/Code.d.ts +30 -18
  23. package/dist/components/blocks/Code.d.ts.map +1 -1
  24. package/dist/components/blocks/HeroBlock.d.ts +1 -2
  25. package/dist/components/blocks/HeroBlock.d.ts.map +1 -1
  26. package/dist/components/blocks/Image.d.ts +1 -2
  27. package/dist/components/blocks/Image.d.ts.map +1 -1
  28. package/dist/components/blocks/Section.d.ts +1 -2
  29. package/dist/components/blocks/Section.d.ts.map +1 -1
  30. package/dist/components/blocks/Text.d.ts +35 -27
  31. package/dist/components/blocks/Text.d.ts.map +1 -1
  32. package/dist/components/buttons/Button.d.ts +1 -2
  33. package/dist/components/buttons/Button.d.ts.map +1 -1
  34. package/dist/components/index.d.ts +2 -0
  35. package/dist/components/index.d.ts.map +1 -1
  36. package/dist/components/input/ChoiceInputField.d.ts +1 -2
  37. package/dist/components/input/ChoiceInputField.d.ts.map +1 -1
  38. package/dist/components/input/HtmlInputField.d.ts +1 -2
  39. package/dist/components/input/HtmlInputField.d.ts.map +1 -1
  40. package/dist/components/input/SelectInputField.d.ts +1 -2
  41. package/dist/components/input/SelectInputField.d.ts.map +1 -1
  42. package/dist/components/pages/Page.d.ts +29 -47
  43. package/dist/components/pages/Page.d.ts.map +1 -1
  44. package/dist/components/pages/index.d.ts +2 -3
  45. package/dist/components/pages/index.d.ts.map +1 -1
  46. package/dist/components/shared/createSerializableView.d.ts +68 -0
  47. package/dist/components/shared/createSerializableView.d.ts.map +1 -0
  48. package/dist/components/shared/viewProps.d.ts +37 -0
  49. package/dist/components/shared/viewProps.d.ts.map +1 -0
  50. package/dist/index.esm.js +21782 -22580
  51. package/dist/index.js +21782 -22579
  52. package/dist/qa/ConsoleWarningTest.d.ts +5 -0
  53. package/dist/qa/ConsoleWarningTest.d.ts.map +1 -0
  54. package/dist/qa/StorageKeyTest.d.ts +6 -0
  55. package/dist/qa/StorageKeyTest.d.ts.map +1 -0
  56. package/dist/qa/ThemeStorageKeyTest.d.ts +6 -0
  57. package/dist/qa/ThemeStorageKeyTest.d.ts.map +1 -0
  58. package/dist/schemas/CodeSchema.d.ts +2 -2
  59. package/dist/schemas/CodeSchema.d.ts.map +1 -1
  60. package/dist/schemas/ContainerSchema.d.ts +12 -0
  61. package/dist/schemas/ContainerSchema.d.ts.map +1 -0
  62. package/dist/schemas/PageTemplateSchema.d.ts +3 -3
  63. package/dist/schemas/PageTemplateSchema.d.ts.map +1 -1
  64. package/dist/schemas/ViewModelSchema.d.ts +46 -6
  65. package/dist/schemas/ViewModelSchema.d.ts.map +1 -1
  66. package/dist/schemas/ViewSchema.d.ts +65 -0
  67. package/dist/schemas/ViewSchema.d.ts.map +1 -0
  68. package/dist/schemas/index.d.ts +1 -1
  69. package/dist/schemas/index.d.ts.map +1 -1
  70. package/dist/schemas/transformers/ComponentTransformer.d.ts +27 -15
  71. package/dist/schemas/transformers/ComponentTransformer.d.ts.map +1 -1
  72. package/dist/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -1
  73. package/dist/schemas/transformers/registry.d.ts +3 -0
  74. package/dist/schemas/transformers/registry.d.ts.map +1 -1
  75. package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts +66 -0
  76. package/dist/src/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +1 -0
  77. package/dist/src/components/AccessibilityChecker.d.ts +12 -0
  78. package/dist/src/components/AccessibilityChecker.d.ts.map +1 -0
  79. package/dist/src/components/AccessibilityProvider.d.ts +64 -0
  80. package/dist/src/components/AccessibilityProvider.d.ts.map +1 -0
  81. package/dist/src/components/Breadcrumbs.d.ts +39 -0
  82. package/dist/src/components/Breadcrumbs.d.ts.map +1 -0
  83. package/dist/src/components/ErrorBoundary.d.ts +46 -0
  84. package/dist/src/components/ErrorBoundary.d.ts.map +1 -0
  85. package/dist/src/components/Html.d.ts +58 -0
  86. package/dist/src/components/Html.d.ts.map +1 -0
  87. package/dist/src/components/Logo.d.ts +56 -0
  88. package/dist/src/components/Logo.d.ts.map +1 -0
  89. package/dist/src/components/Markdown.d.ts +51 -0
  90. package/dist/src/components/Markdown.d.ts.map +1 -0
  91. package/dist/src/components/QwickApp.d.ts +69 -0
  92. package/dist/src/components/QwickApp.d.ts.map +1 -0
  93. package/dist/src/components/QwickAppsLogo.d.ts +25 -0
  94. package/dist/src/components/QwickAppsLogo.d.ts.map +1 -0
  95. package/dist/src/components/QwickIcon.d.ts +23 -0
  96. package/dist/src/components/QwickIcon.d.ts.map +1 -0
  97. package/dist/src/components/ResponsiveMenu.d.ts +38 -0
  98. package/dist/src/components/ResponsiveMenu.d.ts.map +1 -0
  99. package/dist/src/components/SafeSpan.d.ts +29 -0
  100. package/dist/src/components/SafeSpan.d.ts.map +1 -0
  101. package/dist/src/components/Scaffold.d.ts +57 -0
  102. package/dist/src/components/Scaffold.d.ts.map +1 -0
  103. package/dist/src/components/base/Container.d.ts +33 -0
  104. package/dist/src/components/base/Container.d.ts.map +1 -0
  105. package/dist/src/components/base/ModelView.d.ts +92 -0
  106. package/dist/src/components/base/ModelView.d.ts.map +1 -0
  107. package/dist/src/components/base/index.d.ts +12 -0
  108. package/dist/src/components/base/index.d.ts.map +1 -0
  109. package/dist/src/components/blocks/Article.d.ts +32 -0
  110. package/dist/src/components/blocks/Article.d.ts.map +1 -0
  111. package/dist/src/components/blocks/CardListGrid.d.ts +23 -0
  112. package/dist/src/components/blocks/CardListGrid.d.ts.map +1 -0
  113. package/dist/src/components/blocks/Code.d.ts +37 -0
  114. package/dist/src/components/blocks/Code.d.ts.map +1 -0
  115. package/dist/src/components/blocks/Content.d.ts +24 -0
  116. package/dist/src/components/blocks/Content.d.ts.map +1 -0
  117. package/dist/src/components/blocks/CoverImageHeader.d.ts +44 -0
  118. package/dist/src/components/blocks/CoverImageHeader.d.ts.map +1 -0
  119. package/dist/src/components/blocks/FeatureCard.d.ts +66 -0
  120. package/dist/src/components/blocks/FeatureCard.d.ts.map +1 -0
  121. package/dist/src/components/blocks/FeatureGrid.d.ts +48 -0
  122. package/dist/src/components/blocks/FeatureGrid.d.ts.map +1 -0
  123. package/dist/src/components/blocks/Footer.d.ts +56 -0
  124. package/dist/src/components/blocks/Footer.d.ts.map +1 -0
  125. package/dist/src/components/blocks/HeroBlock.d.ts +55 -0
  126. package/dist/src/components/blocks/HeroBlock.d.ts.map +1 -0
  127. package/dist/src/components/blocks/Image.d.ts +40 -0
  128. package/dist/src/components/blocks/Image.d.ts.map +1 -0
  129. package/dist/src/components/blocks/PageBannerHeader.d.ts +30 -0
  130. package/dist/src/components/blocks/PageBannerHeader.d.ts.map +1 -0
  131. package/dist/src/components/blocks/ProductCard.d.ts +57 -0
  132. package/dist/src/components/blocks/ProductCard.d.ts.map +1 -0
  133. package/dist/src/components/blocks/Section.d.ts +45 -0
  134. package/dist/src/components/blocks/Section.d.ts.map +1 -0
  135. package/dist/src/components/blocks/Text.d.ts +34 -0
  136. package/dist/src/components/blocks/Text.d.ts.map +1 -0
  137. package/dist/src/components/blocks/index.d.ts +41 -0
  138. package/dist/src/components/blocks/index.d.ts.map +1 -0
  139. package/dist/src/components/buttons/Button.d.ts +41 -0
  140. package/dist/src/components/buttons/Button.d.ts.map +1 -0
  141. package/dist/src/components/buttons/PaletteSwitcher.d.ts +24 -0
  142. package/dist/src/components/buttons/PaletteSwitcher.d.ts.map +1 -0
  143. package/dist/src/components/buttons/ThemeSwitcher.d.ts +24 -0
  144. package/dist/src/components/buttons/ThemeSwitcher.d.ts.map +1 -0
  145. package/dist/src/components/buttons/index.d.ts +11 -0
  146. package/dist/src/components/buttons/index.d.ts.map +1 -0
  147. package/dist/src/components/forms/FormBlock.d.ts +51 -0
  148. package/dist/src/components/forms/FormBlock.d.ts.map +1 -0
  149. package/dist/src/components/forms/index.d.ts +8 -0
  150. package/dist/src/components/forms/index.d.ts.map +1 -0
  151. package/dist/src/components/index.d.ts +41 -0
  152. package/dist/src/components/index.d.ts.map +1 -0
  153. package/dist/src/components/input/ChoiceInputField.d.ts +29 -0
  154. package/dist/src/components/input/ChoiceInputField.d.ts.map +1 -0
  155. package/dist/src/components/input/HtmlInputField.d.ts +33 -0
  156. package/dist/src/components/input/HtmlInputField.d.ts.map +1 -0
  157. package/dist/src/components/input/SelectInputField.d.ts +31 -0
  158. package/dist/src/components/input/SelectInputField.d.ts.map +1 -0
  159. package/dist/src/components/input/SwitchInputField.d.ts +27 -0
  160. package/dist/src/components/input/SwitchInputField.d.ts.map +1 -0
  161. package/dist/src/components/input/TextField.d.ts +18 -0
  162. package/dist/src/components/input/TextField.d.ts.map +1 -0
  163. package/dist/src/components/input/TextInputField.d.ts +34 -0
  164. package/dist/src/components/input/TextInputField.d.ts.map +1 -0
  165. package/dist/src/components/input/index.d.ts +19 -0
  166. package/dist/src/components/input/index.d.ts.map +1 -0
  167. package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts +34 -0
  168. package/dist/src/components/layout/CollapsibleLayout/CollapsibleLayout.d.ts.map +1 -0
  169. package/dist/src/components/layout/CollapsibleLayout/index.d.ts +9 -0
  170. package/dist/src/components/layout/CollapsibleLayout/index.d.ts.map +1 -0
  171. package/dist/src/components/layout/GridCell.d.ts +32 -0
  172. package/dist/src/components/layout/GridCell.d.ts.map +1 -0
  173. package/dist/src/components/layout/GridCellWrapper.d.ts +46 -0
  174. package/dist/src/components/layout/GridCellWrapper.d.ts.map +1 -0
  175. package/dist/src/components/layout/GridLayout.d.ts +50 -0
  176. package/dist/src/components/layout/GridLayout.d.ts.map +1 -0
  177. package/dist/src/components/layout/index.d.ts +14 -0
  178. package/dist/src/components/layout/index.d.ts.map +1 -0
  179. package/dist/src/components/menu/Menu.d.ts +1 -0
  180. package/dist/src/components/menu/Menu.d.ts.map +1 -0
  181. package/dist/src/components/menu/MenuItem.d.ts +31 -0
  182. package/dist/src/components/menu/MenuItem.d.ts.map +1 -0
  183. package/dist/src/components/menu/index.d.ts +7 -0
  184. package/dist/src/components/menu/index.d.ts.map +1 -0
  185. package/dist/src/components/pages/FormPage.d.ts +66 -0
  186. package/dist/src/components/pages/FormPage.d.ts.map +1 -0
  187. package/dist/src/components/pages/Page.d.ts +68 -0
  188. package/dist/src/components/pages/Page.d.ts.map +1 -0
  189. package/dist/src/components/pages/index.d.ts +10 -0
  190. package/dist/src/components/pages/index.d.ts.map +1 -0
  191. package/dist/src/components/shared/createSerializableView.d.ts +81 -0
  192. package/dist/src/components/shared/createSerializableView.d.ts.map +1 -0
  193. package/dist/src/components/shared/viewProps.d.ts +37 -0
  194. package/dist/src/components/shared/viewProps.d.ts.map +1 -0
  195. package/dist/src/config/AppConfig.d.ts +49 -0
  196. package/dist/src/config/AppConfig.d.ts.map +1 -0
  197. package/dist/src/config/AppConfigBuilder.d.ts +75 -0
  198. package/dist/src/config/AppConfigBuilder.d.ts.map +1 -0
  199. package/dist/src/config/index.d.ts +13 -0
  200. package/dist/src/config/index.d.ts.map +1 -0
  201. package/dist/src/config/types.d.ts +130 -0
  202. package/dist/src/config/types.d.ts.map +1 -0
  203. package/dist/src/config.d.ts +15 -0
  204. package/dist/src/config.d.ts.map +1 -0
  205. package/dist/src/contexts/DataContext.d.ts +139 -0
  206. package/dist/src/contexts/DataContext.d.ts.map +1 -0
  207. package/dist/src/contexts/DimensionsContext.d.ts +42 -0
  208. package/dist/src/contexts/DimensionsContext.d.ts.map +1 -0
  209. package/dist/src/contexts/PaletteContext.d.ts +53 -0
  210. package/dist/src/contexts/PaletteContext.d.ts.map +1 -0
  211. package/dist/src/contexts/PrintModeContext.d.ts +27 -0
  212. package/dist/src/contexts/PrintModeContext.d.ts.map +1 -0
  213. package/dist/src/contexts/QwickAppContext.d.ts +71 -0
  214. package/dist/src/contexts/QwickAppContext.d.ts.map +1 -0
  215. package/dist/src/contexts/ThemeContext.d.ts +65 -0
  216. package/dist/src/contexts/ThemeContext.d.ts.map +1 -0
  217. package/dist/src/contexts/index.d.ts +11 -0
  218. package/dist/src/contexts/index.d.ts.map +1 -0
  219. package/dist/src/hooks/index.d.ts +12 -0
  220. package/dist/src/hooks/index.d.ts.map +1 -0
  221. package/dist/src/hooks/useBaseProps.d.ts +101 -0
  222. package/dist/src/hooks/useBaseProps.d.ts.map +1 -0
  223. package/dist/src/hooks/useDataBinding.d.ts +22 -0
  224. package/dist/src/hooks/useDataBinding.d.ts.map +1 -0
  225. package/dist/src/hooks/usePrintMode.d.ts +39 -0
  226. package/dist/src/hooks/usePrintMode.d.ts.map +1 -0
  227. package/dist/src/index.d.ts +9 -0
  228. package/dist/src/index.d.ts.map +1 -0
  229. package/dist/src/palettes/PaletteAutumn.d.ts +10 -0
  230. package/dist/src/palettes/PaletteAutumn.d.ts.map +1 -0
  231. package/dist/src/palettes/PaletteCosmic.d.ts +10 -0
  232. package/dist/src/palettes/PaletteCosmic.d.ts.map +1 -0
  233. package/dist/src/palettes/PaletteDefault.d.ts +10 -0
  234. package/dist/src/palettes/PaletteDefault.d.ts.map +1 -0
  235. package/dist/src/palettes/PaletteOcean.d.ts +10 -0
  236. package/dist/src/palettes/PaletteOcean.d.ts.map +1 -0
  237. package/dist/src/palettes/PaletteSpring.d.ts +10 -0
  238. package/dist/src/palettes/PaletteSpring.d.ts.map +1 -0
  239. package/dist/src/palettes/PaletteWinter.d.ts +10 -0
  240. package/dist/src/palettes/PaletteWinter.d.ts.map +1 -0
  241. package/dist/src/palettes/index.d.ts +13 -0
  242. package/dist/src/palettes/index.d.ts.map +1 -0
  243. package/dist/src/schemas/ActionSchema.d.ts +21 -0
  244. package/dist/src/schemas/ActionSchema.d.ts.map +1 -0
  245. package/dist/src/schemas/ArticleSchema.d.ts +13 -0
  246. package/dist/src/schemas/ArticleSchema.d.ts.map +1 -0
  247. package/dist/src/schemas/ButtonSchema.d.ts +19 -0
  248. package/dist/src/schemas/ButtonSchema.d.ts.map +1 -0
  249. package/dist/src/schemas/CardListGridSchema.d.ts +17 -0
  250. package/dist/src/schemas/CardListGridSchema.d.ts.map +1 -0
  251. package/dist/src/schemas/ChoiceInputFieldSchema.d.ts +18 -0
  252. package/dist/src/schemas/ChoiceInputFieldSchema.d.ts.map +1 -0
  253. package/dist/src/schemas/CodeSchema.d.ts +18 -0
  254. package/dist/src/schemas/CodeSchema.d.ts.map +1 -0
  255. package/dist/src/schemas/CollapsibleLayoutSchema.d.ts +32 -0
  256. package/dist/src/schemas/CollapsibleLayoutSchema.d.ts.map +1 -0
  257. package/dist/src/schemas/ContainerSchema.d.ts +12 -0
  258. package/dist/src/schemas/ContainerSchema.d.ts.map +1 -0
  259. package/dist/src/schemas/ContentSchema.d.ts +21 -0
  260. package/dist/src/schemas/ContentSchema.d.ts.map +1 -0
  261. package/dist/src/schemas/CoverImageHeaderSchema.d.ts +28 -0
  262. package/dist/src/schemas/CoverImageHeaderSchema.d.ts.map +1 -0
  263. package/dist/src/schemas/FeatureCardSchema.d.ts +28 -0
  264. package/dist/src/schemas/FeatureCardSchema.d.ts.map +1 -0
  265. package/dist/src/schemas/FeatureGridSchema.d.ts +17 -0
  266. package/dist/src/schemas/FeatureGridSchema.d.ts.map +1 -0
  267. package/dist/src/schemas/FeatureItemSchema.d.ts +16 -0
  268. package/dist/src/schemas/FeatureItemSchema.d.ts.map +1 -0
  269. package/dist/src/schemas/FooterItemSchema.d.ts +15 -0
  270. package/dist/src/schemas/FooterItemSchema.d.ts.map +1 -0
  271. package/dist/src/schemas/FooterSchema.d.ts +20 -0
  272. package/dist/src/schemas/FooterSchema.d.ts.map +1 -0
  273. package/dist/src/schemas/FooterSectionSchema.d.ts +15 -0
  274. package/dist/src/schemas/FooterSectionSchema.d.ts.map +1 -0
  275. package/dist/src/schemas/FormBlockSchema.d.ts +19 -0
  276. package/dist/src/schemas/FormBlockSchema.d.ts.map +1 -0
  277. package/dist/src/schemas/GridCellSchema.d.ts +23 -0
  278. package/dist/src/schemas/GridCellSchema.d.ts.map +1 -0
  279. package/dist/src/schemas/GridLayoutSchema.d.ts +21 -0
  280. package/dist/src/schemas/GridLayoutSchema.d.ts.map +1 -0
  281. package/dist/src/schemas/HeaderActionSchema.d.ts +17 -0
  282. package/dist/src/schemas/HeaderActionSchema.d.ts.map +1 -0
  283. package/dist/src/schemas/HeroBlockSchema.d.ts +22 -0
  284. package/dist/src/schemas/HeroBlockSchema.d.ts.map +1 -0
  285. package/dist/src/schemas/HtmlInputFieldSchema.d.ts +18 -0
  286. package/dist/src/schemas/HtmlInputFieldSchema.d.ts.map +1 -0
  287. package/dist/src/schemas/HtmlSchema.d.ts +14 -0
  288. package/dist/src/schemas/HtmlSchema.d.ts.map +1 -0
  289. package/dist/src/schemas/ImageSchema.d.ts +32 -0
  290. package/dist/src/schemas/ImageSchema.d.ts.map +1 -0
  291. package/dist/src/schemas/LogoSchema.d.ts +35 -0
  292. package/dist/src/schemas/LogoSchema.d.ts.map +1 -0
  293. package/dist/src/schemas/MarkdownSchema.d.ts +14 -0
  294. package/dist/src/schemas/MarkdownSchema.d.ts.map +1 -0
  295. package/dist/src/schemas/MetadataItemSchema.d.ts +13 -0
  296. package/dist/src/schemas/MetadataItemSchema.d.ts.map +1 -0
  297. package/dist/src/schemas/PageBannerHeaderSchema.d.ts +28 -0
  298. package/dist/src/schemas/PageBannerHeaderSchema.d.ts.map +1 -0
  299. package/dist/src/schemas/PageTemplateSchema.d.ts +31 -0
  300. package/dist/src/schemas/PageTemplateSchema.d.ts.map +1 -0
  301. package/dist/src/schemas/PaletteSwitcherSchema.d.ts +16 -0
  302. package/dist/src/schemas/PaletteSwitcherSchema.d.ts.map +1 -0
  303. package/dist/src/schemas/PrintConfigSchema.d.ts +31 -0
  304. package/dist/src/schemas/PrintConfigSchema.d.ts.map +1 -0
  305. package/dist/src/schemas/ProductCardSchema.d.ts +39 -0
  306. package/dist/src/schemas/ProductCardSchema.d.ts.map +1 -0
  307. package/dist/src/schemas/SafeSpanSchema.d.ts +13 -0
  308. package/dist/src/schemas/SafeSpanSchema.d.ts.map +1 -0
  309. package/dist/src/schemas/SectionSchema.d.ts +16 -0
  310. package/dist/src/schemas/SectionSchema.d.ts.map +1 -0
  311. package/dist/src/schemas/SelectInputFieldSchema.d.ts +27 -0
  312. package/dist/src/schemas/SelectInputFieldSchema.d.ts.map +1 -0
  313. package/dist/src/schemas/SwitchInputFieldSchema.d.ts +18 -0
  314. package/dist/src/schemas/SwitchInputFieldSchema.d.ts.map +1 -0
  315. package/dist/src/schemas/TextInputFieldSchema.d.ts +22 -0
  316. package/dist/src/schemas/TextInputFieldSchema.d.ts.map +1 -0
  317. package/dist/src/schemas/TextSchema.d.ts +37 -0
  318. package/dist/src/schemas/TextSchema.d.ts.map +1 -0
  319. package/dist/src/schemas/ThemeSwitcherSchema.d.ts +19 -0
  320. package/dist/src/schemas/ThemeSwitcherSchema.d.ts.map +1 -0
  321. package/dist/src/schemas/ViewSchema.d.ts +66 -0
  322. package/dist/src/schemas/ViewSchema.d.ts.map +1 -0
  323. package/dist/src/schemas/index.d.ts +47 -0
  324. package/dist/src/schemas/index.d.ts.map +1 -0
  325. package/dist/src/schemas/transformers/ComponentTransformer.d.ts +128 -0
  326. package/dist/src/schemas/transformers/ComponentTransformer.d.ts.map +1 -0
  327. package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts +53 -0
  328. package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -0
  329. package/dist/src/schemas/transformers/registry.d.ts +18 -0
  330. package/dist/src/schemas/transformers/registry.d.ts.map +1 -0
  331. package/dist/src/schemas/types/Serializable.d.ts +46 -0
  332. package/dist/src/schemas/types/Serializable.d.ts.map +1 -0
  333. package/dist/src/stories/_templates/SerializationTemplate.d.ts +44 -0
  334. package/dist/src/stories/_templates/SerializationTemplate.d.ts.map +1 -0
  335. package/dist/src/templates/TemplateResolver.d.ts +52 -0
  336. package/dist/src/templates/TemplateResolver.d.ts.map +1 -0
  337. package/dist/src/templates/index.d.ts +7 -0
  338. package/dist/src/templates/index.d.ts.map +1 -0
  339. package/dist/src/types/CacheProvider.d.ts +18 -0
  340. package/dist/src/types/CacheProvider.d.ts.map +1 -0
  341. package/dist/src/types/CollapsibleLayout.d.ts +142 -0
  342. package/dist/src/types/CollapsibleLayout.d.ts.map +1 -0
  343. package/dist/src/types/ContentProxy.d.ts +47 -0
  344. package/dist/src/types/ContentProxy.d.ts.map +1 -0
  345. package/dist/src/types/DataTypes.d.ts +185 -0
  346. package/dist/src/types/DataTypes.d.ts.map +1 -0
  347. package/dist/src/types/TemplateProvider.d.ts +10 -0
  348. package/dist/src/types/TemplateProvider.d.ts.map +1 -0
  349. package/dist/src/types/TemplateResolver.d.ts +23 -0
  350. package/dist/src/types/TemplateResolver.d.ts.map +1 -0
  351. package/dist/src/types/index.d.ts +82 -0
  352. package/dist/src/types/index.d.ts.map +1 -0
  353. package/dist/src/utils/breakpoints.d.ts +35 -0
  354. package/dist/src/utils/breakpoints.d.ts.map +1 -0
  355. package/dist/src/utils/cssUtils.d.ts +17 -0
  356. package/dist/src/utils/cssUtils.d.ts.map +1 -0
  357. package/dist/src/utils/customPaletteManager.d.ts +8 -0
  358. package/dist/src/utils/customPaletteManager.d.ts.map +1 -0
  359. package/dist/src/utils/dimensions.d.ts +34 -0
  360. package/dist/src/utils/dimensions.d.ts.map +1 -0
  361. package/dist/src/utils/htmlTransform.d.ts +44 -0
  362. package/dist/src/utils/htmlTransform.d.ts.map +1 -0
  363. package/dist/src/utils/index.d.ts +16 -0
  364. package/dist/src/utils/index.d.ts.map +1 -0
  365. package/dist/src/utils/logger.d.ts +26 -0
  366. package/dist/src/utils/logger.d.ts.map +1 -0
  367. package/dist/src/utils/paletteUtils.d.ts +38 -0
  368. package/dist/src/utils/paletteUtils.d.ts.map +1 -0
  369. package/dist/src/utils/persistenceUtils.d.ts +31 -0
  370. package/dist/src/utils/persistenceUtils.d.ts.map +1 -0
  371. package/dist/src/utils/reactUtils.d.ts +33 -0
  372. package/dist/src/utils/reactUtils.d.ts.map +1 -0
  373. package/dist/src/utils/spacing.d.ts +34 -0
  374. package/dist/src/utils/spacing.d.ts.map +1 -0
  375. package/dist/src/utils/themePerformanceMonitor.d.ts +32 -0
  376. package/dist/src/utils/themePerformanceMonitor.d.ts.map +1 -0
  377. package/dist/src/utils/themeUtils.d.ts +27 -0
  378. package/dist/src/utils/themeUtils.d.ts.map +1 -0
  379. package/dist/utils/cssUtils.d.ts +17 -0
  380. package/dist/utils/cssUtils.d.ts.map +1 -0
  381. package/dist/utils/index.d.ts +1 -0
  382. package/dist/utils/index.d.ts.map +1 -1
  383. package/package.json +8 -2
  384. package/scripts/bundle-css.cjs +27 -0
  385. package/scripts/create-project.sh +28 -0
  386. package/scripts/create-qwickapps-project.js +284 -0
  387. package/src/__tests__/components/base/Container.test.tsx +966 -0
  388. package/src/__tests__/schemas/PageTemplateSchema.test.ts +1 -1
  389. package/src/__tests__/schemas/ViewSchema.test.ts +805 -0
  390. package/src/__tests__/schemas/builders.test.ts +2 -2
  391. package/src/__tests__/schemas/transformers/ComponentTransformer.test.ts +19 -19
  392. package/src/__tests__/schemas/transformers/CrossBrowserCompatibility.test.ts +13 -13
  393. package/src/__tests__/schemas/transformers/SerializationErrorHandling.test.ts +39 -39
  394. package/src/__tests__/schemas/transformers/SerializationPerformance.test.ts +14 -14
  395. package/src/__tests__/schemas/transformers/TestAutomation.test.ts +8 -8
  396. package/src/__tests__/schemas/transformers/nested-serialization.test.tsx +181 -0
  397. package/src/__tests__/schemas/transformers/round-trip-component-serialization.test.tsx +458 -0
  398. package/src/__tests__/test_image_accessibility.test.tsx +226 -0
  399. package/src/__tests__/utils/optional-logging.test.ts +3 -3
  400. package/src/components/Html.tsx +24 -15
  401. package/src/components/Logo.tsx +2 -2
  402. package/src/components/Markdown.tsx +2 -7
  403. package/src/components/SafeSpan.tsx +2 -7
  404. package/src/components/base/Container.tsx +61 -0
  405. package/src/components/base/ModelView.tsx +225 -91
  406. package/src/components/base/index.ts +3 -2
  407. package/src/components/blocks/Article.tsx +2 -7
  408. package/src/components/blocks/CardListGrid.tsx +2 -2
  409. package/src/components/blocks/Code.tsx +91 -179
  410. package/src/components/blocks/Content.tsx +2 -2
  411. package/src/components/blocks/CoverImageHeader.tsx +2 -2
  412. package/src/components/blocks/HeroBlock.tsx +54 -146
  413. package/src/components/blocks/Image.tsx +82 -196
  414. package/src/components/blocks/PageBannerHeader.tsx +2 -2
  415. package/src/components/blocks/Section.tsx +79 -181
  416. package/src/components/blocks/Text.tsx +100 -198
  417. package/src/components/buttons/Button.tsx +85 -183
  418. package/src/components/buttons/PaletteSwitcher.tsx +2 -2
  419. package/src/components/buttons/ThemeSwitcher.tsx +2 -2
  420. package/src/components/forms/FormBlock.tsx +2 -2
  421. package/src/components/index.ts +5 -0
  422. package/src/components/input/ChoiceInputField.tsx +76 -160
  423. package/src/components/input/HtmlInputField.tsx +141 -264
  424. package/src/components/input/SelectInputField.tsx +48 -153
  425. package/src/components/input/SwitchInputField.tsx +41 -139
  426. package/src/components/input/TextInputField.tsx +39 -116
  427. package/src/components/layout/GridCell.tsx +36 -122
  428. package/src/components/layout/GridLayout.tsx +55 -127
  429. package/src/components/pages/Page.tsx +268 -276
  430. package/src/components/pages/index.ts +2 -3
  431. package/src/components/shared/createSerializableView.tsx +280 -0
  432. package/src/components/shared/viewProps.ts +207 -0
  433. package/src/config/__tests__/AppConfigBuilder.test.ts +2 -2
  434. package/src/contexts/DataContext.tsx +1 -1
  435. package/src/schemas/ButtonSchema.ts +3 -2
  436. package/src/schemas/CardListGridSchema.ts +3 -2
  437. package/src/schemas/ChoiceInputFieldSchema.ts +3 -2
  438. package/src/schemas/CodeSchema.ts +8 -6
  439. package/src/schemas/ContainerSchema.ts +25 -0
  440. package/src/schemas/FeatureCardSchema.ts +1 -1
  441. package/src/schemas/FormBlockSchema.ts +3 -2
  442. package/src/schemas/GridCellSchema.ts +4 -10
  443. package/src/schemas/GridLayoutSchema.ts +8 -14
  444. package/src/schemas/HeroBlockSchema.ts +3 -2
  445. package/src/schemas/HtmlInputFieldSchema.ts +3 -2
  446. package/src/schemas/ImageSchema.ts +3 -2
  447. package/src/schemas/PageTemplateSchema.ts +5 -5
  448. package/src/schemas/SectionSchema.ts +4 -12
  449. package/src/schemas/SelectInputFieldSchema.ts +3 -2
  450. package/src/schemas/SwitchInputFieldSchema.ts +2 -2
  451. package/src/schemas/TextInputFieldSchema.ts +3 -2
  452. package/src/schemas/ViewSchema.ts +570 -0
  453. package/src/schemas/index.ts +1 -1
  454. package/src/schemas/transformers/ComponentTransformer.ts +185 -163
  455. package/src/schemas/transformers/ReactNodeTransformer.ts +31 -28
  456. package/src/schemas/transformers/registry.ts +17 -10
  457. package/src/stories/Button.stories.tsx +24 -0
  458. package/src/stories/ChoiceInputField.stories.tsx +28 -1
  459. package/src/stories/Code.stories.tsx +61 -1
  460. package/src/stories/Container.stories.tsx +954 -0
  461. package/src/stories/FormBlock.stories.tsx +54 -0
  462. package/src/stories/FormComponents.stories.tsx +8 -13
  463. package/src/stories/GridCell.stories.tsx +23 -64
  464. package/src/stories/GridLayout.stories.tsx +22 -47
  465. package/src/stories/HeroBlock.stories.tsx +28 -0
  466. package/src/stories/HtmlInputField.stories.tsx +23 -1
  467. package/src/stories/Image.stories.tsx +45 -233
  468. package/src/stories/Markdown.stories.tsx +1 -1
  469. package/src/stories/Section.stories.tsx +38 -4
  470. package/src/stories/SelectInputField.stories.tsx +26 -1
  471. package/src/stories/Text.stories.tsx +22 -54
  472. package/src/stories/TextInputField.stories.tsx +24 -1
  473. package/src/stories/_templates/SerializationTemplate.tsx +165 -0
  474. package/src/templates/TemplateResolver.ts +2 -2
  475. package/src/types/CollapsibleLayout.ts +2 -2
  476. package/src/utils/cssUtils.ts +49 -0
  477. package/src/utils/index.ts +1 -0
  478. package/src/utils/logger.ts +13 -13
  479. package/src/__tests__/components/base/ModelView.test.tsx +0 -220
  480. package/src/__tests__/schemas/ViewModelSchema.test.ts +0 -80
  481. package/src/components/blocks/Code.md +0 -529
  482. package/src/schemas/README.md +0 -661
  483. package/src/schemas/ViewModelSchema.ts +0 -115
  484. package/src/tests/ConsoleWarningTest.tsx +0 -30
  485. package/src/tests/StorageKeyTest.tsx +0 -110
  486. package/src/tests/ThemeStorageKeyTest.tsx +0 -114
@@ -1,199 +1,333 @@
1
1
  /**
2
- * ModelView - Abstract Base Class for Serializable Components
2
+ * ModelView - Abstract Base Class implementing ViewSchema
3
3
  *
4
- * Provides common serialization patterns and data binding support for
5
- * all QwickApps components. This eliminates code duplication and ensures
6
- * consistent behavior across all serializable components.
4
+ * This abstract base class processes ViewSchema props and provides them
5
+ * to subclasses through processed props. All concrete components should
6
+ * extend this class to get consistent ViewSchema prop handling.
7
7
  *
8
- * All components extending ModelView must implement:
9
- * - getComponentSpecificProps(): Component-specific serialization properties
10
- * - renderView(): Render method for traditional props
11
- * - renderWithDataBinding(): Render method for data-bound components
12
- * - static tagName and version properties
13
- *
14
- * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ * Key Features:
9
+ * - Processes all ViewSchema properties (grid, spacing, styling, etc.)
10
+ * - Provides processed props to subclasses via getProcessedProps()
11
+ * - Maintains abstract pattern for component-specific rendering
12
+ * - Handles serialization and data binding
15
13
  */
16
14
 
17
- import React, { ReactElement, ReactNode } from 'react';
18
- import type { WithDataBinding } from '@qwickapps/schema';
19
- import { Serializable } from '../../schemas/types/Serializable';
15
+ import { Serializable } from "@/schemas";
16
+ import { SchemaProps, WithDataBinding } from "@qwickapps/schema";
17
+ import React, { ReactElement, ReactNode } from "react";
18
+ import { WithBaseProps } from '../../hooks';
19
+ import ViewSchema from '../../schemas/ViewSchema';
20
20
  import { extractTextFromReactNode } from '../../utils/reactUtils';
21
21
 
22
22
  /**
23
- * Abstract base class for all serializable QwickApps components
24
- * Handles common serialization patterns, data binding, and rendering logic
23
+ * Convert ViewSchema props to BaseComponentProps format
24
+ */
25
+ function convertSchemaToBaseProps(schema: Partial<ViewSchema>): WithBaseProps {
26
+ const {
27
+ // Grid props - convert strings to proper types
28
+ span,
29
+ xs,
30
+ sm,
31
+ md,
32
+ lg,
33
+ xl,
34
+
35
+ // Style props - convert JSON strings to objects
36
+ sx,
37
+ style,
38
+
39
+ // All other props pass through directly
40
+ ...restProps
41
+ } = schema;
42
+
43
+ return {
44
+ // Convert grid span values
45
+ span: span === 'auto' ? 'auto' : span === 'grow' ? 'grow' : (span && typeof span === 'string') ? parseInt(span, 10) : span,
46
+ xs: xs === 'auto' ? 'auto' : (xs && typeof xs === 'string') ? parseInt(xs, 10) : xs,
47
+ sm: sm === 'auto' ? 'auto' : (sm && typeof sm === 'string') ? parseInt(sm, 10) : sm,
48
+ md: md === 'auto' ? 'auto' : (md && typeof md === 'string') ? parseInt(md, 10) : md,
49
+ lg: lg === 'auto' ? 'auto' : (lg && typeof lg === 'string') ? parseInt(lg, 10) : lg,
50
+ xl: xl === 'auto' ? 'auto' : (xl && typeof xl === 'string') ? parseInt(xl, 10) : xl,
51
+
52
+ // Parse JSON strings for sx and style
53
+ sx: typeof sx === 'string' ? (() => {
54
+ try { return JSON.parse(sx); } catch { return sx; }
55
+ })() : sx,
56
+
57
+ style: typeof style === 'string' ? (() => {
58
+ try { return JSON.parse(style); } catch { return style; }
59
+ })() : style,
60
+
61
+ // Convert event handlers from strings to functions
62
+ onClick: typeof schema.onClick === 'string' ? convertEventHandler(schema.onClick) : schema.onClick,
63
+ onMouseEnter: typeof schema.onMouseEnter === 'string' ? convertEventHandler(schema.onMouseEnter) : schema.onMouseEnter,
64
+ onMouseLeave: typeof schema.onMouseLeave === 'string' ? convertEventHandler(schema.onMouseLeave) : schema.onMouseLeave,
65
+ onFocus: typeof schema.onFocus === 'string' ? convertEventHandler(schema.onFocus) : schema.onFocus,
66
+ onBlur: typeof schema.onBlur === 'string' ? convertEventHandler(schema.onBlur) : schema.onBlur,
67
+
68
+ // Pass through all other props directly
69
+ ...restProps
70
+ } as WithBaseProps;
71
+ }
72
+
73
+ /**
74
+ * Convert string event handler to function
75
+ */
76
+ function convertEventHandler(handlerStr?: string): ((event: any) => void) | undefined {
77
+ if (!handlerStr || typeof handlerStr !== 'string') {
78
+ return undefined;
79
+ }
80
+
81
+ try {
82
+ // Create function from string - handle both function declarations and expressions
83
+ let func: Function;
84
+ if (handlerStr.trim().startsWith('function')) {
85
+ func = new Function(`return (${handlerStr})`)();
86
+ } else {
87
+ func = new Function('event', handlerStr);
88
+ }
89
+
90
+ return (event: any) => func(event);
91
+ } catch (error) {
92
+ console.error('Error parsing event handler:', error);
93
+ return undefined;
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Processed props that subclasses receive
25
99
  */
26
- export abstract class ModelView<TProps = any, TModel = any>
27
- extends React.Component<TProps & WithDataBinding>
100
+ export interface ProcessedProps {
101
+ gridProps: any;
102
+ styleProps: any;
103
+ htmlProps: any;
104
+ restProps: any;
105
+ }
106
+
107
+ /**
108
+ * Abstract base class implementing ViewSchema
109
+ * All concrete components should extend this class
110
+ */
111
+ export abstract class ModelView<TProps = any, TModel = any>
112
+ extends React.Component<TProps & SchemaProps<ViewSchema> & WithDataBinding>
28
113
  implements Serializable {
29
-
114
+
30
115
  // Static properties - must be overridden by subclasses
31
- // Note: TypeScript doesn't support abstract static members, so we provide defaults
32
116
  static readonly tagName: string = '';
33
117
  static readonly version: string = '';
34
-
118
+
35
119
  /**
36
120
  * Common fromJson implementation
37
- * Subclasses can override this if they need custom deserialization logic
38
121
  */
39
122
  static fromJson(jsonData: any): ReactElement {
40
- // This will be overridden by subclasses but provides the base pattern
41
- const ComponentClass = this as any;
42
- return React.createElement(ComponentClass, jsonData);
123
+ const { tagName, version, data } = jsonData;
124
+ if (tagName !== this.tagName) {
125
+ throw new Error(`Cannot deserialize: Expected tagName '${this.tagName}' but got '${tagName}'`);
126
+ }
127
+ if (version !== this.version) {
128
+ console.warn(`Version mismatch: Expected ${this.version} but got ${version}`);
129
+ }
130
+
131
+ return React.createElement(this as any, data || {});
43
132
  }
44
-
133
+
45
134
  /**
46
135
  * Common toJson implementation with hooks for customization
47
- * Combines base serializable props with component-specific props
48
136
  */
49
137
  toJson(): any {
50
138
  const baseProps = this.getBaseSerializableProps();
51
139
  const componentProps = this.getComponentSpecificProps();
52
-
53
140
  return {
54
- ...baseProps,
55
- ...componentProps
141
+ tagName: (this.constructor as typeof ModelView).tagName,
142
+ version: (this.constructor as typeof ModelView).version,
143
+ data: {
144
+ ...baseProps,
145
+ ...componentProps
146
+ }
56
147
  };
57
148
  }
58
-
149
+
150
+ /**
151
+ * Get processed props for subclasses to use
152
+ * This converts ViewSchema props and processes them through useBaseProps
153
+ */
154
+ protected getProcessedProps(): ProcessedProps {
155
+ const { dataSource, bindingOptions, ...schemaProps } = this.props;
156
+
157
+ // Convert ViewSchema props to BaseComponentProps format
158
+ const convertedProps = convertSchemaToBaseProps(schemaProps);
159
+
160
+ // Process through useBaseProps utility (this is a bit of a hack since we're in a class component)
161
+ // We'll simulate what useBaseProps does
162
+ const mockProps = {
163
+ gridProps: {
164
+ span: convertedProps.span,
165
+ xs: convertedProps.xs,
166
+ sm: convertedProps.sm,
167
+ md: convertedProps.md,
168
+ lg: convertedProps.lg,
169
+ xl: convertedProps.xl,
170
+ },
171
+ styleProps: {
172
+ className: convertedProps.className,
173
+ sx: convertedProps.sx,
174
+ style: convertedProps.style,
175
+ },
176
+ htmlProps: {
177
+ id: convertedProps.id,
178
+ role: convertedProps.role,
179
+ 'aria-label': convertedProps['aria-label'],
180
+ 'aria-labelledby': convertedProps['aria-labelledby'],
181
+ 'aria-describedby': convertedProps['aria-describedby'],
182
+ 'data-testid': convertedProps['data-testid'],
183
+ onClick: convertedProps.onClick,
184
+ onMouseEnter: convertedProps.onMouseEnter,
185
+ onMouseLeave: convertedProps.onMouseLeave,
186
+ onFocus: convertedProps.onFocus,
187
+ onBlur: convertedProps.onBlur,
188
+ },
189
+ restProps: {
190
+ // All the spacing, dimension, and background props
191
+ width: convertedProps.width,
192
+ height: convertedProps.height,
193
+ minWidth: convertedProps.minWidth,
194
+ minHeight: convertedProps.minHeight,
195
+ maxWidth: convertedProps.maxWidth,
196
+ maxHeight: convertedProps.maxHeight,
197
+ padding: convertedProps.padding,
198
+ paddingTop: convertedProps.paddingTop,
199
+ paddingRight: convertedProps.paddingRight,
200
+ paddingBottom: convertedProps.paddingBottom,
201
+ paddingLeft: convertedProps.paddingLeft,
202
+ paddingX: convertedProps.paddingX,
203
+ paddingY: convertedProps.paddingY,
204
+ margin: convertedProps.margin,
205
+ marginTop: convertedProps.marginTop,
206
+ marginRight: convertedProps.marginRight,
207
+ marginBottom: convertedProps.marginBottom,
208
+ marginLeft: convertedProps.marginLeft,
209
+ marginX: convertedProps.marginX,
210
+ marginY: convertedProps.marginY,
211
+ background: convertedProps.background,
212
+ backgroundImage: convertedProps.backgroundImage,
213
+ backgroundGradient: convertedProps.backgroundGradient,
214
+ textAlign: convertedProps.textAlign,
215
+ }
216
+ };
217
+
218
+ return mockProps;
219
+ }
220
+
59
221
  /**
60
222
  * Common base props that all components serialize
61
- * Handles ReactNode children, data binding, and common styling props
62
223
  */
63
224
  protected getBaseSerializableProps(): any {
64
225
  const props = this.props as any;
65
226
  return {
66
- // Handle ReactNode children conversion
67
227
  children: props.children ? this.serializeChildren(props.children) : undefined,
68
- // Preserve data binding
69
228
  dataSource: props.dataSource,
70
229
  bindingOptions: props.bindingOptions,
71
- // Common styling props that many components have
72
- className: props.className,
73
- id: props.id
230
+ // Include all ViewSchema props in serialization
231
+ ...props,
74
232
  };
75
233
  }
76
-
234
+
77
235
  /**
78
236
  * Hook for subclasses to add component-specific serialization
79
- * Must be implemented by each component to include its specific props
80
237
  */
81
238
  protected abstract getComponentSpecificProps(): any;
82
-
239
+
83
240
  /**
84
241
  * Common children serialization logic
85
- * Handles different children types based on component capabilities
86
242
  */
87
243
  protected serializeChildren(children: ReactNode): any {
88
244
  if (typeof children === 'string') {
89
245
  return children;
90
246
  }
91
-
92
- // For complex components (Section), we'll let the specific component handle serialization
93
- // to avoid circular dependencies. The Section component can override this method.
247
+
94
248
  if (this.hasNestedComponents(children)) {
95
- // This should be overridden by components that support nested components
96
249
  throw new Error('Components with nested components must override serializeChildren method');
97
250
  }
98
-
99
- // For simple components (Code, Button), extract text
251
+
100
252
  return extractTextFromReactNode(children);
101
253
  }
102
-
254
+
103
255
  /**
104
256
  * Helper to determine if children contain other serializable components
105
- * Override in subclasses that support nested components (like Section)
106
257
  */
107
258
  protected hasNestedComponents(children: ReactNode): boolean {
108
- // Default: false for simple components
109
259
  return false;
110
260
  }
111
-
261
+
112
262
  /**
113
263
  * Common render pattern
114
- * Determines whether to use data binding or traditional props rendering
115
264
  */
116
265
  render() {
117
266
  const props = this.props as any;
118
-
267
+
119
268
  if (props.dataSource) {
120
269
  return this.renderWithDataBinding();
121
270
  }
122
-
271
+
123
272
  return this.renderView();
124
273
  }
125
-
274
+
126
275
  /**
127
276
  * Hook for subclasses to implement traditional props rendering
128
- * This is where the component renders using props directly
129
277
  */
130
278
  protected abstract renderView(): React.ReactElement;
131
-
279
+
132
280
  /**
133
281
  * Hook for subclasses to implement data binding rendering
134
- * This should render the data-bound version of the component
135
282
  */
136
283
  protected abstract renderWithDataBinding(): React.ReactElement;
137
284
 
138
285
  /**
139
286
  * Register HTML pattern handlers for this component
140
- * Override this method to register patterns that this component can handle
141
- * @param registry - ComponentTransformer to register patterns with
142
287
  */
143
- static registerPatternHandlers(registry: any): void {
288
+ static registerPatternHandlers(_registry: any): void {
144
289
  // Default: no patterns to register
145
- // Subclasses should override this to register their HTML patterns
146
290
  }
147
291
  }
148
292
 
149
293
  /**
150
- * Type helper for ModelView component constructors
151
- * Ensures proper typing for registration and factory functions
152
- */
153
- export interface ModelViewConstructor<TProps = any, TModel = any> {
154
- new (props: TProps & WithDataBinding): ModelView<TProps, TModel>;
155
- readonly tagName: string;
156
- readonly version: string;
157
- fromJson(jsonData: any): ReactElement;
158
- }
159
-
160
- /**
161
- * Helper function to create a ModelView component class
162
- * Provides better TypeScript inference for component registration
294
+ * Helper function for creating ModelView component classes with ViewSchema support
295
+ * Updated to work with the new ViewSchema processing system
163
296
  */
164
297
  export function createModelViewClass<TProps, TModel>(
165
298
  config: {
166
299
  tagName: string;
167
300
  version: string;
168
- getComponentSpecificProps: (props: TProps) => any;
301
+ getComponentSpecificProps: (props: TProps, processedProps: ProcessedProps) => any;
169
302
  hasNestedComponents?: (children: ReactNode) => boolean;
170
- renderView: (props: TProps) => React.ReactElement;
171
- renderWithDataBinding: (props: TProps & WithDataBinding) => React.ReactElement;
303
+ renderView: (props: TProps, processedProps: ProcessedProps) => React.ReactElement;
304
+ renderWithDataBinding: (props: TProps & WithDataBinding, processedProps: ProcessedProps) => React.ReactElement;
172
305
  }
173
- ): ModelViewConstructor<TProps, TModel> {
174
-
306
+ ): any {
307
+
175
308
  class DynamicModelView extends ModelView<TProps, TModel> {
176
309
  static readonly tagName = config.tagName;
177
310
  static readonly version = config.version;
178
-
311
+
179
312
  protected getComponentSpecificProps(): any {
180
- return config.getComponentSpecificProps(this.props as TProps);
313
+ const processedProps = this.getProcessedProps();
314
+ return config.getComponentSpecificProps(this.props as TProps, processedProps);
181
315
  }
182
-
316
+
183
317
  protected hasNestedComponents(children: ReactNode): boolean {
184
318
  return config.hasNestedComponents ? config.hasNestedComponents(children) : false;
185
319
  }
186
-
320
+
187
321
  protected renderView(): React.ReactElement {
188
- return config.renderView(this.props as TProps);
322
+ const processedProps = this.getProcessedProps();
323
+ return config.renderView(this.props as TProps, processedProps);
189
324
  }
190
-
325
+
191
326
  protected renderWithDataBinding(): React.ReactElement {
192
- return config.renderWithDataBinding(this.props as TProps & WithDataBinding);
327
+ const processedProps = this.getProcessedProps();
328
+ return config.renderWithDataBinding(this.props as TProps & WithDataBinding, processedProps);
193
329
  }
194
330
  }
195
-
196
- return DynamicModelView as ModelViewConstructor<TProps, TModel>;
197
- }
198
331
 
199
- export default ModelView;
332
+ return DynamicModelView;
333
+ }
@@ -7,5 +7,6 @@
7
7
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
8
  */
9
9
 
10
- export { default as ModelView, createModelViewClass } from './ModelView';
11
- export type { ModelViewConstructor } from './ModelView';
10
+ export { ModelView, createModelViewClass } from './ModelView';
11
+ export { default as Container, } from './Container';
12
+ export type { ContainerProps } from './Container';
@@ -14,14 +14,14 @@
14
14
  */
15
15
 
16
16
  import { Box, Typography } from '@mui/material';
17
- import { WithDataBinding, ModelProps } from '@qwickapps/schema';
17
+ import { WithDataBinding, SchemaProps } from '@qwickapps/schema';
18
18
  import React, { ReactElement } from 'react';
19
19
  import { QWICKAPP_COMPONENT, useBaseProps, useDataBinding } from '../../hooks';
20
20
  import ArticleModel from '../../schemas/ArticleSchema';
21
21
  import { ModelView } from '../base/ModelView';
22
22
  import Html from '../Html';
23
23
 
24
- type ArticleViewProps = ModelProps<ArticleModel>;
24
+ type ArticleViewProps = SchemaProps<ArticleModel>;
25
25
 
26
26
  export interface ArticleProps extends ArticleViewProps, WithDataBinding {
27
27
  }
@@ -125,11 +125,6 @@ export class Article extends ModelView<ArticleProps, ArticleModel> {
125
125
  static readonly tagName = 'Article';
126
126
  static readonly version = '1.0.0';
127
127
 
128
- // Deserialization: JSON data → React element
129
- static fromJson(jsonData: any): ReactElement {
130
- return <Article {...jsonData} />;
131
- }
132
-
133
128
  // Component-specific serialization properties
134
129
  protected getComponentSpecificProps(): any {
135
130
  return {
@@ -9,7 +9,7 @@
9
9
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
10
10
  */
11
11
 
12
- import { WithDataBinding, ModelProps } from '@qwickapps/schema';
12
+ import { WithDataBinding, SchemaProps } from '@qwickapps/schema';
13
13
  import React from 'react';
14
14
  import { useBaseProps, useDataBinding } from '../../hooks';
15
15
  import CardListGridModel from '../../schemas/CardListGridSchema';
@@ -17,7 +17,7 @@ import { GridLayout } from '../layout';
17
17
  import { FeatureCard } from './FeatureCard';
18
18
  import { ProductCard } from './ProductCard';
19
19
 
20
- type CardListGridViewProps = ModelProps<CardListGridModel> & {
20
+ type CardListGridViewProps = SchemaProps<CardListGridModel> & {
21
21
  /** Render function for each item (traditional usage) */
22
22
  renderItem?: (item: any, index: number) => React.ReactNode;
23
23
  };