@se-studio/core-ui 1.0.49 → 1.0.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/analytics/adapters/GoogleTagManagerAdapter.d.ts.map +1 -1
- package/dist/analytics/adapters/GoogleTagManagerAdapter.js +14 -0
- package/dist/analytics/adapters/GoogleTagManagerAdapter.js.map +1 -1
- package/dist/cmsRegistration.d.ts +6 -0
- package/dist/cmsRegistration.d.ts.map +1 -1
- package/dist/cmsRegistration.js +16 -1
- package/dist/cmsRegistration.js.map +1 -1
- package/dist/components/StructuredData.d.ts.map +1 -1
- package/dist/components/StructuredData.js +65 -2
- package/dist/components/StructuredData.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/showcase/components/ShowcaseAllRenderPage.d.ts +3 -1
- package/dist/showcase/components/ShowcaseAllRenderPage.d.ts.map +1 -1
- package/dist/showcase/components/ShowcaseAllRenderPage.js +7 -3
- package/dist/showcase/components/ShowcaseAllRenderPage.js.map +1 -1
- package/dist/showcase/components/ShowcasePage.d.ts +3 -1
- package/dist/showcase/components/ShowcasePage.d.ts.map +1 -1
- package/dist/showcase/components/ShowcasePage.js +7 -3
- package/dist/showcase/components/ShowcasePage.js.map +1 -1
- package/dist/utils/buildPageMetadata.d.ts +5 -0
- package/dist/utils/buildPageMetadata.d.ts.map +1 -1
- package/dist/utils/buildPageMetadata.js +1 -1
- package/dist/utils/buildPageMetadata.js.map +1 -1
- package/dist/utils/structuredDataUtils.d.ts +85 -34
- package/dist/utils/structuredDataUtils.d.ts.map +1 -1
- package/dist/utils/structuredDataUtils.js +44 -39
- package/dist/utils/structuredDataUtils.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @se-studio/core-ui
|
|
2
2
|
|
|
3
|
+
## 1.0.51
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Bulk version bump: patch for all packages
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @se-studio/contentful-rest-api@1.0.51
|
|
10
|
+
- @se-studio/core-data-types@1.0.51
|
|
11
|
+
|
|
12
|
+
## 1.0.50
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Bulk version bump: patch for all packages
|
|
17
|
+
- Updated dependencies
|
|
18
|
+
- @se-studio/contentful-rest-api@1.0.50
|
|
19
|
+
- @se-studio/core-data-types@1.0.50
|
|
20
|
+
|
|
3
21
|
## 1.0.49
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleTagManagerAdapter.d.ts","sourceRoot":"","sources":["../../../src/analytics/adapters/GoogleTagManagerAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElG,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,SAAS,EAAE,OAAO,EAAE,CAAC;KACtB;CACF;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,uBAAwB,YAAW,gBAAgB;IAC9D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAyB;gBAE3B,MAAM,EAAE,sBAAsB;IAK1C;;OAEG;IACH,OAAO,CAAC,IAAI;IAMZ;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,UAAU;
|
|
1
|
+
{"version":3,"file":"GoogleTagManagerAdapter.d.ts","sourceRoot":"","sources":["../../../src/analytics/adapters/GoogleTagManagerAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElG,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,SAAS,EAAE,OAAO,EAAE,CAAC;KACtB;CACF;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,uBAAwB,YAAW,gBAAgB;IAC9D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAyB;gBAE3B,MAAM,EAAE,sBAAsB;IAK1C;;OAEG;IACH,OAAO,CAAC,IAAI;IAMZ;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,UAAU;IA2DlB;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY;IAkBnC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAapE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI;IAiBhE,UAAU,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI;CAYtD"}
|
|
@@ -39,6 +39,13 @@ export class GoogleTagManagerAdapter {
|
|
|
39
39
|
// IMPORTANT: Initialize consent BEFORE loading GTM
|
|
40
40
|
this.initializeConsentMode();
|
|
41
41
|
if (containerId) {
|
|
42
|
+
// Check if GTM script already exists
|
|
43
|
+
const existingScript = document.querySelector(`script[src*="googletagmanager.com/gtm.js?id=${containerId}"]`);
|
|
44
|
+
if (existingScript) {
|
|
45
|
+
console.warn(`[GTM Adapter] GTM script with ID ${containerId} already exists in document.`);
|
|
46
|
+
this.initialized = true;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
42
49
|
// Load GTM
|
|
43
50
|
window.dataLayer.push({ 'gtm.start': Date.now(), event: 'gtm.js' });
|
|
44
51
|
const script = document.createElement('script');
|
|
@@ -47,6 +54,13 @@ export class GoogleTagManagerAdapter {
|
|
|
47
54
|
document.head.appendChild(script);
|
|
48
55
|
}
|
|
49
56
|
else if (measurementId) {
|
|
57
|
+
// Check if GA4 script already exists
|
|
58
|
+
const existingScript = document.querySelector(`script[src*="googletagmanager.com/gtag/js?id=${measurementId}"]`);
|
|
59
|
+
if (existingScript) {
|
|
60
|
+
console.warn(`[GTM Adapter] GA4 script with ID ${measurementId} already exists in document.`);
|
|
61
|
+
this.initialized = true;
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
50
64
|
// Load GA4 directly (gtag.js)
|
|
51
65
|
const script = document.createElement('script');
|
|
52
66
|
script.async = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleTagManagerAdapter.js","sourceRoot":"","sources":["../../../src/analytics/adapters/GoogleTagManagerAdapter.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAiCb,MAAM,OAAO,uBAAuB;IAC1B,WAAW,GAAG,KAAK,CAAC;IACpB,MAAM,CAAyB;IAEvC,YAAY,MAA8B;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,IAAI,CAAC,GAAG,IAAe;QAC7B,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAC1C,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE;YAC9B,iBAAiB,EAAE,SAAS;YAC5B,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,SAAS;YACvB,kBAAkB,EAAE,SAAS;SAC9B,CAAC,CAAC;IACL,CAAC;IAEO,UAAU;QAChB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE9D,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAEnD,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,uBAAuB;QACvB,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QAE1C,mDAAmD;QACnD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW;YACX,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,GAAG,GAAG,8CAA8C,WAAW,EAAE,CAAC;YACzE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,aAAa,EAAE,CAAC;YACzB,8BAA8B;YAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,GAAG,GAAG,+CAA+C,aAAa,EAAE,CAAC;YAC5E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAElC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,OAAqB;QACjC,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;gBAC7B,iBAAiB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;aAC5D,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;gBAC7B,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;gBACtD,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;gBACxD,kBAAkB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;aAC/D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,UAAmC;QAC3D,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAEnC,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,CAAC;gBACb,KAAK;gBACL,GAAG,UAAU;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,UAAkC;QACvD,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAEnC,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,CAAC;gBACb,KAAK,EAAE,WAAW;gBAClB,aAAa,EAAE,GAAG;gBAClB,SAAS,EAAE,UAAU,CAAC,QAAQ;gBAC9B,UAAU,EAAE,UAAU,CAAC,KAAK;gBAC5B,SAAS,EAAE,UAAU,CAAC,IAAI;gBAC1B,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAmC;QAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAEnC,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,CAAC;gBACb,KAAK,EAAE,OAAO;gBACd,GAAG,UAAU;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"GoogleTagManagerAdapter.js","sourceRoot":"","sources":["../../../src/analytics/adapters/GoogleTagManagerAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,8 @@ export interface ComponentRegistration<TName extends string = string, TComponent
|
|
|
49
49
|
embeddedRenderer?: EmbeddedComponentRenderer<TComponent>;
|
|
50
50
|
/** Optional mock data configuration for the showcase */
|
|
51
51
|
mock?: MockData;
|
|
52
|
+
/** Optional flag to exclude from cms-showcase */
|
|
53
|
+
showcaseExclude?: boolean;
|
|
52
54
|
}
|
|
53
55
|
/**
|
|
54
56
|
* Registration for a CMS collection.
|
|
@@ -69,6 +71,8 @@ export interface CollectionRegistration<TName extends string = string, TCollecti
|
|
|
69
71
|
mock?: MockData;
|
|
70
72
|
/** Optional mock data configuration for the showcase (card fields) */
|
|
71
73
|
cardMock?: MockData;
|
|
74
|
+
/** Optional flag to exclude from cms-showcase */
|
|
75
|
+
showcaseExclude?: boolean;
|
|
72
76
|
}
|
|
73
77
|
/**
|
|
74
78
|
* Registration for an external component (forms, iframes, third-party widgets).
|
|
@@ -90,6 +94,7 @@ export declare function buildComponentMaps<TComponent extends ITyped>(registrati
|
|
|
90
94
|
embeddedComponentMap: Record<string, EmbeddedComponentRenderer<TComponent>>;
|
|
91
95
|
componentFieldsMap: Record<string, Set<string>>;
|
|
92
96
|
componentMockMap: Record<string, MockData>;
|
|
97
|
+
excludedComponents: string[];
|
|
93
98
|
};
|
|
94
99
|
/**
|
|
95
100
|
* Builds collection maps from an array of registrations.
|
|
@@ -101,6 +106,7 @@ export declare function buildCollectionMaps<TCollection extends ITyped>(registra
|
|
|
101
106
|
collectionCardFieldsMap: Record<string, Set<string>>;
|
|
102
107
|
collectionMockMap: Record<string, MockData>;
|
|
103
108
|
collectionCardMockMap: Record<string, MockData>;
|
|
109
|
+
excludedCollections: string[];
|
|
104
110
|
};
|
|
105
111
|
/**
|
|
106
112
|
* Builds external component maps from an array of registrations.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmsRegistration.d.ts","sourceRoot":"","sources":["../src/cmsRegistration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,KAAK,EACV,iCAAiC,EACjC,yBAAyB,EAC1B,MAAM,mCAAmC,CAAC;AAM3C,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC1F;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB,CACpC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,UAAU,SAAS,MAAM,GAAG,MAAM;IAElC,wDAAwD;IACxD,IAAI,EAAE,KAAK,CAAC;IACZ,2CAA2C;IAC3C,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,iFAAiF;IACjF,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACzD,wDAAwD;IACxD,IAAI,CAAC,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"cmsRegistration.d.ts","sourceRoot":"","sources":["../src/cmsRegistration.ts"],"names":[],"mappings":"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"}
|
package/dist/cmsRegistration.js
CHANGED
|
@@ -32,6 +32,7 @@ export function buildComponentMaps(registrations) {
|
|
|
32
32
|
const embeddedComponentMap = {};
|
|
33
33
|
const componentFieldsMap = {};
|
|
34
34
|
const componentMockMap = {};
|
|
35
|
+
const excludedComponents = [];
|
|
35
36
|
for (const reg of registrations) {
|
|
36
37
|
componentMap[reg.name] = reg.renderer;
|
|
37
38
|
componentFieldsMap[reg.name] = reg.usedFields;
|
|
@@ -41,8 +42,17 @@ export function buildComponentMaps(registrations) {
|
|
|
41
42
|
if (reg.mock) {
|
|
42
43
|
componentMockMap[reg.name] = reg.mock;
|
|
43
44
|
}
|
|
45
|
+
if (reg.showcaseExclude) {
|
|
46
|
+
excludedComponents.push(reg.name);
|
|
47
|
+
}
|
|
44
48
|
}
|
|
45
|
-
return {
|
|
49
|
+
return {
|
|
50
|
+
componentMap,
|
|
51
|
+
embeddedComponentMap,
|
|
52
|
+
componentFieldsMap,
|
|
53
|
+
componentMockMap,
|
|
54
|
+
excludedComponents,
|
|
55
|
+
};
|
|
46
56
|
}
|
|
47
57
|
/**
|
|
48
58
|
* Builds collection maps from an array of registrations.
|
|
@@ -54,6 +64,7 @@ export function buildCollectionMaps(registrations) {
|
|
|
54
64
|
const collectionCardFieldsMap = {};
|
|
55
65
|
const collectionMockMap = {};
|
|
56
66
|
const collectionCardMockMap = {};
|
|
67
|
+
const excludedCollections = [];
|
|
57
68
|
for (const reg of registrations) {
|
|
58
69
|
collectionMap[reg.name] = reg.renderer;
|
|
59
70
|
collectionFieldsMap[reg.name] = reg.usedFields;
|
|
@@ -69,6 +80,9 @@ export function buildCollectionMaps(registrations) {
|
|
|
69
80
|
if (reg.cardMock) {
|
|
70
81
|
collectionCardMockMap[reg.name] = reg.cardMock;
|
|
71
82
|
}
|
|
83
|
+
if (reg.showcaseExclude) {
|
|
84
|
+
excludedCollections.push(reg.name);
|
|
85
|
+
}
|
|
72
86
|
}
|
|
73
87
|
return {
|
|
74
88
|
collectionMap,
|
|
@@ -77,6 +91,7 @@ export function buildCollectionMaps(registrations) {
|
|
|
77
91
|
collectionCardFieldsMap,
|
|
78
92
|
collectionMockMap,
|
|
79
93
|
collectionCardMockMap,
|
|
94
|
+
excludedCollections,
|
|
80
95
|
};
|
|
81
96
|
}
|
|
82
97
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmsRegistration.js","sourceRoot":"","sources":["../src/cmsRegistration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"cmsRegistration.js","sourceRoot":"","sources":["../src/cmsRegistration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StructuredData.d.ts","sourceRoot":"","sources":["../../src/components/StructuredData.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"StructuredData.d.ts","sourceRoot":"","sources":["../../src/components/StructuredData.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAyB1E,MAAM,WAAW,mBAAmB;IAClC,4BAA4B;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACjC,iDAAiD;IACjD,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAwCD;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2ExD,CAAC"}
|
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import Mustache from 'mustache';
|
|
3
|
+
const ESCAPE_MAP = {
|
|
4
|
+
'"': '\\"',
|
|
5
|
+
'\\': '\\\\',
|
|
6
|
+
'\b': '\\b',
|
|
7
|
+
'\f': '\\f',
|
|
8
|
+
'\n': '\\n',
|
|
9
|
+
'\r': '\\r',
|
|
10
|
+
'\t': '\\t',
|
|
11
|
+
};
|
|
12
|
+
// Override Mustache's default escaping to be JSON-safe instead of HTML-safe
|
|
13
|
+
// This ensures that:
|
|
14
|
+
// 1. Double quotes are escaped (breaking JSON strings)
|
|
15
|
+
// 2. Backslashes are escaped
|
|
16
|
+
// 3. Control characters are escaped
|
|
17
|
+
// 4. Forward slashes are NOT escaped (keeping URLs readable)
|
|
18
|
+
Mustache.escape = (text) => {
|
|
19
|
+
if (text === null || text === undefined) {
|
|
20
|
+
return '';
|
|
21
|
+
}
|
|
22
|
+
return String(text).replace(/["\\\b\f\n\r\t]/g, (char) => ESCAPE_MAP[char] ?? char);
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Removes double slashes from URLs while preserving protocol.
|
|
26
|
+
* e.g. "https://example.com//path" -> "https://example.com/path"
|
|
27
|
+
* e.g. "/foo//bar" -> "/foo/bar"
|
|
28
|
+
*/
|
|
29
|
+
function cleanUrl(str) {
|
|
30
|
+
// Replace double slashes that are NOT preceded by a colon
|
|
31
|
+
// captures the character before the slash in group 1 ($1)
|
|
32
|
+
return str.replace(/([^:]\/)\/+/g, '$1');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Recursively traverses an object/array and cleans any URL strings found.
|
|
36
|
+
*/
|
|
37
|
+
function deepClean(obj) {
|
|
38
|
+
if (typeof obj === 'string') {
|
|
39
|
+
// Basic heuristic: if it looks like a URL (starts with http/https or /), clean it
|
|
40
|
+
if (obj.startsWith('http') || obj.startsWith('/')) {
|
|
41
|
+
return cleanUrl(obj);
|
|
42
|
+
}
|
|
43
|
+
return obj;
|
|
44
|
+
}
|
|
45
|
+
if (Array.isArray(obj)) {
|
|
46
|
+
return obj.map(deepClean);
|
|
47
|
+
}
|
|
48
|
+
if (typeof obj === 'object' && obj !== null) {
|
|
49
|
+
const result = {};
|
|
50
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
51
|
+
result[key] = deepClean(value);
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
return obj;
|
|
56
|
+
}
|
|
3
57
|
/**
|
|
4
58
|
* Renders JSON-LD structured data by processing Mustache templates.
|
|
5
59
|
*
|
|
@@ -54,10 +108,19 @@ export const StructuredData = ({ schemas, context }) => {
|
|
|
54
108
|
? validObjects[0]
|
|
55
109
|
: {
|
|
56
110
|
'@context': 'https://schema.org',
|
|
57
|
-
'@graph': validObjects
|
|
111
|
+
'@graph': validObjects.map((obj) => {
|
|
112
|
+
// Remove redundant @context from objects within the graph
|
|
113
|
+
if (typeof obj === 'object' && obj !== null && '@context' in obj) {
|
|
114
|
+
const { '@context': _, ...rest } = obj;
|
|
115
|
+
return rest;
|
|
116
|
+
}
|
|
117
|
+
return obj;
|
|
118
|
+
}),
|
|
58
119
|
};
|
|
120
|
+
// 4. Clean the output (remove double slashes in URLs)
|
|
121
|
+
const cleanedJson = deepClean(finalJson);
|
|
59
122
|
return (_jsx("script", { type: "application/ld+json",
|
|
60
123
|
// biome-ignore lint/security/noDangerouslySetInnerHtml: We need to set the inner HTML for the script tag
|
|
61
|
-
dangerouslySetInnerHTML: { __html: JSON.stringify(
|
|
124
|
+
dangerouslySetInnerHTML: { __html: JSON.stringify(cleanedJson) } }));
|
|
62
125
|
};
|
|
63
126
|
//# sourceMappingURL=StructuredData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StructuredData.js","sourceRoot":"","sources":["../../src/components/StructuredData.tsx"],"names":[],"mappings":";AACA,OAAO,QAAQ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"StructuredData.js","sourceRoot":"","sources":["../../src/components/StructuredData.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -82,7 +82,7 @@ export type { IContent } from './utils/previewUtils';
|
|
|
82
82
|
export { coreGetPreviewAssetIdProps, coreGetPreviewFieldIdProps, coreGetPreviewParentProps, coreGetPreviewProps, } from './utils/previewUtils';
|
|
83
83
|
export type { GenerateSitemapOptions, SitemapChangeFrequency, SitemapEntry, } from './utils/sitemap';
|
|
84
84
|
export { deduplicateSitemapEntries, generateNextSitemap, sortSitemapEntries, } from './utils/sitemap';
|
|
85
|
-
export type {
|
|
85
|
+
export type { StructuredDataContext } from './utils/structuredDataUtils';
|
|
86
86
|
export { buildStructuredDataContext } from './utils/structuredDataUtils';
|
|
87
87
|
export { UnsupportedWarning } from './utils/UnsupportedWarning';
|
|
88
88
|
export { DEFAULT_ALLOWED_UNUSED, UnusedChecker } from './utils/UnusedChecker';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,9 @@ interface ShowcaseAllRenderPageProps {
|
|
|
13
13
|
componentMockMap?: Record<string, MockData>;
|
|
14
14
|
collectionMockMap?: Record<string, MockData>;
|
|
15
15
|
collectionCardMockMap?: Record<string, MockData>;
|
|
16
|
+
excludedComponents?: string[];
|
|
17
|
+
excludedCollections?: string[];
|
|
16
18
|
}
|
|
17
|
-
export declare const ShowcaseAllRenderPage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, defaultState, contentContext, componentMockMap, collectionMockMap, collectionCardMockMap, }: ShowcaseAllRenderPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare const ShowcaseAllRenderPage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, defaultState, contentContext, componentMockMap, collectionMockMap, collectionCardMockMap, excludedComponents, excludedCollections, }: ShowcaseAllRenderPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
20
|
export {};
|
|
19
21
|
//# sourceMappingURL=ShowcaseAllRenderPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShowcaseAllRenderPage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,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;
|
|
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;IACjD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAQD,eAAO,MAAM,qBAAqB,GAAI,wOAanC,0BAA0B,4CAiF5B,CAAC"}
|
|
@@ -8,13 +8,17 @@ const DEFAULT_MOCK_CONTEXT = {
|
|
|
8
8
|
pageContext: {},
|
|
9
9
|
analyticsContext: { slug: 'cms-showcase-all' },
|
|
10
10
|
};
|
|
11
|
-
export const ShowcaseAllRenderPage = ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, defaultState, contentContext = DEFAULT_MOCK_CONTEXT, componentMockMap = {}, collectionMockMap = {}, collectionCardMockMap = {}, }) => {
|
|
11
|
+
export const ShowcaseAllRenderPage = ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, collectionCardFieldsMap, defaultState, contentContext = DEFAULT_MOCK_CONTEXT, componentMockMap = {}, collectionMockMap = {}, collectionCardMockMap = {}, excludedComponents = [], excludedCollections = [], }) => {
|
|
12
12
|
const mode = searchParams.mode || 'component';
|
|
13
13
|
const baseDefaultState = defaultState || DEFAULT_SHOWCASE_CONTROL_STATE;
|
|
14
14
|
// Get all types based on mode
|
|
15
15
|
const types = mode === 'component'
|
|
16
|
-
? Object.keys(rendererConfig.componentMap)
|
|
17
|
-
|
|
16
|
+
? Object.keys(rendererConfig.componentMap)
|
|
17
|
+
.filter((type) => !excludedComponents.includes(type))
|
|
18
|
+
.sort()
|
|
19
|
+
: Object.keys(rendererConfig.collectionMap)
|
|
20
|
+
.filter((type) => !excludedCollections.includes(type))
|
|
21
|
+
.sort();
|
|
18
22
|
return (_jsx("div", { className: "min-h-screen bg-[#f3f4f6]", children: types.map((type) => {
|
|
19
23
|
// Merge default state with mock data overrides for this type
|
|
20
24
|
const currentMockData = mode === 'component' ? componentMockMap[type] : collectionMockMap[type];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShowcaseAllRenderPage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAA6B,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ShowcaseAllRenderPage.js","sourceRoot":"","sources":["../../../src/showcase/components/ShowcaseAllRenderPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,9 @@ interface ShowcasePageProps {
|
|
|
9
9
|
foregroundColors: string[];
|
|
10
10
|
basePath: string;
|
|
11
11
|
defaultState?: ShowcaseControlState;
|
|
12
|
+
excludedComponents?: string[];
|
|
13
|
+
excludedCollections?: string[];
|
|
12
14
|
}
|
|
13
|
-
export declare const ShowcasePage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, }: ShowcasePageProps) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare const ShowcasePage: ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, excludedComponents, excludedCollections, }: ShowcasePageProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
16
|
export {};
|
|
15
17
|
//# sourceMappingURL=ShowcasePage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShowcasePage.d.ts","sourceRoot":"","sources":["../../../src/showcase/components/ShowcasePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;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;
|
|
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;IACpC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,eAAO,MAAM,YAAY,GAAI,6KAW1B,iBAAiB,4CA4CnB,CAAC"}
|
|
@@ -4,9 +4,13 @@ import { AllViewPanel } from './AllViewPanel';
|
|
|
4
4
|
import { ControlsWrapper } from './ControlsWrapper';
|
|
5
5
|
import { PreviewPanel } from './PreviewPanel';
|
|
6
6
|
import { TopBar } from './TopBar';
|
|
7
|
-
export const ShowcasePage = ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, }) => {
|
|
8
|
-
const componentTypes = Object.keys(rendererConfig.componentMap)
|
|
9
|
-
|
|
7
|
+
export const ShowcasePage = ({ searchParams, rendererConfig, componentFieldsMap, collectionFieldsMap, colorOptions, foregroundColors, basePath, defaultState, excludedComponents = [], excludedCollections = [], }) => {
|
|
8
|
+
const componentTypes = Object.keys(rendererConfig.componentMap)
|
|
9
|
+
.filter((type) => !excludedComponents.includes(type))
|
|
10
|
+
.sort();
|
|
11
|
+
const collectionTypes = Object.keys(rendererConfig.collectionMap)
|
|
12
|
+
.filter((type) => !excludedCollections.includes(type))
|
|
13
|
+
.sort();
|
|
10
14
|
const type = searchParams.type || componentTypes[0] || '';
|
|
11
15
|
const mode = searchParams.mode || 'component';
|
|
12
16
|
const view = (searchParams.view || 'single');
|
|
@@ -1 +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;
|
|
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;AAerD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,kBAAkB,GAAG,EAAE,EACvB,mBAAmB,GAAG,EAAE,GACN,EAAE,EAAE;IACtB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;SAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACpD,IAAI,EAAE,CAAC;IACV,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;SAC9D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACrD,IAAI,EAAE,CAAC;IAEV,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"}
|
|
@@ -75,5 +75,10 @@ export declare function calculateTitleAndDescription({ articleType, customType,
|
|
|
75
75
|
}): {
|
|
76
76
|
title: string;
|
|
77
77
|
description: string;
|
|
78
|
+
subtitle: string | undefined;
|
|
79
|
+
} | {
|
|
80
|
+
title: string;
|
|
81
|
+
description: string;
|
|
82
|
+
subtitle?: undefined;
|
|
78
83
|
};
|
|
79
84
|
//# sourceMappingURL=buildPageMetadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPageMetadata.d.ts","sourceRoot":"","sources":["../../src/utils/buildPageMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,QAAQ,EACT,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,YAAY,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;IACvB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,aAAa,GAAG,eAAe,GAAG,SAAS,CAAC,EAC9E,IAAI,EAAE,MAAM,EACZ,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,iBAAiB,EAC3E,OAAO,EAAE,iBAAiB,GACzB,QAAQ,CA8CV;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,WAAW,EACX,UAAU,EACV,GAAG,EACH,OAAO,GACR,EAAE;IACD,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB
|
|
1
|
+
{"version":3,"file":"buildPageMetadata.d.ts","sourceRoot":"","sources":["../../src/utils/buildPageMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,QAAQ,EACT,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,YAAY,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;IACvB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,aAAa,GAAG,eAAe,GAAG,SAAS,CAAC,EAC9E,IAAI,EAAE,MAAM,EACZ,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,iBAAiB,EAC3E,OAAO,EAAE,iBAAiB,GACzB,QAAQ,CA8CV;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,WAAW,EACX,UAAU,EACV,GAAG,EACH,OAAO,GACR,EAAE;IACD,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;;;;;;;;EA0BA"}
|
|
@@ -91,7 +91,7 @@ export function buildPageMetadata(model, path, { baseUrl, isProduction, customer
|
|
|
91
91
|
*/
|
|
92
92
|
export function calculateTitleAndDescription({ articleType, customType, tag, article, }) {
|
|
93
93
|
if (article) {
|
|
94
|
-
return { title: article.title, description: article.description };
|
|
94
|
+
return { title: article.title, description: article.description, subtitle: article.subtitle };
|
|
95
95
|
}
|
|
96
96
|
if (tag && articleType) {
|
|
97
97
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPageMetadata.js","sourceRoot":"","sources":["../../src/utils/buildPageMetadata.ts"],"names":[],"mappings":"AA6BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA8E,EAC9E,IAAY,EACZ,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAqB,EAC3E,OAA0B;IAE1B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAC3E,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;IAEpD,MAAM,eAAe,GAAG,aAAa,EAAE,EAAE,CAAC;IAC1C,MAAM,iBAAiB,GAAG,eAAe,CAAC,CAAC,CAAC,OAAO,eAAe,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAErF,MAAM,MAAM,GAAa;QACvB,YAAY,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC;QAC9B,eAAe,EAAE,eAAe,IAAI,YAAY;QAChD,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE;YACpC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,uBAAuB,EAAE;SACzD;QACD,WAAW,EAAE;YACX,KAAK,EAAE,eAAe,IAAI,YAAY;SACvC;QACD,UAAU,EAAE;YACV,SAAS,EAAE,IAAI;SAChB;QACD,MAAM,EAAE;YACN,KAAK,EAAE,OAAO,IAAI,KAAK;YACvB,MAAM,EAAE,OAAO,IAAI,KAAK;SACzB;QACD,KAAK;QACL,WAAW;QACX,OAAO,EAAE;YACP,IAAI,EAAE,qBAAqB;YAC3B,KAAK;YACL,WAAW,EAAE,WAAW,IAAI,SAAS;YACrC,MAAM,EAAE,iBAAiB;SAC1B;QACD,SAAS,EAAE;YACT,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,IAAI;YACT,KAAK;YACL,WAAW,EAAE,WAAW,IAAI,SAAS;YACrC,MAAM,EAAE,iBAAiB;SAC1B;QACD,KAAK,EAAE;YACL,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,YAAY;SAC7C;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAAC,EAC3C,WAAW,EACX,UAAU,EACV,GAAG,EACH,OAAO,GAMR;IACC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"buildPageMetadata.js","sourceRoot":"","sources":["../../src/utils/buildPageMetadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,75 @@
|
|
|
1
1
|
import type { IBaseModel } from '@se-studio/core-data-types';
|
|
2
2
|
import type { IBuildInformation } from './buildPageMetadata';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* @fileoverview Structured Data Context Builder
|
|
5
|
+
*
|
|
6
|
+
* This module builds minimal context objects for structured data (Schema.org JSON-LD) templates.
|
|
7
|
+
*
|
|
8
|
+
* ## Design Philosophy: Minimal Context
|
|
9
|
+
*
|
|
10
|
+
* This implementation follows a "minimal context" approach where:
|
|
11
|
+
* - **Static data lives in CMS templates** (organization name, address, contact info)
|
|
12
|
+
* - **Dynamic data lives in this context** (URLs, page titles, dates)
|
|
13
|
+
*
|
|
14
|
+
* ### Why This Approach?
|
|
15
|
+
*
|
|
16
|
+
* 1. **Separation of Concerns**: Content editors control static organizational data in the CMS,
|
|
17
|
+
* while deployment-specific values (like baseUrl) are injected at runtime.
|
|
18
|
+
*
|
|
19
|
+
* 2. **Simpler Templates**: Content editors work with straightforward variables like
|
|
20
|
+
* `{{baseUrl}}` and `{{page.title}}` rather than deeply nested objects.
|
|
21
|
+
*
|
|
22
|
+
* 3. **Easier Maintenance**: When organization details change, update the CMS template once
|
|
23
|
+
* rather than changing code and redeploying.
|
|
24
|
+
*
|
|
25
|
+
* 4. **Deployment Flexibility**: The same CMS templates work across dev/staging/prod with
|
|
26
|
+
* only the baseUrl changing.
|
|
27
|
+
*
|
|
28
|
+
* ### Example CMS Template
|
|
29
|
+
*
|
|
30
|
+
* ```json
|
|
31
|
+
* {
|
|
32
|
+
* "@context": "https://schema.org",
|
|
33
|
+
* "@type": "Organization",
|
|
34
|
+
* "name": "OM1",
|
|
35
|
+
* "url": "{{baseUrl}}",
|
|
36
|
+
* "logo": "{{baseUrl}}/logo.svg",
|
|
37
|
+
* "description": "Predict What's Next. Improve Outcomes.",
|
|
38
|
+
* "address": {
|
|
39
|
+
* "@type": "PostalAddress",
|
|
40
|
+
* "streetAddress": "31 St. James Ave Suite #1010",
|
|
41
|
+
* "addressLocality": "Boston"
|
|
42
|
+
* }
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* ### Available Context Variables
|
|
47
|
+
*
|
|
48
|
+
* - `baseUrl` - Site base URL (environment-specific)
|
|
49
|
+
* - `currentUrl` - Full URL of current page
|
|
50
|
+
* - `page.title` - Page title
|
|
51
|
+
* - `page.description` - Page description
|
|
52
|
+
* - `page.slug` - Page slug
|
|
53
|
+
* - `page.imageUrl` - Featured image URL (if available)
|
|
54
|
+
* - `page.breadcrumbs` - Array of breadcrumb objects
|
|
55
|
+
* - `article.*` - Article-specific fields (only for Article pages)
|
|
56
|
+
* - `person.*` - Person-specific fields (only for Person pages)
|
|
57
|
+
*
|
|
58
|
+
* @see {@link StructuredDataContext} for complete context interface
|
|
59
|
+
*/
|
|
60
|
+
/**
|
|
61
|
+
* Minimal context object for Mustache templates in structured data.
|
|
62
|
+
*
|
|
63
|
+
* Philosophy: Only truly dynamic values that change per page/deployment should be in this context.
|
|
64
|
+
* Static organizational data (company name, address, etc.) should be hardcoded in CMS templates.
|
|
65
|
+
*
|
|
66
|
+
* This keeps templates simpler and separates concerns:
|
|
67
|
+
* - Static data (organization details) → CMS templates
|
|
68
|
+
* - Dynamic data (URLs, page-specific info) → This context
|
|
6
69
|
*/
|
|
7
70
|
export interface StructuredDataContext {
|
|
8
71
|
baseUrl: string;
|
|
9
|
-
logoUrl: string;
|
|
10
72
|
currentUrl: string;
|
|
11
|
-
organization?: {
|
|
12
|
-
name: string;
|
|
13
|
-
url: string;
|
|
14
|
-
logo: string;
|
|
15
|
-
};
|
|
16
73
|
page: {
|
|
17
74
|
title: string;
|
|
18
75
|
description: string;
|
|
@@ -25,42 +82,36 @@ export interface StructuredDataContext {
|
|
|
25
82
|
last: boolean;
|
|
26
83
|
}>;
|
|
27
84
|
};
|
|
28
|
-
|
|
85
|
+
article?: {
|
|
29
86
|
title: string;
|
|
30
|
-
slug: string;
|
|
31
87
|
description: string;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
image?: string;
|
|
38
|
-
};
|
|
88
|
+
datePublished: string;
|
|
89
|
+
dateModified: string;
|
|
90
|
+
authorName?: string;
|
|
91
|
+
authorUrl?: string;
|
|
92
|
+
imageUrl?: string;
|
|
39
93
|
};
|
|
40
94
|
person?: {
|
|
41
95
|
name: string;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
linkedinUrl?: string;
|
|
45
|
-
twitterUrl?: string;
|
|
46
|
-
image?: string;
|
|
96
|
+
jobTitle?: string;
|
|
97
|
+
imageUrl?: string;
|
|
47
98
|
};
|
|
48
99
|
[key: string]: unknown;
|
|
49
100
|
}
|
|
50
101
|
/**
|
|
51
|
-
*
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
* Builds the comprehensive context object for structured data templates.
|
|
102
|
+
* Builds a minimal context object for structured data templates.
|
|
103
|
+
*
|
|
104
|
+
* Only includes truly dynamic values that change per page or deployment:
|
|
105
|
+
* - URLs (baseUrl varies by environment)
|
|
106
|
+
* - Page-specific content (title, description, images)
|
|
107
|
+
* - Content-type specific data (article dates, person info)
|
|
108
|
+
*
|
|
109
|
+
* Static organizational data (company name, address, etc.) should be
|
|
110
|
+
* hardcoded in CMS templates, not injected here.
|
|
61
111
|
*
|
|
62
112
|
* @param model - The CMS content model (Page, Article, Person, etc.)
|
|
63
|
-
* @param config -
|
|
113
|
+
* @param config - Build configuration (baseUrl and customerName)
|
|
114
|
+
* @param extraContext - Optional additional context properties
|
|
64
115
|
*/
|
|
65
|
-
export declare function buildStructuredDataContext(model: IBaseModel, config:
|
|
116
|
+
export declare function buildStructuredDataContext(model: IBaseModel, config: IBuildInformation, extraContext?: Record<string, unknown>): StructuredDataContext;
|
|
66
117
|
//# sourceMappingURL=structuredDataUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structuredDataUtils.d.ts","sourceRoot":"","sources":["../../src/utils/structuredDataUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,UAAU,EAAe,MAAM,4BAA4B,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D
|
|
1
|
+
{"version":3,"file":"structuredDataUtils.d.ts","sourceRoot":"","sources":["../../src/utils/structuredDataUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,UAAU,EAAe,MAAM,4BAA4B,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IAEpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IAGnB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KACpF,CAAC;IAGF,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAGF,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAGF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AA4DD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,iBAAiB,EACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,qBAAqB,CAyDvB"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Helper to build the breadcrumbs array.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Helper to build the breadcrumbs array for structured data.
|
|
3
|
+
* Splits the path and creates breadcrumb entries with positions.
|
|
4
|
+
*
|
|
5
|
+
* @param path - Current page path (e.g., '/about/team')
|
|
6
|
+
* @param baseUrl - Base URL for the site
|
|
7
|
+
* @param currentTitle - Title of the current page
|
|
8
|
+
* @param breadcrumbTitleOverride - Optional override for the last breadcrumb title
|
|
5
9
|
*/
|
|
6
10
|
function buildBreadcrumbs(path, baseUrl, currentTitle, breadcrumbTitleOverride) {
|
|
7
11
|
const segments = path.split('/').filter(Boolean);
|
|
@@ -10,16 +14,15 @@ function buildBreadcrumbs(path, baseUrl, currentTitle, breadcrumbTitleOverride)
|
|
|
10
14
|
breadcrumbs.push({
|
|
11
15
|
position: 1,
|
|
12
16
|
name: 'Home',
|
|
13
|
-
url: baseUrl
|
|
17
|
+
url: `${baseUrl}/`,
|
|
14
18
|
last: segments.length === 0,
|
|
15
19
|
});
|
|
16
20
|
let currentPath = '';
|
|
17
21
|
segments.forEach((segment, index) => {
|
|
18
22
|
currentPath += `/${segment}`;
|
|
19
23
|
const isLast = index === segments.length - 1;
|
|
20
|
-
// For intermediate segments,
|
|
21
|
-
//
|
|
22
|
-
// The last segment uses the page title or override.
|
|
24
|
+
// For intermediate segments, capitalize the slug
|
|
25
|
+
// For the last segment, use the page title or override
|
|
23
26
|
let name = segment.charAt(0).toUpperCase() + segment.slice(1).replace(/-/g, ' ');
|
|
24
27
|
if (isLast) {
|
|
25
28
|
name = breadcrumbTitleOverride || currentTitle;
|
|
@@ -27,33 +30,37 @@ function buildBreadcrumbs(path, baseUrl, currentTitle, breadcrumbTitleOverride)
|
|
|
27
30
|
breadcrumbs.push({
|
|
28
31
|
position: index + 2,
|
|
29
32
|
name: name,
|
|
30
|
-
url: `${baseUrl}${currentPath}
|
|
33
|
+
url: `${baseUrl}${currentPath}/`,
|
|
31
34
|
last: isLast,
|
|
32
35
|
});
|
|
33
36
|
});
|
|
34
37
|
return breadcrumbs;
|
|
35
38
|
}
|
|
36
39
|
/**
|
|
37
|
-
* Builds
|
|
40
|
+
* Builds a minimal context object for structured data templates.
|
|
41
|
+
*
|
|
42
|
+
* Only includes truly dynamic values that change per page or deployment:
|
|
43
|
+
* - URLs (baseUrl varies by environment)
|
|
44
|
+
* - Page-specific content (title, description, images)
|
|
45
|
+
* - Content-type specific data (article dates, person info)
|
|
46
|
+
*
|
|
47
|
+
* Static organizational data (company name, address, etc.) should be
|
|
48
|
+
* hardcoded in CMS templates, not injected here.
|
|
38
49
|
*
|
|
39
50
|
* @param model - The CMS content model (Page, Article, Person, etc.)
|
|
40
|
-
* @param config -
|
|
51
|
+
* @param config - Build configuration (baseUrl and customerName)
|
|
52
|
+
* @param extraContext - Optional additional context properties
|
|
41
53
|
*/
|
|
42
54
|
export function buildStructuredDataContext(model, config, extraContext) {
|
|
43
|
-
const { baseUrl
|
|
55
|
+
const { baseUrl } = config;
|
|
56
|
+
const path = model.href;
|
|
44
57
|
const currentUrl = `${baseUrl}${path}`;
|
|
45
58
|
const featuredImageId = model.featuredImage?.id;
|
|
46
59
|
const imageUrl = featuredImageId ? `${baseUrl}/og/${featuredImageId}.jpg` : undefined;
|
|
47
|
-
//
|
|
60
|
+
// Base context with page information
|
|
48
61
|
const context = {
|
|
49
|
-
baseUrl
|
|
50
|
-
logoUrl,
|
|
62
|
+
baseUrl: `${baseUrl}/`,
|
|
51
63
|
currentUrl,
|
|
52
|
-
organization: {
|
|
53
|
-
name: customerName,
|
|
54
|
-
url: baseUrl,
|
|
55
|
-
logo: logoUrl,
|
|
56
|
-
},
|
|
57
64
|
page: {
|
|
58
65
|
title: model.title,
|
|
59
66
|
description: model.description,
|
|
@@ -63,36 +70,34 @@ export function buildStructuredDataContext(model, config, extraContext) {
|
|
|
63
70
|
},
|
|
64
71
|
...extraContext,
|
|
65
72
|
};
|
|
66
|
-
//
|
|
73
|
+
// Article-specific context
|
|
67
74
|
if (model.type === 'Article') {
|
|
68
75
|
const article = model;
|
|
69
|
-
|
|
70
|
-
// Since IBaseArticle doesn't have explicit author field in the provided type definition,
|
|
71
|
-
// we will check if it exists or needs to be extended.
|
|
72
|
-
// For now, we map available fields.
|
|
73
|
-
context.information = {
|
|
76
|
+
context.article = {
|
|
74
77
|
title: article.title,
|
|
75
|
-
slug: article.slug,
|
|
76
78
|
description: article.description,
|
|
77
|
-
|
|
79
|
+
datePublished: article.date
|
|
80
|
+
? new Date(article.date).toISOString()
|
|
81
|
+
: article.lastUpdated
|
|
82
|
+
? new Date(article.lastUpdated).toISOString()
|
|
83
|
+
: new Date().toISOString(),
|
|
84
|
+
dateModified: article.lastUpdated
|
|
78
85
|
? new Date(article.lastUpdated).toISOString()
|
|
79
|
-
:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
86
|
+
: article.date
|
|
87
|
+
? new Date(article.date).toISOString()
|
|
88
|
+
: new Date().toISOString(),
|
|
89
|
+
imageUrl,
|
|
90
|
+
authorName: article.author?.name,
|
|
91
|
+
authorUrl: article.author?.href ? `${baseUrl}${article.author.href}` : undefined,
|
|
84
92
|
};
|
|
85
93
|
}
|
|
86
|
-
//
|
|
94
|
+
// Person-specific context
|
|
87
95
|
if (model.type === 'Person') {
|
|
88
96
|
const person = model;
|
|
89
97
|
context.person = {
|
|
90
|
-
name: person.title,
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
linkedinUrl: person.linkedIn || undefined,
|
|
94
|
-
// twitterUrl: person.twitter || undefined, // If available
|
|
95
|
-
image: imageUrl,
|
|
98
|
+
name: person.title,
|
|
99
|
+
jobTitle: person.jobTitle || undefined,
|
|
100
|
+
imageUrl,
|
|
96
101
|
};
|
|
97
102
|
}
|
|
98
103
|
return context;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structuredDataUtils.js","sourceRoot":"","sources":["../../src/utils/structuredDataUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"structuredDataUtils.js","sourceRoot":"","sources":["../../src/utils/structuredDataUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@se-studio/core-ui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.51",
|
|
4
4
|
"description": "Shared React UI component library with Tailwind CSS v4 for SE Studio applications",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -60,14 +60,14 @@
|
|
|
60
60
|
"html-entities": "^2.6.0",
|
|
61
61
|
"mustache": "4.2.0",
|
|
62
62
|
"tailwind-merge": "^3.4.0",
|
|
63
|
-
"@se-studio/contentful-rest-api": "1.0.
|
|
64
|
-
"@se-studio/core-data-types": "1.0.
|
|
63
|
+
"@se-studio/contentful-rest-api": "1.0.51",
|
|
64
|
+
"@se-studio/core-data-types": "1.0.51"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@biomejs/biome": "^2.3.11",
|
|
68
68
|
"@testing-library/jest-dom": "^6.9.1",
|
|
69
69
|
"@testing-library/react": "^16.3.1",
|
|
70
|
-
"@types/node": "^22.19.
|
|
70
|
+
"@types/node": "^22.19.5",
|
|
71
71
|
"@types/react": "^19.2.7",
|
|
72
72
|
"@types/react-dom": "^19.2.3",
|
|
73
73
|
"@vitejs/plugin-react": "^5.1.2",
|