updated components common header layouts

This commit is contained in:
2025-05-03 13:51:02 +03:00
parent 1ce28ec5f0
commit 71c808a5c3
33 changed files with 769 additions and 809 deletions

View File

@@ -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>
);