sanity-plugin-seofields 1.6.0 → 1.6.2
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/dist/SeoHealthDashboard-FZTP4GS7.cjs +10 -0
- package/dist/{SeoHealthDashboard-7XMPVJRX.cjs.map → SeoHealthDashboard-FZTP4GS7.cjs.map} +1 -1
- package/dist/SeoHealthDashboard-PY5MKJCZ.js +4 -0
- package/dist/{SeoHealthDashboard-UWPLB5DM.js.map → SeoHealthDashboard-PY5MKJCZ.js.map} +1 -1
- package/dist/{SeoHealthTool-XCXINAQI.js → SeoHealthTool-SKY7FAKK.js} +3 -3
- package/dist/{SeoHealthTool-XCXINAQI.js.map → SeoHealthTool-SKY7FAKK.js.map} +1 -1
- package/dist/{SeoHealthTool-2H4XZR4I.cjs → SeoHealthTool-Z3O6NEKF.cjs} +4 -4
- package/dist/{SeoHealthTool-2H4XZR4I.cjs.map → SeoHealthTool-Z3O6NEKF.cjs.map} +1 -1
- package/dist/{SeoPreview-JDROKZLP.cjs → SeoPreview-PYYVZMY3.cjs} +41 -6
- package/dist/SeoPreview-PYYVZMY3.cjs.map +1 -0
- package/dist/{SeoPreview-F6GGPZWI.js → SeoPreview-XVAZYHCL.js} +43 -8
- package/dist/SeoPreview-XVAZYHCL.js.map +1 -0
- package/dist/{chunk-Z74QPO75.cjs → chunk-77U7CMJP.cjs} +12 -4
- package/dist/chunk-77U7CMJP.cjs.map +1 -0
- package/dist/{chunk-6NIHHOVS.js → chunk-IQG5JWVT.js} +2 -2
- package/dist/{chunk-6NIHHOVS.js.map → chunk-IQG5JWVT.js.map} +1 -1
- package/dist/{chunk-NHJBEV3A.js → chunk-KFFDQX22.js} +12 -4
- package/dist/chunk-KFFDQX22.js.map +1 -0
- package/dist/{chunk-KWUITSHS.js → chunk-ULFY5STC.js} +14 -14
- package/dist/chunk-ULFY5STC.js.map +1 -0
- package/dist/{chunk-WCLEWFAJ.cjs → chunk-XXQURVNE.cjs} +120 -120
- package/dist/chunk-XXQURVNE.cjs.map +1 -0
- package/dist/{chunk-7HCP5O62.cjs → chunk-YM3ZZ2HU.cjs} +2 -2
- package/dist/{chunk-7HCP5O62.cjs.map → chunk-YM3ZZ2HU.cjs.map} +1 -1
- package/dist/cli.js +1 -1
- package/dist/{component-7rqDvuy2.d.ts → component-CWZ0tlsq.d.ts} +7 -7
- package/dist/{component-J2nEQkOw.d.cts → component-DS-Ve_nw.d.cts} +7 -7
- package/dist/index.cjs +48 -41
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +57 -8
- package/dist/index.d.ts +57 -8
- package/dist/index.js +31 -20
- package/dist/index.js.map +1 -1
- package/dist/next.cjs +87 -88
- package/dist/next.cjs.map +1 -1
- package/dist/next.d.cts +4 -4
- package/dist/next.d.ts +4 -4
- package/dist/next.js +12 -9
- package/dist/next.js.map +1 -1
- package/dist/schema/next.cjs +80 -80
- package/dist/schema/next.d.cts +3 -3
- package/dist/schema/next.d.ts +3 -3
- package/dist/schema/next.js +3 -3
- package/dist/schema.cjs +153 -153
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.cts +6 -6
- package/dist/schema.d.ts +6 -6
- package/dist/schema.js +2 -2
- package/dist/schema.js.map +1 -1
- package/dist/{types-BSgolLj3.d.cts → types-BjVpmBAX.d.cts} +1 -1
- package/dist/{types-BRn3hfQb.d.ts → types-Dy7r5det.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/SeoHealthDashboard-7XMPVJRX.cjs +0 -10
- package/dist/SeoHealthDashboard-UWPLB5DM.js +0 -4
- package/dist/SeoPreview-F6GGPZWI.js.map +0 -1
- package/dist/SeoPreview-JDROKZLP.cjs.map +0 -1
- package/dist/chunk-KWUITSHS.js.map +0 -1
- package/dist/chunk-NHJBEV3A.js.map +0 -1
- package/dist/chunk-WCLEWFAJ.cjs.map +0 -1
- package/dist/chunk-Z74QPO75.cjs.map +0 -1
- package/dist/{types-DoUYMRVf.d.cts → types-BdaGoGQE.d.cts} +30 -30
- package/dist/{types-DnVvOp3o.d.ts → types-BwmZmt9I.d.ts} +30 -30
package/dist/next.cjs
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var chunkXXQURVNE_cjs = require('./chunk-XXQURVNE.cjs');
|
|
4
|
+
require('./chunk-YM3ZZ2HU.cjs');
|
|
5
5
|
var chunkS367Y35J_cjs = require('./chunk-S367Y35J.cjs');
|
|
6
|
-
var
|
|
6
|
+
var react = require('react');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
8
|
|
|
9
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
-
|
|
11
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
12
|
-
|
|
13
9
|
// src/helpers/seoMeta.ts
|
|
14
10
|
var VALID_OG_TYPES = [
|
|
15
11
|
"website",
|
|
@@ -131,12 +127,15 @@ function SeoMetaTags({
|
|
|
131
127
|
((_f = meta.openGraph) == null ? void 0 : _f.title) && /* @__PURE__ */ jsxRuntime.jsx("meta", { property: "og:title", content: meta.openGraph.title }),
|
|
132
128
|
((_g = meta.openGraph) == null ? void 0 : _g.description) && /* @__PURE__ */ jsxRuntime.jsx("meta", { property: "og:description", content: meta.openGraph.description }),
|
|
133
129
|
((_h = meta.openGraph) == null ? void 0 : _h.siteName) && /* @__PURE__ */ jsxRuntime.jsx("meta", { property: "og:site_name", content: meta.openGraph.siteName }),
|
|
134
|
-
(_j = (_i = meta.openGraph) == null ? void 0 : _i.images) == null ? void 0 : _j.map((img, i) =>
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
130
|
+
(_j = (_i = meta.openGraph) == null ? void 0 : _i.images) == null ? void 0 : _j.map((img, i) => (
|
|
131
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
132
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
|
|
133
|
+
/* @__PURE__ */ jsxRuntime.jsx("meta", { property: "og:image", content: img.url }),
|
|
134
|
+
img.width && /* @__PURE__ */ jsxRuntime.jsx("meta", { property: "og:image:width", content: String(img.width) }),
|
|
135
|
+
img.height && /* @__PURE__ */ jsxRuntime.jsx("meta", { property: "og:image:height", content: String(img.height) }),
|
|
136
|
+
img.alt && /* @__PURE__ */ jsxRuntime.jsx("meta", { property: "og:image:alt", content: img.alt })
|
|
137
|
+
] }, `og-img-${i}`)
|
|
138
|
+
)),
|
|
140
139
|
((_k = meta.twitter) == null ? void 0 : _k.card) && /* @__PURE__ */ jsxRuntime.jsx("meta", { name: "twitter:card", content: meta.twitter.card }),
|
|
141
140
|
((_l = meta.twitter) == null ? void 0 : _l.site) && /* @__PURE__ */ jsxRuntime.jsx("meta", { name: "twitter:site", content: meta.twitter.site }),
|
|
142
141
|
((_m = meta.twitter) == null ? void 0 : _m.creator) && /* @__PURE__ */ jsxRuntime.jsx("meta", { name: "twitter:creator", content: meta.twitter.creator }),
|
|
@@ -150,303 +149,303 @@ function SeoMetaTags({
|
|
|
150
149
|
|
|
151
150
|
Object.defineProperty(exports, "AggregateRatingSchema", {
|
|
152
151
|
enumerable: true,
|
|
153
|
-
get: function () { return
|
|
152
|
+
get: function () { return chunkXXQURVNE_cjs.AggregateRatingSchema; }
|
|
154
153
|
});
|
|
155
154
|
Object.defineProperty(exports, "ArticleSchema", {
|
|
156
155
|
enumerable: true,
|
|
157
|
-
get: function () { return
|
|
156
|
+
get: function () { return chunkXXQURVNE_cjs.ArticleSchema; }
|
|
158
157
|
});
|
|
159
158
|
Object.defineProperty(exports, "BlogPostingSchema", {
|
|
160
159
|
enumerable: true,
|
|
161
|
-
get: function () { return
|
|
160
|
+
get: function () { return chunkXXQURVNE_cjs.BlogPostingSchema; }
|
|
162
161
|
});
|
|
163
162
|
Object.defineProperty(exports, "BookSchema", {
|
|
164
163
|
enumerable: true,
|
|
165
|
-
get: function () { return
|
|
164
|
+
get: function () { return chunkXXQURVNE_cjs.BookSchema; }
|
|
166
165
|
});
|
|
167
166
|
Object.defineProperty(exports, "BrandSchema", {
|
|
168
167
|
enumerable: true,
|
|
169
|
-
get: function () { return
|
|
168
|
+
get: function () { return chunkXXQURVNE_cjs.BrandSchema; }
|
|
170
169
|
});
|
|
171
170
|
Object.defineProperty(exports, "BreadcrumbListSchema", {
|
|
172
171
|
enumerable: true,
|
|
173
|
-
get: function () { return
|
|
172
|
+
get: function () { return chunkXXQURVNE_cjs.BreadcrumbListSchema; }
|
|
174
173
|
});
|
|
175
174
|
Object.defineProperty(exports, "ContactPointSchema", {
|
|
176
175
|
enumerable: true,
|
|
177
|
-
get: function () { return
|
|
176
|
+
get: function () { return chunkXXQURVNE_cjs.ContactPointSchema; }
|
|
178
177
|
});
|
|
179
178
|
Object.defineProperty(exports, "CountrySchema", {
|
|
180
179
|
enumerable: true,
|
|
181
|
-
get: function () { return
|
|
180
|
+
get: function () { return chunkXXQURVNE_cjs.CountrySchema; }
|
|
182
181
|
});
|
|
183
182
|
Object.defineProperty(exports, "CourseSchema", {
|
|
184
183
|
enumerable: true,
|
|
185
|
-
get: function () { return
|
|
184
|
+
get: function () { return chunkXXQURVNE_cjs.CourseSchema; }
|
|
186
185
|
});
|
|
187
186
|
Object.defineProperty(exports, "EventSchema", {
|
|
188
187
|
enumerable: true,
|
|
189
|
-
get: function () { return
|
|
188
|
+
get: function () { return chunkXXQURVNE_cjs.EventSchema; }
|
|
190
189
|
});
|
|
191
190
|
Object.defineProperty(exports, "FAQPageSchema", {
|
|
192
191
|
enumerable: true,
|
|
193
|
-
get: function () { return
|
|
192
|
+
get: function () { return chunkXXQURVNE_cjs.FAQPageSchema; }
|
|
194
193
|
});
|
|
195
194
|
Object.defineProperty(exports, "HowToSchema", {
|
|
196
195
|
enumerable: true,
|
|
197
|
-
get: function () { return
|
|
196
|
+
get: function () { return chunkXXQURVNE_cjs.HowToSchema; }
|
|
198
197
|
});
|
|
199
198
|
Object.defineProperty(exports, "ImageObjectSchema", {
|
|
200
199
|
enumerable: true,
|
|
201
|
-
get: function () { return
|
|
200
|
+
get: function () { return chunkXXQURVNE_cjs.ImageObjectSchema; }
|
|
202
201
|
});
|
|
203
202
|
Object.defineProperty(exports, "ItemListSchema", {
|
|
204
203
|
enumerable: true,
|
|
205
|
-
get: function () { return
|
|
204
|
+
get: function () { return chunkXXQURVNE_cjs.ItemListSchema; }
|
|
206
205
|
});
|
|
207
206
|
Object.defineProperty(exports, "JobPostingSchema", {
|
|
208
207
|
enumerable: true,
|
|
209
|
-
get: function () { return
|
|
208
|
+
get: function () { return chunkXXQURVNE_cjs.JobPostingSchema; }
|
|
210
209
|
});
|
|
211
210
|
Object.defineProperty(exports, "LegalServiceSchema", {
|
|
212
211
|
enumerable: true,
|
|
213
|
-
get: function () { return
|
|
212
|
+
get: function () { return chunkXXQURVNE_cjs.LegalServiceSchema; }
|
|
214
213
|
});
|
|
215
214
|
Object.defineProperty(exports, "LocalBusinessSchema", {
|
|
216
215
|
enumerable: true,
|
|
217
|
-
get: function () { return
|
|
216
|
+
get: function () { return chunkXXQURVNE_cjs.LocalBusinessSchema; }
|
|
218
217
|
});
|
|
219
218
|
Object.defineProperty(exports, "MovieSchema", {
|
|
220
219
|
enumerable: true,
|
|
221
|
-
get: function () { return
|
|
220
|
+
get: function () { return chunkXXQURVNE_cjs.MovieSchema; }
|
|
222
221
|
});
|
|
223
222
|
Object.defineProperty(exports, "MusicAlbumSchema", {
|
|
224
223
|
enumerable: true,
|
|
225
|
-
get: function () { return
|
|
224
|
+
get: function () { return chunkXXQURVNE_cjs.MusicAlbumSchema; }
|
|
226
225
|
});
|
|
227
226
|
Object.defineProperty(exports, "MusicRecordingSchema", {
|
|
228
227
|
enumerable: true,
|
|
229
|
-
get: function () { return
|
|
228
|
+
get: function () { return chunkXXQURVNE_cjs.MusicRecordingSchema; }
|
|
230
229
|
});
|
|
231
230
|
Object.defineProperty(exports, "NewsArticleSchema", {
|
|
232
231
|
enumerable: true,
|
|
233
|
-
get: function () { return
|
|
232
|
+
get: function () { return chunkXXQURVNE_cjs.NewsArticleSchema; }
|
|
234
233
|
});
|
|
235
234
|
Object.defineProperty(exports, "OfferSchema", {
|
|
236
235
|
enumerable: true,
|
|
237
|
-
get: function () { return
|
|
236
|
+
get: function () { return chunkXXQURVNE_cjs.OfferSchema; }
|
|
238
237
|
});
|
|
239
238
|
Object.defineProperty(exports, "OrganizationSchema", {
|
|
240
239
|
enumerable: true,
|
|
241
|
-
get: function () { return
|
|
240
|
+
get: function () { return chunkXXQURVNE_cjs.OrganizationSchema; }
|
|
242
241
|
});
|
|
243
242
|
Object.defineProperty(exports, "PersonSchema", {
|
|
244
243
|
enumerable: true,
|
|
245
|
-
get: function () { return
|
|
244
|
+
get: function () { return chunkXXQURVNE_cjs.PersonSchema; }
|
|
246
245
|
});
|
|
247
246
|
Object.defineProperty(exports, "PlaceSchema", {
|
|
248
247
|
enumerable: true,
|
|
249
|
-
get: function () { return
|
|
248
|
+
get: function () { return chunkXXQURVNE_cjs.PlaceSchema; }
|
|
250
249
|
});
|
|
251
250
|
Object.defineProperty(exports, "PostalAddressSchema", {
|
|
252
251
|
enumerable: true,
|
|
253
|
-
get: function () { return
|
|
252
|
+
get: function () { return chunkXXQURVNE_cjs.PostalAddressSchema; }
|
|
254
253
|
});
|
|
255
254
|
Object.defineProperty(exports, "ProductSchema", {
|
|
256
255
|
enumerable: true,
|
|
257
|
-
get: function () { return
|
|
256
|
+
get: function () { return chunkXXQURVNE_cjs.ProductSchema; }
|
|
258
257
|
});
|
|
259
258
|
Object.defineProperty(exports, "ProfilePageSchema", {
|
|
260
259
|
enumerable: true,
|
|
261
|
-
get: function () { return
|
|
260
|
+
get: function () { return chunkXXQURVNE_cjs.ProfilePageSchema; }
|
|
262
261
|
});
|
|
263
262
|
Object.defineProperty(exports, "RecipeSchema", {
|
|
264
263
|
enumerable: true,
|
|
265
|
-
get: function () { return
|
|
264
|
+
get: function () { return chunkXXQURVNE_cjs.RecipeSchema; }
|
|
266
265
|
});
|
|
267
266
|
Object.defineProperty(exports, "RestaurantSchema", {
|
|
268
267
|
enumerable: true,
|
|
269
|
-
get: function () { return
|
|
268
|
+
get: function () { return chunkXXQURVNE_cjs.RestaurantSchema; }
|
|
270
269
|
});
|
|
271
270
|
Object.defineProperty(exports, "ReviewSchema", {
|
|
272
271
|
enumerable: true,
|
|
273
|
-
get: function () { return
|
|
272
|
+
get: function () { return chunkXXQURVNE_cjs.ReviewSchema; }
|
|
274
273
|
});
|
|
275
274
|
Object.defineProperty(exports, "SchemaOrgScripts", {
|
|
276
275
|
enumerable: true,
|
|
277
|
-
get: function () { return
|
|
276
|
+
get: function () { return chunkXXQURVNE_cjs.SchemaOrgScripts; }
|
|
278
277
|
});
|
|
279
278
|
Object.defineProperty(exports, "ServiceSchema", {
|
|
280
279
|
enumerable: true,
|
|
281
|
-
get: function () { return
|
|
280
|
+
get: function () { return chunkXXQURVNE_cjs.ServiceSchema; }
|
|
282
281
|
});
|
|
283
282
|
Object.defineProperty(exports, "SoftwareApplicationSchema", {
|
|
284
283
|
enumerable: true,
|
|
285
|
-
get: function () { return
|
|
284
|
+
get: function () { return chunkXXQURVNE_cjs.SoftwareApplicationSchema; }
|
|
286
285
|
});
|
|
287
286
|
Object.defineProperty(exports, "VideoObjectSchema", {
|
|
288
287
|
enumerable: true,
|
|
289
|
-
get: function () { return
|
|
288
|
+
get: function () { return chunkXXQURVNE_cjs.VideoObjectSchema; }
|
|
290
289
|
});
|
|
291
290
|
Object.defineProperty(exports, "WebApplicationSchema", {
|
|
292
291
|
enumerable: true,
|
|
293
|
-
get: function () { return
|
|
292
|
+
get: function () { return chunkXXQURVNE_cjs.WebApplicationSchema; }
|
|
294
293
|
});
|
|
295
294
|
Object.defineProperty(exports, "WebPageSchema", {
|
|
296
295
|
enumerable: true,
|
|
297
|
-
get: function () { return
|
|
296
|
+
get: function () { return chunkXXQURVNE_cjs.WebPageSchema; }
|
|
298
297
|
});
|
|
299
298
|
Object.defineProperty(exports, "WebsiteSchema", {
|
|
300
299
|
enumerable: true,
|
|
301
|
-
get: function () { return
|
|
300
|
+
get: function () { return chunkXXQURVNE_cjs.WebsiteSchema; }
|
|
302
301
|
});
|
|
303
302
|
Object.defineProperty(exports, "buildAggregateRatingJsonLd", {
|
|
304
303
|
enumerable: true,
|
|
305
|
-
get: function () { return
|
|
304
|
+
get: function () { return chunkXXQURVNE_cjs.buildAggregateRatingJsonLd; }
|
|
306
305
|
});
|
|
307
306
|
Object.defineProperty(exports, "buildArticleJsonLd", {
|
|
308
307
|
enumerable: true,
|
|
309
|
-
get: function () { return
|
|
308
|
+
get: function () { return chunkXXQURVNE_cjs.buildArticleJsonLd; }
|
|
310
309
|
});
|
|
311
310
|
Object.defineProperty(exports, "buildBlogPostingJsonLd", {
|
|
312
311
|
enumerable: true,
|
|
313
|
-
get: function () { return
|
|
312
|
+
get: function () { return chunkXXQURVNE_cjs.buildBlogPostingJsonLd; }
|
|
314
313
|
});
|
|
315
314
|
Object.defineProperty(exports, "buildBookJsonLd", {
|
|
316
315
|
enumerable: true,
|
|
317
|
-
get: function () { return
|
|
316
|
+
get: function () { return chunkXXQURVNE_cjs.buildBookJsonLd; }
|
|
318
317
|
});
|
|
319
318
|
Object.defineProperty(exports, "buildBrandJsonLd", {
|
|
320
319
|
enumerable: true,
|
|
321
|
-
get: function () { return
|
|
320
|
+
get: function () { return chunkXXQURVNE_cjs.buildBrandJsonLd; }
|
|
322
321
|
});
|
|
323
322
|
Object.defineProperty(exports, "buildBreadcrumbListJsonLd", {
|
|
324
323
|
enumerable: true,
|
|
325
|
-
get: function () { return
|
|
324
|
+
get: function () { return chunkXXQURVNE_cjs.buildBreadcrumbListJsonLd; }
|
|
326
325
|
});
|
|
327
326
|
Object.defineProperty(exports, "buildContactPointJsonLd", {
|
|
328
327
|
enumerable: true,
|
|
329
|
-
get: function () { return
|
|
328
|
+
get: function () { return chunkXXQURVNE_cjs.buildContactPointJsonLd; }
|
|
330
329
|
});
|
|
331
330
|
Object.defineProperty(exports, "buildCountryJsonLd", {
|
|
332
331
|
enumerable: true,
|
|
333
|
-
get: function () { return
|
|
332
|
+
get: function () { return chunkXXQURVNE_cjs.buildCountryJsonLd; }
|
|
334
333
|
});
|
|
335
334
|
Object.defineProperty(exports, "buildCourseJsonLd", {
|
|
336
335
|
enumerable: true,
|
|
337
|
-
get: function () { return
|
|
336
|
+
get: function () { return chunkXXQURVNE_cjs.buildCourseJsonLd; }
|
|
338
337
|
});
|
|
339
338
|
Object.defineProperty(exports, "buildEventJsonLd", {
|
|
340
339
|
enumerable: true,
|
|
341
|
-
get: function () { return
|
|
340
|
+
get: function () { return chunkXXQURVNE_cjs.buildEventJsonLd; }
|
|
342
341
|
});
|
|
343
342
|
Object.defineProperty(exports, "buildFAQPageJsonLd", {
|
|
344
343
|
enumerable: true,
|
|
345
|
-
get: function () { return
|
|
344
|
+
get: function () { return chunkXXQURVNE_cjs.buildFAQPageJsonLd; }
|
|
346
345
|
});
|
|
347
346
|
Object.defineProperty(exports, "buildHowToJsonLd", {
|
|
348
347
|
enumerable: true,
|
|
349
|
-
get: function () { return
|
|
348
|
+
get: function () { return chunkXXQURVNE_cjs.buildHowToJsonLd; }
|
|
350
349
|
});
|
|
351
350
|
Object.defineProperty(exports, "buildImageObjectJsonLd", {
|
|
352
351
|
enumerable: true,
|
|
353
|
-
get: function () { return
|
|
352
|
+
get: function () { return chunkXXQURVNE_cjs.buildImageObjectJsonLd; }
|
|
354
353
|
});
|
|
355
354
|
Object.defineProperty(exports, "buildItemListJsonLd", {
|
|
356
355
|
enumerable: true,
|
|
357
|
-
get: function () { return
|
|
356
|
+
get: function () { return chunkXXQURVNE_cjs.buildItemListJsonLd; }
|
|
358
357
|
});
|
|
359
358
|
Object.defineProperty(exports, "buildJobPostingJsonLd", {
|
|
360
359
|
enumerable: true,
|
|
361
|
-
get: function () { return
|
|
360
|
+
get: function () { return chunkXXQURVNE_cjs.buildJobPostingJsonLd; }
|
|
362
361
|
});
|
|
363
362
|
Object.defineProperty(exports, "buildLegalServiceJsonLd", {
|
|
364
363
|
enumerable: true,
|
|
365
|
-
get: function () { return
|
|
364
|
+
get: function () { return chunkXXQURVNE_cjs.buildLegalServiceJsonLd; }
|
|
366
365
|
});
|
|
367
366
|
Object.defineProperty(exports, "buildLocalBusinessJsonLd", {
|
|
368
367
|
enumerable: true,
|
|
369
|
-
get: function () { return
|
|
368
|
+
get: function () { return chunkXXQURVNE_cjs.buildLocalBusinessJsonLd; }
|
|
370
369
|
});
|
|
371
370
|
Object.defineProperty(exports, "buildMovieJsonLd", {
|
|
372
371
|
enumerable: true,
|
|
373
|
-
get: function () { return
|
|
372
|
+
get: function () { return chunkXXQURVNE_cjs.buildMovieJsonLd; }
|
|
374
373
|
});
|
|
375
374
|
Object.defineProperty(exports, "buildMusicAlbumJsonLd", {
|
|
376
375
|
enumerable: true,
|
|
377
|
-
get: function () { return
|
|
376
|
+
get: function () { return chunkXXQURVNE_cjs.buildMusicAlbumJsonLd; }
|
|
378
377
|
});
|
|
379
378
|
Object.defineProperty(exports, "buildMusicRecordingJsonLd", {
|
|
380
379
|
enumerable: true,
|
|
381
|
-
get: function () { return
|
|
380
|
+
get: function () { return chunkXXQURVNE_cjs.buildMusicRecordingJsonLd; }
|
|
382
381
|
});
|
|
383
382
|
Object.defineProperty(exports, "buildNewsArticleJsonLd", {
|
|
384
383
|
enumerable: true,
|
|
385
|
-
get: function () { return
|
|
384
|
+
get: function () { return chunkXXQURVNE_cjs.buildNewsArticleJsonLd; }
|
|
386
385
|
});
|
|
387
386
|
Object.defineProperty(exports, "buildOfferJsonLd", {
|
|
388
387
|
enumerable: true,
|
|
389
|
-
get: function () { return
|
|
388
|
+
get: function () { return chunkXXQURVNE_cjs.buildOfferJsonLd; }
|
|
390
389
|
});
|
|
391
390
|
Object.defineProperty(exports, "buildOrganizationJsonLd", {
|
|
392
391
|
enumerable: true,
|
|
393
|
-
get: function () { return
|
|
392
|
+
get: function () { return chunkXXQURVNE_cjs.buildOrganizationJsonLd; }
|
|
394
393
|
});
|
|
395
394
|
Object.defineProperty(exports, "buildPersonJsonLd", {
|
|
396
395
|
enumerable: true,
|
|
397
|
-
get: function () { return
|
|
396
|
+
get: function () { return chunkXXQURVNE_cjs.buildPersonJsonLd; }
|
|
398
397
|
});
|
|
399
398
|
Object.defineProperty(exports, "buildPlaceJsonLd", {
|
|
400
399
|
enumerable: true,
|
|
401
|
-
get: function () { return
|
|
400
|
+
get: function () { return chunkXXQURVNE_cjs.buildPlaceJsonLd; }
|
|
402
401
|
});
|
|
403
402
|
Object.defineProperty(exports, "buildPostalAddressJsonLd", {
|
|
404
403
|
enumerable: true,
|
|
405
|
-
get: function () { return
|
|
404
|
+
get: function () { return chunkXXQURVNE_cjs.buildPostalAddressJsonLd; }
|
|
406
405
|
});
|
|
407
406
|
Object.defineProperty(exports, "buildProductJsonLd", {
|
|
408
407
|
enumerable: true,
|
|
409
|
-
get: function () { return
|
|
408
|
+
get: function () { return chunkXXQURVNE_cjs.buildProductJsonLd; }
|
|
410
409
|
});
|
|
411
410
|
Object.defineProperty(exports, "buildProfilePageJsonLd", {
|
|
412
411
|
enumerable: true,
|
|
413
|
-
get: function () { return
|
|
412
|
+
get: function () { return chunkXXQURVNE_cjs.buildProfilePageJsonLd; }
|
|
414
413
|
});
|
|
415
414
|
Object.defineProperty(exports, "buildRecipeJsonLd", {
|
|
416
415
|
enumerable: true,
|
|
417
|
-
get: function () { return
|
|
416
|
+
get: function () { return chunkXXQURVNE_cjs.buildRecipeJsonLd; }
|
|
418
417
|
});
|
|
419
418
|
Object.defineProperty(exports, "buildRestaurantJsonLd", {
|
|
420
419
|
enumerable: true,
|
|
421
|
-
get: function () { return
|
|
420
|
+
get: function () { return chunkXXQURVNE_cjs.buildRestaurantJsonLd; }
|
|
422
421
|
});
|
|
423
422
|
Object.defineProperty(exports, "buildReviewJsonLd", {
|
|
424
423
|
enumerable: true,
|
|
425
|
-
get: function () { return
|
|
424
|
+
get: function () { return chunkXXQURVNE_cjs.buildReviewJsonLd; }
|
|
426
425
|
});
|
|
427
426
|
Object.defineProperty(exports, "buildServiceJsonLd", {
|
|
428
427
|
enumerable: true,
|
|
429
|
-
get: function () { return
|
|
428
|
+
get: function () { return chunkXXQURVNE_cjs.buildServiceJsonLd; }
|
|
430
429
|
});
|
|
431
430
|
Object.defineProperty(exports, "buildSoftwareApplicationJsonLd", {
|
|
432
431
|
enumerable: true,
|
|
433
|
-
get: function () { return
|
|
432
|
+
get: function () { return chunkXXQURVNE_cjs.buildSoftwareApplicationJsonLd; }
|
|
434
433
|
});
|
|
435
434
|
Object.defineProperty(exports, "buildVideoObjectJsonLd", {
|
|
436
435
|
enumerable: true,
|
|
437
|
-
get: function () { return
|
|
436
|
+
get: function () { return chunkXXQURVNE_cjs.buildVideoObjectJsonLd; }
|
|
438
437
|
});
|
|
439
438
|
Object.defineProperty(exports, "buildWebApplicationJsonLd", {
|
|
440
439
|
enumerable: true,
|
|
441
|
-
get: function () { return
|
|
440
|
+
get: function () { return chunkXXQURVNE_cjs.buildWebApplicationJsonLd; }
|
|
442
441
|
});
|
|
443
442
|
Object.defineProperty(exports, "buildWebPageJsonLd", {
|
|
444
443
|
enumerable: true,
|
|
445
|
-
get: function () { return
|
|
444
|
+
get: function () { return chunkXXQURVNE_cjs.buildWebPageJsonLd; }
|
|
446
445
|
});
|
|
447
446
|
Object.defineProperty(exports, "buildWebsiteJsonLd", {
|
|
448
447
|
enumerable: true,
|
|
449
|
-
get: function () { return
|
|
448
|
+
get: function () { return chunkXXQURVNE_cjs.buildWebsiteJsonLd; }
|
|
450
449
|
});
|
|
451
450
|
exports.SeoMetaTags = SeoMetaTags;
|
|
452
451
|
exports.buildSeoMeta = buildSeoMeta;
|
package/dist/next.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/helpers/seoMeta.ts","../src/helpers/SeoMetaTags.tsx"],"names":["__spreadValues","jsxs","Fragment","jsx","React"],"mappings":"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","file":"next.cjs","sourcesContent":["/**\n * Headless CMS integration helpers for sanity-plugin-seofields\n *\n * Provides framework-agnostic SEO metadata utilities for use with:\n * - Next.js App Router → buildSeoMeta() inside generateMetadata()\n * - Next.js Pages Router → <SeoMetaTags> inside Next.js <Head>\n * - Nuxt / Remix / any SSR → <SeoMetaTags> inside your <head> slot\n */\n\nimport type {SanityImage, SanityImageWithAlt} from '../types'\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\n/** Structured metadata returned by buildSeoMeta(). Compatible with Next.js Metadata (App Router). */\nexport interface SeoMetadata {\n title?: string | null\n description?: string | null\n keywords?: string[]\n robots?: {\n index?: boolean\n follow?: boolean\n googleBot?: {\n index?: boolean\n follow?: boolean\n }\n }\n openGraph?: {\n type?: string\n url?: string\n title?: string\n description?: string\n siteName?: string\n images?: Array<{url: string; width?: number; height?: number; alt?: string}>\n }\n twitter?: {\n card?: string\n site?: string\n creator?: string\n title?: string\n description?: string\n images?: string[]\n }\n alternates?: {\n canonical?: string\n }\n /** Any custom meta attributes from seo.metaAttributes */\n other?: Record<string, string>\n}\n\n/** Default values used when SEO fields are missing. */\nexport interface SeoMetaDefaults {\n title?: string\n description?: string\n siteName?: string\n twitterSite?: string\n twitterCreator?: string\n /** Fallback image URL when no OG / Twitter image is set. */\n ogImage?: string\n}\n\n/**\n * Permissive image shape accepted by buildSeoMeta — compatible with both the\n * plugin's SanityImage and Sanity's code-generated image type (where `asset`\n * and `alt` are optional).\n */\ninterface SeoImageInput {\n _type?: string\n asset?: {_ref: string; _type: string; _weak?: boolean; [key: string]: unknown}\n hotspot?: unknown\n crop?: unknown\n alt?: string\n}\n\n/**\n * Input-compatible variant of SeoFields. Structurally matches Sanity's\n * code-generated types (where `asset`, `alt`, `key`, and `type` are all\n * optional), so you can pass `data.seo` from a sanityFetch result directly\n * without any `as any` or manual casting.\n */\nexport interface SeoFieldsInput {\n _type?: string\n robots?: {noIndex?: boolean | null; noFollow?: boolean | null} | null\n title?: string | null\n description?: string | null\n metaImage?: SeoImageInput | null\n metaAttributes?: Array<{_key?: string; key?: string; value?: string; type?: string}> | null\n keywords?: string[] | null\n canonicalUrl?: string | null\n openGraph?: {\n _type?: string\n url?: string | null\n title?: string | null\n description?: string | null\n siteName?: string | null\n type?: string | null\n imageType?: string | null\n image?: SeoImageInput | null\n imageUrl?: string | null\n } | null\n twitter?: {\n _type?: string\n card?: string | null\n site?: string | null\n creator?: string | null\n title?: string | null\n description?: string | null\n imageType?: string | null\n image?: SeoImageInput | null\n imageUrl?: string | null\n } | null\n}\n\n/** Options accepted by buildSeoMeta(). */\nexport interface BuildSeoMetaOptions {\n /**\n * The raw SEO object from Sanity (_type excluded or included — both work).\n * Pass `null` or `undefined` to fall back entirely to `defaults`.\n *\n * Accepts both the strict plugin `SeoFields` type and Sanity's code-generated\n * type (which has all nested fields optional) without any `as any` cast.\n */\n seo?: SeoFieldsInput | null\n\n /**\n * The base URL of your site, e.g. \"https://example.com\".\n * Used for canonical URL and OpenGraph URL construction.\n */\n baseUrl?: string\n\n /**\n * The path for the current page, e.g. \"/about\".\n * Combined with baseUrl to produce the canonical + OG url.\n * Defaults to \"\".\n */\n path?: string\n\n /**\n * Default values used when the Sanity SEO fields are empty / missing.\n */\n defaults?: SeoMetaDefaults\n\n /**\n * Resolve a Sanity image asset to a plain URL string.\n *\n * @example (using @sanity/image-url)\n * imageUrlResolver: (img) => urlFor(img).width(1200).url()\n */\n imageUrlResolver?: (image: SanityImage | SanityImageWithAlt) => string | null | undefined\n}\n\n// ─── Internal helpers ─────────────────────────────────────────────────────────\n\nconst VALID_OG_TYPES = [\n 'website',\n 'article',\n 'profile',\n 'book',\n 'music',\n 'video',\n 'product',\n] as const\ntype OGType = (typeof VALID_OG_TYPES)[number]\n\n/**\n * Coerce an arbitrary string to a valid OpenGraph type.\n * Falls back to \"website\" when the value is invalid.\n */\nexport function sanitizeOGType(value?: string): OGType {\n if (value && (VALID_OG_TYPES as readonly string[]).includes(value)) {\n return value as OGType\n }\n return 'website'\n}\n\nconst VALID_TWITTER_CARDS = ['summary', 'summary_large_image', 'app', 'player'] as const\ntype TwitterCard = (typeof VALID_TWITTER_CARDS)[number]\n\n/**\n * Coerce an arbitrary string to a valid Twitter card type.\n * Falls back to \"summary_large_image\" when the value is invalid.\n */\nexport function sanitizeTwitterCard(value?: string): TwitterCard {\n if (value && (VALID_TWITTER_CARDS as readonly string[]).includes(value)) {\n return value as TwitterCard\n }\n return 'summary_large_image'\n}\n\n/**\n * Resolve OG image URL from SEO fields or defaults.\n */\nfunction resolveOgImage(\n seo: SeoFieldsInput | null | undefined,\n defaults: SeoMetaDefaults,\n imageUrlResolver?: (image: SanityImage | SanityImageWithAlt) => string | null | undefined,\n): string {\n if (seo?.openGraph?.imageType === 'url' && seo.openGraph.imageUrl) {\n return seo.openGraph.imageUrl\n }\n if (seo?.openGraph?.image && imageUrlResolver) {\n return imageUrlResolver(seo.openGraph.image as SanityImage) || defaults.ogImage || ''\n }\n return defaults.ogImage || ''\n}\n\n/**\n * Resolve Twitter image URL from SEO fields, falling back to OG image.\n */\nfunction resolveTwitterImage(\n seo: SeoFieldsInput | null | undefined,\n ogImageURL: string,\n imageUrlResolver?: (image: SanityImage | SanityImageWithAlt) => string | null | undefined,\n): string {\n if (seo?.twitter?.imageType === 'url' && seo.twitter.imageUrl) {\n return seo.twitter.imageUrl\n }\n if (seo?.twitter?.image && imageUrlResolver) {\n return imageUrlResolver(seo.twitter.image as SanityImage) || ogImageURL\n }\n return ogImageURL\n}\n\n/**\n * Build custom meta attributes map from SEO fields.\n */\nfunction buildCustomMetaMap(seo: SeoFieldsInput | null | undefined): Record<string, string> {\n const other: Record<string, string> = {}\n if (Array.isArray(seo?.metaAttributes)) {\n for (const attr of seo!.metaAttributes!) {\n if (attr.key && attr.value) {\n other[attr.key] = attr.value\n }\n }\n }\n return other\n}\n\n// ─── Core builder ─────────────────────────────────────────────────────────────\n\n/**\n * Convert a Sanity SEO object into a structured metadata object.\n *\n * The return value is structurally compatible with Next.js App Router's\n * `Metadata` type, so you can return it directly from `generateMetadata()`.\n *\n * @example Next.js App Router\n * ```ts\n * import { buildSeoMeta } from 'sanity-plugin-seofields'\n * import { urlFor } from '@/sanity/lib/image'\n *\n * export async function generateMetadata(): Promise<Metadata> {\n * const { seo } = await sanityFetch({ query: PAGE_SEO_QUERY })\n * return buildSeoMeta({\n * seo,\n * baseUrl: process.env.NEXT_PUBLIC_SITE_URL,\n * path: '/about',\n * defaults: { title: 'My Site', siteName: 'My Site' },\n * imageUrlResolver: (img) => urlFor(img).width(1200).url(),\n * })\n * }\n * ```\n */\nexport function buildSeoMeta(options: BuildSeoMetaOptions): SeoMetadata {\n const {seo, baseUrl = '', path = '', defaults = {}, imageUrlResolver} = options\n\n const normalizedBase = baseUrl.replace(/\\/+$/, '') // remove trailing /\n const normalizedPath = path.replace(/^\\/+/, '') // remove leading /\n\n const fullUrl = [normalizedBase, normalizedPath].filter(Boolean).join('/')\n\n const ogImageURL = resolveOgImage(seo, defaults, imageUrlResolver)\n const twitterImageURL = resolveTwitterImage(seo, ogImageURL, imageUrlResolver)\n const other = buildCustomMetaMap(seo)\n\n const ogUrl = seo?.openGraph?.url || fullUrl\n\n return {\n title: seo?.title ?? defaults.title ?? null,\n description: seo?.description ?? defaults.description ?? null,\n keywords: seo?.keywords?.length ? (seo.keywords as string[]) : undefined,\n robots: {\n index: !seo?.robots?.noIndex,\n follow: !seo?.robots?.noFollow,\n googleBot: {\n index: !seo?.robots?.noIndex,\n follow: !seo?.robots?.noFollow,\n },\n },\n openGraph: {\n type: sanitizeOGType(seo?.openGraph?.type ?? undefined),\n url: ogUrl || undefined,\n title: seo?.openGraph?.title ?? defaults.title,\n description: seo?.openGraph?.description ?? defaults.description,\n siteName: seo?.openGraph?.siteName ?? defaults.siteName,\n images: ogImageURL ? [{url: ogImageURL}] : [],\n },\n twitter: {\n card: sanitizeTwitterCard(seo?.twitter?.card ?? undefined),\n site: seo?.twitter?.site ?? defaults.twitterSite,\n creator: seo?.twitter?.creator ?? defaults.twitterCreator,\n title: seo?.twitter?.title ?? defaults.title,\n description: seo?.twitter?.description ?? defaults.description,\n images: twitterImageURL ? [twitterImageURL] : [],\n },\n alternates: {\n canonical: fullUrl || undefined,\n },\n ...(Object.keys(other).length > 0 ? {other} : {}),\n }\n}\n","/**\n * <SeoMetaTags> — Framework-agnostic React SEO meta tag renderer.\n *\n * Renders all SEO meta tags as plain React elements.\n * Place it inside your framework's <Head> component:\n *\n * @example Next.js Pages Router\n * ```tsx\n * import Head from 'next/head'\n * import { SeoMetaTags } from 'sanity-plugin-seofields'\n *\n * export default function Page({ seo }) {\n * return (\n * <>\n * <Head>\n * <SeoMetaTags\n * data={seo}\n * baseUrl=\"https://example.com\"\n * path=\"/about\"\n * defaults={{ title: 'My Site', siteName: 'My Site' }}\n * imageUrlResolver={(img) => urlFor(img).width(1200).url()}\n * />\n * </Head>\n * <main>...</main>\n * </>\n * )\n * }\n * ```\n *\n * @example Nuxt 3 / generic SSR (inside <Head> slot)\n * ```tsx\n * <Head>\n * <SeoMetaTags data={seo} baseUrl=\"https://example.com\" path=\"/\" />\n * </Head>\n * ```\n */\nimport React from 'react'\n\nimport type {SanityImage, SanityImageWithAlt, SeoFields} from '../types'\nimport {buildSeoMeta, type BuildSeoMetaOptions} from './seoMeta'\n\n// ─── Props ────────────────────────────────────────────────────────────────────\n\nexport interface SeoMetaTagsProps {\n /**\n * The raw SEO object from Sanity.\n * Pass `null` / `undefined` to render only the defaults.\n */\n data?: Partial<SeoFields> | null\n\n /**\n * Base URL of your site, e.g. \"https://example.com\".\n * Used for canonical link, og:url fallback.\n */\n baseUrl?: string\n\n /**\n * Current page path, e.g. \"/about\".\n * Defaults to \"\".\n */\n path?: string\n\n /**\n * Default values used when SEO fields are missing.\n */\n defaults?: BuildSeoMetaOptions['defaults']\n\n /**\n * Resolve a Sanity image asset reference to a full URL string.\n *\n * @example\n * imageUrlResolver={(img) => urlFor(img).width(1200).url()}\n */\n imageUrlResolver?: (image: SanityImage | SanityImageWithAlt) => string | null | undefined\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * Renders all SEO meta tags for a page as plain React elements.\n * Intended to be placed inside your framework's <Head> / <head> component.\n *\n * Renders:\n * - `<title>`\n * - `<meta name=\"description\">`\n * - `<meta name=\"keywords\">`\n * - `<meta name=\"robots\">`\n * - OpenGraph meta tags (`og:*`)\n * - Twitter Card meta tags (`twitter:*`)\n * - Any custom `seo.metaAttributes` as `<meta name=\"...\" content=\"...\">`\n */\nexport function SeoMetaTags({\n data,\n baseUrl,\n path,\n defaults,\n imageUrlResolver,\n}: SeoMetaTagsProps): React.JSX.Element {\n const meta = buildSeoMeta({seo: data, baseUrl, path, defaults, imageUrlResolver})\n\n const robotsContent = [\n meta.robots?.index === false ? 'noindex' : 'index',\n meta.robots?.follow === false ? 'nofollow' : 'follow',\n ].join(', ')\n\n return (\n <>\n {/* ── Title ── */}\n {meta.title && <title>{meta.title}</title>}\n\n {/* ── Basic meta ── */}\n {meta.description && <meta name=\"description\" content={meta.description} />}\n {meta.keywords?.length ? <meta name=\"keywords\" content={meta.keywords.join(', ')} /> : null}\n <meta name=\"robots\" content={robotsContent} />\n <meta name=\"googlebot\" content={robotsContent} />\n\n {/* ── Open Graph ── */}\n {meta.openGraph?.type && <meta property=\"og:type\" content={meta.openGraph.type} />}\n {meta.openGraph?.url && <meta property=\"og:url\" content={meta.openGraph.url} />}\n {meta.openGraph?.title && <meta property=\"og:title\" content={meta.openGraph.title} />}\n {meta.openGraph?.description && (\n <meta property=\"og:description\" content={meta.openGraph.description} />\n )}\n {meta.openGraph?.siteName && (\n <meta property=\"og:site_name\" content={meta.openGraph.siteName} />\n )}\n {meta.openGraph?.images?.map((img, i) => (\n <React.Fragment key={`og-img-${i}`}>\n <meta property=\"og:image\" content={img.url} />\n {img.width && <meta property=\"og:image:width\" content={String(img.width)} />}\n {img.height && <meta property=\"og:image:height\" content={String(img.height)} />}\n {img.alt && <meta property=\"og:image:alt\" content={img.alt} />}\n </React.Fragment>\n ))}\n\n {/* ── Twitter Card ── */}\n {meta.twitter?.card && <meta name=\"twitter:card\" content={meta.twitter.card} />}\n {meta.twitter?.site && <meta name=\"twitter:site\" content={meta.twitter.site} />}\n {meta.twitter?.creator && <meta name=\"twitter:creator\" content={meta.twitter.creator} />}\n {meta.twitter?.title && <meta name=\"twitter:title\" content={meta.twitter.title} />}\n {meta.twitter?.description && (\n <meta name=\"twitter:description\" content={meta.twitter.description} />\n )}\n {meta.twitter?.images?.map((url, i) => (\n <meta key={`tw-img-${i}`} name=\"twitter:image\" content={url} />\n ))}\n\n {/* ── Custom meta attributes ── */}\n {meta.other &&\n Object.entries(meta.other).map(([name, content]) => (\n <meta key={`custom-${name}`} name={name} content={content} />\n ))}\n\n {/* ── Canonical URL ── */}\n {meta.alternates?.canonical && <link rel=\"canonical\" href={meta.alternates.canonical} />}\n </>\n )\n}\n\nexport default SeoMetaTags\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/helpers/seoMeta.ts","../src/helpers/SeoMetaTags.tsx"],"names":["__spreadValues","jsxs","Fragment","jsx"],"mappings":"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","file":"next.cjs","sourcesContent":["/**\n * Headless CMS integration helpers for sanity-plugin-seofields\n *\n * Provides framework-agnostic SEO metadata utilities for use with:\n * - Next.js App Router → buildSeoMeta() inside generateMetadata()\n * - Next.js Pages Router → <SeoMetaTags> inside Next.js <Head>\n * - Nuxt / Remix / any SSR → <SeoMetaTags> inside your <head> slot\n */\n\nimport type {SanityImage, SanityImageWithAlt} from '../types'\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\n/** Structured metadata returned by buildSeoMeta(). Compatible with Next.js Metadata (App Router). */\nexport interface SeoMetadata {\n title?: string | null\n description?: string | null\n keywords?: string[]\n robots?: {\n index?: boolean\n follow?: boolean\n googleBot?: {\n index?: boolean\n follow?: boolean\n }\n }\n openGraph?: {\n type?: string\n url?: string\n title?: string\n description?: string\n siteName?: string\n images?: Array<{url: string; width?: number; height?: number; alt?: string}>\n }\n twitter?: {\n card?: string\n site?: string\n creator?: string\n title?: string\n description?: string\n images?: string[]\n }\n alternates?: {\n canonical?: string\n }\n /** Any custom meta attributes from seo.metaAttributes */\n other?: Record<string, string>\n}\n\n/** Default values used when SEO fields are missing. */\nexport interface SeoMetaDefaults {\n title?: string\n description?: string\n siteName?: string\n twitterSite?: string\n twitterCreator?: string\n /** Fallback image URL when no OG / Twitter image is set. */\n ogImage?: string\n}\n\n/**\n * Permissive image shape accepted by buildSeoMeta — compatible with both the\n * plugin's SanityImage and Sanity's code-generated image type (where `asset`\n * and `alt` are optional).\n */\ninterface SeoImageInput {\n _type?: string\n asset?: {_ref: string; _type: string; _weak?: boolean; [key: string]: unknown}\n hotspot?: unknown\n crop?: unknown\n alt?: string\n}\n\n/**\n * Input-compatible variant of SeoFields. Structurally matches Sanity's\n * code-generated types (where `asset`, `alt`, `key`, and `type` are all\n * optional), so you can pass `data.seo` from a sanityFetch result directly\n * without any `as any` or manual casting.\n */\nexport interface SeoFieldsInput {\n _type?: string\n robots?: {noIndex?: boolean | null; noFollow?: boolean | null} | null\n title?: string | null\n description?: string | null\n metaImage?: SeoImageInput | null\n metaAttributes?: Array<{_key?: string; key?: string; value?: string; type?: string}> | null\n keywords?: string[] | null\n canonicalUrl?: string | null\n openGraph?: {\n _type?: string\n url?: string | null\n title?: string | null\n description?: string | null\n siteName?: string | null\n type?: string | null\n imageType?: string | null\n image?: SeoImageInput | null\n imageUrl?: string | null\n } | null\n twitter?: {\n _type?: string\n card?: string | null\n site?: string | null\n creator?: string | null\n title?: string | null\n description?: string | null\n imageType?: string | null\n image?: SeoImageInput | null\n imageUrl?: string | null\n } | null\n}\n\n/** Options accepted by buildSeoMeta(). */\nexport interface BuildSeoMetaOptions {\n /**\n * The raw SEO object from Sanity (_type excluded or included — both work).\n * Pass `null` or `undefined` to fall back entirely to `defaults`.\n *\n * Accepts both the strict plugin `SeoFields` type and Sanity's code-generated\n * type (which has all nested fields optional) without any `as any` cast.\n */\n seo?: SeoFieldsInput | null\n\n /**\n * The base URL of your site, e.g. \"https://example.com\".\n * Used for canonical URL and OpenGraph URL construction.\n */\n baseUrl?: string\n\n /**\n * The path for the current page, e.g. \"/about\".\n * Combined with baseUrl to produce the canonical + OG url.\n * Defaults to \"\".\n */\n path?: string\n\n /**\n * Default values used when the Sanity SEO fields are empty / missing.\n */\n defaults?: SeoMetaDefaults\n\n /**\n * Resolve a Sanity image asset to a plain URL string.\n *\n * @example (using @sanity/image-url)\n * imageUrlResolver: (img) => urlFor(img).width(1200).url()\n */\n imageUrlResolver?: (image: SanityImage | SanityImageWithAlt) => string | null | undefined\n}\n\n// ─── Internal helpers ─────────────────────────────────────────────────────────\n\nconst VALID_OG_TYPES = [\n 'website',\n 'article',\n 'profile',\n 'book',\n 'music',\n 'video',\n 'product',\n] as const\ntype OGType = (typeof VALID_OG_TYPES)[number]\n\n/**\n * Coerce an arbitrary string to a valid OpenGraph type.\n * Falls back to \"website\" when the value is invalid.\n */\nexport function sanitizeOGType(value?: string): OGType {\n if (value && (VALID_OG_TYPES as readonly string[]).includes(value)) {\n return value as OGType\n }\n return 'website'\n}\n\nconst VALID_TWITTER_CARDS = ['summary', 'summary_large_image', 'app', 'player'] as const\ntype TwitterCard = (typeof VALID_TWITTER_CARDS)[number]\n\n/**\n * Coerce an arbitrary string to a valid Twitter card type.\n * Falls back to \"summary_large_image\" when the value is invalid.\n */\nexport function sanitizeTwitterCard(value?: string): TwitterCard {\n if (value && (VALID_TWITTER_CARDS as readonly string[]).includes(value)) {\n return value as TwitterCard\n }\n return 'summary_large_image'\n}\n\n/**\n * Resolve OG image URL from SEO fields or defaults.\n */\nfunction resolveOgImage(\n seo: SeoFieldsInput | null | undefined,\n defaults: SeoMetaDefaults,\n imageUrlResolver?: (image: SanityImage | SanityImageWithAlt) => string | null | undefined,\n): string {\n if (seo?.openGraph?.imageType === 'url' && seo.openGraph.imageUrl) {\n return seo.openGraph.imageUrl\n }\n if (seo?.openGraph?.image && imageUrlResolver) {\n return imageUrlResolver(seo.openGraph.image as SanityImage) || defaults.ogImage || ''\n }\n return defaults.ogImage || ''\n}\n\n/**\n * Resolve Twitter image URL from SEO fields, falling back to OG image.\n */\nfunction resolveTwitterImage(\n seo: SeoFieldsInput | null | undefined,\n ogImageURL: string,\n imageUrlResolver?: (image: SanityImage | SanityImageWithAlt) => string | null | undefined,\n): string {\n if (seo?.twitter?.imageType === 'url' && seo.twitter.imageUrl) {\n return seo.twitter.imageUrl\n }\n if (seo?.twitter?.image && imageUrlResolver) {\n return imageUrlResolver(seo.twitter.image as SanityImage) || ogImageURL\n }\n return ogImageURL\n}\n\n/**\n * Build custom meta attributes map from SEO fields.\n */\nfunction buildCustomMetaMap(seo: SeoFieldsInput | null | undefined): Record<string, string> {\n const other: Record<string, string> = {}\n if (Array.isArray(seo?.metaAttributes)) {\n for (const attr of seo!.metaAttributes!) {\n if (attr.key && attr.value) {\n other[attr.key] = attr.value\n }\n }\n }\n return other\n}\n\n// ─── Core builder ─────────────────────────────────────────────────────────────\n\n/**\n * Convert a Sanity SEO object into a structured metadata object.\n *\n * The return value is structurally compatible with Next.js App Router's\n * `Metadata` type, so you can return it directly from `generateMetadata()`.\n *\n * @example Next.js App Router\n * ```ts\n * import { buildSeoMeta } from 'sanity-plugin-seofields'\n * import { urlFor } from '@/sanity/lib/image'\n *\n * export async function generateMetadata(): Promise<Metadata> {\n * const { seo } = await sanityFetch({ query: PAGE_SEO_QUERY })\n * return buildSeoMeta({\n * seo,\n * baseUrl: process.env.NEXT_PUBLIC_SITE_URL,\n * path: '/about',\n * defaults: { title: 'My Site', siteName: 'My Site' },\n * imageUrlResolver: (img) => urlFor(img).width(1200).url(),\n * })\n * }\n * ```\n */\nexport function buildSeoMeta(options: BuildSeoMetaOptions): SeoMetadata {\n const {seo, baseUrl = '', path = '', defaults = {}, imageUrlResolver} = options\n\n const normalizedBase = baseUrl.replace(/\\/+$/, '') // remove trailing /\n const normalizedPath = path.replace(/^\\/+/, '') // remove leading /\n\n const fullUrl = [normalizedBase, normalizedPath].filter(Boolean).join('/')\n\n const ogImageURL = resolveOgImage(seo, defaults, imageUrlResolver)\n const twitterImageURL = resolveTwitterImage(seo, ogImageURL, imageUrlResolver)\n const other = buildCustomMetaMap(seo)\n\n const ogUrl = seo?.openGraph?.url || fullUrl\n\n return {\n title: seo?.title ?? defaults.title ?? null,\n description: seo?.description ?? defaults.description ?? null,\n keywords: seo?.keywords?.length ? (seo.keywords as string[]) : undefined,\n robots: {\n index: !seo?.robots?.noIndex,\n follow: !seo?.robots?.noFollow,\n googleBot: {\n index: !seo?.robots?.noIndex,\n follow: !seo?.robots?.noFollow,\n },\n },\n openGraph: {\n type: sanitizeOGType(seo?.openGraph?.type ?? undefined),\n url: ogUrl || undefined,\n title: seo?.openGraph?.title ?? defaults.title,\n description: seo?.openGraph?.description ?? defaults.description,\n siteName: seo?.openGraph?.siteName ?? defaults.siteName,\n images: ogImageURL ? [{url: ogImageURL}] : [],\n },\n twitter: {\n card: sanitizeTwitterCard(seo?.twitter?.card ?? undefined),\n site: seo?.twitter?.site ?? defaults.twitterSite,\n creator: seo?.twitter?.creator ?? defaults.twitterCreator,\n title: seo?.twitter?.title ?? defaults.title,\n description: seo?.twitter?.description ?? defaults.description,\n images: twitterImageURL ? [twitterImageURL] : [],\n },\n alternates: {\n canonical: fullUrl || undefined,\n },\n ...(Object.keys(other).length > 0 ? {other} : {}),\n }\n}\n","/**\n * <SeoMetaTags> — Framework-agnostic React SEO meta tag renderer.\n *\n * Renders all SEO meta tags as plain React elements.\n * Place it inside your framework's <Head> component:\n *\n * @example Next.js Pages Router\n * ```tsx\n * import Head from 'next/head'\n * import { SeoMetaTags } from 'sanity-plugin-seofields'\n *\n * export default function Page({ seo }) {\n * return (\n * <>\n * <Head>\n * <SeoMetaTags\n * data={seo}\n * baseUrl=\"https://example.com\"\n * path=\"/about\"\n * defaults={{ title: 'My Site', siteName: 'My Site' }}\n * imageUrlResolver={(img) => urlFor(img).width(1200).url()}\n * />\n * </Head>\n * <main>...</main>\n * </>\n * )\n * }\n * ```\n *\n * @example Nuxt 3 / generic SSR (inside <Head> slot)\n * ```tsx\n * <Head>\n * <SeoMetaTags data={seo} baseUrl=\"https://example.com\" path=\"/\" />\n * </Head>\n * ```\n */\nimport {Fragment, type JSX} from 'react'\n\nimport type {SanityImage, SanityImageWithAlt, SeoFields} from '../types'\nimport {buildSeoMeta, type BuildSeoMetaOptions} from './seoMeta'\n\n// ─── Props ────────────────────────────────────────────────────────────────────\n\nexport interface SeoMetaTagsProps {\n /**\n * The raw SEO object from Sanity.\n * Pass `null` / `undefined` to render only the defaults.\n */\n data?: Partial<SeoFields> | null\n\n /**\n * Base URL of your site, e.g. \"https://example.com\".\n * Used for canonical link, og:url fallback.\n */\n baseUrl?: string\n\n /**\n * Current page path, e.g. \"/about\".\n * Defaults to \"\".\n */\n path?: string\n\n /**\n * Default values used when SEO fields are missing.\n */\n defaults?: BuildSeoMetaOptions['defaults']\n\n /**\n * Resolve a Sanity image asset reference to a full URL string.\n *\n * @example\n * imageUrlResolver={(img) => urlFor(img).width(1200).url()}\n */\n imageUrlResolver?: (image: SanityImage | SanityImageWithAlt) => string | null | undefined\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * Renders all SEO meta tags for a page as plain React elements.\n * Intended to be placed inside your framework's <Head> / <head> component.\n *\n * Renders:\n * - `<title>`\n * - `<meta name=\"description\">`\n * - `<meta name=\"keywords\">`\n * - `<meta name=\"robots\">`\n * - OpenGraph meta tags (`og:*`)\n * - Twitter Card meta tags (`twitter:*`)\n * - Any custom `seo.metaAttributes` as `<meta name=\"...\" content=\"...\">`\n */\nexport function SeoMetaTags({\n data,\n baseUrl,\n path,\n defaults,\n imageUrlResolver,\n}: SeoMetaTagsProps): JSX.Element {\n const meta = buildSeoMeta({seo: data, baseUrl, path, defaults, imageUrlResolver})\n\n const robotsContent = [\n meta.robots?.index === false ? 'noindex' : 'index',\n meta.robots?.follow === false ? 'nofollow' : 'follow',\n ].join(', ')\n\n return (\n <>\n {/* ── Title ── */}\n {meta.title && <title>{meta.title}</title>}\n\n {/* ── Basic meta ── */}\n {meta.description && <meta name=\"description\" content={meta.description} />}\n {meta.keywords?.length ? <meta name=\"keywords\" content={meta.keywords.join(', ')} /> : null}\n <meta name=\"robots\" content={robotsContent} />\n <meta name=\"googlebot\" content={robotsContent} />\n\n {/* ── Open Graph ── */}\n {meta.openGraph?.type && <meta property=\"og:type\" content={meta.openGraph.type} />}\n {meta.openGraph?.url && <meta property=\"og:url\" content={meta.openGraph.url} />}\n {meta.openGraph?.title && <meta property=\"og:title\" content={meta.openGraph.title} />}\n {meta.openGraph?.description && (\n <meta property=\"og:description\" content={meta.openGraph.description} />\n )}\n {meta.openGraph?.siteName && (\n <meta property=\"og:site_name\" content={meta.openGraph.siteName} />\n )}\n {meta.openGraph?.images?.map((img, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={`og-img-${i}`}>\n <meta property=\"og:image\" content={img.url} />\n {img.width && <meta property=\"og:image:width\" content={String(img.width)} />}\n {img.height && <meta property=\"og:image:height\" content={String(img.height)} />}\n {img.alt && <meta property=\"og:image:alt\" content={img.alt} />}\n </Fragment>\n ))}\n\n {/* ── Twitter Card ── */}\n {meta.twitter?.card && <meta name=\"twitter:card\" content={meta.twitter.card} />}\n {meta.twitter?.site && <meta name=\"twitter:site\" content={meta.twitter.site} />}\n {meta.twitter?.creator && <meta name=\"twitter:creator\" content={meta.twitter.creator} />}\n {meta.twitter?.title && <meta name=\"twitter:title\" content={meta.twitter.title} />}\n {meta.twitter?.description && (\n <meta name=\"twitter:description\" content={meta.twitter.description} />\n )}\n {meta.twitter?.images?.map((url, i) => (\n <meta key={`tw-img-${i}`} name=\"twitter:image\" content={url} />\n ))}\n\n {/* ── Custom meta attributes ── */}\n {meta.other &&\n Object.entries(meta.other).map(([name, content]) => (\n <meta key={`custom-${name}`} name={name} content={content} />\n ))}\n\n {/* ── Canonical URL ── */}\n {meta.alternates?.canonical && <link rel=\"canonical\" href={meta.alternates.canonical} />}\n </>\n )\n}\n\nexport default SeoMetaTags\n"]}
|
package/dist/next.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c as SanityImage, d as SanityImageWithAlt, e as SeoFields } from './types-BtSRRG6C.cjs';
|
|
2
|
-
import
|
|
3
|
-
export { A as AggregateRatingSchema, a as AggregateRatingSchemaProps, b as ArticleSchema, c as ArticleSchemaProps, B as BlogPostingSchema, d as BlogPostingSchemaProps, e as BookSchema, f as BookSchemaProps, g as BrandSchema, h as BrandSchemaProps, i as BreadcrumbListSchema, j as BreadcrumbListSchemaProps, C as ContactPointSchema, k as ContactPointSchemaProps, l as CountrySchema, m as CountrySchemaProps, n as CourseSchema, o as CourseSchemaProps, E as EventSchema, p as EventSchemaProps, F as FAQPageSchema, q as FAQPageSchemaProps, H as HowToSchema, r as HowToSchemaProps, I as ImageObjectSchema, s as ImageObjectSchemaProps, t as ItemListSchema, u as ItemListSchemaProps, J as JobPostingSchema, v as JobPostingSchemaProps, L as LegalServiceSchema, w as LegalServiceSchemaProps, x as LocalBusinessSchema, y as LocalBusinessSchemaProps, M as MovieSchema, z as MovieSchemaProps, D as MusicAlbumSchema, G as MusicAlbumSchemaProps, K as MusicRecordingSchema, N as MusicRecordingSchemaProps, O as NewsArticleSchema, P as NewsArticleSchemaProps, Q as OfferSchema, R as OfferSchemaProps, S as OrganizationSchema, T as OrganizationSchemaProps, U as PersonSchema, V as PersonSchemaProps, W as PlaceSchema, X as PlaceSchemaProps, Y as PostalAddressSchema, Z as PostalAddressSchemaProps, _ as ProductSchema, $ as ProductSchemaProps, a0 as ProfilePageSchema, a1 as ProfilePageSchemaProps, a2 as RecipeSchema, a3 as RecipeSchemaProps, a4 as RestaurantSchema, a5 as RestaurantSchemaProps, a6 as ReviewSchema, a7 as ReviewSchemaProps, a8 as SchemaOrgScripts, a9 as SchemaOrgScriptsProps, aa as ServiceSchema, ab as ServiceSchemaProps, ac as SoftwareApplicationSchema, ad as SoftwareApplicationSchemaProps, ae as VideoObjectSchema, af as VideoObjectSchemaProps, ag as WebApplicationSchema, ah as WebApplicationSchemaProps, ai as WebPageSchema, aj as WebPageSchemaProps, ak as WebsiteSchema, al as WebsiteSchemaProps, am as buildAggregateRatingJsonLd, an as buildArticleJsonLd, ao as buildBlogPostingJsonLd, ap as buildBookJsonLd, aq as buildBrandJsonLd, ar as buildBreadcrumbListJsonLd, as as buildContactPointJsonLd, at as buildCountryJsonLd, au as buildCourseJsonLd, av as buildEventJsonLd, aw as buildFAQPageJsonLd, ax as buildHowToJsonLd, ay as buildImageObjectJsonLd, az as buildItemListJsonLd, aA as buildJobPostingJsonLd, aB as buildLegalServiceJsonLd, aC as buildLocalBusinessJsonLd, aD as buildMovieJsonLd, aE as buildMusicAlbumJsonLd, aF as buildMusicRecordingJsonLd, aG as buildNewsArticleJsonLd, aH as buildOfferJsonLd, aI as buildOrganizationJsonLd, aJ as buildPersonJsonLd, aK as buildPlaceJsonLd, aL as buildPostalAddressJsonLd, aM as buildProductJsonLd, aN as buildProfilePageJsonLd, aO as buildRecipeJsonLd, aP as buildRestaurantJsonLd, aQ as buildReviewJsonLd, aR as buildServiceJsonLd, aS as buildSoftwareApplicationJsonLd, aT as buildVideoObjectJsonLd, aU as buildWebApplicationJsonLd, aV as buildWebPageJsonLd, aW as buildWebsiteJsonLd } from './component-
|
|
4
|
-
import './types-
|
|
2
|
+
import { JSX } from 'react';
|
|
3
|
+
export { A as AggregateRatingSchema, a as AggregateRatingSchemaProps, b as ArticleSchema, c as ArticleSchemaProps, B as BlogPostingSchema, d as BlogPostingSchemaProps, e as BookSchema, f as BookSchemaProps, g as BrandSchema, h as BrandSchemaProps, i as BreadcrumbListSchema, j as BreadcrumbListSchemaProps, C as ContactPointSchema, k as ContactPointSchemaProps, l as CountrySchema, m as CountrySchemaProps, n as CourseSchema, o as CourseSchemaProps, E as EventSchema, p as EventSchemaProps, F as FAQPageSchema, q as FAQPageSchemaProps, H as HowToSchema, r as HowToSchemaProps, I as ImageObjectSchema, s as ImageObjectSchemaProps, t as ItemListSchema, u as ItemListSchemaProps, J as JobPostingSchema, v as JobPostingSchemaProps, L as LegalServiceSchema, w as LegalServiceSchemaProps, x as LocalBusinessSchema, y as LocalBusinessSchemaProps, M as MovieSchema, z as MovieSchemaProps, D as MusicAlbumSchema, G as MusicAlbumSchemaProps, K as MusicRecordingSchema, N as MusicRecordingSchemaProps, O as NewsArticleSchema, P as NewsArticleSchemaProps, Q as OfferSchema, R as OfferSchemaProps, S as OrganizationSchema, T as OrganizationSchemaProps, U as PersonSchema, V as PersonSchemaProps, W as PlaceSchema, X as PlaceSchemaProps, Y as PostalAddressSchema, Z as PostalAddressSchemaProps, _ as ProductSchema, $ as ProductSchemaProps, a0 as ProfilePageSchema, a1 as ProfilePageSchemaProps, a2 as RecipeSchema, a3 as RecipeSchemaProps, a4 as RestaurantSchema, a5 as RestaurantSchemaProps, a6 as ReviewSchema, a7 as ReviewSchemaProps, a8 as SchemaOrgScripts, a9 as SchemaOrgScriptsProps, aa as ServiceSchema, ab as ServiceSchemaProps, ac as SoftwareApplicationSchema, ad as SoftwareApplicationSchemaProps, ae as VideoObjectSchema, af as VideoObjectSchemaProps, ag as WebApplicationSchema, ah as WebApplicationSchemaProps, ai as WebPageSchema, aj as WebPageSchemaProps, ak as WebsiteSchema, al as WebsiteSchemaProps, am as buildAggregateRatingJsonLd, an as buildArticleJsonLd, ao as buildBlogPostingJsonLd, ap as buildBookJsonLd, aq as buildBrandJsonLd, ar as buildBreadcrumbListJsonLd, as as buildContactPointJsonLd, at as buildCountryJsonLd, au as buildCourseJsonLd, av as buildEventJsonLd, aw as buildFAQPageJsonLd, ax as buildHowToJsonLd, ay as buildImageObjectJsonLd, az as buildItemListJsonLd, aA as buildJobPostingJsonLd, aB as buildLegalServiceJsonLd, aC as buildLocalBusinessJsonLd, aD as buildMovieJsonLd, aE as buildMusicAlbumJsonLd, aF as buildMusicRecordingJsonLd, aG as buildNewsArticleJsonLd, aH as buildOfferJsonLd, aI as buildOrganizationJsonLd, aJ as buildPersonJsonLd, aK as buildPlaceJsonLd, aL as buildPostalAddressJsonLd, aM as buildProductJsonLd, aN as buildProfilePageJsonLd, aO as buildRecipeJsonLd, aP as buildRestaurantJsonLd, aQ as buildReviewJsonLd, aR as buildServiceJsonLd, aS as buildSoftwareApplicationJsonLd, aT as buildVideoObjectJsonLd, aU as buildWebApplicationJsonLd, aV as buildWebPageJsonLd, aW as buildWebsiteJsonLd } from './component-DS-Ve_nw.cjs';
|
|
4
|
+
import './types-BdaGoGQE.cjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Headless CMS integration helpers for sanity-plugin-seofields
|
|
@@ -275,6 +275,6 @@ interface SeoMetaTagsProps {
|
|
|
275
275
|
* - Twitter Card meta tags (`twitter:*`)
|
|
276
276
|
* - Any custom `seo.metaAttributes` as `<meta name="..." content="...">`
|
|
277
277
|
*/
|
|
278
|
-
declare function SeoMetaTags({ data, baseUrl, path, defaults, imageUrlResolver, }: SeoMetaTagsProps):
|
|
278
|
+
declare function SeoMetaTags({ data, baseUrl, path, defaults, imageUrlResolver, }: SeoMetaTagsProps): JSX.Element;
|
|
279
279
|
|
|
280
280
|
export { type BuildSeoMetaOptions, type SeoFieldsInput, type SeoMetaDefaults, SeoMetaTags, type SeoMetaTagsProps, type SeoMetadata, buildSeoMeta, sanitizeOGType, sanitizeTwitterCard };
|
package/dist/next.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c as SanityImage, d as SanityImageWithAlt, e as SeoFields } from './types-BtSRRG6C.js';
|
|
2
|
-
import
|
|
3
|
-
export { A as AggregateRatingSchema, a as AggregateRatingSchemaProps, b as ArticleSchema, c as ArticleSchemaProps, B as BlogPostingSchema, d as BlogPostingSchemaProps, e as BookSchema, f as BookSchemaProps, g as BrandSchema, h as BrandSchemaProps, i as BreadcrumbListSchema, j as BreadcrumbListSchemaProps, C as ContactPointSchema, k as ContactPointSchemaProps, l as CountrySchema, m as CountrySchemaProps, n as CourseSchema, o as CourseSchemaProps, E as EventSchema, p as EventSchemaProps, F as FAQPageSchema, q as FAQPageSchemaProps, H as HowToSchema, r as HowToSchemaProps, I as ImageObjectSchema, s as ImageObjectSchemaProps, t as ItemListSchema, u as ItemListSchemaProps, J as JobPostingSchema, v as JobPostingSchemaProps, L as LegalServiceSchema, w as LegalServiceSchemaProps, x as LocalBusinessSchema, y as LocalBusinessSchemaProps, M as MovieSchema, z as MovieSchemaProps, D as MusicAlbumSchema, G as MusicAlbumSchemaProps, K as MusicRecordingSchema, N as MusicRecordingSchemaProps, O as NewsArticleSchema, P as NewsArticleSchemaProps, Q as OfferSchema, R as OfferSchemaProps, S as OrganizationSchema, T as OrganizationSchemaProps, U as PersonSchema, V as PersonSchemaProps, W as PlaceSchema, X as PlaceSchemaProps, Y as PostalAddressSchema, Z as PostalAddressSchemaProps, _ as ProductSchema, $ as ProductSchemaProps, a0 as ProfilePageSchema, a1 as ProfilePageSchemaProps, a2 as RecipeSchema, a3 as RecipeSchemaProps, a4 as RestaurantSchema, a5 as RestaurantSchemaProps, a6 as ReviewSchema, a7 as ReviewSchemaProps, a8 as SchemaOrgScripts, a9 as SchemaOrgScriptsProps, aa as ServiceSchema, ab as ServiceSchemaProps, ac as SoftwareApplicationSchema, ad as SoftwareApplicationSchemaProps, ae as VideoObjectSchema, af as VideoObjectSchemaProps, ag as WebApplicationSchema, ah as WebApplicationSchemaProps, ai as WebPageSchema, aj as WebPageSchemaProps, ak as WebsiteSchema, al as WebsiteSchemaProps, am as buildAggregateRatingJsonLd, an as buildArticleJsonLd, ao as buildBlogPostingJsonLd, ap as buildBookJsonLd, aq as buildBrandJsonLd, ar as buildBreadcrumbListJsonLd, as as buildContactPointJsonLd, at as buildCountryJsonLd, au as buildCourseJsonLd, av as buildEventJsonLd, aw as buildFAQPageJsonLd, ax as buildHowToJsonLd, ay as buildImageObjectJsonLd, az as buildItemListJsonLd, aA as buildJobPostingJsonLd, aB as buildLegalServiceJsonLd, aC as buildLocalBusinessJsonLd, aD as buildMovieJsonLd, aE as buildMusicAlbumJsonLd, aF as buildMusicRecordingJsonLd, aG as buildNewsArticleJsonLd, aH as buildOfferJsonLd, aI as buildOrganizationJsonLd, aJ as buildPersonJsonLd, aK as buildPlaceJsonLd, aL as buildPostalAddressJsonLd, aM as buildProductJsonLd, aN as buildProfilePageJsonLd, aO as buildRecipeJsonLd, aP as buildRestaurantJsonLd, aQ as buildReviewJsonLd, aR as buildServiceJsonLd, aS as buildSoftwareApplicationJsonLd, aT as buildVideoObjectJsonLd, aU as buildWebApplicationJsonLd, aV as buildWebPageJsonLd, aW as buildWebsiteJsonLd } from './component-
|
|
4
|
-
import './types-
|
|
2
|
+
import { JSX } from 'react';
|
|
3
|
+
export { A as AggregateRatingSchema, a as AggregateRatingSchemaProps, b as ArticleSchema, c as ArticleSchemaProps, B as BlogPostingSchema, d as BlogPostingSchemaProps, e as BookSchema, f as BookSchemaProps, g as BrandSchema, h as BrandSchemaProps, i as BreadcrumbListSchema, j as BreadcrumbListSchemaProps, C as ContactPointSchema, k as ContactPointSchemaProps, l as CountrySchema, m as CountrySchemaProps, n as CourseSchema, o as CourseSchemaProps, E as EventSchema, p as EventSchemaProps, F as FAQPageSchema, q as FAQPageSchemaProps, H as HowToSchema, r as HowToSchemaProps, I as ImageObjectSchema, s as ImageObjectSchemaProps, t as ItemListSchema, u as ItemListSchemaProps, J as JobPostingSchema, v as JobPostingSchemaProps, L as LegalServiceSchema, w as LegalServiceSchemaProps, x as LocalBusinessSchema, y as LocalBusinessSchemaProps, M as MovieSchema, z as MovieSchemaProps, D as MusicAlbumSchema, G as MusicAlbumSchemaProps, K as MusicRecordingSchema, N as MusicRecordingSchemaProps, O as NewsArticleSchema, P as NewsArticleSchemaProps, Q as OfferSchema, R as OfferSchemaProps, S as OrganizationSchema, T as OrganizationSchemaProps, U as PersonSchema, V as PersonSchemaProps, W as PlaceSchema, X as PlaceSchemaProps, Y as PostalAddressSchema, Z as PostalAddressSchemaProps, _ as ProductSchema, $ as ProductSchemaProps, a0 as ProfilePageSchema, a1 as ProfilePageSchemaProps, a2 as RecipeSchema, a3 as RecipeSchemaProps, a4 as RestaurantSchema, a5 as RestaurantSchemaProps, a6 as ReviewSchema, a7 as ReviewSchemaProps, a8 as SchemaOrgScripts, a9 as SchemaOrgScriptsProps, aa as ServiceSchema, ab as ServiceSchemaProps, ac as SoftwareApplicationSchema, ad as SoftwareApplicationSchemaProps, ae as VideoObjectSchema, af as VideoObjectSchemaProps, ag as WebApplicationSchema, ah as WebApplicationSchemaProps, ai as WebPageSchema, aj as WebPageSchemaProps, ak as WebsiteSchema, al as WebsiteSchemaProps, am as buildAggregateRatingJsonLd, an as buildArticleJsonLd, ao as buildBlogPostingJsonLd, ap as buildBookJsonLd, aq as buildBrandJsonLd, ar as buildBreadcrumbListJsonLd, as as buildContactPointJsonLd, at as buildCountryJsonLd, au as buildCourseJsonLd, av as buildEventJsonLd, aw as buildFAQPageJsonLd, ax as buildHowToJsonLd, ay as buildImageObjectJsonLd, az as buildItemListJsonLd, aA as buildJobPostingJsonLd, aB as buildLegalServiceJsonLd, aC as buildLocalBusinessJsonLd, aD as buildMovieJsonLd, aE as buildMusicAlbumJsonLd, aF as buildMusicRecordingJsonLd, aG as buildNewsArticleJsonLd, aH as buildOfferJsonLd, aI as buildOrganizationJsonLd, aJ as buildPersonJsonLd, aK as buildPlaceJsonLd, aL as buildPostalAddressJsonLd, aM as buildProductJsonLd, aN as buildProfilePageJsonLd, aO as buildRecipeJsonLd, aP as buildRestaurantJsonLd, aQ as buildReviewJsonLd, aR as buildServiceJsonLd, aS as buildSoftwareApplicationJsonLd, aT as buildVideoObjectJsonLd, aU as buildWebApplicationJsonLd, aV as buildWebPageJsonLd, aW as buildWebsiteJsonLd } from './component-CWZ0tlsq.js';
|
|
4
|
+
import './types-BwmZmt9I.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Headless CMS integration helpers for sanity-plugin-seofields
|
|
@@ -275,6 +275,6 @@ interface SeoMetaTagsProps {
|
|
|
275
275
|
* - Twitter Card meta tags (`twitter:*`)
|
|
276
276
|
* - Any custom `seo.metaAttributes` as `<meta name="..." content="...">`
|
|
277
277
|
*/
|
|
278
|
-
declare function SeoMetaTags({ data, baseUrl, path, defaults, imageUrlResolver, }: SeoMetaTagsProps):
|
|
278
|
+
declare function SeoMetaTags({ data, baseUrl, path, defaults, imageUrlResolver, }: SeoMetaTagsProps): JSX.Element;
|
|
279
279
|
|
|
280
280
|
export { type BuildSeoMetaOptions, type SeoFieldsInput, type SeoMetaDefaults, SeoMetaTags, type SeoMetaTagsProps, type SeoMetadata, buildSeoMeta, sanitizeOGType, sanitizeTwitterCard };
|