44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
"use client";
|
|
|
|
import { useCallback } from "react";
|
|
import { usePathname, useRouter } from "next/navigation";
|
|
|
|
import { useQueryClient } from "@tanstack/react-query";
|
|
|
|
import { useMenuStore } from "@/shared/lib";
|
|
import { PageLayout } from "@/shared/ui/page-layout";
|
|
import { authService } from "@/entities/auth";
|
|
import type { MenuItem } from "@/entities/menu";
|
|
import { BaseLayout } from "@common/components";
|
|
|
|
interface BaseLayoutWrapperProps {
|
|
children: React.ReactNode;
|
|
}
|
|
|
|
export function BaseLayoutWrapper({ children }: BaseLayoutWrapperProps) {
|
|
const router = useRouter();
|
|
const pathname = usePathname();
|
|
const queryClient = useQueryClient();
|
|
|
|
const setCurrentMenuInfo = useMenuStore((state) => state.setCurrentMenuInfo);
|
|
|
|
const handleMenuClick = useCallback(
|
|
(item: MenuItem) => {
|
|
setCurrentMenuInfo(item);
|
|
router.push(item.urlPath);
|
|
},
|
|
[router, setCurrentMenuInfo],
|
|
);
|
|
|
|
return (
|
|
<BaseLayout
|
|
queryClient={queryClient}
|
|
authService={authService}
|
|
currentPath={pathname ?? ""}
|
|
handleMenuClick={handleMenuClick}
|
|
>
|
|
<PageLayout>{children}</PageLayout>
|
|
</BaseLayout>
|
|
);
|
|
}
|