Notify.js is a lightweight utility library for creating toast, snackbars, and notifications.
This library does not provide any CSS or base styling for the components / HTML Elements it produces. Example styles can be found at Brixi UI.
Download Notify.js via NPM:
npm i --save @codewithkyle/notifyjs
Or use the CDN version:
import toaster from "https://cdn.jsdelivr.net/npm/@codewithkyle/notifyjs@4/dist/toaster.js";
import snackbar from "https://cdn.jsdelivr.net/npm/@codewithkyle/notifyjs@4/dist/snackbar.js";
import notifications from "https://cdn.jsdelivr.net/npm/@codewithkyle/notifyjs@4/dist/notifications.js";
Import the notification type:
import snackbar from "@codewithkyle/notifyjs/snackbar";
snackbar({
message: "All snackbar notifications require a message",
});
// Adds an action button
snackbar({
message: "All snackbar notifications require a message",
buttons: [
{
label: "Update",
callback: () => {
console.log("User clicked the update button");
},
},
],
});
import notifications from "@codewithkyle/notifyjs/notifications";
notifications.push({
title: "Notificaitons require a title",
message: "They also require a message.",
});
// Append custom toast notifications:
class CustomNotificationElement extends HTMLElement {
constructor(message){
super();
this.innerText = message;
setTimeout(() => {
this.remove();
}, 5000);
}
}
notifications.append(new CustomNotificationElement());
import toaster from "@codewithkyle/notifyjs/toaster";
toaster.push({
message: "Toast notifications require a message."
});
Snackbar notifications are great for quick one-off notifications that require an action.
interface SnackbarNotification {
message: string;
duration?: number; // in seconds
closeable?: boolean;
buttons?: Array<{
label: string;
callback: Function;
ariaLabel?: string;
classes?: Array<string> | string;
autofocus?: boolean;
}>;
force?: boolean; // defaults to true
classes?: Array<string> | string;
autofocus?: boolean; // defaults to true
}
<snackbar-component>
<p>Custom notification message</p>
<snackbar-actions>
<button>Action</button>
<button class="close">
<svg />
</button>
</snackbar-actions>
</snackbar-component>
Notifications are great for application-like notification systems where users will need to recieve warnings, updates, successes, and errors.
type Notification = {
title: string;
message: string;
closeable?: boolean;
icon?: string; // svg or img
duration?: number; // in seconds
classes?: string[];
autofocus?: boolean; // defaults to true
buttons?: Array<{
label: string;
callback: Function;
ariaLabel?: string;
classes?: Array<string> | string;
autofocus?: boolean;
}>;
timer?: "vertical" | "horizontal" | null; // defaults to null
};
<notifications-component>
<notification-component>
<i>
<svg />
</i>
<copy-wrapper>
<h3>Title</h3>
<p>Custom notification message</p>
<notification-actions>
<button>Action</button>
</notification-actions>
</copy-wrapper>
<button class="close">
<svg />
</button>
<notification-timer class="vertical || horizontal"></notification-timer>
</notification-component>
</notifications-component>
Toast notifications are great for simple temporary alerts like "Copied to clipboard" or "Added to playlist".
type ToastNotification = {
message: string;
duration?: number; // in seconds
classes?: string | string[];
};
<toaster-component>
<output role="status">Custom toast message.</output>
</toaster-component>