components / 22

marked card

a card should group content without trapping it in a perfect rectangle. the boundary can frame, fill, whisper, or pin.

shadcnnpx shadcn@latest add berkantay/cheez/marked-card
live

playground

outline · vertical
collection / 01

marks that feel human

sixty responsive pen marks with calm, rushed, and chaotic drawing characters.

success: reactwaapi
variant
layout
size
character
ink
<MarkedCard
  variant="outline"
  orientation="vertical"
  size="default"
  tone="orange"
  character="rushed"
>
  <MarkedCardMedia aspect="video" bleed="top" />
  <MarkedCardHeader>
    <MarkedCardEyebrow>collection / 01</MarkedCardEyebrow>
    <MarkedCardTitle>marks that feel human</MarkedCardTitle>
    <MarkedCardDescription>sixty responsive pen marks.</MarkedCardDescription>
  </MarkedCardHeader>
  <MarkedCardFooter>...</MarkedCardFooter>
</MarkedCard>
boundary

four ways to hold content

same slots, different pressure
outline

draw the boundary

one semantic article, one distinct visual voice.

filled

occupy the surface

one semantic article, one distinct visual voice.

quiet

let the copy lead

one semantic article, one distinct visual voice.

pinned

keep this visible

one semantic article, one distinct visual voice.

composition

slots stay ordinary

reorder what the content needs
01 · header

a card is composition, not configuration.

each slot forwards native props and refs. there is no context contract to fight.

02 · content can contain lists, forms, charts, or nothing at all.
media

vertical and horizontal stories

one responsive orientation prop
field note

underline the sentence people should remember.

release

the registry now has a voice.

install only the source your product needs.

choice

selection belongs to the control

the card only draws the state
solo

free

try every mark.

studio

$12

ship one product.

system

$39

build a full language.

notes

pin what cannot disappear

static paper, drawn attention
remember

the mark explains the state. color confirms it.

principle

motion belongs to the ink, not the whole interface.

ship

clear first. human second. decorative never.

reference

api

root and semantic slots
proptypedefaultpurpose
variant"outline" | "filled" | "quiet" | "pinned""outline"boundary treatment
orientation"vertical" | "horizontal""vertical"media and copy layout
size"compact" | "default" | "large""default"padding and type scale
toneMarkedCardTone"neutral"built-in ink palette
colorstringtone colorboundary or fill override
foregroundColorstringvariant-awarecontent color override
frameMarkCheezType"rounded-box"outline and pinned boundary
fillMarkCheezType"marker-swipe"filled surface drawing
quietMarkCheezType"long-underline"quiet baseline drawing
pinMarkCheezType"asterisk"pinned decoration
pinColorstringcard colorpin ink override
selectedbooleanfalsevisual selection boundary
selectedMarkCheezType"corner-box"selection perimeter
selectedColorstring"#b7ff3c"selection ink
interactivebooleanfalsefocus-within boundary emphasis
mutedbooleanfalsede-emphasized card state
characterCheezCharacter"rushed"drawing personality
thicknessnumber1pen weight
Title.level2 | 3 | 43semantic heading level
Media.aspect"auto" | "square" | "video" | "wide""auto"reserved media ratio
Media.bleed"none" | "top" | "inline" | "all""none"media relation to card padding

behavior notes

  • the root is an article; heading level remains explicit through MarkedCardTitle
  • selection is visual only—the nested button, checkbox, or radio must own the interactive semantics
  • interactive emphasizes the Cheez boundary on hover and focus-within without making the whole article clickable
  • filled cards use a solid clipped color surface rather than a gradient
  • horizontal cards collapse to a vertical reading order on narrow screens
  • media bleed changes layout only; it never changes the child media semantics