diff --git a/HANDOVER.md b/HANDOVER.md index d79a15b..657df1d 100644 --- a/HANDOVER.md +++ b/HANDOVER.md @@ -1,6 +1,15 @@ # Übergabe an die Entwicklung -> **Vor dem Einbau lesen:** +> **Rangfolge:** Wo dieser Prototyp von HiveGrid Cloud abweicht, **gilt +> HiveGrid** — Schrift, Schriftgrößen, Abstände, Farben, Control-Höhen, +> App-Shell. Dass hier dieselbe Schrift und dieselbe Seitenleisten-Komponente +> stecken, dient nur der Lesbarkeit neben der Software; es ist keine Vorlage, +> an der sich die Software auszurichten hätte. Verbindlich sind aus diesem Repo +> die Kennzahl-Definitionen, die Diagrammregeln, das Verhalten und die +> Navigationsstruktur als Verabredung. Ausführlich: +> [`docs/ZIELSYSTEM.md`](docs/ZIELSYSTEM.md) Abschnitt 0. +> +> **Ebenfalls vor dem Einbau lesen:** > [`docs/SCOPE-ANALYTICS-DASHBOARD.md`](docs/SCOPE-ANALYTICS-DASHBOARD.md). > Der Zuschnitt zwischen Analytics und Dashboard ist noch offen und betrifft die > Übersichtsseite und den Handlungsbedarf. diff --git a/README.md b/README.md index 9497d0c..d3157cf 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,12 @@ ist noch offen und läuft bis dahin auf Interim-UI. Für diesen Prototyp heißt das: Verbindlich zu übergeben sind **Kennzahl-Definitionen, Chart-Regeln und Verhalten** — die Pixelanordnung ist ein Vorschlag. +**Rangfolge:** Wo dieser Prototyp von HiveGrid abweicht, gilt HiveGrid. Schrift, +Größen, Abstände, Farben und App-Shell kommen von dort; aus diesem Repo kommen +die Kennzahl-Definitionen, die Diagrammregeln, das Verhalten und die +Navigationsstruktur als Verabredung. + Details, Dateipfade und die konkrete Einbau-Liste stehen in -[`docs/ZIELSYSTEM.md`](docs/ZIELSYSTEM.md). Welche Bereiche der Zielanwendung +[`docs/ZIELSYSTEM.md`](docs/ZIELSYSTEM.md) — die Rangfolge in Abschnitt 0. Welche Bereiche der Zielanwendung bereits finale Subframe-Screens tragen — und damit als Leitplanke taugen — steht in [`docs/LEITPLANKEN.md`](docs/LEITPLANKEN.md). diff --git a/docs/LEITPLANKEN.md b/docs/LEITPLANKEN.md index 85f2516..b566a4a 100644 --- a/docs/LEITPLANKEN.md +++ b/docs/LEITPLANKEN.md @@ -190,6 +190,14 @@ lieber neu zählen. ## 6. Wo dieser Prototyp bewusst abweicht +> Vorab, damit die folgende Tabelle nicht falsch gelesen wird: **Eine bewusste +> Abweichung ist eine Bitte um eine Entscheidung, kein Freibrief.** Bei +> globalen Regeln — Schrift, Größen, Abstände, Farben, Control-Höhen — gilt +> ohne Diskussion HiveGrid. Die Punkte unten betreffen ausschließlich den +> Analytics-Bereich und sind begründet, damit sie beim Einbau nicht +> versehentlich „korrigiert" werden. Rangfolge: [ZIELSYSTEM.md](ZIELSYSTEM.md) +> Abschnitt 0. + Ein Abgleich mit den nachgezogenen Cloud-Screens fördert drei Stellen zutage, an denen dieser Prototyp anders arbeitet. Sie stehen hier, damit sie beim Einbau als **Entscheidung** erkennbar sind und nicht als Versehen wegkorrigiert werden. diff --git a/docs/NAVIGATION.md b/docs/NAVIGATION.md index 42856f5..76539b1 100644 --- a/docs/NAVIGATION.md +++ b/docs/NAVIGATION.md @@ -19,6 +19,15 @@ Gerendert wird mit derselben Komponente wie in der Software (`ui/components/SidebarWithSections`, aus der Cloud-Fassung portiert) und derselben Schrift (Instrument Sans, selbst gehostet aus denselben Dateien). +> **Für den Einbau:** Verbindlich ist an dieser Seitenleiste die **Struktur** — +> zwei Einträge, Analytics mit innerer Leiste. Nicht verbindlich ist ihre +> Umsetzung hier. In der Software werden die zwei Einträge in die bestehende +> `AppSidebar` eingehängt und die innere Leiste über das dortige +> `SidebarIconsLayout` gebaut; unser Nachbau wird nicht mitportiert. Globale +> Regeln — Schrift, Größen, Abstände, Farben — kommen ausschließlich aus +> HiveGrid und werden von hier aus **nicht** überschrieben. Siehe +> [ZIELSYSTEM.md](ZIELSYSTEM.md) Abschnitt 0. + **Analytics ist ein einzelner Menüpunkt**, kein aufklappbarer Bereich. Die fünf Analyse-Seiten sind darin über eine **innere Leiste** erreichbar: diff --git a/docs/ZIELSYSTEM.md b/docs/ZIELSYSTEM.md index a8a9cef..caee16b 100644 --- a/docs/ZIELSYSTEM.md +++ b/docs/ZIELSYSTEM.md @@ -11,6 +11,58 @@ Größenordnung: 678 Route-Dateien, davon 575 im Core-Manifest. --- +## 0. Rangfolge beim Einbau — HiveGrid gewinnt + +**Dieser Prototyp ist nachrangig.** Wo er von HiveGrid Cloud abweicht, gilt +HiveGrid — ohne Rückfrage, ohne Ausnahme. Das betrifft alles Globale: + +| | Wer bestimmt | +|---|---| +| Schrift, Schriftgrößen, Zeilenhöhen | **HiveGrid** | +| Abstände, Paddings, Margins, Raster | **HiveGrid** | +| Farben der Oberfläche, Rahmen, Radien, Schatten | **HiveGrid** | +| Control-Höhen, Komponentenvarianten, Zustände | **HiveGrid** | +| App-Shell, Seitenleiste, Kopfzeile, Seitenkopf | **HiveGrid** | +| i18n, Formatierung, Zeitzone | **HiveGrid** | + +Dass dieser Prototyp dieselbe Schrift, dieselbe Seitenleisten-Komponente und +dieselben Token benutzt, hat **einen einzigen Zweck**: Er soll neben der +Software lesbar sein und nicht wie ein Fremdkörper wirken. Es ist **keine +Vorlage, an der sich die Software auszurichten hätte.** Fällt beim Einbau auf, +dass hier ein Wert von HiveGrid abweicht, ist der Wert hier falsch — nicht dort. + +### Was aus diesem Repo verbindlich ist + +Nur das Fachliche und das Analytics-Eigene: + +1. **Die Navigationsstruktur als Verabredung** — zwei Einträge in der + Seitenleiste (`Dashboard`, `Analytics`), und Analytics trägt eine **innere + Leiste** mit den fünf Analyse-Seiten. Verbindlich ist die *Struktur*, nicht + ihre Umsetzung hier: In der Software werden diese zwei Einträge in die + bestehende `AppSidebar` eingehängt und die innere Leiste über das dortige + `SidebarIconsLayout` gebaut. Unser Nachbau ist die Beschreibung, nicht das + Bauteil. +2. **Kennzahl-Definitionen** ([KPI-KATALOG.md](KPI-KATALOG.md)) — + was gerechnet wird, mit welchem Zeitbezug. +3. **Diagrammregeln** ([DESIGN-SYSTEM.md](DESIGN-SYSTEM.md)) — Palette, + Achsen, Diagrammwahl, Leerzustände. Das ist die Lücke, die HiveGrid heute + nicht füllt (siehe [LEITPLANKEN.md](LEITPLANKEN.md) Abschnitt 4). +4. **Verhalten** — Filterlogik, Zeitbezüge, Widget-Sichtbarkeit, + Sortier- und Blätterverhalten. + +### Was aus diesem Repo Gerüst ist und wegfällt + +`components/layout/AppShell.tsx`, unsere Kopie der Seitenleiste, `PageHeader`, +die Kopfzeile mit Suche und Glocke, die Routen unter `app/` und die +Platzhalterseite für das Dashboard. All das existiert, damit der Prototyp +alleine lauffähig und beurteilbar ist. Beim Einbau übernehmen +`SubframeAppShell`, `AppSidebar`, `PageShell` und die Loader der Software. + +**Kurz:** Aus diesem Repo kommt der Inhalt des Analytics-Bereichs und die +Verabredung, wo er in der Navigation sitzt. Alles andere kommt aus HiveGrid. + +--- + ## 1. Der Platz dieses Prototyps Das Ziel ist der Tenant-Dashboard-Screen unter `…//dashboard`. diff --git a/features/dashboard/components/layout/AnalyticsInnerNav.tsx b/features/dashboard/components/layout/AnalyticsInnerNav.tsx index 471c7d9..fd3bd3d 100644 --- a/features/dashboard/components/layout/AnalyticsInnerNav.tsx +++ b/features/dashboard/components/layout/AnalyticsInnerNav.tsx @@ -20,6 +20,16 @@ import type { SeitenId } from "../../data/filtering"; * Tastaturfokus auf Beschriftungen aufklappt — verzögert, damit sie beim * bloßen Überstreichen nicht aufspringt. Unterhalb `sm` tritt an ihre Stelle * eine Reiterleiste; auch das ist aus dem Original übernommen. + * + * ──────────────────────────────────────────────────────────────────────────── + * BEIM EINBAU: Dieser Nachbau wird NICHT portiert. + * + * Verbindlich ist die Verabredung — Analytics bekommt eine innere Leiste mit + * den fünf Analyse-Seiten. Gebaut wird sie in HiveGrid mit dem dortigen + * `SidebarIconsLayout`, das genau diesen Zweck hat (Leads, Termine, HR, + * Einstellungen nutzen es bereits). Diese Datei beschreibt das Ziel, sie ist + * nicht das Bauteil. Rangfolge: docs/ZIELSYSTEM.md Abschnitt 0. + * ──────────────────────────────────────────────────────────────────────────── */ const OEFFNEN_MS = 300; diff --git a/features/dashboard/components/layout/AppShell.tsx b/features/dashboard/components/layout/AppShell.tsx index 035084d..6f0fc13 100644 --- a/features/dashboard/components/layout/AppShell.tsx +++ b/features/dashboard/components/layout/AppShell.tsx @@ -23,6 +23,20 @@ import { HEUTE } from "../../utils/dateUtils"; * Platzhalterseite, weil es ein eigenes Feature ist und hier nicht gestaltet * wird — aber ein Menüpunkt, der nur einen Hinweis auslöst, lässt offen, ob * etwas fehlt oder etwas kaputt ist. + * + * ──────────────────────────────────────────────────────────────────────────── + * BEIM EINBAU: Diese Datei wird NICHT portiert. + * + * Sie existiert, damit der Prototyp alleine lauffähig ist. In HiveGrid Cloud + * übernehmen `SubframeAppShell` und `AppSidebar`. Verbindlich ist aus dieser + * Datei allein die **Struktur**: zwei Einträge in der Seitenleiste, Dashboard + * und Analytics — mehr nicht, weil alles Übrige dort schon steht. + * + * Globale Regeln (Schrift, Größen, Abstände, Farben, Control-Höhen) kommen + * ausschließlich aus HiveGrid und werden von hier aus nicht überschrieben. + * Weicht ein Wert hier von dort ab, ist der Wert hier falsch. + * Rangfolge: docs/ZIELSYSTEM.md Abschnitt 0. + * ──────────────────────────────────────────────────────────────────────────── */ export function AppShell({ children }: { children: React.ReactNode }) { const pathname = usePathname();