UserMenu
UserMenu — dropdown с профилем пользователя, переключателем темы, дополнительными пунктами и кнопкой выхода.
Когда использовать
- Блок аккаунта в правой части шапки консоли.
- Переключение light / dark / system темы из интерфейса.
Примеры использования
Базовое меню
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 тема
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
Props
UserMenuProps| Prop | Type | Default | Required | Description |
|---|---|---|---|---|
bottomItems | Item[] | — | no | Пункты перед «Выйти из аккаунта». На desktop закреплены снизу |
onClick | (() => void) | — | no | Колбэк клика по кнопке-триггеру. |
onLogout | (() => void) | — | no | Колбэк клика по пункту «Выйти». |
open | boolean | — | no | Открыто ли меню. Не передано — состояние открытия неуправляемое (меню само переключает себя по клику на кнопку). |
organizationItems | Item[] | — | no | Список организаций. На desktop — единственная прокручиваемая часть меню |
profile | UserProfileProps | {} | no | Профиль пользователя (имя, email, счётчик приглашений). |
setOpen | ((open: boolean) => void) | — | no | Колбэк открытия/закрытия меню. |
settingItems | BaseItem[] | — | no | Пункты настроек в нижней части меню. |
theme | ThemeProps | — | no | Переключатель темы в меню. Без пропа не отображается. |
topItems | Item[] | — | no | Пункты после темы. На desktop закреплены сверху вместе с профилем и темой |
triggerTooltip | string | — | no | Текст подсказки для кнопки-триггера. |