@qwickapps/react-framework 1.3.5 → 1.4.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 (320) hide show
  1. package/README.md +1681 -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
@@ -1,16 +1,19 @@
1
1
  /**
2
- * SwitchInputField - Switch toggle component with data binding support
2
+ * SwitchInputField - Switch toggle component with serialization support
3
3
  *
4
- * Provides a standardized switch field with:
4
+ * Features:
5
+ * - Complete switch toggle functionality
6
+ * - Form validation and error handling
7
+ * - Data binding support for dynamic content
8
+ * - Full serialization support via ModelView
5
9
  * - Consistent Material-UI styling
6
- * - Data binding capabilities
7
- * - Label and helper text support
8
- * - Focus and error handling
9
10
  *
10
11
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
11
12
  */
13
+ import React, { ReactElement } from 'react';
12
14
  import type { WithDataBinding, ModelProps } from '@qwickapps/schema';
13
15
  import SwitchInputFieldModel from '../../schemas/SwitchInputFieldSchema';
16
+ import { ModelView } from '../base/ModelView';
14
17
  type SwitchInputFieldViewProps = ModelProps<SwitchInputFieldModel> & {
15
18
  /** Change handler */
16
19
  onChange?: (checked: boolean) => void;
@@ -19,10 +22,13 @@ type SwitchInputFieldViewProps = ModelProps<SwitchInputFieldModel> & {
19
22
  };
20
23
  export interface SwitchInputFieldProps extends SwitchInputFieldViewProps, WithDataBinding {
21
24
  }
22
- /**
23
- * SwitchInputField component with data binding support
24
- * Supports both traditional props and dataSource-driven rendering
25
- */
26
- declare function SwitchInputField(props: SwitchInputFieldProps): import("react/jsx-runtime").JSX.Element | null;
25
+ export declare class SwitchInputField extends ModelView<SwitchInputFieldProps, SwitchInputFieldModel> {
26
+ static readonly tagName = "SwitchInputField";
27
+ static readonly version = "1.0.0";
28
+ static fromJson(jsonData: any): ReactElement;
29
+ protected getComponentSpecificProps(): any;
30
+ protected renderView(): React.ReactElement;
31
+ protected renderWithDataBinding(): React.ReactElement;
32
+ }
27
33
  export default SwitchInputField;
28
34
  //# sourceMappingURL=SwitchInputField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SwitchInputField.d.ts","sourceRoot":"","sources":["../../../src/components/input/SwitchInputField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AAEzE,KAAK,yBAAyB,GAAG,UAAU,CAAC,qBAAqB,CAAC,GAAG;IACnE,qBAAqB;IACrB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,qBAAsB,SAAQ,yBAAyB,EAAE,eAAe;CAAG;AA2D5F;;;GAGG;AACH,iBAAS,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,kDA+DrD;AAKD,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"SwitchInputField.d.ts","sourceRoot":"","sources":["../../../src/components/input/SwitchInputField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAS5C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,KAAK,yBAAyB,GAAG,UAAU,CAAC,qBAAqB,CAAC,GAAG;IACnE,qBAAqB;IACrB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,qBAAsB,SAAQ,yBAAyB,EAAE,eAAe;CAAG;AA4D5F,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAE3F,MAAM,CAAC,QAAQ,CAAC,OAAO,sBAAsB;IAC7C,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAGlC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,YAAY;IAK5C,SAAS,CAAC,yBAAyB,IAAI,GAAG;IAe1C,SAAS,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY;IAM1C,SAAS,CAAC,qBAAqB,IAAI,KAAK,CAAC,YAAY;CAGtD;AAkED,eAAe,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../src/components/input/TextField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA6B,cAAc,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAgB,aAAa,EAAsB,MAAM,0BAA0B,CAAC;AAE3F,MAAM,WAAW,cAAe,SAAQ,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC;CAE3G;AAED,eAAO,MAAM,SAAS,oGAuBpB,CAAC;AAIH,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../src/components/input/TextField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA6B,cAAc,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAgB,aAAa,EAAsB,MAAM,0BAA0B,CAAC;AAE3F,MAAM,WAAW,cAAe,SAAQ,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC;CAE3G;AAED,eAAO,MAAM,SAAS,oGA+DpB,CAAC;AAIH,eAAe,SAAS,CAAC"}
@@ -1,18 +1,20 @@
1
1
  /**
2
- * TextInputField - Reusable text input component with consistent styling
2
+ * TextInputField - Reusable text input component with serialization support
3
3
  *
4
- * Provides a standardized text field with:
4
+ * Features:
5
+ * - Complete text field functionality (single/multiline, input types)
6
+ * - Form validation and error handling
7
+ * - Data binding support for dynamic content
8
+ * - Full serialization support via ModelView
5
9
  * - Consistent Material-UI styling
6
- * - Data binding support
7
- * - Focus handling
8
- * - Validation and error states
9
- * - Support for multiline/textarea mode
10
10
  *
11
11
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
12
12
  */
13
+ import React, { ReactElement } from 'react';
13
14
  import { TextFieldProps } from '@mui/material';
14
15
  import type { WithDataBinding, ModelProps } from '@qwickapps/schema';
15
16
  import TextInputFieldModel from '../../schemas/TextInputFieldSchema';
17
+ import { ModelView } from '../base/ModelView';
16
18
  type TextInputFieldViewProps = ModelProps<TextInputFieldModel> & {
17
19
  /** Change handler */
18
20
  onChange?: (value: string) => void;
@@ -23,10 +25,13 @@ type TextInputFieldViewProps = ModelProps<TextInputFieldModel> & {
23
25
  };
24
26
  export interface TextInputFieldProps extends TextInputFieldViewProps, WithDataBinding {
25
27
  }
26
- /**
27
- * TextInputField component with data binding support
28
- * Supports both traditional props and dataSource-driven rendering
29
- */
30
- declare function TextInputField(props: TextInputFieldProps): import("react/jsx-runtime").JSX.Element | null;
28
+ export declare class TextInputField extends ModelView<TextInputFieldProps, TextInputFieldModel> {
29
+ static readonly tagName = "TextInputField";
30
+ static readonly version = "1.0.0";
31
+ static fromJson(jsonData: any): ReactElement;
32
+ protected getComponentSpecificProps(): any;
33
+ protected renderView(): React.ReactElement;
34
+ protected renderWithDataBinding(): React.ReactElement;
35
+ }
31
36
  export default TextInputField;
32
37
  //# sourceMappingURL=TextInputField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextInputField.d.ts","sourceRoot":"","sources":["../../../src/components/input/TextInputField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAa,cAAc,EAAqB,MAAM,eAAe,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,mBAAmB,MAAM,oCAAoC,CAAC;AAErE,KAAK,uBAAuB,GAAG,UAAU,CAAC,mBAAmB,CAAC,GAAG;IAC/D,qBAAqB;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iCAAiC;IACjC,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;CAClM,CAAC;AAEF,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB,EAAE,eAAe;CAAG;AAiDxF;;;GAGG;AACH,iBAAS,cAAc,CAAC,KAAK,EAAE,mBAAmB,kDAwDjD;AAKD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"TextInputField.d.ts","sourceRoot":"","sources":["../../../src/components/input/TextInputField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAa,cAAc,EAAqB,MAAM,eAAe,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,mBAAmB,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,KAAK,uBAAuB,GAAG,UAAU,CAAC,mBAAmB,CAAC,GAAG;IAC/D,qBAAqB;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iCAAiC;IACjC,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;CAClM,CAAC;AAEF,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB,EAAE,eAAe;CAAG;AAkDxF,qBAAa,cAAe,SAAQ,SAAS,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAErF,MAAM,CAAC,QAAQ,CAAC,OAAO,oBAAoB;IAC3C,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAGlC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,YAAY;IAK5C,SAAS,CAAC,yBAAyB,IAAI,GAAG;IAmB1C,SAAS,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY;IAM1C,SAAS,CAAC,qBAAqB,IAAI,KAAK,CAAC,YAAY;CAGtD;AA2DD,eAAe,cAAc,CAAC"}
@@ -1,16 +1,33 @@
1
1
  /**
2
- * GridCell - Simple cell wrapper for GridLayout
2
+ * GridCell - Simple cell wrapper for GridLayout with serialization support
3
3
  *
4
4
  * A lightweight wrapper that applies grid props to any content
5
5
  * Uses the base props pattern for consistency
6
+ * Full serialization support via ModelView including nested components
7
+ *
8
+ * Usage:
9
+ * - Traditional: <GridCell span={6} background="primary">...</GridCell>
10
+ * - Data-driven: <GridCell dataSource="layout.cell" />
11
+ * - Serializable: ComponentTransformer.serialize(<GridCell ... />)
6
12
  *
7
13
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
14
  */
9
- import React from 'react';
10
- import { WithBaseProps } from '../../hooks/useBaseProps';
11
- export interface GridCellProps extends WithBaseProps {
12
- children: React.ReactNode;
15
+ import React, { ReactElement, ReactNode } from 'react';
16
+ import type { WithDataBinding, ModelProps } from '@qwickapps/schema';
17
+ import GridCellModel from '../../schemas/GridCellSchema';
18
+ import { ModelView } from '../base/ModelView';
19
+ type GridCellViewProps = ModelProps<GridCellModel>;
20
+ export interface GridCellProps extends GridCellViewProps, WithDataBinding {
21
+ }
22
+ export declare class GridCell extends ModelView<GridCellProps, GridCellModel> {
23
+ static readonly tagName = "GridCell";
24
+ static readonly version = "1.0.0";
25
+ static fromJson(jsonData: any): ReactElement;
26
+ protected getComponentSpecificProps(): any;
27
+ protected hasNestedComponents(children: ReactNode): boolean;
28
+ protected serializeChildren(children: ReactNode): any;
29
+ protected renderView(): React.ReactElement;
30
+ protected renderWithDataBinding(): React.ReactElement;
13
31
  }
14
- export declare const GridCell: React.FC<GridCellProps>;
15
32
  export default GridCell;
16
33
  //# sourceMappingURL=GridCell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridCell.d.ts","sourceRoot":"","sources":["../../../src/components/layout/GridCell.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAgB,aAAa,EAAsB,MAAM,0BAA0B,CAAC;AAE3F,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAwB5C,CAAC;AAIF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"GridCell.d.ts","sourceRoot":"","sources":["../../../src/components/layout/GridCell.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,KAAK,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAEnD,MAAM,WAAW,aAAc,SAAQ,iBAAiB,EAAE,eAAe;CAAG;AA8B5E,qBAAa,QAAS,SAAQ,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAEnE,MAAM,CAAC,QAAQ,CAAC,OAAO,cAAc;IACrC,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAGlC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,YAAY;IAK5C,SAAS,CAAC,yBAAyB,IAAI,GAAG;IAoB1C,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO;IAK3D,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,GAAG,GAAG;IAarD,SAAS,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY;IAM1C,SAAS,CAAC,qBAAqB,IAAI,KAAK,CAAC,YAAY;CAGtD;AAwCD,eAAe,QAAQ,CAAC"}
@@ -1,38 +1,39 @@
1
1
  /**
2
- * GridLayout - Flexible grid layout component
2
+ * GridLayout - Flexible grid layout component with serialization support
3
3
  *
4
4
  * Works with any component that has grid props (span, xs, sm, md, lg, xl)
5
5
  * Automatically wraps components in Grid when grid props are detected
6
+ * Full serialization support via ModelView including nested components
7
+ *
8
+ * Usage:
9
+ * - Traditional: <GridLayout columns={3} spacing="medium">...</GridLayout>
10
+ * - Data-driven: <GridLayout dataSource="layouts.main" />
11
+ * - Serializable: ComponentTransformer.serialize(<GridLayout ... />)
6
12
  *
7
13
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
14
  */
9
- import React from 'react';
15
+ import React, { ReactElement, ReactNode } from 'react';
10
16
  import { SxProps, Theme } from '@mui/material';
11
- import { SpacingValue } from '../../utils/spacing';
12
- import { DimensionValue } from '../../utils/dimensions';
13
- export interface GridLayoutProps {
14
- /** Layout children - any components with grid props work */
15
- children: React.ReactNode;
16
- /** Number of equal-width columns (auto-distribution) */
17
- columns?: 1 | 2 | 3 | 4 | 5 | 6;
18
- /** Spacing between columns */
19
- spacing?: SpacingValue;
20
- /** Equal height columns */
21
- equalHeight?: boolean;
22
- /** Layout dimensions */
23
- height?: DimensionValue;
24
- width?: DimensionValue;
25
- minHeight?: DimensionValue;
26
- minWidth?: DimensionValue;
27
- maxHeight?: DimensionValue;
28
- maxWidth?: DimensionValue;
29
- /** Additional CSS class */
30
- className?: string;
17
+ import type { WithDataBinding, ModelProps } from '@qwickapps/schema';
18
+ import GridLayoutModel from '../../schemas/GridLayoutSchema';
19
+ import { ModelView } from '../base/ModelView';
20
+ type GridLayoutViewProps = ModelProps<GridLayoutModel> & {
31
21
  /** Custom styles */
32
22
  sx?: SxProps<Theme>;
33
23
  /** Inline styles */
34
24
  style?: React.CSSProperties;
25
+ };
26
+ export interface GridLayoutProps extends GridLayoutViewProps, WithDataBinding {
27
+ }
28
+ export declare class GridLayout extends ModelView<GridLayoutProps, GridLayoutModel> {
29
+ static readonly tagName = "GridLayout";
30
+ static readonly version = "1.0.0";
31
+ static fromJson(jsonData: any): ReactElement;
32
+ protected getComponentSpecificProps(): any;
33
+ protected hasNestedComponents(children: ReactNode): boolean;
34
+ protected serializeChildren(children: ReactNode): any;
35
+ protected renderView(): React.ReactElement;
36
+ protected renderWithDataBinding(): React.ReactElement;
35
37
  }
36
- export declare const GridLayout: React.FC<GridLayoutProps>;
37
38
  export default GridLayout;
38
39
  //# sourceMappingURL=GridLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridLayout.d.ts","sourceRoot":"","sources":["../../../src/components/layout/GridLayout.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAQ,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,YAAY,EAAkB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAoB,MAAM,wBAAwB,CAAC;AAG1E,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,wDAAwD;IACxD,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wBAAwB;IACxB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA+HhD,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"GridLayout.d.ts","sourceRoot":"","sources":["../../../src/components/layout/GridLayout.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAQ,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKrE,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,KAAK,mBAAmB,GAAG,UAAU,CAAC,eAAe,CAAC,GAAG;IACvD,oBAAoB;IACpB,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,eAAgB,SAAQ,mBAAmB,EAAE,eAAe;CAAG;AAyIhF,qBAAa,UAAW,SAAQ,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAEzE,MAAM,CAAC,QAAQ,CAAC,OAAO,gBAAgB;IACvC,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAGlC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,YAAY;IAK5C,SAAS,CAAC,yBAAyB,IAAI,GAAG;IAkB1C,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO;IAK3D,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,GAAG,GAAG;IAarD,SAAS,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY;IAM1C,SAAS,CAAC,qBAAqB,IAAI,KAAK,CAAC,YAAY;CAGtD;AA2CD,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormPage.d.ts","sourceRoot":"","sources":["../../../src/components/pages/FormPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAEtC;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IAEtB;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAElD;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE9B;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAE9C;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA4B5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"FormPage.d.ts","sourceRoot":"","sources":["../../../src/components/pages/FormPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAEtC;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IAEtB;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAElD;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE9B;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAE9C;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA2B5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1,55 +1,35 @@
1
1
  /**
2
- * Page Component - Main content wrapper for application pages
3
- *
4
- * The Page component is what developers primarily focus on when building applications.
5
- * It provides:
6
- * - Automatic page title management
7
- * - Route-based configuration
8
- * - Contextual menu items that appear in navigation
9
- * - Proper content spacing and layout
10
- * - SEO and accessibility features
11
- *
12
- * Page components automatically integrate with the AppScaffold to provide
13
- * contextual actions and menu items specific to the current page.
2
+ * Page Architecture - Clean separation with functional controller
14
3
  *
15
4
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
16
5
  */
17
6
  import React from 'react';
7
+ import { WithBaseProps } from '../../hooks/useBaseProps';
8
+ import { PageTemplateSchema } from '../../schemas/PageTemplateSchema';
9
+ import { PrintConfigSchema } from '../../schemas/PrintConfigSchema';
18
10
  import './Page.css';
19
11
  export interface PageContextValue {
20
12
  /** Current page route/path */
21
13
  route?: string;
14
+ /** Whether the page is currently in print mode */
15
+ isPrintMode: boolean;
16
+ /** Current print configuration */
17
+ printConfig: PrintConfigSchema;
18
+ /** Trigger print mode and dialog */
19
+ triggerPrint: (config?: Partial<PrintConfigSchema>) => void;
20
+ /** Set page loading state */
21
+ setLoading: (loading: boolean) => void;
22
+ /** Set page error state */
23
+ setError: (error: string | null) => void;
24
+ /** Current page loading state */
25
+ isLoading: boolean;
26
+ /** Current page error state */
27
+ error: string | null;
22
28
  }
23
29
  export declare const usePageContext: () => PageContextValue;
24
- export type MessageType = 'loading' | 'error' | 'warning' | 'success' | 'info';
25
- export type LoadingType = 'spinner' | 'bar-top' | 'bar-bottom' | 'dots' | 'custom';
26
- export interface MessageState {
27
- /** Type of message to display */
28
- type: MessageType;
29
- /** Message content (string or custom JSX) */
30
- content?: string | React.ReactNode;
31
- /** Custom component to render instead of default */
32
- customComponent?: React.ReactNode;
33
- }
34
- export interface LoadingState {
35
- /** Type of loading indicator */
36
- type?: LoadingType;
37
- /** Loading message */
38
- message?: string;
39
- /** Custom loading component */
40
- customComponent?: React.ReactNode;
41
- }
42
- export interface PageProps {
43
- /** Page content */
44
- children: React.ReactNode;
30
+ export interface PageProps extends WithBaseProps {
45
31
  /** Current route/path for this page */
46
32
  route?: string;
47
- /** Optional header component */
48
- header?: React.ReactNode;
49
- /** Optional footer component */
50
- footer?: React.ReactNode;
51
- /** Additional CSS class */
52
- className?: string;
53
33
  /** Page layout variant */
54
34
  variant?: 'default' | 'centered' | 'narrow' | 'wide' | 'fullwidth';
55
35
  /** Padding around page content */
@@ -58,67 +38,49 @@ export interface PageProps {
58
38
  background?: 'default' | 'surface' | 'alternate';
59
39
  /** Maximum width for content */
60
40
  maxWidth?: 'small' | 'medium' | 'large' | 'extra-large' | 'none';
61
- /** Loading state configuration */
62
- loading?: boolean | LoadingState;
63
- /** Message state for displaying info/warning/error/success messages */
64
- message?: MessageState;
41
+ /** Print configuration for this page */
42
+ printConfig?: Partial<PrintConfigSchema>;
43
+ /** PageTemplate model instance */
44
+ template?: PageTemplateSchema;
45
+ /** Page title */
46
+ title?: string;
47
+ /** Page description for SEO */
48
+ description?: string;
49
+ /** Page name/heading */
50
+ name?: string;
51
+ /** Page slug for URL */
52
+ slug?: string;
65
53
  }
66
- declare const Page: React.FC<PageProps>;
67
- export declare const usePage: () => {
68
- setTitle: (newTitle: string) => void;
69
- /** Current page route/path */
70
- route?: string;
71
- };
72
54
  /**
73
- * Base Page Class Component - Extendable page component for inheritance pattern
74
- *
75
- * Usage:
76
- * class MyPage extends BasePage {
77
- * getPageProps() {
78
- * return {
79
- * route: '/my-page',
80
- * variant: 'narrow',
81
- * padding: 'large',
82
- * // ... other page props
83
- * };
84
- * }
85
- *
86
- * renderContent() {
87
- * return (
88
- * <div>My page content</div>
89
- * );
90
- * }
91
- * }
55
+ * Page - Functional component that controls print/normal view routing
92
56
  */
93
- export declare abstract class BasePage<P = {}, S = {}> extends React.Component<P, S> {
57
+ interface PageWithViewsProps extends PageProps {
58
+ /** Function to render normal view */
59
+ renderView: () => React.ReactNode;
60
+ /** Function to render print view */
61
+ renderPrintView: () => React.ReactNode;
62
+ }
63
+ declare const Page: React.FC<PageWithViewsProps>;
64
+ /**
65
+ * PageComponent - Base class for pages that provide view functions
66
+ */
67
+ export declare abstract class PageComponent<P = {}, S = {}> extends React.Component<P, S> {
94
68
  /**
95
69
  * Override this method to provide page configuration
96
- * This will be passed to the Page component wrapper
97
70
  */
98
- abstract getPageProps(): Partial<PageProps>;
71
+ abstract getPageProps(): PageProps;
99
72
  /**
100
- * Override this method to provide the page content
101
- * This replaces the render() method in your page components
73
+ * Override this method to provide the normal view content
102
74
  */
103
- abstract renderContent(): React.ReactNode;
75
+ abstract renderView(): React.ReactNode;
104
76
  /**
105
- * Override this method to handle page mounting logic
106
- * Called after the page is mounted and context is available
77
+ * Override this method to provide the print view content
107
78
  */
108
- onPageMount?(): void;
79
+ abstract renderPrintView(): React.ReactNode;
109
80
  /**
110
- * Override this method to handle page unmounting logic
111
- */
112
- onPageUnmount?(): void;
113
- /**
114
- * Internal render method - wraps content in Page component
81
+ * Render method - uses functional Page as controller
115
82
  */
116
83
  render(): import("react/jsx-runtime").JSX.Element;
117
- /**
118
- * Component lifecycle methods
119
- */
120
- componentDidMount(): void;
121
- componentWillUnmount(): void;
122
84
  }
123
85
  export default Page;
124
86
  //# sourceMappingURL=Page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/components/pages/Page.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,YAAY,CAAC;AAGpB,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,eAAO,MAAM,cAAc,QAAO,gBAMjC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnF,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACnC,oDAAoD;IACpD,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,mBAAmB;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,gCAAgC;IAChC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACnE,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChD,yBAAyB;IACzB,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IACjD,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;IACjE,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IACjC,uEAAuE;IACvE,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA+K7B,CAAC;AAGF,eAAO,MAAM,OAAO;yBAMiB,MAAM;IAtPzC,8BAA8B;YACtB,MAAM;CAyPf,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,8BAAsB,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAE,SAAQ,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E;;;OAGG;IACH,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAE3C;;;OAGG;IACH,QAAQ,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS;IAEzC;;;OAGG;IACH,WAAW,CAAC,IAAI,IAAI;IAEpB;;OAEG;IACH,aAAa,CAAC,IAAI,IAAI;IAEtB;;OAEG;IACH,MAAM;IAUN;;OAEG;IACH,iBAAiB;IAIjB,oBAAoB;CAGrB;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/components/pages/Page.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAgG,MAAM,OAAO,CAAC;AAErH,OAAO,EAAgB,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;IACrB,kCAAkC;IAClC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,oCAAoC;IACpC,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC5D,6BAA6B;IAC7B,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,2BAA2B;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,iCAAiC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAKD,eAAO,MAAM,cAAc,QAAO,gBAMjC,CAAC;AAEF,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACnE,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChD,yBAAyB;IACzB,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IACjD,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;IACjE,wCAAwC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAuQD;;GAEG;AACH,UAAU,kBAAmB,SAAQ,SAAS;IAC5C,qCAAqC;IACrC,UAAU,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAClC,oCAAoC;IACpC,eAAe,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;CACxC;AAED,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAQtC,CAAC;AAWF;;GAEG;AACH,8BAAsB,aAAa,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAE,SAAQ,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/E;;OAEG;IACH,QAAQ,CAAC,YAAY,IAAI,SAAS;IAElC;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS;IAEtC;;OAEG;IACH,QAAQ,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS;IAE3C;;OAEG;IACH,MAAM;CAWP;AAED,eAAe,IAAI,CAAC"}
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
5
5
  */
6
- export { BasePage } from './Page';
6
+ export { PageComponent, usePageContext } from './Page';
7
7
  export { default as FormPage } from './FormPage';
8
8
  export { default as Page } from './Page';
9
9
  export type { FormPageProps } from './FormPage';
10
- export type { PageProps } from './Page';
10
+ export type { PageProps, PageContextValue } from './Page';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/pages/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEzC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/pages/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEzC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * QwickApps AppConfig Implementation
3
+ *
4
+ * Immutable configuration object with computed properties for Vite and PWA.
5
+ *
6
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
7
+ */
8
+ import type { UserConfig as ViteUserConfig } from 'vite';
9
+ import type { AppConfig as IAppConfig, AppIdentity, BuildConfig, PWAConfig, UIConfig, CopyrightConfig } from './types';
10
+ /**
11
+ * Immutable application configuration
12
+ */
13
+ export declare class AppConfig implements IAppConfig {
14
+ readonly app: AppIdentity;
15
+ readonly build: BuildConfig;
16
+ readonly pwa: PWAConfig;
17
+ readonly ui: UIConfig;
18
+ readonly copyright: CopyrightConfig;
19
+ constructor(config: {
20
+ app: AppIdentity;
21
+ build: BuildConfig;
22
+ pwa: PWAConfig;
23
+ ui: UIConfig;
24
+ copyright: CopyrightConfig;
25
+ });
26
+ /**
27
+ * Generate complete Vite configuration
28
+ */
29
+ get viteConfig(): ViteUserConfig;
30
+ /**
31
+ * Generate PWA manifest
32
+ */
33
+ get pwaManifest(): Record<string, any>;
34
+ /**
35
+ * Convert to plain object (for serialization)
36
+ */
37
+ toJSON(): Record<string, any>;
38
+ /**
39
+ * Create a copy with overrides (returns new immutable instance)
40
+ */
41
+ with(overrides: Partial<{
42
+ app: Partial<AppIdentity>;
43
+ build: Partial<BuildConfig>;
44
+ pwa: Partial<PWAConfig>;
45
+ ui: Partial<UIConfig>;
46
+ copyright: Partial<CopyrightConfig>;
47
+ }>): AppConfig;
48
+ }
49
+ //# sourceMappingURL=AppConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppConfig.d.ts","sourceRoot":"","sources":["../../src/config/AppConfig.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,MAAM,CAAC;AACzD,OAAO,KAAK,EACV,SAAS,IAAI,UAAU,EACvB,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACR,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,SAAU,YAAW,UAAU;IAC1C,SAAgB,GAAG,EAAE,WAAW,CAAC;IACjC,SAAgB,KAAK,EAAE,WAAW,CAAC;IACnC,SAAgB,GAAG,EAAE,SAAS,CAAC;IAC/B,SAAgB,EAAE,EAAE,QAAQ,CAAC;IAC7B,SAAgB,SAAS,EAAE,eAAe,CAAC;gBAE/B,MAAM,EAAE;QAClB,GAAG,EAAE,WAAW,CAAC;QACjB,KAAK,EAAE,WAAW,CAAC;QACnB,GAAG,EAAE,SAAS,CAAC;QACf,EAAE,EAAE,QAAQ,CAAC;QACb,SAAS,EAAE,eAAe,CAAC;KAC5B;IAYD;;OAEG;IACH,IAAI,UAAU,IAAI,cAAc,CAqB/B;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAwBrC;IAED;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAU7B;;OAEG;IACH,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;QACtB,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5B,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACxB,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtB,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;KACrC,CAAC,GAAG,SAAS;CASf"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * QwickApps AppConfigBuilder
3
+ *
4
+ * Builder pattern for creating validated, immutable AppConfig instances.
5
+ * Supports fluent API and deferred validation.
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ import { AppConfig } from './AppConfig';
10
+ import type { AppConfigOptions } from './types';
11
+ /**
12
+ * Builder for creating AppConfig instances with validation
13
+ */
14
+ export declare class AppConfigBuilder {
15
+ private config;
16
+ private options;
17
+ private constructor();
18
+ /**
19
+ * Create a new AppConfigBuilder instance
20
+ */
21
+ static create(): AppConfigBuilder;
22
+ /**
23
+ * Load configuration from JSON file (Node.js only)
24
+ */
25
+ withConfig(configPath: string): AppConfigBuilder;
26
+ /**
27
+ * Set builder options
28
+ */
29
+ withOptions(options: AppConfigOptions): AppConfigBuilder;
30
+ withName(name: string): AppConfigBuilder;
31
+ withId(id: string): AppConfigBuilder;
32
+ withShortName(shortName: string): AppConfigBuilder;
33
+ withDescription(description: string): AppConfigBuilder;
34
+ withVersion(version: string): AppConfigBuilder;
35
+ withLogo(logo: string): AppConfigBuilder;
36
+ withAuthor(author: string): AppConfigBuilder;
37
+ withHomepage(homepage: string): AppConfigBuilder;
38
+ withPort(port: number): AppConfigBuilder;
39
+ withPreviewPort(previewPort: number): AppConfigBuilder;
40
+ withOutputDir(outputDir: string): AppConfigBuilder;
41
+ withPublicPath(publicPath: string): AppConfigBuilder;
42
+ withBase(base: string): AppConfigBuilder;
43
+ withThemeColor(themeColor: string): AppConfigBuilder;
44
+ withBackgroundColor(backgroundColor: string): AppConfigBuilder;
45
+ withStartUrl(startUrl: string): AppConfigBuilder;
46
+ withScope(scope: string): AppConfigBuilder;
47
+ withDisplay(display: 'standalone' | 'fullscreen' | 'minimal-ui' | 'browser'): AppConfigBuilder;
48
+ withOrientation(orientation: 'portrait' | 'landscape' | 'any'): AppConfigBuilder;
49
+ withDefaultTheme(defaultTheme: 'light' | 'dark' | 'system'): AppConfigBuilder;
50
+ withDefaultPalette(defaultPalette: string): AppConfigBuilder;
51
+ withScaffolding(enableScaffolding: boolean): AppConfigBuilder;
52
+ withThemeSwitcher(showThemeSwitcher: boolean): AppConfigBuilder;
53
+ withPaletteSwitcher(showPaletteSwitcher: boolean): AppConfigBuilder;
54
+ withCopyright(year: 'auto' | number, author: string, text?: string): AppConfigBuilder;
55
+ withCopyrightYear(year: 'auto' | number): AppConfigBuilder;
56
+ withCopyrightAuthor(author: string): AppConfigBuilder;
57
+ withCopyrightText(text: string): AppConfigBuilder;
58
+ /**
59
+ * Build and validate the configuration
60
+ */
61
+ build(): AppConfig;
62
+ /**
63
+ * Validate the current configuration
64
+ */
65
+ private validate;
66
+ /**
67
+ * Apply default values to configuration
68
+ */
69
+ private applyDefaults;
70
+ /**
71
+ * Simple color validation
72
+ */
73
+ private isValidColor;
74
+ }
75
+ //# sourceMappingURL=AppConfigBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppConfigBuilder.d.ts","sourceRoot":"","sources":["../../src/config/AppConfigBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAMV,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CA4CZ;IAEF,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,gBAAgB;IAIjC;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IA0BhD;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB;IAMxD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAKxC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB;IAKpC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAKlD,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB;IAKtD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAK9C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAKxC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB;IAK5C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB;IAMhD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAKxC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB;IAKtD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAKlD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAKpD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAMxC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAKpD,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,gBAAgB;IAK9D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB;IAKhD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB;IAK1C,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,gBAAgB;IAK9F,eAAe,CAAC,WAAW,EAAE,UAAU,GAAG,WAAW,GAAG,KAAK,GAAG,gBAAgB;IAMhF,gBAAgB,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,gBAAgB;IAK7E,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,gBAAgB;IAK5D,eAAe,CAAC,iBAAiB,EAAE,OAAO,GAAG,gBAAgB;IAK7D,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,GAAG,gBAAgB;IAK/D,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,GAAG,gBAAgB;IAMnE,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAOrF,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB;IAK1D,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB;IAKrD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAKjD;;OAEG;IACH,KAAK,IAAI,SAAS;IAkBlB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAoDhB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoDrB;;OAEG;IACH,OAAO,CAAC,YAAY;CAQrB"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * QwickApps Configuration Module
3
+ *
4
+ * Exports configuration types and utilities for QwickApp applications.
5
+ *
6
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
7
+ */
8
+ export { AppConfig } from './AppConfig';
9
+ export { AppConfigBuilder } from './AppConfigBuilder';
10
+ export type { AppConfig as IAppConfig, AppIdentity, BuildConfig, PWAConfig, UIConfig, CopyrightConfig, AppConfigOptions, ValidationResult, } from './types';
11
+ import { AppConfigBuilder } from './AppConfigBuilder';
12
+ export declare const createAppConfig: typeof AppConfigBuilder.create;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EACV,SAAS,IAAI,UAAU,EACvB,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,eAAO,MAAM,eAAe,gCAA0B,CAAC"}