@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 @@
1
+ {"version":3,"file":"FooterFromSettings.js","sourceRoot":"","sources":["../../src/nextjs/FooterFromSettings.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ interface FormFieldConfig {
2
+ fieldName: string;
3
+ label: string;
4
+ inputType: 'text' | 'email' | 'tel' | 'number' | 'textarea' | 'select' | 'checkbox';
5
+ required?: boolean;
6
+ placeholder?: string;
7
+ options?: Array<{
8
+ label: string;
9
+ value: string;
10
+ }>;
11
+ }
12
+ interface FormBlockComponentProps {
13
+ formId?: string;
14
+ formName: string;
15
+ heading?: string;
16
+ description?: string;
17
+ fields: FormFieldConfig[];
18
+ submitButtonText?: string;
19
+ successMessage?: string;
20
+ padding?: 'none' | 'small' | 'medium' | 'large';
21
+ enableCaptcha?: boolean;
22
+ }
23
+ export declare function FormBlockComponent({ formId, formName, heading, description, fields, submitButtonText, successMessage, padding, enableCaptcha, }: FormBlockComponentProps): import("react/jsx-runtime").JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=FormBlockComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormBlockComponent.d.ts","sourceRoot":"","sources":["../../src/nextjs/FormBlockComponent.tsx"],"names":[],"mappings":"AAmBA,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;CACJ;AAED,UAAU,uBAAuB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,QAAQ,EACR,OAAO,EACP,WAAW,EACX,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,OAAO,EACP,aAAqB,GACtB,EAAE,uBAAuB,2CAmNzB"}
@@ -0,0 +1,110 @@
1
+ // @ts-nocheck
2
+ 'use client';
3
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
4
+ /**
5
+ * FormBlockComponent - Client-side form component with state management
6
+ *
7
+ * Handles form state, validation, and submission to the API endpoint.
8
+ * Used by BlockRenderer to render form blocks from Payload CMS.
9
+ * Uses QwickApps themed form components for consistent styling.
10
+ *
11
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
12
+ */
13
+ import { useState } from 'react';
14
+ import { Alert, CircularProgress, Box, Button as MuiButton } from '@mui/material';
15
+ import { Section, Text, Button, FormField, FormSelect, FormCheckbox, Captcha } from './framework';
16
+ import { useSettings } from './SettingsProvider';
17
+ export function FormBlockComponent({ formId, formName, heading, description, fields, submitButtonText, successMessage, padding, enableCaptcha = false, }) {
18
+ const { settings } = useSettings();
19
+ const [formData, setFormData] = useState({});
20
+ const [errors, setErrors] = useState({});
21
+ const [submitStatus, setSubmitStatus] = useState('idle');
22
+ const [errorMessage, setErrorMessage] = useState('');
23
+ const [captchaToken, setCaptchaToken] = useState(null);
24
+ // Get CAPTCHA settings - only show if enabled both globally AND for this form
25
+ const captchaProvider = (enableCaptcha && settings?.captcha?.provider) || 'none';
26
+ const captchaSiteKey = settings?.captcha?.siteKey;
27
+ const handleChange = (fieldName, value) => {
28
+ setFormData(prev => ({ ...prev, [fieldName]: value }));
29
+ // Clear error when user starts typing
30
+ if (errors[fieldName]) {
31
+ setErrors(prev => {
32
+ const newErrors = { ...prev };
33
+ delete newErrors[fieldName];
34
+ return newErrors;
35
+ });
36
+ }
37
+ };
38
+ const validate = () => {
39
+ const newErrors = {};
40
+ fields.forEach(field => {
41
+ if (field.required && !formData[field.fieldName]) {
42
+ newErrors[field.fieldName] = `${field.label} is required`;
43
+ }
44
+ // Email validation
45
+ if (field.inputType === 'email' && formData[field.fieldName]) {
46
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
47
+ if (!emailRegex.test(formData[field.fieldName])) {
48
+ newErrors[field.fieldName] = 'Please enter a valid email address';
49
+ }
50
+ }
51
+ });
52
+ // CAPTCHA validation
53
+ if (captchaProvider && captchaProvider !== 'none' && !captchaToken) {
54
+ setErrorMessage('Please complete the CAPTCHA verification');
55
+ setErrors(newErrors);
56
+ return false;
57
+ }
58
+ setErrors(newErrors);
59
+ return Object.keys(newErrors).length === 0;
60
+ };
61
+ const handleSubmit = async (e) => {
62
+ e.preventDefault();
63
+ if (!validate()) {
64
+ return;
65
+ }
66
+ setSubmitStatus('submitting');
67
+ setErrorMessage('');
68
+ try {
69
+ const response = await fetch('/api/form-submit', {
70
+ method: 'POST',
71
+ headers: {
72
+ 'Content-Type': 'application/json',
73
+ },
74
+ body: JSON.stringify({
75
+ formId,
76
+ formName,
77
+ formData,
78
+ captchaToken,
79
+ }),
80
+ });
81
+ if (!response.ok) {
82
+ throw new Error('Form submission failed');
83
+ }
84
+ setSubmitStatus('success');
85
+ setFormData({});
86
+ }
87
+ catch (error) {
88
+ setSubmitStatus('error');
89
+ setErrorMessage('There was an error submitting the form. Please try again.');
90
+ }
91
+ };
92
+ if (submitStatus === 'success') {
93
+ return (_jsx(Section, { padding: padding, children: _jsxs(Box, { sx: { maxWidth: '600px', margin: '0 auto', textAlign: 'center' }, children: [_jsx(Alert, { severity: "success", sx: { mb: 2 }, children: successMessage }), _jsx(MuiButton, { variant: "outlined", onClick: () => setSubmitStatus('idle'), children: "Submit Another Response" })] }) }));
94
+ }
95
+ return (_jsx(Section, { padding: padding, children: _jsxs(Box, { sx: { maxWidth: '600px', margin: '0 auto' }, children: [heading && (_jsx(Text, { variant: "h2", align: "center", style: { marginBottom: '16px' }, children: heading })), description && (_jsx(Text, { variant: "body1", align: "center", style: { marginBottom: '32px', color: 'var(--theme-on-surface-variant)' }, children: description })), submitStatus === 'error' && (_jsx(Alert, { severity: "error", sx: { mb: 3 }, children: errorMessage })), _jsx("form", { onSubmit: handleSubmit, children: _jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 3 }, children: [fields.map((field, index) => {
96
+ const fieldValue = formData[field.fieldName] || (field.inputType === 'checkbox' ? false : '');
97
+ if (field.inputType === 'checkbox') {
98
+ return (_jsx(FormCheckbox, { label: field.label, checked: !!fieldValue, onChange: (checked) => handleChange(field.fieldName, checked), required: field.required, helperText: errors[field.fieldName] }, `${field.fieldName}-${index}`));
99
+ }
100
+ if (field.inputType === 'select') {
101
+ return (_jsx(FormSelect, { label: field.label, value: fieldValue, onChange: (value) => handleChange(field.fieldName, value), options: field.options || [], required: field.required, placeholder: field.placeholder, helperText: errors[field.fieldName] }, `${field.fieldName}-${index}`));
102
+ }
103
+ // All text-based inputs (text, email, tel, number, textarea)
104
+ return (_jsx(FormField, { label: field.label, value: fieldValue, onChange: (value) => handleChange(field.fieldName, value), type: field.inputType === 'textarea' ? 'text' : field.inputType, multiline: field.inputType === 'textarea', rows: field.inputType === 'textarea' ? 4 : undefined, required: field.required, placeholder: field.placeholder, helperText: errors[field.fieldName] }, `${field.fieldName}-${index}`));
105
+ }), captchaProvider && captchaProvider !== 'none' && captchaSiteKey && (_jsx(Captcha, { provider: captchaProvider, siteKey: captchaSiteKey, onVerify: setCaptchaToken, onExpire: () => setCaptchaToken(null), onError: (error) => {
106
+ console.error('CAPTCHA error:', error);
107
+ setErrorMessage('CAPTCHA verification failed. Please try again.');
108
+ } })), _jsx(Button, { type: "submit", variant: "contained", buttonSize: "large", disabled: submitStatus === 'submitting', style: { marginTop: '8px' }, children: submitStatus === 'submitting' ? (_jsxs(_Fragment, { children: [_jsx(CircularProgress, { size: 20, style: { marginRight: '8px', color: 'inherit' } }), "Submitting..."] })) : (submitButtonText) })] }) })] }) }));
109
+ }
110
+ //# sourceMappingURL=FormBlockComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormBlockComponent.js","sourceRoot":"","sources":["../../src/nextjs/FormBlockComponent.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface HomePageContentProps {
2
+ hero: any | null;
3
+ features: any[];
4
+ }
5
+ export declare function HomePageContent({ hero, features }: HomePageContentProps): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=HomePageContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HomePageContent.d.ts","sourceRoot":"","sources":["../../src/nextjs/HomePageContent.tsx"],"names":[],"mappings":"AAeA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IACjB,QAAQ,EAAE,GAAG,EAAE,CAAC;CACjB;AAED,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CAyIvE"}
@@ -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 HomePage Content Component
6
+ *
7
+ * This component renders the homepage using QwickApps Framework components.
8
+ * It's client-only to avoid SSR issues with the framework.
9
+ *
10
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
11
+ */
12
+ import { Container, Box } from '@mui/material';
13
+ import { HeroBlock, Section, GridLayout, GridCell, Text } from './framework';
14
+ export function HomePageContent({ hero, features }) {
15
+ return (_jsxs(Box, { sx: { width: '100%' }, children: [hero ? (_jsx(HeroBlock, { title: hero.title, subtitle: hero.subtitle, backgroundGradient: hero.backgroundGradient, textAlign: hero.textAlign || 'center', blockHeight: hero.blockHeight || 'medium', actions: hero.actions || [] }, "hero-section")) : (_jsx(HeroBlock, { title: "Welcome to QwickPress", subtitle: "Add a Hero Block in the admin to customize this section!", backgroundGradient: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)", textAlign: "center", blockHeight: "medium", actions: [
16
+ {
17
+ label: 'Create Hero Block →',
18
+ href: '/admin/collections/hero-blocks/create',
19
+ variant: 'outlined',
20
+ buttonSize: 'large'
21
+ }
22
+ ] }, "hero-section-default")), _jsx(Section, { padding: "large", background: "surface", children: _jsxs(Container, { maxWidth: "md", sx: { textAlign: 'center' }, children: [_jsx("h2", { style: { fontSize: '2rem', marginBottom: '1rem' }, children: "Why Choose QwickApps?" }), _jsx("p", { style: { fontSize: '1.2rem', marginBottom: '2rem', opacity: 0.8 }, children: "QwickApps offers a comprehensive suite of pre-built components and applications designed to help developers save time and effort. Whether you're building a new project from scratch or looking to enhance an existing one, our resources are tailored to meet your needs." })] }) }, "why-choose-section"), features.length > 0 ? (_jsx(Section, { padding: "large", background: "var(--theme-surface-variant)", children: _jsx(Container, { maxWidth: "lg", children: _jsx(GridLayout, { columns: 3, spacing: "large", children: features.map((feature) => (_jsxs(GridCell, { padding: "medium", textAlign: "center", children: [_jsx(Text, { variant: "h6", fontWeight: "800", sx: { mb: 1 }, children: feature.title }), _jsx(Text, { variant: "body2", sx: { opacity: 0.8 }, children: feature.description })] }, feature.id))) }) }) }, "features-section")) : (_jsx(Section, { padding: "large", background: "var(--theme-surface-variant)", children: _jsxs(Container, { maxWidth: "lg", sx: { textAlign: 'center' }, children: [_jsx("h3", { style: { marginBottom: '1rem' }, children: "Features Section" }), _jsx("p", { style: { marginBottom: '1rem', opacity: 0.8 }, children: "Add Features in the admin to see them displayed here!" }), _jsx(Box, { sx: { mt: 2 }, children: _jsx("a", { href: "/admin/collections/features/create", style: {
23
+ color: '#667eea',
24
+ textDecoration: 'underline',
25
+ fontSize: '1.1rem'
26
+ }, children: "Create Features \u2192" }) })] }) }, "features-section-empty")), _jsx(Section, { padding: "large", background: "surface", children: _jsxs(Container, { maxWidth: "lg", sx: { textAlign: 'center' }, children: [_jsx("h2", { style: { fontSize: '2.5rem', marginBottom: '1rem' }, children: "Ready to Start Building?" }), _jsx("p", { style: { fontSize: '1.2rem', marginBottom: '2rem', opacity: 0.8 }, children: "Join thousands of developers who are already using QwickApps to build amazing applications." }), _jsxs(Box, { sx: { display: 'flex', gap: 2, justifyContent: 'center', flexWrap: 'wrap' }, children: [_jsx("a", { href: "/contact", style: {
27
+ padding: '12px 32px',
28
+ fontSize: '1.1rem',
29
+ textDecoration: 'none',
30
+ borderRadius: '4px',
31
+ fontWeight: 500,
32
+ backgroundColor: '#667eea',
33
+ color: 'white',
34
+ border: 'none',
35
+ display: 'inline-block',
36
+ cursor: 'pointer',
37
+ }, children: "Get Started Today" }), _jsx("a", { href: "/products", style: {
38
+ padding: '12px 32px',
39
+ fontSize: '1.1rem',
40
+ textDecoration: 'none',
41
+ borderRadius: '4px',
42
+ fontWeight: 500,
43
+ backgroundColor: 'transparent',
44
+ color: '#667eea',
45
+ border: '2px solid #667eea',
46
+ display: 'inline-block',
47
+ cursor: 'pointer',
48
+ }, children: "Explore Products" })] })] }) }, "cta-section")] }));
49
+ }
50
+ //# sourceMappingURL=HomePageContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HomePageContent.js","sourceRoot":"","sources":["../../src/nextjs/HomePageContent.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * LivePreviewClient Component
3
+ *
4
+ * Client component that uses Payload's useLivePreview hook to provide
5
+ * real-time updates as content is edited in the admin panel.
6
+ *
7
+ * This component wraps the BlockRenderer and provides live data updates
8
+ * without requiring a page refresh.
9
+ *
10
+ * @see https://payloadcms.com/docs/live-preview/client
11
+ *
12
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
13
+ */
14
+ import React from 'react';
15
+ /**
16
+ * Props for LivePreviewClient
17
+ */
18
+ export interface LivePreviewClientProps {
19
+ /**
20
+ * Initial page/post data from server
21
+ */
22
+ initialData: any;
23
+ /**
24
+ * The Payload server URL for live preview communication
25
+ */
26
+ serverURL: string;
27
+ /**
28
+ * Depth for relationship population (should match initial request depth)
29
+ */
30
+ depth?: number;
31
+ }
32
+ /**
33
+ * LivePreviewClient
34
+ *
35
+ * Uses Payload's useLivePreview hook to receive real-time updates
36
+ * from the admin panel as content is being edited.
37
+ */
38
+ export declare const LivePreviewClient: React.FC<LivePreviewClientProps>;
39
+ export default LivePreviewClient;
40
+ //# sourceMappingURL=LivePreviewClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LivePreviewClient.d.ts","sourceRoot":"","sources":["../../src/nextjs/LivePreviewClient.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,WAAW,EAAE,GAAG,CAAC;IACjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAc9D,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * LivePreviewClient Component
3
+ *
4
+ * Client component that uses Payload's useLivePreview hook to provide
5
+ * real-time updates as content is edited in the admin panel.
6
+ *
7
+ * This component wraps the BlockRenderer and provides live data updates
8
+ * without requiring a page refresh.
9
+ *
10
+ * @see https://payloadcms.com/docs/live-preview/client
11
+ *
12
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
13
+ */
14
+ 'use client';
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ import { useLivePreview } from '@payloadcms/live-preview-react';
17
+ import { BlockRenderer } from './BlockRenderer';
18
+ /**
19
+ * LivePreviewClient
20
+ *
21
+ * Uses Payload's useLivePreview hook to receive real-time updates
22
+ * from the admin panel as content is being edited.
23
+ */
24
+ export const LivePreviewClient = ({ initialData, serverURL, depth = 2, }) => {
25
+ // Use the live preview hook to get real-time updates
26
+ const { data } = useLivePreview({
27
+ initialData,
28
+ serverURL,
29
+ depth,
30
+ });
31
+ // Render the blocks with live data
32
+ return _jsx(BlockRenderer, { blocks: data?.layout || [] });
33
+ };
34
+ export default LivePreviewClient;
35
+ //# sourceMappingURL=LivePreviewClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LivePreviewClient.js","sourceRoot":"","sources":["../../src/nextjs/LivePreviewClient.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,YAAY,CAAC;;AAGb,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAoBhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAClE,WAAW,EACX,SAAS,EACT,KAAK,GAAG,CAAC,GACV,EAAE,EAAE;IACH,qDAAqD;IACrD,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;QAC9B,WAAW;QACX,SAAS;QACT,KAAK;KACN,CAAC,CAAC;IAEH,mCAAmC;IACnC,OAAO,KAAC,aAAa,IAAC,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,GAAI,CAAC;AACvD,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * RefreshRouteOnSave Component
3
+ *
4
+ * Client component that listens for Payload CMS Live Preview postMessage events
5
+ * and refreshes the Next.js route when content is saved.
6
+ *
7
+ * This component is used in preview routes to enable real-time updates
8
+ * when editors make changes in the Payload admin panel.
9
+ *
10
+ * @see https://payloadcms.com/docs/live-preview/overview
11
+ *
12
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
13
+ */
14
+ /**
15
+ * Props for RefreshRouteOnSave
16
+ */
17
+ export interface RefreshRouteOnSaveProps {
18
+ /**
19
+ * Optional callback fired when data is received from admin panel
20
+ */
21
+ onDataReceived?: (data: any) => void;
22
+ }
23
+ /**
24
+ * RefreshRouteOnSave
25
+ *
26
+ * Listens for postMessage events from Payload's Live Preview iframe communication
27
+ * and refreshes the Next.js route to show updated content.
28
+ */
29
+ export declare const RefreshRouteOnSave: React.FC<RefreshRouteOnSaveProps>;
30
+ export default RefreshRouteOnSave;
31
+ //# sourceMappingURL=RefreshRouteOnSave.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefreshRouteOnSave.d.ts","sourceRoot":"","sources":["../../src/nextjs/RefreshRouteOnSave.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACtC;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA4ChE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * RefreshRouteOnSave Component
3
+ *
4
+ * Client component that listens for Payload CMS Live Preview postMessage events
5
+ * and refreshes the Next.js route when content is saved.
6
+ *
7
+ * This component is used in preview routes to enable real-time updates
8
+ * when editors make changes in the Payload admin panel.
9
+ *
10
+ * @see https://payloadcms.com/docs/live-preview/overview
11
+ *
12
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
13
+ */
14
+ 'use client';
15
+ import { useRouter } from 'next/navigation';
16
+ import { useEffect, useCallback, useRef } from 'react';
17
+ /**
18
+ * RefreshRouteOnSave
19
+ *
20
+ * Listens for postMessage events from Payload's Live Preview iframe communication
21
+ * and refreshes the Next.js route to show updated content.
22
+ */
23
+ export const RefreshRouteOnSave = ({ onDataReceived }) => {
24
+ const router = useRouter();
25
+ const lastRefreshRef = useRef(0);
26
+ const handleMessage = useCallback((event) => {
27
+ // Validate the message is from Payload CMS
28
+ // The message contains the updated document data
29
+ if (!event.data)
30
+ return;
31
+ const { type, data } = event.data;
32
+ // Payload sends 'payload-live-preview' type messages
33
+ if (type === 'payload-live-preview') {
34
+ // Debounce refreshes to avoid too many in quick succession
35
+ const now = Date.now();
36
+ if (now - lastRefreshRef.current < 500) {
37
+ return;
38
+ }
39
+ lastRefreshRef.current = now;
40
+ // Call optional callback with received data
41
+ if (onDataReceived) {
42
+ onDataReceived(data);
43
+ }
44
+ // Refresh the route to fetch latest data from server
45
+ router.refresh();
46
+ }
47
+ }, [router, onDataReceived]);
48
+ useEffect(() => {
49
+ // Add event listener for postMessage events
50
+ window.addEventListener('message', handleMessage);
51
+ return () => {
52
+ window.removeEventListener('message', handleMessage);
53
+ };
54
+ }, [handleMessage]);
55
+ // This component doesn't render anything
56
+ return null;
57
+ };
58
+ export default RefreshRouteOnSave;
59
+ //# sourceMappingURL=RefreshRouteOnSave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefreshRouteOnSave.js","sourceRoot":"","sources":["../../src/nextjs/RefreshRouteOnSave.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAYvD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;IAC1F,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,cAAc,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;IAEzC,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,KAAmB,EAAE,EAAE;QACtB,2CAA2C;QAC3C,iDAAiD;QACjD,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO;QAExB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;QAElC,qDAAqD;QACrD,IAAI,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACpC,2DAA2D;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,GAAG,GAAG,cAAc,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;gBACvC,OAAO;YACT,CAAC;YACD,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC;YAE7B,4CAA4C;YAC5C,IAAI,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YAED,qDAAqD;YACrD,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,cAAc,CAAC,CACzB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,4CAA4C;QAC5C,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAElD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,yCAAyC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function ScriptsInjector(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ScriptsInjector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptsInjector.d.ts","sourceRoot":"","sources":["../../src/nextjs/ScriptsInjector.tsx"],"names":[],"mappings":"AAuBA,wBAAgB,eAAe,4CA+G9B"}
@@ -0,0 +1,73 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ // @ts-nocheck
4
+ /**
5
+ * ScriptsInjector - Injects analytics and custom scripts
6
+ *
7
+ * Reads configuration from Settings global and injects:
8
+ * - Google Analytics (GA4)
9
+ * - Google Tag Manager
10
+ * - Facebook Pixel
11
+ * - Custom header/footer scripts
12
+ *
13
+ * Usage:
14
+ * Place in root layout after SettingsProvider
15
+ * <ScriptsInjector />
16
+ *
17
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
18
+ */
19
+ import { useEffect } from 'react';
20
+ import Script from 'next/script';
21
+ import { useSettings } from './SettingsProvider';
22
+ export function ScriptsInjector() {
23
+ const { settings, loading } = useSettings();
24
+ // Don't render anything while loading
25
+ if (loading || !settings) {
26
+ return null;
27
+ }
28
+ const { googleAnalytics, googleTagManager, facebookPixel, customScripts } = settings;
29
+ // Inject custom CSS
30
+ useEffect(() => {
31
+ if (customScripts?.customCss) {
32
+ const styleId = 'qwickpress-custom-css';
33
+ let styleElement = document.getElementById(styleId);
34
+ if (!styleElement) {
35
+ styleElement = document.createElement('style');
36
+ styleElement.id = styleId;
37
+ document.head.appendChild(styleElement);
38
+ }
39
+ styleElement.textContent = customScripts.customCss;
40
+ return () => {
41
+ // Cleanup on unmount
42
+ const el = document.getElementById(styleId);
43
+ if (el) {
44
+ el.remove();
45
+ }
46
+ };
47
+ }
48
+ }, [customScripts?.customCss]);
49
+ return (_jsxs(_Fragment, { children: [googleAnalytics?.enabled && googleAnalytics?.measurementId && (_jsxs(_Fragment, { children: [_jsx(Script, { src: `https://www.googletagmanager.com/gtag/js?id=${googleAnalytics.measurementId}`, strategy: "afterInteractive" }), _jsx(Script, { id: "google-analytics", strategy: "afterInteractive", children: `
50
+ window.dataLayer = window.dataLayer || [];
51
+ function gtag(){dataLayer.push(arguments);}
52
+ gtag('js', new Date());
53
+ gtag('config', '${googleAnalytics.measurementId}');
54
+ ` })] })), googleTagManager?.enabled && googleTagManager?.containerId && (_jsxs(_Fragment, { children: [_jsx(Script, { id: "google-tag-manager", strategy: "afterInteractive", children: `
55
+ (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
56
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
57
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
58
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
59
+ })(window,document,'script','dataLayer','${googleTagManager.containerId}');
60
+ ` }), _jsx("noscript", { children: _jsx("iframe", { src: `https://www.googletagmanager.com/ns.html?id=${googleTagManager.containerId}`, height: "0", width: "0", style: { display: 'none', visibility: 'hidden' } }) })] })), facebookPixel?.enabled && facebookPixel?.pixelId && (_jsx(Script, { id: "facebook-pixel", strategy: "afterInteractive", children: `
61
+ !function(f,b,e,v,n,t,s)
62
+ {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
63
+ n.callMethod.apply(n,arguments):n.queue.push(arguments)};
64
+ if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
65
+ n.queue=[];t=b.createElement(e);t.async=!0;
66
+ t.src=v;s=b.getElementsByTagName(e)[0];
67
+ s.parentNode.insertBefore(t,s)}(window, document,'script',
68
+ 'https://connect.facebook.net/en_US/fbevents.js');
69
+ fbq('init', '${facebookPixel.pixelId}');
70
+ fbq('track', 'PageView');
71
+ ` })), customScripts?.headerScripts && (_jsx(Script, { id: "custom-header-scripts", strategy: "afterInteractive", children: customScripts.headerScripts })), customScripts?.footerScripts && (_jsx(Script, { id: "custom-footer-scripts", strategy: "lazyOnload", children: customScripts.footerScripts }))] }));
72
+ }
73
+ //# sourceMappingURL=ScriptsInjector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptsInjector.js","sourceRoot":"","sources":["../../src/nextjs/ScriptsInjector.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare const dynamic = "force-dynamic";
2
+ import { ReactNode } from 'react';
3
+ import type { Config } from 'payload';
4
+ export interface ServerQwickAppProps {
5
+ children: ReactNode;
6
+ payloadConfig: Config;
7
+ }
8
+ /**
9
+ * ServerQwickApp - Server Component
10
+ * Fetches navigation and settings from CMS and passes to client component
11
+ */
12
+ export declare function ServerQwickApp({ children, payloadConfig }: ServerQwickAppProps): Promise<import("react/jsx-runtime").JSX.Element>;
13
+ //# sourceMappingURL=ServerQwickApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerQwickApp.d.ts","sourceRoot":"","sources":["../../src/nextjs/ServerQwickApp.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAavC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAqJD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,mBAAmB,oDAYpF"}