mdorigin 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 (42) hide show
  1. package/README.md +29 -0
  2. package/dist/adapters/cloudflare.d.ts +17 -0
  3. package/dist/adapters/cloudflare.js +53 -0
  4. package/dist/adapters/node.d.ts +11 -0
  5. package/dist/adapters/node.js +115 -0
  6. package/dist/cli/build-cloudflare.d.ts +1 -0
  7. package/dist/cli/build-cloudflare.js +48 -0
  8. package/dist/cli/build-index.d.ts +1 -0
  9. package/dist/cli/build-index.js +35 -0
  10. package/dist/cli/dev.d.ts +1 -0
  11. package/dist/cli/dev.js +53 -0
  12. package/dist/cli/init-cloudflare.d.ts +1 -0
  13. package/dist/cli/init-cloudflare.js +59 -0
  14. package/dist/cli/main.d.ts +1 -0
  15. package/dist/cli/main.js +38 -0
  16. package/dist/cloudflare-runtime.d.ts +2 -0
  17. package/dist/cloudflare-runtime.js +1 -0
  18. package/dist/cloudflare.d.ts +31 -0
  19. package/dist/cloudflare.js +130 -0
  20. package/dist/core/content-store.d.ts +27 -0
  21. package/dist/core/content-store.js +95 -0
  22. package/dist/core/content-type.d.ts +9 -0
  23. package/dist/core/content-type.js +19 -0
  24. package/dist/core/directory-index.d.ts +2 -0
  25. package/dist/core/directory-index.js +5 -0
  26. package/dist/core/markdown.d.ts +20 -0
  27. package/dist/core/markdown.js +135 -0
  28. package/dist/core/request-handler.d.ts +12 -0
  29. package/dist/core/request-handler.js +322 -0
  30. package/dist/core/router.d.ts +7 -0
  31. package/dist/core/router.js +82 -0
  32. package/dist/core/site-config.d.ts +38 -0
  33. package/dist/core/site-config.js +123 -0
  34. package/dist/html/template-kind.d.ts +1 -0
  35. package/dist/html/template-kind.js +1 -0
  36. package/dist/html/template.d.ts +19 -0
  37. package/dist/html/template.js +67 -0
  38. package/dist/html/theme.d.ts +2 -0
  39. package/dist/html/theme.js +608 -0
  40. package/dist/index-builder.d.ts +13 -0
  41. package/dist/index-builder.js +299 -0
  42. package/package.json +66 -0
@@ -0,0 +1,608 @@
1
+ export function getBuiltInThemeStyles(theme) {
2
+ switch (theme) {
3
+ case 'atlas':
4
+ return buildAtlasThemeStyles();
5
+ case 'gazette':
6
+ return buildGazetteThemeStyles();
7
+ case 'paper':
8
+ default:
9
+ return buildPaperThemeStyles();
10
+ }
11
+ }
12
+ function buildPaperThemeStyles() {
13
+ return `
14
+ :root {
15
+ color-scheme: light;
16
+ --bg: #f7f4ee;
17
+ --surface: #fffdf9;
18
+ --text: #1c1a17;
19
+ --muted: #6d655c;
20
+ --border: #ddd3c4;
21
+ --link: #7a3d16;
22
+ --link-hover: #57290f;
23
+ --code-bg: #f1ece3;
24
+ --quote: #8e7f6d;
25
+ --max: 46rem;
26
+ }
27
+ * { box-sizing: border-box; }
28
+ html { font-size: 18px; }
29
+ body {
30
+ margin: 0;
31
+ background:
32
+ radial-gradient(circle at top, rgba(255,255,255,0.95), transparent 40%),
33
+ linear-gradient(180deg, #f3eee4 0%, var(--bg) 100%);
34
+ color: var(--text);
35
+ font-family: Charter, "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;
36
+ line-height: 1.75;
37
+ }
38
+ a { color: var(--link); text-decoration-thickness: 0.08em; text-underline-offset: 0.14em; }
39
+ a:hover { color: var(--link-hover); }
40
+ .site-header {
41
+ max-width: calc(var(--max) + 4rem);
42
+ margin: 0 auto;
43
+ padding: 1.25rem 2rem 0;
44
+ }
45
+ .site-header__inner {
46
+ display: grid;
47
+ grid-template-columns: minmax(0, 1fr) auto;
48
+ gap: 0.75rem 1.75rem;
49
+ align-items: end;
50
+ }
51
+ .site-header__brand { min-width: 0; }
52
+ .site-header__title { margin: 0; }
53
+ .site-header__brand span {
54
+ display: block;
55
+ margin-top: 0.3rem;
56
+ color: var(--muted);
57
+ font-size: 0.95rem;
58
+ }
59
+ .site-header__title a {
60
+ display: inline-block;
61
+ color: var(--muted);
62
+ text-decoration: none;
63
+ font-size: 0.92rem;
64
+ letter-spacing: 0.06em;
65
+ text-transform: uppercase;
66
+ }
67
+ .site-nav ul {
68
+ list-style: none;
69
+ display: flex;
70
+ flex-wrap: wrap;
71
+ gap: 0.9rem;
72
+ margin: 0;
73
+ padding: 0;
74
+ align-items: center;
75
+ justify-content: flex-end;
76
+ }
77
+ .site-nav {
78
+ min-width: 0;
79
+ }
80
+ .site-nav li {
81
+ display: flex;
82
+ align-items: center;
83
+ margin: 0;
84
+ }
85
+ .site-nav li + li {
86
+ margin-top: 0;
87
+ }
88
+ .site-nav a {
89
+ color: var(--text);
90
+ text-decoration: none;
91
+ font-size: 0.95rem;
92
+ font-weight: 600;
93
+ text-transform: none;
94
+ letter-spacing: 0;
95
+ display: inline-flex;
96
+ align-items: center;
97
+ min-height: 2rem;
98
+ padding: 0 0.1rem;
99
+ }
100
+ .site-nav a:hover { text-decoration: underline; }
101
+ main {
102
+ max-width: calc(var(--max) + 4rem);
103
+ margin: 0 auto;
104
+ padding: 1.25rem 2rem 4rem;
105
+ }
106
+ article {
107
+ background: color-mix(in srgb, var(--surface) 92%, white 8%);
108
+ border: 1px solid var(--border);
109
+ border-radius: 22px;
110
+ padding: 2.5rem;
111
+ box-shadow: 0 16px 40px rgba(52, 41, 29, 0.07);
112
+ }
113
+ article > p:first-child {
114
+ margin-top: 0;
115
+ color: var(--muted);
116
+ font-size: 0.95rem;
117
+ font-weight: 600;
118
+ }
119
+ h1, h2, h3, h4 { line-height: 1.15; letter-spacing: -0.02em; margin: 2rem 0 0.8rem; }
120
+ h1 { font-size: clamp(2.1rem, 5vw, 3.2rem); margin-top: 0.2rem; }
121
+ h2 { font-size: 1.45rem; }
122
+ h3 { font-size: 1.15rem; }
123
+ p, ul, ol, pre, table, blockquote { margin: 1rem 0; }
124
+ ul, ol { padding-left: 1.3rem; }
125
+ li + li { margin-top: 0.35rem; }
126
+ img { max-width: 100%; height: auto; border-radius: 12px; }
127
+ pre, code { font-family: "SFMono-Regular", "SF Mono", Consolas, "Liberation Mono", Menlo, monospace; }
128
+ code {
129
+ background: var(--code-bg);
130
+ border-radius: 0.35rem;
131
+ padding: 0.12rem 0.35rem;
132
+ font-size: 0.9em;
133
+ }
134
+ pre {
135
+ background: #201c17;
136
+ color: #f8f3ea;
137
+ padding: 1rem 1.15rem;
138
+ border-radius: 14px;
139
+ overflow-x: auto;
140
+ }
141
+ pre code { background: transparent; padding: 0; color: inherit; }
142
+ blockquote {
143
+ margin-left: 0;
144
+ padding: 0.2rem 0 0.2rem 1rem;
145
+ border-left: 3px solid var(--border);
146
+ color: var(--quote);
147
+ }
148
+ table {
149
+ width: 100%;
150
+ border-collapse: collapse;
151
+ font-size: 0.95rem;
152
+ }
153
+ th, td {
154
+ text-align: left;
155
+ border-bottom: 1px solid var(--border);
156
+ padding: 0.6rem 0.4rem;
157
+ }
158
+ hr { border: none; border-top: 1px solid var(--border); margin: 2rem 0; }
159
+ @media (max-width: 720px) {
160
+ html { font-size: 17px; }
161
+ .site-header, main { padding-left: 1rem; padding-right: 1rem; }
162
+ .site-header__inner {
163
+ grid-template-columns: 1fr;
164
+ align-items: start;
165
+ }
166
+ .site-nav {
167
+ margin-top: 0.8rem;
168
+ padding-top: 0.8rem;
169
+ border-top: 1px solid var(--border);
170
+ }
171
+ .site-nav ul { margin-top: 0; }
172
+ .site-nav ul { justify-content: flex-start; }
173
+ article { padding: 1.3rem; border-radius: 16px; }
174
+ }
175
+
176
+ body[data-template="editorial"] article {
177
+ padding-top: 2rem;
178
+ }
179
+ body[data-template="editorial"] .page-intro {
180
+ margin-bottom: 2rem;
181
+ padding-bottom: 1.2rem;
182
+ border-bottom: 1px solid var(--border);
183
+ }
184
+ body[data-template="editorial"] .page-intro__eyebrow {
185
+ margin: 0 0 0.5rem;
186
+ color: var(--muted);
187
+ font-size: 0.8rem;
188
+ letter-spacing: 0.08em;
189
+ text-transform: uppercase;
190
+ }
191
+ body[data-template="editorial"] .page-intro__title {
192
+ margin: 0;
193
+ }
194
+ body[data-template="editorial"] .page-intro__summary {
195
+ font-size: 1.05rem;
196
+ color: var(--muted);
197
+ }
198
+ body[data-template="editorial"] .page-intro__meta {
199
+ color: var(--muted);
200
+ font-size: 0.9rem;
201
+ }
202
+ `.trim();
203
+ }
204
+ function buildAtlasThemeStyles() {
205
+ return `
206
+ :root {
207
+ color-scheme: light;
208
+ --bg: #eef3f8;
209
+ --surface: #ffffff;
210
+ --surface-alt: #f7fafc;
211
+ --text: #102033;
212
+ --muted: #5a6a7b;
213
+ --border: #d7e1ec;
214
+ --link: #0f5bd7;
215
+ --link-hover: #0a3f98;
216
+ --accent: #dbe9ff;
217
+ --code-bg: #edf3ff;
218
+ --max: 62rem;
219
+ }
220
+ * { box-sizing: border-box; }
221
+ html { font-size: 17px; }
222
+ body {
223
+ margin: 0;
224
+ background:
225
+ linear-gradient(180deg, #f8fbff 0%, var(--bg) 52%, #f5f7fb 100%);
226
+ color: var(--text);
227
+ font-family: "Avenir Next", Avenir, "Segoe UI", Inter, Helvetica, Arial, sans-serif;
228
+ line-height: 1.7;
229
+ }
230
+ a { color: var(--link); text-decoration: none; }
231
+ a:hover { color: var(--link-hover); text-decoration: underline; }
232
+ .site-header {
233
+ position: sticky;
234
+ top: 0;
235
+ z-index: 1;
236
+ backdrop-filter: blur(14px);
237
+ background: rgba(248, 251, 255, 0.88);
238
+ border-bottom: 1px solid rgba(215, 225, 236, 0.88);
239
+ }
240
+ .site-header__inner {
241
+ max-width: calc(var(--max) + 4rem);
242
+ margin: 0 auto;
243
+ padding: 1rem 2rem;
244
+ display: grid;
245
+ grid-template-columns: minmax(0, 1fr) auto;
246
+ gap: 0.75rem 2rem;
247
+ align-items: end;
248
+ }
249
+ .site-header__brand { min-width: 0; }
250
+ .site-header__title { margin: 0; }
251
+ .site-header__brand span {
252
+ display: block;
253
+ margin-top: 0.25rem;
254
+ color: var(--muted);
255
+ font-size: 0.92rem;
256
+ max-width: 34rem;
257
+ }
258
+ .site-header__title a {
259
+ display: inline-flex;
260
+ align-items: center;
261
+ gap: 0.55rem;
262
+ font-weight: 700;
263
+ letter-spacing: 0.01em;
264
+ }
265
+ .site-nav ul {
266
+ list-style: none;
267
+ display: flex;
268
+ flex-wrap: wrap;
269
+ gap: 1.05rem;
270
+ margin: 0;
271
+ padding: 0;
272
+ align-items: center;
273
+ justify-content: flex-end;
274
+ }
275
+ .site-nav li {
276
+ display: flex;
277
+ align-items: center;
278
+ margin: 0;
279
+ }
280
+ .site-nav li + li {
281
+ margin-top: 0;
282
+ }
283
+ .site-nav {
284
+ min-width: 0;
285
+ }
286
+ .site-nav a {
287
+ color: var(--muted);
288
+ font-size: 0.94rem;
289
+ font-weight: 600;
290
+ display: inline-flex;
291
+ align-items: center;
292
+ min-height: 2.25rem;
293
+ padding: 0 0.05rem;
294
+ white-space: nowrap;
295
+ }
296
+ .site-nav a:hover { color: var(--link-hover); }
297
+ main {
298
+ max-width: calc(var(--max) + 4rem);
299
+ margin: 0 auto;
300
+ padding: 2rem;
301
+ }
302
+ article {
303
+ background: linear-gradient(180deg, rgba(255,255,255,0.96), rgba(247,250,252,0.98));
304
+ border: 1px solid var(--border);
305
+ border-radius: 24px;
306
+ padding: 2.25rem 2.4rem;
307
+ box-shadow: 0 24px 50px rgba(15, 34, 58, 0.08);
308
+ }
309
+ article > p:first-child {
310
+ margin-top: 0;
311
+ color: var(--muted);
312
+ font-size: 0.88rem;
313
+ font-weight: 600;
314
+ }
315
+ h1, h2, h3, h4 {
316
+ line-height: 1.08;
317
+ letter-spacing: -0.03em;
318
+ margin: 2rem 0 0.8rem;
319
+ scroll-margin-top: 5rem;
320
+ }
321
+ h1 { font-size: clamp(2.3rem, 6vw, 3.8rem); margin-top: 0.15rem; }
322
+ h2 {
323
+ font-size: 1.45rem;
324
+ padding-top: 0.4rem;
325
+ border-top: 1px solid rgba(215, 225, 236, 0.8);
326
+ }
327
+ h3 { font-size: 1.1rem; }
328
+ p, ul, ol, pre, table, blockquote { margin: 1rem 0; }
329
+ ul, ol { padding-left: 1.4rem; }
330
+ li + li { margin-top: 0.35rem; }
331
+ img { max-width: 100%; height: auto; border-radius: 14px; border: 1px solid var(--border); background: white; }
332
+ pre, code { font-family: "SFMono-Regular", "SF Mono", Consolas, "Liberation Mono", Menlo, monospace; }
333
+ code {
334
+ background: var(--code-bg);
335
+ color: #183f7a;
336
+ border-radius: 0.35rem;
337
+ padding: 0.16rem 0.38rem;
338
+ font-size: 0.88em;
339
+ }
340
+ pre {
341
+ background: #0f1722;
342
+ color: #eaf1ff;
343
+ padding: 1rem 1.1rem;
344
+ border-radius: 16px;
345
+ overflow-x: auto;
346
+ border: 1px solid rgba(255,255,255,0.06);
347
+ }
348
+ pre code { background: transparent; color: inherit; padding: 0; }
349
+ blockquote {
350
+ margin-left: 0;
351
+ padding: 0.1rem 0 0.1rem 1rem;
352
+ border-left: 3px solid #9fc1ff;
353
+ color: var(--muted);
354
+ }
355
+ table { width: 100%; border-collapse: collapse; font-size: 0.94rem; }
356
+ th, td { text-align: left; border-bottom: 1px solid var(--border); padding: 0.72rem 0.4rem; }
357
+ th { color: var(--muted); font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.08em; }
358
+ hr { border: none; border-top: 1px solid var(--border); margin: 2rem 0; }
359
+ @media (max-width: 720px) {
360
+ .site-header__inner, main { padding-left: 1rem; padding-right: 1rem; }
361
+ .site-header__inner {
362
+ grid-template-columns: 1fr;
363
+ align-items: start;
364
+ gap: 0.5rem;
365
+ }
366
+ .site-nav {
367
+ margin-top: 0.2rem;
368
+ padding-top: 0.8rem;
369
+ border-top: 1px solid rgba(215, 225, 236, 0.88);
370
+ }
371
+ .site-nav ul { justify-content: flex-start; }
372
+ article { padding: 1.3rem; border-radius: 18px; }
373
+ }
374
+
375
+ body[data-template="editorial"] main {
376
+ padding-top: 1.2rem;
377
+ }
378
+ body[data-template="editorial"] article {
379
+ padding-top: 1.8rem;
380
+ }
381
+ body[data-template="editorial"] .page-intro {
382
+ margin-bottom: 2rem;
383
+ padding-bottom: 1.4rem;
384
+ border-bottom: 1px solid rgba(215, 225, 236, 0.88);
385
+ }
386
+ body[data-template="editorial"] .page-intro__eyebrow {
387
+ margin: 0 0 0.55rem;
388
+ color: var(--muted);
389
+ font-size: 0.78rem;
390
+ letter-spacing: 0.08em;
391
+ text-transform: uppercase;
392
+ font-weight: 700;
393
+ }
394
+ body[data-template="editorial"] .page-intro__title {
395
+ margin: 0;
396
+ font-size: clamp(2.5rem, 6vw, 4.4rem);
397
+ line-height: 0.98;
398
+ }
399
+ body[data-template="editorial"] .page-intro__summary {
400
+ margin-top: 0.9rem;
401
+ max-width: 42rem;
402
+ font-size: 1.1rem;
403
+ color: var(--muted);
404
+ }
405
+ body[data-template="editorial"] .page-intro__meta {
406
+ margin-top: 0.85rem;
407
+ color: var(--muted);
408
+ font-size: 0.9rem;
409
+ }
410
+ `.trim();
411
+ }
412
+ function buildGazetteThemeStyles() {
413
+ return `
414
+ :root {
415
+ color-scheme: light;
416
+ --bg: #f3eee6;
417
+ --surface: #fffdf8;
418
+ --surface-alt: #efe7db;
419
+ --text: #1b1712;
420
+ --muted: #736558;
421
+ --border: #d8c9b7;
422
+ --link: #8a2d12;
423
+ --link-hover: #5f1d0c;
424
+ --code-bg: #f0e3d0;
425
+ --max: 54rem;
426
+ }
427
+ * { box-sizing: border-box; }
428
+ html { font-size: 18px; }
429
+ body {
430
+ margin: 0;
431
+ background:
432
+ linear-gradient(180deg, rgba(255,255,255,0.72), transparent 20%),
433
+ radial-gradient(circle at 100% 0, rgba(177, 109, 68, 0.08), transparent 35%),
434
+ var(--bg);
435
+ color: var(--text);
436
+ font-family: "Avenir Next", "Segoe UI", Helvetica, Arial, sans-serif;
437
+ line-height: 1.75;
438
+ }
439
+ a { color: var(--link); text-decoration-thickness: 0.08em; text-underline-offset: 0.14em; }
440
+ a:hover { color: var(--link-hover); }
441
+ .site-header {
442
+ max-width: calc(var(--max) + 6rem);
443
+ margin: 0 auto;
444
+ padding: 1.25rem 2rem 0;
445
+ }
446
+ .site-header__inner {
447
+ display: grid;
448
+ grid-template-columns: minmax(0, 1fr) auto;
449
+ gap: 0.75rem 2rem;
450
+ align-items: end;
451
+ }
452
+ .site-header__brand { min-width: 0; }
453
+ .site-header__title { margin: 0; }
454
+ .site-header__brand span {
455
+ display: block;
456
+ margin-top: 0.3rem;
457
+ color: var(--muted);
458
+ font-size: 0.95rem;
459
+ max-width: 34rem;
460
+ }
461
+ .site-header__title a {
462
+ color: var(--text);
463
+ text-decoration: none;
464
+ font-weight: 800;
465
+ letter-spacing: 0.12em;
466
+ text-transform: uppercase;
467
+ font-size: 0.82rem;
468
+ }
469
+ .site-nav ul {
470
+ list-style: none;
471
+ display: flex;
472
+ align-items: center;
473
+ flex-wrap: wrap;
474
+ gap: 0.9rem;
475
+ margin: 0;
476
+ padding: 0;
477
+ }
478
+ .site-nav {
479
+ min-width: 0;
480
+ }
481
+ .site-nav li {
482
+ display: flex;
483
+ align-items: center;
484
+ margin: 0;
485
+ }
486
+ .site-nav li + li {
487
+ margin-top: 0;
488
+ }
489
+ .site-nav a {
490
+ display: inline-flex;
491
+ align-items: center;
492
+ min-height: 2rem;
493
+ text-transform: none;
494
+ letter-spacing: 0;
495
+ font-size: 0.95rem;
496
+ }
497
+ main {
498
+ max-width: calc(var(--max) + 6rem);
499
+ margin: 0 auto;
500
+ padding: 1.4rem 2rem 4rem;
501
+ }
502
+ article {
503
+ background:
504
+ linear-gradient(180deg, rgba(255,255,255,0.94), rgba(255,253,248,0.98)),
505
+ var(--surface);
506
+ border: 1px solid var(--border);
507
+ border-radius: 10px;
508
+ padding: 2.6rem 2.4rem 2.4rem;
509
+ box-shadow: 0 18px 44px rgba(45, 29, 16, 0.08);
510
+ position: relative;
511
+ }
512
+ article::before {
513
+ content: "";
514
+ position: absolute;
515
+ inset: 0;
516
+ border-top: 5px solid #b7673c;
517
+ border-radius: 10px;
518
+ pointer-events: none;
519
+ }
520
+ article > p:first-child {
521
+ margin-top: 0;
522
+ color: var(--muted);
523
+ font-size: 0.88rem;
524
+ font-weight: 600;
525
+ }
526
+ h1, h2, h3, h4 {
527
+ font-family: "Iowan Old Style", Charter, Georgia, serif;
528
+ line-height: 1.08;
529
+ letter-spacing: -0.03em;
530
+ margin: 2rem 0 0.8rem;
531
+ }
532
+ h1 { font-size: clamp(2.4rem, 5vw, 4.1rem); margin-top: 0.2rem; }
533
+ h2 { font-size: 1.6rem; }
534
+ h3 { font-size: 1.16rem; }
535
+ p, ul, ol, pre, table, blockquote { margin: 1rem 0; }
536
+ ul, ol { padding-left: 1.35rem; }
537
+ li + li { margin-top: 0.35rem; }
538
+ img { max-width: 100%; height: auto; border-radius: 6px; border: 1px solid var(--border); }
539
+ pre, code { font-family: "SFMono-Regular", "SF Mono", Consolas, "Liberation Mono", Menlo, monospace; }
540
+ code {
541
+ background: var(--code-bg);
542
+ border-radius: 0.3rem;
543
+ padding: 0.12rem 0.35rem;
544
+ font-size: 0.88em;
545
+ }
546
+ pre {
547
+ background: #231a14;
548
+ color: #fff6eb;
549
+ padding: 1rem 1.1rem;
550
+ border-radius: 10px;
551
+ overflow-x: auto;
552
+ }
553
+ pre code { background: transparent; padding: 0; color: inherit; }
554
+ blockquote {
555
+ margin-left: 0;
556
+ padding: 0.1rem 0 0.1rem 1rem;
557
+ border-left: 3px solid #b7673c;
558
+ color: var(--muted);
559
+ font-style: italic;
560
+ }
561
+ table { width: 100%; border-collapse: collapse; font-size: 0.95rem; }
562
+ th, td { text-align: left; border-bottom: 1px solid var(--border); padding: 0.7rem 0.45rem; }
563
+ hr { border: none; border-top: 1px solid var(--border); margin: 2rem 0; }
564
+ @media (max-width: 720px) {
565
+ html { font-size: 17px; }
566
+ .site-header, main { padding-left: 1rem; padding-right: 1rem; }
567
+ .site-header__inner {
568
+ grid-template-columns: 1fr;
569
+ align-items: start;
570
+ }
571
+ .site-nav {
572
+ margin-top: 0.8rem;
573
+ padding-top: 0.8rem;
574
+ border-top: 1px solid var(--border);
575
+ }
576
+ .site-nav ul { justify-content: flex-start; }
577
+ article { padding: 1.35rem 1.2rem 1.25rem; }
578
+ }
579
+
580
+ body[data-template="editorial"] article {
581
+ padding-top: 2rem;
582
+ }
583
+ body[data-template="editorial"] .page-intro {
584
+ margin-bottom: 2rem;
585
+ padding-bottom: 1.1rem;
586
+ border-bottom: 1px solid var(--border);
587
+ }
588
+ body[data-template="editorial"] .page-intro__eyebrow {
589
+ margin: 0 0 0.45rem;
590
+ color: var(--muted);
591
+ font-size: 0.8rem;
592
+ letter-spacing: 0.1em;
593
+ text-transform: uppercase;
594
+ }
595
+ body[data-template="editorial"] .page-intro__title {
596
+ margin: 0;
597
+ font-size: clamp(2.8rem, 6vw, 4.6rem);
598
+ }
599
+ body[data-template="editorial"] .page-intro__summary {
600
+ font-size: 1.08rem;
601
+ color: var(--muted);
602
+ }
603
+ body[data-template="editorial"] .page-intro__meta {
604
+ color: var(--muted);
605
+ font-size: 0.9rem;
606
+ }
607
+ `.trim();
608
+ }
@@ -0,0 +1,13 @@
1
+ export interface BuildIndexOptions {
2
+ rootDir?: string;
3
+ dir?: string;
4
+ }
5
+ export interface BuildIndexResult {
6
+ updatedFiles: string[];
7
+ skippedDirectories: string[];
8
+ }
9
+ export declare function buildDirectoryIndexes(options: BuildIndexOptions): Promise<BuildIndexResult>;
10
+ export declare function buildManagedIndexBlock(directoryPath: string): Promise<string>;
11
+ export declare function upsertManagedIndexBlock(source: string, block: string, options?: {
12
+ directoryPath?: string;
13
+ }): string;