gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/common/components/ui/toggle-group.tsx · master
Source
1 3b7feef Mrdn 2y ago import * as React from "react"
2 3b7feef Mrdn 2y ago import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group"
3 3b7feef Mrdn 2y ago import { VariantProps } from "class-variance-authority"
4 3b7feef Mrdn 2y ago
5 d636f3f Dawsh 2y ago import { cn } from "@marzneshin/common/utils"
6 7389ad0 Mardin 2y ago import { toggleVariants } from "@marzneshin/common/components/ui/toggle"
7 3b7feef Mrdn 2y ago
8 3b7feef Mrdn 2y ago const ToggleGroupContext = React.createContext<
9 d636f3f Dawsh 2y ago VariantProps<typeof toggleVariants>
10 3b7feef Mrdn 2y ago >({
11 d636f3f Dawsh 2y ago size: "default",
12 d636f3f Dawsh 2y ago variant: "default",
13 3b7feef Mrdn 2y ago })
14 3b7feef Mrdn 2y ago
15 3b7feef Mrdn 2y ago const ToggleGroup = React.forwardRef<
16 d636f3f Dawsh 2y ago React.ElementRef<typeof ToggleGroupPrimitive.Root>,
17 d636f3f Dawsh 2y ago React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &
18 3b7feef Mrdn 2y ago VariantProps<typeof toggleVariants>
19 3b7feef Mrdn 2y ago >(({ className, variant, size, children, ...props }, ref) => (
20 d636f3f Dawsh 2y ago <ToggleGroupPrimitive.Root
21 d636f3f Dawsh 2y ago ref={ref}
22 d636f3f Dawsh 2y ago className={cn("flex items-center justify-center gap-1", className)}
23 d636f3f Dawsh 2y ago {...props}
24 d636f3f Dawsh 2y ago >
25 d636f3f Dawsh 2y ago <ToggleGroupContext.Provider value={{ variant, size }}>
26 d636f3f Dawsh 2y ago {children}
27 d636f3f Dawsh 2y ago </ToggleGroupContext.Provider>
28 d636f3f Dawsh 2y ago </ToggleGroupPrimitive.Root>
29 3b7feef Mrdn 2y ago ))
30 3b7feef Mrdn 2y ago
31 3b7feef Mrdn 2y ago ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName
32 3b7feef Mrdn 2y ago
33 3b7feef Mrdn 2y ago const ToggleGroupItem = React.forwardRef<
34 d636f3f Dawsh 2y ago React.ElementRef<typeof ToggleGroupPrimitive.Item>,
35 d636f3f Dawsh 2y ago React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &
36 3b7feef Mrdn 2y ago VariantProps<typeof toggleVariants>
37 3b7feef Mrdn 2y ago >(({ className, children, variant, size, ...props }, ref) => {
38 d636f3f Dawsh 2y ago const context = React.useContext(ToggleGroupContext)
39 d636f3f Dawsh 2y ago
40 d636f3f Dawsh 2y ago return (
41 d636f3f Dawsh 2y ago <ToggleGroupPrimitive.Item
42 d636f3f Dawsh 2y ago ref={ref}
43 d636f3f Dawsh 2y ago className={cn(
44 d636f3f Dawsh 2y ago toggleVariants({
45 d636f3f Dawsh 2y ago variant: context.variant || variant,
46 d636f3f Dawsh 2y ago size: context.size || size,
47 d636f3f Dawsh 2y ago }),
48 d636f3f Dawsh 2y ago className
49 d636f3f Dawsh 2y ago )}
50 d636f3f Dawsh 2y ago {...props}
51 d636f3f Dawsh 2y ago >
52 d636f3f Dawsh 2y ago {children}
53 d636f3f Dawsh 2y ago </ToggleGroupPrimitive.Item>
54 d636f3f Dawsh 2y ago )
55 3b7feef Mrdn 2y ago })
56 3b7feef Mrdn 2y ago
57 3b7feef Mrdn 2y ago ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName
58 3b7feef Mrdn 2y ago
59 3b7feef Mrdn 2y ago export { ToggleGroup, ToggleGroupItem }