Dialog

A window overlaid on the interface that requires user interaction.

radix-ui.com

Basic Dialogs

Default

<Dialog>
  <DialogTrigger asChild={true}>
    <Button>
      Open Dialog
    </Button>
  </DialogTrigger>
  <DialogContent>
    <DialogHeader>
      <DialogTitle>
        Payment Successful
      </DialogTitle>
      <DialogDescription>
        Your payment has been successfully processed. We've sent you an email with all of the details of your order.
      </DialogDescription>
    </DialogHeader>
    <DialogFooter>
      <Button onClick={() => {}}>
        Got it, thanks!
      </Button>
    </DialogFooter>
  </DialogContent>
</Dialog>

Confirmation Dialog

<Dialog>
  <DialogTrigger asChild={true}>
    <Button variant="danger">
      Delete Item
    </Button>
  </DialogTrigger>
  <DialogContent>
    <DialogHeader>
      <DialogTitle>
        Delete Item
      </DialogTitle>
      <DialogDescription>
        Are you sure you want to delete this item? This action cannot be undone.
      </DialogDescription>
    </DialogHeader>
    <DialogFooter>
      <Button variant="outline">
        Cancel
      </Button>
      <Button variant="danger">
        Delete
      </Button>
    </DialogFooter>
  </DialogContent>
</Dialog>

Dialog Variants

Force Visible Dialog

<Dialog open={false} onOpenChange={() => {}}>
  <DialogTrigger asChild={true}>
    <Button>
      Force Visible Dialog
    </Button>
  </DialogTrigger>
  <DialogContent forceVisible={true} className="max-w-sm">
    <DialogHeader>
      <DialogTitle>
        Can't Close This Dialog
      </DialogTitle>
      <DialogDescription>
        This dialog has the forceVisible prop set, preventing it from being closed by clicking outside or pressing ESC.
      </DialogDescription>
    </DialogHeader>
    <DialogFooter>
      <Button onClick={() => {}}>
        Close Dialog
      </Button>
    </DialogFooter>
  </DialogContent>
</Dialog>

Dialog Props

Hide Close Button

<Dialog>
  <DialogTrigger asChild={true}>
    <Button>
      No Close Button
    </Button>
  </DialogTrigger>
  <DialogContent hideCloseButton={true}>
    <DialogHeader>
      <DialogTitle>
        No Close Button
      </DialogTitle>
      <DialogDescription>
        This dialog has the hideCloseButton prop set, removing the default close button.
      </DialogDescription>
    </DialogHeader>
    <DialogFooter>
      <DialogTrigger asChild={true}>
        <Button>
          Close Dialog
        </Button>
      </DialogTrigger>
    </DialogFooter>
  </DialogContent>
</Dialog>