Notifications Menu

About this component

Notifications Menu

Topbar bell trigger with an unread count and a popover feed: icon rows with title, description, timestamp, unread dots, a mark-all-read action, and a scrollable list. Manages read state internally.

Usage

The import and the props worth knowing about, in one place.

import { NotificationsMenu } from "@/components/beste/component/notifications-menu";
import { UserPlus } from "lucide-react";

<NotificationsMenu
  notifications={[
    {
      id: "1",
      title: "New customer signed up",
      description: "Amara joined the Scale plan.",
      time: "2m ago",
      icon: UserPlus,
      unread: true,
    },
  ]}
  onSelect={(id) => console.log("open:", id)}
  onMarkAllRead={() => console.log("all read")}
/>

Playground

Turn the props on the right; the snippet under them is what you would write to get what you see.

Usage
import { NotificationsMenu } from "@/components/beste/component/notifications-menu";

<NotificationsMenu
  notifications={[{"id":"1","title":"New customer signed up","description":"Amara Okafor joined the Scale plan.","time":"2m ago","icon":{"displayName":"UserPlus"},"unread":true},{"id":"2","title":"Payment received","description":"$639 from Aurora — invoice #3417.","time":"1h ago","icon":{"displayName":"CreditCard"},"unread":true},{"id":"3","title":"Usage limit warning","description":"Workspace API is at 82% of its monthly quota.","time":"3h ago","icon":{"displayName":"TriangleAlert"},"unread":true},{"id":"4","title":"New comment","description":"Diego replied on the Q1 report thread.","time":"Yesterday","icon":{"displayName":"MessageSquare"}}]}
/>

Keyboard and gestures

Every one of these is in the component already. They are listed because a props table cannot mention a gesture, so nothing else on this page can tell you they exist.

Enter / SpaceOpen the panel from the bell.
Arrow keysMove through the notifications.
EscapeClose and put focus back on the bell.
Mark all as readClears every unread mark at once and calls `onMarkAllRead`; the badge on the bell goes with them.

Props

Read from the component's own type, so this cannot drift from what it accepts.

PropTypeDefaultDescription
notifications*NotificationItem[]
onSelect(id: string) => void
onMarkAllRead() => void
align"start" | "center" | "end"
classNamestring

More Dashboard components

View all Dashboard

User Menu

Topbar account menu: avatar trigger with name and email, dropdown with icon items, keyboard shortcuts, and a destructive sign-out row. Compact avatar-only mode for dense headers.

Sidebar Nav

Dashboard sidebar with a brand header, grouped nav items, Lucide icons, trailing count badges, and an active state. Collapse is driven from the shell topbar via the `collapsed` prop (icon rail when true).

8 AM10 AM12 PM2 PM4 PM6 PM

Atrium Loft

Floor 3 · 12 seats

Studio B

Floor 2 · 8 seats

Garden Room

Ground · 20 seats

Rooftop Deck

Level 5 · 40 seats

Schedule Timeline

A Gantt-style day timeline: resource rows against an hour axis with time-positioned event bars (left/width computed from start/end), grid lines, a live 'now' marker, colored tones, and clickable bars with a hover tooltip showing the event and its time range. Ideal for room bookings, shifts, and resource scheduling.

Actions
A
Amara Okaforamara@northwind.io
ScaleActive$4,820Jan 4, 2026
D
Diego Santosdiego@lumen.app
StarterTrial$0Feb 18, 2026
P
Priya Nairpriya@vertex.co
GrowthActive$2,140Nov 22, 2025
T
Tom Fischertom@basecamp.dev
StarterChurned$380Aug 9, 2025
L
Lena Björklena@aurora.se
ScaleActive$6,390Mar 2, 2026
M
Marcus Reedmarcus@hexa.io
StarterTrial$0Feb 27, 2026

8 row(s)

Page 1 of 2

Data Table

Client-side data-table engine: column-driven config with custom cell renderers, sortable headers, keyword search, row selection, per-row action menus, and pagination. Owns all state; blocks pass columns + rows as data.

January 2026

Sun
Mon
Tue
Wed
Thu
Fri
Sat

Calendar Month

A month grid with selectable days, a today marker, colored event dots per day, and prev/next month controls. Data-driven (weekStart + daysInMonth) so it renders deterministically; controlled or self-managed selection.

Color Picker

OKLCH-native colour picker: a gamut-aware lightness and chroma plane, RGB and OKLCH tabs whose rows show their own colour ramp on hover, a field that accepts hex, rgb() or oklch(), screen eyedropper and preset swatches.