Icon-only компоненты представляют собой специализированные элементы пользовательского интерфейса, которые содержат только иконку без текста. Они широко используются для компактного размещения действий, навигации или статуса в приложениях, сохраняя визуальную лёгкость и интуитивность интерфейса.
click, hover и
focus.aria-label или title для корректного
озвучивания экранными читалками.В Svelte компонент иконки подключается через пакет
carbon-components-svelte. Простейший пример:
<script>
import { Button, Add16 } from 'carbon-components-svelte';
</script>
<Button kind="ghost" hasIcon={true} icon={Add16} ariaLabel="Добавить элемент" />
Пояснения к коду:
kind="ghost" — определяет визуальный стиль кнопки. Для
icon-only часто используются стили ghost или
secondary.hasIcon={true} — указывает, что кнопка содержит только
иконку.icon={Add16} — передаётся сам компонент иконки.ariaLabel="Добавить элемент" — текстовая подсказка для
вспомогательных технологий.Carbon Components Svelte поддерживает несколько стандартных размеров иконок:
Размер задаётся компонентом иконки, например Add16 или
Add20. Подбор подходящего размера влияет на читаемость и
баланс интерфейса.
Icon-only компоненты имеют несколько состояний:
Пример реализации состояний:
<Button kind="ghost" hasIcon={true} icon={Add16} ariaLabel="Добавить элемент" disabled={true} />
Для hover и focus часто применяются CSS-переменные Carbon, чтобы сохранять консистентность стиля:
:global(.bx--btn--ghost:hover) {
background-color: var(--cds-hover-ui);
}
Icon-only компоненты идеально интегрируются в Toolbar, DataTable, Modal и Pagination. Например, кнопки для сортировки столбцов или закрытия модальных окон часто оформляются именно как icon-only.
Пример в DataTable:
<DataTable>
<TableHead>
<TableRow>
<TableHeader>
Имя
<Button kind="ghost" hasIcon={true} icon={ChevronDown16} ariaLabel="Сортировка по имени" />
</TableHeader>
</TableRow>
</TableHead>
</DataTable>
Carbon Components Svelte позволяет менять цвета, размеры иконок и кнопок через CSS-переменные и пропсы:
<Button
kind="ghost"
hasIcon={true}
icon={Add16}
ariaLabel="Добавить элемент"
style="--cds-button-ghost-hover-bg: #e0f0ff;"
/>
<Button kind="ghost" hasIcon={true} icon={Close16} ariaLabel="Закрыть окно" />
<Button kind="primary" hasIcon={true} icon={Add20} ariaLabel="Добавить элемент" />
<Button kind="ghost" hasIcon={true} icon={Filter16} ariaLabel="Фильтры" />
Icon-only компоненты являются ключевым инструментом для создания компактного и современного интерфейса в Carbon Components Svelte. Они обеспечивают визуальную лёгкость, интерактивность и соответствие стандартам доступности, если правильно применять размеры, состояния и описательные атрибуты.