summaryrefslogtreecommitdiff
path: root/src/components/ui/checkbox.tsx
diff options
context:
space:
mode:
authorl3wdfut4pwr l3wdfut4pwr <l3wdfut4pwr@gmail.com>2026-01-28 16:57:26 +0200
committerl3wdfut4pwr l3wdfut4pwr <l3wdfut4pwr@gmail.com>2026-01-28 16:57:26 +0200
commitb7af1778397c31049ed058dbe5787654514d53ac (patch)
tree554a6ddd3a5b2c732a33d5e6d1e73a3cb14c89c4 /src/components/ui/checkbox.tsx
parentd2d202362688626dd37394460d5c1560f99b93e4 (diff)
add modal tabs
Diffstat (limited to 'src/components/ui/checkbox.tsx')
-rw-r--r--src/components/ui/checkbox.tsx32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/components/ui/checkbox.tsx b/src/components/ui/checkbox.tsx
new file mode 100644
index 0000000..67a7773
--- /dev/null
+++ b/src/components/ui/checkbox.tsx
@@ -0,0 +1,32 @@
+'use client';
+
+import CheckIcon from '@icons/check.svg';
+import * as React from 'react';
+import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
+
+import { cn } from '@/lib/utils';
+
+function Checkbox({
+ className,
+ ...props
+}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {
+ return (
+ <CheckboxPrimitive.Root
+ data-slot="checkbox"
+ className={cn(
+ 'peer border-violet dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-violet focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
+ className,
+ )}
+ {...props}
+ >
+ <CheckboxPrimitive.Indicator
+ data-slot="checkbox-indicator"
+ className="grid place-content-center text-current transition-none"
+ >
+ <CheckIcon className="size-3.5" />
+ </CheckboxPrimitive.Indicator>
+ </CheckboxPrimitive.Root>
+ );
+}
+
+export { Checkbox };