@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.
- package/LICENSE +45 -0
- package/README.md +203 -0
- package/dist/admin/components/AccordionItemRowLabel.d.ts +20 -0
- package/dist/admin/components/AccordionItemRowLabel.d.ts.map +1 -0
- package/dist/admin/components/AccordionItemRowLabel.js +47 -0
- package/dist/admin/components/AccordionItemRowLabel.js.map +1 -0
- package/dist/admin/components/BlockRowLabel.d.ts +19 -0
- package/dist/admin/components/BlockRowLabel.d.ts.map +1 -0
- package/dist/admin/components/BlockRowLabel.js +52 -0
- package/dist/admin/components/BlockRowLabel.js.map +1 -0
- package/dist/admin/components/ButtonRowLabel.d.ts +23 -0
- package/dist/admin/components/ButtonRowLabel.d.ts.map +1 -0
- package/dist/admin/components/ButtonRowLabel.js +63 -0
- package/dist/admin/components/ButtonRowLabel.js.map +1 -0
- package/dist/admin/components/CardRowLabel.d.ts +23 -0
- package/dist/admin/components/CardRowLabel.d.ts.map +1 -0
- package/dist/admin/components/CardRowLabel.js +59 -0
- package/dist/admin/components/CardRowLabel.js.map +1 -0
- package/dist/admin/components/ContentPreview.d.ts +12 -0
- package/dist/admin/components/ContentPreview.d.ts.map +1 -0
- package/dist/admin/components/ContentPreview.js +95 -0
- package/dist/admin/components/ContentPreview.js.map +1 -0
- package/dist/admin/components/Dashboard.d.ts +13 -0
- package/dist/admin/components/Dashboard.d.ts.map +1 -0
- package/dist/admin/components/Dashboard.js +7 -0
- package/dist/admin/components/Dashboard.js.map +1 -0
- package/dist/admin/components/DashboardContent.d.ts +11 -0
- package/dist/admin/components/DashboardContent.d.ts.map +1 -0
- package/dist/admin/components/DashboardContent.js +129 -0
- package/dist/admin/components/DashboardContent.js.map +1 -0
- package/dist/admin/components/FormFieldRowLabel.d.ts +21 -0
- package/dist/admin/components/FormFieldRowLabel.d.ts.map +1 -0
- package/dist/admin/components/FormFieldRowLabel.js +47 -0
- package/dist/admin/components/FormFieldRowLabel.js.map +1 -0
- package/dist/admin/components/Icon.d.ts +10 -0
- package/dist/admin/components/Icon.d.ts.map +1 -0
- package/dist/admin/components/Icon.js +16 -0
- package/dist/admin/components/Icon.js.map +1 -0
- package/dist/admin/components/Logo.d.ts +10 -0
- package/dist/admin/components/Logo.d.ts.map +1 -0
- package/dist/admin/components/Logo.js +16 -0
- package/dist/admin/components/Logo.js.map +1 -0
- package/dist/admin/components/NavigationItemRowLabel.d.ts +21 -0
- package/dist/admin/components/NavigationItemRowLabel.d.ts.map +1 -0
- package/dist/admin/components/NavigationItemRowLabel.js +43 -0
- package/dist/admin/components/NavigationItemRowLabel.js.map +1 -0
- package/dist/admin/components/NavigationSubItemRowLabel.d.ts +19 -0
- package/dist/admin/components/NavigationSubItemRowLabel.d.ts.map +1 -0
- package/dist/admin/components/NavigationSubItemRowLabel.js +32 -0
- package/dist/admin/components/NavigationSubItemRowLabel.js.map +1 -0
- package/dist/admin/components/PagesListHeader.d.ts +13 -0
- package/dist/admin/components/PagesListHeader.d.ts.map +1 -0
- package/dist/admin/components/PagesListHeader.js +48 -0
- package/dist/admin/components/PagesListHeader.js.map +1 -0
- package/dist/admin/components/ProductsListHeader.d.ts +13 -0
- package/dist/admin/components/ProductsListHeader.d.ts.map +1 -0
- package/dist/admin/components/ProductsListHeader.js +55 -0
- package/dist/admin/components/ProductsListHeader.js.map +1 -0
- package/dist/admin/components/styles/CollectionListHeader.css +161 -0
- package/dist/admin/components/styles/ContentPreview.css +416 -0
- package/dist/admin/components/styles/Dashboard.css +338 -0
- package/dist/admin/fields/ColorInput.d.ts +13 -0
- package/dist/admin/fields/ColorInput.d.ts.map +1 -0
- package/dist/admin/fields/ColorInput.js +201 -0
- package/dist/admin/fields/ColorInput.js.map +1 -0
- package/dist/admin/fields/index.d.ts +9 -0
- package/dist/admin/fields/index.d.ts.map +1 -0
- package/dist/admin/fields/index.js +9 -0
- package/dist/admin/fields/index.js.map +1 -0
- package/dist/admin/index.d.ts +24 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +30 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/blocks/ContentBlocks.d.ts +75 -0
- package/dist/blocks/ContentBlocks.d.ts.map +1 -0
- package/dist/blocks/ContentBlocks.js +1241 -0
- package/dist/blocks/ContentBlocks.js.map +1 -0
- package/dist/blocks/index.d.ts +2 -0
- package/dist/blocks/index.d.ts.map +1 -0
- package/dist/blocks/index.js +3 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/client/PayloadAPIClient.d.ts +65 -0
- package/dist/client/PayloadAPIClient.d.ts.map +1 -0
- package/dist/client/PayloadAPIClient.js +167 -0
- package/dist/client/PayloadAPIClient.js.map +1 -0
- package/dist/collections/Automations.d.ts +12 -0
- package/dist/collections/Automations.d.ts.map +1 -0
- package/dist/collections/Automations.js +741 -0
- package/dist/collections/Automations.js.map +1 -0
- package/dist/collections/Features.d.ts +3 -0
- package/dist/collections/Features.d.ts.map +1 -0
- package/dist/collections/Features.js +69 -0
- package/dist/collections/Features.js.map +1 -0
- package/dist/collections/Footer.d.ts +11 -0
- package/dist/collections/Footer.d.ts.map +1 -0
- package/dist/collections/Footer.js +130 -0
- package/dist/collections/Footer.js.map +1 -0
- package/dist/collections/FormSubmissions.d.ts +3 -0
- package/dist/collections/FormSubmissions.d.ts.map +1 -0
- package/dist/collections/FormSubmissions.js +119 -0
- package/dist/collections/FormSubmissions.js.map +1 -0
- package/dist/collections/Forms.d.ts +16 -0
- package/dist/collections/Forms.d.ts.map +1 -0
- package/dist/collections/Forms.js +308 -0
- package/dist/collections/Forms.js.map +1 -0
- package/dist/collections/HeroBlocks.d.ts +3 -0
- package/dist/collections/HeroBlocks.d.ts.map +1 -0
- package/dist/collections/HeroBlocks.js +115 -0
- package/dist/collections/HeroBlocks.js.map +1 -0
- package/dist/collections/Media.d.ts +3 -0
- package/dist/collections/Media.d.ts.map +1 -0
- package/dist/collections/Media.js +26 -0
- package/dist/collections/Media.js.map +1 -0
- package/dist/collections/Navigation.d.ts +3 -0
- package/dist/collections/Navigation.d.ts.map +1 -0
- package/dist/collections/Navigation.js +106 -0
- package/dist/collections/Navigation.js.map +1 -0
- package/dist/collections/Pages.d.ts +3 -0
- package/dist/collections/Pages.d.ts.map +1 -0
- package/dist/collections/Pages.js +94 -0
- package/dist/collections/Pages.js.map +1 -0
- package/dist/collections/Posts.d.ts +3 -0
- package/dist/collections/Posts.d.ts.map +1 -0
- package/dist/collections/Posts.js +134 -0
- package/dist/collections/Posts.js.map +1 -0
- package/dist/collections/Products.d.ts +3 -0
- package/dist/collections/Products.d.ts.map +1 -0
- package/dist/collections/Products.js +264 -0
- package/dist/collections/Products.js.map +1 -0
- package/dist/collections/Users.d.ts +3 -0
- package/dist/collections/Users.d.ts.map +1 -0
- package/dist/collections/Users.js +53 -0
- package/dist/collections/Users.js.map +1 -0
- package/dist/collections/hooks/index.d.ts +9 -0
- package/dist/collections/hooks/index.d.ts.map +1 -0
- package/dist/collections/hooks/index.js +9 -0
- package/dist/collections/hooks/index.js.map +1 -0
- package/dist/collections/hooks/loggingHooks.d.ts +45 -0
- package/dist/collections/hooks/loggingHooks.d.ts.map +1 -0
- package/dist/collections/hooks/loggingHooks.js +109 -0
- package/dist/collections/hooks/loggingHooks.js.map +1 -0
- package/dist/collections/index.d.ts +14 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/index.js +16 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +4 -0
- package/dist/components/index.js.map +1 -0
- package/dist/globals/AdvancedSettings.d.ts +8 -0
- package/dist/globals/AdvancedSettings.d.ts.map +1 -0
- package/dist/globals/AdvancedSettings.js +157 -0
- package/dist/globals/AdvancedSettings.js.map +1 -0
- package/dist/globals/Integrations.d.ts +8 -0
- package/dist/globals/Integrations.d.ts.map +1 -0
- package/dist/globals/Integrations.js +270 -0
- package/dist/globals/Integrations.js.map +1 -0
- package/dist/globals/SiteSettings.d.ts +8 -0
- package/dist/globals/SiteSettings.d.ts.map +1 -0
- package/dist/globals/SiteSettings.js +258 -0
- package/dist/globals/SiteSettings.js.map +1 -0
- package/dist/globals/ThemeSettings.d.ts +11 -0
- package/dist/globals/ThemeSettings.d.ts.map +1 -0
- package/dist/globals/ThemeSettings.js +92 -0
- package/dist/globals/ThemeSettings.js.map +1 -0
- package/dist/globals/index.d.ts +5 -0
- package/dist/globals/index.d.ts.map +1 -0
- package/dist/globals/index.js +6 -0
- package/dist/globals/index.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/index.d.ts +73 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +190 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/nextjs/BlockRenderer.d.ts +227 -0
- package/dist/nextjs/BlockRenderer.d.ts.map +1 -0
- package/dist/nextjs/BlockRenderer.js +358 -0
- package/dist/nextjs/BlockRenderer.js.map +1 -0
- package/dist/nextjs/ClientHomePage.d.ts +6 -0
- package/dist/nextjs/ClientHomePage.d.ts.map +1 -0
- package/dist/nextjs/ClientHomePage.js +17 -0
- package/dist/nextjs/ClientHomePage.js.map +1 -0
- package/dist/nextjs/ClientSideQwickApp.d.ts +23 -0
- package/dist/nextjs/ClientSideQwickApp.d.ts.map +1 -0
- package/dist/nextjs/ClientSideQwickApp.js +50 -0
- package/dist/nextjs/ClientSideQwickApp.js.map +1 -0
- package/dist/nextjs/DynamicQwickApp.d.ts +9 -0
- package/dist/nextjs/DynamicQwickApp.d.ts.map +1 -0
- package/dist/nextjs/DynamicQwickApp.js +19 -0
- package/dist/nextjs/DynamicQwickApp.js.map +1 -0
- package/dist/nextjs/FooterFromSettings.d.ts +6 -0
- package/dist/nextjs/FooterFromSettings.d.ts.map +1 -0
- package/dist/nextjs/FooterFromSettings.js +72 -0
- package/dist/nextjs/FooterFromSettings.js.map +1 -0
- package/dist/nextjs/FormBlockComponent.d.ts +25 -0
- package/dist/nextjs/FormBlockComponent.d.ts.map +1 -0
- package/dist/nextjs/FormBlockComponent.js +110 -0
- package/dist/nextjs/FormBlockComponent.js.map +1 -0
- package/dist/nextjs/HomePageContent.d.ts +6 -0
- package/dist/nextjs/HomePageContent.d.ts.map +1 -0
- package/dist/nextjs/HomePageContent.js +50 -0
- package/dist/nextjs/HomePageContent.js.map +1 -0
- package/dist/nextjs/LivePreviewClient.d.ts +40 -0
- package/dist/nextjs/LivePreviewClient.d.ts.map +1 -0
- package/dist/nextjs/LivePreviewClient.js +35 -0
- package/dist/nextjs/LivePreviewClient.js.map +1 -0
- package/dist/nextjs/RefreshRouteOnSave.d.ts +31 -0
- package/dist/nextjs/RefreshRouteOnSave.d.ts.map +1 -0
- package/dist/nextjs/RefreshRouteOnSave.js +59 -0
- package/dist/nextjs/RefreshRouteOnSave.js.map +1 -0
- package/dist/nextjs/ScriptsInjector.d.ts +2 -0
- package/dist/nextjs/ScriptsInjector.d.ts.map +1 -0
- package/dist/nextjs/ScriptsInjector.js +73 -0
- package/dist/nextjs/ScriptsInjector.js.map +1 -0
- package/dist/nextjs/ServerQwickApp.d.ts +13 -0
- package/dist/nextjs/ServerQwickApp.d.ts.map +1 -0
- package/dist/nextjs/ServerQwickApp.js +159 -0
- package/dist/nextjs/ServerQwickApp.js.map +1 -0
- package/dist/nextjs/SettingsProvider.d.ts +110 -0
- package/dist/nextjs/SettingsProvider.d.ts.map +1 -0
- package/dist/nextjs/SettingsProvider.js +107 -0
- package/dist/nextjs/SettingsProvider.js.map +1 -0
- package/dist/nextjs/SiteLogo.d.ts +35 -0
- package/dist/nextjs/SiteLogo.d.ts.map +1 -0
- package/dist/nextjs/SiteLogo.js +105 -0
- package/dist/nextjs/SiteLogo.js.map +1 -0
- package/dist/nextjs/framework.d.ts +19 -0
- package/dist/nextjs/framework.d.ts.map +1 -0
- package/dist/nextjs/framework.js +35 -0
- package/dist/nextjs/framework.js.map +1 -0
- package/dist/nextjs/index.d.ts +38 -0
- package/dist/nextjs/index.d.ts.map +1 -0
- package/dist/nextjs/index.js +47 -0
- package/dist/nextjs/index.js.map +1 -0
- package/dist/nextjs/metadata.d.ts +20 -0
- package/dist/nextjs/metadata.d.ts.map +1 -0
- package/dist/nextjs/metadata.js +107 -0
- package/dist/nextjs/metadata.js.map +1 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/qwickapps-plugin.d.ts +78 -0
- package/dist/plugins/qwickapps-plugin.d.ts.map +1 -0
- package/dist/plugins/qwickapps-plugin.js +154 -0
- package/dist/plugins/qwickapps-plugin.js.map +1 -0
- package/dist/providers/PayloadDataProvider.d.ts +72 -0
- package/dist/providers/PayloadDataProvider.d.ts.map +1 -0
- package/dist/providers/PayloadDataProvider.js +222 -0
- package/dist/providers/PayloadDataProvider.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +3 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/styles/admin-theme.css +352 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|