An observability console with an icon rail and a live status ribbon: a service-health grid with status dots and latency/uptime, a latency line chart, a request-volume area chart, a 30-day uptime bar strip, and a recent-events feed. A 1h/24h/7d tab control live-swaps the chart data.
A service monitoring dashboard for observability and uptime status: an icon rail, a live status ribbon, a service-health grid with status dots and per-service latency/uptime, a latency line chart, a request-volume area chart, a 30-day uptime bar strip, and a recent-events feed. A 1h/24h/7d range switch built on shadcn/ui Tabs live-swaps the chart data. It is a full-height, drop-in Next.js / React monitoring dashboard template built with shadcn/ui and Recharts.
Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.
Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.
Radix flavor
npx shadcn add "https://ui.beste.co/r/dashboard12?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/dashboard12?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/dashboard12.tsx, the Beste chart and menu components it composes (area-chart, line-chart, user-menu), and the shadcn/ui dependencies they need, including tabs.
The installed file exports dashboard12Demo alongside the block: the exact props behind the preview above. Spread it to get the full dashboard in one line. The block fills its container height (h-screen), so render it in a full-height layout.
import { Dashboard12, dashboard12Demo } from "@/components/beste/block/dashboard12";
export default function Page() {
return <Dashboard12 {...dashboard12Demo} />;
}Every prop is optional. Omit any and the block falls back to its built-in demo data, so <Dashboard12 /> renders a complete, populated monitoring dashboard out of the box. Pass just the props you want to override.
| Prop | Type | Default | Description |
|---|---|---|---|
brandName | string | "Sentinel" | Product name shown in the status ribbon next to the uptime figure |
user | DashboardUser | demo user | Identity shown in the status-ribbon account menu |
userItems | UserMenuItem[] | demo items | Rows in the account dropdown menu |
services | Service[] | demo services | The service-health grid cards; drives the "All systems operational" ribbon |
latencyData | Record<Range, LatencyPoint[]> | demo series | Latency line chart series, keyed by range |
throughputData | Record<Range, ThroughputPoint[]> | demo series | Request volume area chart series, keyed by range |
uptimeDays | UptimeState[] | demo states | The 30-day uptime bar strip (oldest first) |
incidents | Incident[] | demo rows | Rows of the Recent events feed |
uptimePercent | string | "99.96%" | Uptime figure shown in the status ribbon and as the 30-day uptime panel headline |
incidentsLabel | string | "2 incidents" | Summary caption under the uptime strip |
The block-local data types:
type Range = "1h" | "24h" | "7d";
type ServiceStatus = "operational" | "degraded" | "down";
type Service = {
name: string;
status: ServiceStatus; // drives the status dot via statusMeta
latency: string; // pre-formatted, e.g. "42 ms"
uptime: string; // pre-formatted, e.g. "99.98%"
icon: LucideIcon;
};
type LatencyPoint = { t: string; p95: number; p50: number };
type ThroughputPoint = { t: string; rps: number };
type UptimeState = "up" | "degraded" | "down"; // one bar per entry, colored by uptimeTone
type Incident = {
title: string;
service: string;
time: string;
level: "resolved" | "warning" | "critical"; // maps to icon/color via incidentTone
};
type DashboardUser = {
name: string;
email: string;
avatar: string; // image URL, rendered with a plain <img>
};The remaining prop reuses the interface exported by the composed Beste component:
// from user-menu
type UserMenuItem = {
id: string;
label: string;
icon?: LucideIcon;
destructive?: boolean; // red row with a separator above it
};A few structural and cosmetic bits stay as constants in the installed file — edit them in place:
railItems — the left icon-rail buttons, including the optional badge count.latencyConfig / throughputConfig — series labels and colors for each chart (colors reference the --chart-1…--chart-5 theme tokens).statusMeta — the per-status dot color, label, and badge classes for each ServiceStatus.uptimeTone — maps each UptimeState to its bar color (up = emerald, degraded = amber, down = red).incidentTone — maps each incident level to its icon and color (resolved = check, warning/critical = triangle).ranges (1h/24h/7d) list is set inline.This block composes several Beste UI components, each installable on its own:
compact mode. /components/user-menuIt also uses the shadcn/ui tabs primitive for the range switch. /components/tabs
latencyData[range] and throughputData[range]; the "Last " caption over each chart updates to match. The default range is 24h.allOperational from services: when every service is "operational" the dot is emerald and it reads "All systems operational"; otherwise it turns amber and reads "Partial degradation".uptimeDays, colored by state through uptimeTone (emerald / amber / red).statusMeta[status], plus its latency and uptime in tabular figures.incidentTone[level] (resolved = check, warning/critical = triangle).sm breakpoint; the alerts item carries a numeric badge."use client") because of the Tabs range state, so it composes into any App Router page.h-screen with an internal scroll area, so give it a full-height container.<img>, so no next.config images.remotePatterns setup is needed for remote hosts.dashboard7
A web-analytics console: sidebar + search topbar, a live realtime strip, an hourly sessions area chart, a daily-goal radial gauge, a channel-audience radar chart, a new-vs-returning line chart, and a sortable top-pages table.
dashboard3
An e-commerce analytics dashboard: sidebar + search topbar, a four-up KPI row with period deltas, a net-profit area chart, a repeat-rate radial gauge, a busiest-weekday bar chart, and a best-selling products data table.
dashboard11
A health dashboard with a top navigation bar (no sidebar): three activity-ring radial gauges, a steps area chart and a heart-rate line chart, and a recent-workouts list. A Today/Week/Month segmented control live-swaps the chart data and totals.
dashboard4
A project-management dashboard: sidebar + search topbar, a four-up project stats row with one highlighted card, a weekly project-analytics bar chart, a reminder card with a start-meeting action, a team-collaboration list, a project-progress radial gauge, and a focus time-tracker card.
dashboard5
A split booking dashboard: a left panel with a top nav, functional tab bar, a Manage menu, a bento of revenue/occupancy/metric tiles and an image, toggleable active-booking cards, and a room-availability timeline; a right rail with a real month calendar (selectable days, booked-day dots) and a time-slotted day agenda.
dashboard9
A sales-CRM dashboard: sidebar + search topbar, pipeline KPIs, a four-stage kanban board of deal cards with owners and hot-lead flags, a revenue-vs-forecast area chart, a team-quota radial gauge, and a rep leaderboard with progress bars.