Carbon — это комплексная библиотека UI-компонентов, разработанная для корпоративных приложений на JavaScript и SvelteKit. Одной из ключевых особенностей Carbon является поддержка доступности (Accessibility, a11y), что обеспечивает корректное взаимодействие пользователей с ограниченными возможностями. Все компоненты проектируются с учётом ARIA-атрибутов, клавиатурной навигации и семантической разметки.
ARIA (Accessible Rich Internet Applications) — стандарт, определяющий дополнительные атрибуты для улучшения доступности динамических компонентов. В Carbon каждый компонент имеет встроенную поддержку ARIA:
role="button" для кнопок или
role="dialog" для модальных окон.Пример использования в Carbon Button:
<Button aria-label="Сохранить изменения" on:click={saveData}>
Сохранить
</Button>
Все интерактивные компоненты Carbon полностью управляются с клавиатуры. Это включает:
Пример для Select-компонента:
<Select bind:value={selectedOption} label="Выберите опцию">
<Option value="1">Опция 1</Option>
<Option value="2">Опция 2</Option>
</Select>
В этом компоненте Carbon автоматически обеспечивает поддержку стрелочной навигации и открытия/закрытия списка клавишами Enter/Space.
Модальные окна (Modal) и диалоги (Dialog)
требуют особого внимания к доступности:
aria-modal="true", role="dialog",
aria-labelledby и aria-describedby.Пример модального окна:
<Modal open bind:this={modalRef} aria-labelledby="modal-title" aria-describedby="modal-desc">
<h2 id="modal-title">Подтверждение удаления</h2>
<p id="modal-desc">Вы уверены, что хотите удалить этот элемент?</p>
<Button on:click={confirmDelete}>Удалить</Button>
<Button on:click={closeModal}>Отмена</Button>
</Modal>
Carbon соблюдает стандарты WCAG 2.1 по контрастности. Ключевые аспекты:
Таблицы (DataTable) Carbon включают:
<DataTable headers={headers} rows={rows} />
Формы (TextInput, Dropdown,
Checkbox) в Carbon интегрируют:
for и id.aria-describedby.Пример поля ввода:
<TextInput
id="username"
labelText="Имя пользователя"
helperText="Введите имя пользователя"
invalid={hasError}
invalidText="Имя пользователя обязательно"
/>
Компоненты уведомлений (Notification,
Toast) используют ARIA live regions
(aria-live="polite" или
aria-live="assertive"), чтобы экранные читалки
автоматически озвучивали появление новых сообщений без необходимости
фокусироваться на них.
При создании своих компонентов поверх Carbon важно:
Эти принципы позволяют строить доступные интерфейсы, соответствующие корпоративным стандартам, без потери функциональности и эстетики.