@pep/term-deck 1.0.14 → 1.0.15

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 (37) hide show
  1. package/dist/bin/term-deck.d.ts +1 -0
  2. package/dist/bin/term-deck.js +1720 -0
  3. package/dist/bin/term-deck.js.map +1 -0
  4. package/dist/index.d.ts +670 -0
  5. package/dist/index.js +159 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +16 -13
  8. package/bin/term-deck.js +0 -14
  9. package/bin/term-deck.ts +0 -45
  10. package/src/cli/__tests__/errors.test.ts +0 -201
  11. package/src/cli/__tests__/help.test.ts +0 -157
  12. package/src/cli/__tests__/init.test.ts +0 -110
  13. package/src/cli/commands/export.ts +0 -33
  14. package/src/cli/commands/init.ts +0 -125
  15. package/src/cli/commands/present.ts +0 -29
  16. package/src/cli/errors.ts +0 -77
  17. package/src/core/__tests__/slide.test.ts +0 -1759
  18. package/src/core/__tests__/theme.test.ts +0 -1103
  19. package/src/core/slide.ts +0 -509
  20. package/src/core/theme.ts +0 -388
  21. package/src/export/__tests__/recorder.test.ts +0 -566
  22. package/src/export/recorder.ts +0 -639
  23. package/src/index.ts +0 -36
  24. package/src/presenter/__tests__/main.test.ts +0 -244
  25. package/src/presenter/main.ts +0 -658
  26. package/src/renderer/__tests__/screen-extended.test.ts +0 -801
  27. package/src/renderer/__tests__/screen.test.ts +0 -525
  28. package/src/renderer/screen.ts +0 -671
  29. package/src/schemas/__tests__/config.test.ts +0 -429
  30. package/src/schemas/__tests__/slide.test.ts +0 -349
  31. package/src/schemas/__tests__/theme.test.ts +0 -970
  32. package/src/schemas/__tests__/validation.test.ts +0 -256
  33. package/src/schemas/config.ts +0 -58
  34. package/src/schemas/slide.ts +0 -56
  35. package/src/schemas/theme.ts +0 -203
  36. package/src/schemas/validation.ts +0 -64
  37. package/src/themes/matrix/index.ts +0 -53
@@ -0,0 +1,670 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Schema for validating deck configuration (deck.config.ts).
5
+ * Defines the complete configuration for a presentation deck.
6
+ */
7
+ declare const DeckConfigSchema: z.ZodObject<{
8
+ title: z.ZodOptional<z.ZodString>;
9
+ author: z.ZodOptional<z.ZodString>;
10
+ date: z.ZodOptional<z.ZodString>;
11
+ theme: z.ZodObject<{
12
+ name: z.ZodString;
13
+ description: z.ZodOptional<z.ZodString>;
14
+ author: z.ZodOptional<z.ZodString>;
15
+ version: z.ZodOptional<z.ZodString>;
16
+ colors: z.ZodObject<{
17
+ primary: z.ZodString;
18
+ secondary: z.ZodOptional<z.ZodString>;
19
+ accent: z.ZodString;
20
+ background: z.ZodString;
21
+ text: z.ZodString;
22
+ muted: z.ZodString;
23
+ success: z.ZodOptional<z.ZodString>;
24
+ warning: z.ZodOptional<z.ZodString>;
25
+ error: z.ZodOptional<z.ZodString>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ primary?: string;
28
+ secondary?: string;
29
+ accent?: string;
30
+ background?: string;
31
+ text?: string;
32
+ muted?: string;
33
+ success?: string;
34
+ warning?: string;
35
+ error?: string;
36
+ }, {
37
+ primary?: string;
38
+ secondary?: string;
39
+ accent?: string;
40
+ background?: string;
41
+ text?: string;
42
+ muted?: string;
43
+ success?: string;
44
+ warning?: string;
45
+ error?: string;
46
+ }>;
47
+ gradients: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>, Record<string, string[]>, Record<string, string[]>>;
48
+ glyphs: z.ZodString;
49
+ animations: z.ZodObject<{
50
+ revealSpeed: z.ZodDefault<z.ZodNumber>;
51
+ matrixDensity: z.ZodDefault<z.ZodNumber>;
52
+ glitchIterations: z.ZodDefault<z.ZodNumber>;
53
+ lineDelay: z.ZodDefault<z.ZodNumber>;
54
+ matrixInterval: z.ZodDefault<z.ZodNumber>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ revealSpeed?: number;
57
+ matrixDensity?: number;
58
+ glitchIterations?: number;
59
+ lineDelay?: number;
60
+ matrixInterval?: number;
61
+ }, {
62
+ revealSpeed?: number;
63
+ matrixDensity?: number;
64
+ glitchIterations?: number;
65
+ lineDelay?: number;
66
+ matrixInterval?: number;
67
+ }>;
68
+ window: z.ZodOptional<z.ZodObject<{
69
+ borderStyle: z.ZodDefault<z.ZodEnum<["line", "double", "rounded", "none"]>>;
70
+ shadow: z.ZodDefault<z.ZodBoolean>;
71
+ padding: z.ZodOptional<z.ZodObject<{
72
+ top: z.ZodDefault<z.ZodNumber>;
73
+ bottom: z.ZodDefault<z.ZodNumber>;
74
+ left: z.ZodDefault<z.ZodNumber>;
75
+ right: z.ZodDefault<z.ZodNumber>;
76
+ }, "strip", z.ZodTypeAny, {
77
+ top?: number;
78
+ bottom?: number;
79
+ left?: number;
80
+ right?: number;
81
+ }, {
82
+ top?: number;
83
+ bottom?: number;
84
+ left?: number;
85
+ right?: number;
86
+ }>>;
87
+ }, "strip", z.ZodTypeAny, {
88
+ borderStyle?: "line" | "double" | "rounded" | "none";
89
+ shadow?: boolean;
90
+ padding?: {
91
+ top?: number;
92
+ bottom?: number;
93
+ left?: number;
94
+ right?: number;
95
+ };
96
+ }, {
97
+ borderStyle?: "line" | "double" | "rounded" | "none";
98
+ shadow?: boolean;
99
+ padding?: {
100
+ top?: number;
101
+ bottom?: number;
102
+ left?: number;
103
+ right?: number;
104
+ };
105
+ }>>;
106
+ }, "strip", z.ZodTypeAny, {
107
+ name?: string;
108
+ description?: string;
109
+ author?: string;
110
+ version?: string;
111
+ colors?: {
112
+ primary?: string;
113
+ secondary?: string;
114
+ accent?: string;
115
+ background?: string;
116
+ text?: string;
117
+ muted?: string;
118
+ success?: string;
119
+ warning?: string;
120
+ error?: string;
121
+ };
122
+ gradients?: Record<string, string[]>;
123
+ glyphs?: string;
124
+ animations?: {
125
+ revealSpeed?: number;
126
+ matrixDensity?: number;
127
+ glitchIterations?: number;
128
+ lineDelay?: number;
129
+ matrixInterval?: number;
130
+ };
131
+ window?: {
132
+ borderStyle?: "line" | "double" | "rounded" | "none";
133
+ shadow?: boolean;
134
+ padding?: {
135
+ top?: number;
136
+ bottom?: number;
137
+ left?: number;
138
+ right?: number;
139
+ };
140
+ };
141
+ }, {
142
+ name?: string;
143
+ description?: string;
144
+ author?: string;
145
+ version?: string;
146
+ colors?: {
147
+ primary?: string;
148
+ secondary?: string;
149
+ accent?: string;
150
+ background?: string;
151
+ text?: string;
152
+ muted?: string;
153
+ success?: string;
154
+ warning?: string;
155
+ error?: string;
156
+ };
157
+ gradients?: Record<string, string[]>;
158
+ glyphs?: string;
159
+ animations?: {
160
+ revealSpeed?: number;
161
+ matrixDensity?: number;
162
+ glitchIterations?: number;
163
+ lineDelay?: number;
164
+ matrixInterval?: number;
165
+ };
166
+ window?: {
167
+ borderStyle?: "line" | "double" | "rounded" | "none";
168
+ shadow?: boolean;
169
+ padding?: {
170
+ top?: number;
171
+ bottom?: number;
172
+ left?: number;
173
+ right?: number;
174
+ };
175
+ };
176
+ }>;
177
+ settings: z.ZodOptional<z.ZodObject<{
178
+ startSlide: z.ZodDefault<z.ZodNumber>;
179
+ loop: z.ZodDefault<z.ZodBoolean>;
180
+ autoAdvance: z.ZodDefault<z.ZodNumber>;
181
+ showSlideNumbers: z.ZodDefault<z.ZodBoolean>;
182
+ showProgress: z.ZodDefault<z.ZodBoolean>;
183
+ }, "strip", z.ZodTypeAny, {
184
+ startSlide?: number;
185
+ loop?: boolean;
186
+ autoAdvance?: number;
187
+ showSlideNumbers?: boolean;
188
+ showProgress?: boolean;
189
+ }, {
190
+ startSlide?: number;
191
+ loop?: boolean;
192
+ autoAdvance?: number;
193
+ showSlideNumbers?: boolean;
194
+ showProgress?: boolean;
195
+ }>>;
196
+ export: z.ZodOptional<z.ZodObject<{
197
+ width: z.ZodDefault<z.ZodNumber>;
198
+ height: z.ZodDefault<z.ZodNumber>;
199
+ fps: z.ZodDefault<z.ZodNumber>;
200
+ }, "strip", z.ZodTypeAny, {
201
+ width?: number;
202
+ height?: number;
203
+ fps?: number;
204
+ }, {
205
+ width?: number;
206
+ height?: number;
207
+ fps?: number;
208
+ }>>;
209
+ }, "strip", z.ZodTypeAny, {
210
+ export?: {
211
+ width?: number;
212
+ height?: number;
213
+ fps?: number;
214
+ };
215
+ title?: string;
216
+ date?: string;
217
+ theme?: {
218
+ name?: string;
219
+ description?: string;
220
+ author?: string;
221
+ version?: string;
222
+ colors?: {
223
+ primary?: string;
224
+ secondary?: string;
225
+ accent?: string;
226
+ background?: string;
227
+ text?: string;
228
+ muted?: string;
229
+ success?: string;
230
+ warning?: string;
231
+ error?: string;
232
+ };
233
+ gradients?: Record<string, string[]>;
234
+ glyphs?: string;
235
+ animations?: {
236
+ revealSpeed?: number;
237
+ matrixDensity?: number;
238
+ glitchIterations?: number;
239
+ lineDelay?: number;
240
+ matrixInterval?: number;
241
+ };
242
+ window?: {
243
+ borderStyle?: "line" | "double" | "rounded" | "none";
244
+ shadow?: boolean;
245
+ padding?: {
246
+ top?: number;
247
+ bottom?: number;
248
+ left?: number;
249
+ right?: number;
250
+ };
251
+ };
252
+ };
253
+ author?: string;
254
+ settings?: {
255
+ startSlide?: number;
256
+ loop?: boolean;
257
+ autoAdvance?: number;
258
+ showSlideNumbers?: boolean;
259
+ showProgress?: boolean;
260
+ };
261
+ }, {
262
+ export?: {
263
+ width?: number;
264
+ height?: number;
265
+ fps?: number;
266
+ };
267
+ title?: string;
268
+ date?: string;
269
+ theme?: {
270
+ name?: string;
271
+ description?: string;
272
+ author?: string;
273
+ version?: string;
274
+ colors?: {
275
+ primary?: string;
276
+ secondary?: string;
277
+ accent?: string;
278
+ background?: string;
279
+ text?: string;
280
+ muted?: string;
281
+ success?: string;
282
+ warning?: string;
283
+ error?: string;
284
+ };
285
+ gradients?: Record<string, string[]>;
286
+ glyphs?: string;
287
+ animations?: {
288
+ revealSpeed?: number;
289
+ matrixDensity?: number;
290
+ glitchIterations?: number;
291
+ lineDelay?: number;
292
+ matrixInterval?: number;
293
+ };
294
+ window?: {
295
+ borderStyle?: "line" | "double" | "rounded" | "none";
296
+ shadow?: boolean;
297
+ padding?: {
298
+ top?: number;
299
+ bottom?: number;
300
+ left?: number;
301
+ right?: number;
302
+ };
303
+ };
304
+ };
305
+ author?: string;
306
+ settings?: {
307
+ startSlide?: number;
308
+ loop?: boolean;
309
+ autoAdvance?: number;
310
+ showSlideNumbers?: boolean;
311
+ showProgress?: boolean;
312
+ };
313
+ }>;
314
+ type DeckConfig = z.infer<typeof DeckConfigSchema>;
315
+
316
+ /**
317
+ * Schema for validating theme objects.
318
+ * Defines the visual appearance of the presentation deck.
319
+ */
320
+ declare const ThemeSchema: z.ZodObject<{
321
+ name: z.ZodString;
322
+ description: z.ZodOptional<z.ZodString>;
323
+ author: z.ZodOptional<z.ZodString>;
324
+ version: z.ZodOptional<z.ZodString>;
325
+ colors: z.ZodObject<{
326
+ primary: z.ZodString;
327
+ secondary: z.ZodOptional<z.ZodString>;
328
+ accent: z.ZodString;
329
+ background: z.ZodString;
330
+ text: z.ZodString;
331
+ muted: z.ZodString;
332
+ success: z.ZodOptional<z.ZodString>;
333
+ warning: z.ZodOptional<z.ZodString>;
334
+ error: z.ZodOptional<z.ZodString>;
335
+ }, "strip", z.ZodTypeAny, {
336
+ primary?: string;
337
+ secondary?: string;
338
+ accent?: string;
339
+ background?: string;
340
+ text?: string;
341
+ muted?: string;
342
+ success?: string;
343
+ warning?: string;
344
+ error?: string;
345
+ }, {
346
+ primary?: string;
347
+ secondary?: string;
348
+ accent?: string;
349
+ background?: string;
350
+ text?: string;
351
+ muted?: string;
352
+ success?: string;
353
+ warning?: string;
354
+ error?: string;
355
+ }>;
356
+ gradients: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>, Record<string, string[]>, Record<string, string[]>>;
357
+ glyphs: z.ZodString;
358
+ animations: z.ZodObject<{
359
+ revealSpeed: z.ZodDefault<z.ZodNumber>;
360
+ matrixDensity: z.ZodDefault<z.ZodNumber>;
361
+ glitchIterations: z.ZodDefault<z.ZodNumber>;
362
+ lineDelay: z.ZodDefault<z.ZodNumber>;
363
+ matrixInterval: z.ZodDefault<z.ZodNumber>;
364
+ }, "strip", z.ZodTypeAny, {
365
+ revealSpeed?: number;
366
+ matrixDensity?: number;
367
+ glitchIterations?: number;
368
+ lineDelay?: number;
369
+ matrixInterval?: number;
370
+ }, {
371
+ revealSpeed?: number;
372
+ matrixDensity?: number;
373
+ glitchIterations?: number;
374
+ lineDelay?: number;
375
+ matrixInterval?: number;
376
+ }>;
377
+ window: z.ZodOptional<z.ZodObject<{
378
+ borderStyle: z.ZodDefault<z.ZodEnum<["line", "double", "rounded", "none"]>>;
379
+ shadow: z.ZodDefault<z.ZodBoolean>;
380
+ padding: z.ZodOptional<z.ZodObject<{
381
+ top: z.ZodDefault<z.ZodNumber>;
382
+ bottom: z.ZodDefault<z.ZodNumber>;
383
+ left: z.ZodDefault<z.ZodNumber>;
384
+ right: z.ZodDefault<z.ZodNumber>;
385
+ }, "strip", z.ZodTypeAny, {
386
+ top?: number;
387
+ bottom?: number;
388
+ left?: number;
389
+ right?: number;
390
+ }, {
391
+ top?: number;
392
+ bottom?: number;
393
+ left?: number;
394
+ right?: number;
395
+ }>>;
396
+ }, "strip", z.ZodTypeAny, {
397
+ borderStyle?: "line" | "double" | "rounded" | "none";
398
+ shadow?: boolean;
399
+ padding?: {
400
+ top?: number;
401
+ bottom?: number;
402
+ left?: number;
403
+ right?: number;
404
+ };
405
+ }, {
406
+ borderStyle?: "line" | "double" | "rounded" | "none";
407
+ shadow?: boolean;
408
+ padding?: {
409
+ top?: number;
410
+ bottom?: number;
411
+ left?: number;
412
+ right?: number;
413
+ };
414
+ }>>;
415
+ }, "strip", z.ZodTypeAny, {
416
+ name?: string;
417
+ description?: string;
418
+ author?: string;
419
+ version?: string;
420
+ colors?: {
421
+ primary?: string;
422
+ secondary?: string;
423
+ accent?: string;
424
+ background?: string;
425
+ text?: string;
426
+ muted?: string;
427
+ success?: string;
428
+ warning?: string;
429
+ error?: string;
430
+ };
431
+ gradients?: Record<string, string[]>;
432
+ glyphs?: string;
433
+ animations?: {
434
+ revealSpeed?: number;
435
+ matrixDensity?: number;
436
+ glitchIterations?: number;
437
+ lineDelay?: number;
438
+ matrixInterval?: number;
439
+ };
440
+ window?: {
441
+ borderStyle?: "line" | "double" | "rounded" | "none";
442
+ shadow?: boolean;
443
+ padding?: {
444
+ top?: number;
445
+ bottom?: number;
446
+ left?: number;
447
+ right?: number;
448
+ };
449
+ };
450
+ }, {
451
+ name?: string;
452
+ description?: string;
453
+ author?: string;
454
+ version?: string;
455
+ colors?: {
456
+ primary?: string;
457
+ secondary?: string;
458
+ accent?: string;
459
+ background?: string;
460
+ text?: string;
461
+ muted?: string;
462
+ success?: string;
463
+ warning?: string;
464
+ error?: string;
465
+ };
466
+ gradients?: Record<string, string[]>;
467
+ glyphs?: string;
468
+ animations?: {
469
+ revealSpeed?: number;
470
+ matrixDensity?: number;
471
+ glitchIterations?: number;
472
+ lineDelay?: number;
473
+ matrixInterval?: number;
474
+ };
475
+ window?: {
476
+ borderStyle?: "line" | "double" | "rounded" | "none";
477
+ shadow?: boolean;
478
+ padding?: {
479
+ top?: number;
480
+ bottom?: number;
481
+ left?: number;
482
+ right?: number;
483
+ };
484
+ };
485
+ }>;
486
+ type Theme = z.infer<typeof ThemeSchema>;
487
+ /**
488
+ * Deep partial utility type that makes all nested properties optional.
489
+ * Used for theme extension where only specific fields need to be overridden.
490
+ */
491
+ type DeepPartial<T> = T extends object ? {
492
+ [P in keyof T]?: DeepPartial<T[P]>;
493
+ } : T;
494
+ /**
495
+ * Partial theme type for use with theme.extend() functionality.
496
+ * All fields (including nested) become optional.
497
+ */
498
+ type PartialTheme = DeepPartial<Theme>;
499
+
500
+ /**
501
+ * Schema for validating slide frontmatter.
502
+ * Defines the metadata for a single slide.
503
+ */
504
+ declare const SlideFrontmatterSchema: z.ZodObject<{
505
+ title: z.ZodString;
506
+ bigText: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
507
+ gradient: z.ZodOptional<z.ZodString>;
508
+ theme: z.ZodOptional<z.ZodString>;
509
+ transition: z.ZodDefault<z.ZodEnum<["glitch", "fade", "instant", "typewriter"]>>;
510
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
511
+ }, "strip", z.ZodTypeAny, {
512
+ title?: string;
513
+ bigText?: string | string[];
514
+ gradient?: string;
515
+ theme?: string;
516
+ transition?: "glitch" | "fade" | "instant" | "typewriter";
517
+ meta?: Record<string, unknown>;
518
+ }, {
519
+ title?: string;
520
+ bigText?: string | string[];
521
+ gradient?: string;
522
+ theme?: string;
523
+ transition?: "glitch" | "fade" | "instant" | "typewriter";
524
+ meta?: Record<string, unknown>;
525
+ }>;
526
+ type SlideFrontmatter = z.infer<typeof SlideFrontmatterSchema>;
527
+ /**
528
+ * Schema for a complete slide after parsing.
529
+ * Includes the parsed frontmatter, body content, optional notes, and metadata.
530
+ */
531
+ declare const SlideSchema: z.ZodObject<{
532
+ frontmatter: z.ZodObject<{
533
+ title: z.ZodString;
534
+ bigText: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
535
+ gradient: z.ZodOptional<z.ZodString>;
536
+ theme: z.ZodOptional<z.ZodString>;
537
+ transition: z.ZodDefault<z.ZodEnum<["glitch", "fade", "instant", "typewriter"]>>;
538
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
539
+ }, "strip", z.ZodTypeAny, {
540
+ title?: string;
541
+ bigText?: string | string[];
542
+ gradient?: string;
543
+ theme?: string;
544
+ transition?: "glitch" | "fade" | "instant" | "typewriter";
545
+ meta?: Record<string, unknown>;
546
+ }, {
547
+ title?: string;
548
+ bigText?: string | string[];
549
+ gradient?: string;
550
+ theme?: string;
551
+ transition?: "glitch" | "fade" | "instant" | "typewriter";
552
+ meta?: Record<string, unknown>;
553
+ }>;
554
+ body: z.ZodString;
555
+ notes: z.ZodOptional<z.ZodString>;
556
+ sourcePath: z.ZodString;
557
+ index: z.ZodNumber;
558
+ }, "strip", z.ZodTypeAny, {
559
+ frontmatter?: {
560
+ title?: string;
561
+ bigText?: string | string[];
562
+ gradient?: string;
563
+ theme?: string;
564
+ transition?: "glitch" | "fade" | "instant" | "typewriter";
565
+ meta?: Record<string, unknown>;
566
+ };
567
+ body?: string;
568
+ notes?: string;
569
+ sourcePath?: string;
570
+ index?: number;
571
+ }, {
572
+ frontmatter?: {
573
+ title?: string;
574
+ bigText?: string | string[];
575
+ gradient?: string;
576
+ theme?: string;
577
+ transition?: "glitch" | "fade" | "instant" | "typewriter";
578
+ meta?: Record<string, unknown>;
579
+ };
580
+ body?: string;
581
+ notes?: string;
582
+ sourcePath?: string;
583
+ index?: number;
584
+ }>;
585
+ type Slide = z.infer<typeof SlideSchema>;
586
+
587
+ /**
588
+ * Theme object with extension capability.
589
+ * Extends the base Theme type with an extend() method that allows
590
+ * Tailwind-style theme customization.
591
+ */
592
+ interface ThemeObject extends Theme {
593
+ /**
594
+ * Create a new theme by merging overrides into this theme.
595
+ * Uses deep merge with array replacement strategy.
596
+ *
597
+ * @param overrides - Partial theme object with values to override
598
+ * @returns A new ThemeObject with the merged values
599
+ *
600
+ * @example
601
+ * const custom = matrix.extend({
602
+ * colors: { primary: '#ff0066' }
603
+ * })
604
+ *
605
+ * @example
606
+ * // Chained extensions
607
+ * const custom = matrix
608
+ * .extend({ colors: { primary: '#ff0066' } })
609
+ * .extend({ animations: { revealSpeed: 0.5 } })
610
+ */
611
+ extend(overrides: PartialTheme): ThemeObject;
612
+ }
613
+ /**
614
+ * Create a theme from a YAML string.
615
+ * Parses the YAML, validates it against ThemeSchema, and returns a ThemeObject
616
+ * with extension capability.
617
+ *
618
+ * @param yaml - The YAML string containing the theme definition
619
+ * @returns A validated ThemeObject with extend() method
620
+ * @throws {Error} If the YAML syntax is invalid
621
+ * @throws {ValidationError} If the parsed data doesn't match ThemeSchema
622
+ *
623
+ * @example
624
+ * const theme = createTheme(`
625
+ * name: custom
626
+ * colors:
627
+ * primary: "#ff0066"
628
+ * accent: "#00ff66"
629
+ * background: "#000000"
630
+ * text: "#ffffff"
631
+ * muted: "#666666"
632
+ * gradients:
633
+ * main:
634
+ * - "#ff0066"
635
+ * - "#00ff66"
636
+ * glyphs: "0123456789ABCDEF"
637
+ * animations:
638
+ * revealSpeed: 1.0
639
+ * matrixDensity: 30
640
+ * glitchIterations: 3
641
+ * lineDelay: 20
642
+ * matrixInterval: 100
643
+ * `)
644
+ */
645
+ declare function createTheme(yaml: string): ThemeObject;
646
+
647
+ /**
648
+ * Public API for term-deck
649
+ *
650
+ * Exports functions and types for use in deck.config.ts files
651
+ * and external integrations.
652
+ */
653
+
654
+ /**
655
+ * Define deck configuration with validation
656
+ *
657
+ * Usage in deck.config.ts:
658
+ * ```typescript
659
+ * import { defineConfig } from 'term-deck'
660
+ * import matrix from '@term-deck/theme-matrix'
661
+ *
662
+ * export default defineConfig({
663
+ * title: 'My Presentation',
664
+ * theme: matrix,
665
+ * })
666
+ * ```
667
+ */
668
+ declare function defineConfig(config: DeckConfig): DeckConfig;
669
+
670
+ export { type DeckConfig, type Slide, type SlideFrontmatter, type Theme, type ThemeObject, createTheme, defineConfig };