@contentrain/astro-kit 0.5.0 → 0.6.1
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/catalog.json +1512 -167
- 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/meta.json +6 -6
- 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 +14 -6
- 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 +19 -8
- 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/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
|
@@ -33,6 +33,62 @@
|
|
|
33
33
|
"tailwind-variants": "^3.3.1"
|
|
34
34
|
},
|
|
35
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
|
+
},
|
|
36
92
|
{
|
|
37
93
|
"id": "breadcrumb",
|
|
38
94
|
"name": "Breadcrumb",
|
|
@@ -120,6 +176,7 @@
|
|
|
120
176
|
"shared": [
|
|
121
177
|
"KitImage.astro",
|
|
122
178
|
"Section.astro",
|
|
179
|
+
"image.ts",
|
|
123
180
|
"types.ts"
|
|
124
181
|
],
|
|
125
182
|
"variants": {
|
|
@@ -163,49 +220,51 @@
|
|
|
163
220
|
"props": {
|
|
164
221
|
"title": {
|
|
165
222
|
"type": "string",
|
|
223
|
+
"label": "Heading",
|
|
166
224
|
"description": "Section heading."
|
|
167
225
|
},
|
|
168
226
|
"intro": {
|
|
169
227
|
"type": "text",
|
|
228
|
+
"label": "Introduction",
|
|
170
229
|
"description": "Paragraph under the heading."
|
|
171
230
|
},
|
|
172
231
|
"items": {
|
|
173
232
|
"type": "array",
|
|
233
|
+
"label": "Cards",
|
|
174
234
|
"required": true,
|
|
175
235
|
"items": {
|
|
176
236
|
"type": "object",
|
|
177
237
|
"fields": {
|
|
178
238
|
"title": {
|
|
179
239
|
"type": "string",
|
|
180
|
-
"
|
|
240
|
+
"label": "Title",
|
|
241
|
+
"required": true,
|
|
242
|
+
"description": "The card heading."
|
|
181
243
|
},
|
|
182
244
|
"text": {
|
|
183
|
-
"type": "text"
|
|
245
|
+
"type": "text",
|
|
246
|
+
"label": "Text",
|
|
247
|
+
"description": "A sentence or two under the heading."
|
|
184
248
|
},
|
|
185
249
|
"href": {
|
|
186
|
-
"type": "url"
|
|
250
|
+
"type": "url",
|
|
251
|
+
"label": "Link",
|
|
252
|
+
"description": "Makes the whole card a link."
|
|
187
253
|
},
|
|
188
254
|
"image": {
|
|
189
|
-
"type": "
|
|
190
|
-
"
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
"required": true
|
|
198
|
-
},
|
|
199
|
-
"width": {
|
|
200
|
-
"type": "integer"
|
|
201
|
-
},
|
|
202
|
-
"height": {
|
|
203
|
-
"type": "integer"
|
|
204
|
-
}
|
|
205
|
-
}
|
|
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."
|
|
206
263
|
},
|
|
207
264
|
"eyebrow": {
|
|
208
|
-
"type": "string"
|
|
265
|
+
"type": "string",
|
|
266
|
+
"label": "Eyebrow",
|
|
267
|
+
"description": "Short line above the title (a category, a role, a price)."
|
|
209
268
|
}
|
|
210
269
|
}
|
|
211
270
|
},
|
|
@@ -216,6 +275,7 @@
|
|
|
216
275
|
"min": 2,
|
|
217
276
|
"max": 3,
|
|
218
277
|
"default": 2,
|
|
278
|
+
"content": false,
|
|
219
279
|
"description": "Level of the section heading; card titles are one below."
|
|
220
280
|
}
|
|
221
281
|
},
|
|
@@ -245,12 +305,209 @@
|
|
|
245
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.",
|
|
246
306
|
"files": [
|
|
247
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"
|
|
248
389
|
]
|
|
249
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
|
+
},
|
|
250
507
|
{
|
|
251
508
|
"id": "contact-form",
|
|
252
509
|
"name": "Contact form",
|
|
253
|
-
"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.",
|
|
254
511
|
"category": "section",
|
|
255
512
|
"uses": [],
|
|
256
513
|
"shared": [
|
|
@@ -280,31 +537,46 @@
|
|
|
280
537
|
"model": {
|
|
281
538
|
"type": "string",
|
|
282
539
|
"required": true,
|
|
540
|
+
"content": false,
|
|
283
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)."
|
|
284
542
|
},
|
|
285
543
|
"heading": {
|
|
286
544
|
"type": "string",
|
|
545
|
+
"label": "Heading",
|
|
287
546
|
"description": "Section heading."
|
|
288
547
|
},
|
|
289
548
|
"intro": {
|
|
290
549
|
"type": "text",
|
|
550
|
+
"label": "Introduction",
|
|
291
551
|
"description": "A line or two above the details."
|
|
292
552
|
},
|
|
553
|
+
"formHeading": {
|
|
554
|
+
"type": "string",
|
|
555
|
+
"label": "Form heading",
|
|
556
|
+
"description": "The form's own heading, shown above the form."
|
|
557
|
+
},
|
|
293
558
|
"details": {
|
|
294
559
|
"type": "array",
|
|
560
|
+
"label": "Contact details",
|
|
295
561
|
"items": {
|
|
296
562
|
"type": "object",
|
|
297
563
|
"fields": {
|
|
298
564
|
"label": {
|
|
299
565
|
"type": "string",
|
|
300
|
-
"
|
|
566
|
+
"label": "Label",
|
|
567
|
+
"required": true,
|
|
568
|
+
"description": "What the detail is (Phone, Email, Address)."
|
|
301
569
|
},
|
|
302
570
|
"value": {
|
|
303
571
|
"type": "string",
|
|
304
|
-
"
|
|
572
|
+
"label": "Value",
|
|
573
|
+
"required": true,
|
|
574
|
+
"description": "The detail as shown."
|
|
305
575
|
},
|
|
306
576
|
"href": {
|
|
307
|
-
"type": "url"
|
|
577
|
+
"type": "url",
|
|
578
|
+
"label": "Link",
|
|
579
|
+
"description": "A tel:, mailto: or map link for it."
|
|
308
580
|
}
|
|
309
581
|
}
|
|
310
582
|
},
|
|
@@ -312,6 +584,7 @@
|
|
|
312
584
|
},
|
|
313
585
|
"id": {
|
|
314
586
|
"type": "string",
|
|
587
|
+
"content": false,
|
|
315
588
|
"description": "Section id; the heading gets `<id>-title`."
|
|
316
589
|
}
|
|
317
590
|
},
|
|
@@ -335,7 +608,16 @@
|
|
|
335
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.",
|
|
336
609
|
"files": [
|
|
337
610
|
"ContactForm.astro"
|
|
338
|
-
]
|
|
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
|
+
}
|
|
339
621
|
},
|
|
340
622
|
{
|
|
341
623
|
"id": "cta",
|
|
@@ -379,37 +661,48 @@
|
|
|
379
661
|
"props": {
|
|
380
662
|
"heading": {
|
|
381
663
|
"type": "string",
|
|
664
|
+
"label": "Heading",
|
|
382
665
|
"required": true,
|
|
383
666
|
"description": "The call's heading (Divi CTA title, Elementor call-to-action title)."
|
|
384
667
|
},
|
|
385
668
|
"body": {
|
|
386
669
|
"type": "text",
|
|
670
|
+
"label": "Text",
|
|
387
671
|
"description": "One or two sentences under the heading."
|
|
388
672
|
},
|
|
389
673
|
"actions": {
|
|
390
674
|
"type": "array",
|
|
675
|
+
"label": "Buttons",
|
|
391
676
|
"required": true,
|
|
392
677
|
"items": {
|
|
393
678
|
"type": "object",
|
|
394
679
|
"fields": {
|
|
395
680
|
"label": {
|
|
396
681
|
"type": "string",
|
|
397
|
-
"
|
|
682
|
+
"label": "Label",
|
|
683
|
+
"required": true,
|
|
684
|
+
"description": "The button text."
|
|
398
685
|
},
|
|
399
686
|
"href": {
|
|
400
687
|
"type": "url",
|
|
401
|
-
"
|
|
688
|
+
"label": "Link",
|
|
689
|
+
"required": true,
|
|
690
|
+
"description": "Where the button goes: a page on this site or a full address."
|
|
402
691
|
},
|
|
403
692
|
"newTab": {
|
|
404
|
-
"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)."
|
|
405
696
|
},
|
|
406
697
|
"style": {
|
|
407
698
|
"type": "select",
|
|
699
|
+
"label": "Style",
|
|
408
700
|
"options": [
|
|
409
701
|
"primary",
|
|
410
702
|
"secondary",
|
|
411
703
|
"ghost"
|
|
412
|
-
]
|
|
704
|
+
],
|
|
705
|
+
"description": "primary for the main action, secondary or ghost for the ones beside it."
|
|
413
706
|
}
|
|
414
707
|
}
|
|
415
708
|
},
|
|
@@ -417,6 +710,7 @@
|
|
|
417
710
|
},
|
|
418
711
|
"id": {
|
|
419
712
|
"type": "string",
|
|
713
|
+
"content": false,
|
|
420
714
|
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
421
715
|
}
|
|
422
716
|
},
|
|
@@ -437,7 +731,16 @@
|
|
|
437
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.",
|
|
438
732
|
"files": [
|
|
439
733
|
"Cta.astro"
|
|
440
|
-
]
|
|
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
|
+
}
|
|
441
744
|
},
|
|
442
745
|
{
|
|
443
746
|
"id": "embed",
|
|
@@ -580,17 +883,22 @@
|
|
|
580
883
|
"props": {
|
|
581
884
|
"items": {
|
|
582
885
|
"type": "array",
|
|
886
|
+
"label": "Questions",
|
|
583
887
|
"required": true,
|
|
584
888
|
"items": {
|
|
585
889
|
"type": "object",
|
|
586
890
|
"fields": {
|
|
587
891
|
"question": {
|
|
588
892
|
"type": "string",
|
|
589
|
-
"
|
|
893
|
+
"label": "Question",
|
|
894
|
+
"required": true,
|
|
895
|
+
"description": "The question, as the visitor would ask it."
|
|
590
896
|
},
|
|
591
897
|
"answer": {
|
|
592
898
|
"type": "richtext",
|
|
593
|
-
"
|
|
899
|
+
"label": "Answer",
|
|
900
|
+
"required": true,
|
|
901
|
+
"description": "The answer; links and lists allowed."
|
|
594
902
|
}
|
|
595
903
|
}
|
|
596
904
|
},
|
|
@@ -598,25 +906,30 @@
|
|
|
598
906
|
},
|
|
599
907
|
"heading": {
|
|
600
908
|
"type": "string",
|
|
909
|
+
"label": "Heading",
|
|
601
910
|
"description": "Section heading."
|
|
602
911
|
},
|
|
603
912
|
"exclusive": {
|
|
604
913
|
"type": "boolean",
|
|
605
914
|
"default": false,
|
|
915
|
+
"content": false,
|
|
606
916
|
"description": "One answer open at a time (Elementor accordion, Divi accordion). Off for toggles."
|
|
607
917
|
},
|
|
608
918
|
"openFirst": {
|
|
609
919
|
"type": "boolean",
|
|
610
920
|
"default": false,
|
|
921
|
+
"content": false,
|
|
611
922
|
"description": "The first answer starts open (Divi open_toggle, Elementor active item 1)."
|
|
612
923
|
},
|
|
613
924
|
"schema": {
|
|
614
925
|
"type": "boolean",
|
|
615
926
|
"default": false,
|
|
927
|
+
"content": false,
|
|
616
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."
|
|
617
929
|
},
|
|
618
930
|
"id": {
|
|
619
931
|
"type": "string",
|
|
932
|
+
"content": false,
|
|
620
933
|
"description": "Section id; also the exclusive group's name."
|
|
621
934
|
}
|
|
622
935
|
},
|
|
@@ -643,7 +956,142 @@
|
|
|
643
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.",
|
|
644
957
|
"files": [
|
|
645
958
|
"Faq.astro"
|
|
646
|
-
]
|
|
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
|
+
}
|
|
647
1095
|
},
|
|
648
1096
|
{
|
|
649
1097
|
"id": "footer",
|
|
@@ -671,6 +1119,14 @@
|
|
|
671
1119
|
],
|
|
672
1120
|
"default": "default",
|
|
673
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."
|
|
674
1130
|
}
|
|
675
1131
|
},
|
|
676
1132
|
"props": {
|
|
@@ -742,6 +1198,10 @@
|
|
|
742
1198
|
"type": "string",
|
|
743
1199
|
"description": "Copyright line; {year} is the current year. Defaults to © <year> <siteName>."
|
|
744
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
|
+
},
|
|
745
1205
|
"navLabel": {
|
|
746
1206
|
"type": "string",
|
|
747
1207
|
"description": "Accessible name of the footer navigation (ui-strings nav.footer)."
|
|
@@ -781,6 +1241,7 @@
|
|
|
781
1241
|
"shared": [
|
|
782
1242
|
"KitImage.astro",
|
|
783
1243
|
"Section.astro",
|
|
1244
|
+
"image.ts",
|
|
784
1245
|
"types.ts"
|
|
785
1246
|
],
|
|
786
1247
|
"variants": {
|
|
@@ -814,32 +1275,26 @@
|
|
|
814
1275
|
"props": {
|
|
815
1276
|
"items": {
|
|
816
1277
|
"type": "array",
|
|
1278
|
+
"label": "Images",
|
|
817
1279
|
"required": true,
|
|
818
1280
|
"items": {
|
|
819
1281
|
"type": "object",
|
|
820
1282
|
"fields": {
|
|
821
1283
|
"image": {
|
|
822
|
-
"type": "
|
|
1284
|
+
"type": "image",
|
|
1285
|
+
"label": "Image",
|
|
823
1286
|
"required": true,
|
|
824
|
-
"
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
"type": "string",
|
|
831
|
-
"required": true
|
|
832
|
-
},
|
|
833
|
-
"width": {
|
|
834
|
-
"type": "integer"
|
|
835
|
-
},
|
|
836
|
-
"height": {
|
|
837
|
-
"type": "integer"
|
|
838
|
-
}
|
|
839
|
-
}
|
|
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."
|
|
840
1293
|
},
|
|
841
1294
|
"caption": {
|
|
842
|
-
"type": "string"
|
|
1295
|
+
"type": "string",
|
|
1296
|
+
"label": "Caption",
|
|
1297
|
+
"description": "Caption under the enlarged image."
|
|
843
1298
|
}
|
|
844
1299
|
}
|
|
845
1300
|
},
|
|
@@ -847,10 +1302,12 @@
|
|
|
847
1302
|
},
|
|
848
1303
|
"heading": {
|
|
849
1304
|
"type": "string",
|
|
1305
|
+
"label": "Heading",
|
|
850
1306
|
"description": "Section heading above the images."
|
|
851
1307
|
},
|
|
852
1308
|
"closeLabel": {
|
|
853
1309
|
"type": "string",
|
|
1310
|
+
"content": false,
|
|
854
1311
|
"description": "Text of the viewer's close button (ui-strings gallery.close)."
|
|
855
1312
|
},
|
|
856
1313
|
"tone": {
|
|
@@ -861,10 +1318,12 @@
|
|
|
861
1318
|
"inverse",
|
|
862
1319
|
"accent"
|
|
863
1320
|
],
|
|
1321
|
+
"content": false,
|
|
864
1322
|
"description": "Section background."
|
|
865
1323
|
},
|
|
866
1324
|
"id": {
|
|
867
1325
|
"type": "string",
|
|
1326
|
+
"content": false,
|
|
868
1327
|
"description": "Section id, unique per page: viewer ids derive from it (`<id>-image-<n>`)."
|
|
869
1328
|
}
|
|
870
1329
|
},
|
|
@@ -889,7 +1348,14 @@
|
|
|
889
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.",
|
|
890
1349
|
"files": [
|
|
891
1350
|
"Gallery.astro"
|
|
892
|
-
]
|
|
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
|
+
}
|
|
893
1359
|
},
|
|
894
1360
|
{
|
|
895
1361
|
"id": "header",
|
|
@@ -1109,6 +1575,7 @@
|
|
|
1109
1575
|
"props": {
|
|
1110
1576
|
"heading": {
|
|
1111
1577
|
"type": "string",
|
|
1578
|
+
"label": "Heading",
|
|
1112
1579
|
"required": true,
|
|
1113
1580
|
"description": "The main heading (Cover/Group heading, Elementor heading, Divi header title)."
|
|
1114
1581
|
},
|
|
@@ -1119,39 +1586,51 @@
|
|
|
1119
1586
|
"2"
|
|
1120
1587
|
],
|
|
1121
1588
|
"default": "1",
|
|
1589
|
+
"content": false,
|
|
1122
1590
|
"description": "Heading level: 1 when the hero opens the page, 2 when the page already has an h1."
|
|
1123
1591
|
},
|
|
1124
1592
|
"eyebrow": {
|
|
1125
1593
|
"type": "string",
|
|
1594
|
+
"label": "Eyebrow",
|
|
1126
1595
|
"description": "Short line above the heading."
|
|
1127
1596
|
},
|
|
1128
1597
|
"lead": {
|
|
1129
1598
|
"type": "text",
|
|
1599
|
+
"label": "Lead",
|
|
1130
1600
|
"description": "Paragraph under the heading."
|
|
1131
1601
|
},
|
|
1132
1602
|
"actions": {
|
|
1133
1603
|
"type": "array",
|
|
1604
|
+
"label": "Buttons",
|
|
1134
1605
|
"items": {
|
|
1135
1606
|
"type": "object",
|
|
1136
1607
|
"fields": {
|
|
1137
1608
|
"label": {
|
|
1138
1609
|
"type": "string",
|
|
1139
|
-
"
|
|
1610
|
+
"label": "Label",
|
|
1611
|
+
"required": true,
|
|
1612
|
+
"description": "The button text."
|
|
1140
1613
|
},
|
|
1141
1614
|
"href": {
|
|
1142
1615
|
"type": "url",
|
|
1143
|
-
"
|
|
1616
|
+
"label": "Link",
|
|
1617
|
+
"required": true,
|
|
1618
|
+
"description": "Where the button goes: a page on this site or a full address."
|
|
1144
1619
|
},
|
|
1145
1620
|
"newTab": {
|
|
1146
|
-
"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)."
|
|
1147
1624
|
},
|
|
1148
1625
|
"style": {
|
|
1149
1626
|
"type": "select",
|
|
1627
|
+
"label": "Style",
|
|
1150
1628
|
"options": [
|
|
1151
1629
|
"primary",
|
|
1152
1630
|
"secondary",
|
|
1153
1631
|
"ghost"
|
|
1154
|
-
]
|
|
1632
|
+
],
|
|
1633
|
+
"description": "primary for the main action, secondary or ghost for the ones beside it."
|
|
1155
1634
|
}
|
|
1156
1635
|
}
|
|
1157
1636
|
},
|
|
@@ -1159,26 +1638,35 @@
|
|
|
1159
1638
|
},
|
|
1160
1639
|
"image": {
|
|
1161
1640
|
"type": "object",
|
|
1641
|
+
"label": "Image",
|
|
1162
1642
|
"fields": {
|
|
1163
1643
|
"src": {
|
|
1164
1644
|
"type": "image",
|
|
1165
|
-
"
|
|
1645
|
+
"label": "Image",
|
|
1646
|
+
"required": true,
|
|
1647
|
+
"description": "The image file."
|
|
1166
1648
|
},
|
|
1167
1649
|
"alt": {
|
|
1168
1650
|
"type": "string",
|
|
1169
|
-
"
|
|
1651
|
+
"label": "Image description",
|
|
1652
|
+
"description": "What the image shows, for readers who cannot see it; empty when it is decoration."
|
|
1170
1653
|
},
|
|
1171
1654
|
"width": {
|
|
1172
|
-
"type": "integer"
|
|
1655
|
+
"type": "integer",
|
|
1656
|
+
"label": "Width",
|
|
1657
|
+
"description": "Width in pixels, as uploaded."
|
|
1173
1658
|
},
|
|
1174
1659
|
"height": {
|
|
1175
|
-
"type": "integer"
|
|
1660
|
+
"type": "integer",
|
|
1661
|
+
"label": "Height",
|
|
1662
|
+
"description": "Height in pixels, as uploaded."
|
|
1176
1663
|
}
|
|
1177
1664
|
},
|
|
1178
1665
|
"description": "Hero image; loaded first (the page's largest image)."
|
|
1179
1666
|
},
|
|
1180
1667
|
"id": {
|
|
1181
1668
|
"type": "string",
|
|
1669
|
+
"content": false,
|
|
1182
1670
|
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
1183
1671
|
}
|
|
1184
1672
|
},
|
|
@@ -1201,7 +1689,139 @@
|
|
|
1201
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.",
|
|
1202
1690
|
"files": [
|
|
1203
1691
|
"Hero.astro"
|
|
1204
|
-
]
|
|
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
|
+
}
|
|
1205
1825
|
},
|
|
1206
1826
|
{
|
|
1207
1827
|
"id": "nav",
|
|
@@ -1349,11 +1969,13 @@
|
|
|
1349
1969
|
"props": {
|
|
1350
1970
|
"action": {
|
|
1351
1971
|
"type": "url",
|
|
1972
|
+
"label": "Form address",
|
|
1352
1973
|
"required": true,
|
|
1353
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."
|
|
1354
1975
|
},
|
|
1355
1976
|
"provider": {
|
|
1356
1977
|
"type": "select",
|
|
1978
|
+
"label": "Email provider",
|
|
1357
1979
|
"options": [
|
|
1358
1980
|
"mailchimp",
|
|
1359
1981
|
"kit",
|
|
@@ -1367,44 +1989,54 @@
|
|
|
1367
1989
|
},
|
|
1368
1990
|
"emailName": {
|
|
1369
1991
|
"type": "string",
|
|
1992
|
+
"label": "Email field name",
|
|
1370
1993
|
"description": "Field name for the address when the provider is other or names it differently."
|
|
1371
1994
|
},
|
|
1372
1995
|
"askName": {
|
|
1373
1996
|
"type": "boolean",
|
|
1997
|
+
"label": "Ask for a name",
|
|
1374
1998
|
"default": false,
|
|
1375
1999
|
"description": "Ask for a first name too, when the provider takes one (the source form had a name field)."
|
|
1376
2000
|
},
|
|
1377
2001
|
"heading": {
|
|
1378
2002
|
"type": "string",
|
|
2003
|
+
"label": "Heading",
|
|
1379
2004
|
"description": "Section heading."
|
|
1380
2005
|
},
|
|
1381
2006
|
"intro": {
|
|
1382
2007
|
"type": "text",
|
|
2008
|
+
"label": "Introduction",
|
|
1383
2009
|
"description": "A line or two about the newsletter."
|
|
1384
2010
|
},
|
|
1385
2011
|
"note": {
|
|
1386
2012
|
"type": "string",
|
|
2013
|
+
"label": "Note",
|
|
1387
2014
|
"description": "Small print under the form (privacy, frequency)."
|
|
1388
2015
|
},
|
|
1389
2016
|
"emailLabel": {
|
|
1390
2017
|
"type": "string",
|
|
2018
|
+
"content": false,
|
|
1391
2019
|
"description": "ui-strings newsletter.email."
|
|
1392
2020
|
},
|
|
1393
2021
|
"nameLabel": {
|
|
1394
2022
|
"type": "string",
|
|
2023
|
+
"content": false,
|
|
1395
2024
|
"description": "ui-strings newsletter.name."
|
|
1396
2025
|
},
|
|
1397
2026
|
"submitLabel": {
|
|
1398
2027
|
"type": "string",
|
|
2028
|
+
"content": false,
|
|
1399
2029
|
"description": "ui-strings newsletter.submit."
|
|
1400
2030
|
},
|
|
1401
2031
|
"newTab": {
|
|
1402
2032
|
"type": "boolean",
|
|
1403
2033
|
"default": true,
|
|
2034
|
+
"content": false,
|
|
1404
2035
|
"description": "Open the provider's confirmation page in a new tab (the reader keeps the site)."
|
|
1405
2036
|
},
|
|
1406
2037
|
"id": {
|
|
1407
2038
|
"type": "string",
|
|
2039
|
+
"content": false,
|
|
1408
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`."
|
|
1409
2041
|
}
|
|
1410
2042
|
},
|
|
@@ -1424,7 +2056,16 @@
|
|
|
1424
2056
|
"files": [
|
|
1425
2057
|
"Newsletter.astro",
|
|
1426
2058
|
"newsletter.ts"
|
|
1427
|
-
]
|
|
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
|
+
}
|
|
1428
2069
|
},
|
|
1429
2070
|
{
|
|
1430
2071
|
"id": "pagination",
|
|
@@ -1629,6 +2270,155 @@
|
|
|
1629
2270
|
"PostCard.astro"
|
|
1630
2271
|
]
|
|
1631
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
|
+
},
|
|
1632
2422
|
{
|
|
1633
2423
|
"id": "prose",
|
|
1634
2424
|
"name": "Prose",
|
|
@@ -1649,8 +2439,11 @@
|
|
|
1649
2439
|
"props": {
|
|
1650
2440
|
"html": {
|
|
1651
2441
|
"type": "richtext",
|
|
1652
|
-
"
|
|
1653
|
-
|
|
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."
|
|
1654
2447
|
},
|
|
1655
2448
|
"searchable": {
|
|
1656
2449
|
"type": "boolean",
|
|
@@ -1710,6 +2503,7 @@
|
|
|
1710
2503
|
"shared": [
|
|
1711
2504
|
"Button.astro",
|
|
1712
2505
|
"KitImage.astro",
|
|
2506
|
+
"image.ts",
|
|
1713
2507
|
"types.ts"
|
|
1714
2508
|
],
|
|
1715
2509
|
"variants": {
|
|
@@ -1743,88 +2537,76 @@
|
|
|
1743
2537
|
"props": {
|
|
1744
2538
|
"slides": {
|
|
1745
2539
|
"type": "array",
|
|
2540
|
+
"label": "Slides",
|
|
1746
2541
|
"required": true,
|
|
1747
2542
|
"items": {
|
|
1748
2543
|
"type": "object",
|
|
1749
2544
|
"fields": {
|
|
1750
2545
|
"image": {
|
|
1751
|
-
"type": "
|
|
2546
|
+
"type": "image",
|
|
2547
|
+
"label": "Image",
|
|
1752
2548
|
"required": true,
|
|
1753
|
-
"
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
"type": "string",
|
|
1760
|
-
"required": true
|
|
1761
|
-
},
|
|
1762
|
-
"width": {
|
|
1763
|
-
"type": "integer"
|
|
1764
|
-
},
|
|
1765
|
-
"height": {
|
|
1766
|
-
"type": "integer"
|
|
1767
|
-
}
|
|
1768
|
-
}
|
|
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."
|
|
1769
2555
|
},
|
|
1770
2556
|
"title": {
|
|
1771
|
-
"type": "string"
|
|
2557
|
+
"type": "string",
|
|
2558
|
+
"label": "Title",
|
|
2559
|
+
"description": "Heading over the slide."
|
|
1772
2560
|
},
|
|
1773
2561
|
"text": {
|
|
1774
|
-
"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."
|
|
1775
2570
|
},
|
|
1776
|
-
"
|
|
1777
|
-
"type": "
|
|
1778
|
-
"
|
|
1779
|
-
|
|
1780
|
-
"type": "string",
|
|
1781
|
-
"required": true
|
|
1782
|
-
},
|
|
1783
|
-
"href": {
|
|
1784
|
-
"type": "url",
|
|
1785
|
-
"required": true
|
|
1786
|
-
},
|
|
1787
|
-
"newTab": {
|
|
1788
|
-
"type": "boolean"
|
|
1789
|
-
},
|
|
1790
|
-
"style": {
|
|
1791
|
-
"type": "select",
|
|
1792
|
-
"options": [
|
|
1793
|
-
"primary",
|
|
1794
|
-
"secondary",
|
|
1795
|
-
"ghost"
|
|
1796
|
-
]
|
|
1797
|
-
}
|
|
1798
|
-
}
|
|
2571
|
+
"ctaHref": {
|
|
2572
|
+
"type": "url",
|
|
2573
|
+
"label": "Button link",
|
|
2574
|
+
"description": "Where the button goes."
|
|
1799
2575
|
}
|
|
1800
2576
|
}
|
|
1801
2577
|
},
|
|
1802
|
-
"description": "Slides
|
|
2578
|
+
"description": "Slides: the image's address and text, and an optional link (ctaLabel + ctaHref)."
|
|
1803
2579
|
},
|
|
1804
2580
|
"label": {
|
|
1805
2581
|
"type": "string",
|
|
1806
2582
|
"required": true,
|
|
2583
|
+
"content": false,
|
|
1807
2584
|
"description": "Accessible name of the carousel."
|
|
1808
2585
|
},
|
|
1809
2586
|
"prevLabel": {
|
|
1810
2587
|
"type": "string",
|
|
2588
|
+
"content": false,
|
|
1811
2589
|
"description": "ui-strings slider.prev."
|
|
1812
2590
|
},
|
|
1813
2591
|
"nextLabel": {
|
|
1814
2592
|
"type": "string",
|
|
2593
|
+
"content": false,
|
|
1815
2594
|
"description": "ui-strings slider.next."
|
|
1816
2595
|
},
|
|
1817
2596
|
"slideLabel": {
|
|
1818
2597
|
"type": "string",
|
|
2598
|
+
"content": false,
|
|
1819
2599
|
"description": "ui-strings slider.slide."
|
|
1820
2600
|
},
|
|
1821
2601
|
"ofLabel": {
|
|
1822
2602
|
"type": "string",
|
|
2603
|
+
"content": false,
|
|
1823
2604
|
"description": "ui-strings slider.of."
|
|
1824
2605
|
},
|
|
1825
2606
|
"loop": {
|
|
1826
2607
|
"type": "boolean",
|
|
1827
2608
|
"default": false,
|
|
2609
|
+
"content": false,
|
|
1828
2610
|
"description": "Wrap from the last slide to the first."
|
|
1829
2611
|
}
|
|
1830
2612
|
},
|
|
@@ -1856,33 +2638,45 @@
|
|
|
1856
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.",
|
|
1857
2639
|
"files": [
|
|
1858
2640
|
"Slider.astro"
|
|
1859
|
-
]
|
|
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
|
+
}
|
|
1860
2651
|
},
|
|
1861
2652
|
{
|
|
1862
|
-
"id": "
|
|
1863
|
-
"name": "
|
|
1864
|
-
"description": "
|
|
1865
|
-
"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",
|
|
1866
2657
|
"uses": [],
|
|
1867
2658
|
"shared": [
|
|
1868
|
-
"
|
|
2659
|
+
"Button.astro",
|
|
2660
|
+
"KitImage.astro",
|
|
2661
|
+
"Section.astro",
|
|
2662
|
+
"types.ts"
|
|
1869
2663
|
],
|
|
1870
2664
|
"variants": {
|
|
1871
|
-
"
|
|
2665
|
+
"imageSide": {
|
|
1872
2666
|
"options": [
|
|
1873
|
-
"
|
|
1874
|
-
"
|
|
2667
|
+
"start",
|
|
2668
|
+
"end"
|
|
1875
2669
|
],
|
|
1876
|
-
"default": "
|
|
1877
|
-
"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."
|
|
1878
2672
|
},
|
|
1879
|
-
"
|
|
2673
|
+
"align": {
|
|
1880
2674
|
"options": [
|
|
1881
|
-
"
|
|
1882
|
-
"
|
|
2675
|
+
"start",
|
|
2676
|
+
"center"
|
|
1883
2677
|
],
|
|
1884
|
-
"default": "
|
|
1885
|
-
"description": "
|
|
2678
|
+
"default": "start",
|
|
2679
|
+
"description": "Alignment of the text block."
|
|
1886
2680
|
},
|
|
1887
2681
|
"tone": {
|
|
1888
2682
|
"options": [
|
|
@@ -1896,39 +2690,450 @@
|
|
|
1896
2690
|
}
|
|
1897
2691
|
},
|
|
1898
2692
|
"props": {
|
|
1899
|
-
"
|
|
1900
|
-
"type": "
|
|
2693
|
+
"heading": {
|
|
2694
|
+
"type": "string",
|
|
2695
|
+
"label": "Heading",
|
|
1901
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",
|
|
1902
2712
|
"items": {
|
|
1903
2713
|
"type": "object",
|
|
1904
2714
|
"fields": {
|
|
1905
2715
|
"label": {
|
|
1906
2716
|
"type": "string",
|
|
1907
|
-
"
|
|
2717
|
+
"label": "Label",
|
|
2718
|
+
"required": true,
|
|
2719
|
+
"description": "The button text."
|
|
1908
2720
|
},
|
|
1909
|
-
"
|
|
1910
|
-
"type": "
|
|
1911
|
-
"
|
|
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."
|
|
1912
2741
|
}
|
|
1913
2742
|
}
|
|
1914
2743
|
},
|
|
1915
|
-
"description": "
|
|
1916
|
-
},
|
|
1917
|
-
"heading": {
|
|
1918
|
-
"type": "string",
|
|
1919
|
-
"description": "Section heading; also names the tab list."
|
|
1920
|
-
},
|
|
1921
|
-
"label": {
|
|
1922
|
-
"type": "string",
|
|
1923
|
-
"description": "Accessible name of the tab list when there is no heading."
|
|
2744
|
+
"description": "Buttons under the text, in order (Elementor button, Gutenberg buttons, Divi button)."
|
|
1924
2745
|
},
|
|
1925
|
-
"
|
|
1926
|
-
"type": "
|
|
1927
|
-
"
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
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
|
+
}
|
|
3134
|
+
},
|
|
3135
|
+
"slots": {},
|
|
3136
|
+
"js": "zag",
|
|
1932
3137
|
"dependencies": {
|
|
1933
3138
|
"@zag-js/tabs": "^1.44.0",
|
|
1934
3139
|
"@zag-js/vanilla": "^1.44.0"
|
|
@@ -1950,6 +3155,136 @@
|
|
|
1950
3155
|
"Tabs.astro"
|
|
1951
3156
|
]
|
|
1952
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
|
+
},
|
|
1953
3288
|
{
|
|
1954
3289
|
"id": "testimonial",
|
|
1955
3290
|
"name": "Testimonial",
|
|
@@ -1959,6 +3294,7 @@
|
|
|
1959
3294
|
"shared": [
|
|
1960
3295
|
"KitImage.astro",
|
|
1961
3296
|
"Section.astro",
|
|
3297
|
+
"image.ts",
|
|
1962
3298
|
"types.ts"
|
|
1963
3299
|
],
|
|
1964
3300
|
"variants": {
|
|
@@ -1984,39 +3320,37 @@
|
|
|
1984
3320
|
"props": {
|
|
1985
3321
|
"items": {
|
|
1986
3322
|
"type": "array",
|
|
3323
|
+
"label": "Testimonials",
|
|
1987
3324
|
"required": true,
|
|
1988
3325
|
"items": {
|
|
1989
3326
|
"type": "object",
|
|
1990
3327
|
"fields": {
|
|
1991
3328
|
"quote": {
|
|
1992
3329
|
"type": "text",
|
|
1993
|
-
"
|
|
3330
|
+
"label": "Quote",
|
|
3331
|
+
"required": true,
|
|
3332
|
+
"description": "What the person said, in their words."
|
|
1994
3333
|
},
|
|
1995
3334
|
"name": {
|
|
1996
3335
|
"type": "string",
|
|
1997
|
-
"
|
|
3336
|
+
"label": "Name",
|
|
3337
|
+
"required": true,
|
|
3338
|
+
"description": "Who said it."
|
|
1998
3339
|
},
|
|
1999
3340
|
"role": {
|
|
2000
|
-
"type": "string"
|
|
3341
|
+
"type": "string",
|
|
3342
|
+
"label": "Role",
|
|
3343
|
+
"description": "Their role or company."
|
|
2001
3344
|
},
|
|
2002
3345
|
"avatar": {
|
|
2003
|
-
"type": "
|
|
2004
|
-
"
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
"required": true
|
|
2012
|
-
},
|
|
2013
|
-
"width": {
|
|
2014
|
-
"type": "integer"
|
|
2015
|
-
},
|
|
2016
|
-
"height": {
|
|
2017
|
-
"type": "integer"
|
|
2018
|
-
}
|
|
2019
|
-
}
|
|
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."
|
|
2020
3354
|
}
|
|
2021
3355
|
}
|
|
2022
3356
|
},
|
|
@@ -2024,10 +3358,12 @@
|
|
|
2024
3358
|
},
|
|
2025
3359
|
"heading": {
|
|
2026
3360
|
"type": "string",
|
|
3361
|
+
"label": "Heading",
|
|
2027
3362
|
"description": "Section heading above the quotes."
|
|
2028
3363
|
},
|
|
2029
3364
|
"id": {
|
|
2030
3365
|
"type": "string",
|
|
3366
|
+
"content": false,
|
|
2031
3367
|
"description": "Anchor id of the section; the heading gets `<id>-title`."
|
|
2032
3368
|
}
|
|
2033
3369
|
},
|
|
@@ -2048,7 +3384,16 @@
|
|
|
2048
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.",
|
|
2049
3385
|
"files": [
|
|
2050
3386
|
"Testimonial.astro"
|
|
2051
|
-
]
|
|
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
|
+
}
|
|
2052
3397
|
}
|
|
2053
3398
|
]
|
|
2054
3399
|
}
|