@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.
Files changed (77) hide show
  1. package/ANALYTICS.md +136 -0
  2. package/CHANGELOG.md +475 -0
  3. package/CMS_INFRASTRUCTURE.md +335 -0
  4. package/CONSENT.md +121 -0
  5. package/README.md +11 -0
  6. package/dist/cmsRegistration.d.ts +152 -0
  7. package/dist/cmsRegistration.d.ts.map +1 -0
  8. package/dist/cmsRegistration.js +145 -0
  9. package/dist/cmsRegistration.js.map +1 -0
  10. package/dist/components/CmsCollection.d.ts +2 -1
  11. package/dist/components/CmsCollection.d.ts.map +1 -1
  12. package/dist/components/CmsCollection.js +1 -1
  13. package/dist/components/CmsCollection.js.map +1 -1
  14. package/dist/components/CmsComponent.d.ts +2 -1
  15. package/dist/components/CmsComponent.d.ts.map +1 -1
  16. package/dist/components/CmsComponent.js.map +1 -1
  17. package/dist/components/Preview.d.ts.map +1 -1
  18. package/dist/components/Preview.js +20 -6
  19. package/dist/components/Preview.js.map +1 -1
  20. package/dist/index.d.ts +3 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +3 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/showcase/components/AllViewPanel.d.ts +7 -0
  25. package/dist/showcase/components/AllViewPanel.d.ts.map +1 -0
  26. package/dist/showcase/components/AllViewPanel.js +35 -0
  27. package/dist/showcase/components/AllViewPanel.js.map +1 -0
  28. package/dist/showcase/components/Controls.d.ts +15 -0
  29. package/dist/showcase/components/Controls.d.ts.map +1 -0
  30. package/dist/showcase/components/Controls.js +74 -0
  31. package/dist/showcase/components/Controls.js.map +1 -0
  32. package/dist/showcase/components/ControlsWrapper.d.ts +13 -0
  33. package/dist/showcase/components/ControlsWrapper.d.ts.map +1 -0
  34. package/dist/showcase/components/ControlsWrapper.js +9 -0
  35. package/dist/showcase/components/ControlsWrapper.js.map +1 -0
  36. package/dist/showcase/components/PreviewPanel.d.ts +10 -0
  37. package/dist/showcase/components/PreviewPanel.d.ts.map +1 -0
  38. package/dist/showcase/components/PreviewPanel.js +42 -0
  39. package/dist/showcase/components/PreviewPanel.js.map +1 -0
  40. package/dist/showcase/components/ScaledIframe.d.ts +10 -0
  41. package/dist/showcase/components/ScaledIframe.d.ts.map +1 -0
  42. package/dist/showcase/components/ScaledIframe.js +16 -0
  43. package/dist/showcase/components/ScaledIframe.js.map +1 -0
  44. package/dist/showcase/components/ShowcaseAllRenderPage.d.ts +19 -0
  45. package/dist/showcase/components/ShowcaseAllRenderPage.d.ts.map +1 -0
  46. package/dist/showcase/components/ShowcaseAllRenderPage.js +46 -0
  47. package/dist/showcase/components/ShowcaseAllRenderPage.js.map +1 -0
  48. package/dist/showcase/components/ShowcasePage.d.ts +15 -0
  49. package/dist/showcase/components/ShowcasePage.d.ts.map +1 -0
  50. package/dist/showcase/components/ShowcasePage.js +16 -0
  51. package/dist/showcase/components/ShowcasePage.js.map +1 -0
  52. package/dist/showcase/components/ShowcaseRenderPage.d.ts +19 -0
  53. package/dist/showcase/components/ShowcaseRenderPage.d.ts.map +1 -0
  54. package/dist/showcase/components/ShowcaseRenderPage.js +51 -0
  55. package/dist/showcase/components/ShowcaseRenderPage.js.map +1 -0
  56. package/dist/showcase/components/TopBar.d.ts +11 -0
  57. package/dist/showcase/components/TopBar.d.ts.map +1 -0
  58. package/dist/showcase/components/TopBar.js +103 -0
  59. package/dist/showcase/components/TopBar.js.map +1 -0
  60. package/dist/showcase/index.d.ts +12 -0
  61. package/dist/showcase/index.d.ts.map +1 -0
  62. package/dist/showcase/index.js +12 -0
  63. package/dist/showcase/index.js.map +1 -0
  64. package/dist/showcase/mockFactory.d.ts +34 -0
  65. package/dist/showcase/mockFactory.d.ts.map +1 -0
  66. package/dist/showcase/mockFactory.js +352 -0
  67. package/dist/showcase/mockFactory.js.map +1 -0
  68. package/dist/showcase/types.d.ts +20 -0
  69. package/dist/showcase/types.d.ts.map +1 -0
  70. package/dist/showcase/types.js +18 -0
  71. package/dist/showcase/types.js.map +1 -0
  72. package/package.json +8 -5
  73. package/src/showcase/README.md +131 -0
  74. package/dist/__tests__/setup.d.ts +0 -2
  75. package/dist/__tests__/setup.d.ts.map +0 -1
  76. package/dist/__tests__/setup.js +0 -2
  77. 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"}