Radio
This component allows users to select one option from a set
Basic Usage
import { Radio, RadioOption } from '@krakentech/coral';
<Radio name="radio">
<RadioOption value="value-1">Option 1</RadioOption>
<RadioOption value="value-2">Option 2</RadioOption>
<RadioOption value="value-3">Option 3</RadioOption>
</Radio>Properties
value
const [radioValue, setRadioValue] = useState("value-2");
<Radio value={radioValue} name="radio">
<RadioOption value="value-1">Option 1</RadioOption>
<RadioOption value="value-2">Option 2</RadioOption>
<RadioOption value="value-3">Option 3</RadioOption>
</Radio>
<Button onClick={() => setRadioValue('value-1')}>
Change Value
</Button>defaultValue
<Radio defaultValue="value-3" name="radio">
<RadioOption value="value-1">Option 1</RadioOption>
<RadioOption value="value-2">Option 2</RadioOption>
<RadioOption value="value-3">Option 3</RadioOption>
</Radio>disabled
<Radio disabled={true} name="radio">
<RadioOption value="value-1">Option 1</RadioOption>
<RadioOption value="value-2">Option 2</RadioOption>
<RadioOption value="value-3">Option 3</RadioOption>
</Radio>error / errorMessage
<Radio error errorMessage="Please select an option" name="radio">
<RadioOption value="value-1">Option 1</RadioOption>
<RadioOption value="value-2">Option 2</RadioOption>
<RadioOption value="value-3">Option 3</RadioOption>
</Radio>optional
Note: You must pass
titleto get the optional indicator to show
<Radio optional name="radio" title="Radio title">
<RadioOption value="value-1">Option 1</RadioOption>
<RadioOption value="value-2">Option 2</RadioOption>
<RadioOption value="value-3">Option 3</RadioOption>
</Radio>theme
<Radio theme="tertiary500" name="radio">
<RadioOption value="value-1">Option 1</RadioOption>
<RadioOption value="value-2">Option 2</RadioOption>
<RadioOption value="value-3">Option 3</RadioOption>
</Radio>
<Radio theme="secondary500" name="radio">
<RadioOption value="value-1">Option 1</RadioOption>
<RadioOption value="value-2">Option 2</RadioOption>
<RadioOption value="value-3">Option 3</RadioOption>
</Radio>title
<Radio title="Which option would you like?" name="radio">
<RadioOption value="value-1">Option 1</RadioOption>
<RadioOption value="value-2">Option 2</RadioOption>
<RadioOption value="value-3">Option 3</RadioOption>
</Radio>Stateless Radio
If you need to use a RadioOption without using a parent Radio wrapper, Coral provides RadioStandalone. This allows you to use a basic, contextless radio input that you can control with your own state in your consuming app, rather than relying on any states in Coral.
<RadioStandalone value="value-1">
I have no context without being given one
</RadioStandalone>Event Handlers
<Radio onChange={(event, radioValue) => {}} onBlur={() => {}} name="radio">
...
</Radio>Responsiveness
<Radio theme={{ base: 'dark', lg: 'light' }} name="radio">
<RadioOption value="value-1">Option 1</RadioOption>
<RadioOption value="value-2">Option 2</RadioOption>
<RadioOption value="value-3">Option 3</RadioOption>
</Radio>Full API
| Name | Type | Default |
|---|---|---|
children | ReactNode | |
name | stringThe field name used on the POST request when the form is submitted. | |
value | string | null
| |
title | ReactNodeA title for this group of radio buttons. | |
defaultValue | stringDefault value to be checked. This must match the | |
error | booleanIf | false |
errorMessage | stringIf set, the | |
optional | booleanAdd an optional flag to the label for this field (controlled by https://coral-oe.vercel.app/?path=/docs/guides-configuration—docs#overrides-optional-indicator optionalIndicator). This should be set to true if you have set this field to be optional in your validation schema. | false |
theme | ResponsiveVariant<"tertiary500" | "secondary500">The colourway applied to this component. | tertiary500 |
onChange | (event: ChangeEvent<HTMLInputElement>, value: string) => voidCallback fired each time the user selects a radio button.
| |
onBlur | FocusEventHandler<HTMLInputElement>Callback fired when the radio group loses user focus. | |
disabled | booleanIf | false |
attributes | AttributesThis prop can be used to pass HTML attributes directly to the component.
We currently allow passing Example usage: | |
ref | Ref<HTMLDivElement> | undefinedAllows getting a ref to the component instance.
Once the component unmounts, React will set | |
key | Key | null | undefined |
Design
What is the difference between a checkbox and a radio button?
A radio button only allows you select one option, however a checkbox allows you to select multiple items from a list of options.
Why are there two colour variations?
Our primary theme is our voltage radio button, this should be used 99% of the time. Our secondary ink variation is to be used on top of ice, commonly in payment sections.
Component breakdown
- Border: 2px
- Button colour: Voltage & Ink
- Label colour: Ice & Siphon
- Label: Body 2