components / 07

marked radio

one choice gets one hand-drawn spark. the rest stay quiet until considered.

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

playground

selected: rushed
drawing rhythm

choose how the mark should feel

size
layout
character
selected mark
interaction
selected ink
interaction ink
state
<MarkedRadioGroup
  label="drawing rhythm"
  value="rushed"
  orientation="vertical"
  selectedMark="asterisk"
  character="rushed"
  onValueChange={setValue}
>
  <MarkedRadio value="calm">calm</MarkedRadio>
  <MarkedRadio value="rushed">rushed</MarkedRadio>
  <MarkedRadio value="chaotic">chaotic</MarkedRadio>
</MarkedRadioGroup>
behavior

states

the spark belongs only to selection
unchecked
choice
hover
choice
selected
choice
glint
choice
required
choice
invalid
choice
disabled item
choice
disabled group
choice
composition

choose the character

arrow keys move the decision
mark character

selection is not a filled UI dot. it is a tiny authored moment, while the native radio behavior stays intact underneath.

reference

api

Base UI semantics, Cheez selection
partproptypedefaultpurpose
Groupvaluestringcontrolled selected value
GroupdefaultValuestringuncontrolled initial value
GrouponValueChangefunctionselection callback
Groupnamestringnative form field name
GrouplabelReactNodeaccessible group legend
GroupdescriptionReactNodegroup helper text
GrouperrorReactNodeinvalid message and ink
Grouporientation"vertical" | "horizontal""vertical"visual layout
GroupselectedMarkCheezType"asterisk"selected gesture
GroupinteractionMarkCheezType"loose-circle"hover and focus gesture
GroupselectedColorstring"#b7ff3c"selected ink
Groupcharacter"calm" | "rushed" | "chaotic""rushed"drawing personality
Groupsize"small" | "medium" | "large""medium"control scale
Grouprequiredbooleanfalserequired form state
Groupdisabledbooleanfalsedisable every option
Radiovaluestringunique submitted value
RadiodescriptionReactNodeoption helper text
Radiodisabledbooleanfalsedisable one option
Radiomarkedbooleanforce interaction mark visibility

behavior notes

  • arrow keys move between enabled choices
  • Space selects the focused choice
  • the group exposes native radiogroup semantics
  • a hidden input carries the selected value into forms
  • group and item disabled states are separate
  • selection marks share one character and color system