@bryanguffey/astro-standard-site 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1079 @@
1
+ /**
2
+ * site.standard.* lexicon schemas
3
+ *
4
+ * Based on https://standard.site/ specification
5
+ * These schemas provide unified metadata for longform publishing on ATProto,
6
+ * enabling interoperability between Leaflet, WhiteWind, and other platforms.
7
+ */
8
+ import { z } from 'zod';
9
+ export declare const ThemeColorRgbSchema: z.ZodObject<{
10
+ r: z.ZodNumber;
11
+ g: z.ZodNumber;
12
+ b: z.ZodNumber;
13
+ }, "strip", z.ZodTypeAny, {
14
+ r: number;
15
+ g: number;
16
+ b: number;
17
+ }, {
18
+ r: number;
19
+ g: number;
20
+ b: number;
21
+ }>;
22
+ export declare const ThemeColorRgbaSchema: z.ZodObject<{
23
+ r: z.ZodNumber;
24
+ g: z.ZodNumber;
25
+ b: z.ZodNumber;
26
+ a: z.ZodNumber;
27
+ }, "strip", z.ZodTypeAny, {
28
+ r: number;
29
+ g: number;
30
+ b: number;
31
+ a: number;
32
+ }, {
33
+ r: number;
34
+ g: number;
35
+ b: number;
36
+ a: number;
37
+ }>;
38
+ export declare const ThemeColorSchema: z.ZodUnion<[z.ZodObject<{
39
+ r: z.ZodNumber;
40
+ g: z.ZodNumber;
41
+ b: z.ZodNumber;
42
+ }, "strip", z.ZodTypeAny, {
43
+ r: number;
44
+ g: number;
45
+ b: number;
46
+ }, {
47
+ r: number;
48
+ g: number;
49
+ b: number;
50
+ }>, z.ZodObject<{
51
+ r: z.ZodNumber;
52
+ g: z.ZodNumber;
53
+ b: z.ZodNumber;
54
+ a: z.ZodNumber;
55
+ }, "strip", z.ZodTypeAny, {
56
+ r: number;
57
+ g: number;
58
+ b: number;
59
+ a: number;
60
+ }, {
61
+ r: number;
62
+ g: number;
63
+ b: number;
64
+ a: number;
65
+ }>]>;
66
+ export type ThemeColor = z.infer<typeof ThemeColorSchema>;
67
+ export type ThemeColorRgb = z.infer<typeof ThemeColorRgbSchema>;
68
+ export type ThemeColorRgba = z.infer<typeof ThemeColorRgbaSchema>;
69
+ export declare const ThemeBasicPreferencesSchema: z.ZodObject<{
70
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
71
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
72
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
73
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
74
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
75
+ }, z.ZodTypeAny, "passthrough">>;
76
+ export declare const ThemeBasicSchema: z.ZodObject<{
77
+ background: z.ZodObject<{
78
+ r: z.ZodNumber;
79
+ g: z.ZodNumber;
80
+ b: z.ZodNumber;
81
+ }, "strip", z.ZodTypeAny, {
82
+ r: number;
83
+ g: number;
84
+ b: number;
85
+ }, {
86
+ r: number;
87
+ g: number;
88
+ b: number;
89
+ }>;
90
+ foreground: z.ZodObject<{
91
+ r: z.ZodNumber;
92
+ g: z.ZodNumber;
93
+ b: z.ZodNumber;
94
+ }, "strip", z.ZodTypeAny, {
95
+ r: number;
96
+ g: number;
97
+ b: number;
98
+ }, {
99
+ r: number;
100
+ g: number;
101
+ b: number;
102
+ }>;
103
+ accent: z.ZodObject<{
104
+ r: z.ZodNumber;
105
+ g: z.ZodNumber;
106
+ b: z.ZodNumber;
107
+ }, "strip", z.ZodTypeAny, {
108
+ r: number;
109
+ g: number;
110
+ b: number;
111
+ }, {
112
+ r: number;
113
+ g: number;
114
+ b: number;
115
+ }>;
116
+ accentForeground: z.ZodObject<{
117
+ r: z.ZodNumber;
118
+ g: z.ZodNumber;
119
+ b: z.ZodNumber;
120
+ }, "strip", z.ZodTypeAny, {
121
+ r: number;
122
+ g: number;
123
+ b: number;
124
+ }, {
125
+ r: number;
126
+ g: number;
127
+ b: number;
128
+ }>;
129
+ preferences: z.ZodOptional<z.ZodObject<{
130
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
131
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
132
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
133
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
134
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
135
+ }, z.ZodTypeAny, "passthrough">>>;
136
+ }, "strip", z.ZodTypeAny, {
137
+ background: {
138
+ r: number;
139
+ g: number;
140
+ b: number;
141
+ };
142
+ foreground: {
143
+ r: number;
144
+ g: number;
145
+ b: number;
146
+ };
147
+ accent: {
148
+ r: number;
149
+ g: number;
150
+ b: number;
151
+ };
152
+ accentForeground: {
153
+ r: number;
154
+ g: number;
155
+ b: number;
156
+ };
157
+ preferences?: z.objectOutputType<{
158
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
159
+ }, z.ZodTypeAny, "passthrough"> | undefined;
160
+ }, {
161
+ background: {
162
+ r: number;
163
+ g: number;
164
+ b: number;
165
+ };
166
+ foreground: {
167
+ r: number;
168
+ g: number;
169
+ b: number;
170
+ };
171
+ accent: {
172
+ r: number;
173
+ g: number;
174
+ b: number;
175
+ };
176
+ accentForeground: {
177
+ r: number;
178
+ g: number;
179
+ b: number;
180
+ };
181
+ preferences?: z.objectInputType<{
182
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
183
+ }, z.ZodTypeAny, "passthrough"> | undefined;
184
+ }>;
185
+ export type ThemeBasic = z.infer<typeof ThemeBasicSchema>;
186
+ export declare const PublicationPreferencesSchema: z.ZodObject<{
187
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
188
+ }, "strip", z.ZodTypeAny, {
189
+ showInDiscover?: boolean | undefined;
190
+ }, {
191
+ showInDiscover?: boolean | undefined;
192
+ }>;
193
+ export type PublicationPreferences = z.infer<typeof PublicationPreferencesSchema>;
194
+ export declare const PublicationSchema: z.ZodObject<{
195
+ $type: z.ZodOptional<z.ZodLiteral<"site.standard.publication">>;
196
+ /** Base publication URL (e.g., https://standard.site) - REQUIRED */
197
+ url: z.ZodString;
198
+ /** Square image to identify the publication (at least 256x256, max 1MB) */
199
+ icon: z.ZodOptional<z.ZodObject<{
200
+ $type: z.ZodOptional<z.ZodLiteral<"blob">>;
201
+ ref: z.ZodObject<{
202
+ $link: z.ZodString;
203
+ }, "strip", z.ZodTypeAny, {
204
+ $link: string;
205
+ }, {
206
+ $link: string;
207
+ }>;
208
+ mimeType: z.ZodString;
209
+ size: z.ZodNumber;
210
+ }, "strip", z.ZodTypeAny, {
211
+ ref: {
212
+ $link: string;
213
+ };
214
+ mimeType: string;
215
+ size: number;
216
+ $type?: "blob" | undefined;
217
+ }, {
218
+ ref: {
219
+ $link: string;
220
+ };
221
+ mimeType: string;
222
+ size: number;
223
+ $type?: "blob" | undefined;
224
+ }>>;
225
+ /** The name of the publication (max 128 graphemes) - REQUIRED */
226
+ name: z.ZodString;
227
+ /** Brief description of the publication (max 300 graphemes) */
228
+ description: z.ZodOptional<z.ZodString>;
229
+ /** Simplified publication theme for tools/apps */
230
+ basicTheme: z.ZodOptional<z.ZodObject<{
231
+ background: z.ZodObject<{
232
+ r: z.ZodNumber;
233
+ g: z.ZodNumber;
234
+ b: z.ZodNumber;
235
+ }, "strip", z.ZodTypeAny, {
236
+ r: number;
237
+ g: number;
238
+ b: number;
239
+ }, {
240
+ r: number;
241
+ g: number;
242
+ b: number;
243
+ }>;
244
+ foreground: z.ZodObject<{
245
+ r: z.ZodNumber;
246
+ g: z.ZodNumber;
247
+ b: z.ZodNumber;
248
+ }, "strip", z.ZodTypeAny, {
249
+ r: number;
250
+ g: number;
251
+ b: number;
252
+ }, {
253
+ r: number;
254
+ g: number;
255
+ b: number;
256
+ }>;
257
+ accent: z.ZodObject<{
258
+ r: z.ZodNumber;
259
+ g: z.ZodNumber;
260
+ b: z.ZodNumber;
261
+ }, "strip", z.ZodTypeAny, {
262
+ r: number;
263
+ g: number;
264
+ b: number;
265
+ }, {
266
+ r: number;
267
+ g: number;
268
+ b: number;
269
+ }>;
270
+ accentForeground: z.ZodObject<{
271
+ r: z.ZodNumber;
272
+ g: z.ZodNumber;
273
+ b: z.ZodNumber;
274
+ }, "strip", z.ZodTypeAny, {
275
+ r: number;
276
+ g: number;
277
+ b: number;
278
+ }, {
279
+ r: number;
280
+ g: number;
281
+ b: number;
282
+ }>;
283
+ preferences: z.ZodOptional<z.ZodObject<{
284
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
285
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
286
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
287
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
288
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
289
+ }, z.ZodTypeAny, "passthrough">>>;
290
+ }, "strip", z.ZodTypeAny, {
291
+ background: {
292
+ r: number;
293
+ g: number;
294
+ b: number;
295
+ };
296
+ foreground: {
297
+ r: number;
298
+ g: number;
299
+ b: number;
300
+ };
301
+ accent: {
302
+ r: number;
303
+ g: number;
304
+ b: number;
305
+ };
306
+ accentForeground: {
307
+ r: number;
308
+ g: number;
309
+ b: number;
310
+ };
311
+ preferences?: z.objectOutputType<{
312
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
313
+ }, z.ZodTypeAny, "passthrough"> | undefined;
314
+ }, {
315
+ background: {
316
+ r: number;
317
+ g: number;
318
+ b: number;
319
+ };
320
+ foreground: {
321
+ r: number;
322
+ g: number;
323
+ b: number;
324
+ };
325
+ accent: {
326
+ r: number;
327
+ g: number;
328
+ b: number;
329
+ };
330
+ accentForeground: {
331
+ r: number;
332
+ g: number;
333
+ b: number;
334
+ };
335
+ preferences?: z.objectInputType<{
336
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
337
+ }, z.ZodTypeAny, "passthrough"> | undefined;
338
+ }>>;
339
+ /** Publication preferences */
340
+ preferences: z.ZodOptional<z.ZodObject<{
341
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
342
+ }, "strip", z.ZodTypeAny, {
343
+ showInDiscover?: boolean | undefined;
344
+ }, {
345
+ showInDiscover?: boolean | undefined;
346
+ }>>;
347
+ }, "strip", z.ZodTypeAny, {
348
+ url: string;
349
+ name: string;
350
+ $type?: "site.standard.publication" | undefined;
351
+ preferences?: {
352
+ showInDiscover?: boolean | undefined;
353
+ } | undefined;
354
+ icon?: {
355
+ ref: {
356
+ $link: string;
357
+ };
358
+ mimeType: string;
359
+ size: number;
360
+ $type?: "blob" | undefined;
361
+ } | undefined;
362
+ description?: string | undefined;
363
+ basicTheme?: {
364
+ background: {
365
+ r: number;
366
+ g: number;
367
+ b: number;
368
+ };
369
+ foreground: {
370
+ r: number;
371
+ g: number;
372
+ b: number;
373
+ };
374
+ accent: {
375
+ r: number;
376
+ g: number;
377
+ b: number;
378
+ };
379
+ accentForeground: {
380
+ r: number;
381
+ g: number;
382
+ b: number;
383
+ };
384
+ preferences?: z.objectOutputType<{
385
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
386
+ }, z.ZodTypeAny, "passthrough"> | undefined;
387
+ } | undefined;
388
+ }, {
389
+ url: string;
390
+ name: string;
391
+ $type?: "site.standard.publication" | undefined;
392
+ preferences?: {
393
+ showInDiscover?: boolean | undefined;
394
+ } | undefined;
395
+ icon?: {
396
+ ref: {
397
+ $link: string;
398
+ };
399
+ mimeType: string;
400
+ size: number;
401
+ $type?: "blob" | undefined;
402
+ } | undefined;
403
+ description?: string | undefined;
404
+ basicTheme?: {
405
+ background: {
406
+ r: number;
407
+ g: number;
408
+ b: number;
409
+ };
410
+ foreground: {
411
+ r: number;
412
+ g: number;
413
+ b: number;
414
+ };
415
+ accent: {
416
+ r: number;
417
+ g: number;
418
+ b: number;
419
+ };
420
+ accentForeground: {
421
+ r: number;
422
+ g: number;
423
+ b: number;
424
+ };
425
+ preferences?: z.objectInputType<{
426
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
427
+ }, z.ZodTypeAny, "passthrough"> | undefined;
428
+ } | undefined;
429
+ }>;
430
+ export type Publication = z.infer<typeof PublicationSchema>;
431
+ /** Strong reference to another ATProto record */
432
+ export declare const StrongRefSchema: z.ZodObject<{
433
+ uri: z.ZodString;
434
+ cid: z.ZodString;
435
+ }, "strip", z.ZodTypeAny, {
436
+ uri: string;
437
+ cid: string;
438
+ }, {
439
+ uri: string;
440
+ cid: string;
441
+ }>;
442
+ export type StrongRef = z.infer<typeof StrongRefSchema>;
443
+ export declare const DocumentSchema: z.ZodObject<{
444
+ $type: z.ZodOptional<z.ZodLiteral<"site.standard.document">>;
445
+ /** URI to the site or publication this document belongs to (https or at-uri) */
446
+ site: z.ZodString;
447
+ /** Document title (max 128 graphemes) */
448
+ title: z.ZodString;
449
+ /** When the document was published */
450
+ publishedAt: z.ZodString;
451
+ /** Path to combine with site URL to construct full document URL */
452
+ path: z.ZodOptional<z.ZodString>;
453
+ /** Tags/categories for the document (max 50 graphemes each) */
454
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
455
+ /** Platform-specific content (open union - can be any type) */
456
+ content: z.ZodOptional<z.ZodUnknown>;
457
+ /** When the document was last updated */
458
+ updatedAt: z.ZodOptional<z.ZodString>;
459
+ /** Cover/hero image (max 1MB, image/*) */
460
+ coverImage: z.ZodOptional<z.ZodObject<{
461
+ $type: z.ZodOptional<z.ZodLiteral<"blob">>;
462
+ ref: z.ZodObject<{
463
+ $link: z.ZodString;
464
+ }, "strip", z.ZodTypeAny, {
465
+ $link: string;
466
+ }, {
467
+ $link: string;
468
+ }>;
469
+ mimeType: z.ZodString;
470
+ size: z.ZodNumber;
471
+ }, "strip", z.ZodTypeAny, {
472
+ ref: {
473
+ $link: string;
474
+ };
475
+ mimeType: string;
476
+ size: number;
477
+ $type?: "blob" | undefined;
478
+ }, {
479
+ ref: {
480
+ $link: string;
481
+ };
482
+ mimeType: string;
483
+ size: number;
484
+ $type?: "blob" | undefined;
485
+ }>>;
486
+ /** Reference to associated Bluesky post */
487
+ bskyPostRef: z.ZodOptional<z.ZodObject<{
488
+ uri: z.ZodString;
489
+ cid: z.ZodString;
490
+ }, "strip", z.ZodTypeAny, {
491
+ uri: string;
492
+ cid: string;
493
+ }, {
494
+ uri: string;
495
+ cid: string;
496
+ }>>;
497
+ /** Document description/excerpt (max 300 graphemes) */
498
+ description: z.ZodOptional<z.ZodString>;
499
+ /** Plain text content for indexing/search */
500
+ textContent: z.ZodOptional<z.ZodString>;
501
+ }, "strip", z.ZodTypeAny, {
502
+ site: string;
503
+ title: string;
504
+ publishedAt: string;
505
+ $type?: "site.standard.document" | undefined;
506
+ path?: string | undefined;
507
+ description?: string | undefined;
508
+ tags?: string[] | undefined;
509
+ content?: unknown;
510
+ updatedAt?: string | undefined;
511
+ coverImage?: {
512
+ ref: {
513
+ $link: string;
514
+ };
515
+ mimeType: string;
516
+ size: number;
517
+ $type?: "blob" | undefined;
518
+ } | undefined;
519
+ bskyPostRef?: {
520
+ uri: string;
521
+ cid: string;
522
+ } | undefined;
523
+ textContent?: string | undefined;
524
+ }, {
525
+ site: string;
526
+ title: string;
527
+ publishedAt: string;
528
+ $type?: "site.standard.document" | undefined;
529
+ path?: string | undefined;
530
+ description?: string | undefined;
531
+ tags?: string[] | undefined;
532
+ content?: unknown;
533
+ updatedAt?: string | undefined;
534
+ coverImage?: {
535
+ ref: {
536
+ $link: string;
537
+ };
538
+ mimeType: string;
539
+ size: number;
540
+ $type?: "blob" | undefined;
541
+ } | undefined;
542
+ bskyPostRef?: {
543
+ uri: string;
544
+ cid: string;
545
+ } | undefined;
546
+ textContent?: string | undefined;
547
+ }>;
548
+ export type Document = z.infer<typeof DocumentSchema>;
549
+ export declare const AtUriSchema: z.ZodString;
550
+ export type AtUri = z.infer<typeof AtUriSchema>;
551
+ /** Record returned from a PDS with full metadata */
552
+ export declare const StandardSiteRecordSchema: z.ZodObject<{
553
+ uri: z.ZodString;
554
+ cid: z.ZodString;
555
+ value: z.ZodUnion<[z.ZodObject<{
556
+ $type: z.ZodOptional<z.ZodLiteral<"site.standard.publication">>;
557
+ /** Base publication URL (e.g., https://standard.site) - REQUIRED */
558
+ url: z.ZodString;
559
+ /** Square image to identify the publication (at least 256x256, max 1MB) */
560
+ icon: z.ZodOptional<z.ZodObject<{
561
+ $type: z.ZodOptional<z.ZodLiteral<"blob">>;
562
+ ref: z.ZodObject<{
563
+ $link: z.ZodString;
564
+ }, "strip", z.ZodTypeAny, {
565
+ $link: string;
566
+ }, {
567
+ $link: string;
568
+ }>;
569
+ mimeType: z.ZodString;
570
+ size: z.ZodNumber;
571
+ }, "strip", z.ZodTypeAny, {
572
+ ref: {
573
+ $link: string;
574
+ };
575
+ mimeType: string;
576
+ size: number;
577
+ $type?: "blob" | undefined;
578
+ }, {
579
+ ref: {
580
+ $link: string;
581
+ };
582
+ mimeType: string;
583
+ size: number;
584
+ $type?: "blob" | undefined;
585
+ }>>;
586
+ /** The name of the publication (max 128 graphemes) - REQUIRED */
587
+ name: z.ZodString;
588
+ /** Brief description of the publication (max 300 graphemes) */
589
+ description: z.ZodOptional<z.ZodString>;
590
+ /** Simplified publication theme for tools/apps */
591
+ basicTheme: z.ZodOptional<z.ZodObject<{
592
+ background: z.ZodObject<{
593
+ r: z.ZodNumber;
594
+ g: z.ZodNumber;
595
+ b: z.ZodNumber;
596
+ }, "strip", z.ZodTypeAny, {
597
+ r: number;
598
+ g: number;
599
+ b: number;
600
+ }, {
601
+ r: number;
602
+ g: number;
603
+ b: number;
604
+ }>;
605
+ foreground: z.ZodObject<{
606
+ r: z.ZodNumber;
607
+ g: z.ZodNumber;
608
+ b: z.ZodNumber;
609
+ }, "strip", z.ZodTypeAny, {
610
+ r: number;
611
+ g: number;
612
+ b: number;
613
+ }, {
614
+ r: number;
615
+ g: number;
616
+ b: number;
617
+ }>;
618
+ accent: z.ZodObject<{
619
+ r: z.ZodNumber;
620
+ g: z.ZodNumber;
621
+ b: z.ZodNumber;
622
+ }, "strip", z.ZodTypeAny, {
623
+ r: number;
624
+ g: number;
625
+ b: number;
626
+ }, {
627
+ r: number;
628
+ g: number;
629
+ b: number;
630
+ }>;
631
+ accentForeground: z.ZodObject<{
632
+ r: z.ZodNumber;
633
+ g: z.ZodNumber;
634
+ b: z.ZodNumber;
635
+ }, "strip", z.ZodTypeAny, {
636
+ r: number;
637
+ g: number;
638
+ b: number;
639
+ }, {
640
+ r: number;
641
+ g: number;
642
+ b: number;
643
+ }>;
644
+ preferences: z.ZodOptional<z.ZodObject<{
645
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
646
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
647
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
648
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
649
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
650
+ }, z.ZodTypeAny, "passthrough">>>;
651
+ }, "strip", z.ZodTypeAny, {
652
+ background: {
653
+ r: number;
654
+ g: number;
655
+ b: number;
656
+ };
657
+ foreground: {
658
+ r: number;
659
+ g: number;
660
+ b: number;
661
+ };
662
+ accent: {
663
+ r: number;
664
+ g: number;
665
+ b: number;
666
+ };
667
+ accentForeground: {
668
+ r: number;
669
+ g: number;
670
+ b: number;
671
+ };
672
+ preferences?: z.objectOutputType<{
673
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
674
+ }, z.ZodTypeAny, "passthrough"> | undefined;
675
+ }, {
676
+ background: {
677
+ r: number;
678
+ g: number;
679
+ b: number;
680
+ };
681
+ foreground: {
682
+ r: number;
683
+ g: number;
684
+ b: number;
685
+ };
686
+ accent: {
687
+ r: number;
688
+ g: number;
689
+ b: number;
690
+ };
691
+ accentForeground: {
692
+ r: number;
693
+ g: number;
694
+ b: number;
695
+ };
696
+ preferences?: z.objectInputType<{
697
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
698
+ }, z.ZodTypeAny, "passthrough"> | undefined;
699
+ }>>;
700
+ /** Publication preferences */
701
+ preferences: z.ZodOptional<z.ZodObject<{
702
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
703
+ }, "strip", z.ZodTypeAny, {
704
+ showInDiscover?: boolean | undefined;
705
+ }, {
706
+ showInDiscover?: boolean | undefined;
707
+ }>>;
708
+ }, "strip", z.ZodTypeAny, {
709
+ url: string;
710
+ name: string;
711
+ $type?: "site.standard.publication" | undefined;
712
+ preferences?: {
713
+ showInDiscover?: boolean | undefined;
714
+ } | undefined;
715
+ icon?: {
716
+ ref: {
717
+ $link: string;
718
+ };
719
+ mimeType: string;
720
+ size: number;
721
+ $type?: "blob" | undefined;
722
+ } | undefined;
723
+ description?: string | undefined;
724
+ basicTheme?: {
725
+ background: {
726
+ r: number;
727
+ g: number;
728
+ b: number;
729
+ };
730
+ foreground: {
731
+ r: number;
732
+ g: number;
733
+ b: number;
734
+ };
735
+ accent: {
736
+ r: number;
737
+ g: number;
738
+ b: number;
739
+ };
740
+ accentForeground: {
741
+ r: number;
742
+ g: number;
743
+ b: number;
744
+ };
745
+ preferences?: z.objectOutputType<{
746
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
747
+ }, z.ZodTypeAny, "passthrough"> | undefined;
748
+ } | undefined;
749
+ }, {
750
+ url: string;
751
+ name: string;
752
+ $type?: "site.standard.publication" | undefined;
753
+ preferences?: {
754
+ showInDiscover?: boolean | undefined;
755
+ } | undefined;
756
+ icon?: {
757
+ ref: {
758
+ $link: string;
759
+ };
760
+ mimeType: string;
761
+ size: number;
762
+ $type?: "blob" | undefined;
763
+ } | undefined;
764
+ description?: string | undefined;
765
+ basicTheme?: {
766
+ background: {
767
+ r: number;
768
+ g: number;
769
+ b: number;
770
+ };
771
+ foreground: {
772
+ r: number;
773
+ g: number;
774
+ b: number;
775
+ };
776
+ accent: {
777
+ r: number;
778
+ g: number;
779
+ b: number;
780
+ };
781
+ accentForeground: {
782
+ r: number;
783
+ g: number;
784
+ b: number;
785
+ };
786
+ preferences?: z.objectInputType<{
787
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
788
+ }, z.ZodTypeAny, "passthrough"> | undefined;
789
+ } | undefined;
790
+ }>, z.ZodObject<{
791
+ $type: z.ZodOptional<z.ZodLiteral<"site.standard.document">>;
792
+ /** URI to the site or publication this document belongs to (https or at-uri) */
793
+ site: z.ZodString;
794
+ /** Document title (max 128 graphemes) */
795
+ title: z.ZodString;
796
+ /** When the document was published */
797
+ publishedAt: z.ZodString;
798
+ /** Path to combine with site URL to construct full document URL */
799
+ path: z.ZodOptional<z.ZodString>;
800
+ /** Tags/categories for the document (max 50 graphemes each) */
801
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
802
+ /** Platform-specific content (open union - can be any type) */
803
+ content: z.ZodOptional<z.ZodUnknown>;
804
+ /** When the document was last updated */
805
+ updatedAt: z.ZodOptional<z.ZodString>;
806
+ /** Cover/hero image (max 1MB, image/*) */
807
+ coverImage: z.ZodOptional<z.ZodObject<{
808
+ $type: z.ZodOptional<z.ZodLiteral<"blob">>;
809
+ ref: z.ZodObject<{
810
+ $link: z.ZodString;
811
+ }, "strip", z.ZodTypeAny, {
812
+ $link: string;
813
+ }, {
814
+ $link: string;
815
+ }>;
816
+ mimeType: z.ZodString;
817
+ size: z.ZodNumber;
818
+ }, "strip", z.ZodTypeAny, {
819
+ ref: {
820
+ $link: string;
821
+ };
822
+ mimeType: string;
823
+ size: number;
824
+ $type?: "blob" | undefined;
825
+ }, {
826
+ ref: {
827
+ $link: string;
828
+ };
829
+ mimeType: string;
830
+ size: number;
831
+ $type?: "blob" | undefined;
832
+ }>>;
833
+ /** Reference to associated Bluesky post */
834
+ bskyPostRef: z.ZodOptional<z.ZodObject<{
835
+ uri: z.ZodString;
836
+ cid: z.ZodString;
837
+ }, "strip", z.ZodTypeAny, {
838
+ uri: string;
839
+ cid: string;
840
+ }, {
841
+ uri: string;
842
+ cid: string;
843
+ }>>;
844
+ /** Document description/excerpt (max 300 graphemes) */
845
+ description: z.ZodOptional<z.ZodString>;
846
+ /** Plain text content for indexing/search */
847
+ textContent: z.ZodOptional<z.ZodString>;
848
+ }, "strip", z.ZodTypeAny, {
849
+ site: string;
850
+ title: string;
851
+ publishedAt: string;
852
+ $type?: "site.standard.document" | undefined;
853
+ path?: string | undefined;
854
+ description?: string | undefined;
855
+ tags?: string[] | undefined;
856
+ content?: unknown;
857
+ updatedAt?: string | undefined;
858
+ coverImage?: {
859
+ ref: {
860
+ $link: string;
861
+ };
862
+ mimeType: string;
863
+ size: number;
864
+ $type?: "blob" | undefined;
865
+ } | undefined;
866
+ bskyPostRef?: {
867
+ uri: string;
868
+ cid: string;
869
+ } | undefined;
870
+ textContent?: string | undefined;
871
+ }, {
872
+ site: string;
873
+ title: string;
874
+ publishedAt: string;
875
+ $type?: "site.standard.document" | undefined;
876
+ path?: string | undefined;
877
+ description?: string | undefined;
878
+ tags?: string[] | undefined;
879
+ content?: unknown;
880
+ updatedAt?: string | undefined;
881
+ coverImage?: {
882
+ ref: {
883
+ $link: string;
884
+ };
885
+ mimeType: string;
886
+ size: number;
887
+ $type?: "blob" | undefined;
888
+ } | undefined;
889
+ bskyPostRef?: {
890
+ uri: string;
891
+ cid: string;
892
+ } | undefined;
893
+ textContent?: string | undefined;
894
+ }>]>;
895
+ }, "strip", z.ZodTypeAny, {
896
+ uri: string;
897
+ value: {
898
+ url: string;
899
+ name: string;
900
+ $type?: "site.standard.publication" | undefined;
901
+ preferences?: {
902
+ showInDiscover?: boolean | undefined;
903
+ } | undefined;
904
+ icon?: {
905
+ ref: {
906
+ $link: string;
907
+ };
908
+ mimeType: string;
909
+ size: number;
910
+ $type?: "blob" | undefined;
911
+ } | undefined;
912
+ description?: string | undefined;
913
+ basicTheme?: {
914
+ background: {
915
+ r: number;
916
+ g: number;
917
+ b: number;
918
+ };
919
+ foreground: {
920
+ r: number;
921
+ g: number;
922
+ b: number;
923
+ };
924
+ accent: {
925
+ r: number;
926
+ g: number;
927
+ b: number;
928
+ };
929
+ accentForeground: {
930
+ r: number;
931
+ g: number;
932
+ b: number;
933
+ };
934
+ preferences?: z.objectOutputType<{
935
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
936
+ }, z.ZodTypeAny, "passthrough"> | undefined;
937
+ } | undefined;
938
+ } | {
939
+ site: string;
940
+ title: string;
941
+ publishedAt: string;
942
+ $type?: "site.standard.document" | undefined;
943
+ path?: string | undefined;
944
+ description?: string | undefined;
945
+ tags?: string[] | undefined;
946
+ content?: unknown;
947
+ updatedAt?: string | undefined;
948
+ coverImage?: {
949
+ ref: {
950
+ $link: string;
951
+ };
952
+ mimeType: string;
953
+ size: number;
954
+ $type?: "blob" | undefined;
955
+ } | undefined;
956
+ bskyPostRef?: {
957
+ uri: string;
958
+ cid: string;
959
+ } | undefined;
960
+ textContent?: string | undefined;
961
+ };
962
+ cid: string;
963
+ }, {
964
+ uri: string;
965
+ value: {
966
+ url: string;
967
+ name: string;
968
+ $type?: "site.standard.publication" | undefined;
969
+ preferences?: {
970
+ showInDiscover?: boolean | undefined;
971
+ } | undefined;
972
+ icon?: {
973
+ ref: {
974
+ $link: string;
975
+ };
976
+ mimeType: string;
977
+ size: number;
978
+ $type?: "blob" | undefined;
979
+ } | undefined;
980
+ description?: string | undefined;
981
+ basicTheme?: {
982
+ background: {
983
+ r: number;
984
+ g: number;
985
+ b: number;
986
+ };
987
+ foreground: {
988
+ r: number;
989
+ g: number;
990
+ b: number;
991
+ };
992
+ accent: {
993
+ r: number;
994
+ g: number;
995
+ b: number;
996
+ };
997
+ accentForeground: {
998
+ r: number;
999
+ g: number;
1000
+ b: number;
1001
+ };
1002
+ preferences?: z.objectInputType<{
1003
+ showInDiscover: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1004
+ }, z.ZodTypeAny, "passthrough"> | undefined;
1005
+ } | undefined;
1006
+ } | {
1007
+ site: string;
1008
+ title: string;
1009
+ publishedAt: string;
1010
+ $type?: "site.standard.document" | undefined;
1011
+ path?: string | undefined;
1012
+ description?: string | undefined;
1013
+ tags?: string[] | undefined;
1014
+ content?: unknown;
1015
+ updatedAt?: string | undefined;
1016
+ coverImage?: {
1017
+ ref: {
1018
+ $link: string;
1019
+ };
1020
+ mimeType: string;
1021
+ size: number;
1022
+ $type?: "blob" | undefined;
1023
+ } | undefined;
1024
+ bskyPostRef?: {
1025
+ uri: string;
1026
+ cid: string;
1027
+ } | undefined;
1028
+ textContent?: string | undefined;
1029
+ };
1030
+ cid: string;
1031
+ }>;
1032
+ export type StandardSiteRecord = z.infer<typeof StandardSiteRecordSchema>;
1033
+ export declare const LoaderConfigSchema: z.ZodObject<{
1034
+ /** DID or handle of the account to load documents from */
1035
+ repo: z.ZodString;
1036
+ /** PDS service URL (defaults to public.api.bsky.app for reads) */
1037
+ service: z.ZodDefault<z.ZodString>;
1038
+ /** Only load documents from a specific site/publication URI */
1039
+ publication: z.ZodOptional<z.ZodString>;
1040
+ /** Maximum number of documents to load */
1041
+ limit: z.ZodDefault<z.ZodNumber>;
1042
+ }, "strip", z.ZodTypeAny, {
1043
+ service: string;
1044
+ limit: number;
1045
+ repo: string;
1046
+ publication?: string | undefined;
1047
+ }, {
1048
+ repo: string;
1049
+ service?: string | undefined;
1050
+ limit?: number | undefined;
1051
+ publication?: string | undefined;
1052
+ }>;
1053
+ export type LoaderConfig = z.infer<typeof LoaderConfigSchema>;
1054
+ export declare const PublisherConfigSchema: z.ZodObject<{
1055
+ /** PDS service URL (auto-resolved from DID if not provided) */
1056
+ service: z.ZodOptional<z.ZodString>;
1057
+ /** Handle or DID for authentication */
1058
+ identifier: z.ZodString;
1059
+ /** App password for authentication */
1060
+ password: z.ZodString;
1061
+ /** Publication AT-URI to publish documents to */
1062
+ publication: z.ZodOptional<z.ZodString>;
1063
+ }, "strip", z.ZodTypeAny, {
1064
+ identifier: string;
1065
+ password: string;
1066
+ service?: string | undefined;
1067
+ publication?: string | undefined;
1068
+ }, {
1069
+ identifier: string;
1070
+ password: string;
1071
+ service?: string | undefined;
1072
+ publication?: string | undefined;
1073
+ }>;
1074
+ export type PublisherConfig = z.infer<typeof PublisherConfigSchema>;
1075
+ export declare const COLLECTIONS: {
1076
+ readonly PUBLICATION: "site.standard.publication";
1077
+ readonly DOCUMENT: "site.standard.document";
1078
+ };
1079
+ //# sourceMappingURL=schemas.d.ts.map