@qwickapps/react-framework 1.3.4 → 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 (325) hide show
  1. package/README.md +1688 -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/Content.d.ts.map +1 -1
  28. package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -1
  29. package/dist/components/blocks/FeatureCard.d.ts.map +1 -1
  30. package/dist/components/blocks/FeatureGrid.d.ts.map +1 -1
  31. package/dist/components/blocks/Footer.d.ts.map +1 -1
  32. package/dist/components/blocks/HeroBlock.d.ts +27 -13
  33. package/dist/components/blocks/HeroBlock.d.ts.map +1 -1
  34. package/dist/components/blocks/Image.d.ts +41 -0
  35. package/dist/components/blocks/Image.d.ts.map +1 -0
  36. package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -1
  37. package/dist/components/blocks/ProductCard.d.ts.map +1 -1
  38. package/dist/components/blocks/Section.d.ts +16 -2
  39. package/dist/components/blocks/Section.d.ts.map +1 -1
  40. package/dist/components/blocks/Text.d.ts +41 -0
  41. package/dist/components/blocks/Text.d.ts.map +1 -0
  42. package/dist/components/blocks/index.d.ts +4 -0
  43. package/dist/components/blocks/index.d.ts.map +1 -1
  44. package/dist/components/buttons/Button.d.ts +23 -7
  45. package/dist/components/buttons/Button.d.ts.map +1 -1
  46. package/dist/components/forms/FormBlock.d.ts +19 -13
  47. package/dist/components/forms/FormBlock.d.ts.map +1 -1
  48. package/dist/components/index.d.ts +4 -0
  49. package/dist/components/index.d.ts.map +1 -1
  50. package/dist/components/input/ChoiceInputField.d.ts +17 -11
  51. package/dist/components/input/ChoiceInputField.d.ts.map +1 -1
  52. package/dist/components/input/HtmlInputField.d.ts +17 -11
  53. package/dist/components/input/HtmlInputField.d.ts.map +1 -1
  54. package/dist/components/input/SelectInputField.d.ts +16 -10
  55. package/dist/components/input/SelectInputField.d.ts.map +1 -1
  56. package/dist/components/input/SwitchInputField.d.ts +16 -10
  57. package/dist/components/input/SwitchInputField.d.ts.map +1 -1
  58. package/dist/components/input/TextField.d.ts.map +1 -1
  59. package/dist/components/input/TextInputField.d.ts +16 -11
  60. package/dist/components/input/TextInputField.d.ts.map +1 -1
  61. package/dist/components/layout/GridCell.d.ts +23 -6
  62. package/dist/components/layout/GridCell.d.ts.map +1 -1
  63. package/dist/components/layout/GridLayout.d.ts +24 -23
  64. package/dist/components/layout/GridLayout.d.ts.map +1 -1
  65. package/dist/components/pages/FormPage.d.ts.map +1 -1
  66. package/dist/components/pages/Page.d.ts +49 -87
  67. package/dist/components/pages/Page.d.ts.map +1 -1
  68. package/dist/components/pages/index.d.ts +2 -2
  69. package/dist/components/pages/index.d.ts.map +1 -1
  70. package/dist/config/AppConfig.d.ts +49 -0
  71. package/dist/config/AppConfig.d.ts.map +1 -0
  72. package/dist/config/AppConfigBuilder.d.ts +75 -0
  73. package/dist/config/AppConfigBuilder.d.ts.map +1 -0
  74. package/dist/config/index.d.ts +13 -0
  75. package/dist/config/index.d.ts.map +1 -0
  76. package/dist/config/types.d.ts +130 -0
  77. package/dist/config/types.d.ts.map +1 -0
  78. package/dist/config.d.ts +15 -0
  79. package/dist/config.d.ts.map +1 -0
  80. package/dist/config.esm.js +451 -0
  81. package/dist/config.js +455 -0
  82. package/dist/contexts/PrintModeContext.d.ts +27 -0
  83. package/dist/contexts/PrintModeContext.d.ts.map +1 -0
  84. package/dist/contexts/QwickAppContext.d.ts +2 -2
  85. package/dist/contexts/QwickAppContext.d.ts.map +1 -1
  86. package/dist/contexts/ThemeContext.d.ts.map +1 -1
  87. package/dist/contexts/index.d.ts +2 -0
  88. package/dist/contexts/index.d.ts.map +1 -1
  89. package/dist/hooks/index.d.ts +2 -0
  90. package/dist/hooks/index.d.ts.map +1 -1
  91. package/dist/hooks/usePrintMode.d.ts +39 -0
  92. package/dist/hooks/usePrintMode.d.ts.map +1 -0
  93. package/dist/index.css +1 -1
  94. package/dist/index.d.ts +1 -0
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.esm.css +1 -1
  97. package/dist/index.esm.js +20722 -16021
  98. package/dist/index.js +20725 -16010
  99. package/dist/schemas/CodeSchema.d.ts +2 -1
  100. package/dist/schemas/CodeSchema.d.ts.map +1 -1
  101. package/dist/schemas/CollapsibleLayoutSchema.d.ts +2 -1
  102. package/dist/schemas/CollapsibleLayoutSchema.d.ts.map +1 -1
  103. package/dist/schemas/ContentSchema.d.ts +2 -1
  104. package/dist/schemas/ContentSchema.d.ts.map +1 -1
  105. package/dist/schemas/GridCellSchema.d.ts +25 -0
  106. package/dist/schemas/GridCellSchema.d.ts.map +1 -0
  107. package/dist/schemas/GridLayoutSchema.d.ts +23 -0
  108. package/dist/schemas/GridLayoutSchema.d.ts.map +1 -0
  109. package/dist/schemas/HtmlSchema.d.ts +14 -0
  110. package/dist/schemas/HtmlSchema.d.ts.map +1 -0
  111. package/dist/schemas/ImageSchema.d.ts +32 -0
  112. package/dist/schemas/ImageSchema.d.ts.map +1 -0
  113. package/dist/schemas/LogoSchema.d.ts +35 -0
  114. package/dist/schemas/LogoSchema.d.ts.map +1 -0
  115. package/dist/schemas/MarkdownSchema.d.ts +14 -0
  116. package/dist/schemas/MarkdownSchema.d.ts.map +1 -0
  117. package/dist/schemas/PageTemplateSchema.d.ts +31 -0
  118. package/dist/schemas/PageTemplateSchema.d.ts.map +1 -0
  119. package/dist/schemas/PrintConfigSchema.d.ts +31 -0
  120. package/dist/schemas/PrintConfigSchema.d.ts.map +1 -0
  121. package/dist/schemas/SectionSchema.d.ts +2 -1
  122. package/dist/schemas/SectionSchema.d.ts.map +1 -1
  123. package/dist/schemas/TextSchema.d.ts +37 -0
  124. package/dist/schemas/TextSchema.d.ts.map +1 -0
  125. package/dist/schemas/ViewModelSchema.d.ts +23 -0
  126. package/dist/schemas/ViewModelSchema.d.ts.map +1 -0
  127. package/dist/schemas/index.d.ts +15 -1
  128. package/dist/schemas/index.d.ts.map +1 -1
  129. package/dist/schemas/transformers/ComponentTransformer.d.ts +116 -0
  130. package/dist/schemas/transformers/ComponentTransformer.d.ts.map +1 -0
  131. package/dist/schemas/transformers/ReactNodeTransformer.d.ts +53 -0
  132. package/dist/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -0
  133. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts +66 -0
  134. package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts.map +1 -0
  135. package/dist/schemas/transformers/registry.d.ts +15 -0
  136. package/dist/schemas/transformers/registry.d.ts.map +1 -0
  137. package/dist/schemas/types/Serializable.d.ts +46 -0
  138. package/dist/schemas/types/Serializable.d.ts.map +1 -0
  139. package/dist/utils/htmlTransform.d.ts.map +1 -1
  140. package/dist/utils/reactUtils.d.ts +12 -3
  141. package/dist/utils/reactUtils.d.ts.map +1 -1
  142. package/package.json +17 -3
  143. package/src/{components/__tests__ → __tests__/components}/AccessibilityProvider.test.tsx +1 -1
  144. package/src/{components/__tests__ → __tests__/components}/Article.test.tsx +1 -1
  145. package/src/{components/__tests__ → __tests__/components}/Breadcrumbs.test.tsx +1 -1
  146. package/src/{components/__tests__ → __tests__/components}/Button.test.tsx +1 -1
  147. package/src/{components/__tests__ → __tests__/components}/CardListGrid.test.tsx +2 -2
  148. package/src/{components/__tests__ → __tests__/components}/ChoiceInputField.test.tsx +1 -1
  149. package/src/{components/__tests__ → __tests__/components}/Code.test.tsx +1 -1
  150. package/src/{components/__tests__ → __tests__/components}/Content.integration.test.tsx +1 -1
  151. package/src/{components/__tests__ → __tests__/components}/Content.test.tsx +1 -1
  152. package/src/{components/__tests__ → __tests__/components}/CoverImageHeader.test.tsx +2 -2
  153. package/src/{components/__tests__ → __tests__/components}/ErrorBoundary.test.tsx +1 -1
  154. package/src/{components/__tests__ → __tests__/components}/FeatureCard.integration.test.tsx +2 -2
  155. package/src/{components/__tests__ → __tests__/components}/FeatureGrid.integration.test.tsx +2 -2
  156. package/src/{components/__tests__ → __tests__/components}/FeatureGrid.test.tsx +2 -2
  157. package/src/{components/__tests__ → __tests__/components}/Footer.test.tsx +4 -4
  158. package/src/{components/__tests__ → __tests__/components}/FormBlock.test.tsx +1 -1
  159. package/src/{components/__tests__ → __tests__/components}/HeroBlock.integration.test.tsx +2 -2
  160. package/src/{components/__tests__ → __tests__/components}/HeroBlock.test.tsx +233 -7
  161. package/src/{components/__tests__ → __tests__/components}/Html.test.tsx +11 -2
  162. package/src/{components/__tests__ → __tests__/components}/HtmlInputField.test.tsx +3 -3
  163. package/src/__tests__/components/Logo.test.js +3 -3
  164. package/src/{components/__tests__ → __tests__/components}/Markdown.test.tsx +1 -1
  165. package/src/{components/__tests__ → __tests__/components}/PageBannerHeader.test.tsx +3 -3
  166. package/src/{components/__tests__ → __tests__/components}/PaletteSwitcher.test.tsx +3 -3
  167. package/src/{components/__tests__ → __tests__/components}/ProductCard.test.tsx +4 -4
  168. package/src/{components/__tests__ → __tests__/components}/SafeSpan.integration.test.tsx +2 -2
  169. package/src/{components/__tests__ → __tests__/components}/SafeSpan.simple.test.tsx +1 -1
  170. package/src/{components/__tests__ → __tests__/components}/SafeSpan.test.tsx +1 -1
  171. package/src/{components/__tests__ → __tests__/components}/Section.integration.test.tsx +1 -1
  172. package/src/{components/__tests__ → __tests__/components}/Section.test.tsx +1 -1
  173. package/src/{components/__tests__ → __tests__/components}/SelectInputField.test.tsx +1 -1
  174. package/src/{components/__tests__ → __tests__/components}/TextInputField.test.tsx +3 -3
  175. package/src/{components/__tests__ → __tests__/components}/ThemeSwitcher.test.tsx +3 -3
  176. package/src/__tests__/components/base/ModelView.test.tsx +220 -0
  177. package/src/__tests__/components/blocks/Code.performance.test.tsx +625 -0
  178. package/src/__tests__/components/blocks/Code.serialization.test.tsx +507 -0
  179. package/src/__tests__/components/blocks/HeroBlock.serialization.test.tsx +414 -0
  180. package/src/__tests__/components/blocks/Image.serialization.test.tsx +257 -0
  181. package/src/__tests__/components/blocks/Section.serialization.test.tsx +553 -0
  182. package/src/__tests__/components/blocks/Text.performance.test.tsx +442 -0
  183. package/src/__tests__/components/blocks/Text.serialization.test.tsx +491 -0
  184. package/src/__tests__/components/buttons/Button.serialization.test.tsx +443 -0
  185. package/src/__tests__/components/input/FormComponents.serialization.test.tsx +482 -0
  186. package/src/__tests__/components/input/SelectInputField.serialization.test.tsx +439 -0
  187. package/src/__tests__/components/input/TextInputField.serialization.test.tsx +359 -0
  188. package/src/{components/layout/CollapsibleLayout/__tests__ → __tests__/components/layout}/CollapsibleLayout.test.tsx +4 -4
  189. package/src/__tests__/components/layout/GridCell.serialization.test.tsx +403 -0
  190. package/src/__tests__/components/layout/GridLayout.serialization.test.tsx +311 -0
  191. package/src/__tests__/hooks/usePrintMode.test.ts +89 -0
  192. package/src/__tests__/schemas/PageTemplateSchema.test.ts +161 -0
  193. package/src/__tests__/schemas/PrintConfigSchema.test.ts +127 -0
  194. package/src/__tests__/schemas/ViewModelSchema.test.ts +80 -0
  195. package/src/__tests__/schemas/transformers/ComponentSerializationPatterns.test.tsx +602 -0
  196. package/src/__tests__/schemas/transformers/ComponentTransformer.htmlPatterns.test.ts +301 -0
  197. package/src/__tests__/schemas/transformers/ComponentTransformer.test.ts +521 -0
  198. package/src/__tests__/schemas/transformers/CrossBrowserCompatibility.test.ts +586 -0
  199. package/src/__tests__/schemas/transformers/MockSerializableComponent.ts +103 -0
  200. package/src/__tests__/schemas/transformers/RealWorldScenarios.test.tsx +1165 -0
  201. package/src/__tests__/schemas/transformers/SerializationErrorHandling.test.ts +602 -0
  202. package/src/__tests__/schemas/transformers/SerializationIntegration.test.tsx +691 -0
  203. package/src/__tests__/schemas/transformers/SerializationPerformance.test.ts +460 -0
  204. package/src/__tests__/schemas/transformers/TestAutomation.test.ts +597 -0
  205. package/src/{utils/__tests__ → __tests__/utils}/nested-dom-fix.test.tsx +1 -1
  206. package/src/components/ErrorBoundary.tsx +8 -8
  207. package/src/components/Html.tsx +147 -44
  208. package/src/components/Logo.tsx +198 -100
  209. package/src/components/Markdown.tsx +125 -16
  210. package/src/components/QwickApp.tsx +64 -31
  211. package/src/components/QwickIcon.tsx +59 -0
  212. package/src/components/SafeSpan.tsx +65 -10
  213. package/src/components/Scaffold.tsx +2 -8
  214. package/src/components/base/ModelView.tsx +199 -0
  215. package/src/components/base/index.ts +11 -0
  216. package/src/components/blocks/Article.tsx +57 -18
  217. package/src/components/blocks/Code.md +529 -0
  218. package/src/components/blocks/Code.tsx +102 -15
  219. package/src/components/blocks/Content.tsx +25 -77
  220. package/src/components/blocks/CoverImageHeader.tsx +9 -4
  221. package/src/components/blocks/FeatureCard.tsx +1 -2
  222. package/src/components/blocks/FeatureGrid.tsx +19 -1
  223. package/src/components/blocks/Footer.tsx +13 -1
  224. package/src/components/blocks/HeroBlock.tsx +87 -20
  225. package/src/components/blocks/Image.tsx +395 -0
  226. package/src/components/blocks/PageBannerHeader.tsx +14 -12
  227. package/src/components/blocks/ProductCard.tsx +51 -52
  228. package/src/components/blocks/Section.tsx +113 -8
  229. package/src/components/blocks/Text.tsx +285 -0
  230. package/src/components/blocks/index.ts +4 -0
  231. package/src/components/buttons/Button.tsx +184 -15
  232. package/src/components/forms/FormBlock.tsx +70 -17
  233. package/src/components/index.ts +5 -0
  234. package/src/components/input/ChoiceInputField.tsx +48 -18
  235. package/src/components/input/HtmlInputField.tsx +48 -18
  236. package/src/components/input/SelectInputField.tsx +48 -16
  237. package/src/components/input/SwitchInputField.tsx +48 -17
  238. package/src/components/input/TextField.tsx +41 -1
  239. package/src/components/input/TextInputField.tsx +52 -18
  240. package/src/components/layout/GridCell.tsx +118 -9
  241. package/src/components/layout/GridLayout.tsx +125 -24
  242. package/src/components/pages/FormPage.tsx +0 -1
  243. package/src/components/pages/Page.css +304 -332
  244. package/src/components/pages/Page.tsx +307 -255
  245. package/src/components/pages/index.ts +2 -2
  246. package/src/config/AppConfig.ts +133 -0
  247. package/src/config/AppConfigBuilder.ts +421 -0
  248. package/src/config/__tests__/AppConfig.test.ts +385 -0
  249. package/src/config/__tests__/AppConfigBuilder.test.ts +432 -0
  250. package/src/config/index.ts +24 -0
  251. package/src/config/types.ts +170 -0
  252. package/src/config.ts +25 -0
  253. package/src/contexts/PrintModeContext.tsx +332 -0
  254. package/src/contexts/QwickAppContext.tsx +2 -2
  255. package/src/contexts/ThemeContext.tsx +1 -2
  256. package/src/contexts/index.ts +2 -0
  257. package/src/hooks/index.ts +5 -1
  258. package/src/hooks/usePrintMode.ts +73 -0
  259. package/src/index.ts +3 -0
  260. package/src/schemas/CodeSchema.ts +3 -3
  261. package/src/schemas/CollapsibleLayoutSchema.ts +2 -1
  262. package/src/schemas/ContentSchema.ts +2 -1
  263. package/src/schemas/GridCellSchema.ts +164 -0
  264. package/src/schemas/GridLayoutSchema.ts +133 -0
  265. package/src/schemas/HtmlSchema.ts +47 -0
  266. package/src/schemas/ImageSchema.ts +235 -0
  267. package/src/schemas/LogoSchema.ts +241 -0
  268. package/src/schemas/MarkdownSchema.ts +47 -0
  269. package/src/schemas/PageTemplateSchema.ts +186 -0
  270. package/src/schemas/PrintConfigSchema.ts +207 -0
  271. package/src/schemas/README.md +661 -0
  272. package/src/schemas/SectionSchema.ts +2 -1
  273. package/src/schemas/TextSchema.ts +329 -0
  274. package/src/schemas/ViewModelSchema.ts +115 -0
  275. package/src/schemas/index.ts +21 -2
  276. package/src/schemas/transformers/ComponentTransformer.ts +403 -0
  277. package/src/schemas/transformers/ReactNodeTransformer.ts +236 -0
  278. package/src/schemas/transformers/registry.ts +72 -0
  279. package/src/schemas/types/Serializable.ts +51 -0
  280. package/src/stories/AccessibilityProvider.stories.tsx +253 -253
  281. package/src/stories/Article.stories.tsx +433 -433
  282. package/src/stories/Button.stories.tsx +1 -1
  283. package/src/stories/CardListGrid.stories.tsx +451 -451
  284. package/src/stories/ChoiceInputField.stories.tsx +503 -503
  285. package/src/stories/Code.stories.tsx +1 -1
  286. package/src/stories/CollapsibleLayout.stories.tsx +1414 -1414
  287. package/src/stories/Content.stories.tsx +393 -393
  288. package/src/stories/CoverImageHeader.stories.tsx +701 -701
  289. package/src/stories/DataBinding.advanced.stories.tsx +432 -432
  290. package/src/stories/DataProvider.stories.tsx +1192 -1192
  291. package/src/stories/FeatureCard.stories.tsx +557 -557
  292. package/src/stories/FeatureGrid.stories.tsx +594 -594
  293. package/src/stories/Footer.stories.tsx +640 -640
  294. package/src/stories/FormBlock.stories.tsx +760 -760
  295. package/src/stories/FormComponents.stories.tsx +349 -541
  296. package/src/stories/GridCell.stories.tsx +417 -0
  297. package/src/stories/GridLayout.stories.tsx +353 -0
  298. package/src/stories/HeroBlock.stories.tsx +862 -373
  299. package/src/stories/HtmlInputField.stories.tsx +474 -474
  300. package/src/stories/Image.stories.tsx +819 -0
  301. package/src/stories/Introduction.stories.tsx +667 -667
  302. package/src/stories/LayoutBlocks.stories.tsx +324 -324
  303. package/src/stories/Logo.stories.tsx +165 -6
  304. package/src/stories/Markdown.stories.tsx +137 -137
  305. package/src/stories/ModelView.stories.tsx +477 -0
  306. package/src/stories/Page.stories.tsx +688 -688
  307. package/src/stories/PageBannerHeader.stories.tsx +864 -864
  308. package/src/stories/PaletteSwitcher.stories.tsx +119 -119
  309. package/src/stories/ProductCard.stories.tsx +424 -424
  310. package/src/stories/QwickApp.stories.tsx +368 -368
  311. package/src/stories/ResponsiveMenu.stories.tsx +249 -249
  312. package/src/stories/SafeSpan.stories.tsx +531 -531
  313. package/src/stories/Section.stories.tsx +90 -2
  314. package/src/stories/SelectInputField.stories.tsx +524 -524
  315. package/src/stories/Text.stories.tsx +560 -0
  316. package/src/stories/TextInputField.stories.tsx +443 -443
  317. package/src/stories/ThemeSwitcher.stories.tsx +123 -123
  318. package/src/utils/htmlTransform.tsx +74 -53
  319. package/src/utils/reactUtils.tsx +57 -6
  320. package/dist/index.bundled.css +0 -12
  321. /package/src/{hooks/__tests__ → __tests__/hooks}/useDataBinding.test.tsx.disabled +0 -0
  322. /package/src/{schemas/__tests__ → __tests__/schemas}/builders.test.ts +0 -0
  323. /package/src/{utils/__tests__ → __tests__/utils}/createDataDrivenComponent.test.tsx.disabled +0 -0
  324. /package/src/{utils/__tests__ → __tests__/utils}/htmlTransform.test.tsx +0 -0
  325. /package/src/{utils/__tests__ → __tests__/utils}/optional-logging.test.ts +0 -0
@@ -1,31 +1,31 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
2
  import {
3
- HeroBlock,
4
- Content,
5
- FeatureGrid,
6
- Section
3
+ HeroBlock,
4
+ Content,
5
+ FeatureGrid,
6
+ Section
7
7
  } from '../components/blocks';
8
8
  import {
9
- GridLayout,
10
- GridCell
9
+ GridLayout,
10
+ GridCell
11
11
  } from '../components/layout';
12
12
  import { QwickApp } from '../components/QwickApp';
13
13
  import { Button } from '../components/buttons/Button';
14
14
 
15
15
  const meta: Meta = {
16
- title: 'Layout/LayoutBlocks',
17
- decorators: [
18
- (Story) => (
19
- <QwickApp appName="Layout Demo">
20
- <Story />
21
- </QwickApp>
22
- ),
23
- ],
24
- parameters: {
25
- layout: 'fullscreen',
26
- docs: {
27
- description: {
28
- component: `Comprehensive collection of layout components for building responsive, professional content layouts with minimal effort.
16
+ title: 'Layout/LayoutBlocks',
17
+ decorators: [
18
+ (Story) => (
19
+ <QwickApp appName="Layout Demo">
20
+ <Story />
21
+ </QwickApp>
22
+ ),
23
+ ],
24
+ parameters: {
25
+ layout: 'fullscreen',
26
+ docs: {
27
+ description: {
28
+ component: `Comprehensive collection of layout components for building responsive, professional content layouts with minimal effort.
29
29
 
30
30
  **Key Features:**
31
31
  - **HeroBlock**: Full-width hero sections with background images, gradients, and call-to-action buttons
@@ -45,338 +45,338 @@ const meta: Meta = {
45
45
  - Blog posts and article layouts
46
46
  - Portfolio and showcase websites
47
47
  - Any application requiring structured content presentation`,
48
- },
49
- },
50
- },
48
+ },
49
+ },
50
+ },
51
51
  };
52
52
 
53
53
  export default meta;
54
54
 
55
55
  // Hero Block Stories
56
56
  export const HeroBlocks: StoryObj = {
57
- render: () => (
58
- <div>
59
- <HeroBlock
60
- title="Welcome to QwickApps React Framework"
61
- subtitle="Build beautiful, responsive React applications with ease"
62
- backgroundGradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
63
- height="medium"
64
- actions={[
65
- {
66
- label: 'Get Started',
67
- variant: 'primary',
68
- onClick: () => { alert('Get Started clicked'); }
69
- },
70
- {
71
- label: 'Learn More',
72
- variant: 'outlined',
73
- onClick: () => { alert('Learn More clicked'); }
74
- }
75
- ]}
76
- />
77
-
78
- <Section spacing="spacious">
79
- <HeroBlock
80
- title="Small Hero with Image"
81
- subtitle="This hero uses a background image with overlay"
82
- backgroundImage="https://images.unsplash.com/photo-1558618666-fcd25c85cd64?ixlib=rb-4.0.3&auto=format&fit=crop&w=1200&q=80"
83
- height="small"
84
- overlayOpacity={0.7}
85
- textAlign="left"
86
- />
87
- </Section>
88
- </div>
89
- ),
57
+ render: () => (
58
+ <div>
59
+ <HeroBlock
60
+ title="Welcome to QwickApps React Framework"
61
+ subtitle="Build beautiful, responsive React applications with ease"
62
+ backgroundGradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
63
+ height="medium"
64
+ actions={[
65
+ {
66
+ label: 'Get Started',
67
+ variant: 'primary',
68
+ onClick: () => { alert('Get Started clicked'); }
69
+ },
70
+ {
71
+ label: 'Learn More',
72
+ variant: 'outlined',
73
+ onClick: () => { alert('Learn More clicked'); }
74
+ }
75
+ ]}
76
+ />
77
+
78
+ <Section spacing="spacious">
79
+ <HeroBlock
80
+ title="Small Hero with Image"
81
+ subtitle="This hero uses a background image with overlay"
82
+ backgroundImage="https://images.unsplash.com/photo-1558618666-fcd25c85cd64?ixlib=rb-4.0.3&auto=format&fit=crop&w=1200&q=80"
83
+ height="small"
84
+ overlayOpacity={0.7}
85
+ textAlign="left"
86
+ />
87
+ </Section>
88
+ </div>
89
+ ),
90
90
  };
91
91
 
92
92
  // GridCell Layout Stories
93
93
  export const ColumnLayouts: StoryObj = {
94
- render: () => (
95
- <div>
96
- <Section spacing="spacious">
97
- <Content title="Two GridCell Layout" centered>
98
- <GridLayout columns={2} spacing="large">
99
- <GridCell background="background.paper">
100
- <h3>Left GridCell</h3>
101
- <p>This is the left column content with automatic responsive behavior.</p>
102
- </GridCell>
103
- <GridCell background="grey.100">
104
- <h3>Right GridCell</h3>
105
- <p>This is the right column content that will stack below on mobile.</p>
106
- </GridCell>
107
- </GridLayout>
108
- </Content>
109
- </Section>
94
+ render: () => (
95
+ <div>
96
+ <Section spacing="spacious">
97
+ <Content title="Two GridCell Layout" centered>
98
+ <GridLayout columns={2} spacing="large">
99
+ <GridCell background="background.paper">
100
+ <h3>Left GridCell</h3>
101
+ <p>This is the left column content with automatic responsive behavior.</p>
102
+ </GridCell>
103
+ <GridCell background="grey.100">
104
+ <h3>Right GridCell</h3>
105
+ <p>This is the right column content that will stack below on mobile.</p>
106
+ </GridCell>
107
+ </GridLayout>
108
+ </Content>
109
+ </Section>
110
110
 
111
- <Section background="grey.50">
112
- <Content title="Three GridCell Layout" centered>
113
- <GridLayout columns={3} spacing="medium" equalHeight>
114
- <GridCell background="background.paper">
115
- <h4>Feature One</h4>
116
- <p>Equal height columns ensure consistent layout.</p>
117
- </GridCell>
118
- <GridCell background="background.paper">
119
- <h4>Feature Two</h4>
120
- <p>This column has more content to demonstrate the equal height functionality working properly.</p>
121
- </GridCell>
122
- <GridCell background="background.paper">
123
- <h4>Feature Three</h4>
124
- <p>Short content.</p>
125
- </GridCell>
126
- </GridLayout>
127
- </Content>
128
- </Section>
111
+ <Section background="grey.50">
112
+ <Content title="Three GridCell Layout" centered>
113
+ <GridLayout columns={3} spacing="medium" equalHeight>
114
+ <GridCell background="background.paper">
115
+ <h4>Feature One</h4>
116
+ <p>Equal height columns ensure consistent layout.</p>
117
+ </GridCell>
118
+ <GridCell background="background.paper">
119
+ <h4>Feature Two</h4>
120
+ <p>This column has more content to demonstrate the equal height functionality working properly.</p>
121
+ </GridCell>
122
+ <GridCell background="background.paper">
123
+ <h4>Feature Three</h4>
124
+ <p>Short content.</p>
125
+ </GridCell>
126
+ </GridLayout>
127
+ </Content>
128
+ </Section>
129
129
 
130
- <Section spacing="spacious">
131
- <Content title="Four & Five GridCell Layouts" centered>
132
- <GridLayout columns={4} spacing="small" sx={{ mb: 3 }}>
133
- {[1, 2, 3, 4].map((i) => (
134
- <GridCell key={i} background="primary.main" sx={{ textAlign: 'center' }}>
135
- <strong>Col {i}</strong>
136
- </GridCell>
137
- ))}
138
- </GridLayout>
139
-
140
- <GridLayout columns={5} spacing="small">
141
- {[1, 2, 3, 4, 5].map((i) => (
142
- <GridCell key={i} background="grey.200" sx={{ textAlign: 'center' }}>
143
- <strong>{i}</strong>
144
- </GridCell>
145
- ))}
146
- </GridLayout>
147
- </Content>
148
- </Section>
149
- </div>
150
- ),
130
+ <Section spacing="spacious">
131
+ <Content title="Four & Five GridCell Layouts" centered>
132
+ <GridLayout columns={4} spacing="small" sx={{ mb: 3 }}>
133
+ {[1, 2, 3, 4].map((i) => (
134
+ <GridCell key={i} background="primary.main" sx={{ textAlign: 'center' }}>
135
+ <strong>Col {i}</strong>
136
+ </GridCell>
137
+ ))}
138
+ </GridLayout>
139
+
140
+ <GridLayout columns={5} spacing="small">
141
+ {[1, 2, 3, 4, 5].map((i) => (
142
+ <GridCell key={i} background="grey.200" sx={{ textAlign: 'center' }}>
143
+ <strong>{i}</strong>
144
+ </GridCell>
145
+ ))}
146
+ </GridLayout>
147
+ </Content>
148
+ </Section>
149
+ </div>
150
+ ),
151
151
  };
152
152
 
153
153
  // Content Block Stories
154
154
  export const Contents: StoryObj = {
155
- render: () => (
156
- <div>
157
- <Section spacing="spacious">
158
- <Content
159
- title="Default Content Block"
160
- centered
161
- maxWidth="md"
162
- >
163
- <p>This is a default content block with automatic responsive behavior and theme-aware styling.</p>
164
- </Content>
165
- </Section>
155
+ render: () => (
156
+ <div>
157
+ <Section spacing="spacious">
158
+ <Content
159
+ title="Default Content Block"
160
+ centered
161
+ maxWidth="md"
162
+ >
163
+ <p>This is a default content block with automatic responsive behavior and theme-aware styling.</p>
164
+ </Content>
165
+ </Section>
166
166
 
167
- <Section background="default">
168
- <Content
169
- title="Elevated Content Block"
170
- variant="elevated"
171
- spacing="spacious"
172
- centered
173
- maxWidth="md"
174
- >
175
- <p>This elevated content block has a subtle shadow and stands out from the background.</p>
176
- </Content>
177
- </Section>
167
+ <Section background="default">
168
+ <Content
169
+ title="Elevated Content Block"
170
+ variant="elevated"
171
+ spacing="spacious"
172
+ centered
173
+ maxWidth="md"
174
+ >
175
+ <p>This elevated content block has a subtle shadow and stands out from the background.</p>
176
+ </Content>
177
+ </Section>
178
178
 
179
- <Section spacing="spacious">
180
- <GridLayout columns={2} spacing="large">
181
- <GridCell>
182
- <Content
183
- title="Outlined Block"
184
- variant="outlined"
185
- spacing="spacious"
186
- >
187
- <p>This content block has a border instead of a shadow.</p>
188
- </Content>
189
- </GridCell>
190
- <GridCell>
191
- <Content
192
- title="Filled Block"
193
- variant="filled"
194
- spacing="spacious"
195
- >
196
- <p>This content block has a filled background color.</p>
197
- </Content>
198
- </GridCell>
199
- </GridLayout>
200
- </Section>
201
- </div>
202
- ),
179
+ <Section spacing="spacious">
180
+ <GridLayout columns={2} spacing="large">
181
+ <GridCell>
182
+ <Content
183
+ title="Outlined Block"
184
+ variant="outlined"
185
+ spacing="spacious"
186
+ >
187
+ <p>This content block has a border instead of a shadow.</p>
188
+ </Content>
189
+ </GridCell>
190
+ <GridCell>
191
+ <Content
192
+ title="Filled Block"
193
+ variant="filled"
194
+ spacing="spacious"
195
+ >
196
+ <p>This content block has a filled background color.</p>
197
+ </Content>
198
+ </GridCell>
199
+ </GridLayout>
200
+ </Section>
201
+ </div>
202
+ ),
203
203
  };
204
204
 
205
205
  // Feature Grid Stories
206
206
  export const FeatureGrids: StoryObj = {
207
- render: () => (
208
- <div>
209
- <Section spacing="spacious">
210
- <Content title="Feature Grid" centered maxWidth="lg">
211
- <FeatureGrid
212
- columns={3}
213
- gap="large"
214
- features={[
215
- {
216
- id: 'responsive',
217
- icon: <span style={{ fontSize: '2rem' }}>📱</span>,
218
- title: 'Responsive Design',
219
- description: 'All components automatically adapt to different screen sizes for optimal user experience.',
220
- action: <Button label="Learn More" buttonSize="small" onClick={() => { alert('Learn More clicked'); }} />
221
- },
222
- {
223
- id: 'themes',
224
- icon: <span style={{ fontSize: '2rem' }}>🎨</span>,
225
- title: 'Theme Support',
226
- description: 'Built-in light/dark theme support with customizable color palettes.',
227
- action: <Button label="Explore" buttonSize="small" onClick={() => { alert('Explore clicked'); }} />
228
- },
229
- {
230
- id: 'accessible',
231
- icon: <span style={{ fontSize: '2rem' }}>♿</span>,
232
- title: 'Accessibility First',
233
- description: 'All components follow WCAG guidelines and include proper ARIA labels.',
234
- action: <Button label="Details" buttonSize="small" onClick={() => { alert('Details clicked'); }} />
235
- },
236
- {
237
- id: 'typescript',
238
- icon: <span style={{ fontSize: '2rem' }}>🔷</span>,
239
- title: 'TypeScript Ready',
240
- description: 'Full TypeScript support with comprehensive type definitions.',
241
- action: <Button label="Documentation" buttonSize="small" onClick={() => { alert('Documentation clicked'); }} />
242
- },
243
- {
244
- id: 'performance',
245
- icon: <span style={{ fontSize: '2rem' }}>⚡</span>,
246
- title: 'High Performance',
247
- description: 'Optimized for speed with minimal bundle size and efficient rendering.',
248
- action: <Button label="Benchmarks" buttonSize="small" onClick={() => { alert('Benchmarks clicked'); }} />
249
- },
250
- {
251
- id: 'customizable',
252
- icon: <span style={{ fontSize: '2rem' }}>🛠️</span>,
253
- title: 'Highly Customizable',
254
- description: 'Easy to customize and extend with your own design system.',
255
- action: <Button label="Customize" buttonSize="small" onClick={() => { alert('Customize clicked'); }} />
256
- },
257
- ]}
258
- />
259
- </Content>
260
- </Section>
261
- </div>
262
- ),
207
+ render: () => (
208
+ <div>
209
+ <Section spacing="spacious">
210
+ <Content title="Feature Grid" centered maxWidth="lg">
211
+ <FeatureGrid
212
+ columns={3}
213
+ gap="large"
214
+ features={[
215
+ {
216
+ id: 'responsive',
217
+ icon: <span style={{ fontSize: '2rem' }}></span>,
218
+ title: 'Responsive Design',
219
+ description: 'All components automatically adapt to different screen sizes for optimal user experience.',
220
+ action: <Button label="Learn More" buttonSize="small" onClick={() => { alert('Learn More clicked'); }} />
221
+ },
222
+ {
223
+ id: 'themes',
224
+ icon: <span style={{ fontSize: '2rem' }}></span>,
225
+ title: 'Theme Support',
226
+ description: 'Built-in light/dark theme support with customizable color palettes.',
227
+ action: <Button label="Explore" buttonSize="small" onClick={() => { alert('Explore clicked'); }} />
228
+ },
229
+ {
230
+ id: 'accessible',
231
+ icon: <span style={{ fontSize: '2rem' }}>♿</span>,
232
+ title: 'Accessibility First',
233
+ description: 'All components follow WCAG guidelines and include proper ARIA labels.',
234
+ action: <Button label="Details" buttonSize="small" onClick={() => { alert('Details clicked'); }} />
235
+ },
236
+ {
237
+ id: 'typescript',
238
+ icon: <span style={{ fontSize: '2rem' }}>🔷</span>,
239
+ title: 'TypeScript Ready',
240
+ description: 'Full TypeScript support with comprehensive type definitions.',
241
+ action: <Button label="Documentation" buttonSize="small" onClick={() => { alert('Documentation clicked'); }} />
242
+ },
243
+ {
244
+ id: 'performance',
245
+ icon: <span style={{ fontSize: '2rem' }}></span>,
246
+ title: 'High Performance',
247
+ description: 'Optimized for speed with minimal bundle size and efficient rendering.',
248
+ action: <Button label="Benchmarks" buttonSize="small" onClick={() => { alert('Benchmarks clicked'); }} />
249
+ },
250
+ {
251
+ id: 'customizable',
252
+ icon: <span style={{ fontSize: '2rem' }}>🛠</span>,
253
+ title: 'Highly Customizable',
254
+ description: 'Easy to customize and extend with your own design system.',
255
+ action: <Button label="Customize" buttonSize="small" onClick={() => { alert('Customize clicked'); }} />
256
+ },
257
+ ]}
258
+ />
259
+ </Content>
260
+ </Section>
261
+ </div>
262
+ ),
263
263
  };
264
264
 
265
265
  // Complete Layout Example
266
266
  export const CompleteLayout: StoryObj = {
267
- render: () => (
268
- <div>
269
- {/* Hero Section */}
270
- <HeroBlock
271
- title="QwickApps React Framework"
272
- subtitle="The complete React framework for building modern applications"
273
- backgroundGradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
274
- height="large"
275
- actions={[
276
- {
277
- label: 'Get Started',
278
- variant: 'primary',
279
- size: 'large',
280
- onClick: () => { alert('Get Started clicked'); }
281
- },
282
- {
283
- label: 'View Demo',
284
- variant: 'outlined',
285
- size: 'large',
286
- onClick: () => { alert('View Demo clicked'); }
287
- }
288
- ]}
289
- />
267
+ render: () => (
268
+ <div>
269
+ {/* Hero Section */}
270
+ <HeroBlock
271
+ title="QwickApps React Framework"
272
+ subtitle="The complete React framework for building modern applications"
273
+ backgroundGradient="linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
274
+ height="large"
275
+ actions={[
276
+ {
277
+ label: 'Get Started',
278
+ variant: 'primary',
279
+ size: 'large',
280
+ onClick: () => { alert('Get Started clicked'); }
281
+ },
282
+ {
283
+ label: 'View Demo',
284
+ variant: 'outlined',
285
+ size: 'large',
286
+ onClick: () => { alert('View Demo clicked'); }
287
+ }
288
+ ]}
289
+ />
290
290
 
291
- {/* Features Section */}
292
- <Section background="alternate">
293
- <Content title="Why Choose QwickApps?" centered maxWidth="lg">
294
- <p style={{ fontSize: '1.2rem', textAlign: 'center', marginBottom: '3rem', opacity: 0.8 }}>
295
- Everything you need to build beautiful, responsive applications
296
- </p>
297
- <FeatureGrid
298
- columns={3}
299
- gap="large"
300
- features={[
301
- {
302
- id: 'components',
303
- icon: <span style={{ fontSize: '3rem' }}>🧩</span>,
304
- title: 'Rich Components',
305
- description: 'Comprehensive set of pre-built, customizable components for rapid development.',
306
- },
307
- {
308
- id: 'layouts',
309
- icon: <span style={{ fontSize: '3rem' }}>📐</span>,
310
- title: 'Flexible Layouts',
311
- description: 'Powerful layout blocks that adapt to any design and screen size automatically.',
312
- },
313
- {
314
- id: 'navigation',
315
- icon: <span style={{ fontSize: '3rem' }}>🧭</span>,
316
- title: 'Smart Navigation',
317
- description: 'Responsive navigation that transforms based on device: bottom nav, rail, or top nav.',
318
- },
319
- ]}
320
- />
321
- </Content>
322
- </Section>
291
+ {/* Features Section */}
292
+ <Section background="alternate">
293
+ <Content title="Why Choose QwickApps?" centered maxWidth="lg">
294
+ <p style={{ fontSize: '1.2rem', textAlign: 'center', marginBottom: '3rem', opacity: 0.8 }}>
295
+ Everything you need to build beautiful, responsive applications
296
+ </p>
297
+ <FeatureGrid
298
+ columns={3}
299
+ gap="large"
300
+ features={[
301
+ {
302
+ id: 'components',
303
+ icon: <span style={{ fontSize: '3rem' }}>🧩</span>,
304
+ title: 'Rich Components',
305
+ description: 'Comprehensive set of pre-built, customizable components for rapid development.',
306
+ },
307
+ {
308
+ id: 'layouts',
309
+ icon: <span style={{ fontSize: '3rem' }}>📐</span>,
310
+ title: 'Flexible Layouts',
311
+ description: 'Powerful layout blocks that adapt to any design and screen size automatically.',
312
+ },
313
+ {
314
+ id: 'navigation',
315
+ icon: <span style={{ fontSize: '3rem' }}>🧭</span>,
316
+ title: 'Smart Navigation',
317
+ description: 'Responsive navigation that transforms based on device: bottom nav, rail, or top nav.',
318
+ },
319
+ ]}
320
+ />
321
+ </Content>
322
+ </Section>
323
323
 
324
- {/* Content Sections */}
325
- <Section spacing="spacious">
326
- <GridLayout columns={2} spacing="large">
327
- <GridCell>
328
- <Content title="Easy to Use" variant="elevated" spacing="spacious">
329
- <p>QwickApps React Framework is designed for developers who want to build great applications without spending time on boilerplate.</p>
330
- <ul>
331
- <li>Simple API design</li>
332
- <li>Comprehensive documentation</li>
333
- <li>TypeScript support</li>
334
- <li>Storybook examples</li>
335
- </ul>
336
- </Content>
337
- </GridCell>
338
- <GridCell>
339
- <Content title="Production Ready" variant="elevated" spacing="spacious">
340
- <p>Built with best practices and tested in real-world applications to ensure reliability and performance.</p>
341
- <ul>
342
- <li>Accessibility compliant</li>
343
- <li>Performance optimized</li>
344
- <li>Theme system</li>
345
- <li>Mobile-first design</li>
346
- </ul>
347
- </Content>
348
- </GridCell>
349
- </GridLayout>
350
- </Section>
324
+ {/* Content Sections */}
325
+ <Section spacing="spacious">
326
+ <GridLayout columns={2} spacing="large">
327
+ <GridCell>
328
+ <Content title="Easy to Use" variant="elevated" spacing="spacious">
329
+ <p>QwickApps React Framework is designed for developers who want to build great applications without spending time on boilerplate.</p>
330
+ <ul>
331
+ <li>Simple API design</li>
332
+ <li>Comprehensive documentation</li>
333
+ <li>TypeScript support</li>
334
+ <li>Storybook examples</li>
335
+ </ul>
336
+ </Content>
337
+ </GridCell>
338
+ <GridCell>
339
+ <Content title="Production Ready" variant="elevated" spacing="spacious">
340
+ <p>Built with best practices and tested in real-world applications to ensure reliability and performance.</p>
341
+ <ul>
342
+ <li>Accessibility compliant</li>
343
+ <li>Performance optimized</li>
344
+ <li>Theme system</li>
345
+ <li>Mobile-first design</li>
346
+ </ul>
347
+ </Content>
348
+ </GridCell>
349
+ </GridLayout>
350
+ </Section>
351
351
 
352
- {/* Call to Action */}
353
- <Section background="primary">
354
- <Content
355
- centered
356
- maxWidth="md"
357
- actions={[
358
- {
359
- label: 'Start Building',
360
- variant: 'secondary',
361
- size: 'large',
362
- onClick: () => { alert('Start Building clicked'); }
363
- },
364
- {
365
- label: 'Documentation',
366
- variant: 'outlined',
367
- size: 'large',
368
- onClick: () => console.log('Documentation clicked')
369
- }
370
- ]}
371
- >
372
- <h2 style={{ fontSize: '2.5rem', marginBottom: '1rem' }}>
373
- Ready to Get Started?
374
- </h2>
375
- <p style={{ fontSize: '1.2rem', opacity: 0.9, marginBottom: '2rem' }}>
376
- Join thousands of developers building with QwickApps React Framework
377
- </p>
378
- </Content>
379
- </Section>
380
- </div>
381
- ),
352
+ {/* Call to Action */}
353
+ <Section background="primary">
354
+ <Content
355
+ centered
356
+ maxWidth="md"
357
+ actions={[
358
+ {
359
+ label: 'Start Building',
360
+ variant: 'secondary',
361
+ size: 'large',
362
+ onClick: () => { alert('Start Building clicked'); }
363
+ },
364
+ {
365
+ label: 'Documentation',
366
+ variant: 'outlined',
367
+ size: 'large',
368
+ onClick: () => console.log('Documentation clicked')
369
+ }
370
+ ]}
371
+ >
372
+ <h2 style={{ fontSize: '2.5rem', marginBottom: '1rem' }}>
373
+ Ready to Get Started?
374
+ </h2>
375
+ <p style={{ fontSize: '1.2rem', opacity: 0.9, marginBottom: '2rem' }}>
376
+ Join thousands of developers building with QwickApps React Framework
377
+ </p>
378
+ </Content>
379
+ </Section>
380
+ </div>
381
+ ),
382
382
  };