@contentrain/astro-kit 0.4.0 → 0.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 +2 -0
- package/catalog.json +1519 -165
- package/components/_shared/KitImage.astro +10 -4
- package/components/_shared/image.ts +14 -0
- package/components/_shared/types.ts +2 -1
- package/components/announcement/Announcement.astro +53 -0
- package/components/announcement/fixtures.json +6 -0
- package/components/announcement/meta.json +53 -0
- package/components/card-grid/CardGrid.astro +5 -3
- package/components/card-grid/meta.json +25 -11
- package/components/consent/Consent.astro +87 -0
- package/components/consent/fixtures.json +4 -0
- package/components/consent/meta.json +67 -0
- package/components/contact-details/ContactDetails.astro +74 -0
- package/components/contact-details/fixtures.json +4 -0
- package/components/contact-details/meta.json +105 -0
- package/components/contact-form/ContactForm.astro +22 -6
- package/components/contact-form/fixtures.json +2 -1
- package/components/contact-form/meta.json +7 -6
- package/components/cta/meta.json +4 -4
- package/components/faq/Faq.astro +1 -1
- package/components/faq/meta.json +7 -7
- package/components/feature-list/FeatureList.astro +85 -0
- package/components/feature-list/fixtures.json +129 -0
- package/components/feature-list/meta.json +118 -0
- package/components/footer/Footer.astro +15 -7
- package/components/footer/fixtures.json +3 -1
- package/components/footer/meta.json +12 -0
- package/components/gallery/Gallery.astro +7 -3
- package/components/gallery/meta.json +6 -6
- package/components/header/Header.astro +6 -4
- package/components/header/fixtures.json +2 -1
- package/components/hero/meta.json +30 -8
- package/components/logo-cloud/LogoCloud.astro +69 -0
- package/components/logo-cloud/fixtures.json +139 -0
- package/components/logo-cloud/meta.json +107 -0
- package/components/nav/Nav.astro +11 -4
- package/components/nav/fixtures.json +1 -0
- package/components/nav/meta.json +8 -0
- package/components/newsletter/meta.json +12 -0
- package/components/pricing/Pricing.astro +94 -0
- package/components/pricing/fixtures.json +6 -0
- package/components/pricing/meta.json +133 -0
- package/components/prose/Prose.astro +7 -3
- package/components/prose/fixtures.json +2 -1
- package/components/prose/meta.json +5 -2
- package/components/slider/Slider.astro +15 -3
- package/components/slider/meta.json +8 -8
- package/components/split/Split.astro +64 -0
- package/components/split/fixtures.json +6 -0
- package/components/split/meta.json +154 -0
- package/components/stats/Stats.astro +66 -0
- package/components/stats/fixtures.json +98 -0
- package/components/stats/meta.json +113 -0
- package/components/steps/Steps.astro +77 -0
- package/components/steps/fixtures.json +5 -0
- package/components/steps/meta.json +105 -0
- package/components/team/Team.astro +82 -0
- package/components/team/fixtures.json +5 -0
- package/components/team/meta.json +116 -0
- package/components/testimonial/Testimonial.astro +5 -3
- package/components/testimonial/meta.json +21 -20
- package/dist/index.d.mts +115 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +175 -3
- package/dist/index.mjs.map +1 -1
- package/mapping/classic.json +51 -6
- package/mapping/divi.json +359 -9
- package/mapping/elementor.json +581 -8
- package/mapping/gutenberg.json +420 -4
- package/package.json +2 -2
package/catalog.json
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"--radius-image",
|
|
23
23
|
"--spacing-gutter",
|
|
24
24
|
"--text-nav",
|
|
25
|
+
"--text-footer",
|
|
25
26
|
"--text-heading-1",
|
|
26
27
|
"--text-heading-2",
|
|
27
28
|
"--text-heading-3",
|
|
@@ -32,6 +33,62 @@
|
|
|
32
33
|
"tailwind-variants": "^3.3.1"
|
|
33
34
|
},
|
|
34
35
|
"components": [
|
|
36
|
+
{
|
|
37
|
+
"id": "announcement",
|
|
38
|
+
"name": "Announcement",
|
|
39
|
+
"description": "A one-line notice above the header (sale, event, changed hours) with an optional link. The visitor closes it with no JS (an open <details> whose summary is the close button); the dismissal is not remembered across pages.",
|
|
40
|
+
"category": "chrome",
|
|
41
|
+
"uses": [],
|
|
42
|
+
"shared": [],
|
|
43
|
+
"variants": {
|
|
44
|
+
"tone": {
|
|
45
|
+
"options": [
|
|
46
|
+
"default",
|
|
47
|
+
"muted",
|
|
48
|
+
"inverse",
|
|
49
|
+
"accent"
|
|
50
|
+
],
|
|
51
|
+
"default": "accent",
|
|
52
|
+
"description": "Background of the bar, from the theme tokens."
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"props": {
|
|
56
|
+
"message": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"required": true,
|
|
59
|
+
"label": "Message",
|
|
60
|
+
"description": "The notice, one short line."
|
|
61
|
+
},
|
|
62
|
+
"href": {
|
|
63
|
+
"type": "url",
|
|
64
|
+
"label": "Link",
|
|
65
|
+
"description": "Where the notice points (the sale, the event page)."
|
|
66
|
+
},
|
|
67
|
+
"linkLabel": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"label": "Link label",
|
|
70
|
+
"description": "Text of the link; defaults to \"Learn more\"."
|
|
71
|
+
},
|
|
72
|
+
"closeLabel": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"default": "Close announcement",
|
|
75
|
+
"content": false,
|
|
76
|
+
"description": "Accessible name of the close control (ui:)."
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"slots": {},
|
|
80
|
+
"js": "none",
|
|
81
|
+
"dependencies": {},
|
|
82
|
+
"sources": {
|
|
83
|
+
"elementor": [
|
|
84
|
+
"elementor/alert"
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"a11y": "The close control is a native <summary>: focusable, toggled with Enter or Space, and named by closeLabel. The link is a real link. The accent tone keeps full-contrast text.",
|
|
88
|
+
"files": [
|
|
89
|
+
"Announcement.astro"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
35
92
|
{
|
|
36
93
|
"id": "breadcrumb",
|
|
37
94
|
"name": "Breadcrumb",
|
|
@@ -119,6 +176,7 @@
|
|
|
119
176
|
"shared": [
|
|
120
177
|
"KitImage.astro",
|
|
121
178
|
"Section.astro",
|
|
179
|
+
"image.ts",
|
|
122
180
|
"types.ts"
|
|
123
181
|
],
|
|
124
182
|
"variants": {
|
|
@@ -162,49 +220,51 @@
|
|
|
162
220
|
"props": {
|
|
163
221
|
"title": {
|
|
164
222
|
"type": "string",
|
|
223
|
+
"label": "Heading",
|
|
165
224
|
"description": "Section heading."
|
|
166
225
|
},
|
|
167
226
|
"intro": {
|
|
168
227
|
"type": "text",
|
|
228
|
+
"label": "Introduction",
|
|
169
229
|
"description": "Paragraph under the heading."
|
|
170
230
|
},
|
|
171
231
|
"items": {
|
|
172
232
|
"type": "array",
|
|
233
|
+
"label": "Cards",
|
|
173
234
|
"required": true,
|
|
174
235
|
"items": {
|
|
175
236
|
"type": "object",
|
|
176
237
|
"fields": {
|
|
177
238
|
"title": {
|
|
178
239
|
"type": "string",
|
|
179
|
-
"
|
|
240
|
+
"label": "Title",
|
|
241
|
+
"required": true,
|
|
242
|
+
"description": "The card heading."
|
|
180
243
|
},
|
|
181
244
|
"text": {
|
|
182
|
-
"type": "text"
|
|
245
|
+
"type": "text",
|
|
246
|
+
"label": "Text",
|
|
247
|
+
"description": "A sentence or two under the heading."
|
|
183
248
|
},
|
|
184
249
|
"href": {
|
|
185
|
-
"type": "url"
|
|
250
|
+
"type": "url",
|
|
251
|
+
"label": "Link",
|
|
252
|
+
"description": "Makes the whole card a link."
|
|
186
253
|
},
|
|
187
254
|
"image": {
|
|
188
|
-
"type": "
|
|
189
|
-
"
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
"required": true
|
|
197
|
-
},
|
|
198
|
-
"width": {
|
|
199
|
-
"type": "integer"
|
|
200
|
-
},
|
|
201
|
-
"height": {
|
|
202
|
-
"type": "integer"
|
|
203
|
-
}
|
|
204
|
-
}
|
|
255
|
+
"type": "image",
|
|
256
|
+
"label": "Image",
|
|
257
|
+
"description": "Image on top of the card."
|
|
258
|
+
},
|
|
259
|
+
"imageAlt": {
|
|
260
|
+
"type": "string",
|
|
261
|
+
"label": "Image description",
|
|
262
|
+
"description": "What the image shows, for readers who cannot see it; empty when it is decoration."
|
|
205
263
|
},
|
|
206
264
|
"eyebrow": {
|
|
207
|
-
"type": "string"
|
|
265
|
+
"type": "string",
|
|
266
|
+
"label": "Eyebrow",
|
|
267
|
+
"description": "Short line above the title (a category, a role, a price)."
|
|
208
268
|
}
|
|
209
269
|
}
|
|
210
270
|
},
|
|
@@ -215,6 +275,7 @@
|
|
|
215
275
|
"min": 2,
|
|
216
276
|
"max": 3,
|
|
217
277
|
"default": 2,
|
|
278
|
+
"content": false,
|
|
218
279
|
"description": "Level of the section heading; card titles are one below."
|
|
219
280
|
}
|
|
220
281
|
},
|
|
@@ -244,12 +305,209 @@
|
|
|
244
305
|
"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.",
|
|
245
306
|
"files": [
|
|
246
307
|
"CardGrid.astro"
|
|
308
|
+
],
|
|
309
|
+
"contentFields": {
|
|
310
|
+
"title": "title",
|
|
311
|
+
"intro": "intro",
|
|
312
|
+
"items": "items",
|
|
313
|
+
"items[].title": "items[].title",
|
|
314
|
+
"items[].text": "items[].text",
|
|
315
|
+
"items[].href": "items[].href",
|
|
316
|
+
"items[].image": "items[].image",
|
|
317
|
+
"items[].imageAlt": "items[].image_alt",
|
|
318
|
+
"items[].eyebrow": "items[].eyebrow"
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"id": "consent",
|
|
323
|
+
"name": "Consent",
|
|
324
|
+
"description": "Cookie consent bar with accept and decline. Consent is denied by default: until the visitor explicitly accepts, <html data-consent> is \"denied\" (set before first paint) and nothing may start measurement. The choice is stored in localStorage (`kit-consent`), set as <html data-consent=\"granted|denied\"> and dispatched as a `kit:consent` event on document with {granted}; the site-settings analytics gate reads data-consent and loads analytics only when it is \"granted\". The bar shows only while no choice is stored, with no flash on later visits.",
|
|
325
|
+
"category": "chrome",
|
|
326
|
+
"uses": [],
|
|
327
|
+
"shared": [],
|
|
328
|
+
"variants": {
|
|
329
|
+
"position": {
|
|
330
|
+
"options": [
|
|
331
|
+
"bottom",
|
|
332
|
+
"corner"
|
|
333
|
+
],
|
|
334
|
+
"default": "bottom",
|
|
335
|
+
"description": "bottom: a full-width bar along the bottom edge. corner: a small card in the bottom corner."
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
"props": {
|
|
339
|
+
"message": {
|
|
340
|
+
"type": "text",
|
|
341
|
+
"required": true,
|
|
342
|
+
"label": "Message",
|
|
343
|
+
"description": "What the site stores and why, in a sentence or two."
|
|
344
|
+
},
|
|
345
|
+
"acceptLabel": {
|
|
346
|
+
"type": "string",
|
|
347
|
+
"required": true,
|
|
348
|
+
"label": "Accept label",
|
|
349
|
+
"description": "Text of the accept button."
|
|
350
|
+
},
|
|
351
|
+
"declineLabel": {
|
|
352
|
+
"type": "string",
|
|
353
|
+
"required": true,
|
|
354
|
+
"label": "Decline label",
|
|
355
|
+
"description": "Text of the decline button."
|
|
356
|
+
},
|
|
357
|
+
"policyHref": {
|
|
358
|
+
"type": "url",
|
|
359
|
+
"label": "Policy link",
|
|
360
|
+
"description": "Privacy or cookie policy page, linked after the message."
|
|
361
|
+
},
|
|
362
|
+
"policyLabel": {
|
|
363
|
+
"type": "string",
|
|
364
|
+
"default": "Privacy policy",
|
|
365
|
+
"content": false,
|
|
366
|
+
"description": "Text of the policy link (ui:)."
|
|
367
|
+
},
|
|
368
|
+
"regionLabel": {
|
|
369
|
+
"type": "string",
|
|
370
|
+
"default": "Cookie consent",
|
|
371
|
+
"content": false,
|
|
372
|
+
"description": "Accessible name of the bar's region (ui:)."
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
"slots": {},
|
|
376
|
+
"js": "vanilla",
|
|
377
|
+
"dependencies": {},
|
|
378
|
+
"sources": {
|
|
379
|
+
"classic": [
|
|
380
|
+
"classic/cookie-notice",
|
|
381
|
+
"classic/complianz",
|
|
382
|
+
"classic/cookieyes",
|
|
383
|
+
"classic/cookiebot"
|
|
384
|
+
]
|
|
385
|
+
},
|
|
386
|
+
"a11y": "A labelled region, not a modal: no focus trap, the page stays usable. Both choices are native buttons in reading order after the message; the policy link is a real link. Once a choice is made the bar is hidden (not just moved off screen).",
|
|
387
|
+
"files": [
|
|
388
|
+
"Consent.astro"
|
|
247
389
|
]
|
|
248
390
|
},
|
|
391
|
+
{
|
|
392
|
+
"id": "contact-details",
|
|
393
|
+
"name": "Contact details",
|
|
394
|
+
"description": "The ways to reach a business without a form: email and phone as mailto:/tel: links, the postal address in an <address>, opening hours and a map link, as a list or in columns. Renders nothing when every detail is empty.",
|
|
395
|
+
"category": "section",
|
|
396
|
+
"uses": [],
|
|
397
|
+
"shared": [
|
|
398
|
+
"Section.astro"
|
|
399
|
+
],
|
|
400
|
+
"variants": {
|
|
401
|
+
"layout": {
|
|
402
|
+
"options": [
|
|
403
|
+
"list",
|
|
404
|
+
"columns"
|
|
405
|
+
],
|
|
406
|
+
"default": "list",
|
|
407
|
+
"description": "list: one detail under another. columns: side by side on wide screens (a contact band under a map or above the footer)."
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
"props": {
|
|
411
|
+
"heading": {
|
|
412
|
+
"type": "string",
|
|
413
|
+
"label": "Heading",
|
|
414
|
+
"description": "Section heading."
|
|
415
|
+
},
|
|
416
|
+
"email": {
|
|
417
|
+
"type": "email",
|
|
418
|
+
"label": "Email",
|
|
419
|
+
"description": "The address people write to; shown as a mailto: link."
|
|
420
|
+
},
|
|
421
|
+
"phone": {
|
|
422
|
+
"type": "phone",
|
|
423
|
+
"label": "Phone",
|
|
424
|
+
"description": "The number as it should be read; the tel: link drops spaces and punctuation."
|
|
425
|
+
},
|
|
426
|
+
"address": {
|
|
427
|
+
"type": "text",
|
|
428
|
+
"label": "Address",
|
|
429
|
+
"description": "Postal address, one line per line."
|
|
430
|
+
},
|
|
431
|
+
"hours": {
|
|
432
|
+
"type": "text",
|
|
433
|
+
"label": "Opening hours",
|
|
434
|
+
"description": "Opening hours, one line per day or range."
|
|
435
|
+
},
|
|
436
|
+
"mapUrl": {
|
|
437
|
+
"type": "url",
|
|
438
|
+
"label": "Map link",
|
|
439
|
+
"description": "A map of the address (Google Maps, OpenStreetMap), shown as a link under it."
|
|
440
|
+
},
|
|
441
|
+
"emailLabel": {
|
|
442
|
+
"type": "string",
|
|
443
|
+
"default": "Email",
|
|
444
|
+
"content": false,
|
|
445
|
+
"description": "Label of the email line (ui:)."
|
|
446
|
+
},
|
|
447
|
+
"phoneLabel": {
|
|
448
|
+
"type": "string",
|
|
449
|
+
"default": "Phone",
|
|
450
|
+
"content": false,
|
|
451
|
+
"description": "Label of the phone line (ui:)."
|
|
452
|
+
},
|
|
453
|
+
"addressLabel": {
|
|
454
|
+
"type": "string",
|
|
455
|
+
"default": "Address",
|
|
456
|
+
"content": false,
|
|
457
|
+
"description": "Label of the address line (ui:)."
|
|
458
|
+
},
|
|
459
|
+
"hoursLabel": {
|
|
460
|
+
"type": "string",
|
|
461
|
+
"default": "Opening hours",
|
|
462
|
+
"content": false,
|
|
463
|
+
"description": "Label of the hours line (ui:)."
|
|
464
|
+
},
|
|
465
|
+
"mapLabel": {
|
|
466
|
+
"type": "string",
|
|
467
|
+
"default": "View on the map",
|
|
468
|
+
"content": false,
|
|
469
|
+
"description": "Text of the map link (ui:)."
|
|
470
|
+
},
|
|
471
|
+
"id": {
|
|
472
|
+
"type": "string",
|
|
473
|
+
"content": false,
|
|
474
|
+
"description": "Section id; the heading gets `<id>-title`."
|
|
475
|
+
}
|
|
476
|
+
},
|
|
477
|
+
"slots": {},
|
|
478
|
+
"js": "none",
|
|
479
|
+
"dependencies": {},
|
|
480
|
+
"sources": {
|
|
481
|
+
"elementor": [
|
|
482
|
+
"elementor/icon-list"
|
|
483
|
+
]
|
|
484
|
+
},
|
|
485
|
+
"a11y": "A description list: each detail is named by its term. Email and phone are real links that say what they are; the address is an <address>. The section is labelled by its heading.",
|
|
486
|
+
"pattern": {
|
|
487
|
+
"summary": "email, phone, address and hours listed, no form",
|
|
488
|
+
"signals": [
|
|
489
|
+
"mailto: link",
|
|
490
|
+
"tel: link",
|
|
491
|
+
"address text",
|
|
492
|
+
"icon list"
|
|
493
|
+
]
|
|
494
|
+
},
|
|
495
|
+
"files": [
|
|
496
|
+
"ContactDetails.astro"
|
|
497
|
+
],
|
|
498
|
+
"contentFields": {
|
|
499
|
+
"heading": "heading",
|
|
500
|
+
"email": "email",
|
|
501
|
+
"phone": "phone",
|
|
502
|
+
"address": "address",
|
|
503
|
+
"hours": "hours",
|
|
504
|
+
"mapUrl": "map_url"
|
|
505
|
+
}
|
|
506
|
+
},
|
|
249
507
|
{
|
|
250
508
|
"id": "contact-form",
|
|
251
509
|
"name": "Contact form",
|
|
252
|
-
"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.",
|
|
510
|
+
"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. When the owner chose another home at migration (site.config.ts `features.forms`) the form posts to their form service, or the section shows an address to write to or a link to the form on WordPress.",
|
|
253
511
|
"category": "section",
|
|
254
512
|
"uses": [],
|
|
255
513
|
"shared": [
|
|
@@ -279,31 +537,46 @@
|
|
|
279
537
|
"model": {
|
|
280
538
|
"type": "string",
|
|
281
539
|
"required": true,
|
|
540
|
+
"content": false,
|
|
282
541
|
"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)."
|
|
283
542
|
},
|
|
284
543
|
"heading": {
|
|
285
544
|
"type": "string",
|
|
545
|
+
"label": "Heading",
|
|
286
546
|
"description": "Section heading."
|
|
287
547
|
},
|
|
288
548
|
"intro": {
|
|
289
549
|
"type": "text",
|
|
550
|
+
"label": "Introduction",
|
|
290
551
|
"description": "A line or two above the details."
|
|
291
552
|
},
|
|
553
|
+
"formHeading": {
|
|
554
|
+
"type": "string",
|
|
555
|
+
"label": "Form heading",
|
|
556
|
+
"description": "The form's own heading, shown above the form."
|
|
557
|
+
},
|
|
292
558
|
"details": {
|
|
293
559
|
"type": "array",
|
|
560
|
+
"label": "Contact details",
|
|
294
561
|
"items": {
|
|
295
562
|
"type": "object",
|
|
296
563
|
"fields": {
|
|
297
564
|
"label": {
|
|
298
565
|
"type": "string",
|
|
299
|
-
"
|
|
566
|
+
"label": "Label",
|
|
567
|
+
"required": true,
|
|
568
|
+
"description": "What the detail is (Phone, Email, Address)."
|
|
300
569
|
},
|
|
301
570
|
"value": {
|
|
302
571
|
"type": "string",
|
|
303
|
-
"
|
|
572
|
+
"label": "Value",
|
|
573
|
+
"required": true,
|
|
574
|
+
"description": "The detail as shown."
|
|
304
575
|
},
|
|
305
576
|
"href": {
|
|
306
|
-
"type": "url"
|
|
577
|
+
"type": "url",
|
|
578
|
+
"label": "Link",
|
|
579
|
+
"description": "A tel:, mailto: or map link for it."
|
|
307
580
|
}
|
|
308
581
|
}
|
|
309
582
|
},
|
|
@@ -311,6 +584,7 @@
|
|
|
311
584
|
},
|
|
312
585
|
"id": {
|
|
313
586
|
"type": "string",
|
|
587
|
+
"content": false,
|
|
314
588
|
"description": "Section id; the heading gets `<id>-title`."
|
|
315
589
|
}
|
|
316
590
|
},
|
|
@@ -334,7 +608,16 @@
|
|
|
334
608
|
"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.",
|
|
335
609
|
"files": [
|
|
336
610
|
"ContactForm.astro"
|
|
337
|
-
]
|
|
611
|
+
],
|
|
612
|
+
"contentFields": {
|
|
613
|
+
"heading": "heading",
|
|
614
|
+
"intro": "intro",
|
|
615
|
+
"formHeading": "form_heading",
|
|
616
|
+
"details": "details",
|
|
617
|
+
"details[].label": "details[].label",
|
|
618
|
+
"details[].value": "details[].value",
|
|
619
|
+
"details[].href": "details[].href"
|
|
620
|
+
}
|
|
338
621
|
},
|
|
339
622
|
{
|
|
340
623
|
"id": "cta",
|
|
@@ -378,37 +661,48 @@
|
|
|
378
661
|
"props": {
|
|
379
662
|
"heading": {
|
|
380
663
|
"type": "string",
|
|
664
|
+
"label": "Heading",
|
|
381
665
|
"required": true,
|
|
382
666
|
"description": "The call's heading (Divi CTA title, Elementor call-to-action title)."
|
|
383
667
|
},
|
|
384
668
|
"body": {
|
|
385
669
|
"type": "text",
|
|
670
|
+
"label": "Text",
|
|
386
671
|
"description": "One or two sentences under the heading."
|
|
387
672
|
},
|
|
388
673
|
"actions": {
|
|
389
674
|
"type": "array",
|
|
675
|
+
"label": "Buttons",
|
|
390
676
|
"required": true,
|
|
391
677
|
"items": {
|
|
392
678
|
"type": "object",
|
|
393
679
|
"fields": {
|
|
394
680
|
"label": {
|
|
395
681
|
"type": "string",
|
|
396
|
-
"
|
|
682
|
+
"label": "Label",
|
|
683
|
+
"required": true,
|
|
684
|
+
"description": "The button text."
|
|
397
685
|
},
|
|
398
686
|
"href": {
|
|
399
687
|
"type": "url",
|
|
400
|
-
"
|
|
688
|
+
"label": "Link",
|
|
689
|
+
"required": true,
|
|
690
|
+
"description": "Where the button goes: a page on this site or a full address."
|
|
401
691
|
},
|
|
402
692
|
"newTab": {
|
|
403
|
-
"type": "boolean"
|
|
693
|
+
"type": "boolean",
|
|
694
|
+
"label": "Open in a new tab",
|
|
695
|
+
"description": "Open the link in a new tab (an external site the reader should not leave for)."
|
|
404
696
|
},
|
|
405
697
|
"style": {
|
|
406
698
|
"type": "select",
|
|
699
|
+
"label": "Style",
|
|
407
700
|
"options": [
|
|
408
701
|
"primary",
|
|
409
702
|
"secondary",
|
|
410
703
|
"ghost"
|
|
411
|
-
]
|
|
704
|
+
],
|
|
705
|
+
"description": "primary for the main action, secondary or ghost for the ones beside it."
|
|
412
706
|
}
|
|
413
707
|
}
|
|
414
708
|
},
|
|
@@ -416,6 +710,7 @@
|
|
|
416
710
|
},
|
|
417
711
|
"id": {
|
|
418
712
|
"type": "string",
|
|
713
|
+
"content": false,
|
|
419
714
|
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
420
715
|
}
|
|
421
716
|
},
|
|
@@ -436,7 +731,16 @@
|
|
|
436
731
|
"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.",
|
|
437
732
|
"files": [
|
|
438
733
|
"Cta.astro"
|
|
439
|
-
]
|
|
734
|
+
],
|
|
735
|
+
"contentFields": {
|
|
736
|
+
"heading": "heading",
|
|
737
|
+
"body": "body",
|
|
738
|
+
"actions": "actions",
|
|
739
|
+
"actions[].label": "actions[].label",
|
|
740
|
+
"actions[].href": "actions[].href",
|
|
741
|
+
"actions[].newTab": "actions[].new_tab",
|
|
742
|
+
"actions[].style": "actions[].style"
|
|
743
|
+
}
|
|
440
744
|
},
|
|
441
745
|
{
|
|
442
746
|
"id": "embed",
|
|
@@ -563,7 +867,7 @@
|
|
|
563
867
|
"plain"
|
|
564
868
|
],
|
|
565
869
|
"default": "lines",
|
|
566
|
-
"description": "lines: rows divided by rules. cards: each question in a rounded box. plain: the browser's own disclosure triangle without rules or boxes (WordPress's details block)."
|
|
870
|
+
"description": "lines: rows divided by rules. cards: each question in a rounded box. plain: the browser's own disclosure triangle without rules or boxes, questions at the body size (WordPress's details block)."
|
|
567
871
|
},
|
|
568
872
|
"tone": {
|
|
569
873
|
"options": [
|
|
@@ -579,17 +883,22 @@
|
|
|
579
883
|
"props": {
|
|
580
884
|
"items": {
|
|
581
885
|
"type": "array",
|
|
886
|
+
"label": "Questions",
|
|
582
887
|
"required": true,
|
|
583
888
|
"items": {
|
|
584
889
|
"type": "object",
|
|
585
890
|
"fields": {
|
|
586
891
|
"question": {
|
|
587
892
|
"type": "string",
|
|
588
|
-
"
|
|
893
|
+
"label": "Question",
|
|
894
|
+
"required": true,
|
|
895
|
+
"description": "The question, as the visitor would ask it."
|
|
589
896
|
},
|
|
590
897
|
"answer": {
|
|
591
898
|
"type": "richtext",
|
|
592
|
-
"
|
|
899
|
+
"label": "Answer",
|
|
900
|
+
"required": true,
|
|
901
|
+
"description": "The answer; links and lists allowed."
|
|
593
902
|
}
|
|
594
903
|
}
|
|
595
904
|
},
|
|
@@ -597,25 +906,30 @@
|
|
|
597
906
|
},
|
|
598
907
|
"heading": {
|
|
599
908
|
"type": "string",
|
|
909
|
+
"label": "Heading",
|
|
600
910
|
"description": "Section heading."
|
|
601
911
|
},
|
|
602
912
|
"exclusive": {
|
|
603
913
|
"type": "boolean",
|
|
604
914
|
"default": false,
|
|
915
|
+
"content": false,
|
|
605
916
|
"description": "One answer open at a time (Elementor accordion, Divi accordion). Off for toggles."
|
|
606
917
|
},
|
|
607
918
|
"openFirst": {
|
|
608
919
|
"type": "boolean",
|
|
609
920
|
"default": false,
|
|
921
|
+
"content": false,
|
|
610
922
|
"description": "The first answer starts open (Divi open_toggle, Elementor active item 1)."
|
|
611
923
|
},
|
|
612
924
|
"schema": {
|
|
613
925
|
"type": "boolean",
|
|
614
926
|
"default": false,
|
|
927
|
+
"content": false,
|
|
615
928
|
"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."
|
|
616
929
|
},
|
|
617
930
|
"id": {
|
|
618
931
|
"type": "string",
|
|
932
|
+
"content": false,
|
|
619
933
|
"description": "Section id; also the exclusive group's name."
|
|
620
934
|
}
|
|
621
935
|
},
|
|
@@ -642,7 +956,142 @@
|
|
|
642
956
|
"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.",
|
|
643
957
|
"files": [
|
|
644
958
|
"Faq.astro"
|
|
645
|
-
]
|
|
959
|
+
],
|
|
960
|
+
"contentFields": {
|
|
961
|
+
"items": "items",
|
|
962
|
+
"items[].question": "items[].question",
|
|
963
|
+
"items[].answer": "items[].answer",
|
|
964
|
+
"heading": "heading"
|
|
965
|
+
}
|
|
966
|
+
},
|
|
967
|
+
{
|
|
968
|
+
"id": "feature-list",
|
|
969
|
+
"name": "Feature list",
|
|
970
|
+
"description": "A list of short features, each a title and a line of text marked with an icon or a check, under an optional heading and intro. Lighter than a card grid: no images, no links.",
|
|
971
|
+
"category": "section",
|
|
972
|
+
"uses": [],
|
|
973
|
+
"shared": [
|
|
974
|
+
"Section.astro"
|
|
975
|
+
],
|
|
976
|
+
"variants": {
|
|
977
|
+
"columns": {
|
|
978
|
+
"options": [
|
|
979
|
+
"2",
|
|
980
|
+
"3",
|
|
981
|
+
"4"
|
|
982
|
+
],
|
|
983
|
+
"default": "3",
|
|
984
|
+
"description": "Features per row on wide screens; one on phones, two on tablets."
|
|
985
|
+
},
|
|
986
|
+
"style": {
|
|
987
|
+
"options": [
|
|
988
|
+
"icon",
|
|
989
|
+
"check"
|
|
990
|
+
],
|
|
991
|
+
"default": "icon",
|
|
992
|
+
"description": "icon: each feature's own icon in a tinted badge. check: the same check mark before every feature."
|
|
993
|
+
},
|
|
994
|
+
"tone": {
|
|
995
|
+
"options": [
|
|
996
|
+
"default",
|
|
997
|
+
"muted",
|
|
998
|
+
"inverse",
|
|
999
|
+
"accent"
|
|
1000
|
+
],
|
|
1001
|
+
"default": "default",
|
|
1002
|
+
"description": "Section background."
|
|
1003
|
+
}
|
|
1004
|
+
},
|
|
1005
|
+
"props": {
|
|
1006
|
+
"heading": {
|
|
1007
|
+
"type": "string",
|
|
1008
|
+
"label": "Heading",
|
|
1009
|
+
"description": "Section heading."
|
|
1010
|
+
},
|
|
1011
|
+
"intro": {
|
|
1012
|
+
"type": "text",
|
|
1013
|
+
"label": "Introduction",
|
|
1014
|
+
"description": "A sentence under the heading."
|
|
1015
|
+
},
|
|
1016
|
+
"items": {
|
|
1017
|
+
"type": "array",
|
|
1018
|
+
"label": "Features",
|
|
1019
|
+
"required": true,
|
|
1020
|
+
"items": {
|
|
1021
|
+
"type": "object",
|
|
1022
|
+
"fields": {
|
|
1023
|
+
"title": {
|
|
1024
|
+
"type": "string",
|
|
1025
|
+
"label": "Title",
|
|
1026
|
+
"required": true,
|
|
1027
|
+
"description": "The feature, in a few words."
|
|
1028
|
+
},
|
|
1029
|
+
"text": {
|
|
1030
|
+
"type": "text",
|
|
1031
|
+
"label": "Text",
|
|
1032
|
+
"description": "A sentence about it."
|
|
1033
|
+
},
|
|
1034
|
+
"icon": {
|
|
1035
|
+
"type": "select",
|
|
1036
|
+
"label": "Icon",
|
|
1037
|
+
"options": [
|
|
1038
|
+
"check",
|
|
1039
|
+
"star",
|
|
1040
|
+
"bolt",
|
|
1041
|
+
"shield",
|
|
1042
|
+
"heart",
|
|
1043
|
+
"globe",
|
|
1044
|
+
"clock",
|
|
1045
|
+
"chat"
|
|
1046
|
+
],
|
|
1047
|
+
"description": "The kit icon shown with the icon style; check when absent."
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
},
|
|
1051
|
+
"description": "The features, in order (Elementor icon list or icon boxes without images, Gutenberg list of features, Divi blurbs with icons)."
|
|
1052
|
+
},
|
|
1053
|
+
"id": {
|
|
1054
|
+
"type": "string",
|
|
1055
|
+
"content": false,
|
|
1056
|
+
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
1057
|
+
}
|
|
1058
|
+
},
|
|
1059
|
+
"slots": {},
|
|
1060
|
+
"js": "none",
|
|
1061
|
+
"dependencies": {},
|
|
1062
|
+
"sources": {
|
|
1063
|
+
"gutenberg": [
|
|
1064
|
+
"core/list"
|
|
1065
|
+
],
|
|
1066
|
+
"elementor": [
|
|
1067
|
+
"elementor/icon-list",
|
|
1068
|
+
"elementor/icon-box"
|
|
1069
|
+
],
|
|
1070
|
+
"divi": [
|
|
1071
|
+
"divi/et_pb_blurb"
|
|
1072
|
+
]
|
|
1073
|
+
},
|
|
1074
|
+
"a11y": "A list; icons are decorative (aria-hidden), the title and text carry the meaning. The section is labelled by its heading.",
|
|
1075
|
+
"pattern": {
|
|
1076
|
+
"summary": "repeated icon + short title + line of text",
|
|
1077
|
+
"signals": [
|
|
1078
|
+
"3+ repeated items",
|
|
1079
|
+
"icons",
|
|
1080
|
+
"no images",
|
|
1081
|
+
"short text"
|
|
1082
|
+
]
|
|
1083
|
+
},
|
|
1084
|
+
"files": [
|
|
1085
|
+
"FeatureList.astro"
|
|
1086
|
+
],
|
|
1087
|
+
"contentFields": {
|
|
1088
|
+
"heading": "heading",
|
|
1089
|
+
"intro": "intro",
|
|
1090
|
+
"items": "items",
|
|
1091
|
+
"items[].title": "items[].title",
|
|
1092
|
+
"items[].text": "items[].text",
|
|
1093
|
+
"items[].icon": "items[].icon"
|
|
1094
|
+
}
|
|
646
1095
|
},
|
|
647
1096
|
{
|
|
648
1097
|
"id": "footer",
|
|
@@ -670,6 +1119,14 @@
|
|
|
670
1119
|
],
|
|
671
1120
|
"default": "default",
|
|
672
1121
|
"description": "Surface with a top border, muted surface, or dark (ink) background."
|
|
1122
|
+
},
|
|
1123
|
+
"align": {
|
|
1124
|
+
"options": [
|
|
1125
|
+
"start",
|
|
1126
|
+
"center"
|
|
1127
|
+
],
|
|
1128
|
+
"default": "start",
|
|
1129
|
+
"description": "start: brand and links to the sides (left-aligned on phones). center: everything centred in one column, as themes with a centred footer print it."
|
|
673
1130
|
}
|
|
674
1131
|
},
|
|
675
1132
|
"props": {
|
|
@@ -741,6 +1198,10 @@
|
|
|
741
1198
|
"type": "string",
|
|
742
1199
|
"description": "Copyright line; {year} is the current year. Defaults to © <year> <siteName>."
|
|
743
1200
|
},
|
|
1201
|
+
"consentLabel": {
|
|
1202
|
+
"type": "string",
|
|
1203
|
+
"description": "Label of the cookie settings button after the copyright line; it reopens the consent bar (withdrawal, GDPR 7(3)). Set only when the site has a consent bar."
|
|
1204
|
+
},
|
|
744
1205
|
"navLabel": {
|
|
745
1206
|
"type": "string",
|
|
746
1207
|
"description": "Accessible name of the footer navigation (ui-strings nav.footer)."
|
|
@@ -780,6 +1241,7 @@
|
|
|
780
1241
|
"shared": [
|
|
781
1242
|
"KitImage.astro",
|
|
782
1243
|
"Section.astro",
|
|
1244
|
+
"image.ts",
|
|
783
1245
|
"types.ts"
|
|
784
1246
|
],
|
|
785
1247
|
"variants": {
|
|
@@ -813,32 +1275,26 @@
|
|
|
813
1275
|
"props": {
|
|
814
1276
|
"items": {
|
|
815
1277
|
"type": "array",
|
|
1278
|
+
"label": "Images",
|
|
816
1279
|
"required": true,
|
|
817
1280
|
"items": {
|
|
818
1281
|
"type": "object",
|
|
819
1282
|
"fields": {
|
|
820
1283
|
"image": {
|
|
821
|
-
"type": "
|
|
1284
|
+
"type": "image",
|
|
1285
|
+
"label": "Image",
|
|
822
1286
|
"required": true,
|
|
823
|
-
"
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
"type": "string",
|
|
830
|
-
"required": true
|
|
831
|
-
},
|
|
832
|
-
"width": {
|
|
833
|
-
"type": "integer"
|
|
834
|
-
},
|
|
835
|
-
"height": {
|
|
836
|
-
"type": "integer"
|
|
837
|
-
}
|
|
838
|
-
}
|
|
1287
|
+
"description": "The image."
|
|
1288
|
+
},
|
|
1289
|
+
"imageAlt": {
|
|
1290
|
+
"type": "string",
|
|
1291
|
+
"label": "Image description",
|
|
1292
|
+
"description": "What the image shows, for readers who cannot see it."
|
|
839
1293
|
},
|
|
840
1294
|
"caption": {
|
|
841
|
-
"type": "string"
|
|
1295
|
+
"type": "string",
|
|
1296
|
+
"label": "Caption",
|
|
1297
|
+
"description": "Caption under the enlarged image."
|
|
842
1298
|
}
|
|
843
1299
|
}
|
|
844
1300
|
},
|
|
@@ -846,10 +1302,12 @@
|
|
|
846
1302
|
},
|
|
847
1303
|
"heading": {
|
|
848
1304
|
"type": "string",
|
|
1305
|
+
"label": "Heading",
|
|
849
1306
|
"description": "Section heading above the images."
|
|
850
1307
|
},
|
|
851
1308
|
"closeLabel": {
|
|
852
1309
|
"type": "string",
|
|
1310
|
+
"content": false,
|
|
853
1311
|
"description": "Text of the viewer's close button (ui-strings gallery.close)."
|
|
854
1312
|
},
|
|
855
1313
|
"tone": {
|
|
@@ -860,10 +1318,12 @@
|
|
|
860
1318
|
"inverse",
|
|
861
1319
|
"accent"
|
|
862
1320
|
],
|
|
1321
|
+
"content": false,
|
|
863
1322
|
"description": "Section background."
|
|
864
1323
|
},
|
|
865
1324
|
"id": {
|
|
866
1325
|
"type": "string",
|
|
1326
|
+
"content": false,
|
|
867
1327
|
"description": "Section id, unique per page: viewer ids derive from it (`<id>-image-<n>`)."
|
|
868
1328
|
}
|
|
869
1329
|
},
|
|
@@ -888,7 +1348,14 @@
|
|
|
888
1348
|
"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.",
|
|
889
1349
|
"files": [
|
|
890
1350
|
"Gallery.astro"
|
|
891
|
-
]
|
|
1351
|
+
],
|
|
1352
|
+
"contentFields": {
|
|
1353
|
+
"items": "items",
|
|
1354
|
+
"items[].image": "items[].image",
|
|
1355
|
+
"items[].imageAlt": "items[].image_alt",
|
|
1356
|
+
"items[].caption": "items[].caption",
|
|
1357
|
+
"heading": "heading"
|
|
1358
|
+
}
|
|
892
1359
|
},
|
|
893
1360
|
{
|
|
894
1361
|
"id": "header",
|
|
@@ -1108,6 +1575,7 @@
|
|
|
1108
1575
|
"props": {
|
|
1109
1576
|
"heading": {
|
|
1110
1577
|
"type": "string",
|
|
1578
|
+
"label": "Heading",
|
|
1111
1579
|
"required": true,
|
|
1112
1580
|
"description": "The main heading (Cover/Group heading, Elementor heading, Divi header title)."
|
|
1113
1581
|
},
|
|
@@ -1118,39 +1586,51 @@
|
|
|
1118
1586
|
"2"
|
|
1119
1587
|
],
|
|
1120
1588
|
"default": "1",
|
|
1589
|
+
"content": false,
|
|
1121
1590
|
"description": "Heading level: 1 when the hero opens the page, 2 when the page already has an h1."
|
|
1122
1591
|
},
|
|
1123
1592
|
"eyebrow": {
|
|
1124
1593
|
"type": "string",
|
|
1594
|
+
"label": "Eyebrow",
|
|
1125
1595
|
"description": "Short line above the heading."
|
|
1126
1596
|
},
|
|
1127
1597
|
"lead": {
|
|
1128
1598
|
"type": "text",
|
|
1599
|
+
"label": "Lead",
|
|
1129
1600
|
"description": "Paragraph under the heading."
|
|
1130
1601
|
},
|
|
1131
1602
|
"actions": {
|
|
1132
1603
|
"type": "array",
|
|
1604
|
+
"label": "Buttons",
|
|
1133
1605
|
"items": {
|
|
1134
1606
|
"type": "object",
|
|
1135
1607
|
"fields": {
|
|
1136
1608
|
"label": {
|
|
1137
1609
|
"type": "string",
|
|
1138
|
-
"
|
|
1610
|
+
"label": "Label",
|
|
1611
|
+
"required": true,
|
|
1612
|
+
"description": "The button text."
|
|
1139
1613
|
},
|
|
1140
1614
|
"href": {
|
|
1141
1615
|
"type": "url",
|
|
1142
|
-
"
|
|
1616
|
+
"label": "Link",
|
|
1617
|
+
"required": true,
|
|
1618
|
+
"description": "Where the button goes: a page on this site or a full address."
|
|
1143
1619
|
},
|
|
1144
1620
|
"newTab": {
|
|
1145
|
-
"type": "boolean"
|
|
1621
|
+
"type": "boolean",
|
|
1622
|
+
"label": "Open in a new tab",
|
|
1623
|
+
"description": "Open the link in a new tab (an external site the reader should not leave for)."
|
|
1146
1624
|
},
|
|
1147
1625
|
"style": {
|
|
1148
1626
|
"type": "select",
|
|
1627
|
+
"label": "Style",
|
|
1149
1628
|
"options": [
|
|
1150
1629
|
"primary",
|
|
1151
1630
|
"secondary",
|
|
1152
1631
|
"ghost"
|
|
1153
|
-
]
|
|
1632
|
+
],
|
|
1633
|
+
"description": "primary for the main action, secondary or ghost for the ones beside it."
|
|
1154
1634
|
}
|
|
1155
1635
|
}
|
|
1156
1636
|
},
|
|
@@ -1158,26 +1638,35 @@
|
|
|
1158
1638
|
},
|
|
1159
1639
|
"image": {
|
|
1160
1640
|
"type": "object",
|
|
1641
|
+
"label": "Image",
|
|
1161
1642
|
"fields": {
|
|
1162
1643
|
"src": {
|
|
1163
1644
|
"type": "image",
|
|
1164
|
-
"
|
|
1645
|
+
"label": "Image",
|
|
1646
|
+
"required": true,
|
|
1647
|
+
"description": "The image file."
|
|
1165
1648
|
},
|
|
1166
1649
|
"alt": {
|
|
1167
1650
|
"type": "string",
|
|
1168
|
-
"
|
|
1651
|
+
"label": "Image description",
|
|
1652
|
+
"description": "What the image shows, for readers who cannot see it; empty when it is decoration."
|
|
1169
1653
|
},
|
|
1170
1654
|
"width": {
|
|
1171
|
-
"type": "integer"
|
|
1655
|
+
"type": "integer",
|
|
1656
|
+
"label": "Width",
|
|
1657
|
+
"description": "Width in pixels, as uploaded."
|
|
1172
1658
|
},
|
|
1173
1659
|
"height": {
|
|
1174
|
-
"type": "integer"
|
|
1660
|
+
"type": "integer",
|
|
1661
|
+
"label": "Height",
|
|
1662
|
+
"description": "Height in pixels, as uploaded."
|
|
1175
1663
|
}
|
|
1176
1664
|
},
|
|
1177
1665
|
"description": "Hero image; loaded first (the page's largest image)."
|
|
1178
1666
|
},
|
|
1179
1667
|
"id": {
|
|
1180
1668
|
"type": "string",
|
|
1669
|
+
"content": false,
|
|
1181
1670
|
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
1182
1671
|
}
|
|
1183
1672
|
},
|
|
@@ -1200,7 +1689,139 @@
|
|
|
1200
1689
|
"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.",
|
|
1201
1690
|
"files": [
|
|
1202
1691
|
"Hero.astro"
|
|
1203
|
-
]
|
|
1692
|
+
],
|
|
1693
|
+
"contentFields": {
|
|
1694
|
+
"heading": "heading",
|
|
1695
|
+
"eyebrow": "eyebrow",
|
|
1696
|
+
"lead": "lead",
|
|
1697
|
+
"actions": "actions",
|
|
1698
|
+
"actions[].label": "actions[].label",
|
|
1699
|
+
"actions[].href": "actions[].href",
|
|
1700
|
+
"actions[].newTab": "actions[].new_tab",
|
|
1701
|
+
"actions[].style": "actions[].style",
|
|
1702
|
+
"image": "image",
|
|
1703
|
+
"image.src": "image.src",
|
|
1704
|
+
"image.alt": "image.alt",
|
|
1705
|
+
"image.width": "image.width",
|
|
1706
|
+
"image.height": "image.height"
|
|
1707
|
+
}
|
|
1708
|
+
},
|
|
1709
|
+
{
|
|
1710
|
+
"id": "logo-cloud",
|
|
1711
|
+
"name": "Logo cloud",
|
|
1712
|
+
"description": "A grid of client or partner logos, each optionally linked, under an optional heading (\"Trusted by\").",
|
|
1713
|
+
"category": "section",
|
|
1714
|
+
"uses": [],
|
|
1715
|
+
"shared": [
|
|
1716
|
+
"KitImage.astro",
|
|
1717
|
+
"Section.astro",
|
|
1718
|
+
"image.ts",
|
|
1719
|
+
"types.ts"
|
|
1720
|
+
],
|
|
1721
|
+
"variants": {
|
|
1722
|
+
"columns": {
|
|
1723
|
+
"options": [
|
|
1724
|
+
"2",
|
|
1725
|
+
"3",
|
|
1726
|
+
"4"
|
|
1727
|
+
],
|
|
1728
|
+
"default": "4",
|
|
1729
|
+
"description": "Logos per row on wide screens; two on phones, three on tablets."
|
|
1730
|
+
},
|
|
1731
|
+
"style": {
|
|
1732
|
+
"options": [
|
|
1733
|
+
"plain",
|
|
1734
|
+
"grayscale"
|
|
1735
|
+
],
|
|
1736
|
+
"default": "plain",
|
|
1737
|
+
"description": "plain: logos in their own colours. grayscale: muted grey, full colour on hover or focus."
|
|
1738
|
+
},
|
|
1739
|
+
"tone": {
|
|
1740
|
+
"options": [
|
|
1741
|
+
"default",
|
|
1742
|
+
"muted",
|
|
1743
|
+
"inverse",
|
|
1744
|
+
"accent"
|
|
1745
|
+
],
|
|
1746
|
+
"default": "default",
|
|
1747
|
+
"description": "Section background."
|
|
1748
|
+
}
|
|
1749
|
+
},
|
|
1750
|
+
"props": {
|
|
1751
|
+
"heading": {
|
|
1752
|
+
"type": "string",
|
|
1753
|
+
"label": "Heading",
|
|
1754
|
+
"description": "Line above the logos (Trusted by, Our partners)."
|
|
1755
|
+
},
|
|
1756
|
+
"items": {
|
|
1757
|
+
"type": "array",
|
|
1758
|
+
"label": "Logos",
|
|
1759
|
+
"required": true,
|
|
1760
|
+
"items": {
|
|
1761
|
+
"type": "object",
|
|
1762
|
+
"fields": {
|
|
1763
|
+
"image": {
|
|
1764
|
+
"type": "image",
|
|
1765
|
+
"label": "Logo",
|
|
1766
|
+
"required": true,
|
|
1767
|
+
"description": "The logo file."
|
|
1768
|
+
},
|
|
1769
|
+
"imageAlt": {
|
|
1770
|
+
"type": "string",
|
|
1771
|
+
"label": "Name",
|
|
1772
|
+
"required": true,
|
|
1773
|
+
"description": "The company's name, read in place of the logo."
|
|
1774
|
+
},
|
|
1775
|
+
"href": {
|
|
1776
|
+
"type": "url",
|
|
1777
|
+
"label": "Link",
|
|
1778
|
+
"description": "The company's site, when the logo links there."
|
|
1779
|
+
}
|
|
1780
|
+
}
|
|
1781
|
+
},
|
|
1782
|
+
"description": "The logos, in order (a Gutenberg gallery or columns of logos, Elementor image carousel/gallery of logos, Divi images)."
|
|
1783
|
+
},
|
|
1784
|
+
"id": {
|
|
1785
|
+
"type": "string",
|
|
1786
|
+
"content": false,
|
|
1787
|
+
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
1788
|
+
}
|
|
1789
|
+
},
|
|
1790
|
+
"slots": {},
|
|
1791
|
+
"js": "none",
|
|
1792
|
+
"dependencies": {},
|
|
1793
|
+
"sources": {
|
|
1794
|
+
"gutenberg": [
|
|
1795
|
+
"core/gallery"
|
|
1796
|
+
],
|
|
1797
|
+
"elementor": [
|
|
1798
|
+
"elementor/image-gallery",
|
|
1799
|
+
"elementor/image-carousel"
|
|
1800
|
+
],
|
|
1801
|
+
"divi": [
|
|
1802
|
+
"divi/et_pb_gallery"
|
|
1803
|
+
]
|
|
1804
|
+
},
|
|
1805
|
+
"a11y": "A list of logos; each logo's text is the company's name, and a linked logo is one link named by it. The section is labelled by its heading.",
|
|
1806
|
+
"pattern": {
|
|
1807
|
+
"summary": "row of small logos, often linked",
|
|
1808
|
+
"signals": [
|
|
1809
|
+
"4+ images",
|
|
1810
|
+
"small images",
|
|
1811
|
+
"little or no text",
|
|
1812
|
+
"optional heading"
|
|
1813
|
+
]
|
|
1814
|
+
},
|
|
1815
|
+
"files": [
|
|
1816
|
+
"LogoCloud.astro"
|
|
1817
|
+
],
|
|
1818
|
+
"contentFields": {
|
|
1819
|
+
"heading": "heading",
|
|
1820
|
+
"items": "items",
|
|
1821
|
+
"items[].image": "items[].image",
|
|
1822
|
+
"items[].imageAlt": "items[].image_alt",
|
|
1823
|
+
"items[].href": "items[].href"
|
|
1824
|
+
}
|
|
1204
1825
|
},
|
|
1205
1826
|
{
|
|
1206
1827
|
"id": "nav",
|
|
@@ -1236,6 +1857,14 @@
|
|
|
1236
1857
|
],
|
|
1237
1858
|
"default": "compact",
|
|
1238
1859
|
"description": "Gap and text size of the inline list."
|
|
1860
|
+
},
|
|
1861
|
+
"color": {
|
|
1862
|
+
"options": [
|
|
1863
|
+
"current",
|
|
1864
|
+
"link"
|
|
1865
|
+
],
|
|
1866
|
+
"default": "current",
|
|
1867
|
+
"description": "current: the surrounding text, dimmed until hovered. link: the site's link colour (--color-link, else the accent) at full strength."
|
|
1239
1868
|
}
|
|
1240
1869
|
},
|
|
1241
1870
|
"props": {
|
|
@@ -1340,11 +1969,13 @@
|
|
|
1340
1969
|
"props": {
|
|
1341
1970
|
"action": {
|
|
1342
1971
|
"type": "url",
|
|
1972
|
+
"label": "Form address",
|
|
1343
1973
|
"required": true,
|
|
1344
1974
|
"description": "The provider's hosted form endpoint (Mailchimp *.list-manage.com/subscribe/post, Kit app.kit.com/forms/<n>/subscriptions, MailerLite assets.mailerlite.com/jsonp/<n>/forms/<n>/subscribe, Brevo *.sibforms.com/serve/, Buttondown buttondown.com/api/emails/embed-subscribe/). At migration the engine reads it from the source form element (`dom:form@action`) into the section's content, where it stays editable in Studio; it never passes through the fact pack or a model."
|
|
1345
1975
|
},
|
|
1346
1976
|
"provider": {
|
|
1347
1977
|
"type": "select",
|
|
1978
|
+
"label": "Email provider",
|
|
1348
1979
|
"options": [
|
|
1349
1980
|
"mailchimp",
|
|
1350
1981
|
"kit",
|
|
@@ -1358,44 +1989,54 @@
|
|
|
1358
1989
|
},
|
|
1359
1990
|
"emailName": {
|
|
1360
1991
|
"type": "string",
|
|
1992
|
+
"label": "Email field name",
|
|
1361
1993
|
"description": "Field name for the address when the provider is other or names it differently."
|
|
1362
1994
|
},
|
|
1363
1995
|
"askName": {
|
|
1364
1996
|
"type": "boolean",
|
|
1997
|
+
"label": "Ask for a name",
|
|
1365
1998
|
"default": false,
|
|
1366
1999
|
"description": "Ask for a first name too, when the provider takes one (the source form had a name field)."
|
|
1367
2000
|
},
|
|
1368
2001
|
"heading": {
|
|
1369
2002
|
"type": "string",
|
|
2003
|
+
"label": "Heading",
|
|
1370
2004
|
"description": "Section heading."
|
|
1371
2005
|
},
|
|
1372
2006
|
"intro": {
|
|
1373
2007
|
"type": "text",
|
|
2008
|
+
"label": "Introduction",
|
|
1374
2009
|
"description": "A line or two about the newsletter."
|
|
1375
2010
|
},
|
|
1376
2011
|
"note": {
|
|
1377
2012
|
"type": "string",
|
|
2013
|
+
"label": "Note",
|
|
1378
2014
|
"description": "Small print under the form (privacy, frequency)."
|
|
1379
2015
|
},
|
|
1380
2016
|
"emailLabel": {
|
|
1381
2017
|
"type": "string",
|
|
2018
|
+
"content": false,
|
|
1382
2019
|
"description": "ui-strings newsletter.email."
|
|
1383
2020
|
},
|
|
1384
2021
|
"nameLabel": {
|
|
1385
2022
|
"type": "string",
|
|
2023
|
+
"content": false,
|
|
1386
2024
|
"description": "ui-strings newsletter.name."
|
|
1387
2025
|
},
|
|
1388
2026
|
"submitLabel": {
|
|
1389
2027
|
"type": "string",
|
|
2028
|
+
"content": false,
|
|
1390
2029
|
"description": "ui-strings newsletter.submit."
|
|
1391
2030
|
},
|
|
1392
2031
|
"newTab": {
|
|
1393
2032
|
"type": "boolean",
|
|
1394
2033
|
"default": true,
|
|
2034
|
+
"content": false,
|
|
1395
2035
|
"description": "Open the provider's confirmation page in a new tab (the reader keeps the site)."
|
|
1396
2036
|
},
|
|
1397
2037
|
"id": {
|
|
1398
2038
|
"type": "string",
|
|
2039
|
+
"content": false,
|
|
1399
2040
|
"description": "Section id, unique per page (two sign-ups on one page need two ids): the heading gets `<id>-title`, the inputs `<id>-email`/`<id>-name`."
|
|
1400
2041
|
}
|
|
1401
2042
|
},
|
|
@@ -1415,7 +2056,16 @@
|
|
|
1415
2056
|
"files": [
|
|
1416
2057
|
"Newsletter.astro",
|
|
1417
2058
|
"newsletter.ts"
|
|
1418
|
-
]
|
|
2059
|
+
],
|
|
2060
|
+
"contentFields": {
|
|
2061
|
+
"action": "action",
|
|
2062
|
+
"provider": "provider",
|
|
2063
|
+
"emailName": "email_name",
|
|
2064
|
+
"askName": "ask_name",
|
|
2065
|
+
"heading": "heading",
|
|
2066
|
+
"intro": "intro",
|
|
2067
|
+
"note": "note"
|
|
2068
|
+
}
|
|
1419
2069
|
},
|
|
1420
2070
|
{
|
|
1421
2071
|
"id": "pagination",
|
|
@@ -1620,6 +2270,155 @@
|
|
|
1620
2270
|
"PostCard.astro"
|
|
1621
2271
|
]
|
|
1622
2272
|
},
|
|
2273
|
+
{
|
|
2274
|
+
"id": "pricing",
|
|
2275
|
+
"name": "Pricing",
|
|
2276
|
+
"description": "Price plans side by side: name, price, period, a short description, a feature list and a button each. The featured plan is raised and badged.",
|
|
2277
|
+
"category": "section",
|
|
2278
|
+
"uses": [],
|
|
2279
|
+
"shared": [
|
|
2280
|
+
"Button.astro",
|
|
2281
|
+
"Section.astro",
|
|
2282
|
+
"types.ts"
|
|
2283
|
+
],
|
|
2284
|
+
"variants": {
|
|
2285
|
+
"columns": {
|
|
2286
|
+
"options": [
|
|
2287
|
+
"2",
|
|
2288
|
+
"3",
|
|
2289
|
+
"4"
|
|
2290
|
+
],
|
|
2291
|
+
"default": "3",
|
|
2292
|
+
"description": "Plans per row on wide screens; one on phones, two on tablets."
|
|
2293
|
+
},
|
|
2294
|
+
"tone": {
|
|
2295
|
+
"options": [
|
|
2296
|
+
"default",
|
|
2297
|
+
"muted",
|
|
2298
|
+
"inverse",
|
|
2299
|
+
"accent"
|
|
2300
|
+
],
|
|
2301
|
+
"default": "default",
|
|
2302
|
+
"description": "Section background."
|
|
2303
|
+
}
|
|
2304
|
+
},
|
|
2305
|
+
"props": {
|
|
2306
|
+
"heading": {
|
|
2307
|
+
"type": "string",
|
|
2308
|
+
"label": "Heading",
|
|
2309
|
+
"description": "Section heading above the plans."
|
|
2310
|
+
},
|
|
2311
|
+
"intro": {
|
|
2312
|
+
"type": "text",
|
|
2313
|
+
"label": "Intro",
|
|
2314
|
+
"description": "A line or two under the heading."
|
|
2315
|
+
},
|
|
2316
|
+
"plans": {
|
|
2317
|
+
"type": "array",
|
|
2318
|
+
"label": "Plans",
|
|
2319
|
+
"required": true,
|
|
2320
|
+
"items": {
|
|
2321
|
+
"type": "object",
|
|
2322
|
+
"fields": {
|
|
2323
|
+
"name": {
|
|
2324
|
+
"type": "string",
|
|
2325
|
+
"label": "Name",
|
|
2326
|
+
"required": true,
|
|
2327
|
+
"description": "The plan's name."
|
|
2328
|
+
},
|
|
2329
|
+
"price": {
|
|
2330
|
+
"type": "string",
|
|
2331
|
+
"label": "Price",
|
|
2332
|
+
"required": true,
|
|
2333
|
+
"description": "The price as shown, with its currency (\"$12\", \"Free\", \"On request\")."
|
|
2334
|
+
},
|
|
2335
|
+
"period": {
|
|
2336
|
+
"type": "string",
|
|
2337
|
+
"label": "Period",
|
|
2338
|
+
"description": "What the price is per (\"/month\")."
|
|
2339
|
+
},
|
|
2340
|
+
"description": {
|
|
2341
|
+
"type": "string",
|
|
2342
|
+
"label": "Description",
|
|
2343
|
+
"description": "One line on who the plan is for."
|
|
2344
|
+
},
|
|
2345
|
+
"features": {
|
|
2346
|
+
"type": "markdown",
|
|
2347
|
+
"label": "Features",
|
|
2348
|
+
"description": "What the plan includes, as a markdown list."
|
|
2349
|
+
},
|
|
2350
|
+
"ctaLabel": {
|
|
2351
|
+
"type": "string",
|
|
2352
|
+
"label": "Button label",
|
|
2353
|
+
"description": "The plan's button text."
|
|
2354
|
+
},
|
|
2355
|
+
"ctaHref": {
|
|
2356
|
+
"type": "url",
|
|
2357
|
+
"label": "Button link",
|
|
2358
|
+
"description": "Where the button goes."
|
|
2359
|
+
},
|
|
2360
|
+
"featured": {
|
|
2361
|
+
"type": "boolean",
|
|
2362
|
+
"label": "Featured",
|
|
2363
|
+
"description": "Raises the plan and gives it the badge."
|
|
2364
|
+
}
|
|
2365
|
+
}
|
|
2366
|
+
},
|
|
2367
|
+
"description": "The plans, in display order (Divi pricing tables, Elementor price table)."
|
|
2368
|
+
},
|
|
2369
|
+
"featuredLabel": {
|
|
2370
|
+
"type": "string",
|
|
2371
|
+
"default": "Most popular",
|
|
2372
|
+
"content": false,
|
|
2373
|
+
"description": "Badge text on featured plans."
|
|
2374
|
+
},
|
|
2375
|
+
"id": {
|
|
2376
|
+
"type": "string",
|
|
2377
|
+
"content": false,
|
|
2378
|
+
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
2379
|
+
}
|
|
2380
|
+
},
|
|
2381
|
+
"slots": {},
|
|
2382
|
+
"js": "none",
|
|
2383
|
+
"dependencies": {},
|
|
2384
|
+
"sources": {
|
|
2385
|
+
"gutenberg": [
|
|
2386
|
+
"core/columns"
|
|
2387
|
+
],
|
|
2388
|
+
"elementor": [
|
|
2389
|
+
"elementor/price-table"
|
|
2390
|
+
],
|
|
2391
|
+
"divi": [
|
|
2392
|
+
"divi/et_pb_pricing_tables"
|
|
2393
|
+
]
|
|
2394
|
+
},
|
|
2395
|
+
"a11y": "Plans are a <ul>; each name is an <h3>. A featured plan is marked by a text badge and a ring, not colour alone. Buttons are links with their own label.",
|
|
2396
|
+
"pattern": {
|
|
2397
|
+
"summary": "repeated plan units: name + price + feature list + button",
|
|
2398
|
+
"signals": [
|
|
2399
|
+
"2-4 columns",
|
|
2400
|
+
"price text",
|
|
2401
|
+
"list",
|
|
2402
|
+
"1 button per column"
|
|
2403
|
+
]
|
|
2404
|
+
},
|
|
2405
|
+
"files": [
|
|
2406
|
+
"Pricing.astro"
|
|
2407
|
+
],
|
|
2408
|
+
"contentFields": {
|
|
2409
|
+
"heading": "heading",
|
|
2410
|
+
"intro": "intro",
|
|
2411
|
+
"plans": "plans",
|
|
2412
|
+
"plans[].name": "plans[].name",
|
|
2413
|
+
"plans[].price": "plans[].price",
|
|
2414
|
+
"plans[].period": "plans[].period",
|
|
2415
|
+
"plans[].description": "plans[].description",
|
|
2416
|
+
"plans[].features": "plans[].features",
|
|
2417
|
+
"plans[].ctaLabel": "plans[].cta_label",
|
|
2418
|
+
"plans[].ctaHref": "plans[].cta_href",
|
|
2419
|
+
"plans[].featured": "plans[].featured"
|
|
2420
|
+
}
|
|
2421
|
+
},
|
|
1623
2422
|
{
|
|
1624
2423
|
"id": "prose",
|
|
1625
2424
|
"name": "Prose",
|
|
@@ -1640,8 +2439,11 @@
|
|
|
1640
2439
|
"props": {
|
|
1641
2440
|
"html": {
|
|
1642
2441
|
"type": "richtext",
|
|
1643
|
-
"
|
|
1644
|
-
|
|
2442
|
+
"description": "Rendered HTML of a richtext field (posts.body, pages.body). One of html or markdown is given."
|
|
2443
|
+
},
|
|
2444
|
+
"markdown": {
|
|
2445
|
+
"type": "markdown",
|
|
2446
|
+
"description": "A markdown field (a page section's text, prose.markdown in a page model), rendered at build time with links through the public-link filter. Used when html is absent."
|
|
1645
2447
|
},
|
|
1646
2448
|
"searchable": {
|
|
1647
2449
|
"type": "boolean",
|
|
@@ -1701,6 +2503,7 @@
|
|
|
1701
2503
|
"shared": [
|
|
1702
2504
|
"Button.astro",
|
|
1703
2505
|
"KitImage.astro",
|
|
2506
|
+
"image.ts",
|
|
1704
2507
|
"types.ts"
|
|
1705
2508
|
],
|
|
1706
2509
|
"variants": {
|
|
@@ -1734,88 +2537,76 @@
|
|
|
1734
2537
|
"props": {
|
|
1735
2538
|
"slides": {
|
|
1736
2539
|
"type": "array",
|
|
2540
|
+
"label": "Slides",
|
|
1737
2541
|
"required": true,
|
|
1738
2542
|
"items": {
|
|
1739
2543
|
"type": "object",
|
|
1740
2544
|
"fields": {
|
|
1741
2545
|
"image": {
|
|
1742
|
-
"type": "
|
|
2546
|
+
"type": "image",
|
|
2547
|
+
"label": "Image",
|
|
1743
2548
|
"required": true,
|
|
1744
|
-
"
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
"type": "string",
|
|
1751
|
-
"required": true
|
|
1752
|
-
},
|
|
1753
|
-
"width": {
|
|
1754
|
-
"type": "integer"
|
|
1755
|
-
},
|
|
1756
|
-
"height": {
|
|
1757
|
-
"type": "integer"
|
|
1758
|
-
}
|
|
1759
|
-
}
|
|
2549
|
+
"description": "The slide image."
|
|
2550
|
+
},
|
|
2551
|
+
"imageAlt": {
|
|
2552
|
+
"type": "string",
|
|
2553
|
+
"label": "Image description",
|
|
2554
|
+
"description": "What the image shows, for readers who cannot see it."
|
|
1760
2555
|
},
|
|
1761
2556
|
"title": {
|
|
1762
|
-
"type": "string"
|
|
2557
|
+
"type": "string",
|
|
2558
|
+
"label": "Title",
|
|
2559
|
+
"description": "Heading over the slide."
|
|
1763
2560
|
},
|
|
1764
2561
|
"text": {
|
|
1765
|
-
"type": "text"
|
|
2562
|
+
"type": "text",
|
|
2563
|
+
"label": "Text",
|
|
2564
|
+
"description": "A line or two under the heading."
|
|
2565
|
+
},
|
|
2566
|
+
"ctaLabel": {
|
|
2567
|
+
"type": "string",
|
|
2568
|
+
"label": "Button label",
|
|
2569
|
+
"description": "Button text; the slide has no button without it."
|
|
1766
2570
|
},
|
|
1767
|
-
"
|
|
1768
|
-
"type": "
|
|
1769
|
-
"
|
|
1770
|
-
|
|
1771
|
-
"type": "string",
|
|
1772
|
-
"required": true
|
|
1773
|
-
},
|
|
1774
|
-
"href": {
|
|
1775
|
-
"type": "url",
|
|
1776
|
-
"required": true
|
|
1777
|
-
},
|
|
1778
|
-
"newTab": {
|
|
1779
|
-
"type": "boolean"
|
|
1780
|
-
},
|
|
1781
|
-
"style": {
|
|
1782
|
-
"type": "select",
|
|
1783
|
-
"options": [
|
|
1784
|
-
"primary",
|
|
1785
|
-
"secondary",
|
|
1786
|
-
"ghost"
|
|
1787
|
-
]
|
|
1788
|
-
}
|
|
1789
|
-
}
|
|
2571
|
+
"ctaHref": {
|
|
2572
|
+
"type": "url",
|
|
2573
|
+
"label": "Button link",
|
|
2574
|
+
"description": "Where the button goes."
|
|
1790
2575
|
}
|
|
1791
2576
|
}
|
|
1792
2577
|
},
|
|
1793
|
-
"description": "Slides
|
|
2578
|
+
"description": "Slides: the image's address and text, and an optional link (ctaLabel + ctaHref)."
|
|
1794
2579
|
},
|
|
1795
2580
|
"label": {
|
|
1796
2581
|
"type": "string",
|
|
1797
2582
|
"required": true,
|
|
2583
|
+
"content": false,
|
|
1798
2584
|
"description": "Accessible name of the carousel."
|
|
1799
2585
|
},
|
|
1800
2586
|
"prevLabel": {
|
|
1801
2587
|
"type": "string",
|
|
2588
|
+
"content": false,
|
|
1802
2589
|
"description": "ui-strings slider.prev."
|
|
1803
2590
|
},
|
|
1804
2591
|
"nextLabel": {
|
|
1805
2592
|
"type": "string",
|
|
2593
|
+
"content": false,
|
|
1806
2594
|
"description": "ui-strings slider.next."
|
|
1807
2595
|
},
|
|
1808
2596
|
"slideLabel": {
|
|
1809
2597
|
"type": "string",
|
|
2598
|
+
"content": false,
|
|
1810
2599
|
"description": "ui-strings slider.slide."
|
|
1811
2600
|
},
|
|
1812
2601
|
"ofLabel": {
|
|
1813
2602
|
"type": "string",
|
|
2603
|
+
"content": false,
|
|
1814
2604
|
"description": "ui-strings slider.of."
|
|
1815
2605
|
},
|
|
1816
2606
|
"loop": {
|
|
1817
2607
|
"type": "boolean",
|
|
1818
2608
|
"default": false,
|
|
2609
|
+
"content": false,
|
|
1819
2610
|
"description": "Wrap from the last slide to the first."
|
|
1820
2611
|
}
|
|
1821
2612
|
},
|
|
@@ -1847,33 +2638,45 @@
|
|
|
1847
2638
|
"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.",
|
|
1848
2639
|
"files": [
|
|
1849
2640
|
"Slider.astro"
|
|
1850
|
-
]
|
|
2641
|
+
],
|
|
2642
|
+
"contentFields": {
|
|
2643
|
+
"slides": "slides",
|
|
2644
|
+
"slides[].image": "slides[].image",
|
|
2645
|
+
"slides[].imageAlt": "slides[].image_alt",
|
|
2646
|
+
"slides[].title": "slides[].title",
|
|
2647
|
+
"slides[].text": "slides[].text",
|
|
2648
|
+
"slides[].ctaLabel": "slides[].cta_label",
|
|
2649
|
+
"slides[].ctaHref": "slides[].cta_href"
|
|
2650
|
+
}
|
|
1851
2651
|
},
|
|
1852
2652
|
{
|
|
1853
|
-
"id": "
|
|
1854
|
-
"name": "
|
|
1855
|
-
"description": "
|
|
1856
|
-
"category": "
|
|
2653
|
+
"id": "split",
|
|
2654
|
+
"name": "Split",
|
|
2655
|
+
"description": "An image beside a block of text — eyebrow, heading, a markdown body and buttons — on either side, stacked on phones. The media-and-text section of a landing page (Gutenberg media-text, a two-column Elementor container with an image, Divi's image + text row).",
|
|
2656
|
+
"category": "section",
|
|
1857
2657
|
"uses": [],
|
|
1858
2658
|
"shared": [
|
|
1859
|
-
"
|
|
2659
|
+
"Button.astro",
|
|
2660
|
+
"KitImage.astro",
|
|
2661
|
+
"Section.astro",
|
|
2662
|
+
"types.ts"
|
|
1860
2663
|
],
|
|
1861
2664
|
"variants": {
|
|
1862
|
-
"
|
|
2665
|
+
"imageSide": {
|
|
1863
2666
|
"options": [
|
|
1864
|
-
"
|
|
1865
|
-
"
|
|
2667
|
+
"start",
|
|
2668
|
+
"end"
|
|
1866
2669
|
],
|
|
1867
|
-
"default": "
|
|
1868
|
-
"description": "
|
|
2670
|
+
"default": "end",
|
|
2671
|
+
"description": "Which side the image takes on wide screens: start (left in left-to-right text) or end. Phones always show it after the text."
|
|
1869
2672
|
},
|
|
1870
|
-
"
|
|
2673
|
+
"align": {
|
|
1871
2674
|
"options": [
|
|
1872
|
-
"
|
|
1873
|
-
"
|
|
2675
|
+
"start",
|
|
2676
|
+
"center"
|
|
1874
2677
|
],
|
|
1875
|
-
"default": "
|
|
1876
|
-
"description": "
|
|
2678
|
+
"default": "start",
|
|
2679
|
+
"description": "Alignment of the text block."
|
|
1877
2680
|
},
|
|
1878
2681
|
"tone": {
|
|
1879
2682
|
"options": [
|
|
@@ -1887,36 +2690,447 @@
|
|
|
1887
2690
|
}
|
|
1888
2691
|
},
|
|
1889
2692
|
"props": {
|
|
1890
|
-
"
|
|
1891
|
-
"type": "
|
|
2693
|
+
"heading": {
|
|
2694
|
+
"type": "string",
|
|
2695
|
+
"label": "Heading",
|
|
1892
2696
|
"required": true,
|
|
2697
|
+
"description": "The section heading."
|
|
2698
|
+
},
|
|
2699
|
+
"eyebrow": {
|
|
2700
|
+
"type": "string",
|
|
2701
|
+
"label": "Eyebrow",
|
|
2702
|
+
"description": "Short line above the heading."
|
|
2703
|
+
},
|
|
2704
|
+
"body": {
|
|
2705
|
+
"type": "markdown",
|
|
2706
|
+
"label": "Text",
|
|
2707
|
+
"description": "The text beside the image, as markdown: paragraphs, emphasis, links, lists."
|
|
2708
|
+
},
|
|
2709
|
+
"actions": {
|
|
2710
|
+
"type": "array",
|
|
2711
|
+
"label": "Buttons",
|
|
1893
2712
|
"items": {
|
|
1894
2713
|
"type": "object",
|
|
1895
2714
|
"fields": {
|
|
1896
2715
|
"label": {
|
|
1897
2716
|
"type": "string",
|
|
1898
|
-
"
|
|
2717
|
+
"label": "Label",
|
|
2718
|
+
"required": true,
|
|
2719
|
+
"description": "The button text."
|
|
1899
2720
|
},
|
|
1900
|
-
"
|
|
1901
|
-
"type": "
|
|
1902
|
-
"
|
|
2721
|
+
"href": {
|
|
2722
|
+
"type": "url",
|
|
2723
|
+
"label": "Link",
|
|
2724
|
+
"required": true,
|
|
2725
|
+
"description": "Where the button goes: a page on this site or a full address."
|
|
2726
|
+
},
|
|
2727
|
+
"newTab": {
|
|
2728
|
+
"type": "boolean",
|
|
2729
|
+
"label": "Open in a new tab",
|
|
2730
|
+
"description": "Open the link in a new tab (an external site the reader should not leave for)."
|
|
2731
|
+
},
|
|
2732
|
+
"style": {
|
|
2733
|
+
"type": "select",
|
|
2734
|
+
"label": "Style",
|
|
2735
|
+
"options": [
|
|
2736
|
+
"primary",
|
|
2737
|
+
"secondary",
|
|
2738
|
+
"ghost"
|
|
2739
|
+
],
|
|
2740
|
+
"description": "primary for the main action, secondary or ghost for the ones beside it."
|
|
1903
2741
|
}
|
|
1904
2742
|
}
|
|
1905
2743
|
},
|
|
1906
|
-
"description": "
|
|
1907
|
-
},
|
|
1908
|
-
"heading": {
|
|
1909
|
-
"type": "string",
|
|
1910
|
-
"description": "Section heading; also names the tab list."
|
|
2744
|
+
"description": "Buttons under the text, in order (Elementor button, Gutenberg buttons, Divi button)."
|
|
1911
2745
|
},
|
|
1912
|
-
"
|
|
1913
|
-
"type": "
|
|
1914
|
-
"
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
2746
|
+
"image": {
|
|
2747
|
+
"type": "object",
|
|
2748
|
+
"label": "Image",
|
|
2749
|
+
"fields": {
|
|
2750
|
+
"src": {
|
|
2751
|
+
"type": "image",
|
|
2752
|
+
"label": "Image",
|
|
2753
|
+
"required": true,
|
|
2754
|
+
"description": "The image file."
|
|
2755
|
+
},
|
|
2756
|
+
"alt": {
|
|
2757
|
+
"type": "string",
|
|
2758
|
+
"label": "Image description",
|
|
2759
|
+
"description": "What the image shows, for readers who cannot see it; empty when it is decoration."
|
|
2760
|
+
},
|
|
2761
|
+
"width": {
|
|
2762
|
+
"type": "integer",
|
|
2763
|
+
"label": "Width",
|
|
2764
|
+
"description": "Width in pixels, as uploaded."
|
|
2765
|
+
},
|
|
2766
|
+
"height": {
|
|
2767
|
+
"type": "integer",
|
|
2768
|
+
"label": "Height",
|
|
2769
|
+
"description": "Height in pixels, as uploaded."
|
|
2770
|
+
}
|
|
2771
|
+
},
|
|
2772
|
+
"description": "The image beside the text. Width and height, when known, let the site reserve its space."
|
|
2773
|
+
},
|
|
2774
|
+
"id": {
|
|
2775
|
+
"type": "string",
|
|
2776
|
+
"content": false,
|
|
2777
|
+
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
2778
|
+
}
|
|
2779
|
+
},
|
|
2780
|
+
"slots": {},
|
|
2781
|
+
"js": "none",
|
|
2782
|
+
"dependencies": {},
|
|
2783
|
+
"sources": {
|
|
2784
|
+
"gutenberg": [
|
|
2785
|
+
"core/media-text"
|
|
2786
|
+
],
|
|
2787
|
+
"elementor": [
|
|
2788
|
+
"elementor/image-box"
|
|
2789
|
+
],
|
|
2790
|
+
"divi": [
|
|
2791
|
+
"divi/et_pb_image"
|
|
2792
|
+
]
|
|
2793
|
+
},
|
|
2794
|
+
"a11y": "The section is labelled by its heading. The image is a separate figure in reading order after the text; an empty description marks a decorative one.",
|
|
2795
|
+
"pattern": {
|
|
2796
|
+
"summary": "image beside heading + text",
|
|
2797
|
+
"signals": [
|
|
2798
|
+
"2 columns",
|
|
2799
|
+
"1 image",
|
|
2800
|
+
"heading",
|
|
2801
|
+
"text",
|
|
2802
|
+
"0–2 buttons"
|
|
2803
|
+
]
|
|
2804
|
+
},
|
|
2805
|
+
"files": [
|
|
2806
|
+
"Split.astro"
|
|
2807
|
+
],
|
|
2808
|
+
"contentFields": {
|
|
2809
|
+
"heading": "heading",
|
|
2810
|
+
"eyebrow": "eyebrow",
|
|
2811
|
+
"body": "body",
|
|
2812
|
+
"actions": "actions",
|
|
2813
|
+
"actions[].label": "actions[].label",
|
|
2814
|
+
"actions[].href": "actions[].href",
|
|
2815
|
+
"actions[].newTab": "actions[].new_tab",
|
|
2816
|
+
"actions[].style": "actions[].style",
|
|
2817
|
+
"image": "image",
|
|
2818
|
+
"image.src": "image.src",
|
|
2819
|
+
"image.alt": "image.alt",
|
|
2820
|
+
"image.width": "image.width",
|
|
2821
|
+
"image.height": "image.height"
|
|
2822
|
+
}
|
|
2823
|
+
},
|
|
2824
|
+
{
|
|
2825
|
+
"id": "stats",
|
|
2826
|
+
"name": "Stats",
|
|
2827
|
+
"description": "A row of figures with a short label each (years in business, clients, uptime), with an optional heading and intro. The counter/number section of a landing page; numbers are static text, not animated.",
|
|
2828
|
+
"category": "section",
|
|
2829
|
+
"uses": [],
|
|
2830
|
+
"shared": [
|
|
2831
|
+
"Section.astro"
|
|
2832
|
+
],
|
|
2833
|
+
"variants": {
|
|
2834
|
+
"columns": {
|
|
2835
|
+
"options": [
|
|
2836
|
+
"2",
|
|
2837
|
+
"3",
|
|
2838
|
+
"4"
|
|
2839
|
+
],
|
|
2840
|
+
"default": "3",
|
|
2841
|
+
"description": "Figures per row on wide screens; two on phones."
|
|
2842
|
+
},
|
|
2843
|
+
"style": {
|
|
2844
|
+
"options": [
|
|
2845
|
+
"plain",
|
|
2846
|
+
"card"
|
|
2847
|
+
],
|
|
2848
|
+
"default": "plain",
|
|
2849
|
+
"description": "plain: figures on the section background. card: each figure in its own box."
|
|
2850
|
+
},
|
|
2851
|
+
"tone": {
|
|
2852
|
+
"options": [
|
|
2853
|
+
"default",
|
|
2854
|
+
"muted",
|
|
2855
|
+
"inverse",
|
|
2856
|
+
"accent"
|
|
2857
|
+
],
|
|
2858
|
+
"default": "default",
|
|
2859
|
+
"description": "Section background."
|
|
2860
|
+
}
|
|
2861
|
+
},
|
|
2862
|
+
"props": {
|
|
2863
|
+
"heading": {
|
|
2864
|
+
"type": "string",
|
|
2865
|
+
"label": "Heading",
|
|
2866
|
+
"description": "Section heading."
|
|
2867
|
+
},
|
|
2868
|
+
"intro": {
|
|
2869
|
+
"type": "text",
|
|
2870
|
+
"label": "Introduction",
|
|
2871
|
+
"description": "A sentence under the heading."
|
|
2872
|
+
},
|
|
2873
|
+
"items": {
|
|
2874
|
+
"type": "array",
|
|
2875
|
+
"label": "Figures",
|
|
2876
|
+
"required": true,
|
|
2877
|
+
"items": {
|
|
2878
|
+
"type": "object",
|
|
2879
|
+
"fields": {
|
|
2880
|
+
"value": {
|
|
2881
|
+
"type": "string",
|
|
2882
|
+
"label": "Figure",
|
|
2883
|
+
"required": true,
|
|
2884
|
+
"description": "The number as shown, without prefix or suffix (`120`, `4.9`, `24/7`)."
|
|
2885
|
+
},
|
|
2886
|
+
"label": {
|
|
2887
|
+
"type": "string",
|
|
2888
|
+
"label": "Label",
|
|
2889
|
+
"required": true,
|
|
2890
|
+
"description": "What the figure counts (Clients, Countries)."
|
|
2891
|
+
},
|
|
2892
|
+
"prefix": {
|
|
2893
|
+
"type": "string",
|
|
2894
|
+
"label": "Prefix",
|
|
2895
|
+
"description": "Printed before the figure (`$`, `~`)."
|
|
2896
|
+
},
|
|
2897
|
+
"suffix": {
|
|
2898
|
+
"type": "string",
|
|
2899
|
+
"label": "Suffix",
|
|
2900
|
+
"description": "Printed after the figure (`+`, `%`, `k`)."
|
|
2901
|
+
}
|
|
2902
|
+
}
|
|
2903
|
+
},
|
|
2904
|
+
"description": "The figures, in order (Elementor counter, Divi number counter, a Gutenberg columns row of big numbers)."
|
|
2905
|
+
},
|
|
2906
|
+
"id": {
|
|
2907
|
+
"type": "string",
|
|
2908
|
+
"content": false,
|
|
2909
|
+
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
2910
|
+
}
|
|
2911
|
+
},
|
|
2912
|
+
"slots": {},
|
|
2913
|
+
"js": "none",
|
|
2914
|
+
"dependencies": {},
|
|
2915
|
+
"sources": {
|
|
2916
|
+
"gutenberg": [
|
|
2917
|
+
"core/columns"
|
|
2918
|
+
],
|
|
2919
|
+
"elementor": [
|
|
2920
|
+
"elementor/counter"
|
|
2921
|
+
],
|
|
2922
|
+
"divi": [
|
|
2923
|
+
"divi/et_pb_number_counter",
|
|
2924
|
+
"divi/et_pb_circle_counter"
|
|
2925
|
+
]
|
|
2926
|
+
},
|
|
2927
|
+
"a11y": "A description list: each label is the term, each figure its value, so a screen reader reads them as pairs. The section is labelled by its heading.",
|
|
2928
|
+
"pattern": {
|
|
2929
|
+
"summary": "row of big numbers with short labels",
|
|
2930
|
+
"signals": [
|
|
2931
|
+
"2–4 columns",
|
|
2932
|
+
"repeated number + label",
|
|
2933
|
+
"no images"
|
|
2934
|
+
]
|
|
2935
|
+
},
|
|
2936
|
+
"files": [
|
|
2937
|
+
"Stats.astro"
|
|
2938
|
+
],
|
|
2939
|
+
"contentFields": {
|
|
2940
|
+
"heading": "heading",
|
|
2941
|
+
"intro": "intro",
|
|
2942
|
+
"items": "items",
|
|
2943
|
+
"items[].value": "items[].value",
|
|
2944
|
+
"items[].label": "items[].label",
|
|
2945
|
+
"items[].prefix": "items[].prefix",
|
|
2946
|
+
"items[].suffix": "items[].suffix"
|
|
2947
|
+
}
|
|
2948
|
+
},
|
|
2949
|
+
{
|
|
2950
|
+
"id": "steps",
|
|
2951
|
+
"name": "Steps",
|
|
2952
|
+
"description": "How it works: an ordered sequence of steps, each a title and a line of text with an optional image, as a vertical list or a row, numbered or plain.",
|
|
2953
|
+
"category": "section",
|
|
2954
|
+
"uses": [],
|
|
2955
|
+
"shared": [
|
|
2956
|
+
"KitImage.astro",
|
|
2957
|
+
"Section.astro",
|
|
2958
|
+
"image.ts",
|
|
2959
|
+
"types.ts"
|
|
2960
|
+
],
|
|
2961
|
+
"variants": {
|
|
2962
|
+
"layout": {
|
|
2963
|
+
"options": [
|
|
2964
|
+
"list",
|
|
2965
|
+
"row"
|
|
2966
|
+
],
|
|
2967
|
+
"default": "list",
|
|
2968
|
+
"description": "A vertical list, or one row across the page on wide screens."
|
|
2969
|
+
},
|
|
2970
|
+
"style": {
|
|
2971
|
+
"options": [
|
|
2972
|
+
"numbered",
|
|
2973
|
+
"plain"
|
|
2974
|
+
],
|
|
2975
|
+
"default": "numbered",
|
|
2976
|
+
"description": "A number badge before each step, or an accent rule beside it."
|
|
2977
|
+
}
|
|
2978
|
+
},
|
|
2979
|
+
"props": {
|
|
2980
|
+
"heading": {
|
|
2981
|
+
"type": "string",
|
|
2982
|
+
"label": "Heading",
|
|
2983
|
+
"description": "Section heading above the steps."
|
|
2984
|
+
},
|
|
2985
|
+
"intro": {
|
|
2986
|
+
"type": "text",
|
|
2987
|
+
"label": "Intro",
|
|
2988
|
+
"description": "A line or two under the heading."
|
|
2989
|
+
},
|
|
2990
|
+
"items": {
|
|
2991
|
+
"type": "array",
|
|
2992
|
+
"label": "Steps",
|
|
2993
|
+
"required": true,
|
|
2994
|
+
"items": {
|
|
2995
|
+
"type": "object",
|
|
2996
|
+
"fields": {
|
|
2997
|
+
"title": {
|
|
2998
|
+
"type": "string",
|
|
2999
|
+
"label": "Title",
|
|
3000
|
+
"required": true,
|
|
3001
|
+
"description": "The step's name."
|
|
3002
|
+
},
|
|
3003
|
+
"text": {
|
|
3004
|
+
"type": "text",
|
|
3005
|
+
"label": "Text",
|
|
3006
|
+
"required": true,
|
|
3007
|
+
"description": "What happens in this step."
|
|
3008
|
+
},
|
|
3009
|
+
"image": {
|
|
3010
|
+
"type": "image",
|
|
3011
|
+
"label": "Image",
|
|
3012
|
+
"description": "An image for the step."
|
|
3013
|
+
},
|
|
3014
|
+
"imageAlt": {
|
|
3015
|
+
"type": "string",
|
|
3016
|
+
"label": "Image description",
|
|
3017
|
+
"description": "What the image shows; empty if decorative."
|
|
3018
|
+
}
|
|
3019
|
+
}
|
|
3020
|
+
},
|
|
3021
|
+
"description": "The steps, in order (Elementor icon boxes, Divi blurbs, Gutenberg columns of heading + text)."
|
|
3022
|
+
},
|
|
3023
|
+
"id": {
|
|
3024
|
+
"type": "string",
|
|
3025
|
+
"content": false,
|
|
3026
|
+
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
3027
|
+
}
|
|
3028
|
+
},
|
|
3029
|
+
"slots": {},
|
|
3030
|
+
"js": "none",
|
|
3031
|
+
"dependencies": {},
|
|
3032
|
+
"sources": {
|
|
3033
|
+
"gutenberg": [
|
|
3034
|
+
"core/columns"
|
|
3035
|
+
],
|
|
3036
|
+
"elementor": [
|
|
3037
|
+
"elementor/icon-box"
|
|
3038
|
+
],
|
|
3039
|
+
"divi": [
|
|
3040
|
+
"divi/et_pb_blurb"
|
|
3041
|
+
]
|
|
3042
|
+
},
|
|
3043
|
+
"a11y": "Steps are an <ol>, so their order and count are announced; the visible numbers are CSS counters, not text. Each title is an <h3>. The section is labelled by its heading when it has one.",
|
|
3044
|
+
"pattern": {
|
|
3045
|
+
"summary": "ordered sequence: numbered title + short text units",
|
|
3046
|
+
"signals": [
|
|
3047
|
+
"3+ repeated units",
|
|
3048
|
+
"number or step label",
|
|
3049
|
+
"title",
|
|
3050
|
+
"short text"
|
|
3051
|
+
]
|
|
3052
|
+
},
|
|
3053
|
+
"files": [
|
|
3054
|
+
"Steps.astro"
|
|
3055
|
+
],
|
|
3056
|
+
"contentFields": {
|
|
3057
|
+
"heading": "heading",
|
|
3058
|
+
"intro": "intro",
|
|
3059
|
+
"items": "items",
|
|
3060
|
+
"items[].title": "items[].title",
|
|
3061
|
+
"items[].text": "items[].text",
|
|
3062
|
+
"items[].image": "items[].image",
|
|
3063
|
+
"items[].imageAlt": "items[].image_alt"
|
|
3064
|
+
}
|
|
3065
|
+
},
|
|
3066
|
+
{
|
|
3067
|
+
"id": "tabs",
|
|
3068
|
+
"name": "Tabs",
|
|
3069
|
+
"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.",
|
|
3070
|
+
"category": "content",
|
|
3071
|
+
"uses": [],
|
|
3072
|
+
"shared": [
|
|
3073
|
+
"Section.astro"
|
|
3074
|
+
],
|
|
3075
|
+
"variants": {
|
|
3076
|
+
"style": {
|
|
3077
|
+
"options": [
|
|
3078
|
+
"underline",
|
|
3079
|
+
"pills"
|
|
3080
|
+
],
|
|
3081
|
+
"default": "underline",
|
|
3082
|
+
"description": "underline: a rule under the list, the selected tab underlined in accent. pills: the selected tab filled with accent."
|
|
3083
|
+
},
|
|
3084
|
+
"orientation": {
|
|
3085
|
+
"options": [
|
|
3086
|
+
"horizontal",
|
|
3087
|
+
"vertical"
|
|
3088
|
+
],
|
|
3089
|
+
"default": "horizontal",
|
|
3090
|
+
"description": "vertical: the tab list beside the panel on wide screens (Elementor vertical tabs)."
|
|
3091
|
+
},
|
|
3092
|
+
"tone": {
|
|
3093
|
+
"options": [
|
|
3094
|
+
"default",
|
|
3095
|
+
"muted",
|
|
3096
|
+
"inverse",
|
|
3097
|
+
"accent"
|
|
3098
|
+
],
|
|
3099
|
+
"default": "default",
|
|
3100
|
+
"description": "Section background."
|
|
3101
|
+
}
|
|
3102
|
+
},
|
|
3103
|
+
"props": {
|
|
3104
|
+
"items": {
|
|
3105
|
+
"type": "array",
|
|
3106
|
+
"required": true,
|
|
3107
|
+
"items": {
|
|
3108
|
+
"type": "object",
|
|
3109
|
+
"fields": {
|
|
3110
|
+
"label": {
|
|
3111
|
+
"type": "string",
|
|
3112
|
+
"required": true
|
|
3113
|
+
},
|
|
3114
|
+
"content": {
|
|
3115
|
+
"type": "richtext",
|
|
3116
|
+
"required": true
|
|
3117
|
+
}
|
|
3118
|
+
}
|
|
3119
|
+
},
|
|
3120
|
+
"description": "Tabs in order (Elementor tabs tab_title/tab_content, Divi tab title + content)."
|
|
3121
|
+
},
|
|
3122
|
+
"heading": {
|
|
3123
|
+
"type": "string",
|
|
3124
|
+
"description": "Section heading; also names the tab list."
|
|
3125
|
+
},
|
|
3126
|
+
"label": {
|
|
3127
|
+
"type": "string",
|
|
3128
|
+
"description": "Accessible name of the tab list when there is no heading."
|
|
3129
|
+
},
|
|
3130
|
+
"id": {
|
|
3131
|
+
"type": "string",
|
|
3132
|
+
"description": "Section id, unique per page: the tabs machine and its element ids derive from it."
|
|
3133
|
+
}
|
|
1920
3134
|
},
|
|
1921
3135
|
"slots": {},
|
|
1922
3136
|
"js": "zag",
|
|
@@ -1941,6 +3155,136 @@
|
|
|
1941
3155
|
"Tabs.astro"
|
|
1942
3156
|
]
|
|
1943
3157
|
},
|
|
3158
|
+
{
|
|
3159
|
+
"id": "team",
|
|
3160
|
+
"name": "Team",
|
|
3161
|
+
"description": "The people behind the site: portrait, name, role and a short bio each, as cards or plain entries. A member with a page is clickable as a whole.",
|
|
3162
|
+
"category": "section",
|
|
3163
|
+
"uses": [],
|
|
3164
|
+
"shared": [
|
|
3165
|
+
"KitImage.astro",
|
|
3166
|
+
"Section.astro",
|
|
3167
|
+
"image.ts",
|
|
3168
|
+
"types.ts"
|
|
3169
|
+
],
|
|
3170
|
+
"variants": {
|
|
3171
|
+
"columns": {
|
|
3172
|
+
"options": [
|
|
3173
|
+
"2",
|
|
3174
|
+
"3",
|
|
3175
|
+
"4"
|
|
3176
|
+
],
|
|
3177
|
+
"default": "3",
|
|
3178
|
+
"description": "Columns on wide screens; one on phones, two on tablets."
|
|
3179
|
+
},
|
|
3180
|
+
"style": {
|
|
3181
|
+
"options": [
|
|
3182
|
+
"card",
|
|
3183
|
+
"plain"
|
|
3184
|
+
],
|
|
3185
|
+
"default": "card",
|
|
3186
|
+
"description": "Member chrome: a bordered card with the portrait on top, or none."
|
|
3187
|
+
}
|
|
3188
|
+
},
|
|
3189
|
+
"props": {
|
|
3190
|
+
"heading": {
|
|
3191
|
+
"type": "string",
|
|
3192
|
+
"label": "Heading",
|
|
3193
|
+
"description": "Section heading above the team."
|
|
3194
|
+
},
|
|
3195
|
+
"intro": {
|
|
3196
|
+
"type": "text",
|
|
3197
|
+
"label": "Intro",
|
|
3198
|
+
"description": "A line or two under the heading."
|
|
3199
|
+
},
|
|
3200
|
+
"items": {
|
|
3201
|
+
"type": "array",
|
|
3202
|
+
"label": "Members",
|
|
3203
|
+
"required": true,
|
|
3204
|
+
"items": {
|
|
3205
|
+
"type": "object",
|
|
3206
|
+
"fields": {
|
|
3207
|
+
"name": {
|
|
3208
|
+
"type": "string",
|
|
3209
|
+
"label": "Name",
|
|
3210
|
+
"required": true,
|
|
3211
|
+
"description": "The person's name."
|
|
3212
|
+
},
|
|
3213
|
+
"role": {
|
|
3214
|
+
"type": "string",
|
|
3215
|
+
"label": "Role",
|
|
3216
|
+
"description": "Their title or role."
|
|
3217
|
+
},
|
|
3218
|
+
"bio": {
|
|
3219
|
+
"type": "text",
|
|
3220
|
+
"label": "Bio",
|
|
3221
|
+
"description": "A short biography."
|
|
3222
|
+
},
|
|
3223
|
+
"image": {
|
|
3224
|
+
"type": "image",
|
|
3225
|
+
"label": "Photo",
|
|
3226
|
+
"description": "Their portrait; shown square."
|
|
3227
|
+
},
|
|
3228
|
+
"imageAlt": {
|
|
3229
|
+
"type": "string",
|
|
3230
|
+
"label": "Photo description",
|
|
3231
|
+
"description": "Who the photo shows; defaults to their name."
|
|
3232
|
+
},
|
|
3233
|
+
"href": {
|
|
3234
|
+
"type": "url",
|
|
3235
|
+
"label": "Link",
|
|
3236
|
+
"description": "Their profile page; makes the whole entry a link."
|
|
3237
|
+
}
|
|
3238
|
+
}
|
|
3239
|
+
},
|
|
3240
|
+
"description": "The people, in display order (Divi team member name/position/content/image_url, Elementor image box)."
|
|
3241
|
+
},
|
|
3242
|
+
"id": {
|
|
3243
|
+
"type": "string",
|
|
3244
|
+
"content": false,
|
|
3245
|
+
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
3246
|
+
}
|
|
3247
|
+
},
|
|
3248
|
+
"slots": {},
|
|
3249
|
+
"js": "none",
|
|
3250
|
+
"dependencies": {},
|
|
3251
|
+
"sources": {
|
|
3252
|
+
"gutenberg": [
|
|
3253
|
+
"core/columns"
|
|
3254
|
+
],
|
|
3255
|
+
"elementor": [
|
|
3256
|
+
"elementor/image-box"
|
|
3257
|
+
],
|
|
3258
|
+
"divi": [
|
|
3259
|
+
"divi/et_pb_team_member"
|
|
3260
|
+
]
|
|
3261
|
+
},
|
|
3262
|
+
"a11y": "Members are a <ul>; each name is an <h3>, and a linked member's link text is the name. A portrait's text defaults to the name. The section is labelled by its heading when it has one.",
|
|
3263
|
+
"pattern": {
|
|
3264
|
+
"summary": "repeated person units: portrait + name + role",
|
|
3265
|
+
"signals": [
|
|
3266
|
+
"2+ columns",
|
|
3267
|
+
"1 image per column",
|
|
3268
|
+
"name",
|
|
3269
|
+
"role",
|
|
3270
|
+
"short text"
|
|
3271
|
+
]
|
|
3272
|
+
},
|
|
3273
|
+
"files": [
|
|
3274
|
+
"Team.astro"
|
|
3275
|
+
],
|
|
3276
|
+
"contentFields": {
|
|
3277
|
+
"heading": "heading",
|
|
3278
|
+
"intro": "intro",
|
|
3279
|
+
"items": "items",
|
|
3280
|
+
"items[].name": "items[].name",
|
|
3281
|
+
"items[].role": "items[].role",
|
|
3282
|
+
"items[].bio": "items[].bio",
|
|
3283
|
+
"items[].image": "items[].image",
|
|
3284
|
+
"items[].imageAlt": "items[].image_alt",
|
|
3285
|
+
"items[].href": "items[].href"
|
|
3286
|
+
}
|
|
3287
|
+
},
|
|
1944
3288
|
{
|
|
1945
3289
|
"id": "testimonial",
|
|
1946
3290
|
"name": "Testimonial",
|
|
@@ -1950,6 +3294,7 @@
|
|
|
1950
3294
|
"shared": [
|
|
1951
3295
|
"KitImage.astro",
|
|
1952
3296
|
"Section.astro",
|
|
3297
|
+
"image.ts",
|
|
1953
3298
|
"types.ts"
|
|
1954
3299
|
],
|
|
1955
3300
|
"variants": {
|
|
@@ -1975,39 +3320,37 @@
|
|
|
1975
3320
|
"props": {
|
|
1976
3321
|
"items": {
|
|
1977
3322
|
"type": "array",
|
|
3323
|
+
"label": "Testimonials",
|
|
1978
3324
|
"required": true,
|
|
1979
3325
|
"items": {
|
|
1980
3326
|
"type": "object",
|
|
1981
3327
|
"fields": {
|
|
1982
3328
|
"quote": {
|
|
1983
3329
|
"type": "text",
|
|
1984
|
-
"
|
|
3330
|
+
"label": "Quote",
|
|
3331
|
+
"required": true,
|
|
3332
|
+
"description": "What the person said, in their words."
|
|
1985
3333
|
},
|
|
1986
3334
|
"name": {
|
|
1987
3335
|
"type": "string",
|
|
1988
|
-
"
|
|
3336
|
+
"label": "Name",
|
|
3337
|
+
"required": true,
|
|
3338
|
+
"description": "Who said it."
|
|
1989
3339
|
},
|
|
1990
3340
|
"role": {
|
|
1991
|
-
"type": "string"
|
|
3341
|
+
"type": "string",
|
|
3342
|
+
"label": "Role",
|
|
3343
|
+
"description": "Their role or company."
|
|
1992
3344
|
},
|
|
1993
3345
|
"avatar": {
|
|
1994
|
-
"type": "
|
|
1995
|
-
"
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
"required": true
|
|
2003
|
-
},
|
|
2004
|
-
"width": {
|
|
2005
|
-
"type": "integer"
|
|
2006
|
-
},
|
|
2007
|
-
"height": {
|
|
2008
|
-
"type": "integer"
|
|
2009
|
-
}
|
|
2010
|
-
}
|
|
3346
|
+
"type": "image",
|
|
3347
|
+
"label": "Photo",
|
|
3348
|
+
"description": "Their photo."
|
|
3349
|
+
},
|
|
3350
|
+
"avatarAlt": {
|
|
3351
|
+
"type": "string",
|
|
3352
|
+
"label": "Photo description",
|
|
3353
|
+
"description": "Who the photo shows; usually their name."
|
|
2011
3354
|
}
|
|
2012
3355
|
}
|
|
2013
3356
|
},
|
|
@@ -2015,10 +3358,12 @@
|
|
|
2015
3358
|
},
|
|
2016
3359
|
"heading": {
|
|
2017
3360
|
"type": "string",
|
|
3361
|
+
"label": "Heading",
|
|
2018
3362
|
"description": "Section heading above the quotes."
|
|
2019
3363
|
},
|
|
2020
3364
|
"id": {
|
|
2021
3365
|
"type": "string",
|
|
3366
|
+
"content": false,
|
|
2022
3367
|
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
2023
3368
|
}
|
|
2024
3369
|
},
|
|
@@ -2039,7 +3384,16 @@
|
|
|
2039
3384
|
"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.",
|
|
2040
3385
|
"files": [
|
|
2041
3386
|
"Testimonial.astro"
|
|
2042
|
-
]
|
|
3387
|
+
],
|
|
3388
|
+
"contentFields": {
|
|
3389
|
+
"items": "items",
|
|
3390
|
+
"items[].quote": "items[].quote",
|
|
3391
|
+
"items[].name": "items[].name",
|
|
3392
|
+
"items[].role": "items[].role",
|
|
3393
|
+
"items[].avatar": "items[].avatar",
|
|
3394
|
+
"items[].avatarAlt": "items[].avatar_alt",
|
|
3395
|
+
"heading": "heading"
|
|
3396
|
+
}
|
|
2043
3397
|
}
|
|
2044
3398
|
]
|
|
2045
3399
|
}
|