summaryrefslogtreecommitdiff
path: root/src/components/ui/switch.tsx
diff options
context:
space:
mode:
authorl3wdfut4pwr <l3wdfut4pwr@gmail.com>2025-12-30 13:46:39 +0200
committerl3wdfut4pwr <l3wdfut4pwr@gmail.com>2025-12-30 13:46:39 +0200
commitc3dcb9c827df6d80ad1b0b1a7c6155561527b39d (patch)
tree76d8b9e706f9e8fcf7acc157a633905ff16c6b74 /src/components/ui/switch.tsx
init
Diffstat (limited to 'src/components/ui/switch.tsx')
-rw-r--r--src/components/ui/switch.tsx30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/components/ui/switch.tsx b/src/components/ui/switch.tsx
new file mode 100644
index 0000000..26fe2c3
--- /dev/null
+++ b/src/components/ui/switch.tsx
@@ -0,0 +1,30 @@
+'use client';
+
+import * as React from 'react';
+import * as SwitchPrimitive from '@radix-ui/react-switch';
+
+import { cn } from '@/lib/utils';
+
+function Switch({
+ className,
+ ...props
+}: React.ComponentProps<typeof SwitchPrimitive.Root>) {
+ return (
+ <SwitchPrimitive.Root
+ data-slot="switch"
+ className={cn(
+ 'peer data-[state=checked]:bg-violet data-[state=unchecked]:bg-light-violet focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[18px] w-10 shrink-0 items-center rounded-full border border-transparent transition-all duration-200 ease-out outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
+ className,
+ )}
+ {...props}
+ >
+ <SwitchPrimitive.Thumb
+ data-slot="switch-thumb"
+ className={cn(
+ 'bg-light-violet data-[state=unchecked]:bg-violet dark:data-[state=checked]:bg-light-violet pointer-events-none block size-3.5 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[22px] data-[state=unchecked]:translate-x-[2px]',
+ )}
+ />{' '}
+ </SwitchPrimitive.Root>
+ );
+}
+export { Switch };