Capítulo 048 componentes

Display & Feedback

Cómo el producto le habla al usuario — estados, mensajes contextuales, feedback en vivo y de carga, y la celebración del éxito.

01 · Mensajes y estados

Etiquetas no interactivas, banners promocionales, callouts contextuales, y popovers de ayuda on-demand.

Badge

#badge
Vista previaEn producción
SuccessWarningErrorNeutralAccentSecondaryDark
SmallMediumLarge
With dotPulsing

Guidelines

When to use

Single, status-driven, non-interactive — paid/unpaid, success/warning/error, "Verificado", count indicator, category label inline with text. Often colored semantically, often with a dot. Sits next to a title or in a corner.

When not to use

Not for clickable elements (use Chip if it needs interaction) or for a row of related selectable items (chips imply a group).

InfoCallout

#info-callout
Vista previaEn producción
Heads up! Tag plans renew automatically every month unless cancelled.

Guidelines

When to use

Inline contextual info inside content — a tip or caveat near the thing it relates to. info tone for explainers ("We confirm by WhatsApp"), warning tone for cautions. The default for inline messages embedded between content blocks.

When not to use

Not for help most users don’t need (use InfoPopover) or page-level system messages (use Banner).

InfoPopover

#info-popover
Vista previaEn producción

Guidelines

When to use

On-demand "what’s this?" help triggered by a small ? or info icon next to a label. The answer is rare, optional, and shouldn’t take vertical space until asked.

When not to use

Not for info every user needs to read (surface as InfoCallout) or as a label for a control (labels go inline).

Don't

Stack popovers next to every label — turns the page into a quiz.

02 · Estados de carga

Cómo se ve el producto antes de que el dato esté listo — desde el spinner inline hasta el page skeleton.

Spinner

#spinner
Vista previaEn producción

Guidelines

When to use

In-place feedback for a single action or small region — button loading state, inline async operation, table cell refresh.

When not to use

Not as a centered placeholder for a list/grid that has a known layout (that’s a Skeleton). Not for full-page route transitions (that’s LoadingPage).

LoadingPage

#loading-page
Vista previaEn producción

Buscando tu vehículo...

Guidelines

When to use

Full-page route transitions before any content is renderable — initial app boot, gated route checks, hard data dependencies. The whole screen is empty until ready.

When not to use

Not for in-page reloads (too heavy) or partial section loads (that’s a Skeleton).

Skeleton

#skeleton
Vista previaEn producción

Inline shapes

Surfaces

Guidelines

When to use

Layout-known list/grid loads — cards, table rows, profile blocks. Mirrors the final layout so there’s no jump on load.

When not to use

Not for unknown-shape content (use Spinner). Don’t render an empty Skeleton when data has loaded as empty — that’s an empty state.

03 · Confirmación

La pantalla que cierra un flujo importante — el momento donde le decimos al usuario "listo, esto se hizo".

SuccessView

#success-view
Vista previaEn producción

¡Listo!

Tu pago se procesó correctamente.

Guidelines

When to use

Full-screen success after a multi-step flow — completed booking, sent quote, finished onboarding. Lives at the end of a FlowSheet flow with a single primary CTA out. The user has finished something — the screen marks it.

When not to use

Not for routine actions (saved settings, copied link) or in-page confirmations that don’t deserve a full screen.

Don't

Stack a SuccessView after the user already saw a confirmation modal — pick one.