components / 01
marked button
a native button that draws attention when someone actually interacts with it.
shadcn
npx shadcn@latest add berkantay/cheez/marked-buttonlive
hover, focus, or press itplayground
variant
size
character
mark
ink
<MarkedButton
variant="outline"
size="medium"
mark="rounded-box"
character="rushed"
markColor="#ff4f2e"
>
save changes
</MarkedButton>behavior
native semantics, Cheez feedbackstates
visual hierarchy
variants and sizes
outlinesolidquietreference
also accepts every native button propapi
| prop | type | default | purpose |
|---|---|---|---|
variant | "outline" | "solid" | "quiet" | "outline" | visual treatment |
size | "small" | "medium" | "large" | "medium" | button dimensions |
mark | CheezType | "rounded-box" / "underline" | frame mark, or the quiet interaction mark |
character | "calm" | "rushed" | "chaotic" | "rushed" | drawing personality |
markColor | string | "#ff4f2e" | any valid CSS color |
fillColor | string | "#f4f0e6" | SVG fill used by the solid variant |
thickness | number | 1 | stroke-weight multiplier |
marked | boolean | undefined | controls boundary visibility |
loading | boolean | false | sets aria-busy and prevents repeated submission |
loadingLabel | ReactNode | "working" | content announced while loading |
disabled | boolean | false | native disabled state |
behavior notes
- renders a real button and forwards its ref
- keyboard focus receives the same mark as pointer hover
- loading sets
aria-busyand blocks duplicate clicks - reduced-motion behavior comes from the shared Cheez engine
- no Framer Motion and no animated layout