"use client" import * as React from "react" import * as SwitchPrimitives from "@radix-ui/react-switch" import { cn } from "@/lib/utils" import { cva, type VariantProps } from "class-variance-authority"; import { color, size } from "@/lib/type"; const switchVariants = cva( "peer relative inline-flex items-center [&_.content-box>svg]:h-3 [&_.content-box>svg]:w-3 [&_.content-box]:text-primary-foreground [&_.content-box]:text-[10px] justify-start group flex-shrink-0 cursor-pointer rounded-full 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 data-[state=unchecked]:bg-default-300", { variants: { color: { default: "data-[state=checked]:bg-default ", primary: "data-[state=checked]:bg-primary ", secondary: "data-[state=checked]:bg-secondary ", info: "data-[state=checked]:bg-info ", warning: "data-[state=checked]:bg-warning ", success: "data-[state=checked]:bg-success ", destructive: "data-[state=checked]:bg-destructive ", dark: "data-[state=checked]:bg-foreground ", }, size: { sm: "h-4 w-[30px] [&_.content-box]:text-[7px] [&_.content-box>svg]:h-2.5 [&_.content-box>svg]:w-2.5 ", default: "h-5 w-[38px] ", md: "h-6 w-[46px]", lg: "h-7 w-[48px] ", }, }, defaultVariants: { color: "default", size: "default", }, } ); interface SwitchProps extends React.ComponentPropsWithoutRef, VariantProps { color?: color size?:size startContent?: React.ReactNode | string endContent?: React.ReactNode | string } const Switch = React.forwardRef< React.ElementRef, SwitchProps >(({ color, size, startContent, endContent, className, ...props }, ref) => ( {startContent && ( {startContent} )} {endContent && ( {endContent} )} )); Switch.displayName = SwitchPrimitives.Root.displayName export { Switch }