updated components common header layouts
This commit is contained in:
@@ -1,41 +1,44 @@
|
||||
"use client";
|
||||
import React, { ReactNode } from "react";
|
||||
import React, { useState, useEffect, ReactNode } from "react";
|
||||
import Header from "@/components/header/Header";
|
||||
import ClientMenu from "@/components/menu/menu";
|
||||
import { DashboardLayoutProps } from "./schema";
|
||||
import { Language } from "@/components/common/schemas";
|
||||
|
||||
interface DashboardLayoutProps {
|
||||
// Page Content component to wrap the children
|
||||
interface PageContentProps {
|
||||
children: ReactNode;
|
||||
lang: "en" | "tr";
|
||||
activePage: string;
|
||||
siteUrls: string[];
|
||||
lang: Language;
|
||||
}
|
||||
|
||||
/**
|
||||
* A reusable dashboard layout component that provides consistent structure
|
||||
* for all dashboard pages with sidebar, header, and content area.
|
||||
*/
|
||||
const PageContent: React.FC<PageContentProps> = ({ children, lang }) => {
|
||||
return (
|
||||
<div className="container mx-auto p-4">
|
||||
{React.cloneElement(children as React.ReactElement<any>, { lang })}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export const DashboardLayout: React.FC<DashboardLayoutProps> = ({
|
||||
children,
|
||||
lang,
|
||||
activePage,
|
||||
siteUrls,
|
||||
}) => {
|
||||
const [language, setLanguage] = useState<Language>(lang as Language);
|
||||
|
||||
return (
|
||||
<div className="min-h-screen min-w-screen flex h-screen w-screen">
|
||||
{/* Sidebar */}
|
||||
<aside className="w-1/4 border-r p-4 overflow-y-auto">
|
||||
<ClientMenu siteUrls={siteUrls} lang={lang} activePage={activePage} />
|
||||
<ClientMenu lang={language} activePage={activePage} />
|
||||
</aside>
|
||||
|
||||
{/* Main Content Area */}
|
||||
<div className="flex flex-col w-3/4 overflow-y-auto">
|
||||
{/* Header Component */}
|
||||
<Header lang={lang} />
|
||||
|
||||
{/* Header Component - Either custom or default */}
|
||||
<Header lang={language} setLang={setLanguage} />
|
||||
{/* Page Content */}
|
||||
<div className="container mx-auto p-4">
|
||||
{children}
|
||||
</div>
|
||||
<PageContent lang={language}>{children}</PageContent>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user