"use client"; import * as SwitchPrimitives from "@radix-ui/react-switch"; import { cva, VariantProps } from "class-variance-authority"; import * as React from "react"; import { cn } from "@/lib/cn"; type SwitchVariants = VariantProps; const switchVariants = cva("", { variants: { size: { default: "h-[24px] w-[44px]", small: "h-[18px] w-[36px]", }, variant: { default: [ "dark:data-[state=checked]:bg-netbird dark:data-[state=unchecked]:bg-nb-gray-700", "dark:data-[state=checked]:hover:bg-netbird-500 dark:data-[state=unchecked]:hover:bg-nb-gray-600", "data-[state=checked]:bg-neutral-900 data-[state=unchecked]:bg-neutral-200", "data-[state=checked]:hover:bg-neutral-800 data-[state=unchecked]:hover:bg-neutral-300", ], "red-green": [ "dark:data-[state=checked]:bg-red-600 dark:data-[state=unchecked]:bg-nb-gray-700", "dark:data-[state=checked]:hover:bg-red-500 dark:data-[state=unchecked]:hover:bg-nb-gray-600", "data-[state=checked]:bg-red-500 data-[state=unchecked]:bg-red-200", "data-[state=checked]:hover:bg-red-400 data-[state=unchecked]:hover:bg-red-300", ], red: [ "dark:data-[state=checked]:bg-red-600 dark:data-[state=unchecked]:bg-nb-gray-700", "dark:data-[state=checked]:hover:bg-red-500 dark:data-[state=unchecked]:hover:bg-nb-gray-600", "data-[state=checked]:bg-red-500 data-[state=unchecked]:bg-red-200", "data-[state=checked]:hover:bg-red-400 data-[state=unchecked]:hover:bg-red-300", ], }, "thumb-size": { default: "h-5 w-5 data-[state=checked]:translate-x-5", small: "h-[14px] w-[14px] data-[state=checked]:translate-x-[17px]", }, }, }); const ToggleSwitch = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & SwitchVariants & { dataCy?: string } >( ( { className, size = "default", variant = "default", dataCy, ...props }, ref, ) => ( { e.stopPropagation(); props.onClick?.(e); }} ref={ref} > ), ); ToggleSwitch.displayName = SwitchPrimitives.Root.displayName; export { ToggleSwitch };