@mks2508/mks-ui
Components

Dialog

Modal dialog with animated enter/exit transitions and focus management.

Dialog

A modal dialog overlay with spring-based enter/exit animations and automatic focus management. Built on Base UI Dialog with Motion animations.

Import

import { Dialog, DialogTrigger, DialogPortal, DialogBackdrop, DialogPopup, DialogHeader, DialogTitle, DialogDescription, DialogFooter, DialogClose } from '@mks2508/mks-ui/react';

Basic Usage

<Dialog>
  <DialogTrigger>
    <Button>Open Dialog</Button>
  </DialogTrigger>
  <DialogPortal>
    <DialogBackdrop />
    <DialogPopup>
      <DialogHeader>
        <DialogTitle>Are you sure?</DialogTitle>
        <DialogDescription>
          This action cannot be undone.
        </DialogDescription>
      </DialogHeader>
      <DialogFooter>
        <DialogClose>
          <Button variant="outline">Cancel</Button>
        </DialogClose>
        <Button>Confirm</Button>
      </DialogFooter>
    </DialogPopup>
  </DialogPortal>
</Dialog>

Animation Direction

The DialogPopup accepts a from prop to control the 3D flip animation direction:

<DialogPopup from="top">    {/* Flips in from top */}
<DialogPopup from="bottom"> {/* Flips in from bottom */}
<DialogPopup from="left">   {/* Flips in from left */}
<DialogPopup from="right">  {/* Flips in from right */}

Controlled

const [open, setOpen] = useState(false);

<Dialog open={open} onOpenChange={setOpen}>
  <DialogPortal>
    <DialogBackdrop />
    <DialogPopup>
      <DialogHeader>
        <DialogTitle>Controlled Dialog</DialogTitle>
      </DialogHeader>
      <p>This dialog is controlled externally.</p>
    </DialogPopup>
  </DialogPortal>
</Dialog>

<Button onClick={() => setOpen(true)}>Open</Button>

API Reference

ComponentKey PropsDescription
Dialogopen, defaultOpen, onOpenChangeRoot provider
DialogTriggerasChildTrigger element
DialogPortalPortal with AnimatePresence
DialogBackdroptransition, slotsAnimated backdrop overlay
DialogPopupfrom, transition, slotsModal content with flip animation
DialogHeaderslotsHeader layout
DialogTitleslotsTitle text
DialogDescriptionslotsDescription text
DialogFooterslotsFooter with actions
DialogCloseslotsClose trigger