Skip to content
Alea
Pro
  1. Alea
  2. Components
  3. Navigation
  4. AccountFooter

Navigation

AccountFooter

The signed-in person at the bottom of an AppSidebar: a small avatar with name and role that opens the account menu, an optional second action such as settings, and a dot on the avatar for the connection. One compact row with 44 px targets.

import { AccountFooter, AppSidebar, MenuItem, MenuSeparator } from '@alea-design/ui';

Examples

Account footer

The signed-in person at the bottom of the sidebar: name and role open the account menu, a gear beside it, a dot for the connection.

Connection states

The dot on the avatar says online, offline, syncing (it pulses) or a connection problem. It is also spoken, so color is never the only signal.

Collapsed sidebar

With the sidebar collapsed to icons only the avatar and its dot stay; the name and role are still the button's accessible name.

Tokens

The design tokens this component reads, with their value in the current theme. Override any of them to restyle it.

Color

  • --alea-bg…
  • --alea-status-danger…
  • --alea-status-success…
  • --alea-status-warning…
  • --alea-surface-hover…
  • --alea-text…
  • --alea-text-muted…

Space

  • --alea-space-0-25…
  • --alea-space-0-5…
  • --alea-space-1…
  • --alea-space-2…

Radius

  • --alea-radius-sm…

Type

  • --alea-font-family-body…
  • --alea-font-size-sm…
  • --alea-font-size-xs…
  • --alea-font-weight-regular…
  • --alea-font-weight-semibold…

Other

  • --alea-icon-muted…

Props

AccountFooter props

The bottom of an AppSidebar for the signed-in person: a small avatar with the name and role (or plan) that opens the account menu, an optional second action such as settings, and a dot for the connection on the avatar. It stays one compact row, with 44 px targets, and the text and the action wrap onto a second line instead of being cut when the text is scaled up. Pass it as the sidebar's `footer`.

PropTypeDefaultDescription
namerequiredstringThe person's name: the avatar's initials and the first line.
actionReactNodenoneA second action beside the person: usually an IconButton (settings). It keeps a 44 px target. It hides while the sidebar is collapsed to icons.
childrenReactNode | ((item: object) => ReactNode)noneThe account menu items (MenuItem, MenuSection, MenuSeparator), passed by the product. Without them the person is plain text, not a button.
connection"error" | "online" | "offline" | "syncing"unsetA small dot on the avatar for the state of the connection, so the footer does not grow a row for it. The state is also spoken ("Online").
connectionLabelstringOnlineThe spoken text of the connection. Default: Online, Offline, Syncing or Connection problem.
menuLabelstringnoneReplaces the accessible name of the person's button, and with it the menu's. Default: the name, role and connection as they show.
onAction((key: string | number) => void)noneCalled with the id of the menu item picked.
placement"start" | "end" | "bottom end" | "bottom start" | "bottom" | "top" | "bottom left" | "bottom right" | "top left" | "top right" | "top start" | "top end" | "l…"top start"Where the menu opens. Default top start, since the footer is at the bottom of the screen.
secondaryReactNodenoneA second line under the name: a role, a plan, an email.
srcstringnoneThe photo. Initials show without it.

Specs

Generated from the source: the variants in the types, the states and tokens in the CSS, and the motion patterns that apply. The grids render the real component in both themes; the numbers are measured from the page.

Variants
connectionerroronlineofflinesyncing
placementstartendbottom endbottom startbottomtopbottom leftbottom righttop lefttop righttop starttop endl…
States
HoverPressed
Dark and light
Every color comes from theme tokens, so it follows data-theme (and presets like Graphite) on the page or any wrapper. Contrast is checked in both themes.
Styling hooks
.alea-account-footer-avatar.alea-status-dot.alea-account-footer-dot.alea-account-footer-text.alea-account-footer-name.alea-account-footer-secondary.alea-account-footer-chevron.alea-account-footer.alea-account-footer-person.alea-account-footer-action
Data attributes
data-staticdata-connection=offlinedata-connection=errordata-collapsed

Accessibility

  • The person is a menu button named by its text: name, role and the connection ("Ana Pérez Administrator Online"). The menu takes its name from the button (menuLabel replaces both).
  • The dot is never the only signal: the connection is spoken, and the dot is hidden from screen readers.
  • Both targets are 44 px; when the text is scaled up the action drops to its own line and the name wraps, so nothing is cut.
  • With the sidebar collapsed to icons only the avatar stays; its name is still the accessible name.

Keyboard

KeyDoes
Enter or SpaceOpens the account menu from the person
Up or Down arrowPrevious or next item
EscCloses the menu and returns to the person
TabMoves on to the action beside it

Do and don't

Do

  • Pass it as the footer of AppSidebar: the header and the footer stay put while the links scroll.
  • Put profile, language and sign out in the menu, and settings in the action.
  • Use connection for online, offline or syncing instead of a row of text.

Don't

  • Don't put more than one action beside the person: it would wrap on narrow sidebars.
  • Don't use it in a header: use AccountMenu there.

In Figma

The properties of the Figma components, generated from the kit, so they always match it. The last column is the React prop each one stands for.

Tested with axe, keyboard and screen reader roles