feat(admin): eigener Arbeitsbereich mit Dashboard, Zaehlern und Schnellsuche

- Admin ohne Shop-Kopf-/Fusszeile (HideOnAdmin); kein doppeltes <main> mehr
- Seitenleiste gruppiert (Verkauf, Sortiment, Kundschaft, Seite), aktive
  Seite als wandernde Flaeche mit Wabe, Zaehler fuer Wartendes: bezahlte
  offene Bestellungen, neue Retouren, unfreigegebene Bewertungen, neue
  Firmenanfragen (COUNT-Abfragen erst nach Admin-/2FA-Pruefung)
- Schnellsuche (Strg/Cmd+K): Seiten und haeufige Aktionen per Tastatur,
  tolerante Wortsuche, Ziele nur aus fester Liste
- Dashboard: Begruessung nach Tageszeit (Berliner Zeit), eine Leitzahl
  "Umsatz heute" mit Vergleich zu gestern und Mini-Verlauf, "Zu erledigen"
  mit direkten Links bzw. "Alles erledigt"-Siegel, ruhigere Kennzahl-Kacheln
- Diagramme nach dataviz-Skill: per Validator gepruefter Diagrammton
  #a0722f (>=3:1; #b88a44 erreichte nur 2,93:1), gerundete Balkenkappen,
  2px Luecke, Tooltip je Balken (auch per Tastatur), Meter mit Spur im
  selben Ton, Rang der Top-Produkte als Wabe
- Einheitliche Admin-Details zentral: groessere Ueberschriften,
  Tabellenkopf als Etikett, feste Ziffernbreite, eigene Auswahlpfeile

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Opus 5.5 committed 2026-09-25 13:45:24 +02:00
1 parent 15ddceaa39
commit c95c713717
11 files changed
+762 -133

No files matched your search

+28
View File
@@ -895,6 +895,18 @@ export interface Dictionary {
noVouchersYet: string;
usedCountLabel: (count: number, maxUses: number | null) => string;
viewAllOrders: string;
greeting: (part: "morning" | "day" | "evening", name: string) => string;
todayRevenueLabel: string;
monthRevenueLabel: string;
vsYesterday: (delta: string, up: boolean) => string;
toDoHeading: string;
toDoOrders: (count: number) => string;
toDoReturns: (count: number) => string;
toDoReviews: (count: number) => string;
toDoInquiries: (count: number) => string;
allDoneTitle: string;
allDoneText: string;
chartTooltip: (day: string, value: string) => string;
};
adminContentPage: {
backToDashboard: string;
@@ -964,6 +976,22 @@ export interface Dictionary {
closeMenu: string;
loggedInAs: (name: string) => string;
logout: string;
groupSales: string;
groupRange: string;
groupCustomers: string;
groupSite: string;
paletteOpen: string;
paletteShortcut: string;
palettePlaceholder: string;
paletteNoResults: string;
paletteSectionPages: string;
paletteSectionActions: string;
actionNewProduct: string;
actionNewVoucher: string;
actionNewUser: string;
actionNewShippingTier: string;
actionViewShop: string;
badgeWaiting: (count: number) => string;
twoFactorWarning: string;
twoFactorSetupLink: string;
};