Import
import { ToggleButton } from '@contentful/f36-components';// orimport { ToggleButton } from '@contentful/f36-button';
Examples
Basic
Example of simple usage:
function ToggleButtonBasicExample() {const [isActive, setIsActive] = useState(false);return (<ToggleButtonisActive={isActive}onToggle={() => {setIsActive(!isActive);}}icon={<ThumbUpTrimmedIcon />}>Like</ToggleButton>);}
States
Example of active and disabled toggle buttons:
function ToggleButtonStatesExample() {return (<Stack><ToggleButton isActive onToggle={() => {}}>Active State</ToggleButton><ToggleButton isDisabled onToggle={() => {}}>Disabled State</ToggleButton></Stack>);}
Grouped
You can group several ToggleButtons
using ButtonGroup
component.
function ToggleButtonGroupedExample() {const [isItalic, setIsItalic] = useState(false);const [isBold, setIsBold] = useState(true);const [isUnderline, setIsUnderline] = useState(false);return (<ButtonGroup><ToggleButtonisActive={isItalic}icon={<FormatItalicIcon />}aria-label="Italic"size="small"onToggle={() => {setIsItalic(!isItalic);}}/><ToggleButtonisActive={isBold}icon={<FormatBoldIcon />}aria-label="Bold"size="small"onToggle={() => {setIsBold(!isBold);}}/><ToggleButtonisActive={isUnderline}icon={<FormatUnderlinedIcon />}aria-label="Underline"size="small"onToggle={() => {setIsUnderline(!isUnderline);}}/></ButtonGroup>);}
Props (API reference)
Open in StorybookName | Type | Default |
---|---|---|
onToggle required | () => void Function triggered when the toggle button is clicked. | |
aria-label | string Aria label is required when using icon only | |
children | ReactNode | |
className | string CSS class to be appended to the root element | |
icon | ReactElement<any, string | JSXElementConstructor<any>> Expects any of the icon components | |
isActive | false true Applies active styles | false |
isDisabled | false true Disabled interaction and applies disabled styles | false |
size | "small" "medium" "large" Determines size variation of Button component | medium |
testId | string A [data-test-id] attribute used for testing purposes |