daisyui

Semantic component classes and built-in themes for Tailwind CSS, so buttons, forms, and modals no longer need a wall of utility classes.

Library
npm
v5.7.28
42,306stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
90/100Excellent
Development Activity96
Maintenance100
Community64
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
81/100Excellent
Architecture82
Code Quality78
Innovation72
Learning Curve90

daisyUI is a Tailwind CSS plugin that adds a layer of semantic, named component classes — btn, card, modal, navbar, and dozens more — on top of Tailwind’s utility engine. Instead of composing a component from a long string of utility classes every time it’s used, a developer writes one or two class names and gets a fully styled, accessible-by-default element, while still being able to override or extend it with regular Tailwind utilities.

The project ships as a monorepo: the daisyui npm package (pure CSS plus a small JS plugin entry point) is built from component source files under src/components, src/base, and src/themes, and a separate SvelteKit-based docs site consumes the same source to render live examples. A Node build script (build.js) compiles themes, generates chunked CSS output, and produces the color-utility files that ship in the published package.

Theming is a first-class feature rather than an afterthought: daisyUI defines 35+ named themes (light, dark, cupcake, synthwave, and more) using OKLCH color tokens, selectable via a data-theme attribute, a CSS class, or the user’s OS color-scheme preference, with zero JavaScript required at runtime. Components, themes, and utilities can each be included or excluded via plugin options, keeping unused CSS out of the final bundle.

What You Get

  • A library of 60+ prebuilt component classes (buttons, cards, modals, navbars, drawers, tables, forms, and more) that compile directly into a Tailwind CSS build.
  • 35+ ready-made color themes built on the OKLCH color space, switchable at runtime via a data-theme attribute or CSS class with no JavaScript.
  • A configurable Tailwind plugin API (include/exclude/prefix options) so unused components, utilities, or themes can be stripped from the final CSS bundle.
  • Zero-JavaScript component behavior — interactive states (checkboxes, radios, :has() selectors) drive things like drawers and modals using pure CSS.
  • Framework-agnostic output — plain CSS classes that work identically in React, Vue, Svelte, Next.js, Nuxt, Astro, Laravel Blade, or static HTML.

Common Use Cases

  • Bootstrapping a new product’s UI quickly without hand-rolling a design system or pulling in a heavy component framework.
  • Adding consistent, themeable styling to a Tailwind CSS project across multiple frontend frameworks in a multi-app or micro-frontend setup.
  • Building admin dashboards, marketing sites, and internal tools where a small team needs a complete component set without maintaining custom CSS.
  • Providing a base design system for design-conscious static sites (Astro, Eleventy) or server-rendered apps (Laravel, Rails) that already use Tailwind.

Under The Hood

Architecture The package is generated, not hand-typed, from a source tree of small single-responsibility CSS files under src/components, src/base, src/themes, and src/utilities; build.js orchestrates a pipeline of pure functions in functions/ (generateThemes, generateThemeFiles, generateColorRules, generateImports, generateChunks, packCss, minify) that compile theme tokens, extract per-component classes, and emit the final daisyui.css/chunks.css/imports.js artifacts consumed by index.js. The runtime entry point itself is a thin Tailwind plugin (functions/plugin.js, pluginOptionsHandler.js) that iterates over generated base/components/utilities maps and calls Tailwind’s addBase/addComponents/addUtilities hooks, applying an include/exclude filter and an optional class prefix — a clear separation between the offline build-time generation layer and the small runtime layer that plugs into a consumer’s Tailwind config.

Tech Stack Built and tested with Bun (bun run, bun:test) rather than Node’s own toolchain, targeting Tailwind CSS 4.x as a peer integration (@tailwindcss/cli, @tailwindcss/vite as devDependencies) with lightningcss and postcss/postcss-js/postcss-selector-parser used for CSS transformation during the build. The published package has no runtime dependencies of its own — it ships pure CSS plus a small ESM plugin file — while the sibling packages/docs app is a SvelteKit site that imports the same source to render live examples, and packages/playground supports interactive manual testing.

Code Quality Tests are colocated with the build functions as *.test.js files (34 test files across functions/) using Bun’s built-in test runner, each function tested in isolation with temp-directory fixtures (see createTempDirTracker/runInCwd helpers) rather than mocks — a lightweight but genuine unit-test layer over the CSS-generation pipeline. Linting runs via oxlint, formatting via Prettier with a Tailwind-class-sorting plugin, and GitHub Actions workflows run tests and lint on every change plus an automated release pipeline (release-new-version.yml); TypeScript typings are hand-maintained for the small number of exposed JS APIs (themeOrder.d.ts, variables.d.ts) rather than the whole codebase, consistent with a mostly-CSS package.

What Makes It Unique daisyUI’s distinguishing choice is compiling semantic component classes as a genuine Tailwind plugin rather than shipping a separate compiled stylesheet or JS component library — consumers keep Tailwind’s utility-class override model and @apply-based customization while getting named classes for common UI patterns, and its theme system is unusually deep for a CSS-only library, supporting dozens of complete themes plus automatic dark-mode selection driven entirely by CSS :has()/attribute selectors with no client-side JavaScript.

Used by 12 apps in this directory

TypeScript
63%
MIT

ALTCHA

Security

2,737

A self-hosted, privacy-first CAPTCHA alternative that uses memory-hard proof-of-work to stop bots without cookies, tracking, or third-party APIs.

View details
72
Repo Health
79
Technical
75
Dependency
Built with
TypeScript63%
Svelte29%
Updated yesterday
PHP
82%
MIT

Databasement

Databases · Devops · Developer Tools

2,342

Self-hosted database backup manager with a web UI for scheduling, encrypting, and restoring MySQL, PostgreSQL, MongoDB, SQL Server, SQLite, Firebird, and Redis to S3, SFTP, Samba, or local storage.

View details
82
Repo Health
77
Technical
69
Dependency
Built with
PHP82%
Blade17%
Updated yesterday
Ruby
40%
AGPL 3.0

DocuSeal

Digital Signiture

18,446

Open source document signing platform with WYSIWYG PDF builder, multi-party workflows, REST API, and full self-hosting via Docker.

View details
87
Repo Health
80
Technical
68
Dependency
Built with
Ruby40%
Vue28%
HTML20%
Updated 1 weeks ago
TypeScript
62%
Unlicense

Invio

Invoicing Finance

1,174

Self-hosted invoicing without the bloat

View details
71
Repo Health
71
Technical
80
Dependency
Built with
TypeScript62%
Svelte28%
Updated 2 weeks ago
TypeScript
93%
AGPL 3.0

Linkwarden

Bookmarks Archiving · Knowledge Management

19,702

Self-hosted collaborative bookmark manager that captures full-page archives, enables annotation, and keeps your knowledge accessible forever.

View details
89
Repo Health
72
Technical
66
Dependency
Built with
TypeScript93%
Updated 2 days ago
Go
61%
MIT

Obot

AI Agents

985

An open-source MCP platform for organizations — host MCP servers, run MCP registries, monitor usage, and build agents and chatbots on top of the Model Context Protocol from one self-hosted deployment.

View details
85
Repo Health
70
Technical
70
Dependency
Built with
Go61%
Svelte29%
Updated 3 days ago
TypeScript
96%
MIT

open-seo

Marketing · Developer Tools

17,505

Pay-as-you-go open source SEO platform with MCP integration — keyword research, rank tracking, backlinks, site audits, and AI brand visibility in one self-hosted tool.

View details
83
Repo Health
79
Technical
77
Dependency
Built with
TypeScript96%
Updated 4 days ago
TypeScript
55%
Other

OpenReplay

Analytics

12,751

Self-hosted session replay and product analytics suite that lets you see exactly what users do on your web app — without sending data to third parties.

View details
90
Repo Health
77
Technical
66
Dependency
Built with
TypeScript55%
Go12%
Python10%
Updated 3 days ago
JavaScript
92%
Other

OpenSign

Digital Signiture

6,965

Self-host a full-featured DocuSign alternative with unlimited e-signatures, multi-signer workflows, and cryptographic PDF signing.

View details
82
Repo Health
61
Technical
70
Dependency
Built with
JavaScript92%
Updated 2 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search