Introductie van de Tailwind CSS-plug-in daisyUI: “alleen met klassen” snel UI bouwen

Tailwind CSS is een utility‑class framework dat veel vrijheid biedt, maar het kan omslachtig zijn om telkens componenten zoals knoppen, kaarten of modals handmatig te combineren. daisyUI voegt bovenop Tailwind een set component‑klassen + thema’s toe, waardoor het ontwerpproces en de styling aanzienlijk versneld worden.

De installatie en configuratie verschillen per framework (Next.js, Vite, Remix, enz.). In dit artikel gaan we ervan uit dat de installatie al voltooid is. Voor een volledige installatie raadpleeg je de officiële documentatie:

Installatiehandleiding

Wat is daisyUI?



daisyUI is een plug-in voor Tailwind CSS die veelgebruikte UI‑patronen als component‑klassen levert. In plaats van elke utiliteit te combineren voor knoppen, kaarten of modals, kun je direct een betekenisvolle, korte klasse gebruiken, zoals btn of card.

  • Component‑klassen: btn, card, navbar, modal en meer, klaar voor gebruik.
  • Thema‑systeem: eenvoudig wisselen met data-theme="light".
  • Naadloze integratie met Tailwind: fijn afstellen met Tailwind‑utilities.

Het meest opvallende voordeel is één ding:

  • Het eindresultaat blijft hetzelfde, maar de HTML wordt aanzienlijk korter.

Hieronder zie je een vergelijking van dezelfde “Primary knop” en “kaart + actieknop” met en zonder daisyUI.

daisyUI gebruiken vs. niet gebruiken: hetzelfde resultaat, minder HTML?

1) Primary knop

(A) Alleen Tailwind — je moet utiliteiten combineren om de stijl te maken.

<button
  class="inline-flex items-center justify-center rounded-lg px-4 py-2 text-sm font-medium
         bg-blue-600 text-white shadow-sm hover:bg-blue-700
         focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2
         disabled:opacity-50 disabled:pointer-events-none"
>
  Primary
</button>

(B) Met daisyUI — dezelfde knop met een kortere component‑klasse.

<button class="btn btn-primary">Primary</button>

Het punt is niet dat Tailwind het niet kan, maar dat daisyUI herhalende combinaties bundelt in een standaard.

2) Kaart + actieknop

(A) Alleen Tailwind — afzonderlijke combinaties voor container, titel, tekst en actie.

<div class="w-96 rounded-2xl bg-white shadow-xl">
  <div class="p-6">
    <h2 class="text-lg font-semibold">Card title</h2>
    <p class="mt-2 text-sm text-slate-600">
      Bij herhaald gebruik worden klassen lang en neemt duplicatie toe.
    </p>
    <div class="mt-4 flex justify-end">
      <button
        class="inline-flex items-center justify-center rounded-lg px-4 py-2 text-sm font-medium
               bg-blue-600 text-white shadow-sm hover:bg-blue-700
               focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
      >
        Bevestigen
      </button>
    </div>
  </div>
</div>

(B) Met daisyUI — de rol van de kaart is meteen zichtbaar, extra Tailwind kan toegevoegd worden.

<div class="card w-96 bg-base-100 shadow-xl">
  <div class="card-body">
    <h2 class="card-title">Card title</h2>
    <p>
      DaisyUI levert herhalende UI‑structuren als component‑klassen, waardoor de HTML korter wordt.
    </p>
    <div class="card-actions justify-end">
      <button class="btn btn-primary">Bevestigen</button>
    </div>
  </div>
</div>

Samengevat:

  • Kortere klassen → betere leesbaarheid
  • Uniforme standaardwaarden voor herhalende patronen
  • Inbegrepen thema’s voor snelle consistentie

De volgende sectie gaat dieper in op het thema‑systeem.

Thema‑systeem: waarom dark mode en merk‑thema’s zo eenvoudig zijn



daisyUI’s kracht ligt in het thema‑wisselen. Het biedt standaard CSS‑variabele thema’s, waardoor kleur, achtergrond en teksttoon van de hele app automatisch veranderen.

Light en dark thema‑wissel

Thema toepassen in HTML

<html data-theme="light">
  <body>
    <button class="btn btn-primary">Hello</button>
  </body>
</html>

Thema toggelen met JavaScript

const html = document.documentElement;

function toggleTheme() {
  const next = html.getAttribute("data-theme") === "dark" ? "light" : "dark";
  html.setAttribute("data-theme", next);
}

Voordelen van deze aanpak:

  • Global thema‑wissel in plaats van per component kleuren aanpassen
  • Snelle stabilisatie van het designsysteem (kleur/tonen) in het begin

Tailwind en daisyUI samen gebruiken!

daisyUI is ideaal om een basisvorm snel vast te leggen en vervolgens met Tailwind de details af te stemmen.

Bijvoorbeeld extra marges, uitlijning of responsiviteit toevoegen aan een knop:

<button class="btn btn-primary w-full sm:w-auto px-6">
  Opslaan
</button>
  • btn btn-primary: component‑stijl (consistentie)
  • w-full sm:w-auto px-6: layout, responsiviteit, fijne afstemming

Wanneer is daisyUI bijzonder voordelig?

  • MVP / prototyping: snel een mooie, werkende interface bouwen.
  • Dashboard / admin‑pagina: veel herhalende UI‑patronen (tabellen, kaarten, formulieren).
  • Kleine teams / solo‑ontwikkelaars: weinig tijd voor een uitgebreid designsysteem.
  • Thema‑kritische services: eenvoudig dark mode of merk‑skins beheren.

Overwegingen

  • Klassen‑naamgeving wordt toegevoegd in de daisyUI‑stijl (bijv. btn, card, navbar). Controleer of dit in lijn is met je team‑conventies.
  • Extreem aangepaste ontwerpen kunnen beperkt worden door de standaard component‑stijlen. Gelukkig kun je met Tailwind‑utilities de meeste aanpassingen doen, of componenten herdefiniëren.

Afsluiting

daisyUI is een “praktische” plug‑in die de productiviteit van Tailwind nog verder verhoogt. Dankzij component‑klassen en het thema‑systeem kun je UI snel opzetten en een consistente stijl behouden.

In het volgende artikel zullen we dieper ingaan op:

  • Het kiezen en aanpassen van thema’s voor je project
  • Wat daisyUI’s thema’s precies zijn en waarom het wisselen zo eenvoudig is

We gaan dieper in op deze onderwerpen.