Card
A surface component with an optional title, caption, and variant-based visual treatment. Extends Paper - all Paper, Flex, and space/layout props pass through.
Theme-customizable via theme.components.Card - slots root / title / caption for styleOverrides, plus defaultProps.titleProps/.captionProps (token-typed) to restyle the title/caption Typography app-wide; per-instance titleProps/captionProps always win. See docs/customization.md.
Examples
Default
ComponentA flexible card surface with paper and bracketBox variants.
<Card
title="Component"
caption="A flexible card surface with paper and bracketBox variants."
p={3}
/>
Paper
PaperDefault surface with elevation shadow.
<Card variant="paper" p={3} title="Paper" caption="Default surface with elevation shadow." />
Bracket Box
BracketBoxFlat surface with corner bracket accents.
<Card
variant="bracketBox"
p={3}
elevation={0}
title="BracketBox"
caption="Flat surface with corner bracket accents."
/>
With Icon
System ScalabilityPass an icon name and the card renders it.
<Card
variant="interactive"
icon="account_tree"
iconProps={{ color: 'primary', size: '2.25rem' }}
p={4}
bg="paper"
title="System Scalability"
caption="Pass an icon name and the card renders it."
/>
Interactive
InteractiveHover to fill with the secondary background.
<Card
variant="interactive"
p={3}
bg="paper"
title="Interactive"
caption="Hover to fill with the secondary background."
/>
Variants
paperDefault card variant.
bracketBoxCorner bracket variant.
interactiveHover-fill variant.
<Flex flexDirection="row" gap={3} flexWrap="wrap">
<Card variant="paper" p={3} title="paper" caption="Default card variant." />
<Card
variant="bracketBox"
p={3}
elevation={0}
title="bracketBox"
caption="Corner bracket variant."
/>
<Card
variant="interactive"
p={3}
bg="paper"
title="interactive"
caption="Hover-fill variant."
/>
</Flex>
Title Only
Title Only
<Card p={3} title="Title Only" />
Subtitle Only
Subtitle only - no title above it.
<Card p={3} caption="Subtitle only - no title above it." />
With Children
StackTech in use.
React
TypeScript
Vite
<Card variant="bracketBox" p={3} elevation={0} title="Stack" caption="Tech in use.">
<View mt={2}>
{['React', 'TypeScript', 'Vite'].map((item) => (
<View key={item} p={0.5}>
{item}
</View>
))}
</View>
</Card>