LoadingOverlay
ImplementedNon-dismissible busy treatment — covers a region or the viewport, blocks interaction and announces what is happening. Reuses the Modal scrim family. Not a dialog: no close, no focus trap.
patterns/molecules/loadingoverlay.htmlProps
LoadingOverlay
openboolean—Controlled — the caller owns the state.
messagestring—What is happening, in the caller's language. Required: an overlay with no message only tells the user they cannot click.
detailstring—Optional second line, e.g. 'Please don't close this page.'
scope"region" | "viewport"'region''region' fills the nearest positioned ancestor — the caller must give it `relative`. 'viewport' portals to document.body.
delayMsnumber300Wait before appearing so a fast response never flashes a spinner. 0 shows immediately.
<LoadingOverlay />Accessibility
ARIA
2 rulesType
1 ruleUsage
Import
import { LoadingOverlay } from "@epasslive/design-system"Example 1
<LoadingOverlay open={submitting} message="Completing your purchase…" detail="Please don't close this page." />Example 2
<LoadingOverlay open={busy} scope="viewport" message="Signing you in…" />Example 3
<LoadingOverlay open={busy} delayMs={0} message="Loading…" />Anti-patterns
— Do not hardcode data in molecules
— Avoid complex business logic in molecules
— Do not overlay an element the user still has to interact with
— Do not use for content placeholders — that is Skeleton
— Do not invent a percentage to show ProgressBar instead