# Card A bounded surface, with no shadow under it. - Group: Surfaces - Import: `import { Card } from '@misoto22/folio'` - Page: https://ui.misoto22.com/components/card/ - Related: table, figure-band ## When to reach for it A card that needs to read as raised is a plate, which separates by reversal instead of by blur. ## Anatomy - **Box** (required) — A
with the --radius-lg corner and one of three grounds: outline, a hairline on the page ground and the default; plate, the one reversed feature surface; flat, no border at all, for a card whose grid already draws the rules between cells. It brings no padding, and it clips to its own corner. - **Header** — CardHeader — a space-between row above a hairline, px-5 py-4: title against the start edge, one marker or action against the end. - **Title** — CardTitle, in the editorial serif at --fs-item. An

unless as says otherwise, and it reads --card-title rather than --ink directly, which is what keeps it legible when plate re-points that variable. - **Body** — CardBody — the content well at p-5, --ink-2, relaxed leading. - **Footer** — CardFooter — a quiet strip under a hairline, mono-meta at --ink-3-aa, for metadata or a secondary action. ## Best practices ### Do - Pass as on CardTitle: h3 is right inside a section that owns an h2 and wrong nearly everywhere else, and a grid of twelve cards is otherwise twelve h3s with no heading above them to belong to. - Use CardTitle inside a plate rather than your own heading — plate re-points --card-title to --on-feature, and a title that reads --ink directly came out at 1.25:1 on that ground: invisible, and invisible only on the one variant whose job is to look different. - Add the padding yourself when you skip the sub-parts: the box has none of its own, so children dropped straight in sit against the border. - Pass overflow-visible for the card that deliberately overhangs — a marker pinned to its edge, a control that breaks the outline. The box clips by default, because a card that rounds and does not clip lays a full-bleed image’s square corners over its round ones. ### Don’t - A Card with an onClick is a div with an onClick — not focusable, not announced, unreachable by keyboard. Put a real control inside and let it stretch, so what is announced is a button and the whole card is still the target. - Do not spend plate more than once on a screen: it is the system’s single reversed surface, and a band of plates is a band with no ground left to reverse against. ## Card A bounded surface. No shadow, by law: depth in this system is a hairline and a change of ground, never a blur. A card that needs to read as raised is a `plate`, which separates by reversal instead. It clips to its own corner. A card that rounds and does not clip lays a full-bleed image's square corners over its round ones at all four corners, and the same goes for a filled first child — a defect that is invisible until the first card with an image at the top of it. Pass `overflow-visible` for the rarer card that deliberately overhangs. Compose with the named sub-parts, or drop children straight in when the card has no header or footer to speak of. ### Props - `variant` — `'outline' | 'plate' | 'flat'` default `'outline'`. `outline` is a hairline box on the page ground — the default, and correct for a card sitting among other cards. `plate` fills with the one reversed surface and is for a card that IS the point of its band; use at most one per screen. `flat` drops the border entirely, for a card whose grid already draws the rules between cells. Also accepts: `HTMLAttributes`. ## CardHeader Header row — title on the left, an action or marker on the right. ## CardTitle The card's title, in the editorial serif. An `

` by default, which is right inside a section with its own `

` and wrong nearly everywhere else — pass `as` rather than leaving a page with a heading order that jumps. ## CardBody The content well. ## CardFooter A quiet strip for metadata or secondary actions. ## Example — variants ```tsx import { Badge, Card, CardBody, CardFooter, CardHeader, CardTitle } from '@misoto22/folio'
Recent deploys green Twelve releases in the last thirty days, none rolled back. Updated 4 minutes ago The reversed plate One per screen. It separates by reversal, because this system has no blur to raise it with.
``` ## Example — a real control ```tsx import { Badge, Card, CardBody, CardHeader, CardTitle, Text } from '@misoto22/folio' api.misoto22.com live Deployed from main four minutes ago, in 2m 14s. ``` ## Example — a ruled grid ```tsx import { Card, CardBody, CardTitle, Heading, Text } from '@misoto22/folio'
Revenue by region
{REGIONS.map((region) => ( {region.name} {region.orders} orders {region.revenue} ))}
```