@se-studio/core-ui 1.0.91 → 1.0.92
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/CHANGELOG.md +9 -0
- package/dist/cmsRegistration.d.ts +41 -4
- package/dist/cmsRegistration.d.ts.map +1 -1
- package/dist/cmsRegistration.js.map +1 -1
- package/dist/showcase/components/AllViewPanel.d.ts.map +1 -1
- package/dist/showcase/components/AllViewPanel.js +20 -3
- package/dist/showcase/components/AllViewPanel.js.map +1 -1
- package/dist/showcase/components/IframeHeightReporter.d.ts +10 -0
- package/dist/showcase/components/IframeHeightReporter.d.ts.map +1 -0
- package/dist/showcase/components/IframeHeightReporter.js +24 -0
- package/dist/showcase/components/IframeHeightReporter.js.map +1 -0
- package/dist/showcase/components/PreviewPanel.d.ts.map +1 -1
- package/dist/showcase/components/PreviewPanel.js +3 -4
- package/dist/showcase/components/PreviewPanel.js.map +1 -1
- package/dist/showcase/components/ScaledIframe.d.ts +3 -2
- package/dist/showcase/components/ScaledIframe.d.ts.map +1 -1
- package/dist/showcase/components/ScaledIframe.js +22 -4
- package/dist/showcase/components/ScaledIframe.js.map +1 -1
- package/dist/showcase/components/ShowcaseAllRenderPage.d.ts +1 -1
- package/dist/showcase/components/ShowcaseAllRenderPage.d.ts.map +1 -1
- package/dist/showcase/components/ShowcaseAllRenderPage.js +26 -25
- package/dist/showcase/components/ShowcaseAllRenderPage.js.map +1 -1
- package/dist/showcase/components/ShowcasePage.d.ts +4 -1
- package/dist/showcase/components/ShowcasePage.d.ts.map +1 -1
- package/dist/showcase/components/ShowcasePage.js +28 -2
- package/dist/showcase/components/ShowcasePage.js.map +1 -1
- package/dist/showcase/components/ShowcaseRenderPage.d.ts +1 -1
- package/dist/showcase/components/ShowcaseRenderPage.d.ts.map +1 -1
- package/dist/showcase/components/ShowcaseRenderPage.js +15 -8
- package/dist/showcase/components/ShowcaseRenderPage.js.map +1 -1
- package/dist/showcase/index.d.ts +1 -0
- package/dist/showcase/index.d.ts.map +1 -1
- package/dist/showcase/index.js +1 -0
- package/dist/showcase/index.js.map +1 -1
- package/dist/showcase/mergeShowcaseMocks.d.ts +34 -0
- package/dist/showcase/mergeShowcaseMocks.d.ts.map +1 -0
- package/dist/showcase/mergeShowcaseMocks.js +31 -0
- package/dist/showcase/mergeShowcaseMocks.js.map +1 -0
- package/dist/showcase/mockFactory.d.ts +9 -5
- package/dist/showcase/mockFactory.d.ts.map +1 -1
- package/dist/showcase/mockFactory.js +207 -33
- package/dist/showcase/mockFactory.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -24,15 +24,51 @@ import type { ITyped } from '@se-studio/core-data-types';
|
|
|
24
24
|
import type { CollectionRenderer, EmbeddedCollectionRenderer } from './components/CmsCollection';
|
|
25
25
|
import type { ComponentRenderer, EmbeddedComponentRenderer } from './components/CmsComponent';
|
|
26
26
|
import type { EmbeddedExternalComponentRenderer, ExternalComponentRenderer } from './components/CmsExternalComponent';
|
|
27
|
+
/**
|
|
28
|
+
* A Contentful Rich Text document stored as-is for direct rendering in the showcase.
|
|
29
|
+
* Uses `unknown` for `json` so JSON-imported curated mocks are compatible without casts
|
|
30
|
+
* (TypeScript widens JSON string fields which would otherwise conflict with the strict
|
|
31
|
+
* Contentful `Document` type). The value is cast to `IContentfulRichText` at point of use.
|
|
32
|
+
*/
|
|
33
|
+
export type MockRichText = {
|
|
34
|
+
json: unknown;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* JSON-safe link shape used in curated showcase mocks.
|
|
38
|
+
* Matches the SerializedLink shape written by generate-showcase-data.
|
|
39
|
+
* `type` is a plain string so TypeScript JSON imports are compatible (no widening issues).
|
|
40
|
+
* The consumer narrows to the specific link types at runtime via mockLinksToLinkProps.
|
|
41
|
+
*/
|
|
42
|
+
export interface MockLink {
|
|
43
|
+
id: string;
|
|
44
|
+
name: string;
|
|
45
|
+
text: string | null;
|
|
46
|
+
type: string;
|
|
47
|
+
href: string;
|
|
48
|
+
variant?: string;
|
|
49
|
+
backgroundColour?: string;
|
|
50
|
+
textColour?: string;
|
|
51
|
+
slug?: string;
|
|
52
|
+
internalType?: string;
|
|
53
|
+
internalId?: string;
|
|
54
|
+
}
|
|
27
55
|
export interface MockData {
|
|
28
56
|
visual?: {
|
|
29
57
|
width: number;
|
|
30
58
|
height: number;
|
|
59
|
+
url?: string;
|
|
60
|
+
lottieUrl?: string;
|
|
31
61
|
};
|
|
62
|
+
/** Array of distinct card mocks for collections — each card slot gets its own content. */
|
|
63
|
+
cards?: MockData[];
|
|
64
|
+
/** Real link data extracted from Contentful; used instead of generic placeholder links. */
|
|
65
|
+
links?: MockLink[];
|
|
32
66
|
[key: string]: string | number | boolean | {
|
|
33
67
|
width: number;
|
|
34
68
|
height: number;
|
|
35
|
-
|
|
69
|
+
url?: string;
|
|
70
|
+
lottieUrl?: string;
|
|
71
|
+
} | MockRichText | MockData[] | MockLink[] | undefined;
|
|
36
72
|
}
|
|
37
73
|
/**
|
|
38
74
|
* Registration for a CMS component.
|
|
@@ -69,8 +105,9 @@ export interface CollectionRegistration<TName extends string = string, TCollecti
|
|
|
69
105
|
cardUsedFields?: Set<string>;
|
|
70
106
|
/** Optional mock data configuration for the showcase (collection fields) */
|
|
71
107
|
mock?: MockData;
|
|
72
|
-
/** Optional mock data configuration for the showcase (card fields)
|
|
73
|
-
|
|
108
|
+
/** Optional mock data configuration for the showcase (card fields). Can be a single mock
|
|
109
|
+
* repeated for all cards, or an array of distinct mocks cycled across card slots. */
|
|
110
|
+
cardMock?: MockData | MockData[];
|
|
74
111
|
/** Optional flag to exclude from cms-showcase */
|
|
75
112
|
showcaseExclude?: boolean;
|
|
76
113
|
}
|
|
@@ -107,7 +144,7 @@ export declare function buildCollectionMaps<TCollection extends ITyped>(registra
|
|
|
107
144
|
collectionFieldsMap: Record<string, Set<string>>;
|
|
108
145
|
collectionCardFieldsMap: Record<string, Set<string>>;
|
|
109
146
|
collectionMockMap: Record<string, MockData>;
|
|
110
|
-
collectionCardMockMap: Record<string, MockData>;
|
|
147
|
+
collectionCardMockMap: Record<string, MockData | MockData[]>;
|
|
111
148
|
excludedCollections: string[];
|
|
112
149
|
};
|
|
113
150
|
type ExternalComponentRegistrationsInput<TExternal extends ITyped> = readonly ExternalComponentRegistration<string, TExternal>[] | Record<string, ExternalComponentRegistration<string, TExternal>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmsRegistration.d.ts","sourceRoot":"","sources":["../src/cmsRegistration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,KAAK,EACV,iCAAiC,EACjC,yBAAyB,EAC1B,MAAM,mCAAmC,CAAC;AAM3C,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"cmsRegistration.d.ts","sourceRoot":"","sources":["../src/cmsRegistration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmsRegistration.js","sourceRoot":"","sources":["../src/cmsRegistration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"cmsRegistration.js","sourceRoot":"","sources":["../src/cmsRegistration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AllViewPanel.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/AllViewPanel.tsx"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,IAAI,EAAE,WAAW,GAAG,YAAY,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD,eAAO,MAAM,YAAY,GAAI,oBAAoB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"AllViewPanel.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/AllViewPanel.tsx"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,IAAI,EAAE,WAAW,GAAG,YAAY,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD,eAAO,MAAM,YAAY,GAAI,oBAAoB,iBAAiB,4CAsIjE,CAAC"}
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from 'react';
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
4
|
const VIEWPORT_MOBILE = { width: 375, label: 'Mobile' };
|
|
5
5
|
const VIEWPORT_DESKTOP = { width: 1440, label: 'Desktop' };
|
|
6
6
|
const ZOOM_LEVELS = [25, 50, 75, 100];
|
|
7
7
|
export const AllViewPanel = ({ mode, basePath }) => {
|
|
8
8
|
const [viewport, setViewport] = useState('desktop');
|
|
9
9
|
const [zoom, setZoom] = useState(50);
|
|
10
|
+
const [iframeHeight, setIframeHeight] = useState(8000);
|
|
11
|
+
const iframeRef = useRef(null);
|
|
10
12
|
const viewportConfig = viewport === 'mobile' ? VIEWPORT_MOBILE : VIEWPORT_DESKTOP;
|
|
11
13
|
const scale = zoom / 100;
|
|
14
|
+
// Listen for height reports from this specific iframe's content.
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
const handler = (event) => {
|
|
17
|
+
if (event.data?.type === 'showcase-iframe-height' &&
|
|
18
|
+
iframeRef.current &&
|
|
19
|
+
event.source === iframeRef.current.contentWindow) {
|
|
20
|
+
setIframeHeight(event.data.height);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
window.addEventListener('message', handler);
|
|
24
|
+
return () => window.removeEventListener('message', handler);
|
|
25
|
+
}, []);
|
|
12
26
|
// Build URL for render-all page
|
|
13
27
|
const buildUrl = () => {
|
|
14
28
|
const params = new URLSearchParams();
|
|
@@ -19,15 +33,18 @@ export const AllViewPanel = ({ mode, basePath }) => {
|
|
|
19
33
|
const iframeUrl = buildUrl();
|
|
20
34
|
// Calculate scaled dimensions
|
|
21
35
|
const scaledWidth = viewportConfig.width * scale;
|
|
36
|
+
// The wrapper box must match the visual (scaled) height so the scroll area
|
|
37
|
+
// accounts for the true content rather than an arbitrarily large fixed height.
|
|
38
|
+
const scaledHeight = iframeHeight * scale;
|
|
22
39
|
return (_jsxs("div", { className: "flex-1 flex flex-col overflow-hidden bg-[#f3f4f6]", children: [_jsxs("div", { className: "flex items-center gap-[16px] px-[16px] py-[12px] bg-[#ffffff] border-b border-[#e5e7eb]", children: [_jsxs("div", { className: "flex items-center gap-[8px]", children: [_jsx("span", { className: "text-[12px] font-[500] text-[#6b7280] uppercase tracking-wider", children: "Viewport" }), _jsxs("div", { className: "flex bg-[#f3f4f6] rounded-md p-[2px] border border-[#e5e7eb]", children: [_jsxs("button", { type: "button", onClick: () => setViewport('mobile'), className: `px-[12px] py-[4px] text-[12px] font-[500] rounded transition-colors ${viewport === 'mobile'
|
|
23
40
|
? 'bg-[#ffffff] text-[#111827] shadow-sm'
|
|
24
41
|
: 'text-[#6b7280] hover:text-[#111827]'}`, children: ["Mobile (", VIEWPORT_MOBILE.width, "px)"] }), _jsxs("button", { type: "button", onClick: () => setViewport('desktop'), className: `px-[12px] py-[4px] text-[12px] font-[500] rounded transition-colors ${viewport === 'desktop'
|
|
25
42
|
? 'bg-[#ffffff] text-[#111827] shadow-sm'
|
|
26
43
|
: 'text-[#6b7280] hover:text-[#111827]'}`, children: ["Desktop (", VIEWPORT_DESKTOP.width, "px)"] })] })] }), _jsx("div", { className: "h-[24px] w-[1px] bg-[#e5e7eb]" }), _jsxs("div", { className: "flex items-center gap-[8px]", children: [_jsx("span", { className: "text-[12px] font-[500] text-[#6b7280] uppercase tracking-wider", children: "Zoom" }), _jsx("div", { className: "flex bg-[#f3f4f6] rounded-md p-[2px] border border-[#e5e7eb]", children: ZOOM_LEVELS.map((level) => (_jsxs("button", { type: "button", onClick: () => setZoom(level), className: `px-[10px] py-[4px] text-[12px] font-[500] rounded transition-colors ${zoom === level
|
|
27
44
|
? 'bg-[#ffffff] text-[#111827] shadow-sm'
|
|
28
|
-
: 'text-[#6b7280] hover:text-[#111827]'}`, children: [level, "%"] }, level))) })] }), _jsx("div", { className: "h-[24px] w-[1px] bg-[#e5e7eb]" }), _jsxs("span", { className: "text-[12px] text-[#9ca3af]", children: ["Scroll to browse all ", mode === 'component' ? 'components' : 'collections'] })] }), _jsx("div", { className: "flex-1 overflow-auto p-[24px]", children: _jsx("div", { className: "mx-auto bg-[#ffffff] shadow-lg rounded-lg overflow-hidden border border-[#e5e7eb]", style: { width: scaledWidth }, children: _jsx("iframe", { src: iframeUrl, title: `All ${mode}s preview - ${viewportConfig.label}`, className: "origin-top-left border-none", style: {
|
|
45
|
+
: 'text-[#6b7280] hover:text-[#111827]'}`, children: [level, "%"] }, level))) })] }), _jsx("div", { className: "h-[24px] w-[1px] bg-[#e5e7eb]" }), _jsxs("span", { className: "text-[12px] text-[#9ca3af]", children: ["Scroll to browse all ", mode === 'component' ? 'components' : 'collections'] })] }), _jsx("div", { className: "flex-1 overflow-auto p-[24px]", children: _jsx("div", { className: "mx-auto bg-[#ffffff] shadow-lg rounded-lg overflow-hidden border border-[#e5e7eb]", style: { width: scaledWidth, height: scaledHeight }, children: _jsx("iframe", { ref: iframeRef, src: iframeUrl, title: `All ${mode}s preview - ${viewportConfig.label}`, className: "origin-top-left border-none", style: {
|
|
29
46
|
width: viewportConfig.width,
|
|
30
|
-
height:
|
|
47
|
+
height: iframeHeight,
|
|
31
48
|
transform: `scale(${scale})`,
|
|
32
49
|
transformOrigin: 'top left',
|
|
33
50
|
} }) }) })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AllViewPanel.js","sourceRoot":"","sources":["../../../src/showcase/components/AllViewPanel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AllViewPanel.js","sourceRoot":"","sources":["../../../src/showcase/components/AllViewPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drop this inside any page that is rendered inside an iframe.
|
|
3
|
+
* It measures the true document height via ResizeObserver and posts it to the
|
|
4
|
+
* parent frame via postMessage so the parent can size the iframe to fit content
|
|
5
|
+
* instead of using a fixed/oversized height.
|
|
6
|
+
*
|
|
7
|
+
* Same-origin only — no CORS issues for the CMS showcase use case.
|
|
8
|
+
*/
|
|
9
|
+
export declare function IframeHeightReporter(): null;
|
|
10
|
+
//# sourceMappingURL=IframeHeightReporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IframeHeightReporter.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/IframeHeightReporter.tsx"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,SAenC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* Drop this inside any page that is rendered inside an iframe.
|
|
5
|
+
* It measures the true document height via ResizeObserver and posts it to the
|
|
6
|
+
* parent frame via postMessage so the parent can size the iframe to fit content
|
|
7
|
+
* instead of using a fixed/oversized height.
|
|
8
|
+
*
|
|
9
|
+
* Same-origin only — no CORS issues for the CMS showcase use case.
|
|
10
|
+
*/
|
|
11
|
+
export function IframeHeightReporter() {
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const report = () => {
|
|
14
|
+
const height = document.documentElement.scrollHeight;
|
|
15
|
+
window.parent.postMessage({ type: 'showcase-iframe-height', height }, '*');
|
|
16
|
+
};
|
|
17
|
+
report();
|
|
18
|
+
const observer = new ResizeObserver(report);
|
|
19
|
+
observer.observe(document.documentElement);
|
|
20
|
+
return () => observer.disconnect();
|
|
21
|
+
}, []);
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=IframeHeightReporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IframeHeightReporter.js","sourceRoot":"","sources":["../../../src/showcase/components/IframeHeightReporter.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7E,CAAC,CAAC;QAEF,MAAM,EAAE,CAAC;QAET,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC3C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewPanel.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/PreviewPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGrD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,GAAG,YAAY,CAAC;IACjC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,eAAO,MAAM,YAAY,GAAI,oCAAoC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"PreviewPanel.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/PreviewPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGrD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,GAAG,YAAY,CAAC;IACjC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,eAAO,MAAM,YAAY,GAAI,oCAAoC,iBAAiB,4CA0DjF,CAAC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect, useRef, useState } from 'react';
|
|
4
4
|
import { ScaledIframe } from './ScaledIframe';
|
|
5
|
-
const VIEWPORT_MOBILE = { width: 375
|
|
6
|
-
const VIEWPORT_DESKTOP = { width: 1440
|
|
5
|
+
const VIEWPORT_MOBILE = { width: 375 };
|
|
6
|
+
const VIEWPORT_DESKTOP = { width: 1440 };
|
|
7
7
|
export const PreviewPanel = ({ type, mode, controls, basePath }) => {
|
|
8
8
|
const containerRef = useRef(null);
|
|
9
9
|
const [containerWidth, setContainerWidth] = useState(0);
|
|
@@ -29,7 +29,6 @@ export const PreviewPanel = ({ type, mode, controls, basePath }) => {
|
|
|
29
29
|
params.set(key, String(value));
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
|
-
// Ensure basePath ends with /render if not already present or handle accordingly
|
|
33
32
|
const renderPath = basePath.endsWith('/') ? `${basePath}render` : `${basePath}/render`;
|
|
34
33
|
return `${renderPath}?${params.toString()}`;
|
|
35
34
|
};
|
|
@@ -37,6 +36,6 @@ export const PreviewPanel = ({ type, mode, controls, basePath }) => {
|
|
|
37
36
|
// Desktop gets roughly 2/3 of the space, Mobile gets 1/3
|
|
38
37
|
const mobileContainerWidth = containerWidth * 0.35;
|
|
39
38
|
const desktopContainerWidth = containerWidth * 0.65;
|
|
40
|
-
return (_jsxs("div", { ref: containerRef, className: "flex-1 bg-[#f3f4f6] p-8 flex gap-8 justify-center items-start overflow-auto", children: [_jsx(ScaledIframe, { src: iframeUrl, viewportWidth: VIEWPORT_MOBILE.width,
|
|
39
|
+
return (_jsxs("div", { ref: containerRef, className: "flex-1 bg-[#f3f4f6] p-8 flex gap-8 justify-center items-start overflow-auto", children: [_jsx(ScaledIframe, { src: iframeUrl, viewportWidth: VIEWPORT_MOBILE.width, label: "Mobile", containerWidth: mobileContainerWidth }), _jsx(ScaledIframe, { src: iframeUrl, viewportWidth: VIEWPORT_DESKTOP.width, label: "Desktop", containerWidth: desktopContainerWidth })] }));
|
|
41
40
|
};
|
|
42
41
|
//# sourceMappingURL=PreviewPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewPanel.js","sourceRoot":"","sources":["../../../src/showcase/components/PreviewPanel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS9C,MAAM,eAAe,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"PreviewPanel.js","sourceRoot":"","sources":["../../../src/showcase/components/PreviewPanel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS9C,MAAM,eAAe,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACvC,MAAM,gBAAgB,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAqB,EAAE,EAAE;IACpF,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,EAAE,CAAC;gBACV,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAChD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,SAAS,CAAC;QACvF,OAAO,GAAG,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC;IAE7B,yDAAyD;IACzD,MAAM,oBAAoB,GAAG,cAAc,GAAG,IAAI,CAAC;IACnD,MAAM,qBAAqB,GAAG,cAAc,GAAG,IAAI,CAAC;IAEpD,OAAO,CACL,eACE,GAAG,EAAE,YAAY,EACjB,SAAS,EAAC,6EAA6E,aAEvF,KAAC,YAAY,IACX,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,eAAe,CAAC,KAAK,EACpC,KAAK,EAAC,QAAQ,EACd,cAAc,EAAE,oBAAoB,GACpC,EACF,KAAC,YAAY,IACX,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,gBAAgB,CAAC,KAAK,EACrC,KAAK,EAAC,SAAS,EACf,cAAc,EAAE,qBAAqB,GACrC,IACE,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
interface ScaledIframeProps {
|
|
2
2
|
src: string;
|
|
3
3
|
viewportWidth: number;
|
|
4
|
-
|
|
4
|
+
/** Initial height used before the iframe reports its content height. */
|
|
5
|
+
initialHeight?: number;
|
|
5
6
|
label: string;
|
|
6
7
|
containerWidth: number;
|
|
7
8
|
}
|
|
8
|
-
export declare const ScaledIframe: ({ src, viewportWidth,
|
|
9
|
+
export declare const ScaledIframe: ({ src, viewportWidth, initialHeight, label, containerWidth, }: ScaledIframeProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
10
|
export {};
|
|
10
11
|
//# sourceMappingURL=ScaledIframe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScaledIframe.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ScaledIframe.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScaledIframe.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ScaledIframe.tsx"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,GAAI,+DAM1B,iBAAiB,4CAuDnB,CAAC"}
|
|
@@ -1,15 +1,33 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
|
+
export const ScaledIframe = ({ src, viewportWidth, initialHeight = 600, label, containerWidth, }) => {
|
|
5
|
+
const iframeRef = useRef(null);
|
|
6
|
+
const [iframeHeight, setIframeHeight] = useState(initialHeight);
|
|
7
|
+
// Listen for height reports from this specific iframe's content.
|
|
8
|
+
// Filtering by event.source ensures two side-by-side iframes don't
|
|
9
|
+
// interfere with each other.
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
const handler = (event) => {
|
|
12
|
+
if (event.data?.type === 'showcase-iframe-height' &&
|
|
13
|
+
iframeRef.current &&
|
|
14
|
+
event.source === iframeRef.current.contentWindow) {
|
|
15
|
+
setIframeHeight(event.data.height);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
window.addEventListener('message', handler);
|
|
19
|
+
return () => window.removeEventListener('message', handler);
|
|
20
|
+
}, []);
|
|
4
21
|
// Calculate scale to fit container with padding
|
|
5
22
|
const padding = 32; // 16px each side
|
|
6
23
|
const availableWidth = Math.max(containerWidth - padding, 100);
|
|
7
24
|
const scale = Math.min(availableWidth / viewportWidth, 1.0);
|
|
8
25
|
const scaledWidth = viewportWidth * scale;
|
|
9
|
-
|
|
10
|
-
|
|
26
|
+
// The outer box must reflect the visual (scaled) height so layout doesn't collapse.
|
|
27
|
+
const scaledHeight = iframeHeight * scale;
|
|
28
|
+
return (_jsxs("div", { className: "flex flex-col items-center shrink-0", children: [_jsxs("div", { className: "text-[11px] font-[600] text-[#6b7280] uppercase tracking-wider mb-3", children: [label, " (", viewportWidth, "px)"] }), _jsx("div", { className: "bg-[#ffffff] shadow-lg rounded-lg overflow-hidden border border-[#e5e7eb]", style: { width: scaledWidth, height: scaledHeight }, children: _jsx("iframe", { ref: iframeRef, src: src, title: `${label} preview`, className: "origin-top-left border-none", style: {
|
|
11
29
|
width: viewportWidth,
|
|
12
|
-
height:
|
|
30
|
+
height: iframeHeight,
|
|
13
31
|
transform: `scale(${scale})`,
|
|
14
32
|
} }) })] }));
|
|
15
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScaledIframe.js","sourceRoot":"","sources":["../../../src/showcase/components/ScaledIframe.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"ScaledIframe.js","sourceRoot":"","sources":["../../../src/showcase/components/ScaledIframe.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAWpD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,GAAG,EACH,aAAa,EACb,aAAa,GAAG,GAAG,EACnB,KAAK,EACL,cAAc,GACI,EAAE,EAAE;IACtB,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEhE,iEAAiE;IACjE,mEAAmE;IACnE,6BAA6B;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE;YACtC,IACE,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,wBAAwB;gBAC7C,SAAS,CAAC,OAAO;gBACjB,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,OAAO,CAAC,aAAa,EAChD,CAAC;gBACD,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,gDAAgD;IAChD,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,iBAAiB;IACrC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,aAAa,GAAG,KAAK,CAAC;IAC1C,oFAAoF;IACpF,MAAM,YAAY,GAAG,YAAY,GAAG,KAAK,CAAC;IAE1C,OAAO,CACL,eAAK,SAAS,EAAC,qCAAqC,aAClD,eAAK,SAAS,EAAC,qEAAqE,aACjF,KAAK,QAAI,aAAa,WACnB,EAEN,cACE,SAAS,EAAC,2EAA2E,EACrF,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,YAEnD,iBACE,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,GAAG,KAAK,UAAU,EACzB,SAAS,EAAC,6BAA6B,EACvC,KAAK,EAAE;wBACL,KAAK,EAAE,aAAa;wBACpB,MAAM,EAAE,YAAY;wBACpB,SAAS,EAAE,SAAS,KAAK,GAAG;qBAC7B,GACD,GACE,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -12,7 +12,7 @@ interface ShowcaseAllRenderPageProps {
|
|
|
12
12
|
contentContext?: IContentContext;
|
|
13
13
|
componentMockMap?: Record<string, MockData>;
|
|
14
14
|
collectionMockMap?: Record<string, MockData>;
|
|
15
|
-
collectionCardMockMap?: Record<string, MockData>;
|
|
15
|
+
collectionCardMockMap?: Record<string, MockData | MockData[]>;
|
|
16
16
|
excludedComponents?: string[];
|
|
17
17
|
excludedCollections?: string[];
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShowcaseAllRenderPage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ShowcaseAllRenderPage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGrD,UAAU,0BAA0B;IAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,cAAc,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,YAAY,EAAE,oBAAoB,CAAC;IACnC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC;IAC9D,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAQD,eAAO,MAAM,qBAAqB,GAAI,wOAanC,0BAA0B,4CAkF5B,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { CmsCollection } from '../../components/CmsCollection';
|
|
3
3
|
import { CmsComponent } from '../../components/CmsComponent';
|
|
4
4
|
import { createMockShowcaseData } from '../mockFactory';
|
|
5
|
+
import { IframeHeightReporter } from './IframeHeightReporter';
|
|
5
6
|
const DEFAULT_MOCK_CONTEXT = {
|
|
6
7
|
current: { type: 'Page', id: 'mock-page' },
|
|
7
8
|
pageContext: {},
|
|
@@ -18,32 +19,32 @@ export const ShowcaseAllRenderPage = ({ searchParams, rendererConfig, componentF
|
|
|
18
19
|
: Object.keys(rendererConfig.collectionMap)
|
|
19
20
|
.filter((type) => !excludedCollections.includes(type))
|
|
20
21
|
.sort();
|
|
21
|
-
return (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed for mock data
|
|
40
|
-
, {
|
|
22
|
+
return (_jsxs("div", { className: "bg-[#f3f4f6]", children: [types.map((type) => {
|
|
23
|
+
// Merge default state with mock data overrides for this type
|
|
24
|
+
const currentMockData = mode === 'component' ? componentMockMap[type] : collectionMockMap[type];
|
|
25
|
+
const mergedDefaultState = { ...baseDefaultState };
|
|
26
|
+
if (currentMockData) {
|
|
27
|
+
if (typeof currentMockData.heading === 'string')
|
|
28
|
+
mergedDefaultState.heading = currentMockData.heading;
|
|
29
|
+
if (typeof currentMockData.preHeading === 'string')
|
|
30
|
+
mergedDefaultState.preHeading = currentMockData.preHeading;
|
|
31
|
+
if (typeof currentMockData.postHeading === 'string')
|
|
32
|
+
mergedDefaultState.postHeading = currentMockData.postHeading;
|
|
33
|
+
if (typeof currentMockData.body === 'string')
|
|
34
|
+
mergedDefaultState.body = currentMockData.body;
|
|
35
|
+
if (typeof currentMockData.additionalCopy === 'string')
|
|
36
|
+
mergedDefaultState.additionalCopy = currentMockData.additionalCopy;
|
|
37
|
+
}
|
|
38
|
+
const mockData = createMockShowcaseData(type, mode, mergedDefaultState, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, componentMockMap, collectionMockMap, collectionCardMockMap);
|
|
39
|
+
return (_jsxs("div", { id: `component-${type.replace(/\s+/g, '-').toLowerCase()}`, children: [_jsxs("div", { className: "sticky top-0 z-[10] px-[16px] py-[8px] bg-[#1f2937] text-[#ffffff] text-[14px] font-[600] border-b-[2px] border-[#3b82f6]", children: [_jsx("span", { className: "text-[#9ca3af] mr-[8px]", children: mode === 'component' ? 'Component:' : 'Collection:' }), type] }), _jsx("div", { children: mode === 'component' ? (_jsx(CmsComponent
|
|
41
40
|
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed for mock data
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
, {
|
|
42
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed for mock data
|
|
43
|
+
information: mockData, rendererConfig: rendererConfig, contentContext: contentContext })) : (_jsx(CmsCollection
|
|
45
44
|
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed for mock data
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
, {
|
|
46
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed for mock data
|
|
47
|
+
information: mockData, rendererConfig: rendererConfig, contentContext: contentContext })) })] }, type));
|
|
48
|
+
}), _jsx(IframeHeightReporter, {})] }));
|
|
48
49
|
};
|
|
49
50
|
//# sourceMappingURL=ShowcaseAllRenderPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShowcaseAllRenderPage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ShowcaseAllRenderPage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CmsRendererConfig } from '../../CmsRendererConfig';
|
|
2
|
+
import type { MockData } from '../../cmsRegistration';
|
|
2
3
|
import type { ShowcaseControlState } from '../types';
|
|
3
4
|
interface ShowcasePageProps {
|
|
4
5
|
searchParams: Record<string, string | string[] | undefined>;
|
|
@@ -11,7 +12,9 @@ interface ShowcasePageProps {
|
|
|
11
12
|
defaultState: ShowcaseControlState;
|
|
12
13
|
excludedComponents?: string[];
|
|
13
14
|
excludedCollections?: string[];
|
|
15
|
+
componentMockMap?: Record<string, MockData>;
|
|
16
|
+
collectionMockMap?: Record<string, MockData>;
|
|
14
17
|
}
|
|
15
|
-
export declare const ShowcasePage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, excludedComponents, excludedCollections, }: ShowcasePageProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare const ShowcasePage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, excludedComponents, excludedCollections, componentMockMap, collectionMockMap, }: ShowcasePageProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
19
|
export {};
|
|
17
20
|
//# sourceMappingURL=ShowcasePage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShowcasePage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcasePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ShowcasePage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcasePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAMrD,UAAU,iBAAiB;IACzB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,cAAc,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,oBAAoB,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAC9C;AAED,eAAO,MAAM,YAAY,GAAI,kNAa1B,iBAAiB,4CAuEnB,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { AllViewPanel } from './AllViewPanel';
|
|
|
4
4
|
import { ControlsWrapper } from './ControlsWrapper';
|
|
5
5
|
import { PreviewPanel } from './PreviewPanel';
|
|
6
6
|
import { TopBar } from './TopBar';
|
|
7
|
-
export const ShowcasePage = ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, excludedComponents = [], excludedCollections = [], }) => {
|
|
7
|
+
export const ShowcasePage = ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, excludedComponents = [], excludedCollections = [], componentMockMap = {}, collectionMockMap = {}, }) => {
|
|
8
8
|
const componentTypes = Object.keys(rendererConfig.componentMap)
|
|
9
9
|
.filter((type) => !excludedComponents.includes(type))
|
|
10
10
|
.sort();
|
|
@@ -14,7 +14,33 @@ export const ShowcasePage = ({ searchParams, rendererConfig, componentFieldsMap,
|
|
|
14
14
|
const type = searchParams.type || componentTypes[0] || '';
|
|
15
15
|
const mode = searchParams.mode || 'component';
|
|
16
16
|
const view = (searchParams.view || 'single');
|
|
17
|
-
|
|
17
|
+
// Merge curated mock data into defaultState so the initial iframe URL encodes the
|
|
18
|
+
// real heading/preHeading/colours rather than the generic placeholder defaults.
|
|
19
|
+
// Without this, PreviewPanel serialises "Sample Heading" into the URL and the
|
|
20
|
+
// render page's own merge is overridden by the explicit URL param.
|
|
21
|
+
const mergedDefaultState = { ...defaultState };
|
|
22
|
+
const currentMockData = type
|
|
23
|
+
? mode === 'component'
|
|
24
|
+
? componentMockMap[type]
|
|
25
|
+
: collectionMockMap[type]
|
|
26
|
+
: undefined;
|
|
27
|
+
if (currentMockData) {
|
|
28
|
+
if (typeof currentMockData.heading === 'string')
|
|
29
|
+
mergedDefaultState.heading = currentMockData.heading;
|
|
30
|
+
if (typeof currentMockData.preHeading === 'string')
|
|
31
|
+
mergedDefaultState.preHeading = currentMockData.preHeading;
|
|
32
|
+
if (typeof currentMockData.postHeading === 'string')
|
|
33
|
+
mergedDefaultState.postHeading = currentMockData.postHeading;
|
|
34
|
+
if (typeof currentMockData.body === 'string')
|
|
35
|
+
mergedDefaultState.body = currentMockData.body;
|
|
36
|
+
if (typeof currentMockData.additionalCopy === 'string')
|
|
37
|
+
mergedDefaultState.additionalCopy = currentMockData.additionalCopy;
|
|
38
|
+
if (typeof currentMockData.backgroundColour === 'string')
|
|
39
|
+
mergedDefaultState.backgroundColour = currentMockData.backgroundColour;
|
|
40
|
+
if (typeof currentMockData.textColour === 'string')
|
|
41
|
+
mergedDefaultState.textColour = currentMockData.textColour;
|
|
42
|
+
}
|
|
43
|
+
const controls = parseShowcaseControls(searchParams, mergedDefaultState);
|
|
18
44
|
return (_jsxs("div", { className: "flex flex-col h-screen bg-[#ffffff] overflow-hidden", children: [_jsx(TopBar, { componentTypes: componentTypes, collectionTypes: collectionTypes, selectedType: type, mode: mode, view: view }), _jsx("div", { className: "flex-1 flex overflow-hidden relative", children: view === 'all' ? (_jsx(AllViewPanel, { mode: mode, basePath: basePath })) : (_jsxs(_Fragment, { children: [_jsx(PreviewPanel, { type: type, mode: mode, controls: controls, basePath: basePath }), _jsx(ControlsWrapper, { initialState: controls, type: type, mode: mode, colorOptions: colorOptions, foregroundColors: foregroundColors, componentFieldsMap: componentFieldsMap, collectionFieldsMap: collectionFieldsMap })] })) })] }));
|
|
19
45
|
};
|
|
20
46
|
//# sourceMappingURL=ShowcasePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShowcasePage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcasePage.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ShowcasePage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcasePage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ interface ShowcaseRenderPageProps {
|
|
|
12
12
|
contentContext?: IContentContext;
|
|
13
13
|
componentMockMap?: Record<string, MockData>;
|
|
14
14
|
collectionMockMap?: Record<string, MockData>;
|
|
15
|
-
collectionCardMockMap?: Record<string, MockData>;
|
|
15
|
+
collectionCardMockMap?: Record<string, MockData | MockData[]>;
|
|
16
16
|
}
|
|
17
17
|
export declare const ShowcaseRenderPage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, defaultState, contentContext, componentMockMap, collectionMockMap, collectionCardMockMap, }: ShowcaseRenderPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
18
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShowcaseRenderPage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseRenderPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ShowcaseRenderPage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseRenderPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGrD,UAAU,uBAAuB;IAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,cAAc,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,YAAY,EAAE,oBAAoB,CAAC;IACnC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC;CAC/D;AAQD,eAAO,MAAM,kBAAkB,GAAI,+LAWhC,uBAAuB,4CAsEzB,CAAC"}
|