Radio Button
A single-choice selection control. Two states — Default and Active — with colors and geometry pulled directly from the LUSTER Figma component.
Figma Properties
State: Active
Border color: #916DFF
Dot color: #916DFF
Size: 16 × 16px
Border width: 1px
State: Active
Border color: #916DFF
Dot color: #916DFF
Size: 16 × 16px
Border width: 1px
Tip: click the radio to toggle it.
Variant
Design Tokens
| Token Name | Figma Variable | Default Value |
|---|---|---|
| --radioButtonBorderWidth | RadioButton/Border/Width | 1px |
| --radioButtonDefaultBgColor | RadioButton/Default/Bg/Color | #ACADB2 |
| --radioButtonDefaultBorderColor | RadioButton/Default/Border/Color | #ACADB2 |
| --radioButtonActiveBgColor | RadioButton/Active/Bg/Color | #916DFF |
| --radioButtonActiveBorderColor | RadioButton/Active/Border/Color | #916DFF |
Usage Guidelines
✓ DO
Use radio buttons when only one option in a set can be selected.
✓ DO
Always group related radios with a shared name and a visible label.
✕ DON'T
Don't use a radio group to enable multiple selections — use checkboxes.
✕ DON'T
Don't leave a radio group with no default selection when one is required.
Implementation
Values shown are the Diamond brand, Light mode defaults (the Figma file's default mode). Other brands (Amber, Opal) and Dark mode resolve to different values via the Color Theme & Component Brand collections.
import React from 'react';
import './RadioButton.css';
export interface RadioProps {
name: string;
value: string;
checked: boolean;
onChange: (value: string) => void;
label?: string;
}
export const RadioButton = ({ name, value, checked, onChange, label }: RadioProps) => (
<label className="radio-field">
<input
type="radio"
name={name}
value={value}
checked={checked}
onChange={() => onChange(value)}
className="radio-input"
/>
<span className="radio"><span className="radio__dot" /></span>
{label && <span>{label}</span>}
</label>
);