Components / Layout

Card macrolite

A bordered content card with an optional title and description; use it for grouped content, not page headers.

Built from
BoxText
A2UI basic
Card
Children
many
Loading the renderer…
Card rendered by the React renderer on Web
Web React
Card rendered by the SwiftUI renderer on iOS
iOS SwiftUI
Card rendered by the Compose renderer on Android
Android Compose
Card rendered by the gpui renderer on Desktop
Desktop gpui

View exponential-ui-card, painted by each native renderer.

PropTypeDefaultDescription
titlestring–The card heading.
descriptionstring–A muted line under the heading.
paddedbooleantruePads the body; off for edge-to-edge rows.
stylestyle–Extra Box styles merged over the card's own.

No events, no slots. Children: many.

Role
group
Semantics
group labelled by its title

Not focusable; no keys.

Recipe parts
Card/rootCard/headerCard/titleCard/descriptionCard/body
Keyed by
:hover:pressed:focus:disabled:checked:open:selected:invalid:dragover

Themes · Write a theme

Glass card

The ONE translucent card, and only its box: radius XL, the card hairline, the glass card fill.

More

Everything a card owns on its own stays at the call site, because those genuinely differ — its padding, a blur, a shadow, and the divide-y + overflow hidden that turns the same box into a GROUP of rows. EXP-903: five surfaces painted it by copy-paste (the comment row, the agent AskCard, the usage card, the mobile issue properties sheet and the repo picker, which had drifted to the MD corner and the bare hairline). The shadcn Card derives its recipe from the same constant, so the two cannot disagree; a group of list ROWS is the group container instead, on the row fill with no outer stroke.

Webok
GlassCard / GLASS_CARD_CLASSpackages/ui/src/glass-card.tsx

Card (./card.tsx) derives its own recipe from the same constant.

Desktopok
surface::glass_cardapps/desktop/crates/ui/src/surface.rs