sanity-plugin-seofields 1.3.1 → 1.4.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.
- package/README.md +69 -40
- package/dist/index.cjs +1924 -1618
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +68 -17
- package/dist/index.d.ts +68 -17
- package/dist/index.js +1879 -1563
- package/dist/index.js.map +1 -1
- package/dist/next.cjs +1506 -0
- package/dist/next.cjs.map +1 -1
- package/dist/next.d.cts +4 -1
- package/dist/next.d.ts +4 -1
- package/dist/next.js +1457 -0
- package/dist/next.js.map +1 -1
- package/dist/schema/next.cjs +1548 -0
- package/dist/schema/next.cjs.map +1 -0
- package/dist/schema/next.d.cts +438 -0
- package/dist/schema/next.d.ts +438 -0
- package/dist/schema/next.js +1476 -0
- package/dist/schema/next.js.map +1 -0
- package/dist/schema.cjs +1743 -0
- package/dist/schema.cjs.map +1 -0
- package/dist/schema.d.cts +387 -0
- package/dist/schema.d.ts +387 -0
- package/dist/schema.js +1691 -0
- package/dist/schema.js.map +1 -0
- package/dist/types-CVaAX7uy.d.cts +589 -0
- package/dist/types-Ci-ZZT7A.d.ts +589 -0
- package/dist/{types-B91ena4g.d.cts → types-R3n9Fu4w.d.cts} +16 -1
- package/dist/{types-B91ena4g.d.ts → types-R3n9Fu4w.d.ts} +16 -1
- package/package.json +18 -3
package/dist/next.cjs
CHANGED
|
@@ -44,8 +44,57 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
44
44
|
// src/next.ts
|
|
45
45
|
var next_exports = {};
|
|
46
46
|
__export(next_exports, {
|
|
47
|
+
AggregateRatingSchema: () => AggregateRatingSchema,
|
|
48
|
+
ArticleSchema: () => ArticleSchema,
|
|
49
|
+
BlogPostingSchema: () => BlogPostingSchema,
|
|
50
|
+
BrandSchema: () => BrandSchema,
|
|
51
|
+
BreadcrumbListSchema: () => BreadcrumbListSchema,
|
|
52
|
+
ContactPointSchema: () => ContactPointSchema,
|
|
53
|
+
CourseSchema: () => CourseSchema,
|
|
54
|
+
EventSchema: () => EventSchema,
|
|
55
|
+
FAQPageSchema: () => FAQPageSchema,
|
|
56
|
+
HowToSchema: () => HowToSchema,
|
|
57
|
+
ImageObjectSchema: () => ImageObjectSchema,
|
|
58
|
+
LocalBusinessSchema: () => LocalBusinessSchema,
|
|
59
|
+
OfferSchema: () => OfferSchema,
|
|
60
|
+
OrganizationSchema: () => OrganizationSchema,
|
|
61
|
+
PersonSchema: () => PersonSchema,
|
|
62
|
+
PlaceSchema: () => PlaceSchema,
|
|
63
|
+
PostalAddressSchema: () => PostalAddressSchema,
|
|
64
|
+
ProductSchema: () => ProductSchema,
|
|
65
|
+
ReviewSchema: () => ReviewSchema,
|
|
66
|
+
SchemaOrgScripts: () => SchemaOrgScripts,
|
|
47
67
|
SeoMetaTags: () => SeoMetaTags,
|
|
68
|
+
SoftwareApplicationSchema: () => SoftwareApplicationSchema,
|
|
69
|
+
VideoObjectSchema: () => VideoObjectSchema,
|
|
70
|
+
WebApplicationSchema: () => WebApplicationSchema,
|
|
71
|
+
WebPageSchema: () => WebPageSchema,
|
|
72
|
+
WebsiteSchema: () => WebsiteSchema,
|
|
73
|
+
buildAggregateRatingJsonLd: () => buildAggregateRatingJsonLd,
|
|
74
|
+
buildArticleJsonLd: () => buildArticleJsonLd,
|
|
75
|
+
buildBlogPostingJsonLd: () => buildBlogPostingJsonLd,
|
|
76
|
+
buildBrandJsonLd: () => buildBrandJsonLd,
|
|
77
|
+
buildBreadcrumbListJsonLd: () => buildBreadcrumbListJsonLd,
|
|
78
|
+
buildContactPointJsonLd: () => buildContactPointJsonLd,
|
|
79
|
+
buildCourseJsonLd: () => buildCourseJsonLd,
|
|
80
|
+
buildEventJsonLd: () => buildEventJsonLd,
|
|
81
|
+
buildFAQPageJsonLd: () => buildFAQPageJsonLd,
|
|
82
|
+
buildHowToJsonLd: () => buildHowToJsonLd,
|
|
83
|
+
buildImageObjectJsonLd: () => buildImageObjectJsonLd,
|
|
84
|
+
buildLocalBusinessJsonLd: () => buildLocalBusinessJsonLd,
|
|
85
|
+
buildOfferJsonLd: () => buildOfferJsonLd,
|
|
86
|
+
buildOrganizationJsonLd: () => buildOrganizationJsonLd,
|
|
87
|
+
buildPersonJsonLd: () => buildPersonJsonLd,
|
|
88
|
+
buildPlaceJsonLd: () => buildPlaceJsonLd,
|
|
89
|
+
buildPostalAddressJsonLd: () => buildPostalAddressJsonLd,
|
|
90
|
+
buildProductJsonLd: () => buildProductJsonLd,
|
|
91
|
+
buildReviewJsonLd: () => buildReviewJsonLd,
|
|
48
92
|
buildSeoMeta: () => buildSeoMeta,
|
|
93
|
+
buildSoftwareApplicationJsonLd: () => buildSoftwareApplicationJsonLd,
|
|
94
|
+
buildVideoObjectJsonLd: () => buildVideoObjectJsonLd,
|
|
95
|
+
buildWebApplicationJsonLd: () => buildWebApplicationJsonLd,
|
|
96
|
+
buildWebPageJsonLd: () => buildWebPageJsonLd,
|
|
97
|
+
buildWebsiteJsonLd: () => buildWebsiteJsonLd,
|
|
49
98
|
sanitizeOGType: () => sanitizeOGType,
|
|
50
99
|
sanitizeTwitterCard: () => sanitizeTwitterCard
|
|
51
100
|
});
|
|
@@ -172,10 +221,1467 @@ function SeoMetaTags({ data, baseUrl, path, defaults, imageUrlResolver }) {
|
|
|
172
221
|
((_r = meta.alternates) == null ? void 0 : _r.canonical) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("link", { rel: "canonical", href: meta.alternates.canonical })
|
|
173
222
|
] });
|
|
174
223
|
}
|
|
224
|
+
|
|
225
|
+
// src/schema/generator.ts
|
|
226
|
+
var import_sanity = require("sanity");
|
|
227
|
+
var SANITY_INTERNAL_KEYS = /* @__PURE__ */ new Set([
|
|
228
|
+
"_key",
|
|
229
|
+
"_type",
|
|
230
|
+
"_ref",
|
|
231
|
+
"_id",
|
|
232
|
+
"_rev",
|
|
233
|
+
"_createdAt",
|
|
234
|
+
"_updatedAt"
|
|
235
|
+
]);
|
|
236
|
+
function buildNestedJsonLd(data, fieldDefs, jsonLdType) {
|
|
237
|
+
var _a;
|
|
238
|
+
const result = jsonLdType ? { "@type": jsonLdType } : {};
|
|
239
|
+
for (const field of fieldDefs) {
|
|
240
|
+
const value = data[field.name];
|
|
241
|
+
if (value === void 0 || value === null || value === "") continue;
|
|
242
|
+
const key = (_a = field.jsonLdKey) != null ? _a : field.name;
|
|
243
|
+
if (field.type === "object" && field.fields && typeof value === "object" && !Array.isArray(value)) {
|
|
244
|
+
const nested = buildNestedJsonLd(
|
|
245
|
+
value,
|
|
246
|
+
field.fields,
|
|
247
|
+
field.jsonLdType
|
|
248
|
+
);
|
|
249
|
+
const minKeys = field.jsonLdType ? 1 : 0;
|
|
250
|
+
if (Object.keys(nested).length > minKeys) {
|
|
251
|
+
result[key] = nested;
|
|
252
|
+
}
|
|
253
|
+
} else if (field.type === "array" && Array.isArray(value)) {
|
|
254
|
+
if (field.fields && field.jsonLdType) {
|
|
255
|
+
const items = value.filter(
|
|
256
|
+
(item) => typeof item === "object" && item !== null
|
|
257
|
+
).map((item) => buildNestedJsonLd(item, field.fields, field.jsonLdType));
|
|
258
|
+
if (items.length) result[key] = items;
|
|
259
|
+
} else if (value.length) {
|
|
260
|
+
result[key] = value.filter((v) => v !== void 0 && v !== null && v !== "");
|
|
261
|
+
}
|
|
262
|
+
} else if (!SANITY_INTERNAL_KEYS.has(field.name)) {
|
|
263
|
+
result[key] = value;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return result;
|
|
267
|
+
}
|
|
268
|
+
function buildGenericJsonLd(schemaType, data, fieldDefs, requiredFields = []) {
|
|
269
|
+
if (!data) return null;
|
|
270
|
+
for (const req of requiredFields) {
|
|
271
|
+
if (!data[req]) return null;
|
|
272
|
+
}
|
|
273
|
+
const body = buildNestedJsonLd(data, fieldDefs);
|
|
274
|
+
return __spreadValues({
|
|
275
|
+
"@context": "https://schema.org",
|
|
276
|
+
"@type": schemaType
|
|
277
|
+
}, body);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// src/schema/aggregateRating/schema.ts
|
|
281
|
+
var aggregateRatingFields = [
|
|
282
|
+
{
|
|
283
|
+
name: "ratingValue",
|
|
284
|
+
title: "Rating Value",
|
|
285
|
+
type: "string",
|
|
286
|
+
description: 'The average rating value, e.g. "4.5".',
|
|
287
|
+
required: {
|
|
288
|
+
key: "ratingValueRequired",
|
|
289
|
+
message: "Rating value is required for Schema.org."
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
name: "reviewCount",
|
|
294
|
+
title: "Review Count",
|
|
295
|
+
type: "string",
|
|
296
|
+
description: 'The total number of reviews, e.g. "120".'
|
|
297
|
+
}
|
|
298
|
+
];
|
|
299
|
+
|
|
300
|
+
// src/schema/article/schema.ts
|
|
301
|
+
var articleFields = [
|
|
302
|
+
{
|
|
303
|
+
name: "headline",
|
|
304
|
+
title: "Headline",
|
|
305
|
+
type: "string",
|
|
306
|
+
required: { key: "headlineRequired", message: "Headline is required for Schema.org Article." }
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
name: "description",
|
|
310
|
+
title: "Description",
|
|
311
|
+
type: "text",
|
|
312
|
+
rows: 3
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
name: "image",
|
|
316
|
+
title: "Image",
|
|
317
|
+
type: "url",
|
|
318
|
+
description: "URL of the article image."
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
name: "author",
|
|
322
|
+
title: "Author",
|
|
323
|
+
type: "object",
|
|
324
|
+
jsonLdType: "Person",
|
|
325
|
+
fields: [
|
|
326
|
+
{
|
|
327
|
+
name: "name",
|
|
328
|
+
title: "Author Name",
|
|
329
|
+
type: "string"
|
|
330
|
+
}
|
|
331
|
+
]
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
name: "publisher",
|
|
335
|
+
title: "Publisher",
|
|
336
|
+
type: "object",
|
|
337
|
+
jsonLdType: "Organization",
|
|
338
|
+
fields: [
|
|
339
|
+
{
|
|
340
|
+
name: "name",
|
|
341
|
+
title: "Publisher Name",
|
|
342
|
+
type: "string"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
name: "logo",
|
|
346
|
+
title: "Publisher Logo",
|
|
347
|
+
type: "object",
|
|
348
|
+
jsonLdType: "ImageObject",
|
|
349
|
+
fields: [
|
|
350
|
+
{
|
|
351
|
+
name: "url",
|
|
352
|
+
title: "Logo URL",
|
|
353
|
+
type: "url"
|
|
354
|
+
}
|
|
355
|
+
]
|
|
356
|
+
}
|
|
357
|
+
]
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
name: "datePublished",
|
|
361
|
+
title: "Date Published",
|
|
362
|
+
type: "date"
|
|
363
|
+
}
|
|
364
|
+
];
|
|
365
|
+
|
|
366
|
+
// src/schema/blogPosting/schema.ts
|
|
367
|
+
var blogPostingFields = [
|
|
368
|
+
{
|
|
369
|
+
name: "headline",
|
|
370
|
+
title: "Headline",
|
|
371
|
+
type: "string",
|
|
372
|
+
required: {
|
|
373
|
+
key: "headlineRequired",
|
|
374
|
+
message: "Headline is required for Schema.org BlogPosting."
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
name: "description",
|
|
379
|
+
title: "Description",
|
|
380
|
+
type: "text",
|
|
381
|
+
rows: 3
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
name: "author",
|
|
385
|
+
title: "Author",
|
|
386
|
+
type: "object",
|
|
387
|
+
jsonLdType: "Person",
|
|
388
|
+
fields: [
|
|
389
|
+
{
|
|
390
|
+
name: "name",
|
|
391
|
+
title: "Author Name",
|
|
392
|
+
type: "string"
|
|
393
|
+
}
|
|
394
|
+
]
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
name: "datePublished",
|
|
398
|
+
title: "Date Published",
|
|
399
|
+
type: "date"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
name: "mainEntityOfPage",
|
|
403
|
+
title: "Main Entity of Page",
|
|
404
|
+
type: "object",
|
|
405
|
+
jsonLdType: "WebPage",
|
|
406
|
+
fields: [
|
|
407
|
+
{
|
|
408
|
+
name: "id",
|
|
409
|
+
title: "Page URL",
|
|
410
|
+
type: "url",
|
|
411
|
+
jsonLdKey: "@id"
|
|
412
|
+
}
|
|
413
|
+
]
|
|
414
|
+
}
|
|
415
|
+
];
|
|
416
|
+
|
|
417
|
+
// src/schema/brand/schema.ts
|
|
418
|
+
var brandFields = [
|
|
419
|
+
{
|
|
420
|
+
name: "name",
|
|
421
|
+
title: "Brand Name",
|
|
422
|
+
type: "string",
|
|
423
|
+
description: "The name of the brand.",
|
|
424
|
+
required: { key: "nameRequired", message: "Brand name is required for Schema.org." }
|
|
425
|
+
}
|
|
426
|
+
];
|
|
427
|
+
|
|
428
|
+
// src/schema/breadcrumbList/schema.ts
|
|
429
|
+
var breadcrumbListFields = [
|
|
430
|
+
{
|
|
431
|
+
name: "itemListElement",
|
|
432
|
+
title: "Breadcrumb Items",
|
|
433
|
+
type: "array",
|
|
434
|
+
jsonLdType: "ListItem",
|
|
435
|
+
fields: [
|
|
436
|
+
{
|
|
437
|
+
name: "position",
|
|
438
|
+
title: "Position",
|
|
439
|
+
type: "number",
|
|
440
|
+
required: { key: "positionRequired", message: "Position is required." }
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
name: "name",
|
|
444
|
+
title: "Label",
|
|
445
|
+
type: "string",
|
|
446
|
+
required: { key: "nameRequired", message: "Label is required." }
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
name: "item",
|
|
450
|
+
title: "URL",
|
|
451
|
+
type: "url"
|
|
452
|
+
}
|
|
453
|
+
]
|
|
454
|
+
}
|
|
455
|
+
];
|
|
456
|
+
|
|
457
|
+
// src/schema/contactPoint/schema.ts
|
|
458
|
+
var contactPointFields = [
|
|
459
|
+
{
|
|
460
|
+
name: "contactType",
|
|
461
|
+
title: "Contact Type",
|
|
462
|
+
type: "string",
|
|
463
|
+
description: 'The type of contact, e.g. "customer support", "sales".',
|
|
464
|
+
required: { key: "contactTypeRequired", message: "Contact type is required for Schema.org." },
|
|
465
|
+
initialValue: "customer support",
|
|
466
|
+
options: [
|
|
467
|
+
{ title: "Customer Support", value: "customer support" },
|
|
468
|
+
{ title: "Sales", value: "sales" },
|
|
469
|
+
{ title: "Technical Support", value: "technical support" },
|
|
470
|
+
{ title: "Billing", value: "billing" },
|
|
471
|
+
{ title: "General Inquiry", value: "general inquiry" }
|
|
472
|
+
]
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
name: "email",
|
|
476
|
+
title: "Email",
|
|
477
|
+
type: "string",
|
|
478
|
+
description: "Contact email address."
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
name: "telephone",
|
|
482
|
+
title: "Telephone",
|
|
483
|
+
type: "string",
|
|
484
|
+
description: "Contact telephone number."
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
name: "availableLanguage",
|
|
488
|
+
title: "Available Languages",
|
|
489
|
+
type: "array",
|
|
490
|
+
of: [{ type: "string" }],
|
|
491
|
+
description: 'Languages supported by this contact point, e.g. "English", "Spanish".',
|
|
492
|
+
initialValue: ["English"]
|
|
493
|
+
}
|
|
494
|
+
];
|
|
495
|
+
|
|
496
|
+
// src/schema/course/schema.ts
|
|
497
|
+
var courseFields = [
|
|
498
|
+
{
|
|
499
|
+
name: "name",
|
|
500
|
+
title: "Course Name",
|
|
501
|
+
type: "string",
|
|
502
|
+
description: "The name of the course.",
|
|
503
|
+
required: { key: "nameRequired", message: "Course name is required for Schema.org." }
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
name: "description",
|
|
507
|
+
title: "Description",
|
|
508
|
+
type: "text",
|
|
509
|
+
rows: 3,
|
|
510
|
+
description: "A short description of the course."
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
name: "provider",
|
|
514
|
+
title: "Provider",
|
|
515
|
+
type: "object",
|
|
516
|
+
description: "The organization that provides this course.",
|
|
517
|
+
jsonLdType: "Organization",
|
|
518
|
+
fields: [
|
|
519
|
+
{
|
|
520
|
+
name: "name",
|
|
521
|
+
title: "Provider Name",
|
|
522
|
+
type: "string",
|
|
523
|
+
description: "Name of the providing organization."
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
name: "sameAs",
|
|
527
|
+
title: "Provider URL",
|
|
528
|
+
type: "url",
|
|
529
|
+
description: "URL of the providing organization."
|
|
530
|
+
}
|
|
531
|
+
]
|
|
532
|
+
}
|
|
533
|
+
];
|
|
534
|
+
|
|
535
|
+
// src/schema/event/schema.ts
|
|
536
|
+
var eventFields = [
|
|
537
|
+
{
|
|
538
|
+
name: "name",
|
|
539
|
+
title: "Event Name",
|
|
540
|
+
type: "string",
|
|
541
|
+
description: "The name of the event.",
|
|
542
|
+
required: { key: "nameRequired", message: "Event name is required for Schema.org." }
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
name: "startDate",
|
|
546
|
+
title: "Start Date",
|
|
547
|
+
type: "date",
|
|
548
|
+
description: "The start date of the event."
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
name: "location",
|
|
552
|
+
title: "Location",
|
|
553
|
+
type: "object",
|
|
554
|
+
description: "The location where the event takes place.",
|
|
555
|
+
jsonLdType: "Place",
|
|
556
|
+
fields: [
|
|
557
|
+
{
|
|
558
|
+
name: "name",
|
|
559
|
+
title: "Venue Name",
|
|
560
|
+
type: "string",
|
|
561
|
+
description: "Name of the venue or location."
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
name: "address",
|
|
565
|
+
title: "Address",
|
|
566
|
+
type: "string",
|
|
567
|
+
description: "Full address as a single string."
|
|
568
|
+
}
|
|
569
|
+
]
|
|
570
|
+
}
|
|
571
|
+
];
|
|
572
|
+
|
|
573
|
+
// src/schema/faqPage/schema.ts
|
|
574
|
+
var faqPageFields = [
|
|
575
|
+
{
|
|
576
|
+
name: "mainEntity",
|
|
577
|
+
title: "FAQ Items",
|
|
578
|
+
type: "array",
|
|
579
|
+
jsonLdType: "Question",
|
|
580
|
+
fields: [
|
|
581
|
+
{
|
|
582
|
+
name: "name",
|
|
583
|
+
title: "Question",
|
|
584
|
+
type: "string",
|
|
585
|
+
required: { key: "questionRequired", message: "Question text is required." }
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
name: "acceptedAnswer",
|
|
589
|
+
title: "Accepted Answer",
|
|
590
|
+
type: "object",
|
|
591
|
+
jsonLdType: "Answer",
|
|
592
|
+
fields: [
|
|
593
|
+
{
|
|
594
|
+
name: "text",
|
|
595
|
+
title: "Answer Text",
|
|
596
|
+
type: "text",
|
|
597
|
+
rows: 3
|
|
598
|
+
}
|
|
599
|
+
]
|
|
600
|
+
}
|
|
601
|
+
]
|
|
602
|
+
}
|
|
603
|
+
];
|
|
604
|
+
|
|
605
|
+
// src/schema/howTo/schema.ts
|
|
606
|
+
var howToFields = [
|
|
607
|
+
{
|
|
608
|
+
name: "name",
|
|
609
|
+
title: "Name",
|
|
610
|
+
type: "string",
|
|
611
|
+
required: { key: "nameRequired", message: "Name is required for Schema.org HowTo." }
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
name: "description",
|
|
615
|
+
title: "Description",
|
|
616
|
+
type: "text",
|
|
617
|
+
rows: 3
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
name: "step",
|
|
621
|
+
title: "Steps",
|
|
622
|
+
type: "array",
|
|
623
|
+
jsonLdType: "HowToStep",
|
|
624
|
+
fields: [
|
|
625
|
+
{
|
|
626
|
+
name: "name",
|
|
627
|
+
title: "Step Name",
|
|
628
|
+
type: "string",
|
|
629
|
+
required: { key: "stepNameRequired", message: "Step name is required." }
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
name: "text",
|
|
633
|
+
title: "Step Description",
|
|
634
|
+
type: "text",
|
|
635
|
+
rows: 2
|
|
636
|
+
}
|
|
637
|
+
]
|
|
638
|
+
}
|
|
639
|
+
];
|
|
640
|
+
|
|
641
|
+
// src/schema/imageObject/schema.ts
|
|
642
|
+
var imageObjectFields = [
|
|
643
|
+
{
|
|
644
|
+
name: "url",
|
|
645
|
+
title: "Image URL",
|
|
646
|
+
type: "url",
|
|
647
|
+
description: "The URL of the image.",
|
|
648
|
+
required: { key: "urlRequired", message: "Image URL is required for Schema.org." }
|
|
649
|
+
},
|
|
650
|
+
{
|
|
651
|
+
name: "width",
|
|
652
|
+
title: "Width",
|
|
653
|
+
type: "number",
|
|
654
|
+
description: "Image width in pixels."
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
name: "height",
|
|
658
|
+
title: "Height",
|
|
659
|
+
type: "number",
|
|
660
|
+
description: "Image height in pixels."
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
name: "caption",
|
|
664
|
+
title: "Caption",
|
|
665
|
+
type: "string",
|
|
666
|
+
description: "Caption or alt text for the image."
|
|
667
|
+
}
|
|
668
|
+
];
|
|
669
|
+
|
|
670
|
+
// src/schema/localBusiness/schema.ts
|
|
671
|
+
var localBusinessFields = [
|
|
672
|
+
{
|
|
673
|
+
name: "name",
|
|
674
|
+
title: "Business Name",
|
|
675
|
+
type: "string",
|
|
676
|
+
description: "The official name of the business.",
|
|
677
|
+
required: { key: "nameRequired", message: "Business name is required for Schema.org." }
|
|
678
|
+
},
|
|
679
|
+
{
|
|
680
|
+
name: "image",
|
|
681
|
+
title: "Image URL",
|
|
682
|
+
type: "url",
|
|
683
|
+
description: "URL to the business image."
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
name: "telephone",
|
|
687
|
+
title: "Telephone",
|
|
688
|
+
type: "string",
|
|
689
|
+
description: "The telephone number of the business."
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
name: "address",
|
|
693
|
+
title: "Address",
|
|
694
|
+
type: "object",
|
|
695
|
+
description: "The physical address of the business.",
|
|
696
|
+
jsonLdType: "PostalAddress",
|
|
697
|
+
fields: [
|
|
698
|
+
{
|
|
699
|
+
name: "streetAddress",
|
|
700
|
+
title: "Street Address",
|
|
701
|
+
type: "string"
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
name: "addressLocality",
|
|
705
|
+
title: "Locality",
|
|
706
|
+
type: "string",
|
|
707
|
+
description: "City or town."
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
name: "addressCountry",
|
|
711
|
+
title: "Country",
|
|
712
|
+
type: "string",
|
|
713
|
+
description: 'Country code, e.g. "US".'
|
|
714
|
+
}
|
|
715
|
+
]
|
|
716
|
+
}
|
|
717
|
+
];
|
|
718
|
+
|
|
719
|
+
// src/schema/offer/schema.ts
|
|
720
|
+
var offerFields = [
|
|
721
|
+
{
|
|
722
|
+
name: "price",
|
|
723
|
+
title: "Price",
|
|
724
|
+
type: "string",
|
|
725
|
+
description: 'The price of the offer, e.g. "199.99".',
|
|
726
|
+
required: { key: "priceRequired", message: "Price is required for Schema.org." }
|
|
727
|
+
},
|
|
728
|
+
{
|
|
729
|
+
name: "priceCurrency",
|
|
730
|
+
title: "Currency",
|
|
731
|
+
type: "string",
|
|
732
|
+
description: 'The currency of the price, e.g. "USD".',
|
|
733
|
+
initialValue: "USD",
|
|
734
|
+
options: [
|
|
735
|
+
{ title: "USD", value: "USD" },
|
|
736
|
+
{ title: "EUR", value: "EUR" },
|
|
737
|
+
{ title: "GBP", value: "GBP" },
|
|
738
|
+
{ title: "INR", value: "INR" },
|
|
739
|
+
{ title: "JPY", value: "JPY" },
|
|
740
|
+
{ title: "CAD", value: "CAD" },
|
|
741
|
+
{ title: "AUD", value: "AUD" }
|
|
742
|
+
]
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
name: "availability",
|
|
746
|
+
title: "Availability",
|
|
747
|
+
type: "url",
|
|
748
|
+
description: 'Schema.org availability URL, e.g. "https://schema.org/InStock".'
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
name: "url",
|
|
752
|
+
title: "Offer URL",
|
|
753
|
+
type: "url",
|
|
754
|
+
description: "URL of the offer page."
|
|
755
|
+
}
|
|
756
|
+
];
|
|
757
|
+
|
|
758
|
+
// src/schema/utils.ts
|
|
759
|
+
function escapeJsonForScript(json) {
|
|
760
|
+
return json.replace(/</g, "\\u003C").replace(/>/g, "\\u003E").replace(/&/g, "\\u0026").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
// src/schema/organization/component.tsx
|
|
764
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
765
|
+
function buildOrganizationJsonLd(data, imageUrlResolver) {
|
|
766
|
+
var _a, _b, _c;
|
|
767
|
+
if (!(data == null ? void 0 : data.name) || !(data == null ? void 0 : data.url)) return null;
|
|
768
|
+
const jsonLd = {
|
|
769
|
+
"@context": "https://schema.org",
|
|
770
|
+
"@type": "Organization",
|
|
771
|
+
name: data.name,
|
|
772
|
+
url: data.url
|
|
773
|
+
};
|
|
774
|
+
const logoUrl = data.logoUrl || (data.logo && imageUrlResolver ? imageUrlResolver(data.logo) : void 0);
|
|
775
|
+
if (logoUrl) jsonLd.logo = logoUrl;
|
|
776
|
+
if (data.description) jsonLd.description = data.description;
|
|
777
|
+
if ((_a = data.sameAs) == null ? void 0 : _a.length) jsonLd.sameAs = data.sameAs;
|
|
778
|
+
if ((_b = data.contactPoint) == null ? void 0 : _b.contactType) {
|
|
779
|
+
const cp = {
|
|
780
|
+
"@type": "ContactPoint",
|
|
781
|
+
contactType: data.contactPoint.contactType
|
|
782
|
+
};
|
|
783
|
+
if (data.contactPoint.email) cp.email = data.contactPoint.email;
|
|
784
|
+
if ((_c = data.contactPoint.availableLanguage) == null ? void 0 : _c.length) {
|
|
785
|
+
cp.availableLanguage = data.contactPoint.availableLanguage;
|
|
786
|
+
}
|
|
787
|
+
jsonLd.contactPoint = cp;
|
|
788
|
+
}
|
|
789
|
+
return jsonLd;
|
|
790
|
+
}
|
|
791
|
+
function OrganizationSchema({
|
|
792
|
+
data,
|
|
793
|
+
imageUrlResolver
|
|
794
|
+
}) {
|
|
795
|
+
const jsonLd = buildOrganizationJsonLd(data, imageUrlResolver);
|
|
796
|
+
if (!jsonLd) return null;
|
|
797
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
798
|
+
"script",
|
|
799
|
+
{
|
|
800
|
+
type: "application/ld+json",
|
|
801
|
+
dangerouslySetInnerHTML: { __html: escapeJsonForScript(JSON.stringify(jsonLd)) }
|
|
802
|
+
}
|
|
803
|
+
);
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
// src/schema/person/schema.ts
|
|
807
|
+
var personFields = [
|
|
808
|
+
{
|
|
809
|
+
name: "name",
|
|
810
|
+
title: "Full Name",
|
|
811
|
+
type: "string",
|
|
812
|
+
description: "The full name of the person.",
|
|
813
|
+
required: { key: "nameRequired", message: "Person name is required for Schema.org." }
|
|
814
|
+
},
|
|
815
|
+
{
|
|
816
|
+
name: "jobTitle",
|
|
817
|
+
title: "Job Title",
|
|
818
|
+
type: "string",
|
|
819
|
+
description: "The job title or role of the person."
|
|
820
|
+
},
|
|
821
|
+
{
|
|
822
|
+
name: "url",
|
|
823
|
+
title: "Profile URL",
|
|
824
|
+
type: "url",
|
|
825
|
+
description: "URL of the person's profile or personal website."
|
|
826
|
+
},
|
|
827
|
+
{
|
|
828
|
+
name: "imageUrl",
|
|
829
|
+
title: "Image URL",
|
|
830
|
+
type: "url",
|
|
831
|
+
description: "URL to a photo/image of this person.",
|
|
832
|
+
jsonLdKey: "image"
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
name: "sameAs",
|
|
836
|
+
title: "Social / External Profiles",
|
|
837
|
+
type: "array",
|
|
838
|
+
of: [{ type: "url" }],
|
|
839
|
+
description: "URLs of social media profiles and other authoritative pages (LinkedIn, GitHub, etc.)."
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
name: "worksFor",
|
|
843
|
+
title: "Works For",
|
|
844
|
+
type: "object",
|
|
845
|
+
description: "The organization this person works for.",
|
|
846
|
+
jsonLdType: "Organization",
|
|
847
|
+
fields: [
|
|
848
|
+
{
|
|
849
|
+
name: "name",
|
|
850
|
+
title: "Organization Name",
|
|
851
|
+
type: "string",
|
|
852
|
+
description: "Name of the organization."
|
|
853
|
+
}
|
|
854
|
+
]
|
|
855
|
+
}
|
|
856
|
+
];
|
|
857
|
+
|
|
858
|
+
// src/schema/place/schema.ts
|
|
859
|
+
var placeFields = [
|
|
860
|
+
{
|
|
861
|
+
name: "name",
|
|
862
|
+
title: "Place Name",
|
|
863
|
+
type: "string",
|
|
864
|
+
description: "The name of the place.",
|
|
865
|
+
required: { key: "nameRequired", message: "Place name is required for Schema.org." }
|
|
866
|
+
},
|
|
867
|
+
{
|
|
868
|
+
name: "address",
|
|
869
|
+
title: "Address",
|
|
870
|
+
type: "object",
|
|
871
|
+
description: "The physical address of the place.",
|
|
872
|
+
jsonLdType: "PostalAddress",
|
|
873
|
+
fields: [
|
|
874
|
+
{
|
|
875
|
+
name: "addressLocality",
|
|
876
|
+
title: "Locality",
|
|
877
|
+
type: "string",
|
|
878
|
+
description: "City or town."
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
name: "addressCountry",
|
|
882
|
+
title: "Country",
|
|
883
|
+
type: "string",
|
|
884
|
+
description: 'Country code, e.g. "US".'
|
|
885
|
+
}
|
|
886
|
+
]
|
|
887
|
+
}
|
|
888
|
+
];
|
|
889
|
+
|
|
890
|
+
// src/schema/postalAddress/schema.ts
|
|
891
|
+
var postalAddressFields = [
|
|
892
|
+
{
|
|
893
|
+
name: "streetAddress",
|
|
894
|
+
title: "Street Address",
|
|
895
|
+
type: "string",
|
|
896
|
+
description: 'The street address, e.g. "123 Main St".'
|
|
897
|
+
},
|
|
898
|
+
{
|
|
899
|
+
name: "addressLocality",
|
|
900
|
+
title: "City / Locality",
|
|
901
|
+
type: "string",
|
|
902
|
+
description: 'The city or locality, e.g. "New York".'
|
|
903
|
+
},
|
|
904
|
+
{
|
|
905
|
+
name: "postalCode",
|
|
906
|
+
title: "Postal Code",
|
|
907
|
+
type: "string",
|
|
908
|
+
description: 'The postal or ZIP code, e.g. "10001".'
|
|
909
|
+
},
|
|
910
|
+
{
|
|
911
|
+
name: "addressCountry",
|
|
912
|
+
title: "Country",
|
|
913
|
+
type: "string",
|
|
914
|
+
description: 'The country code, e.g. "US".'
|
|
915
|
+
}
|
|
916
|
+
];
|
|
917
|
+
|
|
918
|
+
// src/schema/product/schema.ts
|
|
919
|
+
var productFields = [
|
|
920
|
+
{
|
|
921
|
+
name: "name",
|
|
922
|
+
title: "Product Name",
|
|
923
|
+
type: "string",
|
|
924
|
+
description: "The name of the product.",
|
|
925
|
+
required: { key: "nameRequired", message: "Product name is required for Schema.org." }
|
|
926
|
+
},
|
|
927
|
+
{
|
|
928
|
+
name: "imageUrl",
|
|
929
|
+
title: "Image URL",
|
|
930
|
+
type: "url",
|
|
931
|
+
description: "URL to the product image.",
|
|
932
|
+
jsonLdKey: "image"
|
|
933
|
+
},
|
|
934
|
+
{
|
|
935
|
+
name: "description",
|
|
936
|
+
title: "Description",
|
|
937
|
+
type: "text",
|
|
938
|
+
rows: 3,
|
|
939
|
+
description: "A short description of the product."
|
|
940
|
+
},
|
|
941
|
+
{
|
|
942
|
+
name: "brand",
|
|
943
|
+
title: "Brand",
|
|
944
|
+
type: "object",
|
|
945
|
+
description: "The brand of the product.",
|
|
946
|
+
jsonLdType: "Brand",
|
|
947
|
+
fields: [
|
|
948
|
+
{
|
|
949
|
+
name: "name",
|
|
950
|
+
title: "Brand Name",
|
|
951
|
+
type: "string",
|
|
952
|
+
description: "Name of the brand."
|
|
953
|
+
}
|
|
954
|
+
]
|
|
955
|
+
}
|
|
956
|
+
];
|
|
957
|
+
|
|
958
|
+
// src/schema/review/schema.ts
|
|
959
|
+
var reviewFields = [
|
|
960
|
+
{
|
|
961
|
+
name: "reviewRating",
|
|
962
|
+
title: "Review Rating",
|
|
963
|
+
type: "object",
|
|
964
|
+
jsonLdType: "Rating",
|
|
965
|
+
fields: [
|
|
966
|
+
{
|
|
967
|
+
name: "ratingValue",
|
|
968
|
+
title: "Rating Value",
|
|
969
|
+
type: "string",
|
|
970
|
+
required: {
|
|
971
|
+
key: "ratingValueRequired",
|
|
972
|
+
message: "Rating value is required for Schema.org Review."
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
]
|
|
976
|
+
},
|
|
977
|
+
{
|
|
978
|
+
name: "author",
|
|
979
|
+
title: "Author",
|
|
980
|
+
type: "object",
|
|
981
|
+
jsonLdType: "Person",
|
|
982
|
+
fields: [
|
|
983
|
+
{
|
|
984
|
+
name: "name",
|
|
985
|
+
title: "Author Name",
|
|
986
|
+
type: "string",
|
|
987
|
+
required: {
|
|
988
|
+
key: "authorNameRequired",
|
|
989
|
+
message: "Author name is required for Schema.org Review."
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
]
|
|
993
|
+
},
|
|
994
|
+
{
|
|
995
|
+
name: "reviewBody",
|
|
996
|
+
title: "Review Body",
|
|
997
|
+
type: "text",
|
|
998
|
+
rows: 3
|
|
999
|
+
}
|
|
1000
|
+
];
|
|
1001
|
+
|
|
1002
|
+
// src/schema/SchemaOrgScript.tsx
|
|
1003
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
1004
|
+
function SchemaOrgScript({
|
|
1005
|
+
jsonLd
|
|
1006
|
+
}) {
|
|
1007
|
+
if (!jsonLd) return null;
|
|
1008
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1009
|
+
"script",
|
|
1010
|
+
{
|
|
1011
|
+
type: "application/ld+json",
|
|
1012
|
+
dangerouslySetInnerHTML: { __html: escapeJsonForScript(JSON.stringify(jsonLd)) }
|
|
1013
|
+
}
|
|
1014
|
+
);
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
// src/schema/softwareApplication/schema.ts
|
|
1018
|
+
var softwareApplicationFields = [
|
|
1019
|
+
{
|
|
1020
|
+
name: "name",
|
|
1021
|
+
title: "Application Name",
|
|
1022
|
+
type: "string",
|
|
1023
|
+
description: "The name of the software application.",
|
|
1024
|
+
required: {
|
|
1025
|
+
key: "nameRequired",
|
|
1026
|
+
message: "Application name is required for Schema.org."
|
|
1027
|
+
}
|
|
1028
|
+
},
|
|
1029
|
+
{
|
|
1030
|
+
name: "applicationCategory",
|
|
1031
|
+
title: "Application Category",
|
|
1032
|
+
type: "string",
|
|
1033
|
+
description: "The category of the application.",
|
|
1034
|
+
options: [
|
|
1035
|
+
{ title: "Developer Application", value: "DeveloperApplication" },
|
|
1036
|
+
{ title: "Business Application", value: "BusinessApplication" },
|
|
1037
|
+
{ title: "Game Application", value: "GameApplication" },
|
|
1038
|
+
{ title: "Educational Application", value: "EducationalApplication" },
|
|
1039
|
+
{ title: "Utilities Application", value: "UtilitiesApplication" },
|
|
1040
|
+
{ title: "Social Networking Application", value: "SocialNetworkingApplication" }
|
|
1041
|
+
]
|
|
1042
|
+
},
|
|
1043
|
+
{
|
|
1044
|
+
name: "operatingSystem",
|
|
1045
|
+
title: "Operating System",
|
|
1046
|
+
type: "string",
|
|
1047
|
+
description: 'The supported operating systems, e.g. "Windows, macOS".'
|
|
1048
|
+
},
|
|
1049
|
+
{
|
|
1050
|
+
name: "url",
|
|
1051
|
+
title: "Application URL",
|
|
1052
|
+
type: "url",
|
|
1053
|
+
description: "URL of the software application."
|
|
1054
|
+
}
|
|
1055
|
+
];
|
|
1056
|
+
|
|
1057
|
+
// src/schema/videoObject/schema.ts
|
|
1058
|
+
var videoObjectFields = [
|
|
1059
|
+
{
|
|
1060
|
+
name: "name",
|
|
1061
|
+
title: "Video Name",
|
|
1062
|
+
type: "string",
|
|
1063
|
+
description: "The name of the video.",
|
|
1064
|
+
required: { key: "nameRequired", message: "Video name is required for Schema.org." }
|
|
1065
|
+
},
|
|
1066
|
+
{
|
|
1067
|
+
name: "description",
|
|
1068
|
+
title: "Description",
|
|
1069
|
+
type: "text",
|
|
1070
|
+
rows: 3,
|
|
1071
|
+
description: "A description of the video."
|
|
1072
|
+
},
|
|
1073
|
+
{
|
|
1074
|
+
name: "thumbnailUrl",
|
|
1075
|
+
title: "Thumbnail URL",
|
|
1076
|
+
type: "url",
|
|
1077
|
+
description: "URL of the video thumbnail image."
|
|
1078
|
+
},
|
|
1079
|
+
{
|
|
1080
|
+
name: "uploadDate",
|
|
1081
|
+
title: "Upload Date",
|
|
1082
|
+
type: "date",
|
|
1083
|
+
description: "The date the video was uploaded."
|
|
1084
|
+
},
|
|
1085
|
+
{
|
|
1086
|
+
name: "contentUrl",
|
|
1087
|
+
title: "Content URL",
|
|
1088
|
+
type: "url",
|
|
1089
|
+
description: "URL to the actual video file."
|
|
1090
|
+
}
|
|
1091
|
+
];
|
|
1092
|
+
|
|
1093
|
+
// src/schema/webApplication/schema.ts
|
|
1094
|
+
var webApplicationFields = [
|
|
1095
|
+
{
|
|
1096
|
+
name: "name",
|
|
1097
|
+
title: "Application Name",
|
|
1098
|
+
type: "string",
|
|
1099
|
+
description: "The name of the web application.",
|
|
1100
|
+
required: {
|
|
1101
|
+
key: "nameRequired",
|
|
1102
|
+
message: "Application name is required for Schema.org."
|
|
1103
|
+
}
|
|
1104
|
+
},
|
|
1105
|
+
{
|
|
1106
|
+
name: "url",
|
|
1107
|
+
title: "Application URL",
|
|
1108
|
+
type: "url",
|
|
1109
|
+
description: "URL of the web application.",
|
|
1110
|
+
required: { key: "urlRequired", message: "Application URL is required for Schema.org." }
|
|
1111
|
+
},
|
|
1112
|
+
{
|
|
1113
|
+
name: "applicationCategory",
|
|
1114
|
+
title: "Application Category",
|
|
1115
|
+
type: "string",
|
|
1116
|
+
description: "The category of the application.",
|
|
1117
|
+
options: [
|
|
1118
|
+
{ title: "Developer Application", value: "DeveloperApplication" },
|
|
1119
|
+
{ title: "Business Application", value: "BusinessApplication" },
|
|
1120
|
+
{ title: "Game Application", value: "GameApplication" },
|
|
1121
|
+
{ title: "Educational Application", value: "EducationalApplication" },
|
|
1122
|
+
{ title: "Utilities Application", value: "UtilitiesApplication" },
|
|
1123
|
+
{ title: "Social Networking Application", value: "SocialNetworkingApplication" }
|
|
1124
|
+
]
|
|
1125
|
+
},
|
|
1126
|
+
{
|
|
1127
|
+
name: "operatingSystem",
|
|
1128
|
+
title: "Operating System",
|
|
1129
|
+
type: "string",
|
|
1130
|
+
description: "The supported operating systems.",
|
|
1131
|
+
initialValue: "All"
|
|
1132
|
+
}
|
|
1133
|
+
];
|
|
1134
|
+
|
|
1135
|
+
// src/schema/webPage/schema.ts
|
|
1136
|
+
var webPageFields = [
|
|
1137
|
+
{
|
|
1138
|
+
name: "name",
|
|
1139
|
+
title: "Page Name",
|
|
1140
|
+
type: "string",
|
|
1141
|
+
description: "The title of the page.",
|
|
1142
|
+
required: { key: "nameRequired", message: "Page name is required for Schema.org." }
|
|
1143
|
+
},
|
|
1144
|
+
{
|
|
1145
|
+
name: "url",
|
|
1146
|
+
title: "Page URL",
|
|
1147
|
+
type: "url",
|
|
1148
|
+
description: "The full URL of the page.",
|
|
1149
|
+
required: { key: "urlRequired", message: "Page URL is required for Schema.org." }
|
|
1150
|
+
},
|
|
1151
|
+
{
|
|
1152
|
+
name: "description",
|
|
1153
|
+
title: "Description",
|
|
1154
|
+
type: "text",
|
|
1155
|
+
rows: 3,
|
|
1156
|
+
description: "A short description of the page."
|
|
1157
|
+
},
|
|
1158
|
+
{
|
|
1159
|
+
name: "inLanguage",
|
|
1160
|
+
title: "Language",
|
|
1161
|
+
type: "string",
|
|
1162
|
+
description: 'The language of the page content, e.g. "en".',
|
|
1163
|
+
initialValue: "en",
|
|
1164
|
+
options: [
|
|
1165
|
+
{ title: "English", value: "en" },
|
|
1166
|
+
{ title: "Spanish", value: "es" },
|
|
1167
|
+
{ title: "French", value: "fr" },
|
|
1168
|
+
{ title: "German", value: "de" },
|
|
1169
|
+
{ title: "Portuguese", value: "pt" },
|
|
1170
|
+
{ title: "Italian", value: "it" },
|
|
1171
|
+
{ title: "Dutch", value: "nl" },
|
|
1172
|
+
{ title: "Japanese", value: "ja" },
|
|
1173
|
+
{ title: "Chinese", value: "zh" },
|
|
1174
|
+
{ title: "Korean", value: "ko" },
|
|
1175
|
+
{ title: "Hindi", value: "hi" },
|
|
1176
|
+
{ title: "Arabic", value: "ar" }
|
|
1177
|
+
]
|
|
1178
|
+
},
|
|
1179
|
+
{
|
|
1180
|
+
name: "isPartOf",
|
|
1181
|
+
title: "Part Of (Website)",
|
|
1182
|
+
type: "object",
|
|
1183
|
+
description: "The website this page belongs to.",
|
|
1184
|
+
jsonLdType: "WebSite",
|
|
1185
|
+
fields: [
|
|
1186
|
+
{
|
|
1187
|
+
name: "url",
|
|
1188
|
+
title: "Website URL",
|
|
1189
|
+
type: "url",
|
|
1190
|
+
description: "URL of the parent website."
|
|
1191
|
+
}
|
|
1192
|
+
]
|
|
1193
|
+
}
|
|
1194
|
+
];
|
|
1195
|
+
|
|
1196
|
+
// src/schema/website/component.tsx
|
|
1197
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
1198
|
+
function buildWebsiteJsonLd(data) {
|
|
1199
|
+
var _a;
|
|
1200
|
+
if (!(data == null ? void 0 : data.name) || !(data == null ? void 0 : data.url)) return null;
|
|
1201
|
+
const jsonLd = {
|
|
1202
|
+
"@context": "https://schema.org",
|
|
1203
|
+
"@type": "WebSite",
|
|
1204
|
+
name: data.name,
|
|
1205
|
+
url: data.url
|
|
1206
|
+
};
|
|
1207
|
+
if (data.description) jsonLd.description = data.description;
|
|
1208
|
+
if (data.inLanguage) jsonLd.inLanguage = data.inLanguage;
|
|
1209
|
+
if ((_a = data.publisher) == null ? void 0 : _a.name) {
|
|
1210
|
+
const publisher = {
|
|
1211
|
+
"@type": "Organization",
|
|
1212
|
+
name: data.publisher.name
|
|
1213
|
+
};
|
|
1214
|
+
if (data.publisher.url) publisher.url = data.publisher.url;
|
|
1215
|
+
if (data.publisher.logoUrl) {
|
|
1216
|
+
publisher.logo = {
|
|
1217
|
+
"@type": "ImageObject",
|
|
1218
|
+
url: data.publisher.logoUrl
|
|
1219
|
+
};
|
|
1220
|
+
}
|
|
1221
|
+
jsonLd.publisher = publisher;
|
|
1222
|
+
}
|
|
1223
|
+
return jsonLd;
|
|
1224
|
+
}
|
|
1225
|
+
function WebsiteSchema({ data }) {
|
|
1226
|
+
const jsonLd = buildWebsiteJsonLd(data);
|
|
1227
|
+
if (!jsonLd) return null;
|
|
1228
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1229
|
+
"script",
|
|
1230
|
+
{
|
|
1231
|
+
type: "application/ld+json",
|
|
1232
|
+
dangerouslySetInnerHTML: { __html: escapeJsonForScript(JSON.stringify(jsonLd)) }
|
|
1233
|
+
}
|
|
1234
|
+
);
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1237
|
+
// src/schema/SchemaOrgScripts.tsx
|
|
1238
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1239
|
+
var GENERIC_TYPES = {
|
|
1240
|
+
schemaOrgWebPage: { schemaType: "WebPage", fields: webPageFields, requiredFields: ["name"] },
|
|
1241
|
+
schemaOrgPerson: { schemaType: "Person", fields: personFields, requiredFields: ["name"] },
|
|
1242
|
+
schemaOrgBreadcrumbList: {
|
|
1243
|
+
schemaType: "BreadcrumbList",
|
|
1244
|
+
fields: breadcrumbListFields,
|
|
1245
|
+
requiredFields: []
|
|
1246
|
+
},
|
|
1247
|
+
schemaOrgImageObject: {
|
|
1248
|
+
schemaType: "ImageObject",
|
|
1249
|
+
fields: imageObjectFields,
|
|
1250
|
+
requiredFields: ["url"]
|
|
1251
|
+
},
|
|
1252
|
+
schemaOrgArticle: { schemaType: "Article", fields: articleFields, requiredFields: ["headline"] },
|
|
1253
|
+
schemaOrgBlogPosting: {
|
|
1254
|
+
schemaType: "BlogPosting",
|
|
1255
|
+
fields: blogPostingFields,
|
|
1256
|
+
requiredFields: ["headline"]
|
|
1257
|
+
},
|
|
1258
|
+
schemaOrgFAQPage: { schemaType: "FAQPage", fields: faqPageFields, requiredFields: [] },
|
|
1259
|
+
schemaOrgHowTo: { schemaType: "HowTo", fields: howToFields, requiredFields: ["name"] },
|
|
1260
|
+
schemaOrgProduct: { schemaType: "Product", fields: productFields, requiredFields: ["name"] },
|
|
1261
|
+
schemaOrgOffer: { schemaType: "Offer", fields: offerFields, requiredFields: ["price"] },
|
|
1262
|
+
schemaOrgAggregateRating: {
|
|
1263
|
+
schemaType: "AggregateRating",
|
|
1264
|
+
fields: aggregateRatingFields,
|
|
1265
|
+
requiredFields: ["ratingValue"]
|
|
1266
|
+
},
|
|
1267
|
+
schemaOrgReview: { schemaType: "Review", fields: reviewFields, requiredFields: [] },
|
|
1268
|
+
schemaOrgBrand: { schemaType: "Brand", fields: brandFields, requiredFields: ["name"] },
|
|
1269
|
+
schemaOrgLocalBusiness: {
|
|
1270
|
+
schemaType: "LocalBusiness",
|
|
1271
|
+
fields: localBusinessFields,
|
|
1272
|
+
requiredFields: ["name"]
|
|
1273
|
+
},
|
|
1274
|
+
schemaOrgPostalAddress: {
|
|
1275
|
+
schemaType: "PostalAddress",
|
|
1276
|
+
fields: postalAddressFields,
|
|
1277
|
+
requiredFields: []
|
|
1278
|
+
},
|
|
1279
|
+
schemaOrgContactPoint: {
|
|
1280
|
+
schemaType: "ContactPoint",
|
|
1281
|
+
fields: contactPointFields,
|
|
1282
|
+
requiredFields: []
|
|
1283
|
+
},
|
|
1284
|
+
schemaOrgSoftwareApplication: {
|
|
1285
|
+
schemaType: "SoftwareApplication",
|
|
1286
|
+
fields: softwareApplicationFields,
|
|
1287
|
+
requiredFields: ["name"]
|
|
1288
|
+
},
|
|
1289
|
+
schemaOrgWebApplication: {
|
|
1290
|
+
schemaType: "WebApplication",
|
|
1291
|
+
fields: webApplicationFields,
|
|
1292
|
+
requiredFields: ["name"]
|
|
1293
|
+
},
|
|
1294
|
+
schemaOrgEvent: { schemaType: "Event", fields: eventFields, requiredFields: ["name"] },
|
|
1295
|
+
schemaOrgPlace: { schemaType: "Place", fields: placeFields, requiredFields: ["name"] },
|
|
1296
|
+
schemaOrgVideoObject: {
|
|
1297
|
+
schemaType: "VideoObject",
|
|
1298
|
+
fields: videoObjectFields,
|
|
1299
|
+
requiredFields: ["name"]
|
|
1300
|
+
},
|
|
1301
|
+
schemaOrgCourse: { schemaType: "Course", fields: courseFields, requiredFields: ["name"] }
|
|
1302
|
+
};
|
|
1303
|
+
function buildJsonLdForItem(item) {
|
|
1304
|
+
const type = item._type;
|
|
1305
|
+
if (!type) return null;
|
|
1306
|
+
if (type === "schemaOrgWebsite") {
|
|
1307
|
+
return buildWebsiteJsonLd(item);
|
|
1308
|
+
}
|
|
1309
|
+
if (type === "schemaOrgOrganization") {
|
|
1310
|
+
return buildOrganizationJsonLd(item);
|
|
1311
|
+
}
|
|
1312
|
+
const entry = GENERIC_TYPES[type];
|
|
1313
|
+
if (!entry) return null;
|
|
1314
|
+
return buildGenericJsonLd(entry.schemaType, item, entry.fields, entry.requiredFields);
|
|
1315
|
+
}
|
|
1316
|
+
function SchemaOrgScripts({ data }) {
|
|
1317
|
+
if (!(data == null ? void 0 : data.length)) return null;
|
|
1318
|
+
const scripts = data.map((item) => buildJsonLdForItem(item)).filter((jsonLd) => jsonLd !== null);
|
|
1319
|
+
if (!scripts.length) return null;
|
|
1320
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: scripts.map((jsonLd) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SchemaOrgScript, { jsonLd }, JSON.stringify(jsonLd))) });
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1323
|
+
// src/schema/aggregateRating/component.tsx
|
|
1324
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
1325
|
+
function buildAggregateRatingJsonLd(data) {
|
|
1326
|
+
return buildGenericJsonLd(
|
|
1327
|
+
"AggregateRating",
|
|
1328
|
+
data,
|
|
1329
|
+
aggregateRatingFields,
|
|
1330
|
+
["ratingValue"]
|
|
1331
|
+
);
|
|
1332
|
+
}
|
|
1333
|
+
function AggregateRatingSchema({ data }) {
|
|
1334
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SchemaOrgScript, { jsonLd: buildAggregateRatingJsonLd(data) });
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1337
|
+
// src/schema/article/component.tsx
|
|
1338
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1339
|
+
function buildArticleJsonLd(data) {
|
|
1340
|
+
return buildGenericJsonLd(
|
|
1341
|
+
"Article",
|
|
1342
|
+
data,
|
|
1343
|
+
articleFields,
|
|
1344
|
+
["headline"]
|
|
1345
|
+
);
|
|
1346
|
+
}
|
|
1347
|
+
function ArticleSchema({ data }) {
|
|
1348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SchemaOrgScript, { jsonLd: buildArticleJsonLd(data) });
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
// src/schema/blogPosting/component.tsx
|
|
1352
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1353
|
+
function buildBlogPostingJsonLd(data) {
|
|
1354
|
+
return buildGenericJsonLd(
|
|
1355
|
+
"BlogPosting",
|
|
1356
|
+
data,
|
|
1357
|
+
blogPostingFields,
|
|
1358
|
+
["headline"]
|
|
1359
|
+
);
|
|
1360
|
+
}
|
|
1361
|
+
function BlogPostingSchema({ data }) {
|
|
1362
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SchemaOrgScript, { jsonLd: buildBlogPostingJsonLd(data) });
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
// src/schema/brand/component.tsx
|
|
1366
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1367
|
+
function buildBrandJsonLd(data) {
|
|
1368
|
+
return buildGenericJsonLd(
|
|
1369
|
+
"Brand",
|
|
1370
|
+
data,
|
|
1371
|
+
brandFields,
|
|
1372
|
+
["name"]
|
|
1373
|
+
);
|
|
1374
|
+
}
|
|
1375
|
+
function BrandSchema({ data }) {
|
|
1376
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SchemaOrgScript, { jsonLd: buildBrandJsonLd(data) });
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1379
|
+
// src/schema/breadcrumbList/component.tsx
|
|
1380
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1381
|
+
function buildBreadcrumbListJsonLd(data) {
|
|
1382
|
+
return buildGenericJsonLd(
|
|
1383
|
+
"BreadcrumbList",
|
|
1384
|
+
data,
|
|
1385
|
+
breadcrumbListFields,
|
|
1386
|
+
[]
|
|
1387
|
+
);
|
|
1388
|
+
}
|
|
1389
|
+
function BreadcrumbListSchema({ data }) {
|
|
1390
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SchemaOrgScript, { jsonLd: buildBreadcrumbListJsonLd(data) });
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
// src/schema/contactPoint/component.tsx
|
|
1394
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1395
|
+
function buildContactPointJsonLd(data) {
|
|
1396
|
+
return buildGenericJsonLd(
|
|
1397
|
+
"ContactPoint",
|
|
1398
|
+
data,
|
|
1399
|
+
contactPointFields,
|
|
1400
|
+
["contactType"]
|
|
1401
|
+
);
|
|
1402
|
+
}
|
|
1403
|
+
function ContactPointSchema({ data }) {
|
|
1404
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SchemaOrgScript, { jsonLd: buildContactPointJsonLd(data) });
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
// src/schema/course/component.tsx
|
|
1408
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1409
|
+
function buildCourseJsonLd(data) {
|
|
1410
|
+
return buildGenericJsonLd(
|
|
1411
|
+
"Course",
|
|
1412
|
+
data,
|
|
1413
|
+
courseFields,
|
|
1414
|
+
["name"]
|
|
1415
|
+
);
|
|
1416
|
+
}
|
|
1417
|
+
function CourseSchema({ data }) {
|
|
1418
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SchemaOrgScript, { jsonLd: buildCourseJsonLd(data) });
|
|
1419
|
+
}
|
|
1420
|
+
|
|
1421
|
+
// src/schema/event/component.tsx
|
|
1422
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1423
|
+
function buildEventJsonLd(data) {
|
|
1424
|
+
return buildGenericJsonLd(
|
|
1425
|
+
"Event",
|
|
1426
|
+
data,
|
|
1427
|
+
eventFields,
|
|
1428
|
+
["name"]
|
|
1429
|
+
);
|
|
1430
|
+
}
|
|
1431
|
+
function EventSchema({ data }) {
|
|
1432
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SchemaOrgScript, { jsonLd: buildEventJsonLd(data) });
|
|
1433
|
+
}
|
|
1434
|
+
|
|
1435
|
+
// src/schema/faqPage/component.tsx
|
|
1436
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1437
|
+
function buildFAQPageJsonLd(data) {
|
|
1438
|
+
return buildGenericJsonLd(
|
|
1439
|
+
"FAQPage",
|
|
1440
|
+
data,
|
|
1441
|
+
faqPageFields,
|
|
1442
|
+
[]
|
|
1443
|
+
);
|
|
1444
|
+
}
|
|
1445
|
+
function FAQPageSchema({ data }) {
|
|
1446
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SchemaOrgScript, { jsonLd: buildFAQPageJsonLd(data) });
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1449
|
+
// src/schema/howTo/component.tsx
|
|
1450
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1451
|
+
function buildHowToJsonLd(data) {
|
|
1452
|
+
return buildGenericJsonLd(
|
|
1453
|
+
"HowTo",
|
|
1454
|
+
data,
|
|
1455
|
+
howToFields,
|
|
1456
|
+
["name"]
|
|
1457
|
+
);
|
|
1458
|
+
}
|
|
1459
|
+
function HowToSchema({ data }) {
|
|
1460
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(SchemaOrgScript, { jsonLd: buildHowToJsonLd(data) });
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
// src/schema/imageObject/component.tsx
|
|
1464
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1465
|
+
function buildImageObjectJsonLd(data) {
|
|
1466
|
+
return buildGenericJsonLd(
|
|
1467
|
+
"ImageObject",
|
|
1468
|
+
data,
|
|
1469
|
+
imageObjectFields,
|
|
1470
|
+
["url"]
|
|
1471
|
+
);
|
|
1472
|
+
}
|
|
1473
|
+
function ImageObjectSchema({ data }) {
|
|
1474
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(SchemaOrgScript, { jsonLd: buildImageObjectJsonLd(data) });
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
// src/schema/localBusiness/component.tsx
|
|
1478
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1479
|
+
function buildLocalBusinessJsonLd(data) {
|
|
1480
|
+
return buildGenericJsonLd(
|
|
1481
|
+
"LocalBusiness",
|
|
1482
|
+
data,
|
|
1483
|
+
localBusinessFields,
|
|
1484
|
+
["name"]
|
|
1485
|
+
);
|
|
1486
|
+
}
|
|
1487
|
+
function LocalBusinessSchema({ data }) {
|
|
1488
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SchemaOrgScript, { jsonLd: buildLocalBusinessJsonLd(data) });
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
// src/schema/offer/component.tsx
|
|
1492
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1493
|
+
function buildOfferJsonLd(data) {
|
|
1494
|
+
return buildGenericJsonLd(
|
|
1495
|
+
"Offer",
|
|
1496
|
+
data,
|
|
1497
|
+
offerFields,
|
|
1498
|
+
["price"]
|
|
1499
|
+
);
|
|
1500
|
+
}
|
|
1501
|
+
function OfferSchema({ data }) {
|
|
1502
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SchemaOrgScript, { jsonLd: buildOfferJsonLd(data) });
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1505
|
+
// src/schema/person/component.tsx
|
|
1506
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1507
|
+
function buildPersonJsonLd(data) {
|
|
1508
|
+
return buildGenericJsonLd(
|
|
1509
|
+
"Person",
|
|
1510
|
+
data,
|
|
1511
|
+
personFields,
|
|
1512
|
+
["name"]
|
|
1513
|
+
);
|
|
1514
|
+
}
|
|
1515
|
+
function PersonSchema({ data }) {
|
|
1516
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SchemaOrgScript, { jsonLd: buildPersonJsonLd(data) });
|
|
1517
|
+
}
|
|
1518
|
+
|
|
1519
|
+
// src/schema/place/component.tsx
|
|
1520
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1521
|
+
function buildPlaceJsonLd(data) {
|
|
1522
|
+
return buildGenericJsonLd(
|
|
1523
|
+
"Place",
|
|
1524
|
+
data,
|
|
1525
|
+
placeFields,
|
|
1526
|
+
["name"]
|
|
1527
|
+
);
|
|
1528
|
+
}
|
|
1529
|
+
function PlaceSchema({ data }) {
|
|
1530
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SchemaOrgScript, { jsonLd: buildPlaceJsonLd(data) });
|
|
1531
|
+
}
|
|
1532
|
+
|
|
1533
|
+
// src/schema/postalAddress/component.tsx
|
|
1534
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1535
|
+
function buildPostalAddressJsonLd(data) {
|
|
1536
|
+
return buildGenericJsonLd(
|
|
1537
|
+
"PostalAddress",
|
|
1538
|
+
data,
|
|
1539
|
+
postalAddressFields,
|
|
1540
|
+
[]
|
|
1541
|
+
);
|
|
1542
|
+
}
|
|
1543
|
+
function PostalAddressSchema({ data }) {
|
|
1544
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SchemaOrgScript, { jsonLd: buildPostalAddressJsonLd(data) });
|
|
1545
|
+
}
|
|
1546
|
+
|
|
1547
|
+
// src/schema/product/component.tsx
|
|
1548
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1549
|
+
function buildProductJsonLd(data) {
|
|
1550
|
+
return buildGenericJsonLd(
|
|
1551
|
+
"Product",
|
|
1552
|
+
data,
|
|
1553
|
+
productFields,
|
|
1554
|
+
["name"]
|
|
1555
|
+
);
|
|
1556
|
+
}
|
|
1557
|
+
function ProductSchema({ data }) {
|
|
1558
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SchemaOrgScript, { jsonLd: buildProductJsonLd(data) });
|
|
1559
|
+
}
|
|
1560
|
+
|
|
1561
|
+
// src/schema/review/component.tsx
|
|
1562
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1563
|
+
function buildReviewJsonLd(data) {
|
|
1564
|
+
return buildGenericJsonLd(
|
|
1565
|
+
"Review",
|
|
1566
|
+
data,
|
|
1567
|
+
reviewFields,
|
|
1568
|
+
[]
|
|
1569
|
+
);
|
|
1570
|
+
}
|
|
1571
|
+
function ReviewSchema({ data }) {
|
|
1572
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SchemaOrgScript, { jsonLd: buildReviewJsonLd(data) });
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1575
|
+
// src/schema/softwareApplication/component.tsx
|
|
1576
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1577
|
+
function buildSoftwareApplicationJsonLd(data) {
|
|
1578
|
+
return buildGenericJsonLd(
|
|
1579
|
+
"SoftwareApplication",
|
|
1580
|
+
data,
|
|
1581
|
+
softwareApplicationFields,
|
|
1582
|
+
["name"]
|
|
1583
|
+
);
|
|
1584
|
+
}
|
|
1585
|
+
function SoftwareApplicationSchema({
|
|
1586
|
+
data
|
|
1587
|
+
}) {
|
|
1588
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SchemaOrgScript, { jsonLd: buildSoftwareApplicationJsonLd(data) });
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
// src/schema/videoObject/component.tsx
|
|
1592
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1593
|
+
function buildVideoObjectJsonLd(data) {
|
|
1594
|
+
return buildGenericJsonLd(
|
|
1595
|
+
"VideoObject",
|
|
1596
|
+
data,
|
|
1597
|
+
videoObjectFields,
|
|
1598
|
+
["name"]
|
|
1599
|
+
);
|
|
1600
|
+
}
|
|
1601
|
+
function VideoObjectSchema({ data }) {
|
|
1602
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SchemaOrgScript, { jsonLd: buildVideoObjectJsonLd(data) });
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
// src/schema/webApplication/component.tsx
|
|
1606
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1607
|
+
function buildWebApplicationJsonLd(data) {
|
|
1608
|
+
return buildGenericJsonLd(
|
|
1609
|
+
"WebApplication",
|
|
1610
|
+
data,
|
|
1611
|
+
webApplicationFields,
|
|
1612
|
+
["name", "url"]
|
|
1613
|
+
);
|
|
1614
|
+
}
|
|
1615
|
+
function WebApplicationSchema({ data }) {
|
|
1616
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SchemaOrgScript, { jsonLd: buildWebApplicationJsonLd(data) });
|
|
1617
|
+
}
|
|
1618
|
+
|
|
1619
|
+
// src/schema/webPage/component.tsx
|
|
1620
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1621
|
+
function buildWebPageJsonLd(data) {
|
|
1622
|
+
return buildGenericJsonLd(
|
|
1623
|
+
"WebPage",
|
|
1624
|
+
data,
|
|
1625
|
+
webPageFields,
|
|
1626
|
+
["name", "url"]
|
|
1627
|
+
);
|
|
1628
|
+
}
|
|
1629
|
+
function WebPageSchema({ data }) {
|
|
1630
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SchemaOrgScript, { jsonLd: buildWebPageJsonLd(data) });
|
|
1631
|
+
}
|
|
175
1632
|
// Annotate the CommonJS export names for ESM import in node:
|
|
176
1633
|
0 && (module.exports = {
|
|
1634
|
+
AggregateRatingSchema,
|
|
1635
|
+
ArticleSchema,
|
|
1636
|
+
BlogPostingSchema,
|
|
1637
|
+
BrandSchema,
|
|
1638
|
+
BreadcrumbListSchema,
|
|
1639
|
+
ContactPointSchema,
|
|
1640
|
+
CourseSchema,
|
|
1641
|
+
EventSchema,
|
|
1642
|
+
FAQPageSchema,
|
|
1643
|
+
HowToSchema,
|
|
1644
|
+
ImageObjectSchema,
|
|
1645
|
+
LocalBusinessSchema,
|
|
1646
|
+
OfferSchema,
|
|
1647
|
+
OrganizationSchema,
|
|
1648
|
+
PersonSchema,
|
|
1649
|
+
PlaceSchema,
|
|
1650
|
+
PostalAddressSchema,
|
|
1651
|
+
ProductSchema,
|
|
1652
|
+
ReviewSchema,
|
|
1653
|
+
SchemaOrgScripts,
|
|
177
1654
|
SeoMetaTags,
|
|
1655
|
+
SoftwareApplicationSchema,
|
|
1656
|
+
VideoObjectSchema,
|
|
1657
|
+
WebApplicationSchema,
|
|
1658
|
+
WebPageSchema,
|
|
1659
|
+
WebsiteSchema,
|
|
1660
|
+
buildAggregateRatingJsonLd,
|
|
1661
|
+
buildArticleJsonLd,
|
|
1662
|
+
buildBlogPostingJsonLd,
|
|
1663
|
+
buildBrandJsonLd,
|
|
1664
|
+
buildBreadcrumbListJsonLd,
|
|
1665
|
+
buildContactPointJsonLd,
|
|
1666
|
+
buildCourseJsonLd,
|
|
1667
|
+
buildEventJsonLd,
|
|
1668
|
+
buildFAQPageJsonLd,
|
|
1669
|
+
buildHowToJsonLd,
|
|
1670
|
+
buildImageObjectJsonLd,
|
|
1671
|
+
buildLocalBusinessJsonLd,
|
|
1672
|
+
buildOfferJsonLd,
|
|
1673
|
+
buildOrganizationJsonLd,
|
|
1674
|
+
buildPersonJsonLd,
|
|
1675
|
+
buildPlaceJsonLd,
|
|
1676
|
+
buildPostalAddressJsonLd,
|
|
1677
|
+
buildProductJsonLd,
|
|
1678
|
+
buildReviewJsonLd,
|
|
178
1679
|
buildSeoMeta,
|
|
1680
|
+
buildSoftwareApplicationJsonLd,
|
|
1681
|
+
buildVideoObjectJsonLd,
|
|
1682
|
+
buildWebApplicationJsonLd,
|
|
1683
|
+
buildWebPageJsonLd,
|
|
1684
|
+
buildWebsiteJsonLd,
|
|
179
1685
|
sanitizeOGType,
|
|
180
1686
|
sanitizeTwitterCard
|
|
181
1687
|
});
|