Toast
Toast component for displaying temporary notifications that appear at fixed positions on the screen.
Basic Toast
Toasts are fixed position notifications. Here are examples of different variants:
Operation successful!
Something went wrong
Information message
Warning message
<.toast variant={:success}>Operation successful!</.toast>
<.toast variant={:error}>Something went wrong</.toast>
<.toast variant={:info}>Information message</.toast>
<.toast variant={:warning}>Warning message</.toast>
Positions
Toasts can be positioned at different locations on the screen:
Top Start
Top Center
Bottom End
<.toast variant={:info} position={:top_start}>Top Start</.toast>
<.toast variant={:info} position={:top_center}>Top Center</.toast>
<.toast variant={:info} position={:top_end}>Top End</.toast>
<.toast variant={:info} position={:bottom_start}>Bottom Start</.toast>
<.toast variant={:info} position={:bottom_center}>Bottom Center</.toast>
<.toast variant={:info} position={:bottom_end}>Bottom End</.toast>
Auto-Dismiss
Toasts can automatically dismiss after a specified duration:
This toast will auto-dismiss in 3 seconds
This toast won't auto-dismiss (duration=0)
<.toast variant={:success} duration={3000}>Auto-dismiss in 3 seconds</.toast>
<.toast variant={:info} duration={0}>No auto-dismiss</.toast>
Non-Dismissible
Toasts can be made non-dismissible by setting dismissible=false:
This toast cannot be dismissed manually
<.toast variant={:warning} dismissible={false}>Non-dismissible toast</.toast>
With LiveView
Toasts work seamlessly with LiveView. You can show/hide them using JS commands:
# In your LiveView
def handle_event("show-success", _params, socket) do
{:noreply, socket}
end
# In your template
<button phx-click="show-success" phx-click-js={JS.show(to: "#toast-success", transition: "fade-in-scale")}>
Show Success Toast
</button>
<.toast id="toast-success" variant={:success}>
Operation completed successfully!
</.toast>
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| id | string | auto-generated | Unique ID for the toast (required for JS.show/hide) |
| variant | :info | :success | :warning | :error | :info | Visual variant of the toast |
| position | :top_start | :top_center | :top_end | :middle_start | :middle_center | :middle_end | :bottom_start | :bottom_center | :bottom_end | :top_end | Position of the toast on the screen |
| dismissible | boolean | true | Show close button to manually dismiss |
| duration | integer | 5000 | Auto-dismiss duration in milliseconds (0 to disable) |
| class | string | "" | Additional CSS classes |