A full admin dashboard shell: collapsible icon sidebar, topbar with a ⌘K command palette and account menu, a greeting header, a three-up KPI row with trend badges, and a recent-orders data table. The frame the rest of the dashboard blocks drop into.
A full admin dashboard shell that gives you the entire app layout in one component: a collapsible icon sidebar, a topbar with a ⌘K command palette and account menu, a greeting header, a three-up KPI row with trend badges, and a recent-orders data table. It composes the Beste UI sidebar-nav, user-menu, notifications-menu, and data-table components on top of shadcn/ui primitives (button, badge, sheet, command, dialog), so it works as a ready-made admin dashboard template and the frame the rest of the dashboard blocks drop into. Use it as the starting point for a Next.js / React admin panel or any shadcn/ui dashboard.
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/dashboard1?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/dashboard1?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/dashboard1.tsx, the Beste components it composes to components/beste/component/ (sidebar-nav, user-menu, notifications-menu, and data-table), and the shadcn/ui dependencies they need (button, badge, sheet, command, dialog).
The installed file exports dashboard1Demo alongside the block: the exact props behind the preview above. Because it renders a full-height (h-screen) layout, give it a dedicated route or page rather than nesting it inside another scrolling container.
import { Dashboard1, dashboard1Demo } from "@/components/beste/block/dashboard1";
export default function Page() {
return <Dashboard1 {...dashboard1Demo} />;
}Every prop is optional. Omit any of them and the block falls back to its built-in demo data, so <Dashboard1 /> renders a complete, populated dashboard out of the box. Pass just the props you want to override.
| Prop | Type | Default | Description |
|---|---|---|---|
brandName | string | "Acme Inc" | Brand label shown next to the logo in the sidebar |
greeting | string | "Good morning, Jordan" | Large heading at the top of the content area |
greetingSubtitle | string | "Here's what's happening across your workspace today." | Muted line under the greeting |
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 |
kpis | Kpi[] | demo KPIs | Metric cards in the KPI row (rendered three-up on large screens) |
orders | Order[] | demo orders | Rows in the recent-orders data table |
The block-local data types:
type Kpi = {
label: string;
value: string; // pre-formatted, e.g. "$48,290"
delta: string; // pre-formatted, e.g. "12.4%"
up: boolean; // true → green up badge, false → red down badge
};
type Order = {
id: string;
customer: string;
method: string;
status: "Paid" | "Pending" | "Refunded";
amount: number; // rendered with a "$" prefix and thousands separators
date: string;
};
type DashboardUser = {
name: string;
email: string;
avatar: string; // image URL, rendered with a plain <img>
};
type CommandPaletteGroup = {
heading: string;
items: {
id: string;
label: string;
icon?: LucideIcon;
shortcut?: string; // trailing hint, e.g. "⌘N"
}[];
};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
href?: string; // renders an <a> instead of a <button>
}[];
};
// from user-menu
type UserMenuItem = {
id: string;
label: string;
icon?: LucideIcon;
shortcut?: string;
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;
};This block wires together four Beste UI components. Each is installable and previewable on its own:
compact avatar-only mode for dense topbars).columns definition, with optional row actions.keydown listener). The topbar search button and its ⌘K kbd hint open the same palette. It renders as a Dialog wrapping the shadcn Command primitive, with commandGroups shown as separated, headed sections; selecting any item closes the palette.PanelLeft button in the topbar toggles collapsed, switching the sidebar between full and icon-rail width.md), the desktop sidebar is hidden and the topbar button opens the sidebar inside a Sheet drawer instead; selecting a nav item closes the drawer.dashboard as the active item (defaultActiveId="dashboard") and tracks active state internally as you click nav items.compact avatar-only UserMenu below md, and the full name/email version at md and up.TrendingUp icon when up is true, and a red down badge with TrendingDown when false."use client") because of the sidebar, palette, and drawer state, so it composes into any App Router page or route.h-screen), so mount it as the page/route content rather than inside another scrolling wrapper.<img>, so no next.config images.remotePatterns setup is needed for remote hosts.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.
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.
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.
dashboard6
A project detail dashboard for staffing: sidebar + action topbar with a project actions menu, a project header with status pills, a five-up stat strip with project meta, functional pipeline sub-tabs, a search / recently-active toggle / filters-menu toolbar that live-filters the grid, and a responsive grid of nine talent cards with wishlist and invite toggles.
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.
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.