/* Copyright 2026 Marimo. All rights reserved. */ import { cva, type VariantProps } from "class-variance-authority"; import { Switch as SwitchPrimitives } from "radix-ui"; import * as React from "react"; import { cn } from "@/utils/cn"; const switchVariants = cva( "peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input", { variants: { size: { default: "h-6 w-11 mb-1", sm: "h-4.5 w-8.5", xs: "h-4 w-7", }, }, defaultVariants: { size: "default", }, }, ); const switchThumbVariants = cva( "pointer-events-none block rounded-full bg-background shadow-xs ring-0 transition-transform", { variants: { size: { default: "h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0", sm: "h-3.5 w-3.5 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0", xs: "h-3 w-3 data-[state=checked]:translate-x-3 data-[state=unchecked]:translate-x-0", }, }, defaultVariants: { size: "default", }, }, ); const Switch = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & VariantProps >(({ className, size, ...props }, ref) => ( )); Switch.displayName = SwitchPrimitives.Root.displayName; export { Switch };