Skip to main content

Modal - Basic

Modal.ContentComposition provides a simple curated way to display standard dialog modals. This component is based on the Radix-Ui Dialog custom container concept.

Note: these modals automatically open in a portal at the end of body, with max z-index, so will cover anything previously opened, including other modals/popovers.

Example

Use the exposed Modal object from the library to access all the components.

import { Modal, Button, Text, Box } from '@streamelements/frontend-ui';

export function MyComponent() {
return (
<Modal.ContentComposition {...args} data-uid="blah" css={{ width: 350 }}>
<Modal.Trigger>
<Button>Open Modal</Button>
</Modal.Trigger>
Are you sure you want to do this?
<Modal.Actions>
<Modal.Dismiss>
<Button variant="outlined">Cancel</Button>
</Modal.Dismiss>
<Button>Let's rock!</Button>
</Modal.Actions>
</Modal.ContentComposition>
);
}
Modal is available in browser only mode

API

ContentComposition

Main part of the modal, including the card, close icon button, overlay and portal

Name

Type

Default value

Description

defaultOpenboolean
The open state of the dialog when it is initially rendered. Use when you do not need to control its open state.
openboolean
The controlled open state of the dialog. Must be used in conjunction with onOpenChange.
onOpenChangeFunction
Event handler called when the open state of the dialog changes.
(next: boolean) => void
triggerReact.ReactNode
The button opening the modal (saves wiring state up manually)
actionsReact.ReactNode
The modal's action buttons (group multiples with React.Fragment); this applies the correct spacing and small screen behavior

Dismiss

Use this to wrap the cancel action button, to avoid manually wiring it up to close the modal; already has asChild applied