import type { SeitenId } from "../../data/filtering"; /** * Navigationsstruktur des Prototyps. * * Hier stehen **nur unsere beiden Features**: Dashboard und Analytics. Alles * andere (Kontakte, Leads, Pipelines, Postfach, Termine, Einstellungen) ist * in der Seitenleiste der Software bereits vorhanden und wird hier nicht * verdoppelt. Der Prototyp zeigt, was dazukommt, nicht was schon da ist. * * Gerendert wird mit derselben Komponente wie in der Software * (`ui/components/SidebarWithSections`, aus der Cloud-Fassung portiert), damit * Aussehen und Verhalten übereinstimmen. * * „Dashboard" und „Analytics" sind zwei Features mit zwei Zuschnitten: Das * Dashboard ist eine einzelne Seite aus Kacheln, Analytics ein Bereich mit * fünf Seiten und innerer Leiste (siehe `docs/SCOPE-ANALYTICS-DASHBOARD.md`). */ export type NavZiel = { art: "route"; href: string }; export interface NavEintrag { id: string; label: string; /** Icon-Name aus @subframe/core (ohne das Präfix "Feather"). */ icon: string; ziel: NavZiel; } export interface NavGruppe { id: string; /** Leerer Titel = Startgruppe ohne Überschrift, wie in der Software. */ titel: string; eintraege: NavEintrag[]; } /** Einstieg des Analytics-Bereichs. */ export const ANALYTICS_START = "/analytics"; /** Der Begrüßungsbildschirm: Ziel der Weiterleitung von „/", wie in der Software. */ export const DASHBOARD_START = "/dashboard"; export const NAV_GRUPPEN: NavGruppe[] = [ { id: "start", titel: "", eintraege: [ { // Der Begrüßungsbildschirm, eine einzelne Seite, deshalb ohne innere // Leiste. Er ist das Ziel der Weiterleitung von „/". id: "dashboard", label: "Dashboard", icon: "LayoutDashboard", ziel: { art: "route", href: DASHBOARD_START }, }, { // Der neue Menüpunkt. Die fünf Analyse-Seiten sind ausschließlich hier // drin über Reiter navigierbar, nicht als Unterpunkte in der Leiste. id: "analytics", label: "Analytics", icon: "BarChart", ziel: { art: "route", href: ANALYTICS_START }, }, ], }, ]; /** * Unterer Bereich, durch einen Trenner abgesetzt, wie in der Software. * * Hier steht nur, was zum Prototyp gehört: die Bausteingalerie. Sie ist für * die **Abstimmung** da, nicht für die Umsetzung, sie zeigt jeden Baustein in * allen Zuständen, auch in denen, die die Demo-Daten nie erzeugen (negativer * Trend, leer, Fehler, „kleiner ist besser"). Wer den Prototyp einbaut, * braucht sie nicht: Dafür sind die Datei-Pfade und `docs/DESIGN-SYSTEM.md` * maßgeblich. * * Kein Produktfeature, wandert beim Einbau nicht mit. */ export const NAV_SEKUNDAER: NavEintrag[] = [ { id: "komponenten", label: "Komponenten", icon: "Component", ziel: { art: "route", href: "/komponenten" }, }, ]; /** * Die fünf Analyse-Seiten. Sie erscheinen **nicht** in der Seitenleiste, * sondern als Reiter innerhalb des Menüpunkts „Analytics": dem Hausmuster * für Unter-Navigation in HiveGrid (`SettingsHubShell.tsx`: ein `Link` um ein * `Tabs.Item`, damit jeder Reiter eine echte Navigation ist). */ export interface AnalyseSeite { id: SeitenId; label: string; href: string; beschreibung: string; /** Icon-Name aus @subframe/core (ohne das Präfix "Feather"). */ icon: string; } export const ANALYSE_SEITEN: AnalyseSeite[] = [ { id: "uebersicht", icon: "LayoutDashboard", label: "Übersicht", href: "/analytics", beschreibung: "Die Kennzahlen, nach denen der Betrieb gesteuert wird: Umsatz, Auslastung, offene Posten und Handlungsbedarf.", }, { id: "finanzen", icon: "Euro", label: "Finanzen", href: "/analytics/finanzen", beschreibung: "Umsatz, Zahlungseingang und offene Forderungen: die Sicht der Buchhaltung auf den Betrieb.", }, { id: "auftraege", icon: "ClipboardList", label: "Aufträge", href: "/analytics/auftraege", beschreibung: "Von der Anfrage bis zur Abnahme: wo die Vorgänge stehen, was gebunden ist und was über Termin läuft.", }, { id: "kunden", icon: "Users", label: "Kunden", href: "/analytics/kunden", beschreibung: "Woher Kunden kommen, wie viel sie bringen und wo Nachfassen lohnt.", }, { id: "team", icon: "HardHat", label: "Team", href: "/analytics/team", beschreibung: "Auslastung, produktive Stunden und Abschlüsse der Monteure: die Kennzahl hinter der Terminplanung.", }, ];