MDK Logo

SimplePopover

One-line convenience wrapper that pairs a trigger with floating content — no provider boilerplate.

One-line convenience wrapper that pairs a trigger with floating content — no provider boilerplate.

import { SimplePopover } from "@tetherto/mdk-react-devkit";
PropStatusTypeDefaultDescription
triggerRequiredReact.ReactNodeElement that triggers the popover
contentRequiredReact.ReactNodePopover content
sideOptionalPosition | undefined"bottom"Position of the popover relative to trigger
alignOptionalFlexAlign | undefined"center"Alignment of the popover
sideOffsetOptionalnumber | undefined8Distance from the trigger in pixels
showArrowOptionalboolean | undefinedfalseWhether to show the arrow
showCloseOptionalboolean | undefinedfalseWhether to show a close button
classNameOptionalstring | undefinedAdditional class for content
openOptionalboolean | undefinedControlled open state
onOpenChangeOptional((open: boolean) => void) | undefinedCallback when open state changes

Usage

Floating panel anchored to a trigger element. Built on Radix UI; use the composable parts for full control, or SimplePopover for the common case.

Composition

<Popover>
  <PopoverTrigger asChild><Button>Open</Button></PopoverTrigger>
  <PopoverContent side="bottom" align="start" showArrow showClose>
    <p>Hello!</p>
  </PopoverContent>
</Popover>

Popover (root) props

PropTypeRequiredDefaultDescription
openbooleannoControlled open state.
defaultOpenbooleannofalseUncontrolled initial state.
onOpenChange(open: boolean) => voidnoOpen-state change handler.
modalbooleannofalseTrap focus inside the panel.

PopoverContent props

PropTypeRequiredDefaultDescription
side"top" | "right" | "bottom" | "left"no"bottom"Side relative to the trigger.
align"start" | "center" | "end"no"center"Alignment along the side.
sideOffsetnumberno8Distance from the trigger (px).
showArrowbooleannofalseRender a directional arrow.
showClosebooleannofalseRender a close (×) button.
classNamestringnoContent class names.

Notes

  • PopoverContent automatically portals to document.body.
  • For tooltips that appear on hover, use <Tooltip> instead.

Example

/** * Runnable example for Popover. */import { Button, Popover, PopoverContent, PopoverTrigger } from '@tetherto/mdk-react-devkit'export const PopoverExample = () => {  return (    <Popover>      <PopoverTrigger asChild>        <Button>Filters</Button>      </PopoverTrigger>      <PopoverContent side="bottom" align="start" showArrow showClose>        <div style={{ display: 'flex', flexDirection: 'column', gap: 8, minWidth: 220 }}>          <strong>Filter by</strong>          <p style={{ margin: 0 }}>Place your filter form here.</p>        </div>      </PopoverContent>    </Popover>  )}