Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 2x 2x 2x 12x 2x 2x | /* eslint-disable no-ternary */
import { ForwardedRef, forwardRef } from "react"
import { Input, Label, Switch, SwitchAndLabel, Wrapper } from "./styled"
import { ComponentProps } from "."
const Toggle = forwardRef(
(
{
checked,
className,
defaultChecked,
disabled = false,
inputId,
label,
labelId,
name,
onChange,
onKeyDown,
switchId
}: ComponentProps,
ref: ForwardedRef<HTMLInputElement>
) => (
<Wrapper className={className}>
<SwitchAndLabel $hasLabel={Boolean(label)}>
<Input
checked={checked}
defaultChecked={defaultChecked}
disabled={disabled}
id={inputId}
name={name}
onChange={onChange}
ref={ref}
type="checkbox"
/>
<Switch
aria-checked={checked}
aria-disabled={disabled}
aria-labelledby={labelId}
htmlFor={inputId}
id={switchId}
onKeyDown={onKeyDown}
role="switch"
tabIndex={0}
/>
{label ? (
<Label htmlFor={inputId} id={labelId}>
{label}
</Label>
) : null}
</SwitchAndLabel>
</Wrapper>
)
)
Toggle.displayName = "Toggle"
export default Toggle
|