Account menu
The avatar dropdown at the far right of the TopBar. Opens a 288px panel with the user card, See all accounts, profile actions, impersonation, and update/logout.
Live preview
import { AccountMenu } from "@/components/organisms/account-menu";
<AccountMenu />Anatomy
The trigger is a size-8 avatar circle + CaretDown. Clicking opens an animate-dialog-in panel below it. The panel is split into four vertically-stacked blocks separated by borders.
- 1Avatar trigger
Circular size-8 tile with the user's initial. CaretDown next to it flips 180° when open.
- 2User card block
First block. Repeats the avatar, name (semibold), and email (muted). Ends with a 'See all your accounts' row + primary count badge.
- 3Profile actions
Your profile · Security · Settings · Teams and roles. Each row is a MenuItem: light icon (User/Lock/Gear/UserPlus) + label.
- 4Impersonation
Separator + single Impersonation row (Detective icon). Access is gated in the real Dashboard.
- 5System actions
Separator + Update to latest version (ArrowClockwise) and Log out (SignOut). Log out is always the last row.
When to use
- Inside the TopBar of any Dashboard-adjacent prototype.
- Anywhere the user needs profile-level actions (settings, accounts, impersonation).
When not to use
- For app switchers between orgs/accounts — use GlobalChip instead.
- For notifications — use a Popover triggered by the bell icon.
Usage
- Keep the four-block layout (user card · profile · impersonation · system).
- Show the accounts count badge only when it's > 1.
- Log out is the last action, always. Never nest it inside another group.
- Close the menu on selection — never leave it open after an action commits.
- Don't add environment or org switching here — that's GlobalChip.
- Don't fold Log out into a submenu — visibility matters for safety.
- Don't use dividers to imply hierarchy; blocks + borders express the grouping.
Composition
AccountMenu is self-contained (owns its open state and click-outside behavior). Drop it inside the TopBar right slot, or standalone in any header row.
<AccountMenu
userName="Julián Núñez"
userEmail="julian@y.uno"
accountsCount={5}
/>