Reference: Elevate Lookbook | Specs: Derived from DESIGN.md line 444-458 (form input standards)
<label class="elv-choice elv-choice--checkbox">
<input type="checkbox" class="elv-choice__input" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Label text</span>
</label>
You must accept the terms to continue
<!-- Unchecked -->
<label class="elv-choice elv-choice--checkbox">
<input type="checkbox" class="elv-choice__input" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Unchecked</span>
</label>
<!-- Checked -->
<label class="elv-choice elv-choice--checkbox">
<input type="checkbox" class="elv-choice__input" checked />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Checked</span>
</label>
<!-- Indeterminate (set via JavaScript) -->
<input type="checkbox" id="checkbox-id" class="elv-choice__input" />
<script>
document.getElementById('checkbox-id').indeterminate = true;
</script>
<!-- Disabled -->
<input type="checkbox" class="elv-choice__input" disabled />
<!-- Error -->
<label class="elv-choice elv-choice--checkbox elv-choice--error">
<input type="checkbox" class="elv-choice__input" aria-invalid="true" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Label</span>
</label>
<p class="elv-choice__error" role="alert">Error message</p>
Adds an extra layer of security to your account
Get the best software reviews delivered to your inbox
<label class="elv-choice elv-choice--checkbox">
<input type="checkbox" class="elv-choice__input" aria-describedby="helper-id" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Label</span>
</label>
<p id="helper-id" class="elv-choice__helper">Helper text</p>
<div role="group" aria-labelledby="group-label">
<span id="group-label" class="elv-choice-group__label">Group label</span>
<div class="elv-choice-group">
<label class="elv-choice elv-choice--checkbox">
<input type="checkbox" class="elv-choice__input" name="group" value="1" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Option 1</span>
</label>
<!-- More options... -->
</div>
</div>
<div class="elv-choice-group elv-choice-group--inline">
<label class="elv-choice elv-choice--checkbox">...</label>
<label class="elv-choice elv-choice--checkbox">...</label>
<label class="elv-choice elv-choice--checkbox">...</label>
</div>
<label class="elv-choice elv-choice--radio">
<input type="radio" class="elv-choice__input" name="group-name" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Label text</span>
</label>
Please select an option
<!-- Unselected -->
<label class="elv-choice elv-choice--radio">
<input type="radio" class="elv-choice__input" name="group" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Unselected</span>
</label>
<!-- Selected -->
<label class="elv-choice elv-choice--radio">
<input type="radio" class="elv-choice__input" name="group" checked />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Selected</span>
</label>
<!-- Disabled -->
<input type="radio" class="elv-choice__input" disabled />
<!-- Error -->
<label class="elv-choice elv-choice--radio elv-choice--error">
<input type="radio" class="elv-choice__input" aria-invalid="true" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Label</span>
</label>
<p class="elv-choice__error" role="alert">Error message</p>
$9/month — Perfect for individuals
$29/month — For growing teams
Custom pricing — Advanced features and support
<label class="elv-choice elv-choice--radio">
<input type="radio" class="elv-choice__input" aria-describedby="helper-id" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Label</span>
</label>
<p id="helper-id" class="elv-choice__helper">Helper text</p>
<fieldset>
<legend class="elv-choice-group__label">Group label</legend>
<div class="elv-choice-group">
<label class="elv-choice elv-choice--radio">
<input type="radio" class="elv-choice__input" name="group" value="1" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Option 1</span>
</label>
<!-- More options... -->
</div>
</fieldset>
<div class="elv-choice-group elv-choice-group--inline">
<label class="elv-choice elv-choice--radio">...</label>
<label class="elv-choice elv-choice--radio">...</label>
<label class="elv-choice elv-choice--radio">...</label>
</div>
<!-- Large checkbox -->
<label class="elv-choice elv-choice--checkbox elv-choice--lg">
<input type="checkbox" class="elv-choice__input" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Label</span>
</label>
<!-- Large radio -->
<label class="elv-choice elv-choice--radio elv-choice--lg">
<input type="radio" class="elv-choice__input" name="group" />
<span class="elv-choice__box"></span>
<span class="elv-choice__label">Label</span>
</label>
<label> element for clickability<fieldset> and <legend> for radio button groupsrole="group" and aria-labelledby for checkbox groupsaria-invalid="true" and aria-describedby for error messagesaria-describedby to link helper text to inputrequired attribute for form validationcheckbox.indeterminate = true| Property | Value | Token |
| Box Size (default) | 20px × 20px | — |
| Box Size (large) | 24px × 24px | — |
| Background (unchecked) | #ffffff | N0 / neutral-0 |
| Border (unchecked) | 1px solid #b0afb6 | border-medium / N40 |
| Border Radius (checkbox) | 4px | radius-xs |
| Border Radius (radio) | 50% | — |
| Checked Background | #5746b2 | P100 |
| Checked Border | 2px solid #5746b2 | P100 |
| Focus State | 3px solid #c3bde5, offset 1px | P40 |
| Hover Background (unchecked) | #ebe9f6 | P20 / primary-20 |
| Error Border | 2px solid #eb2000 | R120 |
| Disabled Background | #f2f2f3 | N10 |
| Disabled Border | #dfdfe2 | N20 / border-neutral |
| Disabled Checked Background | #dfdfe2 | N20 |
| Label Font Size | 14px (default), 16px (large) | — |
| Label Font Weight | 400 | Regular |
| Label Color (checkbox) | #201f23 | text-default |
| Label Color (radio) | #5746b2 | text-primary / P100 |
| Radio Inner Circle | sm: 6px, md: 12px, lg: 18px | scale-40/60/75 |
| Helper Text Size | 12px | — |
| Helper Text Color | #6f6d78 | text-nonessential |
| Error Message Size | 12px | — |
| Error Message Weight | 600 | Semibold |
| Error Message Color | #b21800 | R140 |
| Element | Spacing |
| Box to label (sm) | 4px (gap-1) |
| Box to label (md/lg) | 8px (gap-2) |
| Between choices (stacked) | 12px |
| Between choices (inline) | 24px |
| Label to helper text | 4px |
| Group label to choices | 8px |