sanity-plugin-seofields 1.5.4 → 1.6.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 +4 -4
- package/dist/SeoHealthDashboard-7XMPVJRX.cjs +10 -0
- package/dist/{SeoHealthDashboard-KPBNXSL4.cjs.map → SeoHealthDashboard-7XMPVJRX.cjs.map} +1 -1
- package/dist/SeoHealthDashboard-UWPLB5DM.js +4 -0
- package/dist/{SeoHealthDashboard-QKVB5HK3.js.map → SeoHealthDashboard-UWPLB5DM.js.map} +1 -1
- package/dist/{SeoHealthTool-ON3SRXCF.cjs → SeoHealthTool-2H4XZR4I.cjs} +4 -4
- package/dist/{SeoHealthTool-ON3SRXCF.cjs.map → SeoHealthTool-2H4XZR4I.cjs.map} +1 -1
- package/dist/{SeoHealthTool-EPPOEDTW.js → SeoHealthTool-XCXINAQI.js} +3 -3
- package/dist/{SeoHealthTool-EPPOEDTW.js.map → SeoHealthTool-XCXINAQI.js.map} +1 -1
- package/dist/{SeoPreview-G3LPA7GV.js → SeoPreview-F6GGPZWI.js} +2 -2
- package/dist/SeoPreview-F6GGPZWI.js.map +1 -0
- package/dist/{SeoPreview-Y3CFDVBR.cjs → SeoPreview-JDROKZLP.cjs} +2 -2
- package/dist/SeoPreview-JDROKZLP.cjs.map +1 -0
- package/dist/chunk-6NIHHOVS.js +3918 -0
- package/dist/chunk-6NIHHOVS.js.map +1 -0
- package/dist/chunk-7HCP5O62.cjs +4027 -0
- package/dist/chunk-7HCP5O62.cjs.map +1 -0
- package/dist/{chunk-527WXITP.js → chunk-KWUITSHS.js} +218 -54
- package/dist/chunk-KWUITSHS.js.map +1 -0
- package/dist/{chunk-UCVSMPEJ.js → chunk-NHJBEV3A.js} +2 -2
- package/dist/{chunk-UCVSMPEJ.js.map → chunk-NHJBEV3A.js.map} +1 -1
- package/dist/chunk-WCLEWFAJ.cjs +669 -0
- package/dist/chunk-WCLEWFAJ.cjs.map +1 -0
- package/dist/{chunk-G2SVI2SP.cjs → chunk-Z74QPO75.cjs} +2 -2
- package/dist/{chunk-G2SVI2SP.cjs.map → chunk-Z74QPO75.cjs.map} +1 -1
- package/dist/cli.js +25 -25
- package/dist/component-7rqDvuy2.d.ts +534 -0
- package/dist/component-J2nEQkOw.d.cts +534 -0
- package/dist/index.cjs +159 -185
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +43 -51
- package/dist/index.d.ts +43 -51
- package/dist/index.js +159 -185
- package/dist/index.js.map +1 -1
- package/dist/next.cjs +155 -51
- package/dist/next.d.cts +3 -3
- package/dist/next.d.ts +3 -3
- package/dist/next.js +2 -2
- package/dist/schema/next.cjs +171 -52
- package/dist/schema/next.cjs.map +1 -1
- package/dist/schema/next.d.cts +12 -428
- package/dist/schema/next.d.ts +12 -428
- package/dist/schema/next.js +20 -2
- package/dist/schema/next.js.map +1 -1
- package/dist/schema.cjs +831 -156
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.cts +318 -41
- package/dist/schema.d.ts +318 -41
- package/dist/schema.js +567 -86
- package/dist/schema.js.map +1 -1
- package/dist/types-BRn3hfQb.d.ts +24 -0
- package/dist/types-BSgolLj3.d.cts +24 -0
- package/dist/{types-R3n9Fu4w.d.cts → types-BtSRRG6C.d.cts} +1 -1
- package/dist/{types-R3n9Fu4w.d.ts → types-BtSRRG6C.d.ts} +1 -1
- package/dist/types-DnVvOp3o.d.ts +1215 -0
- package/dist/types-DoUYMRVf.d.cts +1215 -0
- package/package.json +2 -1
- package/dist/SeoHealthDashboard-KPBNXSL4.cjs +0 -10
- package/dist/SeoHealthDashboard-QKVB5HK3.js +0 -4
- package/dist/SeoPreview-G3LPA7GV.js.map +0 -1
- package/dist/SeoPreview-Y3CFDVBR.cjs.map +0 -1
- package/dist/chunk-527WXITP.js.map +0 -1
- package/dist/chunk-6CYMVS3O.js +0 -1245
- package/dist/chunk-6CYMVS3O.js.map +0 -1
- package/dist/chunk-D2GWRRK5.cjs +0 -1293
- package/dist/chunk-D2GWRRK5.cjs.map +0 -1
- package/dist/chunk-L3L3FSPJ.cjs +0 -478
- package/dist/chunk-L3L3FSPJ.cjs.map +0 -1
- package/dist/types-CVaAX7uy.d.cts +0 -589
- package/dist/types-Ci-ZZT7A.d.ts +0 -589
|
@@ -0,0 +1,1215 @@
|
|
|
1
|
+
import { c as SanityImage } from './types-BtSRRG6C.cjs';
|
|
2
|
+
|
|
3
|
+
/** Copyright year: static number or dynamic (current year) */
|
|
4
|
+
type SchemaOrgCopyrightYear = number | {
|
|
5
|
+
useDynamicYear?: boolean;
|
|
6
|
+
year?: number;
|
|
7
|
+
};
|
|
8
|
+
/** An organization-only value (no Person variant) */
|
|
9
|
+
type SchemaOrgOrganizationInput = {
|
|
10
|
+
organization?: Record<string, unknown>;
|
|
11
|
+
};
|
|
12
|
+
/** Polymorphic image: URL or full ImageObject */
|
|
13
|
+
type SchemaOrgImageInput = {
|
|
14
|
+
variant: 'url';
|
|
15
|
+
url?: string;
|
|
16
|
+
} | {
|
|
17
|
+
variant: 'imageObject';
|
|
18
|
+
imageObject?: Record<string, unknown>;
|
|
19
|
+
};
|
|
20
|
+
/** Polymorphic author/publisher/contributor: Person or Organization */
|
|
21
|
+
type SchemaOrgPersonOrOrganization = {
|
|
22
|
+
variant: 'person';
|
|
23
|
+
person?: Record<string, unknown>;
|
|
24
|
+
} | {
|
|
25
|
+
variant: 'organization';
|
|
26
|
+
organization?: Record<string, unknown>;
|
|
27
|
+
};
|
|
28
|
+
/** Polymorphic text or URL value (used for genre, keywords, additionalType, etc.) */
|
|
29
|
+
type SchemaOrgTextOrUrl = {
|
|
30
|
+
variant: 'text';
|
|
31
|
+
text?: string;
|
|
32
|
+
} | {
|
|
33
|
+
variant: 'url';
|
|
34
|
+
url?: string;
|
|
35
|
+
};
|
|
36
|
+
/** AggregateRating nested object */
|
|
37
|
+
interface SchemaOrgAggregateRating {
|
|
38
|
+
ratingValue?: string;
|
|
39
|
+
ratingCount?: number;
|
|
40
|
+
reviewCount?: number;
|
|
41
|
+
bestRating?: string;
|
|
42
|
+
worstRating?: string;
|
|
43
|
+
ratingExplanation?: string;
|
|
44
|
+
}
|
|
45
|
+
/** ArchivedAt: URL or WebPage reference */
|
|
46
|
+
type SchemaOrgArchivedAt = {
|
|
47
|
+
variant: 'url';
|
|
48
|
+
url?: string;
|
|
49
|
+
} | {
|
|
50
|
+
variant: 'webPage';
|
|
51
|
+
webPage?: {
|
|
52
|
+
url?: string;
|
|
53
|
+
name?: string;
|
|
54
|
+
description?: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
/** ContentRating: plain text or structured Rating */
|
|
58
|
+
type SchemaOrgContentRating = {
|
|
59
|
+
variant: 'text';
|
|
60
|
+
text?: string;
|
|
61
|
+
} | {
|
|
62
|
+
variant: 'rating';
|
|
63
|
+
rating?: {
|
|
64
|
+
ratingValue?: string;
|
|
65
|
+
bestRating?: string;
|
|
66
|
+
worstRating?: string;
|
|
67
|
+
ratingExplanation?: string;
|
|
68
|
+
author?: SchemaOrgPersonOrOrganization;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
interface Action {
|
|
72
|
+
/** Search URL template with {search_term_string} placeholder */
|
|
73
|
+
target?: string;
|
|
74
|
+
}
|
|
75
|
+
/** All fields shared by every Schema.org Thing type */
|
|
76
|
+
interface SchemaOrgThingData {
|
|
77
|
+
name?: string;
|
|
78
|
+
alternateName?: string;
|
|
79
|
+
additionalType?: SchemaOrgTextOrUrl;
|
|
80
|
+
description?: string;
|
|
81
|
+
disambiguatingDescription?: string;
|
|
82
|
+
identifier?: SchemaOrgTextOrUrl;
|
|
83
|
+
image?: SchemaOrgImageInput;
|
|
84
|
+
url?: string;
|
|
85
|
+
sameAs?: string;
|
|
86
|
+
owner?: SchemaOrgPersonOrOrganization;
|
|
87
|
+
/** A potential action associated with this item (Schema.org Thing) */
|
|
88
|
+
potentialAction?: Action;
|
|
89
|
+
}
|
|
90
|
+
/** All fields shared by every Schema.org CreativeWork type (extends Thing) */
|
|
91
|
+
interface SchemaOrgCreativeWorkData extends SchemaOrgThingData {
|
|
92
|
+
/** Internal — overrides the emitted @type in JSON-LD, e.g. "NewsArticle" */
|
|
93
|
+
alternateType?: string;
|
|
94
|
+
about?: SchemaOrgThingData;
|
|
95
|
+
accountablePerson?: Record<string, unknown>;
|
|
96
|
+
aggregateRating?: SchemaOrgAggregateRating;
|
|
97
|
+
alternativeHeadline?: string;
|
|
98
|
+
archivedAt?: SchemaOrgArchivedAt;
|
|
99
|
+
author?: SchemaOrgPersonOrOrganization;
|
|
100
|
+
award?: string[];
|
|
101
|
+
backstory?: string;
|
|
102
|
+
character?: Record<string, unknown>;
|
|
103
|
+
citation?: SchemaOrgTextOrUrl;
|
|
104
|
+
contentRating?: SchemaOrgContentRating;
|
|
105
|
+
contentReferenceTime?: string;
|
|
106
|
+
contributor?: SchemaOrgPersonOrOrganization;
|
|
107
|
+
copyrightHolder?: SchemaOrgPersonOrOrganization;
|
|
108
|
+
copyrightNotice?: string;
|
|
109
|
+
copyrightYear?: SchemaOrgCopyrightYear;
|
|
110
|
+
creator?: SchemaOrgPersonOrOrganization;
|
|
111
|
+
creditText?: string;
|
|
112
|
+
dateCreated?: string;
|
|
113
|
+
dateModified?: string;
|
|
114
|
+
datePublished?: string;
|
|
115
|
+
discussionUrl?: string;
|
|
116
|
+
editor?: Record<string, unknown>;
|
|
117
|
+
funder?: SchemaOrgPersonOrOrganization;
|
|
118
|
+
genre?: SchemaOrgTextOrUrl;
|
|
119
|
+
headline?: string;
|
|
120
|
+
isAccessibleForFree?: boolean;
|
|
121
|
+
isBasedOn?: SchemaOrgTextOrUrl;
|
|
122
|
+
inLanguage?: string;
|
|
123
|
+
isFamilyFriendly?: boolean;
|
|
124
|
+
isPartOf?: SchemaOrgTextOrUrl;
|
|
125
|
+
keywords?: SchemaOrgTextOrUrl;
|
|
126
|
+
learningResourceType?: string;
|
|
127
|
+
license?: SchemaOrgTextOrUrl;
|
|
128
|
+
locationCreated?: SchemaOrgTextOrUrl;
|
|
129
|
+
mainEntity?: SchemaOrgThingData;
|
|
130
|
+
maintainer?: SchemaOrgPersonOrOrganization;
|
|
131
|
+
material?: SchemaOrgTextOrUrl;
|
|
132
|
+
thumbnailUrl?: string;
|
|
133
|
+
/** Publisher of the creative work (Person or Organization) */
|
|
134
|
+
publisher?: SchemaOrgPersonOrOrganization;
|
|
135
|
+
/** The publishing division which published the work (Organization only) */
|
|
136
|
+
publisherImprint?: SchemaOrgOrganizationInput;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** Schema.org AggregateRating — data shape from GROQ query */
|
|
140
|
+
interface SchemaOrgAggregateRatingData extends SchemaOrgThingData {
|
|
141
|
+
_type?: 'schemaOrgAggregateRating';
|
|
142
|
+
/** Average rating value, e.g. "4.5" */
|
|
143
|
+
ratingValue?: string;
|
|
144
|
+
/** Highest value in the rating scale, e.g. "5" */
|
|
145
|
+
bestRating?: string;
|
|
146
|
+
/** Lowest value in the rating scale, e.g. "1" */
|
|
147
|
+
worstRating?: string;
|
|
148
|
+
/** Total number of ratings */
|
|
149
|
+
ratingCount?: string;
|
|
150
|
+
/** Total number of reviews, e.g. "120" */
|
|
151
|
+
reviewCount?: string;
|
|
152
|
+
/** Short explanation of the rating */
|
|
153
|
+
ratingExplanation?: string;
|
|
154
|
+
/** Author — polymorphic Person or Organization */
|
|
155
|
+
author?: SchemaOrgPersonOrOrganization;
|
|
156
|
+
}
|
|
157
|
+
/** Configuration for `schemaOrgAggregateRating()` */
|
|
158
|
+
interface SchemaOrgAggregateRatingConfig {
|
|
159
|
+
validation?: {
|
|
160
|
+
/** Custom error message when rating value is missing */
|
|
161
|
+
ratingValueRequired?: string;
|
|
162
|
+
/** Custom error message when owner org name is missing */
|
|
163
|
+
ownerOrgNameRequired?: string;
|
|
164
|
+
/** Custom error message when owner person name is missing */
|
|
165
|
+
ownerPersonNameRequired?: string;
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/** Schema.org Article — data shape returned from a Sanity GROQ query */
|
|
170
|
+
interface SchemaOrgArticleData extends SchemaOrgCreativeWorkData {
|
|
171
|
+
_type?: 'schemaOrgArticle';
|
|
172
|
+
/** The section of the publication (e.g. "Sports"). */
|
|
173
|
+
articleSection?: string;
|
|
174
|
+
articleBody?: string;
|
|
175
|
+
wordCount?: number;
|
|
176
|
+
}
|
|
177
|
+
/** Configuration for `schemaOrgArticle()` */
|
|
178
|
+
interface SchemaOrgArticleConfig {
|
|
179
|
+
/** Custom validation messages */
|
|
180
|
+
validation?: {
|
|
181
|
+
/** Custom error message when headline is missing */
|
|
182
|
+
headlineRequired?: string;
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/** Schema.org BlogPosting — data shape returned from a Sanity GROQ query */
|
|
187
|
+
interface SchemaOrgBlogPostingData extends SchemaOrgCreativeWorkData {
|
|
188
|
+
_type?: 'schemaOrgBlogPosting';
|
|
189
|
+
mainEntityOfPage?: {
|
|
190
|
+
id?: string;
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/** Configuration for `schemaOrgBlogPosting()` */
|
|
194
|
+
interface SchemaOrgBlogPostingConfig {
|
|
195
|
+
/** Custom validation messages */
|
|
196
|
+
validation?: {
|
|
197
|
+
/** Custom error message when headline is missing */
|
|
198
|
+
headlineRequired?: string;
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/** Schema.org Book — data shape from GROQ query */
|
|
203
|
+
interface SchemaOrgBookData extends SchemaOrgCreativeWorkData {
|
|
204
|
+
_type?: 'schemaOrgBook';
|
|
205
|
+
isbn?: string;
|
|
206
|
+
numberOfPages?: number;
|
|
207
|
+
bookFormat?: string;
|
|
208
|
+
bookEdition?: string;
|
|
209
|
+
inLanguage?: string;
|
|
210
|
+
/** Override with typed shape */
|
|
211
|
+
aggregateRating?: SchemaOrgAggregateRating;
|
|
212
|
+
review?: unknown[];
|
|
213
|
+
workExample?: unknown[];
|
|
214
|
+
}
|
|
215
|
+
/** Configuration for `schemaOrgBook()` */
|
|
216
|
+
interface SchemaOrgBookConfig {
|
|
217
|
+
validation?: Record<string, string>;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/** Schema.org Brand — data shape from GROQ query */
|
|
221
|
+
interface SchemaOrgBrandData {
|
|
222
|
+
_type?: 'schemaOrgBrand';
|
|
223
|
+
/** Brand name */
|
|
224
|
+
name?: string;
|
|
225
|
+
/** A slogan or tagline for the brand */
|
|
226
|
+
slogan?: string;
|
|
227
|
+
/** An image representing the brand (URL or full ImageObject) */
|
|
228
|
+
image?: SchemaOrgImageInput;
|
|
229
|
+
}
|
|
230
|
+
/** Configuration for `schemaOrgBrand()` */
|
|
231
|
+
interface SchemaOrgBrandConfig {
|
|
232
|
+
validation?: {
|
|
233
|
+
/** Custom error message when brand name is missing */
|
|
234
|
+
nameRequired?: string;
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/** A single item in a BreadcrumbList */
|
|
239
|
+
interface BreadcrumbListItem {
|
|
240
|
+
/** Position of this item in the breadcrumb trail */
|
|
241
|
+
position?: number;
|
|
242
|
+
/** Display label for this breadcrumb */
|
|
243
|
+
name?: string;
|
|
244
|
+
/** URL for this breadcrumb */
|
|
245
|
+
item?: string;
|
|
246
|
+
}
|
|
247
|
+
/** Schema.org BreadcrumbList — data shape returned from a Sanity GROQ query */
|
|
248
|
+
interface SchemaOrgBreadcrumbListData {
|
|
249
|
+
_type?: 'schemaOrgBreadcrumbList';
|
|
250
|
+
/** Ordered list of breadcrumb items */
|
|
251
|
+
itemListElement?: BreadcrumbListItem[];
|
|
252
|
+
}
|
|
253
|
+
/** Configuration for `schemaOrgBreadcrumbList()` */
|
|
254
|
+
interface SchemaOrgBreadcrumbListConfig {
|
|
255
|
+
/** Custom validation messages */
|
|
256
|
+
validation?: {
|
|
257
|
+
/** Custom error message when position is missing */
|
|
258
|
+
positionRequired?: string;
|
|
259
|
+
/** Custom error message when name is missing */
|
|
260
|
+
nameRequired?: string;
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/** Schema.org ContactPoint — data shape from GROQ query */
|
|
265
|
+
interface SchemaOrgContactPointData {
|
|
266
|
+
_type?: 'schemaOrgContactPoint';
|
|
267
|
+
/** Type of contact, e.g. "customer support", "sales" */
|
|
268
|
+
contactType?: string;
|
|
269
|
+
/** Contact email address */
|
|
270
|
+
email?: string;
|
|
271
|
+
/** Contact fax number */
|
|
272
|
+
faxNumber?: string;
|
|
273
|
+
/** Contact telephone number */
|
|
274
|
+
telephone?: string;
|
|
275
|
+
/** Languages supported, e.g. ["English"] */
|
|
276
|
+
availableLanguage?: string[];
|
|
277
|
+
}
|
|
278
|
+
/** Configuration for `schemaOrgContactPoint()` */
|
|
279
|
+
interface SchemaOrgContactPointConfig {
|
|
280
|
+
validation?: {
|
|
281
|
+
/** Custom error message when contact type is missing */
|
|
282
|
+
contactTypeRequired?: string;
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Schema.org Country — extends Place.
|
|
288
|
+
* Spec: https://schema.org/Country
|
|
289
|
+
*
|
|
290
|
+
* Country inherits all fields from Place. This schema captures the most useful
|
|
291
|
+
* subset for SEO / structured data.
|
|
292
|
+
*/
|
|
293
|
+
|
|
294
|
+
interface SchemaOrgCountryData {
|
|
295
|
+
_type?: 'schemaOrgCountry';
|
|
296
|
+
/** Common English name, e.g. "United States". */
|
|
297
|
+
name?: string;
|
|
298
|
+
/** Alternate name (e.g. native name, abbreviation). */
|
|
299
|
+
alternateName?: string;
|
|
300
|
+
/** ISO 3166-1 alpha-2 country code, e.g. "US". */
|
|
301
|
+
identifier?: string;
|
|
302
|
+
/** Short description. */
|
|
303
|
+
description?: string;
|
|
304
|
+
/** Canonical URL (e.g. Wikipedia page or government site). */
|
|
305
|
+
url?: string;
|
|
306
|
+
/** An image representing the country (URL or full ImageObject). */
|
|
307
|
+
image?: SchemaOrgImageInput;
|
|
308
|
+
/** Authoritative external URLs (Wikidata, Wikipedia, geonames, etc.). */
|
|
309
|
+
sameAs?: string;
|
|
310
|
+
/** Postal address (typically just `addressCountry`). */
|
|
311
|
+
address?: {
|
|
312
|
+
addressCountry?: string;
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
interface SchemaOrgCountryConfig {
|
|
316
|
+
validation?: {
|
|
317
|
+
nameRequired?: string;
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/** Provider info nested within the Course schema */
|
|
322
|
+
interface CourseProvider {
|
|
323
|
+
/** Provider organization name */
|
|
324
|
+
name?: string;
|
|
325
|
+
/** Provider organization URL */
|
|
326
|
+
sameAs?: string;
|
|
327
|
+
}
|
|
328
|
+
/** Schema.org Course — data shape returned from a Sanity GROQ query */
|
|
329
|
+
interface SchemaOrgCourseData extends SchemaOrgCreativeWorkData {
|
|
330
|
+
_type?: 'schemaOrgCourse';
|
|
331
|
+
/** An alphanumeric code that uniquely identifies the course */
|
|
332
|
+
courseCode?: string;
|
|
333
|
+
/** The organization that provides this course */
|
|
334
|
+
provider?: CourseProvider;
|
|
335
|
+
}
|
|
336
|
+
/** Configuration for `schemaOrgCourse()` */
|
|
337
|
+
interface SchemaOrgCourseConfig {
|
|
338
|
+
/** Custom validation messages */
|
|
339
|
+
validation?: {
|
|
340
|
+
/** Custom error message when course name is missing */
|
|
341
|
+
nameRequired?: string;
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/** Schema.org Event — data shape returned from a Sanity GROQ query */
|
|
346
|
+
interface SchemaOrgEventData {
|
|
347
|
+
_type?: 'schemaOrgEvent';
|
|
348
|
+
/** Name of the event */
|
|
349
|
+
name?: string;
|
|
350
|
+
/** Start date of the event (ISO 8601) */
|
|
351
|
+
startDate?: string;
|
|
352
|
+
/** A person or organization that sponsors the event */
|
|
353
|
+
sponsor?: SchemaOrgPersonOrOrganization;
|
|
354
|
+
/** Location of the event */
|
|
355
|
+
location?: {
|
|
356
|
+
name?: string;
|
|
357
|
+
address?: string;
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
/** Configuration for `schemaOrgEvent()` */
|
|
361
|
+
interface SchemaOrgEventConfig {
|
|
362
|
+
/** Custom validation messages */
|
|
363
|
+
validation?: {
|
|
364
|
+
/** Custom error message when event name is missing */
|
|
365
|
+
nameRequired?: string;
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/** A single FAQ question/answer pair */
|
|
370
|
+
interface FAQItem {
|
|
371
|
+
/** The question text */
|
|
372
|
+
name?: string;
|
|
373
|
+
/** The accepted answer */
|
|
374
|
+
acceptedAnswer?: {
|
|
375
|
+
text?: string;
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
/** Schema.org FAQPage — data shape returned from a Sanity GROQ query */
|
|
379
|
+
interface SchemaOrgFAQPageData {
|
|
380
|
+
_type?: 'schemaOrgFAQPage';
|
|
381
|
+
/** List of FAQ questions and answers */
|
|
382
|
+
mainEntity?: FAQItem[];
|
|
383
|
+
}
|
|
384
|
+
/** Configuration for `schemaOrgFAQPage()` */
|
|
385
|
+
interface SchemaOrgFAQPageConfig {
|
|
386
|
+
/** Custom validation messages */
|
|
387
|
+
validation?: {
|
|
388
|
+
/** Custom error message when question text is missing */
|
|
389
|
+
questionRequired?: string;
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/** A single step in a HowTo guide */
|
|
394
|
+
interface HowToStepItem {
|
|
395
|
+
/** Name of the step */
|
|
396
|
+
name?: string;
|
|
397
|
+
/** Description of the step */
|
|
398
|
+
text?: string;
|
|
399
|
+
/** URL for this specific step */
|
|
400
|
+
url?: string;
|
|
401
|
+
/** URL of an image for this step */
|
|
402
|
+
image?: string;
|
|
403
|
+
}
|
|
404
|
+
/** Estimated cost to complete the how-to */
|
|
405
|
+
interface HowToMonetaryAmount {
|
|
406
|
+
/** ISO 4217 currency code, e.g. "USD" */
|
|
407
|
+
currency?: string;
|
|
408
|
+
/** The cost amount, e.g. "25.00" */
|
|
409
|
+
value?: string;
|
|
410
|
+
}
|
|
411
|
+
/** A supply needed for the how-to */
|
|
412
|
+
interface HowToSupply {
|
|
413
|
+
/** Supply name */
|
|
414
|
+
name?: string;
|
|
415
|
+
}
|
|
416
|
+
/** A tool needed for the how-to */
|
|
417
|
+
interface HowToTool {
|
|
418
|
+
/** Tool name */
|
|
419
|
+
name?: string;
|
|
420
|
+
}
|
|
421
|
+
/** Schema.org HowTo — data shape returned from a Sanity GROQ query */
|
|
422
|
+
interface SchemaOrgHowToData extends SchemaOrgCreativeWorkData {
|
|
423
|
+
_type?: 'schemaOrgHowTo';
|
|
424
|
+
totalTime?: string;
|
|
425
|
+
estimatedCost?: HowToMonetaryAmount;
|
|
426
|
+
supply?: HowToSupply[];
|
|
427
|
+
tool?: HowToTool[];
|
|
428
|
+
step?: HowToStepItem[];
|
|
429
|
+
}
|
|
430
|
+
/** Configuration for `schemaOrgHowTo()` */
|
|
431
|
+
interface SchemaOrgHowToConfig {
|
|
432
|
+
/** Custom validation messages */
|
|
433
|
+
validation?: {
|
|
434
|
+
/** Custom error message when name is missing */
|
|
435
|
+
nameRequired?: string;
|
|
436
|
+
/** Custom error message when step name is missing */
|
|
437
|
+
stepNameRequired?: string;
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/** Schema.org ImageObject — data shape from GROQ query */
|
|
442
|
+
interface SchemaOrgImageObjectData extends SchemaOrgCreativeWorkData {
|
|
443
|
+
_type?: 'schemaOrgImageObject';
|
|
444
|
+
/** Image width in pixels */
|
|
445
|
+
width?: number;
|
|
446
|
+
/** Image height in pixels */
|
|
447
|
+
height?: number;
|
|
448
|
+
/** Caption or alt text for the image */
|
|
449
|
+
caption?: string;
|
|
450
|
+
/** Direct URL to the image file */
|
|
451
|
+
contentUrl?: string;
|
|
452
|
+
/** The location where the image was taken */
|
|
453
|
+
contentLocation?: string;
|
|
454
|
+
}
|
|
455
|
+
/** Configuration for `schemaOrgImageObject()` */
|
|
456
|
+
interface SchemaOrgImageObjectConfig {
|
|
457
|
+
validation?: {
|
|
458
|
+
/** Custom error message when image URL is missing */
|
|
459
|
+
urlRequired?: string;
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
/** Schema.org ItemList — data shape from GROQ query */
|
|
464
|
+
interface SchemaOrgItemListData extends SchemaOrgThingData {
|
|
465
|
+
_type?: 'schemaOrgItemList';
|
|
466
|
+
itemListOrder?: string;
|
|
467
|
+
numberOfItems?: number;
|
|
468
|
+
itemListElement?: Array<{
|
|
469
|
+
name?: string;
|
|
470
|
+
url?: string;
|
|
471
|
+
position?: number;
|
|
472
|
+
image?: string;
|
|
473
|
+
description?: string;
|
|
474
|
+
}>;
|
|
475
|
+
}
|
|
476
|
+
/** Configuration for `schemaOrgItemList()` */
|
|
477
|
+
interface SchemaOrgItemListConfig {
|
|
478
|
+
validation?: Record<string, string>;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
/** Schema.org JobPosting — data shape from GROQ query */
|
|
482
|
+
interface SchemaOrgJobPostingData extends SchemaOrgThingData {
|
|
483
|
+
_type?: 'schemaOrgJobPosting';
|
|
484
|
+
title?: string;
|
|
485
|
+
description?: string;
|
|
486
|
+
datePosted?: string;
|
|
487
|
+
validThrough?: string;
|
|
488
|
+
employmentType?: string;
|
|
489
|
+
hiringOrganization?: Record<string, unknown>;
|
|
490
|
+
jobLocation?: Record<string, unknown>;
|
|
491
|
+
baseSalary?: Record<string, unknown>;
|
|
492
|
+
applicantLocationRequirements?: string;
|
|
493
|
+
jobLocationType?: string;
|
|
494
|
+
directApply?: boolean;
|
|
495
|
+
experienceRequirements?: string;
|
|
496
|
+
educationRequirements?: string;
|
|
497
|
+
skills?: string;
|
|
498
|
+
industry?: string;
|
|
499
|
+
qualifications?: string;
|
|
500
|
+
responsibilities?: string;
|
|
501
|
+
workHours?: string;
|
|
502
|
+
}
|
|
503
|
+
/** Configuration for `schemaOrgJobPosting()` */
|
|
504
|
+
interface SchemaOrgJobPostingConfig {
|
|
505
|
+
validation?: Record<string, string>;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* Schema.org LegalService — extends LocalBusiness.
|
|
510
|
+
* Spec: https://schema.org/LegalService
|
|
511
|
+
*
|
|
512
|
+
* LegalService inherits all fields from LocalBusiness; this schema mirrors the
|
|
513
|
+
* most useful subset and adds legal-specific fields (areaServed, knowsLanguage,
|
|
514
|
+
* knowsAbout).
|
|
515
|
+
*/
|
|
516
|
+
interface SchemaOrgLegalServiceData {
|
|
517
|
+
_type?: 'schemaOrgLegalService';
|
|
518
|
+
/** The official name of the legal service / firm. */
|
|
519
|
+
name?: string;
|
|
520
|
+
/** A short description of the firm. */
|
|
521
|
+
description?: string;
|
|
522
|
+
/** Image URL of the firm. */
|
|
523
|
+
image?: string;
|
|
524
|
+
/** Telephone number. */
|
|
525
|
+
telephone?: string;
|
|
526
|
+
/** Website URL. */
|
|
527
|
+
url?: string;
|
|
528
|
+
/** Logo URL. */
|
|
529
|
+
logoUrl?: string;
|
|
530
|
+
/** Price range, e.g. "$$" or "$100-$500". */
|
|
531
|
+
priceRange?: string;
|
|
532
|
+
/** Postal address. */
|
|
533
|
+
address?: {
|
|
534
|
+
streetAddress?: string;
|
|
535
|
+
addressLocality?: string;
|
|
536
|
+
addressRegion?: string;
|
|
537
|
+
postalCode?: string;
|
|
538
|
+
addressCountry?: string;
|
|
539
|
+
};
|
|
540
|
+
/** Geographic coordinates. */
|
|
541
|
+
geo?: {
|
|
542
|
+
latitude?: string;
|
|
543
|
+
longitude?: string;
|
|
544
|
+
};
|
|
545
|
+
/** Map URL (e.g. Google Maps). */
|
|
546
|
+
hasMap?: string;
|
|
547
|
+
/** Areas of legal expertise (Schema.org `knowsAbout`). */
|
|
548
|
+
knowsAbout?: string[];
|
|
549
|
+
/** Languages the firm operates in. */
|
|
550
|
+
knowsLanguage?: string[];
|
|
551
|
+
/** Geographic areas served. */
|
|
552
|
+
areaServed?: string[];
|
|
553
|
+
/** Opening hours. */
|
|
554
|
+
openingHoursSpecification?: Array<{
|
|
555
|
+
dayOfWeek?: string;
|
|
556
|
+
opens?: string;
|
|
557
|
+
closes?: string;
|
|
558
|
+
}>;
|
|
559
|
+
/** Social / external profile URLs. */
|
|
560
|
+
sameAs?: string;
|
|
561
|
+
}
|
|
562
|
+
interface SchemaOrgLegalServiceConfig {
|
|
563
|
+
validation?: {
|
|
564
|
+
nameRequired?: string;
|
|
565
|
+
};
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
/** Geographic coordinates of the business */
|
|
569
|
+
interface LocalBusinessGeoCoordinates {
|
|
570
|
+
/** Latitude, e.g. "40.7128" */
|
|
571
|
+
latitude?: string;
|
|
572
|
+
/** Longitude, e.g. "-74.0060" */
|
|
573
|
+
longitude?: string;
|
|
574
|
+
}
|
|
575
|
+
/** Opening hours for a specific day */
|
|
576
|
+
interface LocalBusinessOpeningHoursSpec {
|
|
577
|
+
/** Day of the week */
|
|
578
|
+
dayOfWeek?: string;
|
|
579
|
+
/** Opening time, e.g. "09:00" */
|
|
580
|
+
opens?: string;
|
|
581
|
+
/** Closing time, e.g. "17:00" */
|
|
582
|
+
closes?: string;
|
|
583
|
+
}
|
|
584
|
+
/** Schema.org LocalBusiness — data shape returned from a Sanity GROQ query */
|
|
585
|
+
interface SchemaOrgLocalBusinessData {
|
|
586
|
+
_type?: 'schemaOrgLocalBusiness';
|
|
587
|
+
/** Official name of the business */
|
|
588
|
+
name?: string;
|
|
589
|
+
/** URL to the business image */
|
|
590
|
+
image?: string;
|
|
591
|
+
/** Telephone number */
|
|
592
|
+
telephone?: string;
|
|
593
|
+
/** Physical address of the business */
|
|
594
|
+
address?: {
|
|
595
|
+
streetAddress?: string;
|
|
596
|
+
addressLocality?: string;
|
|
597
|
+
addressCountry?: string;
|
|
598
|
+
};
|
|
599
|
+
/** The website URL of the business */
|
|
600
|
+
url?: string;
|
|
601
|
+
/** URL to the business logo image (mapped to "logo" in JSON-LD) */
|
|
602
|
+
logoUrl?: string;
|
|
603
|
+
/** The price range of the business */
|
|
604
|
+
priceRange?: string;
|
|
605
|
+
/** Geographic coordinates of the business */
|
|
606
|
+
geo?: LocalBusinessGeoCoordinates;
|
|
607
|
+
/** URL to a map of the business location */
|
|
608
|
+
hasMap?: string;
|
|
609
|
+
/** Business opening hours for each day */
|
|
610
|
+
openingHoursSpecification?: LocalBusinessOpeningHoursSpec[];
|
|
611
|
+
/** URLs of social media profiles */
|
|
612
|
+
sameAs?: string;
|
|
613
|
+
}
|
|
614
|
+
/** Configuration for `schemaOrgLocalBusiness()` */
|
|
615
|
+
interface SchemaOrgLocalBusinessConfig {
|
|
616
|
+
/** Custom validation messages */
|
|
617
|
+
validation?: {
|
|
618
|
+
/** Custom error message when business name is missing */
|
|
619
|
+
nameRequired?: string;
|
|
620
|
+
};
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
/** Schema.org Movie — data shape from GROQ query */
|
|
624
|
+
interface SchemaOrgMovieData extends SchemaOrgCreativeWorkData {
|
|
625
|
+
_type?: 'schemaOrgMovie';
|
|
626
|
+
director?: SchemaOrgPersonOrOrganization;
|
|
627
|
+
actor?: SchemaOrgPersonOrOrganization[];
|
|
628
|
+
musicBy?: SchemaOrgPersonOrOrganization;
|
|
629
|
+
producer?: SchemaOrgPersonOrOrganization;
|
|
630
|
+
productionCompany?: Record<string, unknown>;
|
|
631
|
+
duration?: string;
|
|
632
|
+
/** Override with typed shape */
|
|
633
|
+
aggregateRating?: SchemaOrgAggregateRating;
|
|
634
|
+
review?: unknown[];
|
|
635
|
+
trailer?: Record<string, unknown>;
|
|
636
|
+
countryOfOrigin?: string;
|
|
637
|
+
inLanguage?: string;
|
|
638
|
+
}
|
|
639
|
+
/** Configuration for `schemaOrgMovie()` */
|
|
640
|
+
interface SchemaOrgMovieConfig {
|
|
641
|
+
validation?: Record<string, string>;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
/** Schema.org MusicAlbum — data shape from GROQ query */
|
|
645
|
+
interface SchemaOrgMusicAlbumData extends SchemaOrgCreativeWorkData {
|
|
646
|
+
_type?: 'schemaOrgMusicAlbum';
|
|
647
|
+
byArtist?: SchemaOrgPersonOrOrganization;
|
|
648
|
+
numTracks?: number;
|
|
649
|
+
albumProductionType?: string;
|
|
650
|
+
albumReleaseType?: string;
|
|
651
|
+
inLanguage?: string;
|
|
652
|
+
track?: Array<{
|
|
653
|
+
name?: string;
|
|
654
|
+
duration?: string;
|
|
655
|
+
url?: string;
|
|
656
|
+
}>;
|
|
657
|
+
}
|
|
658
|
+
/** Configuration for `schemaOrgMusicAlbum()` */
|
|
659
|
+
interface SchemaOrgMusicAlbumConfig {
|
|
660
|
+
validation?: Record<string, string>;
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
/** Schema.org MusicRecording — data shape from GROQ query */
|
|
664
|
+
interface SchemaOrgMusicRecordingData extends SchemaOrgCreativeWorkData {
|
|
665
|
+
_type?: 'schemaOrgMusicRecording';
|
|
666
|
+
byArtist?: SchemaOrgPersonOrOrganization;
|
|
667
|
+
duration?: string;
|
|
668
|
+
inAlbum?: string;
|
|
669
|
+
isrcCode?: string;
|
|
670
|
+
inLanguage?: string;
|
|
671
|
+
recordingOf?: string;
|
|
672
|
+
}
|
|
673
|
+
/** Configuration for `schemaOrgMusicRecording()` */
|
|
674
|
+
interface SchemaOrgMusicRecordingConfig {
|
|
675
|
+
validation?: Record<string, string>;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
/** Schema.org NewsArticle — data shape from GROQ query */
|
|
679
|
+
interface SchemaOrgNewsArticleData extends SchemaOrgCreativeWorkData {
|
|
680
|
+
_type?: 'schemaOrgNewsArticle';
|
|
681
|
+
articleSection?: string;
|
|
682
|
+
articleBody?: string;
|
|
683
|
+
wordCount?: number;
|
|
684
|
+
dateline?: string;
|
|
685
|
+
printColumn?: string;
|
|
686
|
+
printEdition?: string;
|
|
687
|
+
printPage?: string;
|
|
688
|
+
printSection?: string;
|
|
689
|
+
}
|
|
690
|
+
/** Configuration for `schemaOrgNewsArticle()` */
|
|
691
|
+
interface SchemaOrgNewsArticleConfig {
|
|
692
|
+
validation?: Record<string, string>;
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
/** Schema.org Offer — data shape from GROQ query */
|
|
696
|
+
interface SchemaOrgOfferData {
|
|
697
|
+
_type?: 'schemaOrgOffer';
|
|
698
|
+
/** Price of the offer, e.g. "199.99" */
|
|
699
|
+
price?: string;
|
|
700
|
+
/** Currency code, e.g. "USD" */
|
|
701
|
+
priceCurrency?: string;
|
|
702
|
+
/** Schema.org availability URL, e.g. "https://schema.org/InStock" */
|
|
703
|
+
availability?: string;
|
|
704
|
+
/** URL of the offer page */
|
|
705
|
+
url?: string;
|
|
706
|
+
}
|
|
707
|
+
/** Configuration for `schemaOrgOffer()` */
|
|
708
|
+
interface SchemaOrgOfferConfig {
|
|
709
|
+
validation?: {
|
|
710
|
+
/** Custom error message when price is missing */
|
|
711
|
+
priceRequired?: string;
|
|
712
|
+
};
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
/** Contact point nested within the Organization schema */
|
|
716
|
+
interface OrganizationContactPoint {
|
|
717
|
+
/** e.g. "customer support", "sales", "technical support" */
|
|
718
|
+
contactType?: string;
|
|
719
|
+
/** Contact email address */
|
|
720
|
+
email?: string;
|
|
721
|
+
/** Languages supported, e.g. ["English", "Spanish"] */
|
|
722
|
+
availableLanguage?: string[];
|
|
723
|
+
}
|
|
724
|
+
/** Department nested within the Organization schema */
|
|
725
|
+
interface OrganizationDepartment {
|
|
726
|
+
/** Department name */
|
|
727
|
+
name?: string;
|
|
728
|
+
/** Department URL */
|
|
729
|
+
url?: string;
|
|
730
|
+
/** Department phone number */
|
|
731
|
+
telephone?: string;
|
|
732
|
+
}
|
|
733
|
+
/** Schema.org Organization — data shape returned from a Sanity GROQ query */
|
|
734
|
+
interface SchemaOrgOrganizationData {
|
|
735
|
+
_type?: 'schemaOrgOrganization';
|
|
736
|
+
/** Official name of the organization */
|
|
737
|
+
name?: string;
|
|
738
|
+
/** Full URL of the organization website */
|
|
739
|
+
url?: string;
|
|
740
|
+
/** Direct URL to the organization logo */
|
|
741
|
+
logoUrl?: string;
|
|
742
|
+
/** Sanity image upload for the logo (use imageUrlResolver to convert) */
|
|
743
|
+
logo?: SanityImage;
|
|
744
|
+
/** Short description of the organization */
|
|
745
|
+
description?: string;
|
|
746
|
+
/** An alias or alternate name for the organization */
|
|
747
|
+
alternateName?: string;
|
|
748
|
+
/** Social media and external profile URLs */
|
|
749
|
+
sameAs?: string;
|
|
750
|
+
/** Primary contact information */
|
|
751
|
+
contactPoint?: OrganizationContactPoint;
|
|
752
|
+
/** Departments within the organization */
|
|
753
|
+
department?: OrganizationDepartment[];
|
|
754
|
+
}
|
|
755
|
+
/** Configuration for `schemaOrgOrganization()` */
|
|
756
|
+
interface SchemaOrgOrganizationConfig {
|
|
757
|
+
/** Custom validation messages */
|
|
758
|
+
validation?: {
|
|
759
|
+
/** Custom error message when organization name is missing */
|
|
760
|
+
nameRequired?: string;
|
|
761
|
+
/** Custom error message when organization URL is missing */
|
|
762
|
+
urlRequired?: string;
|
|
763
|
+
};
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
/** Organization info nested within the Person schema (worksFor) */
|
|
767
|
+
interface PersonWorksFor {
|
|
768
|
+
/** Organization name */
|
|
769
|
+
name?: string;
|
|
770
|
+
}
|
|
771
|
+
/** Postal address of the person */
|
|
772
|
+
interface PersonAddress {
|
|
773
|
+
/** Street address */
|
|
774
|
+
streetAddress?: string;
|
|
775
|
+
/** City */
|
|
776
|
+
addressLocality?: string;
|
|
777
|
+
/** Country code, e.g. "US" */
|
|
778
|
+
addressCountry?: string;
|
|
779
|
+
}
|
|
780
|
+
/** Schema.org Person — data shape returned from a Sanity GROQ query */
|
|
781
|
+
interface SchemaOrgPersonData {
|
|
782
|
+
_type?: 'schemaOrgPerson';
|
|
783
|
+
/** Full name of the person */
|
|
784
|
+
name?: string;
|
|
785
|
+
/** Job title or role */
|
|
786
|
+
jobTitle?: string;
|
|
787
|
+
/** URL of the person's profile or website */
|
|
788
|
+
url?: string;
|
|
789
|
+
/** URL to a photo/image of this person (mapped to "image" in JSON-LD) */
|
|
790
|
+
imageUrl?: string;
|
|
791
|
+
/** Social media and external profile URLs */
|
|
792
|
+
sameAs?: string;
|
|
793
|
+
/** The organization this person works for */
|
|
794
|
+
worksFor?: PersonWorksFor;
|
|
795
|
+
/** Email address of the person */
|
|
796
|
+
email?: string;
|
|
797
|
+
/** Phone number of the person */
|
|
798
|
+
telephone?: string;
|
|
799
|
+
/** A short bio or description of the person */
|
|
800
|
+
description?: string;
|
|
801
|
+
/** Gender of the person */
|
|
802
|
+
gender?: string;
|
|
803
|
+
/** Date of birth */
|
|
804
|
+
birthDate?: string;
|
|
805
|
+
/** The postal address of the person */
|
|
806
|
+
address?: PersonAddress;
|
|
807
|
+
}
|
|
808
|
+
/** Configuration for `schemaOrgPerson()` */
|
|
809
|
+
interface SchemaOrgPersonConfig {
|
|
810
|
+
/** Custom validation messages */
|
|
811
|
+
validation?: {
|
|
812
|
+
/** Custom error message when person name is missing */
|
|
813
|
+
nameRequired?: string;
|
|
814
|
+
};
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
/** Schema.org Place — data shape returned from a Sanity GROQ query */
|
|
818
|
+
interface SchemaOrgPlaceData {
|
|
819
|
+
_type?: 'schemaOrgPlace';
|
|
820
|
+
/** Name of the place */
|
|
821
|
+
name?: string;
|
|
822
|
+
/** Physical address of the place */
|
|
823
|
+
address?: {
|
|
824
|
+
addressLocality?: string;
|
|
825
|
+
addressCountry?: string;
|
|
826
|
+
};
|
|
827
|
+
}
|
|
828
|
+
/** Configuration for `schemaOrgPlace()` */
|
|
829
|
+
interface SchemaOrgPlaceConfig {
|
|
830
|
+
/** Custom validation messages */
|
|
831
|
+
validation?: {
|
|
832
|
+
/** Custom error message when place name is missing */
|
|
833
|
+
nameRequired?: string;
|
|
834
|
+
};
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
/** Schema.org PostalAddress — data shape from GROQ query */
|
|
838
|
+
interface SchemaOrgPostalAddressData {
|
|
839
|
+
_type?: 'schemaOrgPostalAddress';
|
|
840
|
+
/** Street address, e.g. "123 Main St" */
|
|
841
|
+
streetAddress?: string;
|
|
842
|
+
/** City or locality, e.g. "New York" */
|
|
843
|
+
addressLocality?: string;
|
|
844
|
+
/** Postal or ZIP code, e.g. "10001" */
|
|
845
|
+
postalCode?: string;
|
|
846
|
+
/** Country code, e.g. "US" */
|
|
847
|
+
addressCountry?: string;
|
|
848
|
+
}
|
|
849
|
+
/** Configuration for `schemaOrgPostalAddress()` */
|
|
850
|
+
interface SchemaOrgPostalAddressConfig {
|
|
851
|
+
validation?: Record<string, string>;
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
/** Brand info nested within the Product schema */
|
|
855
|
+
interface ProductBrand {
|
|
856
|
+
/** Brand name */
|
|
857
|
+
name?: string;
|
|
858
|
+
}
|
|
859
|
+
/** Pricing and availability information */
|
|
860
|
+
interface ProductOffer {
|
|
861
|
+
/** The price of the product, e.g. "29.99" */
|
|
862
|
+
price?: string;
|
|
863
|
+
/** ISO 4217 currency code, e.g. "USD" */
|
|
864
|
+
priceCurrency?: string;
|
|
865
|
+
/** Product availability status (Schema.org URL) */
|
|
866
|
+
availability?: string;
|
|
867
|
+
/** URL of the product offer page */
|
|
868
|
+
url?: string;
|
|
869
|
+
/** The condition of the product (Schema.org URL) */
|
|
870
|
+
itemCondition?: string;
|
|
871
|
+
}
|
|
872
|
+
/** Overall rating based on a collection of reviews */
|
|
873
|
+
interface ProductAggregateRating {
|
|
874
|
+
/** The average rating, e.g. "4.5" */
|
|
875
|
+
ratingValue?: string;
|
|
876
|
+
/** Total number of reviews */
|
|
877
|
+
reviewCount?: string;
|
|
878
|
+
/** The highest possible rating, e.g. "5" */
|
|
879
|
+
bestRating?: string;
|
|
880
|
+
}
|
|
881
|
+
/** A single product review */
|
|
882
|
+
interface ProductReview {
|
|
883
|
+
/** Reviewer name */
|
|
884
|
+
author?: string;
|
|
885
|
+
/** Rating value, e.g. "5" */
|
|
886
|
+
reviewRating?: string;
|
|
887
|
+
/** Review text */
|
|
888
|
+
reviewBody?: string;
|
|
889
|
+
}
|
|
890
|
+
/** Schema.org Product — data shape returned from a Sanity GROQ query */
|
|
891
|
+
interface SchemaOrgProductData {
|
|
892
|
+
_type?: 'schemaOrgProduct';
|
|
893
|
+
/** Product name */
|
|
894
|
+
name?: string;
|
|
895
|
+
/** Product image (URL or ImageObject) */
|
|
896
|
+
image?: SchemaOrgImageInput;
|
|
897
|
+
/** Short description of the product */
|
|
898
|
+
description?: string;
|
|
899
|
+
/** The brand of the product */
|
|
900
|
+
brand?: ProductBrand;
|
|
901
|
+
/** Stock Keeping Unit */
|
|
902
|
+
sku?: string;
|
|
903
|
+
/** Global Trade Item Number */
|
|
904
|
+
gtin?: string;
|
|
905
|
+
/** Manufacturer Part Number */
|
|
906
|
+
mpn?: string;
|
|
907
|
+
/** Pricing and availability information */
|
|
908
|
+
offers?: ProductOffer;
|
|
909
|
+
/** Overall rating based on a collection of reviews */
|
|
910
|
+
aggregateRating?: ProductAggregateRating;
|
|
911
|
+
/** Product reviews */
|
|
912
|
+
review?: ProductReview[];
|
|
913
|
+
}
|
|
914
|
+
/** Configuration for `schemaOrgProduct()` */
|
|
915
|
+
interface SchemaOrgProductConfig {
|
|
916
|
+
/** Custom validation messages */
|
|
917
|
+
validation?: {
|
|
918
|
+
/** Custom error message when product name is missing */
|
|
919
|
+
nameRequired?: string;
|
|
920
|
+
};
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
/** Schema.org ProfilePage — data shape from GROQ query */
|
|
924
|
+
interface SchemaOrgProfilePageData extends SchemaOrgThingData {
|
|
925
|
+
_type?: 'schemaOrgProfilePage';
|
|
926
|
+
dateCreated?: string;
|
|
927
|
+
dateModified?: string;
|
|
928
|
+
mainEntity?: {
|
|
929
|
+
name?: string;
|
|
930
|
+
url?: string;
|
|
931
|
+
image?: string;
|
|
932
|
+
description?: string;
|
|
933
|
+
sameAs?: string;
|
|
934
|
+
jobTitle?: string;
|
|
935
|
+
alumniOf?: string;
|
|
936
|
+
knowsAbout?: string[];
|
|
937
|
+
interactionStatistic?: Array<{
|
|
938
|
+
interactionType?: string;
|
|
939
|
+
userInteractionCount?: number;
|
|
940
|
+
}>;
|
|
941
|
+
};
|
|
942
|
+
}
|
|
943
|
+
/** Configuration for `schemaOrgProfilePage()` */
|
|
944
|
+
interface SchemaOrgProfilePageConfig {
|
|
945
|
+
validation?: Record<string, string>;
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
/** Nutrition info nested within the Recipe schema */
|
|
949
|
+
interface RecipeNutrition {
|
|
950
|
+
/** Calorie count, e.g. "250 calories" */
|
|
951
|
+
calories?: string;
|
|
952
|
+
}
|
|
953
|
+
/** A single instruction step */
|
|
954
|
+
interface RecipeInstruction {
|
|
955
|
+
/** Step name */
|
|
956
|
+
name?: string;
|
|
957
|
+
/** Step text */
|
|
958
|
+
text?: string;
|
|
959
|
+
}
|
|
960
|
+
/** Video info nested within the Recipe schema */
|
|
961
|
+
interface RecipeVideo {
|
|
962
|
+
/** Video name */
|
|
963
|
+
name?: string;
|
|
964
|
+
/** Video description */
|
|
965
|
+
description?: string;
|
|
966
|
+
/** URL of the video thumbnail */
|
|
967
|
+
thumbnailUrl?: string;
|
|
968
|
+
/** URL of the video file */
|
|
969
|
+
contentUrl?: string;
|
|
970
|
+
/** Date the video was uploaded */
|
|
971
|
+
uploadDate?: string;
|
|
972
|
+
}
|
|
973
|
+
/** Schema.org Recipe — data shape returned from a Sanity GROQ query */
|
|
974
|
+
interface SchemaOrgRecipeData extends SchemaOrgCreativeWorkData {
|
|
975
|
+
_type?: 'schemaOrgRecipe';
|
|
976
|
+
/** Prep time (ISO 8601 duration) */
|
|
977
|
+
prepTime?: string;
|
|
978
|
+
/** Cook time (ISO 8601 duration) */
|
|
979
|
+
cookTime?: string;
|
|
980
|
+
/** Total time (ISO 8601 duration) */
|
|
981
|
+
totalTime?: string;
|
|
982
|
+
/** Category, e.g. Dessert */
|
|
983
|
+
recipeCategory?: string;
|
|
984
|
+
/** Cuisine, e.g. Italian */
|
|
985
|
+
recipeCuisine?: string;
|
|
986
|
+
/** Yield, e.g. "4 servings" */
|
|
987
|
+
recipeYield?: string;
|
|
988
|
+
/** Nutrition information */
|
|
989
|
+
nutrition?: RecipeNutrition;
|
|
990
|
+
/** List of ingredients */
|
|
991
|
+
recipeIngredient?: string[];
|
|
992
|
+
/** Step-by-step instructions */
|
|
993
|
+
recipeInstructions?: RecipeInstruction[];
|
|
994
|
+
/** Override with typed shape */
|
|
995
|
+
aggregateRating?: SchemaOrgAggregateRating;
|
|
996
|
+
/** Recipe video */
|
|
997
|
+
video?: RecipeVideo;
|
|
998
|
+
}
|
|
999
|
+
/** Configuration for `schemaOrgRecipe()` */
|
|
1000
|
+
interface SchemaOrgRecipeConfig {
|
|
1001
|
+
/** Custom validation messages */
|
|
1002
|
+
validation?: {
|
|
1003
|
+
/** Custom error message when recipe name is missing */
|
|
1004
|
+
nameRequired?: string;
|
|
1005
|
+
};
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
/** Schema.org Restaurant — data shape from GROQ query */
|
|
1009
|
+
interface SchemaOrgRestaurantData extends SchemaOrgThingData {
|
|
1010
|
+
_type?: 'schemaOrgRestaurant';
|
|
1011
|
+
telephone?: string;
|
|
1012
|
+
servesCuisine?: string;
|
|
1013
|
+
priceRange?: string;
|
|
1014
|
+
menu?: string;
|
|
1015
|
+
acceptsReservations?: boolean;
|
|
1016
|
+
address?: Record<string, unknown>;
|
|
1017
|
+
geo?: Record<string, unknown>;
|
|
1018
|
+
openingHoursSpecification?: unknown[];
|
|
1019
|
+
aggregateRating?: Record<string, unknown>;
|
|
1020
|
+
hasMap?: string;
|
|
1021
|
+
logoUrl?: string;
|
|
1022
|
+
paymentAccepted?: string;
|
|
1023
|
+
currenciesAccepted?: string;
|
|
1024
|
+
}
|
|
1025
|
+
/** Configuration for `schemaOrgRestaurant()` */
|
|
1026
|
+
interface SchemaOrgRestaurantConfig {
|
|
1027
|
+
validation?: Record<string, string>;
|
|
1028
|
+
}
|
|
1029
|
+
|
|
1030
|
+
/** Provider info nested within the Service schema */
|
|
1031
|
+
interface ServiceProvider {
|
|
1032
|
+
/** Provider name */
|
|
1033
|
+
name?: string;
|
|
1034
|
+
/** Provider URL */
|
|
1035
|
+
url?: string;
|
|
1036
|
+
}
|
|
1037
|
+
/** A single offer in the catalog */
|
|
1038
|
+
interface ServiceOffer {
|
|
1039
|
+
/** Offer name */
|
|
1040
|
+
name?: string;
|
|
1041
|
+
}
|
|
1042
|
+
/** Offer catalog nested within the Service schema */
|
|
1043
|
+
interface ServiceOfferCatalog {
|
|
1044
|
+
/** Catalog name */
|
|
1045
|
+
name?: string;
|
|
1046
|
+
/** List of offers */
|
|
1047
|
+
itemListElement?: ServiceOffer[];
|
|
1048
|
+
}
|
|
1049
|
+
/** Schema.org Service — data shape returned from a Sanity GROQ query */
|
|
1050
|
+
interface SchemaOrgServiceData {
|
|
1051
|
+
_type?: 'schemaOrgService';
|
|
1052
|
+
/** Service name */
|
|
1053
|
+
name?: string;
|
|
1054
|
+
/** Type of service */
|
|
1055
|
+
serviceType?: string;
|
|
1056
|
+
/** Short description of the service */
|
|
1057
|
+
description?: string;
|
|
1058
|
+
/** URL of the service page */
|
|
1059
|
+
url?: string;
|
|
1060
|
+
/** Organization that provides the service */
|
|
1061
|
+
provider?: ServiceProvider;
|
|
1062
|
+
/** Geographic area served */
|
|
1063
|
+
areaServed?: string;
|
|
1064
|
+
/** Catalog of offers for the service */
|
|
1065
|
+
hasOfferCatalog?: ServiceOfferCatalog;
|
|
1066
|
+
}
|
|
1067
|
+
/** Configuration for `schemaOrgService()` */
|
|
1068
|
+
interface SchemaOrgServiceConfig {
|
|
1069
|
+
/** Custom validation messages */
|
|
1070
|
+
validation?: {
|
|
1071
|
+
/** Custom error message when service name is missing */
|
|
1072
|
+
nameRequired?: string;
|
|
1073
|
+
};
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
/** Item reviewed nested within the Review schema */
|
|
1077
|
+
interface ReviewItemReviewed {
|
|
1078
|
+
/** Name of the reviewed item */
|
|
1079
|
+
name?: string;
|
|
1080
|
+
/** URL of the reviewed item */
|
|
1081
|
+
url?: string;
|
|
1082
|
+
}
|
|
1083
|
+
/** Schema.org Review — data shape returned from a Sanity GROQ query */
|
|
1084
|
+
interface SchemaOrgReviewData extends SchemaOrgCreativeWorkData {
|
|
1085
|
+
_type?: 'schemaOrgReview';
|
|
1086
|
+
/** Rating for the reviewed item */
|
|
1087
|
+
reviewRating?: {
|
|
1088
|
+
ratingValue?: string;
|
|
1089
|
+
};
|
|
1090
|
+
/** Full text of the review */
|
|
1091
|
+
reviewBody?: string;
|
|
1092
|
+
/** The item that is being reviewed */
|
|
1093
|
+
itemReviewed?: ReviewItemReviewed;
|
|
1094
|
+
}
|
|
1095
|
+
/** Configuration for `schemaOrgReview()` */
|
|
1096
|
+
interface SchemaOrgReviewConfig {
|
|
1097
|
+
/** Custom validation messages */
|
|
1098
|
+
validation?: {
|
|
1099
|
+
/** Custom error message when rating value is missing */
|
|
1100
|
+
ratingValueRequired?: string;
|
|
1101
|
+
/** Custom error message when author name is missing */
|
|
1102
|
+
authorNameRequired?: string;
|
|
1103
|
+
};
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
/** Schema.org SoftwareApplication — data shape returned from a Sanity GROQ query */
|
|
1107
|
+
interface SchemaOrgSoftwareApplicationData {
|
|
1108
|
+
_type?: 'schemaOrgSoftwareApplication';
|
|
1109
|
+
/** Application name */
|
|
1110
|
+
name?: string;
|
|
1111
|
+
/** Category of the application */
|
|
1112
|
+
applicationCategory?: string;
|
|
1113
|
+
/** Supported operating systems */
|
|
1114
|
+
operatingSystem?: string;
|
|
1115
|
+
/** URL of the application */
|
|
1116
|
+
url?: string;
|
|
1117
|
+
}
|
|
1118
|
+
/** Configuration for `schemaOrgSoftwareApplication()` */
|
|
1119
|
+
interface SchemaOrgSoftwareApplicationConfig {
|
|
1120
|
+
/** Custom validation messages */
|
|
1121
|
+
validation?: {
|
|
1122
|
+
/** Custom error message when application name is missing */
|
|
1123
|
+
nameRequired?: string;
|
|
1124
|
+
};
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
/** SeekToAction nested within the VideoObject schema (potentialAction) */
|
|
1128
|
+
interface VideoObjectSeekAction {
|
|
1129
|
+
/** Video URL with {seek_to_second_number} placeholder */
|
|
1130
|
+
target?: string;
|
|
1131
|
+
/** Offset parameter name */
|
|
1132
|
+
startOffsetInput?: string;
|
|
1133
|
+
}
|
|
1134
|
+
/** Schema.org VideoObject — data shape from GROQ query */
|
|
1135
|
+
interface SchemaOrgVideoObjectData extends SchemaOrgCreativeWorkData {
|
|
1136
|
+
_type?: 'schemaOrgVideoObject';
|
|
1137
|
+
/** Date the video was uploaded (ISO 8601) */
|
|
1138
|
+
uploadDate?: string;
|
|
1139
|
+
/** URL to the actual video file */
|
|
1140
|
+
contentUrl?: string;
|
|
1141
|
+
/** URL for an embeddable player */
|
|
1142
|
+
embedUrl?: string;
|
|
1143
|
+
/** Video duration in ISO 8601 format */
|
|
1144
|
+
duration?: string;
|
|
1145
|
+
/** Override potentialAction with VideoObject-specific seek action */
|
|
1146
|
+
potentialAction?: VideoObjectSeekAction;
|
|
1147
|
+
}
|
|
1148
|
+
/** Configuration for `schemaOrgVideoObject()` */
|
|
1149
|
+
interface SchemaOrgVideoObjectConfig {
|
|
1150
|
+
validation?: {
|
|
1151
|
+
/** Custom error message when video name is missing */
|
|
1152
|
+
nameRequired?: string;
|
|
1153
|
+
};
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
/** Schema.org WebApplication — data shape returned from a Sanity GROQ query */
|
|
1157
|
+
interface SchemaOrgWebApplicationData {
|
|
1158
|
+
_type?: 'schemaOrgWebApplication';
|
|
1159
|
+
/** Application name */
|
|
1160
|
+
name?: string;
|
|
1161
|
+
/** URL of the web application */
|
|
1162
|
+
url?: string;
|
|
1163
|
+
/** Category of the application */
|
|
1164
|
+
applicationCategory?: string;
|
|
1165
|
+
/** Supported operating systems */
|
|
1166
|
+
operatingSystem?: string;
|
|
1167
|
+
}
|
|
1168
|
+
/** Configuration for `schemaOrgWebApplication()` */
|
|
1169
|
+
interface SchemaOrgWebApplicationConfig {
|
|
1170
|
+
/** Custom validation messages */
|
|
1171
|
+
validation?: {
|
|
1172
|
+
/** Custom error message when application name is missing */
|
|
1173
|
+
nameRequired?: string;
|
|
1174
|
+
/** Custom error message when application URL is missing */
|
|
1175
|
+
urlRequired?: string;
|
|
1176
|
+
};
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
/** Schema.org WebPage — data shape returned from a Sanity GROQ query */
|
|
1180
|
+
interface SchemaOrgWebPageData extends SchemaOrgCreativeWorkData {
|
|
1181
|
+
_type?: 'schemaOrgWebPage';
|
|
1182
|
+
/** Language code, e.g. "en" */
|
|
1183
|
+
inLanguage?: string;
|
|
1184
|
+
/** The specific type of web page (WebPage, AboutPage, ContactPage, etc.) */
|
|
1185
|
+
pageType?: string;
|
|
1186
|
+
}
|
|
1187
|
+
/** Configuration for `schemaOrgWebPage()` */
|
|
1188
|
+
interface SchemaOrgWebPageConfig {
|
|
1189
|
+
/** Custom validation messages */
|
|
1190
|
+
validation?: {
|
|
1191
|
+
/** Custom error message when page name is missing */
|
|
1192
|
+
nameRequired?: string;
|
|
1193
|
+
/** Custom error message when page URL is missing */
|
|
1194
|
+
urlRequired?: string;
|
|
1195
|
+
};
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
/** Schema.org WebSite — data shape returned from a Sanity GROQ query */
|
|
1199
|
+
interface SchemaOrgWebsiteData extends Pick<SchemaOrgCreativeWorkData, 'name' | 'url' | 'description' | 'inLanguage' | 'publisher' | 'potentialAction'> {
|
|
1200
|
+
_type?: 'schemaOrgWebsite';
|
|
1201
|
+
/** ISSN identifier of the website */
|
|
1202
|
+
issn?: string;
|
|
1203
|
+
}
|
|
1204
|
+
/** Configuration for `schemaOrgWebsite()` */
|
|
1205
|
+
interface SchemaOrgWebsiteConfig {
|
|
1206
|
+
/** Custom validation messages */
|
|
1207
|
+
validation?: {
|
|
1208
|
+
/** Custom error message when website name is missing */
|
|
1209
|
+
nameRequired?: string;
|
|
1210
|
+
/** Custom error message when website URL is missing */
|
|
1211
|
+
urlRequired?: string;
|
|
1212
|
+
};
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
export type { SchemaOrgFAQPageData as $, SchemaOrgProfilePageConfig as A, SchemaOrgRecipeConfig as B, SchemaOrgRestaurantConfig as C, SchemaOrgReviewConfig as D, SchemaOrgServiceConfig as E, SchemaOrgSoftwareApplicationConfig as F, SchemaOrgVideoObjectConfig as G, SchemaOrgWebApplicationConfig as H, SchemaOrgWebPageConfig as I, SchemaOrgWebsiteConfig as J, SchemaOrgAggregateRating as K, SchemaOrgAggregateRatingData as L, SchemaOrgArchivedAt as M, SchemaOrgArticleData as N, OrganizationContactPoint as O, SchemaOrgBlogPostingData as P, SchemaOrgBookData as Q, SchemaOrgBrandData as R, SchemaOrgAggregateRatingConfig as S, SchemaOrgBreadcrumbListData as T, SchemaOrgContactPointData as U, SchemaOrgContentRating as V, SchemaOrgCopyrightYear as W, SchemaOrgCountryData as X, SchemaOrgCourseData as Y, SchemaOrgCreativeWorkData as Z, SchemaOrgEventData as _, SchemaOrgArticleConfig as a, SchemaOrgHowToData as a0, SchemaOrgImageInput as a1, SchemaOrgImageObjectData as a2, SchemaOrgItemListData as a3, SchemaOrgJobPostingData as a4, SchemaOrgLegalServiceData as a5, SchemaOrgLocalBusinessData as a6, SchemaOrgMovieData as a7, SchemaOrgMusicAlbumData as a8, SchemaOrgMusicRecordingData as a9, SchemaOrgNewsArticleData as aa, SchemaOrgOfferData as ab, SchemaOrgOrganizationData as ac, SchemaOrgOrganizationInput as ad, SchemaOrgPersonData as ae, SchemaOrgPersonOrOrganization as af, SchemaOrgPlaceData as ag, SchemaOrgPostalAddressData as ah, SchemaOrgProductData as ai, SchemaOrgProfilePageData as aj, SchemaOrgRecipeData as ak, SchemaOrgRestaurantData as al, SchemaOrgReviewData as am, SchemaOrgServiceData as an, SchemaOrgSoftwareApplicationData as ao, SchemaOrgTextOrUrl as ap, SchemaOrgThingData as aq, SchemaOrgVideoObjectData as ar, SchemaOrgWebApplicationData as as, SchemaOrgWebPageData as at, SchemaOrgWebsiteData as au, SchemaOrgBlogPostingConfig as b, SchemaOrgBookConfig as c, SchemaOrgBrandConfig as d, SchemaOrgBreadcrumbListConfig as e, SchemaOrgContactPointConfig as f, SchemaOrgCountryConfig as g, SchemaOrgCourseConfig as h, SchemaOrgEventConfig as i, SchemaOrgFAQPageConfig as j, SchemaOrgHowToConfig as k, SchemaOrgImageObjectConfig as l, SchemaOrgItemListConfig as m, SchemaOrgJobPostingConfig as n, SchemaOrgLegalServiceConfig as o, SchemaOrgLocalBusinessConfig as p, SchemaOrgMovieConfig as q, SchemaOrgMusicAlbumConfig as r, SchemaOrgMusicRecordingConfig as s, SchemaOrgNewsArticleConfig as t, SchemaOrgOfferConfig as u, SchemaOrgOrganizationConfig as v, SchemaOrgPersonConfig as w, SchemaOrgPlaceConfig as x, SchemaOrgPostalAddressConfig as y, SchemaOrgProductConfig as z };
|