Skip to content

Checkbox

Checkbox

A checkbox input component for boolean selections with customization options.

Import

import { Checkbox } from '@primitivekit/react';

Basic Usage

<Checkbox label="Accept terms and conditions" />

Sizes

<Checkbox size="small" label="Small checkbox" />
<Checkbox size="medium" label="Medium checkbox" />
<Checkbox size="large" label="Large checkbox" />

States

// Checked
<Checkbox checked label="Checked" />

// Unchecked
<Checkbox checked={false} label="Unchecked" />

// Indeterminate
<Checkbox indeterminate label="Indeterminate" />

// Disabled
<Checkbox disabled label="Disabled" />

// Disabled & Checked
<Checkbox disabled checked label="Disabled & Checked" />

Color Schemes

<Checkbox colorScheme="primary" label="Primary" />
<Checkbox colorScheme="secondary" label="Secondary" />
<Checkbox colorScheme="success" label="Success" />
<Checkbox colorScheme="danger" label="Danger" />

Controlled Checkbox

import { useState } from 'react';

function ControlledCheckbox() {
  const [checked, setChecked] = useState(false);

  return (
    <Checkbox
      checked={checked}
      onChange={(e) => setChecked(e.target.checked)}
      label="Subscribe to newsletter"
    />
  );
}

Checkbox Group

function CheckboxGroup() {
  const [selected, setSelected] = useState<string[]>([]);

  const handleChange = (value: string) => {
    setSelected(prev =>
      prev.includes(value)
        ? prev.filter(v => v !== value)
        : [...prev, value]
    );
  };

  return (
    <div>
      <Checkbox
        checked={selected.includes('react')}
        onChange={() => handleChange('react')}
        label="React"
      />
      <Checkbox
        checked={selected.includes('vue')}
        onChange={() => handleChange('vue')}
        label="Vue"
      />
      <Checkbox
        checked={selected.includes('angular')}
        onChange={() => handleChange('angular')}
        label="Angular"
      />
    </div>
  );
}

Props

PropTypeDefaultDescription
labelstring | ReactNode-Checkbox label
size'small' | 'medium' | 'large''medium'Checkbox size
colorScheme'primary' | 'secondary' | 'success' | 'danger''primary'Color scheme
checkedboolean-Checked state (controlled)
defaultCheckedbooleanfalseDefault checked state
indeterminatebooleanfalseIndeterminate state
onChangefunction-Change handler
disabledbooleanfalseDisable checkbox
requiredbooleanfalseRequired field
namestring-Input name
valuestring-Input value

Customization

<Checkbox
  label="Custom checkbox"
  style={{
    '--checkbox-size': '24px',
    '--checkbox-border-radius': '6px',
    '--checkbox-bg-color-checked': 'rgba(255, 0, 0, 1)',
    '--checkbox-border-color': 'rgba(200, 200, 200, 1)',
    '--checkbox-checkmark-color': 'rgba(255, 255, 255, 1)',
  }}
/>

Accessibility

  • ✅ Proper label association
  • ✅ Keyboard navigation (Space to toggle)
  • ✅ Focus indicators
  • ✅ Screen reader support
  • ✅ Touch target size (44x44px)

Related Components