slopus--happy
98e40dac97
CLI Smoke Test / smoke-test-linux (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-linux (24) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (24) (push) Has been cancelled
Expo App TypeScript typecheck / typecheck (push) Has been cancelled
27 行
749 B
TypeScript
27 行
749 B
TypeScript
import { useState } from 'react'
|
|
import './ToggleSwitch.css'
|
|
|
|
interface ToggleSwitchProps {
|
|
label: string
|
|
defaultChecked?: boolean
|
|
}
|
|
|
|
export function ToggleSwitch({ label, defaultChecked = false }: ToggleSwitchProps) {
|
|
const [checked, setChecked] = useState(defaultChecked)
|
|
|
|
return (
|
|
<button
|
|
type="button"
|
|
className={checked ? 'toggle-switch toggle-switch--checked' : 'toggle-switch'}
|
|
role="switch"
|
|
aria-checked={checked}
|
|
aria-label={label}
|
|
onClick={() => setChecked((value) => !value)}
|
|
>
|
|
<span className="toggle-switch__track">
|
|
<span className="toggle-switch__thumb" />
|
|
</span>
|
|
</button>
|
|
)
|
|
}
|