From 25a31f1f2432abb1175b13cad763f60609ec94f1 Mon Sep 17 00:00:00 2001 From: Gilles Soulier Date: Sun, 24 May 2026 05:22:45 +0200 Subject: [PATCH] feat: layout responsive mobile (bottom nav) / laptop (sidebar) + page d'accueil --- frontend/src/components/layout/BottomNav.tsx | 45 +++++++++++++++++ frontend/src/components/layout/Layout.tsx | 22 ++++++++- frontend/src/components/layout/SideNav.tsx | 51 ++++++++++++++++++++ frontend/src/pages/HomePage.tsx | 29 ++++++++++- 4 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 frontend/src/components/layout/BottomNav.tsx create mode 100644 frontend/src/components/layout/SideNav.tsx diff --git a/frontend/src/components/layout/BottomNav.tsx b/frontend/src/components/layout/BottomNav.tsx new file mode 100644 index 0000000..1f6fb4b --- /dev/null +++ b/frontend/src/components/layout/BottomNav.tsx @@ -0,0 +1,45 @@ +import { NavLink } from 'react-router-dom' + +const NAV_ITEMS = [ + { to: '/', icon: 'house', label: 'Accueil' }, + { to: '/todos', icon: 'list-check', label: 'Todos' }, + { to: '/shopping', icon: 'cart-shopping', label: 'Courses' }, + { to: '/notes', icon: 'note-sticky', label: 'Notes' }, +] + +export default function BottomNav() { + return ( + + ) +} diff --git a/frontend/src/components/layout/Layout.tsx b/frontend/src/components/layout/Layout.tsx index 44d36a8..9e808ed 100644 --- a/frontend/src/components/layout/Layout.tsx +++ b/frontend/src/components/layout/Layout.tsx @@ -1,4 +1,24 @@ import { Outlet } from 'react-router-dom' +import BottomNav from './BottomNav' +import SideNav from './SideNav' + export default function Layout() { - return
+ return ( +
+ {/* Sidebar — visible uniquement sur laptop (lg et +) */} +
+ +
+ + {/* Contenu principal */} +
+ +
+ + {/* Navigation bas — visible uniquement sur mobile */} +
+ +
+
+ ) } diff --git a/frontend/src/components/layout/SideNav.tsx b/frontend/src/components/layout/SideNav.tsx new file mode 100644 index 0000000..333dc12 --- /dev/null +++ b/frontend/src/components/layout/SideNav.tsx @@ -0,0 +1,51 @@ +import { NavLink } from 'react-router-dom' + +const NAV_ITEMS = [ + { to: '/', icon: 'house', label: 'Accueil' }, + { to: '/todos', icon: 'list-check', label: 'Todos' }, + { to: '/shopping', icon: 'cart-shopping', label: 'Courses' }, + { to: '/notes', icon: 'note-sticky', label: 'Notes' }, +] + +export default function SideNav() { + return ( + + ) +} diff --git a/frontend/src/pages/HomePage.tsx b/frontend/src/pages/HomePage.tsx index 669ffeb..1084fa5 100644 --- a/frontend/src/pages/HomePage.tsx +++ b/frontend/src/pages/HomePage.tsx @@ -1,3 +1,30 @@ export default function HomePage() { - return
HomeHub
+ return ( +
+
+

+ HomeHub +

+

+ Application d'organisation personnelle +

+
+
+ {[ + { label: 'Todos', icon: 'list', path: '/todos' }, + { label: 'Courses', icon: 'cart-shopping', path: '/shopping' }, + { label: 'Notes', icon: 'note-sticky', path: '/notes' }, + ].map((item) => ( +
+ + {item.label} +
+ ))} +
+
+ ) }