UserMenu

UserMenu — dropdown с профилем пользователя, переключателем темы, дополнительными пунктами и кнопкой выхода.

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

  • Блок аккаунта в правой части шапки консоли.
  • Переключение light / dark / system темы из интерфейса.

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

Базовое меню

Базовое менюПрофиль, тема, пункты настроек и actions. Открывается по клику на аватар.
tsx
import { UserMenu } from '@cloud-ru/ds-uikit-product-header';

import { SETTING_ITEMS } from '../../../stories/demoData';

export function Basic() {
  return (
    <UserMenu
      profile={{ fullName: 'Ivan Petrov', email: 'ipetrov@cloud.ru', inviteCount: 1 }}
      theme={{ value: 'light' }}
      settingItems={SETTING_ITEMS}
      topItems={[{ content: { label: 'Option 1' } }, { content: { label: 'Option 2' } }]}
      data-test-id='header-user-menu-basic'
    />
  );
}

Controlled тема

Controlled тема`theme.value` и `theme.onChange` синхронизируют выбор темы с приложением.
tsx
import { UserMenu } from '@cloud-ru/ds-uikit-product-header';
import { useState } from 'react';

import { SETTING_ITEMS } from '../../../stories/demoData';

export function ControlledTheme() {
  const [theme, setTheme] = useState<'light' | 'dark' | 'system'>('light');

  return (
    <UserMenu
      profile={{ fullName: 'Ivan Petrov', email: 'ipetrov@cloud.ru' }}
      theme={{ value: theme, onChange: setTheme }}
      settingItems={SETTING_ITEMS}
      data-test-id='header-user-menu-theme'
    />
  );
}

Props

Types

PropsUserMenuProps
PropTypeDefaultRequiredDescription
bottomItemsItem[]—noПункты перед «Выйти из аккаунта». На desktop закреплены снизу
onClick(() => void)—noКолбэк клика по кнопке-триггеру.
onLogout(() => void)—noКолбэк клика по пункту «Выйти».
openboolean—noОткрыто ли меню. Не передано — состояние открытия неуправляемое (меню само переключает себя по клику на кнопку).
organizationItemsItem[]—noСписок организаций. На desktop — единственная прокручиваемая часть меню
profileUserProfileProps{}noПрофиль пользователя (имя, email, счётчик приглашений).
setOpen((open: boolean) => void)—noКолбэк открытия/закрытия меню.
settingItemsBaseItem[]—noПункты настроек в нижней части меню.
themeThemeProps—noПереключатель темы в меню. Без пропа не отображается.
topItemsItem[]—noПункты после темы. На desktop закреплены сверху вместе с профилем и темой
triggerTooltipstring—noТекст подсказки для кнопки-триггера.

Types

UserMenuProps

Storybook

Figma