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.
An e-commerce analytics dashboard with a collapsible sidebar, a search topbar, a four-up KPI row with period deltas, a net-profit area chart, a repeat-purchase radial gauge, a busiest-weekday bar chart, and a best-selling products table. It is a complete Next.js / React admin dashboard template for store and commerce reporting, assembled from Beste UI's shadcn/ui + Recharts dashboard components. Everything renders from top-level demo constants, so it works as a drop-in e-commerce analytics dashboard you can rewire to your own data.
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/dashboard3?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/dashboard3?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/dashboard3.tsx, its Beste components (sidebar-nav, user-menu, notifications-menu, area-chart, bar-chart, radial-chart, data-table) to components/beste/component/, plus the shadcn/ui dependencies they need (button, badge, sheet, command, dialog).
The installed file exports dashboard3Demo alongside the block: the exact props behind the preview above. Spread it to get the full dashboard in one line.
import { Dashboard3, dashboard3Demo } from "@/components/beste/block/dashboard3";
export default function Page() {
return <Dashboard3 {...dashboard3Demo} />;
}The layout is full-height (h-screen) and owns its own sidebar, topbar, and scroll region, so give it a dedicated route rather than nesting it inside another padded page shell.
Every prop is optional. Omit any and the block falls back to its built-in demo data, so <Dashboard3 /> renders a complete, populated commerce dashboard out of the box. Pass just the props you want to override.
| Prop | Type | Default | Description |
|---|---|---|---|
brandName | string | "Kestrel" | Store name shown next to the sidebar logo mark |
heading | string | "Store overview" | Page heading above the KPI row |
description | string | "Jan 1 – Jan 31, compared with the previous 30 days." | Muted line under the heading |
user | DashboardUser | demo user | Identity shown in the topbar account menu |
navGroups | SidebarNavGroup[] | demo groups | Sidebar navigation, rendered in order as labeled groups |
commandGroups | CommandPaletteGroup[] | demo groups | Grouped entries in the ⌘K command palette |
userItems | UserMenuItem[] | demo items | Rows in the account dropdown menu |
notifications | NotificationItem[] | demo items | Entries in the notifications popover |
metrics | Metric[] | demo metrics | The four KPI cards with period deltas |
profitData | ProfitPoint[] | demo series | Net profit area chart |
profitTotal | string | "$482.6K" | Headline figure above the net-profit chart |
profitDelta | string | "21.7%" | Percentage in the emerald "vs. last period" badge next to it |
repeatRate | number | 64 | Value of the repeat-purchase radial gauge |
repeatRateCaption | string | "Ahead of the 60% goal" | Muted caption under the gauge |
dayData | DayPoint[] | demo series | Busiest weekday bar chart |
peakDay | string | "Wednesday" | Day name in the Peak day footer row |
peakDaySessions | string | "8,100 sessions" | Sessions caption next to the peak day |
products | Product[] | demo rows | Rows of the Best-selling products table |
The block-local data types:
type Metric = {
label: string;
value: string; // pre-formatted, e.g. "18,204"
delta: string; // e.g. "14.2%"
up: boolean; // true renders an emerald up badge, false a red down badge
sub: string; // comparison sub-line
icon: LucideIcon;
};
type ProfitPoint = { week: string; thisPeriod: number; lastPeriod: number };
type DayPoint = { day: string; sessions: number };
type Product = {
id: string;
name: string;
category: string;
sold: number;
revenue: number; // rendered as a "$" currency string
rating: number; // shown in an emerald badge, one decimal
};
type DashboardUser = {
name: string;
email: string;
avatar: string; // image URL, rendered with a plain <img>
};The remaining props reuse the interfaces exported by the composed Beste components:
// from sidebar-nav
type SidebarNavGroup = {
label?: string; // muted uppercase group heading (hidden when collapsed)
items: {
id: string;
label: string;
icon?: LucideIcon;
badge?: string | number; // small trailing count/tag, e.g. 46
href?: string; // renders an <a> instead of a <button>
}[];
};
// from user-menu
type UserMenuItem = {
id: string;
label: string;
icon?: LucideIcon;
destructive?: boolean; // red row with a separator above it
};
// from notifications-menu
type NotificationItem = {
id: string;
title: string;
description?: string;
time: string;
icon?: LucideIcon;
unread?: boolean;
};
// block-local
type CommandPaletteGroup = {
heading: string;
items: { id: string; label: string; icon?: LucideIcon }[];
};A few cosmetic bits stay as constants in the installed file — edit them in place:
profitConfig / dayConfig — series labels and colors for the area and bar charts (colors reference the --chart-1…--chart-5 theme tokens).productColumns — the Best-selling products DataTable column definitions (headers, sorting, cell renderers).This block composes these Beste UI components (installed alongside it):
area-chart — the net-profit trend chart. /components/area-chartbar-chart — the busiest-weekday sessions chart. /components/bar-chartradial-chart — the repeat-purchase-rate gauge. /components/radial-chartdata-table — the sortable best-selling products table. /components/data-tablesidebar-nav — grouped, collapsible navigation. /components/sidebar-navuser-menu — the account dropdown in the topbar. /components/user-menunotifications-menu — the notifications popover. /components/notifications-menuDialog wrapping an explicit Command, rendering the commandGroups entries; selecting an item closes the dialog.md and up the sidebar is inline and a topbar toggle collapses it (icons only) via collapsed state. Below md it is hidden behind a Sheet that opens from a menu button and closes on navigation.NotificationsMenu popover with the demoNotifications list and its unread indicators.UserMenu below md and the full one from md up, both driven by userItems.sortable, so headers sort in place; it paginates at pageSize={5}."use client") and composes into any App Router route.h-screen): mount it on its own route, not inside another scrolling 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.
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.
dashboard8
A personal-finance dashboard: sidebar + search topbar, a dark total-balance hero with account tiles, a budget radial gauge, income/expense/savings KPIs, a cashflow bar chart, a spending-mix donut, and a colored transactions table.
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.
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.
dashboard12
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.