Flexible container component for grouping related content and actions
import { Card } from "@heroui/react" ;
Import the Card component and access all parts using dot notation.
import { Card } from "@heroui/react" ;
export default () => (
< Card >
< Card.Header >
< Card.Title />
< Card.Description />
</ Card.Header >
< Card.Content />
< Card.Footer />
</ Card >
);
Cards come in semantic variants that describe their prominence level rather than specific visual styles. This allows themes to interpret them differently:
transparent - Minimal prominence, transparent background (great for nested cards)
default - Standard card for most use cases (surface-secondary)
secondary - Medium prominence to draw moderate attention (surface-tertiary)
tertiary - Higher prominence for important content (surface-tertiary)
import { Card } from '@heroui/react' ;
import { cardVariants } from '@heroui/styles' ;
// Semantic markup
< Card role = "article" aria-labelledby = "card-title" >
< Card.Header >
< Card.Title id = "card-title" >Article Title</ Card.Title >
</ Card.Header >
</ Card >
// Interactive cards
< a className = { cardVariants (). base ()} href = "/details" aria-label = "View product details" >
< Card.Title >Product Name</ Card.Title >
</ a >
< Card className = "border-2 border-blue-500 bg-gradient-to-r from-blue-50 to-purple-50" >
< Card.Header >
< Card.Title className = "text-blue-900" >Custom Styled Card</ Card.Title >
< Card.Description className = "text-blue-700" >Custom colors applied</ Card.Description >
</ Card.Header >
< Card.Content >
< p className = "text-blue-800" >Content with custom styling</ p >
</ Card.Content >
</ Card >
/* Override specific variants */
.card--secondary {
@ apply bg-gradient-to-br from-blue- 50 to-purple- 50;
}
/* Custom element styles */
.card__title {
@ apply text-xl font-bold ;
}
Card uses BEM naming for predictable styling, (View source styles ):
.card - Base container with padding and border
.card__header - Header section container
.card__title - Title with base font size and weight
.card__description - Muted description text
.card__content - Flexible content container
.card__footer - Footer with row layout
.card--transparent - Minimal prominence, transparent background (maps to transparent variant)
.card--default - Standard appearance with surface-secondary (default)
.card--secondary - Medium prominence with surface-tertiary (maps to secondary variant)
.card--tertiary - Higher prominence with surface-tertiary (maps to tertiary variant)
Prop Type Default Description variant"transparent" | "default" | "secondary" | "tertiary""default"Semantic variant indicating prominence level classNamestring- Additional CSS classes childrenReact.ReactNode- Card content
Prop Type Default Description classNamestring- Additional CSS classes childrenReact.ReactNode- Header content
Prop Type Default Description classNamestring- Additional CSS classes childrenReact.ReactNode- Title content (renders as h3)
Prop Type Default Description classNamestring- Additional CSS classes childrenReact.ReactNode- Description content (renders as p)
Prop Type Default Description classNamestring- Additional CSS classes childrenReact.ReactNode- Main content
Prop Type Default Description classNamestring- Additional CSS classes childrenReact.ReactNode- Footer content