UNPKG

@patreon/studio

Version:

Patreon Studio Design System

34 lines (33 loc) 1.99 kB
'use client'; import React, { useEffect, useRef } from 'react'; import { BodyText } from '../BodyText'; import { CheckMark, Indeterminate } from './Icons'; import { StyledCheckbox, StyledCheckboxContainer, StyledLabel, StyledSynthethicCheckbox, TextContainer, } from './styled-components'; export const Checkbox = React.forwardRef(function Checkbox({ autoFocus, checked, 'data-tag': dataTag, disabled, hideLabel, id, indeterminate = false, label, labelPosition = 'right', name, onBlur, onChange, onFocus, role = 'checkbox', size = 'md', type = 'checkbox', value, }, givenRef) { const localRef = useRef(null); const ref = givenRef ?? localRef; const isChecked = checked || false; useEffect(() => { if (ref.current) { ref.current.indeterminate = indeterminate; } }); return (<StyledLabel disabled={disabled} labelPosition={labelPosition}> <StyledCheckboxContainer labelPosition={labelPosition} sizeValue={size}> <StyledCheckbox aria-checked={indeterminate ? 'mixed' : isChecked} aria-label={hideLabel && typeof label === 'string' ? label : undefined} // TODO (legacied jsx-a11y/no-autofocus) // This failure is legacied in and should be updated. DO NOT COPY. // eslint-disable-next-line jsx-a11y/no-autofocus autoFocus={autoFocus} checked={isChecked} data-tag={dataTag} disabled={disabled} id={id} name={name} onBlur={onBlur} onChange={onChange} onFocus={onFocus} ref={ref} role={role} sizeValue={size} type={type} value={value}/> <StyledSynthethicCheckbox sizeValue={size} data-tag="synthetic-container"> {indeterminate ? <Indeterminate size={size}/> : isChecked ? <CheckMark size={size}/> : null} </StyledSynthethicCheckbox> </StyledCheckboxContainer> {!hideLabel && (<TextContainer> <BodyText as="span" size={size} data-tag="label"> {label} </BodyText> </TextContainer>)} </StyledLabel>); }); //# sourceMappingURL=index.jsx.map