added apps

This commit is contained in:
2025-04-10 20:11:36 +03:00
parent 3613f9030e
commit c3b7556e7e
346 changed files with 265054 additions and 159 deletions

View File

@@ -1,9 +1,10 @@
"use server";
import { fetchDataWithToken, fetchData } from "../api-fetcher";
import { fetchDataWithToken } from "../api-fetcher";
import { baseUrlAuth, tokenSecret } from "../basics";
import { cookies } from "next/headers";
import NextCrypto from "next-crypto";
const checkToken = `${baseUrlAuth}/authentication/token/check`;
const pageValid = `${baseUrlAuth}/authentication/page/valid`;
const siteUrls = `${baseUrlAuth}/authentication/sites/list`;
@@ -18,11 +19,13 @@ async function checkAccessTokenIsValid() {
async function retrievePageList() {
const response = await fetchDataWithToken(siteUrls, {}, "GET", false);
return response?.status === 200 || response?.status === 202
? response.data?.site_urls
? response.data?.sites
: null;
}
async function retrievePagebyUrl(pageUrl: string) {
const response = await fetchDataWithToken(
pageValid,
{

View File

@@ -9,8 +9,8 @@ export const metadata: Metadata = {
export default function LoginPage() {
return (
<div className="min-h-screen bg-gray-100">
<>
<Login />
</div>
</>
);
}

View File

@@ -12,8 +12,18 @@ export default function AuthLayout({
children: React.ReactNode;
}) {
return (
<div className="min-h-screen flex">
<Suspense fallback={<div>Loading...</div>}>{children}</Suspense>
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
<div className="w-1/4">
<div className="flex flex-col items-center justify-center h-screen bg-purple-600">
<div className="text-2xl font-bold">WAG Frontend</div>
<div className="text-sm text-gray-500 mt-4">
Welcome to the WAG Frontend Application
</div>
</div>
</div>
<div className="w-3/4 text-black">
<Suspense fallback={<div>Loading...</div>}>{children}</Suspense>
</div>
</div>
);
}

View File

@@ -0,0 +1,51 @@
"use server";
import React from "react";
import LeftMenu from "@/components/menu/leftMenu";
import { retrievePageList, retrievePagebyUrl } from "@/apicalls/cookies/token";
import { retrievePage } from "@/components/NavigatePages";
export default async function Dashboard({
searchParams,
}: {
searchParams: Promise<{ [key: string]: string | undefined }>;
}) {
const siteUrlsList = (await retrievePageList()) || [];
const lang = "tr";
const searchParamsInstance = await searchParams;
const activePage = "/annual/meeting/close";
const pageToDirect = await retrievePagebyUrl(activePage);
const PageComponent = retrievePage(pageToDirect);
return (
<>
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
{/* Sidebar */}
<aside className="w-1/4 border-r p-4 overflow-y-auto">
<LeftMenu
pageUuidList={siteUrlsList}
lang={lang}
searchParams={searchParamsInstance}
pageSelected={activePage}
/>
</aside>
{/* Main Content Area */}
<div className="flex flex-col w-3/4">
{/* Sticky Header */}
<header className="sticky top-0 bg-white shadow-md z-10 p-4 flex justify-between items-center">
<h1 className="text-2xl font-semibold">{activePage}</h1>
<div className="flex items-center space-x-4">
<input
type="text"
placeholder="Search..."
className="border px-3 py-2 rounded-lg"
/>
<div className="w-10 h-10 bg-gray-300 rounded-full"></div>
</div>
</header>
<PageComponent lang={lang} queryParams={searchParamsInstance} />
</div>
</div>
</>
);
}

View File

@@ -0,0 +1,51 @@
"use server";
import React from "react";
import LeftMenu from "@/components/menu/leftMenu";
import { retrievePageList, retrievePagebyUrl } from "@/apicalls/cookies/token";
import { retrievePage } from "@/components/NavigatePages";
export default async function Dashboard({
searchParams,
}: {
searchParams: Promise<{ [key: string]: string | undefined }>;
}) {
const siteUrlsList = (await retrievePageList()) || [];
const lang = "tr";
const searchParamsInstance = await searchParams;
const activePage = "/annual/meeting";
const pageToDirect = await retrievePagebyUrl(activePage);
const PageComponent = retrievePage(pageToDirect);
return (
<>
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
{/* Sidebar */}
<aside className="w-1/4 border-r p-4 overflow-y-auto">
<LeftMenu
pageUuidList={siteUrlsList}
lang={lang}
searchParams={searchParamsInstance}
pageSelected={activePage}
/>
</aside>
{/* Main Content Area */}
<div className="flex flex-col w-3/4">
{/* Sticky Header */}
<header className="sticky top-0 bg-white shadow-md z-10 p-4 flex justify-between items-center">
<h1 className="text-2xl font-semibold">{activePage}</h1>
<div className="flex items-center space-x-4">
<input
type="text"
placeholder="Search..."
className="border px-3 py-2 rounded-lg"
/>
<div className="w-10 h-10 bg-gray-300 rounded-full"></div>
</div>
</header>
<PageComponent lang={lang} queryParams={searchParamsInstance} />
</div>
</div>
</>
);
}

View File

@@ -1,27 +1,17 @@
"use server";
import React from "react";
import {
checkAccessTokenIsValid,
retrievePageList,
retrievePagebyUrl,
} from "@/apicalls/cookies/token";
import { redirect } from "next/navigation";
import { retrievePage } from "@/components/NavigatePages";
import LeftMenu from "@/components/menu/leftMenu";
import { retrievePageList } from "@/apicalls/cookies/token";
export default async function DashboardLayout({
searchParams,
}: {
searchParams: Promise<{ [key: string]: string | undefined }>;
}) {
const token_is_valid = await checkAccessTokenIsValid();
const siteUrlsList = (await retrievePageList()) || [];
if (!token_is_valid) {
redirect("/auth/login");
}
const lang = "tr";
const searchParamsInstance = await searchParams;
const pageToDirect = await retrievePagebyUrl("/dashboard");
const PageComponent = retrievePage(pageToDirect);
const activePage = "/dashboard";
return (
<>
@@ -32,6 +22,7 @@ export default async function DashboardLayout({
pageUuidList={siteUrlsList}
lang={lang}
searchParams={searchParamsInstance}
pageSelected={activePage}
/>
</aside>
@@ -49,7 +40,6 @@ export default async function DashboardLayout({
<div className="w-10 h-10 bg-gray-300 rounded-full"></div>
</div>
</header>
<PageComponent lang={lang} queryParams={searchParamsInstance} />
</div>
</div>
</>

View File

@@ -0,0 +1,51 @@
"use server";
import React from "react";
import LeftMenu from "@/components/menu/leftMenu";
import { retrievePageList, retrievePagebyUrl } from "@/apicalls/cookies/token";
import { retrievePage } from "@/components/NavigatePages";
export default async function Dashboard({
searchParams,
}: {
searchParams: Promise<{ [key: string]: string | undefined }>;
}) {
const siteUrlsList = (await retrievePageList()) || [];
const lang = "tr";
const searchParamsInstance = await searchParams;
const activePage = "/emergency/meeting/close";
const pageToDirect = await retrievePagebyUrl(activePage);
const PageComponent = retrievePage(pageToDirect);
return (
<>
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
{/* Sidebar */}
<aside className="w-1/4 border-r p-4 overflow-y-auto">
<LeftMenu
pageUuidList={siteUrlsList}
lang={lang}
searchParams={searchParamsInstance}
pageSelected={activePage}
/>
</aside>
{/* Main Content Area */}
<div className="flex flex-col w-3/4">
{/* Sticky Header */}
<header className="sticky top-0 bg-white shadow-md z-10 p-4 flex justify-between items-center">
<h1 className="text-2xl font-semibold">{activePage}</h1>
<div className="flex items-center space-x-4">
<input
type="text"
placeholder="Search..."
className="border px-3 py-2 rounded-lg"
/>
<div className="w-10 h-10 bg-gray-300 rounded-full"></div>
</div>
</header>
<PageComponent lang={lang} queryParams={searchParamsInstance} />
</div>
</div>
</>
);
}

View File

@@ -0,0 +1,51 @@
"use server";
import React from "react";
import LeftMenu from "@/components/menu/leftMenu";
import { retrievePageList, retrievePagebyUrl } from "@/apicalls/cookies/token";
import { retrievePage } from "@/components/NavigatePages";
export default async function Dashboard({
searchParams,
}: {
searchParams: Promise<{ [key: string]: string | undefined }>;
}) {
const siteUrlsList = (await retrievePageList()) || [];
const lang = "tr";
const searchParamsInstance = await searchParams;
const activePage = "/emergency/meeting";
const pageToDirect = await retrievePagebyUrl(activePage);
const PageComponent = retrievePage(pageToDirect);
return (
<>
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
{/* Sidebar */}
<aside className="w-1/4 border-r p-4 overflow-y-auto">
<LeftMenu
pageUuidList={siteUrlsList}
lang={lang}
searchParams={searchParamsInstance}
pageSelected={activePage}
/>
</aside>
{/* Main Content Area */}
<div className="flex flex-col w-3/4">
{/* Sticky Header */}
<header className="sticky top-0 bg-white shadow-md z-10 p-4 flex justify-between items-center">
<h1 className="text-2xl font-semibold">{activePage}</h1>
<div className="flex items-center space-x-4">
<input
type="text"
placeholder="Search..."
className="border px-3 py-2 rounded-lg"
/>
<div className="w-10 h-10 bg-gray-300 rounded-full"></div>
</div>
</header>
<PageComponent lang={lang} queryParams={searchParamsInstance} />
</div>
</div>
</>
);
}

View File

@@ -0,0 +1,51 @@
"use server";
import React from "react";
import { retrievePageList, retrievePagebyUrl } from "@/apicalls/cookies/token";
import { retrievePage } from "@/components/NavigatePages";
import LeftMenu from "@/components/menu/leftMenu";
export default async function Dashboard({
searchParams,
}: {
searchParams: Promise<{ [key: string]: string | undefined }>;
}) {
const siteUrlsList = (await retrievePageList()) || [];
const lang = "tr";
const searchParamsInstance = await searchParams;
const activePage = "/individual";
const pageToDirect = await retrievePagebyUrl(activePage);
const PageComponent = retrievePage(pageToDirect);
return (
<>
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
{/* Sidebar */}
<aside className="w-1/4 border-r p-4 overflow-y-auto">
<LeftMenu
pageUuidList={siteUrlsList}
lang={lang}
searchParams={searchParamsInstance}
pageSelected={activePage}
/>
</aside>
{/* Main Content Area */}
<div className="flex flex-col w-3/4">
{/* Sticky Header */}
<header className="sticky top-0 bg-white shadow-md z-10 p-4 flex justify-between items-center">
<h1 className="text-2xl font-semibold">{activePage}</h1>
<div className="flex items-center space-x-4">
<input
type="text"
placeholder="Search..."
className="border px-3 py-2 rounded-lg"
/>
<div className="w-10 h-10 bg-gray-300 rounded-full"></div>
</div>
</header>
<PageComponent lang={lang} queryParams={searchParamsInstance} />
</div>
</div>
</>
);
}

View File

@@ -1,19 +1,24 @@
import type { Metadata } from "next";
import { Suspense } from "react";
import { checkAccessTokenIsValid } from "@/apicalls/cookies/token";
import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
};
export default function DashLayout({
export default async function DashLayout({
children,
}: {
children: React.ReactNode;
}) {
const token_is_valid = await checkAccessTokenIsValid();
if (!token_is_valid) {
redirect("/auth/login");
}
return (
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
<Suspense fallback={<div>Loading...</div>}>{children}</Suspense>
{children}
</div>
);
}

View File

@@ -0,0 +1,51 @@
"use server";
import React from "react";
import { retrievePageList, retrievePagebyUrl } from "@/apicalls/cookies/token";
import { retrievePage } from "@/components/NavigatePages";
import LeftMenu from "@/components/menu/leftMenu";
export default async function Dashboard({
searchParams,
}: {
searchParams: Promise<{ [key: string]: string | undefined }>;
}) {
const siteUrlsList = (await retrievePageList()) || [];
const lang = "tr";
const searchParamsInstance = await searchParams;
const activePage = "/management/accounting";
const pageToDirect = await retrievePagebyUrl(activePage);
const PageComponent = retrievePage(pageToDirect);
return (
<>
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
{/* Sidebar */}
<aside className="w-1/4 border-r p-4 overflow-y-auto">
<LeftMenu
pageUuidList={siteUrlsList}
lang={lang}
searchParams={searchParamsInstance}
pageSelected={activePage}
/>
</aside>
{/* Main Content Area */}
<div className="flex flex-col w-3/4">
{/* Sticky Header */}
<header className="sticky top-0 bg-white shadow-md z-10 p-4 flex justify-between items-center">
<h1 className="text-2xl font-semibold">{activePage}</h1>
<div className="flex items-center space-x-4">
<input
type="text"
placeholder="Search..."
className="border px-3 py-2 rounded-lg"
/>
<div className="w-10 h-10 bg-gray-300 rounded-full"></div>
</div>
</header>
<PageComponent lang={lang} queryParams={searchParamsInstance} />
</div>
</div>
</>
);
}

View File

@@ -0,0 +1,51 @@
"use server";
import React from "react";
import { retrievePageList, retrievePagebyUrl } from "@/apicalls/cookies/token";
import { retrievePage } from "@/components/NavigatePages";
import LeftMenu from "@/components/menu/leftMenu";
export default async function Dashboard({
searchParams,
}: {
searchParams: Promise<{ [key: string]: string | undefined }>;
}) {
const siteUrlsList = (await retrievePageList()) || [];
const lang = "tr";
const searchParamsInstance = await searchParams;
const activePage = "/management/budget";
const pageToDirect = await retrievePagebyUrl(activePage);
const PageComponent = retrievePage(pageToDirect);
return (
<>
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
{/* Sidebar */}
<aside className="w-1/4 border-r p-4 overflow-y-auto">
<LeftMenu
pageUuidList={siteUrlsList}
lang={lang}
searchParams={searchParamsInstance}
pageSelected={activePage}
/>
</aside>
{/* Main Content Area */}
<div className="flex flex-col w-3/4">
{/* Sticky Header */}
<header className="sticky top-0 bg-white shadow-md z-10 p-4 flex justify-between items-center">
<h1 className="text-2xl font-semibold">{activePage}</h1>
<div className="flex items-center space-x-4">
<input
type="text"
placeholder="Search..."
className="border px-3 py-2 rounded-lg"
/>
<div className="w-10 h-10 bg-gray-300 rounded-full"></div>
</div>
</header>
<PageComponent lang={lang} queryParams={searchParamsInstance} />
</div>
</div>
</>
);
}

View File

@@ -0,0 +1,52 @@
"use server";
import React from "react";
import LeftMenu from "@/components/menu/leftMenu";
import { retrievePageList, retrievePagebyUrl } from "@/apicalls/cookies/token";
import { retrievePage } from "@/components/NavigatePages";
export default async function Dashboard({
searchParams,
}: {
searchParams: Promise<{ [key: string]: string | undefined }>;
}) {
const siteUrlsList = (await retrievePageList()) || [];
const lang = "tr";
const searchParamsInstance = await searchParams;
const activePage = "/meeting/participation";
const pageToDirect = await retrievePagebyUrl(activePage);
const PageComponent = retrievePage(pageToDirect);
return (
<>
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
{/* Sidebar */}
<aside className="w-1/4 border-r p-4 overflow-y-auto">
<LeftMenu
pageUuidList={siteUrlsList}
lang={lang}
searchParams={searchParamsInstance}
pageSelected={activePage}
/>
</aside>
{/* Main Content Area */}
<div className="flex flex-col w-3/4">
{/* Sticky Header */}
<header className="sticky top-0 bg-white shadow-md z-10 p-4 flex justify-between items-center">
<h1 className="text-2xl font-semibold">{activePage}</h1>
<div className="flex items-center space-x-4">
<input
type="text"
placeholder="Search..."
className="border px-3 py-2 rounded-lg"
/>
<div className="w-10 h-10 bg-gray-300 rounded-full"></div>
</div>
</header>
<PageComponent lang={lang} queryParams={searchParamsInstance} />
</div>
</div>
</>
);
}

View File

@@ -0,0 +1,51 @@
"use server";
import React from "react";
import LeftMenu from "@/components/menu/leftMenu";
import { retrievePageList, retrievePagebyUrl } from "@/apicalls/cookies/token";
import { retrievePage } from "@/components/NavigatePages";
export default async function Dashboard({
searchParams,
}: {
searchParams: Promise<{ [key: string]: string | undefined }>;
}) {
const siteUrlsList = (await retrievePageList()) || [];
const lang = "tr";
const searchParamsInstance = await searchParams;
const activePage = "/user";
const pageToDirect = await retrievePagebyUrl(activePage);
const PageComponent = retrievePage(pageToDirect);
return (
<>
<div className="min-h-screen min-w-screen flex h-screen w-screen overflow-hidden">
{/* Sidebar */}
<aside className="w-1/4 border-r p-4 overflow-y-auto">
<LeftMenu
pageUuidList={siteUrlsList}
lang={lang}
searchParams={searchParamsInstance}
pageSelected={activePage}
/>
</aside>
{/* Main Content Area */}
<div className="flex flex-col w-3/4">
{/* Sticky Header */}
<header className="sticky top-0 bg-white shadow-md z-10 p-4 flex justify-between items-center">
<h1 className="text-2xl font-semibold">{activePage}</h1>
<div className="flex items-center space-x-4">
<input
type="text"
placeholder="Search..."
className="border px-3 py-2 rounded-lg"
/>
<div className="w-10 h-10 bg-gray-300 rounded-full"></div>
</div>
</header>
<PageComponent lang={lang} queryParams={searchParamsInstance} />
</div>
</div>
</>
);
}

View File

@@ -0,0 +1,102 @@
"use client";
import React from "react";
import { Pencil, Plus } from "lucide-react";
// Define types
interface CardData {
id: number;
title: string;
description: string;
status: string;
lastUpdated: string;
}
interface CardProps {
data: CardData;
onUpdate: (id: number) => void;
}
// Mock data
const mockData: CardData[] = [
{
id: 1,
title: "Project Alpha",
description: "A cutting-edge project for automation",
status: "In Progress",
lastUpdated: "2024-03-15",
},
{
id: 2,
title: "Project Beta",
description: "Machine learning integration project",
status: "Completed",
lastUpdated: "2024-03-10",
},
{
id: 3,
title: "Project Gamma",
description: "Cloud infrastructure optimization",
status: "Planning",
lastUpdated: "2024-03-05",
},
];
// Card component
const Card: React.FC<CardProps> = ({ data, onUpdate }) => (
<div className="bg-white rounded-lg shadow-md p-6 mb-4 hover:shadow-lg transition-shadow">
<div className="flex justify-between items-start">
<div>
<h3 className="text-xl font-semibold mb-2">{data.title}</h3>
<p className="text-gray-600 mb-2">{data.description}</p>
<div className="flex items-center gap-4">
<span className="text-sm text-gray-500">Status: {data.status}</span>
<span className="text-sm text-gray-500">
Last Updated: {data.lastUpdated}
</span>
</div>
</div>
<button
onClick={() => onUpdate(data.id)}
className="text-blue-500 hover:text-blue-700 p-2"
aria-label="Update"
>
<Pencil />
</button>
</div>
</div>
);
function app000002() {
const handleUpdate = (id: number) => {
console.log(`Update clicked for item ${id}`);
// Add your update logic here
};
const handleCreate = () => {
console.log("Create clicked");
// Add your create logic here
};
return (
<div className="container mx-auto p-6">
<div className="flex justify-between items-center mb-6">
<h1 className="text-2xl font-bold">Projects Dashboard</h1>
<button
onClick={handleCreate}
className="bg-blue-500 text-white px-4 py-2 rounded-lg flex items-center gap-2 hover:bg-blue-600 transition-colors"
>
<Plus />
Create New
</button>
</div>
<div className="grid gap-4">
{mockData.map((item) => (
<Card key={item.id} data={item} onUpdate={handleUpdate} />
))}
</div>
</div>
);
}
export default app000002;

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000003() {
return <div>app000003</div>;
}
export default app000003;

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000004() {
return <div>app000004</div>;
}
export default app000004;

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000005() {
return <div>app000005</div>;
}
export default app000005;

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000006() {
return <div>app000006</div>;
}
export default app000006;

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000007() {
return <div>app000007</div>;
}
export default app000007;

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000008() {
return <div>app000008</div>;
}
export default app000008;

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000009() {
return <div>app000009</div>;
}
export default app000009;

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000010() {
return <div>app000010</div>;
}
export default app000010;

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000011() {
return <div>app000011</div>;
}
export default app000011;

View File

@@ -0,0 +1,9 @@
import React from 'react'
function app000012() {
return (
<div>app000012</div>
)
}
export default app000012

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000013() {
return <div>app000013</div>;
}
export default app000013;

View File

@@ -0,0 +1,9 @@
import React from 'react'
function app000014() {
return (
<div>app000014</div>
)
}
export default app000014

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000015() {
return <div>app000015</div>;
}
export default app000015;

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000016() {
return <div>app000016</div>;
}
export default app000016;

View File

@@ -0,0 +1,7 @@
import React from "react";
function app000017() {
return <div>app000017</div>;
}
export default app000017;

View File

@@ -0,0 +1,9 @@
import React from 'react'
function app000018() {
return (
<div>app000018</div>
)
}
export default app000018

View File

@@ -0,0 +1,9 @@
import React from 'react'
function app000019() {
return (
<div>app000019</div>
)
}
export default app000019

View File

@@ -1,11 +1,12 @@
import React from "react";
import App000001 from "./app000001";
import Page0001 from "./page0001";
import App000002 from "./app000002";
import { PageProps } from "./interFaces";
export const PageIndexs = {
"6015129b-f665-479c-a440-04fb82ea6114": Page0001,
app000001: App000001,
app000002: App000002,
};
function UnAuthorizedPage({ lang, queryParams }: PageProps) {

View File

@@ -1,6 +1,6 @@
"use server";
import React from "react";
import { Home, User, Settings, Mail, Calendar } from "lucide-react";
import { Home } from "lucide-react";
import { transformMenu, LanguageTranslation } from "@/components/menu/runner";
import Link from "next/link";
@@ -8,10 +8,12 @@ async function LeftMenu({
searchParams,
pageUuidList,
lang,
pageSelected,
}: {
pageUuidList: string[];
lang: keyof LanguageTranslation;
searchParams: { [key: string]: string | string[] | undefined };
pageSelected: string;
}) {
const transformedMenu = transformMenu(pageUuidList) || [];
@@ -28,8 +30,6 @@ async function LeftMenu({
secondLayerIndex = indices[1] || 0;
}
const pageSelected = searchParams?.page;
return (
<div>
<nav className="flex flex-col space-y-2">
@@ -38,9 +38,7 @@ async function LeftMenu({
transformedMenu.map((item, firstIndex) => (
<div key={item.name} className="mb-4">
<Link
href={`/dashboard?${
pageSelected ? `page=${pageSelected}` : ""
}&menu=${firstIndex}*0`}
href={`${pageSelected}?menu=${firstIndex}*0`}
className={`text-xl font-semibold pl-5 my-2 py-2 block ${
firstIndex === firstLayerIndex
? "text-emerald-600"
@@ -56,9 +54,7 @@ async function LeftMenu({
{item.subList.map((subItem, secondIndex) => (
<div key={subItem.name}>
<Link
href={`/dashboard?${
pageSelected ? `page=${pageSelected}` : ""
}&menu=${firstIndex}*${secondIndex}`}
href={`${pageSelected}?menu=${firstIndex}*${secondIndex}`}
className={`ml-5 my-4 pl-4 text-xl font-semibold block ${
secondIndex === secondLayerIndex
? "text-emerald-700"
@@ -71,24 +67,35 @@ async function LeftMenu({
{firstIndex === firstLayerIndex &&
secondIndex === secondLayerIndex && (
<div className="ml-5">
{subItem.subList.map((subSubItem) => (
<Link
key={subSubItem.name}
href={`/dashboard?page=${subSubItem.name}&menu=${firstIndex}*${secondIndex}`}
className={`flex flex-row text-xl py-4 my-4 w-full space-x-2 p-2 rounded ${
pageSelected === subSubItem.name
? " bg-gray-100 cursor-not-allowed"
: "hover:bg-gray-200"
}`}
>
<span className="text-gray-400">
<Home />
</span>
<span className="ml-5 text-gray-700">
{subSubItem.lg[lang]}
</span>
</Link>
))}
{subItem.subList.map((subSubItem) =>
`${pageSelected}` !== subSubItem.siteUrl ? (
<Link
key={subSubItem.name}
href={`${subSubItem?.siteUrl}?menu=${firstIndex}*${secondIndex}`}
className={`flex flex-row text-xl py-4 my-4 w-full space-x-2 p-2 rounded hover:bg-gray-200`}
>
<span className="text-gray-400">
<Home />
</span>
<span className="ml-5 text-gray-700">
{subSubItem.lg[lang]}
</span>
</Link>
) : (
<a
key={subSubItem.name}
href={`${subSubItem?.siteUrl}?menu=${firstIndex}*${secondIndex}`}
className={`flex flex-row text-xl py-4 my-4 w-full space-x-2 p-2 rounded bg-gray-100 cursor-not-allowed"`}
>
<span className="text-gray-400">
<Home />
</span>
<span className="ml-5 text-gray-700">
{subSubItem.lg[lang]}
</span>
</a>
)
)}
</div>
)}
</div>

View File

@@ -25,11 +25,20 @@ const Build = {
siteUrl: "/build",
};
const Dashboard = {
name: "Dashboard",
lg: {
tr: "Pano",
en: "Dashboard",
},
siteUrl: "/dashboard",
};
const BuildParts = {
name: "BuildParts",
lg: {
tr: "Daire",
en: "BuildParts",
tr: "Daireler",
en: "Build Parts",
},
siteUrl: "/build/parts",
};
@@ -37,8 +46,8 @@ const BuildParts = {
const BuildArea = {
name: "BuildArea",
lg: {
tr: "Daire",
en: "BuildArea",
tr: "Daire Alanları",
en: "Build Area",
},
siteUrl: "/build/area",
};
@@ -94,7 +103,7 @@ const EmergencyMeeting = {
tr: "Acil Toplantı Tanımlama ve Davet",
en: "Emergency Meeting and Invitations",
},
siteUrl: "emergency/meeting",
siteUrl: "/emergency/meeting",
};
const EmergencyMeetingClose = {
@@ -112,10 +121,27 @@ const MeetingParticipations = {
tr: "Toplantı Katılım İşlemleri",
en: "Meeting Participations",
},
siteUrl: "/meeting/participations",
siteUrl: "/meeting/participation",
};
const Menu = [
{
name: "Dashboard",
lg: {
tr: "Pano",
en: "Dashboard",
},
subList: [
{
name: "Dashboard",
lg: {
tr: "Pano",
en: "Dashboard",
},
subList: [Dashboard],
},
],
},
{
name: "Definitions",
lg: {