Toggles
Toggles allow users to select one option from a set of mutually exclusive options. Corncob toggles are styled native radio buttons.
Extra Small
<fieldset class="corn-form--item corn-toggle-group corn-toggle--xs" aria-labelledby="legend1">
<legend id="legend1">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example1" name="example-xs" value="one" checked />
<label for="example1">One</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example2" name="example-xs" value="two" />
<label for="example2">Two</label>
</div>
</div>
</fieldset> Small
<fieldset class="corn-form--item corn-toggle-group corn-toggle--sm" aria-labelledby="legend2">
<legend id="legend2">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example3" name="example-sm" value="one" checked />
<label for="example3">One</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example4" name="example-sm" value="two" />
<label for="example4">Two</label>
</div>
</div>
</fieldset> Medium
<fieldset class="corn-form--item corn-toggle-group corn-toggle--md" aria-labelledby="legend3">
<legend id="legend3">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example5" name="example-md" value="one" checked />
<label for="example5">One</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example6" name="example-md" value="two" />
<label for="example6">Two</label>
</div>
</div>
</fieldset> Large
<fieldset class="corn-form--item corn-toggle-group corn-toggle--lg" aria-labelledby="legend4">
<legend id="legend4">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example7" name="example-lg" value="one" checked />
<label for="example7">One</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example8" name="example-lg" value="two" />
<label for="example8">Two</label>
</div>
</div>
</fieldset> Extra Large
<fieldset class="corn-form--item corn-toggle-group corn-toggle--xl" aria-labelledby="legend5">
<legend id="legend5">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example9" name="example-xl" value="one" checked />
<label for="example9">One</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example10" name="example-xl" value="two" />
<label for="example10">Two</label>
</div>
</div>
</fieldset> Disabled
<fieldset class="corn-form--item corn-toggle-group corn-toggle--sm" aria-labelledby="legend2-disabled">
<legend id="legend2-disabled">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example3-disabled" name="example-sm-disabled" value="one" checked disabled/>
<label for="example3-disabled">One</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example4-disabled" name="example-sm-disabled" value="two" disabled/>
<label for="example4-disabled">Two</label>
</div>
</div>
</fieldset> Icon Toggles
Icon toggles are a variation of the default toggle that uses icons instead of text labels. They are available in all sizes and can be used in the same way as the default toggles.
Extra Small Icons
<fieldset class="corn-form--item corn-toggle-group corn-toggle--xs" aria-labelledby="legend1">
<legend id="legend1">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example1-icon" name="example-xs-icon" value="lock" checked />
<label for="example1-icon">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Lock">
<use href=[icon]></use>
</svg>
</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example2-icon" name="example-xs-icon" value="unlock" />
<label for="example2-icon">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Unlock">
<use href=[icon]></use>
</svg>
</label>
</div>
</div>
</fieldset> Small Icons
<fieldset class="corn-form--item corn-toggle-group corn-toggle--sm" aria-labelledby="legend2">
<legend id="legend2">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example1-sm-icon" name="example-sm-icon" value="lock" checked />
<label for="example1-sm-icon">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Lock">
<use href="[icon]"></use>
</svg>
</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example2-sm-icon" name="example-sm-icon" value="unlock" />
<label for="example2-sm-icon">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Unlock">
<use href="[icon]"></use>
</svg>
</label>
</div>
</div>
</fieldset> Medium Icons
<fieldset class="corn-form--item corn-toggle-group corn-toggle--md" aria-labelledby="legend3">
<legend id="legend3">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example5-icon" name="example-md-icon" value="smile" checked />
<label for="example5-icon">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Smile">
<use href="[icon]"></use>
</svg>
</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example6-icon" name="example-md-icon" value="neutral" />
<label for="example6-icon">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Neutral">
<use href="[icon]"></use>
</svg>
</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example7-icon" name="example-md-icon" value="frown" />
<label for="example7-icon">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Frown">
<use href="[icon]"></use>
</svg>
</label>
</div>
</div>
</fieldset> Large Icons
<fieldset class="corn-form--item corn-toggle-group corn-toggle--lg" aria-labelledby="legend4">
<legend id="legend4">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example8-icon" name="example-lg-icon" value="lock" />
<label for="example8-icon">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Lock">
<use href="[icon]"></use>
</svg>
</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example9-icon" name="example-lg-icon" value="unlock" checked />
<label for="example9-icon">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Unlock">
<use href="[icon]"></use>
</svg>
</label>
</div>
</div>
</fieldset> Extra Large Icons
<fieldset class="corn-form--item corn-toggle-group corn-toggle--xl" aria-labelledby="legend5">
<legend id="legend5">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example10-icon" name="example-xl-icon" value="lock" />
<label for="example10-icon">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Lock">
<use href="[icon]"></use>
</svg>
</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example11-icon" name="example-xl-icon" value="unlock" checked />
<label for="example11-icon">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Unlock">
<use href="[icon]"></use>
</svg>
</label>
</div>
</div>
</fieldset> Disabled
<fieldset class="corn-form--item corn-toggle-group corn-toggle--sm" aria-labelledby="legend2-disabled">
<legend id="legend2-disabled">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example3-disabled" name="example-sm-disabled" value="one" checked disabled/>
<label for="example3-disabled">One</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example4-disabled" name="example-sm-disabled" value="two" disabled/>
<label for="example4-disabled">Two</label>
</div>
</div>
</fieldset>
<hr />
<fieldset class="corn-form--item corn-toggle-group corn-toggle--md" aria-labelledby="legend3-disabled">
<legend id="legend3-disabled">Group Label</legend>
<div class="corn-toggles">
<div class="corn-toggle">
<input type="radio" id="example5-icon-disabled" name="example-md-icon" value="smile" checked disabled/>
<label for="example5-icon-disabled">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Smile">
<use href="[icon]"></use>
</svg>
</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example6-icon-disabled" name="example-md-icon" value="neutral" disabled/>
<label for="example6-icon-disabled">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Neutral">
<use href="[icon]"></use>
</svg>
</label>
</div>
<div class="corn-toggle">
<input type="radio" id="example7-icon-disabled" name="example-md-icon" value="frown" disabled/>
<label for="example7-icon-disabled">
<svg xmlns="http://www.w3.org/2000/svg" class="corn-icon" aria-label="Frown">
<use href="[icon]"></use>
</svg>
</label>
</div>
</div>
</fieldset>
Accessibility Notes
Fieldsets and Legends are used to group related toggles together. In order to maintain accessibility, fieldsets should have a legend that describes the group of toggles.
Corn-cob uses display: contents on the legend in order to allow the legend to behave like a regular element while still providing a label for the group.
However this may (or may not) have implications for screen readers and other assistive technologies. So we recommend using aria-labelledby on the fieldset with a corresponding id on the legend.
When using icon toggles, it’s important to provide an aria-label on the .corn-icon element to ensure that screen readers can understand the purpose of the toggle.
Toggle Tokens
:root {
--cc-toggle--height--xs: var(--cc-form--item--size--xs);
--cc-toggle--height--sm: var(--cc-form--item--size--sm);
--cc-toggle--height--md: var(--cc-form--item--size--md);
--cc-toggle--height--lg: var(--cc-form--item--size--lg);
--cc-toggle--height--xl: var(--cc-form--item--size--xl);
--cc-toggle--font-size--md: var(--cc-form--item--font-size--md);
--cc-toggle--font-size--xs: var(--cc-form--item--font-size--xs);
--cc-toggle--font-size--sm: var(--cc-form--item--font-size--sm);
--cc-toggle--font-size--lg: var(--cc-form--item--font-size--lg);
--cc-toggle--font-size--xl: var(--cc-form--item--font-size--xl);
--cc-toggle--background: var(--cc-form--item--background);
--cc-toggle--background--hover: var(--cc-form--item--background--hover);
--cc-toggle--background--checked: var(--cc-form--widget--color);
--cc-toggle--background--checked--hover: var(--cc-form--widget--color--hover);
--cc-toggle--border: var(--cc-border--width) var(--cc-border--style) transparent;
--cc-toggle--border-color--hover: var(--cc-border--color);
--cc-toggle--border-color--checked: var(--cc-border--color);
--cc-toggle--border-color--focus: var(--cc-form--item--border--color--focus);
--cc-toggle--border-radius: var(--cc-border--radius);
--cc-toggle--color--checked: var(--cc-white);
--cc-toggle--focus-ring: var(--cc-form--item--focus-ring);
--cc-toggle--widget--outline: inset 0 0 0 2px var(--cc-gray-20);
}