Playground
Guía del Playground
El playground es un workspace orientado a producción para diseñar la experiencia de comandos antes de cerrar la integración en tu aplicación.
Te permite definir arquitectura de comandos, validar flujo de teclado/navegación en vivo y exportar código base para React, Vue, Preact, Astro y Core (Vanilla).
Qué puedes hacer en el playground
- modelar la estructura de comandos antes de escribir código de integración
- probar navegación anidada y flujo de elemento activo en tiempo real
- configurar tokens de tema claro/oscuro y validar paridad visual
- ajustar copy de placeholder, estado vacío y etiqueta de cierre
- exportar snippets base por framework desde una única configuración
Mapa del workspace
- Vista previa en vivo: palette embebida que se actualiza con el configurador
- Configurador: superficie de control por acordeones con divulgación progresiva
- Panel de código: pestañas por adaptador con export y copiado
- Acción de abrir preview: mantiene el flujo modal para validar interacción real
Mapa de controles: Básicos
- Idioma: cambia etiquetas del configurador y copy por defecto
- Título de la paleta: encabezado principal del diálogo
- Placeholder de búsqueda: texto del input de búsqueda
- Atajo: trigger de teclado exportado en la config
- Elementos recientes: activación + título + límite de sección reciente
- Modo de datos: secciones estáticas o source asíncrono
- Abrir al cargar: estado inicial de apertura exportado
Mapa de controles: Apariencia
- Tema a editar (Claro / Oscuro): selecciona el modo que vas a modificar
- Acento / Fondo / Texto: tokens semánticos principales
- Título / Descripción / Muted: jerarquía tipográfica
- Título de sección / título de item / subtítulo / atajo: granularidad fina por zona
- Borde / Overlay: contenedor y capa de fondo
- Radio: redondeado global con preview visual
- Presets de sombra: presets rápidos + valor avanzado opcional
El código generado incluye ambos modos dentro de un único objeto theme (theme.light + theme.dark) para mantener exports completos y coherentes.
Mapa de controles: Secciones y comandos
- Añadir / mover / eliminar sección: arquitectura de información de alto nivel
- Título de sección: etiqueta visible de grupo
- Añadir / mover / eliminar item: ordenación y mantenimiento de comandos
- Campos de item: título, icono, subtítulo, atajo, href, keywords, deshabilitado
- Comandos anidados: grupos en profundidad bajo un item
- Controles anidados: añadir/mover/eliminar secciones e ítems anidados
Mapa de controles: Código y export
- Pestañas de adaptador: React, Vue, Preact, Astro, Core (Vanilla)
- Acción copiar: copia snippet activo con feedback visual de éxito/error
- Expandir snippet: vista colapsada parcial con animación de expansión
- Sincronización en vivo: snippets actualizados automáticamente según estado del configurador
Ejemplos de export
import { CommandPalette } from "@cmd-kit/react";
const sections = [
{
id: "commands",
title: "Comandos",
items: [{ id: "toggle-theme", title: "Cambiar tema", shortcut: "mod+t" }]
}
];
const theme = {
light: { accentColor: "#0fa6d8", backgroundColor: "#ffffff" },
dark: { accentColor: "#35d7ff", backgroundColor: "#0b1116" }
};
export function Demo() {
return (
<CommandPalette
sections={sections}
shortcut="mod+k"
title="Menú de comandos"
messages={{
searchPlaceholder: "Buscar comandos...",
noResults: "No se han encontrado resultados.",
closeLabel: "Cerrar menú de comandos"
}}
recents={false}
theme={theme}
/>
);
} <script setup lang="ts">
import { CommandPalette } from "@cmd-kit/vue";
const sections = [{ id: "commands", title: "Comandos", items: [] }];
const theme = {
light: { accentColor: "#0fa6d8", backgroundColor: "#ffffff" },
dark: { accentColor: "#35d7ff", backgroundColor: "#0b1116" }
};
</script>
<template>
<CommandPalette
:sections="sections"
:theme="theme"
shortcut="mod+k"
title="Menú de comandos"
/>
</template> import { createCommandPalette } from "@cmd-kit/core";
const palette = createCommandPalette({
sections: [{ id: "commands", title: "Comandos", items: [] }],
theme: {
light: { accentColor: "#0fa6d8", backgroundColor: "#ffffff" },
dark: { accentColor: "#35d7ff", backgroundColor: "#0b1116" }
},
shortcut: "mod+k",
title: "Menú de comandos"
});
window.addEventListener("beforeunload", () => palette.destroy()); Flujo guiado #1: Arranque rápido (10 minutos)
- Configura idioma y título en Básicos.
- Crea secciones principales y 3-5 comandos core.
- Añade subtítulos y atajos para mejorar lectura y escaneo.
- Ajusta placeholder/estado vacío/cierre al tono de producto.
- Abre preview y valida el flujo completo por teclado.
- Exporta tu adaptador objetivo e intégralo en tu app.
Flujo guiado #2: Configuración dual de tema
- Selecciona Modo claro y define tokens principales.
- Cambia a Modo oscuro y replica la misma intención semántica.
- Valida preview en ambos modos con el selector de modo de vista previa.
- Revisa contraste en título, subtítulo y atajos.
- Exporta y confirma presencia de
theme.lightytheme.dark.
Flujo guiado #3: Arquitectura y flujos anidados
- Define secciones por intención de usuario (navegación, acciones, settings).
- Coloca primero los comandos más frecuentes.
- Usa anidados solo cuando haya navegación real en profundidad.
- Añade keywords para cubrir sinónimos de búsqueda.
- Usa estado deshabilitado solo para casos intencionales y contextuales.
Flujo guiado #4: Preparación para source asíncrono
- Cambia modo de datos a Fuente asíncrona.
- Ajusta delay para aproximar latencia real de backend.
- Valida transiciones de carga y estado vacío.
- Exporta snippet y sustituye la fuente mock por tu cliente API real.
- Mantén el shape de payload alineado con el esquema section/item.
Checklist preproducción
- validado abrir/cerrar por teclado y navegación con flechas
- validada navegación de vuelta y breadcrumbs en anidados
- validada paridad claro/oscuro en diálogo, items y atajos
- mensajes/localización conectados a capa i18n de aplicación
- snippet exportado normalizado a reglas de lint/estilo del proyecto
- estados async/error validados en runtime real
FAQ
¿Debo subir a producción el código exportado sin cambios?
Normalmente no. Úsalo como base y adáptalo a tu arquitectura, naming y estilos.
¿La salida del playground es documentación de API?
No. La referencia de API está en los docs de cada adaptador; el playground es base de integración.
¿Puedo mantener la apertura modal si ya uso preview embebida?
Sí. La embebida acelera iteración visual y la modal sirve para validar interacción real.
¿Por qué solo salen pestañas de adaptadores en export?
Se prioriza foco en salidas oficiales y prácticas para reducir ruido.
¿Cuándo pasar del playground a implementación?
Cuando tengas estable la arquitectura de comandos, la preview y los tokens duales.