diff --git a/.replit b/.replit index b1b492e..fa8f8de 100644 --- a/.replit +++ b/.replit @@ -22,6 +22,10 @@ externalPort = 3003 localPort = 35357 externalPort = 3002 +[[ports]] +localPort = 37431 +externalPort = 5000 + [[ports]] localPort = 37659 externalPort = 4200 @@ -34,6 +38,10 @@ externalPort = 3000 localPort = 43245 externalPort = 3001 +[[ports]] +localPort = 46681 +externalPort = 5173 + [env] PORT = "5000" diff --git a/client/src/components/sidebar.tsx b/client/src/components/sidebar.tsx index 8e1d9a7..f0154c0 100644 --- a/client/src/components/sidebar.tsx +++ b/client/src/components/sidebar.tsx @@ -7,7 +7,11 @@ import { Button } from "@/components/ui/button"; import { Avatar, AvatarFallback } from "@/components/ui/avatar"; import { useState, useEffect } from "react"; -export default function Sidebar() { +interface SidebarProps { + onLinkClick?: () => void; +} + +export default function Sidebar({ onLinkClick }: SidebarProps = {}) { const [location] = useLocation(); const [, setLocation] = useLocation(); const { toast } = useToast(); @@ -27,6 +31,18 @@ export default function Sidebar() { const isAdmin = session?.role === "admin"; + const handleLinkClick = (href: string, e: React.MouseEvent) => { + e.preventDefault(); + // Always close sidebar on mobile first + if (onLinkClick) { + onLinkClick(); + } + // Navigate after a small delay to ensure state update completes + setTimeout(() => { + setLocation(href); + }, 10); + }; + const logoutMutation = useMutation({ mutationFn: async () => { const res = await apiRequest("POST", "/api/auth/logout", {}); @@ -82,10 +98,11 @@ export default function Sidebar() { return (
  • - handleLinkClick(item.href, e)} className={` - flex items-center gap-3 px-4 py-3 rounded-xl font-medium transition-all relative + flex items-center gap-3 px-4 py-3 rounded-xl font-medium transition-all relative cursor-pointer ${isActive ? 'bg-gradient-to-r from-primary/10 to-secondary/10 text-primary shadow-sm' : 'text-muted-foreground hover:bg-sidebar-accent hover:text-foreground' @@ -108,7 +125,7 @@ export default function Sidebar() { )} )} - + {isCollapsed && (
    {item.label} @@ -131,10 +148,11 @@ export default function Sidebar() { return (
  • - handleLinkClick(item.href, e)} className={` - flex items-center gap-3 px-4 py-3 rounded-xl transition-all relative + flex items-center gap-3 px-4 py-3 rounded-xl transition-all relative cursor-pointer ${isActive ? 'bg-gradient-to-r from-primary/10 to-secondary/10 text-primary shadow-sm' : 'text-muted-foreground hover:bg-sidebar-accent hover:text-foreground' @@ -148,7 +166,7 @@ export default function Sidebar() { )} {!isCollapsed && {item.label}} - + {isCollapsed && (
    {item.label} @@ -170,10 +188,11 @@ export default function Sidebar() {

    Administration

    )} - handleLinkClick("/pages", e)} className={` - flex items-center gap-3 px-4 py-3 rounded-xl transition-all relative group + flex items-center gap-3 px-4 py-3 rounded-xl transition-all relative group cursor-pointer ${location === "/pages" ? 'bg-gradient-to-r from-primary/10 to-secondary/10 text-primary shadow-sm' : 'text-muted-foreground hover:bg-sidebar-accent hover:text-foreground' @@ -192,11 +211,12 @@ export default function Sidebar() { Pages gérées )} - - + handleLinkClick("/users", e)} className={` - flex items-center gap-3 px-4 py-3 rounded-xl transition-all relative group + flex items-center gap-3 px-4 py-3 rounded-xl transition-all relative group cursor-pointer ${location === "/users" ? 'bg-gradient-to-r from-primary/10 to-secondary/10 text-primary shadow-sm' : 'text-muted-foreground hover:bg-sidebar-accent hover:text-foreground' @@ -215,11 +235,12 @@ export default function Sidebar() { Utilisateurs )} - - + handleLinkClick("/sql", e)} className={` - flex items-center gap-3 px-4 py-3 rounded-xl transition-all relative group + flex items-center gap-3 px-4 py-3 rounded-xl transition-all relative group cursor-pointer ${location === "/sql" ? 'bg-gradient-to-r from-primary/10 to-secondary/10 text-primary shadow-sm' : 'text-muted-foreground hover:bg-sidebar-accent hover:text-foreground' @@ -238,11 +259,12 @@ export default function Sidebar() { SQL )} - - + handleLinkClick("/settings", e)} className={` - flex items-center gap-3 px-4 py-3 rounded-xl transition-all relative group + flex items-center gap-3 px-4 py-3 rounded-xl transition-all relative group cursor-pointer ${location === "/settings" ? 'bg-gradient-to-r from-primary/10 to-secondary/10 text-primary shadow-sm' : 'text-muted-foreground hover:bg-sidebar-accent hover:text-foreground' @@ -261,7 +283,7 @@ export default function Sidebar() { Paramètres )} - + )} @@ -302,10 +324,10 @@ export default function Sidebar() { )} - {/* Toggle Button */} + {/* Toggle Button (Desktop only) */} diff --git a/client/src/components/ui/button.tsx b/client/src/components/ui/button.tsx index 36496a2..c8cbf29 100644 --- a/client/src/components/ui/button.tsx +++ b/client/src/components/ui/button.tsx @@ -20,10 +20,10 @@ const buttonVariants = cva( link: "text-primary underline-offset-4 hover:underline", }, size: { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10", + default: "h-11 px-4 py-2", + sm: "h-11 rounded-md px-3", + lg: "h-12 rounded-md px-8", + icon: "h-11 w-11", }, }, defaultVariants: { diff --git a/client/src/pages/ai.tsx b/client/src/pages/ai.tsx index eb28a88..a3860cb 100644 --- a/client/src/pages/ai.tsx +++ b/client/src/pages/ai.tsx @@ -19,13 +19,13 @@ export default function AI() { fixed lg:static inset-y-0 left-0 z-50 transform transition-transform duration-300 ease-in-out ${sidebarOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'} `}> - + setSidebarOpen(false)} />
    setSidebarOpen(!sidebarOpen)} /> -
    +

    Assistant IA

    diff --git a/client/src/pages/calendar.tsx b/client/src/pages/calendar.tsx index b97aca3..b6cb235 100644 --- a/client/src/pages/calendar.tsx +++ b/client/src/pages/calendar.tsx @@ -19,13 +19,13 @@ export default function Calendar() { fixed lg:static inset-y-0 left-0 z-50 transform transition-transform duration-300 ease-in-out ${sidebarOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'} `}> - + setSidebarOpen(false)} />

    setSidebarOpen(!sidebarOpen)} /> -
    +

    Calendrier

    diff --git a/client/src/pages/dashboard.tsx b/client/src/pages/dashboard.tsx index e930508..d097e43 100644 --- a/client/src/pages/dashboard.tsx +++ b/client/src/pages/dashboard.tsx @@ -21,13 +21,13 @@ export default function Dashboard() { fixed lg:static inset-y-0 left-0 z-50 transform transition-transform duration-300 ease-in-out ${sidebarOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'} `}> - + setSidebarOpen(false)} />

    setSidebarOpen(!sidebarOpen)} /> -
    +
    diff --git a/client/src/pages/history.tsx b/client/src/pages/history.tsx index e24f20a..37154a2 100644 --- a/client/src/pages/history.tsx +++ b/client/src/pages/history.tsx @@ -31,13 +31,13 @@ export default function History() { fixed lg:static inset-y-0 left-0 z-50 transform transition-transform duration-300 ease-in-out ${sidebarOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'} `}> - + setSidebarOpen(false)} />
    setSidebarOpen(!sidebarOpen)} /> -
    +

    Historique

    diff --git a/client/src/pages/media.tsx b/client/src/pages/media.tsx index f46e7cd..67264a3 100644 --- a/client/src/pages/media.tsx +++ b/client/src/pages/media.tsx @@ -19,13 +19,13 @@ export default function Media() { fixed lg:static inset-y-0 left-0 z-50 transform transition-transform duration-300 ease-in-out ${sidebarOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'} `}> - + setSidebarOpen(false)} />

    setSidebarOpen(!sidebarOpen)} /> -
    +

    Médiathèque

    diff --git a/client/src/pages/new-post.tsx b/client/src/pages/new-post.tsx index 107f6fc..c759abe 100644 --- a/client/src/pages/new-post.tsx +++ b/client/src/pages/new-post.tsx @@ -202,13 +202,13 @@ export default function NewPost() { fixed lg:static inset-y-0 left-0 z-50 transform transition-transform duration-300 ease-in-out ${sidebarOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'} `}> - + setSidebarOpen(false)} />

    setSidebarOpen(!sidebarOpen)} /> -
    +

    Nouvelle publication

    @@ -216,7 +216,7 @@ export default function NewPost() {

    -
    +
    diff --git a/client/src/pages/pages.tsx b/client/src/pages/pages.tsx index ebe9e2d..cb4ef7a 100644 --- a/client/src/pages/pages.tsx +++ b/client/src/pages/pages.tsx @@ -55,13 +55,13 @@ export default function PagesManagement() { fixed lg:static inset-y-0 left-0 z-50 transform transition-transform duration-300 ease-in-out ${sidebarOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'} `}> - + setSidebarOpen(false)} />
    setSidebarOpen(!sidebarOpen)} /> -
    +

    Pages gérées

    diff --git a/client/src/pages/settings.tsx b/client/src/pages/settings.tsx index b9aa3c4..788aabb 100644 --- a/client/src/pages/settings.tsx +++ b/client/src/pages/settings.tsx @@ -132,13 +132,13 @@ export default function Settings() { fixed lg:static inset-y-0 left-0 z-50 transform transition-transform duration-300 ease-in-out ${sidebarOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'} `}> - + setSidebarOpen(false)} />
    setSidebarOpen(!sidebarOpen)} /> -
    +

    Paramètres

    diff --git a/client/src/pages/sql.tsx b/client/src/pages/sql.tsx index 3b7f892..11037b2 100644 --- a/client/src/pages/sql.tsx +++ b/client/src/pages/sql.tsx @@ -87,13 +87,13 @@ export default function SqlAdmin() { fixed lg:static inset-y-0 left-0 z-50 transform transition-transform duration-300 ease-in-out ${sidebarOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'} `}> - + setSidebarOpen(false)} />

    setSidebarOpen(!sidebarOpen)} /> -
    +

    @@ -104,7 +104,7 @@ export default function SqlAdmin() {

    -
    +
    {/* Liste des tables */} diff --git a/client/src/pages/users-admin.tsx b/client/src/pages/users-admin.tsx index 6fd3d60..a9ba7d4 100644 --- a/client/src/pages/users-admin.tsx +++ b/client/src/pages/users-admin.tsx @@ -290,13 +290,13 @@ export default function UsersAdmin() { fixed lg:static inset-y-0 left-0 z-50 transform transition-transform duration-300 ease-in-out ${sidebarOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'} `}> - + setSidebarOpen(false)} />
    setSidebarOpen(!sidebarOpen)} /> -
    +

    @@ -307,7 +307,7 @@ export default function UsersAdmin() {

    -
    +
    {/* Liste des utilisateurs */}