Files
englishPk/components/ui/switch.tsx
T
2026-06-29 23:56:38 +08:00

34 lines
1014 B
TypeScript

"use client";
import * as React from "react";
import { cn } from "@/lib/utils";
export interface SwitchProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
checked?: boolean;
}
const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(({ className, checked, ...props }, ref) => (
<button
type="button"
role="switch"
aria-checked={checked}
ref={ref}
className={cn(
"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 disabled:cursor-not-allowed disabled:opacity-50",
checked ? "bg-primary" : "bg-input",
className,
)}
{...props}
>
<span
className={cn(
"pointer-events-none block size-5 rounded-full bg-background shadow-lg ring-0 transition-transform",
checked ? "translate-x-5" : "translate-x-0",
)}
/>
</button>
));
Switch.displayName = "Switch";
export { Switch };