@se-studio/core-ui 1.0.14 → 1.0.16
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/README.md +87 -14
- package/dist/CmsRendererConfig.d.ts +122 -0
- package/dist/CmsRendererConfig.d.ts.map +1 -1
- package/dist/analytics/AnalyticsProvider.d.ts +7 -0
- package/dist/analytics/AnalyticsProvider.d.ts.map +1 -1
- package/dist/analytics/AnalyticsProvider.js +7 -0
- package/dist/analytics/AnalyticsProvider.js.map +1 -1
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.d.ts +4 -0
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.d.ts.map +1 -1
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.js +5 -0
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.js.map +1 -1
- package/dist/analytics/types.d.ts +23 -0
- package/dist/analytics/types.d.ts.map +1 -1
- package/dist/analytics/useAnalytics.d.ts +35 -0
- package/dist/analytics/useAnalytics.d.ts.map +1 -1
- package/dist/analytics/useAnalytics.js +35 -0
- package/dist/analytics/useAnalytics.js.map +1 -1
- package/dist/components/ClientMonitor.d.ts.map +1 -1
- package/dist/components/ClientMonitor.js +40 -0
- package/dist/components/ClientMonitor.js.map +1 -1
- package/dist/components/CmsCollection.d.ts +47 -0
- package/dist/components/CmsCollection.d.ts.map +1 -1
- package/dist/components/CmsCollection.js +7 -0
- package/dist/components/CmsCollection.js.map +1 -1
- package/dist/components/CmsComponent.d.ts +47 -0
- package/dist/components/CmsComponent.d.ts.map +1 -1
- package/dist/components/CmsComponent.js +7 -0
- package/dist/components/CmsComponent.js.map +1 -1
- package/dist/components/CmsContent.d.ts +62 -0
- package/dist/components/CmsContent.d.ts.map +1 -1
- package/dist/components/CmsContent.js +53 -0
- package/dist/components/CmsContent.js.map +1 -1
- package/dist/components/CmsConversionErrors.js +2 -0
- package/dist/components/CmsConversionErrors.js.map +1 -1
- package/dist/components/CmsEmbeddedContent.d.ts +3 -0
- package/dist/components/CmsEmbeddedContent.d.ts.map +1 -1
- package/dist/components/CmsEmbeddedContent.js +3 -0
- package/dist/components/CmsEmbeddedContent.js.map +1 -1
- package/dist/components/CmsExternalComponent.d.ts +44 -0
- package/dist/components/CmsExternalComponent.d.ts.map +1 -1
- package/dist/components/CmsExternalComponent.js +7 -0
- package/dist/components/CmsExternalComponent.js.map +1 -1
- package/dist/components/ImageKitClientVideo.js +1 -0
- package/dist/components/ImageKitClientVideo.js.map +1 -1
- package/dist/components/SvgComponent.js +3 -1
- package/dist/components/SvgComponent.js.map +1 -1
- package/dist/components/VisualComponent.d.ts +47 -0
- package/dist/components/VisualComponent.d.ts.map +1 -1
- package/dist/components/VisualComponent.js +47 -0
- package/dist/components/VisualComponent.js.map +1 -1
- package/dist/elements/TrackedLink.d.ts +8 -0
- package/dist/elements/TrackedLink.d.ts.map +1 -1
- package/dist/elements/TrackedLink.js +13 -0
- package/dist/elements/TrackedLink.js.map +1 -1
- package/dist/framework/BackgroundMedia.js +5 -1
- package/dist/framework/BackgroundMedia.js.map +1 -1
- package/dist/framework/ComponentErrorIndicator.js +7 -4
- package/dist/framework/ComponentErrorIndicator.js.map +1 -1
- package/dist/framework/componentErrors.d.ts +8 -0
- package/dist/framework/componentErrors.d.ts.map +1 -1
- package/dist/framework/componentErrors.js +10 -0
- package/dist/framework/componentErrors.js.map +1 -1
- package/dist/hooks/useClickTracking.d.ts +39 -0
- package/dist/hooks/useClickTracking.d.ts.map +1 -1
- package/dist/hooks/useClickTracking.js +29 -0
- package/dist/hooks/useClickTracking.js.map +1 -1
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -1
- package/dist/rtf/rtf.d.ts +41 -0
- package/dist/rtf/rtf.d.ts.map +1 -1
- package/dist/rtf/rtf.js +36 -0
- package/dist/rtf/rtf.js.map +1 -1
- package/dist/utils/UnsupportedWarning.d.ts +23 -0
- package/dist/utils/UnsupportedWarning.d.ts.map +1 -1
- package/dist/utils/UnsupportedWarning.js +24 -0
- package/dist/utils/UnsupportedWarning.js.map +1 -1
- package/dist/utils/UnusedChecker.d.ts +39 -0
- package/dist/utils/UnusedChecker.d.ts.map +1 -1
- package/dist/utils/UnusedChecker.js +47 -3
- package/dist/utils/UnusedChecker.js.map +1 -1
- package/dist/utils/buildPageMetadata.d.ts +45 -0
- package/dist/utils/buildPageMetadata.d.ts.map +1 -1
- package/dist/utils/buildPageMetadata.js +37 -0
- package/dist/utils/buildPageMetadata.js.map +1 -1
- package/dist/utils/cn.d.ts +26 -0
- package/dist/utils/cn.d.ts.map +1 -1
- package/dist/utils/cn.js +26 -0
- package/dist/utils/cn.js.map +1 -1
- package/dist/utils/componentUtils.d.ts +121 -0
- package/dist/utils/componentUtils.d.ts.map +1 -1
- package/dist/utils/componentUtils.js +80 -0
- package/dist/utils/componentUtils.js.map +1 -1
- package/dist/utils/convertText.js +10 -2
- package/dist/utils/convertText.js.map +1 -1
- package/dist/utils/errorHandling.d.ts +27 -0
- package/dist/utils/errorHandling.d.ts.map +1 -1
- package/dist/utils/errorHandling.js +33 -0
- package/dist/utils/errorHandling.js.map +1 -1
- package/dist/utils/previewUtils.js +2 -0
- package/dist/utils/previewUtils.js.map +1 -1
- package/package.json +17 -4
|
@@ -2,6 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { CmsCollection } from './CmsCollection';
|
|
3
3
|
import { CmsComponent } from './CmsComponent';
|
|
4
4
|
import { CmsExternalComponent } from './CmsExternalComponent';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a content context for a specific component with lazy evaluation
|
|
7
|
+
*/
|
|
5
8
|
function createContentContext(pageContext, components, currentIndex) {
|
|
6
9
|
const current = components[currentIndex];
|
|
7
10
|
if (!current) {
|
|
@@ -11,6 +14,9 @@ function createContentContext(pageContext, components, currentIndex) {
|
|
|
11
14
|
const nextContent = currentIndex === components.length - 1 ? undefined : components[currentIndex + 1];
|
|
12
15
|
return { pageContext, previousContent, current, nextContent };
|
|
13
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Error display component for rendering errors in development mode
|
|
19
|
+
*/
|
|
14
20
|
export const ContentError = ({ error, content, showInProduction = false, }) => {
|
|
15
21
|
if (!showInProduction && typeof process !== 'undefined' && process.env?.NODE_ENV === 'production')
|
|
16
22
|
return null;
|
|
@@ -29,6 +35,9 @@ export const ContentError = ({ error, content, showInProduction = false, }) => {
|
|
|
29
35
|
fontSize: '0.75rem',
|
|
30
36
|
}, children: error.message })] })] })] }));
|
|
31
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* Single content item renderer that routes to the appropriate renderer based on type
|
|
40
|
+
*/
|
|
32
41
|
const SingleContent = ({ context, rendererConfig, }) => {
|
|
33
42
|
try {
|
|
34
43
|
const { current } = context;
|
|
@@ -68,12 +77,14 @@ const SingleContent = ({ context, rendererConfig, }) => {
|
|
|
68
77
|
}
|
|
69
78
|
break;
|
|
70
79
|
default: {
|
|
80
|
+
// Check if there's a custom content renderer for this type
|
|
71
81
|
const unknownContent = current;
|
|
72
82
|
const CustomRenderer = rendererConfig.customContentMap?.[unknownContent.type];
|
|
73
83
|
if (CustomRenderer) {
|
|
74
84
|
result = _jsx(CustomRenderer, { information: current, contentContext: context });
|
|
75
85
|
break;
|
|
76
86
|
}
|
|
87
|
+
// No custom renderer found - treat as unknown content
|
|
77
88
|
const error = new Error(`Unknown content type: ${unknownContent.type} (ID: ${unknownContent.id})`);
|
|
78
89
|
console.error(error);
|
|
79
90
|
if (rendererConfig.showRenderErrors ||
|
|
@@ -97,6 +108,48 @@ const SingleContent = ({ context, rendererConfig, }) => {
|
|
|
97
108
|
return null;
|
|
98
109
|
}
|
|
99
110
|
};
|
|
111
|
+
/**
|
|
112
|
+
* Main content renderer that renders an array of page content items.
|
|
113
|
+
*
|
|
114
|
+
* @example Basic usage
|
|
115
|
+
* ```tsx
|
|
116
|
+
* import { createCmsRendererConfig } from "@se-studio/core-ui";
|
|
117
|
+
*
|
|
118
|
+
* const rendererConfig = createCmsRendererConfig<MyProjectConfig>({
|
|
119
|
+
* componentMap: {
|
|
120
|
+
* "Hero": HeroComponent,
|
|
121
|
+
* "CTA": CTAComponent,
|
|
122
|
+
* },
|
|
123
|
+
* collectionMap: {
|
|
124
|
+
* "FAQs": FAQCollection,
|
|
125
|
+
* },
|
|
126
|
+
* showUnknownTypeErrors: process.env.NODE_ENV === 'development',
|
|
127
|
+
* });
|
|
128
|
+
*
|
|
129
|
+
* <CmsContent
|
|
130
|
+
* rendererConfig={rendererConfig}
|
|
131
|
+
* pageContext={pageContext}
|
|
132
|
+
* contents={page.contents}
|
|
133
|
+
* />
|
|
134
|
+
* ```
|
|
135
|
+
*
|
|
136
|
+
* @example With all renderer types
|
|
137
|
+
* ```tsx
|
|
138
|
+
* const rendererConfig = createCmsRendererConfig<MyProjectConfig>({
|
|
139
|
+
* componentMap: { ... },
|
|
140
|
+
* collectionMap: { ... },
|
|
141
|
+
* externalComponentMap: { ... },
|
|
142
|
+
* visualComponentRenderer: VisualRenderer,
|
|
143
|
+
* internalLinkRenderer: InternalLinkRenderer,
|
|
144
|
+
* });
|
|
145
|
+
*
|
|
146
|
+
* <CmsContent
|
|
147
|
+
* rendererConfig={rendererConfig}
|
|
148
|
+
* pageContext={pageContext}
|
|
149
|
+
* contents={page.contents}
|
|
150
|
+
* />
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
100
153
|
export function CmsContent({ pageContext, contents, rendererConfig, }) {
|
|
101
154
|
if (!contents || contents.length === 0) {
|
|
102
155
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsContent.js","sourceRoot":"","sources":["../../src/components/CmsContent.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"CmsContent.js","sourceRoot":"","sources":["../../src/components/CmsContent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { useState } from 'react';
|
|
4
4
|
export function CmsConversionErrors({ errors, isProduction }) {
|
|
5
5
|
const [expanded, setExpanded] = useState(false);
|
|
6
|
+
// Don't render in production
|
|
6
7
|
if (isProduction || errors.length === 0) {
|
|
7
8
|
return null;
|
|
8
9
|
}
|
|
10
|
+
// Show first 5 errors by default, or all if expanded
|
|
9
11
|
const visibleErrors = expanded ? errors : errors.slice(0, 5);
|
|
10
12
|
const hasMoreErrors = errors.length > 5;
|
|
11
13
|
return (_jsx("div", { style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsConversionErrors.js","sourceRoot":"","sources":["../../src/components/CmsConversionErrors.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAOjC,MAAM,UAAU,mBAAmB,CAAC,EAAE,MAAM,EAAE,YAAY,EAA4B;IACpF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CmsConversionErrors.js","sourceRoot":"","sources":["../../src/components/CmsConversionErrors.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,8 @@ import { type EmbeddedCollectionRenderer } from './CmsCollection';
|
|
|
2
2
|
import { type EmbeddedComponentRenderer } from './CmsComponent';
|
|
3
3
|
import { type EmbeddedExternalComponentRenderer } from './CmsExternalComponent';
|
|
4
4
|
export type EmbeddedContentRenderer = EmbeddedComponentRenderer | EmbeddedCollectionRenderer | EmbeddedExternalComponentRenderer;
|
|
5
|
+
/**
|
|
6
|
+
* Single content item renderer that routes to the appropriate renderer based on type
|
|
7
|
+
*/
|
|
5
8
|
export declare const CmsEmbeddedContent: EmbeddedContentRenderer;
|
|
6
9
|
//# sourceMappingURL=CmsEmbeddedContent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsEmbeddedContent.d.ts","sourceRoot":"","sources":["../../src/components/CmsEmbeddedContent.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAyB,KAAK,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAwB,KAAK,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,OAAO,EAEL,KAAK,iCAAiC,EACvC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,uBAAuB,GAC/B,yBAAyB,GACzB,0BAA0B,GAC1B,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"CmsEmbeddedContent.d.ts","sourceRoot":"","sources":["../../src/components/CmsEmbeddedContent.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAyB,KAAK,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAwB,KAAK,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,OAAO,EAEL,KAAK,iCAAiC,EACvC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,uBAAuB,GAC/B,yBAAyB,GACzB,0BAA0B,GAC1B,iCAAiC,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,uBAkDhC,CAAC"}
|
|
@@ -3,6 +3,9 @@ import { CmsEmbeddedCollection } from './CmsCollection';
|
|
|
3
3
|
import { CmsEmbeddedComponent } from './CmsComponent';
|
|
4
4
|
import { ContentError } from './CmsContent';
|
|
5
5
|
import { CmsEmbeddedExternalComponent, } from './CmsExternalComponent';
|
|
6
|
+
/**
|
|
7
|
+
* Single content item renderer that routes to the appropriate renderer based on type
|
|
8
|
+
*/
|
|
6
9
|
export const CmsEmbeddedContent = ({ information, ...props }) => {
|
|
7
10
|
try {
|
|
8
11
|
let result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsEmbeddedContent.js","sourceRoot":"","sources":["../../src/components/CmsEmbeddedContent.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,qBAAqB,EAAmC,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAkC,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,4BAA4B,GAE7B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"CmsEmbeddedContent.js","sourceRoot":"","sources":["../../src/components/CmsEmbeddedContent.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,qBAAqB,EAAmC,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAkC,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,4BAA4B,GAE7B,MAAM,wBAAwB,CAAC;AAOhC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA4B,CAAC,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACvF,IAAI,CAAC;QACH,IAAI,MAAuB,CAAC;QAC5B,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,WAAW;gBACd,MAAM,GAAG,KAAC,oBAAoB,IAAC,WAAW,EAAE,WAA6B,KAAM,KAAK,GAAI,CAAC;gBACzF,MAAM;YAER,KAAK,YAAY;gBACf,MAAM,GAAG,KAAC,qBAAqB,IAAC,WAAW,EAAE,WAA8B,KAAM,KAAK,GAAI,CAAC;gBAC3F,MAAM;YAER,KAAK,oBAAoB;gBACvB,MAAM,GAAG,CACP,KAAC,4BAA4B,IAC3B,WAAW,EAAE,WAAqC,KAC9C,KAAK,GACT,CACH,CAAC;gBACF,MAAM;YAER;gBACE,MAAM,GAAG,CACP,KAAC,YAAY,IACX,KAAK,EAAE,IAAI,KAAK,CAAC,sBAAsB,CAAC,EACxC,OAAO,EAAE,WAAW,EACpB,gBAAgB,EAAE,KAAK,CAAC,cAAc,CAAC,qBAAqB,GAC5D,CACH,CAAC;QACN,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QAEjD,IACE,KAAK,CAAC,cAAc,CAAC,gBAAgB;YACrC,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,KAAK,aAAa,CAAC,EAC3E,CAAC;YACD,OAAO,CACL,KAAC,YAAY,IACX,KAAK,EAAE,KAAc,EACrB,OAAO,EAAE,WAAW,EACpB,gBAAgB,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,GACvD,CACH,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** biome-ignore-all lint/suspicious/noExplicitAny: Any is allowed */
|
|
1
2
|
import type { IBaseExternalComponent, IContentContext, ITyped } from '@se-studio/core-data-types';
|
|
2
3
|
import type { CmsRendererConfig } from '../CmsRendererConfig';
|
|
3
4
|
import type { EmbeddedRendererProps } from './CmsContent';
|
|
@@ -6,8 +7,51 @@ export type ExternalComponentRendererProps<TInformation extends ITyped> = {
|
|
|
6
7
|
contentContext: IContentContext;
|
|
7
8
|
rendererConfig: CmsRendererConfig;
|
|
8
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Standard external component renderer type for rendering external components in the main content flow.
|
|
12
|
+
* Used for external components (like third-party widgets or services) that appear as top-level page content.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* const MyExternalComponentRenderer: ExternalComponentRenderer<IMyExternalComponent> = ({
|
|
17
|
+
* information,
|
|
18
|
+
* contentContext,
|
|
19
|
+
* rendererConfig
|
|
20
|
+
* }) => {
|
|
21
|
+
* return <div data-external-id={information.externalId}>{information.title}</div>;
|
|
22
|
+
* };
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
9
25
|
export type ExternalComponentRenderer<TInformation extends ITyped> = React.FC<ExternalComponentRendererProps<TInformation>>;
|
|
26
|
+
/**
|
|
27
|
+
* Embedded external component renderer type for rendering external components within rich text or collections.
|
|
28
|
+
* Includes additional props for positioning and tracking embedded content.
|
|
29
|
+
*
|
|
30
|
+
* Use this type when defining custom external component renderers that can be embedded within RTF fields
|
|
31
|
+
* or nested inside collections.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* const MyEmbeddedExternalComponentRenderer: EmbeddedExternalComponentRenderer<IMyExternalComponent> = ({
|
|
36
|
+
* information,
|
|
37
|
+
* contentContext,
|
|
38
|
+
* rendererConfig,
|
|
39
|
+
* positionClassName,
|
|
40
|
+
* embeddedIndex,
|
|
41
|
+
* parentIndex
|
|
42
|
+
* }) => {
|
|
43
|
+
* return (
|
|
44
|
+
* <div className={positionClassName} data-position={embeddedIndex}>
|
|
45
|
+
* {information.title}
|
|
46
|
+
* </div>
|
|
47
|
+
* );
|
|
48
|
+
* };
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
10
51
|
export type EmbeddedExternalComponentRenderer<TInformation extends ITyped = ITyped> = React.FC<ExternalComponentRendererProps<TInformation> & EmbeddedRendererProps>;
|
|
52
|
+
/**
|
|
53
|
+
* Map of external component types to their renderers
|
|
54
|
+
*/
|
|
11
55
|
export type ExternalComponentMap<TKey extends string, TInformation extends ITyped> = Partial<Record<TKey, ExternalComponentRenderer<TInformation>>>;
|
|
12
56
|
export type EmbeddedExternalComponentMap<TKey extends string, TInformation extends ITyped> = Partial<Record<TKey, EmbeddedExternalComponentRenderer<TInformation>>>;
|
|
13
57
|
export declare const CmsExternalComponent: ExternalComponentRenderer<IBaseExternalComponent>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsExternalComponent.d.ts","sourceRoot":"","sources":["../../src/components/CmsExternalComponent.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CmsExternalComponent.d.ts","sourceRoot":"","sources":["../../src/components/CmsExternalComponent.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,MAAM,8BAA8B,CAAC,YAAY,SAAS,MAAM,IAAI;IACxE,WAAW,EAAE,YAAY,CAAC;IAC1B,cAAc,EAAE,eAAe,CAAC;IAChC,cAAc,EAAE,iBAAiB,CAAC;CACnC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,yBAAyB,CAAC,YAAY,SAAS,MAAM,IAAI,KAAK,CAAC,EAAE,CAC3E,8BAA8B,CAAC,YAAY,CAAC,CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,iCAAiC,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM,IAAI,KAAK,CAAC,EAAE,CAC5F,8BAA8B,CAAC,YAAY,CAAC,GAAG,qBAAqB,CACrE,CAAC;AACF;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,IAAI,SAAS,MAAM,EAAE,YAAY,SAAS,MAAM,IAAI,OAAO,CAC1F,MAAM,CAAC,IAAI,EAAE,yBAAyB,CAAC,YAAY,CAAC,CAAC,CACtD,CAAC;AAEF,MAAM,MAAM,4BAA4B,CACtC,IAAI,SAAS,MAAM,EACnB,YAAY,SAAS,MAAM,IACzB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,iCAAiC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AA8C3E,eAAO,MAAM,oBAAoB,EAAE,yBAAyB,CAAC,sBAAsB,CA8ClF,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,iCAAiC,CAC1E,sBAAsB,CAqCvB,CAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Error component displayed in development/preview mode when an unknown collection type is encountered
|
|
4
|
+
*/
|
|
2
5
|
const ExternalComponentTypeError = ({ information, availableTypes, showInProduction = false, }) => {
|
|
3
6
|
if (!showInProduction && typeof process !== 'undefined' && process.env?.NODE_ENV === 'production')
|
|
4
7
|
return null;
|
|
@@ -17,8 +20,10 @@ export const CmsExternalComponent = ({ information, contentContext, rendererConf
|
|
|
17
20
|
const result = (_jsx(Element, { information: information, contentContext: contentContext, rendererConfig: rendererConfig }));
|
|
18
21
|
return result;
|
|
19
22
|
}
|
|
23
|
+
// Log unknown component type for monitoring
|
|
20
24
|
const availableTypes = Object.keys(externalComponentMap);
|
|
21
25
|
console.log(`Unknown external component type: ${String(information.externalType)} (ID: ${information.id}). Available types:`, availableTypes.join(','));
|
|
26
|
+
// Show warning in development/preview mode, use Generic fallback
|
|
22
27
|
const shouldShowError = showUnknownTypeErrors ||
|
|
23
28
|
(typeof process !== 'undefined' && process.env?.NODE_ENV === 'development');
|
|
24
29
|
const result = (_jsx(_Fragment, { children: shouldShowError && (_jsx(ExternalComponentTypeError, { information: information, availableTypes: availableTypes, showInProduction: showUnknownTypeErrors })) }));
|
|
@@ -31,8 +36,10 @@ export const CmsEmbeddedExternalComponent = ({ information, rendererConfig, ...p
|
|
|
31
36
|
const result = _jsx(Element, { information: information, rendererConfig: rendererConfig, ...props });
|
|
32
37
|
return result;
|
|
33
38
|
}
|
|
39
|
+
// Log unknown component type for monitoring
|
|
34
40
|
const availableTypes = Object.keys(embeddedExternalComponentMap);
|
|
35
41
|
console.log(`Unknown embedded external component type: ${String(information.externalType)} (ID: ${information.id}). Available types:`, availableTypes.join(','));
|
|
42
|
+
// Show warning in development/preview mode, use Generic fallback
|
|
36
43
|
const shouldShowError = showUnknownTypeErrors ||
|
|
37
44
|
(typeof process !== 'undefined' && process.env?.NODE_ENV === 'development');
|
|
38
45
|
const result = (_jsx(_Fragment, { children: shouldShowError && (_jsx(ExternalComponentTypeError, { information: information, availableTypes: availableTypes, showInProduction: showUnknownTypeErrors })) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsExternalComponent.js","sourceRoot":"","sources":["../../src/components/CmsExternalComponent.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"CmsExternalComponent.js","sourceRoot":"","sources":["../../src/components/CmsExternalComponent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ const VideoSources = ({ baseSrc, videoPrefix, width, visualSizes }) => {
|
|
|
9
9
|
?.breakpoints?.filter((x) => !width || x.pixels < width)
|
|
10
10
|
.sort((a, b) => a.minWidth - b.minWidth);
|
|
11
11
|
return (_jsxs(_Fragment, { children: [sizes?.map(({ minWidth, pixels }, index, arr) => {
|
|
12
|
+
// For video sources, convert minWidth back to max-width media queries
|
|
12
13
|
const nextBreakpoint = arr[index + 1];
|
|
13
14
|
const maxWidth = nextBreakpoint ? nextBreakpoint.minWidth - 1 : undefined;
|
|
14
15
|
return maxWidth ? (_jsx("source", { src: `${videoPrefix}${baseSrc}?tr=w-${pixels}`, media: `(max-width: ${maxWidth}px)`, type: "video/mp4" }, minWidth)) : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageKitClientVideo.js","sourceRoot":"","sources":["../../src/components/ImageKitClientVideo.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAyC,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,YAAY,GAKb,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;IACpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,iBAAQ,GAAG,EAAE,GAAG,WAAW,GAAG,OAAO,EAAE,EAAE,IAAI,EAAC,WAAW,GAAG,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC;QACrC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;SACvD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE3C,OAAO,CACL,8BACG,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"ImageKitClientVideo.js","sourceRoot":"","sources":["../../src/components/ImageKitClientVideo.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { calculateCropDetails } from './Visual';
|
|
3
3
|
function SvgComponent({ image, className, style, ...other }) {
|
|
4
4
|
const cropProperties = calculateCropDetails(image);
|
|
5
|
-
return (_jsx("div", { className: className, style: { ...style, ...cropProperties },
|
|
5
|
+
return (_jsx("div", { className: className, style: { ...style, ...cropProperties },
|
|
6
|
+
// biome-ignore lint/security/noDangerouslySetInnerHtml: Ok to set SVG inner HTML
|
|
7
|
+
dangerouslySetInnerHTML: { __html: image.data }, ...other }));
|
|
6
8
|
}
|
|
7
9
|
export default SvgComponent;
|
|
8
10
|
//# sourceMappingURL=SvgComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SvgComponent.js","sourceRoot":"","sources":["../../src/components/SvgComponent.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,UAAU,CAAC;AAElE,SAAS,YAAY,CAAC,EACpB,KAAK,EACL,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACgE;IACxE,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACnD,OAAO,CACL,cACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"SvgComponent.js","sourceRoot":"","sources":["../../src/components/SvgComponent.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,UAAU,CAAC;AAElE,SAAS,YAAY,CAAC,EACpB,KAAK,EACL,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACgE;IACxE,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACnD,OAAO,CACL,cACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,cAAc,EAAE;QACtC,iFAAiF;QACjF,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAC3C,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -1,6 +1,53 @@
|
|
|
1
1
|
import type { IVisual } from '@se-studio/core-data-types';
|
|
2
2
|
import type React from 'react';
|
|
3
3
|
import type { IVisualProps } from './Visual';
|
|
4
|
+
/**
|
|
5
|
+
* Visual component for rendering images, videos, and animations.
|
|
6
|
+
*
|
|
7
|
+
* Automatically selects the appropriate renderer based on the visual type:
|
|
8
|
+
* - Animations (Lottie) are rendered via AnimationServer
|
|
9
|
+
* - Videos are rendered via VideoComponent with Next.js optimization
|
|
10
|
+
* - Images are rendered via ImageComponent with Next.js Image optimization
|
|
11
|
+
*
|
|
12
|
+
* @param visual - Visual data containing image, video, or animation
|
|
13
|
+
* @param muted - Whether video should be muted (default: false)
|
|
14
|
+
* @param controls - Whether video should show controls (default: false)
|
|
15
|
+
* @param autoPlay - Whether video/animation should autoplay (default: false)
|
|
16
|
+
* @param visualSizes - Responsive size configuration for the visual
|
|
17
|
+
* @param fullPlayer - Whether video should use full player mode (default: false)
|
|
18
|
+
* @param loop - Whether video/animation should loop (default: false)
|
|
19
|
+
* @param loopDelay - Delay between loops in milliseconds
|
|
20
|
+
* @param analyticsContext - Analytics context for tracking
|
|
21
|
+
* @param componentLabel - Label for analytics tracking
|
|
22
|
+
* @param className - Additional CSS classes
|
|
23
|
+
* @param style - Additional inline styles
|
|
24
|
+
*
|
|
25
|
+
* @example Basic image
|
|
26
|
+
* ```tsx
|
|
27
|
+
* <Visual visual={imageVisual} className="w-full h-auto" />
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example Video with autoplay
|
|
31
|
+
* ```tsx
|
|
32
|
+
* <Visual
|
|
33
|
+
* visual={videoVisual}
|
|
34
|
+
* autoPlay
|
|
35
|
+
* muted
|
|
36
|
+
* loop
|
|
37
|
+
* className="w-full"
|
|
38
|
+
* />
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @example Animation with loop delay
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <Visual
|
|
44
|
+
* visual={animationVisual}
|
|
45
|
+
* autoPlay
|
|
46
|
+
* loop
|
|
47
|
+
* loopDelay={1000}
|
|
48
|
+
* />
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
4
51
|
export declare const Visual: React.FC<{
|
|
5
52
|
visual: IVisual;
|
|
6
53
|
} & IVisualProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisualComponent.d.ts","sourceRoot":"","sources":["../../src/components/VisualComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,CAqD/D,CAAC"}
|
|
1
|
+
{"version":3,"file":"VisualComponent.d.ts","sourceRoot":"","sources":["../../src/components/VisualComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,CAqD/D,CAAC"}
|
|
@@ -3,6 +3,53 @@ import { UnsupportedWarning } from '../utils/UnsupportedWarning';
|
|
|
3
3
|
import AnimationServer from './AnimationServer';
|
|
4
4
|
import ImageComponent from './ImageComponent';
|
|
5
5
|
import VideoComponent from './VideoComponent';
|
|
6
|
+
/**
|
|
7
|
+
* Visual component for rendering images, videos, and animations.
|
|
8
|
+
*
|
|
9
|
+
* Automatically selects the appropriate renderer based on the visual type:
|
|
10
|
+
* - Animations (Lottie) are rendered via AnimationServer
|
|
11
|
+
* - Videos are rendered via VideoComponent with Next.js optimization
|
|
12
|
+
* - Images are rendered via ImageComponent with Next.js Image optimization
|
|
13
|
+
*
|
|
14
|
+
* @param visual - Visual data containing image, video, or animation
|
|
15
|
+
* @param muted - Whether video should be muted (default: false)
|
|
16
|
+
* @param controls - Whether video should show controls (default: false)
|
|
17
|
+
* @param autoPlay - Whether video/animation should autoplay (default: false)
|
|
18
|
+
* @param visualSizes - Responsive size configuration for the visual
|
|
19
|
+
* @param fullPlayer - Whether video should use full player mode (default: false)
|
|
20
|
+
* @param loop - Whether video/animation should loop (default: false)
|
|
21
|
+
* @param loopDelay - Delay between loops in milliseconds
|
|
22
|
+
* @param analyticsContext - Analytics context for tracking
|
|
23
|
+
* @param componentLabel - Label for analytics tracking
|
|
24
|
+
* @param className - Additional CSS classes
|
|
25
|
+
* @param style - Additional inline styles
|
|
26
|
+
*
|
|
27
|
+
* @example Basic image
|
|
28
|
+
* ```tsx
|
|
29
|
+
* <Visual visual={imageVisual} className="w-full h-auto" />
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @example Video with autoplay
|
|
33
|
+
* ```tsx
|
|
34
|
+
* <Visual
|
|
35
|
+
* visual={videoVisual}
|
|
36
|
+
* autoPlay
|
|
37
|
+
* muted
|
|
38
|
+
* loop
|
|
39
|
+
* className="w-full"
|
|
40
|
+
* />
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @example Animation with loop delay
|
|
44
|
+
* ```tsx
|
|
45
|
+
* <Visual
|
|
46
|
+
* visual={animationVisual}
|
|
47
|
+
* autoPlay
|
|
48
|
+
* loop
|
|
49
|
+
* loopDelay={1000}
|
|
50
|
+
* />
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
6
53
|
export const Visual = ({ visual, muted, controls, autoPlay, visualSizes, fullPlayer, loop, loopDelay, analyticsContext, componentLabel, ...props }) => {
|
|
7
54
|
const { animation, image, video } = visual;
|
|
8
55
|
if (animation) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisualComponent.js","sourceRoot":"","sources":["../../src/components/VisualComponent.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAG9C,MAAM,CAAC,MAAM,MAAM,GAAiD,CAAC,EACnE,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,IAAI,EACJ,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC3C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,KAAC,eAAe,IACd,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,KAC1B,KAAK,GACT,CACH,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,KAAC,cAAc,IACb,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,KAC1B,KAAK,GACT,CACH,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,KAAM,KAAK,GAAI,CAAC;IAC/E,CAAC;IAED,OAAO,CACL,KAAC,kBAAkB,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,8CAE7C,CACtB,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"VisualComponent.js","sourceRoot":"","sources":["../../src/components/VisualComponent.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAG9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,MAAM,MAAM,GAAiD,CAAC,EACnE,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,IAAI,EACJ,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC3C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,KAAC,eAAe,IACd,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,KAC1B,KAAK,GACT,CACH,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,KAAC,cAAc,IACb,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,KAC1B,KAAK,GACT,CACH,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,KAAM,KAAK,GAAI,CAAC;IAC/E,CAAC;IAED,OAAO,CACL,KAAC,kBAAkB,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,8CAE7C,CACtB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -12,5 +12,13 @@ export interface TrackedLinkProps extends Omit<LinkProps<string>, 'href'>, Omit<
|
|
|
12
12
|
component?: React.ElementType;
|
|
13
13
|
children: React.ReactNode;
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Unified link component that handles:
|
|
17
|
+
* - All link types (internal, external, blank)
|
|
18
|
+
* - UTM parameter appending from URL search params
|
|
19
|
+
* - Click tracking integration
|
|
20
|
+
* - Uses Next.js Link for all URLs (handles absolute URLs correctly)
|
|
21
|
+
* - Uses href="#" for blank links
|
|
22
|
+
*/
|
|
15
23
|
export declare const TrackedLink: React.ForwardRefExoticComponent<TrackedLinkProps & React.RefAttributes<HTMLAnchorElement>>;
|
|
16
24
|
//# sourceMappingURL=TrackedLink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrackedLink.d.ts","sourceRoot":"","sources":["../../src/elements/TrackedLink.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EACrC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9E,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"TrackedLink.d.ts","sourceRoot":"","sources":["../../src/elements/TrackedLink.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EACrC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9E,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,4FA+GtB,CAAC"}
|
|
@@ -4,9 +4,18 @@ import { Slot } from '@radix-ui/react-slot';
|
|
|
4
4
|
import Link from 'next/link';
|
|
5
5
|
import { forwardRef, isValidElement, useCallback, useEffect, useState } from 'react';
|
|
6
6
|
import { useAnalytics } from '../analytics/useAnalytics';
|
|
7
|
+
/**
|
|
8
|
+
* Unified link component that handles:
|
|
9
|
+
* - All link types (internal, external, blank)
|
|
10
|
+
* - UTM parameter appending from URL search params
|
|
11
|
+
* - Click tracking integration
|
|
12
|
+
* - Uses Next.js Link for all URLs (handles absolute URLs correctly)
|
|
13
|
+
* - Uses href="#" for blank links
|
|
14
|
+
*/
|
|
7
15
|
export const TrackedLink = forwardRef(function TrackedLink({ href, componentType = 'Link', location, analyticsContext, linkText, appendUtmParams = true, children, onClick, asChild = false, component, prefetch, replace, scroll, shallow, passHref, locale, ...props }, ref) {
|
|
8
16
|
const { trackClick } = useAnalytics();
|
|
9
17
|
const [finalHref, setFinalHref] = useState(href || '#');
|
|
18
|
+
// Handle UTM parameter appending
|
|
10
19
|
useEffect(() => {
|
|
11
20
|
if (!href || href === '#') {
|
|
12
21
|
setFinalHref('#');
|
|
@@ -24,11 +33,13 @@ export const TrackedLink = forwardRef(function TrackedLink({ href, componentType
|
|
|
24
33
|
setFinalHref(href);
|
|
25
34
|
}
|
|
26
35
|
}, [href, appendUtmParams]);
|
|
36
|
+
// Get link text for tracking
|
|
27
37
|
const getLinkText = useCallback(() => {
|
|
28
38
|
if (linkText)
|
|
29
39
|
return linkText;
|
|
30
40
|
if (typeof children === 'string')
|
|
31
41
|
return children;
|
|
42
|
+
// Try to extract text from children
|
|
32
43
|
if (isValidElement(children)) {
|
|
33
44
|
const childrenElement = children;
|
|
34
45
|
const props = childrenElement.props;
|
|
@@ -39,12 +50,14 @@ export const TrackedLink = forwardRef(function TrackedLink({ href, componentType
|
|
|
39
50
|
return '';
|
|
40
51
|
}, [linkText, children]);
|
|
41
52
|
const handleClick = useCallback((event) => {
|
|
53
|
+
// Track the click if analytics context is provided
|
|
42
54
|
if (analyticsContext) {
|
|
43
55
|
trackClick(componentType, getLinkText(), analyticsContext, {
|
|
44
56
|
targetUrl: href || undefined,
|
|
45
57
|
location: location || undefined,
|
|
46
58
|
});
|
|
47
59
|
}
|
|
60
|
+
// Call the original onClick handler
|
|
48
61
|
onClick?.(event);
|
|
49
62
|
}, [analyticsContext, componentType, getLinkText, href, location, onClick, trackClick]);
|
|
50
63
|
const linkProps = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrackedLink.js","sourceRoot":"","sources":["../../src/elements/TrackedLink.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C,OAAO,IAAwB,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"TrackedLink.js","sourceRoot":"","sources":["../../src/elements/TrackedLink.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,10 @@ export function BackgroundMedia({ responsiveVisual, overlayOpacity, className, a
|
|
|
14
14
|
: undefined;
|
|
15
15
|
const isVideo = isVisualVideo(visual);
|
|
16
16
|
const isMobileVideo = isVisualVideo(mobileVisual);
|
|
17
|
-
return (_jsxs("div", { className: cn('absolute inset-0 overflow-hidden', className), children: [!hideVisual && (_jsx("div", { className: cn('size-full', (hideMobileVisual || mobileVisual) && 'max-laptop:hidden'), children: _jsx(Visual, { visual: visual, className: "size-full object-cover object-center",
|
|
17
|
+
return (_jsxs("div", { className: cn('absolute inset-0 overflow-hidden', className), children: [!hideVisual && (_jsx("div", { className: cn('size-full', (hideMobileVisual || mobileVisual) && 'max-laptop:hidden'), children: _jsx(Visual, { visual: visual, className: "size-full object-cover object-center",
|
|
18
|
+
// Videos should autoplay, be muted, and loop for backgrounds
|
|
19
|
+
autoPlay: isVideo, muted: isVideo, loop: isVideo, controls: false, analyticsContext: analyticsContext, componentLabel: componentLabel }) })), mobileVisual && !hideMobileVisual && (_jsx("div", { className: "size-full block tablet:hidden", children: _jsx(Visual, { visual: mobileVisual, className: "size-full object-cover object-center",
|
|
20
|
+
// Videos should autoplay, be muted, and loop for backgrounds
|
|
21
|
+
autoPlay: isMobileVideo, muted: isMobileVideo, loop: isMobileVideo, controls: false, analyticsContext: analyticsContext, componentLabel: componentLabel }) })), hasOverlay && _jsx("div", { className: "absolute inset-0", style: overlayStyle, "aria-hidden": "true" })] }));
|
|
18
22
|
}
|
|
19
23
|
//# sourceMappingURL=BackgroundMedia.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackgroundMedia.js","sourceRoot":"","sources":["../../src/framework/BackgroundMedia.tsx"],"names":[],"mappings":";AAAA,OAAO,EAGL,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAUjC,MAAM,UAAU,eAAe,CAAC,EAC9B,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,cAAc,GACO;IACrB,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC;IAEhF,MAAM,UAAU,GAAG,cAAc,IAAI,cAAc,GAAG,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,UAAU;QAC7B,CAAC,CAAC;YACE,eAAe,EAAE,iBAAiB,cAAc,GAAG,GAAG,GAAG;SAC1D;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,aAAa,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAElD,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,aAE9D,CAAC,UAAU,IAAI,CACd,cAAK,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,gBAAgB,IAAI,YAAY,CAAC,IAAI,mBAAmB,CAAC,YACxF,KAAC,MAAM,IACL,MAAM,EAAE,MAAM,EACd,SAAS,EAAC,sCAAsC,
|
|
1
|
+
{"version":3,"file":"BackgroundMedia.js","sourceRoot":"","sources":["../../src/framework/BackgroundMedia.tsx"],"names":[],"mappings":";AAAA,OAAO,EAGL,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAUjC,MAAM,UAAU,eAAe,CAAC,EAC9B,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,cAAc,GACO;IACrB,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC;IAEhF,MAAM,UAAU,GAAG,cAAc,IAAI,cAAc,GAAG,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,UAAU;QAC7B,CAAC,CAAC;YACE,eAAe,EAAE,iBAAiB,cAAc,GAAG,GAAG,GAAG;SAC1D;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,aAAa,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAElD,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,aAE9D,CAAC,UAAU,IAAI,CACd,cAAK,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,gBAAgB,IAAI,YAAY,CAAC,IAAI,mBAAmB,CAAC,YACxF,KAAC,MAAM,IACL,MAAM,EAAE,MAAM,EACd,SAAS,EAAC,sCAAsC;oBAChD,6DAA6D;oBAC7D,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,KAAK,EACf,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,GAC9B,GACE,CACP,EAGA,YAAY,IAAI,CAAC,gBAAgB,IAAI,CACpC,cAAK,SAAS,EAAC,+BAA+B,YAC5C,KAAC,MAAM,IACL,MAAM,EAAE,YAAY,EACpB,SAAS,EAAC,sCAAsC;oBAChD,6DAA6D;oBAC7D,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,KAAK,EACf,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,GAC9B,GACE,CACP,EAGA,UAAU,IAAI,cAAK,SAAS,EAAC,kBAAkB,EAAC,KAAK,EAAE,YAAY,iBAAc,MAAM,GAAG,IACvF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
export function ComponentErrorIndicator({ type, message, component, id, details, inline = false, isProduction = false, }) {
|
|
3
|
+
// Don't show errors in production
|
|
3
4
|
if (isProduction)
|
|
4
5
|
return null;
|
|
5
6
|
const bgColor = {
|
|
6
|
-
validation: '#f97316e6',
|
|
7
|
-
parsing: '#ef4444e6',
|
|
8
|
-
render: '#dc2626e6',
|
|
9
|
-
data: '#eab308e6',
|
|
7
|
+
validation: '#f97316e6', // orange-500 with 90% opacity
|
|
8
|
+
parsing: '#ef4444e6', // red-500 with 90% opacity
|
|
9
|
+
render: '#dc2626e6', // red-600 with 90% opacity
|
|
10
|
+
data: '#eab308e6', // yellow-500 with 90% opacity
|
|
10
11
|
}[type];
|
|
11
12
|
const icon = {
|
|
12
13
|
validation: '⚠️',
|
|
@@ -15,8 +16,10 @@ export function ComponentErrorIndicator({ type, message, component, id, details,
|
|
|
15
16
|
data: '⚡',
|
|
16
17
|
}[type];
|
|
17
18
|
if (inline) {
|
|
19
|
+
// Inline version for embedding within components
|
|
18
20
|
return (_jsxs("span", { className: "inline-flex items-center gap-1 rounded px-2 py-0.5 text-xs font-medium text-white", style: { backgroundColor: bgColor }, children: [_jsx("span", { children: icon }), _jsx("span", { children: message })] }));
|
|
19
21
|
}
|
|
22
|
+
// Full banner version
|
|
20
23
|
return (_jsx("div", { className: "relative z-40 text-white", style: { backgroundColor: bgColor }, children: _jsx("div", { className: "mx-auto max-w-7xl px-4 py-2", children: _jsxs("div", { className: "flex items-start gap-2 p-sm", children: [_jsx("span", { className: "text-lg", children: icon }), _jsxs("div", { className: "flex-1", children: [_jsxs("p", { className: "font-semibold", children: ["Component Error: ", component ? `${component}` : 'Unknown Component', id && ` (${id})`] }), _jsx("p", { className: "mt-0.5", children: message }), details !== undefined && details !== null && (_jsxs("details", { className: "mt-1", children: [_jsx("summary", { className: "cursor-pointer text-xs opacity-75 hover:opacity-100", children: "Show details" }), _jsx("pre", { className: "mt-1 overflow-auto rounded bg-black/20 p-2 text-xs", children: details instanceof Error
|
|
21
24
|
? details.stack || details.message
|
|
22
25
|
: typeof details === 'object'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentErrorIndicator.js","sourceRoot":"","sources":["../../src/framework/ComponentErrorIndicator.tsx"],"names":[],"mappings":";AAUA,MAAM,UAAU,uBAAuB,CAAC,EACtC,IAAI,EACJ,OAAO,EACP,SAAS,EACT,EAAE,EACF,OAAO,EACP,MAAM,GAAG,KAAK,EACd,YAAY,GAAG,KAAK,GACS;
|
|
1
|
+
{"version":3,"file":"ComponentErrorIndicator.js","sourceRoot":"","sources":["../../src/framework/ComponentErrorIndicator.tsx"],"names":[],"mappings":";AAUA,MAAM,UAAU,uBAAuB,CAAC,EACtC,IAAI,EACJ,OAAO,EACP,SAAS,EACT,EAAE,EACF,OAAO,EACP,MAAM,GAAG,KAAK,EACd,YAAY,GAAG,KAAK,GACS;IAC7B,kCAAkC;IAClC,IAAI,YAAY;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,OAAO,GAAG;QACd,UAAU,EAAE,WAAW,EAAE,8BAA8B;QACvD,OAAO,EAAE,WAAW,EAAE,2BAA2B;QACjD,MAAM,EAAE,WAAW,EAAE,2BAA2B;QAChD,IAAI,EAAE,WAAW,EAAE,8BAA8B;KAClD,CAAC,IAAI,CAAC,CAAC;IAER,MAAM,IAAI,GAAG;QACX,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,GAAG;KACV,CAAC,IAAI,CAAC,CAAC;IAER,IAAI,MAAM,EAAE,CAAC;QACX,iDAAiD;QACjD,OAAO,CACL,gBACE,SAAS,EAAC,mFAAmF,EAC7F,KAAK,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,aAEnC,yBAAO,IAAI,GAAQ,EACnB,yBAAO,OAAO,GAAQ,IACjB,CACR,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,OAAO,CACL,cAAK,SAAS,EAAC,0BAA0B,EAAC,KAAK,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,YAC3E,cAAK,SAAS,EAAC,6BAA6B,YAC1C,eAAK,SAAS,EAAC,6BAA6B,aAC1C,eAAM,SAAS,EAAC,SAAS,YAAE,IAAI,GAAQ,EACvC,eAAK,SAAS,EAAC,QAAQ,aACrB,aAAG,SAAS,EAAC,eAAe,kCACR,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,mBAAmB,EACjE,EAAE,IAAI,KAAK,EAAE,GAAG,IACf,EACJ,YAAG,SAAS,EAAC,QAAQ,YAAE,OAAO,GAAK,EAClC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,CAC5C,mBAAS,SAAS,EAAC,MAAM,aACvB,kBAAS,SAAS,EAAC,qDAAqD,6BAE9D,EACV,cAAK,SAAS,EAAC,oDAAoD,YAChE,OAAO,YAAY,KAAK;4CACvB,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO;4CAClC,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ;gDAC3B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gDAClC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GACjB,IACE,CACX,IACG,IACF,GACF,GACF,CACP,CAAC;AACJ,CAAC"}
|