quadratic/ui

Switch

A control that allows the user to toggle between checked and not checked.

Installation

Install the following dependencies:

pnpm add @radix-ui/react-switch

Copy and paste the following code into your project.

import * as SwitchPrimitives from "@radix-ui/react-switch";

import { cn } from "~/utils/tailwind";

function Switch({
  className,
  ...props
}: React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>) {
  return (
    <SwitchPrimitives.Root
      className={cn(
        "peer relative inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full p-0.5 transition-colors",
        "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background",
        "disabled:cursor-not-allowed disabled:opacity-50",
        "data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
        className,
      )}
      {...props}
    >
      <SwitchPrimitives.Thumb
        className={cn(
          "pointer-events-none block size-4 rounded-full bg-background ring-0 transition-transform",
          "data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0",
        )}
      />
    </SwitchPrimitives.Root>
  );
}

export { Switch };

Update the import paths to match your project setup.

Usage

import { Switch } from "~/components/ui/Switch";
<Switch />

Examples

Form

Email Notifications

Receive emails about new features.

Receive emails about your account security.