IconButton — это специализированный компонент для создания кнопок, содержащих только иконку без текста. Он широко используется в интерфейсах, где важна компактность элементов управления и визуальная лаконичность, например в тулбарах, карточках, панелях фильтров и модальных окнах. Компонент обеспечивает доступность, корректное взаимодействие с клавиатурой и поддерживает различные состояния, такие как активное, неактивное и наведенное.
В Svelte компонент импортируется из библиотеки
carbon-components-svelte:
<script>
import { IconButton } from 'carbon-components-svelte';
import { Add24 } from 'carbon-icons-svelte';
</script>
<IconButton
icon={Add24}
label="Добавить элемент"
on:click={() => console.log('Кнопка нажата')}
/>
Add16,
Add24).onClick в HTML/JS.IconButton поддерживает несколько размеров, соответствующих рекомендациям Carbon Design System:
<IconButton icon={Add24} size="default" label="Добавить"/>
<IconButton icon={Add16} size="small" label="Удалить"/>
Состояния кнопки управляются через свойства:
<IconButton icon={Add24} label="Добавить" disabled={true}/>
<IconButton icon={Add24} label="Выбран" active={true}/>
<IconButton icon={Add24} label="Добавить" kind="primary"/>
<IconButton icon={Add24} label="Удалить" kind="secondary"/>
Возможные значения: primary, secondary,
tertiary, ghost, danger.
Помимо стандартных иконок Carbon, можно использовать собственные
SVG-компоненты. Главное — передать компонент через свойство
icon и указать label:
<script>
import { IconButton } from 'carbon-components-svelte';
import CustomIcon from './CustomIcon.svelte';
</script>
<IconButton icon={CustomIcon} label="Пользовательская кнопка"/>
IconButton обеспечивает корректное использование для пользователей с ограничениями зрения:
aria-label автоматически устанавливается на основе
свойства label.title для подсказки при
наведении мыши:<IconButton icon={Add24} label="Добавить элемент" title="Добавить новый элемент"/>
Enter и Space обрабатывается компонентом.IconButton поддерживает стандартные события Svelte:
Пример с кастомной логикой:
<IconButton
icon={Add24}
label="Добавить"
on:click={() => console.log('Добавление элемента')}
on:focus={() => console.log('Фокус на кнопке')}
/>
Для расширенной стилизации можно использовать CSS-переменные Carbon или классы:
:global(.my-icon-button) {
background-color: #0f62fe;
border-radius: 50%;
}
:global(.my-icon-button:hover) {
background-color: #0353e9;
}
Применение к компоненту:
<IconButton
icon={Add24}
label="Добавить"
class="my-icon-button"
/>
IconButton часто используется в комбинации с Tooltip, OverflowMenu и Modal:
<script>
import { IconButton, Tooltip } from 'carbon-components-svelte';
import { Add24 } from 'carbon-icons-svelte';
</script>
<Tooltip label="Добавить элемент" align="bottom">
<IconButton icon={Add24} label="Добавить"/>
</Tooltip>
align) и задержка появления настраиваются
через свойства компонента.IconButton в Carbon Components Svelte позволяет создавать компактные, доступные и визуально чистые кнопки с иконками, интегрируемые в любые интерфейсы без потери стандартов UX и функциональности.