@riverbankcms/sdk 0.6.0 → 0.7.0

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 (84) hide show
  1. package/README.md +239 -0
  2. package/dist/cli/index.js +22 -5
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/client/client.js +1 -1
  5. package/dist/client/client.js.map +1 -1
  6. package/dist/client/client.mjs +1 -1
  7. package/dist/client/client.mjs.map +1 -1
  8. package/dist/server/{Layout-BClXUTsd.d.mts → Layout-B7cvis7r.d.mts} +3 -3
  9. package/dist/server/{Layout-UXGjXv8M.d.ts → Layout-wBtJLTVX.d.ts} +3 -3
  10. package/dist/server/{chunk-Z5ZA6Q4D.mjs → chunk-74XUVNOO.mjs} +5 -3
  11. package/dist/server/chunk-74XUVNOO.mjs.map +1 -0
  12. package/dist/server/{chunk-PHS2KWJX.js → chunk-7BVRA5MY.js} +7 -52
  13. package/dist/server/chunk-7BVRA5MY.js.map +1 -0
  14. package/dist/server/{chunk-SQMGHEJM.mjs → chunk-7FIJSGHU.mjs} +2 -2
  15. package/dist/server/{chunk-SQMGHEJM.mjs.map → chunk-7FIJSGHU.mjs.map} +1 -1
  16. package/dist/server/chunk-ARNCLSQT.mjs +52 -0
  17. package/dist/server/chunk-ARNCLSQT.mjs.map +1 -0
  18. package/dist/server/chunk-BNQV3PXP.js +69 -0
  19. package/dist/server/chunk-BNQV3PXP.js.map +1 -0
  20. package/dist/server/{chunk-SSS7CCRR.js → chunk-EIVISR62.js} +15 -57
  21. package/dist/server/chunk-EIVISR62.js.map +1 -0
  22. package/dist/server/{chunk-I2D7KOEA.js → chunk-JWRNMNWI.js} +5 -3
  23. package/dist/server/chunk-JWRNMNWI.js.map +1 -0
  24. package/dist/server/{chunk-EOWGKCUZ.js → chunk-P7UVAMK6.js} +2 -2
  25. package/dist/server/{chunk-EOWGKCUZ.js.map → chunk-P7UVAMK6.js.map} +1 -1
  26. package/dist/server/{chunk-2HXHFSMI.mjs → chunk-RBJFXNDM.mjs} +6 -51
  27. package/dist/server/chunk-RBJFXNDM.mjs.map +1 -0
  28. package/dist/server/chunk-SWYWZT3L.mjs +69 -0
  29. package/dist/server/chunk-SWYWZT3L.mjs.map +1 -0
  30. package/dist/server/chunk-T26N3P26.js +52 -0
  31. package/dist/server/chunk-T26N3P26.js.map +1 -0
  32. package/dist/server/{chunk-PMHLZ3FW.mjs → chunk-YXA4GAAQ.mjs} +15 -57
  33. package/dist/server/chunk-YXA4GAAQ.mjs.map +1 -0
  34. package/dist/server/{components-DppHY5oD.d.ts → components-CICSJyp_.d.ts} +1 -1
  35. package/dist/server/{components-BmaJxgCV.d.mts → components-CMMwDXTW.d.mts} +1 -1
  36. package/dist/server/components.d.mts +2 -2
  37. package/dist/server/components.d.ts +2 -2
  38. package/dist/server/components.js +5 -3
  39. package/dist/server/components.js.map +1 -1
  40. package/dist/server/components.mjs +5 -3
  41. package/dist/server/index-BTwWvSBu.d.ts +130 -0
  42. package/dist/server/index-DI_qlYx3.d.mts +130 -0
  43. package/dist/server/index.js +2 -2
  44. package/dist/server/index.mjs +1 -1
  45. package/dist/server/{loadContent-BS-3wesN.d.mts → loadContent-C-YYUKQa.d.mts} +10 -2
  46. package/dist/server/{loadContent-Buvmudee.d.ts → loadContent-DmgpFcFC.d.ts} +10 -2
  47. package/dist/server/metadata.d.mts +8 -135
  48. package/dist/server/metadata.d.ts +8 -135
  49. package/dist/server/metadata.js +5 -65
  50. package/dist/server/metadata.js.map +1 -1
  51. package/dist/server/metadata.mjs +4 -64
  52. package/dist/server/metadata.mjs.map +1 -1
  53. package/dist/server/navigation.d.mts +80 -145
  54. package/dist/server/navigation.d.ts +80 -145
  55. package/dist/server/navigation.js +2 -10
  56. package/dist/server/navigation.js.map +1 -1
  57. package/dist/server/navigation.mjs +7 -15
  58. package/dist/server/next.d.mts +274 -0
  59. package/dist/server/next.d.ts +274 -0
  60. package/dist/server/next.js +150 -0
  61. package/dist/server/next.js.map +1 -0
  62. package/dist/server/next.mjs +150 -0
  63. package/dist/server/next.mjs.map +1 -0
  64. package/dist/server/rendering/server.d.mts +1 -1
  65. package/dist/server/rendering/server.d.ts +1 -1
  66. package/dist/server/rendering/server.js +5 -3
  67. package/dist/server/rendering/server.js.map +1 -1
  68. package/dist/server/rendering/server.mjs +5 -3
  69. package/dist/server/rendering.d.mts +4 -4
  70. package/dist/server/rendering.d.ts +4 -4
  71. package/dist/server/rendering.js +6 -4
  72. package/dist/server/rendering.js.map +1 -1
  73. package/dist/server/rendering.mjs +6 -4
  74. package/dist/server/server.d.mts +1 -1
  75. package/dist/server/server.d.ts +1 -1
  76. package/dist/server/server.js +3 -3
  77. package/dist/server/server.mjs +2 -2
  78. package/package.json +13 -1
  79. package/dist/server/chunk-2HXHFSMI.mjs.map +0 -1
  80. package/dist/server/chunk-I2D7KOEA.js.map +0 -1
  81. package/dist/server/chunk-PHS2KWJX.js.map +0 -1
  82. package/dist/server/chunk-PMHLZ3FW.mjs.map +0 -1
  83. package/dist/server/chunk-SSS7CCRR.js.map +0 -1
  84. package/dist/server/chunk-Z5ZA6Q4D.mjs.map +0 -1
@@ -0,0 +1,130 @@
1
+ import { a as LoadPageResult } from './loadPage-DP3nrHBi.js';
2
+ import { S as SiteResponse } from './types-BvcJU7zk.js';
3
+
4
+ /**
5
+ * Metadata generation helper for Next.js pages
6
+ *
7
+ * Generates SEO-optimized metadata from Builder page data for use in
8
+ * Next.js generateMetadata() functions.
9
+ */
10
+
11
+ /**
12
+ * Next.js Metadata type
13
+ * Simplified version to avoid requiring Next.js as a dependency
14
+ */
15
+ type Metadata = {
16
+ title?: string;
17
+ description?: string;
18
+ alternates?: {
19
+ canonical?: string;
20
+ };
21
+ openGraph?: {
22
+ title?: string;
23
+ description?: string;
24
+ url?: string;
25
+ siteName?: string;
26
+ type?: string;
27
+ images?: Array<{
28
+ url: string;
29
+ alt?: string;
30
+ }>;
31
+ };
32
+ twitter?: {
33
+ card?: string;
34
+ title?: string;
35
+ description?: string;
36
+ images?: string[];
37
+ };
38
+ robots?: {
39
+ index?: boolean;
40
+ follow?: boolean;
41
+ };
42
+ verification?: {
43
+ google?: string;
44
+ };
45
+ };
46
+ type PageMetadataInput = {
47
+ /**
48
+ * Page data from loadPage() or custom page object
49
+ */
50
+ page: LoadPageResult['page'] | {
51
+ name: string;
52
+ purpose?: string;
53
+ };
54
+ /**
55
+ * Site data from client.getSite()
56
+ */
57
+ site: SiteResponse['site'];
58
+ /**
59
+ * Current URL path (e.g., '/about', '/blog/post-1')
60
+ */
61
+ path: string;
62
+ /**
63
+ * Full site URL for canonical and OG URLs
64
+ * Example: 'https://example.com'
65
+ */
66
+ siteUrl: string;
67
+ /**
68
+ * Optional custom metadata overrides
69
+ */
70
+ overrides?: {
71
+ title?: string;
72
+ description?: string;
73
+ ogImage?: string;
74
+ canonicalUrl?: string;
75
+ robots?: {
76
+ index?: boolean;
77
+ follow?: boolean;
78
+ };
79
+ };
80
+ /**
81
+ * Optional Google site verification token
82
+ */
83
+ googleSiteVerification?: string;
84
+ };
85
+ /**
86
+ * Generate Next.js Metadata object from Builder page data
87
+ *
88
+ * @example
89
+ * ```tsx
90
+ * import { generatePageMetadata } from '@riverbankcms/sdk/metadata';
91
+ * import { loadPage } from '@riverbankcms/sdk';
92
+ *
93
+ * export async function generateMetadata({ params }) {
94
+ * const pageData = await loadPage({ client, siteId, path: params.slug });
95
+ * const siteData = await client.getSite({ id: siteId });
96
+ *
97
+ * return generatePageMetadata({
98
+ * page: pageData.page,
99
+ * site: siteData.site,
100
+ * path: params.slug,
101
+ * siteUrl: 'https://example.com',
102
+ * });
103
+ * }
104
+ * ```
105
+ */
106
+ declare function generatePageMetadata(input: PageMetadataInput): Metadata;
107
+ /**
108
+ * Generate metadata for preview/staging environments
109
+ *
110
+ * This helper adds noindex/nofollow robots tags to prevent search engines
111
+ * from indexing preview or staging URLs.
112
+ *
113
+ * @example
114
+ * ```tsx
115
+ * export async function generateMetadata({ params }) {
116
+ * const pageData = await loadPage({ client, siteId, path: params.slug });
117
+ * const isPreview = process.env.VERCEL_ENV !== 'production';
118
+ *
119
+ * return generatePreviewMetadata({
120
+ * page: pageData.page,
121
+ * site: siteData.site,
122
+ * path: params.slug,
123
+ * siteUrl: 'https://example.com',
124
+ * });
125
+ * }
126
+ * ```
127
+ */
128
+ declare function generatePreviewMetadata(input: PageMetadataInput): Metadata;
129
+
130
+ export { type Metadata as M, type PageMetadataInput as P, generatePreviewMetadata as a, generatePageMetadata as g };
@@ -0,0 +1,130 @@
1
+ import { a as LoadPageResult } from './loadPage-B8mQUUSo.mjs';
2
+ import { S as SiteResponse } from './types-1cLz0vnq.mjs';
3
+
4
+ /**
5
+ * Metadata generation helper for Next.js pages
6
+ *
7
+ * Generates SEO-optimized metadata from Builder page data for use in
8
+ * Next.js generateMetadata() functions.
9
+ */
10
+
11
+ /**
12
+ * Next.js Metadata type
13
+ * Simplified version to avoid requiring Next.js as a dependency
14
+ */
15
+ type Metadata = {
16
+ title?: string;
17
+ description?: string;
18
+ alternates?: {
19
+ canonical?: string;
20
+ };
21
+ openGraph?: {
22
+ title?: string;
23
+ description?: string;
24
+ url?: string;
25
+ siteName?: string;
26
+ type?: string;
27
+ images?: Array<{
28
+ url: string;
29
+ alt?: string;
30
+ }>;
31
+ };
32
+ twitter?: {
33
+ card?: string;
34
+ title?: string;
35
+ description?: string;
36
+ images?: string[];
37
+ };
38
+ robots?: {
39
+ index?: boolean;
40
+ follow?: boolean;
41
+ };
42
+ verification?: {
43
+ google?: string;
44
+ };
45
+ };
46
+ type PageMetadataInput = {
47
+ /**
48
+ * Page data from loadPage() or custom page object
49
+ */
50
+ page: LoadPageResult['page'] | {
51
+ name: string;
52
+ purpose?: string;
53
+ };
54
+ /**
55
+ * Site data from client.getSite()
56
+ */
57
+ site: SiteResponse['site'];
58
+ /**
59
+ * Current URL path (e.g., '/about', '/blog/post-1')
60
+ */
61
+ path: string;
62
+ /**
63
+ * Full site URL for canonical and OG URLs
64
+ * Example: 'https://example.com'
65
+ */
66
+ siteUrl: string;
67
+ /**
68
+ * Optional custom metadata overrides
69
+ */
70
+ overrides?: {
71
+ title?: string;
72
+ description?: string;
73
+ ogImage?: string;
74
+ canonicalUrl?: string;
75
+ robots?: {
76
+ index?: boolean;
77
+ follow?: boolean;
78
+ };
79
+ };
80
+ /**
81
+ * Optional Google site verification token
82
+ */
83
+ googleSiteVerification?: string;
84
+ };
85
+ /**
86
+ * Generate Next.js Metadata object from Builder page data
87
+ *
88
+ * @example
89
+ * ```tsx
90
+ * import { generatePageMetadata } from '@riverbankcms/sdk/metadata';
91
+ * import { loadPage } from '@riverbankcms/sdk';
92
+ *
93
+ * export async function generateMetadata({ params }) {
94
+ * const pageData = await loadPage({ client, siteId, path: params.slug });
95
+ * const siteData = await client.getSite({ id: siteId });
96
+ *
97
+ * return generatePageMetadata({
98
+ * page: pageData.page,
99
+ * site: siteData.site,
100
+ * path: params.slug,
101
+ * siteUrl: 'https://example.com',
102
+ * });
103
+ * }
104
+ * ```
105
+ */
106
+ declare function generatePageMetadata(input: PageMetadataInput): Metadata;
107
+ /**
108
+ * Generate metadata for preview/staging environments
109
+ *
110
+ * This helper adds noindex/nofollow robots tags to prevent search engines
111
+ * from indexing preview or staging URLs.
112
+ *
113
+ * @example
114
+ * ```tsx
115
+ * export async function generateMetadata({ params }) {
116
+ * const pageData = await loadPage({ client, siteId, path: params.slug });
117
+ * const isPreview = process.env.VERCEL_ENV !== 'production';
118
+ *
119
+ * return generatePreviewMetadata({
120
+ * page: pageData.page,
121
+ * site: siteData.site,
122
+ * path: params.slug,
123
+ * siteUrl: 'https://example.com',
124
+ * });
125
+ * }
126
+ * ```
127
+ */
128
+ declare function generatePreviewMetadata(input: PageMetadataInput): Metadata;
129
+
130
+ export { type Metadata as M, type PageMetadataInput as P, generatePreviewMetadata as a, generatePageMetadata as g };
@@ -5,7 +5,7 @@ var _chunkGERCMTPQjs = require('./chunk-GERCMTPQ.js');
5
5
 
6
6
 
7
7
 
8
- var _chunkEOWGKCUZjs = require('./chunk-EOWGKCUZ.js');
8
+ var _chunkP7UVAMK6js = require('./chunk-P7UVAMK6.js');
9
9
  require('./chunk-DGUM43GV.js');
10
10
 
11
11
  // ../api/src/aiPlayground.ts
@@ -101,5 +101,5 @@ var MultiPageUpdateResponse = _zod.z.object({
101
101
 
102
102
 
103
103
 
104
- exports.API_ENDPOINTS = _chunkEOWGKCUZjs.API_ENDPOINTS; exports.SYSTEM_BLOCK_KINDS = _chunkGERCMTPQjs.SYSTEM_BLOCK_KINDS; exports.buildEndpointURL = _chunkEOWGKCUZjs.buildEndpointURL; exports.createRiverbankClient = _chunkEOWGKCUZjs.createRiverbankClient;
104
+ exports.API_ENDPOINTS = _chunkP7UVAMK6js.API_ENDPOINTS; exports.SYSTEM_BLOCK_KINDS = _chunkGERCMTPQjs.SYSTEM_BLOCK_KINDS; exports.buildEndpointURL = _chunkP7UVAMK6js.buildEndpointURL; exports.createRiverbankClient = _chunkP7UVAMK6js.createRiverbankClient;
105
105
  //# sourceMappingURL=index.js.map
@@ -5,7 +5,7 @@ import {
5
5
  API_ENDPOINTS,
6
6
  buildEndpointURL,
7
7
  createRiverbankClient
8
- } from "./chunk-SQMGHEJM.mjs";
8
+ } from "./chunk-7FIJSGHU.mjs";
9
9
  import "./chunk-BJTO5JO5.mjs";
10
10
 
11
11
  // ../api/src/aiPlayground.ts
@@ -1,6 +1,6 @@
1
1
  import { T as Theme } from './types-Dsu9wsUh.mjs';
2
2
  import './schema-Z6-afHJG.mjs';
3
- import { R as RiverbankClient } from './types-1cLz0vnq.mjs';
3
+ import { R as RiverbankClient, S as SiteResponse } from './types-1cLz0vnq.mjs';
4
4
  import { P as PageProps } from './loadPage-B8mQUUSo.mjs';
5
5
  import { R as ResolvedBlockData } from './types-CbagRQ_7.mjs';
6
6
 
@@ -11,6 +11,10 @@ import { R as ResolvedBlockData } from './types-CbagRQ_7.mjs';
11
11
  * a page or a content entry.
12
12
  */
13
13
 
14
+ /**
15
+ * Site data included in content results for metadata generation.
16
+ */
17
+ type SiteData = SiteResponse['site'];
14
18
  type LoadContentParams = {
15
19
  client: RiverbankClient;
16
20
  siteId: string;
@@ -56,6 +60,8 @@ type PageContentResult = {
56
60
  siteId: string;
57
61
  /** Pre-fetched block data for data loaders */
58
62
  resolvedData: ResolvedBlockData;
63
+ /** Site data for metadata generation */
64
+ site: SiteData;
59
65
  };
60
66
  /**
61
67
  * Result when path resolves to a content entry
@@ -76,6 +82,8 @@ type EntryContentResult = {
76
82
  theme: Theme;
77
83
  /** Site ID */
78
84
  siteId: string;
85
+ /** Site data for metadata generation */
86
+ site: SiteData;
79
87
  };
80
88
  /**
81
89
  * Discriminated union result from loadContent
@@ -150,4 +158,4 @@ declare function isEntryContent(result: LoadContentResult): result is EntryConte
150
158
  */
151
159
  declare function loadContent(params: LoadContentParams): Promise<LoadContentResult>;
152
160
 
153
- export { type ContentEntryData as C, type EntryContentResult as E, type LoadContentParams as L, type PageContentResult as P, isEntryContent as a, type LoadContentResult as b, isPageContent as i, loadContent as l };
161
+ export { type ContentEntryData as C, type EntryContentResult as E, type LoadContentParams as L, type PageContentResult as P, type SiteData as S, isEntryContent as a, type LoadContentResult as b, isPageContent as i, loadContent as l };
@@ -1,6 +1,6 @@
1
1
  import { T as Theme } from './types-CVykEqXN.js';
2
2
  import './schema-Z6-afHJG.js';
3
- import { R as RiverbankClient } from './types-BvcJU7zk.js';
3
+ import { R as RiverbankClient, S as SiteResponse } from './types-BvcJU7zk.js';
4
4
  import { P as PageProps } from './loadPage-DP3nrHBi.js';
5
5
  import { R as ResolvedBlockData } from './types-DuQCNVV0.js';
6
6
 
@@ -11,6 +11,10 @@ import { R as ResolvedBlockData } from './types-DuQCNVV0.js';
11
11
  * a page or a content entry.
12
12
  */
13
13
 
14
+ /**
15
+ * Site data included in content results for metadata generation.
16
+ */
17
+ type SiteData = SiteResponse['site'];
14
18
  type LoadContentParams = {
15
19
  client: RiverbankClient;
16
20
  siteId: string;
@@ -56,6 +60,8 @@ type PageContentResult = {
56
60
  siteId: string;
57
61
  /** Pre-fetched block data for data loaders */
58
62
  resolvedData: ResolvedBlockData;
63
+ /** Site data for metadata generation */
64
+ site: SiteData;
59
65
  };
60
66
  /**
61
67
  * Result when path resolves to a content entry
@@ -76,6 +82,8 @@ type EntryContentResult = {
76
82
  theme: Theme;
77
83
  /** Site ID */
78
84
  siteId: string;
85
+ /** Site data for metadata generation */
86
+ site: SiteData;
79
87
  };
80
88
  /**
81
89
  * Discriminated union result from loadContent
@@ -150,4 +158,4 @@ declare function isEntryContent(result: LoadContentResult): result is EntryConte
150
158
  */
151
159
  declare function loadContent(params: LoadContentParams): Promise<LoadContentResult>;
152
160
 
153
- export { type ContentEntryData as C, type EntryContentResult as E, type LoadContentParams as L, type PageContentResult as P, isEntryContent as a, type LoadContentResult as b, isPageContent as i, loadContent as l };
161
+ export { type ContentEntryData as C, type EntryContentResult as E, type LoadContentParams as L, type PageContentResult as P, type SiteData as S, isEntryContent as a, type LoadContentResult as b, isPageContent as i, loadContent as l };
@@ -1,142 +1,15 @@
1
- import { a as LoadPageResult } from './loadPage-B8mQUUSo.mjs';
2
- import { S as SiteResponse } from './types-1cLz0vnq.mjs';
3
- import 'react/jsx-runtime';
4
- import 'react';
5
- import './schema-Z6-afHJG.mjs';
6
- import 'zod';
7
- import './core-DsNWrl3o.mjs';
1
+ export { P as PageMetadataInput, g as generatePageMetadata, a as generatePreviewMetadata } from './index-DI_qlYx3.mjs';
2
+ import './loadPage-B8mQUUSo.mjs';
3
+ import './types-1cLz0vnq.mjs';
8
4
  import './types-Dsu9wsUh.mjs';
9
5
  import '@riverbankcms/ai';
6
+ import './schema-Z6-afHJG.mjs';
7
+ import 'zod';
10
8
  import './link-DjxLyC82.mjs';
11
9
  import '@riverbankcms/media-storage-supabase';
12
10
  import '@riverbankcms/db';
11
+ import 'react/jsx-runtime';
12
+ import 'react';
13
+ import './core-DsNWrl3o.mjs';
13
14
  import './types-CbagRQ_7.mjs';
14
15
  import './blockKinds-B6MWzNWp.mjs';
15
-
16
- /**
17
- * Metadata generation helper for Next.js pages
18
- *
19
- * Generates SEO-optimized metadata from Builder page data for use in
20
- * Next.js generateMetadata() functions.
21
- */
22
-
23
- /**
24
- * Next.js Metadata type
25
- * Simplified version to avoid requiring Next.js as a dependency
26
- */
27
- type Metadata = {
28
- title?: string;
29
- description?: string;
30
- alternates?: {
31
- canonical?: string;
32
- };
33
- openGraph?: {
34
- title?: string;
35
- description?: string;
36
- url?: string;
37
- siteName?: string;
38
- type?: string;
39
- images?: Array<{
40
- url: string;
41
- alt?: string;
42
- }>;
43
- };
44
- twitter?: {
45
- card?: string;
46
- title?: string;
47
- description?: string;
48
- images?: string[];
49
- };
50
- robots?: {
51
- index?: boolean;
52
- follow?: boolean;
53
- };
54
- verification?: {
55
- google?: string;
56
- };
57
- };
58
- type PageMetadataInput = {
59
- /**
60
- * Page data from loadPage() or custom page object
61
- */
62
- page: LoadPageResult['page'] | {
63
- name: string;
64
- purpose?: string;
65
- };
66
- /**
67
- * Site data from client.getSite()
68
- */
69
- site: SiteResponse['site'];
70
- /**
71
- * Current URL path (e.g., '/about', '/blog/post-1')
72
- */
73
- path: string;
74
- /**
75
- * Full site URL for canonical and OG URLs
76
- * Example: 'https://example.com'
77
- */
78
- siteUrl: string;
79
- /**
80
- * Optional custom metadata overrides
81
- */
82
- overrides?: {
83
- title?: string;
84
- description?: string;
85
- ogImage?: string;
86
- canonicalUrl?: string;
87
- robots?: {
88
- index?: boolean;
89
- follow?: boolean;
90
- };
91
- };
92
- /**
93
- * Optional Google site verification token
94
- */
95
- googleSiteVerification?: string;
96
- };
97
- /**
98
- * Generate Next.js Metadata object from Builder page data
99
- *
100
- * @example
101
- * ```tsx
102
- * import { generatePageMetadata } from '@riverbankcms/sdk/metadata';
103
- * import { loadPage } from '@riverbankcms/sdk';
104
- *
105
- * export async function generateMetadata({ params }) {
106
- * const pageData = await loadPage({ client, siteId, path: params.slug });
107
- * const siteData = await client.getSite({ id: siteId });
108
- *
109
- * return generatePageMetadata({
110
- * page: pageData.page,
111
- * site: siteData.site,
112
- * path: params.slug,
113
- * siteUrl: 'https://example.com',
114
- * });
115
- * }
116
- * ```
117
- */
118
- declare function generatePageMetadata(input: PageMetadataInput): Metadata;
119
- /**
120
- * Generate metadata for preview/staging environments
121
- *
122
- * This helper adds noindex/nofollow robots tags to prevent search engines
123
- * from indexing preview or staging URLs.
124
- *
125
- * @example
126
- * ```tsx
127
- * export async function generateMetadata({ params }) {
128
- * const pageData = await loadPage({ client, siteId, path: params.slug });
129
- * const isPreview = process.env.VERCEL_ENV !== 'production';
130
- *
131
- * return generatePreviewMetadata({
132
- * page: pageData.page,
133
- * site: siteData.site,
134
- * path: params.slug,
135
- * siteUrl: 'https://example.com',
136
- * });
137
- * }
138
- * ```
139
- */
140
- declare function generatePreviewMetadata(input: PageMetadataInput): Metadata;
141
-
142
- export { type PageMetadataInput, generatePageMetadata, generatePreviewMetadata };
@@ -1,142 +1,15 @@
1
- import { a as LoadPageResult } from './loadPage-DP3nrHBi.js';
2
- import { S as SiteResponse } from './types-BvcJU7zk.js';
3
- import 'react/jsx-runtime';
4
- import 'react';
5
- import './schema-Z6-afHJG.js';
6
- import 'zod';
7
- import './core-DsNWrl3o.js';
1
+ export { P as PageMetadataInput, g as generatePageMetadata, a as generatePreviewMetadata } from './index-BTwWvSBu.js';
2
+ import './loadPage-DP3nrHBi.js';
3
+ import './types-BvcJU7zk.js';
8
4
  import './types-CVykEqXN.js';
9
5
  import '@riverbankcms/ai';
6
+ import './schema-Z6-afHJG.js';
7
+ import 'zod';
10
8
  import './link-DjxLyC82.js';
11
9
  import '@riverbankcms/media-storage-supabase';
12
10
  import '@riverbankcms/db';
11
+ import 'react/jsx-runtime';
12
+ import 'react';
13
+ import './core-DsNWrl3o.js';
13
14
  import './types-DuQCNVV0.js';
14
15
  import './blockKinds-B6MWzNWp.js';
15
-
16
- /**
17
- * Metadata generation helper for Next.js pages
18
- *
19
- * Generates SEO-optimized metadata from Builder page data for use in
20
- * Next.js generateMetadata() functions.
21
- */
22
-
23
- /**
24
- * Next.js Metadata type
25
- * Simplified version to avoid requiring Next.js as a dependency
26
- */
27
- type Metadata = {
28
- title?: string;
29
- description?: string;
30
- alternates?: {
31
- canonical?: string;
32
- };
33
- openGraph?: {
34
- title?: string;
35
- description?: string;
36
- url?: string;
37
- siteName?: string;
38
- type?: string;
39
- images?: Array<{
40
- url: string;
41
- alt?: string;
42
- }>;
43
- };
44
- twitter?: {
45
- card?: string;
46
- title?: string;
47
- description?: string;
48
- images?: string[];
49
- };
50
- robots?: {
51
- index?: boolean;
52
- follow?: boolean;
53
- };
54
- verification?: {
55
- google?: string;
56
- };
57
- };
58
- type PageMetadataInput = {
59
- /**
60
- * Page data from loadPage() or custom page object
61
- */
62
- page: LoadPageResult['page'] | {
63
- name: string;
64
- purpose?: string;
65
- };
66
- /**
67
- * Site data from client.getSite()
68
- */
69
- site: SiteResponse['site'];
70
- /**
71
- * Current URL path (e.g., '/about', '/blog/post-1')
72
- */
73
- path: string;
74
- /**
75
- * Full site URL for canonical and OG URLs
76
- * Example: 'https://example.com'
77
- */
78
- siteUrl: string;
79
- /**
80
- * Optional custom metadata overrides
81
- */
82
- overrides?: {
83
- title?: string;
84
- description?: string;
85
- ogImage?: string;
86
- canonicalUrl?: string;
87
- robots?: {
88
- index?: boolean;
89
- follow?: boolean;
90
- };
91
- };
92
- /**
93
- * Optional Google site verification token
94
- */
95
- googleSiteVerification?: string;
96
- };
97
- /**
98
- * Generate Next.js Metadata object from Builder page data
99
- *
100
- * @example
101
- * ```tsx
102
- * import { generatePageMetadata } from '@riverbankcms/sdk/metadata';
103
- * import { loadPage } from '@riverbankcms/sdk';
104
- *
105
- * export async function generateMetadata({ params }) {
106
- * const pageData = await loadPage({ client, siteId, path: params.slug });
107
- * const siteData = await client.getSite({ id: siteId });
108
- *
109
- * return generatePageMetadata({
110
- * page: pageData.page,
111
- * site: siteData.site,
112
- * path: params.slug,
113
- * siteUrl: 'https://example.com',
114
- * });
115
- * }
116
- * ```
117
- */
118
- declare function generatePageMetadata(input: PageMetadataInput): Metadata;
119
- /**
120
- * Generate metadata for preview/staging environments
121
- *
122
- * This helper adds noindex/nofollow robots tags to prevent search engines
123
- * from indexing preview or staging URLs.
124
- *
125
- * @example
126
- * ```tsx
127
- * export async function generateMetadata({ params }) {
128
- * const pageData = await loadPage({ client, siteId, path: params.slug });
129
- * const isPreview = process.env.VERCEL_ENV !== 'production';
130
- *
131
- * return generatePreviewMetadata({
132
- * page: pageData.page,
133
- * site: siteData.site,
134
- * path: params.slug,
135
- * siteUrl: 'https://example.com',
136
- * });
137
- * }
138
- * ```
139
- */
140
- declare function generatePreviewMetadata(input: PageMetadataInput): Metadata;
141
-
142
- export { type PageMetadataInput, generatePageMetadata, generatePreviewMetadata };