Command Palette

Search for a command to run...

Popover

Popovers are small overlays that display additional information about an element when the user clicks on it.

Installation

Follow these simple steps to add the Popover component to your project:

Install Dependencies

pnpm add @radix-ui/react-popover 

Create a new file components/ui/popover.tsx and copy the code below:

"use client";
 
import * as React from "react";
import * as PopoverPrimitive from "@radix-ui/react-popover";
 
import { cn } from "@/lib/utils";
 
function Popover({
    ...props
}: React.ComponentProps<typeof PopoverPrimitive.Root>) {
    return <PopoverPrimitive.Root data-slot="popover" {...props} />;
}
 
function PopoverTrigger({
    ...props
}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {
    return <PopoverPrimitive.Trigger data-slot="popover-trigger" {...props} />;
}
 
function PopoverContent({
    className,
    align = "center",
    sideOffset = 4,
    ...props
}: React.ComponentProps<typeof PopoverPrimitive.Content>) {
    return (
        <PopoverPrimitive.Portal>
            <PopoverPrimitive.Content
                data-slot="popover-content"
                align={align}
                sideOffset={sideOffset}
                className={cn(
                    "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 outline-hidden z-50 w-72 rounded-md border dark:border-neutral-800 bg-popover p-4 text-popover-foreground shadow-md",
                    className,
                )}
                {...props}
            />
        </PopoverPrimitive.Portal>
    );
}
 
function PopoverAnchor({
    ...props
}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {
    return <PopoverPrimitive.Anchor data-slot="popover-anchor" {...props} />;
}
 
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };

Adjust the import paths in both files according to your project's structure.