@drawnagency/primitives 0.1.118 → 0.1.119

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 (258) hide show
  1. package/dist/{chunk-O37AV27P.js → chunk-5JYHTHVR.js} +28 -0
  2. package/dist/{chunk-W72BPGR3.js → chunk-BZKHHUIN.js} +44 -8
  3. package/dist/{chunk-CEFFP3CH.js → chunk-G6O3TYPJ.js} +297 -83
  4. package/dist/{chunk-4NSOKEA7.js → chunk-HFHM4MNK.js} +12 -7
  5. package/dist/{chunk-RIITGTV3.js → chunk-LQHBC7C6.js} +37 -2
  6. package/dist/{chunk-VY3IFGE3.js → chunk-QAMAIDXZ.js} +1 -1
  7. package/dist/{chunk-HRX3XJBU.js → chunk-RIN2QCYJ.js} +9 -11
  8. package/dist/{chunk-ZOTRHHUB.js → chunk-UNFPATDE.js} +8 -10
  9. package/dist/{chunk-ERLIL4RU.js → chunk-YKKGVSJH.js} +35 -37
  10. package/dist/{chunk-67P34WNW.js → chunk-ZKVQMIMJ.js} +3 -20
  11. package/dist/collab/rebase.js +4 -5
  12. package/dist/components/chat/ChatComposer.d.ts +0 -4
  13. package/dist/components/chat/ChatComposer.d.ts.map +1 -1
  14. package/dist/components/chat/ChatPanel.d.ts +2 -3
  15. package/dist/components/chat/ChatPanel.d.ts.map +1 -1
  16. package/dist/components/chat/markdown.d.ts +2 -3
  17. package/dist/components/chat/markdown.d.ts.map +1 -1
  18. package/dist/components/editor/PagesModal.d.ts +0 -2
  19. package/dist/components/editor/PagesModal.d.ts.map +1 -1
  20. package/dist/components/editor/index.js +15 -19
  21. package/dist/components/primitives/index.js +11 -15
  22. package/dist/components/sections/brand-guide.js +10 -13
  23. package/dist/components/sections/register-schemas.js +16 -21
  24. package/dist/components/sections/register.js +16 -21
  25. package/dist/components/shell/AudienceChips.d.ts +1 -3
  26. package/dist/components/shell/AudienceChips.d.ts.map +1 -1
  27. package/dist/components/shell/EditorShell.d.ts +0 -34
  28. package/dist/components/shell/EditorShell.d.ts.map +1 -1
  29. package/dist/components/shell/SiteSettingsModal.d.ts.map +1 -1
  30. package/dist/hooks/useSortableNavRow.d.ts +1 -1
  31. package/dist/hooks/useSortableRow.d.ts +1 -1
  32. package/dist/index.js +83 -90
  33. package/dist/lib/index-ops.js +5 -6
  34. package/dist/lib/index.js +27 -32
  35. package/dist/lib/pages.d.ts +0 -2
  36. package/dist/lib/pages.d.ts.map +1 -1
  37. package/dist/lib/sidecars.js +2 -2
  38. package/dist/lib/site-validation.js +13 -14
  39. package/dist/lib/storage-tier.js +4 -4
  40. package/dist/schemas/index.js +42 -45
  41. package/dist/schemas/site-config.d.ts +1 -277
  42. package/dist/schemas/site-config.d.ts.map +1 -1
  43. package/package.json +2 -42
  44. package/src/components/chat/ChatComposer.tsx +0 -4
  45. package/src/components/chat/ChatPanel.tsx +2 -3
  46. package/src/components/chat/markdown.ts +2 -3
  47. package/src/components/editor/PagesModal.tsx +1 -15
  48. package/src/components/editor/StatusIndicator.tsx +4 -4
  49. package/src/components/shell/AudienceChips.tsx +1 -3
  50. package/src/components/shell/EditorShell.tsx +5 -113
  51. package/src/components/shell/SiteSettingsModal.tsx +0 -11
  52. package/src/lib/pages.ts +0 -22
  53. package/src/schemas/index.ts +0 -4
  54. package/src/schemas/site-config.ts +4 -32
  55. package/dist/chunk-4TZJZU2T.js +0 -92
  56. package/dist/chunk-DIMDRBFK.js +0 -11
  57. package/dist/chunk-FV7JQRCN.js +0 -94
  58. package/dist/chunk-IIDKW7AV.js +0 -41
  59. package/dist/chunk-JCDZAFX2.js +0 -224
  60. package/dist/chunk-MM7KZS5C.js +0 -30
  61. package/dist/chunk-QQ3S3P5P.js +0 -38
  62. package/dist/chunk-TEOAKGZA.js +0 -784
  63. package/dist/chunk-VAYZJKVR.js +0 -209
  64. package/dist/components/shell/DocInspector.d.ts +0 -18
  65. package/dist/components/shell/DocInspector.d.ts.map +0 -1
  66. package/dist/components/shell/DocumentEditorOverlay.d.ts +0 -29
  67. package/dist/components/shell/DocumentEditorOverlay.d.ts.map +0 -1
  68. package/dist/components/shell/DocumentPresentOverlay.d.ts +0 -30
  69. package/dist/components/shell/DocumentPresentOverlay.d.ts.map +0 -1
  70. package/dist/components/shell/SiteSettingsDecks.d.ts +0 -13
  71. package/dist/components/shell/SiteSettingsDecks.d.ts.map +0 -1
  72. package/dist/deck/DeckComponentView.d.ts +0 -13
  73. package/dist/deck/DeckComponentView.d.ts.map +0 -1
  74. package/dist/deck/DeckPlayer.d.ts +0 -26
  75. package/dist/deck/DeckPlayer.d.ts.map +0 -1
  76. package/dist/deck/DeckSlideView.d.ts +0 -17
  77. package/dist/deck/DeckSlideView.d.ts.map +0 -1
  78. package/dist/deck/DeckStage.d.ts +0 -16
  79. package/dist/deck/DeckStage.d.ts.map +0 -1
  80. package/dist/deck/components/DeckImage.d.ts +0 -14
  81. package/dist/deck/components/DeckImage.d.ts.map +0 -1
  82. package/dist/deck/components/DeckImageGrid.d.ts +0 -27
  83. package/dist/deck/components/DeckImageGrid.d.ts.map +0 -1
  84. package/dist/deck/components/DeckRichText.d.ts +0 -22
  85. package/dist/deck/components/DeckRichText.d.ts.map +0 -1
  86. package/dist/deck/components/DeckVideo.d.ts +0 -15
  87. package/dist/deck/components/DeckVideo.d.ts.map +0 -1
  88. package/dist/deck/editing.d.ts +0 -50
  89. package/dist/deck/editing.d.ts.map +0 -1
  90. package/dist/deck/flip.d.ts +0 -11
  91. package/dist/deck/flip.d.ts.map +0 -1
  92. package/dist/deck/index.d.ts +0 -24
  93. package/dist/deck/index.d.ts.map +0 -1
  94. package/dist/deck/index.js +0 -51
  95. package/dist/deck/layouts/CenteredTextLayout.d.ts +0 -12
  96. package/dist/deck/layouts/CenteredTextLayout.d.ts.map +0 -1
  97. package/dist/deck/layouts/ColumnSplitLayout.d.ts +0 -14
  98. package/dist/deck/layouts/ColumnSplitLayout.d.ts.map +0 -1
  99. package/dist/deck/layouts/FullBleedImageLayout.d.ts +0 -14
  100. package/dist/deck/layouts/FullBleedImageLayout.d.ts.map +0 -1
  101. package/dist/deck/media.d.ts +0 -33
  102. package/dist/deck/media.d.ts.map +0 -1
  103. package/dist/deck/tokens.d.ts +0 -22
  104. package/dist/deck/tokens.d.ts.map +0 -1
  105. package/dist/deck/useStageScale.d.ts +0 -10
  106. package/dist/deck/useStageScale.d.ts.map +0 -1
  107. package/dist/deck-builder/DeckBuilderApp.d.ts +0 -30
  108. package/dist/deck-builder/DeckBuilderApp.d.ts.map +0 -1
  109. package/dist/deck-builder/DeckBuilderTopBar.d.ts +0 -24
  110. package/dist/deck-builder/DeckBuilderTopBar.d.ts.map +0 -1
  111. package/dist/deck-builder/DeckChatPanel.d.ts +0 -45
  112. package/dist/deck-builder/DeckChatPanel.d.ts.map +0 -1
  113. package/dist/deck-builder/DeckEditor.d.ts +0 -37
  114. package/dist/deck-builder/DeckEditor.d.ts.map +0 -1
  115. package/dist/deck-builder/DeckLibrary.d.ts +0 -22
  116. package/dist/deck-builder/DeckLibrary.d.ts.map +0 -1
  117. package/dist/deck-builder/DeckSlideSurface.d.ts +0 -31
  118. package/dist/deck-builder/DeckSlideSurface.d.ts.map +0 -1
  119. package/dist/deck-builder/deck-api.d.ts +0 -76
  120. package/dist/deck-builder/deck-api.d.ts.map +0 -1
  121. package/dist/deck-builder/deck-chat-client.d.ts +0 -44
  122. package/dist/deck-builder/deck-chat-client.d.ts.map +0 -1
  123. package/dist/deck-builder/deck-chat-history.d.ts +0 -10
  124. package/dist/deck-builder/deck-chat-history.d.ts.map +0 -1
  125. package/dist/deck-builder/index.d.ts +0 -13
  126. package/dist/deck-builder/index.d.ts.map +0 -1
  127. package/dist/deck-builder/index.js +0 -1498
  128. package/dist/deck-builder/starter-deck.d.ts +0 -23
  129. package/dist/deck-builder/starter-deck.d.ts.map +0 -1
  130. package/dist/deck-builder/types.d.ts +0 -29
  131. package/dist/deck-builder/types.d.ts.map +0 -1
  132. package/dist/deck-builder/useSortableSlide.d.ts +0 -29
  133. package/dist/deck-builder/useSortableSlide.d.ts.map +0 -1
  134. package/dist/document/assets/fonts/albra-grotesk-bold.woff +0 -0
  135. package/dist/document/assets/fonts/albra-grotesk-regular.woff +0 -0
  136. package/dist/document/assets/fonts/kapra-neue-expanded-medium.woff +0 -0
  137. package/dist/document/assets/fonts/kapra-neue-expanded-regular.woff +0 -0
  138. package/dist/document/components/DocCoverPage.d.ts +0 -11
  139. package/dist/document/components/DocCoverPage.d.ts.map +0 -1
  140. package/dist/document/components/DocPage.d.ts +0 -10
  141. package/dist/document/components/DocPage.d.ts.map +0 -1
  142. package/dist/document/components/DocRail.d.ts +0 -28
  143. package/dist/document/components/DocRail.d.ts.map +0 -1
  144. package/dist/document/components/DocSectionPage.d.ts +0 -12
  145. package/dist/document/components/DocSectionPage.d.ts.map +0 -1
  146. package/dist/document/components/DocViewer.d.ts +0 -21
  147. package/dist/document/components/DocViewer.d.ts.map +0 -1
  148. package/dist/document/components/Wordmark.d.ts +0 -4
  149. package/dist/document/components/Wordmark.d.ts.map +0 -1
  150. package/dist/document/components/measure.d.ts +0 -7
  151. package/dist/document/components/measure.d.ts.map +0 -1
  152. package/dist/document/components/useDocPages.d.ts +0 -12
  153. package/dist/document/components/useDocPages.d.ts.map +0 -1
  154. package/dist/document/engine/blocks.d.ts +0 -2
  155. package/dist/document/engine/blocks.d.ts.map +0 -1
  156. package/dist/document/engine/harvest.d.ts +0 -3
  157. package/dist/document/engine/harvest.d.ts.map +0 -1
  158. package/dist/document/engine/masonry.d.ts +0 -26
  159. package/dist/document/engine/masonry.d.ts.map +0 -1
  160. package/dist/document/engine/paginate.d.ts +0 -43
  161. package/dist/document/engine/paginate.d.ts.map +0 -1
  162. package/dist/document/engine/settings.d.ts +0 -91
  163. package/dist/document/engine/settings.d.ts.map +0 -1
  164. package/dist/document/engine/types.d.ts +0 -44
  165. package/dist/document/engine/types.d.ts.map +0 -1
  166. package/dist/document/index.d.ts +0 -13
  167. package/dist/document/index.d.ts.map +0 -1
  168. package/dist/document/index.js +0 -1030
  169. package/dist/document/styles/document.css +0 -217
  170. package/dist/lib/deck-access.d.ts +0 -86
  171. package/dist/lib/deck-access.d.ts.map +0 -1
  172. package/dist/lib/deck-access.js +0 -58
  173. package/dist/lib/deck-dexie.d.ts +0 -88
  174. package/dist/lib/deck-dexie.d.ts.map +0 -1
  175. package/dist/lib/deck-dexie.js +0 -22
  176. package/dist/lib/deck-edit.d.ts +0 -67
  177. package/dist/lib/deck-edit.d.ts.map +0 -1
  178. package/dist/lib/deck-media-assets.d.ts +0 -27
  179. package/dist/lib/deck-media-assets.d.ts.map +0 -1
  180. package/dist/lib/deck-media-assets.js +0 -25
  181. package/dist/lib/deck-media-refs.d.ts +0 -35
  182. package/dist/lib/deck-media-refs.d.ts.map +0 -1
  183. package/dist/lib/deck-media-refs.js +0 -36
  184. package/dist/lib/deck-tool.d.ts +0 -25
  185. package/dist/lib/deck-tool.d.ts.map +0 -1
  186. package/dist/lib/deck-tool.js +0 -58
  187. package/dist/lib/document-input.d.ts +0 -25
  188. package/dist/lib/document-input.d.ts.map +0 -1
  189. package/dist/schemas/deck-meta.d.ts +0 -85
  190. package/dist/schemas/deck-meta.d.ts.map +0 -1
  191. package/dist/schemas/deck-meta.js +0 -64
  192. package/dist/schemas/deck.d.ts +0 -954
  193. package/dist/schemas/deck.d.ts.map +0 -1
  194. package/dist/schemas/deck.js +0 -65
  195. package/src/components/shell/DocInspector.tsx +0 -314
  196. package/src/components/shell/DocumentEditorOverlay.tsx +0 -179
  197. package/src/components/shell/DocumentPresentOverlay.tsx +0 -87
  198. package/src/components/shell/SiteSettingsDecks.tsx +0 -41
  199. package/src/deck/DeckComponentView.tsx +0 -28
  200. package/src/deck/DeckPlayer.tsx +0 -166
  201. package/src/deck/DeckSlideView.tsx +0 -38
  202. package/src/deck/DeckStage.tsx +0 -39
  203. package/src/deck/components/DeckImage.tsx +0 -38
  204. package/src/deck/components/DeckImageGrid.tsx +0 -254
  205. package/src/deck/components/DeckRichText.tsx +0 -111
  206. package/src/deck/components/DeckVideo.tsx +0 -81
  207. package/src/deck/editing.tsx +0 -201
  208. package/src/deck/flip.ts +0 -70
  209. package/src/deck/index.ts +0 -30
  210. package/src/deck/layouts/CenteredTextLayout.tsx +0 -29
  211. package/src/deck/layouts/ColumnSplitLayout.tsx +0 -69
  212. package/src/deck/layouts/FullBleedImageLayout.tsx +0 -58
  213. package/src/deck/media.tsx +0 -46
  214. package/src/deck/tokens.ts +0 -57
  215. package/src/deck/useStageScale.ts +0 -44
  216. package/src/deck-builder/DeckBuilderApp.tsx +0 -572
  217. package/src/deck-builder/DeckBuilderTopBar.tsx +0 -62
  218. package/src/deck-builder/DeckChatPanel.tsx +0 -334
  219. package/src/deck-builder/DeckEditor.tsx +0 -258
  220. package/src/deck-builder/DeckLibrary.tsx +0 -195
  221. package/src/deck-builder/DeckSlideSurface.tsx +0 -55
  222. package/src/deck-builder/deck-api.ts +0 -177
  223. package/src/deck-builder/deck-chat-client.ts +0 -129
  224. package/src/deck-builder/deck-chat-history.ts +0 -62
  225. package/src/deck-builder/index.ts +0 -12
  226. package/src/deck-builder/starter-deck.ts +0 -86
  227. package/src/deck-builder/types.ts +0 -24
  228. package/src/deck-builder/useSortableSlide.ts +0 -102
  229. package/src/document/assets/fonts/albra-grotesk-bold.woff +0 -0
  230. package/src/document/assets/fonts/albra-grotesk-regular.woff +0 -0
  231. package/src/document/assets/fonts/kapra-neue-expanded-medium.woff +0 -0
  232. package/src/document/assets/fonts/kapra-neue-expanded-regular.woff +0 -0
  233. package/src/document/components/DocCoverPage.tsx +0 -45
  234. package/src/document/components/DocPage.tsx +0 -40
  235. package/src/document/components/DocRail.tsx +0 -189
  236. package/src/document/components/DocSectionPage.tsx +0 -48
  237. package/src/document/components/DocViewer.tsx +0 -313
  238. package/src/document/components/Wordmark.tsx +0 -18
  239. package/src/document/components/measure.tsx +0 -133
  240. package/src/document/components/useDocPages.ts +0 -95
  241. package/src/document/engine/blocks.ts +0 -116
  242. package/src/document/engine/harvest.ts +0 -95
  243. package/src/document/engine/masonry.ts +0 -158
  244. package/src/document/engine/paginate.ts +0 -232
  245. package/src/document/engine/settings.ts +0 -125
  246. package/src/document/engine/types.ts +0 -64
  247. package/src/document/index.ts +0 -18
  248. package/src/document/styles/document.css +0 -217
  249. package/src/lib/deck-access.ts +0 -132
  250. package/src/lib/deck-dexie.ts +0 -190
  251. package/src/lib/deck-edit.ts +0 -196
  252. package/src/lib/deck-media-assets.ts +0 -57
  253. package/src/lib/deck-media-refs.ts +0 -67
  254. package/src/lib/deck-tool.ts +0 -95
  255. package/src/lib/document-input.ts +0 -57
  256. package/src/schemas/deck-meta.ts +0 -88
  257. package/src/schemas/deck.ts +0 -478
  258. package/dist/{chunk-DJABADOO.js → chunk-AJ2QOAZI.js} +3 -3
@@ -1,954 +0,0 @@
1
- import { z } from "zod";
2
- /**
3
- * A Deck is a viewer-creatable 16:9 presentation, stored as a Zod-validated
4
- * JSON tree of Layouts and Deck Components (ADR 0001). It is NOT a section
5
- * type: decks never enter the section registry, never appear in index.json,
6
- * and are rendered by the deck runtime rather than by ViewRenderer.
7
- *
8
- * The tree is authored by an LLM one whole deck at a time, so every leaf
9
- * carries a `.describe()` (the shape the model is handed) and every refusal
10
- * has to name the thing that is wrong — see `parseDeck`, which is what a
11
- * validation-retry loop reads.
12
- */
13
- /**
14
- * The stage is a fixed logical canvas scaled into the viewport by transform,
15
- * so every size inside a slide is authored in px against these dimensions and
16
- * one renderer serves a thumbnail and a full-screen presentation identically.
17
- */
18
- export declare const DECK_STAGE_WIDTH = 1600;
19
- export declare const DECK_STAGE_HEIGHT = 900;
20
- /**
21
- * Bumped when a stored deck's shape changes in a way old readers can't parse.
22
- *
23
- * Growing the vocabulary is deliberately NOT such a change: a reader that meets
24
- * an unknown `type` refuses by name (see the unions below) rather than
25
- * mis-rendering, and no deck is stored anywhere yet — ADR 0002's decks branch is
26
- * still ahead. The version is for changes to the shape of what already exists.
27
- */
28
- export declare const DECK_SCHEMA_VERSION = 1;
29
- /**
30
- * Slide ceiling. Generous for a real presentation and still a bound on the two
31
- * places an unbounded deck hurts: the LLM re-emits the WHOLE deck every turn,
32
- * and every publish re-commits it to the decks branch. Deliberately not tight —
33
- * it exists to stop a runaway, not to shape a deck.
34
- */
35
- export declare const DECK_MAX_SLIDES = 40;
36
- export declare const DeckIdSchema: z.ZodString;
37
- /**
38
- * The runtime's vocabulary. An author can only remix what the runtime provides
39
- * (ADR 0001), so a wrong `type` has to answer "then what are my options?".
40
- * Zod's own discriminator-miss message is a bare "Invalid input" at every union
41
- * size, hence the explicit `error` on each union below.
42
- */
43
- export declare const DECK_LAYOUT_TYPES: readonly ["centeredText", "fullBleedImage", "columnSplit"];
44
- export declare const DECK_COMPONENT_TYPES: readonly ["richText", "image", "imageGrid", "video"];
45
- export declare const DECK_MEDIA_KINDS: readonly ["portal"];
46
- /** Surfaces a Layout can declare. Components read the ink tokens, not this. */
47
- export declare const DECK_SURFACES: readonly ["base", "brand"];
48
- export declare const DECK_OVERLAY_PLACEMENTS: readonly ["sideLeft", "sideRight", "bottomBand"];
49
- export declare const DECK_SPLIT_RATIOS: readonly ["1-2", "2-1"];
50
- /**
51
- * A media reference. A discriminated union from day one so a future
52
- * deck-scoped media library lands as a second member rather than a migration —
53
- * `portal` (the site's own media manifest) is the only MVP kind.
54
- */
55
- export declare const PortalMediaRefSchema: z.ZodObject<{
56
- kind: z.ZodLiteral<"portal">;
57
- id: z.ZodString;
58
- }, z.core.$strip>;
59
- export declare const DeckMediaRefSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
60
- kind: z.ZodLiteral<"portal">;
61
- id: z.ZodString;
62
- }, z.core.$strip>], "kind">;
63
- export type DeckMediaRef = z.infer<typeof DeckMediaRefSchema>;
64
- /**
65
- * What a media reference resolves to at render time.
66
- *
67
- * Not Zod and never stored: it is the seam between the deck runtime and
68
- * whoever owns the media manifest — the Deck Builder in production, the dev
69
- * preview route today. Keeping it a function means the runtime needs no
70
- * manifest of its own and no knowledge of how a URL is minted.
71
- */
72
- export interface DeckMediaAsset {
73
- /** Image URL, or a video's playable source. */
74
- src: string;
75
- alt: string;
76
- /** Poster frame. Videos only. */
77
- poster?: string;
78
- /**
79
- * Intrinsic pixel dimensions, when the resolver knows them (the portal's
80
- * media manifest always does). Optional because a resolver may not, but
81
- * supplying them is what lets the image grid reserve aspect-correct space
82
- * before a byte loads, and what it packs its masonry columns from.
83
- */
84
- width?: number;
85
- height?: number;
86
- }
87
- /** `null` for media the site no longer has — the runtime renders a gap, not a broken image. */
88
- export type DeckMediaResolver = (ref: DeckMediaRef) => DeckMediaAsset | null;
89
- /**
90
- * An inline span with its marks as flags.
91
- *
92
- * This is how a deck gets bold and italic without ever admitting markup: the
93
- * marks are booleans on a segment of literal text, so "no arbitrary script"
94
- * stays a property of the schema (ADR 0001) rather than of a sanitizer.
95
- */
96
- export declare const DeckTextSpanSchema: z.ZodObject<{
97
- text: z.ZodString;
98
- bold: z.ZodOptional<z.ZodBoolean>;
99
- italic: z.ZodOptional<z.ZodBoolean>;
100
- }, z.core.$strict>;
101
- export type DeckTextSpan = z.infer<typeof DeckTextSpanSchema>;
102
- /** A body line: plain text, or a run of marked spans. */
103
- export type DeckInlineText = string | DeckTextSpan[];
104
- /**
105
- * Deck Component — rich text.
106
- *
107
- * Deliberately structured plain text rather than an HTML string: deck JSON is
108
- * authored by a model and served on the Public Link surface, and ADR 0001 makes
109
- * "a deck cannot contain arbitrary script" a property of the schema rather than
110
- * of a sanitizer. Typographic roles are fields; the runtime owns their sizing.
111
- */
112
- export declare const DeckRichTextSchema: z.ZodObject<{
113
- type: z.ZodLiteral<"richText">;
114
- kicker: z.ZodOptional<z.ZodString>;
115
- heading: z.ZodOptional<z.ZodString>;
116
- subheading: z.ZodOptional<z.ZodString>;
117
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
118
- text: z.ZodString;
119
- bold: z.ZodOptional<z.ZodBoolean>;
120
- italic: z.ZodOptional<z.ZodBoolean>;
121
- }, z.core.$strict>>]>>>;
122
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
123
- text: z.ZodString;
124
- bold: z.ZodOptional<z.ZodBoolean>;
125
- italic: z.ZodOptional<z.ZodBoolean>;
126
- }, z.core.$strict>>]>>>;
127
- }, z.core.$strip>;
128
- /**
129
- * Deck Component — image.
130
- *
131
- * The media itself is a reference, never a URL: a deck outlives the URL shape,
132
- * and the runtime has no manifest of its own (see `DeckMediaResolver`).
133
- */
134
- export declare const DeckImageSchema: z.ZodObject<{
135
- type: z.ZodLiteral<"image">;
136
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
137
- kind: z.ZodLiteral<"portal">;
138
- id: z.ZodString;
139
- }, z.core.$strip>], "kind">;
140
- caption: z.ZodOptional<z.ZodString>;
141
- }, z.core.$strip>;
142
- /**
143
- * Deck Component — image grid.
144
- *
145
- * Masonry columns, not a cell grid: every image keeps its own aspect ratio and
146
- * nothing is ever cropped, so a set of mixed portrait and landscape frames
147
- * reads as a contact sheet rather than as a set of bad crops. Carries the
148
- * runtime's signature interaction — a tile lifts on hover and expands in place
149
- * to fill the grid region, so a presenter can talk through one frame without
150
- * leaving the slide. Column count is the runtime's business.
151
- */
152
- export declare const DeckImageGridItemSchema: z.ZodObject<{
153
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
154
- kind: z.ZodLiteral<"portal">;
155
- id: z.ZodString;
156
- }, z.core.$strip>], "kind">;
157
- caption: z.ZodOptional<z.ZodString>;
158
- }, z.core.$strip>;
159
- export declare const DeckImageGridSchema: z.ZodObject<{
160
- type: z.ZodLiteral<"imageGrid">;
161
- items: z.ZodArray<z.ZodObject<{
162
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
163
- kind: z.ZodLiteral<"portal">;
164
- id: z.ZodString;
165
- }, z.core.$strip>], "kind">;
166
- caption: z.ZodOptional<z.ZodString>;
167
- }, z.core.$strip>>;
168
- }, z.core.$strip>;
169
- /**
170
- * Deck Component — video.
171
- *
172
- * Poster and play affordance until activated, then the portal-hosted source
173
- * plays in place with native controls.
174
- */
175
- export declare const DeckVideoSchema: z.ZodObject<{
176
- type: z.ZodLiteral<"video">;
177
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
178
- kind: z.ZodLiteral<"portal">;
179
- id: z.ZodString;
180
- }, z.core.$strip>], "kind">;
181
- title: z.ZodOptional<z.ZodString>;
182
- }, z.core.$strip>;
183
- /** Every Deck Component the runtime can place in a Layout slot. */
184
- export declare const DeckComponentSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
185
- type: z.ZodLiteral<"richText">;
186
- kicker: z.ZodOptional<z.ZodString>;
187
- heading: z.ZodOptional<z.ZodString>;
188
- subheading: z.ZodOptional<z.ZodString>;
189
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
190
- text: z.ZodString;
191
- bold: z.ZodOptional<z.ZodBoolean>;
192
- italic: z.ZodOptional<z.ZodBoolean>;
193
- }, z.core.$strict>>]>>>;
194
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
195
- text: z.ZodString;
196
- bold: z.ZodOptional<z.ZodBoolean>;
197
- italic: z.ZodOptional<z.ZodBoolean>;
198
- }, z.core.$strict>>]>>>;
199
- }, z.core.$strip>, z.ZodObject<{
200
- type: z.ZodLiteral<"image">;
201
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
202
- kind: z.ZodLiteral<"portal">;
203
- id: z.ZodString;
204
- }, z.core.$strip>], "kind">;
205
- caption: z.ZodOptional<z.ZodString>;
206
- }, z.core.$strip>, z.ZodObject<{
207
- type: z.ZodLiteral<"imageGrid">;
208
- items: z.ZodArray<z.ZodObject<{
209
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
210
- kind: z.ZodLiteral<"portal">;
211
- id: z.ZodString;
212
- }, z.core.$strip>], "kind">;
213
- caption: z.ZodOptional<z.ZodString>;
214
- }, z.core.$strip>>;
215
- }, z.core.$strip>, z.ZodObject<{
216
- type: z.ZodLiteral<"video">;
217
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
218
- kind: z.ZodLiteral<"portal">;
219
- id: z.ZodString;
220
- }, z.core.$strip>], "kind">;
221
- title: z.ZodOptional<z.ZodString>;
222
- }, z.core.$strip>], "type">;
223
- /**
224
- * Layout — centered text.
225
- *
226
- * A full-slide title card: one Deck Component, centered on both axes. Slots are
227
- * the Layout's business; the component only says what it says.
228
- */
229
- export declare const CenteredTextLayoutSchema: z.ZodObject<{
230
- type: z.ZodLiteral<"centeredText">;
231
- background: z.ZodDefault<z.ZodEnum<{
232
- base: "base";
233
- brand: "brand";
234
- }>>;
235
- content: z.ZodDiscriminatedUnion<[z.ZodObject<{
236
- type: z.ZodLiteral<"richText">;
237
- kicker: z.ZodOptional<z.ZodString>;
238
- heading: z.ZodOptional<z.ZodString>;
239
- subheading: z.ZodOptional<z.ZodString>;
240
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
241
- text: z.ZodString;
242
- bold: z.ZodOptional<z.ZodBoolean>;
243
- italic: z.ZodOptional<z.ZodBoolean>;
244
- }, z.core.$strict>>]>>>;
245
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
246
- text: z.ZodString;
247
- bold: z.ZodOptional<z.ZodBoolean>;
248
- italic: z.ZodOptional<z.ZodBoolean>;
249
- }, z.core.$strict>>]>>>;
250
- }, z.core.$strip>, z.ZodObject<{
251
- type: z.ZodLiteral<"image">;
252
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
253
- kind: z.ZodLiteral<"portal">;
254
- id: z.ZodString;
255
- }, z.core.$strip>], "kind">;
256
- caption: z.ZodOptional<z.ZodString>;
257
- }, z.core.$strip>, z.ZodObject<{
258
- type: z.ZodLiteral<"imageGrid">;
259
- items: z.ZodArray<z.ZodObject<{
260
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
261
- kind: z.ZodLiteral<"portal">;
262
- id: z.ZodString;
263
- }, z.core.$strip>], "kind">;
264
- caption: z.ZodOptional<z.ZodString>;
265
- }, z.core.$strip>>;
266
- }, z.core.$strip>, z.ZodObject<{
267
- type: z.ZodLiteral<"video">;
268
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
269
- kind: z.ZodLiteral<"portal">;
270
- id: z.ZodString;
271
- }, z.core.$strip>], "kind">;
272
- title: z.ZodOptional<z.ZodString>;
273
- }, z.core.$strip>], "type">;
274
- }, z.core.$strip>;
275
- /**
276
- * The overlay panel on a full-bleed slide: a solid brand-color block over the
277
- * image, holding text. Both placements exist because they read differently —
278
- * a side column is the editorial treatment, a bottom band lets the image carry
279
- * the slide. Neither is a scrim: legibility comes from the block, so the panel
280
- * declares the brand surface and the copy is opaque over it.
281
- */
282
- export declare const DeckOverlayPanelSchema: z.ZodObject<{
283
- placement: z.ZodDefault<z.ZodEnum<{
284
- sideLeft: "sideLeft";
285
- sideRight: "sideRight";
286
- bottomBand: "bottomBand";
287
- }>>;
288
- content: z.ZodObject<{
289
- type: z.ZodLiteral<"richText">;
290
- kicker: z.ZodOptional<z.ZodString>;
291
- heading: z.ZodOptional<z.ZodString>;
292
- subheading: z.ZodOptional<z.ZodString>;
293
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
294
- text: z.ZodString;
295
- bold: z.ZodOptional<z.ZodBoolean>;
296
- italic: z.ZodOptional<z.ZodBoolean>;
297
- }, z.core.$strict>>]>>>;
298
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
299
- text: z.ZodString;
300
- bold: z.ZodOptional<z.ZodBoolean>;
301
- italic: z.ZodOptional<z.ZodBoolean>;
302
- }, z.core.$strict>>]>>>;
303
- }, z.core.$strip>;
304
- }, z.core.$strip>;
305
- /**
306
- * Layout — full-bleed image.
307
- *
308
- * The image is the slide. An optional overlay panel is the only thing that may
309
- * sit on top of it.
310
- */
311
- export declare const FullBleedImageLayoutSchema: z.ZodObject<{
312
- type: z.ZodLiteral<"fullBleedImage">;
313
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
314
- kind: z.ZodLiteral<"portal">;
315
- id: z.ZodString;
316
- }, z.core.$strip>], "kind">;
317
- overlay: z.ZodOptional<z.ZodObject<{
318
- placement: z.ZodDefault<z.ZodEnum<{
319
- sideLeft: "sideLeft";
320
- sideRight: "sideRight";
321
- bottomBand: "bottomBand";
322
- }>>;
323
- content: z.ZodObject<{
324
- type: z.ZodLiteral<"richText">;
325
- kicker: z.ZodOptional<z.ZodString>;
326
- heading: z.ZodOptional<z.ZodString>;
327
- subheading: z.ZodOptional<z.ZodString>;
328
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
329
- text: z.ZodString;
330
- bold: z.ZodOptional<z.ZodBoolean>;
331
- italic: z.ZodOptional<z.ZodBoolean>;
332
- }, z.core.$strict>>]>>>;
333
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
334
- text: z.ZodString;
335
- bold: z.ZodOptional<z.ZodBoolean>;
336
- italic: z.ZodOptional<z.ZodBoolean>;
337
- }, z.core.$strict>>]>>>;
338
- }, z.core.$strip>;
339
- }, z.core.$strip>>;
340
- }, z.core.$strip>;
341
- /**
342
- * Layout — left/right column split.
343
- *
344
- * Two slots side by side at a deliberate imbalance: an even split reads as a
345
- * comparison, and this Layout is for one thing supporting another.
346
- */
347
- export declare const ColumnSplitLayoutSchema: z.ZodObject<{
348
- type: z.ZodLiteral<"columnSplit">;
349
- ratio: z.ZodDefault<z.ZodEnum<{
350
- "1-2": "1-2";
351
- "2-1": "2-1";
352
- }>>;
353
- left: z.ZodDiscriminatedUnion<[z.ZodObject<{
354
- type: z.ZodLiteral<"richText">;
355
- kicker: z.ZodOptional<z.ZodString>;
356
- heading: z.ZodOptional<z.ZodString>;
357
- subheading: z.ZodOptional<z.ZodString>;
358
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
359
- text: z.ZodString;
360
- bold: z.ZodOptional<z.ZodBoolean>;
361
- italic: z.ZodOptional<z.ZodBoolean>;
362
- }, z.core.$strict>>]>>>;
363
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
364
- text: z.ZodString;
365
- bold: z.ZodOptional<z.ZodBoolean>;
366
- italic: z.ZodOptional<z.ZodBoolean>;
367
- }, z.core.$strict>>]>>>;
368
- }, z.core.$strip>, z.ZodObject<{
369
- type: z.ZodLiteral<"image">;
370
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
371
- kind: z.ZodLiteral<"portal">;
372
- id: z.ZodString;
373
- }, z.core.$strip>], "kind">;
374
- caption: z.ZodOptional<z.ZodString>;
375
- }, z.core.$strip>, z.ZodObject<{
376
- type: z.ZodLiteral<"imageGrid">;
377
- items: z.ZodArray<z.ZodObject<{
378
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
379
- kind: z.ZodLiteral<"portal">;
380
- id: z.ZodString;
381
- }, z.core.$strip>], "kind">;
382
- caption: z.ZodOptional<z.ZodString>;
383
- }, z.core.$strip>>;
384
- }, z.core.$strip>, z.ZodObject<{
385
- type: z.ZodLiteral<"video">;
386
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
387
- kind: z.ZodLiteral<"portal">;
388
- id: z.ZodString;
389
- }, z.core.$strip>], "kind">;
390
- title: z.ZodOptional<z.ZodString>;
391
- }, z.core.$strip>], "type">;
392
- right: z.ZodDiscriminatedUnion<[z.ZodObject<{
393
- type: z.ZodLiteral<"richText">;
394
- kicker: z.ZodOptional<z.ZodString>;
395
- heading: z.ZodOptional<z.ZodString>;
396
- subheading: z.ZodOptional<z.ZodString>;
397
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
398
- text: z.ZodString;
399
- bold: z.ZodOptional<z.ZodBoolean>;
400
- italic: z.ZodOptional<z.ZodBoolean>;
401
- }, z.core.$strict>>]>>>;
402
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
403
- text: z.ZodString;
404
- bold: z.ZodOptional<z.ZodBoolean>;
405
- italic: z.ZodOptional<z.ZodBoolean>;
406
- }, z.core.$strict>>]>>>;
407
- }, z.core.$strip>, z.ZodObject<{
408
- type: z.ZodLiteral<"image">;
409
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
410
- kind: z.ZodLiteral<"portal">;
411
- id: z.ZodString;
412
- }, z.core.$strip>], "kind">;
413
- caption: z.ZodOptional<z.ZodString>;
414
- }, z.core.$strip>, z.ZodObject<{
415
- type: z.ZodLiteral<"imageGrid">;
416
- items: z.ZodArray<z.ZodObject<{
417
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
418
- kind: z.ZodLiteral<"portal">;
419
- id: z.ZodString;
420
- }, z.core.$strip>], "kind">;
421
- caption: z.ZodOptional<z.ZodString>;
422
- }, z.core.$strip>>;
423
- }, z.core.$strip>, z.ZodObject<{
424
- type: z.ZodLiteral<"video">;
425
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
426
- kind: z.ZodLiteral<"portal">;
427
- id: z.ZodString;
428
- }, z.core.$strip>], "kind">;
429
- title: z.ZodOptional<z.ZodString>;
430
- }, z.core.$strip>], "type">;
431
- }, z.core.$strip>;
432
- export declare const DeckLayoutSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
433
- type: z.ZodLiteral<"centeredText">;
434
- background: z.ZodDefault<z.ZodEnum<{
435
- base: "base";
436
- brand: "brand";
437
- }>>;
438
- content: z.ZodDiscriminatedUnion<[z.ZodObject<{
439
- type: z.ZodLiteral<"richText">;
440
- kicker: z.ZodOptional<z.ZodString>;
441
- heading: z.ZodOptional<z.ZodString>;
442
- subheading: z.ZodOptional<z.ZodString>;
443
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
444
- text: z.ZodString;
445
- bold: z.ZodOptional<z.ZodBoolean>;
446
- italic: z.ZodOptional<z.ZodBoolean>;
447
- }, z.core.$strict>>]>>>;
448
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
449
- text: z.ZodString;
450
- bold: z.ZodOptional<z.ZodBoolean>;
451
- italic: z.ZodOptional<z.ZodBoolean>;
452
- }, z.core.$strict>>]>>>;
453
- }, z.core.$strip>, z.ZodObject<{
454
- type: z.ZodLiteral<"image">;
455
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
456
- kind: z.ZodLiteral<"portal">;
457
- id: z.ZodString;
458
- }, z.core.$strip>], "kind">;
459
- caption: z.ZodOptional<z.ZodString>;
460
- }, z.core.$strip>, z.ZodObject<{
461
- type: z.ZodLiteral<"imageGrid">;
462
- items: z.ZodArray<z.ZodObject<{
463
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
464
- kind: z.ZodLiteral<"portal">;
465
- id: z.ZodString;
466
- }, z.core.$strip>], "kind">;
467
- caption: z.ZodOptional<z.ZodString>;
468
- }, z.core.$strip>>;
469
- }, z.core.$strip>, z.ZodObject<{
470
- type: z.ZodLiteral<"video">;
471
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
472
- kind: z.ZodLiteral<"portal">;
473
- id: z.ZodString;
474
- }, z.core.$strip>], "kind">;
475
- title: z.ZodOptional<z.ZodString>;
476
- }, z.core.$strip>], "type">;
477
- }, z.core.$strip>, z.ZodObject<{
478
- type: z.ZodLiteral<"fullBleedImage">;
479
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
480
- kind: z.ZodLiteral<"portal">;
481
- id: z.ZodString;
482
- }, z.core.$strip>], "kind">;
483
- overlay: z.ZodOptional<z.ZodObject<{
484
- placement: z.ZodDefault<z.ZodEnum<{
485
- sideLeft: "sideLeft";
486
- sideRight: "sideRight";
487
- bottomBand: "bottomBand";
488
- }>>;
489
- content: z.ZodObject<{
490
- type: z.ZodLiteral<"richText">;
491
- kicker: z.ZodOptional<z.ZodString>;
492
- heading: z.ZodOptional<z.ZodString>;
493
- subheading: z.ZodOptional<z.ZodString>;
494
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
495
- text: z.ZodString;
496
- bold: z.ZodOptional<z.ZodBoolean>;
497
- italic: z.ZodOptional<z.ZodBoolean>;
498
- }, z.core.$strict>>]>>>;
499
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
500
- text: z.ZodString;
501
- bold: z.ZodOptional<z.ZodBoolean>;
502
- italic: z.ZodOptional<z.ZodBoolean>;
503
- }, z.core.$strict>>]>>>;
504
- }, z.core.$strip>;
505
- }, z.core.$strip>>;
506
- }, z.core.$strip>, z.ZodObject<{
507
- type: z.ZodLiteral<"columnSplit">;
508
- ratio: z.ZodDefault<z.ZodEnum<{
509
- "1-2": "1-2";
510
- "2-1": "2-1";
511
- }>>;
512
- left: z.ZodDiscriminatedUnion<[z.ZodObject<{
513
- type: z.ZodLiteral<"richText">;
514
- kicker: z.ZodOptional<z.ZodString>;
515
- heading: z.ZodOptional<z.ZodString>;
516
- subheading: z.ZodOptional<z.ZodString>;
517
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
518
- text: z.ZodString;
519
- bold: z.ZodOptional<z.ZodBoolean>;
520
- italic: z.ZodOptional<z.ZodBoolean>;
521
- }, z.core.$strict>>]>>>;
522
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
523
- text: z.ZodString;
524
- bold: z.ZodOptional<z.ZodBoolean>;
525
- italic: z.ZodOptional<z.ZodBoolean>;
526
- }, z.core.$strict>>]>>>;
527
- }, z.core.$strip>, z.ZodObject<{
528
- type: z.ZodLiteral<"image">;
529
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
530
- kind: z.ZodLiteral<"portal">;
531
- id: z.ZodString;
532
- }, z.core.$strip>], "kind">;
533
- caption: z.ZodOptional<z.ZodString>;
534
- }, z.core.$strip>, z.ZodObject<{
535
- type: z.ZodLiteral<"imageGrid">;
536
- items: z.ZodArray<z.ZodObject<{
537
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
538
- kind: z.ZodLiteral<"portal">;
539
- id: z.ZodString;
540
- }, z.core.$strip>], "kind">;
541
- caption: z.ZodOptional<z.ZodString>;
542
- }, z.core.$strip>>;
543
- }, z.core.$strip>, z.ZodObject<{
544
- type: z.ZodLiteral<"video">;
545
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
546
- kind: z.ZodLiteral<"portal">;
547
- id: z.ZodString;
548
- }, z.core.$strip>], "kind">;
549
- title: z.ZodOptional<z.ZodString>;
550
- }, z.core.$strip>], "type">;
551
- right: z.ZodDiscriminatedUnion<[z.ZodObject<{
552
- type: z.ZodLiteral<"richText">;
553
- kicker: z.ZodOptional<z.ZodString>;
554
- heading: z.ZodOptional<z.ZodString>;
555
- subheading: z.ZodOptional<z.ZodString>;
556
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
557
- text: z.ZodString;
558
- bold: z.ZodOptional<z.ZodBoolean>;
559
- italic: z.ZodOptional<z.ZodBoolean>;
560
- }, z.core.$strict>>]>>>;
561
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
562
- text: z.ZodString;
563
- bold: z.ZodOptional<z.ZodBoolean>;
564
- italic: z.ZodOptional<z.ZodBoolean>;
565
- }, z.core.$strict>>]>>>;
566
- }, z.core.$strip>, z.ZodObject<{
567
- type: z.ZodLiteral<"image">;
568
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
569
- kind: z.ZodLiteral<"portal">;
570
- id: z.ZodString;
571
- }, z.core.$strip>], "kind">;
572
- caption: z.ZodOptional<z.ZodString>;
573
- }, z.core.$strip>, z.ZodObject<{
574
- type: z.ZodLiteral<"imageGrid">;
575
- items: z.ZodArray<z.ZodObject<{
576
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
577
- kind: z.ZodLiteral<"portal">;
578
- id: z.ZodString;
579
- }, z.core.$strip>], "kind">;
580
- caption: z.ZodOptional<z.ZodString>;
581
- }, z.core.$strip>>;
582
- }, z.core.$strip>, z.ZodObject<{
583
- type: z.ZodLiteral<"video">;
584
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
585
- kind: z.ZodLiteral<"portal">;
586
- id: z.ZodString;
587
- }, z.core.$strip>], "kind">;
588
- title: z.ZodOptional<z.ZodString>;
589
- }, z.core.$strip>], "type">;
590
- }, z.core.$strip>], "type">;
591
- export declare const DeckSlideSchema: z.ZodObject<{
592
- id: z.ZodString;
593
- title: z.ZodOptional<z.ZodString>;
594
- layout: z.ZodDiscriminatedUnion<[z.ZodObject<{
595
- type: z.ZodLiteral<"centeredText">;
596
- background: z.ZodDefault<z.ZodEnum<{
597
- base: "base";
598
- brand: "brand";
599
- }>>;
600
- content: z.ZodDiscriminatedUnion<[z.ZodObject<{
601
- type: z.ZodLiteral<"richText">;
602
- kicker: z.ZodOptional<z.ZodString>;
603
- heading: z.ZodOptional<z.ZodString>;
604
- subheading: z.ZodOptional<z.ZodString>;
605
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
606
- text: z.ZodString;
607
- bold: z.ZodOptional<z.ZodBoolean>;
608
- italic: z.ZodOptional<z.ZodBoolean>;
609
- }, z.core.$strict>>]>>>;
610
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
611
- text: z.ZodString;
612
- bold: z.ZodOptional<z.ZodBoolean>;
613
- italic: z.ZodOptional<z.ZodBoolean>;
614
- }, z.core.$strict>>]>>>;
615
- }, z.core.$strip>, z.ZodObject<{
616
- type: z.ZodLiteral<"image">;
617
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
618
- kind: z.ZodLiteral<"portal">;
619
- id: z.ZodString;
620
- }, z.core.$strip>], "kind">;
621
- caption: z.ZodOptional<z.ZodString>;
622
- }, z.core.$strip>, z.ZodObject<{
623
- type: z.ZodLiteral<"imageGrid">;
624
- items: z.ZodArray<z.ZodObject<{
625
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
626
- kind: z.ZodLiteral<"portal">;
627
- id: z.ZodString;
628
- }, z.core.$strip>], "kind">;
629
- caption: z.ZodOptional<z.ZodString>;
630
- }, z.core.$strip>>;
631
- }, z.core.$strip>, z.ZodObject<{
632
- type: z.ZodLiteral<"video">;
633
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
634
- kind: z.ZodLiteral<"portal">;
635
- id: z.ZodString;
636
- }, z.core.$strip>], "kind">;
637
- title: z.ZodOptional<z.ZodString>;
638
- }, z.core.$strip>], "type">;
639
- }, z.core.$strip>, z.ZodObject<{
640
- type: z.ZodLiteral<"fullBleedImage">;
641
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
642
- kind: z.ZodLiteral<"portal">;
643
- id: z.ZodString;
644
- }, z.core.$strip>], "kind">;
645
- overlay: z.ZodOptional<z.ZodObject<{
646
- placement: z.ZodDefault<z.ZodEnum<{
647
- sideLeft: "sideLeft";
648
- sideRight: "sideRight";
649
- bottomBand: "bottomBand";
650
- }>>;
651
- content: z.ZodObject<{
652
- type: z.ZodLiteral<"richText">;
653
- kicker: z.ZodOptional<z.ZodString>;
654
- heading: z.ZodOptional<z.ZodString>;
655
- subheading: z.ZodOptional<z.ZodString>;
656
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
657
- text: z.ZodString;
658
- bold: z.ZodOptional<z.ZodBoolean>;
659
- italic: z.ZodOptional<z.ZodBoolean>;
660
- }, z.core.$strict>>]>>>;
661
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
662
- text: z.ZodString;
663
- bold: z.ZodOptional<z.ZodBoolean>;
664
- italic: z.ZodOptional<z.ZodBoolean>;
665
- }, z.core.$strict>>]>>>;
666
- }, z.core.$strip>;
667
- }, z.core.$strip>>;
668
- }, z.core.$strip>, z.ZodObject<{
669
- type: z.ZodLiteral<"columnSplit">;
670
- ratio: z.ZodDefault<z.ZodEnum<{
671
- "1-2": "1-2";
672
- "2-1": "2-1";
673
- }>>;
674
- left: z.ZodDiscriminatedUnion<[z.ZodObject<{
675
- type: z.ZodLiteral<"richText">;
676
- kicker: z.ZodOptional<z.ZodString>;
677
- heading: z.ZodOptional<z.ZodString>;
678
- subheading: z.ZodOptional<z.ZodString>;
679
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
680
- text: z.ZodString;
681
- bold: z.ZodOptional<z.ZodBoolean>;
682
- italic: z.ZodOptional<z.ZodBoolean>;
683
- }, z.core.$strict>>]>>>;
684
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
685
- text: z.ZodString;
686
- bold: z.ZodOptional<z.ZodBoolean>;
687
- italic: z.ZodOptional<z.ZodBoolean>;
688
- }, z.core.$strict>>]>>>;
689
- }, z.core.$strip>, z.ZodObject<{
690
- type: z.ZodLiteral<"image">;
691
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
692
- kind: z.ZodLiteral<"portal">;
693
- id: z.ZodString;
694
- }, z.core.$strip>], "kind">;
695
- caption: z.ZodOptional<z.ZodString>;
696
- }, z.core.$strip>, z.ZodObject<{
697
- type: z.ZodLiteral<"imageGrid">;
698
- items: z.ZodArray<z.ZodObject<{
699
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
700
- kind: z.ZodLiteral<"portal">;
701
- id: z.ZodString;
702
- }, z.core.$strip>], "kind">;
703
- caption: z.ZodOptional<z.ZodString>;
704
- }, z.core.$strip>>;
705
- }, z.core.$strip>, z.ZodObject<{
706
- type: z.ZodLiteral<"video">;
707
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
708
- kind: z.ZodLiteral<"portal">;
709
- id: z.ZodString;
710
- }, z.core.$strip>], "kind">;
711
- title: z.ZodOptional<z.ZodString>;
712
- }, z.core.$strip>], "type">;
713
- right: z.ZodDiscriminatedUnion<[z.ZodObject<{
714
- type: z.ZodLiteral<"richText">;
715
- kicker: z.ZodOptional<z.ZodString>;
716
- heading: z.ZodOptional<z.ZodString>;
717
- subheading: z.ZodOptional<z.ZodString>;
718
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
719
- text: z.ZodString;
720
- bold: z.ZodOptional<z.ZodBoolean>;
721
- italic: z.ZodOptional<z.ZodBoolean>;
722
- }, z.core.$strict>>]>>>;
723
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
724
- text: z.ZodString;
725
- bold: z.ZodOptional<z.ZodBoolean>;
726
- italic: z.ZodOptional<z.ZodBoolean>;
727
- }, z.core.$strict>>]>>>;
728
- }, z.core.$strip>, z.ZodObject<{
729
- type: z.ZodLiteral<"image">;
730
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
731
- kind: z.ZodLiteral<"portal">;
732
- id: z.ZodString;
733
- }, z.core.$strip>], "kind">;
734
- caption: z.ZodOptional<z.ZodString>;
735
- }, z.core.$strip>, z.ZodObject<{
736
- type: z.ZodLiteral<"imageGrid">;
737
- items: z.ZodArray<z.ZodObject<{
738
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
739
- kind: z.ZodLiteral<"portal">;
740
- id: z.ZodString;
741
- }, z.core.$strip>], "kind">;
742
- caption: z.ZodOptional<z.ZodString>;
743
- }, z.core.$strip>>;
744
- }, z.core.$strip>, z.ZodObject<{
745
- type: z.ZodLiteral<"video">;
746
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
747
- kind: z.ZodLiteral<"portal">;
748
- id: z.ZodString;
749
- }, z.core.$strip>], "kind">;
750
- title: z.ZodOptional<z.ZodString>;
751
- }, z.core.$strip>], "type">;
752
- }, z.core.$strip>], "type">;
753
- }, z.core.$strip>;
754
- export declare const DeckSchema: z.ZodObject<{
755
- schemaVersion: z.ZodLiteral<1>;
756
- id: z.ZodString;
757
- title: z.ZodString;
758
- slides: z.ZodArray<z.ZodObject<{
759
- id: z.ZodString;
760
- title: z.ZodOptional<z.ZodString>;
761
- layout: z.ZodDiscriminatedUnion<[z.ZodObject<{
762
- type: z.ZodLiteral<"centeredText">;
763
- background: z.ZodDefault<z.ZodEnum<{
764
- base: "base";
765
- brand: "brand";
766
- }>>;
767
- content: z.ZodDiscriminatedUnion<[z.ZodObject<{
768
- type: z.ZodLiteral<"richText">;
769
- kicker: z.ZodOptional<z.ZodString>;
770
- heading: z.ZodOptional<z.ZodString>;
771
- subheading: z.ZodOptional<z.ZodString>;
772
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
773
- text: z.ZodString;
774
- bold: z.ZodOptional<z.ZodBoolean>;
775
- italic: z.ZodOptional<z.ZodBoolean>;
776
- }, z.core.$strict>>]>>>;
777
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
778
- text: z.ZodString;
779
- bold: z.ZodOptional<z.ZodBoolean>;
780
- italic: z.ZodOptional<z.ZodBoolean>;
781
- }, z.core.$strict>>]>>>;
782
- }, z.core.$strip>, z.ZodObject<{
783
- type: z.ZodLiteral<"image">;
784
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
785
- kind: z.ZodLiteral<"portal">;
786
- id: z.ZodString;
787
- }, z.core.$strip>], "kind">;
788
- caption: z.ZodOptional<z.ZodString>;
789
- }, z.core.$strip>, z.ZodObject<{
790
- type: z.ZodLiteral<"imageGrid">;
791
- items: z.ZodArray<z.ZodObject<{
792
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
793
- kind: z.ZodLiteral<"portal">;
794
- id: z.ZodString;
795
- }, z.core.$strip>], "kind">;
796
- caption: z.ZodOptional<z.ZodString>;
797
- }, z.core.$strip>>;
798
- }, z.core.$strip>, z.ZodObject<{
799
- type: z.ZodLiteral<"video">;
800
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
801
- kind: z.ZodLiteral<"portal">;
802
- id: z.ZodString;
803
- }, z.core.$strip>], "kind">;
804
- title: z.ZodOptional<z.ZodString>;
805
- }, z.core.$strip>], "type">;
806
- }, z.core.$strip>, z.ZodObject<{
807
- type: z.ZodLiteral<"fullBleedImage">;
808
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
809
- kind: z.ZodLiteral<"portal">;
810
- id: z.ZodString;
811
- }, z.core.$strip>], "kind">;
812
- overlay: z.ZodOptional<z.ZodObject<{
813
- placement: z.ZodDefault<z.ZodEnum<{
814
- sideLeft: "sideLeft";
815
- sideRight: "sideRight";
816
- bottomBand: "bottomBand";
817
- }>>;
818
- content: z.ZodObject<{
819
- type: z.ZodLiteral<"richText">;
820
- kicker: z.ZodOptional<z.ZodString>;
821
- heading: z.ZodOptional<z.ZodString>;
822
- subheading: z.ZodOptional<z.ZodString>;
823
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
824
- text: z.ZodString;
825
- bold: z.ZodOptional<z.ZodBoolean>;
826
- italic: z.ZodOptional<z.ZodBoolean>;
827
- }, z.core.$strict>>]>>>;
828
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
829
- text: z.ZodString;
830
- bold: z.ZodOptional<z.ZodBoolean>;
831
- italic: z.ZodOptional<z.ZodBoolean>;
832
- }, z.core.$strict>>]>>>;
833
- }, z.core.$strip>;
834
- }, z.core.$strip>>;
835
- }, z.core.$strip>, z.ZodObject<{
836
- type: z.ZodLiteral<"columnSplit">;
837
- ratio: z.ZodDefault<z.ZodEnum<{
838
- "1-2": "1-2";
839
- "2-1": "2-1";
840
- }>>;
841
- left: z.ZodDiscriminatedUnion<[z.ZodObject<{
842
- type: z.ZodLiteral<"richText">;
843
- kicker: z.ZodOptional<z.ZodString>;
844
- heading: z.ZodOptional<z.ZodString>;
845
- subheading: z.ZodOptional<z.ZodString>;
846
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
847
- text: z.ZodString;
848
- bold: z.ZodOptional<z.ZodBoolean>;
849
- italic: z.ZodOptional<z.ZodBoolean>;
850
- }, z.core.$strict>>]>>>;
851
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
852
- text: z.ZodString;
853
- bold: z.ZodOptional<z.ZodBoolean>;
854
- italic: z.ZodOptional<z.ZodBoolean>;
855
- }, z.core.$strict>>]>>>;
856
- }, z.core.$strip>, z.ZodObject<{
857
- type: z.ZodLiteral<"image">;
858
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
859
- kind: z.ZodLiteral<"portal">;
860
- id: z.ZodString;
861
- }, z.core.$strip>], "kind">;
862
- caption: z.ZodOptional<z.ZodString>;
863
- }, z.core.$strip>, z.ZodObject<{
864
- type: z.ZodLiteral<"imageGrid">;
865
- items: z.ZodArray<z.ZodObject<{
866
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
867
- kind: z.ZodLiteral<"portal">;
868
- id: z.ZodString;
869
- }, z.core.$strip>], "kind">;
870
- caption: z.ZodOptional<z.ZodString>;
871
- }, z.core.$strip>>;
872
- }, z.core.$strip>, z.ZodObject<{
873
- type: z.ZodLiteral<"video">;
874
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
875
- kind: z.ZodLiteral<"portal">;
876
- id: z.ZodString;
877
- }, z.core.$strip>], "kind">;
878
- title: z.ZodOptional<z.ZodString>;
879
- }, z.core.$strip>], "type">;
880
- right: z.ZodDiscriminatedUnion<[z.ZodObject<{
881
- type: z.ZodLiteral<"richText">;
882
- kicker: z.ZodOptional<z.ZodString>;
883
- heading: z.ZodOptional<z.ZodString>;
884
- subheading: z.ZodOptional<z.ZodString>;
885
- paragraphs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
886
- text: z.ZodString;
887
- bold: z.ZodOptional<z.ZodBoolean>;
888
- italic: z.ZodOptional<z.ZodBoolean>;
889
- }, z.core.$strict>>]>>>;
890
- bullets: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
891
- text: z.ZodString;
892
- bold: z.ZodOptional<z.ZodBoolean>;
893
- italic: z.ZodOptional<z.ZodBoolean>;
894
- }, z.core.$strict>>]>>>;
895
- }, z.core.$strip>, z.ZodObject<{
896
- type: z.ZodLiteral<"image">;
897
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
898
- kind: z.ZodLiteral<"portal">;
899
- id: z.ZodString;
900
- }, z.core.$strip>], "kind">;
901
- caption: z.ZodOptional<z.ZodString>;
902
- }, z.core.$strip>, z.ZodObject<{
903
- type: z.ZodLiteral<"imageGrid">;
904
- items: z.ZodArray<z.ZodObject<{
905
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
906
- kind: z.ZodLiteral<"portal">;
907
- id: z.ZodString;
908
- }, z.core.$strip>], "kind">;
909
- caption: z.ZodOptional<z.ZodString>;
910
- }, z.core.$strip>>;
911
- }, z.core.$strip>, z.ZodObject<{
912
- type: z.ZodLiteral<"video">;
913
- media: z.ZodDiscriminatedUnion<[z.ZodObject<{
914
- kind: z.ZodLiteral<"portal">;
915
- id: z.ZodString;
916
- }, z.core.$strip>], "kind">;
917
- title: z.ZodOptional<z.ZodString>;
918
- }, z.core.$strip>], "type">;
919
- }, z.core.$strip>], "type">;
920
- }, z.core.$strip>>;
921
- }, z.core.$strip>;
922
- export type DeckSurface = (typeof DECK_SURFACES)[number];
923
- export type DeckOverlayPlacement = (typeof DECK_OVERLAY_PLACEMENTS)[number];
924
- export type DeckSplitRatio = (typeof DECK_SPLIT_RATIOS)[number];
925
- export type DeckRichText = z.infer<typeof DeckRichTextSchema>;
926
- export type DeckImage = z.infer<typeof DeckImageSchema>;
927
- export type DeckImageGridItem = z.infer<typeof DeckImageGridItemSchema>;
928
- export type DeckImageGrid = z.infer<typeof DeckImageGridSchema>;
929
- export type DeckVideo = z.infer<typeof DeckVideoSchema>;
930
- export type DeckComponent = z.infer<typeof DeckComponentSchema>;
931
- export type CenteredTextLayout = z.infer<typeof CenteredTextLayoutSchema>;
932
- export type DeckOverlayPanel = z.infer<typeof DeckOverlayPanelSchema>;
933
- export type FullBleedImageLayout = z.infer<typeof FullBleedImageLayoutSchema>;
934
- export type ColumnSplitLayout = z.infer<typeof ColumnSplitLayoutSchema>;
935
- export type DeckLayout = z.infer<typeof DeckLayoutSchema>;
936
- export type DeckSlide = z.infer<typeof DeckSlideSchema>;
937
- export type Deck = z.infer<typeof DeckSchema>;
938
- export type DeckParseResult = {
939
- ok: true;
940
- deck: Deck;
941
- } | {
942
- ok: false;
943
- errors: string[];
944
- };
945
- /** One `path: message` line per issue, or `"<message>"` for a deck-level issue. */
946
- export declare function formatDeckIssues(error: z.ZodError): string[];
947
- /**
948
- * Parse untrusted deck JSON. Returns every problem, not just the first, so a
949
- * validation-retry loop can hand the whole list back to the author in one turn.
950
- */
951
- export declare function parseDeck(input: unknown): DeckParseResult;
952
- /** Pretty-printed with a trailing newline, matching every other repo-stored JSON. */
953
- export declare function serializeDeck(deck: Deck): string;
954
- //# sourceMappingURL=deck.d.ts.map