Skip to content
Components
@app-studio/components

Modal

A custom content overlay that appears on top of the main screen, with support for headers, bodies, footers, and flexible positioning.

View component source

Import

ts
import { Modal } from '@app-studio/components';

New to the library? Complete installation and provider setup first.

Interactive examples

Try the component, then open Code to copy the complete example.

INTERACTIVE EXAMPLE

Loading preview…

Props

Required props are marked below. A dash indicates an unspecified default. Design system configuration can override implementation defaults.

Scroll horizontally to see every column.

Modal
PropTypeDefaultDescription
buttonColorstring—See the type and source declaration for this property.Source
iconSizeSize
"sm""md""lg""xs""xl"
—See the type and source declaration for this property.Source
shapeShape
"square""rounded"
—Shape preset for the component.Source
isFullScreenboolean—See the type and source declaration for this property.Source
buttonPositionCloseButtonPosition
"left""right""none"
—See the type and source declaration for this property.Source
onClose(() => void)—Called when the user requests dismissal.Source
blurnumber—See the type and source declaration for this property.Source
isOpenboolean—Controls whether the component is open.Source
isClosePreventedboolean—See the type and source declaration for this property.Source
positionPosition
"bottom""left""right""top""center"
—Position of the element or notification.Source
shadowViewProps | Shadow | Elevation—Shadow or elevation styling.Source
idstring—See the type and source declaration for this property.Source
titlestring—Main title displayed by the component.Source
Common inherited styling props (7)

Scroll horizontally to see every column.

Modal inherited
PropTypeDefaultDescription
onClickany—Called when the user activates the component.
mediaRecord<string, CssProps>—See the type and source declaration for this property.
askeyof JSX.IntrinsicElements
"symbol""object""slot""style""title""pattern""form""animate""clipPath""filter""marker""mask""a""abbr""address""area""article""aside""audio""b""base""bdi""bdo""big""blockquote""body""br""button""canvas""caption""center""cite""code""col""colgroup""data""datalist""dd""del""details""dfn""dialog""div""dl""dt""em""embed""fieldset""figcaption""figure""footer""h1""h2""h3""h4""h5""h6""head""header""hgroup""hr""html""i""iframe""img""input""ins""kbd""keygen""label""legend""li""link""main""map""mark""menu""menuitem""meta""meter""nav""noindex""noscript""ol""optgroup""option""output""p""param""picture""pre""progress""q""rp""rt""ruby""s""samp""search""script""section""select""small""source""span""strong""sub""summary""sup""table""template""tbody""td""textarea""tfoot""th""thead""time""tr""track""u""ul""var""video""wbr""webview""svg""animateMotion""animateTransform""circle""defs""desc""ellipse""feBlend""feColorMatrix""feComponentTransfer""feComposite""feConvolveMatrix""feDiffuseLighting""feDisplacementMap""feDistantLight""feDropShadow""feFlood""feFuncA""feFuncB""feFuncG""feFuncR""feGaussianBlur""feImage""feMerge""feMergeNode""feMorphology""feOffset""fePointLight""feSpecularLighting""feSpotLight""feTile""feTurbulence""foreignObject""g""image""line""linearGradient""metadata""mpath""path""polygon""polyline""radialGradient""rect""set""stop""switch""text""textPath""tspan""use""view"
—See the type and source declaration for this property.
themeMode"light" | "dark"
"light""dark"
—See the type and source declaration for this property.
_hoverstring | CssProps—See the type and source declaration for this property.
_activestring | CssProps—See the type and source declaration for this property.
_focusstring | CssProps—See the type and source declaration for this property.

Modal.Overlay

Scroll horizontally to see every column.

Modal.Overlay
PropTypeDefaultDescription
children
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—Content rendered inside the component.Source
blurnumber—See the type and source declaration for this property.Source
isOpen Requiredboolean—Controls whether the component is open.Source
isClosePreventedboolean—See the type and source declaration for this property.Source
positionPosition—Position of the element or notification.Source
isFullScreenboolean—See the type and source declaration for this property.Source
onClose Required() => void—Called when the user requests dismissal.Source

Modal.Container

Scroll horizontally to see every column.

Modal.Container
PropTypeDefaultDescription
views{ container?: ViewProps; }—Style overrides for the named internal parts.Source
children Required
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—Content rendered inside the component.Source
shapeShape—Shape preset for the component.Source
isFullScreenboolean—See the type and source declaration for this property.Source
isOpenboolean—Controls whether the component is open.Source
onClose(() => void)—Called when the user requests dismissal.Source
isClosePreventedboolean—See the type and source declaration for this property.Source
blurnumber—See the type and source declaration for this property.Source
variantstring—Visual treatment of the component.Source
buttonColorany—See the type and source declaration for this property.Source
buttonPositionCloseButtonPosition—See the type and source declaration for this property.Source
positionPosition—Position of the element or notification.Source
shadowViewProps | Shadow | Elevation—Shadow or elevation styling.Source

Modal.Header

Scroll horizontally to see every column.

Modal.Header
PropTypeDefaultDescription
views{ container?: ViewProps; header?: ViewProps; }—Style overrides for the named internal parts.Source
buttonColorstring—See the type and source declaration for this property.Source
iconSizeSize—See the type and source declaration for this property.Source
children
View typestring | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | React.ReactPortal | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null
—Content rendered inside the component.Source
buttonPositionCloseButtonPosition—See the type and source declaration for this property.Source
buttonSizeSize—See the type and source declaration for this property.Source
variantstring—Visual treatment of the component.Source
onClose(() => void)—Called when the user requests dismissal.Source

Modal.Body

Scroll horizontally to see every column.

Modal.Body
PropTypeDefaultDescription
views{ view?: ViewProps; }—Style overrides for the named internal parts.Source
buttonColorany—See the type and source declaration for this property.Source
variantstring—Visual treatment of the component.Source

Modal.Footer

Scroll horizontally to see every column.

Modal.Footer
PropTypeDefaultDescription
views{ container?: ViewProps; }—Style overrides for the named internal parts.Source

Modal.Layout

Scroll horizontally to see every column.

Modal.Layout
PropTypeDefaultDescription
modals Required{ [x: string]: React.FC<any>; }—See the type and source declaration for this property.Source
onShow((name: string, props?: any) => void)—See the type and source declaration for this property.Source
onHide((name?: string, props?: any) => void)—See the type and source declaration for this property.Source

For shared layout, color, and responsive properties, read Styling & composition and Responsive layouts. Additional native element attributes depend on the target platform.

Usage guidance

  • Give controls a visible label or an accessible name, and verify keyboard interaction. See Accessibility.
  • For controlled inputs, update the value from the callback shown in the props table. Keep application state in your component or form library.
  • These previews run in the browser. Check React Native setup for platform requirements and differences.
Browse documentation source