Modal

Modal component supporting various styles.

Show code
Hide code
import { Button, Modal } from '@mylighthouse/prism-react';
import { useState } from 'react';

export default function ModalDefault(): React.JSX.Element {
  const [open, setOpen] = useState(false);

  return (
    <>
      <Button buttonType="secondary" onClick={() => setOpen(true)}>
        Open Modal
      </Button>
      <Modal onOpenChange={setOpen} open={open}>
        <Modal.Header>
          <Modal.Header.Title>What&apos;s new in Lighthouse</Modal.Header.Title>
          <Modal.Header.Close />
        </Modal.Header>
        <Modal.Content>
          <p className="text-300--regular">
            Revenue reports can now be exported in Excel format with
            customizable column layouts.
          </p>
        </Modal.Content>
        <Modal.Footer>
          <Button buttonType="secondary" onClick={() => setOpen(false)}>
            Learn more
          </Button>
          <Button onClick={() => setOpen(false)}>Got it</Button>
        </Modal.Footer>
      </Modal>
    </>
  );
}

API Reference

Modal

Name Default Type Description
open * -- boolean --
onOpenChange -- (open: boolean) => void --
unsafe_modal -- boolean | "trap-focus" Exposed only for testing purposes.
unsafe_portalContainer -- HTMLElement | ShadowRoot | RefObject<HTMLElement | ShadowRoot> Exposed only for testing purposes.

Modal.Header

No component-specific props

Modal.Header.Title

No component-specific props

Modal.Header.Close

Name Default Type Description
buttonType -- "primary" | "secondary" | "critical" | "critical-secondary" | "warning" | "success" | "intelligence" | "intelligence-secondary" | "brand" | "ghost" | "unstyled" --
href -- string --
icon -- IconName --
iconAfter -- IconName --
iconBefore -- IconName --
isDisabled -- boolean --
isLoading -- boolean --
loadingMessage -- string --
size -- "small" | "medium" | "large" --

Modal.Content

No component-specific props

Modal.Footer

No component-specific props