Pho

Dialog

A modal dialog built on Base UI Dialog — focus trapping, scroll locking, and Escape / outside-click dismissal handled for you. The squircle panel animates in and out via Base UI’s data-[starting-style] / data-[ending-style] hooks.

Import

import { Dialog } from "@photon/pho-ui/components/dialog";

Usage

<Dialog.Root>
  <Dialog.Trigger render={<Button variant="secondary">Open</Button>} />
  <Dialog.Content title="Delete project" description="This cannot be undone.">
    <div className="mt-4 flex justify-end gap-3">
      <Dialog.Close render={<Button variant="tertiary">Cancel</Button>} />
      <Dialog.Close render={<Button variant="error">Delete</Button>} />
    </div>
  </Dialog.Content>
</Dialog.Root>

Parts

Dialog.Root · Dialog.Trigger · Dialog.Content (portal + backdrop + panel) · Dialog.Title · Dialog.Description · Dialog.Close. For full control, drop down to Dialog.Portal / Dialog.Backdrop / Dialog.Popup.