Spaces:
Running
Running
| 'use client'; | |
| import * as React from 'react'; | |
| import { cn } from '@/lib/utils'; | |
| interface SwitchProps { | |
| checked: boolean; | |
| onCheckedChange: (checked: boolean) => void; | |
| className?: string; | |
| } | |
| export function Switch({ checked, onCheckedChange, className }: SwitchProps) { | |
| return ( | |
| <button | |
| type="button" | |
| role="switch" | |
| aria-checked={checked} | |
| onClick={() => onCheckedChange(!checked)} | |
| className={cn( | |
| "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50", | |
| checked ? "bg-primary" : "bg-input/50 bg-gray-200 dark:bg-gray-700", | |
| className | |
| )} | |
| > | |
| <span | |
| className={cn( | |
| "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform", | |
| checked ? "translate-x-5 bg-white" : "translate-x-0 bg-white" | |
| )} | |
| /> | |
| </button> | |
| ); | |
| } | |