@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,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
  };