feat: complete MVP foundation auth and dashboard
This commit is contained in:
120
lib/dashboard-model.ts
Normal file
120
lib/dashboard-model.ts
Normal file
@@ -0,0 +1,120 @@
|
||||
import {
|
||||
Gauge,
|
||||
MailCheck,
|
||||
MapPinned,
|
||||
ShieldCheck,
|
||||
UsersRound,
|
||||
type LucideIcon,
|
||||
} from "lucide-react";
|
||||
|
||||
export { dashboardNavigation } from "./dashboard-navigation";
|
||||
|
||||
export type PipelineStage = {
|
||||
title: string;
|
||||
description: string;
|
||||
count: number;
|
||||
meta: string;
|
||||
icon: LucideIcon;
|
||||
};
|
||||
|
||||
export type DashboardKpi = {
|
||||
label: string;
|
||||
value: string;
|
||||
detail: string;
|
||||
};
|
||||
|
||||
export type ReviewQueueItem = {
|
||||
title: string;
|
||||
company: string;
|
||||
detail: string;
|
||||
};
|
||||
|
||||
export const pipelineStages: PipelineStage[] = [
|
||||
{
|
||||
title: "Kampagnen",
|
||||
description: "Aktive Suchlaeufe nach Kategorie, PLZ und Radius.",
|
||||
count: 3,
|
||||
meta: "1 Lauf heute geplant",
|
||||
icon: MapPinned,
|
||||
},
|
||||
{
|
||||
title: "Lead-Recherche",
|
||||
description: "Neue Places-Quellen, Kontaktluecken und Dubletten.",
|
||||
count: 18,
|
||||
meta: "5 Leads brauchen E-Mail-Quelle",
|
||||
icon: UsersRound,
|
||||
},
|
||||
{
|
||||
title: "Audit-Freigabe",
|
||||
description: "Interne Audits warten auf manuelle Pruefung.",
|
||||
count: 6,
|
||||
meta: "2 Seiten bereit zur Veroeffentlichung",
|
||||
icon: ShieldCheck,
|
||||
},
|
||||
{
|
||||
title: "Outreach",
|
||||
description: "Freigegebene E-Mails und Telefon-Skripte.",
|
||||
count: 4,
|
||||
meta: "Keine automatische Kontaktaufnahme",
|
||||
icon: MailCheck,
|
||||
},
|
||||
];
|
||||
|
||||
export const dashboardKpis: DashboardKpi[] = [
|
||||
{
|
||||
label: "Neue Leads",
|
||||
value: "18",
|
||||
detail: "aus 3 aktiven Kampagnen",
|
||||
},
|
||||
{
|
||||
label: "Audit-Entwuerfe",
|
||||
value: "6",
|
||||
detail: "manuelle Freigabe offen",
|
||||
},
|
||||
{
|
||||
label: "Outreach bereit",
|
||||
value: "4",
|
||||
detail: "E-Mail und Telefon-Skript",
|
||||
},
|
||||
{
|
||||
label: "Antworten",
|
||||
value: "2",
|
||||
detail: "manuell nachzutragen",
|
||||
},
|
||||
];
|
||||
|
||||
export const reviewQueue: ReviewQueueItem[] = [
|
||||
{
|
||||
title: "Audit-Freigabe pruefen",
|
||||
company: "Malerbetrieb Klein",
|
||||
detail: "Mobile Kontaktfuehrung und lokaler CTA fehlen.",
|
||||
},
|
||||
{
|
||||
title: "Kontaktstrategie bestaetigen",
|
||||
company: "Physio am Park",
|
||||
detail: "Telefon zuerst, E-Mail nach persoenlicher Einordnung.",
|
||||
},
|
||||
{
|
||||
title: "Follow-up vormerken",
|
||||
company: "Tischlerei Weber",
|
||||
detail: "Respektvolles Follow-up in 5 Tagen, kein Autoversand.",
|
||||
},
|
||||
];
|
||||
|
||||
export const pipelineHealth = [
|
||||
{
|
||||
label: "Recherche",
|
||||
value: "hoch",
|
||||
icon: Gauge,
|
||||
},
|
||||
{
|
||||
label: "Freigabe",
|
||||
value: "manuell",
|
||||
icon: ShieldCheck,
|
||||
},
|
||||
{
|
||||
label: "Versand",
|
||||
value: "gesperrt bis Review",
|
||||
icon: MailCheck,
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user