Skip to main content

Radio

A single radio button, or Radio.Group for a mutually-exclusive list of options. Radio.Group also has a segmented-button style (optionType="button").

import { Radio } from '@jbpark/ui-kit';

<Radio.Group
options={[
{ label: 'Small', value: 'small' },
{ label: 'Medium', value: 'medium' },
]}
value={value}
onChange={setValue}
/>;
Selected: medium

Radio

PropTypeDefault
checkedboolean-
defaultCheckedbooleanfalse
valuestring | number | boolean-
namestring-
placement'left' | 'right''left'
disabledboolean-
icons{ checked?: ReactNode; unchecked?: ReactNode }-
onChange(checked: boolean) => void-

A standalone Radio (not inside Radio.Group) manages its own single-item group, so checked/onChange behave like a checkbox rather than participating in a shared selection.

Radio.Group

PropTypeDefault
options(string | number | boolean | Option)[][]
valueOptionValue-
defaultValueOptionValue-
orientation'vertical' | 'horizontal''horizontal'
placement'left' | 'right''left'
optionType'default' | 'button''default'
buttonStyle'solid' | 'outlined''solid'
size'small' | 'middle' | 'large'-
namestring-
disabledboolean-
classNames{ wrapper?: string; item?: string }-
onChange(value: OptionValue) => void-

optionType="button" renders each option as a segmented Button (real radio semantics via Radix, not just styled buttons) instead of the default circle-and-label. buttonStyle only affects the checked option's variant in that mode.