@texuli/deck 0.0.0-stage → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -2
  3. package/dist/authoring/builder.d.ts +351 -0
  4. package/dist/authoring/builder.js +64 -0
  5. package/dist/authoring/index.d.ts +6 -0
  6. package/dist/authoring/index.js +6 -0
  7. package/dist/authoring/lint.d.ts +36 -0
  8. package/dist/authoring/lint.js +325 -0
  9. package/dist/authoring/outlines.d.ts +34 -0
  10. package/dist/authoring/outlines.js +255 -0
  11. package/dist/authoring/patch.d.ts +23 -0
  12. package/dist/authoring/patch.js +166 -0
  13. package/dist/authoring/select-layouts.d.ts +19 -0
  14. package/dist/authoring/select-layouts.js +90 -0
  15. package/dist/engine/auto-slide.d.ts +32 -0
  16. package/dist/engine/auto-slide.js +67 -0
  17. package/dist/engine/canvas.d.ts +56 -0
  18. package/dist/engine/canvas.js +48 -0
  19. package/dist/engine/controller.d.ts +126 -0
  20. package/dist/engine/controller.js +248 -0
  21. package/dist/engine/controls.d.ts +128 -0
  22. package/dist/engine/controls.js +460 -0
  23. package/dist/engine/hash.d.ts +42 -0
  24. package/dist/engine/hash.js +86 -0
  25. package/dist/engine/index.d.ts +88 -0
  26. package/dist/engine/index.js +88 -0
  27. package/dist/engine/messages.d.ts +138 -0
  28. package/dist/engine/messages.js +140 -0
  29. package/dist/engine/motion.d.ts +64 -0
  30. package/dist/engine/motion.js +112 -0
  31. package/dist/engine/navigation.d.ts +87 -0
  32. package/dist/engine/navigation.js +156 -0
  33. package/dist/engine/presenter.d.ts +58 -0
  34. package/dist/engine/presenter.js +157 -0
  35. package/dist/index.d.ts +9 -0
  36. package/dist/index.js +9 -0
  37. package/dist/markdown/attributes.d.ts +24 -0
  38. package/dist/markdown/attributes.js +94 -0
  39. package/dist/markdown/attrs-closed.d.ts +52 -0
  40. package/dist/markdown/attrs-closed.js +520 -0
  41. package/dist/markdown/blocks.d.ts +112 -0
  42. package/dist/markdown/blocks.js +766 -0
  43. package/dist/markdown/frontmatter.d.ts +30 -0
  44. package/dist/markdown/frontmatter.js +165 -0
  45. package/dist/markdown/index.d.ts +29 -0
  46. package/dist/markdown/index.js +29 -0
  47. package/dist/markdown/issues.d.ts +68 -0
  48. package/dist/markdown/issues.js +83 -0
  49. package/dist/markdown/json.d.ts +21 -0
  50. package/dist/markdown/json.js +236 -0
  51. package/dist/markdown/limits.d.ts +32 -0
  52. package/dist/markdown/limits.js +32 -0
  53. package/dist/markdown/parse.d.ts +31 -0
  54. package/dist/markdown/parse.js +283 -0
  55. package/dist/markdown/scan.d.ts +26 -0
  56. package/dist/markdown/scan.js +138 -0
  57. package/dist/markdown/slides.d.ts +32 -0
  58. package/dist/markdown/slides.js +854 -0
  59. package/dist/markdown/text.d.ts +76 -0
  60. package/dist/markdown/text.js +447 -0
  61. package/dist/markdown/twin.d.ts +41 -0
  62. package/dist/markdown/twin.js +374 -0
  63. package/dist/markdown/write.d.ts +17 -0
  64. package/dist/markdown/write.js +688 -0
  65. package/dist/math/index.d.ts +14 -0
  66. package/dist/math/index.js +14 -0
  67. package/dist/math/parse.d.ts +9 -0
  68. package/dist/math/parse.js +648 -0
  69. package/dist/math/symbols.d.ts +44 -0
  70. package/dist/math/symbols.js +333 -0
  71. package/dist/math/types.d.ts +59 -0
  72. package/dist/math/types.js +69 -0
  73. package/dist/model/backgrounds/contrast.d.ts +77 -0
  74. package/dist/model/backgrounds/contrast.js +186 -0
  75. package/dist/model/backgrounds/index.d.ts +7 -0
  76. package/dist/model/backgrounds/index.js +7 -0
  77. package/dist/model/backgrounds/resolve.d.ts +86 -0
  78. package/dist/model/backgrounds/resolve.js +215 -0
  79. package/dist/model/backgrounds/schema.d.ts +178 -0
  80. package/dist/model/backgrounds/schema.js +203 -0
  81. package/dist/model/codes.d.ts +73 -0
  82. package/dist/model/codes.js +67 -0
  83. package/dist/model/deck.d.ts +392 -0
  84. package/dist/model/deck.js +338 -0
  85. package/dist/model/index.d.ts +19 -0
  86. package/dist/model/index.js +19 -0
  87. package/dist/model/layouts/catalog.d.ts +433 -0
  88. package/dist/model/layouts/catalog.js +495 -0
  89. package/dist/model/layouts/index.d.ts +5 -0
  90. package/dist/model/layouts/index.js +5 -0
  91. package/dist/model/layouts/props.d.ts +302 -0
  92. package/dist/model/layouts/props.js +272 -0
  93. package/dist/model/loader.d.ts +37 -0
  94. package/dist/model/loader.js +317 -0
  95. package/dist/model/migrate.d.ts +34 -0
  96. package/dist/model/migrate.js +453 -0
  97. package/dist/model/motion/index.d.ts +6 -0
  98. package/dist/model/motion/index.js +6 -0
  99. package/dist/model/motion/transition.d.ts +96 -0
  100. package/dist/model/motion/transition.js +127 -0
  101. package/dist/model/parse.d.ts +57 -0
  102. package/dist/model/parse.js +307 -0
  103. package/dist/model/plain.d.ts +40 -0
  104. package/dist/model/plain.js +275 -0
  105. package/dist/model/shared.d.ts +63 -0
  106. package/dist/model/shared.js +86 -0
  107. package/dist/model/steps/index.d.ts +7 -0
  108. package/dist/model/steps/index.js +7 -0
  109. package/dist/model/steps/phase.d.ts +34 -0
  110. package/dist/model/steps/phase.js +50 -0
  111. package/dist/model/steps/slide-steps.d.ts +129 -0
  112. package/dist/model/steps/slide-steps.js +256 -0
  113. package/dist/model/style/index.d.ts +8 -0
  114. package/dist/model/style/index.js +8 -0
  115. package/dist/model/style/resolve.d.ts +87 -0
  116. package/dist/model/style/resolve.js +174 -0
  117. package/dist/model/style/schema.d.ts +85 -0
  118. package/dist/model/style/schema.js +53 -0
  119. package/dist/model/style/theme.d.ts +69 -0
  120. package/dist/model/style/theme.js +84 -0
  121. package/dist/schema/builders.d.ts +146 -0
  122. package/dist/schema/builders.js +285 -0
  123. package/dist/schema/diagnostics.d.ts +78 -0
  124. package/dist/schema/diagnostics.js +81 -0
  125. package/dist/schema/index.d.ts +15 -0
  126. package/dist/schema/index.js +14 -0
  127. package/dist/schema/internal.d.ts +40 -0
  128. package/dist/schema/internal.js +209 -0
  129. package/dist/schema/json-schema.d.ts +12 -0
  130. package/dist/schema/json-schema.js +213 -0
  131. package/dist/schema/types.d.ts +166 -0
  132. package/dist/schema/types.js +1 -0
  133. package/dist/schema/validate.d.ts +51 -0
  134. package/dist/schema/validate.js +765 -0
  135. package/dist/templates/index.d.ts +2 -0
  136. package/dist/templates/index.js +2 -0
  137. package/dist/templates/templates.d.ts +11 -0
  138. package/dist/templates/templates.js +47 -0
  139. package/package.json +60 -4
@@ -0,0 +1,433 @@
1
+ /**
2
+ * The deck layout catalog (model-v2 §3.3): 20 layouts with strict props plus
3
+ * `free`, the slide kind whose content is a list of blocks. Data only: ids,
4
+ * copy for authors and agents, pacing fit, limits, the props schema, a valid
5
+ * sample and the paths where a step marker reveals an element.
6
+ */
7
+ import { type Infer, type JsonSchema, type PathSegment, type Schema, type ValidateOptions, type ValidateResult } from '../../schema/index.js';
8
+ import { steppablePattern } from '../steps/slide-steps.js';
9
+ /**
10
+ * Pacing fit: `punch` lands in a few seconds, `idea` carries one thought,
11
+ * `diagram` explains a structure, `story` moves the narrative.
12
+ */
13
+ export declare const LAYOUT_PACING: readonly ["punch", "idea", "diagram", "story"];
14
+ export type LayoutPacing = (typeof LAYOUT_PACING)[number];
15
+ /** The 20 layouts with strict props, in catalog order. */
16
+ export declare const DECK_CATALOG_LAYOUT_IDS: readonly ["title-hero", "section-divider", "two-column-split", "three-column-cards", "image-left", "image-right", "image-centered", "image-full-bleed", "quote", "code-with-callout", "big-stat", "comparison-table", "process-steps", "timeline", "team-avatars", "closing-cta", "video-centered", "video-left", "video-right", "chart"];
17
+ export type DeckCatalogLayoutId = (typeof DECK_CATALOG_LAYOUT_IDS)[number];
18
+ /** Every catalog id: the 20 props layouts and `free` (21). */
19
+ export declare const DECK_LAYOUT_IDS: readonly ["title-hero", "section-divider", "two-column-split", "three-column-cards", "image-left", "image-right", "image-centered", "image-full-bleed", "quote", "code-with-callout", "big-stat", "comparison-table", "process-steps", "timeline", "team-avatars", "closing-cta", "video-centered", "video-left", "video-right", "chart", "free"];
20
+ export type DeckLayoutId = (typeof DECK_LAYOUT_IDS)[number];
21
+ /** The props schema of each catalog layout. */
22
+ declare const PROPS_SCHEMAS: {
23
+ readonly 'title-hero': import("../../index.js").ObjectSchema<{
24
+ readonly title: import("../../index.js").StringSchema;
25
+ readonly subtitle: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
26
+ readonly meta: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
27
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
28
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
29
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
30
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
31
+ }>;
32
+ readonly 'section-divider': import("../../index.js").ObjectSchema<{
33
+ readonly eyebrow: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
34
+ readonly title: import("../../index.js").StringSchema;
35
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
36
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
37
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
38
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
39
+ }>;
40
+ readonly 'two-column-split': import("../../index.js").ObjectSchema<{
41
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
42
+ readonly left: import("../../index.js").ObjectSchema<{
43
+ readonly heading: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
44
+ readonly body: import("../../index.js").StringSchema;
45
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
46
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
47
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
48
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
49
+ }>;
50
+ readonly right: import("../../index.js").ObjectSchema<{
51
+ readonly heading: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
52
+ readonly body: import("../../index.js").StringSchema;
53
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
54
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
55
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
56
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
57
+ }>;
58
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
59
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
60
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
61
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
62
+ }>;
63
+ readonly 'three-column-cards': import("../../index.js").ObjectSchema<{
64
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
65
+ readonly cards: import("../../index.js").ArraySchema<import("../../index.js").ObjectSchema<{
66
+ readonly icon: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
67
+ readonly heading: import("../../index.js").StringSchema;
68
+ readonly body: import("../../index.js").StringSchema;
69
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
70
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
71
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
72
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
73
+ }>>;
74
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
75
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
76
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
77
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
78
+ }>;
79
+ readonly 'image-left': import("../../index.js").ObjectSchema<{
80
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
81
+ readonly image: import("../../index.js").ObjectSchema<{
82
+ readonly src: import("../../index.js").StringSchema;
83
+ readonly alt: import("../../index.js").StringSchema;
84
+ readonly width: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
85
+ readonly height: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
86
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
87
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
88
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
89
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
90
+ }>;
91
+ readonly heading: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
92
+ readonly body: import("../../index.js").StringSchema;
93
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
94
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
95
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
96
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
97
+ }>;
98
+ readonly 'image-right': import("../../index.js").ObjectSchema<{
99
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
100
+ readonly image: import("../../index.js").ObjectSchema<{
101
+ readonly src: import("../../index.js").StringSchema;
102
+ readonly alt: import("../../index.js").StringSchema;
103
+ readonly width: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
104
+ readonly height: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
105
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
106
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
107
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
108
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
109
+ }>;
110
+ readonly heading: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
111
+ readonly body: import("../../index.js").StringSchema;
112
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
113
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
114
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
115
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
116
+ }>;
117
+ readonly 'image-centered': import("../../index.js").ObjectSchema<{
118
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
119
+ readonly image: import("../../index.js").ObjectSchema<{
120
+ readonly src: import("../../index.js").StringSchema;
121
+ readonly alt: import("../../index.js").StringSchema;
122
+ readonly width: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
123
+ readonly height: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
124
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
125
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
126
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
127
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
128
+ }>;
129
+ readonly caption: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
130
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
131
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
132
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
133
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
134
+ }>;
135
+ readonly 'image-full-bleed': import("../../index.js").ObjectSchema<{
136
+ readonly image: import("../../index.js").ObjectSchema<{
137
+ readonly src: import("../../index.js").StringSchema;
138
+ readonly alt: import("../../index.js").StringSchema;
139
+ readonly width: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
140
+ readonly height: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
141
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
142
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
143
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
144
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
145
+ }>;
146
+ readonly caption: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
147
+ readonly credit: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
148
+ readonly overlay: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"none" | "dark" | "light">, false>;
149
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
150
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
151
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
152
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
153
+ }>;
154
+ readonly quote: import("../../index.js").ObjectSchema<{
155
+ readonly quote: import("../../index.js").StringSchema;
156
+ readonly cite: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
157
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
158
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
159
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
160
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
161
+ }>;
162
+ readonly 'code-with-callout': import("../../index.js").ObjectSchema<{
163
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
164
+ readonly code: import("../../index.js").ObjectSchema<{
165
+ readonly lang: import("../../index.js").StringSchema;
166
+ readonly source: import("../../index.js").StringSchema;
167
+ readonly highlights: import("../../index.js").OptionalSchema<import("../../index.js").ArraySchema<import("../../index.js").StringSchema>, false>;
168
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
169
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
170
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
171
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
172
+ }>;
173
+ readonly heading: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
174
+ readonly bullets: import("../../index.js").ArraySchema<import("../../index.js").StringSchema>;
175
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
176
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
177
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
178
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
179
+ }>;
180
+ readonly 'big-stat': import("../../index.js").ObjectSchema<{
181
+ readonly number: import("../../index.js").StringSchema;
182
+ readonly label: import("../../index.js").StringSchema;
183
+ readonly context: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
184
+ readonly source: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
185
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
186
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
187
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
188
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
189
+ }>;
190
+ readonly 'comparison-table': import("../../index.js").RefineSchema<import("../../index.js").ObjectSchema<{
191
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
192
+ readonly columns: import("../../index.js").ArraySchema<import("../../index.js").StringSchema>;
193
+ readonly rows: import("../../index.js").ArraySchema<import("../../index.js").ObjectSchema<{
194
+ readonly label: import("../../index.js").StringSchema;
195
+ readonly values: import("../../index.js").ArraySchema<import("../../index.js").UnionSchema<readonly [import("../../index.js").StringSchema, import("../../index.js").BooleanSchema, import("../../index.js").NullSchema]>>;
196
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
197
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
198
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
199
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
200
+ }>>;
201
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
202
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
203
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
204
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
205
+ }>>;
206
+ readonly 'process-steps': import("../../index.js").ObjectSchema<{
207
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
208
+ readonly steps: import("../../index.js").ArraySchema<import("../../index.js").ObjectSchema<{
209
+ readonly title: import("../../index.js").StringSchema;
210
+ readonly body: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
211
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
212
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
213
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
214
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
215
+ }>>;
216
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
217
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
218
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
219
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
220
+ }>;
221
+ readonly timeline: import("../../index.js").ObjectSchema<{
222
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
223
+ readonly events: import("../../index.js").ArraySchema<import("../../index.js").ObjectSchema<{
224
+ readonly time: import("../../index.js").StringSchema;
225
+ readonly text: import("../../index.js").StringSchema;
226
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
227
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
228
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
229
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
230
+ }>>;
231
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
232
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
233
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
234
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
235
+ }>;
236
+ readonly 'team-avatars': import("../../index.js").ObjectSchema<{
237
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
238
+ readonly people: import("../../index.js").ArraySchema<import("../../index.js").ObjectSchema<{
239
+ readonly name: import("../../index.js").StringSchema;
240
+ readonly role: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
241
+ readonly avatar: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
242
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
243
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
244
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
245
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
246
+ }>>;
247
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
248
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
249
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
250
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
251
+ }>;
252
+ readonly 'closing-cta': import("../../index.js").ObjectSchema<{
253
+ readonly title: import("../../index.js").StringSchema;
254
+ readonly text: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
255
+ readonly cta: import("../../index.js").ObjectSchema<{
256
+ readonly label: import("../../index.js").StringSchema;
257
+ readonly href: import("../../index.js").StringSchema;
258
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
259
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
260
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
261
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
262
+ }>;
263
+ readonly footnote: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
264
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
265
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
266
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
267
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
268
+ }>;
269
+ readonly 'video-centered': import("../../index.js").ObjectSchema<{
270
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
271
+ readonly video: import("../../index.js").ObjectSchema<{
272
+ readonly src: import("../../index.js").StringSchema;
273
+ readonly label: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
274
+ readonly width: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
275
+ readonly height: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
276
+ readonly autoplay: import("../../index.js").OptionalSchema<import("../../index.js").BooleanSchema, false>;
277
+ readonly loop: import("../../index.js").OptionalSchema<import("../../index.js").BooleanSchema, false>;
278
+ readonly muted: import("../../index.js").OptionalSchema<import("../../index.js").BooleanSchema, false>;
279
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
280
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
281
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
282
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
283
+ }>;
284
+ readonly caption: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
285
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
286
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
287
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
288
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
289
+ }>;
290
+ readonly 'video-left': import("../../index.js").ObjectSchema<{
291
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
292
+ readonly video: import("../../index.js").ObjectSchema<{
293
+ readonly src: import("../../index.js").StringSchema;
294
+ readonly label: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
295
+ readonly width: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
296
+ readonly height: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
297
+ readonly autoplay: import("../../index.js").OptionalSchema<import("../../index.js").BooleanSchema, false>;
298
+ readonly loop: import("../../index.js").OptionalSchema<import("../../index.js").BooleanSchema, false>;
299
+ readonly muted: import("../../index.js").OptionalSchema<import("../../index.js").BooleanSchema, false>;
300
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
301
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
302
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
303
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
304
+ }>;
305
+ readonly heading: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
306
+ readonly body: import("../../index.js").StringSchema;
307
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
308
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
309
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
310
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
311
+ }>;
312
+ readonly 'video-right': import("../../index.js").ObjectSchema<{
313
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
314
+ readonly video: import("../../index.js").ObjectSchema<{
315
+ readonly src: import("../../index.js").StringSchema;
316
+ readonly label: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
317
+ readonly width: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
318
+ readonly height: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
319
+ readonly autoplay: import("../../index.js").OptionalSchema<import("../../index.js").BooleanSchema, false>;
320
+ readonly loop: import("../../index.js").OptionalSchema<import("../../index.js").BooleanSchema, false>;
321
+ readonly muted: import("../../index.js").OptionalSchema<import("../../index.js").BooleanSchema, false>;
322
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
323
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
324
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
325
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
326
+ }>;
327
+ readonly heading: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
328
+ readonly body: import("../../index.js").StringSchema;
329
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
330
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
331
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
332
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
333
+ }>;
334
+ readonly chart: import("../../index.js").ObjectSchema<{
335
+ readonly title: import("../../index.js").OptionalSchema<import("../../index.js").StringSchema, false>;
336
+ readonly spec: import("../../index.js").RefineSchema<import("../../index.js").JsonValueSchema>;
337
+ readonly height: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"sm" | "md" | "lg">, false>;
338
+ readonly showTable: import("../../index.js").OptionalSchema<import("../../index.js").BooleanSchema, false>;
339
+ readonly step: import("../../index.js").OptionalSchema<import("../../index.js").NumberSchema, false>;
340
+ readonly fragment: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"in" | "fade-up" | "out" | "in-then-out" | "grow" | "shrink" | "highlight" | "strike">, false>;
341
+ readonly reveal: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"fade-up" | "grow" | "highlight" | "strike" | "fade">, false>;
342
+ readonly tone: import("../../index.js").OptionalSchema<import("../../index.js").EnumSchema<"accent" | "info" | "success" | "warning" | "danger">, false>;
343
+ }>;
344
+ };
345
+ /** The validated props type of each catalog layout. */
346
+ export type LayoutProps = {
347
+ [K in DeckCatalogLayoutId]: Infer<(typeof PROPS_SCHEMAS)[K]>;
348
+ };
349
+ export interface LayoutLimits {
350
+ /** Human-readable limit lines for authors, agents and docs. */
351
+ summary: readonly string[];
352
+ }
353
+ interface EntryCopy {
354
+ label: string;
355
+ description: string;
356
+ useWhen: readonly string[];
357
+ dontUseWhen: readonly string[];
358
+ pacing: readonly LayoutPacing[];
359
+ limits: LayoutLimits;
360
+ /**
361
+ * Where a step marker reveals an element, relative to `props`: `''` is the
362
+ * whole body, a key is a nested object, `key.*` is each item of a list.
363
+ */
364
+ steppable: readonly string[];
365
+ }
366
+ /** A catalog layout with strict props. */
367
+ export interface DeckLayoutEntry<Id extends DeckCatalogLayoutId = DeckCatalogLayoutId> extends EntryCopy {
368
+ id: Id;
369
+ kind: 'props';
370
+ props: (typeof PROPS_SCHEMAS)[Id];
371
+ /** A minimal valid sample with fictional data. */
372
+ sample: LayoutProps[Id];
373
+ }
374
+ /**
375
+ * `free`: a slide kind, not a props layout. Its blocks are validated by the
376
+ * blocks pass of the deck schema, so it has no props schema and no sample here.
377
+ */
378
+ export interface DeckFreeLayoutEntry extends EntryCopy {
379
+ id: 'free';
380
+ kind: 'blocks';
381
+ props: null;
382
+ sample: null;
383
+ }
384
+ export type DeckLayoutCatalogEntry = DeckLayoutEntry | DeckFreeLayoutEntry;
385
+ export type DeckLayoutCatalog = {
386
+ readonly [K in DeckCatalogLayoutId]: DeckLayoutEntry<K>;
387
+ } & {
388
+ readonly free: DeckFreeLayoutEntry;
389
+ };
390
+ /** The layout catalog, keyed by id in catalog order (deeply frozen). */
391
+ export declare const DECK_LAYOUTS: DeckLayoutCatalog;
392
+ /** Codes this module adds to the schema kit's own. */
393
+ export declare const LAYOUT_CODES: Readonly<{
394
+ readonly unknownLayout: "unknown-layout";
395
+ readonly layoutProps: "layout-props";
396
+ }>;
397
+ /** True for the 21 catalog ids (own keys only, so `constructor` is never one). */
398
+ export declare function isLayoutId(value: unknown): value is DeckLayoutId;
399
+ /** True for the 20 layouts that take strict props (every id but `free`). */
400
+ export declare function isCatalogLayoutId(value: unknown): value is DeckCatalogLayoutId;
401
+ /** The catalog entry for `id`, or `undefined`. */
402
+ export declare function getDeckLayout(id: unknown): DeckLayoutCatalogEntry | undefined;
403
+ /** The props schema of a catalog layout; `undefined` for `free` and unknown ids. */
404
+ export declare function layoutPropsSchema<Id extends DeckCatalogLayoutId>(id: Id): (typeof PROPS_SCHEMAS)[Id];
405
+ export declare function layoutPropsSchema(id: unknown): Schema | undefined;
406
+ /** The steppable path patterns of `id` (`''`, `image`, `cards.*`); empty when unknown. */
407
+ export declare function layoutSteppablePaths(id: unknown): readonly string[];
408
+ /** The pattern of a path inside `props` (one definition, shared with the steps pass). */
409
+ export { steppablePattern };
410
+ /** Whether `layout` reveals a step marker found at `path` (relative to `props`). */
411
+ export declare function isSteppablePath(layout: unknown, path: readonly PathSegment[]): boolean;
412
+ export interface LayoutValidateOptions extends ValidateOptions {
413
+ /**
414
+ * Where an `unknown-layout` issue points. Defaults to the sibling `layout`
415
+ * key when `path` ends in `props` (`['slides', 3, 'layout']`), else `path`.
416
+ */
417
+ layoutPath?: readonly PathSegment[];
418
+ }
419
+ /**
420
+ * Validate the props of a layout: every issue as a `DeckDiagnostic`, a fresh
421
+ * trimmed copy on success, never a throw. An unknown id reports
422
+ * `unknown-layout`; `free` (which has blocks, not props) and the layouts'
423
+ * cross-field rules report `layout-props`; field issues keep the kit's codes.
424
+ */
425
+ export declare function validateLayoutProps<Id extends DeckCatalogLayoutId>(id: Id, props: unknown, options?: LayoutValidateOptions): ValidateResult<LayoutProps[Id]>;
426
+ export declare function validateLayoutProps(id: unknown, props: unknown, options?: LayoutValidateOptions): ValidateResult<unknown>;
427
+ /**
428
+ * One JSON Schema 2020-12 document for every catalog layout's props: a
429
+ * `$defs` entry named by layout id (`#/$defs/title-hero`), and a root that
430
+ * accepts any of them. `free` has no entry (its blocks belong to the deck
431
+ * schema). Refinements are described in `description`.
432
+ */
433
+ export declare function layoutsJsonSchema(): JsonSchema;