HeaderGlobalBar — это компонент библиотеки Carbon Components Svelte, предназначенный для создания глобальной панели навигации, обычно располагаемой в верхней части интерфейса. Он используется совместно с Header, обеспечивая единый доступ к важным функциям приложения, таким как уведомления, поиск, профиль пользователя и настройки.
HeaderGlobalAction,
HeaderMenu, OverflowMenu.Компонент HeaderGlobalBar обычно оборачивает один или
несколько элементов HeaderGlobalAction. Структура типичного
компонента выглядит так:
<script>
import { HeaderGlobalBar, HeaderGlobalAction } from 'carbon-components-svelte';
import { Notification20, User20, Settings20 } from 'carbon-icons-svelte';
</script>
<HeaderGlobalBar>
<HeaderGlobalAction
label="Уведомления"
icon={Notification20}
on:click={() => console.log('Уведомления')}
/>
<HeaderGlobalAction
label="Профиль"
icon={User20}
on:click={() => console.log('Профиль')}
/>
<HeaderGlobalAction
label="Настройки"
icon={Settings20}
on:click={() => console.log('Настройки')}
/>
</HeaderGlobalBar>
HeaderGlobalBar сам по себе не требует обязательных
свойств, однако поддерживает следующие параметры для настройки:
class — позволяет добавлять собственные
CSS-классы.use — поддержка Svelte actions для расширенной логики
или интеграции с анимациями.slot — позволяет вставлять кастомные элементы внутрь
глобальной панели.Каждый элемент глобальной панели представлен компонентом
HeaderGlobalAction и поддерживает:
carbon-icons-svelte.Пример с использованием кастомного события:
<HeaderGlobalAction
label="Справка"
icon={Question20}
on:click={() => dispatch('helpClicked')}
/>
Для уменьшения загромождения интерфейса можно использовать
OverflowMenu, помещая часть глобальных действий в
выпадающий список:
<HeaderGlobalBar>
<HeaderGlobalAction label="Поиск" icon={Search20} />
<OverflowMenu>
<HeaderGlobalAction label="Настройки" icon={Settings20} />
<HeaderGlobalAction label="Справка" icon={Question20} />
</OverflowMenu>
</HeaderGlobalBar>
Такой подход обеспечивает компактность интерфейса и удобство для пользователей на малых экранах.
HeaderGlobalBar автоматически наследует стили и
адаптивное поведение из компонента Header. Для кастомизации
внешнего вида можно использовать:
class.Пример переопределения цвета иконок:
<style>
.custom-global-bar :global(svg) {
fill: #ff6600;
}
</style>
<HeaderGlobalBar class="custom-global-bar">
<HeaderGlobalAction label="Профиль" icon={User20} />
</HeaderGlobalBar>
HeaderGlobalBar как контейнер не генерирует события сам
по себе, но каждый HeaderGlobalAction поддерживает
стандартное событие click. Можно создавать реактивные
привязки и связывать состояние кнопок с Svelte store:
<script>
import { writable } from 'svelte/store';
const notifications = writable(3);
</script>
<HeaderGlobalBar>
<HeaderGlobalAction
label="Уведомления"
icon={Notification20}
on:click={() => notifications.update(n => n + 1)}
/>
{#if $notifications > 0}
<span class="notification-count">{$notifications}</span>
{/if}
</HeaderGlobalBar>
OverflowMenu.label для каждой кнопки.Компонент полностью использует возможности реактивности Svelte, что позволяет:
Пример динамического изменения иконки:
<script>
import { HeaderGlobalAction } from 'carbon-components-svelte';
import { User20, UserFavorite20 } from 'carbon-icons-svelte';
let favorite = false;
</script>
<HeaderGlobalAction
label="Профиль"
icon={favorite ? UserFavorite20 : User20}
on:click={() => favorite = !favorite}
/>
Этот подход позволяет создавать глобальные панели, которые остаются компактными, интерактивными и полностью интегрированными с архитектурой Svelte, сохраняя стилистику Carbon Design System.