Урок 15. Организация кода: @apply, @utility, cn, cva

📁 Раздел: Организация кода ⏱️ Время изучения: ~55 мин 🎯 Сложность: Средняя

⚡ Кратко

Повторяющийся набор классов выносят не в CSS-класс через @apply, а в компонент. Инструменты: clsx — собрать классы по условию, tailwind-merge — разрешить конфликты, cva — описать варианты и размеры. Своя утилита (не компонент) объявляется директивой @utility.

О чём этот урок

Это ответ на главную претензию к утилитарному подходу: «разметка превращается в кашу». Разберём, когда пора извлекать компонент, почему @apply — обычно не то, что нужно, и как устроена связка cn() + cva, на которой построен shadcn/ui. После этого урока вы будете готовы к разбору настоящих компонентов из второй половины курса.

Структура урока

Практика

  • Найдите в своём коде набор классов, повторяющийся трижды.
  • Вынесите его в компонент с вариантами через cva.
  • Убедитесь, что переданный снаружи className побеждает базовый.

Навигация