@qwickapps/cms 0.2.6 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blocks/ContentBlocks.d.ts +5 -0
- package/dist/blocks/ContentBlocks.d.ts.map +1 -1
- package/dist/blocks/ContentBlocks.js +68 -0
- package/dist/blocks/ContentBlocks.js.map +1 -1
- package/dist/collections/Media.js +1 -1
- package/dist/collections/Media.js.map +1 -1
- package/dist/globals/ThemeSettings.d.ts.map +1 -1
- package/dist/globals/ThemeSettings.js +1 -0
- package/dist/globals/ThemeSettings.js.map +1 -1
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +3 -1
- package/dist/logging/index.js.map +1 -1
- package/dist/nextjs/BlockRenderer.d.ts +9 -1
- package/dist/nextjs/BlockRenderer.d.ts.map +1 -1
- package/dist/nextjs/BlockRenderer.js +42 -2
- package/dist/nextjs/BlockRenderer.js.map +1 -1
- package/dist/nextjs/ClientSideQwickApp.d.ts +12 -1
- package/dist/nextjs/ClientSideQwickApp.d.ts.map +1 -1
- package/dist/nextjs/ClientSideQwickApp.js +10 -5
- package/dist/nextjs/ClientSideQwickApp.js.map +1 -1
- package/dist/nextjs/ServerQwickApp.d.ts +9 -1
- package/dist/nextjs/ServerQwickApp.d.ts.map +1 -1
- package/dist/nextjs/ServerQwickApp.js +2 -2
- package/dist/nextjs/ServerQwickApp.js.map +1 -1
- package/dist/nextjs/SettingsProvider.d.ts +5 -0
- package/dist/nextjs/SettingsProvider.d.ts.map +1 -1
- package/dist/nextjs/SettingsProvider.js.map +1 -1
- package/dist/nextjs/SiteLogo.d.ts.map +1 -1
- package/dist/nextjs/SiteLogo.js +16 -1
- package/dist/nextjs/SiteLogo.js.map +1 -1
- package/dist/nextjs/client.d.ts +11 -0
- package/dist/nextjs/client.d.ts.map +1 -0
- package/dist/nextjs/client.js +11 -0
- package/dist/nextjs/client.js.map +1 -0
- package/dist/nextjs/framework.d.ts +1 -1
- package/dist/nextjs/framework.d.ts.map +1 -1
- package/dist/nextjs/framework.js +1 -1
- package/dist/nextjs/framework.js.map +1 -1
- package/package.json +9 -4
- package/qa/clean-install/Dockerfile +50 -0
- package/qa/clean-install/README.md +46 -0
- package/qa/clean-install/test-cms.ts +198 -0
- package/qa/clean-install/tsconfig.json +16 -0
- package/qa/clean-install/validate.sh +46 -0
|
@@ -5,10 +5,18 @@ import type { Config } from 'payload';
|
|
|
5
5
|
export interface ServerQwickAppProps {
|
|
6
6
|
children: ReactNode;
|
|
7
7
|
payloadConfig: Config;
|
|
8
|
+
appBar?: {
|
|
9
|
+
/** Actions to display - use render function for server/client boundary safety */
|
|
10
|
+
actions?: ReactNode | (() => ReactNode);
|
|
11
|
+
};
|
|
12
|
+
/** Optional providers wrapper component (e.g., ClientProviders for auth/cart/etc) */
|
|
13
|
+
providers?: React.ComponentType<{
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}>;
|
|
8
16
|
}
|
|
9
17
|
/**
|
|
10
18
|
* ServerQwickApp - Server Component
|
|
11
19
|
* Fetches navigation and settings from CMS and passes to client component
|
|
12
20
|
*/
|
|
13
|
-
export declare function ServerQwickApp({ children, payloadConfig }: ServerQwickAppProps): Promise<import("react/jsx-runtime").JSX.Element>;
|
|
21
|
+
export declare function ServerQwickApp({ children, payloadConfig, appBar, providers }: ServerQwickAppProps): Promise<import("react/jsx-runtime").JSX.Element>;
|
|
14
22
|
//# sourceMappingURL=ServerQwickApp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerQwickApp.d.ts","sourceRoot":"","sources":["../../src/nextjs/ServerQwickApp.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,OAAO,aAAa,CAAC;AAYrB,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;
|
|
1
|
+
{"version":3,"file":"ServerQwickApp.d.ts","sourceRoot":"","sources":["../../src/nextjs/ServerQwickApp.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,OAAO,aAAa,CAAC;AAYrB,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;IACtB,MAAM,CAAC,EAAE;QACP,iFAAiF;QACjF,OAAO,CAAC,EAAE,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,CAAC;KACzC,CAAC;IACF,qFAAqF;IACrF,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;CAC1D;AAqJD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,mBAAmB,oDAcvG"}
|
|
@@ -152,9 +152,9 @@ function getDefaultSettings() {
|
|
|
152
152
|
* ServerQwickApp - Server Component
|
|
153
153
|
* Fetches navigation and settings from CMS and passes to client component
|
|
154
154
|
*/
|
|
155
|
-
export async function ServerQwickApp({ children, payloadConfig }) {
|
|
155
|
+
export async function ServerQwickApp({ children, payloadConfig, appBar, providers }) {
|
|
156
156
|
const navigationData = await getNavigationData(payloadConfig);
|
|
157
157
|
const settings = await getSettings(payloadConfig);
|
|
158
|
-
return (_jsx(ClientSideQwickApp, { navigationItems: navigationData.items, initialSettings: settings, children: children }));
|
|
158
|
+
return (_jsx(ClientSideQwickApp, { navigationItems: navigationData.items, initialSettings: settings, appBar: appBar, providers: providers, children: children }));
|
|
159
159
|
}
|
|
160
160
|
//# sourceMappingURL=ServerQwickApp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerQwickApp.js","sourceRoot":"","sources":["../../src/nextjs/ServerQwickApp.tsx"],"names":[],"mappings":";AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC;AACvC,cAAc;AACd,OAAO,aAAa,CAAC;AAErB;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAgB,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ServerQwickApp.js","sourceRoot":"","sources":["../../src/nextjs/ServerQwickApp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,11 @@ export interface Settings {
|
|
|
19
19
|
siteName?: string;
|
|
20
20
|
siteDescription?: string;
|
|
21
21
|
siteUrl?: string;
|
|
22
|
+
logoIcon?: string;
|
|
23
|
+
customLogoIcon?: string;
|
|
24
|
+
logoText?: string;
|
|
25
|
+
logoBadge?: string;
|
|
26
|
+
logoBadgeShape?: 'circle' | 'square' | 'rounded';
|
|
22
27
|
siteLogo?: any;
|
|
23
28
|
favicon?: any;
|
|
24
29
|
copyrightText?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsProvider.d.ts","sourceRoot":"","sources":["../../src/nextjs/SettingsProvider.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsProvider.d.ts","sourceRoot":"","sources":["../../src/nextjs/SettingsProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsProvider.js","sourceRoot":"","sources":["../../src/nextjs/SettingsProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,cAAc;AAEd;;;;;;;;;;;;;;;GAeG;AAEH,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"SettingsProvider.js","sourceRoot":"","sources":["../../src/nextjs/SettingsProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SiteLogo.d.ts","sourceRoot":"","sources":["../../src/nextjs/SiteLogo.tsx"],"names":[],"mappings":"AACA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;IAC7D,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAc,EACd,OAAO,EACP,SAAS,EACT,KAAK,GACN,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"SiteLogo.d.ts","sourceRoot":"","sources":["../../src/nextjs/SiteLogo.tsx"],"names":[],"mappings":"AACA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;IAC7D,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAc,EACd,OAAO,EACP,SAAS,EACT,KAAK,GACN,EAAE,aAAa,2CAiKf"}
|
package/dist/nextjs/SiteLogo.js
CHANGED
|
@@ -63,9 +63,24 @@ export function SiteLogo({ size = 'small', onClick, className, style, }) {
|
|
|
63
63
|
}
|
|
64
64
|
else if (logoIcon === 'custom-icon' && customLogoIcon) {
|
|
65
65
|
// Use custom icon
|
|
66
|
-
|
|
66
|
+
let iconUrl = typeof customLogoIcon === 'object' && customLogoIcon.url
|
|
67
67
|
? customLogoIcon.url
|
|
68
68
|
: customLogoIcon;
|
|
69
|
+
// Convert absolute URLs to relative URLs if they're on the same domain
|
|
70
|
+
// This prevents Next.js Image optimization "url parameter not allowed" errors
|
|
71
|
+
if (typeof iconUrl === 'string' && iconUrl.startsWith('http')) {
|
|
72
|
+
try {
|
|
73
|
+
const url = new URL(iconUrl);
|
|
74
|
+
const currentHost = typeof window !== 'undefined' ? window.location.host : '';
|
|
75
|
+
// On server, always convert to relative URL for same-origin images
|
|
76
|
+
if (typeof window === 'undefined' || url.host === currentHost) {
|
|
77
|
+
iconUrl = url.pathname + url.search + url.hash;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
// Keep original URL if parsing fails
|
|
82
|
+
}
|
|
83
|
+
}
|
|
69
84
|
const iconSize = size === 'tiny' ? 20 : size === 'small' ? 32 : size === 'medium' ? 40 : size === 'large' ? 52 : 68;
|
|
70
85
|
iconElement = (_jsx(Image, { src: iconUrl, alt: "", width: iconSize, height: iconSize, style: { objectFit: 'contain' } }));
|
|
71
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SiteLogo.js","sourceRoot":"","sources":["../../src/nextjs/SiteLogo.tsx"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F;;;;;;;;;;;;;GAaG;AAEH,YAAY,CAAC;;AAGb,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,aAAa,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,MAAM,YAAY,CAAC;AAa/B;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,GAAG,OAAO,EACd,OAAO,EACP,SAAS,EACT,KAAK,GACS;IACd,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;IAEnC,eAAe;IACf,MAAM,QAAQ,GAAI,QAAgB,EAAE,QAAQ,IAAI,YAAY,CAAC;IAC7D,MAAM,cAAc,GAAI,QAAgB,EAAE,cAAc,CAAC;IACzD,MAAM,QAAQ,GAAI,QAAgB,EAAE,QAAQ,CAAC,CAAC,kCAAkC;IAChF,MAAM,QAAQ,GAAI,QAAgB,EAAE,QAAQ,IAAI,YAAY,CAAC;IAC7D,MAAM,SAAS,GAAI,QAAgB,EAAE,SAAS,IAAI,MAAM,CAAC;IACzD,MAAM,cAAc,GAAI,QAAgB,EAAE,cAAc,IAAI,QAAQ,CAAC;IAErE,mDAAmD;IACnD,MAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC;IAEzC,uCAAuC;IACvC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAChC,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,WAAW;YACX,SAAS;YACT,cAAc;YACd,OAAO,EAAE,QAAQ,KAAK,MAAM;YAC5B,OAAO,EAAE,CAAC,CAAC,WAAW;SACvB,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,MAAM,OAAO,GAAG,QAAQ,KAAK,MAAM,CAAC;IACpC,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC;IAE9B,2CAA2C;IAC3C,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;QACvB,8BAA8B;QAC9B,IAAI,WAA2C,CAAC;QAEhD,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC9B,wBAAwB;YACxB,WAAW,GAAG,SAAS,CAAC,CAAC,4CAA4C;QACvE,CAAC;aAAM,IAAI,QAAQ,KAAK,aAAa,IAAI,cAAc,EAAE,CAAC;YACxD,kBAAkB;YAClB,
|
|
1
|
+
{"version":3,"file":"SiteLogo.js","sourceRoot":"","sources":["../../src/nextjs/SiteLogo.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-only exports from QwickApps CMS
|
|
3
|
+
*
|
|
4
|
+
* This file exports only client-safe components that don't import server-only code.
|
|
5
|
+
* Use this instead of the main index for client components.
|
|
6
|
+
*/
|
|
7
|
+
export { SettingsProvider, useSettings, type Settings } from './SettingsProvider.js';
|
|
8
|
+
export { ScriptsInjector } from './ScriptsInjector.js';
|
|
9
|
+
export { SiteLogo, type SiteLogoProps } from './SiteLogo.js';
|
|
10
|
+
export { FooterFromSettings } from './FooterFromSettings.js';
|
|
11
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/nextjs/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-only exports from QwickApps CMS
|
|
3
|
+
*
|
|
4
|
+
* This file exports only client-safe components that don't import server-only code.
|
|
5
|
+
* Use this instead of the main index for client components.
|
|
6
|
+
*/
|
|
7
|
+
export { SettingsProvider, useSettings } from './SettingsProvider.js';
|
|
8
|
+
export { ScriptsInjector } from './ScriptsInjector.js';
|
|
9
|
+
export { SiteLogo } from './SiteLogo.js';
|
|
10
|
+
export { FooterFromSettings } from './FooterFromSettings.js';
|
|
11
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/nextjs/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAiB,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
17
17
|
*/
|
|
18
|
-
export { HeroBlock, Section, GridLayout, GridCell, Text, Button, FeatureCard, FeatureGrid, Footer, FormField, FormSelect, FormCheckbox, Captcha, iconMap, ProductCard, type HeroBlockProps, type SectionProps, type GridLayoutProps, type GridCellProps, type TextProps, type ButtonProps, type FeatureCardProps, type FeatureGridProps, type FormFieldProps, type FormSelectProps, type FormCheckboxProps, type CaptchaProps, type CaptchaProvider, } from '@qwickapps/react-framework';
|
|
18
|
+
export { HeroBlock, Section, GridLayout, GridCell, Text, Button, FeatureCard, FeatureGrid, Markdown, Footer, FormField, FormSelect, FormCheckbox, Captcha, iconMap, ProductCard, type HeroBlockProps, type SectionProps, type GridLayoutProps, type GridCellProps, type TextProps, type ButtonProps, type FeatureCardProps, type FeatureGridProps, type MarkdownProps, type FormFieldProps, type FormSelectProps, type FormCheckboxProps, type CaptchaProps, type CaptchaProvider, } from '@qwickapps/react-framework';
|
|
19
19
|
//# sourceMappingURL=framework.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../src/nextjs/framework.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAEL,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ,EAGR,IAAI,EACJ,MAAM,EACN,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../src/nextjs/framework.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAEL,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ,EAGR,IAAI,EACJ,MAAM,EACN,WAAW,EACX,WAAW,EACX,QAAQ,EAGR,MAAM,EAGN,SAAS,EACT,UAAU,EACV,YAAY,EACZ,OAAO,EAGP,OAAO,EAGP,WAAW,EAGX,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAC"}
|
package/dist/nextjs/framework.js
CHANGED
|
@@ -23,7 +23,7 @@ export {
|
|
|
23
23
|
// Layout components
|
|
24
24
|
HeroBlock, Section, GridLayout, GridCell,
|
|
25
25
|
// Content components
|
|
26
|
-
Text, Button, FeatureCard, FeatureGrid,
|
|
26
|
+
Text, Button, FeatureCard, FeatureGrid, Markdown,
|
|
27
27
|
// Structure components
|
|
28
28
|
Footer,
|
|
29
29
|
// Form components (themed for QwickApps)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/nextjs/framework.tsx"],"names":[],"mappings":"AAAA,cAAc;AACd,YAAY,CAAC;AAEb;;;;;;;;;;;;;;;;GAgBG;AAEH,iDAAiD;AACjD,kDAAkD;AAClD,OAAO;AACL,oBAAoB;AACpB,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ;AAER,qBAAqB;AACrB,IAAI,EACJ,MAAM,EACN,WAAW,EACX,WAAW;
|
|
1
|
+
{"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/nextjs/framework.tsx"],"names":[],"mappings":"AAAA,cAAc;AACd,YAAY,CAAC;AAEb;;;;;;;;;;;;;;;;GAgBG;AAEH,iDAAiD;AACjD,kDAAkD;AAClD,OAAO;AACL,oBAAoB;AACpB,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ;AAER,qBAAqB;AACrB,IAAI,EACJ,MAAM,EACN,WAAW,EACX,WAAW,EACX,QAAQ;AAER,uBAAuB;AACvB,MAAM;AAEN,yCAAyC;AACzC,SAAS,EACT,UAAU,EACV,YAAY,EACZ,OAAO;AAEP,YAAY;AACZ,OAAO;AAEP,qBAAqB;AACrB,WAAW,GAiBZ,MAAM,4BAA4B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qwickapps/cms",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "QwickApps CMS - Reusable Payload CMS collections, globals, and components",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -38,6 +38,10 @@
|
|
|
38
38
|
"types": "./dist/nextjs/index.d.ts",
|
|
39
39
|
"default": "./dist/nextjs/index.js"
|
|
40
40
|
},
|
|
41
|
+
"./nextjs/client": {
|
|
42
|
+
"types": "./dist/nextjs/client.d.ts",
|
|
43
|
+
"default": "./dist/nextjs/client.js"
|
|
44
|
+
},
|
|
41
45
|
"./admin": {
|
|
42
46
|
"types": "./dist/admin/index.d.ts",
|
|
43
47
|
"default": "./dist/admin/index.js"
|
|
@@ -55,7 +59,7 @@
|
|
|
55
59
|
"dev": "tsc --watch",
|
|
56
60
|
"clean": "rm -rf dist",
|
|
57
61
|
"validate": "./qa/clean-install/validate.sh",
|
|
58
|
-
"
|
|
62
|
+
"validate:safe": "test -f ./qa/clean-install/validate.sh && npm run validate || echo 'Validation skipped - qa scripts not available'"
|
|
59
63
|
},
|
|
60
64
|
"peerDependencies": {
|
|
61
65
|
"@mui/icons-material": ">=6.0.0",
|
|
@@ -66,7 +70,7 @@
|
|
|
66
70
|
"@payloadcms/ui": "^3.0.0",
|
|
67
71
|
"@qwickapps/react-framework": "*",
|
|
68
72
|
"@qwickapps/schema": "*",
|
|
69
|
-
"next": "^15.5.
|
|
73
|
+
"next": "^15.5.11",
|
|
70
74
|
"payload": "^3.0.0",
|
|
71
75
|
"react": "^19.0.0",
|
|
72
76
|
"react-dom": "^19.0.0"
|
|
@@ -91,11 +95,12 @@
|
|
|
91
95
|
},
|
|
92
96
|
"files": [
|
|
93
97
|
"dist",
|
|
98
|
+
"qa",
|
|
94
99
|
"README.md",
|
|
95
100
|
"LICENSE"
|
|
96
101
|
],
|
|
97
102
|
"dependencies": {
|
|
98
|
-
"@mui/material-nextjs": "^7.3.
|
|
103
|
+
"@mui/material-nextjs": "^7.3.7",
|
|
99
104
|
"@payloadcms/email-nodemailer": "3.65.0",
|
|
100
105
|
"@payloadcms/live-preview-react": "3.65.0",
|
|
101
106
|
"server-only": "^0.0.1"
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Clean Environment Test for @qwickapps/cms
|
|
2
|
+
# This Dockerfile simulates a fresh installation environment
|
|
3
|
+
|
|
4
|
+
FROM node:20-slim
|
|
5
|
+
|
|
6
|
+
ARG TARBALL
|
|
7
|
+
|
|
8
|
+
WORKDIR /app
|
|
9
|
+
|
|
10
|
+
# Copy and install the package tarball
|
|
11
|
+
COPY ${TARBALL} ./package.tgz
|
|
12
|
+
RUN npm init -y && \
|
|
13
|
+
npm pkg set type="module"
|
|
14
|
+
|
|
15
|
+
# Install peer dependencies (minimal set for type checking)
|
|
16
|
+
# Note: We install stubs/types where possible to avoid full runtime dependencies
|
|
17
|
+
RUN npm install \
|
|
18
|
+
react@19 \
|
|
19
|
+
react-dom@19 \
|
|
20
|
+
@types/react@19 \
|
|
21
|
+
@types/react-dom@19 \
|
|
22
|
+
next@15 \
|
|
23
|
+
payload@3 \
|
|
24
|
+
@payloadcms/next@3 \
|
|
25
|
+
@payloadcms/db-postgres@3 \
|
|
26
|
+
@payloadcms/richtext-lexical@3 \
|
|
27
|
+
@payloadcms/ui@3 \
|
|
28
|
+
@mui/material@6 \
|
|
29
|
+
@mui/icons-material@6 \
|
|
30
|
+
@emotion/react \
|
|
31
|
+
@emotion/styled \
|
|
32
|
+
@qwickapps/react-framework \
|
|
33
|
+
@qwickapps/schema \
|
|
34
|
+
--legacy-peer-deps
|
|
35
|
+
|
|
36
|
+
# Install the CMS package
|
|
37
|
+
RUN npm install ./package.tgz --legacy-peer-deps
|
|
38
|
+
|
|
39
|
+
# Copy test files
|
|
40
|
+
COPY qa/clean-install/test-cms.ts ./test-cms.ts
|
|
41
|
+
COPY qa/clean-install/tsconfig.json ./tsconfig.json
|
|
42
|
+
|
|
43
|
+
# Install TypeScript and tsx
|
|
44
|
+
RUN npm install typescript @types/node tsx --save-dev --legacy-peer-deps
|
|
45
|
+
|
|
46
|
+
# Run TypeScript type checking
|
|
47
|
+
RUN npx tsc --noEmit
|
|
48
|
+
|
|
49
|
+
# Run the test
|
|
50
|
+
RUN npx tsx test-cms.ts
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Clean Install Validation
|
|
2
|
+
|
|
3
|
+
This directory contains validation tests to ensure `@qwickapps/cms` works correctly when installed in a fresh environment (not from monorepo).
|
|
4
|
+
|
|
5
|
+
## What It Tests
|
|
6
|
+
|
|
7
|
+
1. **Package Installation** - Verifies the package installs without errors
|
|
8
|
+
2. **TypeScript Compilation** - Validates all type definitions work
|
|
9
|
+
3. **Subpath Exports** - Tests all subpath exports (collections, blocks, plugins, etc.)
|
|
10
|
+
4. **Logging Module** - Validates optional logging dependencies work correctly
|
|
11
|
+
5. **Type Definitions** - Ensures TypeScript types are properly exported
|
|
12
|
+
|
|
13
|
+
## Running the Test
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# From the package directory
|
|
17
|
+
./qa/clean-install/validate.sh
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Requirements
|
|
21
|
+
|
|
22
|
+
- Docker (for isolated environment testing)
|
|
23
|
+
- npm (for package creation)
|
|
24
|
+
|
|
25
|
+
## How It Works
|
|
26
|
+
|
|
27
|
+
1. Builds the package and creates an npm tarball
|
|
28
|
+
2. Spins up a fresh Docker container with Node.js
|
|
29
|
+
3. Installs the tarball with peer dependencies
|
|
30
|
+
4. Runs TypeScript type checking
|
|
31
|
+
5. Executes export verification tests
|
|
32
|
+
6. Reports success or failure
|
|
33
|
+
|
|
34
|
+
## Peer Dependencies Note
|
|
35
|
+
|
|
36
|
+
This package has many peer dependencies (Payload CMS, Next.js, React, etc.). The validation:
|
|
37
|
+
- Installs minimal peer dependencies needed for type checking
|
|
38
|
+
- Focuses on TypeScript compilation and export verification
|
|
39
|
+
- Does not test full runtime behavior (that requires a complete Payload/Next.js setup)
|
|
40
|
+
|
|
41
|
+
## When to Run
|
|
42
|
+
|
|
43
|
+
- Before publishing to npm
|
|
44
|
+
- After making changes to exports or types
|
|
45
|
+
- As part of CI/CD pipeline
|
|
46
|
+
- When debugging installation issues
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clean Environment Validation Test for @qwickapps/cms
|
|
3
|
+
*
|
|
4
|
+
* This file tests that the package can be imported and used correctly
|
|
5
|
+
* in a fresh TypeScript/Node.js project.
|
|
6
|
+
*
|
|
7
|
+
* It validates:
|
|
8
|
+
* - All subpath exports are available
|
|
9
|
+
* - TypeScript types work correctly
|
|
10
|
+
* - Collections, blocks, and plugins can be imported
|
|
11
|
+
* - Logging module works with optional dependencies
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
let testsPassed = 0;
|
|
15
|
+
let testsFailed = 0;
|
|
16
|
+
|
|
17
|
+
function test(name: string, fn: () => void | Promise<void>): void {
|
|
18
|
+
try {
|
|
19
|
+
const result = fn();
|
|
20
|
+
if (result instanceof Promise) {
|
|
21
|
+
result
|
|
22
|
+
.then(() => {
|
|
23
|
+
console.log(` ✓ ${name}`);
|
|
24
|
+
testsPassed++;
|
|
25
|
+
})
|
|
26
|
+
.catch((err) => {
|
|
27
|
+
console.log(` ✗ ${name}: ${err.message}`);
|
|
28
|
+
testsFailed++;
|
|
29
|
+
});
|
|
30
|
+
} else {
|
|
31
|
+
console.log(` ✓ ${name}`);
|
|
32
|
+
testsPassed++;
|
|
33
|
+
}
|
|
34
|
+
} catch (err: unknown) {
|
|
35
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
36
|
+
console.log(` ✗ ${name}: ${message}`);
|
|
37
|
+
testsFailed++;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function assert(condition: boolean, message: string): void {
|
|
42
|
+
if (!condition) {
|
|
43
|
+
throw new Error(message);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
console.log('╔════════════════════════════════════════════════════════════════╗');
|
|
48
|
+
console.log('║ @qwickapps/cms - Clean Environment Test ║');
|
|
49
|
+
console.log('╚════════════════════════════════════════════════════════════════╝');
|
|
50
|
+
console.log('');
|
|
51
|
+
|
|
52
|
+
// Test 1: Main exports
|
|
53
|
+
console.log('Test Group: Main Exports');
|
|
54
|
+
|
|
55
|
+
test('Main module imports successfully', async () => {
|
|
56
|
+
const cms = await import('@qwickapps/cms');
|
|
57
|
+
assert(cms !== undefined, 'Main module should export something');
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Test 2: Collections subpath
|
|
61
|
+
console.log('\nTest Group: Collections Subpath');
|
|
62
|
+
|
|
63
|
+
test('Collections subpath imports successfully', async () => {
|
|
64
|
+
const collections = await import('@qwickapps/cms/collections');
|
|
65
|
+
assert(collections !== undefined, 'Collections should be importable');
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
test('Pages collection exists', async () => {
|
|
69
|
+
const { Pages } = await import('@qwickapps/cms/collections');
|
|
70
|
+
assert(Pages !== undefined, 'Pages collection should exist');
|
|
71
|
+
assert(typeof Pages === 'object', 'Pages should be an object');
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
test('Users collection exists', async () => {
|
|
75
|
+
const { Users } = await import('@qwickapps/cms/collections');
|
|
76
|
+
assert(Users !== undefined, 'Users collection should exist');
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test('Media collection exists', async () => {
|
|
80
|
+
const { Media } = await import('@qwickapps/cms/collections');
|
|
81
|
+
assert(Media !== undefined, 'Media collection should exist');
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
test('Posts collection exists', async () => {
|
|
85
|
+
const { Posts } = await import('@qwickapps/cms/collections');
|
|
86
|
+
assert(Posts !== undefined, 'Posts collection should exist');
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
test('Navigation collection exists', async () => {
|
|
90
|
+
const { Navigation } = await import('@qwickapps/cms/collections');
|
|
91
|
+
assert(Navigation !== undefined, 'Navigation collection should exist');
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Test 3: Blocks subpath
|
|
95
|
+
console.log('\nTest Group: Blocks Subpath');
|
|
96
|
+
|
|
97
|
+
test('Blocks subpath imports successfully', async () => {
|
|
98
|
+
const blocks = await import('@qwickapps/cms/blocks');
|
|
99
|
+
assert(blocks !== undefined, 'Blocks should be importable');
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
test('HeroBlock exists', async () => {
|
|
103
|
+
const { HeroBlock } = await import('@qwickapps/cms/blocks');
|
|
104
|
+
assert(HeroBlock !== undefined, 'HeroBlock should exist');
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
test('contentBlocks array exists', async () => {
|
|
108
|
+
const { contentBlocks } = await import('@qwickapps/cms/blocks');
|
|
109
|
+
assert(contentBlocks !== undefined, 'contentBlocks should exist');
|
|
110
|
+
assert(Array.isArray(contentBlocks), 'contentBlocks should be an array');
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
// Test 4: Plugins subpath
|
|
114
|
+
console.log('\nTest Group: Plugins Subpath');
|
|
115
|
+
|
|
116
|
+
test('Plugins subpath imports successfully', async () => {
|
|
117
|
+
const plugins = await import('@qwickapps/cms/plugins');
|
|
118
|
+
assert(plugins !== undefined, 'Plugins should be importable');
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
test('qwickappsPlugin exists', async () => {
|
|
122
|
+
const { qwickappsPlugin } = await import('@qwickapps/cms/plugins');
|
|
123
|
+
assert(qwickappsPlugin !== undefined, 'qwickappsPlugin should exist');
|
|
124
|
+
assert(typeof qwickappsPlugin === 'function', 'qwickappsPlugin should be a function');
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// Test 5: Globals subpath
|
|
128
|
+
console.log('\nTest Group: Globals Subpath');
|
|
129
|
+
|
|
130
|
+
test('Globals subpath imports successfully', async () => {
|
|
131
|
+
const globals = await import('@qwickapps/cms/globals');
|
|
132
|
+
assert(globals !== undefined, 'Globals should be importable');
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
// Test 6: Components subpath
|
|
136
|
+
console.log('\nTest Group: Components Subpath');
|
|
137
|
+
|
|
138
|
+
test('Components subpath imports successfully', async () => {
|
|
139
|
+
const components = await import('@qwickapps/cms/components');
|
|
140
|
+
assert(components !== undefined, 'Components should be importable');
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// Test 7: Providers subpath
|
|
144
|
+
console.log('\nTest Group: Providers Subpath');
|
|
145
|
+
|
|
146
|
+
test('Providers subpath imports successfully', async () => {
|
|
147
|
+
const providers = await import('@qwickapps/cms/providers');
|
|
148
|
+
assert(providers !== undefined, 'Providers should be importable');
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// Test 8: Logging subpath (with optional dependencies)
|
|
152
|
+
console.log('\nTest Group: Logging Subpath');
|
|
153
|
+
|
|
154
|
+
test('Logging subpath imports successfully', async () => {
|
|
155
|
+
const logging = await import('@qwickapps/cms/logging');
|
|
156
|
+
assert(logging !== undefined, 'Logging should be importable');
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
test('createCMSLogger exists', async () => {
|
|
160
|
+
const { createCMSLogger } = await import('@qwickapps/cms/logging');
|
|
161
|
+
assert(createCMSLogger !== undefined, 'createCMSLogger should exist');
|
|
162
|
+
assert(typeof createCMSLogger === 'function', 'createCMSLogger should be a function');
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
test('cmsLoggers object exists', async () => {
|
|
166
|
+
const { cmsLoggers } = await import('@qwickapps/cms/logging');
|
|
167
|
+
assert(cmsLoggers !== undefined, 'cmsLoggers should exist');
|
|
168
|
+
assert(typeof cmsLoggers === 'object', 'cmsLoggers should be an object');
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
test('flushCMSLogs exists', async () => {
|
|
172
|
+
const { flushCMSLogs } = await import('@qwickapps/cms/logging');
|
|
173
|
+
assert(flushCMSLogs !== undefined, 'flushCMSLogs should exist');
|
|
174
|
+
assert(typeof flushCMSLogs === 'function', 'flushCMSLogs should be a function');
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// Test 9: Admin subpath
|
|
178
|
+
// Note: Admin components import CSS which requires a bundler (webpack/vite).
|
|
179
|
+
// TypeScript type checking validates the exports. Runtime import is skipped.
|
|
180
|
+
console.log('\nTest Group: Admin Subpath');
|
|
181
|
+
console.log(' ⏭ Admin subpath skipped (requires bundler for CSS imports)');
|
|
182
|
+
console.log(' ✓ Admin types validated by TypeScript compilation');
|
|
183
|
+
|
|
184
|
+
// Wait for async tests to complete
|
|
185
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
186
|
+
|
|
187
|
+
// Summary
|
|
188
|
+
console.log('\n' + '─'.repeat(60));
|
|
189
|
+
console.log(`\nResults: ${testsPassed} passed, ${testsFailed} failed`);
|
|
190
|
+
console.log('');
|
|
191
|
+
|
|
192
|
+
if (testsFailed > 0) {
|
|
193
|
+
console.log('❌ Some tests failed! Package may have issues.');
|
|
194
|
+
process.exit(1);
|
|
195
|
+
} else {
|
|
196
|
+
console.log('✅ All tests passed! Package works correctly in clean environment.');
|
|
197
|
+
process.exit(0);
|
|
198
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "NodeNext",
|
|
5
|
+
"moduleResolution": "NodeNext",
|
|
6
|
+
"esModuleInterop": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"declaration": false,
|
|
10
|
+
"outDir": "./dist",
|
|
11
|
+
"rootDir": ".",
|
|
12
|
+
"noEmit": true,
|
|
13
|
+
"jsx": "react-jsx"
|
|
14
|
+
},
|
|
15
|
+
"include": ["*.ts", "*.tsx"]
|
|
16
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
# Clean Environment Validation Script for @qwickapps/cms
|
|
5
|
+
# This script validates that the package can be installed and used in a clean environment
|
|
6
|
+
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
PACKAGE_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
9
|
+
PACKAGE_NAME="@qwickapps/cms"
|
|
10
|
+
|
|
11
|
+
echo "╔════════════════════════════════════════════════════════════════╗"
|
|
12
|
+
echo "║ $PACKAGE_NAME - Clean Install Validation ║"
|
|
13
|
+
echo "╚════════════════════════════════════════════════════════════════╝"
|
|
14
|
+
echo ""
|
|
15
|
+
|
|
16
|
+
# Check if Docker is available
|
|
17
|
+
if ! command -v docker &> /dev/null; then
|
|
18
|
+
echo "❌ Docker is required but not installed. Please install Docker."
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Build the package first
|
|
23
|
+
echo "📦 Building package..."
|
|
24
|
+
cd "$PACKAGE_DIR"
|
|
25
|
+
npm run build
|
|
26
|
+
|
|
27
|
+
# Create tarball
|
|
28
|
+
echo "📦 Creating npm tarball..."
|
|
29
|
+
TARBALL=$(npm pack 2>&1 | tail -1)
|
|
30
|
+
echo " Created: $TARBALL"
|
|
31
|
+
|
|
32
|
+
# Build Docker image and run test
|
|
33
|
+
echo ""
|
|
34
|
+
echo "🐳 Running clean environment test..."
|
|
35
|
+
docker build --no-cache -t qwickapps-cms-test \
|
|
36
|
+
--build-arg TARBALL="$TARBALL" \
|
|
37
|
+
-f "$SCRIPT_DIR/Dockerfile" \
|
|
38
|
+
"$PACKAGE_DIR"
|
|
39
|
+
|
|
40
|
+
# Cleanup
|
|
41
|
+
echo ""
|
|
42
|
+
echo "🧹 Cleaning up..."
|
|
43
|
+
rm -f "$PACKAGE_DIR/$TARBALL"
|
|
44
|
+
|
|
45
|
+
echo ""
|
|
46
|
+
echo "✅ Clean environment validation passed!"
|