Skip to content
lostcoords / ui
Components

Components Toast

Toast

Brief feedback after an action.

Default

Changes saved
Interaction controller
app/javascript/controllers/demo_controller.js
import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  static targets = ["toast", "toasts"]

  press({ currentTarget }) {
    currentTarget.setAttribute(
      "aria-pressed",
      String(currentTarget.getAttribute("aria-pressed") !== "true"),
    )
  }

  select({ currentTarget }) {
    for (const tab of currentTarget.closest("[role=tablist]").querySelectorAll("[role=tab]")) {
      tab.setAttribute("aria-selected", String(tab === currentTarget))
    }
  }

  choose({ currentTarget }) {
    for (const button of currentTarget.closest("[role=group]").querySelectorAll("button")) {
      button.setAttribute("aria-pressed", String(button === currentTarget))
    }
  }

  toast() {
    this.toastsTarget.append(this.toastTarget.content.cloneNode(true))
  }
}

API reference

button_class

button_class(variant: :default, size: :base, block: false, extra: nil)
ParameterDefaultValues
variant:default:default · :accent · :secondary · :glass · :ghost · :danger
size:base:sm · :base · :lg · :nav
blockfalsetrue · false
extranilAdditional Tailwind classes

form_alert_icon

form_alert_icon(tone: :error)
ParameterDefaultValues
tone:error:error · :notice

glass_class

glass_class(shape: :bar, thick: false, extra: nil)
ParameterDefaultValues
shape:bar:bar · :panel · :disc · :menu · :picker · :hud
thickfalsetrue · false
extranilAdditional Tailwind classes

Controller options

AttributeTypeDefault
data-toast-timeout-valueNumber4000