From efedbdba4d687702336faae20ddd557651ff2550 Mon Sep 17 00:00:00 2001 From: Pepe Ziberi Date: Sun, 19 Jul 2026 17:41:52 +0200 Subject: [PATCH] =?UTF-8?q?refactor(topbar):=20Handy-Men=C3=BC=20entwirrt?= =?UTF-8?q?=20=E2=80=93=20ein=20einziges=20Men=C3=BC=20statt=20zwei=20(v1.?= =?UTF-8?q?4.15)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Mobil nur noch EIN ⋮-Menü (früher ☰ links + ⋮ rechts → verwirrend) - Topbar mobil reduziert auf: Logo · Speichern · Neuer Einsatz · Menü - Selten gebrauchte Buttons (Neue Übung, Präsentationsmodus) wandern ins Menü - Menü gruppiert mit Trennern: Einsatz/Übung · Export/Karte · Ansicht · System/Konto - Voller Funktionsumfang mobil erreichbar (Einsätze verwalten, Export, Admin, Schlaucheinstellungen, Tour, Kennwort, Abmelden) - Desktop-Layout unverändert Co-Authored-By: Claude Opus 4.8 (1M context) --- package.json | 2 +- src/components/layout/topbar.tsx | 92 +++++++++++++++++++++++++++----- 2 files changed, 81 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index e5f0916..a141600 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lageplan", - "version": "1.4.14", + "version": "1.4.15", "description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation", "private": true, "scripts": { diff --git a/src/components/layout/topbar.tsx b/src/components/layout/topbar.tsx index 878e86a..1941cd8 100644 --- a/src/components/layout/topbar.tsx +++ b/src/components/layout/topbar.tsx @@ -13,6 +13,8 @@ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu' import { @@ -184,7 +186,7 @@ export function Topbar({ @@ -347,36 +349,102 @@ export function Topbar({ )} - {/* Mobile: overflow menu with all secondary actions */} + {/* Mobile: EIN Menü mit allen Aktionen (ersetzt die früheren zwei getrennten Menüs) */} - - + + {userName && ( + <> + + {userName}{userRole ? ` · ${userRole}` : ''} + + + + )} + + {/* Einsatz / Übung */} {project && onEndProject && ( {project.mode === 'UEBUNG' ? 'Übung beenden' : 'Einsatz beenden'} )} - - {isDarkMode ? : } - {isDarkMode ? 'Tagmodus' : 'Nachtmodus'} + onNewProject('UEBUNG')}> + + Neue Übung + + + Einsätze verwalten + + + + + {/* Karte / Export */} + handleExport('png')}> + + Als PNG exportieren + + handleExport('pdf')}> + + Als PDF exportieren + + {onClearAll && ( + + + Zeichnung leeren + + )} + {onTogglePresentationLock && ( + + {presentationLocked ? : } + {presentationLocked ? 'Präsentation: gesperrt' : 'Präsentationsmodus'} + + )} + + + + {/* Ansicht */} {isFullscreen ? : } {isFullscreen ? 'Vollbild verlassen' : 'Vollbild'} + + {isDarkMode ? : } + {isDarkMode ? 'Tagmodus' : 'Nachtmodus'} + + + + + {/* System / Konto */} + {(userRole === 'SERVER_ADMIN' || userRole === 'TENANT_ADMIN') && ( + window.location.href = '/admin'}> + + Administration + + )} setIsHoseSettingsOpen(true)}> - Einstellungen + Schlaucheinstellungen + + {onStartTour && ( + + + Tour starten + + )} + setShowPasswordDialog(true)}> + + Kennwort ändern {onLogout && ( - + - Abmelden {userName && `(${userName})`} + Abmelden )}