From 440f59d86c075c445fd845349beaf079caed2889 Mon Sep 17 00:00:00 2001 From: Olivier Date: Sun, 14 Jun 2026 17:53:02 +0200 Subject: [PATCH] =?UTF-8?q?Top=20Bar=20petits=20=C3=A9crans?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/Layout.jsx | 85 +++++++++++++++++++++++------- frontend/src/styles.css | 63 ++++++++++++++++++++++ 2 files changed, 130 insertions(+), 18 deletions(-) diff --git a/frontend/src/components/Layout.jsx b/frontend/src/components/Layout.jsx index b1c1cc3..39ea429 100644 --- a/frontend/src/components/Layout.jsx +++ b/frontend/src/components/Layout.jsx @@ -217,10 +217,22 @@ function IconPlusCircle() { ); } +const IconBurger = () => ( + +); + export default function Layout() { const { sidebarCollapsed, setSidebarCollapsed, toggleSidebar, displayMode, setDisplayMode } = useUi(); const navigate = useNavigate(); const [navIcons, setNavIcons] = useState({}); + const [burgerOpen, setBurgerOpen] = useState(false); + const burgerRef = useRef(null); // Auto-collapse en mode portrait sur tablette (768–1200px) useEffect(() => { @@ -231,6 +243,16 @@ export default function Layout() { return () => mq.removeEventListener('change', handler); }, [setSidebarCollapsed]); + // Fermer le burger au clic extérieur + useEffect(() => { + if (!burgerOpen) return; + const handler = (e) => { + if (burgerRef.current && !burgerRef.current.contains(e.target)) setBurgerOpen(false); + }; + document.addEventListener('mousedown', handler); + return () => document.removeEventListener('mousedown', handler); + }, [burgerOpen]); + useEffect(() => { api.get('/icons').then(rows => { const m = {}; @@ -302,28 +324,55 @@ export default function Layout() {
- - - + {/* Bouton burger — visible sur tablette/mobile */} +
+ + {burgerOpen && ( +
+ +
+ + + +
+
+ Affichage +
+ + +
+
+
+ )} +
+