Reticle@etched/reticle 0.0.0

Popover

Closes the popover. Use render for a button: render={<Button>Done</Button>}.

Kumo source
import { Button } from "@etched/reticle/button";
import { PopoverClose, PopoverContent, PopoverDescription, PopoverRoot, PopoverTitle, PopoverTrigger } from "@etched/reticle/popover";

export function Preview() {
  return (
    <PopoverRoot>
      <PopoverTrigger render={<Button>Run 1,284</Button>} />
      <PopoverContent>
        <PopoverTitle>Run 1,284</PopoverTitle>
        <PopoverDescription>Passed on bench B-14 in 42 minutes.</PopoverDescription>
        <div className="row">
          <PopoverClose render={<Button size="sm">Done</Button>} />
        </div>
      </PopoverContent>
    </PopoverRoot>
  );
}

Installation

import { PopoverClose, PopoverContent, PopoverDescription, PopoverRoot, PopoverTitle, PopoverTrigger } from "@etched/reticle/popover";

Examples

Title, description and close

openOnHover opens the popover on hover as well as on click.

import { BellIcon } from "@phosphor-icons/react";
import { Button } from "@etched/reticle/button";
import { PopoverClose, PopoverContent, PopoverDescription, PopoverRoot, PopoverTitle, PopoverTrigger } from "@etched/reticle/popover";

export function TitleDescriptionAndClose() {
  return (
    <div className="row">
      <PopoverRoot>
        <PopoverTrigger render={<Button shape="square" aria-label="Notifications" icon={<BellIcon />} />} />
        <PopoverContent>
          <PopoverTitle>Notifications</PopoverTitle>
          <PopoverDescription>You are all caught up.</PopoverDescription>
        </PopoverContent>
      </PopoverRoot>
      <PopoverRoot>
        <PopoverTrigger render={<Button>Run 1,284</Button>} />
        <PopoverContent align="start">
          <PopoverTitle>Run 1,284</PopoverTitle>
          <PopoverDescription>Passed on bench B-14 in 42 minutes.</PopoverDescription>
          <div className="row">
            <PopoverClose render={<Button size="sm">Done</Button>} />
          </div>
        </PopoverContent>
      </PopoverRoot>
      <PopoverRoot>
        <PopoverTrigger openOnHover delay={200} render={<Button variant="ghost">Hover for owner</Button>} />
        <PopoverContent>
          <PopoverTitle>Ana Ruiz</PopoverTitle>
          <PopoverDescription>Owns 12 chips at TPE-2.</PopoverDescription>
        </PopoverContent>
      </PopoverRoot>
    </div>
  );
}

Sides

import { Button } from "@etched/reticle/button";
import { PopoverContent, PopoverDescription, PopoverRoot, PopoverTrigger, type PopoverSide } from "@etched/reticle/popover";

const sides: PopoverSide[] = ["top", "right", "bottom", "left"];

export function Sides() {
  return (
    <div className="row">
      {sides.map((side) => (
        <PopoverRoot key={side}>
          <PopoverTrigger render={<Button variant="outline">{side}</Button>} />
          <PopoverContent side={side}>
            <PopoverDescription>On the {side}.</PopoverDescription>
          </PopoverContent>
        </PopoverRoot>
      ))}
    </div>
  );
}

API reference

PropTypeDefaultDescription
side"top" | "bottom" | "left" | "right""bottom"
align"start" | "center" | "end""center"
sideOffsetnumber8Pixels between the trigger and the popover.
alignOffsetnumber0Pixels along the alignment axis.
positionMethodPositioner["positionMethod"]"absolute""fixed" escapes sticky headers and other stacking contexts.
anchorPositioner["anchor"]โ€“Position against this element, ref or virtual element instead of the trigger.
classNamestringโ€“Class on the panel, for layout such as width.
childrenReactNodeโ€“