Nebula

modal

Import

import {
  Modal,
  ModalDialog,
  ModalDialogHeader,
  ModalDialogBody,
  ModalDialogFooter,
} from '@xpanseinc/nebula'

Usage

export const ExampleDialog = () => {
  const [isOpen, setIsOpen] = useState(false)
  const onClose = () => {
    setIsOpen(false)
  }
  return (
    <>
      <Button onClick={() => setIsOpen(true)}>Open modal</Button>
      <Modal isOpen={isOpen} onClose={onClose}>
        <ModalDialog>
          <ModalDialogHeader>Modal title</ModalDialogHeader>
          <ModalDialogBody>
            <div
              css={theme => ({
                padding: '16px 24px',
                ...theme.typography.header.sm.light,
              })}
            >
              Sit nulla est ex deserunt exercitation anim occaecat. Nostrud
              ullamco deserunt aute id consequat veniam incididunt duis in sint
              irure nisi. Mollit officia cillum Lorem ullamco minim nostrud elit
              officia tempor esse quis. Sunt ad dolore quis aute consequat.
              Magna exercitation reprehenderit magna aute tempor cupidatat
              consequat elit dolor adipisicing. Mollit dolor eiusmod sunt ex
              incididunt cillum quis. Velit duis sit officia eiusmod Lorem
              aliqua enim laboris do dolor eiusmod. Et mollit incididunt nisi
              consectetur esse laborum eiusmod pariatur proident.
            </div>
          </ModalDialogBody>
          <ModalDialogFooter>
            <Button onClick={() => onClose()}>Close</Button>
          </ModalDialogFooter>
        </ModalDialog>
      </Modal>
    </>
  )
}
<ExampleDialog />

Sizes

Use the size prop to adjust the width of the dialog. Values can be sm, md, lg.

export const ExampleDialog = ({ size, children }) => {
  const [isOpen, setIsOpen] = useState(false)
  const onClose = () => {
    setIsOpen(false)
  }
  return (
    <>
      <Button onClick={() => setIsOpen(true)}>Open {size} modal</Button>
      <Modal isOpen={isOpen} onClose={onClose}>
        <ModalDialog size={size}>
          <ModalDialogHeader>Modal title</ModalDialogHeader>
          <ModalDialogBody>
            <div
              css={theme => ({
                padding: '16px 24px',
                ...theme.typography.header.sm.light,
              })}
            >
              Sit nulla est ex deserunt exercitation anim occaecat. Nostrud
              ullamco deserunt aute id consequat veniam incididunt duis in sint
              irure nisi. Mollit officia cillum Lorem ullamco minim nostrud elit
              officia tempor esse quis. Sunt ad dolore quis aute consequat.
              Magna exercitation reprehenderit magna aute tempor cupidatat
              consequat elit dolor adipisicing. Mollit dolor eiusmod sunt ex
              incididunt cillum quis. Velit duis sit officia eiusmod Lorem
              aliqua enim laboris do dolor eiusmod. Et mollit incididunt nisi
              consectetur esse laborum eiusmod pariatur proident.
            </div>
          </ModalDialogBody>
          <ModalDialogFooter>
            <Button onClick={() => onClose()}>Close</Button>
          </ModalDialogFooter>
        </ModalDialog>
      </Modal>
    </>
  )
}
<HStack spacing={16}>
  <ExampleDialog size="sm" />

  <ExampleDialog size="md" />

  <ExampleDialog size="lg" />
</HStack>