gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/components/ui/toggle-group.tsx · v0.3.0-alpha1
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 3b7feef Mrdn 2y ago import { cn } from "@marzneshin/utils"
6 3b7feef Mrdn 2y ago import { toggleVariants } from "@marzneshin/components/ui/toggle"
7 3b7feef Mrdn 2y ago
8 3b7feef Mrdn 2y ago const ToggleGroupContext = React.createContext<
9 3b7feef Mrdn 2y ago VariantProps<typeof toggleVariants>
10 3b7feef Mrdn 2y ago >({
11 3b7feef Mrdn 2y ago size: "default",
12 3b7feef Mrdn 2y ago variant: "default",
13 3b7feef Mrdn 2y ago })
14 3b7feef Mrdn 2y ago
15 3b7feef Mrdn 2y ago const ToggleGroup = React.forwardRef<
16 3b7feef Mrdn 2y ago React.ElementRef<typeof ToggleGroupPrimitive.Root>,
17 3b7feef Mrdn 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 3b7feef Mrdn 2y ago <ToggleGroupPrimitive.Root
21 3b7feef Mrdn 2y ago ref={ref}
22 3b7feef Mrdn 2y ago className={cn("flex items-center justify-center gap-1", className)}
23 3b7feef Mrdn 2y ago {...props}
24 3b7feef Mrdn 2y ago >
25 3b7feef Mrdn 2y ago <ToggleGroupContext.Provider value={{ variant, size }}>
26 3b7feef Mrdn 2y ago {children}
27 3b7feef Mrdn 2y ago </ToggleGroupContext.Provider>
28 3b7feef Mrdn 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 3b7feef Mrdn 2y ago React.ElementRef<typeof ToggleGroupPrimitive.Item>,
35 3b7feef Mrdn 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 3b7feef Mrdn 2y ago const context = React.useContext(ToggleGroupContext)
39 3b7feef Mrdn 2y ago
40 3b7feef Mrdn 2y ago return (
41 3b7feef Mrdn 2y ago <ToggleGroupPrimitive.Item
42 3b7feef Mrdn 2y ago ref={ref}
43 3b7feef Mrdn 2y ago className={cn(
44 3b7feef Mrdn 2y ago toggleVariants({
45 3b7feef Mrdn 2y ago variant: context.variant || variant,
46 3b7feef Mrdn 2y ago size: context.size || size,
47 3b7feef Mrdn 2y ago }),
48 3b7feef Mrdn 2y ago className
49 3b7feef Mrdn 2y ago )}
50 3b7feef Mrdn 2y ago {...props}
51 3b7feef Mrdn 2y ago >
52 3b7feef Mrdn 2y ago {children}
53 3b7feef Mrdn 2y ago </ToggleGroupPrimitive.Item>
54 3b7feef Mrdn 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 }