langfuse
46 строк · 1.5 Кб
1"use client";
2
3import * as React from "react";
4import * as TogglePrimitive from "@radix-ui/react-toggle";
5import { cva, type VariantProps } from "class-variance-authority";
6
7import { cn } from "@/src/utils/tailwind";
8
9const toggleVariants = cva(
10"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
11{
12variants: {
13variant: {
14default: "bg-transparent",
15outline:
16"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground",
17},
18size: {
19default: "h-10 px-3",
20xs: "h-6 px-1.5",
21sm: "h-9 px-2.5",
22lg: "h-11 px-5",
23},
24},
25defaultVariants: {
26variant: "default",
27size: "default",
28},
29},
30);
31
32const Toggle = React.forwardRef<
33React.ElementRef<typeof TogglePrimitive.Root>,
34React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &
35VariantProps<typeof toggleVariants>
36>(({ className, variant, size, ...props }, ref) => (
37<TogglePrimitive.Root
38ref={ref}
39className={cn(toggleVariants({ variant, size, className }))}
40{...props}
41/>
42));
43
44Toggle.displayName = TogglePrimitive.Root.displayName;
45
46export { Toggle, toggleVariants };
47