Popover
A small overlay that appears next to a trigger element.
Installation
Implement this component in your project using Yumma CSS, Base UI, and Motion.
pnpm add @base-ui/react motionExamples
Basic
"use client";
import { Popover } from "@base-ui/react/popover";import { ChatCircleIcon } from "@phosphor-icons/react";import { AnimatePresence, motion } from "motion/react";import * as React from "react";
export default function ExamplePopover() { const [open, setOpen] = React.useState(false);
return ( <Popover.Root open={open} onOpenChange={setOpen}> <Popover.Trigger className={`d-f ai-c jc-c d-10 bw-1 bc-silver-2 br-2 bg-white c-slate-10 us-none c-p h:bg-silver-1 fv:os-s fv:ow-2 fv:oo-2 fv:oc-indigo-6 ${ open ? "bg-silver-1" : "" }`} > <ChatCircleIcon size={20} aria-label="Messages" /> </Popover.Trigger> <AnimatePresence> {open && ( <Popover.Portal keepMounted> <Popover.Positioner sideOffset={8}> <Popover.Popup render={ <motion.div initial={{ opacity: 0, scale: 0.95 }} animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.95 }} transition={{ duration: 0.15, ease: "easeOut" }} /> } className="bw-1 bc-silver-2 br-2 bg-white bsh-lg px-4 py-3 c-slate-10 w-56" > <Popover.Title className="fs-sm fw-600 c-slate-10 m-0 mb-1"> Start a conversation </Popover.Title> <Popover.Description className="fs-xs c-slate-8 m-0"> Send a message to your team. </Popover.Description> </Popover.Popup> </Popover.Positioner> </Popover.Portal> )} </AnimatePresence> </Popover.Root> );}API Reference
Check out the Base UI documentation for more information.