@pep/term-deck 1.0.13 → 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 (36) 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.ts +0 -45
  9. package/src/cli/__tests__/errors.test.ts +0 -201
  10. package/src/cli/__tests__/help.test.ts +0 -157
  11. package/src/cli/__tests__/init.test.ts +0 -110
  12. package/src/cli/commands/export.ts +0 -33
  13. package/src/cli/commands/init.ts +0 -125
  14. package/src/cli/commands/present.ts +0 -29
  15. package/src/cli/errors.ts +0 -77
  16. package/src/core/__tests__/slide.test.ts +0 -1759
  17. package/src/core/__tests__/theme.test.ts +0 -1103
  18. package/src/core/slide.ts +0 -509
  19. package/src/core/theme.ts +0 -388
  20. package/src/export/__tests__/recorder.test.ts +0 -566
  21. package/src/export/recorder.ts +0 -639
  22. package/src/index.ts +0 -36
  23. package/src/presenter/__tests__/main.test.ts +0 -244
  24. package/src/presenter/main.ts +0 -658
  25. package/src/renderer/__tests__/screen-extended.test.ts +0 -801
  26. package/src/renderer/__tests__/screen.test.ts +0 -525
  27. package/src/renderer/screen.ts +0 -671
  28. package/src/schemas/__tests__/config.test.ts +0 -429
  29. package/src/schemas/__tests__/slide.test.ts +0 -349
  30. package/src/schemas/__tests__/theme.test.ts +0 -970
  31. package/src/schemas/__tests__/validation.test.ts +0 -256
  32. package/src/schemas/config.ts +0 -58
  33. package/src/schemas/slide.ts +0 -56
  34. package/src/schemas/theme.ts +0 -203
  35. package/src/schemas/validation.ts +0 -64
  36. 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 };