daisyUI — библиотека готовых UI-компонентов, которая работает как плагин для Tailwind CSS. Вместо длинных цепочек утилит вроде flex items-center justify-center rounded-lg bg-blue-500 px-4 py-2 text-white hover:bg-blue-600 — один семантический класс: btn btn-primary. Код короче в 5 раз, результат тот же.

Плагин добавляет 50+ компонентов: кнопки, карточки, модальные окна, навбары, таблицы, аккордеоны, тосты, календари. Все они построены на чистом CSS, без JavaScript-зависимостей. Это значит, что daisyUI работает с любым фреймворком — Astro, React, Vue, Svelte, plain HTML.

35 встроенных тем переключаются одним атрибутом data-theme. Можно использовать готовые темы вроде light, dark, nord, cyberpunk, dracula — или создать свою через CSS-переменные в формате oklch. Темы вкладываются: одна тема на весь сайт, другая на отдельную секцию.

Версия daisyUI 5.x совместима с Tailwind CSS 4. Лицензия MIT, исходный код на GitHub. Плагин не мешает использовать обычные утилиты Tailwind — можно комбинировать btn btn-primary с mt-4 shadow-lg без конфликтов.

Что это

daisyUI — это CSS-плагин для Tailwind CSS. Устанавливается через npm и подключается одной строкой @plugin “daisyui” в CSS-файле. После этого классы вроде btn, card, modal, alert становятся доступны в HTML.

Ключевая идея: семантические классы вместо утилитарных. Tailwind даёт низкоуровневые инструменты (padding, color, radius), daisyUI — готовые компоненты с разумными дефолтами. Кнопка — это btn, а не десять утилит. Карточка — card, а не стек из восьми классов.

Плагин не заменяет Tailwind, а расширяет. Утилиты Tailwind остаются доступны, daisyUI-классы работают поверх. Если нужно переопределить отступ или цвет — добавляете утилиту рядом.

Зачем нужно

Обычная кнопка на чистом Tailwind выглядит так:

<button class="flex items-center justify-center rounded-lg bg-blue-500 px-4 py-2 text-white hover:bg-blue-600">Кнопка</button>

Та же кнопка с daisyUI:

<button class="btn btn-primary">Кнопка</button>

Результат идентичный, но код в 5 раз короче. При этом daisyUI не мешает использовать обычные утилиты Tailwind — можно комбинировать btn btn-primary с mt-4 shadow-lg без конфликтов.

Как устроено

Основные возможности

ВозможностьЧто даёт
50+ компонентовButton, Card, Modal, Drawer, Navbar, Table, Accordion, Toast, Calendar и др.
35 встроенных темlight, dark, cupcake, cyberpunk, retro, nord, dracula — переключаются одним атрибутом
Семантические цветаprimary, secondary, accent, success, warning, error — адаптируются под тему
Кастомные темыСоздаёте свою тему через CSS-переменные — цвета, радиусы, размеры
Без JS-зависимостейЧистый CSS — работает с Astro, React, Vue, Svelte, plain HTML

Установка

Шаг 1. Установите пакет:

npm i -D daisyui@latest

Шаг 2. Подключите в app.css:

@import "tailwindcss";
@plugin "daisyui";

Готово. Все классы daisyUI доступны в HTML.

Система тем

Тема в daisyUI — это набор CSS-переменных, который определяет цвета интерфейса: фон, текст, primary, secondary, accent, а также радиусы и размеры. Тема применяется через атрибут data-theme на любом элементе.

Включение тем

По умолчанию активны light и dark. Чтобы добавить другие темы, укажите их в конфигурации плагина:

@plugin "daisyui" {
  themes: light --default, dark --prefersdark, nord, cyberpunk;
}

Флаг —default делает тему_default по умолчанию. Флаг —prefersdark — темой для тёмного режима (prefers-color-scheme: dark). Можно включить все 35 тем сразу: themes: all. Можно отключить все темы: themes: false.

Переключение тем

Тема задаётся атрибутом data-theme на любом элементе:

<html data-theme="nord">

Темы вложимы — можно применить к отдельной секции:

<html data-theme="light">
  <div data-theme="dark">
    <!-- Этот блок всегда в тёмной теме -->
  </div>
</html>

Кастомная тема

Своя тема создаётся через @plugin “daisyui/theme” с CSS-переменными в формате oklch:

@plugin "daisyui/theme" {
  name: "mytheme";
  default: true;
  color-scheme: light;
  --color-base-100: oklch(98% 0.02 240);
  --color-primary: oklch(55% 0.3 240);
  --color-secondary: oklch(70% 0.25 200);
  --radius-selector: 1rem;
  --radius-field: 0.25rem;
  --border: 1px;
}

Доступные переменные: цвета (base-100, base-200, base-300, base-content, primary, primary-content, secondary, secondary-content, accent, accent-content, neutral, neutral-content, info, info-content, success, success-content, warning, warning-content, error, error-content), радиусы (radius-selector, radius-field, radius-box), размеры (size-selector, size-field), толщина бордера (border), эффекты (depth, noise).

Компоненты по категориям

КатегорияКомпоненты
ActionsButton, Dropdown, FAB, Modal, Swap, Theme Controller
Data displayAccordion, Avatar, Badge, Card, Carousel, Chat bubble, Countdown, Table, Timeline
NavigationBreadcrumbs, Dock, Link, Menu, Navbar, Pagination, Steps, Tab
FeedbackAlert, Loading, Progress, Skeleton, Toast, Tooltip
Data inputCalendar, Checkbox, File Input, Radio, Range, Rating, Select, Input, Toggle
LayoutDivider, Drawer, Footer, Hero, Indicator, Join, Mask, Stack

Blueprint MCP — AI-генерация кода

Blueprint — официальный MCP-сервер от daisyUI, который даёт AI-моделям точный контекст для генерации правильного daisyUI-кода. Устраняет проблему устаревшего синтаксиса и галлюцинаций.

Что умеет:

  • Сниппеты компонентов и лейаутов по запросу
  • Дизайн-спецификации каждого компонента
  • Конвертация Figma в daisyUI-код
  • Генерация темы из скриншота
  • Screenshot в daisyUI-код

Цена: подписка или lifetime — $600. Для большинства задач достаточно бесплатного ядра daisyUI.

Когда использовать

  • Контентные сайты — навбар, карточки статей, футер собираются за минуты
  • Прототипы — быстрая сборка интерфейса для демо
  • Внутренние инструменты — дашборды, админки, формы
  • Переключение тем — встроенная поддержка light/dark и кастомных тем

Сравнение с альтернативами

КритерийdaisyUITailwind UIshadcn/ui
ТипCSS-плагин для TailwindКоллекция шаблоновКопируемые React-компоненты
ЦенаБесплатно (MIT)$299+Бесплатно
JS-зависимостиНетМинимальныеReact, Radix UI
ФреймворкЛюбойЛюбойТолько React
Темизация35 тем + кастомныеНет встроеннойCSS-переменные
Компоненты50+500+ вариаций40+

Для статических сайтов на Astro daisyUI — оптимальный выбор: нет JS-зависимостей, работает с любым фреймворком, быстрая интеграция с Tailwind, встроенная поддержка тем.

Пример

Кнопки

<button class="btn">Default</button>
<button class="btn btn-primary">Primary</button>
<button class="btn btn-secondary btn-sm">Small</button>
<button class="btn btn-outline btn-error">Outline Error</button>

Карточка

<div class="card w-96 bg-base-100 card-border">
  <div class="card-body">
    <h2 class="card-title">Заголовок</h2>
    <p>Текст карточки</p>
    <div class="card-actions justify-end">
      <button class="btn btn-primary">Действие</button>
    </div>
  </div>
</div>

Alert

<div class="alert alert-warning">
  <span>Внимание! Проверьте настройки.</span>
</div>

Ограничения

Ограничения

Только Tailwind CSS

— daisyUI работает как плагин Tailwind CSS 4 — без Tailwind подключить нельзя

Дизайн по умолчанию

— 35 тем дают быстрый старт, но для уникального дизайна придётся кастомизировать через CSS-переменные

Blueprint MCP

— платный — AI-генерация кода через Blueprint стоит $600 за lifetime-лицензию, бесплатное ядро daisyUI не включает MCP

Нет JS-интерактивности

— компоненты — чистый CSS, для интерактивных модалей и dropdown нужен собственный JavaScript или фреймворк

Антипаттерны

Антипаттерны

Не использовать без Tailwind

— daisyUI — плагин, а не отдельная библиотека; без Tailwind CSS классы не работают

Не смешивать классы двух библиотек

— если используете daisyUI, не добавляйте Material UI или Bootstrap — конфликтуют стили и семантика

Не переопределять через !important

— для кастомизации используйте CSS-переменные темы, а не !important в утилитах

Не использовать все 35 тем сразу

— каждая тема увеличивает размер CSS-бандла; включайте только нужные через themes в @plugin

Чеклист

Чеклист

Tailwind CSS установлен

— проверьте, что @import “tailwindcss” уже в CSS-файле

daisyUI подключена

— npm i -D daisyui@latest и @plugin “daisyui” в CSS

Темы выбраны

— указать нужные темы в @plugin config, не оставлять дефолтные light+dark если нужны другие

data-theme установлен

— атрибут data-theme на html или контейнере задаёт активную тему

Классы проверены — btn, card, alert, modal и др.

доступны в HTML после подключения плагина

Ссылки

Ссылки