★ GitHub
Component

Card

A content container with the signature hard shadow. Cards can be static, interactive, or nested with variant-based depth.

Variants

Default — Card with hard shadow.
Flat — Border only, no shadow.
Inset — Gray background, no shadow.
Default (shadow), Flat (no shadow), Inset (gray background)
tsx
<Card variant="default">Default card with hard shadow.</Card> <Card variant="flat">Flat card — border only, no shadow.</Card> <Card variant="inset">Inset card — gray background, no shadow.</Card>

Padding

No padding
Small padding (12px)
Medium padding (20px)
Large padding (32px)
none, sm, md, lg
tsx
<Card padding="none">No padding</Card> <Card padding="sm">Small padding</Card> <Card padding="md">Medium padding</Card> <Card padding="lg">Large padding</Card>

Interactive

Click me — I have hover and active shadow states.
Cards with onClick gain hover/active shadow effects
tsx
<Card onClick={() => alert('Clicked!')}> Click me — I have hover and active states. </Card>

Disabled

Disabled — No hover, no click.
Disabled interactive card
tsx
<Card onClick={() => {}} disabled> I am disabled — no interactions. </Card>

Composition Example

Online

Server Status

All systems operational. Last checked 2 minutes ago.

Card with Badge and Button
tsx
<Card padding="lg"> <Badge variant="success" dot>Online</Badge> <h3>Server Status</h3> <p>All systems operational.</p> <Button variant="outline" size="sm">View Details</Button> </Card>

Usage

Dashboard.tsx
import { Card, Badge } from 'starkit-ui'; function Dashboard() { return ( <div style={{ display: 'grid', gap: 16 }}> <Card padding="lg" as="article"> <Badge variant="info">Analytics</Badge> <h2>Monthly Report</h2> <p>Revenue increased by 24% this quarter.</p> </Card> <Card variant="inset" padding="md"> <p>Nested content with muted background.</p> </Card> </div> ); }

Props

PropTypeDefaultDescription
variant'default' | 'flat' | 'inset''default'Visual style. Default has shadow, flat has none, inset has gray bg.
padding'none' | 'sm' | 'md' | 'lg''md'Internal padding preset.
as'div' | 'article' | 'section''div'Rendered HTML element for semantic markup.
disabledbooleanfalseDisables interactive cards (those with onClick).
onClick() => void—Makes the card interactive with hover/active effects.
classNamestring''Additional CSS classes.

All standard <div> HTML attributes are also supported.