Headless UI

Бесплатно
Открытый исходный код

Сайт: headlessui.com

Headless UI — это набор полностью неоформленных, доступных пользовательских интерфейсных компонентов для веб‑разработки, предназначенный для использования в качестве логической основы при создании собственных стилизованных интерфейсов. Компоненты предоставляют поведение и управление состоянием (например, открытие/закрытие, фокусировка, навигация с клавиатуры и управление ролями ARIA), но не навязывают внешний вид, что позволяет разработчикам применять любую систему стилей, включая утилиты Tailwind CSS и другие подходы к оформлению.

Проект ориентирован на доступность и предсказуемость поведения: компоненты реализуют рекомендации по взаимодействию с клавиатурой и атрибуты ARIA, упрощают управление фокусом и поддерживают композицию в рамках современных фреймворков. Headless UI обычно используется совместно с библиотеками компонентов или стилевыми утилитами, выступая уровнем логики и взаимодействия, тогда как визуальная часть создаётся отдельно. История и точные авторы могут варьироваться в зависимости от конкретной реализации; при отсутствии официальной единой спецификации описанные принципы сформированы на основании общедоступных описаний и типичных практик.

  • Отделение логики от презентации: компоненты обеспечивают поведение без предопределённого оформления, позволяя применять любые CSS‑решения.
  • Доступность (a11y): встроенная поддержка ARIA, управление фокусом и клавиатурные паттерны для взаимодействия с ассистивными технологиями.
  • Композиция и контроль состояния: гибкие API для объединения компонентов, управление открытием/закрытием, активными элементами и синхронизация состояния.
  • Интеграция с фреймворками: адаптирована для работы в современных JavaScript‑фреймворках и библиотечных экосистемах, где логика компонента должна быть повторно используема.
  • Клавиатурная навигация: встроенные обработчики клавиш для перемещения между элементами, закрытия модальных окон и подтверждения действий.
  • Модифицируемость: возможность расширения и переопределения поведения через хуки, колбэки и свойства компонентов.
  • Лёгкая интеграция со стилями: удобство применения утилит‑классов и систем, таких как Tailwind CSS, без конфликта с логикой.
  • Управление порталом и слоями: механизмы для рендеринга всплывающих элементов вне основного DOM‑потока и контроля порядка наложения.
  • Тестируемость: выделение логики упрощает написание юнит‑ и интеграционных тестов без зависимости от визуальной части.
  • Набор типичных компонентов: базовые элементы интерфейса, такие как модальные окна, дропдауны, переключатели, аккордеоны и списки автодополнения, реализуемые как headless‑компоненты.
Подробнее