component
TuxStatusToast
The transient-notification host +
useTuxToast() bus. Mount the host once in the shell; fire from anywhere. Polite live-region semantics, error tones announce assertively and stick until dismissed, motion collapses under reduced-motion, and Tauri shells escalate to OS notifications when the window is unfocused. setup
One host, one bus
This page mounts a live host — try the buttons below.
<!-- app.vue / the shell — mount the host ONCE -->
<TuxStatusToast />
<!-- anywhere else — fire toasts from the composable -->
<script setup>
const toast = useTuxToast();
toast.success("Saved", "Corpus settings updated.");
</script>tones
Four tones, sticky errors
const toast = useTuxToast();
toast.info("Reindex queued", "12,400 documents in scope.");
toast.success("Saved", "Corpus settings updated.");
toast.warning("Nearing quota", "87% of the monthly token budget used.");
// error tone is sticky (no auto-dismiss) until the user dismisses it
toast.error("Export failed", "The report service returned 502.");action
With an action
toast.show({
title: "Policy archived",
description: "\"Stale-data retention\" moved to the archive.",
tone: "success",
action: { label: "Undo", onClick: restorePolicy },
});desktop
Tauri escalation
Contract in design/tauri-bindings.md — requires the notification:default capability.
<!-- Tauri shells: when the window is hidden/unfocused, the same
call ALSO fires an OS notification (guarded dynamic import of
@tauri-apps/plugin-notification + notification:default capability;
silent no-op on plain web). The in-page toast always renders. -->
toast.info("Model download complete", "gemma-4-e2b is ready to use.");