Group и Label являются базовыми строительными блоками в библиотеке Radix UI, предназначенными для организации интерфейсных элементов и обеспечения доступности компонентов. Их правильное использование повышает читаемость интерфейса и улучшает взаимодействие для пользователей с особыми потребностями.
Group служит контейнером для объединения нескольких взаимосвязанных элементов управления, таких как радио-кнопки, чекбоксы или переключатели. Главная цель — семантически связать элементы и упростить навигацию для технологий доступности.
Group логически объединены, что позволяет скринридерам
правильно озвучивать их как единую группу.RadioGroup,
Group упрощает обработку выбранного значения.import * as RadioGroup from '@radix-ui/react-radio-group';
<RadioGroup.Root defaultValue="option1" aria-label="Выберите вариант">
<RadioGroup.Item value="option1" id="r1">
<RadioGroup.Indicator />
</RadioGroup.Item>
<RadioGroup.Item value="option2" id="r2">
<RadioGroup.Indicator />
</RadioGroup.Item>
</RadioGroup.Root>
Пояснения:
Root — корневой контейнер группы, в который помещаются
все элементы.Item — отдельный элемент управления внутри группы.Indicator визуально показывает выбранный элемент.aria-label обеспечивает доступность для
скринридеров.aria-label,
aria-labelledby) для описания группы.Group.Label обеспечивает текстовую подпись для интерактивного элемента. В Radix UI этот компонент интегрируется с другими контролами, чтобы улучшить доступность и UX.
htmlFor или внутренними связями Radix UI, клик по
Label активирует соответствующий контрол.Label с элементом формы, что повышает читаемость
интерфейса.import * as Label from '@radix-ui/react-label';
import * as Switch from '@radix-ui/react-switch';
<Label.Root htmlFor="airplane-mode">Режим самолета</Label.Root>
<Switch.Root id="airplane-mode">
<Switch.Thumb />
</Switch.Root>
Пояснения:
Root — корневой элемент компонента
Label.htmlFor связывает подпись с идентификатором
контрола.Switch.Label для всех интерактивных элементов,
чтобы обеспечить доступность.Label.Checkbox,
Switch или RadioGroup, для корректной работы
индикаторов и состояния.Объединение Group и Label позволяет
создавать доступные, структурированные интерфейсы. Чаще всего
Label используется для описания всей группы элементов, а
отдельные подписи могут присутствовать у каждого элемента внутри.
import * as RadioGroup from '@radix-ui/react-radio-group';
import * as Label from '@radix-ui/react-label';
<Label.Root>Выберите цвет:</Label.Root>
<RadioGroup.Root defaultValue="red" aria-label="Цвета">
<RadioGroup.Item value="red" id="red">
<RadioGroup.Indicator />
<Label.Root htmlFor="red">Красный</Label.Root>
</RadioGroup.Item>
<RadioGroup.Item value="green" id="green">
<RadioGroup.Indicator />
<Label.Root htmlFor="green">Зелёный</Label.Root>
</RadioGroup.Item>
</RadioGroup.Root>
Пояснения:
Выберите цвет:).Label,
связывающий визуальное описание с контролом.Использование Group и Label в связке
обеспечивает:
Эти компоненты создают фундамент для построения сложных UI-элементов с минимальными усилиями и максимальной корректностью с точки зрения доступности.