@thewhateverapp/tile-sdk 0.13.31 → 0.13.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/react/index.d.ts.map +1 -1
  2. package/dist/react/index.js +1 -0
  3. package/dist/spec/host/OverlayHost.d.ts +68 -0
  4. package/dist/spec/host/OverlayHost.d.ts.map +1 -0
  5. package/dist/spec/host/OverlayHost.js +143 -0
  6. package/dist/spec/host/index.d.ts +7 -0
  7. package/dist/spec/host/index.d.ts.map +1 -0
  8. package/dist/spec/host/index.js +6 -0
  9. package/dist/spec/index.d.ts +29 -0
  10. package/dist/spec/index.d.ts.map +1 -0
  11. package/dist/spec/index.js +81 -0
  12. package/dist/spec/registry/ComponentRegistry.d.ts +208 -0
  13. package/dist/spec/registry/ComponentRegistry.d.ts.map +1 -0
  14. package/dist/spec/registry/ComponentRegistry.js +227 -0
  15. package/dist/spec/registry/composites/BottomSheet.d.ts +33 -0
  16. package/dist/spec/registry/composites/BottomSheet.d.ts.map +1 -0
  17. package/dist/spec/registry/composites/BottomSheet.js +98 -0
  18. package/dist/spec/registry/composites/CountdownCTA.d.ts +35 -0
  19. package/dist/spec/registry/composites/CountdownCTA.d.ts.map +1 -0
  20. package/dist/spec/registry/composites/CountdownCTA.js +91 -0
  21. package/dist/spec/registry/composites/Poll.d.ts +39 -0
  22. package/dist/spec/registry/composites/Poll.d.ts.map +1 -0
  23. package/dist/spec/registry/composites/Poll.js +76 -0
  24. package/dist/spec/registry/composites/Prediction.d.ts +37 -0
  25. package/dist/spec/registry/composites/Prediction.d.ts.map +1 -0
  26. package/dist/spec/registry/composites/Prediction.js +116 -0
  27. package/dist/spec/registry/composites/index.d.ts +33 -0
  28. package/dist/spec/registry/composites/index.d.ts.map +1 -0
  29. package/dist/spec/registry/composites/index.js +36 -0
  30. package/dist/spec/registry/index.d.ts +15 -0
  31. package/dist/spec/registry/index.d.ts.map +1 -0
  32. package/dist/spec/registry/index.js +24 -0
  33. package/dist/spec/registry/primitives/Button.d.ts +30 -0
  34. package/dist/spec/registry/primitives/Button.d.ts.map +1 -0
  35. package/dist/spec/registry/primitives/Button.js +62 -0
  36. package/dist/spec/registry/primitives/Divider.d.ts +22 -0
  37. package/dist/spec/registry/primitives/Divider.d.ts.map +1 -0
  38. package/dist/spec/registry/primitives/Divider.js +56 -0
  39. package/dist/spec/registry/primitives/Image.d.ts +27 -0
  40. package/dist/spec/registry/primitives/Image.d.ts.map +1 -0
  41. package/dist/spec/registry/primitives/Image.js +36 -0
  42. package/dist/spec/registry/primitives/ProgressBar.d.ts +28 -0
  43. package/dist/spec/registry/primitives/ProgressBar.d.ts.map +1 -0
  44. package/dist/spec/registry/primitives/ProgressBar.js +50 -0
  45. package/dist/spec/registry/primitives/Row.d.ts +26 -0
  46. package/dist/spec/registry/primitives/Row.d.ts.map +1 -0
  47. package/dist/spec/registry/primitives/Row.js +50 -0
  48. package/dist/spec/registry/primitives/Spacer.d.ts +18 -0
  49. package/dist/spec/registry/primitives/Spacer.d.ts.map +1 -0
  50. package/dist/spec/registry/primitives/Spacer.js +25 -0
  51. package/dist/spec/registry/primitives/Stack.d.ts +22 -0
  52. package/dist/spec/registry/primitives/Stack.d.ts.map +1 -0
  53. package/dist/spec/registry/primitives/Stack.js +41 -0
  54. package/dist/spec/registry/primitives/Text.d.ts +26 -0
  55. package/dist/spec/registry/primitives/Text.d.ts.map +1 -0
  56. package/dist/spec/registry/primitives/Text.js +33 -0
  57. package/dist/spec/registry/primitives/index.d.ts +45 -0
  58. package/dist/spec/registry/primitives/index.d.ts.map +1 -0
  59. package/dist/spec/registry/primitives/index.js +55 -0
  60. package/dist/spec/renderer/BindingResolver.d.ts +35 -0
  61. package/dist/spec/renderer/BindingResolver.d.ts.map +1 -0
  62. package/dist/spec/renderer/BindingResolver.js +131 -0
  63. package/dist/spec/renderer/CaptionTrack.d.ts +22 -0
  64. package/dist/spec/renderer/CaptionTrack.d.ts.map +1 -0
  65. package/dist/spec/renderer/CaptionTrack.js +83 -0
  66. package/dist/spec/renderer/LayoutRenderer.d.ts +24 -0
  67. package/dist/spec/renderer/LayoutRenderer.d.ts.map +1 -0
  68. package/dist/spec/renderer/LayoutRenderer.js +66 -0
  69. package/dist/spec/renderer/OverlayCue.d.ts +20 -0
  70. package/dist/spec/renderer/OverlayCue.d.ts.map +1 -0
  71. package/dist/spec/renderer/OverlayCue.js +161 -0
  72. package/dist/spec/renderer/index.d.ts +10 -0
  73. package/dist/spec/renderer/index.d.ts.map +1 -0
  74. package/dist/spec/renderer/index.js +13 -0
  75. package/dist/spec/runtime/ActionRouter.d.ts +33 -0
  76. package/dist/spec/runtime/ActionRouter.d.ts.map +1 -0
  77. package/dist/spec/runtime/ActionRouter.js +84 -0
  78. package/dist/spec/runtime/OverlayRuntime.d.ts +84 -0
  79. package/dist/spec/runtime/OverlayRuntime.d.ts.map +1 -0
  80. package/dist/spec/runtime/OverlayRuntime.js +216 -0
  81. package/dist/spec/runtime/StateManager.d.ts +31 -0
  82. package/dist/spec/runtime/StateManager.d.ts.map +1 -0
  83. package/dist/spec/runtime/StateManager.js +60 -0
  84. package/dist/spec/runtime/TimeSync.d.ts +47 -0
  85. package/dist/spec/runtime/TimeSync.d.ts.map +1 -0
  86. package/dist/spec/runtime/TimeSync.js +140 -0
  87. package/dist/spec/runtime/index.d.ts +10 -0
  88. package/dist/spec/runtime/index.d.ts.map +1 -0
  89. package/dist/spec/runtime/index.js +13 -0
  90. package/dist/spec/schema.d.ts +889 -0
  91. package/dist/spec/schema.d.ts.map +1 -0
  92. package/dist/spec/schema.js +284 -0
  93. package/dist/spec/theme/ThemeProvider.d.ts +151 -0
  94. package/dist/spec/theme/ThemeProvider.d.ts.map +1 -0
  95. package/dist/spec/theme/ThemeProvider.js +227 -0
  96. package/dist/spec/theme/index.d.ts +7 -0
  97. package/dist/spec/theme/index.d.ts.map +1 -0
  98. package/dist/spec/theme/index.js +12 -0
  99. package/dist/spec/types.d.ts +322 -0
  100. package/dist/spec/types.d.ts.map +1 -0
  101. package/dist/spec/types.js +36 -0
  102. package/package.json +8 -1
@@ -0,0 +1,889 @@
1
+ /**
2
+ * Overlay Spec Zod Schema
3
+ *
4
+ * Validates spec JSON at runtime for safety and error reporting.
5
+ */
6
+ import { z } from 'zod';
7
+ import type { OverlaySpec, ValidationProfile } from './types';
8
+ declare const SizeSchema: z.ZodEnum<["xs", "sm", "md", "lg", "xl", "2xl"]>;
9
+ declare const WeightSchema: z.ZodEnum<["normal", "medium", "semibold", "bold"]>;
10
+ declare const ColorSchema: z.ZodEnum<["primary", "secondary", "success", "warning", "error", "muted", "white", "black"]>;
11
+ declare const VariantSchema: z.ZodEnum<["solid", "outline", "ghost", "link"]>;
12
+ declare const AlignSchema: z.ZodEnum<["left", "center", "right"]>;
13
+ declare const JustifySchema: z.ZodEnum<["start", "center", "end", "between", "around"]>;
14
+ declare const BindingSchema: z.ZodObject<{
15
+ $bind: z.ZodString;
16
+ fallback: z.ZodOptional<z.ZodUnknown>;
17
+ format: z.ZodOptional<z.ZodString>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ $bind: string;
20
+ fallback?: unknown;
21
+ format?: string | undefined;
22
+ }, {
23
+ $bind: string;
24
+ fallback?: unknown;
25
+ format?: string | undefined;
26
+ }>;
27
+ declare const ActionSchema: z.ZodObject<{
28
+ $action: z.ZodEnum<["emit", "setState", "sequence", "openTile", "openFull", "navigate", "dismiss", "fx"]>;
29
+ payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
30
+ }, "strip", z.ZodTypeAny, {
31
+ $action: "navigate" | "setState" | "emit" | "sequence" | "openTile" | "openFull" | "dismiss" | "fx";
32
+ payload?: Record<string, unknown> | undefined;
33
+ }, {
34
+ $action: "navigate" | "setState" | "emit" | "sequence" | "openTile" | "openFull" | "dismiss" | "fx";
35
+ payload?: Record<string, unknown> | undefined;
36
+ }>;
37
+ declare const PropValueSchema: z.ZodType<unknown>;
38
+ declare const ConditionSchema: z.ZodType<unknown>;
39
+ declare const CaptionTrackSchema: z.ZodObject<{
40
+ segments: z.ZodArray<z.ZodObject<{
41
+ startMs: z.ZodNumber;
42
+ endMs: z.ZodNumber;
43
+ text: z.ZodString;
44
+ speaker: z.ZodOptional<z.ZodString>;
45
+ }, "strip", z.ZodTypeAny, {
46
+ text: string;
47
+ startMs: number;
48
+ endMs: number;
49
+ speaker?: string | undefined;
50
+ }, {
51
+ text: string;
52
+ startMs: number;
53
+ endMs: number;
54
+ speaker?: string | undefined;
55
+ }>, "many">;
56
+ style: z.ZodObject<{
57
+ position: z.ZodEnum<["top", "bottom", "center"]>;
58
+ size: z.ZodEnum<["xs", "sm", "md", "lg", "xl", "2xl"]>;
59
+ background: z.ZodOptional<z.ZodEnum<["none", "solid", "gradient"]>>;
60
+ color: z.ZodOptional<z.ZodString>;
61
+ }, "strip", z.ZodTypeAny, {
62
+ position: "center" | "bottom" | "top";
63
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
64
+ background?: "none" | "solid" | "gradient" | undefined;
65
+ color?: string | undefined;
66
+ }, {
67
+ position: "center" | "bottom" | "top";
68
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
69
+ background?: "none" | "solid" | "gradient" | undefined;
70
+ color?: string | undefined;
71
+ }>;
72
+ }, "strip", z.ZodTypeAny, {
73
+ style: {
74
+ position: "center" | "bottom" | "top";
75
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
76
+ background?: "none" | "solid" | "gradient" | undefined;
77
+ color?: string | undefined;
78
+ };
79
+ segments: {
80
+ text: string;
81
+ startMs: number;
82
+ endMs: number;
83
+ speaker?: string | undefined;
84
+ }[];
85
+ }, {
86
+ style: {
87
+ position: "center" | "bottom" | "top";
88
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
89
+ background?: "none" | "solid" | "gradient" | undefined;
90
+ color?: string | undefined;
91
+ };
92
+ segments: {
93
+ text: string;
94
+ startMs: number;
95
+ endMs: number;
96
+ speaker?: string | undefined;
97
+ }[];
98
+ }>;
99
+ declare const LayoutNodeSchema: z.ZodType<unknown>;
100
+ declare const PlacementSchema: z.ZodUnion<[z.ZodObject<{
101
+ lane: z.ZodEnum<["top", "center", "bottom"]>;
102
+ inset: z.ZodOptional<z.ZodNumber>;
103
+ align: z.ZodOptional<z.ZodEnum<["left", "center", "right"]>>;
104
+ }, "strip", z.ZodTypeAny, {
105
+ lane: "center" | "bottom" | "top";
106
+ inset?: number | undefined;
107
+ align?: "center" | "left" | "right" | undefined;
108
+ }, {
109
+ lane: "center" | "bottom" | "top";
110
+ inset?: number | undefined;
111
+ align?: "center" | "left" | "right" | undefined;
112
+ }>, z.ZodObject<{
113
+ type: z.ZodEnum<["fullscreen", "inset", "positioned"]>;
114
+ insets: z.ZodOptional<z.ZodObject<{
115
+ top: z.ZodOptional<z.ZodNumber>;
116
+ right: z.ZodOptional<z.ZodNumber>;
117
+ bottom: z.ZodOptional<z.ZodNumber>;
118
+ left: z.ZodOptional<z.ZodNumber>;
119
+ }, "strip", z.ZodTypeAny, {
120
+ left?: number | undefined;
121
+ right?: number | undefined;
122
+ bottom?: number | undefined;
123
+ top?: number | undefined;
124
+ }, {
125
+ left?: number | undefined;
126
+ right?: number | undefined;
127
+ bottom?: number | undefined;
128
+ top?: number | undefined;
129
+ }>>;
130
+ position: z.ZodOptional<z.ZodObject<{
131
+ x: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
132
+ y: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
133
+ }, "strip", z.ZodTypeAny, {
134
+ x: string | number;
135
+ y: string | number;
136
+ }, {
137
+ x: string | number;
138
+ y: string | number;
139
+ }>>;
140
+ }, "strip", z.ZodTypeAny, {
141
+ type: "inset" | "fullscreen" | "positioned";
142
+ position?: {
143
+ x: string | number;
144
+ y: string | number;
145
+ } | undefined;
146
+ insets?: {
147
+ left?: number | undefined;
148
+ right?: number | undefined;
149
+ bottom?: number | undefined;
150
+ top?: number | undefined;
151
+ } | undefined;
152
+ }, {
153
+ type: "inset" | "fullscreen" | "positioned";
154
+ position?: {
155
+ x: string | number;
156
+ y: string | number;
157
+ } | undefined;
158
+ insets?: {
159
+ left?: number | undefined;
160
+ right?: number | undefined;
161
+ bottom?: number | undefined;
162
+ top?: number | undefined;
163
+ } | undefined;
164
+ }>]>;
165
+ declare const OverlayCueSchema: z.ZodObject<{
166
+ id: z.ZodString;
167
+ window: z.ZodObject<{
168
+ startMs: z.ZodOptional<z.ZodNumber>;
169
+ endMs: z.ZodOptional<z.ZodNumber>;
170
+ }, "strip", z.ZodTypeAny, {
171
+ startMs?: number | undefined;
172
+ endMs?: number | undefined;
173
+ }, {
174
+ startMs?: number | undefined;
175
+ endMs?: number | undefined;
176
+ }>;
177
+ visibleWhen: z.ZodOptional<z.ZodType<unknown, z.ZodTypeDef, unknown>>;
178
+ placement: z.ZodUnion<[z.ZodObject<{
179
+ lane: z.ZodEnum<["top", "center", "bottom"]>;
180
+ inset: z.ZodOptional<z.ZodNumber>;
181
+ align: z.ZodOptional<z.ZodEnum<["left", "center", "right"]>>;
182
+ }, "strip", z.ZodTypeAny, {
183
+ lane: "center" | "bottom" | "top";
184
+ inset?: number | undefined;
185
+ align?: "center" | "left" | "right" | undefined;
186
+ }, {
187
+ lane: "center" | "bottom" | "top";
188
+ inset?: number | undefined;
189
+ align?: "center" | "left" | "right" | undefined;
190
+ }>, z.ZodObject<{
191
+ type: z.ZodEnum<["fullscreen", "inset", "positioned"]>;
192
+ insets: z.ZodOptional<z.ZodObject<{
193
+ top: z.ZodOptional<z.ZodNumber>;
194
+ right: z.ZodOptional<z.ZodNumber>;
195
+ bottom: z.ZodOptional<z.ZodNumber>;
196
+ left: z.ZodOptional<z.ZodNumber>;
197
+ }, "strip", z.ZodTypeAny, {
198
+ left?: number | undefined;
199
+ right?: number | undefined;
200
+ bottom?: number | undefined;
201
+ top?: number | undefined;
202
+ }, {
203
+ left?: number | undefined;
204
+ right?: number | undefined;
205
+ bottom?: number | undefined;
206
+ top?: number | undefined;
207
+ }>>;
208
+ position: z.ZodOptional<z.ZodObject<{
209
+ x: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
210
+ y: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
211
+ }, "strip", z.ZodTypeAny, {
212
+ x: string | number;
213
+ y: string | number;
214
+ }, {
215
+ x: string | number;
216
+ y: string | number;
217
+ }>>;
218
+ }, "strip", z.ZodTypeAny, {
219
+ type: "inset" | "fullscreen" | "positioned";
220
+ position?: {
221
+ x: string | number;
222
+ y: string | number;
223
+ } | undefined;
224
+ insets?: {
225
+ left?: number | undefined;
226
+ right?: number | undefined;
227
+ bottom?: number | undefined;
228
+ top?: number | undefined;
229
+ } | undefined;
230
+ }, {
231
+ type: "inset" | "fullscreen" | "positioned";
232
+ position?: {
233
+ x: string | number;
234
+ y: string | number;
235
+ } | undefined;
236
+ insets?: {
237
+ left?: number | undefined;
238
+ right?: number | undefined;
239
+ bottom?: number | undefined;
240
+ top?: number | undefined;
241
+ } | undefined;
242
+ }>]>;
243
+ dismiss: z.ZodOptional<z.ZodObject<{
244
+ on: z.ZodArray<z.ZodEnum<["tap-outside", "swipe-down", "timeout", "action", "time-window-end"]>, "many">;
245
+ animation: z.ZodOptional<z.ZodEnum<["fade", "slide", "none"]>>;
246
+ durationMs: z.ZodOptional<z.ZodNumber>;
247
+ }, "strip", z.ZodTypeAny, {
248
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
249
+ animation?: "none" | "fade" | "slide" | undefined;
250
+ durationMs?: number | undefined;
251
+ }, {
252
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
253
+ animation?: "none" | "fade" | "slide" | undefined;
254
+ durationMs?: number | undefined;
255
+ }>>;
256
+ layout: z.ZodType<Record<string, unknown>>;
257
+ zIndex: z.ZodOptional<z.ZodNumber>;
258
+ }, "strip", z.ZodTypeAny, {
259
+ id: string;
260
+ layout: Record<string, unknown>;
261
+ window: {
262
+ startMs?: number | undefined;
263
+ endMs?: number | undefined;
264
+ };
265
+ placement: {
266
+ lane: "center" | "bottom" | "top";
267
+ inset?: number | undefined;
268
+ align?: "center" | "left" | "right" | undefined;
269
+ } | {
270
+ type: "inset" | "fullscreen" | "positioned";
271
+ position?: {
272
+ x: string | number;
273
+ y: string | number;
274
+ } | undefined;
275
+ insets?: {
276
+ left?: number | undefined;
277
+ right?: number | undefined;
278
+ bottom?: number | undefined;
279
+ top?: number | undefined;
280
+ } | undefined;
281
+ };
282
+ zIndex?: number | undefined;
283
+ dismiss?: {
284
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
285
+ animation?: "none" | "fade" | "slide" | undefined;
286
+ durationMs?: number | undefined;
287
+ } | undefined;
288
+ visibleWhen?: unknown;
289
+ }, {
290
+ id: string;
291
+ layout: Record<string, unknown>;
292
+ window: {
293
+ startMs?: number | undefined;
294
+ endMs?: number | undefined;
295
+ };
296
+ placement: {
297
+ lane: "center" | "bottom" | "top";
298
+ inset?: number | undefined;
299
+ align?: "center" | "left" | "right" | undefined;
300
+ } | {
301
+ type: "inset" | "fullscreen" | "positioned";
302
+ position?: {
303
+ x: string | number;
304
+ y: string | number;
305
+ } | undefined;
306
+ insets?: {
307
+ left?: number | undefined;
308
+ right?: number | undefined;
309
+ bottom?: number | undefined;
310
+ top?: number | undefined;
311
+ } | undefined;
312
+ };
313
+ zIndex?: number | undefined;
314
+ dismiss?: {
315
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
316
+ animation?: "none" | "fade" | "slide" | undefined;
317
+ durationMs?: number | undefined;
318
+ } | undefined;
319
+ visibleWhen?: unknown;
320
+ }>;
321
+ export declare const OverlaySpecSchema: z.ZodObject<{
322
+ specVersion: z.ZodLiteral<"1.0">;
323
+ id: z.ZodString;
324
+ surface: z.ZodEnum<["tile", "full"]>;
325
+ meta: z.ZodOptional<z.ZodObject<{
326
+ title: z.ZodOptional<z.ZodString>;
327
+ author: z.ZodOptional<z.ZodString>;
328
+ description: z.ZodOptional<z.ZodString>;
329
+ version: z.ZodOptional<z.ZodString>;
330
+ }, "strip", z.ZodTypeAny, {
331
+ title?: string | undefined;
332
+ author?: string | undefined;
333
+ description?: string | undefined;
334
+ version?: string | undefined;
335
+ }, {
336
+ title?: string | undefined;
337
+ author?: string | undefined;
338
+ description?: string | undefined;
339
+ version?: string | undefined;
340
+ }>>;
341
+ sync: z.ZodObject<{
342
+ timebase: z.ZodEnum<["player", "wallClock"]>;
343
+ tick: z.ZodEnum<["raf", "timeupdate"]>;
344
+ toleranceMs: z.ZodNumber;
345
+ onSeek: z.ZodLiteral<"recompute">;
346
+ transform: z.ZodOptional<z.ZodObject<{
347
+ offsetMs: z.ZodOptional<z.ZodNumber>;
348
+ scale: z.ZodOptional<z.ZodNumber>;
349
+ }, "strip", z.ZodTypeAny, {
350
+ offsetMs?: number | undefined;
351
+ scale?: number | undefined;
352
+ }, {
353
+ offsetMs?: number | undefined;
354
+ scale?: number | undefined;
355
+ }>>;
356
+ freezeWhen: z.ZodOptional<z.ZodType<unknown, z.ZodTypeDef, unknown>>;
357
+ }, "strip", z.ZodTypeAny, {
358
+ timebase: "player" | "wallClock";
359
+ tick: "timeupdate" | "raf";
360
+ toleranceMs: number;
361
+ onSeek: "recompute";
362
+ transform?: {
363
+ offsetMs?: number | undefined;
364
+ scale?: number | undefined;
365
+ } | undefined;
366
+ freezeWhen?: unknown;
367
+ }, {
368
+ timebase: "player" | "wallClock";
369
+ tick: "timeupdate" | "raf";
370
+ toleranceMs: number;
371
+ onSeek: "recompute";
372
+ transform?: {
373
+ offsetMs?: number | undefined;
374
+ scale?: number | undefined;
375
+ } | undefined;
376
+ freezeWhen?: unknown;
377
+ }>;
378
+ state: z.ZodObject<{
379
+ local: z.ZodRecord<z.ZodString, z.ZodUnknown>;
380
+ }, "strip", z.ZodTypeAny, {
381
+ local: Record<string, unknown>;
382
+ }, {
383
+ local: Record<string, unknown>;
384
+ }>;
385
+ tracks: z.ZodObject<{
386
+ captions: z.ZodOptional<z.ZodObject<{
387
+ segments: z.ZodArray<z.ZodObject<{
388
+ startMs: z.ZodNumber;
389
+ endMs: z.ZodNumber;
390
+ text: z.ZodString;
391
+ speaker: z.ZodOptional<z.ZodString>;
392
+ }, "strip", z.ZodTypeAny, {
393
+ text: string;
394
+ startMs: number;
395
+ endMs: number;
396
+ speaker?: string | undefined;
397
+ }, {
398
+ text: string;
399
+ startMs: number;
400
+ endMs: number;
401
+ speaker?: string | undefined;
402
+ }>, "many">;
403
+ style: z.ZodObject<{
404
+ position: z.ZodEnum<["top", "bottom", "center"]>;
405
+ size: z.ZodEnum<["xs", "sm", "md", "lg", "xl", "2xl"]>;
406
+ background: z.ZodOptional<z.ZodEnum<["none", "solid", "gradient"]>>;
407
+ color: z.ZodOptional<z.ZodString>;
408
+ }, "strip", z.ZodTypeAny, {
409
+ position: "center" | "bottom" | "top";
410
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
411
+ background?: "none" | "solid" | "gradient" | undefined;
412
+ color?: string | undefined;
413
+ }, {
414
+ position: "center" | "bottom" | "top";
415
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
416
+ background?: "none" | "solid" | "gradient" | undefined;
417
+ color?: string | undefined;
418
+ }>;
419
+ }, "strip", z.ZodTypeAny, {
420
+ style: {
421
+ position: "center" | "bottom" | "top";
422
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
423
+ background?: "none" | "solid" | "gradient" | undefined;
424
+ color?: string | undefined;
425
+ };
426
+ segments: {
427
+ text: string;
428
+ startMs: number;
429
+ endMs: number;
430
+ speaker?: string | undefined;
431
+ }[];
432
+ }, {
433
+ style: {
434
+ position: "center" | "bottom" | "top";
435
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
436
+ background?: "none" | "solid" | "gradient" | undefined;
437
+ color?: string | undefined;
438
+ };
439
+ segments: {
440
+ text: string;
441
+ startMs: number;
442
+ endMs: number;
443
+ speaker?: string | undefined;
444
+ }[];
445
+ }>>;
446
+ overlays: z.ZodArray<z.ZodObject<{
447
+ id: z.ZodString;
448
+ window: z.ZodObject<{
449
+ startMs: z.ZodOptional<z.ZodNumber>;
450
+ endMs: z.ZodOptional<z.ZodNumber>;
451
+ }, "strip", z.ZodTypeAny, {
452
+ startMs?: number | undefined;
453
+ endMs?: number | undefined;
454
+ }, {
455
+ startMs?: number | undefined;
456
+ endMs?: number | undefined;
457
+ }>;
458
+ visibleWhen: z.ZodOptional<z.ZodType<unknown, z.ZodTypeDef, unknown>>;
459
+ placement: z.ZodUnion<[z.ZodObject<{
460
+ lane: z.ZodEnum<["top", "center", "bottom"]>;
461
+ inset: z.ZodOptional<z.ZodNumber>;
462
+ align: z.ZodOptional<z.ZodEnum<["left", "center", "right"]>>;
463
+ }, "strip", z.ZodTypeAny, {
464
+ lane: "center" | "bottom" | "top";
465
+ inset?: number | undefined;
466
+ align?: "center" | "left" | "right" | undefined;
467
+ }, {
468
+ lane: "center" | "bottom" | "top";
469
+ inset?: number | undefined;
470
+ align?: "center" | "left" | "right" | undefined;
471
+ }>, z.ZodObject<{
472
+ type: z.ZodEnum<["fullscreen", "inset", "positioned"]>;
473
+ insets: z.ZodOptional<z.ZodObject<{
474
+ top: z.ZodOptional<z.ZodNumber>;
475
+ right: z.ZodOptional<z.ZodNumber>;
476
+ bottom: z.ZodOptional<z.ZodNumber>;
477
+ left: z.ZodOptional<z.ZodNumber>;
478
+ }, "strip", z.ZodTypeAny, {
479
+ left?: number | undefined;
480
+ right?: number | undefined;
481
+ bottom?: number | undefined;
482
+ top?: number | undefined;
483
+ }, {
484
+ left?: number | undefined;
485
+ right?: number | undefined;
486
+ bottom?: number | undefined;
487
+ top?: number | undefined;
488
+ }>>;
489
+ position: z.ZodOptional<z.ZodObject<{
490
+ x: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
491
+ y: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
492
+ }, "strip", z.ZodTypeAny, {
493
+ x: string | number;
494
+ y: string | number;
495
+ }, {
496
+ x: string | number;
497
+ y: string | number;
498
+ }>>;
499
+ }, "strip", z.ZodTypeAny, {
500
+ type: "inset" | "fullscreen" | "positioned";
501
+ position?: {
502
+ x: string | number;
503
+ y: string | number;
504
+ } | undefined;
505
+ insets?: {
506
+ left?: number | undefined;
507
+ right?: number | undefined;
508
+ bottom?: number | undefined;
509
+ top?: number | undefined;
510
+ } | undefined;
511
+ }, {
512
+ type: "inset" | "fullscreen" | "positioned";
513
+ position?: {
514
+ x: string | number;
515
+ y: string | number;
516
+ } | undefined;
517
+ insets?: {
518
+ left?: number | undefined;
519
+ right?: number | undefined;
520
+ bottom?: number | undefined;
521
+ top?: number | undefined;
522
+ } | undefined;
523
+ }>]>;
524
+ dismiss: z.ZodOptional<z.ZodObject<{
525
+ on: z.ZodArray<z.ZodEnum<["tap-outside", "swipe-down", "timeout", "action", "time-window-end"]>, "many">;
526
+ animation: z.ZodOptional<z.ZodEnum<["fade", "slide", "none"]>>;
527
+ durationMs: z.ZodOptional<z.ZodNumber>;
528
+ }, "strip", z.ZodTypeAny, {
529
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
530
+ animation?: "none" | "fade" | "slide" | undefined;
531
+ durationMs?: number | undefined;
532
+ }, {
533
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
534
+ animation?: "none" | "fade" | "slide" | undefined;
535
+ durationMs?: number | undefined;
536
+ }>>;
537
+ layout: z.ZodType<Record<string, unknown>>;
538
+ zIndex: z.ZodOptional<z.ZodNumber>;
539
+ }, "strip", z.ZodTypeAny, {
540
+ id: string;
541
+ layout: Record<string, unknown>;
542
+ window: {
543
+ startMs?: number | undefined;
544
+ endMs?: number | undefined;
545
+ };
546
+ placement: {
547
+ lane: "center" | "bottom" | "top";
548
+ inset?: number | undefined;
549
+ align?: "center" | "left" | "right" | undefined;
550
+ } | {
551
+ type: "inset" | "fullscreen" | "positioned";
552
+ position?: {
553
+ x: string | number;
554
+ y: string | number;
555
+ } | undefined;
556
+ insets?: {
557
+ left?: number | undefined;
558
+ right?: number | undefined;
559
+ bottom?: number | undefined;
560
+ top?: number | undefined;
561
+ } | undefined;
562
+ };
563
+ zIndex?: number | undefined;
564
+ dismiss?: {
565
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
566
+ animation?: "none" | "fade" | "slide" | undefined;
567
+ durationMs?: number | undefined;
568
+ } | undefined;
569
+ visibleWhen?: unknown;
570
+ }, {
571
+ id: string;
572
+ layout: Record<string, unknown>;
573
+ window: {
574
+ startMs?: number | undefined;
575
+ endMs?: number | undefined;
576
+ };
577
+ placement: {
578
+ lane: "center" | "bottom" | "top";
579
+ inset?: number | undefined;
580
+ align?: "center" | "left" | "right" | undefined;
581
+ } | {
582
+ type: "inset" | "fullscreen" | "positioned";
583
+ position?: {
584
+ x: string | number;
585
+ y: string | number;
586
+ } | undefined;
587
+ insets?: {
588
+ left?: number | undefined;
589
+ right?: number | undefined;
590
+ bottom?: number | undefined;
591
+ top?: number | undefined;
592
+ } | undefined;
593
+ };
594
+ zIndex?: number | undefined;
595
+ dismiss?: {
596
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
597
+ animation?: "none" | "fade" | "slide" | undefined;
598
+ durationMs?: number | undefined;
599
+ } | undefined;
600
+ visibleWhen?: unknown;
601
+ }>, "many">;
602
+ }, "strip", z.ZodTypeAny, {
603
+ overlays: {
604
+ id: string;
605
+ layout: Record<string, unknown>;
606
+ window: {
607
+ startMs?: number | undefined;
608
+ endMs?: number | undefined;
609
+ };
610
+ placement: {
611
+ lane: "center" | "bottom" | "top";
612
+ inset?: number | undefined;
613
+ align?: "center" | "left" | "right" | undefined;
614
+ } | {
615
+ type: "inset" | "fullscreen" | "positioned";
616
+ position?: {
617
+ x: string | number;
618
+ y: string | number;
619
+ } | undefined;
620
+ insets?: {
621
+ left?: number | undefined;
622
+ right?: number | undefined;
623
+ bottom?: number | undefined;
624
+ top?: number | undefined;
625
+ } | undefined;
626
+ };
627
+ zIndex?: number | undefined;
628
+ dismiss?: {
629
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
630
+ animation?: "none" | "fade" | "slide" | undefined;
631
+ durationMs?: number | undefined;
632
+ } | undefined;
633
+ visibleWhen?: unknown;
634
+ }[];
635
+ captions?: {
636
+ style: {
637
+ position: "center" | "bottom" | "top";
638
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
639
+ background?: "none" | "solid" | "gradient" | undefined;
640
+ color?: string | undefined;
641
+ };
642
+ segments: {
643
+ text: string;
644
+ startMs: number;
645
+ endMs: number;
646
+ speaker?: string | undefined;
647
+ }[];
648
+ } | undefined;
649
+ }, {
650
+ overlays: {
651
+ id: string;
652
+ layout: Record<string, unknown>;
653
+ window: {
654
+ startMs?: number | undefined;
655
+ endMs?: number | undefined;
656
+ };
657
+ placement: {
658
+ lane: "center" | "bottom" | "top";
659
+ inset?: number | undefined;
660
+ align?: "center" | "left" | "right" | undefined;
661
+ } | {
662
+ type: "inset" | "fullscreen" | "positioned";
663
+ position?: {
664
+ x: string | number;
665
+ y: string | number;
666
+ } | undefined;
667
+ insets?: {
668
+ left?: number | undefined;
669
+ right?: number | undefined;
670
+ bottom?: number | undefined;
671
+ top?: number | undefined;
672
+ } | undefined;
673
+ };
674
+ zIndex?: number | undefined;
675
+ dismiss?: {
676
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
677
+ animation?: "none" | "fade" | "slide" | undefined;
678
+ durationMs?: number | undefined;
679
+ } | undefined;
680
+ visibleWhen?: unknown;
681
+ }[];
682
+ captions?: {
683
+ style: {
684
+ position: "center" | "bottom" | "top";
685
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
686
+ background?: "none" | "solid" | "gradient" | undefined;
687
+ color?: string | undefined;
688
+ };
689
+ segments: {
690
+ text: string;
691
+ startMs: number;
692
+ endMs: number;
693
+ speaker?: string | undefined;
694
+ }[];
695
+ } | undefined;
696
+ }>;
697
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
698
+ id: z.ZodString;
699
+ type: z.ZodEnum<["realtime", "keyspace", "host"]>;
700
+ channel: z.ZodString;
701
+ target: z.ZodString;
702
+ transform: z.ZodOptional<z.ZodString>;
703
+ }, "strip", z.ZodTypeAny, {
704
+ id: string;
705
+ type: "realtime" | "keyspace" | "host";
706
+ channel: string;
707
+ target: string;
708
+ transform?: string | undefined;
709
+ }, {
710
+ id: string;
711
+ type: "realtime" | "keyspace" | "host";
712
+ channel: string;
713
+ target: string;
714
+ transform?: string | undefined;
715
+ }>, "many">>;
716
+ }, "strip", z.ZodTypeAny, {
717
+ id: string;
718
+ state: {
719
+ local: Record<string, unknown>;
720
+ };
721
+ specVersion: "1.0";
722
+ surface: "tile" | "full";
723
+ sync: {
724
+ timebase: "player" | "wallClock";
725
+ tick: "timeupdate" | "raf";
726
+ toleranceMs: number;
727
+ onSeek: "recompute";
728
+ transform?: {
729
+ offsetMs?: number | undefined;
730
+ scale?: number | undefined;
731
+ } | undefined;
732
+ freezeWhen?: unknown;
733
+ };
734
+ tracks: {
735
+ overlays: {
736
+ id: string;
737
+ layout: Record<string, unknown>;
738
+ window: {
739
+ startMs?: number | undefined;
740
+ endMs?: number | undefined;
741
+ };
742
+ placement: {
743
+ lane: "center" | "bottom" | "top";
744
+ inset?: number | undefined;
745
+ align?: "center" | "left" | "right" | undefined;
746
+ } | {
747
+ type: "inset" | "fullscreen" | "positioned";
748
+ position?: {
749
+ x: string | number;
750
+ y: string | number;
751
+ } | undefined;
752
+ insets?: {
753
+ left?: number | undefined;
754
+ right?: number | undefined;
755
+ bottom?: number | undefined;
756
+ top?: number | undefined;
757
+ } | undefined;
758
+ };
759
+ zIndex?: number | undefined;
760
+ dismiss?: {
761
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
762
+ animation?: "none" | "fade" | "slide" | undefined;
763
+ durationMs?: number | undefined;
764
+ } | undefined;
765
+ visibleWhen?: unknown;
766
+ }[];
767
+ captions?: {
768
+ style: {
769
+ position: "center" | "bottom" | "top";
770
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
771
+ background?: "none" | "solid" | "gradient" | undefined;
772
+ color?: string | undefined;
773
+ };
774
+ segments: {
775
+ text: string;
776
+ startMs: number;
777
+ endMs: number;
778
+ speaker?: string | undefined;
779
+ }[];
780
+ } | undefined;
781
+ };
782
+ meta?: {
783
+ title?: string | undefined;
784
+ author?: string | undefined;
785
+ description?: string | undefined;
786
+ version?: string | undefined;
787
+ } | undefined;
788
+ subscriptions?: {
789
+ id: string;
790
+ type: "realtime" | "keyspace" | "host";
791
+ channel: string;
792
+ target: string;
793
+ transform?: string | undefined;
794
+ }[] | undefined;
795
+ }, {
796
+ id: string;
797
+ state: {
798
+ local: Record<string, unknown>;
799
+ };
800
+ specVersion: "1.0";
801
+ surface: "tile" | "full";
802
+ sync: {
803
+ timebase: "player" | "wallClock";
804
+ tick: "timeupdate" | "raf";
805
+ toleranceMs: number;
806
+ onSeek: "recompute";
807
+ transform?: {
808
+ offsetMs?: number | undefined;
809
+ scale?: number | undefined;
810
+ } | undefined;
811
+ freezeWhen?: unknown;
812
+ };
813
+ tracks: {
814
+ overlays: {
815
+ id: string;
816
+ layout: Record<string, unknown>;
817
+ window: {
818
+ startMs?: number | undefined;
819
+ endMs?: number | undefined;
820
+ };
821
+ placement: {
822
+ lane: "center" | "bottom" | "top";
823
+ inset?: number | undefined;
824
+ align?: "center" | "left" | "right" | undefined;
825
+ } | {
826
+ type: "inset" | "fullscreen" | "positioned";
827
+ position?: {
828
+ x: string | number;
829
+ y: string | number;
830
+ } | undefined;
831
+ insets?: {
832
+ left?: number | undefined;
833
+ right?: number | undefined;
834
+ bottom?: number | undefined;
835
+ top?: number | undefined;
836
+ } | undefined;
837
+ };
838
+ zIndex?: number | undefined;
839
+ dismiss?: {
840
+ on: ("timeout" | "action" | "tap-outside" | "time-window-end" | "swipe-down")[];
841
+ animation?: "none" | "fade" | "slide" | undefined;
842
+ durationMs?: number | undefined;
843
+ } | undefined;
844
+ visibleWhen?: unknown;
845
+ }[];
846
+ captions?: {
847
+ style: {
848
+ position: "center" | "bottom" | "top";
849
+ size: "sm" | "md" | "lg" | "xs" | "xl" | "2xl";
850
+ background?: "none" | "solid" | "gradient" | undefined;
851
+ color?: string | undefined;
852
+ };
853
+ segments: {
854
+ text: string;
855
+ startMs: number;
856
+ endMs: number;
857
+ speaker?: string | undefined;
858
+ }[];
859
+ } | undefined;
860
+ };
861
+ meta?: {
862
+ title?: string | undefined;
863
+ author?: string | undefined;
864
+ description?: string | undefined;
865
+ version?: string | undefined;
866
+ } | undefined;
867
+ subscriptions?: {
868
+ id: string;
869
+ type: "realtime" | "keyspace" | "host";
870
+ channel: string;
871
+ target: string;
872
+ transform?: string | undefined;
873
+ }[] | undefined;
874
+ }>;
875
+ export declare function validateSpec(spec: unknown): {
876
+ success: boolean;
877
+ data?: OverlaySpec;
878
+ errors?: z.ZodError;
879
+ };
880
+ export declare function parseSpec(spec: unknown): OverlaySpec;
881
+ /**
882
+ * Validate spec against a profile (tile or full)
883
+ */
884
+ export declare function validateAgainstProfile(spec: OverlaySpec, profile: ValidationProfile): {
885
+ valid: boolean;
886
+ errors: string[];
887
+ };
888
+ export { SizeSchema, WeightSchema, ColorSchema, VariantSchema, AlignSchema, JustifySchema, BindingSchema, ActionSchema, PropValueSchema, ConditionSchema, LayoutNodeSchema, PlacementSchema, OverlayCueSchema, CaptionTrackSchema, };
889
+ //# sourceMappingURL=schema.d.ts.map