Separator в Radix UI используется для визуального и семантического разделения элементов интерфейса. Он обеспечивает доступность и консистентность в интерфейсах, сохраняя при этом контроль над стилем и поведением.
orientation — определяет направление
линии. Принимает значения "horizontal" (по умолчанию) и
"vertical".asChild — позволяет использовать
собственный компонент вместо стандартного div, сохраняя
поведение Separator.className — добавление кастомных
CSS-классов для стилизации.decorative — булево свойство,
указывающее, что Separator носит чисто декоративный характер и не
требует озвучивания скринридерами.import * as Separator from '@radix-ui/react-separator';
<Separator.Root className="my-separator" orientation="horizontal" />
<Separator.Root orientation="vertical" className="mx-2 h-6 bg-gray-300" />
Radix UI автоматически добавляет правильные role и
aria-orientation атрибуты. Для декоративных линий можно
задать decorative={true}, чтобы скринридеры игнорировали
их.
background-color и height или
width.Toggle Group позволяет создавать группы кнопок, где можно выбирать один или несколько вариантов, обеспечивая контроль состояния и доступность.
ToggleGroup.Root — контейнер
группы. Свойства:
type — "single" (выбор
одного) или "multiple" (выбор нескольких).value /
defaultValue — текущее выбранное значение
или массив значений.onValueChange — callback при изменении
состояния.ToggleGroup.Item — отдельная кнопка
внутри группы. Свойства:
value — уникальный идентификатор
элемента.disabled — блокировка выбора.aria-label — описание для
доступности.Выбор одного значения:
import * as ToggleGroup from '@radix-ui/react-toggle-group';
<ToggleGroup.Root type="single" value={selected} onValueCha nge={setSelected}>
<ToggleGroup.Item value="left" className="btn">Левый</ToggleGroup.Item>
<ToggleGroup.Item value="center" className="btn">Центр</ToggleGroup.Item>
<ToggleGroup.Item value="right" className="btn">Правый</ToggleGroup.Item>
</ToggleGroup.Root>
Выбор нескольких значений:
<ToggleGroup.Root type="multiple" value={selectedItems} onValueCha nge={setSelectedItems}>
<ToggleGroup.Item value="bold" className="btn">Жирный</ToggleGroup.Item>
<ToggleGroup.Item value="italic" className="btn">Курсив</ToggleGroup.Item>
<ToggleGroup.Item value="underline" className="btn">Подчёркнутый</ToggleGroup.Item>
</ToggleGroup.Root>
Controlled vs Uncontrolled: value и
onValueChange позволяют полностью контролировать состояние
из родительского компонента. defaultValue подходит для
локального состояния без внешнего контроля.
Тип single: гарантирует, что всегда выбран ровно
один элемент. При необходимости можно разрешить отсутствие выбора,
передав allowEmpty={true}.
Тип multiple: позволяет выбирать несколько
элементов одновременно, возвращая массив выбранных
value.
[data-state="on"] и
[data-state="off"].aria-pressed атрибуты, обеспечивая поддержку
скринридеров.single управляет поведением
клавиш ArrowLeft и ArrowRight для навигации
между элементами.Radix UI Separator и Toggle Group обеспечивают простое, но гибкое решение для структурирования интерфейсов и организации интерактивных элементов, сочетая высокую доступность, контроль состояния и легкую кастомизацию через CSS и JSX.