@se-studio/core-ui 1.0.55 → 1.0.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/CMS_INFRASTRUCTURE.md +12 -17
  3. package/dist/CmsRendererConfig.d.ts +21 -42
  4. package/dist/CmsRendererConfig.d.ts.map +1 -1
  5. package/dist/analytics/types.d.ts +2 -1
  6. package/dist/analytics/types.d.ts.map +1 -1
  7. package/dist/analytics/useAnalytics.d.ts +2 -1
  8. package/dist/analytics/useAnalytics.d.ts.map +1 -1
  9. package/dist/analytics/useAnalytics.js +1 -0
  10. package/dist/analytics/useAnalytics.js.map +1 -1
  11. package/dist/app-helpers.d.ts +124 -0
  12. package/dist/app-helpers.d.ts.map +1 -0
  13. package/dist/app-helpers.js +246 -0
  14. package/dist/app-helpers.js.map +1 -0
  15. package/dist/components/ClientMonitor.d.ts.map +1 -1
  16. package/dist/components/ClientMonitor.js +5 -1
  17. package/dist/components/ClientMonitor.js.map +1 -1
  18. package/dist/components/CmsCollection.d.ts.map +1 -1
  19. package/dist/components/CmsCollection.js +9 -13
  20. package/dist/components/CmsCollection.js.map +1 -1
  21. package/dist/components/CmsComponent.d.ts.map +1 -1
  22. package/dist/components/CmsComponent.js +9 -13
  23. package/dist/components/CmsComponent.js.map +1 -1
  24. package/dist/components/CmsContent.d.ts +9 -32
  25. package/dist/components/CmsContent.d.ts.map +1 -1
  26. package/dist/components/CmsContent.js +15 -40
  27. package/dist/components/CmsContent.js.map +1 -1
  28. package/dist/components/CmsEmbeddedContent.d.ts.map +1 -1
  29. package/dist/components/CmsEmbeddedContent.js +3 -4
  30. package/dist/components/CmsEmbeddedContent.js.map +1 -1
  31. package/dist/components/CmsExternalComponent.d.ts.map +1 -1
  32. package/dist/components/CmsExternalComponent.js +9 -13
  33. package/dist/components/CmsExternalComponent.js.map +1 -1
  34. package/dist/components/banner/BannerManager.d.ts +2 -3
  35. package/dist/components/banner/BannerManager.d.ts.map +1 -1
  36. package/dist/components/banner/BannerManager.js +2 -2
  37. package/dist/components/banner/BannerManager.js.map +1 -1
  38. package/dist/components/banner/BannerTargeting.d.ts +2 -2
  39. package/dist/components/banner/BannerTargeting.d.ts.map +1 -1
  40. package/dist/components/banner/BannerTargeting.js +7 -6
  41. package/dist/components/banner/BannerTargeting.js.map +1 -1
  42. package/dist/elements/TrackedLink.d.ts +2 -1
  43. package/dist/elements/TrackedLink.d.ts.map +1 -1
  44. package/dist/elements/TrackedLink.js +12 -2
  45. package/dist/elements/TrackedLink.js.map +1 -1
  46. package/dist/index.d.ts +2 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/showcase/components/ShowcaseAllRenderPage.d.ts +2 -2
  51. package/dist/showcase/components/ShowcaseAllRenderPage.d.ts.map +1 -1
  52. package/dist/showcase/components/ShowcaseAllRenderPage.js +1 -2
  53. package/dist/showcase/components/ShowcaseAllRenderPage.js.map +1 -1
  54. package/dist/showcase/components/ShowcasePage.d.ts +1 -1
  55. package/dist/showcase/components/ShowcasePage.d.ts.map +1 -1
  56. package/dist/showcase/components/ShowcaseRenderPage.d.ts +2 -2
  57. package/dist/showcase/components/ShowcaseRenderPage.d.ts.map +1 -1
  58. package/dist/showcase/components/ShowcaseRenderPage.js +1 -3
  59. package/dist/showcase/components/ShowcaseRenderPage.js.map +1 -1
  60. package/dist/showcase/mockFactory.d.ts +2 -2
  61. package/dist/showcase/mockFactory.d.ts.map +1 -1
  62. package/dist/showcase/mockFactory.js +2 -2
  63. package/dist/showcase/mockFactory.js.map +1 -1
  64. package/dist/utils/buildPageMetadata.d.ts +17 -12
  65. package/dist/utils/buildPageMetadata.d.ts.map +1 -1
  66. package/dist/utils/buildPageMetadata.js +4 -1
  67. package/dist/utils/buildPageMetadata.js.map +1 -1
  68. package/dist/utils/componentUtils.d.ts +2 -6
  69. package/dist/utils/componentUtils.d.ts.map +1 -1
  70. package/dist/utils/componentUtils.js +10 -14
  71. package/dist/utils/componentUtils.js.map +1 -1
  72. package/package.json +7 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @se-studio/core-ui
2
2
 
3
+ ## 1.0.58
4
+
5
+ ### Patch Changes
6
+
7
+ - Bulk version bump: patch for all packages
8
+ - Updated dependencies
9
+ - @se-studio/contentful-rest-api@1.0.58
10
+ - @se-studio/core-data-types@1.0.58
11
+
12
+ ## 1.0.57
13
+
14
+ ### Patch Changes
15
+
16
+ - Bulk version bump: patch for all packages
17
+ - Updated dependencies
18
+ - @se-studio/contentful-rest-api@1.0.57
19
+ - @se-studio/core-data-types@1.0.57
20
+
21
+ ## 1.0.56
22
+
23
+ ### Patch Changes
24
+
25
+ - Bulk version bump: patch for all packages
26
+ - Updated dependencies
27
+ - @se-studio/contentful-rest-api@1.0.56
28
+ - @se-studio/core-data-types@1.0.56
29
+
3
30
  ## 1.0.55
4
31
 
5
32
  ### Patch Changes
@@ -110,9 +110,7 @@ export const rendererConfig = createCmsRendererConfig<MyProjectConfig>({
110
110
  },
111
111
  visualComponentRenderer: VisualRenderer,
112
112
  internalLinkRenderer: InternalLinkRenderer,
113
- // Show errors in development mode
114
- showUnknownTypeErrors: process.env.NODE_ENV === 'development',
115
- showRenderErrors: process.env.NODE_ENV === 'development',
113
+ buildInformation,
116
114
  });
117
115
  ```
118
116
 
@@ -180,10 +178,9 @@ import { mergeCmsRendererConfig } from "@se-studio/core-ui";
180
178
 
181
179
  const baseConfig = createCmsRendererConfig({ ... });
182
180
 
183
- // Preview config with all errors displayed
181
+ // Preview config: use buildInformation with isProduction: false to show errors
184
182
  export const previewConfig = mergeCmsRendererConfig(baseConfig, {
185
- showUnknownTypeErrors: true,
186
- showRenderErrors: true,
183
+ buildInformation: { ...baseConfig.buildInformation, isProduction: false },
187
184
  });
188
185
 
189
186
  // Use in preview routes
@@ -194,15 +191,13 @@ export const previewConfig = mergeCmsRendererConfig(baseConfig, {
194
191
 
195
192
  ```tsx
196
193
  const productionConfig = createCmsRendererConfig({
194
+ buildInformation: { ...buildInfo, isProduction: true },
197
195
  componentMap: { ... },
198
196
  collectionMap: { ... },
199
- showUnknownTypeErrors: false,
200
- showRenderErrors: false,
201
197
  });
202
198
 
203
199
  const developmentConfig = mergeCmsRendererConfig(productionConfig, {
204
- showUnknownTypeErrors: true,
205
- showRenderErrors: true,
200
+ buildInformation: { ...buildInfo, isProduction: false },
206
201
  });
207
202
 
208
203
  export const rendererConfig =
@@ -247,16 +242,17 @@ The main configuration type that bundles all renderer maps:
247
242
 
248
243
  ```tsx
249
244
  interface CmsRendererConfig<TConfig extends BaseCmsConfig> {
245
+ buildInformation: IBuildInformation;
250
246
  componentMap: ComponentMap<TConfig>;
251
247
  collectionMap: CollectionMap<TConfig>;
252
248
  externalComponentMap?: ExternalComponentMap<TConfig>;
253
249
  visualComponentRenderer?: VisualComponentRenderer<TConfig>;
254
250
  internalLinkRenderer?: InternalLinkRenderer<TConfig>;
255
- showUnknownTypeErrors?: boolean;
256
- showRenderErrors?: boolean;
257
251
  }
258
252
  ```
259
253
 
254
+ Error panels (unknown types, render errors) are shown when `!buildInformation.isProduction`.
255
+
260
256
  ### Context Types
261
257
 
262
258
  - `IPageContext<TConfig>`: Page-level context (article, page, tag links)
@@ -268,7 +264,7 @@ interface CmsRendererConfig<TConfig extends BaseCmsConfig> {
268
264
 
269
265
  ### Unknown Type Warnings
270
266
 
271
- In development mode, the infrastructure displays visual warnings for:
267
+ When not in production (`!buildInformation.isProduction`), the infrastructure displays visual warnings for:
272
268
  - Unmapped component/collection types
273
269
  - Rendering errors
274
270
  - Unused CMS properties
@@ -277,7 +273,7 @@ In development mode, the infrastructure displays visual warnings for:
277
273
 
278
274
  When a component/collection type isn't mapped:
279
275
  1. A warning is logged to console
280
- 2. In dev mode, an error panel is displayed
276
+ 2. When not in production, an error panel is displayed
281
277
  3. A generic fallback renderer is used
282
278
  4. The page continues to render (no crashes)
283
279
 
@@ -301,7 +297,7 @@ To migrate an existing project:
301
297
  1. Install core-ui: `pnpm add @se-studio/core-ui`
302
298
  2. Create ComponentMap and CollectionMap
303
299
  3. Replace direct component rendering with CmsContent
304
- 4. Test with `showUnknownTypeErrors={true}` to find missing mappings
300
+ 4. Use a non-production build (e.g. `buildInformation.isProduction: false`) to see error panels for missing mappings
305
301
 
306
302
  ## Examples
307
303
 
@@ -320,8 +316,7 @@ See the example apps in this monorepo for complete working implementations:
320
316
  - `externalComponentMap`: Map of external component types to renderers (optional)
321
317
  - `visualComponentRenderer`: Renderer for Visual content types (optional)
322
318
  - `internalLinkRenderer`: Renderer for Internal Link content types (optional)
323
- - `showUnknownTypeErrors`: Show error panels for unknown types (default: false)
324
- - `showRenderErrors`: Show error panels for rendering errors (default: false)
319
+ - `buildInformation`: Build config (isProduction, baseUrl, etc.). Error panels are shown when `!buildInformation.isProduction`
325
320
 
326
321
  ## Future Enhancements
327
322
 
@@ -5,13 +5,14 @@ import type { CollectionMap, CollectionRenderer, EmbeddedCollectionMap } from '.
5
5
  import type { ComponentMap, ComponentRenderer, EmbeddedComponentMap } from './components/CmsComponent';
6
6
  import type { InternalLinkRenderer, VisualComponentRenderer } from './components/CmsContent';
7
7
  import type { EmbeddedExternalComponentMap, ExternalComponentMap } from './components/CmsExternalComponent';
8
+ import type { IBuildInformation } from './utils/buildPageMetadata';
8
9
  export type CmsRendererTypes = {
9
- ComponentNameType: string;
10
- ComponentType: any;
11
- CollectionNameType: string;
12
- CollectionType: any;
13
- ExternalComponentNameType: string;
14
- ExternalComponentType: any;
10
+ componentNameType: string;
11
+ componentType: any;
12
+ collectionNameType: string;
13
+ collectionType: any;
14
+ externalComponentNameType: string;
15
+ externalComponentType: any;
15
16
  };
16
17
  /**
17
18
  * Configuration object that bundles all CMS renderer maps and display options.
@@ -22,7 +23,8 @@ export type CmsRendererTypes = {
22
23
  *
23
24
  * @example Basic configuration
24
25
  * ```tsx
25
- * const rendererConfig = createCmsRendererConfig<MyProjectConfig>({
26
+ * const rendererConfig = {
27
+ * buildInformation,
26
28
  * componentMap: {
27
29
  * "Hero": HeroComponent,
28
30
  * "CTA": CTAComponent,
@@ -32,25 +34,11 @@ export type CmsRendererTypes = {
32
34
  * "FAQs": FAQCollection,
33
35
  * "Related Articles": RelatedArticles,
34
36
  * },
35
- * showUnknownTypeErrors: process.env.NODE_ENV === 'development',
36
- * });
37
+ * // ... other required fields
38
+ * };
37
39
  * ```
38
40
  *
39
- * @example With all renderer types
40
- * ```tsx
41
- * const rendererConfig = createCmsRendererConfig<MyProjectConfig>({
42
- * componentMap: { ... },
43
- * collectionMap: { ... },
44
- * externalComponentMap: {
45
- * "Contact Form": ContactFormRenderer,
46
- * "Newsletter": NewsletterRenderer,
47
- * },
48
- * visualComponentRenderer: VisualRenderer,
49
- * internalLinkRenderer: InternalLinkRenderer,
50
- * showUnknownTypeErrors: true,
51
- * showRenderErrors: true,
52
- * });
53
- * ```
41
+ * Error panels (unknown types, render errors) are shown when `!buildInformation.isProduction`.
54
42
  */
55
43
  export interface CmsRendererConfig<TConfig extends CmsRendererTypes = CmsRendererTypes> {
56
44
  /**
@@ -65,8 +53,8 @@ export interface CmsRendererConfig<TConfig extends CmsRendererTypes = CmsRendere
65
53
  * }
66
54
  * ```
67
55
  */
68
- componentMap: ComponentMap<TConfig['ComponentNameType'], TConfig['ComponentType']>;
69
- embeddedComponentMap: EmbeddedComponentMap<TConfig['ComponentNameType'], TConfig['ComponentType']>;
56
+ componentMap: ComponentMap<TConfig['componentNameType'], TConfig['componentType']>;
57
+ embeddedComponentMap: EmbeddedComponentMap<TConfig['componentNameType'], TConfig['componentType']>;
70
58
  /**
71
59
  * Map of collection types to their renderers.
72
60
  * Each key should match a CollectionType from your CMS configuration.
@@ -79,8 +67,8 @@ export interface CmsRendererConfig<TConfig extends CmsRendererTypes = CmsRendere
79
67
  * }
80
68
  * ```
81
69
  */
82
- collectionMap: CollectionMap<TConfig['CollectionNameType'], TConfig['CollectionType']>;
83
- embeddedCollectionMap: EmbeddedCollectionMap<TConfig['CollectionNameType'], TConfig['CollectionType']>;
70
+ collectionMap: CollectionMap<TConfig['collectionNameType'], TConfig['collectionType']>;
71
+ embeddedCollectionMap: EmbeddedCollectionMap<TConfig['collectionNameType'], TConfig['collectionType']>;
84
72
  /**
85
73
  * Map of external component types to their renderers (optional).
86
74
  * Use this for third-party integrations, forms, widgets, etc.
@@ -93,8 +81,8 @@ export interface CmsRendererConfig<TConfig extends CmsRendererTypes = CmsRendere
93
81
  * }
94
82
  * ```
95
83
  */
96
- externalComponentMap: ExternalComponentMap<TConfig['ExternalComponentNameType'], TConfig['ExternalComponentType']>;
97
- embeddedExternalComponentMap: EmbeddedExternalComponentMap<TConfig['ExternalComponentNameType'], TConfig['ExternalComponentType']>;
84
+ externalComponentMap: ExternalComponentMap<TConfig['externalComponentNameType'], TConfig['externalComponentType']>;
85
+ embeddedExternalComponentMap: EmbeddedExternalComponentMap<TConfig['externalComponentNameType'], TConfig['externalComponentType']>;
98
86
  /**
99
87
  * Renderer for Visual content types (optional).
100
88
  * Use this to define how images, videos, and other visual assets are rendered.
@@ -136,19 +124,10 @@ export interface CmsRendererConfig<TConfig extends CmsRendererTypes = CmsRendere
136
124
  contentContext: IContentContext;
137
125
  }>>>;
138
126
  /**
139
- * Show error panels for unknown content types in development mode (default: false).
140
- * When true, displays a visual warning when a component/collection type is not mapped.
141
- *
142
- * Recommended: Set to `process.env.NODE_ENV === 'development'`
143
- */
144
- showUnknownTypeErrors: boolean;
145
- /**
146
- * Show error panels for rendering errors (default: false).
147
- * When true, displays error details when a component throws during rendering.
148
- *
149
- * Recommended: Set to `process.env.NODE_ENV === 'development'`
127
+ * Build configuration (isProduction, baseUrl, etc.).
128
+ * Error panels (unknown types, render errors) are shown when `!buildInformation.isProduction`.
150
129
  */
151
- showRenderErrors: boolean;
130
+ buildInformation: IBuildInformation;
152
131
  defaultComponentRenderer: ComponentRenderer<any>;
153
132
  defaultCollectionRenderer: CollectionRenderer<any>;
154
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CmsRendererConfig.d.ts","sourceRoot":"","sources":["../src/CmsRendererConfig.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kEAAkE,CAAC;AAC9F,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,KAAK,EACV,4BAA4B,EAC5B,oBAAoB,EACrB,MAAM,mCAAmC,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,GAAG,CAAC;IACpB,yBAAyB,EAAE,MAAM,CAAC;IAClC,qBAAqB,EAAE,GAAG,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB;IACpF;;;;;;;;;;;OAWG;IACH,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAEnF,oBAAoB,EAAE,oBAAoB,CACxC,OAAO,CAAC,mBAAmB,CAAC,EAC5B,OAAO,CAAC,eAAe,CAAC,CACzB,CAAC;IAEF;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvF,qBAAqB,EAAE,qBAAqB,CAC1C,OAAO,CAAC,oBAAoB,CAAC,EAC7B,OAAO,CAAC,gBAAgB,CAAC,CAC1B,CAAC;IAEF;;;;;;;;;;;OAWG;IACH,oBAAoB,EAAE,oBAAoB,CACxC,OAAO,CAAC,2BAA2B,CAAC,EACpC,OAAO,CAAC,uBAAuB,CAAC,CACjC,CAAC;IACF,4BAA4B,EAAE,4BAA4B,CACxD,OAAO,CAAC,2BAA2B,CAAC,EACpC,OAAO,CAAC,uBAAuB,CAAC,CACjC,CAAC;IAEF;;;;;;;;;;OAUG;IACH,uBAAuB,EAAE,uBAAuB,CAAC;IAEjD;;;;;;;;;;OAUG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;IAE3C;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,OAAO,CACxB,MAAM,CACJ,MAAM,EACN,KAAK,CAAC,EAAE,CAAC;QACP,WAAW,EAAE,GAAG,CAAC;QACjB,cAAc,EAAE,eAAe,CAAC;KACjC,CAAC,CACH,CACF,CAAC;IAEF;;;;;OAKG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;;;;OAKG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B,wBAAwB,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACjD,yBAAyB,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;CACpD"}
1
+ {"version":3,"file":"CmsRendererConfig.d.ts","sourceRoot":"","sources":["../src/CmsRendererConfig.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kEAAkE,CAAC;AAC9F,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,KAAK,EACV,4BAA4B,EAC5B,oBAAoB,EACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,GAAG,CAAC;IACpB,yBAAyB,EAAE,MAAM,CAAC;IAClC,qBAAqB,EAAE,GAAG,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB;IACpF;;;;;;;;;;;OAWG;IACH,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAEnF,oBAAoB,EAAE,oBAAoB,CACxC,OAAO,CAAC,mBAAmB,CAAC,EAC5B,OAAO,CAAC,eAAe,CAAC,CACzB,CAAC;IAEF;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvF,qBAAqB,EAAE,qBAAqB,CAC1C,OAAO,CAAC,oBAAoB,CAAC,EAC7B,OAAO,CAAC,gBAAgB,CAAC,CAC1B,CAAC;IAEF;;;;;;;;;;;OAWG;IACH,oBAAoB,EAAE,oBAAoB,CACxC,OAAO,CAAC,2BAA2B,CAAC,EACpC,OAAO,CAAC,uBAAuB,CAAC,CACjC,CAAC;IACF,4BAA4B,EAAE,4BAA4B,CACxD,OAAO,CAAC,2BAA2B,CAAC,EACpC,OAAO,CAAC,uBAAuB,CAAC,CACjC,CAAC;IAEF;;;;;;;;;;OAUG;IACH,uBAAuB,EAAE,uBAAuB,CAAC;IAEjD;;;;;;;;;;OAUG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;IAE3C;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,OAAO,CACxB,MAAM,CACJ,MAAM,EACN,KAAK,CAAC,EAAE,CAAC;QACP,WAAW,EAAE,GAAG,CAAC;QACjB,cAAc,EAAE,eAAe,CAAC;KACjC,CAAC,CACH,CACF,CAAC;IAEF;;;OAGG;IACH,gBAAgB,EAAE,iBAAiB,CAAC;IAEpC,wBAAwB,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACjD,yBAAyB,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;CACpD"}
@@ -1,4 +1,4 @@
1
- import type { IAnalyticsContext } from '@se-studio/core-data-types';
1
+ import type { IAnalyticsContext, ILinkTrackingInfo } from '@se-studio/core-data-types';
2
2
  /**
3
3
  * Properties for tracking a click event
4
4
  */
@@ -8,6 +8,7 @@ export interface ClickTrackingProperties extends IAnalyticsContext {
8
8
  targetUrl?: string;
9
9
  linkText: string;
10
10
  location?: string;
11
+ trackingInfo?: ILinkTrackingInfo;
11
12
  }
12
13
  /**
13
14
  * Properties for tracking a page view
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAErE;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAEjE;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACvD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAErE;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAEjE;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACvD"}
@@ -1,4 +1,4 @@
1
- import type { IAnalyticsContext } from '@se-studio/core-data-types';
1
+ import type { IAnalyticsContext, ILinkTrackingInfo } from '@se-studio/core-data-types';
2
2
  /**
3
3
  * Hook for accessing analytics functions.
4
4
  *
@@ -40,6 +40,7 @@ export declare function useAnalytics(): {
40
40
  trackClick: (componentType: string, linkText: string, analyticsContext: IAnalyticsContext, options?: {
41
41
  targetUrl?: string;
42
42
  location?: string;
43
+ trackingInfo?: ILinkTrackingInfo;
43
44
  }) => void;
44
45
  };
45
46
  //# sourceMappingURL=useAnalytics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAnalytics.d.ts","sourceRoot":"","sources":["../../src/analytics/useAnalytics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAKpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,YAAY;wBAIhB,MAAM,cAAc,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;qBAO7C,MAAM,YAAY,MAAM,oBAAoB,iBAAiB;gCAalD,MAAM,YACX,MAAM,oBACE,iBAAiB,YACzB;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;EAqBN"}
1
+ {"version":3,"file":"useAnalytics.d.ts","sourceRoot":"","sources":["../../src/analytics/useAnalytics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAKvF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,YAAY;wBAIhB,MAAM,cAAc,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;qBAO7C,MAAM,YAAY,MAAM,oBAAoB,iBAAiB;gCAalD,MAAM,YACX,MAAM,oBACE,iBAAiB,YACzB;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,iBAAiB,CAAC;KAClC;EAsBN"}
@@ -57,6 +57,7 @@ export function useAnalytics() {
57
57
  linkText,
58
58
  location: options?.location,
59
59
  targetUrl: options?.targetUrl,
60
+ trackingInfo: options?.trackingInfo,
60
61
  ...analyticsContext,
61
62
  };
62
63
  adapter.trackClick(properties);
@@ -1 +1 @@
1
- {"version":3,"file":"useAnalytics.js","sourceRoot":"","sources":["../../src/analytics/useAnalytics.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,KAAa,EAAE,UAAmC,EAAE,EAAE;QACrD,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,GAAW,EAAE,QAAgB,EAAE,gBAAmC,EAAE,EAAE;QACrE,MAAM,UAAU,GAA2B;YACzC,GAAG;YACH,QAAQ;YACR,GAAG,gBAAgB;SACpB,CAAC;QACF,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAC5B,CACE,aAAqB,EACrB,QAAgB,EAChB,gBAAmC,EACnC,OAGC,EACD,EAAE;QACF,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,UAAU,GAA4B;YAC1C,aAAa;YACb,GAAG;YACH,QAAQ;YACR,QAAQ,EAAE,OAAO,EAAE,QAAQ;YAC3B,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,GAAG,gBAAgB;SACpB,CAAC;QACF,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO;QACL,UAAU;QACV,SAAS;QACT,UAAU;KACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useAnalytics.js","sourceRoot":"","sources":["../../src/analytics/useAnalytics.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,KAAa,EAAE,UAAmC,EAAE,EAAE;QACrD,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,GAAW,EAAE,QAAgB,EAAE,gBAAmC,EAAE,EAAE;QACrE,MAAM,UAAU,GAA2B;YACzC,GAAG;YACH,QAAQ;YACR,GAAG,gBAAgB;SACpB,CAAC;QACF,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAC5B,CACE,aAAqB,EACrB,QAAgB,EAChB,gBAAmC,EACnC,OAIC,EACD,EAAE;QACF,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,UAAU,GAA4B;YAC1C,aAAa;YACb,GAAG;YACH,QAAQ;YACR,QAAQ,EAAE,OAAO,EAAE,QAAQ;YAC3B,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,YAAY,EAAE,OAAO,EAAE,YAAY;YACnC,GAAG,gBAAgB;SACpB,CAAC;QACF,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO;QACL,UAAU;QACV,SAAS;QACT,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * App-level helper functions for Contentful CMS integration.
3
+ *
4
+ * This module provides a factory function that creates commonly-used helper functions
5
+ * for Next.js apps using the Contentful REST API. These helpers wrap the low-level
6
+ * API functions with project-specific configuration.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { createAppHelpers } from '@se-studio/core-ui';
11
+ *
12
+ * const helpers = createAppHelpers({
13
+ * converterContext,
14
+ * getConfig: getContentfulConfig,
15
+ * buildOptions: (options) => buildFetchOptions(options, draftOnly),
16
+ * });
17
+ *
18
+ * export const {
19
+ * getAllPageLinks,
20
+ * getPageWithErrors,
21
+ * getPreviewFieldIdProps,
22
+ * // ... etc
23
+ * } = helpers;
24
+ * ```
25
+ */
26
+ import type { ArticleTypeFetchOptions, BaseConverterContext, CmsResponse, ContentfulConfig, FetchOptions, IContentfulCollection, IContentfulPerson, IFetchedTemplate, TagFetchOptions } from '@se-studio/contentful-rest-api';
27
+ import type { BaseCollectionContent, IArticleLink, IArticleTypeLink, IBanner, IBaseArticle, IBaseArticleType, IBaseCustomType, IBasePage, IBaseTag, IContentContext, IInternalLink, IPersonLink } from '@se-studio/core-data-types';
28
+ import type { IContent as IPreviewContent } from './utils/previewUtils';
29
+ /**
30
+ * Configuration for creating app helpers
31
+ */
32
+ export interface AppHelpersConfig {
33
+ /** The converter context with URL calculators and other project-specific settings */
34
+ converterContext: BaseConverterContext;
35
+ /** Function to get Contentful config based on preview mode */
36
+ getConfig: (preview: boolean) => ContentfulConfig;
37
+ /** Function to build fetch options with project-specific defaults */
38
+ buildOptions: (options?: Partial<FetchOptions>) => FetchOptions;
39
+ }
40
+ /**
41
+ * Return type for createAppHelpers factory function.
42
+ * Contains all the helper functions for fetching content and managing preview.
43
+ */
44
+ export interface AppHelpers<TPage, TArticle, TArticleType, TTag, TPerson, TCustomType, TCollection> {
45
+ getAllPageLinks: (options?: FetchOptions) => Promise<IInternalLink[]>;
46
+ getAllArticleLinks: (options?: FetchOptions) => Promise<IArticleLink[]>;
47
+ getAllTagLinks: (options?: FetchOptions) => Promise<IInternalLink[]>;
48
+ getAllPersonLinks: (options?: FetchOptions) => Promise<IInternalLink[]>;
49
+ getAllArticleTypeLinks: (options?: FetchOptions) => Promise<IArticleTypeLink[]>;
50
+ getRelatedArticles: (information: TCollection, contentContext: IContentContext, count: number | undefined, options?: FetchOptions) => Promise<IArticleLink[]>;
51
+ getRelatedPeople: (information: TCollection, contentContext: IContentContext, count: number, options?: FetchOptions) => Promise<IPersonLink[]>;
52
+ getBannersWithErrors: (options?: FetchOptions) => Promise<CmsResponse<IBanner[] | null>>;
53
+ getPageWithErrors: (slug: string, options?: FetchOptions) => Promise<CmsResponse<TPage | null>>;
54
+ getArticleWithErrors: (articleTypeSlug: string, slug: string, options?: FetchOptions) => Promise<CmsResponse<TArticle | null>>;
55
+ getArticleTypeWithErrors: (slug: string, options?: Partial<ArticleTypeFetchOptions>) => Promise<CmsResponse<TArticleType | null>>;
56
+ getTagWithErrors: (slug: string, options?: Partial<TagFetchOptions>) => Promise<CmsResponse<TTag | null>>;
57
+ getPersonWithErrors: (slug: string, options?: Partial<FetchOptions> & {
58
+ customType?: string;
59
+ }) => Promise<CmsResponse<TPerson | null>>;
60
+ getCustomTypeWithErrors: (slug: string, options?: FetchOptions) => Promise<CmsResponse<TCustomType | null>>;
61
+ getTemplateWithErrors: (cmsLabel: string, options?: FetchOptions) => Promise<CmsResponse<IFetchedTemplate | null>>;
62
+ getPreviewFieldIdProps: (id?: string, fieldId?: string) => {
63
+ 'data-contentful-entry-id': string | undefined;
64
+ 'data-contentful-asset-id': string | undefined;
65
+ 'data-contentful-field-id': string | undefined;
66
+ } | undefined;
67
+ getPreviewAssetIdProps: (assetId?: string) => {
68
+ 'data-contentful-entry-id': string | undefined;
69
+ 'data-contentful-asset-id': string | undefined;
70
+ 'data-contentful-field-id': string | undefined;
71
+ } | undefined;
72
+ getPreviewParentProps: (information: IPreviewContent | null | undefined) => {
73
+ 'data-contentful-entry-id': string | undefined;
74
+ 'data-contentful-asset-id': string | undefined;
75
+ 'data-contentful-field-id': string | undefined;
76
+ } | undefined;
77
+ getPreviewResponsiveVisualFieldIdProps: (id?: string, visualFieldId?: string, mobileVisualFieldId?: string) => {
78
+ visualPreviewProps: {
79
+ 'data-contentful-entry-id': string | undefined;
80
+ 'data-contentful-asset-id': string | undefined;
81
+ 'data-contentful-field-id': string | undefined;
82
+ } | undefined;
83
+ mobileVisualPreviewProps: {
84
+ 'data-contentful-entry-id': string | undefined;
85
+ 'data-contentful-asset-id': string | undefined;
86
+ 'data-contentful-field-id': string | undefined;
87
+ } | undefined;
88
+ };
89
+ }
90
+ /**
91
+ * Creates a set of helper functions for working with Contentful in Next.js apps.
92
+ *
93
+ * This factory function accepts project-specific configuration and returns
94
+ * a collection of pre-configured helper functions for:
95
+ * - Fetching links (pages, articles, tags, people, article types)
96
+ * - Fetching related content (articles, people)
97
+ * - Fetching full content (pages, articles, article types, tags, people, custom types, templates, banners)
98
+ * - Preview mode utilities (field IDs, asset IDs, parent props)
99
+ *
100
+ * All functions use the provided configuration to automatically handle:
101
+ * - Converter context for transforming Contentful entries
102
+ * - Config selection based on preview mode
103
+ * - Options building with project-specific defaults
104
+ * - Error logging and handling
105
+ *
106
+ * @param config - Configuration object with converter context, config getter, and options builder
107
+ * @returns Object containing all helper functions
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * const helpers = createAppHelpers({
112
+ * converterContext: myConverterContext,
113
+ * getConfig: getContentfulConfig,
114
+ * buildOptions: (options) => buildFetchOptions(options, draftOnly),
115
+ * });
116
+ *
117
+ * // Use the helpers
118
+ * const pages = await helpers.getAllPageLinks();
119
+ * const page = await helpers.getPageWithErrors('home');
120
+ * const previewProps = helpers.getPreviewFieldIdProps(id, 'title');
121
+ * ```
122
+ */
123
+ export declare function createAppHelpers<TPage extends IBasePage = IBasePage, TArticle extends IBaseArticle = IBaseArticle, TArticleType extends IBaseArticleType = IBaseArticleType, TTag extends IBaseTag = IBaseTag, TPerson extends IContentfulPerson = IContentfulPerson, TCustomType extends IBaseCustomType = IBaseCustomType, TCollection extends IContentfulCollection<BaseCollectionContent> = IContentfulCollection<BaseCollectionContent>>(config: AppHelpersConfig): AppHelpers<TPage, TArticle, TArticleType, TTag, TPerson, TCustomType, TCollection>;
124
+ //# sourceMappingURL=app-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-helpers.d.ts","sourceRoot":"","sources":["../src/app-helpers.ts"],"names":[],"mappings":"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"}