@janga/norna 0.7.8 → 0.7.9

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.
Files changed (70) hide show
  1. package/docs/README.md +4 -0
  2. package/docs/design/norna-diagram-design.md +156 -0
  3. package/examples/typography-presets/.astro/collections/site.schema.json +776 -0
  4. package/examples/typography-presets/.astro/collections/theme.schema.json +668 -0
  5. package/examples/typography-presets/.astro/content-assets.mjs +4 -0
  6. package/examples/typography-presets/.astro/content-modules.mjs +1 -0
  7. package/examples/typography-presets/.astro/content.d.ts +175 -0
  8. package/examples/typography-presets/.astro/data-store.json +1 -0
  9. package/examples/typography-presets/.astro/dev-local.json +8 -0
  10. package/examples/typography-presets/.astro/dev.json +15 -0
  11. package/examples/typography-presets/.astro/dev.log +24 -0
  12. package/examples/typography-presets/.astro/settings.json +5 -0
  13. package/examples/typography-presets/.astro/types.d.ts +2 -0
  14. package/examples/typography-presets/node_modules/.vite/deps/_metadata.json +80 -0
  15. package/examples/typography-presets/node_modules/.vite/deps/astro-D_GIpJIE.js +434 -0
  16. package/examples/typography-presets/node_modules/.vite/deps/astro-D_GIpJIE.js.map +1 -0
  17. package/examples/typography-presets/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
  18. package/examples/typography-presets/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
  19. package/examples/typography-presets/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
  20. package/examples/typography-presets/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
  21. package/examples/typography-presets/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
  22. package/examples/typography-presets/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
  23. package/examples/typography-presets/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
  24. package/examples/typography-presets/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
  25. package/examples/typography-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js +1534 -0
  26. package/examples/typography-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +1 -0
  27. package/examples/typography-presets/node_modules/.vite/deps/embla-carousel.js +1389 -0
  28. package/examples/typography-presets/node_modules/.vite/deps/embla-carousel.js.map +1 -0
  29. package/examples/typography-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js +48 -0
  30. package/examples/typography-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +1 -0
  31. package/examples/typography-presets/node_modules/.vite/deps/icons-RyebKi45.js +42 -0
  32. package/examples/typography-presets/node_modules/.vite/deps/icons-RyebKi45.js.map +1 -0
  33. package/examples/typography-presets/node_modules/.vite/deps/package.json +3 -0
  34. package/examples/typography-presets/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
  35. package/examples/typography-presets/node_modules/.vite/deps/settings-DaU-gNnK.js +190 -0
  36. package/examples/typography-presets/node_modules/.vite/deps/settings-DaU-gNnK.js.map +1 -0
  37. package/examples/typography-presets/node_modules/.vite/deps/toolbar-63PA619H.js +458 -0
  38. package/examples/typography-presets/node_modules/.vite/deps/toolbar-63PA619H.js.map +1 -0
  39. package/examples/typography-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js +1016 -0
  40. package/examples/typography-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +1 -0
  41. package/examples/typography-presets/node_modules/.vite/deps/window-jPkpKVcy.js +32 -0
  42. package/examples/typography-presets/node_modules/.vite/deps/window-jPkpKVcy.js.map +1 -0
  43. package/examples/typography-presets/node_modules/.vite/deps/xray-BXCHpEJP.js +111 -0
  44. package/examples/typography-presets/node_modules/.vite/deps/xray-BXCHpEJP.js.map +1 -0
  45. package/examples/typography-presets/site/.norna/generated-images.json +290 -0
  46. package/examples/typography-presets/site/config.mjs +42 -0
  47. package/examples/typography-presets/site/content.md +134 -0
  48. package/examples/typography-presets/site/images/compact-gallery/black-schnauzer.jpg +0 -0
  49. package/examples/typography-presets/site/images/compact-gallery/retriever-portrait.jpg +0 -0
  50. package/examples/typography-presets/site/images/compact-gallery/schnauzer-portrait.jpg +0 -0
  51. package/examples/typography-presets/site/images/quiet-gallery/puppy-portrait.jpg +0 -0
  52. package/examples/typography-presets/site/images/quiet-gallery/shepherd-portrait.jpg +0 -0
  53. package/examples/typography-presets/site/images/quiet-gallery/white-puppy.jpg +0 -0
  54. package/examples/typography-presets/site/images/statement/black-pedigree.jpg +0 -0
  55. package/examples/typography-presets/site/images/statement/sheepdog-grass.jpg +0 -0
  56. package/examples/typography-presets/site/images/statement/sheepdog-wide.jpg +0 -0
  57. package/examples/typography-presets/site/images/text-forward/boxer-portrait.jpg +0 -0
  58. package/examples/typography-presets/site/images/text-forward/grass-puppy.jpg +0 -0
  59. package/examples/typography-presets/site/images/text-forward/grey-street-dog.jpg +0 -0
  60. package/examples/typography-presets/site/public/robots.txt +2 -0
  61. package/examples/typography-presets/site/theme.md +43 -0
  62. package/package.json +1 -1
  63. package/scripts/lib/site-content.mjs +76 -0
  64. package/scripts/lib/theme-config.mjs +2 -0
  65. package/scripts/sync-content-sections.mjs +3 -0
  66. package/scripts/test-content-check.mjs +30 -0
  67. package/scripts/test-package-check.mjs +17 -0
  68. package/src/components/SiteSection.astro +1 -1
  69. package/src/lib/sectionContent.ts +10 -2
  70. package/src/styles/global.css +1 -1
@@ -0,0 +1,776 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "title": {
6
+ "type": "string"
7
+ },
8
+ "description": {
9
+ "type": "string"
10
+ },
11
+ "navigation": {
12
+ "type": "object",
13
+ "properties": {
14
+ "include": {
15
+ "type": "boolean"
16
+ },
17
+ "label": {
18
+ "type": "string"
19
+ }
20
+ },
21
+ "additionalProperties": false
22
+ },
23
+ "presentation": {
24
+ "type": "object",
25
+ "properties": {
26
+ "backgroundColor": {
27
+ "type": "string",
28
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
29
+ },
30
+ "textColor": {
31
+ "type": "string",
32
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
33
+ },
34
+ "typography": {
35
+ "type": "object",
36
+ "properties": {
37
+ "preset": {
38
+ "type": "string",
39
+ "enum": [
40
+ "quiet-gallery",
41
+ "compact-gallery",
42
+ "text-forward",
43
+ "statement"
44
+ ]
45
+ },
46
+ "rhythm": {
47
+ "type": "string",
48
+ "enum": [
49
+ "compact",
50
+ "normal",
51
+ "airy"
52
+ ]
53
+ },
54
+ "overrides": {
55
+ "type": "object",
56
+ "properties": {
57
+ "headings": {
58
+ "type": "object",
59
+ "properties": {
60
+ "h1": {
61
+ "type": "object",
62
+ "properties": {
63
+ "align": {
64
+ "type": "object",
65
+ "properties": {
66
+ "desktop": {
67
+ "type": "string",
68
+ "enum": [
69
+ "left",
70
+ "center",
71
+ "right"
72
+ ]
73
+ },
74
+ "mobile": {
75
+ "type": "string",
76
+ "enum": [
77
+ "left",
78
+ "center",
79
+ "right"
80
+ ]
81
+ }
82
+ },
83
+ "additionalProperties": false
84
+ },
85
+ "size": {
86
+ "type": "string",
87
+ "enum": [
88
+ "small",
89
+ "medium",
90
+ "large",
91
+ "xlarge"
92
+ ]
93
+ },
94
+ "lineHeight": {
95
+ "type": "number",
96
+ "minimum": 1,
97
+ "maximum": 3
98
+ },
99
+ "spacingBefore": {
100
+ "type": "string",
101
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
102
+ },
103
+ "spacingAfter": {
104
+ "type": "string",
105
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
106
+ }
107
+ },
108
+ "additionalProperties": false
109
+ },
110
+ "h2": {
111
+ "type": "object",
112
+ "properties": {
113
+ "align": {
114
+ "type": "object",
115
+ "properties": {
116
+ "desktop": {
117
+ "type": "string",
118
+ "enum": [
119
+ "left",
120
+ "center",
121
+ "right"
122
+ ]
123
+ },
124
+ "mobile": {
125
+ "type": "string",
126
+ "enum": [
127
+ "left",
128
+ "center",
129
+ "right"
130
+ ]
131
+ }
132
+ },
133
+ "additionalProperties": false
134
+ },
135
+ "size": {
136
+ "type": "string",
137
+ "enum": [
138
+ "small",
139
+ "medium",
140
+ "large",
141
+ "xlarge"
142
+ ]
143
+ },
144
+ "lineHeight": {
145
+ "type": "number",
146
+ "minimum": 1,
147
+ "maximum": 3
148
+ },
149
+ "spacingBefore": {
150
+ "type": "string",
151
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
152
+ },
153
+ "spacingAfter": {
154
+ "type": "string",
155
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
156
+ }
157
+ },
158
+ "additionalProperties": false
159
+ },
160
+ "h3": {
161
+ "type": "object",
162
+ "properties": {
163
+ "align": {
164
+ "type": "object",
165
+ "properties": {
166
+ "desktop": {
167
+ "type": "string",
168
+ "enum": [
169
+ "left",
170
+ "center",
171
+ "right"
172
+ ]
173
+ },
174
+ "mobile": {
175
+ "type": "string",
176
+ "enum": [
177
+ "left",
178
+ "center",
179
+ "right"
180
+ ]
181
+ }
182
+ },
183
+ "additionalProperties": false
184
+ },
185
+ "size": {
186
+ "type": "string",
187
+ "enum": [
188
+ "small",
189
+ "medium",
190
+ "large",
191
+ "xlarge"
192
+ ]
193
+ },
194
+ "lineHeight": {
195
+ "type": "number",
196
+ "minimum": 1,
197
+ "maximum": 3
198
+ },
199
+ "spacingBefore": {
200
+ "type": "string",
201
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
202
+ },
203
+ "spacingAfter": {
204
+ "type": "string",
205
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
206
+ }
207
+ },
208
+ "additionalProperties": false
209
+ },
210
+ "h4": {
211
+ "type": "object",
212
+ "properties": {
213
+ "align": {
214
+ "type": "object",
215
+ "properties": {
216
+ "desktop": {
217
+ "type": "string",
218
+ "enum": [
219
+ "left",
220
+ "center",
221
+ "right"
222
+ ]
223
+ },
224
+ "mobile": {
225
+ "type": "string",
226
+ "enum": [
227
+ "left",
228
+ "center",
229
+ "right"
230
+ ]
231
+ }
232
+ },
233
+ "additionalProperties": false
234
+ },
235
+ "size": {
236
+ "type": "string",
237
+ "enum": [
238
+ "small",
239
+ "medium",
240
+ "large",
241
+ "xlarge"
242
+ ]
243
+ },
244
+ "lineHeight": {
245
+ "type": "number",
246
+ "minimum": 1,
247
+ "maximum": 3
248
+ },
249
+ "spacingBefore": {
250
+ "type": "string",
251
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
252
+ },
253
+ "spacingAfter": {
254
+ "type": "string",
255
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
256
+ }
257
+ },
258
+ "additionalProperties": false
259
+ }
260
+ },
261
+ "additionalProperties": false
262
+ },
263
+ "body": {
264
+ "type": "object",
265
+ "properties": {
266
+ "align": {
267
+ "type": "object",
268
+ "properties": {
269
+ "desktop": {
270
+ "type": "string",
271
+ "enum": [
272
+ "left",
273
+ "center",
274
+ "right"
275
+ ]
276
+ },
277
+ "mobile": {
278
+ "type": "string",
279
+ "enum": [
280
+ "left",
281
+ "center",
282
+ "right"
283
+ ]
284
+ }
285
+ },
286
+ "additionalProperties": false
287
+ },
288
+ "size": {
289
+ "type": "string",
290
+ "enum": [
291
+ "small",
292
+ "medium",
293
+ "large",
294
+ "xlarge"
295
+ ]
296
+ },
297
+ "lineHeight": {
298
+ "type": "number",
299
+ "minimum": 1,
300
+ "maximum": 3
301
+ },
302
+ "paragraphSpacing": {
303
+ "type": "string",
304
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
305
+ }
306
+ },
307
+ "additionalProperties": false
308
+ },
309
+ "caption": {
310
+ "type": "object",
311
+ "properties": {
312
+ "align": {
313
+ "type": "object",
314
+ "properties": {
315
+ "desktop": {
316
+ "type": "string",
317
+ "enum": [
318
+ "left",
319
+ "center",
320
+ "right"
321
+ ]
322
+ },
323
+ "mobile": {
324
+ "type": "string",
325
+ "enum": [
326
+ "left",
327
+ "center",
328
+ "right"
329
+ ]
330
+ }
331
+ },
332
+ "additionalProperties": false
333
+ },
334
+ "size": {
335
+ "type": "string",
336
+ "enum": [
337
+ "small",
338
+ "medium",
339
+ "large",
340
+ "xlarge"
341
+ ]
342
+ },
343
+ "lineHeight": {
344
+ "type": "number",
345
+ "minimum": 1,
346
+ "maximum": 3
347
+ },
348
+ "spacingBefore": {
349
+ "type": "string",
350
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
351
+ }
352
+ },
353
+ "additionalProperties": false
354
+ }
355
+ },
356
+ "additionalProperties": false
357
+ }
358
+ },
359
+ "additionalProperties": false
360
+ }
361
+ },
362
+ "additionalProperties": false
363
+ },
364
+ "frame": {
365
+ "type": "object",
366
+ "properties": {
367
+ "colors": {
368
+ "anyOf": [
369
+ {
370
+ "type": "string",
371
+ "enum": [
372
+ "theme",
373
+ "presentation"
374
+ ]
375
+ },
376
+ {
377
+ "type": "object",
378
+ "properties": {
379
+ "backgroundColor": {
380
+ "type": "string",
381
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
382
+ },
383
+ "textColor": {
384
+ "type": "string",
385
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
386
+ }
387
+ },
388
+ "required": [
389
+ "backgroundColor",
390
+ "textColor"
391
+ ],
392
+ "additionalProperties": false
393
+ }
394
+ ]
395
+ }
396
+ },
397
+ "additionalProperties": false
398
+ },
399
+ "sections": {
400
+ "default": {},
401
+ "type": "object",
402
+ "propertyNames": {
403
+ "type": "string",
404
+ "pattern": "^[a-z0-9-]+$"
405
+ },
406
+ "additionalProperties": {
407
+ "type": "object",
408
+ "properties": {
409
+ "visible": {
410
+ "type": "object",
411
+ "properties": {
412
+ "from": {
413
+ "type": "string",
414
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
415
+ },
416
+ "until": {
417
+ "type": "string",
418
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
419
+ }
420
+ },
421
+ "additionalProperties": false
422
+ },
423
+ "presentation": {
424
+ "type": "object",
425
+ "properties": {
426
+ "backgroundColor": {
427
+ "type": "string",
428
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
429
+ },
430
+ "textColor": {
431
+ "type": "string",
432
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
433
+ },
434
+ "typography": {
435
+ "type": "object",
436
+ "properties": {
437
+ "preset": {
438
+ "type": "string",
439
+ "enum": [
440
+ "quiet-gallery",
441
+ "compact-gallery",
442
+ "text-forward",
443
+ "statement"
444
+ ]
445
+ },
446
+ "rhythm": {
447
+ "type": "string",
448
+ "enum": [
449
+ "compact",
450
+ "normal",
451
+ "airy"
452
+ ]
453
+ },
454
+ "overrides": {
455
+ "type": "object",
456
+ "properties": {
457
+ "headings": {
458
+ "type": "object",
459
+ "properties": {
460
+ "h1": {
461
+ "type": "object",
462
+ "properties": {
463
+ "align": {
464
+ "type": "object",
465
+ "properties": {
466
+ "desktop": {
467
+ "type": "string",
468
+ "enum": [
469
+ "left",
470
+ "center",
471
+ "right"
472
+ ]
473
+ },
474
+ "mobile": {
475
+ "type": "string",
476
+ "enum": [
477
+ "left",
478
+ "center",
479
+ "right"
480
+ ]
481
+ }
482
+ },
483
+ "additionalProperties": false
484
+ },
485
+ "size": {
486
+ "type": "string",
487
+ "enum": [
488
+ "small",
489
+ "medium",
490
+ "large",
491
+ "xlarge"
492
+ ]
493
+ },
494
+ "lineHeight": {
495
+ "type": "number",
496
+ "minimum": 1,
497
+ "maximum": 3
498
+ },
499
+ "spacingBefore": {
500
+ "type": "string",
501
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
502
+ },
503
+ "spacingAfter": {
504
+ "type": "string",
505
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
506
+ }
507
+ },
508
+ "additionalProperties": false
509
+ },
510
+ "h2": {
511
+ "type": "object",
512
+ "properties": {
513
+ "align": {
514
+ "type": "object",
515
+ "properties": {
516
+ "desktop": {
517
+ "type": "string",
518
+ "enum": [
519
+ "left",
520
+ "center",
521
+ "right"
522
+ ]
523
+ },
524
+ "mobile": {
525
+ "type": "string",
526
+ "enum": [
527
+ "left",
528
+ "center",
529
+ "right"
530
+ ]
531
+ }
532
+ },
533
+ "additionalProperties": false
534
+ },
535
+ "size": {
536
+ "type": "string",
537
+ "enum": [
538
+ "small",
539
+ "medium",
540
+ "large",
541
+ "xlarge"
542
+ ]
543
+ },
544
+ "lineHeight": {
545
+ "type": "number",
546
+ "minimum": 1,
547
+ "maximum": 3
548
+ },
549
+ "spacingBefore": {
550
+ "type": "string",
551
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
552
+ },
553
+ "spacingAfter": {
554
+ "type": "string",
555
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
556
+ }
557
+ },
558
+ "additionalProperties": false
559
+ },
560
+ "h3": {
561
+ "type": "object",
562
+ "properties": {
563
+ "align": {
564
+ "type": "object",
565
+ "properties": {
566
+ "desktop": {
567
+ "type": "string",
568
+ "enum": [
569
+ "left",
570
+ "center",
571
+ "right"
572
+ ]
573
+ },
574
+ "mobile": {
575
+ "type": "string",
576
+ "enum": [
577
+ "left",
578
+ "center",
579
+ "right"
580
+ ]
581
+ }
582
+ },
583
+ "additionalProperties": false
584
+ },
585
+ "size": {
586
+ "type": "string",
587
+ "enum": [
588
+ "small",
589
+ "medium",
590
+ "large",
591
+ "xlarge"
592
+ ]
593
+ },
594
+ "lineHeight": {
595
+ "type": "number",
596
+ "minimum": 1,
597
+ "maximum": 3
598
+ },
599
+ "spacingBefore": {
600
+ "type": "string",
601
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
602
+ },
603
+ "spacingAfter": {
604
+ "type": "string",
605
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
606
+ }
607
+ },
608
+ "additionalProperties": false
609
+ },
610
+ "h4": {
611
+ "type": "object",
612
+ "properties": {
613
+ "align": {
614
+ "type": "object",
615
+ "properties": {
616
+ "desktop": {
617
+ "type": "string",
618
+ "enum": [
619
+ "left",
620
+ "center",
621
+ "right"
622
+ ]
623
+ },
624
+ "mobile": {
625
+ "type": "string",
626
+ "enum": [
627
+ "left",
628
+ "center",
629
+ "right"
630
+ ]
631
+ }
632
+ },
633
+ "additionalProperties": false
634
+ },
635
+ "size": {
636
+ "type": "string",
637
+ "enum": [
638
+ "small",
639
+ "medium",
640
+ "large",
641
+ "xlarge"
642
+ ]
643
+ },
644
+ "lineHeight": {
645
+ "type": "number",
646
+ "minimum": 1,
647
+ "maximum": 3
648
+ },
649
+ "spacingBefore": {
650
+ "type": "string",
651
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
652
+ },
653
+ "spacingAfter": {
654
+ "type": "string",
655
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
656
+ }
657
+ },
658
+ "additionalProperties": false
659
+ }
660
+ },
661
+ "additionalProperties": false
662
+ },
663
+ "body": {
664
+ "type": "object",
665
+ "properties": {
666
+ "align": {
667
+ "type": "object",
668
+ "properties": {
669
+ "desktop": {
670
+ "type": "string",
671
+ "enum": [
672
+ "left",
673
+ "center",
674
+ "right"
675
+ ]
676
+ },
677
+ "mobile": {
678
+ "type": "string",
679
+ "enum": [
680
+ "left",
681
+ "center",
682
+ "right"
683
+ ]
684
+ }
685
+ },
686
+ "additionalProperties": false
687
+ },
688
+ "size": {
689
+ "type": "string",
690
+ "enum": [
691
+ "small",
692
+ "medium",
693
+ "large",
694
+ "xlarge"
695
+ ]
696
+ },
697
+ "lineHeight": {
698
+ "type": "number",
699
+ "minimum": 1,
700
+ "maximum": 3
701
+ },
702
+ "paragraphSpacing": {
703
+ "type": "string",
704
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
705
+ }
706
+ },
707
+ "additionalProperties": false
708
+ },
709
+ "caption": {
710
+ "type": "object",
711
+ "properties": {
712
+ "align": {
713
+ "type": "object",
714
+ "properties": {
715
+ "desktop": {
716
+ "type": "string",
717
+ "enum": [
718
+ "left",
719
+ "center",
720
+ "right"
721
+ ]
722
+ },
723
+ "mobile": {
724
+ "type": "string",
725
+ "enum": [
726
+ "left",
727
+ "center",
728
+ "right"
729
+ ]
730
+ }
731
+ },
732
+ "additionalProperties": false
733
+ },
734
+ "size": {
735
+ "type": "string",
736
+ "enum": [
737
+ "small",
738
+ "medium",
739
+ "large",
740
+ "xlarge"
741
+ ]
742
+ },
743
+ "lineHeight": {
744
+ "type": "number",
745
+ "minimum": 1,
746
+ "maximum": 3
747
+ },
748
+ "spacingBefore": {
749
+ "type": "string",
750
+ "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$"
751
+ }
752
+ },
753
+ "additionalProperties": false
754
+ }
755
+ },
756
+ "additionalProperties": false
757
+ }
758
+ },
759
+ "additionalProperties": false
760
+ }
761
+ },
762
+ "additionalProperties": false
763
+ }
764
+ },
765
+ "additionalProperties": false
766
+ }
767
+ },
768
+ "$schema": {
769
+ "type": "string"
770
+ }
771
+ },
772
+ "required": [
773
+ "title",
774
+ "description"
775
+ ]
776
+ }