Toggle Sidebar B
AppearanceLight & dark mode D

Result

Terminal outcome screen for a finished flow: payment confirmed, form submitted, order received. Animates a drawn checkmark and a staggered text reveal on mount.

Default

Pass title and description and Result builds the header for you. The default slot stays yours, so whatever you put there renders straight after it.

Dark previewReplay preview

Payment successful

Your order is confirmed. A receipt is on its way to your inbox.

Statuses

success draws the checkmark stroke. pending, info, and error swap the tint and the glyph, and animate the media without the draw.

Dark previewReplay preview

Payment successful

Your order is confirmed.

Payment processing

This usually takes a moment.

You are all set

This form accepts one response.

Payment declined

No charge was made to your card.

Composed

Skip the title and description props and write the parts yourself when the outcome needs more than a header, for example a summary block between the message and the buttons.

Dark previewReplay preview

Order confirmed

We will email you when it ships.

Total paid$128.00
DeliveryMar 14 to Mar 18

With a reference

ResultReference renders the order or booking code under the description. It is layout only, so bring your own copy button.

Dark previewReplay preview

Booking received

Keep this reference handy, you will need it at check-in.

BK-8241-QX

Sizes

size scales the media and the title together. Use lg for a screen that is nothing but the outcome, sm for a card or a dialog.

Dark previewReplay preview

Size sm

The media and the title scale together, so the block keeps its proportions.

Size default

The media and the title scale together, so the block keeps its proportions.

Size lg

The media and the title scale together, so the block keeps its proportions.

Media variants

soft tints the circle with the status color, muted keeps it neutral, plain drops the circle and leaves the glyph. Pass icon to use any Iconify name instead of the built-in check.

Dark previewReplay preview

Soft

Circle tinted by status.

Muted

Neutral circle, no status color.

Plain

Glyph only, no circle.

Custom icon

Any Iconify name. Animates in without the stroke draw.

Without animation

Set animate to false where something else already animates the entrance, such as a dialog that scales in. The reveal is pure CSS, so it also collapses on its own for users who ask for reduced motion.

Dark previewReplay preview

Message sent

We reply within one business day.

Anatomy

Import all parts and piece them together.

vue
<script setup>
import {
  Result,
  ResultActions,
  ResultContent,
  ResultDescription,
  ResultHeader,
  ResultMedia,
  ResultReference,
  ResultTitle,
} from "@/components/ui/result";
</script>

<template>
  <Result>
    <ResultHeader>
      <ResultMedia />
      <ResultTitle />
      <ResultDescription />
    </ResultHeader>
    <ResultReference />
    <ResultContent />
    <ResultActions />
  </Result>
</template>

API Reference

Result

PropTypeDefaultDescription
status"success" | "pending" | "info" | "error""success"Outcome semantics. Sets the media tint and the default glyph, and is passed down to parts written inside the slot.
variant"soft" | "muted" | "plain""soft"Media treatment. soft tints by status, muted stays neutral, plain has no circle.
size"sm" | "default" | "lg""default"Scales the media, the title, and the gaps between parts.
titlestringShorthand. Renders a ResultTitle. Omit it and compose the header by hand.
descriptionstringShorthand. Renders a ResultDescription.
iconstringIconify name for the media. On success this replaces the drawn checkmark with a static glyph.
titleAsstring"h2"Element for the shorthand title. Use h1 on a page whose only job is the outcome.
animatebooleantrueEntrance animation. Set to false when a parent already animates the container.
announcebooleantrueWraps the header in role=status so a screen reader reads the outcome once.
classstringContainer styles.
SlotDescription
defaultRendered after the header, untouched. Put content and actions here.
mediaReplaces the media in the shorthand header.
titleReplaces the title in the shorthand header.
descriptionReplaces the description in the shorthand header.

ResultMedia

PropTypeDefaultDescription
status"success" | "pending" | "info" | "error"inheritedFalls back to the status on Result.
variant"soft" | "muted" | "plain"inheritedFalls back to the variant on Result.
size"sm" | "default" | "lg"inheritedFalls back to the size on Result.
iconstringIconify name. Only the built-in checkmark can animate its stroke, since the dash length has to be known in advance, so a custom icon gets the wrapper entrance without the draw.
SlotDescription
defaultAny custom media. Replaces both the check and the glyph.

ResultTitle

PropTypeDefaultDescription
asstring"h2"Element to render. Use h1 for a dedicated outcome page.
size"sm" | "default" | "lg"inheritedOverrides the inherited type scale.

ResultReference

PropTypeDefaultDescription
valuestring | numberReference code, rendered in a monospace chip. Anything in the slot sits next to it.

ResultHeader / ResultDescription / ResultContent / ResultActions

PropTypeDefaultDescription
classstringLayout wrappers. Header groups media, title, and description and owns the live region. Content is the narrow body block, Actions is the button row. Each carries its own reveal delay, which you can override with an inline --result-i.

Accessibility

Keyboard shortcuts and ARIA behavior.

  • ResultHeader carries role=status, so the media, title, and description are announced once when the outcome renders. Set announce to false if the surrounding page already announces it.
  • role=status sits on the header rather than the root on purpose: it implies aria-atomic, so on the root a screen reader would re-read the entire summary whenever anything below it changed.
  • The media is aria-hidden. The status is carried by the title text, never by color or icon alone.
  • Both animations collapse under prefers-reduced-motion, and neither is required for the content to be visible, so the outcome is readable before hydration.