HeaderLayout

Контейнер legacy-шапки с обратимо совместимыми слотами menu, logo, select, breadcrumbs и toolbar. При isMobile селектор скрывается, хлебные крошки переносятся под основную строку.

Когда использовать

  • Нужна единая раскладка верхней полосы консоли с разделителями между слотами.
  • Desktop и mobile отличаются только положением breadcrumbs и видимостью select.

Когда не нужен:

  • Полноценное боковое меню навигации:

Анатомия

Слоты

  • menu — триггер главного меню.
  • logo — брендовый логотип.
  • select — селектор проекта (скрывается при isMobile).
  • breadcrumbs — хлебные крошки (на mobile — под основной строкой).
  • toolbar — действия справа.

isMobile (default false)

  • false — одна строка: menu + logo + select + breadcrumbs | toolbar.
  • true — select скрыт, breadcrumbs во второй строке.

Установка

pnpm add @cloud-ru/ds-uikit-product-header-legacy
import { HeaderLayout } from '@cloud-ru/ds-uikit-product-header-legacy'

Примеры использования

Desktop

DesktopВсе слоты в одной строке.
Menu
Select
Breadcrumbs
Toolbar
tsx
import { HeaderLayout, Logo } from '@cloud-ru/ds-uikit-product-header-legacy';

function Slot({ label }: { label: string }) {
  return <div style={{ padding: '4px 8px', border: '1px dashed #ccc', fontSize: 12 }}>{label}</div>;
}

export function Desktop() {
  return (
    <HeaderLayout
      menu={<Slot label='Menu' />}
      logo={<Logo href='#' />}
      select={<Slot label='Select' />}
      breadcrumbs={<Slot label='Breadcrumbs' />}
      toolbar={<Slot label='Toolbar' />}
    />
  );
}

Mobile

MobileisMobile скрывает select и переносит breadcrumbs.
Menu
Toolbar
Breadcrumbs
tsx
import { HeaderLayout, Logo } from '@cloud-ru/ds-uikit-product-header-legacy';

function Slot({ label }: { label: string }) {
  return <div style={{ padding: '4px 8px', border: '1px dashed #ccc', fontSize: 12 }}>{label}</div>;
}

export function Mobile() {
  return (
    <HeaderLayout
      isMobile
      menu={<Slot label='Menu' />}
      logo={<Logo href='#' />}
      select={<Slot label='Select' />}
      breadcrumbs={<Slot label='Breadcrumbs' />}
      toolbar={<Slot label='Toolbar' />}
    />
  );
}

Минимальный набор

Минимальный наборТолько menu, logo и toolbar.
Menu
Toolbar
tsx
import { HeaderLayout, Logo } from '@cloud-ru/ds-uikit-product-header-legacy';

function Slot({ label }: { label: string }) {
  return <div style={{ padding: '4px 8px', border: '1px dashed #ccc', fontSize: 12 }}>{label}</div>;
}

export function Minimal() {
  return <HeaderLayout menu={<Slot label='Menu' />} logo={<Logo href='#' />} toolbar={<Slot label='Toolbar' />} />;
}

Props

Types

PropsHeaderLayoutProps
PropTypeDefaultRequiredDescription
breadcrumbsReactNode—noХлебные крошки.
classNamestring—noCSS-класс корневого элемента.
data-test-idstring—no
isMobilebooleanfalsenoПереносит хлебные крошки под основную строку и скрывает селектор.
logoReactNode—noЛоготип платформы.
menuReactNode—noГлавное меню.
selectReactNode—noСелектор проекта.
toolbarReactNode—noПанель действий в правой части.

Types

HeaderLayoutProps

Storybook

Figma