Skip to main content

Overview

Matter Vault uses a system of shared components that enforce consistent design across the entire application. Every authenticated page, panel, modal, badge, and form field must use these components. If a component doesn’t support what you need, extend it — don’t bypass it.

Page Structure

Used on every authenticated page. Renders the H1 title and gold rule divider. Never build a page header inline.
Eyebrow labels are not used. The breadcrumb provides page context.

PanelHeader

Used on every panel, table, or list section. Companion to PanelFooter.

PanelFooter

Used on every panel with pagination or item counts.

Forms

Field

Wraps every form label + input pair. Handles label, required indicator, hint text, and error messages.

Input classes

Always import — never redeclare locally:

FieldRow

Used for display-mode label + value pairs in detail cards and sidebars.

Modals

All modals use this wrapper. Never use DialogContent directly.
Enforced behaviors:
  • ESC always closes
  • Click outside: blocked on form modals (disableOutsideClick={true}), allowed on read-only modals
  • First input gets autoFocus
  • Submit always has disabled={!isValid || isPending}
  • No eyebrow text inside modals
  • Always vertically centered

ConfirmModal

Every destructive action must use this. Never show a delete button without confirmation.
The user must check “I understand this action cannot be undone” before the delete button enables.

Badges

Badge

All colored chips, status labels, and role badges use this component.

Empty States

EmptyState

All empty panel states use this. Never build inline empty states.
The row size renders a single italic line for in-panel one-liners.

Banned Patterns

Never do these. If you see them in existing code, fix them.