Merge pull request #28 from ATLAS-PJK-GM007/selly/frontend
feat(layout): auto-collapse sidebar when clicking main content area
This commit is contained in:
@@ -3,19 +3,29 @@ import { Footer } from "./footer";
|
|||||||
import { Sidebar } from "./sidebar";
|
import { Sidebar } from "./sidebar";
|
||||||
import { MobileNav } from "./mobile-nav";
|
import { MobileNav } from "./mobile-nav";
|
||||||
import { Leaf, Menu } from "lucide-react";
|
import { Leaf, Menu } from "lucide-react";
|
||||||
|
import { useUiStore } from "@/store/ui-store";
|
||||||
|
|
||||||
type Props = { children: ReactNode };
|
type Props = { children: ReactNode };
|
||||||
|
|
||||||
export function MainLayout({ children }: Props) {
|
export function MainLayout({ children }: Props) {
|
||||||
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
||||||
|
|
||||||
|
const isSidebarOpen = useUiStore((state) => state.isSidebarOpen);
|
||||||
|
const setIsSidebarOpen = useUiStore((state) => state.setIsSidebarOpen);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex w-full h-screen bg-[#ECF4E8] overflow-hidden relative">
|
<div className="flex w-full h-screen bg-[#ECF4E8] overflow-hidden relative">
|
||||||
{/* Sidebar Desktop */}
|
{/* Sidebar Desktop */}
|
||||||
<Sidebar />
|
<Sidebar />
|
||||||
|
|
||||||
{/* Main Content */}
|
{/* Main Content */}
|
||||||
<div className="flex-1 flex flex-col w-full h-screen overflow-hidden">
|
<div className="flex-1 flex flex-col w-full h-screen overflow-hidden"
|
||||||
|
onClick={() => {
|
||||||
|
if (isSidebarOpen) {
|
||||||
|
setIsSidebarOpen(false);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
{/* Header Mobile */}
|
{/* Header Mobile */}
|
||||||
<div className="md:hidden flex items-center justify-between px-5 h-20 bg-[#306D29] text-white shrink-0 shadow-sm z-20">
|
<div className="md:hidden flex items-center justify-between px-5 h-20 bg-[#306D29] text-white shrink-0 shadow-sm z-20">
|
||||||
<div className="flex items-center gap-3 font-semibold">
|
<div className="flex items-center gap-3 font-semibold">
|
||||||
@@ -40,10 +50,12 @@ export function MainLayout({ children }: Props) {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Mobile Navigation */}
|
{/* Mobile Navigation */}
|
||||||
<MobileNav
|
<div className="block md:hidden shrink-0">
|
||||||
open={mobileMenuOpen}
|
<MobileNav
|
||||||
onClose={() => setMobileMenuOpen(false)}
|
open={mobileMenuOpen}
|
||||||
/>
|
onClose={() => setMobileMenuOpen(false)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Page Content */}
|
{/* Page Content */}
|
||||||
<main className="flex-1 overflow-y-auto p-4 sm:p-6 lg:p-8">
|
<main className="flex-1 overflow-y-auto p-4 sm:p-6 lg:p-8">
|
||||||
|
|||||||
Reference in New Issue
Block a user