Surface short operational updates that should stay visible long enough to be noticed.
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.
Show Toast
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.
Use .toast with polite live-region attributes, a .toast-header, a dismiss button, and a .toast-body for routine feedback.
.toast
.toast-header
.toast-body
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<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>
<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>
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.
variant="success"
data-toast-variant="success"
data-toast-target
priority="assertive"
role="alert"
aria-live="assertive"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135<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>
<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>
For Bootstrap's Toast plugin options and accessibility notes, see the Bootstrap Toasts documentation.
No matching pages.
Restore the default appearance.