The Card component provides a structured container for organizing related content, commonly used for displaying information in a visually distinct section.
Basic usage
import { FlxCard, FlxCardContent } from '@flowx/react-ui-toolkit';
function BasicCard() {
return (
<FlxCard>
<FlxCardContent>
<p>This is the card content.</p>
</FlxCardContent>
</FlxCard>
);
}
Card styles
The Card component supports two visual styles:
<FlxCard cardStyle="border">
<FlxCardContent>
Card with border style
</FlxCardContent>
</FlxCard>
A card with a border outline.<FlxCard cardStyle="raised">
<FlxCardContent>
Card with raised style
</FlxCardContent>
</FlxCard>
A card with elevation and shadow effects.
With header and title
Create cards with structured header sections:
import {
FlxCard,
FlxCardHeader,
FlxCardTitle,
FlxCardContent
} from '@flowx/react-ui-toolkit';
function CardWithHeader() {
return (
<FlxCard cardStyle="raised">
<FlxCardHeader>
<FlxCardTitle>User Profile</FlxCardTitle>
</FlxCardHeader>
<FlxCardContent>
<p>Name: John Doe</p>
<p>Email: john@example.com</p>
</FlxCardContent>
</FlxCard>
);
}
Complete card structure
Use all card sub-components for a fully structured layout:
import {
FlxCard,
FlxCardHeader,
FlxCardTitle,
FlxCardSubtitle,
FlxCardContent
} from '@flowx/react-ui-toolkit';
function CompleteCard() {
return (
<FlxCard cardStyle="raised">
<FlxCardHeader>
<FlxCardTitle>Project Overview</FlxCardTitle>
<FlxCardSubtitle>Q4 2024 Performance</FlxCardSubtitle>
</FlxCardHeader>
<FlxCardContent>
<div>
<h4>Key Metrics</h4>
<ul>
<li>Revenue: $1.2M</li>
<li>Users: 15,000</li>
<li>Growth: 25%</li>
</ul>
</div>
</FlxCardContent>
</FlxCard>
);
}
Interactive cards
Make cards interactive with click handlers:
import { FlxCard, FlxCardContent } from '@flowx/react-ui-toolkit';
function InteractiveCard() {
const handleCardClick = () => {
console.log('Card clicked');
};
return (
<FlxCard
cardStyle="border"
onClick={handleCardClick}
style={{ cursor: 'pointer' }}
tabIndex={0}
role="button"
>
<FlxCardContent>
<p>Click me!</p>
</FlxCardContent>
</FlxCard>
);
}
Card grid layout
Display multiple cards in a responsive grid:
import { FlxCard, FlxCardHeader, FlxCardTitle, FlxCardContent } from '@flowx/react-ui-toolkit';
function CardGrid() {
const cards = [
{ id: 1, title: 'Card 1', content: 'Content 1' },
{ id: 2, title: 'Card 2', content: 'Content 2' },
{ id: 3, title: 'Card 3', content: 'Content 3' },
];
return (
<div style={{
display: 'grid',
gridTemplateColumns: 'repeat(auto-fill, minmax(300px, 1fr))',
gap: '16px'
}}>
{cards.map(card => (
<FlxCard key={card.id} cardStyle="raised">
<FlxCardHeader>
<FlxCardTitle>{card.title}</FlxCardTitle>
</FlxCardHeader>
<FlxCardContent>
<p>{card.content}</p>
</FlxCardContent>
</FlxCard>
))}
</div>
);
}
With custom actions
Add action buttons in the card header:
import { FlxCard, FlxCardHeader, FlxCardTitle, FlxCardContent, FlxButton, FlxIcon } from '@flowx/react-ui-toolkit';
function CardWithActions() {
return (
<FlxCard cardStyle="raised">
<FlxCardHeader style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
<FlxCardTitle>Settings</FlxCardTitle>
<FlxButton
variant="text"
icon="center"
iconComponent={<FlxIcon name="settings" />}
aria-label="Edit settings"
/>
</FlxCardHeader>
<FlxCardContent>
<p>Configure your preferences here.</p>
</FlxCardContent>
</FlxCard>
);
}
Props
FlxCard
cardStyle
'border' | 'raised'
default:"border"
The visual style of the card. border shows an outline, while raised adds elevation and shadow.
Additional CSS classes to apply to the card container.
The content to display inside the card, typically using card sub-components.
The content of the header section, typically containing FlxCardTitle and FlxCardSubtitle.
Additional CSS classes for the header section.
FlxCardTitle
The title text or content.
Additional CSS classes for the title.
FlxCardSubtitle
The subtitle text or content.
Additional CSS classes for the subtitle.
FlxCardContent
The main content of the card.
Additional CSS classes for the content section.
TypeScript
The Card component and its sub-components are fully typed:
import type { FlxCardProps } from '@flowx/react-ui-toolkit';
const cardConfig: FlxCardProps = {
cardStyle: 'raised',
className: 'custom-card',
};
Accessibility
- Semantic HTML structure with proper heading hierarchy
- Support for all standard HTML attributes
- When making cards interactive, include proper ARIA attributes and keyboard support
Use the raised card style to create visual hierarchy and draw attention to important content sections.