Spaces:
Runtime error
Runtime error
import { memo } from 'react'; | |
import * as SwitchPrimitive from '@radix-ui/react-switch'; | |
import { classNames } from '~/utils/classNames'; | |
interface SwitchProps { | |
className?: string; | |
checked?: boolean; | |
onCheckedChange?: (event: boolean) => void; | |
} | |
export const Switch = memo(({ className, onCheckedChange, checked }: SwitchProps) => { | |
return ( | |
<SwitchPrimitive.Root | |
className={classNames( | |
'relative h-6 w-11 cursor-pointer rounded-full bg-bolt-elements-button-primary-background', | |
'transition-colors duration-200 ease-in-out', | |
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2', | |
'disabled:cursor-not-allowed disabled:opacity-50', | |
'data-[state=checked]:bg-bolt-elements-item-contentAccent', | |
className, | |
)} | |
checked={checked} | |
onCheckedChange={(e) => onCheckedChange?.(e)} | |
> | |
<SwitchPrimitive.Thumb | |
className={classNames( | |
'block h-5 w-5 rounded-full bg-white', | |
'shadow-lg shadow-black/20', | |
'transition-transform duration-200 ease-in-out', | |
'translate-x-0.5', | |
'data-[state=checked]:translate-x-[1.375rem]', | |
'will-change-transform', | |
)} | |
/> | |
</SwitchPrimitive.Root> | |
); | |
}); | |