A settings dashboard with a vertical section nav that live-switches panels: an editable profile, security with a two-factor toggle and active sessions, notification switches, a billing panel with plan/payment/invoices, and a team list with per-member role selects.
A full-height account settings page for an app or SaaS dashboard: a vertical settings nav that live-switches panels covering an editable profile, security, notifications, billing, and team management. Use it as a drop-in settings dashboard UI, a Next.js / React account settings template built on shadcn/ui, with forms, toggles, and per-member role selects already wired up.
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/dashboard13?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/dashboard13?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/dashboard13.tsx, the Beste user-menu component it composes to components/beste/component/user-menu.tsx, and the shadcn/ui dependencies they need (button, badge, avatar, input, label, textarea, switch, select, separator).
The installed file exports dashboard13Demo alongside the block: the exact props behind the preview above. Spread it to get the settings page in one line. It fills its parent, so drop it into a full-height layout (or a h-screen wrapper).
import { Dashboard13, dashboard13Demo } from "@/components/beste/block/dashboard13";
export default function Page() {
return <Dashboard13 {...dashboard13Demo} />;
}Every prop is optional. Omit any and the block falls back to its built-in demo data, so <Dashboard13 /> renders a complete, populated settings page out of the box. Pass just the props you want to override.
| Prop | Type | Default | Description |
|---|---|---|---|
brandName | string | "Nimbus" | Wordmark shown in the top bar, next to the "· Settings" label |
user | DashboardUser | demo user | Signed-in identity, used in the top-bar menu and as the Profile form's name/email defaults |
bio | string | demo bio | Default value of the Profile panel's bio textarea |
userItems | UserMenuItem[] | demo items | Rows in the top-bar account dropdown menu |
notifRows | NotifRow[] | demo rows | Toggle rows in the Notifications panel |
sessions | Session[] | demo sessions | The Active sessions list in the Security panel |
teamMembers | TeamMember[] | demo members | The Team roster, each with a per-member role select |
billing | BillingInfo | demo billing | Plan and payment-method summary in the Billing panel; omitted fields keep their demo values |
invoices | Invoice[] | demo invoices | The billing-history rows in the Billing panel |
The block-local data types:
type DashboardUser = {
name: string;
email: string;
avatar: string; // image URL, rendered with the shadcn Avatar's <img>
};
type NotifRow = {
key: string; // maps to an entry in the notification switch state
label: string;
desc: string;
};
type Session = {
device: string;
meta: string;
icon: LucideIcon;
current: boolean; // true renders a "Current" badge instead of "Revoke"
};
type TeamMember = {
name: string;
email: string;
avatar: string;
role: string; // one of the Select options: "owner" | "admin" | "member"
};
type Invoice = { id: string; date: string; amount: string };
type BillingInfo = {
plan?: string; // "Scale plan"
priceCaption?: string; // "$49 monthly · renews Apr 1, 2026"
card?: string; // "Visa ending 4242"
cardExpires?: string; // "Expires 08 · 2028"
};The account menu 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 inline bits stay as constants in the installed file — edit them in place:
sections — the vertical settings-nav structure and Lucide icons (Profile, Security, Notifications, Billing, Team). The union of their ids types the active-section state, so it drives panel switching rather than being swappable content; keep ids and panels in sync.Switch default and the notification switch state's initial booleans are set inline in component state.user and userItems constants.Profile, Security, Notifications, Billing, or Team swaps the panel on the right, with the active item highlighted. On screens below md the nav collapses to a horizontal, scrollable row above the panel.Switch (on by default) and lists active sessions, tagging the current device with a "Current" badge and offering "Revoke" on the others.notifRows, backed by a single record of booleans; toggling a row updates only its key.Select (Owner / Admin / Member) and an "Invite" action.defaultValue) and non-submitting buttons; wire the Save / Cancel / form actions to your own handlers."use client"), since the panel switching, toggles, and selects are stateful.h-screen on the root <section>), so place it in a full-height layout.<img> (via the shadcn Avatar), so no next.config images.remotePatterns setup is needed for the remote avatar hosts.Wiring the form up
This block ships the form markup only; state, validation, and submit are yours to add. Our guide wires the shadcn Field primitives to React Hook Form, TanStack Form, and Formisch on one field system.
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.
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.
dashboard1
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.
dashboard2
A customers management section powered by the data-table engine: avatar cells, status badges, sortable columns, keyword search, row selection with a live selected count, per-row action menus, pagination, and an export / add-customer toolbar.
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.
dashboard10
A three-pane helpdesk inbox: an icon rail, a searchable ticket list with status filters and unread markers, and a live conversation pane. Clicking a ticket loads its thread, and the composer actually appends replies (⌘/Ctrl+Enter to send).