Sistema de componentes CSS · Nuevo recurso

Sistema de diseño de daisyUI.

Un estudio de invitaciones nativo de CSS que muestra los temas semánticos 5 de daisyUI, colores de contenido emparejados, grupos de botones de opción, controles de rango, validación del navegador y un paso de revisión con un diálogo real.

Guía de OpenDesign9 capítulos29 entradas de referenciaGuía de aplicación original
01

Vista previa de la interfaz del sistema de diseño de daisyUI

Cambia entre Emerald, Lo-fi y Night, modifica una tarjeta de taller y revisa un borrador local.

Estudio de temas para invitacionesAbrir ejemplo completo
Clases oficiales de daisyUI 5.7.47 compiladas con Tailwind CSS 4.3.3; el comportamiento de la aplicación se implementa con JavaScript sin bibliotecas. · Referencia de implementación
02

Referencia de diseño del sistema de diseño de daisyUI

daisyUI 5.7.47, creado con Tailwind CSS 4.3.3. Los valores de color y geometría enumerados corresponden al tema Emerald incluido en el paquete; Lo-fi y Night definen valores distintos deliberadamente. La tipografía y el espaciado de la página son elecciones originales que usan dimensiones compatibles con Tailwind.

Colores semánticos de Emerald

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--color-base-100oklch(100% 0 0)Superficie principal del componente.
--color-base-200oklch(93% 0 0)Superficie de la página en este ejemplo.
--color-base-300oklch(86% 0 0)Límite de la superficie.
--color-base-contentoklch(35.519% 0.032 262.988)Texto sobre superficies base.
--color-primaryoklch(76.662% 0.135 153.45)Acción principal y fondo de la invitación.
--color-primary-contentoklch(33.387% 0.04 162.24)Texto combinado con el color primario.
--color-secondaryoklch(61.302% 0.202 261.294)Rol secundario.
--color-secondary-contentoklch(100% 0 0)Texto que acompaña al rol secundario.
--color-accentoklch(72.772% 0.149 33.2)Rol de acento.
--color-accent-contentoklch(0% 0 0)Texto que acompaña al acento.
--color-neutraloklch(35.519% 0.032 262.988)Énfasis neutro.
--color-neutral-contentoklch(98.462% 0.001 247.838)Texto que acompaña al rol neutro.
--color-infooklch(72.06% 0.191 231.6)Rol informativo.
--color-successoklch(64.8% 0.15 160)Rol de éxito.
--color-warningoklch(84.71% 0.199 83.87)Rol de advertencia.
--color-erroroklch(71.76% 0.221 22.18)Rol de error.

Geometría de los componentes de Emerald

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--radius-selector1remRedondeo de casillas de verificación, interruptores y selectores similares.
--radius-field0.5remRedondeo de campos y botones.
--radius-box1remRedondeo de tarjetas y ventanas modales.
--size-selector0.25remTamaño base del selector usado en los cálculos de los componentes.
--size-field0.25remTamaño base del campo usado en los cálculos de los componentes.
--border1pxGrosor del borde del componente.
--depth0Emerald desactiva los efectos de profundidad.
--noise0Emerald desactiva los efectos de ruido.

Escala original de la composición de la invitación

Fuente
Nombre / ReglaValor / ConfiguraciónUso
Page spacing32px desktop / 24px 16px mobileComposición original, no un sistema independiente de tokens de espaciado de daisyUI.
Main heading36px / 1.1; 30px below 700pxJerarquía original por encima de los valores predeterminados de los componentes.
Invitation title34px / 1.15; 30px on mobileTipografía grande original con ajuste de palabras largas.
Supporting copy14px / 1.6Texto explicativo original y fácil de leer.
Layout breakpoint700pxPunto de quiebre original para pasar de disposición dividida a apilada; no es un token de punto de quiebre de daisyUI.
03

Guía completa del sistema de diseño de daisyUI

Una guía práctica para elegir, aplicar y revisar este sistema en una interfaz real.

DESIGN-daisyui.md

Orientación completa, un punto de partida para la implementación y enlaces al código fuente.

Descargar la guía

Clases semánticas de componentes del sistema de diseño de daisyUI sobre Tailwind CSS

Clases semánticas de componentes de CSS sobre Tailwind

daisyUI proporciona clases de componentes mediante un complemento de Tailwind. En la versión cinco, la configuración se encuentra en CSS: importa tailwindcss y, a continuación, declara el complemento daisyui y los temas habilitados. El ejemplo usa btn, card, fieldset, range, checkbox, join y modal, en lugar de recrear la apariencia de esos componentes con selectores propios.

De esta guía de OpenDesign

El complemento no proporciona la gestión del estado de la aplicación. Las entradas nativas, la validación del navegador, los métodos del diálogo y el pequeño módulo JavaScript hacen que este estudio de invitaciones sea interactivo. Esta distinción es importante al elegir la biblioteca: puede funcionar con varios frameworks porque su capa de componentes es CSS, pero un nombre de clase por sí solo no implementa una operación en el servidor.

Consulta la especificación complementaria

Sistema de diseño de daisyUI: combina cada superficie de color con el rol de su contenido

Combina cada superficie de color con el rol de su contenido

La tarjeta de invitación combina bg-primary y text-primary-content. La franja de roles repite este emparejamiento para secondary, accent y neutral. Son roles semánticos coordinados, no una única paleta fija que haya que copiar en cada componente. Al seleccionar otro tema habilitado, cambian las variables subyacentes sin que cambie el marcado de la tarjeta.

El color primario de Emerald es verde claro y su color de contenido primario es verde oscuro. Usar automáticamente texto blanco en todos los fondos primarios ignoraría la función prevista para el contenido en este tema. La tabla de especificaciones conserva los valores OKLCH reales del tema Emerald instalado; no los convierte en colores de marca hexadecimales inventados.

Consulta la especificación complementaria

Sistema de diseño daisyUI: compila los temas que quieras ofrecer

Compila los temas que quieras ofrecer

La configuración del complemento CSS habilita Emerald como tema predeterminado, además de Lo-fi y Night. Un control de selección cambia data-theme en el elemento del documento. El menú solo ofrece los temas compilados; seleccionar un nombre cuyo tema nunca se compiló no hará aparecer el CSS correspondiente.

Los temas también incluyen variables de radio, tamaño de campos, bordes y efectos. Por eso, cambiar de Emerald a Lo-fi modifica mucho más que una muestra de color. Para aplicar un tema a una región integrada, se puede colocar data-theme en esa región en lugar de en html. Este ejemplo independiente lo aplica deliberadamente a todo el documento.

  1. Compila los temas previstos en el bloque del complemento daisyUI.
  2. Usa clases semánticas de fondo y contenido en el marcado de los componentes.
  3. Cambia data-theme y observa en conjunto los controles, las superficies y el texto.

Consulta la especificación complementaria

Sistema de diseño daisyUI: los radios de selectores, campos y contenedores son distintos

Los radios de selector, campo y caja son independientes

Emerald define radius-selector como un rem, radius-field como medio rem y radius-box como un rem. Sus valores size-selector y size-field son unidades base de un cuarto de rem que se usan en los cálculos de los componentes. Estos valores no son intercambiables con el espacio entre las secciones de una página. La especificación separa la geometría de los componentes de la distribución original del área de trabajo.

La página que rodea el ejemplo usa una pila de fuentes sans serif del sistema, un título editorial grande y una composición de dos columnas. daisyUI no exige esa jerarquía de titulares. En el punto de quiebre original de 700px, la página apila el editor sobre la invitación y conserva todas las entradas y acciones, en lugar de ocultar ajustes para que quepan en una captura de pantalla.

Consulta la especificación complementaria

Sistema de diseño daisyUI: los grupos join usan controles de opción reales

Join agrupa entradas de radio reales

Las opciones de formato son controles de opción con un mismo name y las clases join-item y btn. Al seleccionar «Sesión en el estudio» o «Círculo en línea», cambia el estado seleccionado nativo y el texto de la vista previa. Una fila de botones con estilo, pero sin un estado de selección persistente, no representaría esta elección mutuamente excluyente con la misma claridad.

El control «Plazas» usa una entrada nativa de tipo range, de cuatro a veinticuatro, en incrementos de dos. Un elemento output muestra el número actual y las etiquetas de los extremos explican el tamaño previsto de la reunión. El control de materiales es una casilla de verificación real. Su estado modifica el pie de la invitación, en lugar de limitarse a cambiar el color de la casilla.

Consulta la especificación complementaria

Sistema de diseño daisyUI: la validación CSS refleja las restricciones del navegador

La validación de CSS refleja las restricciones del navegador

El campo del título es obligatorio y tiene límites de longitud mínima y máxima. Las clases validator y validator-hint muestran el estado no válido; el navegador sigue siendo responsable de aplicar la restricción nativa. El formulario no elude la validación mediante un controlador genérico de clic en el botón de revisión.

Una vez superada la validación habitual, el controlador de envío recorta los espacios del título y comprueba su longitud significativa. Así se detecta una cadena compuesta solo por espacios, que podría cumplir el atributo minlength si no se recortara. El siguiente evento de entrada borra el mensaje de validez personalizado para permitir el envío del título corregido. El contenido del usuario se muestra mediante textContent y nunca se inserta como HTML.

Consulta la especificación complementaria

Sistema de diseño daisyUI: un diálogo real conserva una instantánea de la revisión

Un diálogo real conserva una instantánea de la revisión

Al revisar la invitación, se copian el título, el formato, las plazas y los materiales actuales en una instantánea; después se llama a dialog.showModal. La clase modal proporciona el estilo de daisyUI, mientras que el navegador ofrece el comportamiento nativo del diálogo. El encabezado etiqueta el diálogo mediante aria-labelledby, y Escape permite cerrar la revisión sin guardar.

«Seguir editando» cierra el diálogo y deja el formulario sin cambios. «Guardar borrador local» lo cierra y anuncia la instantánea exacta en una región de estado. El mensaje indica que no se enviaron invitaciones. Esto no simula deliberadamente que se haya enviado un correo electrónico correctamente: el ejemplo no tiene una lista de destinatarios ni un servicio de envío.

Consulta la especificación complementaria

Sistema de diseño daisyUI: restablecer y editar producen cambios observables

Restablecer y editar producen cambios observables

Al cambiar un campo, la tarjeta se actualiza de inmediato y se oculta cualquier aviso de guardado anterior. Así se evita que un mensaje de éxito obsoleto parezca referirse a una invitación más reciente que aún no se ha guardado. Al restablecer, se espera a que el navegador restaure los valores predeterminados del formulario y, después, se vuelve a generar la vista previa con esos valores reales. El tema seleccionado por separado se mantiene.

El relleno de la ilustración decorativa de tres formas se basa en primary-content, por lo que responde a los cambios de tema junto con la tipografía. Se marca como aria-hidden porque no aporta información sobre las plazas ni el formato. El título y el pie visibles de la vista previa contienen la información relevante.

  • Las entradas no válidas impiden revisar la invitación e identifican el campo del título.
  • Escape cierra la revisión sin generar un resultado de guardado.
  • Si se edita después de guardar, se borra el resultado anterior y se conserva el tema actual.

Consulta la especificación complementaria

Sistema de diseño daisyUI: una compilación pequeña CSS con descubrimiento explícito de fuentes

Una compilación pequeña de CSS con detección explícita de fuentes

La configuración proporcionada usa la CLI de Tailwind, un archivo input.css local y los tres archivos de origen que se muestran arriba. source(none) desactiva el escaneo automático general, y la directiva source explícita apunta al HTML que contiene el componente y las clases de utilidad. Así, el CSS generado por el ejemplo depende de su marcado real.

El resultado de la compilación se combina con la hoja de estilos original de la distribución; JavaScript sin formato se encarga de la interacción. La vista previa independiente incluye el resultado en línea y no tiene dependencias remotas. Un proyecto de Vite, Astro o React puede usar la integración habitual de Tailwind, pero debe conservar la lista de temas habilitados y asegurarse de incluir los archivos de origen que contienen las clases.

Consulta la especificación complementaria

daisyUI Ejemplos de componentes del sistema de diseño

Composición semántica de componentes HTML

Conjuntos de campos, grupo join de botones de opción, control range nativo, casilla de verificación, tarjeta y diálogo.

HTML
<main class="workshop"><header class="page-heading"><div><p class="eyebrow">DAISYUI · SEMANTIC THEMES</p><h1>A small gathering,<br>a considered invitation.</h1><p class="muted">Compose a local workshop card and watch the theme roles follow.</p></div><label class="fieldset">Theme<select id="theme" class="select"><option value="emerald">Emerald</option><option value="lofi">Lo-fi</option><option value="night">Night</option></select></label></header><div class="workbench"><form id="invitation" class="card bg-base-100 border border-base-300"><div class="card-body"><h2 class="card-title">Workshop details</h2><fieldset class="fieldset"><legend class="fieldset-legend">Workshop title</legend><input id="title" class="input validator w-full" required minlength="5" maxlength="52" value="Making room for ideas" aria-describedby="title-help"><p id="title-help" class="validator-hint">Use 5–52 characters.</p></fieldset><fieldset class="fieldset"><legend class="fieldset-legend">Format</legend><div class="join"><input class="join-item btn" type="radio" name="format" value="Studio session" aria-label="Studio session" checked><input class="join-item btn" type="radio" name="format" value="Online circle" aria-label="Online circle"></div></fieldset><fieldset class="fieldset"><legend class="fieldset-legend">Seats <output id="seat-count" for="seats">12</output></legend><input id="seats" class="range range-primary w-full" type="range" min="4" max="24" step="2" value="12" aria-label="Number of seats"><div class="range-labels"><span>4 · intimate</span><span>24 · open room</span></div></fieldset><label class="extras"><input id="materials" class="checkbox checkbox-primary" type="checkbox" checked><span>Include a materials pack<small>Paper, pencils and a small printed prompt.</small></span></label><div class="card-actions"><button class="btn btn-primary" type="submit">Review invitation</button><button class="btn btn-ghost" type="reset">Reset</button></div></div></form><section class="specimen" aria-label="Invitation preview"><div class="invitation-card card bg-primary text-primary-content"><div class="card-body"><div class="card-top"><span class="badge badge-outline">OPEN STUDIO</span><span>LOCAL DRAFT</span></div><div class="shape-art" aria-hidden="true"><i></i><i></i><i></i></div><p class="preview-kicker">A WORKSHOP FOR CURIOUS PEOPLE</p><h2 id="preview-title">Making room for ideas</h2><p id="preview-format">Studio session</p><div class="invite-footer"><strong id="preview-seats">12 seats</strong><span id="preview-materials">Materials included</span></div></div></div><div class="role-strip" aria-label="Theme color roles"><span class="bg-primary text-primary-content">Primary</span><span class="bg-secondary text-secondary-content">Secondary</span><span class="bg-accent text-accent-content">Accent</span><span class="bg-neutral text-neutral-content">Neutral</span></div><p class="muted specimen-note">The same semantic classes use each theme’s background and matching content colors.</p></section></div><div id="result" class="alert alert-success" role="status" hidden></div><dialog id="review" class="modal" aria-labelledby="review-title"><div class="modal-box"><h2 id="review-title">Review your local invitation</h2><p id="review-copy"></p><p class="muted">This prepares a local draft. No invitations are sent.</p><div class="modal-action"><button id="back" class="btn">Keep editing</button><button id="approve" class="btn btn-primary">Save local draft</button></div></div></dialog></main>

Referencia de código

  • Los fondos primarios siempre se combinan con texto primary-content.
  • El control range sigue siendo una entrada nativa con min, max y step.
  • El diálogo se abre mediante showModal, no con una clase open que solo afecta a la apariencia.

Comportamiento del borrador local

Vista previa en vivo, instantánea estable para revisión, selección de tema y validación nativa.

javascript
const q=s=>document.querySelector(s),form=q('#invitation'),dialog=q('#review');let snapshot;
function update(){const title=q('#title').value.trim(),seats=q('#seats').value,format=q('[name="format"]:checked').value,materials=q('#materials').checked;q('#preview-title').textContent=title||'Your workshop title';q('#seat-count').value=seats;q('#preview-seats').textContent=`${seats} seats`;q('#preview-format').textContent=format;q('#preview-materials').textContent=materials?'Materials included':'Bring your own materials';q('#result').hidden=true;}
q('#theme').addEventListener('change',e=>document.documentElement.dataset.theme=e.target.value);form.addEventListener('input',update);form.addEventListener('reset',()=>setTimeout(update,0));form.addEventListener('submit',e=>{e.preventDefault();snapshot={title:q('#title').value.trim(),seats:q('#seats').value,format:q('[name="format"]:checked').value,materials:q('#materials').checked};if(snapshot.title.length<5){q('#title').setCustomValidity('Enter at least five non-space characters.');q('#title').reportValidity();return;}q('#review-copy').textContent=`${snapshot.title} · ${snapshot.format} · ${snapshot.seats} seats · ${snapshot.materials?'Materials included':'Bring your own materials'}`;dialog.showModal();});q('#title').addEventListener('input',()=>q('#title').setCustomValidity(''));q('#back').onclick=()=>dialog.close();q('#approve').onclick=()=>{dialog.close();q('#result').hidden=false;q('#result').textContent=`Local draft saved: ${snapshot.title}, ${snapshot.seats} seats. No invitations were sent.`;};update();

Referencia de código

  • No se importa ningún entorno de ejecución de daisyUI JavaScript.
  • Todas las cadenas del usuario se asignan con textContent.
  • Guardar solo crea un resultado local en memoria.

Hoja de estilos original del diseño

Distribución adaptable y geometría decorativa en torno a componentes nativos de CSS.

css
body{margin:0;background:var(--color-base-200);color:var(--color-base-content);font-family:ui-sans-serif,system-ui,sans-serif}.workshop{max-width:1100px;margin:auto;padding:32px}.page-heading{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:32px}.eyebrow,.preview-kicker{font-size:11px;font-weight:700;letter-spacing:.12em}h1{font-size:36px;line-height:1.1;margin:14px 0}h2{font-size:20px;font-weight:650}.muted{opacity:.7;font-size:14px;line-height:1.6}.workbench{display:grid;grid-template-columns:1fr 1fr;gap:28px}.fieldset{margin:8px 0;min-width:0}.card-body{gap:12px}.fieldset-legend{gap:8px}.range-labels{display:flex;justify-content:space-between;font-size:11px;opacity:.7}.extras{display:flex;gap:12px;font-size:14px;margin:16px 0}.extras small{display:block;opacity:.65;margin-top:4px}.card-actions{margin-top:12px}.card-top{display:flex;justify-content:space-between;align-items:center;font-size:10px;letter-spacing:.1em}.shape-art{height:135px;position:relative;display:flex;justify-content:center;align-items:center;margin:16px 0}.shape-art i{width:95px;height:95px;background:var(--color-primary-content);opacity:.8;border-radius:50%;margin-right:-20px}.shape-art i:nth-child(2){border-radius:0;transform:rotate(45deg);opacity:.3}.shape-art i:nth-child(3){border-radius:50% 50% 0 0;opacity:.55}.invitation-card h2{font-size:34px;line-height:1.15;margin:4px 0;overflow-wrap:anywhere}.invite-footer{display:flex;justify-content:space-between;gap:16px;align-items:center;border-top:1px solid currentColor;padding-top:20px;margin-top:20px;font-size:12px}.role-strip{display:flex;gap:8px;margin-top:16px}.role-strip span{padding:8px;font-size:10px;border-radius:4px;flex:1;text-align:center}.specimen-note{margin-top:12px}.alert{margin-top:24px}.alert[hidden]{display:none}.modal-box p{margin:16px 0}.join{display:flex}.join .btn{flex:1;font-size:12px;padding-inline:12px}@media(max-width:700px){.workshop{padding:24px 16px}.page-heading{flex-direction:column;gap:8px}.page-heading .fieldset{width:100%}h1{font-size:30px}.workbench{grid-template-columns:1fr}.card-body{padding:20px}.invitation-card h2{font-size:30px}}

Referencia de código

  • El diseño de la página y la escala de los encabezados son decisiones de la aplicación.

Documento index.html completo

Usa la compilación de la hoja de estilos y el código de interacción completo proporcionados arriba.

HTML
<!doctype html>
<html lang="en" data-theme="emerald"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>daisyUI specimen</title><link rel="stylesheet" href="output.css"><link rel="stylesheet" href="style.css"></head><body>
<main class="workshop"><header class="page-heading"><div><p class="eyebrow">DAISYUI · SEMANTIC THEMES</p><h1>A small gathering,<br>a considered invitation.</h1><p class="muted">Compose a local workshop card and watch the theme roles follow.</p></div><label class="fieldset">Theme<select id="theme" class="select"><option value="emerald">Emerald</option><option value="lofi">Lo-fi</option><option value="night">Night</option></select></label></header><div class="workbench"><form id="invitation" class="card bg-base-100 border border-base-300"><div class="card-body"><h2 class="card-title">Workshop details</h2><fieldset class="fieldset"><legend class="fieldset-legend">Workshop title</legend><input id="title" class="input validator w-full" required minlength="5" maxlength="52" value="Making room for ideas" aria-describedby="title-help"><p id="title-help" class="validator-hint">Use 5–52 characters.</p></fieldset><fieldset class="fieldset"><legend class="fieldset-legend">Format</legend><div class="join"><input class="join-item btn" type="radio" name="format" value="Studio session" aria-label="Studio session" checked><input class="join-item btn" type="radio" name="format" value="Online circle" aria-label="Online circle"></div></fieldset><fieldset class="fieldset"><legend class="fieldset-legend">Seats <output id="seat-count" for="seats">12</output></legend><input id="seats" class="range range-primary w-full" type="range" min="4" max="24" step="2" value="12" aria-label="Number of seats"><div class="range-labels"><span>4 · intimate</span><span>24 · open room</span></div></fieldset><label class="extras"><input id="materials" class="checkbox checkbox-primary" type="checkbox" checked><span>Include a materials pack<small>Paper, pencils and a small printed prompt.</small></span></label><div class="card-actions"><button class="btn btn-primary" type="submit">Review invitation</button><button class="btn btn-ghost" type="reset">Reset</button></div></div></form><section class="specimen" aria-label="Invitation preview"><div class="invitation-card card bg-primary text-primary-content"><div class="card-body"><div class="card-top"><span class="badge badge-outline">OPEN STUDIO</span><span>LOCAL DRAFT</span></div><div class="shape-art" aria-hidden="true"><i></i><i></i><i></i></div><p class="preview-kicker">A WORKSHOP FOR CURIOUS PEOPLE</p><h2 id="preview-title">Making room for ideas</h2><p id="preview-format">Studio session</p><div class="invite-footer"><strong id="preview-seats">12 seats</strong><span id="preview-materials">Materials included</span></div></div></div><div class="role-strip" aria-label="Theme color roles"><span class="bg-primary text-primary-content">Primary</span><span class="bg-secondary text-secondary-content">Secondary</span><span class="bg-accent text-accent-content">Accent</span><span class="bg-neutral text-neutral-content">Neutral</span></div><p class="muted specimen-note">The same semantic classes use each theme’s background and matching content colors.</p></section></div><div id="result" class="alert alert-success" role="status" hidden></div><dialog id="review" class="modal" aria-labelledby="review-title"><div class="modal-box"><h2 id="review-title">Review your local invitation</h2><p id="review-copy"></p><p class="muted">This prepares a local draft. No invitations are sent.</p><div class="modal-action"><button id="back" class="btn">Keep editing</button><button id="approve" class="btn btn-primary">Save local draft</button></div></div></dialog></main>

<script src="app.js" defer></script></body></html>

Referencia de código

  • Guarda la interacción proporcionada como app.js.
  • Se incluyen la ventana gráfica y la carga de recursos nativos.
04

Configuración del agente de IA del sistema de diseño daisyUI

Punto de partida para la implementación

Verificado con daisyUI 5.7.47 y Tailwind CSS 4.3.3. La ilustración de la tarjeta y el diseño de la página son originales; los valores de los componentes CSS y del tema Emerald son nativos.

css
/* npm install -D [email protected] @tailwindcss/[email protected] [email protected] */
/* Save the HTML example as body.html in the same directory as input.css. */
/* input.css */
@import "tailwindcss" source(none);
@source "./body.html";
@plugin "daisyui" {
  themes: emerald --default, lofi, night;
}
/* Build: npx @tailwindcss/cli -i ./input.css -o ./output.css --minify */
/* In index.html, link output.css then style.css; include body.html markup. */
/* Load the supplied app.js with <script src="app.js" defer></script>. */
/* Set <html lang="en" data-theme="emerald"> and a viewport meta tag. */

Una instrucción para tu proyecto

Instrucción para el agente
Usa daisyUI 5.7.47 con la compilación de Tailwind 4 proporcionada y los temas Emerald, Lo-fi y Night para reproducir el estudio de invitaciones. Combina los colores semánticos de superficie con las funciones de contenido correspondientes. Conserva los botones de opción nativos agrupados, el rango de asientos con incrementos pares, la casilla de verificación de materiales y la validación del título. La revisión muestra la invitación actual en un diálogo nativo; Guardar borrador local confirma esa instantánea, mientras que cualquier edición posterior borra el mensaje. Restablece el formulario sin alterar el tema seleccionado y no afirmes que se enviaron invitaciones.
05

Fuentes y alcance del sistema de diseño daisyUI

daisyUI 5.7.47 y Tailwind CSS 4.3.3. Los valores de Emerald son específicos del tema. El borrador local no guarda datos de forma persistente ni envía invitaciones.