Usage
Card is the painted surface for grouped content. It owns interior spacing, radius, elevation, and slot layout. The parent owns width, height, margin, and placement. ClickableCard adds one native action control, stretched to fill the card, for an atomic action or same-context link.
Ordinary layout, spacing, background, border, radius, overflow, and elevation are expressed through semantic Box and FlexBox props. Card SCSS is reserved for nested-surface behavior, content bleed, interaction pseudo-states, and the stretched action overlay.
CardContent when the parent sets a block size.MetricCard.Checkbox cards or Radio cards.Card and keep the action outside the content.Card is a column. Slots are CardHeader, CardContent, and CardFooter. MetricCard is a closed preset over CardHeader and CardContent.
BorderRadius.Medium (8px).None or Low; Low is legal only on Surface.CardHeader is a column. Its top row wraps the BodyLarge strong title with accessory and controls at the end; the optional description sits below.TextType.BodyLarge strong typography. Overline text is not a card-title treatment.CardControls is a SegmentedControl with an optional sibling kebab Menu. It is not a new card type.ClickableCard uses the same slots except controls. The action target is a sibling of those slots, absolutely positioned over the card padding box. It is the only tab stop. Do not put buttons, links, tables, named charts, or Scrollable inside it.
ClickableCard does not accept a controls prop. Because React children are opaque to TypeScript, composition can still place a CardHeader with controls inside it; the development guard warns when it detects those interactive descendants. Treat that warning as invalid card composition.
A card that needs both navigation and header controls should put navigation in an explicit CardFooter action. Do not wrap the card in an ancestor link and stop-propagate from the controls.
accessory stays non-interactive. Interactive chrome belongs in controls.
A chart card is ordinary Card: CardHeader with CardControls, CardContent with bleed to the inline edges around the chart, and an optional footer. Use a named chart from Visualization charts plus a visible summary. Do not introduce a ChartCard component.
A table card is ordinary Card: header controls, a Table in CardContent, and a centered CardFooter action such as "View all". Do not introduce a TableCard component.
useTranslation().CardFooter, not in the header accessory, when the card is not clickable.CardControls labels, menu trigger name, and overflow radios are LocalizedMessage.Do
Card fills that block size so CardContent can shrink with min-block-size: 0.Scrollable inside ordinary CardContent for overflow.external on navigation cards that must open a new context.CardControls and extra ranges in the kebab as radios.Don't
Card inside Card. Nested Surface paint is only for a Card sitting on another painted surface.ClickableCard.controls with ClickableCard or a clickable MetricCard.LocalizedMessage. Call formatMessage.