gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/common/components/ui/dropdown-menu.tsx · v0.6.5
Source
1 88bd1b0 Mrdn 2y ago import * as React from "react"
2 88bd1b0 Mrdn 2y ago import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
3 3c1143b Mardin 2y ago import { Check, ChevronLeft, ChevronRight, Circle } from "lucide-react"
4 88bd1b0 Mrdn 2y ago
5 d636f3f Dawsh 2y ago import { cn } from "@marzneshin/common/utils"
6 88bd1b0 Mrdn 2y ago
7 88bd1b0 Mrdn 2y ago const DropdownMenu = DropdownMenuPrimitive.Root
8 88bd1b0 Mrdn 2y ago
9 88bd1b0 Mrdn 2y ago const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger
10 88bd1b0 Mrdn 2y ago
11 88bd1b0 Mrdn 2y ago const DropdownMenuGroup = DropdownMenuPrimitive.Group
12 88bd1b0 Mrdn 2y ago
13 88bd1b0 Mrdn 2y ago const DropdownMenuPortal = DropdownMenuPrimitive.Portal
14 88bd1b0 Mrdn 2y ago
15 88bd1b0 Mrdn 2y ago const DropdownMenuSub = DropdownMenuPrimitive.Sub
16 88bd1b0 Mrdn 2y ago
17 88bd1b0 Mrdn 2y ago const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup
18 88bd1b0 Mrdn 2y ago
19 88bd1b0 Mrdn 2y ago const DropdownMenuSubTrigger = React.forwardRef<
20 3c1143b Mardin 2y ago React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,
21 3c1143b Mardin 2y ago React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
22 3c1143b Mardin 2y ago inset?: boolean
23 3c1143b Mardin 2y ago arrowDir?: "right" | "left"
24 3c1143b Mardin 2y ago }
25 3c1143b Mardin 2y ago >(({ className, inset, children, arrowDir = "right", ...props }, ref) => (
26 3c1143b Mardin 2y ago <DropdownMenuPrimitive.SubTrigger
27 3c1143b Mardin 2y ago ref={ref}
28 3c1143b Mardin 2y ago className={cn(
29 3c1143b Mardin 2y ago "flex flex-row cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",
30 3c1143b Mardin 2y ago inset && "pl-8",
31 3c1143b Mardin 2y ago arrowDir === "left" && "flex-row-reverse",
32 3c1143b Mardin 2y ago className
33 3c1143b Mardin 2y ago )}
34 3c1143b Mardin 2y ago {...props}
35 3c1143b Mardin 2y ago >
36 3c1143b Mardin 2y ago {children}
37 3c1143b Mardin 2y ago {arrowDir === "right" ?
38 3c1143b Mardin 2y ago <ChevronRight className="ml-auto size-4" /> :
39 3c1143b Mardin 2y ago <ChevronLeft className="mr-auto size-4" />}
40 3c1143b Mardin 2y ago </DropdownMenuPrimitive.SubTrigger>
41 88bd1b0 Mrdn 2y ago ))
42 88bd1b0 Mrdn 2y ago DropdownMenuSubTrigger.displayName =
43 3c1143b Mardin 2y ago DropdownMenuPrimitive.SubTrigger.displayName
44 88bd1b0 Mrdn 2y ago
45 88bd1b0 Mrdn 2y ago const DropdownMenuSubContent = React.forwardRef<
46 3c1143b Mardin 2y ago React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,
47 3c1143b Mardin 2y ago React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>
48 88bd1b0 Mrdn 2y ago >(({ className, ...props }, ref) => (
49 3c1143b Mardin 2y ago <DropdownMenuPrimitive.SubContent
50 3c1143b Mardin 2y ago ref={ref}
51 3c1143b Mardin 2y ago className={cn(
52 3c1143b Mardin 2y ago "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
53 3c1143b Mardin 2y ago className
54 3c1143b Mardin 2y ago )}
55 3c1143b Mardin 2y ago {...props}
56 3c1143b Mardin 2y ago />
57 88bd1b0 Mrdn 2y ago ))
58 88bd1b0 Mrdn 2y ago DropdownMenuSubContent.displayName =
59 3c1143b Mardin 2y ago DropdownMenuPrimitive.SubContent.displayName
60 88bd1b0 Mrdn 2y ago
61 88bd1b0 Mrdn 2y ago const DropdownMenuContent = React.forwardRef<
62 3c1143b Mardin 2y ago React.ElementRef<typeof DropdownMenuPrimitive.Content>,
63 3c1143b Mardin 2y ago React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>
64 88bd1b0 Mrdn 2y ago >(({ className, sideOffset = 4, ...props }, ref) => (
65 3c1143b Mardin 2y ago <DropdownMenuPrimitive.Portal>
66 3c1143b Mardin 2y ago <DropdownMenuPrimitive.Content
67 3c1143b Mardin 2y ago ref={ref}
68 3c1143b Mardin 2y ago sideOffset={sideOffset}
69 3c1143b Mardin 2y ago className={cn(
70 3c1143b Mardin 2y ago "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
71 3c1143b Mardin 2y ago className
72 3c1143b Mardin 2y ago )}
73 3c1143b Mardin 2y ago {...props}
74 3c1143b Mardin 2y ago />
75 3c1143b Mardin 2y ago </DropdownMenuPrimitive.Portal>
76 88bd1b0 Mrdn 2y ago ))
77 88bd1b0 Mrdn 2y ago DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName
78 88bd1b0 Mrdn 2y ago
79 88bd1b0 Mrdn 2y ago const DropdownMenuItem = React.forwardRef<
80 3c1143b Mardin 2y ago React.ElementRef<typeof DropdownMenuPrimitive.Item>,
81 3c1143b Mardin 2y ago React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {
82 3c1143b Mardin 2y ago inset?: boolean
83 3c1143b Mardin 2y ago }
84 88bd1b0 Mrdn 2y ago >(({ className, inset, ...props }, ref) => (
85 3c1143b Mardin 2y ago <DropdownMenuPrimitive.Item
86 3c1143b Mardin 2y ago ref={ref}
87 3c1143b Mardin 2y ago className={cn(
88 3c1143b Mardin 2y ago "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
89 3c1143b Mardin 2y ago inset && "pl-8",
90 3c1143b Mardin 2y ago className
91 3c1143b Mardin 2y ago )}
92 3c1143b Mardin 2y ago {...props}
93 3c1143b Mardin 2y ago />
94 88bd1b0 Mrdn 2y ago ))
95 88bd1b0 Mrdn 2y ago DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName
96 88bd1b0 Mrdn 2y ago
97 88bd1b0 Mrdn 2y ago const DropdownMenuCheckboxItem = React.forwardRef<
98 3c1143b Mardin 2y ago React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,
99 3c1143b Mardin 2y ago React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>
100 88bd1b0 Mrdn 2y ago >(({ className, children, checked, ...props }, ref) => (
101 3c1143b Mardin 2y ago <DropdownMenuPrimitive.CheckboxItem
102 3c1143b Mardin 2y ago ref={ref}
103 3c1143b Mardin 2y ago className={cn(
104 3c1143b Mardin 2y ago "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
105 3c1143b Mardin 2y ago className
106 3c1143b Mardin 2y ago )}
107 3c1143b Mardin 2y ago checked={checked}
108 3c1143b Mardin 2y ago {...props}
109 3c1143b Mardin 2y ago >
110 3c1143b Mardin 2y ago <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
111 3c1143b Mardin 2y ago <DropdownMenuPrimitive.ItemIndicator>
112 3c1143b Mardin 2y ago <Check className="h-4 w-4" />
113 3c1143b Mardin 2y ago </DropdownMenuPrimitive.ItemIndicator>
114 3c1143b Mardin 2y ago </span>
115 3c1143b Mardin 2y ago {children}
116 3c1143b Mardin 2y ago </DropdownMenuPrimitive.CheckboxItem>
117 88bd1b0 Mrdn 2y ago ))
118 88bd1b0 Mrdn 2y ago DropdownMenuCheckboxItem.displayName =
119 3c1143b Mardin 2y ago DropdownMenuPrimitive.CheckboxItem.displayName
120 88bd1b0 Mrdn 2y ago
121 88bd1b0 Mrdn 2y ago const DropdownMenuRadioItem = React.forwardRef<
122 3c1143b Mardin 2y ago React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,
123 3c1143b Mardin 2y ago React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>
124 88bd1b0 Mrdn 2y ago >(({ className, children, ...props }, ref) => (
125 3c1143b Mardin 2y ago <DropdownMenuPrimitive.RadioItem
126 3c1143b Mardin 2y ago ref={ref}
127 3c1143b Mardin 2y ago className={cn(
128 3c1143b Mardin 2y ago "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
129 3c1143b Mardin 2y ago className
130 3c1143b Mardin 2y ago )}
131 3c1143b Mardin 2y ago {...props}
132 3c1143b Mardin 2y ago >
133 3c1143b Mardin 2y ago <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
134 3c1143b Mardin 2y ago <DropdownMenuPrimitive.ItemIndicator>
135 3c1143b Mardin 2y ago <Circle className="h-2 w-2 fill-current" />
136 3c1143b Mardin 2y ago </DropdownMenuPrimitive.ItemIndicator>
137 3c1143b Mardin 2y ago </span>
138 3c1143b Mardin 2y ago {children}
139 3c1143b Mardin 2y ago </DropdownMenuPrimitive.RadioItem>
140 88bd1b0 Mrdn 2y ago ))
141 88bd1b0 Mrdn 2y ago DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName
142 88bd1b0 Mrdn 2y ago
143 88bd1b0 Mrdn 2y ago const DropdownMenuLabel = React.forwardRef<
144 3c1143b Mardin 2y ago React.ElementRef<typeof DropdownMenuPrimitive.Label>,
145 3c1143b Mardin 2y ago React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
146 3c1143b Mardin 2y ago inset?: boolean
147 3c1143b Mardin 2y ago }
148 88bd1b0 Mrdn 2y ago >(({ className, inset, ...props }, ref) => (
149 3c1143b Mardin 2y ago <DropdownMenuPrimitive.Label
150 3c1143b Mardin 2y ago ref={ref}
151 3c1143b Mardin 2y ago className={cn(
152 3c1143b Mardin 2y ago "px-2 py-1.5 text-sm font-semibold",
153 3c1143b Mardin 2y ago inset && "pl-8",
154 3c1143b Mardin 2y ago className
155 3c1143b Mardin 2y ago )}
156 3c1143b Mardin 2y ago {...props}
157 3c1143b Mardin 2y ago />
158 88bd1b0 Mrdn 2y ago ))
159 88bd1b0 Mrdn 2y ago DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName
160 88bd1b0 Mrdn 2y ago
161 88bd1b0 Mrdn 2y ago const DropdownMenuSeparator = React.forwardRef<
162 3c1143b Mardin 2y ago React.ElementRef<typeof DropdownMenuPrimitive.Separator>,
163 3c1143b Mardin 2y ago React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>
164 88bd1b0 Mrdn 2y ago >(({ className, ...props }, ref) => (
165 3c1143b Mardin 2y ago <DropdownMenuPrimitive.Separator
166 3c1143b Mardin 2y ago ref={ref}
167 3c1143b Mardin 2y ago className={cn("-mx-1 my-1 h-px bg-muted", className)}
168 3c1143b Mardin 2y ago {...props}
169 3c1143b Mardin 2y ago />
170 88bd1b0 Mrdn 2y ago ))
171 88bd1b0 Mrdn 2y ago DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName
172 88bd1b0 Mrdn 2y ago
173 88bd1b0 Mrdn 2y ago const DropdownMenuShortcut = ({
174 3c1143b Mardin 2y ago className,
175 3c1143b Mardin 2y ago ...props
176 88bd1b0 Mrdn 2y ago }: React.HTMLAttributes<HTMLSpanElement>) => {
177 3c1143b Mardin 2y ago return (
178 3c1143b Mardin 2y ago <span
179 3c1143b Mardin 2y ago className={cn("ml-auto text-xs tracking-widest opacity-60", className)}
180 3c1143b Mardin 2y ago {...props}
181 3c1143b Mardin 2y ago />
182 3c1143b Mardin 2y ago )
183 88bd1b0 Mrdn 2y ago }
184 88bd1b0 Mrdn 2y ago DropdownMenuShortcut.displayName = "DropdownMenuShortcut"
185 88bd1b0 Mrdn 2y ago
186 88bd1b0 Mrdn 2y ago export {
187 3c1143b Mardin 2y ago DropdownMenu,
188 3c1143b Mardin 2y ago DropdownMenuTrigger,
189 3c1143b Mardin 2y ago DropdownMenuContent,
190 3c1143b Mardin 2y ago DropdownMenuItem,
191 3c1143b Mardin 2y ago DropdownMenuCheckboxItem,
192 3c1143b Mardin 2y ago DropdownMenuRadioItem,
193 3c1143b Mardin 2y ago DropdownMenuLabel,
194 3c1143b Mardin 2y ago DropdownMenuSeparator,
195 3c1143b Mardin 2y ago DropdownMenuShortcut,
196 3c1143b Mardin 2y ago DropdownMenuGroup,
197 3c1143b Mardin 2y ago DropdownMenuPortal,
198 3c1143b Mardin 2y ago DropdownMenuSub,
199 3c1143b Mardin 2y ago DropdownMenuSubContent,
200 3c1143b Mardin 2y ago DropdownMenuSubTrigger,
201 3c1143b Mardin 2y ago DropdownMenuRadioGroup,
202 88bd1b0 Mrdn 2y ago }