diff --git a/src/app/(dashboard)/images/page.tsx b/src/app/(dashboard)/images/page.tsx
new file mode 100644
index 0000000..760c962
--- /dev/null
+++ b/src/app/(dashboard)/images/page.tsx
@@ -0,0 +1,9 @@
+import { Header } from '@/components/layout/Header'
+export default function ImagesPage() {
+ return (
+ <>
+
+
Module Images — à implémenter (Plan 2)
+ >
+ )
+}
diff --git a/src/app/(dashboard)/layout.tsx b/src/app/(dashboard)/layout.tsx
new file mode 100644
index 0000000..4f0e7c4
--- /dev/null
+++ b/src/app/(dashboard)/layout.tsx
@@ -0,0 +1,10 @@
+import { Sidebar } from '@/components/layout/Sidebar'
+
+export default function DashboardLayout({ children }: { children: React.ReactNode }) {
+ return (
+
+
+ {children}
+
+ )
+}
diff --git a/src/app/(dashboard)/page.tsx b/src/app/(dashboard)/page.tsx
new file mode 100644
index 0000000..98a0bb9
--- /dev/null
+++ b/src/app/(dashboard)/page.tsx
@@ -0,0 +1,9 @@
+import { Header } from '@/components/layout/Header'
+export default function DashboardPage() {
+ return (
+ <>
+
+ Dashboard — à implémenter (Plan 4)
+ >
+ )
+}
diff --git a/src/app/(dashboard)/parametres/page.tsx b/src/app/(dashboard)/parametres/page.tsx
new file mode 100644
index 0000000..4e04263
--- /dev/null
+++ b/src/app/(dashboard)/parametres/page.tsx
@@ -0,0 +1,9 @@
+import { Header } from '@/components/layout/Header'
+export default function ParametresPage() {
+ return (
+ <>
+
+ Module Paramètres — à implémenter (Plan 4)
+ >
+ )
+}
diff --git a/src/app/(dashboard)/produits/page.tsx b/src/app/(dashboard)/produits/page.tsx
new file mode 100644
index 0000000..904b19d
--- /dev/null
+++ b/src/app/(dashboard)/produits/page.tsx
@@ -0,0 +1,9 @@
+import { Header } from '@/components/layout/Header'
+export default function ProduitsPage() {
+ return (
+ <>
+
+ Module Produits — à implémenter (Plan 4)
+ >
+ )
+}
diff --git a/src/app/(dashboard)/sync/page.tsx b/src/app/(dashboard)/sync/page.tsx
new file mode 100644
index 0000000..2116231
--- /dev/null
+++ b/src/app/(dashboard)/sync/page.tsx
@@ -0,0 +1,9 @@
+import { Header } from '@/components/layout/Header'
+export default function SyncPage() {
+ return (
+ <>
+
+ Module Sync — à implémenter (Plan 3)
+ >
+ )
+}
diff --git a/src/app/page.tsx b/src/app/page.tsx
deleted file mode 100644
index 5f2df66..0000000
--- a/src/app/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-export default function Home() {
- return (
-
- Gestion — Matériaux Destock
-
- )
-}
diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx
new file mode 100644
index 0000000..ee42f9f
--- /dev/null
+++ b/src/components/layout/Header.tsx
@@ -0,0 +1,13 @@
+interface HeaderProps {
+ title: string
+ actions?: React.ReactNode
+}
+
+export function Header({ title, actions }: HeaderProps) {
+ return (
+
+
{title}
+ {actions &&
{actions}
}
+
+ )
+}
diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx
new file mode 100644
index 0000000..2acaaf5
--- /dev/null
+++ b/src/components/layout/Sidebar.tsx
@@ -0,0 +1,72 @@
+'use client'
+import Link from 'next/link'
+import { usePathname } from 'next/navigation'
+import { signOut, useSession } from 'next-auth/react'
+
+type NavItem = {
+ href: string
+ label: string
+ icon: string
+ adminOnly?: boolean
+}
+
+const NAV_ITEMS: NavItem[] = [
+ { href: '/', label: 'Dashboard', icon: '📊' },
+ { href: '/produits', label: 'Produits', icon: '📦' },
+ { href: '/images', label: 'Images', icon: '🖼️' },
+ { href: '/sync', label: 'Sync Sheets', icon: '🔄' },
+ { href: '/parametres', label: 'Paramètres', icon: '⚙️', adminOnly: true },
+]
+
+export function Sidebar() {
+ const pathname = usePathname()
+ const { data: session } = useSession()
+ const isAdmin = session?.user?.role === 'admin'
+
+ const visible = NAV_ITEMS.filter(item => !item.adminOnly || isAdmin)
+
+ return (
+
+ )
+}