@qwickapps/react-framework 1.3.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 (441) hide show
  1. package/LICENSE +44 -0
  2. package/README.md +794 -0
  3. package/dist/components/AccessibilityChecker.d.ts +12 -0
  4. package/dist/components/AccessibilityChecker.d.ts.map +1 -0
  5. package/dist/components/Html.d.ts +48 -0
  6. package/dist/components/Html.d.ts.map +1 -0
  7. package/dist/components/Logo.d.ts +79 -0
  8. package/dist/components/Logo.d.ts.map +1 -0
  9. package/dist/components/Markdown.d.ts +47 -0
  10. package/dist/components/Markdown.d.ts.map +1 -0
  11. package/dist/components/QwickApp.d.ts +56 -0
  12. package/dist/components/QwickApp.d.ts.map +1 -0
  13. package/dist/components/QwickAppsLogo.d.ts +25 -0
  14. package/dist/components/QwickAppsLogo.d.ts.map +1 -0
  15. package/dist/components/ResponsiveMenu.d.ts +38 -0
  16. package/dist/components/ResponsiveMenu.d.ts.map +1 -0
  17. package/dist/components/SafeSpan.d.ts +23 -0
  18. package/dist/components/SafeSpan.d.ts.map +1 -0
  19. package/dist/components/Scaffold.d.ts +57 -0
  20. package/dist/components/Scaffold.d.ts.map +1 -0
  21. package/dist/components/blocks/Article.d.ts +23 -0
  22. package/dist/components/blocks/Article.d.ts.map +1 -0
  23. package/dist/components/blocks/CardListGrid.d.ts +23 -0
  24. package/dist/components/blocks/CardListGrid.d.ts.map +1 -0
  25. package/dist/components/blocks/Code.d.ts +21 -0
  26. package/dist/components/blocks/Code.d.ts.map +1 -0
  27. package/dist/components/blocks/Content.d.ts +24 -0
  28. package/dist/components/blocks/Content.d.ts.map +1 -0
  29. package/dist/components/blocks/CoverImageHeader.d.ts +44 -0
  30. package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -0
  31. package/dist/components/blocks/FeatureCard.d.ts +66 -0
  32. package/dist/components/blocks/FeatureCard.d.ts.map +1 -0
  33. package/dist/components/blocks/FeatureGrid.d.ts +48 -0
  34. package/dist/components/blocks/FeatureGrid.d.ts.map +1 -0
  35. package/dist/components/blocks/Footer.d.ts +56 -0
  36. package/dist/components/blocks/Footer.d.ts.map +1 -0
  37. package/dist/components/blocks/HeroBlock.d.ts +33 -0
  38. package/dist/components/blocks/HeroBlock.d.ts.map +1 -0
  39. package/dist/components/blocks/PageBannerHeader.d.ts +30 -0
  40. package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -0
  41. package/dist/components/blocks/ProductCard.d.ts +57 -0
  42. package/dist/components/blocks/ProductCard.d.ts.map +1 -0
  43. package/dist/components/blocks/Section.d.ts +40 -0
  44. package/dist/components/blocks/Section.d.ts.map +1 -0
  45. package/dist/components/blocks/index.d.ts +37 -0
  46. package/dist/components/blocks/index.d.ts.map +1 -0
  47. package/dist/components/buttons/Button.d.ts +38 -0
  48. package/dist/components/buttons/Button.d.ts.map +1 -0
  49. package/dist/components/buttons/PaletteSwitcher.d.ts +24 -0
  50. package/dist/components/buttons/PaletteSwitcher.d.ts.map +1 -0
  51. package/dist/components/buttons/ThemeSwitcher.d.ts +24 -0
  52. package/dist/components/buttons/ThemeSwitcher.d.ts.map +1 -0
  53. package/dist/components/buttons/index.d.ts +11 -0
  54. package/dist/components/buttons/index.d.ts.map +1 -0
  55. package/dist/components/forms/FormBlock.d.ts +45 -0
  56. package/dist/components/forms/FormBlock.d.ts.map +1 -0
  57. package/dist/components/forms/index.d.ts +8 -0
  58. package/dist/components/forms/index.d.ts.map +1 -0
  59. package/dist/components/index.d.ts +32 -0
  60. package/dist/components/index.d.ts.map +1 -0
  61. package/dist/components/input/ChoiceInputField.d.ts +30 -0
  62. package/dist/components/input/ChoiceInputField.d.ts.map +1 -0
  63. package/dist/components/input/HtmlInputField.d.ts +29 -0
  64. package/dist/components/input/HtmlInputField.d.ts.map +1 -0
  65. package/dist/components/input/SelectInputField.d.ts +29 -0
  66. package/dist/components/input/SelectInputField.d.ts.map +1 -0
  67. package/dist/components/input/TextField.d.ts +18 -0
  68. package/dist/components/input/TextField.d.ts.map +1 -0
  69. package/dist/components/input/TextInputField.d.ts +32 -0
  70. package/dist/components/input/TextInputField.d.ts.map +1 -0
  71. package/dist/components/input/index.d.ts +17 -0
  72. package/dist/components/input/index.d.ts.map +1 -0
  73. package/dist/components/layout/GridCell.d.ts +16 -0
  74. package/dist/components/layout/GridCell.d.ts.map +1 -0
  75. package/dist/components/layout/GridCellWrapper.d.ts +46 -0
  76. package/dist/components/layout/GridCellWrapper.d.ts.map +1 -0
  77. package/dist/components/layout/GridLayout.d.ts +38 -0
  78. package/dist/components/layout/GridLayout.d.ts.map +1 -0
  79. package/dist/components/layout/index.d.ts +12 -0
  80. package/dist/components/layout/index.d.ts.map +1 -0
  81. package/dist/components/menu/Menu.d.ts +1 -0
  82. package/dist/components/menu/Menu.d.ts.map +1 -0
  83. package/dist/components/menu/MenuItem.d.ts +31 -0
  84. package/dist/components/menu/MenuItem.d.ts.map +1 -0
  85. package/dist/components/menu/index.d.ts +7 -0
  86. package/dist/components/menu/index.d.ts.map +1 -0
  87. package/dist/components/pages/FormPage.d.ts +66 -0
  88. package/dist/components/pages/FormPage.d.ts.map +1 -0
  89. package/dist/components/pages/Page.d.ts +124 -0
  90. package/dist/components/pages/Page.d.ts.map +1 -0
  91. package/dist/components/pages/index.d.ts +11 -0
  92. package/dist/components/pages/index.d.ts.map +1 -0
  93. package/dist/contexts/DataContext.d.ts +139 -0
  94. package/dist/contexts/DataContext.d.ts.map +1 -0
  95. package/dist/contexts/DimensionsContext.d.ts +42 -0
  96. package/dist/contexts/DimensionsContext.d.ts.map +1 -0
  97. package/dist/contexts/PaletteContext.d.ts +53 -0
  98. package/dist/contexts/PaletteContext.d.ts.map +1 -0
  99. package/dist/contexts/QwickAppContext.d.ts +71 -0
  100. package/dist/contexts/QwickAppContext.d.ts.map +1 -0
  101. package/dist/contexts/ThemeContext.d.ts +65 -0
  102. package/dist/contexts/ThemeContext.d.ts.map +1 -0
  103. package/dist/contexts/index.d.ts +9 -0
  104. package/dist/contexts/index.d.ts.map +1 -0
  105. package/dist/hooks/index.d.ts +10 -0
  106. package/dist/hooks/index.d.ts.map +1 -0
  107. package/dist/hooks/useBaseProps.d.ts +101 -0
  108. package/dist/hooks/useBaseProps.d.ts.map +1 -0
  109. package/dist/hooks/useDataBinding.d.ts +22 -0
  110. package/dist/hooks/useDataBinding.d.ts.map +1 -0
  111. package/dist/index.css +1 -0
  112. package/dist/index.d.ts +8 -0
  113. package/dist/index.d.ts.map +1 -0
  114. package/dist/index.esm.css +1 -0
  115. package/dist/index.esm.js +24143 -0
  116. package/dist/index.js +24245 -0
  117. package/dist/palettes/PaletteAutumn.d.ts +10 -0
  118. package/dist/palettes/PaletteAutumn.d.ts.map +1 -0
  119. package/dist/palettes/PaletteCosmic.d.ts +10 -0
  120. package/dist/palettes/PaletteCosmic.d.ts.map +1 -0
  121. package/dist/palettes/PaletteDefault.d.ts +10 -0
  122. package/dist/palettes/PaletteDefault.d.ts.map +1 -0
  123. package/dist/palettes/PaletteOcean.d.ts +10 -0
  124. package/dist/palettes/PaletteOcean.d.ts.map +1 -0
  125. package/dist/palettes/PaletteSpring.d.ts +10 -0
  126. package/dist/palettes/PaletteSpring.d.ts.map +1 -0
  127. package/dist/palettes/PaletteWinter.d.ts +10 -0
  128. package/dist/palettes/PaletteWinter.d.ts.map +1 -0
  129. package/dist/palettes/index.d.ts +13 -0
  130. package/dist/palettes/index.d.ts.map +1 -0
  131. package/dist/schemas/ActionSchema.d.ts +21 -0
  132. package/dist/schemas/ActionSchema.d.ts.map +1 -0
  133. package/dist/schemas/ArticleSchema.d.ts +13 -0
  134. package/dist/schemas/ArticleSchema.d.ts.map +1 -0
  135. package/dist/schemas/Builders.d.ts +7 -0
  136. package/dist/schemas/Builders.d.ts.map +1 -0
  137. package/dist/schemas/ButtonSchema.d.ts +19 -0
  138. package/dist/schemas/ButtonSchema.d.ts.map +1 -0
  139. package/dist/schemas/CardListGridSchema.d.ts +17 -0
  140. package/dist/schemas/CardListGridSchema.d.ts.map +1 -0
  141. package/dist/schemas/ChoiceInputFieldSchema.d.ts +18 -0
  142. package/dist/schemas/ChoiceInputFieldSchema.d.ts.map +1 -0
  143. package/dist/schemas/CodeSchema.d.ts +18 -0
  144. package/dist/schemas/CodeSchema.d.ts.map +1 -0
  145. package/dist/schemas/ContentSchema.d.ts +20 -0
  146. package/dist/schemas/ContentSchema.d.ts.map +1 -0
  147. package/dist/schemas/CoverImageHeaderSchema.d.ts +28 -0
  148. package/dist/schemas/CoverImageHeaderSchema.d.ts.map +1 -0
  149. package/dist/schemas/FeatureCardSchema.d.ts +28 -0
  150. package/dist/schemas/FeatureCardSchema.d.ts.map +1 -0
  151. package/dist/schemas/FeatureGridSchema.d.ts +17 -0
  152. package/dist/schemas/FeatureGridSchema.d.ts.map +1 -0
  153. package/dist/schemas/FeatureItemSchema.d.ts +16 -0
  154. package/dist/schemas/FeatureItemSchema.d.ts.map +1 -0
  155. package/dist/schemas/FooterItemSchema.d.ts +15 -0
  156. package/dist/schemas/FooterItemSchema.d.ts.map +1 -0
  157. package/dist/schemas/FooterSchema.d.ts +20 -0
  158. package/dist/schemas/FooterSchema.d.ts.map +1 -0
  159. package/dist/schemas/FooterSectionSchema.d.ts +15 -0
  160. package/dist/schemas/FooterSectionSchema.d.ts.map +1 -0
  161. package/dist/schemas/FormBlockSchema.d.ts +19 -0
  162. package/dist/schemas/FormBlockSchema.d.ts.map +1 -0
  163. package/dist/schemas/HeaderActionSchema.d.ts +17 -0
  164. package/dist/schemas/HeaderActionSchema.d.ts.map +1 -0
  165. package/dist/schemas/HeroBlockSchema.d.ts +22 -0
  166. package/dist/schemas/HeroBlockSchema.d.ts.map +1 -0
  167. package/dist/schemas/HtmlInputFieldSchema.d.ts +18 -0
  168. package/dist/schemas/HtmlInputFieldSchema.d.ts.map +1 -0
  169. package/dist/schemas/MetadataItemSchema.d.ts +13 -0
  170. package/dist/schemas/MetadataItemSchema.d.ts.map +1 -0
  171. package/dist/schemas/PageBannerHeaderSchema.d.ts +28 -0
  172. package/dist/schemas/PageBannerHeaderSchema.d.ts.map +1 -0
  173. package/dist/schemas/PaletteSwitcherSchema.d.ts +16 -0
  174. package/dist/schemas/PaletteSwitcherSchema.d.ts.map +1 -0
  175. package/dist/schemas/ProductCardSchema.d.ts +39 -0
  176. package/dist/schemas/ProductCardSchema.d.ts.map +1 -0
  177. package/dist/schemas/SafeSpanSchema.d.ts +13 -0
  178. package/dist/schemas/SafeSpanSchema.d.ts.map +1 -0
  179. package/dist/schemas/SectionSchema.d.ts +17 -0
  180. package/dist/schemas/SectionSchema.d.ts.map +1 -0
  181. package/dist/schemas/SelectInputFieldSchema.d.ts +27 -0
  182. package/dist/schemas/SelectInputFieldSchema.d.ts.map +1 -0
  183. package/dist/schemas/TextInputFieldSchema.d.ts +22 -0
  184. package/dist/schemas/TextInputFieldSchema.d.ts.map +1 -0
  185. package/dist/schemas/ThemeSwitcherSchema.d.ts +19 -0
  186. package/dist/schemas/ThemeSwitcherSchema.d.ts.map +1 -0
  187. package/dist/schemas/index.d.ts +33 -0
  188. package/dist/schemas/index.d.ts.map +1 -0
  189. package/dist/schemas/types.d.ts +7 -0
  190. package/dist/schemas/types.d.ts.map +1 -0
  191. package/dist/templates/TemplateResolver.d.ts +52 -0
  192. package/dist/templates/TemplateResolver.d.ts.map +1 -0
  193. package/dist/templates/index.d.ts +7 -0
  194. package/dist/templates/index.d.ts.map +1 -0
  195. package/dist/tests/ConsoleWarningTest.d.ts +5 -0
  196. package/dist/tests/ConsoleWarningTest.d.ts.map +1 -0
  197. package/dist/tests/StorageKeyTest.d.ts +6 -0
  198. package/dist/tests/StorageKeyTest.d.ts.map +1 -0
  199. package/dist/tests/ThemeStorageKeyTest.d.ts +6 -0
  200. package/dist/tests/ThemeStorageKeyTest.d.ts.map +1 -0
  201. package/dist/types/CacheProvider.d.ts +18 -0
  202. package/dist/types/CacheProvider.d.ts.map +1 -0
  203. package/dist/types/ContentProxy.d.ts +47 -0
  204. package/dist/types/ContentProxy.d.ts.map +1 -0
  205. package/dist/types/DataBinding.d.ts +7 -0
  206. package/dist/types/DataBinding.d.ts.map +1 -0
  207. package/dist/types/DataProvider.d.ts +7 -0
  208. package/dist/types/DataProvider.d.ts.map +1 -0
  209. package/dist/types/DataTypes.d.ts +185 -0
  210. package/dist/types/DataTypes.d.ts.map +1 -0
  211. package/dist/types/TemplateProvider.d.ts +10 -0
  212. package/dist/types/TemplateProvider.d.ts.map +1 -0
  213. package/dist/types/TemplateResolver.d.ts +23 -0
  214. package/dist/types/TemplateResolver.d.ts.map +1 -0
  215. package/dist/types/index.d.ts +81 -0
  216. package/dist/types/index.d.ts.map +1 -0
  217. package/dist/utils/breakpoints.d.ts +35 -0
  218. package/dist/utils/breakpoints.d.ts.map +1 -0
  219. package/dist/utils/customPaletteManager.d.ts +8 -0
  220. package/dist/utils/customPaletteManager.d.ts.map +1 -0
  221. package/dist/utils/dimensions.d.ts +34 -0
  222. package/dist/utils/dimensions.d.ts.map +1 -0
  223. package/dist/utils/htmlTransform.d.ts +44 -0
  224. package/dist/utils/htmlTransform.d.ts.map +1 -0
  225. package/dist/utils/index.d.ts +15 -0
  226. package/dist/utils/index.d.ts.map +1 -0
  227. package/dist/utils/logger.d.ts +14 -0
  228. package/dist/utils/logger.d.ts.map +1 -0
  229. package/dist/utils/paletteUtils.d.ts +38 -0
  230. package/dist/utils/paletteUtils.d.ts.map +1 -0
  231. package/dist/utils/persistenceUtils.d.ts +31 -0
  232. package/dist/utils/persistenceUtils.d.ts.map +1 -0
  233. package/dist/utils/reactUtils.d.ts +24 -0
  234. package/dist/utils/reactUtils.d.ts.map +1 -0
  235. package/dist/utils/spacing.d.ts +34 -0
  236. package/dist/utils/spacing.d.ts.map +1 -0
  237. package/dist/utils/themePerformanceMonitor.d.ts +32 -0
  238. package/dist/utils/themePerformanceMonitor.d.ts.map +1 -0
  239. package/dist/utils/themeUtils.d.ts +27 -0
  240. package/dist/utils/themeUtils.d.ts.map +1 -0
  241. package/package.json +141 -0
  242. package/src/__tests__/components/Logo.test.js +172 -0
  243. package/src/__tests__/contexts/DataContext.test.js +505 -0
  244. package/src/__tests__/contexts/PaletteContext.test.js +115 -0
  245. package/src/__tests__/contexts/ThemeContext.test.js +123 -0
  246. package/src/__tests__/utils/paletteUtils.test.js +142 -0
  247. package/src/__tests__/utils/themeUtils.test.js +142 -0
  248. package/src/components/AccessibilityChecker.tsx +264 -0
  249. package/src/components/Html.tsx +191 -0
  250. package/src/components/Logo.css +217 -0
  251. package/src/components/Logo.tsx +370 -0
  252. package/src/components/Markdown.tsx +191 -0
  253. package/src/components/QwickApp.css +257 -0
  254. package/src/components/QwickApp.tsx +157 -0
  255. package/src/components/QwickAppsLogo.tsx +77 -0
  256. package/src/components/ResponsiveMenu.css +416 -0
  257. package/src/components/ResponsiveMenu.tsx +310 -0
  258. package/src/components/SafeSpan.tsx +128 -0
  259. package/src/components/Scaffold.css +541 -0
  260. package/src/components/Scaffold.tsx +463 -0
  261. package/src/components/__tests__/Article.test.tsx +419 -0
  262. package/src/components/__tests__/Button.test.tsx +702 -0
  263. package/src/components/__tests__/CardListGrid.test.tsx +478 -0
  264. package/src/components/__tests__/ChoiceInputField.test.tsx +864 -0
  265. package/src/components/__tests__/Code.test.tsx +595 -0
  266. package/src/components/__tests__/Content.integration.test.tsx +193 -0
  267. package/src/components/__tests__/Content.test.tsx +504 -0
  268. package/src/components/__tests__/CoverImageHeader.test.tsx +456 -0
  269. package/src/components/__tests__/FeatureCard.integration.test.tsx +384 -0
  270. package/src/components/__tests__/FeatureGrid.integration.test.tsx +364 -0
  271. package/src/components/__tests__/FeatureGrid.test.tsx +494 -0
  272. package/src/components/__tests__/Footer.test.tsx +544 -0
  273. package/src/components/__tests__/FormBlock.test.tsx +857 -0
  274. package/src/components/__tests__/HeroBlock.integration.test.tsx +272 -0
  275. package/src/components/__tests__/HeroBlock.test.tsx +463 -0
  276. package/src/components/__tests__/Html.test.tsx +174 -0
  277. package/src/components/__tests__/HtmlInputField.test.tsx +856 -0
  278. package/src/components/__tests__/Markdown.test.tsx +233 -0
  279. package/src/components/__tests__/PageBannerHeader.test.tsx +614 -0
  280. package/src/components/__tests__/PaletteSwitcher.test.tsx +864 -0
  281. package/src/components/__tests__/ProductCard.test.tsx +377 -0
  282. package/src/components/__tests__/SafeSpan.integration.test.tsx +123 -0
  283. package/src/components/__tests__/SafeSpan.simple.test.tsx +65 -0
  284. package/src/components/__tests__/SafeSpan.test.tsx +388 -0
  285. package/src/components/__tests__/Section.integration.test.tsx +288 -0
  286. package/src/components/__tests__/Section.test.tsx +494 -0
  287. package/src/components/__tests__/SelectInputField.test.tsx +886 -0
  288. package/src/components/__tests__/TextInputField.test.tsx +749 -0
  289. package/src/components/__tests__/ThemeSwitcher.test.tsx +777 -0
  290. package/src/components/blocks/Article.tsx +194 -0
  291. package/src/components/blocks/CardListGrid.tsx +132 -0
  292. package/src/components/blocks/Code.tsx +313 -0
  293. package/src/components/blocks/Content.tsx +265 -0
  294. package/src/components/blocks/CoverImageHeader.css +17 -0
  295. package/src/components/blocks/CoverImageHeader.tsx +435 -0
  296. package/src/components/blocks/FeatureCard.tsx +321 -0
  297. package/src/components/blocks/FeatureGrid.tsx +147 -0
  298. package/src/components/blocks/Footer.tsx +343 -0
  299. package/src/components/blocks/HeroBlock.tsx +280 -0
  300. package/src/components/blocks/PageBannerHeader.tsx +471 -0
  301. package/src/components/blocks/ProductCard.tsx +472 -0
  302. package/src/components/blocks/Section.tsx +209 -0
  303. package/src/components/blocks/index.ts +37 -0
  304. package/src/components/buttons/Button.tsx +233 -0
  305. package/src/components/buttons/PaletteSwitcher.tsx +268 -0
  306. package/src/components/buttons/ThemeSwitcher.tsx +283 -0
  307. package/src/components/buttons/index.ts +11 -0
  308. package/src/components/forms/FormBlock.tsx +291 -0
  309. package/src/components/forms/index.ts +7 -0
  310. package/src/components/index.ts +37 -0
  311. package/src/components/input/ChoiceInputField.tsx +188 -0
  312. package/src/components/input/HtmlInputField.tsx +326 -0
  313. package/src/components/input/SelectInputField.tsx +197 -0
  314. package/src/components/input/TextField.tsx +47 -0
  315. package/src/components/input/TextInputField.tsx +144 -0
  316. package/src/components/input/index.ts +17 -0
  317. package/src/components/layout/GridCell.tsx +46 -0
  318. package/src/components/layout/GridCellWrapper.tsx +87 -0
  319. package/src/components/layout/GridLayout.tsx +169 -0
  320. package/src/components/layout/index.ts +13 -0
  321. package/src/components/menu/Menu.tsx +0 -0
  322. package/src/components/menu/MenuItem.tsx +32 -0
  323. package/src/components/menu/index.ts +6 -0
  324. package/src/components/pages/FormPage.tsx +108 -0
  325. package/src/components/pages/Page.css +460 -0
  326. package/src/components/pages/Page.tsx +345 -0
  327. package/src/components/pages/index.ts +11 -0
  328. package/src/contexts/DataContext.tsx +355 -0
  329. package/src/contexts/DimensionsContext.tsx +154 -0
  330. package/src/contexts/PaletteContext.tsx +217 -0
  331. package/src/contexts/QwickAppContext.tsx +95 -0
  332. package/src/contexts/ThemeContext.tsx +376 -0
  333. package/src/contexts/index.ts +9 -0
  334. package/src/hooks/__tests__/useDataBinding.test.tsx.disabled +229 -0
  335. package/src/hooks/index.ts +11 -0
  336. package/src/hooks/useBaseProps.ts +267 -0
  337. package/src/hooks/useDataBinding.ts +77 -0
  338. package/src/index.ts +23 -0
  339. package/src/palettes/PaletteAutumn.css +172 -0
  340. package/src/palettes/PaletteAutumn.ts +16 -0
  341. package/src/palettes/PaletteCosmic.css +172 -0
  342. package/src/palettes/PaletteCosmic.ts +16 -0
  343. package/src/palettes/PaletteDefault.css +178 -0
  344. package/src/palettes/PaletteDefault.ts +17 -0
  345. package/src/palettes/PaletteOcean.css +172 -0
  346. package/src/palettes/PaletteOcean.ts +16 -0
  347. package/src/palettes/PaletteSpring.css +160 -0
  348. package/src/palettes/PaletteSpring.ts +16 -0
  349. package/src/palettes/PaletteWinter.css +172 -0
  350. package/src/palettes/PaletteWinter.ts +16 -0
  351. package/src/palettes/index.css +12 -0
  352. package/src/palettes/index.ts +29 -0
  353. package/src/schemas/ActionSchema.ts +140 -0
  354. package/src/schemas/ArticleSchema.ts +35 -0
  355. package/src/schemas/ButtonSchema.ts +99 -0
  356. package/src/schemas/CardListGridSchema.ts +102 -0
  357. package/src/schemas/ChoiceInputFieldSchema.ts +89 -0
  358. package/src/schemas/CodeSchema.ts +88 -0
  359. package/src/schemas/ContentSchema.ts +128 -0
  360. package/src/schemas/CoverImageHeaderSchema.ts +208 -0
  361. package/src/schemas/FeatureCardSchema.ts +161 -0
  362. package/src/schemas/FeatureGridSchema.ts +87 -0
  363. package/src/schemas/FeatureItemSchema.ts +68 -0
  364. package/src/schemas/FooterItemSchema.ts +57 -0
  365. package/src/schemas/FooterSchema.ts +116 -0
  366. package/src/schemas/FooterSectionSchema.ts +50 -0
  367. package/src/schemas/FormBlockSchema.ts +102 -0
  368. package/src/schemas/HeaderActionSchema.ts +83 -0
  369. package/src/schemas/HeroBlockSchema.ts +149 -0
  370. package/src/schemas/HtmlInputFieldSchema.ts +88 -0
  371. package/src/schemas/MetadataItemSchema.ts +35 -0
  372. package/src/schemas/PageBannerHeaderSchema.ts +206 -0
  373. package/src/schemas/PaletteSwitcherSchema.ts +66 -0
  374. package/src/schemas/ProductCardSchema.ts +264 -0
  375. package/src/schemas/SafeSpanSchema.ts +36 -0
  376. package/src/schemas/SectionSchema.ts +106 -0
  377. package/src/schemas/SelectInputFieldSchema.ts +137 -0
  378. package/src/schemas/TextInputFieldSchema.ts +129 -0
  379. package/src/schemas/ThemeSwitcherSchema.ts +97 -0
  380. package/src/schemas/__tests__/builders.test.ts +313 -0
  381. package/src/schemas/index.ts +34 -0
  382. package/src/setupTests.js +60 -0
  383. package/src/stories/Article.stories.tsx +549 -0
  384. package/src/stories/Button.stories.tsx +498 -0
  385. package/src/stories/CardListGrid.stories.tsx +539 -0
  386. package/src/stories/ChoiceInputField.stories.tsx +591 -0
  387. package/src/stories/Code.stories.tsx +711 -0
  388. package/src/stories/Content.stories.tsx +463 -0
  389. package/src/stories/CoverImageHeader.stories.tsx +794 -0
  390. package/src/stories/DataBinding.advanced.stories.tsx +548 -0
  391. package/src/stories/DataBinding.stories.tsx +452 -0
  392. package/src/stories/DataProvider.stories.tsx +1361 -0
  393. package/src/stories/FeatureCard.stories.tsx +642 -0
  394. package/src/stories/FeatureGrid.stories.tsx +669 -0
  395. package/src/stories/Footer.stories.tsx +724 -0
  396. package/src/stories/FormBlock.stories.tsx +834 -0
  397. package/src/stories/HeroBlock.stories.tsx +442 -0
  398. package/src/stories/Html.stories.tsx +264 -0
  399. package/src/stories/HtmlInputField.stories.tsx +558 -0
  400. package/src/stories/Introduction.stories.tsx +721 -0
  401. package/src/stories/LayoutBlocks.stories.tsx +382 -0
  402. package/src/stories/LayoutSystem.stories.tsx +253 -0
  403. package/src/stories/Logo.stories.tsx +400 -0
  404. package/src/stories/Markdown.stories.tsx +349 -0
  405. package/src/stories/Page.stories.tsx +762 -0
  406. package/src/stories/PageBannerHeader.stories.tsx +949 -0
  407. package/src/stories/PaletteSwitcher.stories.tsx +156 -0
  408. package/src/stories/ProductCard.stories.tsx +504 -0
  409. package/src/stories/QwickApp.stories.tsx +461 -0
  410. package/src/stories/ResponsiveMenu.stories.tsx +299 -0
  411. package/src/stories/SafeSpan.stories.tsx +612 -0
  412. package/src/stories/Section.stories.tsx +613 -0
  413. package/src/stories/SelectInputField.stories.tsx +605 -0
  414. package/src/stories/TextInputField.stories.tsx +526 -0
  415. package/src/stories/ThemeSwitcher.stories.tsx +170 -0
  416. package/src/stories/form/FormComponents.stories.tsx +588 -0
  417. package/src/templates/TemplateResolver.ts +156 -0
  418. package/src/templates/index.ts +6 -0
  419. package/src/tests/ConsoleWarningTest.tsx +30 -0
  420. package/src/tests/StorageKeyTest.tsx +110 -0
  421. package/src/tests/ThemeStorageKeyTest.tsx +114 -0
  422. package/src/types/CacheProvider.ts +14 -0
  423. package/src/types/ContentProxy.ts +99 -0
  424. package/src/types/DataTypes.ts +196 -0
  425. package/src/types/TemplateProvider.ts +9 -0
  426. package/src/types/TemplateResolver.ts +26 -0
  427. package/src/types/index.ts +99 -0
  428. package/src/utils/__tests__/createDataDrivenComponent.test.tsx.disabled +193 -0
  429. package/src/utils/__tests__/htmlTransform.test.tsx +255 -0
  430. package/src/utils/breakpoints.ts +87 -0
  431. package/src/utils/customPaletteManager.js +214 -0
  432. package/src/utils/dimensions.ts +147 -0
  433. package/src/utils/htmlTransform.tsx +323 -0
  434. package/src/utils/index.ts +16 -0
  435. package/src/utils/logger.ts +28 -0
  436. package/src/utils/paletteUtils.ts +78 -0
  437. package/src/utils/persistenceUtils.ts +107 -0
  438. package/src/utils/reactUtils.tsx +37 -0
  439. package/src/utils/spacing.ts +155 -0
  440. package/src/utils/themePerformanceMonitor.js +113 -0
  441. package/src/utils/themeUtils.ts +67 -0
@@ -0,0 +1,400 @@
1
+ /**
2
+ * Logo Component Stories
3
+ *
4
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
5
+ */
6
+
7
+ import type { Meta, StoryObj } from '@storybook/react';
8
+ import Logo from '../components/Logo';
9
+
10
+ const meta = {
11
+ title: 'Components/Logo',
12
+ component: Logo,
13
+ parameters: {
14
+ layout: 'centered',
15
+ docs: {
16
+ description: {
17
+ component: `Logo component provides flexible brand identity display with dynamic theming and customization options.
18
+
19
+ **Key Features:**
20
+ - **Theme Integration**: Automatically adapts colors based on current theme and variant
21
+ - **Multiple Sizes**: Five size variants from tiny to extra-large with consistent scaling
22
+ - **Badge System**: Optional badges with customizable shapes, positions, and offsets
23
+ - **Text Formatting**: Supports line breaks (\\n) and explicit spaces (\\s) for multi-line logos
24
+ - **Variant Support**: Multiple visual variants including high-contrast and monochrome options
25
+ - **Animation Ready**: Built-in support for CSS animations and transitions
26
+ - **Responsive Design**: Scales appropriately across different screen sizes
27
+
28
+ **Perfect for:**
29
+ - Application headers and navigation bars
30
+ - Brand identity in sidebars and footers
31
+ - Loading screens and splash pages
32
+ - Social media profile displays
33
+ - Business card and contact layouts
34
+ - Multi-brand applications requiring flexible branding`,
35
+ },
36
+ },
37
+ },
38
+ tags: ['autodocs'],
39
+ argTypes: {
40
+ name: {
41
+ control: 'text',
42
+ description: 'Logo name/text to display. Supports up to TWO parts with \\n for line breaks and \\s for explicit spaces.',
43
+ },
44
+ variant: {
45
+ control: 'select',
46
+ options: ['default', 'high-contrast', 'monochrome', 'on-primary'],
47
+ description: 'Visual variant of the logo',
48
+ },
49
+ size: {
50
+ control: 'select',
51
+ options: ['tiny', 'small', 'medium', 'large', 'extra-large'],
52
+ description: 'Size variant of the logo (controls both text size and component height)',
53
+ },
54
+ badge: {
55
+ control: 'select',
56
+ options: ['none', 'top-left', 'top-center', 'top-right', 'center-left', 'center', 'center-right', 'bottom-left', 'bottom-center', 'bottom-right'],
57
+ description: 'Badge position and visibility',
58
+ },
59
+ badgeShape: {
60
+ control: 'select',
61
+ options: ['circle', 'star', 'square', 'heart'],
62
+ description: 'Shape of the badge',
63
+ },
64
+ badgeOffset: {
65
+ control: 'object',
66
+ description: 'Offset from the calculated badge position. Automatically scales with logo size. Use this with any semantic position for precise control.',
67
+ },
68
+ fontFamily: {
69
+ control: 'text',
70
+ description: 'Font family for the logo text',
71
+ },
72
+ fontWeight: {
73
+ control: 'text',
74
+ description: 'Font weight for the logo text',
75
+ },
76
+ firstPartClass: {
77
+ control: 'text',
78
+ description: 'CSS class name for the first part of the logo text',
79
+ },
80
+ secondPartClass: {
81
+ control: 'text',
82
+ description: 'CSS class name for the second part of the logo text',
83
+ },
84
+ onClick: {
85
+ description: 'Click handler for the logo',
86
+ },
87
+ },
88
+ } satisfies Meta<typeof Logo>;
89
+
90
+ export default meta;
91
+ type Story = StoryObj<typeof meta>;
92
+
93
+ // Default story
94
+ export const Default: Story = {
95
+ args: {
96
+ name: 'Qwick Apps',
97
+ variant: 'default',
98
+ size: 'medium',
99
+ badge: 'top-right',
100
+ },
101
+ };
102
+
103
+ // Size Comparisons
104
+ export const SizeComparison: Story = {
105
+ render: () => (
106
+ <div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
107
+ <div style={{ textAlign: 'center' }}>
108
+ <Logo name="Tiny Logo" size="tiny" />
109
+ <p>Tiny (16px font, 32px height)</p>
110
+ </div>
111
+ <div style={{ textAlign: 'center' }}>
112
+ <Logo name="Small Logo" size="small" />
113
+ <p>Small (20px font, 40px height)</p>
114
+ </div>
115
+ <div style={{ textAlign: 'center' }}>
116
+ <Logo name="Medium Logo" size="medium" />
117
+ <p>Medium (28px font, 50px height)</p>
118
+ </div>
119
+ <div style={{ textAlign: 'center' }}>
120
+ <Logo name="Large Logo" size="large" />
121
+ <p>Large (36px font, 64px height)</p>
122
+ </div>
123
+ <div style={{ textAlign: 'center' }}>
124
+ <Logo name="X-Large Logo" size="extra-large" />
125
+ <p>Extra Large (48px font, 84px height)</p>
126
+ </div>
127
+ </div>
128
+ ),
129
+ parameters: {
130
+ docs: {
131
+ description: {
132
+ story: 'Comparison of all five Material UI-style logo sizes. Text, badges, and overall component height scale proportionally.',
133
+ },
134
+ },
135
+ },
136
+ };
137
+
138
+ // Color Variant Comparisons
139
+ export const ColorVariantComparison: Story = {
140
+ render: () => (
141
+ <div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
142
+ <div style={{ textAlign: 'center' }}>
143
+ <Logo variant="default" />
144
+ <p>Default</p>
145
+ </div>
146
+ <div style={{ textAlign: 'center' }}>
147
+ <Logo variant="high-contrast" />
148
+ <p>High Contrast</p>
149
+ </div>
150
+ <div style={{ textAlign: 'center' }}>
151
+ <Logo variant="monochrome" />
152
+ <p>Monochrome</p>
153
+ </div>
154
+ <div style={{ textAlign: 'center', background: 'var(--palette-primary-main, #3b82f6)', padding: '20px', borderRadius: '8px' }}>
155
+ <Logo variant="on-primary" />
156
+ <p style={{ color: 'white', margin: '10px 0 0 0' }}>On Primary</p>
157
+ </div>
158
+ </div>
159
+ ),
160
+ parameters: {
161
+ docs: {
162
+ description: {
163
+ story: 'Comparison of different color variants for various use cases and backgrounds.',
164
+ },
165
+ },
166
+ },
167
+ };
168
+
169
+ // Badge Shape Comparisons
170
+ export const BadgeShapeComparison: Story = {
171
+ render: () => (
172
+ <div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
173
+ <div style={{ textAlign: 'center' }}>
174
+ <Logo name="Circle Badge" badgeShape="circle" />
175
+ <p>Circle</p>
176
+ </div>
177
+ <div style={{ textAlign: 'center' }}>
178
+ <Logo name="Star Badge" badgeShape="star" />
179
+ <p>Star</p>
180
+ </div>
181
+ <div style={{ textAlign: 'center' }}>
182
+ <Logo name="Square Badge" badgeShape="square" />
183
+ <p>Square</p>
184
+ </div>
185
+ <div style={{ textAlign: 'center' }}>
186
+ <Logo name="Heart Badge" badgeShape="heart" />
187
+ <p>Heart</p>
188
+ </div>
189
+ <div style={{ textAlign: 'center' }}>
190
+ <Logo name="No Badge" badge="none" />
191
+ <p>None</p>
192
+ </div>
193
+ </div>
194
+ ),
195
+ parameters: {
196
+ docs: {
197
+ description: {
198
+ story: 'Comparison of different badge shapes and the option to hide the badge completely.',
199
+ },
200
+ },
201
+ },
202
+ };
203
+
204
+ // Badge Positioning
205
+ export const BadgePositioning: Story = {
206
+ render: () => (
207
+ <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '20px', alignItems: 'center', maxWidth: '600px' }}>
208
+ <div style={{ textAlign: 'center' }}>
209
+ <Logo name="TL" size="large" badge="top-left" />
210
+ <p>Top Left</p>
211
+ </div>
212
+ <div style={{ textAlign: 'center' }}>
213
+ <Logo name="TC" size="large" badge="top-center" />
214
+ <p>Top Center</p>
215
+ </div>
216
+ <div style={{ textAlign: 'center' }}>
217
+ <Logo name="TR" size="large" badge="top-right" />
218
+ <p>Top Right</p>
219
+ </div>
220
+ <div style={{ textAlign: 'center' }}>
221
+ <Logo name="CL" size="large" badge="center-left" />
222
+ <p>Center Left</p>
223
+ </div>
224
+ <div style={{ textAlign: 'center' }}>
225
+ <Logo name="C" size="large" badge="center" />
226
+ <p>Center</p>
227
+ </div>
228
+ <div style={{ textAlign: 'center' }}>
229
+ <Logo name="CR" size="large" badge="center-right" />
230
+ <p>Center Right</p>
231
+ </div>
232
+ <div style={{ textAlign: 'center' }}>
233
+ <Logo name="BL" size="large" badge="bottom-left" />
234
+ <p>Bottom Left</p>
235
+ </div>
236
+ <div style={{ textAlign: 'center' }}>
237
+ <Logo name="BC" size="large" badge="bottom-center" />
238
+ <p>Bottom Center</p>
239
+ </div>
240
+ <div style={{ textAlign: 'center' }}>
241
+ <Logo name="BR" size="large" badge="bottom-right" />
242
+ <p>Bottom Right</p>
243
+ </div>
244
+ </div>
245
+ ),
246
+ parameters: {
247
+ docs: {
248
+ description: {
249
+ story: 'Demonstrates all semantic positioning options for the badge. Notice how the badge positions adapt to the text size and position.',
250
+ },
251
+ },
252
+ },
253
+ };
254
+
255
+ // Font and Styling Customization
256
+ export const FontStylingComparison: Story = {
257
+ render: () => (
258
+ <div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
259
+ <div style={{ textAlign: 'center' }}>
260
+ <Logo name="Default Font" size="large" />
261
+ <p>Default (Segoe UI, Bold)</p>
262
+ </div>
263
+ <div style={{ textAlign: 'center' }}>
264
+ <Logo name="Light Weight" fontWeight="300" size="large" />
265
+ <p>Light Weight</p>
266
+ </div>
267
+ <div style={{ textAlign: 'center' }}>
268
+ <Logo name="Serif Font" fontFamily="Georgia, serif" fontWeight="normal" size="large" />
269
+ <p>Serif Font</p>
270
+ </div>
271
+ <div style={{ textAlign: 'center' }}>
272
+ <Logo
273
+ name="Custom Colors"
274
+ firstPartClass="custom-first-part"
275
+ secondPartClass="custom-second-part"
276
+ size="large"
277
+ />
278
+ <p>Custom CSS Classes</p>
279
+ </div>
280
+ </div>
281
+ ),
282
+ parameters: {
283
+ docs: {
284
+ description: {
285
+ story: 'Comparison of different font and styling options including weight, family, and custom CSS classes.',
286
+ },
287
+ },
288
+ },
289
+ };
290
+
291
+ // Advanced Badge Positioning
292
+ export const AdvancedBadgePositioning: Story = {
293
+ render: () => (
294
+ <div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
295
+ <div style={{ textAlign: 'center' }}>
296
+ <Logo name="Qwick Apps" size="large" />
297
+ <p>Default Position</p>
298
+ </div>
299
+ <div style={{ textAlign: 'center' }}>
300
+ <Logo name="Qwick Apps" size="large" badge="center" badgeOffset={{ x: -29, y: -12 }} />
301
+ <p>Center + (-29, -12)</p>
302
+ </div>
303
+ </div>
304
+ ),
305
+ parameters: {
306
+ docs: {
307
+ description: {
308
+ story: 'Advanced badge positioning using semantic positions combined with offset adjustments. Offsets automatically scale with logo size for consistent relative positioning.',
309
+ },
310
+ },
311
+ },
312
+ };
313
+
314
+ // Interactive Example
315
+ export const Interactive: Story = {
316
+ args: {
317
+ name: 'Qwick Apps',
318
+ variant: 'default',
319
+ size: 'large',
320
+ badge: 'top-right',
321
+ badgeShape: 'circle',
322
+ },
323
+ parameters: {
324
+ docs: {
325
+ description: {
326
+ story: 'Interactive example - use the controls below to customize the logo in real-time.',
327
+ },
328
+ },
329
+ },
330
+ };
331
+
332
+ // Text Formatting Examples
333
+ export const TextFormatting: Story = {
334
+ render: () => (
335
+ <div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
336
+ <div style={{ textAlign: 'center' }}>
337
+ <Logo name="QwickApps" size="medium" />
338
+ <p>Single word (one color)</p>
339
+ </div>
340
+ <div style={{ textAlign: 'center' }}>
341
+ <Logo name="Qwick Apps" size="medium" />
342
+ <p>Two words (two colors, no space)</p>
343
+ </div>
344
+ <div style={{ textAlign: 'center' }}>
345
+ <Logo name="Qwick\sApps" size="medium" />
346
+ <p>Explicit space (\\s)</p>
347
+ </div>
348
+ <div style={{ textAlign: 'center' }}>
349
+ <Logo name="Qwick\nApps" size="medium" />
350
+ <p>Line break (\\n)</p>
351
+ </div>
352
+ <div style={{ textAlign: 'center' }}>
353
+ <Logo name="My\sCompany\nInc" size="medium" />
354
+ <p>Combined formatting</p>
355
+ </div>
356
+ <div style={{ textAlign: 'center' }}>
357
+ <Logo name="Part1\nPart2\nPart3" size="medium" />
358
+ <p>Multiple \\n (only 2 parts max)</p>
359
+ </div>
360
+ </div>
361
+ ),
362
+ parameters: {
363
+ docs: {
364
+ description: {
365
+ story: 'Text formatting examples showing single words, two-color text, explicit spaces (\\s), line breaks (\\n), and combined formatting. Note: Multiple \\n sequences only create TWO parts maximum.',
366
+ },
367
+ },
368
+ },
369
+ };
370
+
371
+ // Badge Position Scaling Demo
372
+ export const BadgePositionScaling: Story = {
373
+ render: () => (
374
+ <div style={{ display: 'flex', gap: '30px', flexWrap: 'wrap', alignItems: 'center' }}>
375
+ <div style={{ textAlign: 'center' }}>
376
+ <Logo size="tiny" badge="center" badgeOffset={{ x: -29, y: -11 }} />
377
+ <p>Tiny + Center + Offset</p>
378
+ </div>
379
+ <div style={{ textAlign: 'center' }}>
380
+ <Logo size="small" badge="center" badgeOffset={{ x: -29, y: -11 }} />
381
+ <p>Small + same + Offset</p>
382
+ </div>
383
+ <div style={{ textAlign: 'center' }}>
384
+ <Logo size="medium" badge="center" badgeOffset={{ x: -29, y: -11 }} />
385
+ <p>Medium + Same Offset</p>
386
+ </div>
387
+ <div style={{ textAlign: 'center' }}>
388
+ <Logo size="large" badge="center" badgeOffset={{ x: -29, y: -11 }} />
389
+ <p>Large + Same Offset</p>
390
+ </div>
391
+ </div>
392
+ ),
393
+ parameters: {
394
+ docs: {
395
+ description: {
396
+ story: 'Demonstrates how badge offsets automatically scale with logo size. The same semantic position + offset values maintain consistent relative positioning across different sizes.',
397
+ },
398
+ },
399
+ },
400
+ };