From 7b4a45df49103827736460c024d3e4e69058be0f Mon Sep 17 00:00:00 2001 From: Leopoldadmin Date: Sun, 28 Jun 2026 17:55:26 +0200 Subject: [PATCH] fix: mobile sidebar slide-in overlay with hamburger and panel toggle buttons - LeftSidebar/RightSidebar: added className prop for 'open' class - Topbar: wired hamburger onClick + added mobile-drawer-toggle button for right panel - App.tsx: added SettingsModal import/state/render, passed className props to sidebars - styles.css: mobile sidebars now fixed slide-in overlays (translateX) instead of display:none - ui.types.ts: added className to RightSidebarProps, onOpenLeftDrawer/onOpenRightDrawer to TopbarProps - Tested at 390px viewport: both sidebars slide in correctly, transform verified via DOM --- frontend/src/App.tsx | 8 ++++++ frontend/src/components/LeftSidebar.tsx | 4 +-- frontend/src/components/RightSidebar.tsx | 3 +- frontend/src/components/Topbar.tsx | 7 +++-- frontend/src/styles.css | 35 ++++++++++++++++++++++-- frontend/src/types/ui.types.ts | 4 +++ 6 files changed, 53 insertions(+), 8 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index f0ea0ab..f354e8b 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -18,6 +18,7 @@ import StatusBar from './components/StatusBar'; import MobileDrawers from './components/MobileDrawers'; import BackgroundImport from './components/BackgroundImport'; import HistoryPanel from './components/HistoryPanel'; +import SettingsModal from './components/SettingsModal'; import { BackgroundService, type BackgroundConfig } from './services/backgroundService'; import { HistoryManager, type CADStateSnapshot, type HistoryEntry } from './history'; import { getCommandRegistry } from './services/commandRegistry'; @@ -146,6 +147,7 @@ const CADEditor: React.FC = ({ projectId, token, onNavigateBack // Mobile drawers const [mobileLeftOpen, setMobileLeftOpen] = useState(false); const [mobileRightOpen, setMobileRightOpen] = useState(false); + const [settingsOpen, setSettingsOpen] = useState(false); const [activeDrawerTab, setActiveDrawerTab] = useState('tool'); // Background @@ -936,6 +938,9 @@ const CADEditor: React.FC = ({ projectId, token, onNavigateBack onRedo={handleRedo} onThemeToggle={handleThemeToggle} theme={theme} + onOpenSettings={() => setSettingsOpen(true)} + onOpenLeftDrawer={() => setMobileLeftOpen(true)} + onOpenRightDrawer={() => setMobileRightOpen(true)} /> = ({ projectId, token, onNavigateBack onToolChange={handleToolChange} selectedTemplate={selectedTemplate} onTemplateSelect={handleTemplateSelect} + className={mobileLeftOpen ? 'open' : ''} /> = ({ projectId, token, onNavigateBack onKISend={handleKISend} onKISuggestionClick={handleSuggestionClick} kiLoading={kiLoading} + className={mobileRightOpen ? 'open' : ''} /> = ({ projectId, token, onNavigateBack onCloseRight={() => setMobileRightOpen(false)} onRightTabChange={setActiveDrawerTab} /> + setSettingsOpen(false)} /> setBgImportOpen(false)} diff --git a/frontend/src/components/LeftSidebar.tsx b/frontend/src/components/LeftSidebar.tsx index a0e9d9a..4963703 100644 --- a/frontend/src/components/LeftSidebar.tsx +++ b/frontend/src/components/LeftSidebar.tsx @@ -56,9 +56,9 @@ const sections: Array<{ label: string; tools: ToolDef[] }> = [ { label: 'Bestuhlung', tools: sectionBestuhlung }, ]; -const LeftSidebar: React.FC = ({ activeTool, onToolChange, selectedTemplate, onTemplateSelect, onCollapse }) => { +const LeftSidebar: React.FC = ({ activeTool, onToolChange, selectedTemplate, onTemplateSelect, onCollapse, className }) => { return ( -