@aranova/tracking-next 0.19.2 → 0.20.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/dist/blog.d.ts ADDED
@@ -0,0 +1,2842 @@
1
+ import { z } from 'zod';
2
+ export { B as BlogHeading, e as estimateReadingTime, a as extractBlogHeadings } from './toc-C_OvH3ES.js';
3
+
4
+ declare const blogHeroImageSchema: z.ZodObject<{
5
+ url: z.ZodString;
6
+ alt: z.ZodCatch<z.ZodString>;
7
+ width: z.ZodNumber;
8
+ height: z.ZodNumber;
9
+ }, "strip", z.ZodTypeAny, {
10
+ url: string;
11
+ alt: string;
12
+ width: number;
13
+ height: number;
14
+ }, {
15
+ url: string;
16
+ width: number;
17
+ height: number;
18
+ alt?: unknown;
19
+ }>;
20
+ declare const blogManifestEntrySchema: z.ZodObject<{
21
+ slug: z.ZodString;
22
+ title: z.ZodString;
23
+ description: z.ZodCatch<z.ZodString>;
24
+ content_hash: z.ZodString;
25
+ content_key: z.ZodString;
26
+ published_at: z.ZodString;
27
+ updated_at: z.ZodString;
28
+ reading_minutes: z.ZodCatch<z.ZodNumber>;
29
+ tags: z.ZodCatch<z.ZodArray<z.ZodString, "many">>;
30
+ hero_image: z.ZodCatch<z.ZodNullable<z.ZodObject<{
31
+ url: z.ZodString;
32
+ alt: z.ZodCatch<z.ZodString>;
33
+ width: z.ZodNumber;
34
+ height: z.ZodNumber;
35
+ }, "strip", z.ZodTypeAny, {
36
+ url: string;
37
+ alt: string;
38
+ width: number;
39
+ height: number;
40
+ }, {
41
+ url: string;
42
+ width: number;
43
+ height: number;
44
+ alt?: unknown;
45
+ }>>>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ title: string;
48
+ description: string;
49
+ updated_at: string;
50
+ slug: string;
51
+ content_hash: string;
52
+ content_key: string;
53
+ published_at: string;
54
+ reading_minutes: number;
55
+ tags: string[];
56
+ hero_image: {
57
+ url: string;
58
+ alt: string;
59
+ width: number;
60
+ height: number;
61
+ } | null;
62
+ }, {
63
+ title: string;
64
+ updated_at: string;
65
+ slug: string;
66
+ content_hash: string;
67
+ content_key: string;
68
+ published_at: string;
69
+ description?: unknown;
70
+ reading_minutes?: unknown;
71
+ tags?: unknown;
72
+ hero_image?: unknown;
73
+ }>;
74
+ declare const blogManifestWireSchema: z.ZodObject<{
75
+ schema_version: z.ZodLiteral<1>;
76
+ namespace: z.ZodString;
77
+ generated_at: z.ZodString;
78
+ posts: z.ZodCatch<z.ZodArray<z.ZodObject<{
79
+ slug: z.ZodString;
80
+ title: z.ZodString;
81
+ description: z.ZodCatch<z.ZodString>;
82
+ content_hash: z.ZodString;
83
+ content_key: z.ZodString;
84
+ published_at: z.ZodString;
85
+ updated_at: z.ZodString;
86
+ reading_minutes: z.ZodCatch<z.ZodNumber>;
87
+ tags: z.ZodCatch<z.ZodArray<z.ZodString, "many">>;
88
+ hero_image: z.ZodCatch<z.ZodNullable<z.ZodObject<{
89
+ url: z.ZodString;
90
+ alt: z.ZodCatch<z.ZodString>;
91
+ width: z.ZodNumber;
92
+ height: z.ZodNumber;
93
+ }, "strip", z.ZodTypeAny, {
94
+ url: string;
95
+ alt: string;
96
+ width: number;
97
+ height: number;
98
+ }, {
99
+ url: string;
100
+ width: number;
101
+ height: number;
102
+ alt?: unknown;
103
+ }>>>;
104
+ }, "strip", z.ZodTypeAny, {
105
+ title: string;
106
+ description: string;
107
+ updated_at: string;
108
+ slug: string;
109
+ content_hash: string;
110
+ content_key: string;
111
+ published_at: string;
112
+ reading_minutes: number;
113
+ tags: string[];
114
+ hero_image: {
115
+ url: string;
116
+ alt: string;
117
+ width: number;
118
+ height: number;
119
+ } | null;
120
+ }, {
121
+ title: string;
122
+ updated_at: string;
123
+ slug: string;
124
+ content_hash: string;
125
+ content_key: string;
126
+ published_at: string;
127
+ description?: unknown;
128
+ reading_minutes?: unknown;
129
+ tags?: unknown;
130
+ hero_image?: unknown;
131
+ }>, "many">>;
132
+ }, "strip", z.ZodTypeAny, {
133
+ schema_version: 1;
134
+ namespace: string;
135
+ generated_at: string;
136
+ posts: {
137
+ title: string;
138
+ description: string;
139
+ updated_at: string;
140
+ slug: string;
141
+ content_hash: string;
142
+ content_key: string;
143
+ published_at: string;
144
+ reading_minutes: number;
145
+ tags: string[];
146
+ hero_image: {
147
+ url: string;
148
+ alt: string;
149
+ width: number;
150
+ height: number;
151
+ } | null;
152
+ }[];
153
+ }, {
154
+ schema_version: 1;
155
+ namespace: string;
156
+ generated_at: string;
157
+ posts?: unknown;
158
+ }>;
159
+ declare const blogManifestSchema: z.ZodObject<{
160
+ schema_version: z.ZodLiteral<1>;
161
+ namespace: z.ZodString;
162
+ generated_at: z.ZodString;
163
+ } & {
164
+ posts: z.ZodCatch<z.ZodEffects<z.ZodArray<z.ZodCatch<z.ZodNullable<z.ZodObject<{
165
+ slug: z.ZodString;
166
+ title: z.ZodString;
167
+ description: z.ZodCatch<z.ZodString>;
168
+ content_hash: z.ZodString;
169
+ content_key: z.ZodString;
170
+ published_at: z.ZodString;
171
+ updated_at: z.ZodString;
172
+ reading_minutes: z.ZodCatch<z.ZodNumber>;
173
+ tags: z.ZodCatch<z.ZodArray<z.ZodString, "many">>;
174
+ hero_image: z.ZodCatch<z.ZodNullable<z.ZodObject<{
175
+ url: z.ZodString;
176
+ alt: z.ZodCatch<z.ZodString>;
177
+ width: z.ZodNumber;
178
+ height: z.ZodNumber;
179
+ }, "strip", z.ZodTypeAny, {
180
+ url: string;
181
+ alt: string;
182
+ width: number;
183
+ height: number;
184
+ }, {
185
+ url: string;
186
+ width: number;
187
+ height: number;
188
+ alt?: unknown;
189
+ }>>>;
190
+ }, "strip", z.ZodTypeAny, {
191
+ title: string;
192
+ description: string;
193
+ updated_at: string;
194
+ slug: string;
195
+ content_hash: string;
196
+ content_key: string;
197
+ published_at: string;
198
+ reading_minutes: number;
199
+ tags: string[];
200
+ hero_image: {
201
+ url: string;
202
+ alt: string;
203
+ width: number;
204
+ height: number;
205
+ } | null;
206
+ }, {
207
+ title: string;
208
+ updated_at: string;
209
+ slug: string;
210
+ content_hash: string;
211
+ content_key: string;
212
+ published_at: string;
213
+ description?: unknown;
214
+ reading_minutes?: unknown;
215
+ tags?: unknown;
216
+ hero_image?: unknown;
217
+ }>>>, "many">, {
218
+ title: string;
219
+ description: string;
220
+ updated_at: string;
221
+ slug: string;
222
+ content_hash: string;
223
+ content_key: string;
224
+ published_at: string;
225
+ reading_minutes: number;
226
+ tags: string[];
227
+ hero_image: {
228
+ url: string;
229
+ alt: string;
230
+ width: number;
231
+ height: number;
232
+ } | null;
233
+ }[], unknown[]>>;
234
+ }, "strip", z.ZodTypeAny, {
235
+ schema_version: 1;
236
+ namespace: string;
237
+ generated_at: string;
238
+ posts: {
239
+ title: string;
240
+ description: string;
241
+ updated_at: string;
242
+ slug: string;
243
+ content_hash: string;
244
+ content_key: string;
245
+ published_at: string;
246
+ reading_minutes: number;
247
+ tags: string[];
248
+ hero_image: {
249
+ url: string;
250
+ alt: string;
251
+ width: number;
252
+ height: number;
253
+ } | null;
254
+ }[];
255
+ }, {
256
+ schema_version: 1;
257
+ namespace: string;
258
+ generated_at: string;
259
+ posts?: unknown;
260
+ }>;
261
+ declare const blogImageSchema: z.ZodObject<{
262
+ id: z.ZodString;
263
+ url: z.ZodString;
264
+ alt: z.ZodCatch<z.ZodString>;
265
+ caption: z.ZodCatch<z.ZodNullable<z.ZodString>>;
266
+ role: z.ZodCatch<z.ZodEnum<["hero", "inline"]>>;
267
+ width: z.ZodNumber;
268
+ height: z.ZodNumber;
269
+ mime: z.ZodCatch<z.ZodString>;
270
+ }, "strip", z.ZodTypeAny, {
271
+ id: string;
272
+ caption: string | null;
273
+ url: string;
274
+ alt: string;
275
+ width: number;
276
+ height: number;
277
+ role: "hero" | "inline";
278
+ mime: string;
279
+ }, {
280
+ id: string;
281
+ url: string;
282
+ width: number;
283
+ height: number;
284
+ caption?: unknown;
285
+ alt?: unknown;
286
+ role?: unknown;
287
+ mime?: unknown;
288
+ }>;
289
+ declare const blogSeoSchema: z.ZodObject<{
290
+ meta_title: z.ZodCatch<z.ZodString>;
291
+ meta_description: z.ZodCatch<z.ZodString>;
292
+ canonical_path: z.ZodCatch<z.ZodString>;
293
+ og_image: z.ZodCatch<z.ZodNullable<z.ZodString>>;
294
+ }, "strip", z.ZodTypeAny, {
295
+ meta_title: string;
296
+ meta_description: string;
297
+ canonical_path: string;
298
+ og_image: string | null;
299
+ }, {
300
+ meta_title?: unknown;
301
+ meta_description?: unknown;
302
+ canonical_path?: unknown;
303
+ og_image?: unknown;
304
+ }>;
305
+ declare const blogPostContentWireSchema: z.ZodObject<{
306
+ schema_version: z.ZodLiteral<1>;
307
+ slug: z.ZodString;
308
+ title: z.ZodString;
309
+ description: z.ZodCatch<z.ZodString>;
310
+ mdx: z.ZodString;
311
+ images: z.ZodCatch<z.ZodArray<z.ZodObject<{
312
+ id: z.ZodString;
313
+ url: z.ZodString;
314
+ alt: z.ZodCatch<z.ZodString>;
315
+ caption: z.ZodCatch<z.ZodNullable<z.ZodString>>;
316
+ role: z.ZodCatch<z.ZodEnum<["hero", "inline"]>>;
317
+ width: z.ZodNumber;
318
+ height: z.ZodNumber;
319
+ mime: z.ZodCatch<z.ZodString>;
320
+ }, "strip", z.ZodTypeAny, {
321
+ id: string;
322
+ caption: string | null;
323
+ url: string;
324
+ alt: string;
325
+ width: number;
326
+ height: number;
327
+ role: "hero" | "inline";
328
+ mime: string;
329
+ }, {
330
+ id: string;
331
+ url: string;
332
+ width: number;
333
+ height: number;
334
+ caption?: unknown;
335
+ alt?: unknown;
336
+ role?: unknown;
337
+ mime?: unknown;
338
+ }>, "many">>;
339
+ theme_overrides: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodObject<{
340
+ colors: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodObject<{
341
+ readonly background: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
342
+ readonly surface: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
343
+ readonly text: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
344
+ readonly text_muted: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
345
+ readonly primary: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
346
+ readonly primary_foreground: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
347
+ readonly link: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
348
+ readonly border: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
349
+ readonly code_background: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
350
+ readonly heading: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
351
+ }, "strip", z.ZodTypeAny, {
352
+ link?: string | undefined;
353
+ text?: string | undefined;
354
+ surface?: string | undefined;
355
+ heading?: string | undefined;
356
+ background?: string | undefined;
357
+ text_muted?: string | undefined;
358
+ primary?: string | undefined;
359
+ primary_foreground?: string | undefined;
360
+ border?: string | undefined;
361
+ code_background?: string | undefined;
362
+ }, {
363
+ link?: unknown;
364
+ text?: unknown;
365
+ surface?: unknown;
366
+ heading?: unknown;
367
+ background?: unknown;
368
+ text_muted?: unknown;
369
+ primary?: unknown;
370
+ primary_foreground?: unknown;
371
+ border?: unknown;
372
+ code_background?: unknown;
373
+ }>>>, {
374
+ link?: string | undefined;
375
+ text?: string | undefined;
376
+ surface?: string | undefined;
377
+ heading?: string | undefined;
378
+ background?: string | undefined;
379
+ text_muted?: string | undefined;
380
+ primary?: string | undefined;
381
+ primary_foreground?: string | undefined;
382
+ border?: string | undefined;
383
+ code_background?: string | undefined;
384
+ } | undefined, {
385
+ link?: unknown;
386
+ text?: unknown;
387
+ surface?: unknown;
388
+ heading?: unknown;
389
+ background?: unknown;
390
+ text_muted?: unknown;
391
+ primary?: unknown;
392
+ primary_foreground?: unknown;
393
+ border?: unknown;
394
+ code_background?: unknown;
395
+ } | null | undefined>>;
396
+ colors_dark: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodObject<{
397
+ readonly background: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
398
+ readonly surface: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
399
+ readonly text: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
400
+ readonly text_muted: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
401
+ readonly primary: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
402
+ readonly primary_foreground: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
403
+ readonly link: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
404
+ readonly border: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
405
+ readonly code_background: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
406
+ readonly heading: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
407
+ }, "strip", z.ZodTypeAny, {
408
+ link?: string | undefined;
409
+ text?: string | undefined;
410
+ surface?: string | undefined;
411
+ heading?: string | undefined;
412
+ background?: string | undefined;
413
+ text_muted?: string | undefined;
414
+ primary?: string | undefined;
415
+ primary_foreground?: string | undefined;
416
+ border?: string | undefined;
417
+ code_background?: string | undefined;
418
+ }, {
419
+ link?: unknown;
420
+ text?: unknown;
421
+ surface?: unknown;
422
+ heading?: unknown;
423
+ background?: unknown;
424
+ text_muted?: unknown;
425
+ primary?: unknown;
426
+ primary_foreground?: unknown;
427
+ border?: unknown;
428
+ code_background?: unknown;
429
+ }>>>, {
430
+ link?: string | undefined;
431
+ text?: string | undefined;
432
+ surface?: string | undefined;
433
+ heading?: string | undefined;
434
+ background?: string | undefined;
435
+ text_muted?: string | undefined;
436
+ primary?: string | undefined;
437
+ primary_foreground?: string | undefined;
438
+ border?: string | undefined;
439
+ code_background?: string | undefined;
440
+ } | undefined, {
441
+ link?: unknown;
442
+ text?: unknown;
443
+ surface?: unknown;
444
+ heading?: unknown;
445
+ background?: unknown;
446
+ text_muted?: unknown;
447
+ primary?: unknown;
448
+ primary_foreground?: unknown;
449
+ border?: unknown;
450
+ code_background?: unknown;
451
+ } | null | undefined>>;
452
+ typography: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodObject<{
453
+ heading_family: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
454
+ body_family: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
455
+ heading_weight: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodNumber>>, number | undefined, number | null | undefined>>;
456
+ body_weight: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodNumber>>, number | undefined, number | null | undefined>>;
457
+ h1_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
458
+ base: string;
459
+ } & {
460
+ sm?: string | null | undefined;
461
+ md?: string | null | undefined;
462
+ lg?: string | null | undefined;
463
+ xl?: string | null | undefined;
464
+ "2xl"?: string | null | undefined;
465
+ "3xl"?: string | null | undefined;
466
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
467
+ base: string;
468
+ } & {
469
+ sm?: string | null | undefined;
470
+ md?: string | null | undefined;
471
+ lg?: string | null | undefined;
472
+ xl?: string | null | undefined;
473
+ "2xl"?: string | null | undefined;
474
+ "3xl"?: string | null | undefined;
475
+ }) | null | undefined>>;
476
+ h2_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
477
+ base: string;
478
+ } & {
479
+ sm?: string | null | undefined;
480
+ md?: string | null | undefined;
481
+ lg?: string | null | undefined;
482
+ xl?: string | null | undefined;
483
+ "2xl"?: string | null | undefined;
484
+ "3xl"?: string | null | undefined;
485
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
486
+ base: string;
487
+ } & {
488
+ sm?: string | null | undefined;
489
+ md?: string | null | undefined;
490
+ lg?: string | null | undefined;
491
+ xl?: string | null | undefined;
492
+ "2xl"?: string | null | undefined;
493
+ "3xl"?: string | null | undefined;
494
+ }) | null | undefined>>;
495
+ h3_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
496
+ base: string;
497
+ } & {
498
+ sm?: string | null | undefined;
499
+ md?: string | null | undefined;
500
+ lg?: string | null | undefined;
501
+ xl?: string | null | undefined;
502
+ "2xl"?: string | null | undefined;
503
+ "3xl"?: string | null | undefined;
504
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
505
+ base: string;
506
+ } & {
507
+ sm?: string | null | undefined;
508
+ md?: string | null | undefined;
509
+ lg?: string | null | undefined;
510
+ xl?: string | null | undefined;
511
+ "2xl"?: string | null | undefined;
512
+ "3xl"?: string | null | undefined;
513
+ }) | null | undefined>>;
514
+ h4_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
515
+ base: string;
516
+ } & {
517
+ sm?: string | null | undefined;
518
+ md?: string | null | undefined;
519
+ lg?: string | null | undefined;
520
+ xl?: string | null | undefined;
521
+ "2xl"?: string | null | undefined;
522
+ "3xl"?: string | null | undefined;
523
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
524
+ base: string;
525
+ } & {
526
+ sm?: string | null | undefined;
527
+ md?: string | null | undefined;
528
+ lg?: string | null | undefined;
529
+ xl?: string | null | undefined;
530
+ "2xl"?: string | null | undefined;
531
+ "3xl"?: string | null | undefined;
532
+ }) | null | undefined>>;
533
+ body_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
534
+ base: string;
535
+ } & {
536
+ sm?: string | null | undefined;
537
+ md?: string | null | undefined;
538
+ lg?: string | null | undefined;
539
+ xl?: string | null | undefined;
540
+ "2xl"?: string | null | undefined;
541
+ "3xl"?: string | null | undefined;
542
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
543
+ base: string;
544
+ } & {
545
+ sm?: string | null | undefined;
546
+ md?: string | null | undefined;
547
+ lg?: string | null | undefined;
548
+ xl?: string | null | undefined;
549
+ "2xl"?: string | null | undefined;
550
+ "3xl"?: string | null | undefined;
551
+ }) | null | undefined>>;
552
+ body_line_height: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
553
+ base: string;
554
+ } & {
555
+ sm?: string | null | undefined;
556
+ md?: string | null | undefined;
557
+ lg?: string | null | undefined;
558
+ xl?: string | null | undefined;
559
+ "2xl"?: string | null | undefined;
560
+ "3xl"?: string | null | undefined;
561
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
562
+ base: string;
563
+ } & {
564
+ sm?: string | null | undefined;
565
+ md?: string | null | undefined;
566
+ lg?: string | null | undefined;
567
+ xl?: string | null | undefined;
568
+ "2xl"?: string | null | undefined;
569
+ "3xl"?: string | null | undefined;
570
+ }) | null | undefined>>;
571
+ small_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
572
+ base: string;
573
+ } & {
574
+ sm?: string | null | undefined;
575
+ md?: string | null | undefined;
576
+ lg?: string | null | undefined;
577
+ xl?: string | null | undefined;
578
+ "2xl"?: string | null | undefined;
579
+ "3xl"?: string | null | undefined;
580
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
581
+ base: string;
582
+ } & {
583
+ sm?: string | null | undefined;
584
+ md?: string | null | undefined;
585
+ lg?: string | null | undefined;
586
+ xl?: string | null | undefined;
587
+ "2xl"?: string | null | undefined;
588
+ "3xl"?: string | null | undefined;
589
+ }) | null | undefined>>;
590
+ heading_letter_spacing: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodString>>, string | undefined, string | null | undefined>>;
591
+ caption_align: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEnum<["left", "center", "right"]>>>, "center" | "left" | "right" | undefined, "center" | "left" | "right" | null | undefined>>;
592
+ }, "strip", z.ZodTypeAny, {
593
+ heading_family?: string | undefined;
594
+ body_family?: string | undefined;
595
+ heading_weight?: number | undefined;
596
+ body_weight?: number | undefined;
597
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
598
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
599
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
600
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
601
+ body_size?: string | BlogBreakpointMap<string> | undefined;
602
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
603
+ small_size?: string | BlogBreakpointMap<string> | undefined;
604
+ heading_letter_spacing?: string | undefined;
605
+ caption_align?: "center" | "left" | "right" | undefined;
606
+ }, {
607
+ heading_family?: unknown;
608
+ body_family?: unknown;
609
+ heading_weight?: unknown;
610
+ body_weight?: unknown;
611
+ h1_size?: unknown;
612
+ h2_size?: unknown;
613
+ h3_size?: unknown;
614
+ h4_size?: unknown;
615
+ body_size?: unknown;
616
+ body_line_height?: unknown;
617
+ small_size?: unknown;
618
+ heading_letter_spacing?: unknown;
619
+ caption_align?: unknown;
620
+ }>>>, {
621
+ heading_family?: string | undefined;
622
+ body_family?: string | undefined;
623
+ heading_weight?: number | undefined;
624
+ body_weight?: number | undefined;
625
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
626
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
627
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
628
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
629
+ body_size?: string | BlogBreakpointMap<string> | undefined;
630
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
631
+ small_size?: string | BlogBreakpointMap<string> | undefined;
632
+ heading_letter_spacing?: string | undefined;
633
+ caption_align?: "center" | "left" | "right" | undefined;
634
+ } | undefined, {
635
+ heading_family?: unknown;
636
+ body_family?: unknown;
637
+ heading_weight?: unknown;
638
+ body_weight?: unknown;
639
+ h1_size?: unknown;
640
+ h2_size?: unknown;
641
+ h3_size?: unknown;
642
+ h4_size?: unknown;
643
+ body_size?: unknown;
644
+ body_line_height?: unknown;
645
+ small_size?: unknown;
646
+ heading_letter_spacing?: unknown;
647
+ caption_align?: unknown;
648
+ } | null | undefined>>;
649
+ spacing: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodObject<{
650
+ content_max_width: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
651
+ base: string;
652
+ } & {
653
+ sm?: string | null | undefined;
654
+ md?: string | null | undefined;
655
+ lg?: string | null | undefined;
656
+ xl?: string | null | undefined;
657
+ "2xl"?: string | null | undefined;
658
+ "3xl"?: string | null | undefined;
659
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
660
+ base: string;
661
+ } & {
662
+ sm?: string | null | undefined;
663
+ md?: string | null | undefined;
664
+ lg?: string | null | undefined;
665
+ xl?: string | null | undefined;
666
+ "2xl"?: string | null | undefined;
667
+ "3xl"?: string | null | undefined;
668
+ }) | null | undefined>>;
669
+ block_gap: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
670
+ base: string;
671
+ } & {
672
+ sm?: string | null | undefined;
673
+ md?: string | null | undefined;
674
+ lg?: string | null | undefined;
675
+ xl?: string | null | undefined;
676
+ "2xl"?: string | null | undefined;
677
+ "3xl"?: string | null | undefined;
678
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
679
+ base: string;
680
+ } & {
681
+ sm?: string | null | undefined;
682
+ md?: string | null | undefined;
683
+ lg?: string | null | undefined;
684
+ xl?: string | null | undefined;
685
+ "2xl"?: string | null | undefined;
686
+ "3xl"?: string | null | undefined;
687
+ }) | null | undefined>>;
688
+ section_gap: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
689
+ base: string;
690
+ } & {
691
+ sm?: string | null | undefined;
692
+ md?: string | null | undefined;
693
+ lg?: string | null | undefined;
694
+ xl?: string | null | undefined;
695
+ "2xl"?: string | null | undefined;
696
+ "3xl"?: string | null | undefined;
697
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
698
+ base: string;
699
+ } & {
700
+ sm?: string | null | undefined;
701
+ md?: string | null | undefined;
702
+ lg?: string | null | undefined;
703
+ xl?: string | null | undefined;
704
+ "2xl"?: string | null | undefined;
705
+ "3xl"?: string | null | undefined;
706
+ }) | null | undefined>>;
707
+ }, "strip", z.ZodTypeAny, {
708
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
709
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
710
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
711
+ }, {
712
+ content_max_width?: unknown;
713
+ block_gap?: unknown;
714
+ section_gap?: unknown;
715
+ }>>>, {
716
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
717
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
718
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
719
+ } | undefined, {
720
+ content_max_width?: unknown;
721
+ block_gap?: unknown;
722
+ section_gap?: unknown;
723
+ } | null | undefined>>;
724
+ radius: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
725
+ base: string;
726
+ } & {
727
+ sm?: string | null | undefined;
728
+ md?: string | null | undefined;
729
+ lg?: string | null | undefined;
730
+ xl?: string | null | undefined;
731
+ "2xl"?: string | null | undefined;
732
+ "3xl"?: string | null | undefined;
733
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
734
+ base: string;
735
+ } & {
736
+ sm?: string | null | undefined;
737
+ md?: string | null | undefined;
738
+ lg?: string | null | undefined;
739
+ xl?: string | null | undefined;
740
+ "2xl"?: string | null | undefined;
741
+ "3xl"?: string | null | undefined;
742
+ }) | null | undefined>>;
743
+ }, "strip", z.ZodTypeAny, {
744
+ colors?: {
745
+ link?: string | undefined;
746
+ text?: string | undefined;
747
+ surface?: string | undefined;
748
+ heading?: string | undefined;
749
+ background?: string | undefined;
750
+ text_muted?: string | undefined;
751
+ primary?: string | undefined;
752
+ primary_foreground?: string | undefined;
753
+ border?: string | undefined;
754
+ code_background?: string | undefined;
755
+ } | undefined;
756
+ colors_dark?: {
757
+ link?: string | undefined;
758
+ text?: string | undefined;
759
+ surface?: string | undefined;
760
+ heading?: string | undefined;
761
+ background?: string | undefined;
762
+ text_muted?: string | undefined;
763
+ primary?: string | undefined;
764
+ primary_foreground?: string | undefined;
765
+ border?: string | undefined;
766
+ code_background?: string | undefined;
767
+ } | undefined;
768
+ typography?: {
769
+ heading_family?: string | undefined;
770
+ body_family?: string | undefined;
771
+ heading_weight?: number | undefined;
772
+ body_weight?: number | undefined;
773
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
774
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
775
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
776
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
777
+ body_size?: string | BlogBreakpointMap<string> | undefined;
778
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
779
+ small_size?: string | BlogBreakpointMap<string> | undefined;
780
+ heading_letter_spacing?: string | undefined;
781
+ caption_align?: "center" | "left" | "right" | undefined;
782
+ } | undefined;
783
+ spacing?: {
784
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
785
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
786
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
787
+ } | undefined;
788
+ radius?: string | BlogBreakpointMap<string> | undefined;
789
+ }, {
790
+ colors?: unknown;
791
+ colors_dark?: unknown;
792
+ typography?: unknown;
793
+ spacing?: unknown;
794
+ radius?: unknown;
795
+ }>>>, {
796
+ colors?: {
797
+ link?: string | undefined;
798
+ text?: string | undefined;
799
+ surface?: string | undefined;
800
+ heading?: string | undefined;
801
+ background?: string | undefined;
802
+ text_muted?: string | undefined;
803
+ primary?: string | undefined;
804
+ primary_foreground?: string | undefined;
805
+ border?: string | undefined;
806
+ code_background?: string | undefined;
807
+ } | undefined;
808
+ colors_dark?: {
809
+ link?: string | undefined;
810
+ text?: string | undefined;
811
+ surface?: string | undefined;
812
+ heading?: string | undefined;
813
+ background?: string | undefined;
814
+ text_muted?: string | undefined;
815
+ primary?: string | undefined;
816
+ primary_foreground?: string | undefined;
817
+ border?: string | undefined;
818
+ code_background?: string | undefined;
819
+ } | undefined;
820
+ typography?: {
821
+ heading_family?: string | undefined;
822
+ body_family?: string | undefined;
823
+ heading_weight?: number | undefined;
824
+ body_weight?: number | undefined;
825
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
826
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
827
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
828
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
829
+ body_size?: string | BlogBreakpointMap<string> | undefined;
830
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
831
+ small_size?: string | BlogBreakpointMap<string> | undefined;
832
+ heading_letter_spacing?: string | undefined;
833
+ caption_align?: "center" | "left" | "right" | undefined;
834
+ } | undefined;
835
+ spacing?: {
836
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
837
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
838
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
839
+ } | undefined;
840
+ radius?: string | BlogBreakpointMap<string> | undefined;
841
+ } | undefined, {
842
+ colors?: unknown;
843
+ colors_dark?: unknown;
844
+ typography?: unknown;
845
+ spacing?: unknown;
846
+ radius?: unknown;
847
+ } | null | undefined>>;
848
+ seo: z.ZodCatch<z.ZodObject<{
849
+ meta_title: z.ZodCatch<z.ZodString>;
850
+ meta_description: z.ZodCatch<z.ZodString>;
851
+ canonical_path: z.ZodCatch<z.ZodString>;
852
+ og_image: z.ZodCatch<z.ZodNullable<z.ZodString>>;
853
+ }, "strip", z.ZodTypeAny, {
854
+ meta_title: string;
855
+ meta_description: string;
856
+ canonical_path: string;
857
+ og_image: string | null;
858
+ }, {
859
+ meta_title?: unknown;
860
+ meta_description?: unknown;
861
+ canonical_path?: unknown;
862
+ og_image?: unknown;
863
+ }>>;
864
+ jsonld: z.ZodCatch<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
865
+ published_at: z.ZodString;
866
+ updated_at: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodString>>, string | null, string | null | undefined>>;
867
+ version_number: z.ZodCatch<z.ZodNumber>;
868
+ content_hash: z.ZodString;
869
+ }, "strip", z.ZodTypeAny, {
870
+ title: string;
871
+ schema_version: 1;
872
+ description: string;
873
+ updated_at: string | null;
874
+ slug: string;
875
+ content_hash: string;
876
+ published_at: string;
877
+ mdx: string;
878
+ images: {
879
+ id: string;
880
+ caption: string | null;
881
+ url: string;
882
+ alt: string;
883
+ width: number;
884
+ height: number;
885
+ role: "hero" | "inline";
886
+ mime: string;
887
+ }[];
888
+ seo: {
889
+ meta_title: string;
890
+ meta_description: string;
891
+ canonical_path: string;
892
+ og_image: string | null;
893
+ };
894
+ jsonld: Record<string, unknown>;
895
+ version_number: number;
896
+ theme_overrides?: {
897
+ colors?: {
898
+ link?: string | undefined;
899
+ text?: string | undefined;
900
+ surface?: string | undefined;
901
+ heading?: string | undefined;
902
+ background?: string | undefined;
903
+ text_muted?: string | undefined;
904
+ primary?: string | undefined;
905
+ primary_foreground?: string | undefined;
906
+ border?: string | undefined;
907
+ code_background?: string | undefined;
908
+ } | undefined;
909
+ colors_dark?: {
910
+ link?: string | undefined;
911
+ text?: string | undefined;
912
+ surface?: string | undefined;
913
+ heading?: string | undefined;
914
+ background?: string | undefined;
915
+ text_muted?: string | undefined;
916
+ primary?: string | undefined;
917
+ primary_foreground?: string | undefined;
918
+ border?: string | undefined;
919
+ code_background?: string | undefined;
920
+ } | undefined;
921
+ typography?: {
922
+ heading_family?: string | undefined;
923
+ body_family?: string | undefined;
924
+ heading_weight?: number | undefined;
925
+ body_weight?: number | undefined;
926
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
927
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
928
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
929
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
930
+ body_size?: string | BlogBreakpointMap<string> | undefined;
931
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
932
+ small_size?: string | BlogBreakpointMap<string> | undefined;
933
+ heading_letter_spacing?: string | undefined;
934
+ caption_align?: "center" | "left" | "right" | undefined;
935
+ } | undefined;
936
+ spacing?: {
937
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
938
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
939
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
940
+ } | undefined;
941
+ radius?: string | BlogBreakpointMap<string> | undefined;
942
+ } | undefined;
943
+ }, {
944
+ title: string;
945
+ schema_version: 1;
946
+ slug: string;
947
+ content_hash: string;
948
+ published_at: string;
949
+ mdx: string;
950
+ description?: unknown;
951
+ updated_at?: unknown;
952
+ images?: unknown;
953
+ theme_overrides?: unknown;
954
+ seo?: unknown;
955
+ jsonld?: unknown;
956
+ version_number?: unknown;
957
+ }>;
958
+ declare const blogPostContentSchema: z.ZodObject<{
959
+ schema_version: z.ZodLiteral<1>;
960
+ slug: z.ZodString;
961
+ title: z.ZodString;
962
+ description: z.ZodCatch<z.ZodString>;
963
+ mdx: z.ZodString;
964
+ theme_overrides: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodObject<{
965
+ colors: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodObject<{
966
+ readonly background: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
967
+ readonly surface: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
968
+ readonly text: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
969
+ readonly text_muted: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
970
+ readonly primary: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
971
+ readonly primary_foreground: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
972
+ readonly link: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
973
+ readonly border: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
974
+ readonly code_background: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
975
+ readonly heading: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
976
+ }, "strip", z.ZodTypeAny, {
977
+ link?: string | undefined;
978
+ text?: string | undefined;
979
+ surface?: string | undefined;
980
+ heading?: string | undefined;
981
+ background?: string | undefined;
982
+ text_muted?: string | undefined;
983
+ primary?: string | undefined;
984
+ primary_foreground?: string | undefined;
985
+ border?: string | undefined;
986
+ code_background?: string | undefined;
987
+ }, {
988
+ link?: unknown;
989
+ text?: unknown;
990
+ surface?: unknown;
991
+ heading?: unknown;
992
+ background?: unknown;
993
+ text_muted?: unknown;
994
+ primary?: unknown;
995
+ primary_foreground?: unknown;
996
+ border?: unknown;
997
+ code_background?: unknown;
998
+ }>>>, {
999
+ link?: string | undefined;
1000
+ text?: string | undefined;
1001
+ surface?: string | undefined;
1002
+ heading?: string | undefined;
1003
+ background?: string | undefined;
1004
+ text_muted?: string | undefined;
1005
+ primary?: string | undefined;
1006
+ primary_foreground?: string | undefined;
1007
+ border?: string | undefined;
1008
+ code_background?: string | undefined;
1009
+ } | undefined, {
1010
+ link?: unknown;
1011
+ text?: unknown;
1012
+ surface?: unknown;
1013
+ heading?: unknown;
1014
+ background?: unknown;
1015
+ text_muted?: unknown;
1016
+ primary?: unknown;
1017
+ primary_foreground?: unknown;
1018
+ border?: unknown;
1019
+ code_background?: unknown;
1020
+ } | null | undefined>>;
1021
+ colors_dark: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodObject<{
1022
+ readonly background: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1023
+ readonly surface: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1024
+ readonly text: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1025
+ readonly text_muted: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1026
+ readonly primary: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1027
+ readonly primary_foreground: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1028
+ readonly link: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1029
+ readonly border: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1030
+ readonly code_background: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1031
+ readonly heading: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1032
+ }, "strip", z.ZodTypeAny, {
1033
+ link?: string | undefined;
1034
+ text?: string | undefined;
1035
+ surface?: string | undefined;
1036
+ heading?: string | undefined;
1037
+ background?: string | undefined;
1038
+ text_muted?: string | undefined;
1039
+ primary?: string | undefined;
1040
+ primary_foreground?: string | undefined;
1041
+ border?: string | undefined;
1042
+ code_background?: string | undefined;
1043
+ }, {
1044
+ link?: unknown;
1045
+ text?: unknown;
1046
+ surface?: unknown;
1047
+ heading?: unknown;
1048
+ background?: unknown;
1049
+ text_muted?: unknown;
1050
+ primary?: unknown;
1051
+ primary_foreground?: unknown;
1052
+ border?: unknown;
1053
+ code_background?: unknown;
1054
+ }>>>, {
1055
+ link?: string | undefined;
1056
+ text?: string | undefined;
1057
+ surface?: string | undefined;
1058
+ heading?: string | undefined;
1059
+ background?: string | undefined;
1060
+ text_muted?: string | undefined;
1061
+ primary?: string | undefined;
1062
+ primary_foreground?: string | undefined;
1063
+ border?: string | undefined;
1064
+ code_background?: string | undefined;
1065
+ } | undefined, {
1066
+ link?: unknown;
1067
+ text?: unknown;
1068
+ surface?: unknown;
1069
+ heading?: unknown;
1070
+ background?: unknown;
1071
+ text_muted?: unknown;
1072
+ primary?: unknown;
1073
+ primary_foreground?: unknown;
1074
+ border?: unknown;
1075
+ code_background?: unknown;
1076
+ } | null | undefined>>;
1077
+ typography: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodObject<{
1078
+ heading_family: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1079
+ body_family: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodString, string, string>>>, string | undefined, string | null | undefined>>;
1080
+ heading_weight: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodNumber>>, number | undefined, number | null | undefined>>;
1081
+ body_weight: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodNumber>>, number | undefined, number | null | undefined>>;
1082
+ h1_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1083
+ base: string;
1084
+ } & {
1085
+ sm?: string | null | undefined;
1086
+ md?: string | null | undefined;
1087
+ lg?: string | null | undefined;
1088
+ xl?: string | null | undefined;
1089
+ "2xl"?: string | null | undefined;
1090
+ "3xl"?: string | null | undefined;
1091
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
1092
+ base: string;
1093
+ } & {
1094
+ sm?: string | null | undefined;
1095
+ md?: string | null | undefined;
1096
+ lg?: string | null | undefined;
1097
+ xl?: string | null | undefined;
1098
+ "2xl"?: string | null | undefined;
1099
+ "3xl"?: string | null | undefined;
1100
+ }) | null | undefined>>;
1101
+ h2_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1102
+ base: string;
1103
+ } & {
1104
+ sm?: string | null | undefined;
1105
+ md?: string | null | undefined;
1106
+ lg?: string | null | undefined;
1107
+ xl?: string | null | undefined;
1108
+ "2xl"?: string | null | undefined;
1109
+ "3xl"?: string | null | undefined;
1110
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
1111
+ base: string;
1112
+ } & {
1113
+ sm?: string | null | undefined;
1114
+ md?: string | null | undefined;
1115
+ lg?: string | null | undefined;
1116
+ xl?: string | null | undefined;
1117
+ "2xl"?: string | null | undefined;
1118
+ "3xl"?: string | null | undefined;
1119
+ }) | null | undefined>>;
1120
+ h3_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1121
+ base: string;
1122
+ } & {
1123
+ sm?: string | null | undefined;
1124
+ md?: string | null | undefined;
1125
+ lg?: string | null | undefined;
1126
+ xl?: string | null | undefined;
1127
+ "2xl"?: string | null | undefined;
1128
+ "3xl"?: string | null | undefined;
1129
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
1130
+ base: string;
1131
+ } & {
1132
+ sm?: string | null | undefined;
1133
+ md?: string | null | undefined;
1134
+ lg?: string | null | undefined;
1135
+ xl?: string | null | undefined;
1136
+ "2xl"?: string | null | undefined;
1137
+ "3xl"?: string | null | undefined;
1138
+ }) | null | undefined>>;
1139
+ h4_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1140
+ base: string;
1141
+ } & {
1142
+ sm?: string | null | undefined;
1143
+ md?: string | null | undefined;
1144
+ lg?: string | null | undefined;
1145
+ xl?: string | null | undefined;
1146
+ "2xl"?: string | null | undefined;
1147
+ "3xl"?: string | null | undefined;
1148
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
1149
+ base: string;
1150
+ } & {
1151
+ sm?: string | null | undefined;
1152
+ md?: string | null | undefined;
1153
+ lg?: string | null | undefined;
1154
+ xl?: string | null | undefined;
1155
+ "2xl"?: string | null | undefined;
1156
+ "3xl"?: string | null | undefined;
1157
+ }) | null | undefined>>;
1158
+ body_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1159
+ base: string;
1160
+ } & {
1161
+ sm?: string | null | undefined;
1162
+ md?: string | null | undefined;
1163
+ lg?: string | null | undefined;
1164
+ xl?: string | null | undefined;
1165
+ "2xl"?: string | null | undefined;
1166
+ "3xl"?: string | null | undefined;
1167
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
1168
+ base: string;
1169
+ } & {
1170
+ sm?: string | null | undefined;
1171
+ md?: string | null | undefined;
1172
+ lg?: string | null | undefined;
1173
+ xl?: string | null | undefined;
1174
+ "2xl"?: string | null | undefined;
1175
+ "3xl"?: string | null | undefined;
1176
+ }) | null | undefined>>;
1177
+ body_line_height: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1178
+ base: string;
1179
+ } & {
1180
+ sm?: string | null | undefined;
1181
+ md?: string | null | undefined;
1182
+ lg?: string | null | undefined;
1183
+ xl?: string | null | undefined;
1184
+ "2xl"?: string | null | undefined;
1185
+ "3xl"?: string | null | undefined;
1186
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
1187
+ base: string;
1188
+ } & {
1189
+ sm?: string | null | undefined;
1190
+ md?: string | null | undefined;
1191
+ lg?: string | null | undefined;
1192
+ xl?: string | null | undefined;
1193
+ "2xl"?: string | null | undefined;
1194
+ "3xl"?: string | null | undefined;
1195
+ }) | null | undefined>>;
1196
+ small_size: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1197
+ base: string;
1198
+ } & {
1199
+ sm?: string | null | undefined;
1200
+ md?: string | null | undefined;
1201
+ lg?: string | null | undefined;
1202
+ xl?: string | null | undefined;
1203
+ "2xl"?: string | null | undefined;
1204
+ "3xl"?: string | null | undefined;
1205
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
1206
+ base: string;
1207
+ } & {
1208
+ sm?: string | null | undefined;
1209
+ md?: string | null | undefined;
1210
+ lg?: string | null | undefined;
1211
+ xl?: string | null | undefined;
1212
+ "2xl"?: string | null | undefined;
1213
+ "3xl"?: string | null | undefined;
1214
+ }) | null | undefined>>;
1215
+ heading_letter_spacing: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodString>>, string | undefined, string | null | undefined>>;
1216
+ caption_align: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodEnum<["left", "center", "right"]>>>, "center" | "left" | "right" | undefined, "center" | "left" | "right" | null | undefined>>;
1217
+ }, "strip", z.ZodTypeAny, {
1218
+ heading_family?: string | undefined;
1219
+ body_family?: string | undefined;
1220
+ heading_weight?: number | undefined;
1221
+ body_weight?: number | undefined;
1222
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
1223
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
1224
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
1225
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
1226
+ body_size?: string | BlogBreakpointMap<string> | undefined;
1227
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
1228
+ small_size?: string | BlogBreakpointMap<string> | undefined;
1229
+ heading_letter_spacing?: string | undefined;
1230
+ caption_align?: "center" | "left" | "right" | undefined;
1231
+ }, {
1232
+ heading_family?: unknown;
1233
+ body_family?: unknown;
1234
+ heading_weight?: unknown;
1235
+ body_weight?: unknown;
1236
+ h1_size?: unknown;
1237
+ h2_size?: unknown;
1238
+ h3_size?: unknown;
1239
+ h4_size?: unknown;
1240
+ body_size?: unknown;
1241
+ body_line_height?: unknown;
1242
+ small_size?: unknown;
1243
+ heading_letter_spacing?: unknown;
1244
+ caption_align?: unknown;
1245
+ }>>>, {
1246
+ heading_family?: string | undefined;
1247
+ body_family?: string | undefined;
1248
+ heading_weight?: number | undefined;
1249
+ body_weight?: number | undefined;
1250
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
1251
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
1252
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
1253
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
1254
+ body_size?: string | BlogBreakpointMap<string> | undefined;
1255
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
1256
+ small_size?: string | BlogBreakpointMap<string> | undefined;
1257
+ heading_letter_spacing?: string | undefined;
1258
+ caption_align?: "center" | "left" | "right" | undefined;
1259
+ } | undefined, {
1260
+ heading_family?: unknown;
1261
+ body_family?: unknown;
1262
+ heading_weight?: unknown;
1263
+ body_weight?: unknown;
1264
+ h1_size?: unknown;
1265
+ h2_size?: unknown;
1266
+ h3_size?: unknown;
1267
+ h4_size?: unknown;
1268
+ body_size?: unknown;
1269
+ body_line_height?: unknown;
1270
+ small_size?: unknown;
1271
+ heading_letter_spacing?: unknown;
1272
+ caption_align?: unknown;
1273
+ } | null | undefined>>;
1274
+ spacing: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodObject<{
1275
+ content_max_width: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1276
+ base: string;
1277
+ } & {
1278
+ sm?: string | null | undefined;
1279
+ md?: string | null | undefined;
1280
+ lg?: string | null | undefined;
1281
+ xl?: string | null | undefined;
1282
+ "2xl"?: string | null | undefined;
1283
+ "3xl"?: string | null | undefined;
1284
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
1285
+ base: string;
1286
+ } & {
1287
+ sm?: string | null | undefined;
1288
+ md?: string | null | undefined;
1289
+ lg?: string | null | undefined;
1290
+ xl?: string | null | undefined;
1291
+ "2xl"?: string | null | undefined;
1292
+ "3xl"?: string | null | undefined;
1293
+ }) | null | undefined>>;
1294
+ block_gap: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1295
+ base: string;
1296
+ } & {
1297
+ sm?: string | null | undefined;
1298
+ md?: string | null | undefined;
1299
+ lg?: string | null | undefined;
1300
+ xl?: string | null | undefined;
1301
+ "2xl"?: string | null | undefined;
1302
+ "3xl"?: string | null | undefined;
1303
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
1304
+ base: string;
1305
+ } & {
1306
+ sm?: string | null | undefined;
1307
+ md?: string | null | undefined;
1308
+ lg?: string | null | undefined;
1309
+ xl?: string | null | undefined;
1310
+ "2xl"?: string | null | undefined;
1311
+ "3xl"?: string | null | undefined;
1312
+ }) | null | undefined>>;
1313
+ section_gap: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1314
+ base: string;
1315
+ } & {
1316
+ sm?: string | null | undefined;
1317
+ md?: string | null | undefined;
1318
+ lg?: string | null | undefined;
1319
+ xl?: string | null | undefined;
1320
+ "2xl"?: string | null | undefined;
1321
+ "3xl"?: string | null | undefined;
1322
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
1323
+ base: string;
1324
+ } & {
1325
+ sm?: string | null | undefined;
1326
+ md?: string | null | undefined;
1327
+ lg?: string | null | undefined;
1328
+ xl?: string | null | undefined;
1329
+ "2xl"?: string | null | undefined;
1330
+ "3xl"?: string | null | undefined;
1331
+ }) | null | undefined>>;
1332
+ }, "strip", z.ZodTypeAny, {
1333
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
1334
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
1335
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
1336
+ }, {
1337
+ content_max_width?: unknown;
1338
+ block_gap?: unknown;
1339
+ section_gap?: unknown;
1340
+ }>>>, {
1341
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
1342
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
1343
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
1344
+ } | undefined, {
1345
+ content_max_width?: unknown;
1346
+ block_gap?: unknown;
1347
+ section_gap?: unknown;
1348
+ } | null | undefined>>;
1349
+ radius: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodType<string, z.ZodTypeDef, string>, z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1350
+ base: string;
1351
+ } & {
1352
+ sm?: string | null | undefined;
1353
+ md?: string | null | undefined;
1354
+ lg?: string | null | undefined;
1355
+ xl?: string | null | undefined;
1356
+ "2xl"?: string | null | undefined;
1357
+ "3xl"?: string | null | undefined;
1358
+ }>]>>>, string | BlogBreakpointMap<string> | undefined, string | ({
1359
+ base: string;
1360
+ } & {
1361
+ sm?: string | null | undefined;
1362
+ md?: string | null | undefined;
1363
+ lg?: string | null | undefined;
1364
+ xl?: string | null | undefined;
1365
+ "2xl"?: string | null | undefined;
1366
+ "3xl"?: string | null | undefined;
1367
+ }) | null | undefined>>;
1368
+ }, "strip", z.ZodTypeAny, {
1369
+ colors?: {
1370
+ link?: string | undefined;
1371
+ text?: string | undefined;
1372
+ surface?: string | undefined;
1373
+ heading?: string | undefined;
1374
+ background?: string | undefined;
1375
+ text_muted?: string | undefined;
1376
+ primary?: string | undefined;
1377
+ primary_foreground?: string | undefined;
1378
+ border?: string | undefined;
1379
+ code_background?: string | undefined;
1380
+ } | undefined;
1381
+ colors_dark?: {
1382
+ link?: string | undefined;
1383
+ text?: string | undefined;
1384
+ surface?: string | undefined;
1385
+ heading?: string | undefined;
1386
+ background?: string | undefined;
1387
+ text_muted?: string | undefined;
1388
+ primary?: string | undefined;
1389
+ primary_foreground?: string | undefined;
1390
+ border?: string | undefined;
1391
+ code_background?: string | undefined;
1392
+ } | undefined;
1393
+ typography?: {
1394
+ heading_family?: string | undefined;
1395
+ body_family?: string | undefined;
1396
+ heading_weight?: number | undefined;
1397
+ body_weight?: number | undefined;
1398
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
1399
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
1400
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
1401
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
1402
+ body_size?: string | BlogBreakpointMap<string> | undefined;
1403
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
1404
+ small_size?: string | BlogBreakpointMap<string> | undefined;
1405
+ heading_letter_spacing?: string | undefined;
1406
+ caption_align?: "center" | "left" | "right" | undefined;
1407
+ } | undefined;
1408
+ spacing?: {
1409
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
1410
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
1411
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
1412
+ } | undefined;
1413
+ radius?: string | BlogBreakpointMap<string> | undefined;
1414
+ }, {
1415
+ colors?: unknown;
1416
+ colors_dark?: unknown;
1417
+ typography?: unknown;
1418
+ spacing?: unknown;
1419
+ radius?: unknown;
1420
+ }>>>, {
1421
+ colors?: {
1422
+ link?: string | undefined;
1423
+ text?: string | undefined;
1424
+ surface?: string | undefined;
1425
+ heading?: string | undefined;
1426
+ background?: string | undefined;
1427
+ text_muted?: string | undefined;
1428
+ primary?: string | undefined;
1429
+ primary_foreground?: string | undefined;
1430
+ border?: string | undefined;
1431
+ code_background?: string | undefined;
1432
+ } | undefined;
1433
+ colors_dark?: {
1434
+ link?: string | undefined;
1435
+ text?: string | undefined;
1436
+ surface?: string | undefined;
1437
+ heading?: string | undefined;
1438
+ background?: string | undefined;
1439
+ text_muted?: string | undefined;
1440
+ primary?: string | undefined;
1441
+ primary_foreground?: string | undefined;
1442
+ border?: string | undefined;
1443
+ code_background?: string | undefined;
1444
+ } | undefined;
1445
+ typography?: {
1446
+ heading_family?: string | undefined;
1447
+ body_family?: string | undefined;
1448
+ heading_weight?: number | undefined;
1449
+ body_weight?: number | undefined;
1450
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
1451
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
1452
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
1453
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
1454
+ body_size?: string | BlogBreakpointMap<string> | undefined;
1455
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
1456
+ small_size?: string | BlogBreakpointMap<string> | undefined;
1457
+ heading_letter_spacing?: string | undefined;
1458
+ caption_align?: "center" | "left" | "right" | undefined;
1459
+ } | undefined;
1460
+ spacing?: {
1461
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
1462
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
1463
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
1464
+ } | undefined;
1465
+ radius?: string | BlogBreakpointMap<string> | undefined;
1466
+ } | undefined, {
1467
+ colors?: unknown;
1468
+ colors_dark?: unknown;
1469
+ typography?: unknown;
1470
+ spacing?: unknown;
1471
+ radius?: unknown;
1472
+ } | null | undefined>>;
1473
+ seo: z.ZodCatch<z.ZodObject<{
1474
+ meta_title: z.ZodCatch<z.ZodString>;
1475
+ meta_description: z.ZodCatch<z.ZodString>;
1476
+ canonical_path: z.ZodCatch<z.ZodString>;
1477
+ og_image: z.ZodCatch<z.ZodNullable<z.ZodString>>;
1478
+ }, "strip", z.ZodTypeAny, {
1479
+ meta_title: string;
1480
+ meta_description: string;
1481
+ canonical_path: string;
1482
+ og_image: string | null;
1483
+ }, {
1484
+ meta_title?: unknown;
1485
+ meta_description?: unknown;
1486
+ canonical_path?: unknown;
1487
+ og_image?: unknown;
1488
+ }>>;
1489
+ jsonld: z.ZodCatch<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1490
+ published_at: z.ZodString;
1491
+ updated_at: z.ZodCatch<z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodString>>, string | null, string | null | undefined>>;
1492
+ version_number: z.ZodCatch<z.ZodNumber>;
1493
+ content_hash: z.ZodString;
1494
+ } & {
1495
+ images: z.ZodCatch<z.ZodEffects<z.ZodArray<z.ZodCatch<z.ZodNullable<z.ZodObject<{
1496
+ id: z.ZodString;
1497
+ url: z.ZodString;
1498
+ alt: z.ZodCatch<z.ZodString>;
1499
+ caption: z.ZodCatch<z.ZodNullable<z.ZodString>>;
1500
+ role: z.ZodCatch<z.ZodEnum<["hero", "inline"]>>;
1501
+ width: z.ZodNumber;
1502
+ height: z.ZodNumber;
1503
+ mime: z.ZodCatch<z.ZodString>;
1504
+ }, "strip", z.ZodTypeAny, {
1505
+ id: string;
1506
+ caption: string | null;
1507
+ url: string;
1508
+ alt: string;
1509
+ width: number;
1510
+ height: number;
1511
+ role: "hero" | "inline";
1512
+ mime: string;
1513
+ }, {
1514
+ id: string;
1515
+ url: string;
1516
+ width: number;
1517
+ height: number;
1518
+ caption?: unknown;
1519
+ alt?: unknown;
1520
+ role?: unknown;
1521
+ mime?: unknown;
1522
+ }>>>, "many">, {
1523
+ id: string;
1524
+ caption: string | null;
1525
+ url: string;
1526
+ alt: string;
1527
+ width: number;
1528
+ height: number;
1529
+ role: "hero" | "inline";
1530
+ mime: string;
1531
+ }[], unknown[]>>;
1532
+ }, "strip", z.ZodTypeAny, {
1533
+ title: string;
1534
+ schema_version: 1;
1535
+ description: string;
1536
+ updated_at: string | null;
1537
+ slug: string;
1538
+ content_hash: string;
1539
+ published_at: string;
1540
+ mdx: string;
1541
+ images: {
1542
+ id: string;
1543
+ caption: string | null;
1544
+ url: string;
1545
+ alt: string;
1546
+ width: number;
1547
+ height: number;
1548
+ role: "hero" | "inline";
1549
+ mime: string;
1550
+ }[];
1551
+ seo: {
1552
+ meta_title: string;
1553
+ meta_description: string;
1554
+ canonical_path: string;
1555
+ og_image: string | null;
1556
+ };
1557
+ jsonld: Record<string, unknown>;
1558
+ version_number: number;
1559
+ theme_overrides?: {
1560
+ colors?: {
1561
+ link?: string | undefined;
1562
+ text?: string | undefined;
1563
+ surface?: string | undefined;
1564
+ heading?: string | undefined;
1565
+ background?: string | undefined;
1566
+ text_muted?: string | undefined;
1567
+ primary?: string | undefined;
1568
+ primary_foreground?: string | undefined;
1569
+ border?: string | undefined;
1570
+ code_background?: string | undefined;
1571
+ } | undefined;
1572
+ colors_dark?: {
1573
+ link?: string | undefined;
1574
+ text?: string | undefined;
1575
+ surface?: string | undefined;
1576
+ heading?: string | undefined;
1577
+ background?: string | undefined;
1578
+ text_muted?: string | undefined;
1579
+ primary?: string | undefined;
1580
+ primary_foreground?: string | undefined;
1581
+ border?: string | undefined;
1582
+ code_background?: string | undefined;
1583
+ } | undefined;
1584
+ typography?: {
1585
+ heading_family?: string | undefined;
1586
+ body_family?: string | undefined;
1587
+ heading_weight?: number | undefined;
1588
+ body_weight?: number | undefined;
1589
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
1590
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
1591
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
1592
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
1593
+ body_size?: string | BlogBreakpointMap<string> | undefined;
1594
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
1595
+ small_size?: string | BlogBreakpointMap<string> | undefined;
1596
+ heading_letter_spacing?: string | undefined;
1597
+ caption_align?: "center" | "left" | "right" | undefined;
1598
+ } | undefined;
1599
+ spacing?: {
1600
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
1601
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
1602
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
1603
+ } | undefined;
1604
+ radius?: string | BlogBreakpointMap<string> | undefined;
1605
+ } | undefined;
1606
+ }, {
1607
+ title: string;
1608
+ schema_version: 1;
1609
+ slug: string;
1610
+ content_hash: string;
1611
+ published_at: string;
1612
+ mdx: string;
1613
+ description?: unknown;
1614
+ updated_at?: unknown;
1615
+ images?: unknown;
1616
+ theme_overrides?: unknown;
1617
+ seo?: unknown;
1618
+ jsonld?: unknown;
1619
+ version_number?: unknown;
1620
+ }>;
1621
+ type BlogHeroImage = z.infer<typeof blogHeroImageSchema>;
1622
+ type BlogManifestEntry = z.infer<typeof blogManifestEntrySchema>;
1623
+ type BlogManifest = z.infer<typeof blogManifestSchema>;
1624
+ type BlogImage = z.infer<typeof blogImageSchema>;
1625
+ type BlogSeo = z.infer<typeof blogSeoSchema>;
1626
+ type BlogPostContent = z.infer<typeof blogPostContentSchema>;
1627
+ /** Tolerant parse of a raw manifest object — `null` only when unusable. Never throws. */
1628
+ declare function parseBlogManifest(raw: unknown): BlogManifest | null;
1629
+ /** Tolerant parse of a raw post-content object — `null` only when unusable. Never throws. */
1630
+ declare function parseBlogPostContent(raw: unknown): BlogPostContent | null;
1631
+
1632
+ /**
1633
+ * Blog CDN client — read-only fetchers over the published blog objects.
1634
+ *
1635
+ * Designed for Next.js server components but framework-free: the Next-specific
1636
+ * `next.revalidate` fetch extension is expressed as a local structural type
1637
+ * ({@link NextFetchInit}) so we never import `next` types and a plain
1638
+ * `fetch` (Node, tests) simply ignores the extra property.
1639
+ *
1640
+ * Error policy: reads are best-effort. Network failures, non-2xx responses,
1641
+ * and unparseable bodies all resolve to `null` / `[]` — a blog page must
1642
+ * degrade, never crash the host site.
1643
+ */
1644
+ /** `RequestInit` + the Next.js data-cache extension (structural — no `next` import). */
1645
+ type NextFetchInit = RequestInit & {
1646
+ next?: {
1647
+ revalidate?: number | false;
1648
+ tags?: string[];
1649
+ };
1650
+ };
1651
+ interface BlogClientConfig {
1652
+ /**
1653
+ * Reserved for future authenticated reads (draft previews fetched from the
1654
+ * API instead of the public CDN). Published content is world-readable, so
1655
+ * the key is currently NOT sent — but it is part of the config contract so
1656
+ * client sites don't need a breaking config change when draft reads ship.
1657
+ */
1658
+ apiKey: string;
1659
+ /** CDN origin, e.g. `https://cdn.aranova.io` (trailing slash tolerated). */
1660
+ cdnBaseUrl: string;
1661
+ /** Opaque per-business namespace under `blogs/v1/`. */
1662
+ namespace: string;
1663
+ /** Manifest ISR revalidate window (seconds). Default 300. */
1664
+ manifestRevalidateSeconds?: number;
1665
+ /** Injectable for tests / non-global-fetch runtimes. */
1666
+ fetchImpl?: typeof fetch;
1667
+ }
1668
+ interface BlogClient {
1669
+ /** The mutable manifest (index of published posts), or `null` on any miss. */
1670
+ getManifest(): Promise<BlogManifest | null>;
1671
+ /** Manifest entries sorted `published_at` desc. `[]` on any miss. */
1672
+ listPosts(): Promise<BlogManifestEntry[]>;
1673
+ /** Full post content for a slug, or `null` when unknown/unfetchable. */
1674
+ getPost(slug: string): Promise<BlogPostContent | null>;
1675
+ /** `generateStaticParams()`-shaped slug list. */
1676
+ getStaticParams(): Promise<Array<{
1677
+ slug: string;
1678
+ }>>;
1679
+ }
1680
+ declare function createBlogClient(config: BlogClientConfig): BlogClient;
1681
+
1682
+ /**
1683
+ * Blog theme — the typed styling contract for CDN-published blog posts.
1684
+ *
1685
+ * Three layers resolve into one fully-populated {@link BlogTheme}
1686
+ * (later layers win):
1687
+ *
1688
+ * 1. {@link BASE_BLOG_THEME} — neutral editorial defaults (always complete)
1689
+ * 2. the client-registered default theme (client code, per site)
1690
+ * 3. per-post `theme_overrides` from the content JSON (backend-authored)
1691
+ *
1692
+ * Because layers 2 and 3 cross a trust boundary (they end up in inline
1693
+ * `style` attributes and CSS custom properties), **sanitization lives in the
1694
+ * zod schemas themselves**: every value is validated against a strict grammar
1695
+ * (hex/functional colors, unit lengths, clamped weights, token-list font
1696
+ * families) and any invalid individual value is DROPPED via `.catch(undefined)`
1697
+ * — never passed through to CSS.
1698
+ */
1699
+ /**
1700
+ * Fixed, SDK-owned breakpoints (mobile-first `min-width` px). Ordered smallest
1701
+ * to largest — CSS emission and any future style build must iterate in this
1702
+ * order so later (wider) breakpoints cascade over earlier ones.
1703
+ */
1704
+ declare const BLOG_BREAKPOINTS: readonly ["sm", "md", "lg", "xl", "2xl", "3xl"];
1705
+ type BlogBreakpoint = (typeof BLOG_BREAKPOINTS)[number];
1706
+ declare const BLOG_BREAKPOINT_MIN_WIDTHS_PX: {
1707
+ readonly sm: 640;
1708
+ readonly md: 768;
1709
+ readonly lg: 1024;
1710
+ readonly xl: 1280;
1711
+ readonly "2xl": 1536;
1712
+ readonly "3xl": 1920;
1713
+ };
1714
+ /** A breakpoint map: `base` is required, wider breakpoints are optional. */
1715
+ type BlogBreakpointMap<T = string> = {
1716
+ base: T;
1717
+ } & {
1718
+ [K in BlogBreakpoint]?: T | undefined;
1719
+ };
1720
+ /**
1721
+ * A dimensional theme token: a plain scalar, or a breakpoint map that
1722
+ * resolves mobile-first (`base` below `sm`, each key from its min-width up).
1723
+ */
1724
+ type ResponsiveValue<T = string> = T | BlogBreakpointMap<T>;
1725
+ /**
1726
+ * Normalize a {@link ResponsiveValue} to its map form. The ONE place the
1727
+ * scalar-vs-map distinction is handled — downstream consumers (CSS var
1728
+ * emission, the style build) work off the map and never `typeof`-sniff.
1729
+ */
1730
+ declare function toBlogBreakpointMap<T extends string | number>(value: ResponsiveValue<T>): BlogBreakpointMap<T>;
1731
+ type NullishField<S extends z.ZodTypeAny> = z.ZodEffects<z.ZodOptional<z.ZodNullable<S>>, z.output<S> | undefined, z.input<S> | null | undefined>;
1732
+ declare function nullishField<S extends z.ZodTypeAny>(schema: S): NullishField<S>;
1733
+ type ScalarValueSchema = z.ZodType<string, z.ZodTypeDef, string>;
1734
+ type BreakpointMapSchema = z.ZodType<BlogBreakpointMap<string>, z.ZodTypeDef, {
1735
+ base: string;
1736
+ } & {
1737
+ [K in BlogBreakpoint]?: string | null | undefined;
1738
+ }>;
1739
+ type ResponsiveSchema = z.ZodUnion<[ScalarValueSchema, BreakpointMapSchema]>;
1740
+ /**
1741
+ * Schema factory for a responsive token: the token's scalar grammar OR a
1742
+ * {@link BlogBreakpointMap} of it. A map missing/failing `base` fails the
1743
+ * whole union (override parsing then drops the entire field via the
1744
+ * field-level `.catch`); an invalid non-base breakpoint value is dropped
1745
+ * per-value while the rest of the map survives.
1746
+ */
1747
+ declare function responsive(valueSchema: ScalarValueSchema): ResponsiveSchema;
1748
+ declare const blogThemeColorsSchema: z.ZodObject<{
1749
+ heading: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1750
+ background: z.ZodEffects<z.ZodString, string, string>;
1751
+ surface: z.ZodEffects<z.ZodString, string, string>;
1752
+ text: z.ZodEffects<z.ZodString, string, string>;
1753
+ text_muted: z.ZodEffects<z.ZodString, string, string>;
1754
+ primary: z.ZodEffects<z.ZodString, string, string>;
1755
+ primary_foreground: z.ZodEffects<z.ZodString, string, string>;
1756
+ link: z.ZodEffects<z.ZodString, string, string>;
1757
+ border: z.ZodEffects<z.ZodString, string, string>;
1758
+ code_background: z.ZodEffects<z.ZodString, string, string>;
1759
+ }, "strip", z.ZodTypeAny, {
1760
+ link: string;
1761
+ text: string;
1762
+ surface: string;
1763
+ background: string;
1764
+ text_muted: string;
1765
+ primary: string;
1766
+ primary_foreground: string;
1767
+ border: string;
1768
+ code_background: string;
1769
+ heading?: string | undefined;
1770
+ }, {
1771
+ link: string;
1772
+ text: string;
1773
+ surface: string;
1774
+ background: string;
1775
+ text_muted: string;
1776
+ primary: string;
1777
+ primary_foreground: string;
1778
+ border: string;
1779
+ code_background: string;
1780
+ heading?: string | null | undefined;
1781
+ }>;
1782
+ declare const blogThemeTypographySchema: z.ZodObject<{
1783
+ heading_family: z.ZodEffects<z.ZodString, string, string>;
1784
+ body_family: z.ZodEffects<z.ZodString, string, string>;
1785
+ heading_weight: z.ZodNumber;
1786
+ body_weight: z.ZodNumber;
1787
+ h1_size: ResponsiveSchema;
1788
+ h2_size: ResponsiveSchema;
1789
+ h3_size: ResponsiveSchema;
1790
+ h4_size: ResponsiveSchema;
1791
+ body_size: ResponsiveSchema;
1792
+ body_line_height: ResponsiveSchema;
1793
+ small_size: ResponsiveSchema;
1794
+ heading_letter_spacing: z.ZodString;
1795
+ caption_align: z.ZodEnum<["left", "center", "right"]>;
1796
+ }, "strip", z.ZodTypeAny, {
1797
+ heading_family: string;
1798
+ body_family: string;
1799
+ heading_weight: number;
1800
+ body_weight: number;
1801
+ h1_size: string | BlogBreakpointMap<string>;
1802
+ h2_size: string | BlogBreakpointMap<string>;
1803
+ h3_size: string | BlogBreakpointMap<string>;
1804
+ h4_size: string | BlogBreakpointMap<string>;
1805
+ body_size: string | BlogBreakpointMap<string>;
1806
+ body_line_height: string | BlogBreakpointMap<string>;
1807
+ small_size: string | BlogBreakpointMap<string>;
1808
+ heading_letter_spacing: string;
1809
+ caption_align: "center" | "left" | "right";
1810
+ }, {
1811
+ heading_family: string;
1812
+ body_family: string;
1813
+ heading_weight: number;
1814
+ body_weight: number;
1815
+ h1_size: string | ({
1816
+ base: string;
1817
+ } & {
1818
+ sm?: string | null | undefined;
1819
+ md?: string | null | undefined;
1820
+ lg?: string | null | undefined;
1821
+ xl?: string | null | undefined;
1822
+ "2xl"?: string | null | undefined;
1823
+ "3xl"?: string | null | undefined;
1824
+ });
1825
+ h2_size: string | ({
1826
+ base: string;
1827
+ } & {
1828
+ sm?: string | null | undefined;
1829
+ md?: string | null | undefined;
1830
+ lg?: string | null | undefined;
1831
+ xl?: string | null | undefined;
1832
+ "2xl"?: string | null | undefined;
1833
+ "3xl"?: string | null | undefined;
1834
+ });
1835
+ h3_size: string | ({
1836
+ base: string;
1837
+ } & {
1838
+ sm?: string | null | undefined;
1839
+ md?: string | null | undefined;
1840
+ lg?: string | null | undefined;
1841
+ xl?: string | null | undefined;
1842
+ "2xl"?: string | null | undefined;
1843
+ "3xl"?: string | null | undefined;
1844
+ });
1845
+ h4_size: string | ({
1846
+ base: string;
1847
+ } & {
1848
+ sm?: string | null | undefined;
1849
+ md?: string | null | undefined;
1850
+ lg?: string | null | undefined;
1851
+ xl?: string | null | undefined;
1852
+ "2xl"?: string | null | undefined;
1853
+ "3xl"?: string | null | undefined;
1854
+ });
1855
+ body_size: string | ({
1856
+ base: string;
1857
+ } & {
1858
+ sm?: string | null | undefined;
1859
+ md?: string | null | undefined;
1860
+ lg?: string | null | undefined;
1861
+ xl?: string | null | undefined;
1862
+ "2xl"?: string | null | undefined;
1863
+ "3xl"?: string | null | undefined;
1864
+ });
1865
+ body_line_height: string | ({
1866
+ base: string;
1867
+ } & {
1868
+ sm?: string | null | undefined;
1869
+ md?: string | null | undefined;
1870
+ lg?: string | null | undefined;
1871
+ xl?: string | null | undefined;
1872
+ "2xl"?: string | null | undefined;
1873
+ "3xl"?: string | null | undefined;
1874
+ });
1875
+ small_size: string | ({
1876
+ base: string;
1877
+ } & {
1878
+ sm?: string | null | undefined;
1879
+ md?: string | null | undefined;
1880
+ lg?: string | null | undefined;
1881
+ xl?: string | null | undefined;
1882
+ "2xl"?: string | null | undefined;
1883
+ "3xl"?: string | null | undefined;
1884
+ });
1885
+ heading_letter_spacing: string;
1886
+ caption_align: "center" | "left" | "right";
1887
+ }>;
1888
+ declare const blogThemeSpacingSchema: z.ZodObject<{
1889
+ content_max_width: ResponsiveSchema;
1890
+ block_gap: ResponsiveSchema;
1891
+ section_gap: ResponsiveSchema;
1892
+ }, "strip", z.ZodTypeAny, {
1893
+ content_max_width: string | BlogBreakpointMap<string>;
1894
+ block_gap: string | BlogBreakpointMap<string>;
1895
+ section_gap: string | BlogBreakpointMap<string>;
1896
+ }, {
1897
+ content_max_width: string | ({
1898
+ base: string;
1899
+ } & {
1900
+ sm?: string | null | undefined;
1901
+ md?: string | null | undefined;
1902
+ lg?: string | null | undefined;
1903
+ xl?: string | null | undefined;
1904
+ "2xl"?: string | null | undefined;
1905
+ "3xl"?: string | null | undefined;
1906
+ });
1907
+ block_gap: string | ({
1908
+ base: string;
1909
+ } & {
1910
+ sm?: string | null | undefined;
1911
+ md?: string | null | undefined;
1912
+ lg?: string | null | undefined;
1913
+ xl?: string | null | undefined;
1914
+ "2xl"?: string | null | undefined;
1915
+ "3xl"?: string | null | undefined;
1916
+ });
1917
+ section_gap: string | ({
1918
+ base: string;
1919
+ } & {
1920
+ sm?: string | null | undefined;
1921
+ md?: string | null | undefined;
1922
+ lg?: string | null | undefined;
1923
+ xl?: string | null | undefined;
1924
+ "2xl"?: string | null | undefined;
1925
+ "3xl"?: string | null | undefined;
1926
+ });
1927
+ }>;
1928
+ declare const blogThemeSchema: z.ZodObject<{
1929
+ colors: z.ZodObject<{
1930
+ heading: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1931
+ background: z.ZodEffects<z.ZodString, string, string>;
1932
+ surface: z.ZodEffects<z.ZodString, string, string>;
1933
+ text: z.ZodEffects<z.ZodString, string, string>;
1934
+ text_muted: z.ZodEffects<z.ZodString, string, string>;
1935
+ primary: z.ZodEffects<z.ZodString, string, string>;
1936
+ primary_foreground: z.ZodEffects<z.ZodString, string, string>;
1937
+ link: z.ZodEffects<z.ZodString, string, string>;
1938
+ border: z.ZodEffects<z.ZodString, string, string>;
1939
+ code_background: z.ZodEffects<z.ZodString, string, string>;
1940
+ }, "strip", z.ZodTypeAny, {
1941
+ link: string;
1942
+ text: string;
1943
+ surface: string;
1944
+ background: string;
1945
+ text_muted: string;
1946
+ primary: string;
1947
+ primary_foreground: string;
1948
+ border: string;
1949
+ code_background: string;
1950
+ heading?: string | undefined;
1951
+ }, {
1952
+ link: string;
1953
+ text: string;
1954
+ surface: string;
1955
+ background: string;
1956
+ text_muted: string;
1957
+ primary: string;
1958
+ primary_foreground: string;
1959
+ border: string;
1960
+ code_background: string;
1961
+ heading?: string | null | undefined;
1962
+ }>;
1963
+ colors_dark: NullishField<z.ZodObject<{
1964
+ readonly background: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1965
+ readonly surface: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1966
+ readonly text: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1967
+ readonly text_muted: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1968
+ readonly primary: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1969
+ readonly primary_foreground: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1970
+ readonly link: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1971
+ readonly border: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1972
+ readonly code_background: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1973
+ readonly heading: NullishField<z.ZodEffects<z.ZodString, string, string>>;
1974
+ }, "strip", z.ZodTypeAny, {
1975
+ link?: string | undefined;
1976
+ text?: string | undefined;
1977
+ surface?: string | undefined;
1978
+ heading?: string | undefined;
1979
+ background?: string | undefined;
1980
+ text_muted?: string | undefined;
1981
+ primary?: string | undefined;
1982
+ primary_foreground?: string | undefined;
1983
+ border?: string | undefined;
1984
+ code_background?: string | undefined;
1985
+ }, {
1986
+ link?: string | null | undefined;
1987
+ text?: string | null | undefined;
1988
+ surface?: string | null | undefined;
1989
+ heading?: string | null | undefined;
1990
+ background?: string | null | undefined;
1991
+ text_muted?: string | null | undefined;
1992
+ primary?: string | null | undefined;
1993
+ primary_foreground?: string | null | undefined;
1994
+ border?: string | null | undefined;
1995
+ code_background?: string | null | undefined;
1996
+ }>>;
1997
+ typography: z.ZodObject<{
1998
+ heading_family: z.ZodEffects<z.ZodString, string, string>;
1999
+ body_family: z.ZodEffects<z.ZodString, string, string>;
2000
+ heading_weight: z.ZodNumber;
2001
+ body_weight: z.ZodNumber;
2002
+ h1_size: ResponsiveSchema;
2003
+ h2_size: ResponsiveSchema;
2004
+ h3_size: ResponsiveSchema;
2005
+ h4_size: ResponsiveSchema;
2006
+ body_size: ResponsiveSchema;
2007
+ body_line_height: ResponsiveSchema;
2008
+ small_size: ResponsiveSchema;
2009
+ heading_letter_spacing: z.ZodString;
2010
+ caption_align: z.ZodEnum<["left", "center", "right"]>;
2011
+ }, "strip", z.ZodTypeAny, {
2012
+ heading_family: string;
2013
+ body_family: string;
2014
+ heading_weight: number;
2015
+ body_weight: number;
2016
+ h1_size: string | BlogBreakpointMap<string>;
2017
+ h2_size: string | BlogBreakpointMap<string>;
2018
+ h3_size: string | BlogBreakpointMap<string>;
2019
+ h4_size: string | BlogBreakpointMap<string>;
2020
+ body_size: string | BlogBreakpointMap<string>;
2021
+ body_line_height: string | BlogBreakpointMap<string>;
2022
+ small_size: string | BlogBreakpointMap<string>;
2023
+ heading_letter_spacing: string;
2024
+ caption_align: "center" | "left" | "right";
2025
+ }, {
2026
+ heading_family: string;
2027
+ body_family: string;
2028
+ heading_weight: number;
2029
+ body_weight: number;
2030
+ h1_size: string | ({
2031
+ base: string;
2032
+ } & {
2033
+ sm?: string | null | undefined;
2034
+ md?: string | null | undefined;
2035
+ lg?: string | null | undefined;
2036
+ xl?: string | null | undefined;
2037
+ "2xl"?: string | null | undefined;
2038
+ "3xl"?: string | null | undefined;
2039
+ });
2040
+ h2_size: string | ({
2041
+ base: string;
2042
+ } & {
2043
+ sm?: string | null | undefined;
2044
+ md?: string | null | undefined;
2045
+ lg?: string | null | undefined;
2046
+ xl?: string | null | undefined;
2047
+ "2xl"?: string | null | undefined;
2048
+ "3xl"?: string | null | undefined;
2049
+ });
2050
+ h3_size: string | ({
2051
+ base: string;
2052
+ } & {
2053
+ sm?: string | null | undefined;
2054
+ md?: string | null | undefined;
2055
+ lg?: string | null | undefined;
2056
+ xl?: string | null | undefined;
2057
+ "2xl"?: string | null | undefined;
2058
+ "3xl"?: string | null | undefined;
2059
+ });
2060
+ h4_size: string | ({
2061
+ base: string;
2062
+ } & {
2063
+ sm?: string | null | undefined;
2064
+ md?: string | null | undefined;
2065
+ lg?: string | null | undefined;
2066
+ xl?: string | null | undefined;
2067
+ "2xl"?: string | null | undefined;
2068
+ "3xl"?: string | null | undefined;
2069
+ });
2070
+ body_size: string | ({
2071
+ base: string;
2072
+ } & {
2073
+ sm?: string | null | undefined;
2074
+ md?: string | null | undefined;
2075
+ lg?: string | null | undefined;
2076
+ xl?: string | null | undefined;
2077
+ "2xl"?: string | null | undefined;
2078
+ "3xl"?: string | null | undefined;
2079
+ });
2080
+ body_line_height: string | ({
2081
+ base: string;
2082
+ } & {
2083
+ sm?: string | null | undefined;
2084
+ md?: string | null | undefined;
2085
+ lg?: string | null | undefined;
2086
+ xl?: string | null | undefined;
2087
+ "2xl"?: string | null | undefined;
2088
+ "3xl"?: string | null | undefined;
2089
+ });
2090
+ small_size: string | ({
2091
+ base: string;
2092
+ } & {
2093
+ sm?: string | null | undefined;
2094
+ md?: string | null | undefined;
2095
+ lg?: string | null | undefined;
2096
+ xl?: string | null | undefined;
2097
+ "2xl"?: string | null | undefined;
2098
+ "3xl"?: string | null | undefined;
2099
+ });
2100
+ heading_letter_spacing: string;
2101
+ caption_align: "center" | "left" | "right";
2102
+ }>;
2103
+ spacing: z.ZodObject<{
2104
+ content_max_width: ResponsiveSchema;
2105
+ block_gap: ResponsiveSchema;
2106
+ section_gap: ResponsiveSchema;
2107
+ }, "strip", z.ZodTypeAny, {
2108
+ content_max_width: string | BlogBreakpointMap<string>;
2109
+ block_gap: string | BlogBreakpointMap<string>;
2110
+ section_gap: string | BlogBreakpointMap<string>;
2111
+ }, {
2112
+ content_max_width: string | ({
2113
+ base: string;
2114
+ } & {
2115
+ sm?: string | null | undefined;
2116
+ md?: string | null | undefined;
2117
+ lg?: string | null | undefined;
2118
+ xl?: string | null | undefined;
2119
+ "2xl"?: string | null | undefined;
2120
+ "3xl"?: string | null | undefined;
2121
+ });
2122
+ block_gap: string | ({
2123
+ base: string;
2124
+ } & {
2125
+ sm?: string | null | undefined;
2126
+ md?: string | null | undefined;
2127
+ lg?: string | null | undefined;
2128
+ xl?: string | null | undefined;
2129
+ "2xl"?: string | null | undefined;
2130
+ "3xl"?: string | null | undefined;
2131
+ });
2132
+ section_gap: string | ({
2133
+ base: string;
2134
+ } & {
2135
+ sm?: string | null | undefined;
2136
+ md?: string | null | undefined;
2137
+ lg?: string | null | undefined;
2138
+ xl?: string | null | undefined;
2139
+ "2xl"?: string | null | undefined;
2140
+ "3xl"?: string | null | undefined;
2141
+ });
2142
+ }>;
2143
+ radius: ResponsiveSchema;
2144
+ }, "strip", z.ZodTypeAny, {
2145
+ colors: {
2146
+ link: string;
2147
+ text: string;
2148
+ surface: string;
2149
+ background: string;
2150
+ text_muted: string;
2151
+ primary: string;
2152
+ primary_foreground: string;
2153
+ border: string;
2154
+ code_background: string;
2155
+ heading?: string | undefined;
2156
+ };
2157
+ typography: {
2158
+ heading_family: string;
2159
+ body_family: string;
2160
+ heading_weight: number;
2161
+ body_weight: number;
2162
+ h1_size: string | BlogBreakpointMap<string>;
2163
+ h2_size: string | BlogBreakpointMap<string>;
2164
+ h3_size: string | BlogBreakpointMap<string>;
2165
+ h4_size: string | BlogBreakpointMap<string>;
2166
+ body_size: string | BlogBreakpointMap<string>;
2167
+ body_line_height: string | BlogBreakpointMap<string>;
2168
+ small_size: string | BlogBreakpointMap<string>;
2169
+ heading_letter_spacing: string;
2170
+ caption_align: "center" | "left" | "right";
2171
+ };
2172
+ spacing: {
2173
+ content_max_width: string | BlogBreakpointMap<string>;
2174
+ block_gap: string | BlogBreakpointMap<string>;
2175
+ section_gap: string | BlogBreakpointMap<string>;
2176
+ };
2177
+ radius: string | BlogBreakpointMap<string>;
2178
+ colors_dark?: {
2179
+ link?: string | undefined;
2180
+ text?: string | undefined;
2181
+ surface?: string | undefined;
2182
+ heading?: string | undefined;
2183
+ background?: string | undefined;
2184
+ text_muted?: string | undefined;
2185
+ primary?: string | undefined;
2186
+ primary_foreground?: string | undefined;
2187
+ border?: string | undefined;
2188
+ code_background?: string | undefined;
2189
+ } | undefined;
2190
+ }, {
2191
+ colors: {
2192
+ link: string;
2193
+ text: string;
2194
+ surface: string;
2195
+ background: string;
2196
+ text_muted: string;
2197
+ primary: string;
2198
+ primary_foreground: string;
2199
+ border: string;
2200
+ code_background: string;
2201
+ heading?: string | null | undefined;
2202
+ };
2203
+ typography: {
2204
+ heading_family: string;
2205
+ body_family: string;
2206
+ heading_weight: number;
2207
+ body_weight: number;
2208
+ h1_size: string | ({
2209
+ base: string;
2210
+ } & {
2211
+ sm?: string | null | undefined;
2212
+ md?: string | null | undefined;
2213
+ lg?: string | null | undefined;
2214
+ xl?: string | null | undefined;
2215
+ "2xl"?: string | null | undefined;
2216
+ "3xl"?: string | null | undefined;
2217
+ });
2218
+ h2_size: string | ({
2219
+ base: string;
2220
+ } & {
2221
+ sm?: string | null | undefined;
2222
+ md?: string | null | undefined;
2223
+ lg?: string | null | undefined;
2224
+ xl?: string | null | undefined;
2225
+ "2xl"?: string | null | undefined;
2226
+ "3xl"?: string | null | undefined;
2227
+ });
2228
+ h3_size: string | ({
2229
+ base: string;
2230
+ } & {
2231
+ sm?: string | null | undefined;
2232
+ md?: string | null | undefined;
2233
+ lg?: string | null | undefined;
2234
+ xl?: string | null | undefined;
2235
+ "2xl"?: string | null | undefined;
2236
+ "3xl"?: string | null | undefined;
2237
+ });
2238
+ h4_size: string | ({
2239
+ base: string;
2240
+ } & {
2241
+ sm?: string | null | undefined;
2242
+ md?: string | null | undefined;
2243
+ lg?: string | null | undefined;
2244
+ xl?: string | null | undefined;
2245
+ "2xl"?: string | null | undefined;
2246
+ "3xl"?: string | null | undefined;
2247
+ });
2248
+ body_size: string | ({
2249
+ base: string;
2250
+ } & {
2251
+ sm?: string | null | undefined;
2252
+ md?: string | null | undefined;
2253
+ lg?: string | null | undefined;
2254
+ xl?: string | null | undefined;
2255
+ "2xl"?: string | null | undefined;
2256
+ "3xl"?: string | null | undefined;
2257
+ });
2258
+ body_line_height: string | ({
2259
+ base: string;
2260
+ } & {
2261
+ sm?: string | null | undefined;
2262
+ md?: string | null | undefined;
2263
+ lg?: string | null | undefined;
2264
+ xl?: string | null | undefined;
2265
+ "2xl"?: string | null | undefined;
2266
+ "3xl"?: string | null | undefined;
2267
+ });
2268
+ small_size: string | ({
2269
+ base: string;
2270
+ } & {
2271
+ sm?: string | null | undefined;
2272
+ md?: string | null | undefined;
2273
+ lg?: string | null | undefined;
2274
+ xl?: string | null | undefined;
2275
+ "2xl"?: string | null | undefined;
2276
+ "3xl"?: string | null | undefined;
2277
+ });
2278
+ heading_letter_spacing: string;
2279
+ caption_align: "center" | "left" | "right";
2280
+ };
2281
+ spacing: {
2282
+ content_max_width: string | ({
2283
+ base: string;
2284
+ } & {
2285
+ sm?: string | null | undefined;
2286
+ md?: string | null | undefined;
2287
+ lg?: string | null | undefined;
2288
+ xl?: string | null | undefined;
2289
+ "2xl"?: string | null | undefined;
2290
+ "3xl"?: string | null | undefined;
2291
+ });
2292
+ block_gap: string | ({
2293
+ base: string;
2294
+ } & {
2295
+ sm?: string | null | undefined;
2296
+ md?: string | null | undefined;
2297
+ lg?: string | null | undefined;
2298
+ xl?: string | null | undefined;
2299
+ "2xl"?: string | null | undefined;
2300
+ "3xl"?: string | null | undefined;
2301
+ });
2302
+ section_gap: string | ({
2303
+ base: string;
2304
+ } & {
2305
+ sm?: string | null | undefined;
2306
+ md?: string | null | undefined;
2307
+ lg?: string | null | undefined;
2308
+ xl?: string | null | undefined;
2309
+ "2xl"?: string | null | undefined;
2310
+ "3xl"?: string | null | undefined;
2311
+ });
2312
+ };
2313
+ radius: string | ({
2314
+ base: string;
2315
+ } & {
2316
+ sm?: string | null | undefined;
2317
+ md?: string | null | undefined;
2318
+ lg?: string | null | undefined;
2319
+ xl?: string | null | undefined;
2320
+ "2xl"?: string | null | undefined;
2321
+ "3xl"?: string | null | undefined;
2322
+ });
2323
+ colors_dark?: {
2324
+ link?: string | null | undefined;
2325
+ text?: string | null | undefined;
2326
+ surface?: string | null | undefined;
2327
+ heading?: string | null | undefined;
2328
+ background?: string | null | undefined;
2329
+ text_muted?: string | null | undefined;
2330
+ primary?: string | null | undefined;
2331
+ primary_foreground?: string | null | undefined;
2332
+ border?: string | null | undefined;
2333
+ code_background?: string | null | undefined;
2334
+ } | null | undefined;
2335
+ }>;
2336
+ type BlogThemeColors = z.infer<typeof blogThemeColorsSchema>;
2337
+ type BlogThemeTypography = z.infer<typeof blogThemeTypographySchema>;
2338
+ type BlogThemeSpacing = z.infer<typeof blogThemeSpacingSchema>;
2339
+ type BlogTheme = z.infer<typeof blogThemeSchema>;
2340
+ declare const blogThemeOverrideSchema: z.ZodObject<{
2341
+ colors: z.ZodCatch<NullishField<z.ZodObject<{
2342
+ readonly background: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2343
+ readonly surface: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2344
+ readonly text: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2345
+ readonly text_muted: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2346
+ readonly primary: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2347
+ readonly primary_foreground: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2348
+ readonly link: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2349
+ readonly border: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2350
+ readonly code_background: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2351
+ readonly heading: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2352
+ }, "strip", z.ZodTypeAny, {
2353
+ link?: string | undefined;
2354
+ text?: string | undefined;
2355
+ surface?: string | undefined;
2356
+ heading?: string | undefined;
2357
+ background?: string | undefined;
2358
+ text_muted?: string | undefined;
2359
+ primary?: string | undefined;
2360
+ primary_foreground?: string | undefined;
2361
+ border?: string | undefined;
2362
+ code_background?: string | undefined;
2363
+ }, {
2364
+ link?: unknown;
2365
+ text?: unknown;
2366
+ surface?: unknown;
2367
+ heading?: unknown;
2368
+ background?: unknown;
2369
+ text_muted?: unknown;
2370
+ primary?: unknown;
2371
+ primary_foreground?: unknown;
2372
+ border?: unknown;
2373
+ code_background?: unknown;
2374
+ }>>>;
2375
+ colors_dark: z.ZodCatch<NullishField<z.ZodObject<{
2376
+ readonly background: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2377
+ readonly surface: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2378
+ readonly text: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2379
+ readonly text_muted: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2380
+ readonly primary: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2381
+ readonly primary_foreground: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2382
+ readonly link: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2383
+ readonly border: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2384
+ readonly code_background: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2385
+ readonly heading: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2386
+ }, "strip", z.ZodTypeAny, {
2387
+ link?: string | undefined;
2388
+ text?: string | undefined;
2389
+ surface?: string | undefined;
2390
+ heading?: string | undefined;
2391
+ background?: string | undefined;
2392
+ text_muted?: string | undefined;
2393
+ primary?: string | undefined;
2394
+ primary_foreground?: string | undefined;
2395
+ border?: string | undefined;
2396
+ code_background?: string | undefined;
2397
+ }, {
2398
+ link?: unknown;
2399
+ text?: unknown;
2400
+ surface?: unknown;
2401
+ heading?: unknown;
2402
+ background?: unknown;
2403
+ text_muted?: unknown;
2404
+ primary?: unknown;
2405
+ primary_foreground?: unknown;
2406
+ border?: unknown;
2407
+ code_background?: unknown;
2408
+ }>>>;
2409
+ typography: z.ZodCatch<NullishField<z.ZodObject<{
2410
+ heading_family: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2411
+ body_family: z.ZodCatch<NullishField<z.ZodEffects<z.ZodString, string, string>>>;
2412
+ heading_weight: z.ZodCatch<NullishField<z.ZodNumber>>;
2413
+ body_weight: z.ZodCatch<NullishField<z.ZodNumber>>;
2414
+ h1_size: z.ZodCatch<NullishField<ResponsiveSchema>>;
2415
+ h2_size: z.ZodCatch<NullishField<ResponsiveSchema>>;
2416
+ h3_size: z.ZodCatch<NullishField<ResponsiveSchema>>;
2417
+ h4_size: z.ZodCatch<NullishField<ResponsiveSchema>>;
2418
+ body_size: z.ZodCatch<NullishField<ResponsiveSchema>>;
2419
+ body_line_height: z.ZodCatch<NullishField<ResponsiveSchema>>;
2420
+ small_size: z.ZodCatch<NullishField<ResponsiveSchema>>;
2421
+ heading_letter_spacing: z.ZodCatch<NullishField<z.ZodString>>;
2422
+ caption_align: z.ZodCatch<NullishField<z.ZodEnum<["left", "center", "right"]>>>;
2423
+ }, "strip", z.ZodTypeAny, {
2424
+ heading_family?: string | undefined;
2425
+ body_family?: string | undefined;
2426
+ heading_weight?: number | undefined;
2427
+ body_weight?: number | undefined;
2428
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
2429
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
2430
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
2431
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
2432
+ body_size?: string | BlogBreakpointMap<string> | undefined;
2433
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
2434
+ small_size?: string | BlogBreakpointMap<string> | undefined;
2435
+ heading_letter_spacing?: string | undefined;
2436
+ caption_align?: "center" | "left" | "right" | undefined;
2437
+ }, {
2438
+ heading_family?: unknown;
2439
+ body_family?: unknown;
2440
+ heading_weight?: unknown;
2441
+ body_weight?: unknown;
2442
+ h1_size?: unknown;
2443
+ h2_size?: unknown;
2444
+ h3_size?: unknown;
2445
+ h4_size?: unknown;
2446
+ body_size?: unknown;
2447
+ body_line_height?: unknown;
2448
+ small_size?: unknown;
2449
+ heading_letter_spacing?: unknown;
2450
+ caption_align?: unknown;
2451
+ }>>>;
2452
+ spacing: z.ZodCatch<NullishField<z.ZodObject<{
2453
+ content_max_width: z.ZodCatch<NullishField<ResponsiveSchema>>;
2454
+ block_gap: z.ZodCatch<NullishField<ResponsiveSchema>>;
2455
+ section_gap: z.ZodCatch<NullishField<ResponsiveSchema>>;
2456
+ }, "strip", z.ZodTypeAny, {
2457
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
2458
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
2459
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
2460
+ }, {
2461
+ content_max_width?: unknown;
2462
+ block_gap?: unknown;
2463
+ section_gap?: unknown;
2464
+ }>>>;
2465
+ radius: z.ZodCatch<NullishField<ResponsiveSchema>>;
2466
+ }, "strip", z.ZodTypeAny, {
2467
+ colors?: {
2468
+ link?: string | undefined;
2469
+ text?: string | undefined;
2470
+ surface?: string | undefined;
2471
+ heading?: string | undefined;
2472
+ background?: string | undefined;
2473
+ text_muted?: string | undefined;
2474
+ primary?: string | undefined;
2475
+ primary_foreground?: string | undefined;
2476
+ border?: string | undefined;
2477
+ code_background?: string | undefined;
2478
+ } | undefined;
2479
+ colors_dark?: {
2480
+ link?: string | undefined;
2481
+ text?: string | undefined;
2482
+ surface?: string | undefined;
2483
+ heading?: string | undefined;
2484
+ background?: string | undefined;
2485
+ text_muted?: string | undefined;
2486
+ primary?: string | undefined;
2487
+ primary_foreground?: string | undefined;
2488
+ border?: string | undefined;
2489
+ code_background?: string | undefined;
2490
+ } | undefined;
2491
+ typography?: {
2492
+ heading_family?: string | undefined;
2493
+ body_family?: string | undefined;
2494
+ heading_weight?: number | undefined;
2495
+ body_weight?: number | undefined;
2496
+ h1_size?: string | BlogBreakpointMap<string> | undefined;
2497
+ h2_size?: string | BlogBreakpointMap<string> | undefined;
2498
+ h3_size?: string | BlogBreakpointMap<string> | undefined;
2499
+ h4_size?: string | BlogBreakpointMap<string> | undefined;
2500
+ body_size?: string | BlogBreakpointMap<string> | undefined;
2501
+ body_line_height?: string | BlogBreakpointMap<string> | undefined;
2502
+ small_size?: string | BlogBreakpointMap<string> | undefined;
2503
+ heading_letter_spacing?: string | undefined;
2504
+ caption_align?: "center" | "left" | "right" | undefined;
2505
+ } | undefined;
2506
+ spacing?: {
2507
+ content_max_width?: string | BlogBreakpointMap<string> | undefined;
2508
+ block_gap?: string | BlogBreakpointMap<string> | undefined;
2509
+ section_gap?: string | BlogBreakpointMap<string> | undefined;
2510
+ } | undefined;
2511
+ radius?: string | BlogBreakpointMap<string> | undefined;
2512
+ }, {
2513
+ colors?: unknown;
2514
+ colors_dark?: unknown;
2515
+ typography?: unknown;
2516
+ spacing?: unknown;
2517
+ radius?: unknown;
2518
+ }>;
2519
+ type BlogThemeOverride = z.infer<typeof blogThemeOverrideSchema>;
2520
+ declare const BASE_BLOG_THEME: BlogTheme;
2521
+ /**
2522
+ * Sanitize an untrusted theme(-override) object. Invalid individual values are
2523
+ * dropped; total garbage (non-object, arrays, …) yields `{}`. Never throws.
2524
+ */
2525
+ declare function sanitizeBlogTheme(raw: unknown): BlogThemeOverride;
2526
+ /**
2527
+ * Deep-merge override layers onto {@link BASE_BLOG_THEME}. Later layers win;
2528
+ * `null`/`undefined` layers and `undefined` fields are skipped, so the result
2529
+ * is always a fully-populated {@link BlogTheme}.
2530
+ *
2531
+ * Responsive tokens merge at TOKEN granularity: a later layer's value —
2532
+ * scalar or breakpoint map — REPLACES the whole token. There is deliberately
2533
+ * no per-breakpoint merge (a layer overriding `h1_size: "2rem"` on top of a
2534
+ * base map must not inherit the base's `md` entry).
2535
+ */
2536
+ declare function resolveBlogTheme(...layers: Array<BlogThemeOverride | null | undefined>): BlogTheme;
2537
+ /**
2538
+ * Flatten a resolved theme into `--ara-blog-*` CSS custom properties for an
2539
+ * inline `style` attribute. When `colors_dark` is present, color values are
2540
+ * emitted as `light-dark(lightVal, darkVal)` and `color-scheme: light dark`
2541
+ * is included so the browser picks the active side. Responsive tokens emit
2542
+ * their base var plus `-sm`/`-md`/… suffixed vars for present breakpoints.
2543
+ */
2544
+ declare function blogThemeToCssVars(theme: BlogTheme): Record<string, string>;
2545
+
2546
+ type BlogThemePresetName = "editorial" | "modern" | "warm" | "technical";
2547
+ /**
2548
+ * Named theme presets. Layer one under your site palette:
2549
+ *
2550
+ * ```ts
2551
+ * const theme = resolveBlogTheme(
2552
+ * createBlogFontTheme(BLOG_THEME_PRESETS.editorial, {
2553
+ * heading: "var(--font-serif)", // next/font variable
2554
+ * body: "var(--font-sans)",
2555
+ * }),
2556
+ * { colors: { primary: "#0f766e", link: "#0f766e" } },
2557
+ * );
2558
+ * ```
2559
+ */
2560
+ declare const BLOG_THEME_PRESETS: Record<BlogThemePresetName, BlogThemeOverride>;
2561
+ /** Real font sources for a preset: next/font CSS variables (or literal family names). */
2562
+ interface BlogFontSources {
2563
+ /** e.g. `"var(--font-serif)"` from `next/font`'s `variable` option. */
2564
+ heading?: string;
2565
+ /** e.g. `"var(--font-sans)"`. */
2566
+ body?: string;
2567
+ }
2568
+ /**
2569
+ * Wire a site's real fonts into a preset: returns a NEW override (no
2570
+ * mutation) whose heading/body families are `"<font>, <preset fallback
2571
+ * stack>"` — pass your `next/font` variable names and the preset's web-safe
2572
+ * fallbacks keep covering the pre-hydration/fallback paint.
2573
+ *
2574
+ * ```ts
2575
+ * const serif = Source_Serif_4({ subsets: ["latin"], variable: "--font-serif" });
2576
+ * const sans = Inter({ subsets: ["latin"], variable: "--font-sans" });
2577
+ * const override = createBlogFontTheme(BLOG_THEME_PRESETS.editorial, {
2578
+ * heading: "var(--font-serif)",
2579
+ * body: "var(--font-sans)",
2580
+ * });
2581
+ * ```
2582
+ */
2583
+ declare function createBlogFontTheme(preset: BlogThemeOverride, fonts: BlogFontSources): BlogThemeOverride;
2584
+
2585
+ declare function joinClassNames(base: string, extra?: string): string;
2586
+ /**
2587
+ * One optional override per styleable surface. Every key merges onto its
2588
+ * fixed base class (never replaces it), so the `.aranova-blog-*` selector
2589
+ * still applies — this is additive, not a restyle mechanism.
2590
+ */
2591
+ interface BlogClassNameOverrides {
2592
+ /** The `<article>` root. */
2593
+ article?: string;
2594
+ /** The content/aside grid wrapper. */
2595
+ layout?: string;
2596
+ /** The content column. */
2597
+ content?: string;
2598
+ /** The aside rail (table of contents). */
2599
+ aside?: string;
2600
+ /** `<Callout>` MDX component. */
2601
+ callout?: string;
2602
+ /** `<Cta>` MDX component. */
2603
+ cta?: string;
2604
+ /** `<BlogImage>` MDX component's `<figure>` wrapper. */
2605
+ figure?: string;
2606
+ /** `<FaqItem>` MDX component's `<details>` wrapper. */
2607
+ faqItem?: string;
2608
+ /** `<FaqItem>`'s `<summary>`. */
2609
+ faqQuestion?: string;
2610
+ /** `<FaqItem>`'s answer `<div>`. */
2611
+ faqAnswer?: string;
2612
+ /** `<KeyTakeaways>` MDX component. */
2613
+ keyTakeaways?: string;
2614
+ /** The `<table>` overflow wrapper `<div>`. */
2615
+ tableWrap?: string;
2616
+ /** `BlogPostMeta` byline row. */
2617
+ meta?: string;
2618
+ /** `BlogBreadcrumbs` nav. */
2619
+ breadcrumbs?: string;
2620
+ /** `BlogTocShell` / the animated `TocPanel` island. */
2621
+ toc?: string;
2622
+ /** The `ReadingProgress` island. */
2623
+ progress?: string;
2624
+ }
2625
+
2626
+ /**
2627
+ * SEO builders — React-free helpers that turn post content into Next.js
2628
+ * `Metadata`-shaped objects, BlogPosting JSON-LD, and sitemap entries.
2629
+ *
2630
+ * Deliberately does NOT import `next` types: {@link BlogPostMetadata} is a
2631
+ * local structural interface whose shape is spread-compatible with Next's
2632
+ * `Metadata`, so the helpers stay usable from any framework (and from the
2633
+ * internal dashboard's preview renderer).
2634
+ */
2635
+ interface BlogSeoOptions {
2636
+ /** Site origin, e.g. `https://client.example.com`. */
2637
+ siteUrl: string;
2638
+ /** Route the blog is mounted at. Default `/blog`. */
2639
+ basePath?: string;
2640
+ }
2641
+ interface BlogJsonLdOptions extends BlogSeoOptions {
2642
+ /** Emits `publisher: { "@type": "Organization", name }` when given. */
2643
+ publisherName?: string;
2644
+ }
2645
+ interface BlogPostMetadataImage {
2646
+ url: string;
2647
+ width?: number;
2648
+ height?: number;
2649
+ alt?: string;
2650
+ }
2651
+ /** Structural subset of Next.js `Metadata` — spread it into `generateMetadata`. */
2652
+ interface BlogPostMetadata {
2653
+ title: string;
2654
+ description: string;
2655
+ alternates: {
2656
+ canonical: string;
2657
+ };
2658
+ openGraph: {
2659
+ title: string;
2660
+ description: string;
2661
+ type: "article";
2662
+ url: string;
2663
+ images?: BlogPostMetadataImage[];
2664
+ publishedTime?: string;
2665
+ };
2666
+ }
2667
+ interface BlogSitemapEntry {
2668
+ url: string;
2669
+ lastModified: string;
2670
+ }
2671
+ /** Build a Next `Metadata`-shaped object for a post's `generateMetadata`. */
2672
+ declare function buildBlogPostMetadata(post: BlogPostContent, opts: BlogSeoOptions): BlogPostMetadata;
2673
+ /**
2674
+ * Build a `BlogPosting` JSON-LD object. When the backend shipped a non-empty
2675
+ * `post.jsonld`, its values are spread over the locally derived defaults so
2676
+ * backend-authored enrichment (author, keywords, …) wins — EXCEPT the pinned
2677
+ * fields spread after it: `@context`/`@type` (type identity of the emitted
2678
+ * document) and `url`/`mainEntityOfPage` (client-domain truths derived from
2679
+ * the site's own routing) can never be overridden by backend data.
2680
+ */
2681
+ declare function buildBlogPostingJsonLd(post: BlogPostContent, opts: BlogJsonLdOptions): Record<string, unknown>;
2682
+ interface BlogFaqPair {
2683
+ question: string;
2684
+ answer: string;
2685
+ }
2686
+ /**
2687
+ * Extract `<FaqItem question>` question/answer pairs from a post's MDX.
2688
+ *
2689
+ * Deliberately a light regex, not a parser: it runs on documents that have
2690
+ * ALREADY passed `validateBlogMdx` at both the persist and render boundaries,
2691
+ * where `<FaqItem>` is guaranteed to carry exactly one quoted-string
2692
+ * `question` attribute and flow-markdown children. On anything else it simply
2693
+ * extracts fewer/no pairs — it never renders content, so there is no
2694
+ * injection surface. Fenced code blocks are dropped first so documentation
2695
+ * ABOUT the component is not read as an FAQ. Answers are flattened to plain
2696
+ * text (tags stripped, markdown markers left as-is, whitespace collapsed) —
2697
+ * Google accepts plain-text `acceptedAnswer.text`.
2698
+ */
2699
+ declare function extractFaqPairs(mdx: string): BlogFaqPair[];
2700
+ /**
2701
+ * Build a schema.org `FAQPage` JSON-LD object from extracted FAQ pairs
2702
+ * (see {@link extractFaqPairs}). Returns `null` when there are no pairs —
2703
+ * an empty `FAQPage` is invalid structured data, so callers can gate the
2704
+ * `<script type="application/ld+json">` emission on the return value.
2705
+ */
2706
+ declare function buildFaqJsonLd(pairs: BlogFaqPair[]): Record<string, unknown> | null;
2707
+ /**
2708
+ * Serialize a JSON-LD document for embedding in a
2709
+ * `<script type="application/ld+json">` tag. Escapes `<`, `>`, `&` and the
2710
+ * U+2028/U+2029 line separators as `\uXXXX` sequences (valid JSON, identical
2711
+ * parse result) so backend-influenced content can never break out of the
2712
+ * script context (`</script>` injection) or produce invalid JS source.
2713
+ */
2714
+ declare function serializeJsonLd(data: Record<string, unknown>): string;
2715
+ /** Sitemap rows for every published post (shape matches Next's `MetadataRoute.Sitemap`). */
2716
+ declare function buildBlogSitemapEntries(posts: BlogManifestEntry[], opts: BlogSeoOptions): BlogSitemapEntry[];
2717
+
2718
+ interface BlogMdxViolation {
2719
+ /** Stable machine-readable rule id (safe to surface — never raw content). */
2720
+ rule: string;
2721
+ message: string;
2722
+ line?: number;
2723
+ }
2724
+ type BlogMdxValidationResult = {
2725
+ ok: true;
2726
+ } | {
2727
+ ok: false;
2728
+ violations: BlogMdxViolation[];
2729
+ };
2730
+ /** DoS guard: maximum accepted MDX source size, in UTF-16 code units. */
2731
+ declare const BLOG_MDX_MAX_SIZE = 500000;
2732
+ /** DoS guard: maximum AST nesting depth (realistic posts stay under ~10). */
2733
+ declare const BLOG_MDX_MAX_DEPTH = 64;
2734
+ /** DoS guard: maximum total AST node count. */
2735
+ declare const BLOG_MDX_MAX_NODES = 100000;
2736
+ /**
2737
+ * One allowed component of the blog MDX grammar, in serializable form.
2738
+ * `attrs` is the EXACT attribute set — every attribute is required, nothing
2739
+ * else allowed; `selfClosing` components must have no children.
2740
+ *
2741
+ * `cssClass`/`promptUsage`/`promptDescription` exist SOLELY so this one
2742
+ * record can be the entire cross-language/cross-surface registry — see the
2743
+ * grammar doc comment below for what derives from each field.
2744
+ */
2745
+ interface BlogMdxComponentGrammarEntry {
2746
+ name: string;
2747
+ attrs: readonly string[];
2748
+ urlAttrs: readonly string[];
2749
+ selfClosing: boolean;
2750
+ /** Base CSS class the default renderer applies, when the component is styled. */
2751
+ cssClass?: string;
2752
+ /** Example JSX usage shown to the drafting/editing agents. */
2753
+ promptUsage: string;
2754
+ /** One-line description of when/how to use it, shown to the agents. */
2755
+ promptDescription: string;
2756
+ }
2757
+ /**
2758
+ * The component grammar — the SINGLE source of truth for the closed
2759
+ * component set (name/attrs/urlAttrs/selfClosing/cssClass/prompt copy). This
2760
+ * is the only place to touch when adding, removing, or changing a component;
2761
+ * everything else derives from it instead of hand-mirroring it:
2762
+ *
2763
+ * - the MDX validator specs below (grammar enforcement),
2764
+ * - the `BlogComponents` renderer contract (a mapped-type assertion in
2765
+ * `view/components.tsx` makes an entry without a renderer a compile error),
2766
+ * - the `resources.blog_mdx_grammar` snapshot in `events.schema.json`
2767
+ * (emitted verbatim by `src/events/build-schema.ts`), which
2768
+ * `apps/api/src/services/blog_mdx_components.py` is GENERATED from
2769
+ * (`apps/api/scripts/generate_blog_mdx_grammar.py`) — the backend has no
2770
+ * hand-typed mirror to drift out of sync,
2771
+ * - the agent prompt templates (`blog/_mdx_grammar.j2`, via the generated
2772
+ * Python module's `prompt_usage`/`prompt_description` fields),
2773
+ * - `styles.css` (a completeness test asserts every `cssClass` here has a
2774
+ * rule), and the MDX conformance corpus (a completeness test asserts every
2775
+ * `name` here has at least one accept-case fixture).
2776
+ */
2777
+ declare const BLOG_MDX_COMPONENT_GRAMMAR: readonly [{
2778
+ readonly name: "Callout";
2779
+ readonly attrs: readonly [];
2780
+ readonly urlAttrs: readonly [];
2781
+ readonly selfClosing: false;
2782
+ readonly cssClass: "aranova-blog-callout";
2783
+ readonly promptUsage: "<Callout>...</Callout>";
2784
+ readonly promptDescription: "a highlighted tip/note block; no attributes.";
2785
+ }, {
2786
+ readonly name: "Cta";
2787
+ readonly attrs: readonly ["href", "label"];
2788
+ readonly urlAttrs: readonly ["href"];
2789
+ readonly selfClosing: true;
2790
+ readonly cssClass: "aranova-blog-cta";
2791
+ readonly promptUsage: "<Cta href=\"...\" label=\"...\" />";
2792
+ readonly promptDescription: "a call-to-action button (self-closing).";
2793
+ }, {
2794
+ readonly name: "BlogImage";
2795
+ readonly attrs: readonly ["id"];
2796
+ readonly urlAttrs: readonly [];
2797
+ readonly selfClosing: true;
2798
+ readonly promptUsage: "<BlogImage id=\"...\" />";
2799
+ readonly promptDescription: string;
2800
+ }, {
2801
+ readonly name: "FaqItem";
2802
+ readonly attrs: readonly ["question"];
2803
+ readonly urlAttrs: readonly [];
2804
+ readonly selfClosing: false;
2805
+ readonly cssClass: "aranova-blog-faq-item";
2806
+ readonly promptUsage: "<FaqItem question=\"...\">...</FaqItem>";
2807
+ readonly promptDescription: string;
2808
+ }, {
2809
+ readonly name: "KeyTakeaways";
2810
+ readonly attrs: readonly [];
2811
+ readonly urlAttrs: readonly [];
2812
+ readonly selfClosing: false;
2813
+ readonly cssClass: "aranova-blog-key-takeaways";
2814
+ readonly promptUsage: "<KeyTakeaways>...</KeyTakeaways>";
2815
+ readonly promptDescription: string;
2816
+ }];
2817
+ /** Union of the allowed component names, derived from the grammar. */
2818
+ type BlogMdxComponentName = (typeof BLOG_MDX_COMPONENT_GRAMMAR)[number]["name"];
2819
+ /** The closed component set of the blog grammar (mirrors the agent prompts). */
2820
+ declare const BLOG_MDX_ALLOWED_COMPONENTS: readonly BlogMdxComponentName[];
2821
+ interface BlogMdxValidateOptions {
2822
+ /**
2823
+ * Reject any content before the H1 (frontmatter, a stray metadata block,
2824
+ * prose) — only meaningful for a whole post. Off by default because the
2825
+ * cross-language conformance corpus exercises single components in
2826
+ * isolation, not full documents; the render boundary (BlogPostView, the
2827
+ * only production caller) always validates a whole post and passes `true`.
2828
+ */
2829
+ requireLeadingH1?: boolean;
2830
+ }
2831
+ /**
2832
+ * Validate a generated blog MDX document against the frozen content grammar:
2833
+ * standard markdown + exactly the components in
2834
+ * {@link BLOG_MDX_COMPONENT_GRAMMAR} (`<Callout>`, `<Cta href label/>`,
2835
+ * `<BlogImage id/>`, `<FaqItem question>`, `<KeyTakeaways>`). Rejects ESM,
2836
+ * JSX expressions, raw HTML, every other JSX/HTML element, non-literal
2837
+ * attributes, and non-http(s)/mailto/relative URLs. Pure and synchronous —
2838
+ * safe anywhere (RSC, node, edge).
2839
+ */
2840
+ declare function validateBlogMdx(mdx: string, options?: BlogMdxValidateOptions): BlogMdxValidationResult;
2841
+
2842
+ export { BASE_BLOG_THEME, BLOG_BREAKPOINTS, BLOG_BREAKPOINT_MIN_WIDTHS_PX, BLOG_MDX_ALLOWED_COMPONENTS, BLOG_MDX_COMPONENT_GRAMMAR, BLOG_MDX_MAX_DEPTH, BLOG_MDX_MAX_NODES, BLOG_MDX_MAX_SIZE, BLOG_THEME_PRESETS, type BlogBreakpoint, type BlogBreakpointMap, type BlogClassNameOverrides, type BlogClient, type BlogClientConfig, type BlogFaqPair, type BlogFontSources, type BlogHeroImage, type BlogImage, type BlogJsonLdOptions, type BlogManifest, type BlogManifestEntry, type BlogMdxComponentGrammarEntry, type BlogMdxComponentName, type BlogMdxValidateOptions, type BlogMdxValidationResult, type BlogMdxViolation, type BlogPostContent, type BlogPostMetadata, type BlogPostMetadataImage, type BlogSeo, type BlogSeoOptions, type BlogSitemapEntry, type BlogTheme, type BlogThemeColors, type BlogThemeOverride, type BlogThemePresetName, type BlogThemeSpacing, type BlogThemeTypography, type NextFetchInit, type ResponsiveValue, blogHeroImageSchema, blogImageSchema, blogManifestEntrySchema, blogManifestSchema, blogManifestWireSchema, blogPostContentSchema, blogPostContentWireSchema, blogSeoSchema, blogThemeColorsSchema, blogThemeOverrideSchema, blogThemeSchema, blogThemeSpacingSchema, blogThemeToCssVars, blogThemeTypographySchema, buildBlogPostMetadata, buildBlogPostingJsonLd, buildBlogSitemapEntries, buildFaqJsonLd, createBlogClient, createBlogFontTheme, extractFaqPairs, joinClassNames, nullishField, parseBlogManifest, parseBlogPostContent, resolveBlogTheme, responsive, sanitizeBlogTheme, serializeJsonLd, toBlogBreakpointMap, validateBlogMdx };