Carbon Icons представляют собой набор векторных иконок, разработанных IBM и используемых в интерфейсных компонентах Carbon Design System. В сочетании с Svelte они позволяют создавать визуально согласованные интерфейсы с минимальными усилиями, обеспечивая как статические, так и интерактивные иконки.
Для использования Carbon Icons в проекте на Svelte требуется установить пакет с иконками через npm:
npm install @carbon/icons-svelte
Пакет включает множество готовых компонентов, каждый из которых экспортируется по имени. Это позволяет импортировать только те иконки, которые реально используются в проекте, что сокращает размер итогового бандла.
В Svelte компоненты импортируются напрямую из пакета. Например, для
использования иконки Add:
<script>
import Add from '@carbon/icons-svelte/lib/Add.svelte';
</script>
<Add />
Особенности импорта:
width, height, fill или
class.<script>
import Add from '@carbon/icons-svelte/lib/Add.svelte';
import Delete from '@carbon/icons-svelte/lib/Delete.svelte';
</script>
<Add class="icon-add" />
<Delete class="icon-delete" />
Иконки Carbon используют SVG, что позволяет управлять их размерами и цветом через атрибуты и стили CSS:
<Add width="32" height="32" fill="#0f62fe" />
Также можно применять классы и использовать CSS-переменные для гибкой кастомизации:
<style>
.icon-custom {
width: 48px;
height: 48px;
fill: var(--carbon-blue-60);
}
</style>
<Add class="icon-custom" />
Svelte поддерживает динамический импорт компонентов, что позволяет загружать иконки только при необходимости:
<script>
let iconName = 'Add';
let IconComponent;
import(`@carbon/icons-svelte/lib/${iconName}.svelte`).then(module => {
IconComponent = module.default;
});
</script>
{#if IconComponent}
<svelte:component this={IconComponent} />
{/if}
Такой подход особенно полезен при создании больших библиотек интерфейсов, где сотни иконок могут использоваться редко, но должны быть доступны.
Иконки Carbon могут быть интерактивными с обработкой событий, таких
как click, mouseenter и
mouseleave:
<script>
import Add from '@carbon/icons-svelte/lib/Add.svelte';
function handleClick() {
console.log('Иконка добавления нажата');
}
</script>
<Add on:click={handleClick} class="clickable-icon" />
CSS-класс .clickable-icon может содержать стили для
указания интерактивности, например, изменение цвета при наведении:
<style>
.clickable-icon:hover {
fill: #0f62fe;
cursor: pointer;
}
</style>
Иконки часто используются внутри других компонентов Carbon, например,
кнопок (Button), карточек (Tile) или элементов
навигации:
<script>
import Add from '@carbon/icons-svelte/lib/Add.svelte';
import { Button } from 'carbon-components-svelte';
</script>
<Button>
<Add slot="icon" />
Добавить элемент
</Button>
Особенности использования в слотах:
Для минимизации размера итогового бандла рекомендуется:
Carbon Icons в сочетании с Svelte обеспечивают мощный инструмент для создания адаптивных, интерактивных и визуально согласованных интерфейсов. Использование отдельных компонентов, слотов и динамических импортов позволяет гибко управлять иконками и оптимизировать производительность приложений.