@drawnagency/primitives 0.1.80 → 0.1.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/{chunk-7XWER6YR.js → chunk-22GU6GNP.js} +3 -3
  2. package/dist/{chunk-4TVODHD2.js → chunk-5UDIQLGQ.js} +6 -6
  3. package/dist/{chunk-UNUJPLZV.js → chunk-6NRVX6NQ.js} +1 -1
  4. package/dist/{chunk-KVQFMVXE.js → chunk-DKXISNJ2.js} +2 -2
  5. package/dist/{chunk-RSITF24B.js → chunk-ETJYYUQX.js} +9 -3
  6. package/dist/{chunk-VI26O4E3.js → chunk-FDBZZ4AT.js} +1 -1
  7. package/dist/chunk-FM4M4Q2W.js +72 -0
  8. package/dist/{chunk-EMGLZQCM.js → chunk-MBJUWOM2.js} +1 -1
  9. package/dist/{chunk-2DDWWTRX.js → chunk-Q6LZOH5M.js} +1 -1
  10. package/dist/{chunk-QB5Q23G2.js → chunk-Y54G2XSC.js} +1 -1
  11. package/dist/{chunk-3LNKOLZP.js → chunk-YKOLOZB2.js} +1 -1
  12. package/dist/components/editor/PagesModal.d.ts +2 -0
  13. package/dist/components/editor/PagesModal.d.ts.map +1 -1
  14. package/dist/components/editor/index.js +6 -5
  15. package/dist/components/primitives/index.js +7 -6
  16. package/dist/components/sections/brand-guide.js +7 -6
  17. package/dist/components/sections/register-schemas.js +10 -9
  18. package/dist/components/sections/register.js +10 -9
  19. package/dist/components/shell/DocInspector.d.ts +18 -0
  20. package/dist/components/shell/DocInspector.d.ts.map +1 -0
  21. package/dist/components/shell/DocumentEditorOverlay.d.ts +29 -0
  22. package/dist/components/shell/DocumentEditorOverlay.d.ts.map +1 -0
  23. package/dist/components/shell/DocumentPresentOverlay.d.ts +30 -0
  24. package/dist/components/shell/DocumentPresentOverlay.d.ts.map +1 -0
  25. package/dist/components/shell/EditorShell.d.ts +34 -0
  26. package/dist/components/shell/EditorShell.d.ts.map +1 -1
  27. package/dist/document/assets/fonts/albra-grotesk-bold.woff +0 -0
  28. package/dist/document/assets/fonts/albra-grotesk-regular.woff +0 -0
  29. package/dist/document/assets/fonts/kapra-neue-expanded-medium.woff +0 -0
  30. package/dist/document/assets/fonts/kapra-neue-expanded-regular.woff +0 -0
  31. package/dist/document/components/DocCoverPage.d.ts +11 -0
  32. package/dist/document/components/DocCoverPage.d.ts.map +1 -0
  33. package/dist/document/components/DocPage.d.ts +10 -0
  34. package/dist/document/components/DocPage.d.ts.map +1 -0
  35. package/dist/document/components/DocRail.d.ts +28 -0
  36. package/dist/document/components/DocRail.d.ts.map +1 -0
  37. package/dist/document/components/DocSectionPage.d.ts +12 -0
  38. package/dist/document/components/DocSectionPage.d.ts.map +1 -0
  39. package/dist/document/components/DocViewer.d.ts +18 -0
  40. package/dist/document/components/DocViewer.d.ts.map +1 -0
  41. package/dist/document/components/Wordmark.d.ts +4 -0
  42. package/dist/document/components/Wordmark.d.ts.map +1 -0
  43. package/dist/document/components/measure.d.ts +7 -0
  44. package/dist/document/components/measure.d.ts.map +1 -0
  45. package/dist/document/components/useDocPages.d.ts +12 -0
  46. package/dist/document/components/useDocPages.d.ts.map +1 -0
  47. package/dist/document/engine/blocks.d.ts +2 -0
  48. package/dist/document/engine/blocks.d.ts.map +1 -0
  49. package/dist/document/engine/harvest.d.ts +3 -0
  50. package/dist/document/engine/harvest.d.ts.map +1 -0
  51. package/dist/document/engine/masonry.d.ts +26 -0
  52. package/dist/document/engine/masonry.d.ts.map +1 -0
  53. package/dist/document/engine/paginate.d.ts +43 -0
  54. package/dist/document/engine/paginate.d.ts.map +1 -0
  55. package/dist/document/engine/settings.d.ts +88 -0
  56. package/dist/document/engine/settings.d.ts.map +1 -0
  57. package/dist/document/engine/types.d.ts +44 -0
  58. package/dist/document/engine/types.d.ts.map +1 -0
  59. package/dist/document/index.d.ts +13 -0
  60. package/dist/document/index.d.ts.map +1 -0
  61. package/dist/document/index.js +965 -0
  62. package/dist/document/styles/document.css +217 -0
  63. package/dist/index.js +29 -28
  64. package/dist/lib/document-input.d.ts +25 -0
  65. package/dist/lib/document-input.d.ts.map +1 -0
  66. package/dist/lib/index.js +10 -9
  67. package/dist/lib/pages.d.ts +2 -0
  68. package/dist/lib/pages.d.ts.map +1 -1
  69. package/dist/media/index.js +4 -3
  70. package/dist/schemas/index.js +3 -2
  71. package/dist/schemas/site-config.d.ts +265 -1
  72. package/dist/schemas/site-config.d.ts.map +1 -1
  73. package/package.json +5 -1
  74. package/src/components/editor/PagesModal.tsx +16 -2
  75. package/src/components/shell/DocInspector.tsx +323 -0
  76. package/src/components/shell/DocumentEditorOverlay.tsx +169 -0
  77. package/src/components/shell/DocumentPresentOverlay.tsx +87 -0
  78. package/src/components/shell/EditorShell.tsx +128 -5
  79. package/src/document/assets/fonts/albra-grotesk-bold.woff +0 -0
  80. package/src/document/assets/fonts/albra-grotesk-regular.woff +0 -0
  81. package/src/document/assets/fonts/kapra-neue-expanded-medium.woff +0 -0
  82. package/src/document/assets/fonts/kapra-neue-expanded-regular.woff +0 -0
  83. package/src/document/components/DocCoverPage.tsx +45 -0
  84. package/src/document/components/DocPage.tsx +40 -0
  85. package/src/document/components/DocRail.tsx +164 -0
  86. package/src/document/components/DocSectionPage.tsx +48 -0
  87. package/src/document/components/DocViewer.tsx +285 -0
  88. package/src/document/components/Wordmark.tsx +18 -0
  89. package/src/document/components/measure.tsx +117 -0
  90. package/src/document/components/useDocPages.ts +85 -0
  91. package/src/document/engine/blocks.ts +87 -0
  92. package/src/document/engine/harvest.ts +95 -0
  93. package/src/document/engine/masonry.ts +152 -0
  94. package/src/document/engine/paginate.ts +229 -0
  95. package/src/document/engine/settings.ts +88 -0
  96. package/src/document/engine/types.ts +64 -0
  97. package/src/document/index.ts +18 -0
  98. package/src/document/styles/document.css +217 -0
  99. package/src/lib/document-input.ts +57 -0
  100. package/src/lib/pages.ts +22 -0
  101. package/src/schemas/site-config.ts +22 -7
  102. /package/dist/{chunk-4YEOTFVU.js → chunk-YBVK254P.js} +0 -0
@@ -10,7 +10,7 @@ export declare const SectionMetaSchema: z.ZodObject<{
10
10
  access: z.ZodArray<z.ZodString>;
11
11
  }, z.core.$strip>;
12
12
  export type SectionMeta = z.infer<typeof SectionMetaSchema>;
13
- export declare const RESERVED_SLUGS: readonly ["edit", "api", "login", "set-password", "404"];
13
+ export declare const RESERVED_SLUGS: readonly ["edit", "api", "login", "set-password", "404", "present"];
14
14
  export declare const PageStatusSchema: z.ZodEnum<{
15
15
  live: "live";
16
16
  archived: "archived";
@@ -27,6 +27,55 @@ export declare const PageSchema: z.ZodObject<{
27
27
  }>;
28
28
  access: z.ZodArray<z.ZodString>;
29
29
  order: z.ZodArray<z.ZodString>;
30
+ document: z.ZodOptional<z.ZodObject<{
31
+ enabled: z.ZodDefault<z.ZodBoolean>;
32
+ meta: z.ZodDefault<z.ZodObject<{
33
+ client: z.ZodDefault<z.ZodString>;
34
+ project: z.ZodDefault<z.ZodString>;
35
+ dateLabel: z.ZodDefault<z.ZodString>;
36
+ }, z.core.$strip>>;
37
+ cover: z.ZodDefault<z.ZodObject<{
38
+ bgColor: z.ZodDefault<z.ZodString>;
39
+ accentColor: z.ZodDefault<z.ZodString>;
40
+ title: z.ZodDefault<z.ZodString>;
41
+ label: z.ZodDefault<z.ZodString>;
42
+ date: z.ZodDefault<z.ZodString>;
43
+ imageId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
44
+ }, z.core.$strip>>;
45
+ sections: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
46
+ excluded: z.ZodDefault<z.ZodBoolean>;
47
+ textPlacement: z.ZodDefault<z.ZodEnum<{
48
+ top: "top";
49
+ leftColumn: "leftColumn";
50
+ }>>;
51
+ imagePlacement: z.ZodDefault<z.ZodEnum<{
52
+ fullWidth: "fullWidth";
53
+ right: "right";
54
+ }>>;
55
+ dropTextOverflow: z.ZodDefault<z.ZodBoolean>;
56
+ splitAt: z.ZodDefault<z.ZodEnum<{
57
+ none: "none";
58
+ sub_heading: "sub_heading";
59
+ }>>;
60
+ imageLayout: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
61
+ mode: z.ZodLiteral<"grid">;
62
+ rows: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>>;
63
+ columns: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
64
+ fit: z.ZodDefault<z.ZodEnum<{
65
+ cover: "cover";
66
+ contain: "contain";
67
+ }>>;
68
+ }, z.core.$strip>, z.ZodObject<{
69
+ mode: z.ZodLiteral<"masonry">;
70
+ flow: z.ZodDefault<z.ZodEnum<{
71
+ rows: "rows";
72
+ columns: "columns";
73
+ }>>;
74
+ columns: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>, z.ZodLiteral<6>]>>;
75
+ rows: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
76
+ }, z.core.$strip>], "mode">>;
77
+ }, z.core.$strip>>>;
78
+ }, z.core.$strip>>;
30
79
  }, z.core.$strip>;
31
80
  export type Page = z.infer<typeof PageSchema>;
32
81
  declare const CanonicalIndexSchema: z.ZodObject<{
@@ -43,6 +92,55 @@ declare const CanonicalIndexSchema: z.ZodObject<{
43
92
  }>;
44
93
  access: z.ZodArray<z.ZodString>;
45
94
  order: z.ZodArray<z.ZodString>;
95
+ document: z.ZodOptional<z.ZodObject<{
96
+ enabled: z.ZodDefault<z.ZodBoolean>;
97
+ meta: z.ZodDefault<z.ZodObject<{
98
+ client: z.ZodDefault<z.ZodString>;
99
+ project: z.ZodDefault<z.ZodString>;
100
+ dateLabel: z.ZodDefault<z.ZodString>;
101
+ }, z.core.$strip>>;
102
+ cover: z.ZodDefault<z.ZodObject<{
103
+ bgColor: z.ZodDefault<z.ZodString>;
104
+ accentColor: z.ZodDefault<z.ZodString>;
105
+ title: z.ZodDefault<z.ZodString>;
106
+ label: z.ZodDefault<z.ZodString>;
107
+ date: z.ZodDefault<z.ZodString>;
108
+ imageId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
109
+ }, z.core.$strip>>;
110
+ sections: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
111
+ excluded: z.ZodDefault<z.ZodBoolean>;
112
+ textPlacement: z.ZodDefault<z.ZodEnum<{
113
+ top: "top";
114
+ leftColumn: "leftColumn";
115
+ }>>;
116
+ imagePlacement: z.ZodDefault<z.ZodEnum<{
117
+ fullWidth: "fullWidth";
118
+ right: "right";
119
+ }>>;
120
+ dropTextOverflow: z.ZodDefault<z.ZodBoolean>;
121
+ splitAt: z.ZodDefault<z.ZodEnum<{
122
+ none: "none";
123
+ sub_heading: "sub_heading";
124
+ }>>;
125
+ imageLayout: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
126
+ mode: z.ZodLiteral<"grid">;
127
+ rows: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>>;
128
+ columns: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
129
+ fit: z.ZodDefault<z.ZodEnum<{
130
+ cover: "cover";
131
+ contain: "contain";
132
+ }>>;
133
+ }, z.core.$strip>, z.ZodObject<{
134
+ mode: z.ZodLiteral<"masonry">;
135
+ flow: z.ZodDefault<z.ZodEnum<{
136
+ rows: "rows";
137
+ columns: "columns";
138
+ }>>;
139
+ columns: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>, z.ZodLiteral<6>]>>;
140
+ rows: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
141
+ }, z.core.$strip>], "mode">>;
142
+ }, z.core.$strip>>>;
143
+ }, z.core.$strip>>;
46
144
  }, z.core.$strip>>;
47
145
  sections: z.ZodRecord<z.ZodString, z.ZodObject<{
48
146
  type: z.ZodString;
@@ -71,6 +169,55 @@ export declare const IndexSchema: z.ZodPipe<z.ZodPipe<z.ZodObject<{
71
169
  }>;
72
170
  access: z.ZodArray<z.ZodString>;
73
171
  order: z.ZodArray<z.ZodString>;
172
+ document: z.ZodOptional<z.ZodObject<{
173
+ enabled: z.ZodDefault<z.ZodBoolean>;
174
+ meta: z.ZodDefault<z.ZodObject<{
175
+ client: z.ZodDefault<z.ZodString>;
176
+ project: z.ZodDefault<z.ZodString>;
177
+ dateLabel: z.ZodDefault<z.ZodString>;
178
+ }, z.core.$strip>>;
179
+ cover: z.ZodDefault<z.ZodObject<{
180
+ bgColor: z.ZodDefault<z.ZodString>;
181
+ accentColor: z.ZodDefault<z.ZodString>;
182
+ title: z.ZodDefault<z.ZodString>;
183
+ label: z.ZodDefault<z.ZodString>;
184
+ date: z.ZodDefault<z.ZodString>;
185
+ imageId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
186
+ }, z.core.$strip>>;
187
+ sections: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
188
+ excluded: z.ZodDefault<z.ZodBoolean>;
189
+ textPlacement: z.ZodDefault<z.ZodEnum<{
190
+ top: "top";
191
+ leftColumn: "leftColumn";
192
+ }>>;
193
+ imagePlacement: z.ZodDefault<z.ZodEnum<{
194
+ fullWidth: "fullWidth";
195
+ right: "right";
196
+ }>>;
197
+ dropTextOverflow: z.ZodDefault<z.ZodBoolean>;
198
+ splitAt: z.ZodDefault<z.ZodEnum<{
199
+ none: "none";
200
+ sub_heading: "sub_heading";
201
+ }>>;
202
+ imageLayout: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
203
+ mode: z.ZodLiteral<"grid">;
204
+ rows: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>>;
205
+ columns: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
206
+ fit: z.ZodDefault<z.ZodEnum<{
207
+ cover: "cover";
208
+ contain: "contain";
209
+ }>>;
210
+ }, z.core.$strip>, z.ZodObject<{
211
+ mode: z.ZodLiteral<"masonry">;
212
+ flow: z.ZodDefault<z.ZodEnum<{
213
+ rows: "rows";
214
+ columns: "columns";
215
+ }>>;
216
+ columns: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>, z.ZodLiteral<6>]>>;
217
+ rows: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
218
+ }, z.core.$strip>], "mode">>;
219
+ }, z.core.$strip>>>;
220
+ }, z.core.$strip>>;
74
221
  }, z.core.$strip>>>;
75
222
  sections: z.ZodRecord<z.ZodString, z.ZodObject<{
76
223
  type: z.ZodString;
@@ -94,6 +241,40 @@ export declare const IndexSchema: z.ZodPipe<z.ZodPipe<z.ZodObject<{
94
241
  status: "live" | "archived";
95
242
  access: string[];
96
243
  order: string[];
244
+ document?: {
245
+ enabled?: boolean | undefined;
246
+ meta?: {
247
+ client?: string | undefined;
248
+ project?: string | undefined;
249
+ dateLabel?: string | undefined;
250
+ } | undefined;
251
+ cover?: {
252
+ bgColor?: string | undefined;
253
+ accentColor?: string | undefined;
254
+ title?: string | undefined;
255
+ label?: string | undefined;
256
+ date?: string | undefined;
257
+ imageId?: string | null | undefined;
258
+ } | undefined;
259
+ sections?: Record<string, {
260
+ excluded?: boolean | undefined;
261
+ textPlacement?: "top" | "leftColumn" | undefined;
262
+ imagePlacement?: "fullWidth" | "right" | undefined;
263
+ dropTextOverflow?: boolean | undefined;
264
+ splitAt?: "none" | "sub_heading" | undefined;
265
+ imageLayout?: {
266
+ mode: "grid";
267
+ rows?: 2 | 1 | 3 | undefined;
268
+ columns?: 2 | 4 | 3 | undefined;
269
+ fit?: "cover" | "contain" | undefined;
270
+ } | {
271
+ mode: "masonry";
272
+ flow?: "rows" | "columns" | undefined;
273
+ columns?: 2 | 4 | 3 | 5 | 6 | undefined;
274
+ rows?: 2 | 4 | 1 | 3 | "auto" | undefined;
275
+ } | undefined;
276
+ }> | undefined;
277
+ } | undefined;
97
278
  }[];
98
279
  sections: Record<string, {
99
280
  type: string;
@@ -118,6 +299,40 @@ export declare const IndexSchema: z.ZodPipe<z.ZodPipe<z.ZodObject<{
118
299
  status: "live" | "archived";
119
300
  access: string[];
120
301
  order: string[];
302
+ document?: {
303
+ enabled: boolean;
304
+ meta: {
305
+ client: string;
306
+ project: string;
307
+ dateLabel: string;
308
+ };
309
+ cover: {
310
+ bgColor: string;
311
+ accentColor: string;
312
+ title: string;
313
+ label: string;
314
+ date: string;
315
+ imageId: string | null;
316
+ };
317
+ sections: Record<string, {
318
+ excluded: boolean;
319
+ textPlacement: "top" | "leftColumn";
320
+ imagePlacement: "fullWidth" | "right";
321
+ dropTextOverflow: boolean;
322
+ splitAt: "none" | "sub_heading";
323
+ imageLayout: {
324
+ mode: "grid";
325
+ rows: 2 | 1 | 3;
326
+ columns: 2 | 4 | 3;
327
+ fit: "cover" | "contain";
328
+ } | {
329
+ mode: "masonry";
330
+ flow: "rows" | "columns";
331
+ columns: 2 | 4 | 3 | 5 | 6;
332
+ rows: 2 | 4 | 1 | 3 | "auto";
333
+ };
334
+ }>;
335
+ } | undefined;
121
336
  }[] | undefined;
122
337
  lastModified?: string | null | undefined;
123
338
  }>>, z.ZodObject<{
@@ -134,6 +349,55 @@ export declare const IndexSchema: z.ZodPipe<z.ZodPipe<z.ZodObject<{
134
349
  }>;
135
350
  access: z.ZodArray<z.ZodString>;
136
351
  order: z.ZodArray<z.ZodString>;
352
+ document: z.ZodOptional<z.ZodObject<{
353
+ enabled: z.ZodDefault<z.ZodBoolean>;
354
+ meta: z.ZodDefault<z.ZodObject<{
355
+ client: z.ZodDefault<z.ZodString>;
356
+ project: z.ZodDefault<z.ZodString>;
357
+ dateLabel: z.ZodDefault<z.ZodString>;
358
+ }, z.core.$strip>>;
359
+ cover: z.ZodDefault<z.ZodObject<{
360
+ bgColor: z.ZodDefault<z.ZodString>;
361
+ accentColor: z.ZodDefault<z.ZodString>;
362
+ title: z.ZodDefault<z.ZodString>;
363
+ label: z.ZodDefault<z.ZodString>;
364
+ date: z.ZodDefault<z.ZodString>;
365
+ imageId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
366
+ }, z.core.$strip>>;
367
+ sections: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
368
+ excluded: z.ZodDefault<z.ZodBoolean>;
369
+ textPlacement: z.ZodDefault<z.ZodEnum<{
370
+ top: "top";
371
+ leftColumn: "leftColumn";
372
+ }>>;
373
+ imagePlacement: z.ZodDefault<z.ZodEnum<{
374
+ fullWidth: "fullWidth";
375
+ right: "right";
376
+ }>>;
377
+ dropTextOverflow: z.ZodDefault<z.ZodBoolean>;
378
+ splitAt: z.ZodDefault<z.ZodEnum<{
379
+ none: "none";
380
+ sub_heading: "sub_heading";
381
+ }>>;
382
+ imageLayout: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
383
+ mode: z.ZodLiteral<"grid">;
384
+ rows: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>>;
385
+ columns: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
386
+ fit: z.ZodDefault<z.ZodEnum<{
387
+ cover: "cover";
388
+ contain: "contain";
389
+ }>>;
390
+ }, z.core.$strip>, z.ZodObject<{
391
+ mode: z.ZodLiteral<"masonry">;
392
+ flow: z.ZodDefault<z.ZodEnum<{
393
+ rows: "rows";
394
+ columns: "columns";
395
+ }>>;
396
+ columns: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>, z.ZodLiteral<6>]>>;
397
+ rows: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
398
+ }, z.core.$strip>], "mode">>;
399
+ }, z.core.$strip>>>;
400
+ }, z.core.$strip>>;
137
401
  }, z.core.$strip>>;
138
402
  sections: z.ZodRecord<z.ZodString, z.ZodObject<{
139
403
  type: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"site-config.d.ts","sourceRoot":"","sources":["../../src/schemas/site-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,iBAAiB;;;;;;;;;iBAI5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAO5D,eAAO,MAAM,cAAc,0DAA2D,CAAC;AAEvF,eAAO,MAAM,gBAAgB;;;EAA+B,CAAC;AAE7D,eAAO,MAAM,UAAU;;;;;;;;;;;;iBASrB,CAAC;AAEH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AA0C9C,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6CtB,CAAC;AAEL,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAyE,CAAC;AAElG,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE7D,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAE1D;AAMD,eAAO,MAAM,iBAAiB;;;;;iBAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,mBAAmB;;;;;;;;;;;iBAwB5B,CAAC;AACL,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4B3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"site-config.d.ts","sourceRoot":"","sources":["../../src/schemas/site-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,iBAAiB;;;;;;;;;iBAI5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAQ5D,eAAO,MAAM,cAAc,qEAAsE,CAAC;AAWlG,eAAO,MAAM,gBAAgB;;;EAA+B,CAAC;AAE7D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUrB,CAAC;AAEH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AA0C9C,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6CtB,CAAC;AAEL,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAyE,CAAC;AAElG,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE7D,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAE1D;AAMD,eAAO,MAAM,iBAAiB;;;;;iBAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,mBAAmB;;;;;;;;;;;iBAwB5B,CAAC;AACL,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4B3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drawnagency/primitives",
3
- "version": "0.1.80",
3
+ "version": "0.1.82",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./package.json": "./package.json",
@@ -84,6 +84,10 @@
84
84
  "types": "./dist/components/primitives/index.d.ts",
85
85
  "default": "./dist/components/primitives/index.js"
86
86
  },
87
+ "./document": {
88
+ "types": "./dist/document/index.d.ts",
89
+ "default": "./dist/document/index.js"
90
+ },
87
91
  "./auth": {
88
92
  "types": "./dist/auth/index.d.ts",
89
93
  "default": "./dist/auth/index.js"
@@ -2,6 +2,10 @@ import { useState, useEffect } from "react";
2
2
  import { Check } from "lucide-react";
3
3
  import type { SiteIndex, Page } from "../../schemas/site-config";
4
4
  import type { Audience } from "../../auth/types";
5
+ // Sanctioned outside->inside import: document/ is a sealed subtree, but the
6
+ // Document mode toggle needs the patch shape it edits (mirrors the same
7
+ // sanctioned import in schemas/site-config.ts and lib/pages.ts).
8
+ import type { DocumentOptions } from "../../document/engine/settings";
5
9
  import { Button } from "../shared/Button";
6
10
  import { Input } from "../shared/Input";
7
11
  import { Checkbox } from "../shared/Checkbox";
@@ -24,6 +28,7 @@ export interface PagesModalProps {
24
28
  onSetArchived: (pageId: string, archived: boolean) => void;
25
29
  onSetFields: (pageId: string, patch: Partial<Pick<Page, "title" | "slug" | "showInNav">>) => void;
26
30
  onSetAudience: (pageId: string, access: string[]) => void;
31
+ onSetDocument: (pageId: string, patch: Partial<DocumentOptions>) => void;
27
32
  onConfirmDelete: (pageId: string) => void;
28
33
  }
29
34
 
@@ -71,6 +76,7 @@ export function PagesModal(props: PagesModalProps) {
71
76
  }}
72
77
  onSetFields={(patch) => props.onSetFields(page.id, patch)}
73
78
  onSetAudience={(access) => props.onSetAudience(page.id, access)}
79
+ onSetDocument={(patch) => props.onSetDocument(page.id, patch)}
74
80
  onRequestDelete={() =>
75
81
  page.order.length === 0 ? props.onConfirmDelete(page.id) : setDeletingId(page.id)
76
82
  }
@@ -105,14 +111,16 @@ export function PagesModal(props: PagesModalProps) {
105
111
  }
106
112
 
107
113
  function PageRow({
108
- page, audiences, expanded, isNew, otherSlugs, dragIndex, onReorder, onToggleExpand, onSetHome, onSetArchived, onSetFields, onSetAudience, onRequestDelete,
114
+ page, audiences, expanded, isNew, otherSlugs, dragIndex, onReorder, onToggleExpand, onSetHome, onSetArchived, onSetFields, onSetAudience, onSetDocument, onRequestDelete,
109
115
  }: {
110
116
  page: Page; audiences: Audience[]; expanded: boolean;
111
117
  isNew: boolean; otherSlugs: string[];
112
118
  dragIndex?: number; onReorder: (fromIndex: number, toIndex: number) => void;
113
119
  onToggleExpand: () => void; onSetHome: () => void; onSetArchived: (v: boolean) => void;
114
120
  onSetFields: (patch: Partial<Pick<Page, "title" | "slug" | "showInNav">>) => void;
115
- onSetAudience: (access: string[]) => void; onRequestDelete: () => void;
121
+ onSetAudience: (access: string[]) => void;
122
+ onSetDocument: (patch: Partial<DocumentOptions>) => void;
123
+ onRequestDelete: () => void;
116
124
  }) {
117
125
  const draggable = dragIndex !== undefined;
118
126
  const { rowRef, handleRef, isDragging, closestEdge } = useSortableRow<HTMLDivElement, HTMLButtonElement>({
@@ -264,6 +272,12 @@ function PageRow({
264
272
  className="shrink-0"
265
273
  />
266
274
  </div>
275
+ <Checkbox
276
+ label="Document mode"
277
+ description="Adds a presentation view of this page."
278
+ checked={page.document?.enabled ?? false}
279
+ onChange={(enabled) => onSetDocument({ enabled })}
280
+ />
267
281
  <div className="flex items-center gap-2">
268
282
  <Button
269
283
  variant="secondary"