npx shadcn@latest add @vibra/widget-crm-overview-crm-statsCRM headline
The quarter's target as a ring with what is won and still to go, beside customers, open deals and won this quarter with their changes; reads crmStats().
The whole dashboard — every page under one sidebar, the sample data they read — is one command. Or take a page at a time: each one brings the sidebar with it.
npx shadcn@latest add @vibra/crm/crmCRM dashboardnpx shadcn@latest add @vibra/crm-overview/crm/pipelineDeal pipelinenpx shadcn@latest add @vibra/crm-pipeline/crm/leadsLeadsnpx shadcn@latest add @vibra/crm-leads/crm/marketingMarketing dashboardnpx shadcn@latest add @vibra/crm-marketing/crm/campaignsCampaignsnpx shadcn@latest add @vibra/crm-campaignsSingle cards cut from these pages, each installed on its own.
npx shadcn@latest add @vibra/widget-crm-overview-crm-statsThe quarter's target as a ring with what is won and still to go, beside customers, open deals and won this quarter with their changes; reads crmStats().
npx shadcn@latest add @vibra/widget-crm-overview-leads-by-sourceWhere the funnel is fed from, as a ring with the total in its centre and the count a source under it; reads leadsBySource().
npx shadcn@latest add @vibra/widget-crm-overview-follow-upsThe week's follow-ups as a checklist with their priority — ticking one completes it on the server and says so; reads followUps().
npx shadcn@latest add @vibra/widget-crm-overview-pipelineEvery open deal by stage, lost ones aside, with the count and value a stage and its share of the whole; reads pipeline().
npx shadcn@latest add @vibra/widget-crm-overview-leads-tableEvery lead on the books, newest first — searchable, filterable by source, sortable and paged, each convertible to a deal; reads leadRows().
npx shadcn@latest add @vibra/widget-crm-leads-leads-statsOpen leads and how many are qualified, what they are worth if every one closed, new leads against the thirty days before, and the win rate; reads leadRows().
npx shadcn@latest add @vibra/widget-crm-marketing-marketing-statsSpend, conversions, cost per acquisition and return on ad spend over the window, each against the window before; reads marketingStats().
npx shadcn@latest add @vibra/widget-crm-marketing-spend-conversions-chartWhat every live campaign spent a day, as columns, against the conversions it bought on their own axis; reads spendAndConversions().
npx shadcn@latest add @vibra/widget-crm-marketing-channel-mixLifetime spend by channel as a donut, with the total in its centre and the leading channel's share; reads channelMix().
npx shadcn@latest add @vibra/widget-crm-marketing-campaigns-tableThe biggest budgets whatever their channel, with status, spend, clicks, conversions and what each conversion cost; reads topCampaigns().
npx shadcn@latest add @vibra/widget-crm-marketing-utm-tableThe tagged links behind the campaigns, busiest first, with their sessions, conversions and rate; reads utmRows().
npx shadcn@latest add @vibra/widget-crm-campaigns-campaigns-statsWhat the slate has spent, the conversions it bought from its clicks, what each conversion cost, and how many campaigns are live; reads campaignRows().
npx shadcn@latest add @vibra/widget-crm-campaigns-spend-chartA year of spend a month, one stack a month and one segment a channel, each campaign's spend spread over the days it ran; reads monthlySpend().
Every figure on these pages is read from these repositories of the sample store. Swap one for your own API and each page that reads it follows.