CSS-Komponentensystem · Neue Ressource

daisyUI Design-System.

Ein mit CSS erstelltes Einladungsstudio, das die semantischen Themes von daisyUI 5, passende Inhaltsfarben, verbundene Optionsfelder, Bereichsregler, Browser-Validierung und einen echten Dialog zur Prüfung demonstriert.

OpenDesign-Leitfaden9 Kapitel29 ReferenzeinträgeOriginaler Anwendungsleitfaden
01

daisyUI Design-System: Interface-Vorschau

Wechsle zwischen Emerald, Lo-fi und Night, ändere eine Workshop-Karte und prüfe einen lokalen Entwurf.

Theme-Studio für EinladungenVollständiges Beispiel öffnen
Offizielle daisyUI-5.7.47-Klassen, kompiliert mit Tailwind CSS 4.3.3; das Verhalten der Anwendung ist in einfachem JavaScript umgesetzt. · Implementierungsreferenz
02

daisyUI Design-System: Gestaltungsreferenz

daisyUI 5.7.47, erstellt mit Tailwind CSS 4.3.3. Die aufgeführten Farb- und Geometriewerte gehören zum gebündelten Theme Emerald; Lo-fi und Night definieren bewusst andere Werte. Typografie und Abstände der Seite sind eigene Gestaltungsentscheidungen mit Tailwind-kompatiblen Maßeinheiten.

Semantische Farben von Emerald

Quelle
Name / RegelWert / KonfigurationVerwendung
--color-base-100oklch(100% 0 0)Oberfläche der Hauptkomponente.
--color-base-200oklch(93% 0 0)Seitenoberfläche in diesem Beispiel.
--color-base-300oklch(86% 0 0)Oberflächenbegrenzung.
--color-base-contentoklch(35.519% 0.032 262.988)Text auf Basisoberflächen.
--color-primaryoklch(76.662% 0.135 153.45)Hauptaktion und Einladungshintergrund.
--color-primary-contentoklch(33.387% 0.04 162.24)Text in Kombination mit der Primärfarbe.
--color-secondaryoklch(61.302% 0.202 261.294)Sekundäre Rolle.
--color-secondary-contentoklch(100% 0 0)Text in Kombination mit der Sekundärfarbe.
--color-accentoklch(72.772% 0.149 33.2)Akzentrolle.
--color-accent-contentoklch(0% 0 0)Text in Kombination mit der Akzentfarbe.
--color-neutraloklch(35.519% 0.032 262.988)Neutrale Hervorhebung.
--color-neutral-contentoklch(98.462% 0.001 247.838)Text in Kombination mit der Neutralfarbe.
--color-infooklch(72.06% 0.191 231.6)Informationsrolle.
--color-successoklch(64.8% 0.15 160)Erfolgsrolle.
--color-warningoklch(84.71% 0.199 83.87)Warnrolle.
--color-erroroklch(71.76% 0.221 22.18)Fehlerrolle.

Komponentengeometrie von Emerald

Quelle
Name / RegelWert / KonfigurationVerwendung
--radius-selector1remAbrundung von Kontrollkästchen, Umschaltern und ähnlichen Selektoren.
--radius-field0.5remAbrundung von Eingabe- und Schaltflächenfeldern.
--radius-box1remAbrundung von Karten und Modalfenstern.
--size-selector0.25remDie Basisgröße des Selektors, die für Komponentenberechnungen verwendet wird.
--size-field0.25remDie Basisgröße des Felds, die für Komponentenberechnungen verwendet wird.
--border1pxRahmenbreite der Komponente.
--depth0Emerald deaktiviert Tiefeneffekte.
--noise0Emerald deaktiviert Rauscheffekte.

Skalierung des ursprünglichen Einladungs-Layouts

Quelle
Name / RegelWert / KonfigurationVerwendung
Page spacing32px desktop / 24px 16px mobileUrsprüngliche Komposition, kein separates Abstands-Token-System mit daisyUI.
Main heading36px / 1.1; 30px below 700pxUrsprüngliche Hierarchie oberhalb der Komponenten-Standardwerte.
Invitation title34px / 1.15; 30px on mobileUrsprünglich große Schrift mit Umbruch langer Wörter.
Supporting copy14px / 1.6Ursprünglicher, gut lesbarer erklärender Text.
Layout breakpoint700pxUrsprünglicher Umbruchpunkt vom zweispaltigen zum gestapelten Layout, kein Umbruchpunkt-Token mit daisyUI.
03

daisyUI Designsystem – vollständiger Leitfaden

Ein praktischer Leitfaden zur Auswahl, Anwendung und Überprüfung dieses Systems für ein echtes Interface.

DESIGN-daisyui.md

Umfassende Anleitung, Einstieg in die Implementierung und Links zu den Quellen.

Leitfaden herunterladen

daisyUI Designsystem: semantische Komponentenklassen in Tailwind CSS

Semantische Komponentenklassen für Tailwind CSS

daisyUI stellt Komponentenklassen über ein Tailwind-Plugin bereit. In Version fünf befindet sich die Einrichtung in CSS: Importiere tailwindcss und deklariere anschließend das daisyui-Plugin sowie die aktivierten Themes. Das Beispiel verwendet btn, card, fieldset, range, checkbox, join und modal, statt deren Erscheinungsbild mit maßgeschneiderten Selektoren nachzubilden.

Aus diesem OpenDesign-Leitfaden

Das Plugin stellt keine Zustandsverwaltung für die Anwendung bereit. Die nativen Eingabefelder, die Browser-Validierung, die Dialogmethoden und das kleine Modul JavaScript machen dieses Einladungsstudio interaktiv. Dieser Unterschied ist bei der Auswahl der Bibliothek wichtig: Sie kann mit verschiedenen Frameworks eingesetzt werden, weil ihre Komponentenebene CSS ist. Ein Klassenname allein führt jedoch keine Serveroperation aus.

Unterstützende Spezifikation lesen

daisyUI Designsystem: Jede farbige Oberfläche ihrer Inhaltsrolle zuordnen

Jede farbige Oberfläche ihrer Inhaltsrolle zuordnen

Die Einladungskarte verwendet bg-primary zusammen mit text-primary-content. Der Rollenstreifen wiederholt diese Zuordnung für secondary, accent und neutral. Dabei handelt es sich um aufeinander abgestimmte semantische Rollen, nicht um eine einzige feste Palette, die in jede Komponente übernommen werden muss. Bei Auswahl eines anderen aktivierten Themes ändern sich die zugrunde liegenden Variablen, nicht aber das Markup der Karte.

Bei Emerald ist primary ein helles Grün und primary-content ein dunkles Grün. Auf jedem primary-Hintergrund automatisch weißen Text zu verwenden, würde die vorgesehene Inhaltsrolle des Themes missachten. Die Spezifikationstabelle enthält die tatsächlichen OKLCH-Werte des installierten Emerald-Themes; sie wandelt diese nicht in vermeintliche hexadezimale Markenfarben um.

Unterstützende Spezifikation lesen

daisyUI Designsystem: Themes kompilieren, die angeboten werden sollen

Kompiliere die Themes, die du anbieten möchtest

Die CSS-Plugin-Konfiguration aktiviert Emerald als Standard sowie Lo-fi und Night. Ein Auswahlfeld ändert data-theme am Dokumentelement. Im Menü werden nur diese kompilierten Themes angeboten. Die Auswahl eines Namens, der nie erstellt wurde, würde das entsprechende CSS nicht hervorzaubern.

Themes umfassen auch Variablen für Rundungen, Feldgrößen, Rahmen und Effekte. Der Wechsel von Emerald zu Lo-fi verändert daher mehr als nur ein Farbfeld. Um ein Theme auf einen eingebetteten Bereich zu beschränken, kann data-theme diesem Bereich statt html zugewiesen werden. Dieses eigenständige Beispiel wendet es bewusst auf das gesamte Dokument an.

  1. Kompiliere die vorgesehenen Themes im daisyUI-Plugin-Block.
  2. Verwende im Komponenten-Markup semantische Klassen für Hintergrund und Inhalt.
  3. Ändere data-theme und überprüfe Steuerelemente, Oberflächen und Text gemeinsam.

Unterstützende Spezifikation lesen

daisyUI Designsystem: Rundungen von Selektor, Feld und Box sind getrennt

Selektor-, Feld- und Box-Rundungen sind getrennt

Emerald definiert radius-selector mit einem Rem, radius-field mit einem halben Rem und radius-box mit einem Rem. Die Werte size-selector und size-field sind Basiseinheiten von einem Viertel Rem, die für Komponentenberechnungen verwendet werden. Sie sind nicht mit dem Abstand zwischen Seitenabschnitten austauschbar. Die Spezifikation trennt die Geometrie der Komponenten vom ursprünglichen Layout der Arbeitsfläche.

Die umgebende Seite verwendet einen systemeigenen Sans-Serif-Schriftstapel, eine große redaktionelle Überschrift und eine zweispaltige Komposition. daisyUI schreibt diese Überschriftenhierarchie nicht vor. Am ursprünglichen Umbruchpunkt von 700px wird die Seite so umgestellt, dass der Editor oberhalb der Einladung erscheint. Dabei bleiben alle Eingabefelder und Aktionen erhalten, statt Einstellungen auszublenden, um in einen Screenshot zu passen.

Unterstützende Spezifikation lesen

daisyUI Designsystem: Eine Gruppe von Radio-Buttons mit echten Eingabefeldern erstellen

Eine Gruppe fasst echte Radio-Eingaben zusammen

Die Formatoptionen sind Radio-Eingabefelder mit einem gemeinsamen name-Attribut sowie den Klassen join-item und btn. Die Auswahl von „Studioveranstaltung“ oder „Online-Gruppe“ ändert den nativen Auswahlzustand und den Vorschautext. Eine Reihe gestalteter Schaltflächen ohne dauerhaft gespeicherten Auswahlzustand würde diese gegenseitig ausschließende Wahl weniger eindeutig darstellen.

Für die Sitzplätze wird ein natives range-Eingabefeld mit Werten von vier bis vierundzwanzig in Zweierschritten verwendet. Ein output-Element zeigt die aktuelle Zahl an, während Beschriftungen an den Endpunkten die vorgesehene Gruppengröße erläutern. Die Materialoption ist ein echtes Kontrollkästchen. Sein Zustand ändert die Fußzeile der Einladung, statt lediglich die Farbe des Kästchens umzuschalten.

Unterstützende Spezifikation lesen

daisyUI Designsystem: Die Validierung von CSS berücksichtigt Browser-Einschränkungen

CSS Designsystem: Die Validierung berücksichtigt Browser-Einschränkungen

Das Titelfeld ist ein Pflichtfeld und hat Vorgaben für minimale und maximale Länge. Die Klasse validator und validator-hint stellen den ungültigen Zustand dar; für die Durchsetzung der nativen Einschränkung ist weiterhin der Browser zuständig. Das Formular umgeht die Gültigkeitsprüfung nicht mit einem allgemeinen Klick-Handler auf der Prüfschaltfläche.

Nachdem die normale Validierung erfolgreich war, entfernt der Submit-Handler überflüssige Leerzeichen am Anfang und Ende des Titels und prüft dessen sinnvolle Länge. So wird eine Zeichenfolge aus Leerzeichen erkannt, die eine ungefilterte minlength-Prüfung bestehen könnte. Eine benutzerdefinierte Validitätsmeldung wird beim nächsten input-Ereignis gelöscht, damit ein korrigierter Titel abgeschickt werden kann. Nutzerinhalte werden über textContent ausgegeben und niemals als HTML eingefügt.

Unterstützende Spezifikation lesen

daisyUI Designsystem: Ein echter Dialog enthält eine Momentaufnahme zur Prüfung

Ein echter Dialog enthält eine Momentaufnahme zur Prüfung

„Einladung prüfen“ kopiert den aktuellen Titel, das Format, die Sitzplätze und die Materialien in eine Momentaufnahme und ruft dann dialog.showModal auf. Die Klasse modal sorgt für daisyUI-Styling, während der Browser das native Dialogverhalten bereitstellt. Über aria-labelledby wird der Dialog mit seiner Überschrift beschriftet. Mit Escape kann die Prüfung ohne Speichern geschlossen werden.

„Weiter bearbeiten“ schließt den Dialog und lässt das Formular unverändert. „Entwurf lokal speichern“ schließt ihn und gibt die genaue Momentaufnahme in einem Statusbereich bekannt. Die Meldung weist darauf hin, dass keine Einladungen versendet wurden. Der Vorgang simuliert bewusst keinen erfolgreichen E-Mail-Versand: Das Beispiel enthält weder eine Empfängerliste noch einen Versanddienst.

Unterstützende Spezifikation lesen

daisyUI Designsystem: Zurücksetzen und Bearbeiten haben sichtbare Auswirkungen

Zurücksetzen und Bearbeiten haben sichtbare Auswirkungen

Wenn ein Feld geändert wird, aktualisiert sich die Karte sofort und ein zuvor angezeigter Speicherhinweis wird ausgeblendet. So kann eine veraltete Erfolgsmeldung nicht so wirken, als bezöge sie sich auf eine neuere, noch nicht gespeicherte Einladung. Beim Zurücksetzen wird gewartet, bis der Browser die Formularstandardwerte wiederhergestellt hat. Anschließend wird die Vorschau anhand dieser tatsächlichen Werte neu aufgebaut. Das unabhängig ausgewählte Theme bleibt erhalten.

Die dekorative Grafik aus drei Formen übernimmt ihre Füllfarbe von primary-content und reagiert daher ebenso wie die Typografie auf Theme-Änderungen. Sie ist mit aria-hidden gekennzeichnet, da sie keine Informationen zu Sitzplätzen oder Format vermittelt. Der sichtbare Vorschautitel und die Fußzeile enthalten die relevanten Inhalte.

  • Ungültige Eingaben verhindern die Überprüfung und weisen auf das Titelfeld hin.
  • Mit Escape wird die Überprüfung geschlossen, ohne ein gespeichertes Ergebnis zu erzeugen.
  • Wird nach dem Speichern etwas bearbeitet, wird das alte Ergebnis entfernt; das aktuelle Theme bleibt erhalten.

Unterstützende Spezifikation lesen

daisyUI-Designsystem: Ein kleiner CSS-Build mit expliziter Quellenerkennung

Ein kleines CSS-Build mit expliziter Quellenerkennung

Die bereitgestellte Einrichtung verwendet die Tailwind-CLI, eine lokale input.css und die drei oben gezeigten Quelldateien. source(none) deaktiviert die umfassende automatische Suche, und die explizite source-Direktive verweist auf die HTML, die die Komponente und Utility-Klassen enthält. Dadurch richtet sich das generierte CSS in diesem Beispiel nach dem tatsächlich vorhandenen Markup.

Die Build-Ausgabe wird mit dem ursprünglichen Layout-Stylesheet kombiniert; die Interaktion übernimmt einfaches JavaScript. Die eigenständige Vorschau bindet das Ergebnis direkt ein und benötigt keine externen Ressourcen. Ein Vite-, Astro- oder React-Projekt kann stattdessen die übliche Tailwind-Integration verwenden. Dabei müssen jedoch die Liste der aktivierten Themes erhalten bleiben und die Quelldateien mit den Klassen berücksichtigt werden.

Unterstützende Spezifikation lesen

daisyUI-Designsystem: Komponentenbeispiele

Semantische Komponentenzusammensetzung mit HTML

Fieldsets, Optionsfeldgruppe, natives Bereichseingabefeld, Kontrollkästchen, Karte und Dialog.

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>

Code-Referenz

  • Hintergründe in Primary-Farbe werden stets mit Text in der Farbe primary-content kombiniert.
  • Der Bereich bleibt ein natives Eingabefeld mit min, max und step.
  • Der Dialog wird mit showModal geöffnet, nicht über eine rein visuelle open-Klasse.

Lokales Entwurfsverhalten

Live-Vorschau, unveränderlicher Prüfungsstand, Theme-Auswahl und native Validierung.

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

Code-Referenz

  • Es wird keine daisyUI-Laufzeitumgebung JavaScript importiert.
  • Alle nutzerseitigen Zeichenfolgen werden mit textContent zugewiesen.
  • Beim Speichern wird lediglich ein lokales Ergebnis im Arbeitsspeicher erstellt.

Ursprüngliches Layout-Stylesheet

Responsives Layout und dekorative Formen rund um native CSS-Komponenten.

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}}

Code-Referenz

  • Seitenlayout und Überschriftenmaßstab sind Entscheidungen der Anwendung.

Vollständiges index.html-Dokument

Mit dem oben bereitgestellten Stylesheet-Build und dem vollständigen Interaktionsquelltext verwenden.

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>

Code-Referenz

  • Speichern Sie die bereitgestellte Interaktion als app.js.
  • Viewport und natives Laden von Assets sind enthalten.
04

daisyUI-Designsystem: Einrichtung des Agenten

Ausgangspunkt für die Implementierung

Verifiziert mit daisyUI 5.7.47 und Tailwind CSS 4.3.3. Die Kartengrafik und das Seitenlayout sind eigens gestaltet; die Komponenten-CSS und Emerald-Theme-Werte sind nativ.

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

Ein Prompt für dein Projekt

Agenten-Prompt
Verwenden Sie daisyUI 5.7.47 mit dem bereitgestellten Tailwind-4-Build sowie den Themes Emerald, Lo-fi und Night, um das Einladungsstudio nachzubilden. Kombinieren Sie semantische Oberflächenfarben mit den zugehörigen Inhaltsrollen. Behalten Sie die gruppierten nativen Optionsfelder, den Sitzplatzregler mit geraden Schrittweiten, das Kontrollkästchen für Materialien und die Titelvalidierung bei. Bei der Überprüfung wird die aktuelle Einladung in einem nativen Dialog festgehalten. „Lokalen Entwurf speichern“ bestätigt diesen Stand, während spätere Bearbeitungen die Meldung entfernen. Setzen Sie das Formular unabhängig vom ausgewählten Theme zurück und geben Sie nicht vor, Einladungen seien versendet worden.
05

daisyUI-Designsystem: Quellen und Geltungsbereich

daisyUI 5.7.47 und Tailwind CSS 4.3.3. Die Emerald-Werte sind themespezifisch. Der lokale Entwurf speichert keine Daten dauerhaft und versendet keine Einladungen.