A popover component in neobrutalism style.
1"use client"
2
3import * as PopoverPrimitive from "@radix-ui/react-popover"
4
5import * as React from "react"
6
7import { cn } from "@/lib/utils"
8
9function Popover({
10 ...props
11}: React.ComponentProps<typeof PopoverPrimitive.Root>) {
12 return <PopoverPrimitive.Root data-slot="popover" {...props} />
13}
14
15function PopoverTrigger({
16 ...props
17}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {
18 return <PopoverPrimitive.Trigger data-slot="popover-trigger" {...props} />
19}
20
21function PopoverContent({
22 className,
23 align = "center",
24 sideOffset = 4,
25 ...props
26}: React.ComponentProps<typeof PopoverPrimitive.Content>) {
27 return (
28 <PopoverPrimitive.Portal>
29 <PopoverPrimitive.Content
30 data-slot="popover-content"
31 align={align}
32 sideOffset={sideOffset}
33 className={cn(
34 "z-50 w-72 rounded-base border-2 border-border bg-main p-4 text-foreground outline-none 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 origin-(--radix-popover-content-transform-origin)",
35 className,
36 )}
37 {...props}
38 />
39 </PopoverPrimitive.Portal>
40 )
41}
42
43export { Popover, PopoverTrigger, PopoverContent }
44