MDK Logo

Overlays

Dialogs, popovers, tooltips, and toast notifications

Overlay components display content above the main interface. All components are built on Radix UI primitives for accessibility.

Prerequisites

Dialog

Modal dialog for forms, confirmations, and focused tasks. Built on Radix UI primitives.

Import

import {
  Dialog,
  DialogTrigger,
  DialogContent,
  DialogHeader,
  DialogTitle,
  DialogDescription,
  DialogFooter,
  DialogClose,
} from '@tetherto/mdk-react-devkit/core'

DialogContent props

PropStatusTypeDefaultDescription
titleOptionalstringnoneDialog title
descriptionOptionalstringnoneDialog description
closableOptionalbooleanfalseShow close button
onCloseOptionalfunctionnoneClose callback
closeOnClickOutsideOptionalbooleantrueClose when clicking outside
closeOnEscapeOptionalbooleantrueClose on Escape key
bareOptionalbooleanfalseMinimal header styling

Basic usage

<Dialog>
  <DialogTrigger asChild>
    <Button>Open Dialog</Button>
  </DialogTrigger>
  <DialogContent title="Confirm Action" closable onClose={() => {}}>
    <p>Are you sure you want to proceed?</p>
    <DialogFooter>
      <DialogClose asChild>
        <Button variant="secondary">Cancel</Button>
      </DialogClose>
      <Button>Confirm</Button>
    </DialogFooter>
  </DialogContent>
</Dialog>

Styling

  • .mdk-dialog__overlay: Background overlay
  • .mdk-dialog__content: Dialog container
  • .mdk-dialog__header: Header area
  • .mdk-dialog__title: Title text
  • .mdk-dialog__description: Description text
  • .mdk-dialog__footer: Footer area

Contextual menu triggered by a button click.

Import

import {
  DropdownMenu,
  DropdownMenuTrigger,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuSeparator,
  DropdownMenuLabel,
  DropdownMenuGroup,
} from '@tetherto/mdk-react-devkit/core'

Basic usage

<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button>Options</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent>
    <DropdownMenuLabel>Actions</DropdownMenuLabel>
    <DropdownMenuItem onClick={() => {}}>Edit</DropdownMenuItem>
    <DropdownMenuItem onClick={() => {}}>Duplicate</DropdownMenuItem>
    <DropdownMenuSeparator />
    <DropdownMenuItem onClick={() => {}} className="text-red-500">
      Delete
    </DropdownMenuItem>
  </DropdownMenuContent>
</DropdownMenu>

Styling

  • .mdk-dropdown-menu__content: Menu container
  • .mdk-dropdown-menu__item: Menu item
  • .mdk-dropdown-menu__label: Label text
  • .mdk-dropdown-menu__separator: Divider line

Popover

Floating content panel triggered by click or hover.

Import

import {
  Popover,
  PopoverTrigger,
  PopoverContent,
} from '@tetherto/mdk-react-devkit/core'

Basic usage

<Popover>
  <PopoverTrigger asChild>
    <Button>Show Details</Button>
  </PopoverTrigger>
  <PopoverContent>
    <p>Additional information goes here.</p>
  </PopoverContent>
</Popover>

Styling

  • .mdk-popover__content: Popover container

Toast

Temporary notification messages.

Import

import { Toast, ToastProvider, ToastViewport, Toaster } from '@tetherto/mdk-react-devkit/core'

Toast props

PropStatusTypeDefaultDescription
titleRequiredstringnoneRequired. Toast title
descriptionOptionalstringnoneAdditional description
variantOptional'success' | 'error' | 'warning' | 'info''info'Toast variant
iconOptionalReactElementnoneCustom icon

ToastViewport props

PropStatusTypeDefaultDescription
positionOptionalToastPosition'bottom-right'Toast position

Available positions: 'top-left', 'top-center', 'top-right', 'bottom-left', 'bottom-center', 'bottom-right'

Setup

import { ToastProvider, ToastViewport } from '@tetherto/mdk-react-devkit/core'

function App() {
  return (
    <ToastProvider>
      {/* Your app content */}
      <ToastViewport position="bottom-right" />
    </ToastProvider>
  )
}

Basic usage

import { Toast, ToastProvider, ToastViewport } from '@tetherto/mdk-react-devkit/core'
import { useState } from 'react'

function MyComponent() {
  const [open, setOpen] = useState(false)

  return (
    <>
      <Button onClick={() => setOpen(true)}>Show Toast</Button>
      <Toast
        open={open}
        onOpenChange={setOpen}
        title="Success!"
        description="Your changes have been saved."
        variant="success"
      />
    </>
  )
}

Styling

  • .mdk_toast: Toast container
  • .mdk_toast__header: Header section
  • .mdk_toast__title: Title text
  • .mdk_toast__description: Description text
  • .mdk_toast__close: Close button

Tooltip

Hover-triggered informational popup.

Import

import {
  Tooltip,
  TooltipTrigger,
  TooltipContent,
  TooltipProvider,
} from '@tetherto/mdk-react-devkit/core'

Basic usage

<TooltipProvider>
  <Tooltip>
    <TooltipTrigger asChild>
      <Button variant="icon">
        <InfoIcon />
      </Button>
    </TooltipTrigger>
    <TooltipContent>
      Additional information
    </TooltipContent>
  </Tooltip>
</TooltipProvider>

Styling

  • .mdk-tooltip__content: Tooltip container

On this page