Skip to component content

Surface short operational updates that should stay visible long enough to be noticed.

Usage

Click the same Show Toast action as many times as needed. The bottom-right deck keeps the newest three Toasts visible, with its own close, Undo, and auto-hide behavior.

Keep messages concise, use polite live-region priority for routine updates, and provide durable workflow feedback elsewhere when a notification represents a state that must persist.

Basic

Use .toast with polite live-region attributes, a .toast-header, a dismiss button, and a .toast-body for routine feedback.

Toast
<div
  id="toast-basic"
  class="toast"
  role="status"
  aria-live="polite"
  aria-atomic="true"
>
  <div class="toast-header">
    <strong class="me-auto">Event created</strong>
      <button type="button" class="btn-close" aria-label="Close" data-bs-dismiss="toast"></button>
  </div>
  <div class="toast-body">
    Sunday, December 3 at 9:00 AM
  </div>
</div>

Variants

Use variant="success" or another supported variant in a Moo macro. In plain HTML, set data-toast-variant="success" on the .toast root. Catalog data-toast-target attributes only wire demo buttons; urgent failures still need priority="assertive" in macros or role="alert" with aria-live="assertive" in plain HTML. The loading variant is visual only and does not auto-resolve a Promise.

Toast
<div
    id="toast-variant-success"
    class="toast"
data-toast-variant="success"    role="status"
    aria-live="polite"
    aria-atomic="true"
  >
    <div class="toast-header">
<span class="toast-status-icon" aria-hidden="true"><svg
  data-icon="inline-start"
  data-lucide="circle-check"
  viewBox="0 0 24 24"
  fill="none"
  stroke="currentColor"
  stroke-width="2"
  stroke-linecap="round"
  stroke-linejoin="round"
  aria-hidden="true"
>
  <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="m9 12l2 2l4-4"/></g>
</svg></span>      <strong class="me-auto">Event created</strong>
        <button type="button" class="btn-close" aria-label="Close" data-bs-dismiss="toast"></button>
    </div>
    <div class="toast-body">
      The event was added to your calendar.
    </div>
  </div>
        <div
    id="toast-variant-info"
    class="toast"
data-toast-variant="info"    role="status"
    aria-live="polite"
    aria-atomic="true"
  >
    <div class="toast-header">
<span class="toast-status-icon" aria-hidden="true"><svg
  data-icon="inline-start"
  data-lucide="info"
  viewBox="0 0 24 24"
  fill="none"
  stroke="currentColor"
  stroke-width="2"
  stroke-linecap="round"
  stroke-linejoin="round"
  aria-hidden="true"
>
  <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4m0-4h.01"/></g>
</svg></span>      <strong class="me-auto">Heads up</strong>
        <button type="button" class="btn-close" aria-label="Close" data-bs-dismiss="toast"></button>
    </div>
    <div class="toast-body">
      Invitees will receive an email confirmation.
    </div>
  </div>
        <div
    id="toast-variant-warning"
    class="toast"
data-toast-variant="warning"    role="status"
    aria-live="polite"
    aria-atomic="true"
  >
    <div class="toast-header">
<span class="toast-status-icon" aria-hidden="true"><svg
  data-icon="inline-start"
  data-lucide="triangle-alert"
  viewBox="0 0 24 24"
  fill="none"
  stroke="currentColor"
  stroke-width="2"
  stroke-linecap="round"
  stroke-linejoin="round"
  aria-hidden="true"
>
  <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4m0 4h.01"/>
</svg></span>      <strong class="me-auto">Check availability</strong>
        <button type="button" class="btn-close" aria-label="Close" data-bs-dismiss="toast"></button>
    </div>
    <div class="toast-body">
      Two invitees have a scheduling conflict.
    </div>
  </div>
        <div
    id="toast-variant-destructive"
    class="toast"
data-toast-variant="destructive"    role="alert"
    aria-live="assertive"
    aria-atomic="true"
  >
    <div class="toast-header">
<span class="toast-status-icon" aria-hidden="true"><svg
  data-icon="inline-start"
  data-lucide="circle-alert"
  viewBox="0 0 24 24"
  fill="none"
  stroke="currentColor"
  stroke-width="2"
  stroke-linecap="round"
  stroke-linejoin="round"
  aria-hidden="true"
>
  <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M12 8v4m0 4h.01"/></g>
</svg></span>      <strong class="me-auto">Event not created</strong>
        <button type="button" class="btn-close" aria-label="Close" data-bs-dismiss="toast"></button>
    </div>
    <div class="toast-body">
      The calendar service could not be reached.
    </div>
  </div>
        <div
    id="toast-variant-loading"
    class="toast"
data-toast-variant="loading"    role="status"
    aria-live="polite"
    aria-atomic="true"
  >
    <div class="toast-header">
<span class="toast-status-icon" aria-hidden="true"><svg
  data-icon="inline-start"
  data-lucide="loader-circle"
  viewBox="0 0 24 24"
  fill="none"
  stroke="currentColor"
  stroke-width="2"
  stroke-linecap="round"
  stroke-linejoin="round"
  aria-hidden="true"
>
  <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 1 1-6.219-8.56"/>
</svg></span>      <strong class="me-auto">Syncing calendar</strong>
        <button type="button" class="btn-close" aria-label="Close" data-bs-dismiss="toast"></button>
    </div>
    <div class="toast-body">
      This can take a moment.
    </div>
  </div>

Component reference

Status
Accepted
Runtime
Bootstrap plugin
Markup
Moo UI documented extension
Reference

For Bootstrap's Toast plugin options and accessibility notes, see the Bootstrap Toasts documentation.

Settings

Theme
Choose how Moo UI looks on this device.
Sidebar
Choose how the sidebar sits on the page.
Theme Builder
Tune catalog tokens and chart colors for this browser.
Base color
Theme color
Chart color
Heading font
Body font
Radius
Direction
Choose the reading direction. RTL flips the layout live.
Reset

Restore the default appearance.