Design System · DS-010

LagoModal

Internal QA/reference page for the canonical LAGO dialog system. Every example opens the real production component. Not linked from any product navigation.

01

Overview

DS-010 LagoModal is the canonical LAGO dialog system for focused tasks, confirmations, notices, and contained workflows. This page is a permanent internal Design System QA/reference asset — it is not linked from any product navigation.

Identifier

DS-010 — LagoModal

Status: Approved · v1.0

Purpose

Standard dialog system for focused tasks, confirmations, notices, and contained workflows. Background interaction is blocked; focus is trapped; Escape closes dismissible modals.

Supported variants

DefaultConfirmationDestructiveSuccessInformationMulti-stepLarge / DetailMobile Full-screen

Supported sizes

Small400pxSimple confirmations
Medium560pxDefault — most workflows
Large720pxDetailed content, complex forms
Note:Every example below opens the real production LagoModal component — no static reproductions. Resize your browser window below 640px to validate the mobile full-screen behavior.
02

Modal Anatomy

The complete anatomy of a standard modal: header (close control, title, supporting description), content region, and footer (secondary + primary action).

Structural regions

  • Backdrop — dims and blocks background interaction
  • Container — white surface, 12px radius, elevation shadow
  • Header — title, optional description, close control
  • Content — scrollable body region
  • Footer — secondary + primary actions, top border

Close control

The close control (X) is shown by default. It can be hidden with showClose={false} when the workflow requires an explicit action to exit — always provide an intentional exit path.

03

Variants

Every canonical variant with realistic representative content. Differences come from semantic context and content — not unrelated styling.

Note:Destructive and confirmation modals use closeOnBackdrop={false} so an accidental outside click does not perform or dismiss the action — the user must use an explicit button.
04

Multi-step Modal

A real interactive multi-step workflow inside the modal. Back is disabled on the first step; the final step shows the confirming action.

Note:Escape closes the modal without advancing the workflow. Back is disabled on step 1 — keyboard navigation cannot move backward past the first step.
05

Sizes & Action States

Three canonical max-widths (400 / 560 / 720px) and the real DS-001 Button states inside a modal footer.

Sizes

Action states

06

Form Content

A realistic form using DS-007 LagoFormElements — label, text input, select, textarea, switch, checkbox, help text, and validation error.

Validation

Click Send invitation without filling the form to see the DS-007 error state (red border + icon + message — never colour alone).

07

Status Content

Semantic status communication using DS-009 LagoStatusBadge. Colour never carries meaning alone — a text label and icon always reinforce it.

Why DS-009 here

The status badge provides the semantic cue (icon + colour + label). The modal provides the container. Together they communicate meaning without custom badge styling.

08

Table & Content Card

DS-008 LagoTable and DS-003 LagoContentCard inside a large modal — validates that contained components keep their spacing without fighting the modal.

Validation points

  • Table columns do not overflow the modal container
  • Content card spacing does not fight modal padding
  • No unnecessary nested structural shadows
09

Long Content

Deliberately long content forces internal scrolling. The header, close control, and footer remain fixed and usable.

Note:The modal uses max-h-[85vh] on desktop and full viewport height on mobile. Content scrolls internally — no page-level overflow, no clipping.
010

Backdrop & Escape Behavior

Explicit controls for closeOnBackdrop and closeOnEscape. Critical workflows should disable backdrop dismissal so an accidental click does not perform or dismiss the action.

Backdrop dismissal

Escape behavior

Note:Escape never submits, confirms, or advances a workflow — it only dismisses. When escape is disabled, the user must use an explicit action button to exit.
011

Responsive & Accessibility

The modal is viewport-responsive: below 640px it becomes a real full-screen surface, not a scaled-down desktop modal. Keyboard interaction is provided by the production Radix dialog primitive.

Responsive preview

Current viewport

Tablet · 800px

Resize your browser window to validate: below 640px the modal fills the viewport edge-to-edge with a preserved header, scrolling content, and fixed footer. Above 640px it is the centered, size-constrained modal.

Accessibility checklist

  • Keyboard open: Tab to the trigger, press Enter
  • Focus trap: Tab cycles only within the modal
  • Escape: Closes dismissible modals (does not submit)
  • Focus return: Focus returns to the trigger on close
  • Accessible title/description: Wired via Radix DialogTitle/Description
  • Visible focus: Teal focus ring on all interactive elements
Note:To validate mobile full-screen on desktop: open this modal, then narrow your browser below 640px. The modal transitions to a full-viewport surface with internal scrolling.
012

Dependency Integration

DS-010 LagoModal integrates with these LAGO design-system components. This is a reference section — each dependency is used in the sections above, not duplicated here.

DS-001

Lago Button

Primary and secondary actions in the modal footer. All variants (navy, tealOutline, lagoDestructive) and states (loading, disabled) are used directly.

DS-002

Lucide Iconography

Close control (X), semantic variant icons (Info, AlertTriangle, CheckCircle2), and form field icons — all Lucide, all at canonical sizes.

DS-003

LagoContentCard

Nested inside the large/detail modal for structured information blocks. No nested structural shadows — the card inherits the modal surface.

DS-005

LagoTabs

Available for contained multi-step workflows. The multi-step example uses a step indicator; LagoTabs can be used for parallel tab-based workflows inside a modal.

DS-007

LagoFormElements

Form content inside the modal — LagoInput, LagoSelect, LagoTextarea, LagoSwitch, LagoCheckbox, LagoFormField with help/error states.

DS-008

LagoTable

Compact table inside the large/detail modal. Columns stay contained; the table scrolls horizontally on narrow widths without breaking the modal.

DS-009

LagoStatusBadge

Semantic status communication inside the modal — pending, processing, published, limited, failed. Colour never carries meaning alone.

Not used

DS-020 LagoAppShell — the modal is a focused overlay, not an application shell replacement. DS-015 LagoNavigation — the modal does not duplicate global navigation.

DS-010 LagoModal preview · PREVIEW COVERAGE COMPLETE. Design/implementation verification requires separate visual and runtime validation.