@se-studio/core-ui 1.0.46 → 1.0.48
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/ANALYTICS.md +136 -0
- package/CHANGELOG.md +475 -0
- package/CMS_INFRASTRUCTURE.md +335 -0
- package/CONSENT.md +121 -0
- package/README.md +11 -0
- package/dist/cmsRegistration.d.ts +152 -0
- package/dist/cmsRegistration.d.ts.map +1 -0
- package/dist/cmsRegistration.js +145 -0
- package/dist/cmsRegistration.js.map +1 -0
- package/dist/components/CmsCollection.d.ts +2 -1
- package/dist/components/CmsCollection.d.ts.map +1 -1
- package/dist/components/CmsCollection.js +1 -1
- package/dist/components/CmsCollection.js.map +1 -1
- package/dist/components/CmsComponent.d.ts +2 -1
- package/dist/components/CmsComponent.d.ts.map +1 -1
- package/dist/components/CmsComponent.js.map +1 -1
- package/dist/components/Preview.d.ts.map +1 -1
- package/dist/components/Preview.js +20 -6
- package/dist/components/Preview.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/showcase/components/AllViewPanel.d.ts +7 -0
- package/dist/showcase/components/AllViewPanel.d.ts.map +1 -0
- package/dist/showcase/components/AllViewPanel.js +35 -0
- package/dist/showcase/components/AllViewPanel.js.map +1 -0
- package/dist/showcase/components/Controls.d.ts +15 -0
- package/dist/showcase/components/Controls.d.ts.map +1 -0
- package/dist/showcase/components/Controls.js +74 -0
- package/dist/showcase/components/Controls.js.map +1 -0
- package/dist/showcase/components/ControlsWrapper.d.ts +13 -0
- package/dist/showcase/components/ControlsWrapper.d.ts.map +1 -0
- package/dist/showcase/components/ControlsWrapper.js +9 -0
- package/dist/showcase/components/ControlsWrapper.js.map +1 -0
- package/dist/showcase/components/PreviewPanel.d.ts +10 -0
- package/dist/showcase/components/PreviewPanel.d.ts.map +1 -0
- package/dist/showcase/components/PreviewPanel.js +42 -0
- package/dist/showcase/components/PreviewPanel.js.map +1 -0
- package/dist/showcase/components/ScaledIframe.d.ts +10 -0
- package/dist/showcase/components/ScaledIframe.d.ts.map +1 -0
- package/dist/showcase/components/ScaledIframe.js +16 -0
- package/dist/showcase/components/ScaledIframe.js.map +1 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.d.ts +19 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.d.ts.map +1 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.js +46 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.js.map +1 -0
- package/dist/showcase/components/ShowcasePage.d.ts +15 -0
- package/dist/showcase/components/ShowcasePage.d.ts.map +1 -0
- package/dist/showcase/components/ShowcasePage.js +16 -0
- package/dist/showcase/components/ShowcasePage.js.map +1 -0
- package/dist/showcase/components/ShowcaseRenderPage.d.ts +19 -0
- package/dist/showcase/components/ShowcaseRenderPage.d.ts.map +1 -0
- package/dist/showcase/components/ShowcaseRenderPage.js +51 -0
- package/dist/showcase/components/ShowcaseRenderPage.js.map +1 -0
- package/dist/showcase/components/TopBar.d.ts +11 -0
- package/dist/showcase/components/TopBar.d.ts.map +1 -0
- package/dist/showcase/components/TopBar.js +103 -0
- package/dist/showcase/components/TopBar.js.map +1 -0
- package/dist/showcase/index.d.ts +12 -0
- package/dist/showcase/index.d.ts.map +1 -0
- package/dist/showcase/index.js +12 -0
- package/dist/showcase/index.js.map +1 -0
- package/dist/showcase/mockFactory.d.ts +34 -0
- package/dist/showcase/mockFactory.d.ts.map +1 -0
- package/dist/showcase/mockFactory.js +352 -0
- package/dist/showcase/mockFactory.js.map +1 -0
- package/dist/showcase/types.d.ts +20 -0
- package/dist/showcase/types.d.ts.map +1 -0
- package/dist/showcase/types.js +18 -0
- package/dist/showcase/types.js.map +1 -0
- package/package.json +8 -5
- package/src/showcase/README.md +131 -0
- package/dist/__tests__/setup.d.ts +0 -2
- package/dist/__tests__/setup.d.ts.map +0 -1
- package/dist/__tests__/setup.js +0 -2
- package/dist/__tests__/setup.js.map +0 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { ScaledIframe } from './ScaledIframe';
|
|
5
|
+
const VIEWPORT_MOBILE = { width: 375, height: 812 };
|
|
6
|
+
const VIEWPORT_DESKTOP = { width: 1440, height: 1200 };
|
|
7
|
+
export const PreviewPanel = ({ type, mode, controls, basePath }) => {
|
|
8
|
+
const containerRef = useRef(null);
|
|
9
|
+
const [containerWidth, setContainerWidth] = useState(0);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (!containerRef.current) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const observer = new ResizeObserver((entries) => {
|
|
15
|
+
const entry = entries[0];
|
|
16
|
+
if (entry) {
|
|
17
|
+
setContainerWidth(entry.contentRect.width);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
observer.observe(containerRef.current);
|
|
21
|
+
return () => observer.disconnect();
|
|
22
|
+
}, []);
|
|
23
|
+
const buildUrl = () => {
|
|
24
|
+
const params = new URLSearchParams();
|
|
25
|
+
params.set('type', type);
|
|
26
|
+
params.set('mode', mode);
|
|
27
|
+
Object.entries(controls).forEach(([key, value]) => {
|
|
28
|
+
if (value !== undefined && value !== null) {
|
|
29
|
+
params.set(key, String(value));
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
// Ensure basePath ends with /render if not already present or handle accordingly
|
|
33
|
+
const renderPath = basePath.endsWith('/') ? `${basePath}render` : `${basePath}/render`;
|
|
34
|
+
return `${renderPath}?${params.toString()}`;
|
|
35
|
+
};
|
|
36
|
+
const iframeUrl = buildUrl();
|
|
37
|
+
// Desktop gets roughly 2/3 of the space, Mobile gets 1/3
|
|
38
|
+
const mobileContainerWidth = containerWidth * 0.35;
|
|
39
|
+
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, viewportHeight: VIEWPORT_MOBILE.height, label: "Mobile", containerWidth: mobileContainerWidth }), _jsx(ScaledIframe, { src: iframeUrl, viewportWidth: VIEWPORT_DESKTOP.width, viewportHeight: VIEWPORT_DESKTOP.height, label: "Desktop", containerWidth: desktopContainerWidth })] }));
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=PreviewPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreviewPanel.js","sourceRoot":"","sources":["../../../src/showcase/components/PreviewPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface ScaledIframeProps {
|
|
2
|
+
src: string;
|
|
3
|
+
viewportWidth: number;
|
|
4
|
+
viewportHeight: number;
|
|
5
|
+
label: string;
|
|
6
|
+
containerWidth: number;
|
|
7
|
+
}
|
|
8
|
+
export declare const ScaledIframe: ({ src, viewportWidth, viewportHeight, label, containerWidth, }: ScaledIframeProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=ScaledIframe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScaledIframe.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ScaledIframe.tsx"],"names":[],"mappings":"AAEA,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,GAAI,gEAM1B,iBAAiB,4CAgCnB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
export const ScaledIframe = ({ src, viewportWidth, viewportHeight, label, containerWidth, }) => {
|
|
4
|
+
// Calculate scale to fit container with padding
|
|
5
|
+
const padding = 32; // 16px each side
|
|
6
|
+
const availableWidth = Math.max(containerWidth - padding, 100);
|
|
7
|
+
const scale = Math.min(availableWidth / viewportWidth, 1.0);
|
|
8
|
+
const scaledWidth = viewportWidth * scale;
|
|
9
|
+
const scaledHeight = viewportHeight * scale;
|
|
10
|
+
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", { src: src, title: `${label} preview`, className: "origin-top-left border-none", style: {
|
|
11
|
+
width: viewportWidth,
|
|
12
|
+
height: viewportHeight,
|
|
13
|
+
transform: `scale(${scale})`,
|
|
14
|
+
} }) })] }));
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=ScaledIframe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScaledIframe.js","sourceRoot":"","sources":["../../../src/showcase/components/ScaledIframe.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAUb,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,GAAG,EACH,aAAa,EACb,cAAc,EACd,KAAK,EACL,cAAc,GACI,EAAE,EAAE;IACtB,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,MAAM,YAAY,GAAG,cAAc,GAAG,KAAK,CAAC;IAE5C,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,GAAG,EACR,KAAK,EAAE,GAAG,KAAK,UAAU,EACzB,SAAS,EAAC,6BAA6B,EACvC,KAAK,EAAE;wBACL,KAAK,EAAE,aAAa;wBACpB,MAAM,EAAE,cAAc;wBACtB,SAAS,EAAE,SAAS,KAAK,GAAG;qBAC7B,GACD,GACE,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { IContentContext } from '@se-studio/core-data-types';
|
|
2
|
+
import type { CmsRendererConfig } from '../../CmsRendererConfig';
|
|
3
|
+
import type { MockData } from '../../cmsRegistration';
|
|
4
|
+
import { type ShowcaseControlState } from '../types';
|
|
5
|
+
interface ShowcaseAllRenderPageProps {
|
|
6
|
+
searchParams: Record<string, string | string[] | undefined>;
|
|
7
|
+
rendererConfig: CmsRendererConfig;
|
|
8
|
+
componentFieldsMap: Record<string, Set<string>>;
|
|
9
|
+
collectionFieldsMap: Record<string, Set<string>>;
|
|
10
|
+
collectionCardFieldsMap: Record<string, Set<string>>;
|
|
11
|
+
defaultState?: ShowcaseControlState;
|
|
12
|
+
contentContext?: IContentContext;
|
|
13
|
+
componentMockMap?: Record<string, MockData>;
|
|
14
|
+
collectionMockMap?: Record<string, MockData>;
|
|
15
|
+
collectionCardMockMap?: Record<string, MockData>;
|
|
16
|
+
}
|
|
17
|
+
export declare const ShowcaseAllRenderPage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, defaultState, contentContext, componentMockMap, collectionMockMap, collectionCardMockMap, }: ShowcaseAllRenderPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=ShowcaseAllRenderPage.d.ts.map
|
|
@@ -0,0 +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,EAAkC,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErF,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,CAAC,EAAE,oBAAoB,CAAC;IACpC,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,CAAC,CAAC;CAClD;AAQD,eAAO,MAAM,qBAAqB,GAAI,+LAWnC,0BAA0B,4CA6E5B,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CmsCollection } from '../../components/CmsCollection';
|
|
3
|
+
import { CmsComponent } from '../../components/CmsComponent';
|
|
4
|
+
import { createMockShowcaseData } from '../mockFactory';
|
|
5
|
+
import { DEFAULT_SHOWCASE_CONTROL_STATE } from '../types';
|
|
6
|
+
const DEFAULT_MOCK_CONTEXT = {
|
|
7
|
+
current: { type: 'Page', id: 'mock-page' },
|
|
8
|
+
pageContext: {},
|
|
9
|
+
analyticsContext: { slug: 'cms-showcase-all' },
|
|
10
|
+
};
|
|
11
|
+
export const ShowcaseAllRenderPage = ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, defaultState, contentContext = DEFAULT_MOCK_CONTEXT, componentMockMap = {}, collectionMockMap = {}, collectionCardMockMap = {}, }) => {
|
|
12
|
+
const mode = searchParams.mode || 'component';
|
|
13
|
+
const baseDefaultState = defaultState || DEFAULT_SHOWCASE_CONTROL_STATE;
|
|
14
|
+
// Get all types based on mode
|
|
15
|
+
const types = mode === 'component'
|
|
16
|
+
? Object.keys(rendererConfig.componentMap).sort()
|
|
17
|
+
: Object.keys(rendererConfig.collectionMap).sort();
|
|
18
|
+
return (_jsx("div", { className: "min-h-screen bg-[#f3f4f6]", children: types.map((type) => {
|
|
19
|
+
// Merge default state with mock data overrides for this type
|
|
20
|
+
const currentMockData = mode === 'component' ? componentMockMap[type] : collectionMockMap[type];
|
|
21
|
+
const mergedDefaultState = { ...baseDefaultState };
|
|
22
|
+
if (currentMockData) {
|
|
23
|
+
if (typeof currentMockData.heading === 'string')
|
|
24
|
+
mergedDefaultState.heading = currentMockData.heading;
|
|
25
|
+
if (typeof currentMockData.preHeading === 'string')
|
|
26
|
+
mergedDefaultState.preHeading = currentMockData.preHeading;
|
|
27
|
+
if (typeof currentMockData.postHeading === 'string')
|
|
28
|
+
mergedDefaultState.postHeading = currentMockData.postHeading;
|
|
29
|
+
if (typeof currentMockData.body === 'string')
|
|
30
|
+
mergedDefaultState.body = currentMockData.body;
|
|
31
|
+
if (typeof currentMockData.additionalCopy === 'string')
|
|
32
|
+
mergedDefaultState.additionalCopy = currentMockData.additionalCopy;
|
|
33
|
+
}
|
|
34
|
+
const mockData = createMockShowcaseData(type, mode, mergedDefaultState, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, componentMockMap, collectionMockMap, collectionCardMockMap);
|
|
35
|
+
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", { className: "bg-[#ffffff]", children: mode === 'component' ? (_jsx(CmsComponent
|
|
36
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed for mock data
|
|
37
|
+
, {
|
|
38
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed for mock data
|
|
39
|
+
information: mockData, rendererConfig: rendererConfig, contentContext: contentContext })) : (_jsx(CmsCollection
|
|
40
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed for mock data
|
|
41
|
+
, {
|
|
42
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed for mock data
|
|
43
|
+
information: mockData, rendererConfig: rendererConfig, contentContext: contentContext })) })] }, type));
|
|
44
|
+
}) }));
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=ShowcaseAllRenderPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShowcaseAllRenderPage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CmsRendererConfig } from '../../CmsRendererConfig';
|
|
2
|
+
import type { ShowcaseControlState } from '../types';
|
|
3
|
+
interface ShowcasePageProps {
|
|
4
|
+
searchParams: Record<string, string | string[] | undefined>;
|
|
5
|
+
rendererConfig: CmsRendererConfig;
|
|
6
|
+
componentFieldsMap: Record<string, Set<string>>;
|
|
7
|
+
collectionFieldsMap: Record<string, Set<string>>;
|
|
8
|
+
colorOptions: string[];
|
|
9
|
+
foregroundColors: string[];
|
|
10
|
+
basePath: string;
|
|
11
|
+
defaultState?: ShowcaseControlState;
|
|
12
|
+
}
|
|
13
|
+
export declare const ShowcasePage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, }: ShowcasePageProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=ShowcasePage.d.ts.map
|
|
@@ -0,0 +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;AAEjE,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,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,eAAO,MAAM,YAAY,GAAI,oIAS1B,iBAAiB,4CAwCnB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { parseShowcaseControls } from '../mockFactory';
|
|
3
|
+
import { AllViewPanel } from './AllViewPanel';
|
|
4
|
+
import { ControlsWrapper } from './ControlsWrapper';
|
|
5
|
+
import { PreviewPanel } from './PreviewPanel';
|
|
6
|
+
import { TopBar } from './TopBar';
|
|
7
|
+
export const ShowcasePage = ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, }) => {
|
|
8
|
+
const componentTypes = Object.keys(rendererConfig.componentMap).sort();
|
|
9
|
+
const collectionTypes = Object.keys(rendererConfig.collectionMap).sort();
|
|
10
|
+
const type = searchParams.type || componentTypes[0] || '';
|
|
11
|
+
const mode = searchParams.mode || 'component';
|
|
12
|
+
const view = (searchParams.view || 'single');
|
|
13
|
+
const controls = parseShowcaseControls(searchParams, defaultState);
|
|
14
|
+
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 })] })) })] }));
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=ShowcasePage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShowcasePage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcasePage.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAqB,MAAM,EAAE,MAAM,UAAU,CAAC;AAarD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,YAAY,GACM,EAAE,EAAE;IACtB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;IACvE,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IAEzE,MAAM,IAAI,GAAI,YAAY,CAAC,IAAe,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,IAAI,GAAI,YAAY,CAAC,IAAmC,IAAI,WAAW,CAAC;IAC9E,MAAM,IAAI,GAAG,CAAE,YAAY,CAAC,IAAe,IAAI,QAAQ,CAAiB,CAAC;IAEzE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAEnE,OAAO,CACL,eAAK,SAAS,EAAC,qDAAqD,aAClE,KAAC,MAAM,IACL,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,IAAI,EAClB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,GACV,EAEF,cAAK,SAAS,EAAC,sCAAsC,YAClD,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAChB,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,CACjD,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAChF,KAAC,eAAe,IACd,YAAY,EAAE,QAAQ,EACtB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,mBAAmB,EAAE,mBAAmB,GACxC,IACD,CACJ,GACG,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { IContentContext } from '@se-studio/core-data-types';
|
|
2
|
+
import type { CmsRendererConfig } from '../../CmsRendererConfig';
|
|
3
|
+
import type { MockData } from '../../cmsRegistration';
|
|
4
|
+
import { type ShowcaseControlState } from '../types';
|
|
5
|
+
interface ShowcaseRenderPageProps {
|
|
6
|
+
searchParams: Record<string, string | string[] | undefined>;
|
|
7
|
+
rendererConfig: CmsRendererConfig;
|
|
8
|
+
componentFieldsMap: Record<string, Set<string>>;
|
|
9
|
+
collectionFieldsMap: Record<string, Set<string>>;
|
|
10
|
+
collectionCardFieldsMap: Record<string, Set<string>>;
|
|
11
|
+
defaultState?: ShowcaseControlState;
|
|
12
|
+
contentContext?: IContentContext;
|
|
13
|
+
componentMockMap?: Record<string, MockData>;
|
|
14
|
+
collectionMockMap?: Record<string, MockData>;
|
|
15
|
+
collectionCardMockMap?: Record<string, MockData>;
|
|
16
|
+
}
|
|
17
|
+
export declare const ShowcaseRenderPage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, defaultState, contentContext, componentMockMap, collectionMockMap, collectionCardMockMap, }: ShowcaseRenderPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=ShowcaseRenderPage.d.ts.map
|
|
@@ -0,0 +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,EAAkC,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErF,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,CAAC,EAAE,oBAAoB,CAAC;IACpC,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,CAAC,CAAC;CAClD;AAQD,eAAO,MAAM,kBAAkB,GAAI,+LAWhC,uBAAuB,4CAgEzB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { CmsCollection } from '../../components/CmsCollection';
|
|
3
|
+
import { CmsComponent } from '../../components/CmsComponent';
|
|
4
|
+
import { createMockShowcaseData, parseShowcaseControls } from '../mockFactory';
|
|
5
|
+
import { DEFAULT_SHOWCASE_CONTROL_STATE } from '../types';
|
|
6
|
+
const DEFAULT_MOCK_CONTEXT = {
|
|
7
|
+
current: { type: 'Page', id: 'mock-page' },
|
|
8
|
+
pageContext: {},
|
|
9
|
+
analyticsContext: { slug: 'cms-showcase' },
|
|
10
|
+
};
|
|
11
|
+
export const ShowcaseRenderPage = ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, defaultState, contentContext = DEFAULT_MOCK_CONTEXT, componentMockMap = {}, collectionMockMap = {}, collectionCardMockMap = {}, }) => {
|
|
12
|
+
const type = searchParams.type || '';
|
|
13
|
+
const mode = searchParams.mode || 'component';
|
|
14
|
+
// Merge default state with mock data overrides
|
|
15
|
+
const baseDefaultState = defaultState || DEFAULT_SHOWCASE_CONTROL_STATE;
|
|
16
|
+
const mergedDefaultState = { ...baseDefaultState };
|
|
17
|
+
const currentMockData = type
|
|
18
|
+
? mode === 'component'
|
|
19
|
+
? componentMockMap[type]
|
|
20
|
+
: collectionMockMap[type]
|
|
21
|
+
: null;
|
|
22
|
+
if (currentMockData) {
|
|
23
|
+
if (typeof currentMockData.heading === 'string')
|
|
24
|
+
mergedDefaultState.heading = currentMockData.heading;
|
|
25
|
+
if (typeof currentMockData.preHeading === 'string')
|
|
26
|
+
mergedDefaultState.preHeading = currentMockData.preHeading;
|
|
27
|
+
if (typeof currentMockData.postHeading === 'string')
|
|
28
|
+
mergedDefaultState.postHeading = currentMockData.postHeading;
|
|
29
|
+
if (typeof currentMockData.body === 'string')
|
|
30
|
+
mergedDefaultState.body = currentMockData.body;
|
|
31
|
+
if (typeof currentMockData.additionalCopy === 'string')
|
|
32
|
+
mergedDefaultState.additionalCopy = currentMockData.additionalCopy;
|
|
33
|
+
}
|
|
34
|
+
const controls = parseShowcaseControls(searchParams, mergedDefaultState);
|
|
35
|
+
const mockData = type
|
|
36
|
+
? createMockShowcaseData(type, mode, controls, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, componentMockMap, collectionMockMap, collectionCardMockMap)
|
|
37
|
+
: null;
|
|
38
|
+
if (!mockData) {
|
|
39
|
+
return _jsx("div", { className: "p-4 text-red-500 text-sm", children: "No component selected" });
|
|
40
|
+
}
|
|
41
|
+
return (_jsx("div", { className: "min-h-screen", children: mode === 'component' ? (_jsx(CmsComponent
|
|
42
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed
|
|
43
|
+
, {
|
|
44
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed
|
|
45
|
+
information: mockData, rendererConfig: rendererConfig, contentContext: contentContext })) : (_jsx(CmsCollection
|
|
46
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed
|
|
47
|
+
, {
|
|
48
|
+
// biome-ignore lint/suspicious/noExplicitAny: Any is allowed
|
|
49
|
+
information: mockData, rendererConfig: rendererConfig, contentContext: contentContext })) }));
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=ShowcaseRenderPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShowcaseRenderPage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseRenderPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type ShowcaseView = 'single' | 'all';
|
|
2
|
+
interface TopBarProps {
|
|
3
|
+
componentTypes: string[];
|
|
4
|
+
collectionTypes: string[];
|
|
5
|
+
selectedType: string;
|
|
6
|
+
mode: 'component' | 'collection';
|
|
7
|
+
view: ShowcaseView;
|
|
8
|
+
}
|
|
9
|
+
export declare const TopBar: ({ componentTypes, collectionTypes, selectedType, mode, view, }: TopBarProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=TopBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TopBar.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/TopBar.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE5C,UAAU,WAAW;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,WAAW,GAAG,YAAY,CAAC;IACjC,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,eAAO,MAAM,MAAM,GAAI,gEAMpB,WAAW,4CAyOb,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useRouter, useSearchParams } from 'next/navigation';
|
|
4
|
+
import { useEffect, useRef, useState } from 'react';
|
|
5
|
+
export const TopBar = ({ componentTypes, collectionTypes, selectedType, mode, view, }) => {
|
|
6
|
+
const router = useRouter();
|
|
7
|
+
const searchParams = useSearchParams();
|
|
8
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
9
|
+
const [searchTerm, setSearchTerm] = useState('');
|
|
10
|
+
const dropdownRef = useRef(null);
|
|
11
|
+
const inputRef = useRef(null);
|
|
12
|
+
const items = mode === 'component' ? componentTypes : collectionTypes;
|
|
13
|
+
const filteredItems = items.filter((item) => item.toLowerCase().includes(searchTerm.toLowerCase()));
|
|
14
|
+
const navigateTo = (type, newMode) => {
|
|
15
|
+
const params = new URLSearchParams(searchParams.toString());
|
|
16
|
+
params.set('type', type);
|
|
17
|
+
if (newMode) {
|
|
18
|
+
params.set('mode', newMode);
|
|
19
|
+
}
|
|
20
|
+
router.push(`?${params.toString()}`);
|
|
21
|
+
};
|
|
22
|
+
const handleModeChange = (newMode) => {
|
|
23
|
+
const newItems = newMode === 'component' ? componentTypes : collectionTypes;
|
|
24
|
+
navigateTo(newItems[0] || '', newMode);
|
|
25
|
+
};
|
|
26
|
+
const handleViewChange = (newView) => {
|
|
27
|
+
const params = new URLSearchParams(searchParams.toString());
|
|
28
|
+
params.set('view', newView);
|
|
29
|
+
router.push(`?${params.toString()}`);
|
|
30
|
+
};
|
|
31
|
+
const handlePrev = () => {
|
|
32
|
+
const currentIndex = items.indexOf(selectedType);
|
|
33
|
+
const prevIndex = (currentIndex - 1 + items.length) % items.length;
|
|
34
|
+
navigateTo(items[prevIndex]);
|
|
35
|
+
};
|
|
36
|
+
const handleNext = () => {
|
|
37
|
+
const currentIndex = items.indexOf(selectedType);
|
|
38
|
+
const nextIndex = (currentIndex + 1) % items.length;
|
|
39
|
+
navigateTo(items[nextIndex]);
|
|
40
|
+
};
|
|
41
|
+
const handleKeyDown = (e) => {
|
|
42
|
+
const currentIndex = items.indexOf(selectedType);
|
|
43
|
+
switch (e.key) {
|
|
44
|
+
case 'ArrowDown': {
|
|
45
|
+
e.preventDefault();
|
|
46
|
+
const nextIndex = (currentIndex + 1) % items.length;
|
|
47
|
+
navigateTo(items[nextIndex]);
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
case 'ArrowUp': {
|
|
51
|
+
e.preventDefault();
|
|
52
|
+
const prevIndex = (currentIndex - 1 + items.length) % items.length;
|
|
53
|
+
navigateTo(items[prevIndex]);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case 'Enter':
|
|
57
|
+
if (isOpen && filteredItems.length > 0) {
|
|
58
|
+
// If open, enter selects first filtered item or stays on current
|
|
59
|
+
setIsOpen(false);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
setIsOpen(true);
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
case 'Escape':
|
|
66
|
+
setIsOpen(false);
|
|
67
|
+
inputRef.current?.blur();
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
const handleClickOutside = (event) => {
|
|
73
|
+
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
74
|
+
setIsOpen(false);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
78
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
79
|
+
}, []);
|
|
80
|
+
return (_jsxs("div", { className: "h-14 border-b border-[#e5e7eb] bg-[#ffffff] flex items-center px-4 gap-6 z-30", children: [_jsxs("div", { className: "flex bg-[#f3f4f6] rounded-md p-1 border border-[#e5e7eb]", children: [_jsx("button", { type: "button", onClick: () => handleModeChange('component'), className: `px-3 py-1 text-[13px] font-[500] rounded-md transition-colors ${mode === 'component'
|
|
81
|
+
? 'bg-[#ffffff] text-[#111827] shadow-sm'
|
|
82
|
+
: 'text-[#6b7280] hover:text-[#111827]'}`, children: "Components" }), _jsx("button", { type: "button", onClick: () => handleModeChange('collection'), className: `px-3 py-1 text-[13px] font-[500] rounded-md transition-colors ${mode === 'collection'
|
|
83
|
+
? 'bg-[#ffffff] text-[#111827] shadow-sm'
|
|
84
|
+
: 'text-[#6b7280] hover:text-[#111827]'}`, children: "Collections" })] }), _jsxs("div", { className: "flex bg-[#f3f4f6] rounded-md p-1 border border-[#e5e7eb]", children: [_jsx("button", { type: "button", onClick: () => handleViewChange('single'), className: `px-3 py-1 text-[13px] font-[500] rounded-md transition-colors ${view === 'single'
|
|
85
|
+
? 'bg-[#ffffff] text-[#111827] shadow-sm'
|
|
86
|
+
: 'text-[#6b7280] hover:text-[#111827]'}`, children: "Single" }), _jsx("button", { type: "button", onClick: () => handleViewChange('all'), className: `px-3 py-1 text-[13px] font-[500] rounded-md transition-colors ${view === 'all'
|
|
87
|
+
? 'bg-[#ffffff] text-[#111827] shadow-sm'
|
|
88
|
+
: 'text-[#6b7280] hover:text-[#111827]'}`, children: "All" })] }), view === 'single' && (_jsxs("div", { className: "relative flex-1 max-w-md", ref: dropdownRef, children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("div", { className: "relative flex-1", children: [_jsx("input", { ref: inputRef, type: "text", className: "w-full h-9 px-3 py-2 bg-[#ffffff] border border-[#d1d5db] rounded-md text-[14px] focus:outline-none focus:ring-2 focus:ring-[#2563eb] focus:border-transparent", value: isOpen ? searchTerm : selectedType, onChange: (e) => {
|
|
89
|
+
setSearchTerm(e.target.value);
|
|
90
|
+
if (!isOpen) {
|
|
91
|
+
setIsOpen(true);
|
|
92
|
+
}
|
|
93
|
+
}, onFocus: () => {
|
|
94
|
+
setSearchTerm('');
|
|
95
|
+
}, onClick: () => setIsOpen(!isOpen), onKeyDown: handleKeyDown, placeholder: "Search..." }), _jsx("button", { type: "button", className: "absolute right-2 top-1/2 -translate-y-1/2 text-[#9ca3af] hover:text-[#374151]", onClick: () => setIsOpen(!isOpen), children: "\u25BC" })] }), _jsxs("div", { className: "flex items-center gap-1 border border-[#d1d5db] rounded-md overflow-hidden bg-[#ffffff]", children: [_jsx("button", { type: "button", onClick: handlePrev, title: "Previous item (Arrow Up)", className: "h-9 px-3 hover:bg-[#f9fafb] text-[#374151] border-r border-[#d1d5db] transition-colors", children: "\u25C0" }), _jsx("button", { type: "button", onClick: handleNext, title: "Next item (Arrow Down)", className: "h-9 px-3 hover:bg-[#f9fafb] text-[#374151] transition-colors", children: "\u25B6" })] })] }), isOpen && (_jsx("div", { className: "absolute top-full left-0 right-0 mt-1 max-h-80 overflow-y-auto bg-[#ffffff] border border-[#e5e7eb] rounded-md shadow-lg z-50", children: filteredItems.length > 0 ? (filteredItems.map((item) => (_jsx("button", { type: "button", className: `w-full text-left px-3 py-2 text-[14px] hover:bg-[#f3f4f6] transition-colors ${selectedType === item
|
|
96
|
+
? 'bg-[#eff6ff] text-[#2563eb] font-[500]'
|
|
97
|
+
: 'text-[#374151]'}`, onClick: () => {
|
|
98
|
+
navigateTo(item);
|
|
99
|
+
setIsOpen(false);
|
|
100
|
+
setSearchTerm('');
|
|
101
|
+
}, children: item }, item)))) : (_jsx("div", { className: "px-3 py-2 text-[14px] text-[#9ca3af]", children: "No results found" })) }))] })), view === 'all' && _jsx("div", { className: "flex-1" }), _jsxs("div", { className: "ml-auto flex items-center gap-3", children: [_jsx("div", { className: "h-8 w-px bg-[#e5e7eb]" }), _jsxs("div", { className: "flex flex-col items-end", children: [_jsx("span", { className: "text-[13px] font-[700] text-[#111827] leading-tight", children: "CMS Showcase" }), _jsx("span", { className: "text-[10px] text-[#6b7280] font-mono", children: "v2.0" })] })] })] }));
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=TopBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TopBar.js","sourceRoot":"","sources":["../../../src/showcase/components/TopBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { AllViewPanel } from './components/AllViewPanel';
|
|
2
|
+
export { Controls } from './components/Controls';
|
|
3
|
+
export { ControlsWrapper } from './components/ControlsWrapper';
|
|
4
|
+
export { PreviewPanel } from './components/PreviewPanel';
|
|
5
|
+
export { ScaledIframe } from './components/ScaledIframe';
|
|
6
|
+
export { ShowcaseAllRenderPage } from './components/ShowcaseAllRenderPage';
|
|
7
|
+
export { ShowcasePage } from './components/ShowcasePage';
|
|
8
|
+
export { ShowcaseRenderPage } from './components/ShowcaseRenderPage';
|
|
9
|
+
export { type ShowcaseView, TopBar } from './components/TopBar';
|
|
10
|
+
export * from './mockFactory';
|
|
11
|
+
export * from './types';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/showcase/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChE,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { AllViewPanel } from './components/AllViewPanel';
|
|
2
|
+
export { Controls } from './components/Controls';
|
|
3
|
+
export { ControlsWrapper } from './components/ControlsWrapper';
|
|
4
|
+
export { PreviewPanel } from './components/PreviewPanel';
|
|
5
|
+
export { ScaledIframe } from './components/ScaledIframe';
|
|
6
|
+
export { ShowcaseAllRenderPage } from './components/ShowcaseAllRenderPage';
|
|
7
|
+
export { ShowcasePage } from './components/ShowcasePage';
|
|
8
|
+
export { ShowcaseRenderPage } from './components/ShowcaseRenderPage';
|
|
9
|
+
export { TopBar } from './components/TopBar';
|
|
10
|
+
export * from './mockFactory';
|
|
11
|
+
export * from './types';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/showcase/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAqB,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChE,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { IContentfulCollection, IContentfulComponent, IContentfulRichText } from '@se-studio/contentful-rest-api';
|
|
2
|
+
import type { IInternalLink, IResponsiveVisual, IVisual } from '@se-studio/core-data-types';
|
|
3
|
+
import type { MockData } from '../cmsRegistration';
|
|
4
|
+
import { type ShowcaseControlState } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a valid Contentful Rich Text document from a string, supporting basic markdown:
|
|
7
|
+
* - Paragraphs (split by double newline)
|
|
8
|
+
* - Bold text (**text**)
|
|
9
|
+
* - Headings (# H1, ## H2, etc.)
|
|
10
|
+
* - Bullet lists (- item or * item)
|
|
11
|
+
*/
|
|
12
|
+
export declare function createRichTextFromMarkdown(text: string): IContentfulRichText;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a valid Visual object
|
|
15
|
+
*/
|
|
16
|
+
export declare function createVisual(id: string, width: number, height: number): IVisual;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a Responsive Visual object
|
|
19
|
+
*/
|
|
20
|
+
export declare function createResponsiveVisual(showVisual: boolean, showMobile: boolean, customSize: number, width?: number, height?: number): IResponsiveVisual | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Creates sample links
|
|
23
|
+
*/
|
|
24
|
+
export declare function createLinks(count: number): IInternalLink[];
|
|
25
|
+
export declare function parseShowcaseControls<TColor = string, TGradient = string>(searchParams: Record<string, string | string[] | undefined>, defaultState?: ShowcaseControlState<TColor, TGradient>): ShowcaseControlState<TColor, TGradient>;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a mock card item for a collection
|
|
28
|
+
*/
|
|
29
|
+
export declare function createMockCardContent(collectionType: string, index: number, controls: ShowcaseControlState, collectionCardFieldsMap: Record<string, Set<string>>, cardMockData?: MockData): IContentfulComponent | IVisual;
|
|
30
|
+
/**
|
|
31
|
+
* Generates a mock component or collection based on the control state
|
|
32
|
+
*/
|
|
33
|
+
export declare function createMockShowcaseData(type: string, mode: 'component' | 'collection', controls: ShowcaseControlState, componentFieldsMap: Record<string, Set<string>>, collectionFieldsMap: Record<string, Set<string>>, collectionCardFieldsMap: Record<string, Set<string>>, componentMockMap?: Record<string, MockData>, collectionMockMap?: Record<string, MockData>, collectionCardMockMap?: Record<string, MockData>): IContentfulComponent | IContentfulCollection;
|
|
34
|
+
//# sourceMappingURL=mockFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockFactory.d.ts","sourceRoot":"","sources":["../../src/showcase/mockFactory.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,SAAS,CAAC;AA4BpF;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAmF5E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAgB/E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,OAAO,EACnB,UAAU,EAAE,OAAO,EACnB,UAAU,EAAE,MAAM,EAClB,KAAK,SAAM,EACX,MAAM,SAAM,GACX,iBAAiB,GAAG,SAAS,CAiB/B;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAY1D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,MAAM,EACvE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EAC3D,YAAY,GAAE,oBAAoB,CAChC,MAAM,EACN,SAAS,CAC6E,GACvF,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAyCzC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,oBAAoB,EAC9B,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACpD,YAAY,CAAC,EAAE,QAAQ,GACtB,oBAAoB,GAAG,OAAO,CA2GhC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,GAAG,YAAY,EAChC,QAAQ,EAAE,oBAAoB,EAC9B,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAC/C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAChD,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACpD,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAM,EAC/C,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAM,EAChD,qBAAqB,GAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAM,GACnD,oBAAoB,GAAG,qBAAqB,CA4G9C"}
|