docs: Rangfolge beim Einbau festhalten — HiveGrid gewinnt

Klarstellung, damit beim Port keine globalen Regeln aus diesem Repo in die
Software wandern.

Verbindlich ist aus diesem Repo nur das Analytics-Eigene und das Fachliche:
Kennzahl-Definitionen, Diagrammregeln, Verhalten — und die Navigationsstruktur
als Verabredung (zwei Einträge in der Seitenleiste, Analytics mit innerer
Leiste).

Nicht verbindlich ist alles Globale: Schrift, Schriftgrößen, Abstände, Farben,
Radien, Control-Höhen, App-Shell, Kopfzeile, i18n, Formatierung. Das kommt
ausschließlich aus HiveGrid. Dass dieser Prototyp dieselbe Schrift, dieselbe
Seitenleisten-Komponente und dieselben Token benutzt, dient allein der
Lesbarkeit neben der Software — es ist keine Vorlage, an der sich die Software
auszurichten hätte. Weicht ein Wert hier von HiveGrid ab, ist der Wert hier
falsch.

Ebenso festgehalten, was Gerüst ist und wegfällt: AppShell, unsere Kopie der
Seitenleiste, PageHeader, die Kopfzeile, die Routen unter app/ und die
Dashboard-Platzhalterseite. Der Nachbau der inneren Leiste wird nicht portiert;
in HiveGrid entsteht sie über das dortige SidebarIconsLayout.

Vermerkt in ZIELSYSTEM.md (neuer Abschnitt 0 mit Zuständigkeitstabelle), im
Kopf von HANDOVER.md und README.md, bei der Struktur in NAVIGATION.md, als
Vorbemerkung zu den bewussten Abweichungen in LEITPLANKEN.md — und als
Kommentarblock in AppShell.tsx und AnalyticsInnerNav.tsx, weil beim Port oft
zuerst der Code gelesen wird.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QPeZNwSeU7qG3RRCwaxEZX
This commit is contained in:
dejanandClaude Opus 5 committed 2026-08-29 21:11:43 +02:00
1 parent 9eec855f57
commit b3d71c1f19
7 files changed
+109 -2

No files matched your search

@@ -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;
@@ -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();