daisyUI-thema: 35 thema’s om ‘kleurproblemen’ te verhelpen
\ndaisyUI’s thema’s gaan verder dan alleen “donkere modus ondersteunen”.\n35 vooraf ontworpen kleurenpaletten (thema’s), die een productniveau kleurcombinatie bieden, kunnen overal in de app consistent worden toegepast.
\n
\n\nDeze gids gaat ervan uit dat de installatie al voltooid is.\nAls je nog moet installeren, bekijk dan eerst de officiële handleiding:\nhttps://daisyui.com/docs/install/
\n
\n
Kernbegrip van thema’s: “Kleur niet rechtstreeks specificeren”
\nDit is het meest verwarrende punt voor beginners.
\n| Foute methode | \nResultaat | \n
|---|---|
Direct kleuren gebruiken met Tailwind, zoals bg-white, text-slate-900, bg-blue-600 | \nDe kleur blijft vast, ook als het thema verandert. | \n
Om een thema te gebruiken, harde codeer geen kleuren; gebruik in plaats daarvan de tokens (kleurnamen op basis van betekenis) die daisyUI levert.
\n❌ Fout voorbeeld: hardcoded kleuren die het thema negeren
\n<div class="bg-white text-slate-900 p-6 rounded-2xl">\n <button class="bg-blue-600 text-white px-4 py-2 rounded-lg">Save</button>\n</div>\n\n✅ Correct voorbeeld: gebruik van daisyUI tokens die zich aanpassen aan het thema
\n<div class="bg-base-100 text-base-content p-6 rounded-box">\n <button class="btn btn-primary">Save</button>\n</div>\n\nHet belangrijkste is niet wat kleur, maar welke rol het speelt.
\n- \n
bg-base-100: basis achtergrond van scherm/kaart \ntext-base-content: basis tekstkleur \nbtn-primary: primaire actie (CTA) \n
Het thema past kleuren aan op basis van deze rollen.
\n\n
Wat moet je dus altijd gebruiken?
\nOm daisyUI-thema’s correct te gebruiken, kun je één van de volgende (of beide) methoden als gewoonte hanteren.
\n| Gebruik | \nVoorbeeld | \n
|---|---|
| daisyUI componentklassen | \nbtn, btn-primary, alert, badge, card, navbar, input … | \n
| daisyUI kleurtokenklassen (op basis van betekenis) | \nBasis achtergrond/tekst: bg-base-100, bg-base-200, bg-base-300, text-base-content Accentkleur: bg-primary, text-primary, bg-secondary, bg-accent, bg-neutral Statuskleur: bg-info, bg-success, bg-warning, bg-error (+ bijbehorende *-content) | \n
Bijvoorbeeld, een “waarschuwingsbanner” maakt geen kleur hardcoded, maar gebruikt een rol.
\n<div class="bg-warning text-warning-content p-4 rounded-box">\n Betalingsinformatie ontbreekt.\n</div>\n\n\n
Thema toepassen: één data-theme voor de hele app
\nThema toepassen is verrassend eenvoudig.
\n<html data-theme="cupcake">\n <body>\n <div class="bg-base-100 text-base-content min-h-screen p-10">\n <button class="btn btn-primary">Primary</button>\n </div>\n </body>\n</html>\n\nDeze ene regel (data-theme) verandert de volledige set kleurvariabelen van de app.
\n
Thema is niet alleen “voor de hele app”: sectie‑gewijs toepasbaar
\nIn productontwikkeling komen vaak de volgende wensen voor.
\n- \n
- “De hoofdpagina is netjes, maar de evenementbanner moet opvallender” \n
- “Admin‑pagina is donker, gebruikerspagina licht” \n
daisyUI laat je een data-theme op een specifiek DOM-element plaatsen, waardoor alleen die sectie het thema verandert. Er is geen beperking op geneste thema’s.
<html data-theme="dark">\n <body>\n <main class="p-10">\n <h1 class="text-2xl font-bold">Alles is donker</h1>\n\n <section data-theme="light" class="mt-8 p-6 rounded-box bg-base-100 text-base-content">\n Deze sectie is altijd licht\n <span data-theme="retro" class="ml-2">Deze span is retro</span>\n </section>\n </main>\n </body>\n</html>\n\nDeze functionaliteit wordt in de praktijk vaak vaker gebruikt dan een “thema‑toggle”.
\n\n
Thema beheer: alleen de benodigde thema’s inschakelen
\nNa installatie beheer je de thema’s via het @plugin "daisyui" { ... } blok in je CSS.
@import "tailwindcss";\n\n@plugin "daisyui" {\n themes: light --default, dark --prefersdark, cupcake;\n}\n\n- \n
themesis een komma‑gescheiden lijst. \n--defaultis het standaardthema. \n--prefersdarkis het standaardthema wanneer het besturingssysteem donkere modus prefereert (prefers-color-scheme: dark). \n
Als je eerst alles wilt inschakelen, kun je ook:
\n@plugin "daisyui" {\n themes: all;\n}\n\nIn een product is het echter meestal handiger om slechts de noodzakelijke thema’s in te schakelen.
\n\n
Unieke waarde: ‘thema‑selectie’ als productstrategie, niet alleen design
\nHet is een gemiste kans om de 35 thema’s alleen als “mooie skins” te zien. Ik gebruik ze als volgt.
\n| Fase | \nGebruik | \n
|---|---|
| MVP‑fase | \nMeerdere thema’s als “merk‑kandidaten” tonen en snel testen op UI/inhoud | \n
| Operationele fase | \nOmdat kleuren niet hardcoded zijn, kan een merk‑update of seizoens‑event simpelweg door een thema‑wissel worden afgehandeld | \n
| Team‑samenwerking | \nZonder designer blijft consistentie behouden door alleen de rol‑gebaseerde tokens te gebruiken | \n
Kortom, één ding is cruciaal.
\n\n\nDoor het gewoonte van “kleur hardcoderen” te stoppen, wordt het thema een krachtig instrument om de hele app in één keer te upgraden.
\n
\n
Wanneer heb je een aangepast thema nodig?
\nKortom: meestal volstaan de 35 standaardthema’s. Ze zijn al zeer verfijnd, dus een “kies een standaardthema + een klein beetje aanpassen” is vaak genoeg.
\nDesondanks zijn er situaties waarin je een custom (override) overweegt.
\n- \n
- Duidelijke merk‑kleur: Als je merk of dienst een vaste kleur heeft, kun je een van de 35 thema’s kiezen en vervolgens de
primary,secondarykleuren aanpassen om die merk‑kleur te integreren. \n
In dat geval is het efficiënter om slechts primary en secondary te tweaken dan een volledig nieuw thema te maken. De kerninteracties (knoppen, links, CTA) worden in de merk‑kleur weergegeven, terwijl de rest van de toon (achtergrond, tekst, status) de balans van het standaardthema behoudt.
Hoe je primary en secondary daadwerkelijk aanpast (het overschrijven van een standaardthema) bespreek ik in een volgende post, inclusief code.
\n
Vooruitblik op de volgende aflevering
\nIn het volgende artikel behandel ik:
\n- \n
- “Thema behouden en alleen componenten licht aanpassen” als praktijkpatroon \n
- Manieren om een thema te customizen \n
- Een cheat‑sheet van kleurvariabelen en klassen die daisyUI ondersteunt \n
Tot de volgende keer!
', '/media/editor_temp/6/80ae2ebd-04c4-4f84-b0d2-15666a888080.png')