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

Tip: click the radio to toggle it.

Variant

Default
Active

Design Tokens

Token NameFigma VariableDefault Value
--radioButtonBorderWidthRadioButton/Border/Width1px
--radioButtonDefaultBgColorRadioButton/Default/Bg/Color#ACADB2
--radioButtonDefaultBorderColorRadioButton/Default/Border/Color#ACADB2
--radioButtonActiveBgColorRadioButton/Active/Bg/Color#916DFF
--radioButtonActiveBorderColorRadioButton/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>
);