返回 slidev
headmatter.json
根目录 / packages / vscode / schema / headmatter.json
1 {
2 "$schema": "http://json-schema.org/draft-07/schema#",
3 "$ref": "#/definitions/Headmatter",
4 "definitions": {
5 "Headmatter": {
6 "type": "object",
7 "properties": {
8 "layout": {
9 "anyOf": [
10 {
11 "$ref": "#/definitions/BuiltinLayouts"
12 },
13 {
14 "type": "string"
15 }
16 ],
17 "description": "Slide layout to use\n\nDefault to 'cover' for the first slide, 'default' for the rest",
18 "markdownDescription": "Slide layout to use\n\nDefault to 'cover' for the first slide, 'default' for the rest"
19 },
20 "class": {
21 "anyOf": [
22 {
23 "type": "string"
24 },
25 {
26 "type": "array",
27 "items": {
28 "type": "string"
29 }
30 },
31 {
32 "type": "object",
33 "additionalProperties": {}
34 }
35 ],
36 "description": "Custom class added to the slide root element",
37 "markdownDescription": "Custom class added to the slide root element"
38 },
39 "clicks": {
40 "type": "number",
41 "description": "Manually specified the total clicks needed to this slide\n\nWhen not specified, the clicks will be calculated by the usage of v-clicks\n\nSee https://sli.dev/guide/animations",
42 "markdownDescription": "Manually specified the total clicks needed to this slide\n\nWhen not specified, the clicks will be calculated by the usage of v-clicks\n\nSee https://sli.dev/guide/animations"
43 },
44 "clicksStart": {
45 "type": "number",
46 "description": "Manually specified the total clicks needed to this slide to start",
47 "markdownDescription": "Manually specified the total clicks needed to this slide to start",
48 "default": 0
49 },
50 "preload": {
51 "type": "boolean",
52 "description": "Preload the slide when the previous slide is active",
53 "markdownDescription": "Preload the slide when the previous slide is active",
54 "default": true
55 },
56 "hide": {
57 "type": "boolean",
58 "description": "Completely hide and disable the slide",
59 "markdownDescription": "Completely hide and disable the slide"
60 },
61 "disabled": {
62 "type": "boolean",
63 "description": "Same as `hide`, completely hide and disable the slide",
64 "markdownDescription": "Same as `hide`, completely hide and disable the slide"
65 },
66 "hideInToc": {
67 "type": "boolean",
68 "description": "Hide the slide for the `<Toc>` components\n\nSee https://sli.dev/builtin/components#toc",
69 "markdownDescription": "Hide the slide for the `<Toc>` components\n\nSee https://sli.dev/builtin/components#toc"
70 },
71 "level": {
72 "type": "number",
73 "description": "Override the title level for the `<TitleRenderer>` and `<Toc>` components Only if `title` has also been declared",
74 "markdownDescription": "Override the title level for the `<TitleRenderer>` and `<Toc>` components\nOnly if `title` has also been declared"
75 },
76 "routeAlias": {
77 "type": "string",
78 "description": "Create a route alias that can be used in the URL or with the `<Link>` component",
79 "markdownDescription": "Create a route alias that can be used in the URL or with the `<Link>` component"
80 },
81 "zoom": {
82 "type": "number",
83 "description": "Custom zoom level for the slide",
84 "markdownDescription": "Custom zoom level for the slide",
85 "default": 1
86 },
87 "clickAnimation": {
88 "type": "string",
89 "description": "Default click animation for the slides",
90 "markdownDescription": "Default click animation for the slides"
91 },
92 "dragPos": {
93 "type": "object",
94 "additionalProperties": {
95 "type": "string"
96 },
97 "description": "Store the positions of draggable elements Normally you don't need to set this manually\n\nSee https://sli.dev/features/draggable",
98 "markdownDescription": "Store the positions of draggable elements\nNormally you don't need to set this manually\n\nSee https://sli.dev/features/draggable"
99 },
100 "src": {
101 "type": "string",
102 "description": "Includes a markdown file\n\nSee https://sli.dev/guide/syntax.html#importing-slides",
103 "markdownDescription": "Includes a markdown file\n\nSee https://sli.dev/guide/syntax.html#importing-slides"
104 },
105 "transition": {
106 "anyOf": [
107 {
108 "$ref": "#/definitions/BuiltinSlideTransition"
109 },
110 {
111 "type": "string"
112 },
113 {
114 "$ref": "#/definitions/TransitionGroupProps"
115 },
116 {
117 "type": "null"
118 }
119 ],
120 "description": "Page transition, powered by Vue's `<TransitionGroup/>`\n\nBuilt-in transitions:\n- fade\n- fade-out\n- slide-left\n- slide-right\n- slide-up\n- slide-down\n- view-transition\n\nSee https://sli.dev/guide/animations.html#pages-transitions\n\nSee https://vuejs.org/guide/built-ins/transition.html",
121 "markdownDescription": "Page transition, powered by Vue's `<TransitionGroup/>`\n\nBuilt-in transitions:\n- fade\n- fade-out\n- slide-left\n- slide-right\n- slide-up\n- slide-down\n- view-transition\n\nSee https://sli.dev/guide/animations.html#pages-transitions\n\nSee https://vuejs.org/guide/built-ins/transition.html"
122 },
123 "title": {
124 "type": "string",
125 "description": "Title of the slides",
126 "markdownDescription": "Title of the slides"
127 },
128 "titleTemplate": {
129 "type": "string",
130 "description": "String template to compose title",
131 "markdownDescription": "String template to compose title",
132 "default": "%s - Slidev"
133 },
134 "theme": {
135 "type": "string",
136 "description": "Theme to use for the slides\n\nSee https://sli.dev/guide/theme-addon#use-theme",
137 "markdownDescription": "Theme to use for the slides\n\nSee https://sli.dev/guide/theme-addon#use-theme",
138 "default": "default"
139 },
140 "addons": {
141 "type": "array",
142 "items": {
143 "type": "string"
144 },
145 "description": "List of Slidev addons",
146 "markdownDescription": "List of Slidev addons",
147 "default": []
148 },
149 "remoteAssets": {
150 "anyOf": [
151 {
152 "type": "boolean"
153 },
154 {
155 "type": "string",
156 "const": "dev"
157 },
158 {
159 "type": "string",
160 "const": "build"
161 }
162 ],
163 "description": "Download remote assets in local using vite-plugin-remote-assets",
164 "markdownDescription": "Download remote assets in local using vite-plugin-remote-assets",
165 "default": false
166 },
167 "download": {
168 "type": [
169 "boolean",
170 "string"
171 ],
172 "description": "Show a download button in the SPA build, could also be a link to custom pdf",
173 "markdownDescription": "Show a download button in the SPA build,\ncould also be a link to custom pdf",
174 "default": false
175 },
176 "codeCopy": {
177 "type": "boolean",
178 "description": "Show a copy button in code blocks",
179 "markdownDescription": "Show a copy button in code blocks",
180 "default": true
181 },
182 "magicMoveCopy": {
183 "anyOf": [
184 {
185 "type": "boolean"
186 },
187 {
188 "type": "string",
189 "const": "final"
190 },
191 {
192 "type": "string",
193 "const": "always"
194 }
195 ],
196 "description": "Show copy button in magic move code blocks\n\n`'final'` for only show copy button on the final step `'always'` or `true` for show copy button on all steps",
197 "markdownDescription": "Show copy button in magic move code blocks\n\n`'final'` for only show copy button on the final step\n`'always'` or `true` for show copy button on all steps",
198 "default": true
199 },
200 "author": {
201 "type": "string",
202 "description": "The author of the slides",
203 "markdownDescription": "The author of the slides"
204 },
205 "info": {
206 "type": [
207 "string",
208 "boolean"
209 ],
210 "description": "Information shows on the built SPA Can be a markdown string",
211 "markdownDescription": "Information shows on the built SPA\nCan be a markdown string",
212 "default": false
213 },
214 "highlighter": {
215 "type": "string",
216 "const": "shiki",
217 "description": "Prefer highlighter\n\nSee https://sli.dev/custom/config-highlighter.html",
218 "markdownDescription": "Prefer highlighter\n\nSee https://sli.dev/custom/config-highlighter.html",
219 "default": "shiki"
220 },
221 "twoslash": {
222 "anyOf": [
223 {
224 "type": "boolean"
225 },
226 {
227 "type": "string",
228 "const": "dev"
229 },
230 {
231 "type": "string",
232 "const": "build"
233 }
234 ],
235 "description": "Enable Twoslash",
236 "markdownDescription": "Enable Twoslash",
237 "default": true
238 },
239 "lineNumbers": {
240 "type": "boolean",
241 "description": "Show line numbers in code blocks",
242 "markdownDescription": "Show line numbers in code blocks",
243 "default": false
244 },
245 "colorSchema": {
246 "type": "string",
247 "enum": [
248 "dark",
249 "light",
250 "all",
251 "auto"
252 ],
253 "description": "Force slides color schema",
254 "markdownDescription": "Force slides color schema",
255 "default": "auto"
256 },
257 "routerMode": {
258 "type": "string",
259 "enum": [
260 "hash",
261 "history",
262 "memory"
263 ],
264 "description": "Router mode for vue-router\n\n- `history`: the slide number is reflected in the URL path\n- `hash`: hash-based routing, for static hosts or subdirectory deploys\n- `memory`: routing is kept in memory, so the URL never reflects the slide number and cannot be used to navigate — useful for kiosk or externally driven \"follower\" decks (deep-links, `/presenter`, `/overview` and export-by-URL are unavailable)",
265 "markdownDescription": "Router mode for vue-router\n\n- `history`: the slide number is reflected in the URL path\n- `hash`: hash-based routing, for static hosts or subdirectory deploys\n- `memory`: routing is kept in memory, so the URL never reflects the slide number and cannot be used to navigate — useful for kiosk or externally driven \"follower\" decks (deep-links, `/presenter`, `/overview` and export-by-URL are unavailable)",
266 "default": "history"
267 },
268 "aspectRatio": {
269 "type": [
270 "number",
271 "string"
272 ],
273 "description": "Aspect ratio for slides should be like `16/9` or `1:1`",
274 "markdownDescription": "Aspect ratio for slides\nshould be like `16/9` or `1:1`",
275 "default": "16/9"
276 },
277 "canvasWidth": {
278 "type": "number",
279 "description": "The actual width for slides canvas. unit in px.",
280 "markdownDescription": "The actual width for slides canvas.\nunit in px.",
281 "default": "980"
282 },
283 "selectable": {
284 "type": "boolean",
285 "description": "Controls whether texts in slides are selectable",
286 "markdownDescription": "Controls whether texts in slides are selectable",
287 "default": true
288 },
289 "themeConfig": {
290 "$ref": "#/definitions/SlidevThemeConfig",
291 "description": "Configure for themes, will inject intro root styles as `--slidev-theme-x` for attribute `x`\n\nThis allows themes to have customization options in frontmatter Refer to themes' document for options avaliable",
292 "markdownDescription": "Configure for themes, will inject intro root styles as\n`--slidev-theme-x` for attribute `x`\n\nThis allows themes to have customization options in frontmatter\nRefer to themes' document for options avaliable",
293 "default": {}
294 },
295 "fonts": {
296 "$ref": "#/definitions/FontOptions",
297 "description": "Configure fonts for the slides and app",
298 "markdownDescription": "Configure fonts for the slides and app",
299 "default": {}
300 },
301 "favicon": {
302 "type": "string",
303 "description": "Configure the icon for app",
304 "markdownDescription": "Configure the icon for app",
305 "default": "https://cdn.jsdelivr.net/gh/slidevjs/slidev/assets/favicon.png"
306 },
307 "drawings": {
308 "$ref": "#/definitions/DrawingsOptions",
309 "description": "Options for drawings",
310 "markdownDescription": "Options for drawings",
311 "default": {}
312 },
313 "plantUmlServer": {
314 "type": "string",
315 "description": "URL of PlantUML server used to render diagrams",
316 "markdownDescription": "URL of PlantUML server used to render diagrams",
317 "default": "https://www.plantuml.com/plantuml"
318 },
319 "record": {
320 "anyOf": [
321 {
322 "type": "boolean"
323 },
324 {
325 "type": "string",
326 "const": "dev"
327 },
328 {
329 "type": "string",
330 "const": "build"
331 }
332 ],
333 "description": "Enable slides recording",
334 "markdownDescription": "Enable slides recording",
335 "default": "dev"
336 },
337 "remote": {
338 "type": [
339 "string",
340 "boolean"
341 ],
342 "description": "Expose the server to inbound requests (listen to `0.0.0.0`)\n\nPass a string to set the password for accessing presenter mode.",
343 "markdownDescription": "Expose the server to inbound requests (listen to `0.0.0.0`)\n\nPass a string to set the password for accessing presenter mode.",
344 "default": false
345 },
346 "css": {
347 "type": "string",
348 "const": "unocss",
349 "description": "Engine for Atomic CSS\n\nSee https://unocss.dev/",
350 "markdownDescription": "Engine for Atomic CSS\n\nSee https://unocss.dev/",
351 "deprecated": true,
352 "default": "unocss"
353 },
354 "presenter": {
355 "anyOf": [
356 {
357 "type": "boolean"
358 },
359 {
360 "type": "string",
361 "const": "dev"
362 },
363 {
364 "type": "string",
365 "const": "build"
366 }
367 ],
368 "description": "Enable presenter mode",
369 "markdownDescription": "Enable presenter mode",
370 "default": true
371 },
372 "browserExporter": {
373 "anyOf": [
374 {
375 "type": "boolean"
376 },
377 {
378 "type": "string",
379 "const": "dev"
380 },
381 {
382 "type": "string",
383 "const": "build"
384 }
385 ],
386 "description": "Enable browser exporter",
387 "markdownDescription": "Enable browser exporter",
388 "default": "dev"
389 },
390 "htmlAttrs": {
391 "type": "object",
392 "additionalProperties": {
393 "type": "string"
394 },
395 "description": "Attributes to apply to the HTML element",
396 "markdownDescription": "Attributes to apply to the HTML element",
397 "default": {}
398 },
399 "comark": {
400 "type": "boolean",
401 "description": "Suppport Comark syntax\n\nhttps://comark.dev/syntax/markdown",
402 "markdownDescription": "Suppport Comark syntax\n\nhttps://comark.dev/syntax/markdown",
403 "default": false
404 },
405 "mdc": {
406 "type": "boolean",
407 "deprecated": "MDC is now Comark. Use the `comark` option instead",
408 "default": false
409 },
410 "editor": {
411 "type": "boolean",
412 "description": "Enable built-in editor",
413 "markdownDescription": "Enable built-in editor",
414 "default": true
415 },
416 "mcp": {
417 "type": "boolean",
418 "description": "Enable the MCP (Model Context Protocol) server endpoint on the dev server, allowing AI agents to inspect and edit the slides",
419 "markdownDescription": "Enable the MCP (Model Context Protocol) server endpoint on the dev server,\nallowing AI agents to inspect and edit the slides",
420 "default": true
421 },
422 "contextMenu": {
423 "anyOf": [
424 {
425 "type": "boolean"
426 },
427 {
428 "type": "string",
429 "const": "dev"
430 },
431 {
432 "type": "string",
433 "const": "build"
434 },
435 {
436 "type": "null"
437 }
438 ],
439 "description": "Enable context menu",
440 "markdownDescription": "Enable context menu",
441 "default": true
442 },
443 "wakeLock": {
444 "anyOf": [
445 {
446 "type": "boolean"
447 },
448 {
449 "type": "string",
450 "const": "dev"
451 },
452 {
453 "type": "string",
454 "const": "build"
455 }
456 ],
457 "description": "Enable wake lock",
458 "markdownDescription": "Enable wake lock"
459 },
460 "pwa": {
461 "anyOf": [
462 {
463 "type": "boolean"
464 },
465 {
466 "type": "string",
467 "const": "dev"
468 },
469 {
470 "type": "string",
471 "const": "build"
472 }
473 ],
474 "description": "Enable PWA support: a service worker precaches all deck assets on first load so a served deck works fully offline afterward. Heavy; opt-in.",
475 "markdownDescription": "Enable PWA support: a service worker precaches all deck assets on first\nload so a served deck works fully offline afterward. Heavy; opt-in.",
476 "default": false
477 },
478 "exportFilename": {
479 "type": [
480 "string",
481 "null"
482 ],
483 "description": "Force the filename used when exporting the presentation. The extension, e.g. .pdf, gets automatically added.",
484 "markdownDescription": "Force the filename used when exporting the presentation.\nThe extension, e.g. .pdf, gets automatically added.",
485 "default": ""
486 },
487 "monaco": {
488 "anyOf": [
489 {
490 "type": "boolean"
491 },
492 {
493 "type": "string",
494 "const": "dev"
495 },
496 {
497 "type": "string",
498 "const": "build"
499 }
500 ],
501 "description": "Enable Monaco\n\nSee https://sli.dev/custom/config-monaco.html",
502 "markdownDescription": "Enable Monaco\n\nSee https://sli.dev/custom/config-monaco.html",
503 "default": true
504 },
505 "monacoTypesSource": {
506 "type": "string",
507 "enum": [
508 "cdn",
509 "local",
510 "none"
511 ],
512 "description": "Where to load monaco types from\n\n- `cdn` - load from CDN with `@typescript/ata`\n- `local` - load from local node_modules",
513 "markdownDescription": "Where to load monaco types from\n\n- `cdn` - load from CDN with `@typescript/ata`\n- `local` - load from local node_modules",
514 "default": "local"
515 },
516 "monacoTypesAdditionalPackages": {
517 "type": "array",
518 "items": {
519 "type": "string"
520 },
521 "description": "Additional node packages to load as monaco types",
522 "markdownDescription": "Additional node packages to load as monaco types",
523 "default": []
524 },
525 "monacoTypesIgnorePackages": {
526 "type": "array",
527 "items": {
528 "type": "string"
529 },
530 "description": "Packages to ignore when loading monaco types",
531 "markdownDescription": "Packages to ignore when loading monaco types",
532 "default": []
533 },
534 "monacoRunAdditionalDeps": {
535 "type": "array",
536 "items": {
537 "type": "string"
538 },
539 "description": "Additional local modules to load as dependencies of monaco runnable",
540 "markdownDescription": "Additional local modules to load as dependencies of monaco runnable",
541 "default": []
542 },
543 "monacoRunUseStrict": {
544 "type": "boolean",
545 "description": "Whether to run monaco runnable code in strict mode",
546 "markdownDescription": "Whether to run monaco runnable code in strict mode",
547 "default": true
548 },
549 "seoMeta": {
550 "$ref": "#/definitions/SeoMeta",
551 "description": "Seo meta tags settings",
552 "markdownDescription": "Seo meta tags settings",
553 "default": {}
554 },
555 "notesAutoRuby": {
556 "type": "object",
557 "additionalProperties": {
558 "type": "string"
559 },
560 "description": "Auto replace words with `<ruby>` tags in notes",
561 "markdownDescription": "Auto replace words with `<ruby>` tags in notes",
562 "default": {}
563 },
564 "duration": {
565 "type": [
566 "string",
567 "number"
568 ],
569 "description": "The expected duration of the slide",
570 "markdownDescription": "The expected duration of the slide",
571 "default": "30min"
572 },
573 "timer": {
574 "type": "string",
575 "enum": [
576 "stopwatch",
577 "countdown"
578 ],
579 "description": "Timer mode",
580 "markdownDescription": "Timer mode",
581 "default": "stopwatch"
582 },
583 "magicMoveDuration": {
584 "type": "number",
585 "description": "Duration for shiki magic move transitions in milliseconds",
586 "markdownDescription": "Duration for shiki magic move transitions in milliseconds",
587 "default": 800
588 },
589 "shiki": {
590 "$ref": "#/definitions/ShikiOptions",
591 "description": "Configure Shiki",
592 "markdownDescription": "Configure Shiki",
593 "default": {}
594 },
595 "preloadImages": {
596 "anyOf": [
597 {
598 "type": "boolean"
599 },
600 {
601 "type": "object",
602 "properties": {
603 "ahead": {
604 "type": "number"
605 }
606 }
607 }
608 ],
609 "description": "Preload images extracted from slides for faster navigation.\n\n- `true` - enable with default look-ahead of 3 slides\n- `false` - disable image preloading\n- `{ ahead: number }` - enable with custom look-ahead window",
610 "markdownDescription": "Preload images extracted from slides for faster navigation.\n\n- `true` - enable with default look-ahead of 3 slides\n- `false` - disable image preloading\n- `{ ahead: number }` - enable with custom look-ahead window",
611 "default": true
612 },
613 "defaults": {
614 "$ref": "#/definitions/Frontmatter",
615 "description": "Default frontmatter options applied to all slides",
616 "markdownDescription": "Default frontmatter options applied to all slides"
617 }
618 }
619 },
620 "BuiltinLayouts": {
621 "type": "string",
622 "enum": [
623 "404",
624 "center",
625 "cover",
626 "default",
627 "end",
628 "error",
629 "fact",
630 "full",
631 "iframe-left",
632 "iframe-right",
633 "iframe",
634 "image-left",
635 "image-right",
636 "image",
637 "intro",
638 "none",
639 "quote",
640 "section",
641 "statement",
642 "two-cols-header",
643 "two-cols"
644 ]
645 },
646 "BuiltinSlideTransition": {
647 "type": "string",
648 "enum": [
649 "fade",
650 "fade-out",
651 "slide-up",
652 "slide-down",
653 "slide-left",
654 "slide-right",
655 "view-transition"
656 ]
657 },
658 "TransitionGroupProps": {
659 "type": "object",
660 "properties": {
661 "appear": {
662 "type": "boolean"
663 },
664 "persisted": {
665 "type": "boolean"
666 },
667 "tag": {
668 "type": "string"
669 },
670 "moveClass": {
671 "type": "string"
672 },
673 "css": {
674 "type": "boolean"
675 },
676 "duration": {
677 "anyOf": [
678 {
679 "type": "number"
680 },
681 {
682 "type": "object",
683 "properties": {
684 "enter": {
685 "type": "number"
686 },
687 "leave": {
688 "type": "number"
689 }
690 },
691 "required": [
692 "enter",
693 "leave"
694 ]
695 }
696 ]
697 },
698 "enterFromClass": {
699 "type": "string"
700 },
701 "enterActiveClass": {
702 "type": "string"
703 },
704 "enterToClass": {
705 "type": "string"
706 },
707 "appearFromClass": {
708 "type": "string"
709 },
710 "appearActiveClass": {
711 "type": "string"
712 },
713 "appearToClass": {
714 "type": "string"
715 },
716 "leaveFromClass": {
717 "type": "string"
718 },
719 "leaveActiveClass": {
720 "type": "string"
721 },
722 "leaveToClass": {
723 "type": "string"
724 }
725 }
726 },
727 "SlidevThemeConfig": {
728 "type": "object",
729 "additionalProperties": {
730 "type": [
731 "string",
732 "number"
733 ]
734 }
735 },
736 "FontOptions": {
737 "type": "object",
738 "properties": {
739 "sans": {
740 "anyOf": [
741 {
742 "type": "string"
743 },
744 {
745 "type": "array",
746 "items": {
747 "type": "string"
748 }
749 }
750 ],
751 "description": "Sans serif fonts (default fonts for most text)",
752 "markdownDescription": "Sans serif fonts (default fonts for most text)"
753 },
754 "serif": {
755 "anyOf": [
756 {
757 "type": "string"
758 },
759 {
760 "type": "array",
761 "items": {
762 "type": "string"
763 }
764 }
765 ],
766 "description": "Serif fonts",
767 "markdownDescription": "Serif fonts"
768 },
769 "mono": {
770 "anyOf": [
771 {
772 "type": "string"
773 },
774 {
775 "type": "array",
776 "items": {
777 "type": "string"
778 }
779 }
780 ],
781 "description": "Monospace fonts, for code blocks and etc.",
782 "markdownDescription": "Monospace fonts, for code blocks and etc."
783 },
784 "custom": {
785 "anyOf": [
786 {
787 "type": "string"
788 },
789 {
790 "type": "array",
791 "items": {
792 "type": "string"
793 }
794 }
795 ],
796 "description": "Load webfonts for custom CSS (does not apply anywhere by default)",
797 "markdownDescription": "Load webfonts for custom CSS (does not apply anywhere by default)"
798 },
799 "weights": {
800 "anyOf": [
801 {
802 "type": "string"
803 },
804 {
805 "type": "array",
806 "items": {
807 "type": [
808 "string",
809 "number"
810 ]
811 }
812 }
813 ],
814 "description": "Weights for fonts",
815 "markdownDescription": "Weights for fonts",
816 "default": [
817 200,
818 400,
819 600
820 ]
821 },
822 "italic": {
823 "type": "boolean",
824 "description": "Import italic fonts",
825 "markdownDescription": "Import italic fonts",
826 "default": false
827 },
828 "provider": {
829 "type": "string",
830 "enum": [
831 "none",
832 "google",
833 "coollabs"
834 ],
835 "default": "google"
836 },
837 "webfonts": {
838 "type": "array",
839 "items": {
840 "type": "string"
841 },
842 "description": "Specify web fonts names, will detect from `sans`, `mono`, `serif` if not provided",
843 "markdownDescription": "Specify web fonts names, will detect from `sans`, `mono`, `serif` if not provided"
844 },
845 "local": {
846 "type": "array",
847 "items": {
848 "type": "string"
849 },
850 "description": "Specify local fonts names, be excluded from webfonts",
851 "markdownDescription": "Specify local fonts names, be excluded from webfonts"
852 },
853 "fallbacks": {
854 "type": "boolean",
855 "description": "Use fonts fallback",
856 "markdownDescription": "Use fonts fallback",
857 "default": true
858 }
859 }
860 },
861 "DrawingsOptions": {
862 "type": "object",
863 "properties": {
864 "persist": {
865 "type": [
866 "boolean",
867 "string"
868 ],
869 "description": "Persist the drawings to disk Passing string to specify the directory (default to `.slidev/drawings`)",
870 "markdownDescription": "Persist the drawings to disk\nPassing string to specify the directory (default to `.slidev/drawings`)",
871 "default": false
872 },
873 "enabled": {
874 "anyOf": [
875 {
876 "type": "boolean"
877 },
878 {
879 "type": "string",
880 "const": "dev"
881 },
882 {
883 "type": "string",
884 "const": "build"
885 }
886 ],
887 "default": true
888 },
889 "presenterOnly": {
890 "type": "boolean",
891 "description": "Only allow drawing from presenter mode",
892 "markdownDescription": "Only allow drawing from presenter mode",
893 "default": false
894 },
895 "syncAll": {
896 "type": "boolean",
897 "description": "Sync drawing for all instances",
898 "markdownDescription": "Sync drawing for all instances",
899 "default": true
900 }
901 }
902 },
903 "SeoMeta": {
904 "type": "object",
905 "properties": {
906 "ogTitle": {
907 "type": "string"
908 },
909 "ogDescription": {
910 "type": "string"
911 },
912 "ogImage": {
913 "type": "string"
914 },
915 "ogUrl": {
916 "type": "string"
917 },
918 "twitterCard": {
919 "type": "string",
920 "enum": [
921 "summary",
922 "summary_large_image",
923 "app",
924 "player"
925 ]
926 },
927 "twitterSite": {
928 "type": "string"
929 },
930 "twitterTitle": {
931 "type": "string"
932 },
933 "twitterDescription": {
934 "type": "string"
935 },
936 "twitterImage": {
937 "type": "string"
938 },
939 "twitterUrl": {
940 "type": "string"
941 }
942 },
943 "description": "The following type should map to unhead MataFlat type",
944 "markdownDescription": "The following type should map to unhead MataFlat type"
945 },
946 "ShikiOptions": {
947 "type": "object",
948 "properties": {
949 "magicMove": {
950 "$ref": "#/definitions/ShikiMagicMoveOptions",
951 "description": "Options passed to Shiki Magic Move for customizing code transition animations\n\nSee https://shiki.style/packages/magic-move#options for the full list of options",
952 "markdownDescription": "Options passed to Shiki Magic Move for customizing code transition animations\n\nSee https://shiki.style/packages/magic-move#options for the full list of options",
953 "default": {}
954 }
955 }
956 },
957 "ShikiMagicMoveOptions": {
958 "type": "object",
959 "properties": {
960 "delayMove": {
961 "type": "number",
962 "description": "Ratio of the duration to delay the move animation",
963 "markdownDescription": "Ratio of the duration to delay the move animation",
964 "default": 0.3
965 },
966 "delayLeave": {
967 "type": "number",
968 "description": "Ratio of the duration to delay the leave animation",
969 "markdownDescription": "Ratio of the duration to delay the leave animation",
970 "default": 0
971 },
972 "delayEnter": {
973 "type": "number",
974 "description": "Ratio of the duration to delay the enter animation",
975 "markdownDescription": "Ratio of the duration to delay the enter animation",
976 "default": 0.7
977 },
978 "delayContainer": {
979 "type": "number",
980 "description": "Ratio of the duration to delay the container animation",
981 "markdownDescription": "Ratio of the duration to delay the container animation",
982 "default": 0.4
983 },
984 "easing": {
985 "type": "string",
986 "description": "Easing function, in the CSS `transition-timing-function` format",
987 "markdownDescription": "Easing function, in the CSS `transition-timing-function` format",
988 "default": "ease"
989 },
990 "animateContainer": {
991 "type": "boolean",
992 "description": "Apply animation to the container",
993 "markdownDescription": "Apply animation to the container",
994 "default": false
995 },
996 "containerStyle": {
997 "type": "boolean",
998 "description": "Apply styles (color and background) to the container",
999 "markdownDescription": "Apply styles (color and background) to the container",
1000 "default": true
1001 },
1002 "stagger": {
1003 "type": "number",
1004 "description": "Stagger the animation of the tokens, in milliseconds",
1005 "markdownDescription": "Stagger the animation of the tokens, in milliseconds",
1006 "default": 1
1007 },
1008 "splitTokens": {
1009 "type": "boolean",
1010 "description": "Split the tokens at the edge of diff chunks",
1011 "markdownDescription": "Split the tokens at the edge of diff chunks",
1012 "default": false
1013 },
1014 "enhanceMatching": {
1015 "type": "boolean",
1016 "description": "Enhance the matching algorithm to match tokens that has same content",
1017 "markdownDescription": "Enhance the matching algorithm to match tokens that has same content"
1018 }
1019 }
1020 },
1021 "Frontmatter": {
1022 "type": "object",
1023 "properties": {
1024 "transition": {
1025 "anyOf": [
1026 {
1027 "$ref": "#/definitions/BuiltinSlideTransition"
1028 },
1029 {
1030 "type": "string"
1031 },
1032 {
1033 "$ref": "#/definitions/TransitionGroupProps"
1034 },
1035 {
1036 "type": "null"
1037 }
1038 ],
1039 "description": "Page transition, powered by Vue's `<TransitionGroup/>`\n\nBuilt-in transitions:\n- fade\n- fade-out\n- slide-left\n- slide-right\n- slide-up\n- slide-down\n- view-transition\n\nSee https://sli.dev/guide/animations.html#pages-transitions\n\nSee https://vuejs.org/guide/built-ins/transition.html",
1040 "markdownDescription": "Page transition, powered by Vue's `<TransitionGroup/>`\n\nBuilt-in transitions:\n- fade\n- fade-out\n- slide-left\n- slide-right\n- slide-up\n- slide-down\n- view-transition\n\nSee https://sli.dev/guide/animations.html#pages-transitions\n\nSee https://vuejs.org/guide/built-ins/transition.html"
1041 },
1042 "layout": {
1043 "anyOf": [
1044 {
1045 "$ref": "#/definitions/BuiltinLayouts"
1046 },
1047 {
1048 "type": "string"
1049 }
1050 ],
1051 "description": "Slide layout to use\n\nDefault to 'cover' for the first slide, 'default' for the rest",
1052 "markdownDescription": "Slide layout to use\n\nDefault to 'cover' for the first slide, 'default' for the rest"
1053 },
1054 "class": {
1055 "anyOf": [
1056 {
1057 "type": "string"
1058 },
1059 {
1060 "type": "array",
1061 "items": {
1062 "type": "string"
1063 }
1064 },
1065 {
1066 "type": "object",
1067 "additionalProperties": {}
1068 }
1069 ],
1070 "description": "Custom class added to the slide root element",
1071 "markdownDescription": "Custom class added to the slide root element"
1072 },
1073 "clicks": {
1074 "type": "number",
1075 "description": "Manually specified the total clicks needed to this slide\n\nWhen not specified, the clicks will be calculated by the usage of v-clicks\n\nSee https://sli.dev/guide/animations",
1076 "markdownDescription": "Manually specified the total clicks needed to this slide\n\nWhen not specified, the clicks will be calculated by the usage of v-clicks\n\nSee https://sli.dev/guide/animations"
1077 },
1078 "clicksStart": {
1079 "type": "number",
1080 "description": "Manually specified the total clicks needed to this slide to start",
1081 "markdownDescription": "Manually specified the total clicks needed to this slide to start",
1082 "default": 0
1083 },
1084 "preload": {
1085 "type": "boolean",
1086 "description": "Preload the slide when the previous slide is active",
1087 "markdownDescription": "Preload the slide when the previous slide is active",
1088 "default": true
1089 },
1090 "hide": {
1091 "type": "boolean",
1092 "description": "Completely hide and disable the slide",
1093 "markdownDescription": "Completely hide and disable the slide"
1094 },
1095 "disabled": {
1096 "type": "boolean",
1097 "description": "Same as `hide`, completely hide and disable the slide",
1098 "markdownDescription": "Same as `hide`, completely hide and disable the slide"
1099 },
1100 "hideInToc": {
1101 "type": "boolean",
1102 "description": "Hide the slide for the `<Toc>` components\n\nSee https://sli.dev/builtin/components#toc",
1103 "markdownDescription": "Hide the slide for the `<Toc>` components\n\nSee https://sli.dev/builtin/components#toc"
1104 },
1105 "title": {
1106 "type": "string",
1107 "description": "Override the title for the `<TitleRenderer>` and `<Toc>` components Only if `title` has also been declared",
1108 "markdownDescription": "Override the title for the `<TitleRenderer>` and `<Toc>` components\nOnly if `title` has also been declared"
1109 },
1110 "level": {
1111 "type": "number",
1112 "description": "Override the title level for the `<TitleRenderer>` and `<Toc>` components Only if `title` has also been declared",
1113 "markdownDescription": "Override the title level for the `<TitleRenderer>` and `<Toc>` components\nOnly if `title` has also been declared"
1114 },
1115 "routeAlias": {
1116 "type": "string",
1117 "description": "Create a route alias that can be used in the URL or with the `<Link>` component",
1118 "markdownDescription": "Create a route alias that can be used in the URL or with the `<Link>` component"
1119 },
1120 "zoom": {
1121 "type": "number",
1122 "description": "Custom zoom level for the slide",
1123 "markdownDescription": "Custom zoom level for the slide",
1124 "default": 1
1125 },
1126 "clickAnimation": {
1127 "type": "string",
1128 "description": "Default click animation for the slide",
1129 "markdownDescription": "Default click animation for the slide"
1130 },
1131 "dragPos": {
1132 "type": "object",
1133 "additionalProperties": {
1134 "type": "string"
1135 },
1136 "description": "Store the positions of draggable elements Normally you don't need to set this manually\n\nSee https://sli.dev/features/draggable",
1137 "markdownDescription": "Store the positions of draggable elements\nNormally you don't need to set this manually\n\nSee https://sli.dev/features/draggable"
1138 },
1139 "src": {
1140 "type": "string",
1141 "description": "Includes a markdown file\n\nSee https://sli.dev/guide/syntax.html#importing-slides",
1142 "markdownDescription": "Includes a markdown file\n\nSee https://sli.dev/guide/syntax.html#importing-slides"
1143 }
1144 }
1145 }
1146 }
1147 }
1148
1148 lines JSON