Components/Card

Core component

Card

Ink-bordered surface with a hard offset shadow — the primary SLAB container. Optional lime header bar. 7 shadow variants. Never use soft/blurred shadows here.

Display5 tones7 shadowsDark mode ✓
components/core/Card.jsx
Tones
tone prop — surface fill
white (default)
Standard white surface. Use for most content.
paper
Warm paper tone. Good for secondary surfaces.
lime
Loud accent surface. Use sparingly.
yellow
Warning / highlight surface.
dark
Inverted surface. High contrast.
Shadow variants
shadow prop — hard offset depth (zero blur)
none
sm
md
lg
pink
violet
lime
Header & flush
header prop · flush prop (removes body padding)
Campaign status
With header prop. Lime bar, mono uppercase label.
Analytics
Custom header color via the header node.
flush removes body padding for edge-to-edge content.
Do / Don't
✓ Do
Stats
Use the header prop for labelled cards. Keeps typography consistent.
✕ Don't
Don't use blurred shadows or remove the ink border. Both are signature SLAB traits.
Props
PropTypeDefaultDescription
tone"white"|"paper"|"lime"|"yellow"|"dark""white"Surface fill color.
shadow"none"|"sm"|"md"|"lg"|"pink"|"violet"|"lime""md"Hard offset shadow depth and color.
flushbooleanfalseRemoves inner body padding for edge-to-edge content (images, tables).
headerReactNodenullOptional mono uppercase header bar with lime background.
childrenReactNodeCard body content.
styleCSSProperties{}Merged onto root element. Use for width, margin overrides.
Usage
import { Card } from "components/core/Card";

// Basic
<Card>Content here</Card>

// With header + shadow variant
<Card header="Campaign stats" shadow="lg">
  <p>$28,900 revenue</p>
</Card>

// Flush + dark tone
<Card tone="dark" flush shadow="violet">
  <img src="cover.jpg" />
</Card>