@taprootio/site-authoring 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +239 -0
  3. package/bin/taproot-site.js +5 -0
  4. package/package.json +40 -0
  5. package/src/api.js +1507 -0
  6. package/src/appearance-contract.js +311 -0
  7. package/src/atomic-file.js +136 -0
  8. package/src/bounded-file.js +59 -0
  9. package/src/capabilities.js +29 -0
  10. package/src/cli.js +872 -0
  11. package/src/config.js +412 -0
  12. package/src/constants.js +173 -0
  13. package/src/content/components.js +870 -0
  14. package/src/content/free-form-section-registry.json +524 -0
  15. package/src/content/free-form-sections.js +582 -0
  16. package/src/content/index.js +29 -0
  17. package/src/content/inline-facts.js +97 -0
  18. package/src/content/markdown.js +1625 -0
  19. package/src/content/tiptap-prosemirror.ts +1266 -0
  20. package/src/content/validate-document.js +1079 -0
  21. package/src/content/vocabulary.js +397 -0
  22. package/src/credentials.js +544 -0
  23. package/src/errors.js +133 -0
  24. package/src/footer-contract.js +687 -0
  25. package/src/footer-draft-hash.js +203 -0
  26. package/src/footer-workspace.js +136 -0
  27. package/src/image-metadata.js +169 -0
  28. package/src/index.js +16 -0
  29. package/src/json-guard.js +111 -0
  30. package/src/output.js +157 -0
  31. package/src/presentation-reference.js +600 -0
  32. package/src/reference-help.js +927 -0
  33. package/src/session.js +316 -0
  34. package/src/settings-catalog.js +187 -0
  35. package/src/settings.js +157 -0
  36. package/src/theme-validation.js +344 -0
  37. package/src/transport.js +777 -0
  38. package/src/verbs/approve.js +178 -0
  39. package/src/verbs/deploy.js +327 -0
  40. package/src/verbs/env.js +89 -0
  41. package/src/verbs/footer-push.js +115 -0
  42. package/src/verbs/index.js +125 -0
  43. package/src/verbs/login.js +529 -0
  44. package/src/verbs/logout.js +39 -0
  45. package/src/verbs/media-upload.js +319 -0
  46. package/src/verbs/nav-push.js +333 -0
  47. package/src/verbs/pages-push.js +990 -0
  48. package/src/verbs/preview-page.js +107 -0
  49. package/src/verbs/preview-revoke.js +56 -0
  50. package/src/verbs/pull.js +727 -0
  51. package/src/verbs/sites.js +57 -0
  52. package/src/verbs/status.js +94 -0
  53. package/src/verbs/theme-push.js +197 -0
  54. package/src/verbs/use.js +129 -0
  55. package/src/verbs/validate.js +477 -0
  56. package/src/verbs/whoami.js +108 -0
  57. package/src/workspace.js +1085 -0
@@ -0,0 +1,524 @@
1
+ {
2
+ "version": 4,
3
+ "section": {
4
+ "nodeType": "section",
5
+ "label": "Section",
6
+ "help": "Group ordinary blocks into a full-bleed theme band with a centered content well and an optional raised surface.",
7
+ "minimumChildren": 1,
8
+ "attrs": {
9
+ "context": {
10
+ "label": "Theme context",
11
+ "help": "Optional context name declared by both the light and dark site themes. Omit it to use the root theme.",
12
+ "type": "identifier",
13
+ "required": false,
14
+ "default": null,
15
+ "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$",
16
+ "maximumLength": 64
17
+ },
18
+ "contentPadding": {
19
+ "label": "Content padding",
20
+ "help": "Standard keeps the shared well and section breathing room; none removes the well cap and padding for edge-to-edge content.",
21
+ "type": "enum",
22
+ "required": false,
23
+ "default": "standard",
24
+ "values": [
25
+ "standard",
26
+ "none"
27
+ ]
28
+ },
29
+ "surface": {
30
+ "label": "Surface",
31
+ "help": "None leaves content on the band; raised uses the default layer-1/shadow-1 esp-box; elevated uses layer-2/shadow-2.",
32
+ "type": "enum",
33
+ "required": false,
34
+ "default": "none",
35
+ "values": [
36
+ "none",
37
+ "raised",
38
+ "elevated"
39
+ ]
40
+ },
41
+ "background": {
42
+ "label": "Photo background",
43
+ "help": "Optional site-owned responsive photograph behind the section band, with normalized focal points and a context-derived readability scrim.",
44
+ "type": "object",
45
+ "required": false,
46
+ "default": null,
47
+ "closed": true,
48
+ "fields": {
49
+ "image": {
50
+ "type": "processed-image",
51
+ "required": true,
52
+ "requiredKeys": [
53
+ "imageId",
54
+ "src",
55
+ "urls"
56
+ ],
57
+ "optionalKeys": [
58
+ "width",
59
+ "height",
60
+ "alt"
61
+ ],
62
+ "urls": {
63
+ "minItems": 1,
64
+ "maxItems": 5,
65
+ "closedItems": true,
66
+ "fields": {
67
+ "minWidth": {
68
+ "type": "integer",
69
+ "required": true,
70
+ "minimum": 1
71
+ },
72
+ "url": {
73
+ "type": "safe-delivery-url",
74
+ "required": true
75
+ },
76
+ "type": {
77
+ "type": "enum",
78
+ "required": false,
79
+ "values": [
80
+ "image/webp"
81
+ ]
82
+ }
83
+ }
84
+ },
85
+ "srcMustMatchUrls": true
86
+ },
87
+ "portraitImage": {
88
+ "type": "processed-image",
89
+ "required": false,
90
+ "default": null,
91
+ "nullable": true,
92
+ "requiredKeys": [
93
+ "imageId",
94
+ "src",
95
+ "urls"
96
+ ],
97
+ "optionalKeys": [
98
+ "width",
99
+ "height",
100
+ "alt"
101
+ ],
102
+ "urls": {
103
+ "minItems": 1,
104
+ "maxItems": 5,
105
+ "closedItems": true,
106
+ "fields": {
107
+ "minWidth": {
108
+ "type": "integer",
109
+ "required": true,
110
+ "minimum": 1
111
+ },
112
+ "url": {
113
+ "type": "safe-delivery-url",
114
+ "required": true
115
+ },
116
+ "type": {
117
+ "type": "enum",
118
+ "required": false,
119
+ "values": [
120
+ "image/webp"
121
+ ]
122
+ }
123
+ }
124
+ },
125
+ "srcMustMatchUrls": true
126
+ },
127
+ "focus": {
128
+ "type": "point",
129
+ "required": false,
130
+ "default": {
131
+ "x": 0.5,
132
+ "y": 0.5
133
+ },
134
+ "closed": true,
135
+ "fields": {
136
+ "x": {
137
+ "type": "number",
138
+ "required": false,
139
+ "default": 0.5,
140
+ "minimum": 0,
141
+ "maximum": 1
142
+ },
143
+ "y": {
144
+ "type": "number",
145
+ "required": false,
146
+ "default": 0.5,
147
+ "minimum": 0,
148
+ "maximum": 1
149
+ }
150
+ }
151
+ },
152
+ "portraitFocus": {
153
+ "type": "point",
154
+ "required": false,
155
+ "default": null,
156
+ "nullable": true,
157
+ "closed": true,
158
+ "fields": {
159
+ "x": {
160
+ "type": "number",
161
+ "required": false,
162
+ "default": 0.5,
163
+ "minimum": 0,
164
+ "maximum": 1
165
+ },
166
+ "y": {
167
+ "type": "number",
168
+ "required": false,
169
+ "default": 0.5,
170
+ "minimum": 0,
171
+ "maximum": 1
172
+ }
173
+ }
174
+ },
175
+ "scrimStrength": {
176
+ "type": "enum",
177
+ "required": false,
178
+ "default": "medium",
179
+ "values": [
180
+ "none",
181
+ "soft",
182
+ "medium",
183
+ "strong"
184
+ ],
185
+ "opacityByValue": {
186
+ "none": 0,
187
+ "soft": 0.28,
188
+ "medium": 0.48,
189
+ "strong": 0.68
190
+ }
191
+ }
192
+ }
193
+ },
194
+ "decoration": {
195
+ "label": "Decoration",
196
+ "help": "Optional site-owned transparent raster used as one theme-tinted alpha mask behind the section well.",
197
+ "type": "object",
198
+ "required": false,
199
+ "default": null,
200
+ "closed": true,
201
+ "fields": {
202
+ "image": {
203
+ "type": "processed-image",
204
+ "required": true,
205
+ "requiredKeys": [
206
+ "imageId",
207
+ "src",
208
+ "urls"
209
+ ],
210
+ "optionalKeys": [
211
+ "width",
212
+ "height",
213
+ "alt"
214
+ ],
215
+ "urls": {
216
+ "minItems": 1,
217
+ "maxItems": 5,
218
+ "closedItems": true,
219
+ "fields": {
220
+ "minWidth": {
221
+ "type": "integer",
222
+ "required": true,
223
+ "minimum": 1
224
+ },
225
+ "url": {
226
+ "type": "safe-delivery-url",
227
+ "required": true
228
+ },
229
+ "type": {
230
+ "type": "enum",
231
+ "required": false,
232
+ "values": [
233
+ "image/webp"
234
+ ]
235
+ }
236
+ }
237
+ },
238
+ "srcMustMatchUrls": true
239
+ },
240
+ "anchor": {
241
+ "type": "enum",
242
+ "required": false,
243
+ "default": "center",
244
+ "values": [
245
+ "top-start",
246
+ "top-end",
247
+ "bottom-start",
248
+ "bottom-end",
249
+ "center"
250
+ ]
251
+ },
252
+ "inlineOffsetPercent": {
253
+ "type": "number",
254
+ "required": false,
255
+ "default": 0,
256
+ "minimum": -50,
257
+ "maximum": 50
258
+ },
259
+ "blockOffsetPercent": {
260
+ "type": "number",
261
+ "required": false,
262
+ "default": 0,
263
+ "minimum": -50,
264
+ "maximum": 50
265
+ },
266
+ "inlineSizePercent": {
267
+ "type": "integer",
268
+ "required": false,
269
+ "default": 40,
270
+ "minimum": 10,
271
+ "maximum": 100
272
+ },
273
+ "opacity": {
274
+ "type": "number",
275
+ "required": false,
276
+ "default": 0.12,
277
+ "minimum": 0,
278
+ "maximum": 1
279
+ },
280
+ "tint": {
281
+ "type": "enum",
282
+ "required": false,
283
+ "default": "heading",
284
+ "values": [
285
+ "accent",
286
+ "heading",
287
+ "text",
288
+ "action",
289
+ "border"
290
+ ],
291
+ "tokenByValue": {
292
+ "accent": "--esp-color-link",
293
+ "heading": "--esp-color-headings",
294
+ "text": "--esp-color-text",
295
+ "action": "--esp-color-action-background",
296
+ "border": "--esp-color-border"
297
+ }
298
+ }
299
+ }
300
+ }
301
+ }
302
+ },
303
+ "table": {
304
+ "nodeTypes": {
305
+ "table": "table",
306
+ "row": "tableRow",
307
+ "header": "tableHeader",
308
+ "cell": "tableCell"
309
+ },
310
+ "attrs": {
311
+ "caption": {
312
+ "label": "Caption",
313
+ "help": "Optional non-empty plain text that names the table; Markdown writes it on the immediately preceding Table: line.",
314
+ "type": "plain-text",
315
+ "required": false,
316
+ "default": null,
317
+ "minScalars": 1,
318
+ "maxScalars": 160
319
+ }
320
+ },
321
+ "rows": {
322
+ "header": 1,
323
+ "minData": 1,
324
+ "maxData": 100
325
+ },
326
+ "columns": {
327
+ "min": 2,
328
+ "max": 12,
329
+ "ragged": false
330
+ },
331
+ "cells": {
332
+ "paragraphs": 1,
333
+ "paragraphAttrs": false,
334
+ "inlineNodes": [
335
+ "text",
336
+ "hardBreak"
337
+ ],
338
+ "marks": [
339
+ "bold",
340
+ "italic",
341
+ "underline",
342
+ "strike",
343
+ "code",
344
+ "link"
345
+ ],
346
+ "maxTextScalars": 1000,
347
+ "headerNonWhitespace": true,
348
+ "spans": false,
349
+ "spanAttrs": [
350
+ "colspan",
351
+ "rowspan",
352
+ "colwidth"
353
+ ]
354
+ },
355
+ "markdown": {
356
+ "captionPrefix": "Table: ",
357
+ "captionImmediate": true,
358
+ "outerPipes": "optional",
359
+ "literalPipeEscape": "\\|",
360
+ "delimiterMinHyphens": 3,
361
+ "alignment": "rejected",
362
+ "blankLineTerminates": true
363
+ },
364
+ "placement": {
365
+ "root": true,
366
+ "section": true,
367
+ "measure": "wide"
368
+ }
369
+ },
370
+ "inlineFacts": {
371
+ "nodeType": "inlineFacts",
372
+ "label": "Inline facts",
373
+ "help": "A compact ordered row of labeled facts whose values may be native links.",
374
+ "attrs": {
375
+ "items": {
376
+ "type": "array",
377
+ "required": true,
378
+ "minItems": 1,
379
+ "maxItems": 6,
380
+ "closedItems": true,
381
+ "fields": {
382
+ "value": {
383
+ "type": "plain-text",
384
+ "required": true,
385
+ "minScalars": 1,
386
+ "maxScalars": 120,
387
+ "nonWhitespace": true
388
+ },
389
+ "label": {
390
+ "type": "plain-text",
391
+ "required": true,
392
+ "minScalars": 1,
393
+ "maxScalars": 120,
394
+ "nonWhitespace": true
395
+ },
396
+ "url": {
397
+ "type": "safe-url",
398
+ "required": false,
399
+ "default": null,
400
+ "schemes": [
401
+ "http",
402
+ "https",
403
+ "mailto",
404
+ "tel"
405
+ ]
406
+ }
407
+ }
408
+ }
409
+ },
410
+ "markdown": {
411
+ "fence": "inline-facts",
412
+ "body": "json-array"
413
+ },
414
+ "placement": {
415
+ "root": true,
416
+ "section": true,
417
+ "measure": "wide"
418
+ }
419
+ },
420
+ "rootNodes": {
421
+ "paragraph": {
422
+ "label": "Paragraph",
423
+ "measure": "prose",
424
+ "placement": "flow"
425
+ },
426
+ "heading": {
427
+ "label": "Heading",
428
+ "measure": "prose",
429
+ "placement": "flow"
430
+ },
431
+ "bulletList": {
432
+ "label": "Bullet list",
433
+ "measure": "prose",
434
+ "placement": "flow"
435
+ },
436
+ "orderedList": {
437
+ "label": "Ordered list",
438
+ "measure": "prose",
439
+ "placement": "flow"
440
+ },
441
+ "blockquote": {
442
+ "label": "Blockquote",
443
+ "measure": "prose",
444
+ "placement": "flow"
445
+ },
446
+ "codeBlock": {
447
+ "label": "Code block",
448
+ "measure": "prose",
449
+ "placement": "flow"
450
+ },
451
+ "horizontalRule": {
452
+ "label": "Horizontal rule",
453
+ "measure": "wide",
454
+ "placement": "flow"
455
+ },
456
+ "taprootImage": {
457
+ "label": "Image",
458
+ "measure": "wide",
459
+ "placement": "flow"
460
+ },
461
+ "rawHtml": {
462
+ "label": "Raw HTML",
463
+ "measure": "wide",
464
+ "placement": "flow"
465
+ },
466
+ "table": {
467
+ "label": "Table",
468
+ "measure": "wide",
469
+ "placement": "flow"
470
+ },
471
+ "inlineFacts": {
472
+ "label": "Inline facts",
473
+ "measure": "wide",
474
+ "placement": "flow"
475
+ },
476
+ "section": {
477
+ "label": "Section",
478
+ "measure": "wide",
479
+ "placement": "explicit-band"
480
+ }
481
+ },
482
+ "components": {
483
+ "hero-section": {
484
+ "label": "Hero Section",
485
+ "measure": "wide",
486
+ "rootPlacement": "flow"
487
+ },
488
+ "cta": {
489
+ "label": "Call to Action",
490
+ "measure": "wide",
491
+ "rootPlacement": "flow"
492
+ },
493
+ "testimonial": {
494
+ "label": "Testimonials",
495
+ "measure": "wide",
496
+ "rootPlacement": "flow"
497
+ },
498
+ "feature-grid": {
499
+ "label": "Feature Grid",
500
+ "measure": "wide",
501
+ "rootPlacement": "flow"
502
+ },
503
+ "spacer": {
504
+ "label": "Spacer",
505
+ "measure": "wide",
506
+ "rootPlacement": "flow"
507
+ },
508
+ "latest-posts": {
509
+ "label": "Latest Posts",
510
+ "measure": "wide",
511
+ "rootPlacement": "flow"
512
+ },
513
+ "card-grid": {
514
+ "label": "Card Grid",
515
+ "measure": "wide",
516
+ "rootPlacement": "flow"
517
+ },
518
+ "image-banner": {
519
+ "label": "Image Banner",
520
+ "measure": "wide",
521
+ "rootPlacement": "root-band"
522
+ }
523
+ }
524
+ }