Skip to content

Toast — Vanilla JS

Terminal window
npm install @fluix-ui/vanilla @fluix-ui/css
import { createToaster, fluix } from "@fluix-ui/vanilla";
import "@fluix-ui/css";
// Initialize once — this creates the toast viewport in the DOM
createToaster({ position: "top-right" });
// Fire toasts from anywhere
document.getElementById("save-btn")?.addEventListener("click", () => {
fluix.success({ title: "Saved!" });
});

Call createToaster() once to mount the viewport. Then use the fluix API from anywhere.

createToaster({
position: "top-right",
layout: "stack",
offset: 24,
defaults: {
theme: "dark",
duration: 6000,
roundness: 16,
},
});
OptionTypeDefaultDescription
positionFluixPosition"top-right"Default viewport position
layout"stack" | "notch""stack"Layout mode
offsetnumber | string | objectViewport offset
defaultsPartial<FluixToastOptions>Default toast options
fluix.success({
title: "Saved!",
description: "Your changes have been saved.",
duration: 5000,
theme: "dark",
roundness: 20,
fill: "#1a1a2e",
icon: "",
});
fluix.promise(
fetch("/api/data").then((r) => r.json()),
{
loading: { title: "Loading..." },
success: (data) => ({
title: "Done!",
description: `Loaded ${data.length} items`,
}),
error: (err) => ({
title: "Failed",
description: err.message,
}),
}
);
fluix.action({
title: "Item deleted",
button: {
title: "Undo",
onClick: () => fluix.success({ title: "Restored!" }),
},
});

The vanilla package can also be loaded via CDN for use without a bundler:

<link rel="stylesheet" href="https://unpkg.com/@fluix-ui/css/dist/fluix.css" />
<script src="https://unpkg.com/@fluix-ui/vanilla/dist/index.iife.js"></script>
<script>
const { createToaster, fluix } = window.Fluix;
createToaster({ position: "top-right" });
document.getElementById("btn").addEventListener("click", () => {
fluix.success({ title: "Saved!" });
});
</script>