DefaultActionsCustomStatusVisualContentWrapEventsInteractiveGroupStatusAlignmentPositionPositionGroupDrawerShadowRootLayers
<nve-notification id="notification" position="top" close-timeout="2000">
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-button popovertarget="notification">button</nve-button>
Edit Example
Displays real time updates without interrupting the user's workflow to communicate an important message or status. MDN Popover API
<nve-notification position="center">
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
<div nve-layout="row gap:sm align:right">
<nve-button container="inline">Dismiss</nve-button>
<nve-button container="inline">Accept</nve-button>
</div>
</nve-notification>
Edit Example
Notification with actions for immediate user response. Use notifications with actions when the notification requires user decision-making (like "Retry", "View Details", or "Undo"), making the next step clear and reducing friction in error recovery or task completion flows.
<nve-notification style="--status-color: var(--nve-ref-color-purple-plum-800)" position="center">
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
<nve-icon slot="icon" name="sparkles" aria-label="Info"></nve-icon>
<div nve-layout="row align:right">
<nve-button container="inline">Action</nve-button>
</div>
</nve-notification>
Edit Example
Custom status color for notification. Use custom status color and icon slot to convey a different meaning than the default status color. Use sparingly as it can add unnecessary cognitive load to the user.
<nve-notification position="center">
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
Edit Example
Standard notification layout with title and body content in centered positioning for consistent notification structure.
<nve-notification position="center">
<h3 nve-text="label">Notification</h3>
<p nve-text="body" style="width: 230px">
some text content in a notification with some really long text in it that just keeps going...
</p>
</nve-notification>
Edit Example
Notification with text wrapping for longer content. Use when notification messages exceed single-line length, but keep content concise for better readability and user comprehension.
<nve-notification id="notification" position="top" close-timeout="2000" closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-button popovertarget="notification">button</nve-button>
<script type="module">
const notification = document.querySelector("nve-notification");
notification.addEventListener("beforetoggle", () => console.log("beforetoggle"));
notification.addEventListener("toggle", () => console.log("toggle"));
notification.addEventListener("close", () => console.log("close"));
notification.addEventListener("open", () => console.log("open"));
</script>
Edit Example
Event Description open Dispatched when the notification opens.
toggle Dispatched on a popover element just after showing or hiding. MDN
beforetoggle Dispatched on a popover just before showing or hiding. MDN
close Dispatched when the notification closes.
<nve-notification-group position="bottom" alignment="end" id="group"></nve-notification-group>
<nve-button>generate</nve-button>
<script type="module">
const button = document.querySelector("nve-button");
button.addEventListener("click", () => {
const notification = document.createElement("nve-notification");
notification.closable = true;
notification.status = ["warning", "danger", "success", "accent", undefined][Math.floor(Math.random() * 5)];
notification.innerHTML =
'<h3 nve-text="label">' +
(notification.status ?? "default") +
'</h3><p nve-text="body">some text content in a notification</p>';
notification.closeTimeout = 1000 * (document.querySelectorAll("nve-notification").length + 1);
notification.addEventListener("close", () => notification.remove(), { once: true });
notification.position = "bottom";
notification.alignment = "end";
document.querySelector("nve-notification-group").prepend(notification);
});
</script>
Edit Example
Dynamic notification group with programmatic creation and stacking. Perfect for toast-style notifications generated by user actions or system events, with progressive timeout and automatic removal patterns for managing many notifications.
<nve-notification-group position="center">
<nve-notification>
<h3 nve-text="label">Default</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification status="accent">
<h3 nve-text="label">Accent</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification status="success">
<h3 nve-text="label">Success</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification status="warning">
<h3 nve-text="label">Warning</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification status="danger">
<h3 nve-text="label">Danger</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
</nve-notification-group>
Edit Example
Communicates the intent and semantic meaning of an element to help users understand the outcome of their actions.
Status Description accent Highlights important actions or draws attention to primary interactive elements. warning Indicates cautionary actions that require careful consideration before proceeding. success Represents positive outcomes, confirmations, or constructive actions. danger Signals destructive or irreversible actions that need extra attention and confirmation.
<nve-notification position="top">
<h3 nve-text="label">Top</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="top" alignment="start">
<h3 nve-text="label">Top Start</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="top" alignment="end">
<h3 nve-text="label">Top End</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="right">
<h3 nve-text="label">Right</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="right" alignment="start">
<h3 nve-text="label">Right Start</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="right" alignment="end">
<h3 nve-text="label">Right End</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="bottom">
<h3 nve-text="label">Bottom</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="bottom" alignment="start">
<h3 nve-text="label">Bottom Start</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="bottom" alignment="end">
<h3 nve-text="label">Bottom End</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="left">
<h3 nve-text="label">Left</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="left" alignment="start">
<h3 nve-text="label">Left Start</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="left" alignment="end">
<h3 nve-text="label">Left End</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
Edit Example
Determines the alignment of the popover relative to the provided anchor element.
Alignment Description start Aligns the popover to the beginning edge of the anchor for left or top alignment. end Aligns the popover to the ending edge of the anchor for right or bottom alignment. center Centers the popover along the anchor's edge for balanced positioning.
<nve-notification position="top">
<h3 nve-text="label">Position Top</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="right">
<h3 nve-text="label">Position Right</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="bottom">
<h3 nve-text="label">Position Bottom</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification position="left">
<h3 nve-text="label">Position Left</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
Edit Example
Determines the position of an element along both inline and block axis. MDN
Position Description center Centers the popover directly over the anchor element. top Positions the popover above the anchor element. bottom Positions the popover below the anchor element. left Positions the popover to the left side of the anchor element. right Positions the popover to the right side of the anchor element.
<nve-notification-group position="top">
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
</nve-notification-group>
<nve-notification-group position="right">
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
</nve-notification-group>
<nve-notification-group position="bottom">
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
</nve-notification-group>
<nve-notification-group position="left">
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
<nve-notification closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">some text content in a notification</p>
</nve-notification>
</nve-notification-group>
Edit Example
Grouped notifications with consistent positioning for stacking many messages. Use notification groups to manage many alerts in an organized queue, maintaining visual consistency and providing users with a clear notification center.
<nve-drawer closable position="right">
<nve-drawer-header>
<h3 nve-text="heading semibold sm">Notifications</h3>
</nve-drawer-header>
<nve-notification closable container="flat">
<h3 nve-text="label">Notification</h3>
<p nve-text="body">This is a notification in a notification drawer, messages should be succinct.</p>
</nve-notification>
<nve-notification status="accent" container="flat" closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">This is a notification in a notification drawer, messages should be succinct.</p>
</nve-notification>
<nve-notification status="success" container="flat" closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">This is a notification in a notification drawer, messages should be succinct.</p>
</nve-notification>
<nve-notification status="warning" container="flat" closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">This is a notification in a notification drawer, messages should be succinct.</p>
</nve-notification>
<nve-notification status="danger" container="flat" closable>
<h3 nve-text="label">Notification</h3>
<p nve-text="body">This is a notification in a notification drawer, messages should be succinct.</p>
</nve-notification>
<nve-drawer-footer>
<div nve-layout="grid gap:sm span-items:6">
<nve-button interaction="destructive" container="flat">Clear All</nve-button>
<nve-button>Mark All as Read</nve-button>
</div>
</nve-drawer-footer>
</nve-drawer>
Edit Example
Notification center pattern using drawer for persistent notification management. Perfect for applications with frequent notifications, allowing users to review, manage, and act on many notifications in a dedicated space with bulk actions.
<test-notification-shadow-root></test-notification-shadow-root>
<script type="module">
customElements.define(
"test-notification-shadow-root",
class TestNotificationShadowRoot extends HTMLElement {
constructor() {
super();
this._shadow = this.attachShadow({ mode: "open" });
const template = document.createElement("template");
template.innerHTML = `
<nve-notification position="top">
top
</nve-notification>
<nve-notification position="top" alignment="start">
top start
</nve-notification>
<nve-notification position="top" alignment="end">
top end
</nve-notification>
<nve-notification position="right">
right
</nve-notification>
<nve-notification position="right" alignment="start">
right start
</nve-notification>
<nve-notification position="right" alignment="end">
right end
</nve-notification>
<nve-notification position="bottom">
bottom
</nve-notification>
<nve-notification position="bottom" alignment="start">
bottom start
</nve-notification>
<nve-notification position="bottom" alignment="end">
bottom end
</nve-notification>
<nve-notification position="left">
left
</nve-notification>
<nve-notification position="left" alignment="start">
left start
</nve-notification>
<nve-notification position="left" alignment="end">
left end
</nve-notification>
`;
this._shadow.appendChild(template.content);
}
},
);
</script>
Edit Example
Notification functionality within shadow DOM for Web Component architectures. Verifies proper notification positioning and behavior when used inside encapsulated component boundaries, essential for component libraries.
<nve-button>Notification</nve-button>
<nve-button popovertarget="dialog">Dialog</nve-button>
<nve-notification-group position="bottom" alignment="end" id="group"></nve-notification-group>
<nve-dialog id="dialog" modal closable>
<nve-dialog-header>
<h3 nve-text="heading semibold">Notification</h3>
</nve-dialog-header>
<p nve-text="body">This should not cause the dialog to close</p>
</nve-dialog>
<script type="module">
const button = document.querySelector("nve-button");
button.addEventListener("click", () => {
const notification = document.createElement("nve-notification");
notification.closable = true;
notification.status = ["warning", "danger", "success", "accent", undefined][Math.floor(Math.random() * 5)];
notification.innerHTML =
'<h3 nve-text="label">' +
(notification.status ?? "default") +
'</h3><p nve-text="body">some text content in a notification</p>';
notification.closeTimeout = 3000 * (document.querySelectorAll("nve-notification").length + 1);
notification.addEventListener("close", () => notification.remove(), { once: true });
notification.position = "bottom";
notification.alignment = "end";
document.querySelector("nve-notification-group").prepend(notification);
});
</script>
Edit Example
Notification layering with modal dialogs for proper stacking context. Ensures notifications appear above dialogs without interfering with modal interactions, crucial for complex UI layering scenarios.