Formato del deck

Fuente de verdad: shared/deck.ts. Todos los objetos son estrictos: las claves desconocidas no pasan la validación.

Deck

CampoTipoReglas
version1Obligatorio, literal 1.
titlestringObligatorio, 1–200 caracteres. Se muestra en las listas y en el resumen.
themeobjectOpcional. Por defecto { background: "#10131a", foreground: "#f4f1ea", accent: "#ff7a45", muted: "#9aa3b2" }. Es preferible { "preset": "<name>" }.
slidesSlide[]Obligatorio, 1–200. Los ids de las diapositivas son únicos.

Tema

Los colores van en hex: # + 3–8 dígitos hexadecimales.

CampoTipoReglas
preset"estudio" | "editorial" | "neon" | "papel" | "brutalista" | "corporativo"Opcional. Trae colores, fuentes (display/body/mono), fondo de diapositiva (degradado y/o patrón), estilo de tarjeta, estilo de títulos y paleta de gráficos. Ver themes.md.
backgroundhexObligatorio sin preset; con uno, es un reemplazo opcional.
foregroundhexObligatorio sin preset; con uno, es un reemplazo opcional.
accenthexObligatorio sin preset; con uno, es un reemplazo opcional.
mutedhexOpcional.
surfacehexOpcional. Reemplaza el color de tarjeta/superficie (tarjetas, texto con card: true, separaciones del gráfico de dona).
  • Con un preset, reemplaza colores solo cuando la marca del usuario lo exija: { "preset": "corporativo", "accent": "#0057b8" }.
  • Sin preset se mantienen exactamente las reglas de antes: background, foreground y accent son obligatorios, muted es opcional.

Diapositiva

CampoTipoReglas
idstringObligatorio, [A-Za-z0-9_-]{1,40}, único en el deck.
layout"free" | "quiz"Opcional, por defecto free. "quiz" requiere quiz, y quiz requiere "quiz".
backgroundhex | BackgroundOpcional, reemplaza el fondo del tema. Ver más abajo.
notesstringOpcional (ponlo siempre), máximo 5000 caracteres. Solo para quien presenta; nunca se envía al público.
elementsElement[]Obligatorio (usa [] en las diapositivas de quiz), máximo 60. Los ids de los elementos son únicos por diapositiva.
quizQuizSolo con layout: "quiz".

Objeto de fondo de la diapositiva

Un string hex sigue funcionando ("background": "#0b0d12"). La forma de objeto (todos los campos opcionales, estricta):

CampoTipoReglas
colorhexColor base sólido.
gradient{ "from": hex, "to": hex, "angle"?: number }Degradado lineal; angle 0–360 (grados).
imageasset srcMismas reglas que el src de una imagen (https://… o assets/<file>, sin ..). Cubre toda la diapositiva.
dimnumber 0–0.9Oscurece la imagen para que el texto siga siendo legible. Usa 0.4–0.6 debajo de texto.
pattern"dots" | "grid" | "lines" | "noise"Textura sutil sobre el color/degradado.
json
{ "background": { "gradient": { "from": "#1b1f3a", "to": "#0b0d12", "angle": 135 }, "pattern": "dots" } }

Omite background en la mayoría de diapositivas: el preset ya trae uno. Usa el objeto para aperturas, separadores de sección y cierres.

Las diapositivas importadas (live-deck import) usan exactamente este campo: "background": { "image": "assets/slide-01.png" } sin un layout nuevo; encima pueden ir elementos como el qr para unirse.

Mensajes de validación

La CLI imprime path: message, donde path es la ruta dentro del JSON (slides.2.quiz.correctIndex: correctIndex must point to an option). Corrige en esa ruta y vuelve a ejecutar.