HeaderNav — это компонент, который отвечает за создание основной навигационной панели верхнего уровня. Он предназначен для размещения элементов навигации (HeaderNavItem), сгруппированных по смыслу и предоставляющих пользователю доступ к различным разделам приложения или сайта. В Carbon Components Svelte HeaderNav реализуется как контейнер, который управляет расположением и поведением дочерних элементов.
Компонент HeaderNav в Svelte создается с использованием тега
<HeaderNav> и может содержать любое количество
элементов <HeaderNavItem>. Стандартная структура
выглядит следующим образом:
<HeaderNav>
<HeaderNavItem href="/home">Главная</HeaderNavItem>
<HeaderNavItem href="/about">О проекте</HeaderNavItem>
<HeaderNavItem href="/contact">Контакты</HeaderNavItem>
</HeaderNav>
Ключевые моменты:
href — ссылка, на которую будет вести
навигационный элемент.HeaderNavItem представляет отдельный пункт навигации и поддерживает ряд свойств для тонкой настройки:
href — адрес для перехода.isActive — булевое значение,
определяющее активный элемент. Обычно используется для выделения текущей
страницы.icon — позволяет добавить иконку слева
от текста. В Svelte это может быть реализовано через слот или импорт
иконки из Carbon Icons.disabled — делает элемент неактивным,
предотвращая взаимодействие.Пример использования с активным пунктом и иконкой:
<HeaderNav>
<HeaderNavItem href="/dashboard" isActive={true}>
<DashboardIcon slot="icon" />
Панель управления
</HeaderNavItem>
<HeaderNavItem href="/settings">
<SettingsIcon slot="icon" />
Настройки
</HeaderNavItem>
</HeaderNav>
Carbon Components Svelte наследует стили из Carbon Design System, что обеспечивает единообразие внешнего вида. Для HeaderNav и HeaderNavItem доступны стандартные CSS-классы:
bx--header__nav — базовый класс для контейнера
HeaderNav.bx--header__nav-item — базовый класс для пункта
навигации.bx--header__nav-link--active — класс, применяемый к
активному элементу.class позволяет расширять стандартную стилизацию.Пример с кастомным классом:
<HeaderNav class="custom-header-nav">
<HeaderNavItem href="/profile" class="custom-nav-item">
Профиль
</HeaderNavItem>
</HeaderNav>
HeaderNavItem может быть интегрирован с системой маршрутизации Svelte
(например, SvelteKit), чтобы динамически менять состояние
isActive в зависимости от текущего URL. Это позволяет
создавать интерактивные и отзывчивые навигационные панели.
Пример интеграции с реактивным состоянием:
<script>
import { page } from '$app/stores';
let currentPath = '';
$: currentPath = $page.url.pathname;
</script>
<HeaderNav>
<HeaderNavItem href="/home" isActive={currentPath === '/home'}>Главная</HeaderNavItem>
<HeaderNavItem href="/about" isActive={currentPath === '/about'}>О проекте</HeaderNavItem>
</HeaderNav>
Для сложных интерфейсов HeaderNavItem может включать выпадающие
подменю. В Carbon Components Svelte это реализуется через вложенные
компоненты <HeaderMenu> и
<HeaderMenuItem>, которые располагаются внутри
HeaderNavItem.
Пример вложенного меню:
<HeaderNav>
<HeaderNavItem>
Сервисы
<HeaderMenu>
<HeaderMenuItem href="/analytics">Аналитика</HeaderMenuItem>
<HeaderMenuItem href="/reports">Отчёты</HeaderMenuItem>
</HeaderMenu>
</HeaderNavItem>
</HeaderNav>
Особенности:
isActive для лучшей ориентации пользователя.HeaderNav и HeaderNavItem образуют основу навигационной системы в Carbon Components Svelte, обеспечивая гибкость, доступность и визуальную согласованность интерфейсов приложений.