diff --git a/src/App.tsx b/src/App.tsx index 8d4e573..95f4371 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { useState, useEffect, useCallback } from 'react'; import { useGateway } from './hooks/useGateway'; import { Header } from './components/Header'; import { Sidebar } from './components/Sidebar'; @@ -14,6 +14,18 @@ export default function App() { } = useGateway(); const [sidebarOpen, setSidebarOpen] = useState(false); + // Close sidebar on Escape key + const handleKeyDown = useCallback((e: KeyboardEvent) => { + if (e.key === 'Escape' && sidebarOpen) { + setSidebarOpen(false); + } + }, [sidebarOpen]); + + useEffect(() => { + document.addEventListener('keydown', handleKeyDown); + return () => document.removeEventListener('keydown', handleKeyDown); + }, [handleKeyDown]); + // Still checking stored credentials if (authenticated === null) { return ( @@ -37,7 +49,7 @@ export default function App() { open={sidebarOpen} onClose={() => setSidebarOpen(false)} /> -