Skip to main content

Dialog

note

This component is intended for staff-facing use only.

Use a dialog to:

  • have a user confirm a potentially dangerous or destructive action
  • allow a user to "peek" at the details of something without losing the context of the page underneath

Dialogs should only allow a user to take a single action. If many actions are possible, use a whole page instead.

React

Our dialog component is only compatible with React. It uses Radix UI Dialog for accessible modal behaviour.

import React, { useState } from "react"
import Dialog from "lbh-frontend/lbh/components/lbh-dialog"

const DialogExample = () => {
const [open, setOpen] = useState(false)

return (
<>
<button
onClick={() => setOpen(!open)}
className="govuk-button lbh-button"
>
Preview dialog
</button>

<Dialog
title="Are you sure?"
isOpen={open}
onDismiss={() => setOpen(false)}
>
<p className="lbh-body">The record will be permanently deleted.</p>

<div className="lbh-dialog__actions">
<a href="#" className="govuk-button lbh-button">
Yes, delete
</a>

<button
onClick={() => setOpen(false)}
className="lbh-link lbh-link--no-visited-state"
>
No, cancel
</button>
</div>
</Dialog>
</>
)
}

export default DialogExample