@qwickapps/cms 0.2.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 (259) hide show
  1. package/LICENSE +45 -0
  2. package/README.md +203 -0
  3. package/dist/admin/components/AccordionItemRowLabel.d.ts +20 -0
  4. package/dist/admin/components/AccordionItemRowLabel.d.ts.map +1 -0
  5. package/dist/admin/components/AccordionItemRowLabel.js +47 -0
  6. package/dist/admin/components/AccordionItemRowLabel.js.map +1 -0
  7. package/dist/admin/components/BlockRowLabel.d.ts +19 -0
  8. package/dist/admin/components/BlockRowLabel.d.ts.map +1 -0
  9. package/dist/admin/components/BlockRowLabel.js +52 -0
  10. package/dist/admin/components/BlockRowLabel.js.map +1 -0
  11. package/dist/admin/components/ButtonRowLabel.d.ts +23 -0
  12. package/dist/admin/components/ButtonRowLabel.d.ts.map +1 -0
  13. package/dist/admin/components/ButtonRowLabel.js +63 -0
  14. package/dist/admin/components/ButtonRowLabel.js.map +1 -0
  15. package/dist/admin/components/CardRowLabel.d.ts +23 -0
  16. package/dist/admin/components/CardRowLabel.d.ts.map +1 -0
  17. package/dist/admin/components/CardRowLabel.js +59 -0
  18. package/dist/admin/components/CardRowLabel.js.map +1 -0
  19. package/dist/admin/components/ContentPreview.d.ts +12 -0
  20. package/dist/admin/components/ContentPreview.d.ts.map +1 -0
  21. package/dist/admin/components/ContentPreview.js +95 -0
  22. package/dist/admin/components/ContentPreview.js.map +1 -0
  23. package/dist/admin/components/Dashboard.d.ts +13 -0
  24. package/dist/admin/components/Dashboard.d.ts.map +1 -0
  25. package/dist/admin/components/Dashboard.js +7 -0
  26. package/dist/admin/components/Dashboard.js.map +1 -0
  27. package/dist/admin/components/DashboardContent.d.ts +11 -0
  28. package/dist/admin/components/DashboardContent.d.ts.map +1 -0
  29. package/dist/admin/components/DashboardContent.js +129 -0
  30. package/dist/admin/components/DashboardContent.js.map +1 -0
  31. package/dist/admin/components/FormFieldRowLabel.d.ts +21 -0
  32. package/dist/admin/components/FormFieldRowLabel.d.ts.map +1 -0
  33. package/dist/admin/components/FormFieldRowLabel.js +47 -0
  34. package/dist/admin/components/FormFieldRowLabel.js.map +1 -0
  35. package/dist/admin/components/Icon.d.ts +10 -0
  36. package/dist/admin/components/Icon.d.ts.map +1 -0
  37. package/dist/admin/components/Icon.js +16 -0
  38. package/dist/admin/components/Icon.js.map +1 -0
  39. package/dist/admin/components/Logo.d.ts +10 -0
  40. package/dist/admin/components/Logo.d.ts.map +1 -0
  41. package/dist/admin/components/Logo.js +16 -0
  42. package/dist/admin/components/Logo.js.map +1 -0
  43. package/dist/admin/components/NavigationItemRowLabel.d.ts +21 -0
  44. package/dist/admin/components/NavigationItemRowLabel.d.ts.map +1 -0
  45. package/dist/admin/components/NavigationItemRowLabel.js +43 -0
  46. package/dist/admin/components/NavigationItemRowLabel.js.map +1 -0
  47. package/dist/admin/components/NavigationSubItemRowLabel.d.ts +19 -0
  48. package/dist/admin/components/NavigationSubItemRowLabel.d.ts.map +1 -0
  49. package/dist/admin/components/NavigationSubItemRowLabel.js +32 -0
  50. package/dist/admin/components/NavigationSubItemRowLabel.js.map +1 -0
  51. package/dist/admin/components/PagesListHeader.d.ts +13 -0
  52. package/dist/admin/components/PagesListHeader.d.ts.map +1 -0
  53. package/dist/admin/components/PagesListHeader.js +48 -0
  54. package/dist/admin/components/PagesListHeader.js.map +1 -0
  55. package/dist/admin/components/ProductsListHeader.d.ts +13 -0
  56. package/dist/admin/components/ProductsListHeader.d.ts.map +1 -0
  57. package/dist/admin/components/ProductsListHeader.js +55 -0
  58. package/dist/admin/components/ProductsListHeader.js.map +1 -0
  59. package/dist/admin/components/styles/CollectionListHeader.css +161 -0
  60. package/dist/admin/components/styles/ContentPreview.css +416 -0
  61. package/dist/admin/components/styles/Dashboard.css +338 -0
  62. package/dist/admin/fields/ColorInput.d.ts +13 -0
  63. package/dist/admin/fields/ColorInput.d.ts.map +1 -0
  64. package/dist/admin/fields/ColorInput.js +201 -0
  65. package/dist/admin/fields/ColorInput.js.map +1 -0
  66. package/dist/admin/fields/index.d.ts +9 -0
  67. package/dist/admin/fields/index.d.ts.map +1 -0
  68. package/dist/admin/fields/index.js +9 -0
  69. package/dist/admin/fields/index.js.map +1 -0
  70. package/dist/admin/index.d.ts +24 -0
  71. package/dist/admin/index.d.ts.map +1 -0
  72. package/dist/admin/index.js +30 -0
  73. package/dist/admin/index.js.map +1 -0
  74. package/dist/blocks/ContentBlocks.d.ts +75 -0
  75. package/dist/blocks/ContentBlocks.d.ts.map +1 -0
  76. package/dist/blocks/ContentBlocks.js +1241 -0
  77. package/dist/blocks/ContentBlocks.js.map +1 -0
  78. package/dist/blocks/index.d.ts +2 -0
  79. package/dist/blocks/index.d.ts.map +1 -0
  80. package/dist/blocks/index.js +3 -0
  81. package/dist/blocks/index.js.map +1 -0
  82. package/dist/client/PayloadAPIClient.d.ts +65 -0
  83. package/dist/client/PayloadAPIClient.d.ts.map +1 -0
  84. package/dist/client/PayloadAPIClient.js +167 -0
  85. package/dist/client/PayloadAPIClient.js.map +1 -0
  86. package/dist/collections/Automations.d.ts +12 -0
  87. package/dist/collections/Automations.d.ts.map +1 -0
  88. package/dist/collections/Automations.js +741 -0
  89. package/dist/collections/Automations.js.map +1 -0
  90. package/dist/collections/Features.d.ts +3 -0
  91. package/dist/collections/Features.d.ts.map +1 -0
  92. package/dist/collections/Features.js +69 -0
  93. package/dist/collections/Features.js.map +1 -0
  94. package/dist/collections/Footer.d.ts +11 -0
  95. package/dist/collections/Footer.d.ts.map +1 -0
  96. package/dist/collections/Footer.js +130 -0
  97. package/dist/collections/Footer.js.map +1 -0
  98. package/dist/collections/FormSubmissions.d.ts +3 -0
  99. package/dist/collections/FormSubmissions.d.ts.map +1 -0
  100. package/dist/collections/FormSubmissions.js +119 -0
  101. package/dist/collections/FormSubmissions.js.map +1 -0
  102. package/dist/collections/Forms.d.ts +16 -0
  103. package/dist/collections/Forms.d.ts.map +1 -0
  104. package/dist/collections/Forms.js +308 -0
  105. package/dist/collections/Forms.js.map +1 -0
  106. package/dist/collections/HeroBlocks.d.ts +3 -0
  107. package/dist/collections/HeroBlocks.d.ts.map +1 -0
  108. package/dist/collections/HeroBlocks.js +115 -0
  109. package/dist/collections/HeroBlocks.js.map +1 -0
  110. package/dist/collections/Media.d.ts +3 -0
  111. package/dist/collections/Media.d.ts.map +1 -0
  112. package/dist/collections/Media.js +26 -0
  113. package/dist/collections/Media.js.map +1 -0
  114. package/dist/collections/Navigation.d.ts +3 -0
  115. package/dist/collections/Navigation.d.ts.map +1 -0
  116. package/dist/collections/Navigation.js +106 -0
  117. package/dist/collections/Navigation.js.map +1 -0
  118. package/dist/collections/Pages.d.ts +3 -0
  119. package/dist/collections/Pages.d.ts.map +1 -0
  120. package/dist/collections/Pages.js +94 -0
  121. package/dist/collections/Pages.js.map +1 -0
  122. package/dist/collections/Posts.d.ts +3 -0
  123. package/dist/collections/Posts.d.ts.map +1 -0
  124. package/dist/collections/Posts.js +134 -0
  125. package/dist/collections/Posts.js.map +1 -0
  126. package/dist/collections/Products.d.ts +3 -0
  127. package/dist/collections/Products.d.ts.map +1 -0
  128. package/dist/collections/Products.js +264 -0
  129. package/dist/collections/Products.js.map +1 -0
  130. package/dist/collections/Users.d.ts +3 -0
  131. package/dist/collections/Users.d.ts.map +1 -0
  132. package/dist/collections/Users.js +53 -0
  133. package/dist/collections/Users.js.map +1 -0
  134. package/dist/collections/hooks/index.d.ts +9 -0
  135. package/dist/collections/hooks/index.d.ts.map +1 -0
  136. package/dist/collections/hooks/index.js +9 -0
  137. package/dist/collections/hooks/index.js.map +1 -0
  138. package/dist/collections/hooks/loggingHooks.d.ts +45 -0
  139. package/dist/collections/hooks/loggingHooks.d.ts.map +1 -0
  140. package/dist/collections/hooks/loggingHooks.js +109 -0
  141. package/dist/collections/hooks/loggingHooks.js.map +1 -0
  142. package/dist/collections/index.d.ts +14 -0
  143. package/dist/collections/index.d.ts.map +1 -0
  144. package/dist/collections/index.js +16 -0
  145. package/dist/collections/index.js.map +1 -0
  146. package/dist/components/index.d.ts +2 -0
  147. package/dist/components/index.d.ts.map +1 -0
  148. package/dist/components/index.js +4 -0
  149. package/dist/components/index.js.map +1 -0
  150. package/dist/globals/AdvancedSettings.d.ts +8 -0
  151. package/dist/globals/AdvancedSettings.d.ts.map +1 -0
  152. package/dist/globals/AdvancedSettings.js +157 -0
  153. package/dist/globals/AdvancedSettings.js.map +1 -0
  154. package/dist/globals/Integrations.d.ts +8 -0
  155. package/dist/globals/Integrations.d.ts.map +1 -0
  156. package/dist/globals/Integrations.js +270 -0
  157. package/dist/globals/Integrations.js.map +1 -0
  158. package/dist/globals/SiteSettings.d.ts +8 -0
  159. package/dist/globals/SiteSettings.d.ts.map +1 -0
  160. package/dist/globals/SiteSettings.js +258 -0
  161. package/dist/globals/SiteSettings.js.map +1 -0
  162. package/dist/globals/ThemeSettings.d.ts +11 -0
  163. package/dist/globals/ThemeSettings.d.ts.map +1 -0
  164. package/dist/globals/ThemeSettings.js +92 -0
  165. package/dist/globals/ThemeSettings.js.map +1 -0
  166. package/dist/globals/index.d.ts +5 -0
  167. package/dist/globals/index.d.ts.map +1 -0
  168. package/dist/globals/index.js +6 -0
  169. package/dist/globals/index.js.map +1 -0
  170. package/dist/index.d.ts +9 -0
  171. package/dist/index.d.ts.map +1 -0
  172. package/dist/index.js +14 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/logging/index.d.ts +73 -0
  175. package/dist/logging/index.d.ts.map +1 -0
  176. package/dist/logging/index.js +190 -0
  177. package/dist/logging/index.js.map +1 -0
  178. package/dist/nextjs/BlockRenderer.d.ts +227 -0
  179. package/dist/nextjs/BlockRenderer.d.ts.map +1 -0
  180. package/dist/nextjs/BlockRenderer.js +358 -0
  181. package/dist/nextjs/BlockRenderer.js.map +1 -0
  182. package/dist/nextjs/ClientHomePage.d.ts +6 -0
  183. package/dist/nextjs/ClientHomePage.d.ts.map +1 -0
  184. package/dist/nextjs/ClientHomePage.js +17 -0
  185. package/dist/nextjs/ClientHomePage.js.map +1 -0
  186. package/dist/nextjs/ClientSideQwickApp.d.ts +23 -0
  187. package/dist/nextjs/ClientSideQwickApp.d.ts.map +1 -0
  188. package/dist/nextjs/ClientSideQwickApp.js +50 -0
  189. package/dist/nextjs/ClientSideQwickApp.js.map +1 -0
  190. package/dist/nextjs/DynamicQwickApp.d.ts +9 -0
  191. package/dist/nextjs/DynamicQwickApp.d.ts.map +1 -0
  192. package/dist/nextjs/DynamicQwickApp.js +19 -0
  193. package/dist/nextjs/DynamicQwickApp.js.map +1 -0
  194. package/dist/nextjs/FooterFromSettings.d.ts +6 -0
  195. package/dist/nextjs/FooterFromSettings.d.ts.map +1 -0
  196. package/dist/nextjs/FooterFromSettings.js +72 -0
  197. package/dist/nextjs/FooterFromSettings.js.map +1 -0
  198. package/dist/nextjs/FormBlockComponent.d.ts +25 -0
  199. package/dist/nextjs/FormBlockComponent.d.ts.map +1 -0
  200. package/dist/nextjs/FormBlockComponent.js +110 -0
  201. package/dist/nextjs/FormBlockComponent.js.map +1 -0
  202. package/dist/nextjs/HomePageContent.d.ts +6 -0
  203. package/dist/nextjs/HomePageContent.d.ts.map +1 -0
  204. package/dist/nextjs/HomePageContent.js +50 -0
  205. package/dist/nextjs/HomePageContent.js.map +1 -0
  206. package/dist/nextjs/LivePreviewClient.d.ts +40 -0
  207. package/dist/nextjs/LivePreviewClient.d.ts.map +1 -0
  208. package/dist/nextjs/LivePreviewClient.js +35 -0
  209. package/dist/nextjs/LivePreviewClient.js.map +1 -0
  210. package/dist/nextjs/RefreshRouteOnSave.d.ts +31 -0
  211. package/dist/nextjs/RefreshRouteOnSave.d.ts.map +1 -0
  212. package/dist/nextjs/RefreshRouteOnSave.js +59 -0
  213. package/dist/nextjs/RefreshRouteOnSave.js.map +1 -0
  214. package/dist/nextjs/ScriptsInjector.d.ts +2 -0
  215. package/dist/nextjs/ScriptsInjector.d.ts.map +1 -0
  216. package/dist/nextjs/ScriptsInjector.js +73 -0
  217. package/dist/nextjs/ScriptsInjector.js.map +1 -0
  218. package/dist/nextjs/ServerQwickApp.d.ts +13 -0
  219. package/dist/nextjs/ServerQwickApp.d.ts.map +1 -0
  220. package/dist/nextjs/ServerQwickApp.js +159 -0
  221. package/dist/nextjs/ServerQwickApp.js.map +1 -0
  222. package/dist/nextjs/SettingsProvider.d.ts +110 -0
  223. package/dist/nextjs/SettingsProvider.d.ts.map +1 -0
  224. package/dist/nextjs/SettingsProvider.js +107 -0
  225. package/dist/nextjs/SettingsProvider.js.map +1 -0
  226. package/dist/nextjs/SiteLogo.d.ts +35 -0
  227. package/dist/nextjs/SiteLogo.d.ts.map +1 -0
  228. package/dist/nextjs/SiteLogo.js +105 -0
  229. package/dist/nextjs/SiteLogo.js.map +1 -0
  230. package/dist/nextjs/framework.d.ts +19 -0
  231. package/dist/nextjs/framework.d.ts.map +1 -0
  232. package/dist/nextjs/framework.js +35 -0
  233. package/dist/nextjs/framework.js.map +1 -0
  234. package/dist/nextjs/index.d.ts +38 -0
  235. package/dist/nextjs/index.d.ts.map +1 -0
  236. package/dist/nextjs/index.js +47 -0
  237. package/dist/nextjs/index.js.map +1 -0
  238. package/dist/nextjs/metadata.d.ts +20 -0
  239. package/dist/nextjs/metadata.d.ts.map +1 -0
  240. package/dist/nextjs/metadata.js +107 -0
  241. package/dist/nextjs/metadata.js.map +1 -0
  242. package/dist/plugins/index.d.ts +2 -0
  243. package/dist/plugins/index.d.ts.map +1 -0
  244. package/dist/plugins/index.js +3 -0
  245. package/dist/plugins/index.js.map +1 -0
  246. package/dist/plugins/qwickapps-plugin.d.ts +78 -0
  247. package/dist/plugins/qwickapps-plugin.d.ts.map +1 -0
  248. package/dist/plugins/qwickapps-plugin.js +154 -0
  249. package/dist/plugins/qwickapps-plugin.js.map +1 -0
  250. package/dist/providers/PayloadDataProvider.d.ts +72 -0
  251. package/dist/providers/PayloadDataProvider.d.ts.map +1 -0
  252. package/dist/providers/PayloadDataProvider.js +222 -0
  253. package/dist/providers/PayloadDataProvider.js.map +1 -0
  254. package/dist/providers/index.d.ts +2 -0
  255. package/dist/providers/index.d.ts.map +1 -0
  256. package/dist/providers/index.js +3 -0
  257. package/dist/providers/index.js.map +1 -0
  258. package/dist/styles/admin-theme.css +352 -0
  259. package/package.json +104 -0
@@ -0,0 +1,358 @@
1
+ // @ts-nocheck
2
+ 'use client';
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ /**
5
+ * BlockRenderer - Generic component that maps Payload CMS blocks to QwickApps Framework components
6
+ *
7
+ * This component provides a data-driven rendering system that transforms Payload blocks
8
+ * into their corresponding QwickApps Framework components.
9
+ *
10
+ * Supported block types:
11
+ * - hero → HeroBlock
12
+ * - textSection → Section with rich text
13
+ * - featureGrid → GridLayout with FeatureCard children
14
+ * - ctaSection → Section with Button actions
15
+ * - image → Next.js Image component
16
+ * - spacer → Spacing div
17
+ *
18
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
19
+ */
20
+ import { useState } from 'react';
21
+ import Image from 'next/image';
22
+ import { Paper, Card, CardContent, CardActions, Collapse, IconButton, Box, Typography } from '@mui/material';
23
+ import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
24
+ import { HeroBlock, Section, GridLayout, Button, FeatureCard, Text, iconMap, ProductCard } from './framework';
25
+ import { FormBlockComponent } from './FormBlockComponent';
26
+ /**
27
+ * Helper function to convert Payload Lexical rich text to plain text
28
+ * Handles Payload CMS 3.0 Lexical editor format
29
+ */
30
+ function renderRichText(content) {
31
+ if (!content)
32
+ return '';
33
+ // Handle string content directly
34
+ if (typeof content === 'string')
35
+ return content;
36
+ // Handle Lexical format: { root: { children: [...] } }
37
+ if (content.root && content.root.children) {
38
+ return extractTextFromLexical(content.root.children);
39
+ }
40
+ // Handle direct children array
41
+ if (Array.isArray(content)) {
42
+ return extractTextFromLexical(content);
43
+ }
44
+ return '';
45
+ }
46
+ /**
47
+ * Recursively extract text from Lexical nodes
48
+ */
49
+ function extractTextFromLexical(nodes) {
50
+ if (!Array.isArray(nodes))
51
+ return '';
52
+ return nodes.map((node) => {
53
+ // Text node
54
+ if (node.type === 'text' && node.text) {
55
+ return node.text;
56
+ }
57
+ // Nodes with children (paragraphs, lists, etc.)
58
+ if (node.children && Array.isArray(node.children)) {
59
+ const text = extractTextFromLexical(node.children);
60
+ // Add line breaks for paragraph and list items
61
+ if (node.type === 'paragraph' || node.type === 'listitem') {
62
+ return text + '\n';
63
+ }
64
+ return text;
65
+ }
66
+ return '';
67
+ }).join('');
68
+ }
69
+ /**
70
+ * Helper function to map spacing values to pixel heights
71
+ */
72
+ function getSpacerHeight(height) {
73
+ const heightMap = {
74
+ small: '24px',
75
+ medium: '48px',
76
+ large: '96px',
77
+ xlarge: '144px',
78
+ };
79
+ return heightMap[height || 'medium'];
80
+ }
81
+ /**
82
+ * Helper function to map image size to width
83
+ */
84
+ function getImageSize(size) {
85
+ const sizeMap = {
86
+ small: '400px',
87
+ medium: '600px',
88
+ large: '800px',
89
+ full: '100%',
90
+ };
91
+ return sizeMap[size || 'large'];
92
+ }
93
+ /**
94
+ * Extract ViewSchema props from a block
95
+ * These props should be passed through to all framework components
96
+ */
97
+ function extractViewSchemaProps(block) {
98
+ const props = {};
99
+ // Layout & Spacing
100
+ if (block.padding !== undefined)
101
+ props.padding = block.padding;
102
+ if (block.marginTop !== undefined)
103
+ props.marginTop = block.marginTop;
104
+ if (block.marginBottom !== undefined)
105
+ props.marginBottom = block.marginBottom;
106
+ if (block.width !== undefined)
107
+ props.width = block.width;
108
+ if (block.maxWidth !== undefined)
109
+ props.maxWidth = block.maxWidth;
110
+ // Colors & Background
111
+ if (block.background !== undefined)
112
+ props.background = block.background;
113
+ if (block.color !== undefined)
114
+ props.color = block.color;
115
+ if (block.backgroundImage !== undefined) {
116
+ // Handle both { url: string } and string formats - always convert to string
117
+ props.backgroundImage = (typeof block.backgroundImage === 'string'
118
+ ? block.backgroundImage
119
+ : block.backgroundImage?.url);
120
+ }
121
+ if (block.backgroundGradient !== undefined)
122
+ props.backgroundGradient = block.backgroundGradient;
123
+ // Advanced
124
+ if (block.className !== undefined)
125
+ props.className = block.className;
126
+ if (block.sx !== undefined) {
127
+ // Parse sx if it's a string
128
+ try {
129
+ props.sx = typeof block.sx === 'string' ? JSON.parse(block.sx) : block.sx;
130
+ }
131
+ catch {
132
+ console.warn('Failed to parse sx prop:', block.sx);
133
+ }
134
+ }
135
+ if (block.id !== undefined)
136
+ props.id = block.id;
137
+ return props;
138
+ }
139
+ /**
140
+ * Render a single block based on its type
141
+ */
142
+ function renderBlock(block, index) {
143
+ const key = block.id || `block-${index}`;
144
+ switch (block.blockType) {
145
+ case 'hero': {
146
+ const heroBlock = block;
147
+ const viewProps = extractViewSchemaProps(heroBlock);
148
+ return (_jsx(HeroBlock, { title: heroBlock.title, subtitle: heroBlock.subtitle, backgroundImage: heroBlock.backgroundImage?.url || undefined, backgroundGradient: heroBlock.backgroundGradient, textAlign: heroBlock.textAlign, height: heroBlock.blockHeight, ...viewProps, children: heroBlock.actions && heroBlock.actions.length > 0 && (_jsx("div", { style: { display: 'flex', gap: '16px', justifyContent: heroBlock.textAlign === 'left' ? 'flex-start' : heroBlock.textAlign === 'right' ? 'flex-end' : 'center', flexWrap: 'wrap' }, children: heroBlock.actions.map((action, idx) => (_jsx(Button, { variant: action.variant || 'contained', buttonSize: action.buttonSize || 'medium', href: action.href, children: action.label }, `${key}-action-${idx}`))) })) }, key));
149
+ }
150
+ case 'textSection': {
151
+ const textSection = block;
152
+ const viewProps = extractViewSchemaProps(textSection);
153
+ // Map maxWidth to contentMaxWidth for Section component
154
+ const sectionProps = { ...viewProps };
155
+ if (textSection.maxWidth) {
156
+ sectionProps.contentMaxWidth = textSection.maxWidth;
157
+ delete sectionProps.maxWidth;
158
+ }
159
+ return (_jsxs(Section, { ...sectionProps, children: [textSection.heading && (_jsx(Text, { variant: "h4", align: textSection.textAlign, children: textSection.heading })), _jsx(Text, { variant: "body1", align: textSection.textAlign, color: textSection.color, children: renderRichText(textSection.content) })] }, key));
160
+ }
161
+ case 'featureGrid': {
162
+ const featureGrid = block;
163
+ const viewProps = extractViewSchemaProps(featureGrid);
164
+ return (_jsxs(Section, { ...viewProps, children: [featureGrid.heading && (_jsx(Text, { variant: "h3", align: "center", style: { marginBottom: '32px' }, children: featureGrid.heading })), _jsx(GridLayout, { columns: (featureGrid.columns || 3), spacing: featureGrid.spacing, children: featureGrid.features.map((feature) => {
165
+ // Convert icon name to Material UI icon component
166
+ const iconData = feature.icon ? iconMap[feature.icon] : null;
167
+ const IconComponent = iconData?.component;
168
+ return (_jsx(FeatureCard, { feature: {
169
+ id: feature.id,
170
+ title: feature.title,
171
+ description: feature.description,
172
+ icon: IconComponent ? _jsx(IconComponent, {}) : undefined
173
+ }, span: (12 / (featureGrid.columns || 3)) }, feature.id));
174
+ }) })] }, key));
175
+ }
176
+ case 'ctaSection': {
177
+ const ctaSection = block;
178
+ const viewProps = extractViewSchemaProps(ctaSection);
179
+ return (_jsxs(Section, { ...viewProps, children: [_jsx(Text, { variant: "h3", align: ctaSection.textAlign, children: ctaSection.heading }), ctaSection.description && (_jsx(Text, { variant: "body1", align: ctaSection.textAlign, children: ctaSection.description })), _jsx("div", { style: { display: 'flex', gap: '16px', justifyContent: ctaSection.textAlign === 'left' ? 'flex-start' : ctaSection.textAlign === 'right' ? 'flex-end' : 'center', marginTop: '24px', flexWrap: 'wrap' }, children: ctaSection.buttons.map((button, idx) => (_jsx(Button, { variant: button.variant || 'contained', buttonSize: button.size || 'large', href: button.href, children: button.label }, `${key}-button-${idx}`))) })] }, key));
180
+ }
181
+ case 'image': {
182
+ const imageBlock = block;
183
+ const viewProps = extractViewSchemaProps(imageBlock);
184
+ const containerStyle = {
185
+ width: imageBlock.size ? getImageSize(imageBlock.size) : viewProps.width,
186
+ maxWidth: viewProps.maxWidth,
187
+ margin: '0 auto',
188
+ };
189
+ return (_jsxs("div", { style: containerStyle, className: viewProps.className, id: viewProps.id, children: [imageBlock.image?.url && (_jsx(Image, { src: imageBlock.image.url, alt: imageBlock.alt, width: imageBlock.image.width || 800, height: imageBlock.image.height || 600, style: { width: '100%', height: 'auto' } })), imageBlock.caption && (_jsx(Text, { variant: "caption", align: "center", style: { marginTop: '8px', display: 'block' }, children: imageBlock.caption }))] }, key));
190
+ }
191
+ case 'spacer': {
192
+ const spacer = block;
193
+ return (_jsx("div", { style: { height: getSpacerHeight(spacer.height) }, "aria-hidden": "true" }, key));
194
+ }
195
+ case 'code': {
196
+ const codeBlock = block;
197
+ const viewProps = extractViewSchemaProps(codeBlock);
198
+ return (_jsx(Section, { ...viewProps, children: _jsxs(Paper, { variant: "outlined", sx: {
199
+ backgroundColor: 'var(--theme-surface-variant)',
200
+ border: '1px solid var(--theme-outline)',
201
+ borderRadius: 1,
202
+ overflow: 'hidden',
203
+ }, children: [(codeBlock.title || codeBlock.showCopy) && (_jsx(Box, { sx: {
204
+ display: 'flex',
205
+ justifyContent: 'space-between',
206
+ alignItems: 'center',
207
+ px: 2,
208
+ py: 1,
209
+ backgroundColor: 'var(--theme-surface)',
210
+ borderBottom: '1px solid var(--theme-outline)',
211
+ }, children: codeBlock.title && (_jsx(Typography, { variant: "body2", sx: {
212
+ fontFamily: 'Monaco, Consolas, monospace',
213
+ color: 'var(--theme-on-surface)',
214
+ opacity: 0.8,
215
+ }, children: codeBlock.title })) })), _jsx(Box, { component: "pre", sx: {
216
+ margin: 0,
217
+ padding: 2,
218
+ fontFamily: 'Monaco, Consolas, monospace',
219
+ fontSize: '0.875rem',
220
+ lineHeight: 1.5,
221
+ color: 'var(--theme-on-surface)',
222
+ overflow: 'auto',
223
+ whiteSpace: codeBlock.wrapLines ? 'pre-wrap' : 'pre',
224
+ }, children: _jsx("code", { children: codeBlock.code }) })] }) }, key));
225
+ }
226
+ case 'productGrid': {
227
+ const productGrid = block;
228
+ const viewProps = extractViewSchemaProps(productGrid);
229
+ // Helper to extract text from Lexical rich text
230
+ const extractTextFromLexical = (lexicalData) => {
231
+ if (!lexicalData?.root?.children)
232
+ return '';
233
+ const extractText = (node) => {
234
+ if (node.type === 'text')
235
+ return node.text || '';
236
+ if (node.children)
237
+ return node.children.map(extractText).join('');
238
+ return '';
239
+ };
240
+ return lexicalData.root.children.map(extractText).join(' ').trim();
241
+ };
242
+ // Helper to parse technologies string into array
243
+ const parseTechnologies = (techString) => {
244
+ if (!techString)
245
+ return [];
246
+ return techString.split(',').map(t => t.trim()).filter(Boolean);
247
+ };
248
+ // Map product status to ProductCard status
249
+ const mapProductStatus = (status) => {
250
+ switch (status) {
251
+ case 'active': return 'launched';
252
+ case 'beta': return 'beta';
253
+ case 'coming-soon': return 'coming-soon';
254
+ default: return 'coming-soon';
255
+ }
256
+ };
257
+ // Transform actions to ProductCard format
258
+ const transformActions = (actions) => {
259
+ if (!actions || actions.length === 0)
260
+ return undefined;
261
+ return actions.map(action => ({
262
+ id: action.id,
263
+ label: action.label,
264
+ variant: action.variant || 'contained',
265
+ color: action.color || 'primary',
266
+ disabled: action.disabled || false,
267
+ onClick: () => {
268
+ if (action.openInNewTab) {
269
+ window.open(action.url, '_blank', 'noopener,noreferrer');
270
+ }
271
+ else {
272
+ window.location.href = action.url;
273
+ }
274
+ }
275
+ }));
276
+ };
277
+ return (_jsxs(Section, { ...viewProps, children: [productGrid.heading && (_jsx(Text, { variant: "h3", align: "center", style: { marginBottom: '32px' }, children: productGrid.heading })), _jsx(GridLayout, { columns: (productGrid.columns || 3), spacing: productGrid.spacing, equalHeight: productGrid.equalHeight !== false, children: productGrid.products.map((product) => (_jsx(ProductCard, { product: {
278
+ id: product.id,
279
+ name: product.name,
280
+ category: product.category || 'Product',
281
+ description: extractTextFromLexical(product.description),
282
+ shortDescription: product.tagline,
283
+ features: product.features?.map((f) => f.title) || [],
284
+ technologies: parseTechnologies(product.technologies),
285
+ status: mapProductStatus(product.status),
286
+ image: product.image?.url,
287
+ url: `/products/${product.slug}`,
288
+ }, actions: transformActions(product.actions), variant: productGrid.variant || 'compact', showImage: true, showTechnologies: true, maxFeaturesCompact: 3 }, product.id))) })] }, key));
289
+ }
290
+ case 'accordion': {
291
+ const accordion = block;
292
+ const viewProps = extractViewSchemaProps(accordion);
293
+ return (_jsxs(Section, { ...viewProps, children: [accordion.heading && (_jsx(Text, { variant: "h3", align: "center", style: { marginBottom: '24px' }, children: accordion.heading })), _jsx(Box, { sx: { maxWidth: '800px', margin: '0 auto' }, children: accordion.items.map((item, idx) => (_jsx(AccordionItem, { title: item.title, content: renderRichText(item.content), defaultExpanded: item.defaultExpanded, variant: accordion.variant }, `${key}-item-${idx}`))) })] }, key));
294
+ }
295
+ case 'cardGrid': {
296
+ const cardGrid = block;
297
+ const viewProps = extractViewSchemaProps(cardGrid);
298
+ return (_jsxs(Section, { ...viewProps, children: [cardGrid.heading && (_jsx(Text, { variant: "h3", align: "center", style: { marginBottom: '32px' }, children: cardGrid.heading })), _jsx(GridLayout, { columns: (cardGrid.columns || 3), spacing: cardGrid.spacing, children: cardGrid.cards.map((card, idx) => {
299
+ // Convert icon name to Material UI icon component
300
+ const iconData = card.icon ? iconMap[card.icon] : null;
301
+ const IconComponent = iconData?.component;
302
+ return (_jsxs(Card, { variant: cardGrid.cardVariant === 'elevation' ? 'elevation' : cardGrid.cardVariant === 'filled' ? 'outlined' : 'outlined', sx: { height: '100%' }, children: [card.image?.url && (_jsx(Image, { src: card.image.url, alt: card.title, width: 400, height: 200, style: { width: '100%', height: 'auto' } })), _jsxs(CardContent, { children: [IconComponent && (_jsx(Box, { sx: { display: 'flex', justifyContent: 'center', mb: 1, color: 'primary.main', fontSize: 48 }, children: _jsx(IconComponent, {}) })), _jsx(Text, { variant: "h6", children: card.title }), card.description && (_jsx(Text, { variant: "body2", style: { marginTop: '8px', color: 'var(--theme-on-surface-variant)' }, children: card.description }))] }), card.link && (_jsx(CardActions, { children: _jsx(Button, { buttonSize: "small", href: card.link, children: card.linkText || 'Learn More' }) }))] }, `${key}-card-${idx}`));
303
+ }) })] }, key));
304
+ }
305
+ case 'form': {
306
+ const formBlock = block;
307
+ // Handle case where form relationship might not be populated
308
+ if (!formBlock.form || typeof formBlock.form !== 'object') {
309
+ console.warn('Form block missing form relationship:', formBlock);
310
+ return null;
311
+ }
312
+ return (_jsx(FormBlockComponent, { formId: formBlock.form.id, formName: formBlock.form.formName, heading: formBlock.overrideHeading ? formBlock.overrideHeading : formBlock.form.title, description: formBlock.overrideDescription ? formBlock.overrideDescription : formBlock.form.description, fields: formBlock.form.fields, submitButtonText: formBlock.overrideSubmitButtonText ? formBlock.overrideSubmitButtonText : formBlock.form.submitButtonText, successMessage: formBlock.overrideSuccessMessage ? formBlock.overrideSuccessMessage : formBlock.form.successMessage, padding: formBlock.padding, enableCaptcha: formBlock.form.enableCaptcha }, key));
313
+ }
314
+ default:
315
+ console.warn(`Unknown block type: ${block.blockType}`);
316
+ return null;
317
+ }
318
+ }
319
+ /**
320
+ * Accordion Item Component for the Accordion Block
321
+ */
322
+ function AccordionItem({ title, content, defaultExpanded = false, variant = 'outlined', }) {
323
+ const [expanded, setExpanded] = useState(defaultExpanded);
324
+ const handleToggle = () => {
325
+ setExpanded(!expanded);
326
+ };
327
+ return (_jsxs(Box, { sx: {
328
+ mb: 1,
329
+ border: variant === 'outlined' ? '1px solid var(--theme-outline)' : 'none',
330
+ backgroundColor: variant === 'filled' ? 'var(--theme-surface-variant)' : 'transparent',
331
+ borderRadius: 1,
332
+ }, children: [_jsxs(Box, { onClick: handleToggle, sx: {
333
+ display: 'flex',
334
+ justifyContent: 'space-between',
335
+ alignItems: 'center',
336
+ p: 2,
337
+ cursor: 'pointer',
338
+ '&:hover': {
339
+ backgroundColor: 'var(--theme-surface-variant)',
340
+ },
341
+ }, children: [_jsx(Text, { variant: "h6", style: { margin: 0 }, children: title }), _jsx(IconButton, { size: "small", sx: {
342
+ transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)',
343
+ transition: 'transform 0.3s',
344
+ }, children: _jsx(ExpandMoreIcon, {}) })] }), _jsx(Collapse, { in: expanded, children: _jsx(Box, { sx: { p: 2, pt: 0 }, children: _jsx(Text, { variant: "body1", children: content }) }) })] }));
345
+ }
346
+ /**
347
+ * BlockRenderer Component
348
+ *
349
+ * Renders an array of Payload blocks as QwickApps Framework components
350
+ */
351
+ export function BlockRenderer({ blocks, className }) {
352
+ if (!blocks || blocks.length === 0) {
353
+ return null;
354
+ }
355
+ return (_jsx("div", { className: className, children: blocks.map((block, index) => renderBlock(block, index)) }));
356
+ }
357
+ export default BlockRenderer;
358
+ //# sourceMappingURL=BlockRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockRenderer.js","sourceRoot":"","sources":["../../src/nextjs/BlockRenderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface ClientHomePageProps {
2
+ hero: any | null;
3
+ features: any[];
4
+ }
5
+ export declare function ClientHomePage({ hero, features }: ClientHomePageProps): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=ClientHomePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientHomePage.d.ts","sourceRoot":"","sources":["../../src/nextjs/ClientHomePage.tsx"],"names":[],"mappings":"AAeA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IACjB,QAAQ,EAAE,GAAG,EAAE,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAErE"}
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ // @ts-nocheck
4
+ /**
5
+ * Client-side HomePage Wrapper
6
+ *
7
+ * This wrapper handles dynamic import with SSR disabled.
8
+ * Next.js 15 requires dynamic imports with ssr:false to be in Client Components.
9
+ *
10
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
11
+ */
12
+ // Import HomePageContent directly - SSR now supported!
13
+ import { HomePageContent } from './HomePageContent';
14
+ export function ClientHomePage({ hero, features }) {
15
+ return _jsx(HomePageContent, { hero: hero, features: features });
16
+ }
17
+ //# sourceMappingURL=ClientHomePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientHomePage.js","sourceRoot":"","sources":["../../src/nextjs/ClientHomePage.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,cAAc;AAEd;;;;;;;GAOG;AAEH,uDAAuD;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOpD,MAAM,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAuB;IACpE,OAAO,KAAC,eAAe,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { ReactNode } from 'react';
2
+ import { Settings } from './SettingsProvider';
3
+ export interface ClientSideQwickAppProps {
4
+ children: ReactNode;
5
+ navigationItems: Array<{
6
+ id: string;
7
+ label: string;
8
+ route: string;
9
+ icon?: string;
10
+ children?: Array<{
11
+ id: string;
12
+ label: string;
13
+ route: string;
14
+ }>;
15
+ }>;
16
+ initialSettings?: Settings | null;
17
+ }
18
+ /**
19
+ * ClientSideQwickApp - Client Component
20
+ * Wraps the entire app with QwickApps framework, settings provider, and analytics
21
+ */
22
+ export declare function ClientSideQwickApp({ children, navigationItems, initialSettings }: ClientSideQwickAppProps): import("react/jsx-runtime").JSX.Element;
23
+ //# sourceMappingURL=ClientSideQwickApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientSideQwickApp.d.ts","sourceRoot":"","sources":["../../src/nextjs/ClientSideQwickApp.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,OAAO,EAAoB,QAAQ,EAAe,MAAM,oBAAoB,CAAC;AAU7E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,EAAE,KAAK,CAAC;QACrB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,KAAK,CAAC;YACf,EAAE,EAAE,MAAM,CAAC;YACX,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CACnC;AAyCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,EAAE,uBAAuB,2CAWzG"}
@@ -0,0 +1,50 @@
1
+ // @ts-nocheck
2
+ 'use client';
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ /**
5
+ * Client-side QwickApp Wrapper
6
+ *
7
+ * Provides the QwickApps framework on the client side.
8
+ * Receives navigation items from server component.
9
+ *
10
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
11
+ */
12
+ import { QwickApp } from '@qwickapps/react-framework';
13
+ import { PayloadDataProvider } from '@qwickapps/cms/providers';
14
+ import { AppRouterCacheProvider } from '@mui/material-nextjs/v15-appRouter';
15
+ // import '@qwickapps/react-framework/dist/index.css'; // CSS is loaded by individual components
16
+ import { SettingsProvider, useSettings } from './SettingsProvider';
17
+ import { ScriptsInjector } from './ScriptsInjector';
18
+ import { SiteLogo } from './SiteLogo';
19
+ // Create Payload data provider instance
20
+ const payloadProvider = new PayloadDataProvider({
21
+ apiUrl: '/api',
22
+ debug: false
23
+ });
24
+ /**
25
+ * Inner component that uses settings from SettingsProvider
26
+ */
27
+ function QwickAppWithSettings({ children, navigationItems }) {
28
+ const { settings } = useSettings();
29
+ // Use settings for app name
30
+ const appName = settings?.siteName || 'QwickPress';
31
+ // Use SiteLogo component which automatically handles all logo configurations
32
+ const logoElement = _jsx(SiteLogo, { size: "small" });
33
+ // Use theme settings from CMS or fallback to defaults
34
+ const defaultTheme = settings?.defaultTheme || 'light';
35
+ const defaultPalette = settings?.defaultPalette || 'default';
36
+ const showThemeSwitcher = settings?.showThemeSwitcher !== undefined ? settings.showThemeSwitcher : true;
37
+ const showPaletteSwitcher = settings?.showPaletteSwitcher !== undefined ? settings.showPaletteSwitcher : false;
38
+ return (_jsx(QwickApp, { appName: appName, logo: logoElement, appId: "com.qwickapps.press", enableScaffolding: true, navigationItems: navigationItems, showThemeSwitcher: showThemeSwitcher, showPaletteSwitcher: showPaletteSwitcher, defaultTheme: defaultTheme, defaultPalette: defaultPalette, dataSource: {
39
+ dataProvider: payloadProvider,
40
+ enableLogging: false
41
+ }, children: children }));
42
+ }
43
+ /**
44
+ * ClientSideQwickApp - Client Component
45
+ * Wraps the entire app with QwickApps framework, settings provider, and analytics
46
+ */
47
+ export function ClientSideQwickApp({ children, navigationItems, initialSettings }) {
48
+ return (_jsx(AppRouterCacheProvider, { children: _jsxs(SettingsProvider, { initialSettings: initialSettings || undefined, children: [_jsx(ScriptsInjector, {}), _jsx(QwickAppWithSettings, { navigationItems: navigationItems, children: children })] }) }));
49
+ }
50
+ //# sourceMappingURL=ClientSideQwickApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientSideQwickApp.js","sourceRoot":"","sources":["../../src/nextjs/ClientSideQwickApp.tsx"],"names":[],"mappings":"AAAA,cAAc;AACd,YAAY,CAAC;;AAEb;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,gGAAgG;AAChG,OAAO,EAAE,gBAAgB,EAAY,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,wCAAwC;AACxC,MAAM,eAAe,GAAG,IAAI,mBAAmB,CAAC;IAC9C,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,KAAK;CACb,CAAC,CAAC;AAkBH;;GAEG;AACH,SAAS,oBAAoB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAmD;IAC1G,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;IAEnC,4BAA4B;IAC5B,MAAM,OAAO,GAAG,QAAQ,EAAE,QAAQ,IAAI,YAAY,CAAC;IAEnD,6EAA6E;IAC7E,MAAM,WAAW,GAAG,KAAC,QAAQ,IAAC,IAAI,EAAC,OAAO,GAAG,CAAC;IAE9C,sDAAsD;IACtD,MAAM,YAAY,GAAG,QAAQ,EAAE,YAAY,IAAI,OAAO,CAAC;IACvD,MAAM,cAAc,GAAG,QAAQ,EAAE,cAAc,IAAI,SAAS,CAAC;IAC7D,MAAM,iBAAiB,GAAG,QAAQ,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;IACxG,MAAM,mBAAmB,GAAG,QAAQ,EAAE,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC;IAE/G,OAAO,CACL,KAAC,QAAQ,IACP,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,KAAK,EAAC,qBAAqB,EAC3B,iBAAiB,EAAE,IAAI,EACvB,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE;YACV,YAAY,EAAE,eAAe;YAC7B,aAAa,EAAE,KAAK;SACrB,YAEA,QAAe,GACP,CACZ,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAA2B;IACxG,OAAO,CACL,KAAC,sBAAsB,cACrB,MAAC,gBAAgB,IAAC,eAAe,EAAE,eAAe,IAAI,SAAS,aAC7D,KAAC,eAAe,KAAG,EACnB,KAAC,oBAAoB,IAAC,eAAe,EAAE,eAAe,YACnD,QAAQ,GACY,IACN,GACI,CAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ export interface DynamicQwickAppProps {
3
+ children: ReactNode;
4
+ }
5
+ /**
6
+ * DynamicQwickApp - SSR compatible wrapper for QwickApp framework
7
+ */
8
+ export declare function DynamicQwickApp({ children }: DynamicQwickAppProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=DynamicQwickApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicQwickApp.d.ts","sourceRoot":"","sources":["../../src/nextjs/DynamicQwickApp.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CAEjE"}
@@ -0,0 +1,19 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Dynamic QwickApp Wrapper - SSR Compatible
4
+ *
5
+ * This component wraps ClientQwickApp and is now SSR compatible
6
+ * after Phase 2 framework fixes.
7
+ *
8
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
9
+ */
10
+ 'use client';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ import { ClientSideQwickApp } from './ClientSideQwickApp';
13
+ /**
14
+ * DynamicQwickApp - SSR compatible wrapper for QwickApp framework
15
+ */
16
+ export function DynamicQwickApp({ children }) {
17
+ return _jsx(ClientSideQwickApp, { children: children });
18
+ }
19
+ //# sourceMappingURL=DynamicQwickApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicQwickApp.js","sourceRoot":"","sources":["../../src/nextjs/DynamicQwickApp.tsx"],"names":[],"mappings":"AAAA,cAAc;AAEd;;;;;;;GAOG;AAEH,YAAY,CAAC;;AAGb,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAAwB;IAChE,OAAO,KAAC,kBAAkB,cAAE,QAAQ,GAAsB,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * FooterFromSettings - Client Component
3
+ * Fetches footer data from Footer collection and renders with copyright
4
+ */
5
+ export declare function FooterFromSettings(): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=FooterFromSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FooterFromSettings.d.ts","sourceRoot":"","sources":["../../src/nextjs/FooterFromSettings.tsx"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,wBAAgB,kBAAkB,4CA4FjC"}
@@ -0,0 +1,72 @@
1
+ // @ts-nocheck
2
+ 'use client';
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ /**
5
+ * Footer From Settings Component
6
+ *
7
+ * Fetches footer configuration from Footer collection and renders with settings.
8
+ * Displays copyright from site settings and "Powered by" branding.
9
+ *
10
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
11
+ */
12
+ import { useEffect, useState } from 'react';
13
+ import { Box } from '@mui/material';
14
+ import { Footer, Text } from './framework';
15
+ import { useSettings } from './SettingsProvider';
16
+ import { getPayloadAPIClient } from '../client/PayloadAPIClient';
17
+ /**
18
+ * FooterFromSettings - Client Component
19
+ * Fetches footer data from Footer collection and renders with copyright
20
+ */
21
+ export function FooterFromSettings() {
22
+ const { settings } = useSettings();
23
+ const [footerData, setFooterData] = useState(null);
24
+ const [loading, setLoading] = useState(true);
25
+ useEffect(() => {
26
+ async function fetchFooter() {
27
+ try {
28
+ const client = getPayloadAPIClient();
29
+ const result = await client.find('footer', {
30
+ where: {
31
+ position: { equals: 'main' }
32
+ },
33
+ limit: 1
34
+ });
35
+ if (result.docs && result.docs.length > 0) {
36
+ setFooterData(result.docs[0]);
37
+ }
38
+ }
39
+ catch (error) {
40
+ console.error('Error fetching footer:', error);
41
+ }
42
+ finally {
43
+ setLoading(false);
44
+ }
45
+ }
46
+ fetchFooter();
47
+ }, []);
48
+ // Don't render anything while loading
49
+ if (loading) {
50
+ return null;
51
+ }
52
+ // Process copyright text with template variables
53
+ const currentYear = new Date().getFullYear();
54
+ const siteName = settings?.siteName || 'QwickPress';
55
+ let copyrightText = settings?.copyrightText || `© ${currentYear} ${siteName}. All rights reserved.`;
56
+ // Replace template variables
57
+ copyrightText = copyrightText
58
+ .replace('{year}', currentYear.toString())
59
+ .replace('{siteName}', siteName);
60
+ // Custom copyright component with "Powered by" on the right
61
+ const customCopyright = (_jsxs(Box, { sx: {
62
+ display: 'flex',
63
+ justifyContent: 'space-between',
64
+ alignItems: 'center',
65
+ flexWrap: 'wrap',
66
+ gap: 2,
67
+ width: '100%',
68
+ }, children: [_jsx(Text, { variant: "body2", customColor: "var(--theme-text-secondary)", children: copyrightText }), _jsxs("span", { style: { fontSize: '0.875rem', color: 'var(--theme-text-secondary)' }, children: ["Powered by", ' ', _jsx("a", { href: "https://qwickapps.com", target: "_blank", rel: "noopener noreferrer", style: { color: 'inherit', textDecoration: 'underline' }, children: "QwickPress" }), ' - A ', _jsx("a", { href: "https://payloadcms.com", target: "_blank", rel: "noopener noreferrer", style: { color: 'inherit', textDecoration: 'underline' }, children: "Payload CMS" })] })] }));
69
+ // Render footer with data if available, otherwise render minimal footer with just copyright
70
+ return (_jsx(Footer, { sections: footerData?.sections || [], copyright: customCopyright, orientation: footerData?.orientation || 'horizontal', variant: footerData?.variant || 'default', showDivider: footerData?.showDivider !== false }));
71
+ }
72
+ //# sourceMappingURL=FooterFromSettings.js.map