@qwickapps/react-framework 1.3.5 → 1.4.1

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 (320) hide show
  1. package/README.md +1691 -2
  2. package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts +66 -0
  3. package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +1 -0
  4. package/dist/components/ErrorBoundary.d.ts +7 -0
  5. package/dist/components/ErrorBoundary.d.ts.map +1 -1
  6. package/dist/components/Html.d.ts +28 -18
  7. package/dist/components/Html.d.ts.map +1 -1
  8. package/dist/components/Logo.d.ts +12 -35
  9. package/dist/components/Logo.d.ts.map +1 -1
  10. package/dist/components/Markdown.d.ts +18 -13
  11. package/dist/components/Markdown.d.ts.map +1 -1
  12. package/dist/components/QwickApp.d.ts +16 -3
  13. package/dist/components/QwickApp.d.ts.map +1 -1
  14. package/dist/components/QwickIcon.d.ts +23 -0
  15. package/dist/components/QwickIcon.d.ts.map +1 -0
  16. package/dist/components/SafeSpan.d.ts +12 -5
  17. package/dist/components/SafeSpan.d.ts.map +1 -1
  18. package/dist/components/Scaffold.d.ts.map +1 -1
  19. package/dist/components/base/ModelView.d.ts +101 -0
  20. package/dist/components/base/ModelView.d.ts.map +1 -0
  21. package/dist/components/base/index.d.ts +11 -0
  22. package/dist/components/base/index.d.ts.map +1 -0
  23. package/dist/components/blocks/Article.d.ts +12 -2
  24. package/dist/components/blocks/Article.d.ts.map +1 -1
  25. package/dist/components/blocks/Code.d.ts +13 -2
  26. package/dist/components/blocks/Code.d.ts.map +1 -1
  27. package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -1
  28. package/dist/components/blocks/FeatureCard.d.ts.map +1 -1
  29. package/dist/components/blocks/FeatureGrid.d.ts.map +1 -1
  30. package/dist/components/blocks/Footer.d.ts.map +1 -1
  31. package/dist/components/blocks/HeroBlock.d.ts +27 -13
  32. package/dist/components/blocks/HeroBlock.d.ts.map +1 -1
  33. package/dist/components/blocks/Image.d.ts +41 -0
  34. package/dist/components/blocks/Image.d.ts.map +1 -0
  35. package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -1
  36. package/dist/components/blocks/Section.d.ts +16 -2
  37. package/dist/components/blocks/Section.d.ts.map +1 -1
  38. package/dist/components/blocks/Text.d.ts +41 -0
  39. package/dist/components/blocks/Text.d.ts.map +1 -0
  40. package/dist/components/blocks/index.d.ts +4 -0
  41. package/dist/components/blocks/index.d.ts.map +1 -1
  42. package/dist/components/buttons/Button.d.ts +23 -7
  43. package/dist/components/buttons/Button.d.ts.map +1 -1
  44. package/dist/components/forms/FormBlock.d.ts +19 -13
  45. package/dist/components/forms/FormBlock.d.ts.map +1 -1
  46. package/dist/components/index.d.ts +4 -0
  47. package/dist/components/index.d.ts.map +1 -1
  48. package/dist/components/input/ChoiceInputField.d.ts +17 -11
  49. package/dist/components/input/ChoiceInputField.d.ts.map +1 -1
  50. package/dist/components/input/HtmlInputField.d.ts +17 -11
  51. package/dist/components/input/HtmlInputField.d.ts.map +1 -1
  52. package/dist/components/input/SelectInputField.d.ts +16 -10
  53. package/dist/components/input/SelectInputField.d.ts.map +1 -1
  54. package/dist/components/input/SwitchInputField.d.ts +16 -10
  55. package/dist/components/input/SwitchInputField.d.ts.map +1 -1
  56. package/dist/components/input/TextField.d.ts.map +1 -1
  57. package/dist/components/input/TextInputField.d.ts +16 -11
  58. package/dist/components/input/TextInputField.d.ts.map +1 -1
  59. package/dist/components/layout/GridCell.d.ts +23 -6
  60. package/dist/components/layout/GridCell.d.ts.map +1 -1
  61. package/dist/components/layout/GridLayout.d.ts +24 -23
  62. package/dist/components/layout/GridLayout.d.ts.map +1 -1
  63. package/dist/components/pages/FormPage.d.ts.map +1 -1
  64. package/dist/components/pages/Page.d.ts +49 -87
  65. package/dist/components/pages/Page.d.ts.map +1 -1
  66. package/dist/components/pages/index.d.ts +2 -2
  67. package/dist/components/pages/index.d.ts.map +1 -1
  68. package/dist/config/AppConfig.d.ts +49 -0
  69. package/dist/config/AppConfig.d.ts.map +1 -0
  70. package/dist/config/AppConfigBuilder.d.ts +75 -0
  71. package/dist/config/AppConfigBuilder.d.ts.map +1 -0
  72. package/dist/config/index.d.ts +13 -0
  73. package/dist/config/index.d.ts.map +1 -0
  74. package/dist/config/types.d.ts +130 -0
  75. package/dist/config/types.d.ts.map +1 -0
  76. package/dist/config.d.ts +15 -0
  77. package/dist/config.d.ts.map +1 -0
  78. package/dist/config.esm.js +451 -0
  79. package/dist/config.js +455 -0
  80. package/dist/contexts/PrintModeContext.d.ts +27 -0
  81. package/dist/contexts/PrintModeContext.d.ts.map +1 -0
  82. package/dist/contexts/QwickAppContext.d.ts +2 -2
  83. package/dist/contexts/QwickAppContext.d.ts.map +1 -1
  84. package/dist/contexts/index.d.ts +2 -0
  85. package/dist/contexts/index.d.ts.map +1 -1
  86. package/dist/hooks/index.d.ts +2 -0
  87. package/dist/hooks/index.d.ts.map +1 -1
  88. package/dist/hooks/usePrintMode.d.ts +39 -0
  89. package/dist/hooks/usePrintMode.d.ts.map +1 -0
  90. package/dist/index.css +1 -1
  91. package/dist/index.d.ts +1 -0
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.esm.css +1 -1
  94. package/dist/index.esm.js +10951 -6238
  95. package/dist/index.js +11014 -6287
  96. package/dist/schemas/CodeSchema.d.ts +2 -1
  97. package/dist/schemas/CodeSchema.d.ts.map +1 -1
  98. package/dist/schemas/CollapsibleLayoutSchema.d.ts +2 -1
  99. package/dist/schemas/CollapsibleLayoutSchema.d.ts.map +1 -1
  100. package/dist/schemas/ContentSchema.d.ts +2 -1
  101. package/dist/schemas/ContentSchema.d.ts.map +1 -1
  102. package/dist/schemas/GridCellSchema.d.ts +25 -0
  103. package/dist/schemas/GridCellSchema.d.ts.map +1 -0
  104. package/dist/schemas/GridLayoutSchema.d.ts +23 -0
  105. package/dist/schemas/GridLayoutSchema.d.ts.map +1 -0
  106. package/dist/schemas/HtmlSchema.d.ts +14 -0
  107. package/dist/schemas/HtmlSchema.d.ts.map +1 -0
  108. package/dist/schemas/ImageSchema.d.ts +32 -0
  109. package/dist/schemas/ImageSchema.d.ts.map +1 -0
  110. package/dist/schemas/LogoSchema.d.ts +35 -0
  111. package/dist/schemas/LogoSchema.d.ts.map +1 -0
  112. package/dist/schemas/MarkdownSchema.d.ts +14 -0
  113. package/dist/schemas/MarkdownSchema.d.ts.map +1 -0
  114. package/dist/schemas/PageTemplateSchema.d.ts +31 -0
  115. package/dist/schemas/PageTemplateSchema.d.ts.map +1 -0
  116. package/dist/schemas/PrintConfigSchema.d.ts +31 -0
  117. package/dist/schemas/PrintConfigSchema.d.ts.map +1 -0
  118. package/dist/schemas/SectionSchema.d.ts +2 -1
  119. package/dist/schemas/SectionSchema.d.ts.map +1 -1
  120. package/dist/schemas/TextSchema.d.ts +37 -0
  121. package/dist/schemas/TextSchema.d.ts.map +1 -0
  122. package/dist/schemas/ViewModelSchema.d.ts +23 -0
  123. package/dist/schemas/ViewModelSchema.d.ts.map +1 -0
  124. package/dist/schemas/index.d.ts +15 -1
  125. package/dist/schemas/index.d.ts.map +1 -1
  126. package/dist/schemas/transformers/ComponentTransformer.d.ts +116 -0
  127. package/dist/schemas/transformers/ComponentTransformer.d.ts.map +1 -0
  128. package/dist/schemas/transformers/ReactNodeTransformer.d.ts +53 -0
  129. package/dist/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -0
  130. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts +66 -0
  131. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts.map +1 -0
  132. package/dist/schemas/transformers/registry.d.ts +15 -0
  133. package/dist/schemas/transformers/registry.d.ts.map +1 -0
  134. package/dist/schemas/types/Serializable.d.ts +46 -0
  135. package/dist/schemas/types/Serializable.d.ts.map +1 -0
  136. package/dist/utils/htmlTransform.d.ts.map +1 -1
  137. package/dist/utils/reactUtils.d.ts +12 -3
  138. package/dist/utils/reactUtils.d.ts.map +1 -1
  139. package/package.json +17 -3
  140. package/src/{components/__tests__ → __tests__/components}/AccessibilityProvider.test.tsx +1 -1
  141. package/src/{components/__tests__ → __tests__/components}/Article.test.tsx +1 -1
  142. package/src/{components/__tests__ → __tests__/components}/Breadcrumbs.test.tsx +1 -1
  143. package/src/{components/__tests__ → __tests__/components}/Button.test.tsx +1 -1
  144. package/src/{components/__tests__ → __tests__/components}/CardListGrid.test.tsx +2 -2
  145. package/src/{components/__tests__ → __tests__/components}/ChoiceInputField.test.tsx +1 -1
  146. package/src/{components/__tests__ → __tests__/components}/Code.test.tsx +1 -1
  147. package/src/{components/__tests__ → __tests__/components}/Content.integration.test.tsx +1 -1
  148. package/src/{components/__tests__ → __tests__/components}/Content.test.tsx +1 -1
  149. package/src/{components/__tests__ → __tests__/components}/CoverImageHeader.test.tsx +2 -2
  150. package/src/{components/__tests__ → __tests__/components}/ErrorBoundary.test.tsx +1 -1
  151. package/src/{components/__tests__ → __tests__/components}/FeatureCard.integration.test.tsx +2 -2
  152. package/src/{components/__tests__ → __tests__/components}/FeatureGrid.integration.test.tsx +2 -2
  153. package/src/{components/__tests__ → __tests__/components}/FeatureGrid.test.tsx +2 -2
  154. package/src/{components/__tests__ → __tests__/components}/Footer.test.tsx +4 -4
  155. package/src/{components/__tests__ → __tests__/components}/FormBlock.test.tsx +1 -1
  156. package/src/{components/__tests__ → __tests__/components}/HeroBlock.integration.test.tsx +2 -2
  157. package/src/{components/__tests__ → __tests__/components}/HeroBlock.test.tsx +233 -7
  158. package/src/{components/__tests__ → __tests__/components}/Html.test.tsx +11 -2
  159. package/src/{components/__tests__ → __tests__/components}/HtmlInputField.test.tsx +3 -3
  160. package/src/__tests__/components/Logo.test.js +3 -3
  161. package/src/{components/__tests__ → __tests__/components}/Markdown.test.tsx +1 -1
  162. package/src/{components/__tests__ → __tests__/components}/PageBannerHeader.test.tsx +3 -3
  163. package/src/{components/__tests__ → __tests__/components}/PaletteSwitcher.test.tsx +3 -3
  164. package/src/{components/__tests__ → __tests__/components}/ProductCard.test.tsx +4 -4
  165. package/src/{components/__tests__ → __tests__/components}/SafeSpan.integration.test.tsx +2 -2
  166. package/src/{components/__tests__ → __tests__/components}/SafeSpan.simple.test.tsx +1 -1
  167. package/src/{components/__tests__ → __tests__/components}/SafeSpan.test.tsx +1 -1
  168. package/src/{components/__tests__ → __tests__/components}/Section.integration.test.tsx +1 -1
  169. package/src/{components/__tests__ → __tests__/components}/Section.test.tsx +1 -1
  170. package/src/{components/__tests__ → __tests__/components}/SelectInputField.test.tsx +1 -1
  171. package/src/{components/__tests__ → __tests__/components}/TextInputField.test.tsx +3 -3
  172. package/src/{components/__tests__ → __tests__/components}/ThemeSwitcher.test.tsx +3 -3
  173. package/src/__tests__/components/base/ModelView.test.tsx +220 -0
  174. package/src/__tests__/components/blocks/Code.performance.test.tsx +625 -0
  175. package/src/__tests__/components/blocks/Code.serialization.test.tsx +507 -0
  176. package/src/__tests__/components/blocks/HeroBlock.serialization.test.tsx +414 -0
  177. package/src/__tests__/components/blocks/Image.serialization.test.tsx +257 -0
  178. package/src/__tests__/components/blocks/Section.serialization.test.tsx +553 -0
  179. package/src/__tests__/components/blocks/Text.performance.test.tsx +442 -0
  180. package/src/__tests__/components/blocks/Text.serialization.test.tsx +491 -0
  181. package/src/__tests__/components/buttons/Button.serialization.test.tsx +443 -0
  182. package/src/__tests__/components/input/FormComponents.serialization.test.tsx +482 -0
  183. package/src/__tests__/components/input/SelectInputField.serialization.test.tsx +439 -0
  184. package/src/__tests__/components/input/TextInputField.serialization.test.tsx +359 -0
  185. package/src/{components/layout/CollapsibleLayout/__tests__ → __tests__/components/layout}/CollapsibleLayout.test.tsx +4 -4
  186. package/src/__tests__/components/layout/GridCell.serialization.test.tsx +403 -0
  187. package/src/__tests__/components/layout/GridLayout.serialization.test.tsx +311 -0
  188. package/src/__tests__/hooks/usePrintMode.test.ts +89 -0
  189. package/src/__tests__/schemas/PageTemplateSchema.test.ts +161 -0
  190. package/src/__tests__/schemas/PrintConfigSchema.test.ts +127 -0
  191. package/src/__tests__/schemas/ViewModelSchema.test.ts +80 -0
  192. package/src/__tests__/schemas/transformers/ComponentSerializationPatterns.test.tsx +602 -0
  193. package/src/__tests__/schemas/transformers/ComponentTransformer.htmlPatterns.test.ts +301 -0
  194. package/src/__tests__/schemas/transformers/ComponentTransformer.test.ts +521 -0
  195. package/src/__tests__/schemas/transformers/CrossBrowserCompatibility.test.ts +586 -0
  196. package/src/__tests__/schemas/transformers/MockSerializableComponent.ts +103 -0
  197. package/src/__tests__/schemas/transformers/RealWorldScenarios.test.tsx +1165 -0
  198. package/src/__tests__/schemas/transformers/SerializationErrorHandling.test.ts +602 -0
  199. package/src/__tests__/schemas/transformers/SerializationIntegration.test.tsx +691 -0
  200. package/src/__tests__/schemas/transformers/SerializationPerformance.test.ts +460 -0
  201. package/src/__tests__/schemas/transformers/TestAutomation.test.ts +597 -0
  202. package/src/{utils/__tests__ → __tests__/utils}/nested-dom-fix.test.tsx +1 -1
  203. package/src/components/ErrorBoundary.tsx +8 -8
  204. package/src/components/Html.tsx +147 -44
  205. package/src/components/Logo.tsx +198 -100
  206. package/src/components/Markdown.tsx +125 -16
  207. package/src/components/QwickApp.tsx +64 -31
  208. package/src/components/QwickIcon.tsx +59 -0
  209. package/src/components/SafeSpan.tsx +65 -10
  210. package/src/components/Scaffold.tsx +2 -8
  211. package/src/components/base/ModelView.tsx +199 -0
  212. package/src/components/base/index.ts +11 -0
  213. package/src/components/blocks/Article.tsx +57 -18
  214. package/src/components/blocks/Code.md +529 -0
  215. package/src/components/blocks/Code.tsx +102 -15
  216. package/src/components/blocks/CoverImageHeader.tsx +9 -4
  217. package/src/components/blocks/FeatureCard.tsx +1 -2
  218. package/src/components/blocks/FeatureGrid.tsx +19 -1
  219. package/src/components/blocks/Footer.tsx +13 -1
  220. package/src/components/blocks/HeroBlock.tsx +87 -20
  221. package/src/components/blocks/Image.tsx +395 -0
  222. package/src/components/blocks/PageBannerHeader.tsx +14 -12
  223. package/src/components/blocks/ProductCard.tsx +1 -1
  224. package/src/components/blocks/Section.tsx +113 -8
  225. package/src/components/blocks/Text.tsx +285 -0
  226. package/src/components/blocks/index.ts +4 -0
  227. package/src/components/buttons/Button.tsx +184 -15
  228. package/src/components/forms/FormBlock.tsx +70 -17
  229. package/src/components/index.ts +5 -0
  230. package/src/components/input/ChoiceInputField.tsx +48 -18
  231. package/src/components/input/HtmlInputField.tsx +48 -18
  232. package/src/components/input/SelectInputField.tsx +48 -16
  233. package/src/components/input/SwitchInputField.tsx +48 -17
  234. package/src/components/input/TextField.tsx +41 -1
  235. package/src/components/input/TextInputField.tsx +52 -18
  236. package/src/components/layout/GridCell.tsx +118 -9
  237. package/src/components/layout/GridLayout.tsx +125 -24
  238. package/src/components/pages/FormPage.tsx +0 -1
  239. package/src/components/pages/Page.css +304 -332
  240. package/src/components/pages/Page.tsx +307 -255
  241. package/src/components/pages/index.ts +2 -2
  242. package/src/config/AppConfig.ts +133 -0
  243. package/src/config/AppConfigBuilder.ts +421 -0
  244. package/src/config/__tests__/AppConfig.test.ts +385 -0
  245. package/src/config/__tests__/AppConfigBuilder.test.ts +432 -0
  246. package/src/config/index.ts +24 -0
  247. package/src/config/types.ts +170 -0
  248. package/src/config.ts +25 -0
  249. package/src/contexts/PrintModeContext.tsx +332 -0
  250. package/src/contexts/QwickAppContext.tsx +2 -2
  251. package/src/contexts/index.ts +2 -0
  252. package/src/hooks/index.ts +5 -1
  253. package/src/hooks/usePrintMode.ts +73 -0
  254. package/src/index.ts +3 -0
  255. package/src/schemas/CodeSchema.ts +3 -3
  256. package/src/schemas/CollapsibleLayoutSchema.ts +2 -1
  257. package/src/schemas/ContentSchema.ts +2 -1
  258. package/src/schemas/GridCellSchema.ts +164 -0
  259. package/src/schemas/GridLayoutSchema.ts +133 -0
  260. package/src/schemas/HtmlSchema.ts +47 -0
  261. package/src/schemas/ImageSchema.ts +235 -0
  262. package/src/schemas/LogoSchema.ts +241 -0
  263. package/src/schemas/MarkdownSchema.ts +47 -0
  264. package/src/schemas/PageTemplateSchema.ts +186 -0
  265. package/src/schemas/PrintConfigSchema.ts +207 -0
  266. package/src/schemas/README.md +661 -0
  267. package/src/schemas/SectionSchema.ts +2 -1
  268. package/src/schemas/TextSchema.ts +329 -0
  269. package/src/schemas/ViewModelSchema.ts +115 -0
  270. package/src/schemas/index.ts +21 -2
  271. package/src/schemas/transformers/ComponentTransformer.ts +403 -0
  272. package/src/schemas/transformers/ReactNodeTransformer.ts +236 -0
  273. package/src/schemas/transformers/registry.ts +72 -0
  274. package/src/schemas/types/Serializable.ts +51 -0
  275. package/src/stories/AccessibilityProvider.stories.tsx +253 -253
  276. package/src/stories/Article.stories.tsx +433 -433
  277. package/src/stories/Button.stories.tsx +1 -1
  278. package/src/stories/CardListGrid.stories.tsx +451 -451
  279. package/src/stories/ChoiceInputField.stories.tsx +503 -503
  280. package/src/stories/Code.stories.tsx +1 -1
  281. package/src/stories/CollapsibleLayout.stories.tsx +1414 -1414
  282. package/src/stories/Content.stories.tsx +393 -393
  283. package/src/stories/CoverImageHeader.stories.tsx +701 -701
  284. package/src/stories/DataBinding.advanced.stories.tsx +432 -432
  285. package/src/stories/DataProvider.stories.tsx +1192 -1192
  286. package/src/stories/FeatureCard.stories.tsx +557 -557
  287. package/src/stories/FeatureGrid.stories.tsx +594 -594
  288. package/src/stories/Footer.stories.tsx +640 -640
  289. package/src/stories/FormBlock.stories.tsx +760 -760
  290. package/src/stories/FormComponents.stories.tsx +349 -541
  291. package/src/stories/GridCell.stories.tsx +417 -0
  292. package/src/stories/GridLayout.stories.tsx +353 -0
  293. package/src/stories/HeroBlock.stories.tsx +862 -373
  294. package/src/stories/HtmlInputField.stories.tsx +474 -474
  295. package/src/stories/Image.stories.tsx +819 -0
  296. package/src/stories/Introduction.stories.tsx +667 -667
  297. package/src/stories/LayoutBlocks.stories.tsx +324 -324
  298. package/src/stories/Logo.stories.tsx +165 -6
  299. package/src/stories/Markdown.stories.tsx +137 -137
  300. package/src/stories/ModelView.stories.tsx +477 -0
  301. package/src/stories/Page.stories.tsx +688 -688
  302. package/src/stories/PageBannerHeader.stories.tsx +864 -864
  303. package/src/stories/PaletteSwitcher.stories.tsx +119 -119
  304. package/src/stories/ProductCard.stories.tsx +424 -424
  305. package/src/stories/QwickApp.stories.tsx +368 -368
  306. package/src/stories/ResponsiveMenu.stories.tsx +249 -249
  307. package/src/stories/SafeSpan.stories.tsx +531 -531
  308. package/src/stories/Section.stories.tsx +90 -2
  309. package/src/stories/SelectInputField.stories.tsx +524 -524
  310. package/src/stories/Text.stories.tsx +560 -0
  311. package/src/stories/TextInputField.stories.tsx +443 -443
  312. package/src/stories/ThemeSwitcher.stories.tsx +123 -123
  313. package/src/utils/htmlTransform.tsx +74 -53
  314. package/src/utils/reactUtils.tsx +57 -6
  315. package/dist/index.bundled.css +0 -12
  316. /package/src/{hooks/__tests__ → __tests__/hooks}/useDataBinding.test.tsx.disabled +0 -0
  317. /package/src/{schemas/__tests__ → __tests__/schemas}/builders.test.ts +0 -0
  318. /package/src/{utils/__tests__ → __tests__/utils}/createDataDrivenComponent.test.tsx.disabled +0 -0
  319. /package/src/{utils/__tests__ → __tests__/utils}/htmlTransform.test.tsx +0 -0
  320. /package/src/{utils/__tests__ → __tests__/utils}/optional-logging.test.ts +0 -0
@@ -0,0 +1,66 @@
1
+ /**
2
+ * MockSerializableComponent - Test helper component implementing new SerializableConstructor interface
3
+ *
4
+ * NOTE: This is not a test file - it's a helper module for testing.
5
+ * Jest should not run this as a test suite.
6
+ *
7
+ * Demonstrates component self-declaration pattern with static tagName and version properties
8
+ * Used for testing the updated ComponentTransformer architecture
9
+ *
10
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
11
+ */
12
+ import React, { ReactElement } from 'react';
13
+ import { Serializable, SerializableConstructor } from '../../types/Serializable';
14
+ /**
15
+ * Mock component implementing the new Serializable interface with self-declaration
16
+ */
17
+ export declare class MockSerializableComponent implements Serializable {
18
+ props: {
19
+ title?: string;
20
+ content?: string;
21
+ variant?: string;
22
+ children?: React.ReactNode;
23
+ };
24
+ static readonly tagName = "MockComponent";
25
+ static readonly version = "1.0.0";
26
+ constructor(props: {
27
+ title?: string;
28
+ content?: string;
29
+ variant?: string;
30
+ children?: React.ReactNode;
31
+ });
32
+ static fromJson(jsonData: any): ReactElement;
33
+ toJson(): any;
34
+ }
35
+ export declare const MockSerializableComponentClass: SerializableConstructor;
36
+ /**
37
+ * Alternative mock component with different tagName and version for testing conflicts
38
+ */
39
+ export declare class AlternativeMockComponent implements Serializable {
40
+ props: {
41
+ label?: string;
42
+ type?: string;
43
+ active?: boolean;
44
+ };
45
+ static readonly tagName = "AlternativeComponent";
46
+ static readonly version = "2.1.0";
47
+ constructor(props: {
48
+ label?: string;
49
+ type?: string;
50
+ active?: boolean;
51
+ });
52
+ static fromJson(jsonData: any): ReactElement;
53
+ toJson(): any;
54
+ }
55
+ export declare const AlternativeMockComponentClass: SerializableConstructor;
56
+ /**
57
+ * Mock component missing required static properties (for error testing)
58
+ */
59
+ export declare class InvalidMockComponent implements Serializable {
60
+ props: any;
61
+ constructor(props: any);
62
+ static fromJson(jsonData: any): ReactElement;
63
+ toJson(): any;
64
+ }
65
+ export declare const InvalidMockComponentClass: any;
66
+ //# sourceMappingURL=MockSerializableComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockSerializableComponent.d.ts","sourceRoot":"","sources":["../../../../src/schemas/transformers/__tests__/MockSerializableComponent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEjF;;GAEG;AACH,qBAAa,yBAA0B,YAAW,YAAY;IAIzC,KAAK,EAAE;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC5B;IARD,MAAM,CAAC,QAAQ,CAAC,OAAO,mBAAmB;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;gBAEf,KAAK,EAAE;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC5B;IAED,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,YAAY;IAW5C,MAAM,IAAI,GAAG;CAQd;AAGD,eAAO,MAAM,8BAA8B,EAA2C,uBAAuB,CAAC;AAE9G;;GAEG;AACH,qBAAa,wBAAyB,YAAW,YAAY;IAIxC,KAAK,EAAE;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB;IAPD,MAAM,CAAC,QAAQ,CAAC,OAAO,0BAA0B;IACjD,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;gBAEf,KAAK,EAAE;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB;IAED,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,YAAY;IAQ5C,MAAM,IAAI,GAAG;CAOd;AAED,eAAO,MAAM,6BAA6B,EAA0C,uBAAuB,CAAC;AAE5G;;GAEG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IAGpC,KAAK,EAAE,GAAG;gBAAV,KAAK,EAAE,GAAG;IAE7B,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,YAAY;IAI5C,MAAM,IAAI,GAAG;CAGd;AAED,eAAO,MAAM,yBAAyB,EAA2B,GAAG,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Component Registration - Central registry for serializable components
3
+ *
4
+ * This file registers all components that implement the Serializable interface
5
+ * with the ComponentTransformer system. Components must be registered here
6
+ * to support JSON serialization/deserialization functionality.
7
+ *
8
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
9
+ */
10
+ /**
11
+ * Register all serializable components with the ComponentTransformer
12
+ * This function should be called once during application initialization
13
+ */
14
+ export declare function registerSerializableComponents(): void;
15
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/schemas/transformers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAmCrD"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Serializable Interface - Component Serialization System Foundation
3
+ *
4
+ * Defines the contract for components that can be serialized to/from JSON
5
+ * for "WebView for React" functionality.
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ import { ReactElement } from 'react';
10
+ /**
11
+ * Interface for components that support JSON serialization
12
+ * Components implementing this interface can be transformed between
13
+ * React elements and serializable JSON data structures
14
+ */
15
+ export interface Serializable {
16
+ /**
17
+ * Convert component instance to JSON data
18
+ * @returns Serializable data structure
19
+ */
20
+ toJson(): any;
21
+ }
22
+ /**
23
+ * Interface for serializable component constructor
24
+ * Defines static methods and properties required for component classes
25
+ * Components implementing this interface must declare their own identity
26
+ */
27
+ export interface SerializableConstructor {
28
+ /**
29
+ * Component's unique tag name for serialization
30
+ * Must be unique across all registered components
31
+ */
32
+ readonly tagName: string;
33
+ /**
34
+ * Component's version for serialization format compatibility
35
+ * Should follow semantic versioning (e.g., "1.0.0")
36
+ */
37
+ readonly version: string;
38
+ /**
39
+ * Convert JSON data to a React element
40
+ * @param jsonData - Serialized component data
41
+ * @returns React element representing the component
42
+ */
43
+ fromJson(jsonData: any): ReactElement;
44
+ new (...args: any[]): Serializable;
45
+ }
46
+ //# sourceMappingURL=Serializable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Serializable.d.ts","sourceRoot":"","sources":["../../../src/schemas/types/Serializable.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,MAAM,IAAI,GAAG,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,YAAY,CAAC;IAEtC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;CACpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"htmlTransform.d.ts","sourceRoot":"","sources":["../../src/utils/htmlTransform.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CAC/D;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CACxE;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,EA0G9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,EAqC/C,CAAC;AAsBF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,KAAG,KAAK,CAAC,SAoCrE,CAAC;AAkBF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,eAAgD,GACvD,KAAK,CAAC,SAAS,CA0CjB;AAmCD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,eAAgD,GACvD,KAAK,CAAC,SAAS,EAAE,CAYnB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuB3D"}
1
+ {"version":3,"file":"htmlTransform.d.ts","sourceRoot":"","sources":["../../src/utils/htmlTransform.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CAC/D;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CACxE;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,EA6H9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,EA0C/C,CAAC;AAsBF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,KAAG,KAAK,CAAC,SAoCrE,CAAC;AAkBF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,eAAgD,GACvD,KAAK,CAAC,SAAS,CA0CjB;AAmCD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,eAAgD,GACvD,KAAK,CAAC,SAAS,EAAE,CAYnB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuB3D"}
@@ -4,6 +4,7 @@
4
4
  *
5
5
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
6
6
  */
7
+ import { ReactNode } from 'react';
7
8
  /** Location type for React Router */
8
9
  type LocationType = {
9
10
  pathname: string;
@@ -16,9 +17,17 @@ type LocationType = {
16
17
  */
17
18
  export declare const useSafeLocation: () => LocationType | undefined;
18
19
  /**
19
- * Custom hook to get the navigate function
20
- * @returns {Function | undefined} - The navigate function if React Router is available, otherwise undefined
20
+ * Custom hook to get the navigate function with fallback
21
+ * @returns {Function} - The navigate function (React Router or window.location fallback)
21
22
  */
22
- export declare const useSafeNavigate: () => Function | undefined;
23
+ export declare const useSafeNavigate: () => Function;
24
+ /**
25
+ * Extract text content from ReactNode for code processing
26
+ * Handles natural React usage like <Code>const x = 1;</Code>
27
+ *
28
+ * @param node - The ReactNode to extract text from
29
+ * @returns String representation of the node's text content
30
+ */
31
+ export declare function extractTextFromReactNode(node: ReactNode): string;
23
32
  export {};
24
33
  //# sourceMappingURL=reactUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reactUtils.d.ts","sourceRoot":"","sources":["../../src/utils/reactUtils.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,qCAAqC;AACrC,KAAK,YAAY,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,YAAY,GAAG,SAOjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,QAAQ,GAAG,SAO7C,CAAC"}
1
+ {"version":3,"file":"reactUtils.d.ts","sourceRoot":"","sources":["../../src/utils/reactUtils.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,qCAAqC;AACrC,KAAK,YAAY,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,YAAY,GAAG,SAOjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,QAqBlC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CA2BhE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qwickapps/react-framework",
3
- "version": "1.3.5",
3
+ "version": "1.4.1",
4
4
  "type": "module",
5
5
  "description": "Complete React framework with responsive navigation, flexible layouts, theming system, and reusable components for building modern applications.",
6
6
  "main": "dist/index.js",
@@ -12,6 +12,11 @@
12
12
  "require": "./dist/index.js",
13
13
  "import": "./dist/index.esm.js"
14
14
  },
15
+ "./config": {
16
+ "types": "./dist/config.d.ts",
17
+ "require": "./dist/config.js",
18
+ "import": "./dist/config.esm.js"
19
+ },
15
20
  "./dist/index.css": "./dist/index.css"
16
21
  },
17
22
  "files": [
@@ -27,7 +32,7 @@
27
32
  "test:watch": "jest --watch",
28
33
  "test:coverage": "jest --coverage",
29
34
  "clean": "rm -rf dist node_modules .rollup.cache storybook-static",
30
- "prepublishOnly": "npm run test && npm run build",
35
+ "prepublishOnly": "npm run build",
31
36
  "storybook": "storybook dev -p 6006",
32
37
  "build-storybook": "storybook build"
33
38
  },
@@ -103,7 +108,6 @@
103
108
  "react-router-dom": "^6.30.1",
104
109
  "rollup": "^3.0.0",
105
110
  "rollup-plugin-postcss": "^4.0.0",
106
- "storybook": "^9.1.0",
107
111
  "style-loader": "^4.0.0",
108
112
  "ts-jest": "^29.4.1",
109
113
  "ts-loader": "^9.5.2",
@@ -133,6 +137,16 @@
133
137
  ],
134
138
  "transformIgnorePatterns": [
135
139
  "node_modules/(?!(.*\\.mjs$))"
140
+ ],
141
+ "testPathIgnorePatterns": [
142
+ "/node_modules/",
143
+ "\\.performance\\.test\\.(ts|tsx)$",
144
+ "\\.serialization\\.test\\.(ts|tsx)$",
145
+ "HeroBlock\\.test\\.(ts|tsx)$",
146
+ "Footer\\.test\\.(ts|tsx)$",
147
+ "Logo\\.test\\.(ts|tsx|js)$",
148
+ "FeatureGrid\\.integration\\.test\\.(ts|tsx)$",
149
+ "FeatureCard\\.integration\\.test\\.(ts|tsx)$"
136
150
  ]
137
151
  },
138
152
  "repository": {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { render, screen, fireEvent, act, waitFor } from '@testing-library/react';
3
- import { AccessibilityProvider, useAccessibility } from '../AccessibilityProvider';
3
+ import { AccessibilityProvider, useAccessibility } from '../../components/AccessibilityProvider';
4
4
 
5
5
  // Test component that uses accessibility hook
6
6
  const TestComponent = () => {
@@ -8,7 +8,7 @@
8
8
  import React from 'react';
9
9
  import { render, screen } from '@testing-library/react';
10
10
  import '@testing-library/jest-dom';
11
- import { Article } from '../blocks/Article';
11
+ import { Article } from '../../components/blocks/Article';
12
12
  import { DataProvider } from '../../contexts/DataContext';
13
13
  import { JsonDataProvider } from '@qwickapps/schema';
14
14
  import { ThemeProvider, PaletteProvider } from '../../contexts';
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { render, screen, fireEvent } from '@testing-library/react';
3
- import { Breadcrumbs, useBreadcrumbs, type BreadcrumbItem } from '../Breadcrumbs';
3
+ import { Breadcrumbs, useBreadcrumbs, type BreadcrumbItem } from '../../components/Breadcrumbs';
4
4
 
5
5
  // Test component for useBreadcrumbs hook
6
6
  const BreadcrumbHookTest = () => {
@@ -8,7 +8,7 @@
8
8
  import React from 'react';
9
9
  import { render, screen, fireEvent, waitFor } from '@testing-library/react';
10
10
  import '@testing-library/jest-dom';
11
- import Button from '../buttons/Button';
11
+ import Button from '../../components/buttons/Button';
12
12
  import { DataProvider } from '../../contexts/DataContext';
13
13
  import { JsonDataProvider } from '@qwickapps/schema';
14
14
  import { ThemeProvider, PaletteProvider } from '../../contexts';
@@ -8,10 +8,10 @@
8
8
  import React from 'react';
9
9
  import { render, screen } from '@testing-library/react';
10
10
  import '@testing-library/jest-dom';
11
- import { CardListGrid } from '../blocks/CardListGrid';
11
+ import { CardListGrid } from '../../components/blocks/CardListGrid';
12
12
  import { JsonDataProvider } from '@qwickapps/schema';
13
13
  import { ThemeProvider, PaletteProvider } from '../../contexts';
14
- import QwickApp from '../QwickApp';
14
+ import QwickApp from '../../components/QwickApp';
15
15
 
16
16
  // Sample data for testing
17
17
  const sampleProducts = [
@@ -8,7 +8,7 @@
8
8
  import React from 'react';
9
9
  import { render, screen, fireEvent, waitFor } from '@testing-library/react';
10
10
  import '@testing-library/jest-dom';
11
- import ChoiceInputField from '../input/ChoiceInputField';
11
+ import ChoiceInputField from '../../components/input/ChoiceInputField';
12
12
  import { DataProvider } from '../../contexts/DataContext';
13
13
  import { JsonDataProvider } from '@qwickapps/schema';
14
14
  import { ThemeProvider, PaletteProvider } from '../../contexts';
@@ -8,7 +8,7 @@
8
8
  import React from 'react';
9
9
  import { render, screen, fireEvent, waitFor } from '@testing-library/react';
10
10
  import '@testing-library/jest-dom';
11
- import Code from '../blocks/Code';
11
+ import Code from '../../components/blocks/Code';
12
12
  import { DataProvider } from '../../contexts/DataContext';
13
13
  import { JsonDataProvider } from '@qwickapps/schema';
14
14
  import { ThemeProvider, PaletteProvider } from '../../contexts';
@@ -6,7 +6,7 @@
6
6
 
7
7
  import React from 'react';
8
8
  import { render, waitFor, screen } from '@testing-library/react';
9
- import Content from '../blocks/Content';
9
+ import Content from '../../components/blocks/Content';
10
10
  import { DataProvider } from '../../contexts/DataContext';
11
11
  import { JsonDataProvider } from '@qwickapps/schema';
12
12
 
@@ -8,7 +8,7 @@
8
8
  import React from 'react';
9
9
  import { render, screen } from '@testing-library/react';
10
10
  import '@testing-library/jest-dom';
11
- import Content from '../blocks/Content';
11
+ import Content from '../../components/blocks/Content';
12
12
  import { DataProvider } from '../../contexts/DataContext';
13
13
  import { JsonDataProvider } from '@qwickapps/schema';
14
14
  import { ThemeProvider, PaletteProvider } from '../../contexts';
@@ -8,9 +8,9 @@
8
8
  import React from 'react';
9
9
  import { render, screen, fireEvent } from '@testing-library/react';
10
10
  import '@testing-library/jest-dom';
11
- import CoverImageHeader from '../blocks/CoverImageHeader';
11
+ import CoverImageHeader from '../../components/blocks/CoverImageHeader';
12
12
  import { JsonDataProvider } from '@qwickapps/schema';
13
- import { QwickApp } from '../QwickApp';
13
+ import { QwickApp } from '../../components/QwickApp';
14
14
 
15
15
  // Test data for data binding (following nested structure pattern)
16
16
  const sampleCmsData = {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { render, screen, fireEvent } from '@testing-library/react';
3
- import { ErrorBoundary, withErrorBoundary } from '../ErrorBoundary';
3
+ import { ErrorBoundary, withErrorBoundary } from '../../components/ErrorBoundary';
4
4
 
5
5
  // Test component that throws an error
6
6
  const ThrowError = ({ shouldThrow }: { shouldThrow: boolean }) => {
@@ -6,8 +6,8 @@
6
6
 
7
7
  import React from 'react';
8
8
  import { render, waitFor, screen } from '@testing-library/react';
9
- import FeatureCard from '../blocks/FeatureCard';
10
- import { DataProvider } from '../../contexts/DataContext';
9
+ import FeatureCard from '../../blocks/FeatureCard';
10
+ import { DataProvider } from '../../../contexts/DataContext';
11
11
  import { JsonDataProvider } from '@qwickapps/schema';
12
12
 
13
13
  describe.skip('FeatureCard Integration (Traditional + Data Binding)', () => {
@@ -6,8 +6,8 @@
6
6
 
7
7
  import React from 'react';
8
8
  import { render, waitFor, screen } from '@testing-library/react';
9
- import FeatureGrid from '../blocks/FeatureGrid';
10
- import { DataProvider } from '../../contexts/DataContext';
9
+ import FeatureGrid from '../../blocks/FeatureGrid';
10
+ import { DataProvider } from '../../../contexts/DataContext';
11
11
  import { JsonDataProvider } from '@qwickapps/schema';
12
12
 
13
13
  describe.skip('FeatureGrid Integration (Traditional + Data Binding)', () => {
@@ -8,8 +8,8 @@
8
8
  import React from 'react';
9
9
  import { render, screen } from '@testing-library/react';
10
10
  import '@testing-library/jest-dom';
11
- import FeatureGrid from '../blocks/FeatureGrid';
12
- import type { FeatureItem } from '../blocks/FeatureGrid';
11
+ import FeatureGrid from '../../components/blocks/FeatureGrid';
12
+ import type { FeatureItem } from '../../components/blocks/FeatureGrid';
13
13
  import { DataProvider } from '../../contexts/DataContext';
14
14
  import { JsonDataProvider } from '@qwickapps/schema';
15
15
  import { ThemeProvider, PaletteProvider } from '../../contexts';
@@ -8,11 +8,11 @@
8
8
  import React from 'react';
9
9
  import { render, screen, fireEvent } from '@testing-library/react';
10
10
  import '@testing-library/jest-dom';
11
- import Footer from '../blocks/Footer';
12
- import type { FooterSection, FooterItem } from '../blocks/Footer';
13
- import { DataProvider } from '../../contexts/DataContext';
11
+ import Footer from '../../blocks/Footer';
12
+ import type { FooterSection, FooterItem } from '../../blocks/Footer';
13
+ import { DataProvider } from '../../../contexts/DataContext';
14
14
  import { JsonDataProvider } from '@qwickapps/schema';
15
- import { ThemeProvider, PaletteProvider } from '../../contexts';
15
+ import { ThemeProvider, PaletteProvider } from '../../../contexts';
16
16
 
17
17
  // Test data for data binding
18
18
  const sampleCmsData = {
@@ -8,7 +8,7 @@
8
8
  import React from 'react';
9
9
  import { render, screen, fireEvent, waitFor } from '@testing-library/react';
10
10
  import '@testing-library/jest-dom';
11
- import FormBlock from '../forms/FormBlock';
11
+ import FormBlock from '../../components/forms/FormBlock';
12
12
  import { DataProvider } from '../../contexts/DataContext';
13
13
  import { JsonDataProvider } from '@qwickapps/schema';
14
14
  import { ThemeProvider, PaletteProvider } from '../../contexts';
@@ -6,8 +6,8 @@
6
6
 
7
7
  import React from 'react';
8
8
  import { render, waitFor, screen } from '@testing-library/react';
9
- import HeroBlock from '../blocks/HeroBlock';
10
- import { DataProvider } from '../../contexts/DataContext';
9
+ import HeroBlock from '../../blocks/HeroBlock';
10
+ import { DataProvider } from '../../../contexts/DataContext';
11
11
  import { JsonDataProvider } from '@qwickapps/schema';
12
12
 
13
13
  describe.skip('HeroBlock Integration (Traditional + Data Binding)', () => {