Système de composants CSS · Nouvelle ressource

Système de design daisyUI.

Un studio d’invitation natif de CSS qui présente les 5 thèmes sémantiques de daisyUI, les couleurs associées au contenu, les options d’adhésion par boutons radio, les commandes de plage, la validation du navigateur et une véritable étape de révision dans une boîte de dialogue.

Guide OpenDesign9 chapitres29 entrées de référenceGuide de l’application d’origine
01

Aperçu de l’interface du système de design daisyUI

Passez d’Emerald à Lo-fi ou Night, modifiez une carte d’atelier et examinez un brouillon local.

Studio de thème pour invitationsOuvrir l’exemple complet
Classes officielles de daisyUI 5.7.47 compilées avec Tailwind CSS 4.3.3 ; le comportement de l’application est en JavaScript natif. · Référence de mise en œuvre
02

Référence de conception du système de design daisyUI

daisyUI 5.7.47, conçu avec Tailwind CSS 4.3.3. Les valeurs de couleur et de géométrie indiquées appartiennent au thème Emerald fourni avec le bundle ; Lo-fi et Night définissent volontairement des valeurs différentes. La typographie et l’espacement de la page sont des choix d’origine, exprimés avec des dimensions compatibles avec Tailwind.

Couleurs sémantiques d’Emerald

Source
Nom / règleValeur / configurationUtilisation
--color-base-100oklch(100% 0 0)Surface principale du composant.
--color-base-200oklch(93% 0 0)Surface de la page dans cet exemple.
--color-base-300oklch(86% 0 0)Limite de la surface.
--color-base-contentoklch(35.519% 0.032 262.988)Texte sur les surfaces de base.
--color-primaryoklch(76.662% 0.135 153.45)Action principale et arrière-plan de l’invitation.
--color-primary-contentoklch(33.387% 0.04 162.24)Texte associé à la couleur primaire.
--color-secondaryoklch(61.302% 0.202 261.294)Rôle secondaire.
--color-secondary-contentoklch(100% 0 0)Texte associé au rôle secondaire.
--color-accentoklch(72.772% 0.149 33.2)Rôle d’accentuation.
--color-accent-contentoklch(0% 0 0)Texte associé à l’accentuation.
--color-neutraloklch(35.519% 0.032 262.988)Accentuation neutre.
--color-neutral-contentoklch(98.462% 0.001 247.838)Texte associé au rôle neutre.
--color-infooklch(72.06% 0.191 231.6)Rôle d’information.
--color-successoklch(64.8% 0.15 160)Rôle de réussite.
--color-warningoklch(84.71% 0.199 83.87)Rôle d’avertissement.
--color-erroroklch(71.76% 0.221 22.18)Rôle d’erreur.

Géométrie des composants Emerald

Source
Nom / règleValeur / configurationUtilisation
--radius-selector1remArrondi des cases à cocher, des interrupteurs et des sélecteurs similaires.
--radius-field0.5remArrondi des champs de saisie et des boutons.
--radius-box1remArrondi des cartes et des fenêtres modales.
--size-selector0.25remTaille de base des sélecteurs utilisée dans les calculs des composants.
--size-field0.25remTaille de base des champs utilisée dans les calculs des composants.
--border1pxÉpaisseur de la bordure des composants.
--depth0Emerald désactive les effets de profondeur.
--noise0Emerald désactive les effets de texture granuleuse.

Échelle de mise en page d’origine de l’invitation

Source
Nom / règleValeur / configurationUtilisation
Page spacing32px desktop / 24px 16px mobileComposition d’origine, et non système distinct de jetons d’espacement daisyUI.
Main heading36px / 1.1; 30px below 700pxHiérarchie d’origine, au-delà des valeurs par défaut des composants.
Invitation title34px / 1.15; 30px on mobileGrande typographie d’origine avec retour à la ligne des mots longs.
Supporting copy14px / 1.6Texte explicatif d’origine, facile à lire.
Layout breakpoint700pxPoint de rupture d’origine, où la mise en page passe de deux colonnes à une, et non un jeton de point de rupture daisyUI.
03

Guide complet du système de design daisyUI

Un guide pratique pour choisir, appliquer et évaluer ce système dans une interface réelle.

DESIGN-daisyui.md

Des conseils complets, un point de départ pour la mise en œuvre et des liens vers les sources.

Télécharger le guide

Classes de composants sémantiques de daisyUI sur Tailwind CSS — système de design daisyUI

Classes de composants sémantiques de CSS sur Tailwind CSS

daisyUI fournit des classes de composants au moyen d’un plugin Tailwind. Dans la version cinq, la configuration se trouve dans CSS : importez tailwindcss, puis déclarez le plugin daisyui et les thèmes activés. Cet exemple utilise btn, card, fieldset, range, checkbox, join et modal au lieu de recréer l’apparence de ces composants à l’aide de sélecteurs personnalisés.

Extrait de ce guide OpenDesign

Le plugin ne prend pas en charge la gestion de l’état de l’application. Les champs natifs, la validation du navigateur, les méthodes de dialogue et le petit module JavaScript rendent ce studio d’invitation interactif. Cette distinction compte dans le choix d’une bibliothèque : elle peut fonctionner avec plusieurs frameworks puisque sa couche de composants est CSS, mais un nom de classe ne suffit pas à mettre en œuvre une opération côté serveur.

Consultez la spécification associée

Système de design daisyUI — associez chaque surface colorée au rôle de son contenu

Associez chaque surface colorée au rôle de son contenu

La carte d’invitation associe bg-primary et text-primary-content. La bande des rôles reprend cette association pour secondary, accent et neutral. Il s’agit de rôles sémantiques coordonnés, et non d’une palette fixe à reproduire dans chaque composant. La sélection d’un autre thème activé modifie les variables sous-jacentes sans changer le balisage de la carte.

La couleur primary d’Emerald est un vert clair, tandis que primary-content est un vert foncé. Utiliser automatiquement du texte blanc sur tous les arrière-plans primary ne respecterait pas le rôle du contenu prévu par le thème. Le tableau des spécifications reprend les valeurs OKLCH réelles du thème Emerald installé ; il ne les convertit pas en couleurs de marque hexadécimales approximatives.

Consultez la spécification associée

Système de design daisyUI : compilez les thèmes que vous souhaitez proposer

Compilez les thèmes que vous souhaitez proposer

La configuration du plugin CSS active Emerald par défaut, ainsi que Lo-fi et Night. Un contrôle de sélection modifie data-theme sur l’élément du document. Seuls les thèmes compilés sont proposés dans le menu ; sélectionner un nom qui n’a jamais été compilé ne ferait pas apparaître le thème CSS correspondant.

Les thèmes définissent également des variables de rayon, de dimensions des champs, de bordure et d’effet. Passer d’Emerald à Lo-fi ne change donc pas seulement une nuance de couleur. Pour limiter un thème à une zone intégrée, data-theme peut être placé sur cette zone plutôt que sur html. Cet exemple autonome l’applique volontairement à tout le document.

  1. Compilez les thèmes souhaités dans le bloc du plugin daisyUI.
  2. Utilisez les classes sémantiques d’arrière-plan et de contenu dans le balisage du composant.
  3. Modifiez data-theme et examinez ensemble les contrôles, les surfaces et le texte.

Consultez la spécification associée

Système de design daisyUI : les rayons des sélecteurs, des champs et des boîtes sont distincts

Les rayons des sélecteurs, des champs et des conteneurs sont distincts

Emerald définit radius-selector à un rem, radius-field à un demi-rem et radius-box à un rem. Ses valeurs size-selector et size-field sont des unités de base d’un quart de rem utilisées dans les calculs des composants. Ces valeurs ne sont pas interchangeables avec l’espacement entre les sections de la page. Les spécifications distinguent la géométrie des composants de la mise en page d’origine de l’atelier.

La page environnante utilise une pile de polices sans sérif système, un grand titre éditorial et une composition sur deux colonnes. daisyUI n’impose pas cette hiérarchie de titres. Au point de rupture initial de 700px, la page empile l’éditeur au-dessus de l’invitation ; elle conserve tous les champs et toutes les actions au lieu de masquer des paramètres pour s’adapter à une capture d’écran.

Consultez la spécification associée

Système de design daisyUI : une véritable entrée radio pour chaque option de groupe

Un groupe join rassemble de véritables boutons radio

Les options de format sont des boutons radio avec un nom commun et les classes join-item et btn. Sélectionner « Séance en studio » ou « Cercle en ligne » modifie l’état coché natif et le texte de l’aperçu. Une rangée de boutons stylisés sans état de sélection persistant ne représenterait pas aussi clairement ce choix exclusif.

Le champ Places utilise une entrée native de type range, de quatre à vingt-quatre, par incréments de deux. Un élément output affiche son nombre actuel, tandis que les libellés aux extrémités indiquent la taille prévue du groupe. Le contrôle du matériel est une véritable case à cocher. Son état modifie le pied de page de l’invitation, au lieu de simplement changer la couleur de la case.

Consultez la spécification associée

Système de design daisyUI : la validation CSS respecte les contraintes du navigateur

La validation CSS respecte les contraintes du navigateur

Le champ de titre est obligatoire et comporte des limites de longueur minimale et maximale. La classe validator et validator-hint affichent l’état invalide ; c’est toujours au navigateur de faire respecter la contrainte native. Le formulaire contourne la validation en utilisant un gestionnaire de clic générique sur le bouton de vérification.

Une fois la validation standard réussie, le gestionnaire d’envoi supprime les espaces superflus du titre et vérifie sa longueur utile. Cela permet de détecter une chaîne composée d’espaces qui pourrait satisfaire minlength sans suppression préalable. Un message de validité personnalisé est effacé à la prochaine saisie, afin que le titre corrigé puisse être envoyé. Le contenu saisi par l’utilisateur est rendu avec textContent, jamais inséré en tant que HTML.

Consultez la spécification associée

Système de design daisyUI : une véritable boîte de dialogue conserve un instantané pour vérification

Une véritable boîte de dialogue conserve un instantané pour vérification

La vérification de l’invitation copie le titre, le format, le nombre de places et le matériel actuels dans un instantané, puis appelle dialog.showModal. La classe modal fournit le style daisyUI, tandis que le navigateur assure le comportement natif de la boîte de dialogue. L’en-tête associe le libellé de la boîte de dialogue avec aria-labelledby, et la touche Échap permet de fermer la vérification sans enregistrer.

« Continuer la modification » ferme la boîte de dialogue sans modifier le formulaire. « Enregistrer le brouillon local » la ferme et annonce l’instantané exact dans une zone d’état. Le message précise qu’aucune invitation n’a été envoyée. Il ne s’agit volontairement pas de simuler la réussite d’un envoi par courriel : cet exemple ne comporte ni liste de destinataires ni service d’envoi.

Consultez la spécification associée

Système de design daisyUI : la réinitialisation et la modification ont des effets visibles

La réinitialisation et la modification ont des effets visibles

La modification d’un champ met immédiatement la carte à jour et masque toute ancienne notification d’enregistrement. Cela évite qu’un ancien message de réussite semble décrire une invitation plus récente qui n’a pas été enregistrée. La réinitialisation attend que le navigateur ait restauré les valeurs par défaut du formulaire, puis reconstruit l’aperçu à partir de ces valeurs réelles. Le thème sélectionné séparément reste inchangé.

Le remplissage des trois formes décoratives provient de primary-content ; il s’adapte donc aux changements de thème, tout comme la typographie. L’illustration porte l’attribut aria-hidden, car elle n’apporte aucune information sur le nombre de places ou le format. Le titre et le pied de page visibles de l’aperçu contiennent les informations utiles.

  • Une saisie invalide empêche la vérification et signale le champ de titre.
  • La touche Échap ferme la vérification sans enregistrer de résultat.
  • Après un enregistrement, toute modification efface l’ancien résultat tout en conservant le thème sélectionné.

Consultez la spécification associée

Système de design daisyUI : une petite version CSS avec une découverte explicite des sources

Une petite compilation CSS avec détection explicite des sources

La configuration fournie utilise l’interface en ligne de commande de Tailwind, un fichier input.css local et les trois fichiers source présentés ci-dessus. source(none) désactive l’analyse automatique générale, et la directive source explicite désigne le HTML contenant le composant et les classes utilitaires. Le CSS généré pour cet exemple dépend ainsi de son balisage réel.

Le résultat de compilation est combiné à la feuille de style de mise en page d’origine ; du JavaScript simple gère l’interaction. L’aperçu autonome intègre le résultat et ne dépend d’aucune ressource distante. Un projet Vite, Astro ou React peut utiliser son intégration Tailwind habituelle, mais doit conserver la liste des thèmes activés et inclure les fichiers source contenant les classes.

Consultez la spécification associée

Exemples de composants du système de design daisyUI

Composition sémantique de composants HTML

Groupes de champs, boutons radio regroupés, curseur natif, case à cocher, carte et boîte de dialogue.

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>

Référence du code

  • Les arrière-plans principaux sont toujours associés à du texte de contenu principal.
  • Le curseur reste un champ de saisie natif avec min, max et step.
  • La boîte de dialogue s’ouvre avec showModal, et non au moyen d’une simple classe open à visée visuelle.

Comportement du brouillon local

Aperçu en direct, instantané de révision stable, sélection du thème et validation native.

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();

Référence du code

  • Aucun moteur d’exécution daisyUI JavaScript n’est importé.
  • Toutes les chaînes destinées à l’utilisateur sont affectées avec textContent.
  • L’enregistrement crée uniquement un résultat local en mémoire.

Feuille de style de mise en page d’origine

Disposition adaptative et géométrie décorative autour de composants natifs 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}}

Référence du code

  • La mise en page et l’échelle des titres relèvent des choix de l’application.

Document index.html complet

À utiliser avec la compilation de la feuille de style et le code d’interaction complet fournis ci-dessus.

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>

Référence du code

  • Enregistrez le code d’interaction fourni sous le nom app.js.
  • La fenêtre d’affichage et le chargement natif des ressources sont inclus.
04

Configuration de l’agent du système de design daisyUI

Point de départ de l’implémentation

Vérifié avec daisyUI 5.7.47 et Tailwind CSS 4.3.3. L’illustration de la carte et la mise en page sont originales ; les composants CSS et les valeurs du thème Emerald sont natifs.

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. */

Un prompt pour votre projet

Prompt pour l’agent IA
Utilisez daisyUI 5.7.47 avec la compilation Tailwind 4 fournie et les thèmes Emerald, Lo-fi et Night pour recréer le studio d’invitation. Associez les couleurs de surface sémantiques aux rôles de contenu correspondants. Conservez les champs radio natifs regroupés, le curseur du nombre de places à incréments pairs, la case à cocher des fournitures et la validation du titre. L’action « Réviser » affiche l’invitation actuelle dans une boîte de dialogue native ; « Enregistrer le brouillon local » confirme cet instantané, tandis qu’une modification ultérieure efface le message. Réinitialisez le formulaire sans modifier le thème sélectionné et ne prétendez pas que des invitations ont été envoyées.
05

Sources et périmètre du système de design daisyUI

daisyUI 5.7.47 et Tailwind CSS 4.3.3. Les valeurs Emerald sont propres au thème. Le brouillon local ne conserve pas les données et n’envoie pas d’invitations.