@contentrain/astro-kit 0.1.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 +89 -0
- package/catalog.json +1780 -0
- package/components/_shared/Button.astro +37 -0
- package/components/_shared/KitImage.astro +21 -0
- package/components/_shared/Section.astro +43 -0
- package/components/_shared/types.ts +26 -0
- package/components/breadcrumb/Breadcrumb.astro +56 -0
- package/components/breadcrumb/fixtures.json +5 -0
- package/components/breadcrumb/meta.json +27 -0
- package/components/card-grid/CardGrid.astro +82 -0
- package/components/card-grid/fixtures.json +6 -0
- package/components/card-grid/meta.json +123 -0
- package/components/contact-form/ContactForm.astro +79 -0
- package/components/contact-form/fixtures.json +18 -0
- package/components/contact-form/meta.json +28 -0
- package/components/cta/Cta.astro +64 -0
- package/components/cta/fixtures.json +6 -0
- package/components/cta/meta.json +28 -0
- package/components/faq/Faq.astro +79 -0
- package/components/faq/fixtures.json +36 -0
- package/components/faq/meta.json +30 -0
- package/components/footer/Footer.astro +87 -0
- package/components/footer/fixtures.json +5 -0
- package/components/footer/meta.json +31 -0
- package/components/gallery/Gallery.astro +88 -0
- package/components/gallery/fixtures.json +191 -0
- package/components/gallery/meta.json +30 -0
- package/components/header/Header.astro +62 -0
- package/components/header/fixtures.json +125 -0
- package/components/header/meta.json +34 -0
- package/components/hero/Hero.astro +84 -0
- package/components/hero/fixtures.json +95 -0
- package/components/hero/meta.json +127 -0
- package/components/nav/Nav.astro +102 -0
- package/components/nav/fixtures.json +80 -0
- package/components/nav/meta.json +30 -0
- package/components/pagination/Pagination.astro +69 -0
- package/components/pagination/fixtures.json +6 -0
- package/components/pagination/meta.json +31 -0
- package/components/post-card/PostCard.astro +67 -0
- package/components/post-card/fixtures.json +54 -0
- package/components/post-card/meta.json +32 -0
- package/components/prose/Prose.astro +30 -0
- package/components/prose/fixtures.json +4 -0
- package/components/prose/meta.json +69 -0
- package/components/slider/Slider.astro +136 -0
- package/components/slider/fixtures.json +5 -0
- package/components/slider/meta.json +32 -0
- package/components/tabs/Tabs.astro +101 -0
- package/components/tabs/fixtures.json +37 -0
- package/components/tabs/meta.json +28 -0
- package/components/testimonial/Testimonial.astro +70 -0
- package/components/testimonial/fixtures.json +26 -0
- package/components/testimonial/meta.json +97 -0
- package/dist/index.d.mts +150 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +199 -0
- package/dist/index.mjs.map +1 -0
- package/mapping/classic.json +261 -0
- package/mapping/divi.json +295 -0
- package/mapping/elementor.json +322 -0
- package/mapping/gutenberg.json +395 -0
- package/package.json +63 -0
package/catalog.json
ADDED
|
@@ -0,0 +1,1780 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": "astro-kit-catalog@1",
|
|
3
|
+
"tokens": [
|
|
4
|
+
"--color-surface",
|
|
5
|
+
"--color-surface-muted",
|
|
6
|
+
"--color-ink",
|
|
7
|
+
"--color-ink-muted",
|
|
8
|
+
"--color-line",
|
|
9
|
+
"--color-accent",
|
|
10
|
+
"--color-accent-ink",
|
|
11
|
+
"--font-sans",
|
|
12
|
+
"--container-prose",
|
|
13
|
+
"--container-page",
|
|
14
|
+
"--container-wide",
|
|
15
|
+
"--radius-card"
|
|
16
|
+
],
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"tailwind-merge": "^3.7.0",
|
|
19
|
+
"tailwind-variants": "^3.3.1"
|
|
20
|
+
},
|
|
21
|
+
"components": [
|
|
22
|
+
{
|
|
23
|
+
"id": "breadcrumb",
|
|
24
|
+
"name": "Breadcrumb",
|
|
25
|
+
"description": "The page's ancestors as links followed by the page itself; optionally emits BreadcrumbList JSON-LD.",
|
|
26
|
+
"category": "content",
|
|
27
|
+
"uses": [],
|
|
28
|
+
"shared": [
|
|
29
|
+
"types.ts"
|
|
30
|
+
],
|
|
31
|
+
"variants": {
|
|
32
|
+
"separator": {
|
|
33
|
+
"options": [
|
|
34
|
+
"slash",
|
|
35
|
+
"chevron",
|
|
36
|
+
"dot"
|
|
37
|
+
],
|
|
38
|
+
"default": "slash",
|
|
39
|
+
"description": "Mark between items."
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"props": {
|
|
43
|
+
"items": {
|
|
44
|
+
"type": "array",
|
|
45
|
+
"required": true,
|
|
46
|
+
"items": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"fields": {
|
|
49
|
+
"label": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"required": true
|
|
52
|
+
},
|
|
53
|
+
"href": {
|
|
54
|
+
"type": "url",
|
|
55
|
+
"required": true
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"description": "Ancestors, root first (pages.parent chain, or Home → category)."
|
|
60
|
+
},
|
|
61
|
+
"current": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"required": true,
|
|
64
|
+
"description": "Current page title."
|
|
65
|
+
},
|
|
66
|
+
"label": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"description": "Accessible name (ui-strings nav.breadcrumb)."
|
|
69
|
+
},
|
|
70
|
+
"schema": {
|
|
71
|
+
"type": "boolean",
|
|
72
|
+
"default": false,
|
|
73
|
+
"description": "Emit BreadcrumbList JSON-LD (off when the SEO graph has one)."
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"slots": {},
|
|
77
|
+
"js": "none",
|
|
78
|
+
"dependencies": {},
|
|
79
|
+
"sources": {
|
|
80
|
+
"gutenberg": [
|
|
81
|
+
"yoast-seo/breadcrumbs",
|
|
82
|
+
"rank-math/breadcrumb"
|
|
83
|
+
],
|
|
84
|
+
"elementor": [
|
|
85
|
+
"elementor/breadcrumbs"
|
|
86
|
+
],
|
|
87
|
+
"divi": [
|
|
88
|
+
"divi/et_pb_breadcrumbs"
|
|
89
|
+
],
|
|
90
|
+
"classic": [
|
|
91
|
+
"classic/yoast-breadcrumb",
|
|
92
|
+
"classic/rank-math-breadcrumb"
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
"a11y": "A labelled <nav> with an ordered list; the current page is aria-current=page and not a link; separators are aria-hidden.",
|
|
96
|
+
"files": [
|
|
97
|
+
"Breadcrumb.astro"
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"id": "card-grid",
|
|
102
|
+
"name": "Card grid",
|
|
103
|
+
"description": "A grid of cards (features, services, team, linked pages) with an optional section heading and intro. A card with a link is clickable as a whole.",
|
|
104
|
+
"category": "section",
|
|
105
|
+
"uses": [],
|
|
106
|
+
"shared": [
|
|
107
|
+
"KitImage.astro",
|
|
108
|
+
"Section.astro",
|
|
109
|
+
"types.ts"
|
|
110
|
+
],
|
|
111
|
+
"variants": {
|
|
112
|
+
"columns": {
|
|
113
|
+
"options": [
|
|
114
|
+
"2",
|
|
115
|
+
"3",
|
|
116
|
+
"4"
|
|
117
|
+
],
|
|
118
|
+
"default": "3",
|
|
119
|
+
"description": "Columns on wide screens; one on phones, two on tablets."
|
|
120
|
+
},
|
|
121
|
+
"style": {
|
|
122
|
+
"options": [
|
|
123
|
+
"plain",
|
|
124
|
+
"bordered",
|
|
125
|
+
"elevated"
|
|
126
|
+
],
|
|
127
|
+
"default": "plain",
|
|
128
|
+
"description": "Card chrome: none, a border, or a raised surface."
|
|
129
|
+
},
|
|
130
|
+
"align": {
|
|
131
|
+
"options": [
|
|
132
|
+
"start",
|
|
133
|
+
"center"
|
|
134
|
+
],
|
|
135
|
+
"default": "start",
|
|
136
|
+
"description": "Text alignment inside cards and of the header."
|
|
137
|
+
},
|
|
138
|
+
"tone": {
|
|
139
|
+
"options": [
|
|
140
|
+
"default",
|
|
141
|
+
"muted",
|
|
142
|
+
"inverse",
|
|
143
|
+
"accent"
|
|
144
|
+
],
|
|
145
|
+
"default": "default",
|
|
146
|
+
"description": "Section background."
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"props": {
|
|
150
|
+
"title": {
|
|
151
|
+
"type": "string",
|
|
152
|
+
"description": "Section heading."
|
|
153
|
+
},
|
|
154
|
+
"intro": {
|
|
155
|
+
"type": "text",
|
|
156
|
+
"description": "Paragraph under the heading."
|
|
157
|
+
},
|
|
158
|
+
"items": {
|
|
159
|
+
"type": "array",
|
|
160
|
+
"required": true,
|
|
161
|
+
"items": {
|
|
162
|
+
"type": "object",
|
|
163
|
+
"fields": {
|
|
164
|
+
"title": {
|
|
165
|
+
"type": "string",
|
|
166
|
+
"required": true
|
|
167
|
+
},
|
|
168
|
+
"text": {
|
|
169
|
+
"type": "text"
|
|
170
|
+
},
|
|
171
|
+
"href": {
|
|
172
|
+
"type": "url"
|
|
173
|
+
},
|
|
174
|
+
"image": {
|
|
175
|
+
"type": "object",
|
|
176
|
+
"fields": {
|
|
177
|
+
"src": {
|
|
178
|
+
"type": "image",
|
|
179
|
+
"required": true
|
|
180
|
+
},
|
|
181
|
+
"alt": {
|
|
182
|
+
"type": "string",
|
|
183
|
+
"required": true
|
|
184
|
+
},
|
|
185
|
+
"width": {
|
|
186
|
+
"type": "integer"
|
|
187
|
+
},
|
|
188
|
+
"height": {
|
|
189
|
+
"type": "integer"
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
"eyebrow": {
|
|
194
|
+
"type": "string"
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"description": "The cards. image is an ImageInput ({ src, alt, width?, height? })."
|
|
199
|
+
},
|
|
200
|
+
"headingLevel": {
|
|
201
|
+
"type": "integer",
|
|
202
|
+
"min": 2,
|
|
203
|
+
"max": 3,
|
|
204
|
+
"default": 2,
|
|
205
|
+
"description": "Level of the section heading; card titles are one below."
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
"slots": {},
|
|
209
|
+
"js": "none",
|
|
210
|
+
"dependencies": {},
|
|
211
|
+
"sources": {
|
|
212
|
+
"gutenberg": [
|
|
213
|
+
"core/columns",
|
|
214
|
+
"core/media-text"
|
|
215
|
+
],
|
|
216
|
+
"elementor": [
|
|
217
|
+
"elementor/icon-box",
|
|
218
|
+
"elementor/image-box",
|
|
219
|
+
"elementor/call-to-action",
|
|
220
|
+
"elementor/posts"
|
|
221
|
+
],
|
|
222
|
+
"divi": [
|
|
223
|
+
"divi/et_pb_blurb",
|
|
224
|
+
"divi/et_pb_team_member",
|
|
225
|
+
"divi/et_pb_pricing_tables"
|
|
226
|
+
],
|
|
227
|
+
"classic": [
|
|
228
|
+
"classic/widget-area"
|
|
229
|
+
]
|
|
230
|
+
},
|
|
231
|
+
"a11y": "A list of cards; the whole card is clickable through a stretched link on its title, so screen readers hear one link per card. The section is labelled by its heading.",
|
|
232
|
+
"files": [
|
|
233
|
+
"CardGrid.astro"
|
|
234
|
+
]
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"id": "contact-form",
|
|
238
|
+
"name": "Contact form",
|
|
239
|
+
"description": "The contact section: heading, introduction, contact details (email, phone, address) and a Contentrain Studio form — fields, spam protection and notifications set in Studio, submissions reviewed there. Replaces form plugins; renders the details alone until the site is bound to a Studio project.",
|
|
240
|
+
"category": "section",
|
|
241
|
+
"uses": [],
|
|
242
|
+
"shared": [
|
|
243
|
+
"Section.astro"
|
|
244
|
+
],
|
|
245
|
+
"variants": {
|
|
246
|
+
"layout": {
|
|
247
|
+
"options": [
|
|
248
|
+
"split",
|
|
249
|
+
"stacked"
|
|
250
|
+
],
|
|
251
|
+
"default": "split",
|
|
252
|
+
"description": "split: details beside the form on wide screens. stacked: one centred column."
|
|
253
|
+
},
|
|
254
|
+
"tone": {
|
|
255
|
+
"options": [
|
|
256
|
+
"default",
|
|
257
|
+
"muted",
|
|
258
|
+
"inverse",
|
|
259
|
+
"accent"
|
|
260
|
+
],
|
|
261
|
+
"default": "default",
|
|
262
|
+
"description": "Section background; the form always sits on a surface card."
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
"props": {
|
|
266
|
+
"model": {
|
|
267
|
+
"type": "string",
|
|
268
|
+
"required": true,
|
|
269
|
+
"description": "The Studio model submissions are saved to — the form's fields are that model's form settings (from the plugin form's fields at migration)."
|
|
270
|
+
},
|
|
271
|
+
"heading": {
|
|
272
|
+
"type": "string",
|
|
273
|
+
"description": "Section heading."
|
|
274
|
+
},
|
|
275
|
+
"intro": {
|
|
276
|
+
"type": "text",
|
|
277
|
+
"description": "A line or two above the details."
|
|
278
|
+
},
|
|
279
|
+
"details": {
|
|
280
|
+
"type": "array",
|
|
281
|
+
"items": {
|
|
282
|
+
"type": "object",
|
|
283
|
+
"fields": {
|
|
284
|
+
"label": {
|
|
285
|
+
"type": "string",
|
|
286
|
+
"required": true
|
|
287
|
+
},
|
|
288
|
+
"value": {
|
|
289
|
+
"type": "string",
|
|
290
|
+
"required": true
|
|
291
|
+
},
|
|
292
|
+
"href": {
|
|
293
|
+
"type": "url"
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
"description": "Ways to reach you, in order (Email → mailto:, Phone → tel:, Address → map link)."
|
|
298
|
+
},
|
|
299
|
+
"id": {
|
|
300
|
+
"type": "string",
|
|
301
|
+
"description": "Section id; the heading gets `<id>-title`."
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"slots": {},
|
|
305
|
+
"js": "studio",
|
|
306
|
+
"dependencies": {},
|
|
307
|
+
"sources": {
|
|
308
|
+
"elementor": [
|
|
309
|
+
"elementor/form"
|
|
310
|
+
],
|
|
311
|
+
"divi": [
|
|
312
|
+
"divi/et_pb_contact_form"
|
|
313
|
+
],
|
|
314
|
+
"classic": [
|
|
315
|
+
"classic/contact-form-7",
|
|
316
|
+
"classic/wpforms",
|
|
317
|
+
"classic/gravityforms",
|
|
318
|
+
"classic/ninja-forms"
|
|
319
|
+
]
|
|
320
|
+
},
|
|
321
|
+
"a11y": "Contact details are a description list; links say what they open. The form's labels, errors and focus handling are Studio's form runtime (FormMount). The section is labelled by its heading.",
|
|
322
|
+
"files": [
|
|
323
|
+
"ContactForm.astro"
|
|
324
|
+
]
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"id": "cta",
|
|
328
|
+
"name": "CTA",
|
|
329
|
+
"description": "A call to action: a short heading, an optional line of text and one or two buttons — across the whole section, or as a card inside it.",
|
|
330
|
+
"category": "section",
|
|
331
|
+
"uses": [],
|
|
332
|
+
"shared": [
|
|
333
|
+
"Button.astro",
|
|
334
|
+
"Section.astro",
|
|
335
|
+
"types.ts"
|
|
336
|
+
],
|
|
337
|
+
"variants": {
|
|
338
|
+
"layout": {
|
|
339
|
+
"options": [
|
|
340
|
+
"inline",
|
|
341
|
+
"centered"
|
|
342
|
+
],
|
|
343
|
+
"default": "inline",
|
|
344
|
+
"description": "inline: text left, buttons right on wide screens. centered: everything centred."
|
|
345
|
+
},
|
|
346
|
+
"frame": {
|
|
347
|
+
"options": [
|
|
348
|
+
"full",
|
|
349
|
+
"card"
|
|
350
|
+
],
|
|
351
|
+
"default": "full",
|
|
352
|
+
"description": "full: the tone fills the section. card: a rounded box in a plain section carries the tone."
|
|
353
|
+
},
|
|
354
|
+
"tone": {
|
|
355
|
+
"options": [
|
|
356
|
+
"default",
|
|
357
|
+
"muted",
|
|
358
|
+
"inverse",
|
|
359
|
+
"accent"
|
|
360
|
+
],
|
|
361
|
+
"default": "accent",
|
|
362
|
+
"description": "Background. On accent, primary buttons are drawn in the secondary style so they stay visible."
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
"props": {
|
|
366
|
+
"heading": {
|
|
367
|
+
"type": "string",
|
|
368
|
+
"required": true,
|
|
369
|
+
"description": "The call's heading (Divi CTA title, Elementor call-to-action title)."
|
|
370
|
+
},
|
|
371
|
+
"body": {
|
|
372
|
+
"type": "text",
|
|
373
|
+
"description": "One or two sentences under the heading."
|
|
374
|
+
},
|
|
375
|
+
"actions": {
|
|
376
|
+
"type": "array",
|
|
377
|
+
"required": true,
|
|
378
|
+
"items": {
|
|
379
|
+
"type": "object",
|
|
380
|
+
"fields": {
|
|
381
|
+
"label": {
|
|
382
|
+
"type": "string",
|
|
383
|
+
"required": true
|
|
384
|
+
},
|
|
385
|
+
"href": {
|
|
386
|
+
"type": "url",
|
|
387
|
+
"required": true
|
|
388
|
+
},
|
|
389
|
+
"newTab": {
|
|
390
|
+
"type": "boolean"
|
|
391
|
+
},
|
|
392
|
+
"style": {
|
|
393
|
+
"type": "select",
|
|
394
|
+
"options": [
|
|
395
|
+
"primary",
|
|
396
|
+
"secondary",
|
|
397
|
+
"ghost"
|
|
398
|
+
]
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
"description": "Buttons, in order; usually one."
|
|
403
|
+
},
|
|
404
|
+
"id": {
|
|
405
|
+
"type": "string",
|
|
406
|
+
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
407
|
+
}
|
|
408
|
+
},
|
|
409
|
+
"slots": {},
|
|
410
|
+
"js": "none",
|
|
411
|
+
"dependencies": {},
|
|
412
|
+
"sources": {
|
|
413
|
+
"elementor": [
|
|
414
|
+
"elementor/call-to-action"
|
|
415
|
+
],
|
|
416
|
+
"divi": [
|
|
417
|
+
"divi/et_pb_cta"
|
|
418
|
+
],
|
|
419
|
+
"classic": [
|
|
420
|
+
"classic/cta"
|
|
421
|
+
]
|
|
422
|
+
},
|
|
423
|
+
"a11y": "A labelled region (aria-labelledby its h2). Buttons are links with their own text. Accent tone swaps the primary button style so its contrast holds.",
|
|
424
|
+
"files": [
|
|
425
|
+
"Cta.astro"
|
|
426
|
+
]
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"id": "faq",
|
|
430
|
+
"name": "FAQ",
|
|
431
|
+
"description": "Questions and answers as native <details> disclosures (no script), in lines or cards; optionally one open at a time, and optionally with FAQPage structured data for search engines and AI answers.",
|
|
432
|
+
"category": "section",
|
|
433
|
+
"uses": [],
|
|
434
|
+
"shared": [
|
|
435
|
+
"Section.astro"
|
|
436
|
+
],
|
|
437
|
+
"variants": {
|
|
438
|
+
"style": {
|
|
439
|
+
"options": [
|
|
440
|
+
"lines",
|
|
441
|
+
"cards"
|
|
442
|
+
],
|
|
443
|
+
"default": "lines",
|
|
444
|
+
"description": "lines: rows divided by rules. cards: each question in a rounded box."
|
|
445
|
+
},
|
|
446
|
+
"tone": {
|
|
447
|
+
"options": [
|
|
448
|
+
"default",
|
|
449
|
+
"muted",
|
|
450
|
+
"inverse",
|
|
451
|
+
"accent"
|
|
452
|
+
],
|
|
453
|
+
"default": "default",
|
|
454
|
+
"description": "Section background."
|
|
455
|
+
}
|
|
456
|
+
},
|
|
457
|
+
"props": {
|
|
458
|
+
"items": {
|
|
459
|
+
"type": "array",
|
|
460
|
+
"required": true,
|
|
461
|
+
"items": {
|
|
462
|
+
"type": "object",
|
|
463
|
+
"fields": {
|
|
464
|
+
"question": {
|
|
465
|
+
"type": "string",
|
|
466
|
+
"required": true
|
|
467
|
+
},
|
|
468
|
+
"answer": {
|
|
469
|
+
"type": "richtext",
|
|
470
|
+
"required": true
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
"description": "The questions in order (core/details summary + content, Elementor accordion/toggle tabs, Divi accordion/toggle items)."
|
|
475
|
+
},
|
|
476
|
+
"heading": {
|
|
477
|
+
"type": "string",
|
|
478
|
+
"description": "Section heading."
|
|
479
|
+
},
|
|
480
|
+
"exclusive": {
|
|
481
|
+
"type": "boolean",
|
|
482
|
+
"default": false,
|
|
483
|
+
"description": "One answer open at a time (Elementor accordion, Divi accordion). Off for toggles."
|
|
484
|
+
},
|
|
485
|
+
"openFirst": {
|
|
486
|
+
"type": "boolean",
|
|
487
|
+
"default": false,
|
|
488
|
+
"description": "The first answer starts open (Divi open_toggle, Elementor active item 1)."
|
|
489
|
+
},
|
|
490
|
+
"schema": {
|
|
491
|
+
"type": "boolean",
|
|
492
|
+
"default": false,
|
|
493
|
+
"description": "Emit FAQPage JSON-LD built from these items. Use on at most one FAQ per page, and only when the page is really a FAQ."
|
|
494
|
+
},
|
|
495
|
+
"id": {
|
|
496
|
+
"type": "string",
|
|
497
|
+
"description": "Section id; also the exclusive group's name."
|
|
498
|
+
}
|
|
499
|
+
},
|
|
500
|
+
"slots": {},
|
|
501
|
+
"js": "none",
|
|
502
|
+
"dependencies": {},
|
|
503
|
+
"sources": {
|
|
504
|
+
"gutenberg": [
|
|
505
|
+
"core/details"
|
|
506
|
+
],
|
|
507
|
+
"elementor": [
|
|
508
|
+
"elementor/accordion",
|
|
509
|
+
"elementor/toggle",
|
|
510
|
+
"elementor/nested-accordion"
|
|
511
|
+
],
|
|
512
|
+
"divi": [
|
|
513
|
+
"divi/et_pb_accordion",
|
|
514
|
+
"divi/et_pb_toggle"
|
|
515
|
+
],
|
|
516
|
+
"classic": [
|
|
517
|
+
"classic/faq"
|
|
518
|
+
]
|
|
519
|
+
},
|
|
520
|
+
"a11y": "Native <details>/<summary>: keyboard operable and announced as expandable by every screen reader, with no script to fail. The plus icon is decorative. The JSON-LD answer text is the answer with its markup removed.",
|
|
521
|
+
"files": [
|
|
522
|
+
"Faq.astro"
|
|
523
|
+
]
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
"id": "footer",
|
|
527
|
+
"name": "Footer",
|
|
528
|
+
"description": "Site footer: brand and tagline, link columns or one row of links, social links and the copyright line.",
|
|
529
|
+
"category": "chrome",
|
|
530
|
+
"uses": [],
|
|
531
|
+
"shared": [
|
|
532
|
+
"types.ts"
|
|
533
|
+
],
|
|
534
|
+
"variants": {
|
|
535
|
+
"layout": {
|
|
536
|
+
"options": [
|
|
537
|
+
"simple",
|
|
538
|
+
"columns"
|
|
539
|
+
],
|
|
540
|
+
"default": "simple",
|
|
541
|
+
"description": "simple: brand left, links and copyright right. columns: brand column plus one column per link group."
|
|
542
|
+
},
|
|
543
|
+
"tone": {
|
|
544
|
+
"options": [
|
|
545
|
+
"default",
|
|
546
|
+
"muted",
|
|
547
|
+
"inverse"
|
|
548
|
+
],
|
|
549
|
+
"default": "default",
|
|
550
|
+
"description": "Surface with a top border, muted surface, or dark (ink) background."
|
|
551
|
+
}
|
|
552
|
+
},
|
|
553
|
+
"props": {
|
|
554
|
+
"siteName": {
|
|
555
|
+
"type": "string",
|
|
556
|
+
"required": true,
|
|
557
|
+
"description": "Site title (site.title or site.organization)."
|
|
558
|
+
},
|
|
559
|
+
"tagline": {
|
|
560
|
+
"type": "string",
|
|
561
|
+
"description": "One line under the name (site.tagline)."
|
|
562
|
+
},
|
|
563
|
+
"columns": {
|
|
564
|
+
"type": "array",
|
|
565
|
+
"items": {
|
|
566
|
+
"type": "object",
|
|
567
|
+
"fields": {
|
|
568
|
+
"title": {
|
|
569
|
+
"type": "string",
|
|
570
|
+
"required": true
|
|
571
|
+
},
|
|
572
|
+
"links": {
|
|
573
|
+
"type": "array",
|
|
574
|
+
"required": true
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
},
|
|
578
|
+
"description": "Link groups for the columns layout; each footer menu or widget area becomes one."
|
|
579
|
+
},
|
|
580
|
+
"links": {
|
|
581
|
+
"type": "array",
|
|
582
|
+
"items": {
|
|
583
|
+
"type": "object",
|
|
584
|
+
"fields": {
|
|
585
|
+
"label": {
|
|
586
|
+
"type": "string",
|
|
587
|
+
"required": true
|
|
588
|
+
},
|
|
589
|
+
"href": {
|
|
590
|
+
"type": "url",
|
|
591
|
+
"required": true
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
},
|
|
595
|
+
"description": "One row of links (the footer menu) for the simple layout."
|
|
596
|
+
},
|
|
597
|
+
"social": {
|
|
598
|
+
"type": "array",
|
|
599
|
+
"items": {
|
|
600
|
+
"type": "object",
|
|
601
|
+
"fields": {
|
|
602
|
+
"label": {
|
|
603
|
+
"type": "string",
|
|
604
|
+
"required": true
|
|
605
|
+
},
|
|
606
|
+
"href": {
|
|
607
|
+
"type": "url",
|
|
608
|
+
"required": true
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
},
|
|
612
|
+
"description": "Social profile links (site.same_as)."
|
|
613
|
+
},
|
|
614
|
+
"copyright": {
|
|
615
|
+
"type": "string",
|
|
616
|
+
"description": "Copyright line; defaults to © <year> <siteName>."
|
|
617
|
+
},
|
|
618
|
+
"navLabel": {
|
|
619
|
+
"type": "string",
|
|
620
|
+
"description": "Accessible name of the footer navigation (ui-strings nav.footer)."
|
|
621
|
+
}
|
|
622
|
+
},
|
|
623
|
+
"slots": {},
|
|
624
|
+
"js": "none",
|
|
625
|
+
"dependencies": {},
|
|
626
|
+
"sources": {
|
|
627
|
+
"gutenberg": [
|
|
628
|
+
"core/template-part:footer",
|
|
629
|
+
"core/social-links"
|
|
630
|
+
],
|
|
631
|
+
"elementor": [
|
|
632
|
+
"elementor/social-icons",
|
|
633
|
+
"elementor/icon-list"
|
|
634
|
+
],
|
|
635
|
+
"divi": [
|
|
636
|
+
"divi/et_pb_social_media_follow"
|
|
637
|
+
],
|
|
638
|
+
"classic": [
|
|
639
|
+
"classic/footer",
|
|
640
|
+
"classic/widget-area"
|
|
641
|
+
]
|
|
642
|
+
},
|
|
643
|
+
"a11y": "One <footer> landmark; each link group is a <nav> named by its title. Social links open in a new tab with rel=me.",
|
|
644
|
+
"files": [
|
|
645
|
+
"Footer.astro"
|
|
646
|
+
]
|
|
647
|
+
},
|
|
648
|
+
{
|
|
649
|
+
"id": "gallery",
|
|
650
|
+
"name": "Gallery",
|
|
651
|
+
"description": "Images in a square grid or in masonry columns, with optional captions. A click shows the image large in a native popover (no script), opens the image file, or does nothing.",
|
|
652
|
+
"category": "section",
|
|
653
|
+
"uses": [],
|
|
654
|
+
"shared": [
|
|
655
|
+
"KitImage.astro",
|
|
656
|
+
"Section.astro",
|
|
657
|
+
"types.ts"
|
|
658
|
+
],
|
|
659
|
+
"variants": {
|
|
660
|
+
"layout": {
|
|
661
|
+
"options": [
|
|
662
|
+
"grid",
|
|
663
|
+
"masonry"
|
|
664
|
+
],
|
|
665
|
+
"default": "grid",
|
|
666
|
+
"description": "grid: square crops in rows. masonry: columns that keep each image's shape."
|
|
667
|
+
},
|
|
668
|
+
"columns": {
|
|
669
|
+
"options": [
|
|
670
|
+
"2",
|
|
671
|
+
"3",
|
|
672
|
+
"4"
|
|
673
|
+
],
|
|
674
|
+
"default": "3",
|
|
675
|
+
"description": "Columns on wide screens; phones show two."
|
|
676
|
+
},
|
|
677
|
+
"open": {
|
|
678
|
+
"options": [
|
|
679
|
+
"popover",
|
|
680
|
+
"link",
|
|
681
|
+
"none"
|
|
682
|
+
],
|
|
683
|
+
"default": "popover",
|
|
684
|
+
"description": "popover: the image opens large in place (Popover API; Escape or a click outside closes it). link: the thumbnail links to the image file (the WordPress 'link to media file'). none: images only."
|
|
685
|
+
}
|
|
686
|
+
},
|
|
687
|
+
"props": {
|
|
688
|
+
"items": {
|
|
689
|
+
"type": "array",
|
|
690
|
+
"required": true,
|
|
691
|
+
"items": {
|
|
692
|
+
"type": "object",
|
|
693
|
+
"fields": {
|
|
694
|
+
"image": {
|
|
695
|
+
"type": "object",
|
|
696
|
+
"required": true,
|
|
697
|
+
"fields": {
|
|
698
|
+
"src": {
|
|
699
|
+
"type": "image",
|
|
700
|
+
"required": true
|
|
701
|
+
},
|
|
702
|
+
"alt": {
|
|
703
|
+
"type": "string",
|
|
704
|
+
"required": true
|
|
705
|
+
},
|
|
706
|
+
"width": {
|
|
707
|
+
"type": "integer"
|
|
708
|
+
},
|
|
709
|
+
"height": {
|
|
710
|
+
"type": "integer"
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
},
|
|
714
|
+
"caption": {
|
|
715
|
+
"type": "string"
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
},
|
|
719
|
+
"description": "The images in order (core/gallery inner images, Elementor gallery items, Divi gallery_ids)."
|
|
720
|
+
},
|
|
721
|
+
"heading": {
|
|
722
|
+
"type": "string",
|
|
723
|
+
"description": "Section heading above the images."
|
|
724
|
+
},
|
|
725
|
+
"closeLabel": {
|
|
726
|
+
"type": "string",
|
|
727
|
+
"description": "Text of the viewer's close button (ui-strings gallery.close)."
|
|
728
|
+
},
|
|
729
|
+
"tone": {
|
|
730
|
+
"type": "select",
|
|
731
|
+
"options": [
|
|
732
|
+
"default",
|
|
733
|
+
"muted",
|
|
734
|
+
"inverse",
|
|
735
|
+
"accent"
|
|
736
|
+
],
|
|
737
|
+
"description": "Section background."
|
|
738
|
+
},
|
|
739
|
+
"id": {
|
|
740
|
+
"type": "string",
|
|
741
|
+
"description": "Section id, unique per page: viewer ids derive from it (`<id>-image-<n>`)."
|
|
742
|
+
}
|
|
743
|
+
},
|
|
744
|
+
"slots": {},
|
|
745
|
+
"js": "none",
|
|
746
|
+
"dependencies": {},
|
|
747
|
+
"sources": {
|
|
748
|
+
"gutenberg": [
|
|
749
|
+
"core/gallery"
|
|
750
|
+
],
|
|
751
|
+
"elementor": [
|
|
752
|
+
"elementor/image-gallery",
|
|
753
|
+
"elementor/gallery"
|
|
754
|
+
],
|
|
755
|
+
"divi": [
|
|
756
|
+
"divi/et_pb_gallery"
|
|
757
|
+
],
|
|
758
|
+
"classic": [
|
|
759
|
+
"classic/gallery"
|
|
760
|
+
]
|
|
761
|
+
},
|
|
762
|
+
"a11y": "A list of figures. In popover mode each thumbnail is a <button> named by the image's alt (or caption) that opens the viewer; the viewer has a visible close button, and Escape closes it, returning focus to the thumbnail. Captions are <figcaption>s.",
|
|
763
|
+
"files": [
|
|
764
|
+
"Gallery.astro"
|
|
765
|
+
]
|
|
766
|
+
},
|
|
767
|
+
{
|
|
768
|
+
"id": "header",
|
|
769
|
+
"name": "Header",
|
|
770
|
+
"description": "Site header: brand (logo and/or name), navigation and an optional call-to-action button.",
|
|
771
|
+
"category": "chrome",
|
|
772
|
+
"uses": [
|
|
773
|
+
"nav"
|
|
774
|
+
],
|
|
775
|
+
"shared": [
|
|
776
|
+
"Button.astro",
|
|
777
|
+
"KitImage.astro",
|
|
778
|
+
"types.ts"
|
|
779
|
+
],
|
|
780
|
+
"variants": {
|
|
781
|
+
"layout": {
|
|
782
|
+
"options": [
|
|
783
|
+
"split",
|
|
784
|
+
"centered",
|
|
785
|
+
"brand-left"
|
|
786
|
+
],
|
|
787
|
+
"default": "split",
|
|
788
|
+
"description": "split: brand left, navigation right. centered: brand above centred navigation. brand-left: navigation right after the brand."
|
|
789
|
+
},
|
|
790
|
+
"tone": {
|
|
791
|
+
"options": [
|
|
792
|
+
"default",
|
|
793
|
+
"inverse",
|
|
794
|
+
"transparent"
|
|
795
|
+
],
|
|
796
|
+
"default": "default",
|
|
797
|
+
"description": "Surface with a bottom border, dark (ink) background, or transparent over the hero that follows."
|
|
798
|
+
},
|
|
799
|
+
"position": {
|
|
800
|
+
"options": [
|
|
801
|
+
"static",
|
|
802
|
+
"sticky"
|
|
803
|
+
],
|
|
804
|
+
"default": "static",
|
|
805
|
+
"description": "Sticky keeps the header at the top while scrolling."
|
|
806
|
+
}
|
|
807
|
+
},
|
|
808
|
+
"props": {
|
|
809
|
+
"siteName": {
|
|
810
|
+
"type": "string",
|
|
811
|
+
"required": true,
|
|
812
|
+
"description": "Site title (site.title)."
|
|
813
|
+
},
|
|
814
|
+
"logo": {
|
|
815
|
+
"type": "object",
|
|
816
|
+
"fields": {
|
|
817
|
+
"src": {
|
|
818
|
+
"type": "image",
|
|
819
|
+
"required": true
|
|
820
|
+
},
|
|
821
|
+
"alt": {
|
|
822
|
+
"type": "string",
|
|
823
|
+
"required": true
|
|
824
|
+
},
|
|
825
|
+
"width": {
|
|
826
|
+
"type": "integer"
|
|
827
|
+
},
|
|
828
|
+
"height": {
|
|
829
|
+
"type": "integer"
|
|
830
|
+
}
|
|
831
|
+
},
|
|
832
|
+
"description": "Logo image (site.logo)."
|
|
833
|
+
},
|
|
834
|
+
"showName": {
|
|
835
|
+
"type": "boolean",
|
|
836
|
+
"default": true,
|
|
837
|
+
"description": "Show the site name next to the logo."
|
|
838
|
+
},
|
|
839
|
+
"homeHref": {
|
|
840
|
+
"type": "url",
|
|
841
|
+
"default": "/",
|
|
842
|
+
"description": "Where the brand links."
|
|
843
|
+
},
|
|
844
|
+
"items": {
|
|
845
|
+
"type": "array",
|
|
846
|
+
"required": true,
|
|
847
|
+
"items": {
|
|
848
|
+
"type": "object",
|
|
849
|
+
"fields": {
|
|
850
|
+
"label": {
|
|
851
|
+
"type": "string",
|
|
852
|
+
"required": true
|
|
853
|
+
},
|
|
854
|
+
"href": {
|
|
855
|
+
"type": "url",
|
|
856
|
+
"required": true
|
|
857
|
+
},
|
|
858
|
+
"newTab": {
|
|
859
|
+
"type": "boolean"
|
|
860
|
+
},
|
|
861
|
+
"children": {
|
|
862
|
+
"type": "array"
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
},
|
|
866
|
+
"description": "Primary menu (menus → menu-items)."
|
|
867
|
+
},
|
|
868
|
+
"action": {
|
|
869
|
+
"type": "object",
|
|
870
|
+
"fields": {
|
|
871
|
+
"label": {
|
|
872
|
+
"type": "string",
|
|
873
|
+
"required": true
|
|
874
|
+
},
|
|
875
|
+
"href": {
|
|
876
|
+
"type": "url",
|
|
877
|
+
"required": true
|
|
878
|
+
},
|
|
879
|
+
"style": {
|
|
880
|
+
"type": "select",
|
|
881
|
+
"options": [
|
|
882
|
+
"primary",
|
|
883
|
+
"secondary",
|
|
884
|
+
"ghost"
|
|
885
|
+
]
|
|
886
|
+
}
|
|
887
|
+
},
|
|
888
|
+
"description": "Header button, shown on wide screens."
|
|
889
|
+
},
|
|
890
|
+
"navLabel": {
|
|
891
|
+
"type": "string",
|
|
892
|
+
"description": "Accessible name of the navigation (ui-strings nav.label)."
|
|
893
|
+
},
|
|
894
|
+
"menuLabel": {
|
|
895
|
+
"type": "string",
|
|
896
|
+
"description": "Narrow-screen toggle text (ui-strings nav.menu)."
|
|
897
|
+
},
|
|
898
|
+
"closeLabel": {
|
|
899
|
+
"type": "string",
|
|
900
|
+
"description": "Drawer close text (ui-strings nav.close)."
|
|
901
|
+
}
|
|
902
|
+
},
|
|
903
|
+
"slots": {},
|
|
904
|
+
"js": "none",
|
|
905
|
+
"dependencies": {},
|
|
906
|
+
"sources": {
|
|
907
|
+
"gutenberg": [
|
|
908
|
+
"core/template-part:header",
|
|
909
|
+
"core/site-title",
|
|
910
|
+
"core/site-logo"
|
|
911
|
+
],
|
|
912
|
+
"elementor": [
|
|
913
|
+
"elementor/theme-site-logo",
|
|
914
|
+
"elementor/theme-site-title"
|
|
915
|
+
],
|
|
916
|
+
"divi": [
|
|
917
|
+
"divi/et_pb_menu"
|
|
918
|
+
],
|
|
919
|
+
"classic": [
|
|
920
|
+
"classic/header"
|
|
921
|
+
]
|
|
922
|
+
},
|
|
923
|
+
"a11y": "One <header> landmark; the brand link is named by the site name when only the logo shows. Navigation as in nav.",
|
|
924
|
+
"files": [
|
|
925
|
+
"Header.astro"
|
|
926
|
+
]
|
|
927
|
+
},
|
|
928
|
+
{
|
|
929
|
+
"id": "hero",
|
|
930
|
+
"name": "Hero",
|
|
931
|
+
"description": "The page's opening section: optional eyebrow, heading, lead, action buttons and an image — beside the text, below it, or behind it as a full-bleed cover with a scrim.",
|
|
932
|
+
"category": "section",
|
|
933
|
+
"uses": [],
|
|
934
|
+
"shared": [
|
|
935
|
+
"Button.astro",
|
|
936
|
+
"KitImage.astro",
|
|
937
|
+
"Section.astro",
|
|
938
|
+
"types.ts"
|
|
939
|
+
],
|
|
940
|
+
"variants": {
|
|
941
|
+
"layout": {
|
|
942
|
+
"options": [
|
|
943
|
+
"split",
|
|
944
|
+
"centered",
|
|
945
|
+
"cover"
|
|
946
|
+
],
|
|
947
|
+
"default": "split",
|
|
948
|
+
"description": "split: text and image side by side (stacked on phones). centered: centred text with the image below. cover: the image fills the section behind the text, darkened by a scrim; without an image it falls back to split."
|
|
949
|
+
},
|
|
950
|
+
"tone": {
|
|
951
|
+
"options": [
|
|
952
|
+
"default",
|
|
953
|
+
"muted",
|
|
954
|
+
"inverse",
|
|
955
|
+
"accent"
|
|
956
|
+
],
|
|
957
|
+
"default": "default",
|
|
958
|
+
"description": "Section background (ignored by cover, which is always light text on the image)."
|
|
959
|
+
}
|
|
960
|
+
},
|
|
961
|
+
"props": {
|
|
962
|
+
"heading": {
|
|
963
|
+
"type": "string",
|
|
964
|
+
"required": true,
|
|
965
|
+
"description": "The main heading (Cover/Group heading, Elementor heading, Divi header title)."
|
|
966
|
+
},
|
|
967
|
+
"level": {
|
|
968
|
+
"type": "select",
|
|
969
|
+
"options": [
|
|
970
|
+
"1",
|
|
971
|
+
"2"
|
|
972
|
+
],
|
|
973
|
+
"default": "1",
|
|
974
|
+
"description": "Heading level: 1 when the hero opens the page, 2 when the page already has an h1."
|
|
975
|
+
},
|
|
976
|
+
"eyebrow": {
|
|
977
|
+
"type": "string",
|
|
978
|
+
"description": "Short line above the heading."
|
|
979
|
+
},
|
|
980
|
+
"lead": {
|
|
981
|
+
"type": "text",
|
|
982
|
+
"description": "Paragraph under the heading."
|
|
983
|
+
},
|
|
984
|
+
"actions": {
|
|
985
|
+
"type": "array",
|
|
986
|
+
"items": {
|
|
987
|
+
"type": "object",
|
|
988
|
+
"fields": {
|
|
989
|
+
"label": {
|
|
990
|
+
"type": "string",
|
|
991
|
+
"required": true
|
|
992
|
+
},
|
|
993
|
+
"href": {
|
|
994
|
+
"type": "url",
|
|
995
|
+
"required": true
|
|
996
|
+
},
|
|
997
|
+
"newTab": {
|
|
998
|
+
"type": "boolean"
|
|
999
|
+
},
|
|
1000
|
+
"style": {
|
|
1001
|
+
"type": "select",
|
|
1002
|
+
"options": [
|
|
1003
|
+
"primary",
|
|
1004
|
+
"secondary",
|
|
1005
|
+
"ghost"
|
|
1006
|
+
]
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
},
|
|
1010
|
+
"description": "Buttons, in order."
|
|
1011
|
+
},
|
|
1012
|
+
"image": {
|
|
1013
|
+
"type": "object",
|
|
1014
|
+
"fields": {
|
|
1015
|
+
"src": {
|
|
1016
|
+
"type": "image",
|
|
1017
|
+
"required": true
|
|
1018
|
+
},
|
|
1019
|
+
"alt": {
|
|
1020
|
+
"type": "string",
|
|
1021
|
+
"required": true
|
|
1022
|
+
},
|
|
1023
|
+
"width": {
|
|
1024
|
+
"type": "integer"
|
|
1025
|
+
},
|
|
1026
|
+
"height": {
|
|
1027
|
+
"type": "integer"
|
|
1028
|
+
}
|
|
1029
|
+
},
|
|
1030
|
+
"description": "Hero image; loaded first (the page's largest image)."
|
|
1031
|
+
},
|
|
1032
|
+
"id": {
|
|
1033
|
+
"type": "string",
|
|
1034
|
+
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
1035
|
+
}
|
|
1036
|
+
},
|
|
1037
|
+
"slots": {},
|
|
1038
|
+
"js": "none",
|
|
1039
|
+
"dependencies": {},
|
|
1040
|
+
"sources": {
|
|
1041
|
+
"gutenberg": [
|
|
1042
|
+
"core/cover",
|
|
1043
|
+
"core/media-text"
|
|
1044
|
+
],
|
|
1045
|
+
"divi": [
|
|
1046
|
+
"divi/et_pb_fullwidth_header",
|
|
1047
|
+
"divi/et_pb_fullwidth_image"
|
|
1048
|
+
],
|
|
1049
|
+
"classic": [
|
|
1050
|
+
"classic/hero"
|
|
1051
|
+
]
|
|
1052
|
+
},
|
|
1053
|
+
"a11y": "A labelled region (aria-labelledby the heading). One h1 by default; `level: 2` inside pages that already have one. The cover image is decorative when its alt is empty; text sits on an ink scrim for contrast.",
|
|
1054
|
+
"files": [
|
|
1055
|
+
"Hero.astro"
|
|
1056
|
+
]
|
|
1057
|
+
},
|
|
1058
|
+
{
|
|
1059
|
+
"id": "nav",
|
|
1060
|
+
"name": "Navigation",
|
|
1061
|
+
"description": "Site navigation: an inline list with hover/focus submenus on wide screens and a toggle on narrow ones that opens a native popover drawer or a <details> dropdown. No JavaScript.",
|
|
1062
|
+
"category": "chrome",
|
|
1063
|
+
"uses": [],
|
|
1064
|
+
"shared": [
|
|
1065
|
+
"types.ts"
|
|
1066
|
+
],
|
|
1067
|
+
"variants": {
|
|
1068
|
+
"mobile": {
|
|
1069
|
+
"options": [
|
|
1070
|
+
"popover",
|
|
1071
|
+
"details"
|
|
1072
|
+
],
|
|
1073
|
+
"default": "popover",
|
|
1074
|
+
"description": "Narrow-screen menu: a side drawer (Popover API) or a dropdown under the toggle."
|
|
1075
|
+
},
|
|
1076
|
+
"align": {
|
|
1077
|
+
"options": [
|
|
1078
|
+
"start",
|
|
1079
|
+
"end",
|
|
1080
|
+
"center"
|
|
1081
|
+
],
|
|
1082
|
+
"default": "end",
|
|
1083
|
+
"description": "Horizontal alignment of the inline list."
|
|
1084
|
+
},
|
|
1085
|
+
"density": {
|
|
1086
|
+
"options": [
|
|
1087
|
+
"compact",
|
|
1088
|
+
"comfortable"
|
|
1089
|
+
],
|
|
1090
|
+
"default": "compact",
|
|
1091
|
+
"description": "Gap and text size of the inline list."
|
|
1092
|
+
}
|
|
1093
|
+
},
|
|
1094
|
+
"props": {
|
|
1095
|
+
"items": {
|
|
1096
|
+
"type": "array",
|
|
1097
|
+
"required": true,
|
|
1098
|
+
"items": {
|
|
1099
|
+
"type": "object",
|
|
1100
|
+
"fields": {
|
|
1101
|
+
"label": {
|
|
1102
|
+
"type": "string",
|
|
1103
|
+
"required": true
|
|
1104
|
+
},
|
|
1105
|
+
"href": {
|
|
1106
|
+
"type": "url",
|
|
1107
|
+
"required": true
|
|
1108
|
+
},
|
|
1109
|
+
"newTab": {
|
|
1110
|
+
"type": "boolean"
|
|
1111
|
+
},
|
|
1112
|
+
"children": {
|
|
1113
|
+
"type": "array"
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
},
|
|
1117
|
+
"description": "Menu entries; one level of children is shown."
|
|
1118
|
+
},
|
|
1119
|
+
"label": {
|
|
1120
|
+
"type": "string",
|
|
1121
|
+
"description": "Accessible name of the navigation landmark (ui-strings nav.label)."
|
|
1122
|
+
},
|
|
1123
|
+
"menuLabel": {
|
|
1124
|
+
"type": "string",
|
|
1125
|
+
"description": "Text of the narrow-screen toggle (ui-strings nav.menu)."
|
|
1126
|
+
},
|
|
1127
|
+
"closeLabel": {
|
|
1128
|
+
"type": "string",
|
|
1129
|
+
"description": "Text of the drawer's close button (ui-strings nav.close)."
|
|
1130
|
+
},
|
|
1131
|
+
"id": {
|
|
1132
|
+
"type": "string",
|
|
1133
|
+
"description": "Unique id when a page renders two navigations."
|
|
1134
|
+
}
|
|
1135
|
+
},
|
|
1136
|
+
"slots": {},
|
|
1137
|
+
"js": "none",
|
|
1138
|
+
"dependencies": {},
|
|
1139
|
+
"sources": {
|
|
1140
|
+
"gutenberg": [
|
|
1141
|
+
"core/navigation",
|
|
1142
|
+
"core/page-list"
|
|
1143
|
+
],
|
|
1144
|
+
"elementor": [
|
|
1145
|
+
"elementor/nav-menu"
|
|
1146
|
+
],
|
|
1147
|
+
"divi": [
|
|
1148
|
+
"divi/et_pb_menu",
|
|
1149
|
+
"divi/et_pb_fullwidth_menu"
|
|
1150
|
+
],
|
|
1151
|
+
"classic": [
|
|
1152
|
+
"classic/nav-menu"
|
|
1153
|
+
]
|
|
1154
|
+
},
|
|
1155
|
+
"a11y": "A <nav> landmark with a label; the current page carries aria-current. Submenus open on :focus-within as well as hover. The drawer is a native popover: Escape and light dismiss close it and focus returns to the toggle.",
|
|
1156
|
+
"files": [
|
|
1157
|
+
"Nav.astro"
|
|
1158
|
+
]
|
|
1159
|
+
},
|
|
1160
|
+
{
|
|
1161
|
+
"id": "pagination",
|
|
1162
|
+
"name": "Pagination",
|
|
1163
|
+
"description": "Links between the pages of a post list, at WordPress addresses (<base>page/<n>/).",
|
|
1164
|
+
"category": "content",
|
|
1165
|
+
"uses": [],
|
|
1166
|
+
"shared": [],
|
|
1167
|
+
"variants": {
|
|
1168
|
+
"style": {
|
|
1169
|
+
"options": [
|
|
1170
|
+
"numbered",
|
|
1171
|
+
"simple"
|
|
1172
|
+
],
|
|
1173
|
+
"default": "numbered",
|
|
1174
|
+
"description": "Numbered pages with ellipses, or previous/next with 'Page n / m'."
|
|
1175
|
+
},
|
|
1176
|
+
"align": {
|
|
1177
|
+
"options": [
|
|
1178
|
+
"start",
|
|
1179
|
+
"center",
|
|
1180
|
+
"end"
|
|
1181
|
+
],
|
|
1182
|
+
"default": "center",
|
|
1183
|
+
"description": "Alignment of the numbered style."
|
|
1184
|
+
}
|
|
1185
|
+
},
|
|
1186
|
+
"props": {
|
|
1187
|
+
"base": {
|
|
1188
|
+
"type": "string",
|
|
1189
|
+
"required": true,
|
|
1190
|
+
"description": "The list's first-page address, ending in a slash."
|
|
1191
|
+
},
|
|
1192
|
+
"current": {
|
|
1193
|
+
"type": "integer",
|
|
1194
|
+
"required": true,
|
|
1195
|
+
"min": 1,
|
|
1196
|
+
"description": "Current page number."
|
|
1197
|
+
},
|
|
1198
|
+
"total": {
|
|
1199
|
+
"type": "integer",
|
|
1200
|
+
"required": true,
|
|
1201
|
+
"min": 1,
|
|
1202
|
+
"description": "Number of pages; nothing renders when it is 1."
|
|
1203
|
+
},
|
|
1204
|
+
"label": {
|
|
1205
|
+
"type": "string",
|
|
1206
|
+
"description": "Accessible name (ui-strings pagination.label)."
|
|
1207
|
+
},
|
|
1208
|
+
"prevLabel": {
|
|
1209
|
+
"type": "string",
|
|
1210
|
+
"description": "ui-strings pagination.prev."
|
|
1211
|
+
},
|
|
1212
|
+
"nextLabel": {
|
|
1213
|
+
"type": "string",
|
|
1214
|
+
"description": "ui-strings pagination.next."
|
|
1215
|
+
},
|
|
1216
|
+
"pageLabel": {
|
|
1217
|
+
"type": "string",
|
|
1218
|
+
"description": "ui-strings pagination.page."
|
|
1219
|
+
}
|
|
1220
|
+
},
|
|
1221
|
+
"slots": {},
|
|
1222
|
+
"js": "none",
|
|
1223
|
+
"dependencies": {},
|
|
1224
|
+
"sources": {
|
|
1225
|
+
"gutenberg": [
|
|
1226
|
+
"core/query-pagination"
|
|
1227
|
+
],
|
|
1228
|
+
"elementor": [
|
|
1229
|
+
"elementor/posts:pagination"
|
|
1230
|
+
],
|
|
1231
|
+
"divi": [
|
|
1232
|
+
"divi/et_pb_blog:pagination"
|
|
1233
|
+
],
|
|
1234
|
+
"classic": [
|
|
1235
|
+
"classic/pagination"
|
|
1236
|
+
]
|
|
1237
|
+
},
|
|
1238
|
+
"a11y": "A labelled <nav>; the current page is aria-current=page; prev/next carry rel. Numbers are prefixed with a visually hidden 'Page'.",
|
|
1239
|
+
"files": [
|
|
1240
|
+
"Pagination.astro"
|
|
1241
|
+
]
|
|
1242
|
+
},
|
|
1243
|
+
{
|
|
1244
|
+
"id": "post-card",
|
|
1245
|
+
"name": "Post card",
|
|
1246
|
+
"description": "One post in a list (index, archive, related posts): image, category, date, title, excerpt, author. The whole card links to the post.",
|
|
1247
|
+
"category": "content",
|
|
1248
|
+
"uses": [],
|
|
1249
|
+
"shared": [
|
|
1250
|
+
"KitImage.astro",
|
|
1251
|
+
"types.ts"
|
|
1252
|
+
],
|
|
1253
|
+
"variants": {
|
|
1254
|
+
"layout": {
|
|
1255
|
+
"options": [
|
|
1256
|
+
"vertical",
|
|
1257
|
+
"horizontal",
|
|
1258
|
+
"minimal"
|
|
1259
|
+
],
|
|
1260
|
+
"default": "vertical",
|
|
1261
|
+
"description": "Image on top, image beside the text, or text only with a divider."
|
|
1262
|
+
}
|
|
1263
|
+
},
|
|
1264
|
+
"props": {
|
|
1265
|
+
"title": {
|
|
1266
|
+
"type": "string",
|
|
1267
|
+
"required": true,
|
|
1268
|
+
"description": "Post title (posts.title)."
|
|
1269
|
+
},
|
|
1270
|
+
"href": {
|
|
1271
|
+
"type": "url",
|
|
1272
|
+
"required": true,
|
|
1273
|
+
"description": "Post address (from the permalink pattern)."
|
|
1274
|
+
},
|
|
1275
|
+
"excerpt": {
|
|
1276
|
+
"type": "text",
|
|
1277
|
+
"description": "Summary (posts.excerpt)."
|
|
1278
|
+
},
|
|
1279
|
+
"date": {
|
|
1280
|
+
"type": "datetime",
|
|
1281
|
+
"description": "Publication date (posts.published_at)."
|
|
1282
|
+
},
|
|
1283
|
+
"locale": {
|
|
1284
|
+
"type": "string",
|
|
1285
|
+
"description": "Locale the date is written in (site.language)."
|
|
1286
|
+
},
|
|
1287
|
+
"image": {
|
|
1288
|
+
"type": "object",
|
|
1289
|
+
"fields": {
|
|
1290
|
+
"src": {
|
|
1291
|
+
"type": "image",
|
|
1292
|
+
"required": true
|
|
1293
|
+
},
|
|
1294
|
+
"alt": {
|
|
1295
|
+
"type": "string",
|
|
1296
|
+
"required": true
|
|
1297
|
+
},
|
|
1298
|
+
"width": {
|
|
1299
|
+
"type": "integer"
|
|
1300
|
+
},
|
|
1301
|
+
"height": {
|
|
1302
|
+
"type": "integer"
|
|
1303
|
+
}
|
|
1304
|
+
},
|
|
1305
|
+
"description": "Cover (posts.cover → media)."
|
|
1306
|
+
},
|
|
1307
|
+
"category": {
|
|
1308
|
+
"type": "object",
|
|
1309
|
+
"fields": {
|
|
1310
|
+
"label": {
|
|
1311
|
+
"type": "string",
|
|
1312
|
+
"required": true
|
|
1313
|
+
},
|
|
1314
|
+
"href": {
|
|
1315
|
+
"type": "url",
|
|
1316
|
+
"required": true
|
|
1317
|
+
}
|
|
1318
|
+
},
|
|
1319
|
+
"description": "Primary category and its archive."
|
|
1320
|
+
},
|
|
1321
|
+
"author": {
|
|
1322
|
+
"type": "string",
|
|
1323
|
+
"description": "Author name (posts.author → authors.name)."
|
|
1324
|
+
},
|
|
1325
|
+
"headingLevel": {
|
|
1326
|
+
"type": "integer",
|
|
1327
|
+
"min": 2,
|
|
1328
|
+
"max": 3,
|
|
1329
|
+
"default": 2,
|
|
1330
|
+
"description": "Title heading level in the page outline."
|
|
1331
|
+
}
|
|
1332
|
+
},
|
|
1333
|
+
"slots": {},
|
|
1334
|
+
"js": "none",
|
|
1335
|
+
"dependencies": {},
|
|
1336
|
+
"sources": {
|
|
1337
|
+
"gutenberg": [
|
|
1338
|
+
"core/query",
|
|
1339
|
+
"core/post-template",
|
|
1340
|
+
"core/latest-posts"
|
|
1341
|
+
],
|
|
1342
|
+
"elementor": [
|
|
1343
|
+
"elementor/posts",
|
|
1344
|
+
"elementor/archive-posts"
|
|
1345
|
+
],
|
|
1346
|
+
"divi": [
|
|
1347
|
+
"divi/et_pb_blog"
|
|
1348
|
+
],
|
|
1349
|
+
"classic": [
|
|
1350
|
+
"classic/archive-item"
|
|
1351
|
+
]
|
|
1352
|
+
},
|
|
1353
|
+
"a11y": "An <article> with one link (the title), stretched over the card; the category link sits above it and stays separately focusable. Dates are <time datetime>.",
|
|
1354
|
+
"files": [
|
|
1355
|
+
"PostCard.astro"
|
|
1356
|
+
]
|
|
1357
|
+
},
|
|
1358
|
+
{
|
|
1359
|
+
"id": "prose",
|
|
1360
|
+
"name": "Prose",
|
|
1361
|
+
"description": "A rich-text body (post or page content) rendered as the editor wrote it: WordPress block markup kept, styled by Tailwind Typography on the site's tokens and the starter's Gutenberg block styles. The fallback for every builder element no rule maps to a component. Container blocks (core/group, core/columns) are not sources: their children are matched instead. Needs the starter's global.css (prose-site utility, wp-blocks.css).",
|
|
1362
|
+
"category": "content",
|
|
1363
|
+
"uses": [],
|
|
1364
|
+
"shared": [],
|
|
1365
|
+
"variants": {
|
|
1366
|
+
"size": {
|
|
1367
|
+
"options": [
|
|
1368
|
+
"base",
|
|
1369
|
+
"lg"
|
|
1370
|
+
],
|
|
1371
|
+
"default": "lg",
|
|
1372
|
+
"description": "Type scale of the body."
|
|
1373
|
+
}
|
|
1374
|
+
},
|
|
1375
|
+
"props": {
|
|
1376
|
+
"html": {
|
|
1377
|
+
"type": "richtext",
|
|
1378
|
+
"required": true,
|
|
1379
|
+
"description": "Rendered HTML of a richtext field (posts.body, pages.body)."
|
|
1380
|
+
},
|
|
1381
|
+
"searchable": {
|
|
1382
|
+
"type": "boolean",
|
|
1383
|
+
"default": true,
|
|
1384
|
+
"description": "Mark the body for the site search index (data-pagefind-body)."
|
|
1385
|
+
}
|
|
1386
|
+
},
|
|
1387
|
+
"slots": {},
|
|
1388
|
+
"js": "none",
|
|
1389
|
+
"dependencies": {},
|
|
1390
|
+
"sources": {
|
|
1391
|
+
"gutenberg": [
|
|
1392
|
+
"core/paragraph",
|
|
1393
|
+
"core/heading",
|
|
1394
|
+
"core/list",
|
|
1395
|
+
"core/list-item",
|
|
1396
|
+
"core/quote",
|
|
1397
|
+
"core/pullquote",
|
|
1398
|
+
"core/image",
|
|
1399
|
+
"core/table",
|
|
1400
|
+
"core/code",
|
|
1401
|
+
"core/preformatted",
|
|
1402
|
+
"core/verse",
|
|
1403
|
+
"core/separator",
|
|
1404
|
+
"core/spacer",
|
|
1405
|
+
"core/embed",
|
|
1406
|
+
"core/video",
|
|
1407
|
+
"core/audio",
|
|
1408
|
+
"core/file",
|
|
1409
|
+
"core/html",
|
|
1410
|
+
"core/freeform",
|
|
1411
|
+
"core/post-content"
|
|
1412
|
+
],
|
|
1413
|
+
"elementor": [
|
|
1414
|
+
"elementor/text-editor",
|
|
1415
|
+
"elementor/theme-post-content"
|
|
1416
|
+
],
|
|
1417
|
+
"divi": [
|
|
1418
|
+
"divi/et_pb_text",
|
|
1419
|
+
"divi/et_pb_post_content"
|
|
1420
|
+
],
|
|
1421
|
+
"classic": [
|
|
1422
|
+
"classic/the-content"
|
|
1423
|
+
]
|
|
1424
|
+
},
|
|
1425
|
+
"a11y": "Keeps the author's heading levels and list/table semantics; embedded media keep their own titles and captions. Block styles give focus-visible links and readable measure.",
|
|
1426
|
+
"files": [
|
|
1427
|
+
"Prose.astro"
|
|
1428
|
+
]
|
|
1429
|
+
},
|
|
1430
|
+
{
|
|
1431
|
+
"id": "slider",
|
|
1432
|
+
"name": "Slider",
|
|
1433
|
+
"description": "A carousel of images with optional title, text and button per slide. Without JavaScript it is a snapping horizontal scroller; Embla adds paging, arrows and dots.",
|
|
1434
|
+
"category": "section",
|
|
1435
|
+
"uses": [],
|
|
1436
|
+
"shared": [
|
|
1437
|
+
"Button.astro",
|
|
1438
|
+
"KitImage.astro",
|
|
1439
|
+
"types.ts"
|
|
1440
|
+
],
|
|
1441
|
+
"variants": {
|
|
1442
|
+
"perView": {
|
|
1443
|
+
"options": [
|
|
1444
|
+
"1",
|
|
1445
|
+
"2",
|
|
1446
|
+
"3"
|
|
1447
|
+
],
|
|
1448
|
+
"default": "1",
|
|
1449
|
+
"description": "Slides visible at once on wide screens."
|
|
1450
|
+
},
|
|
1451
|
+
"aspect": {
|
|
1452
|
+
"options": [
|
|
1453
|
+
"wide",
|
|
1454
|
+
"standard",
|
|
1455
|
+
"square"
|
|
1456
|
+
],
|
|
1457
|
+
"default": "wide",
|
|
1458
|
+
"description": "Image aspect ratio: 21:9, 3:2 or 1:1."
|
|
1459
|
+
},
|
|
1460
|
+
"caption": {
|
|
1461
|
+
"options": [
|
|
1462
|
+
"below",
|
|
1463
|
+
"overlay"
|
|
1464
|
+
],
|
|
1465
|
+
"default": "overlay",
|
|
1466
|
+
"description": "Caption under the image, or over its lower edge on a gradient."
|
|
1467
|
+
}
|
|
1468
|
+
},
|
|
1469
|
+
"props": {
|
|
1470
|
+
"slides": {
|
|
1471
|
+
"type": "array",
|
|
1472
|
+
"required": true,
|
|
1473
|
+
"items": {
|
|
1474
|
+
"type": "object",
|
|
1475
|
+
"fields": {
|
|
1476
|
+
"image": {
|
|
1477
|
+
"type": "object",
|
|
1478
|
+
"required": true,
|
|
1479
|
+
"fields": {
|
|
1480
|
+
"src": {
|
|
1481
|
+
"type": "image",
|
|
1482
|
+
"required": true
|
|
1483
|
+
},
|
|
1484
|
+
"alt": {
|
|
1485
|
+
"type": "string",
|
|
1486
|
+
"required": true
|
|
1487
|
+
},
|
|
1488
|
+
"width": {
|
|
1489
|
+
"type": "integer"
|
|
1490
|
+
},
|
|
1491
|
+
"height": {
|
|
1492
|
+
"type": "integer"
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
},
|
|
1496
|
+
"title": {
|
|
1497
|
+
"type": "string"
|
|
1498
|
+
},
|
|
1499
|
+
"text": {
|
|
1500
|
+
"type": "text"
|
|
1501
|
+
},
|
|
1502
|
+
"action": {
|
|
1503
|
+
"type": "object",
|
|
1504
|
+
"fields": {
|
|
1505
|
+
"label": {
|
|
1506
|
+
"type": "string",
|
|
1507
|
+
"required": true
|
|
1508
|
+
},
|
|
1509
|
+
"href": {
|
|
1510
|
+
"type": "url",
|
|
1511
|
+
"required": true
|
|
1512
|
+
},
|
|
1513
|
+
"newTab": {
|
|
1514
|
+
"type": "boolean"
|
|
1515
|
+
},
|
|
1516
|
+
"style": {
|
|
1517
|
+
"type": "select",
|
|
1518
|
+
"options": [
|
|
1519
|
+
"primary",
|
|
1520
|
+
"secondary",
|
|
1521
|
+
"ghost"
|
|
1522
|
+
]
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1526
|
+
}
|
|
1527
|
+
},
|
|
1528
|
+
"description": "Slides; image is an ImageInput, action an ActionInput."
|
|
1529
|
+
},
|
|
1530
|
+
"label": {
|
|
1531
|
+
"type": "string",
|
|
1532
|
+
"required": true,
|
|
1533
|
+
"description": "Accessible name of the carousel."
|
|
1534
|
+
},
|
|
1535
|
+
"prevLabel": {
|
|
1536
|
+
"type": "string",
|
|
1537
|
+
"description": "ui-strings slider.prev."
|
|
1538
|
+
},
|
|
1539
|
+
"nextLabel": {
|
|
1540
|
+
"type": "string",
|
|
1541
|
+
"description": "ui-strings slider.next."
|
|
1542
|
+
},
|
|
1543
|
+
"slideLabel": {
|
|
1544
|
+
"type": "string",
|
|
1545
|
+
"description": "ui-strings slider.slide."
|
|
1546
|
+
},
|
|
1547
|
+
"ofLabel": {
|
|
1548
|
+
"type": "string",
|
|
1549
|
+
"description": "ui-strings slider.of."
|
|
1550
|
+
},
|
|
1551
|
+
"loop": {
|
|
1552
|
+
"type": "boolean",
|
|
1553
|
+
"default": false,
|
|
1554
|
+
"description": "Wrap from the last slide to the first."
|
|
1555
|
+
}
|
|
1556
|
+
},
|
|
1557
|
+
"slots": {},
|
|
1558
|
+
"js": "embla",
|
|
1559
|
+
"dependencies": {
|
|
1560
|
+
"embla-carousel": "^8.6.0"
|
|
1561
|
+
},
|
|
1562
|
+
"sources": {
|
|
1563
|
+
"gutenberg": [
|
|
1564
|
+
"core/gallery:carousel"
|
|
1565
|
+
],
|
|
1566
|
+
"elementor": [
|
|
1567
|
+
"elementor/image-carousel",
|
|
1568
|
+
"elementor/slides",
|
|
1569
|
+
"elementor/media-carousel"
|
|
1570
|
+
],
|
|
1571
|
+
"divi": [
|
|
1572
|
+
"divi/et_pb_slider",
|
|
1573
|
+
"divi/et_pb_fullwidth_slider",
|
|
1574
|
+
"divi/et_pb_post_slider"
|
|
1575
|
+
],
|
|
1576
|
+
"classic": [
|
|
1577
|
+
"classic/revslider",
|
|
1578
|
+
"classic/metaslider",
|
|
1579
|
+
"classic/smart-slider"
|
|
1580
|
+
]
|
|
1581
|
+
},
|
|
1582
|
+
"a11y": "WAI-ARIA carousel pattern: a labelled region with aria-roledescription=carousel, slides as labelled groups ('Slide 2 of 5'), labelled previous/next buttons disabled at the ends, and dot buttons marking the current slide. No autoplay; with prefers-reduced-motion slides change without animation. Without JavaScript every slide is reachable by scrolling.",
|
|
1583
|
+
"files": [
|
|
1584
|
+
"Slider.astro"
|
|
1585
|
+
]
|
|
1586
|
+
},
|
|
1587
|
+
{
|
|
1588
|
+
"id": "tabs",
|
|
1589
|
+
"name": "Tabs",
|
|
1590
|
+
"description": "Tabbed panels with the WAI-ARIA tabs pattern from Zag.js (arrow keys, Home/End, roving focus). Without script every panel shows in turn under its own title, so no content is ever hidden from a reader or a crawler.",
|
|
1591
|
+
"category": "content",
|
|
1592
|
+
"uses": [],
|
|
1593
|
+
"shared": [
|
|
1594
|
+
"Section.astro"
|
|
1595
|
+
],
|
|
1596
|
+
"variants": {
|
|
1597
|
+
"style": {
|
|
1598
|
+
"options": [
|
|
1599
|
+
"underline",
|
|
1600
|
+
"pills"
|
|
1601
|
+
],
|
|
1602
|
+
"default": "underline",
|
|
1603
|
+
"description": "underline: a rule under the list, the selected tab underlined in accent. pills: the selected tab filled with accent."
|
|
1604
|
+
},
|
|
1605
|
+
"orientation": {
|
|
1606
|
+
"options": [
|
|
1607
|
+
"horizontal",
|
|
1608
|
+
"vertical"
|
|
1609
|
+
],
|
|
1610
|
+
"default": "horizontal",
|
|
1611
|
+
"description": "vertical: the tab list beside the panel on wide screens (Elementor vertical tabs)."
|
|
1612
|
+
},
|
|
1613
|
+
"tone": {
|
|
1614
|
+
"options": [
|
|
1615
|
+
"default",
|
|
1616
|
+
"muted",
|
|
1617
|
+
"inverse",
|
|
1618
|
+
"accent"
|
|
1619
|
+
],
|
|
1620
|
+
"default": "default",
|
|
1621
|
+
"description": "Section background."
|
|
1622
|
+
}
|
|
1623
|
+
},
|
|
1624
|
+
"props": {
|
|
1625
|
+
"items": {
|
|
1626
|
+
"type": "array",
|
|
1627
|
+
"required": true,
|
|
1628
|
+
"items": {
|
|
1629
|
+
"type": "object",
|
|
1630
|
+
"fields": {
|
|
1631
|
+
"label": {
|
|
1632
|
+
"type": "string",
|
|
1633
|
+
"required": true
|
|
1634
|
+
},
|
|
1635
|
+
"content": {
|
|
1636
|
+
"type": "richtext",
|
|
1637
|
+
"required": true
|
|
1638
|
+
}
|
|
1639
|
+
}
|
|
1640
|
+
},
|
|
1641
|
+
"description": "Tabs in order (Elementor tabs tab_title/tab_content, Divi tab title + content)."
|
|
1642
|
+
},
|
|
1643
|
+
"heading": {
|
|
1644
|
+
"type": "string",
|
|
1645
|
+
"description": "Section heading; also names the tab list."
|
|
1646
|
+
},
|
|
1647
|
+
"label": {
|
|
1648
|
+
"type": "string",
|
|
1649
|
+
"description": "Accessible name of the tab list when there is no heading."
|
|
1650
|
+
},
|
|
1651
|
+
"id": {
|
|
1652
|
+
"type": "string",
|
|
1653
|
+
"description": "Section id, unique per page: the tabs machine and its element ids derive from it."
|
|
1654
|
+
}
|
|
1655
|
+
},
|
|
1656
|
+
"slots": {},
|
|
1657
|
+
"js": "zag",
|
|
1658
|
+
"dependencies": {
|
|
1659
|
+
"@zag-js/tabs": "^1.44.0",
|
|
1660
|
+
"@zag-js/vanilla": "^1.44.0"
|
|
1661
|
+
},
|
|
1662
|
+
"sources": {
|
|
1663
|
+
"elementor": [
|
|
1664
|
+
"elementor/tabs",
|
|
1665
|
+
"elementor/nested-tabs"
|
|
1666
|
+
],
|
|
1667
|
+
"divi": [
|
|
1668
|
+
"divi/et_pb_tabs"
|
|
1669
|
+
],
|
|
1670
|
+
"classic": [
|
|
1671
|
+
"classic/tabs"
|
|
1672
|
+
]
|
|
1673
|
+
},
|
|
1674
|
+
"a11y": "Zag.js tabs: role=tablist/tab/tabpanel with aria-selected, aria-controls and aria-labelledby; arrow keys (per orientation), Home and End move between tabs. Before the script runs every panel is visible with its own h3 title; after, the titles become screen-reader-only and the tabs label the panels.",
|
|
1675
|
+
"files": [
|
|
1676
|
+
"Tabs.astro"
|
|
1677
|
+
]
|
|
1678
|
+
},
|
|
1679
|
+
{
|
|
1680
|
+
"id": "testimonial",
|
|
1681
|
+
"name": "Testimonial",
|
|
1682
|
+
"description": "Quotes from customers or readers with who said them: one large quote, or several as cards. Every quote is shown; rotating quotes are the slider's job.",
|
|
1683
|
+
"category": "section",
|
|
1684
|
+
"uses": [],
|
|
1685
|
+
"shared": [
|
|
1686
|
+
"KitImage.astro",
|
|
1687
|
+
"Section.astro",
|
|
1688
|
+
"types.ts"
|
|
1689
|
+
],
|
|
1690
|
+
"variants": {
|
|
1691
|
+
"layout": {
|
|
1692
|
+
"options": [
|
|
1693
|
+
"single",
|
|
1694
|
+
"grid"
|
|
1695
|
+
],
|
|
1696
|
+
"default": "grid",
|
|
1697
|
+
"description": "single: one large centred quote (the first item stands alone; more items stack). grid: cards, up to three per row."
|
|
1698
|
+
},
|
|
1699
|
+
"tone": {
|
|
1700
|
+
"options": [
|
|
1701
|
+
"default",
|
|
1702
|
+
"muted",
|
|
1703
|
+
"inverse",
|
|
1704
|
+
"accent"
|
|
1705
|
+
],
|
|
1706
|
+
"default": "default",
|
|
1707
|
+
"description": "Section background."
|
|
1708
|
+
}
|
|
1709
|
+
},
|
|
1710
|
+
"props": {
|
|
1711
|
+
"items": {
|
|
1712
|
+
"type": "array",
|
|
1713
|
+
"required": true,
|
|
1714
|
+
"items": {
|
|
1715
|
+
"type": "object",
|
|
1716
|
+
"fields": {
|
|
1717
|
+
"quote": {
|
|
1718
|
+
"type": "text",
|
|
1719
|
+
"required": true
|
|
1720
|
+
},
|
|
1721
|
+
"name": {
|
|
1722
|
+
"type": "string",
|
|
1723
|
+
"required": true
|
|
1724
|
+
},
|
|
1725
|
+
"role": {
|
|
1726
|
+
"type": "string"
|
|
1727
|
+
},
|
|
1728
|
+
"avatar": {
|
|
1729
|
+
"type": "object",
|
|
1730
|
+
"fields": {
|
|
1731
|
+
"src": {
|
|
1732
|
+
"type": "image",
|
|
1733
|
+
"required": true
|
|
1734
|
+
},
|
|
1735
|
+
"alt": {
|
|
1736
|
+
"type": "string",
|
|
1737
|
+
"required": true
|
|
1738
|
+
},
|
|
1739
|
+
"width": {
|
|
1740
|
+
"type": "integer"
|
|
1741
|
+
},
|
|
1742
|
+
"height": {
|
|
1743
|
+
"type": "integer"
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
}
|
|
1747
|
+
}
|
|
1748
|
+
},
|
|
1749
|
+
"description": "The quotes (Elementor testimonial content/name/job/image, Divi testimonial body/author/job_title/portrait_url)."
|
|
1750
|
+
},
|
|
1751
|
+
"heading": {
|
|
1752
|
+
"type": "string",
|
|
1753
|
+
"description": "Section heading above the quotes."
|
|
1754
|
+
},
|
|
1755
|
+
"id": {
|
|
1756
|
+
"type": "string",
|
|
1757
|
+
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
1758
|
+
}
|
|
1759
|
+
},
|
|
1760
|
+
"slots": {},
|
|
1761
|
+
"js": "none",
|
|
1762
|
+
"dependencies": {},
|
|
1763
|
+
"sources": {
|
|
1764
|
+
"elementor": [
|
|
1765
|
+
"elementor/testimonial"
|
|
1766
|
+
],
|
|
1767
|
+
"divi": [
|
|
1768
|
+
"divi/et_pb_testimonial"
|
|
1769
|
+
],
|
|
1770
|
+
"classic": [
|
|
1771
|
+
"classic/testimonial"
|
|
1772
|
+
]
|
|
1773
|
+
},
|
|
1774
|
+
"a11y": "Each quote is a <figure> whose <figcaption> names the speaker; the text is in a <blockquote>. Avatars are decorative when their alt is empty. The section is labelled by its heading when it has one.",
|
|
1775
|
+
"files": [
|
|
1776
|
+
"Testimonial.astro"
|
|
1777
|
+
]
|
|
1778
|
+
}
|
|
1779
|
+
]
|
|
1780
|
+
}
|