Changes Completed in Overview

This commit is contained in:
2026-07-28 14:45:34 +05:30
parent 954de712a7
commit b8e833dbb9
70 changed files with 207 additions and 214 deletions

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"chat.disableAIFeatures": false
}

View File

@@ -10,7 +10,7 @@ export default function DynamicDashboardPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<DynamicDashboardPortal/>
</div>

View File

@@ -11,7 +11,7 @@ export default function LanguagePage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<LanguagePortal/>
</div>

View File

@@ -12,7 +12,7 @@ export default function MobileFlowPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<MobileFlowsPortal/>
</div>

View File

@@ -10,7 +10,7 @@ export default function ModulesPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<ModulesPortal/>
</div>

View File

@@ -1,6 +1,6 @@
"use client"
import AdminOverviewPortal from "@/components/dashboard/admin/overview";
import AdminOverviewPortal from "@/components/dashboard/admin/Platform/overview";
@@ -9,7 +9,7 @@ export default function OverviewPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<AdminOverviewPortal/>
</div>

View File

@@ -14,7 +14,7 @@ export default function SecurityPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<SecurityPortal/>
</div>

View File

@@ -1,17 +1,17 @@
"use client"
import SitePortal from "@/components/dashboard/admin/site";
import SitePortal from "@/components/dashboard/admin/Platform/site";
export default function AuditSurveyPage() {
export default function SitePage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<SitePortal/>
</div>

View File

@@ -1,7 +1,7 @@
"use client"
import TenantsPortal from "@/components/dashboard/admin/tenants";
import TenantsPortal from "@/components/dashboard/admin/Platform/tenants";
@@ -10,7 +10,7 @@ export default function TenantsPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<TenantsPortal/>
</div>

View File

@@ -2,7 +2,7 @@
import UserPortal from "@/components/dashboard/admin/users";
import UserPortal from "@/components/dashboard/admin/Platform/users";
@@ -11,7 +11,7 @@ export default function UsersPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<UserPortal/>
</div>

View File

@@ -14,7 +14,7 @@ export default function AuditSurveyPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<AuditSurveyPortal/>
</div>

View File

@@ -11,7 +11,7 @@ export default function ContractsPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<ContractsPortal/>
</div>

View File

@@ -13,7 +13,7 @@ export default function FireSafetyPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<FireSafetyPortal/>
</div>

View File

@@ -10,7 +10,7 @@ export default function ComplianceSafetyPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<StatutoryCompliancePortal/>
</div>

View File

@@ -13,7 +13,7 @@ export default function TrainingPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<TrainingPortal/>
</div>

View File

@@ -13,7 +13,7 @@ export default function WasteEsGPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<WasteESGPortal/>
</div>

View File

@@ -10,7 +10,7 @@ export default function MasterdataPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<MasterDataPortal/>
</div>

View File

@@ -11,7 +11,7 @@ export default function RolesAccessPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<RolesAccessPortal/>
</div>

View File

@@ -13,7 +13,7 @@ export default function SettingsPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<SettingsPortal/>
</div>

View File

@@ -1,7 +1,6 @@
"use client"
import MasterDataPortal from "@/components/dashboard/configure/masterData";
import RolesAccessPortal from "@/components/dashboard/configure/rolesaccess";
import UserLocationPortal from "@/components/dashboard/configure/userLocation";
@@ -12,7 +11,7 @@ export default function userLocationPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<UserLocationPortal/>
</div>

View File

@@ -3,18 +3,11 @@
import WorkFlowAutomationPortal from "@/components/dashboard/configure/workflowAutomation";
export default function WorkflowAutomationPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<WorkFlowAutomationPortal/>
</div>

View File

@@ -9,7 +9,7 @@ export default function BudgetPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<BudgetPortal/>
</div>

View File

@@ -9,7 +9,7 @@ export default function CostInvoicePage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<CostInvoicePortal/>
</div>

View File

@@ -10,7 +10,7 @@ export default function ReportPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<ReportPortal/>
</div>

View File

@@ -13,7 +13,7 @@ export default function AiHelpdeskPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<AiHelpdeskPortal/>
</div>

View File

@@ -11,7 +11,7 @@ export default function AiPredictivePage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<AiPredictivePortal/>
</div>

View File

@@ -12,7 +12,7 @@ export default function AssetHealthPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<AssetHealthPortal/>
</div>

View File

@@ -14,7 +14,7 @@ export default function ConnectedAssetPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<ConnectedAssetPortal/>
</div>

View File

@@ -15,7 +15,7 @@ export default function ConnectedOpsPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<ConnectedOpsPortal/>
</div>

View File

@@ -14,7 +14,7 @@ export default function EnergybenchmarkingPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<EnergyBenchmarkingPortal/>
</div>

View File

@@ -16,7 +16,7 @@ export default function GpsTrackingPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<GpsTrackingPortal/>
</div>

View File

@@ -15,7 +15,7 @@ export default function SustainabilityPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<SustainabilityPortal/>
</div>

View File

@@ -14,7 +14,7 @@ export default function AlarmRulesPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<AlarmRulesPortal/>
</div>

View File

@@ -10,7 +10,7 @@ export default function CommandCenterPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<CommandCenterPortal />
</div>

View File

@@ -13,7 +13,7 @@ export default function DeviceFleetPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<DeviceFleetPortal/>
</div>

View File

@@ -12,7 +12,7 @@ export default function EnergyUtilityPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<EnergyUtilityPortal/>
</div>

View File

@@ -11,7 +11,7 @@ export default function HVACPlantPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<HVACPlantPortal/>
</div>

View File

@@ -22,6 +22,7 @@ export default function DashboardLayout({
{/* Main Page Content */}
<main className="flex-1 bg-[#071321]">
{children}
</main>
</div>

View File

@@ -7,7 +7,7 @@ export default function EnergyPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<EnergyPortal/>
</div>

View File

@@ -5,7 +5,7 @@ export default function EquipmentPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<EquipmentPortal/>
</div>

View File

@@ -5,7 +5,7 @@ export default function HelpDeskPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<HelpDeskPortal/>
</div>

View File

@@ -5,7 +5,7 @@ export default function InventoryPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<InventoryPortal/>
</div>

View File

@@ -5,7 +5,7 @@ export default function ServiceRequestPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<ServiceRequestsPortal/>
</div>

View File

@@ -7,7 +7,7 @@ export default function VendorPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<VendorServicePortal/>
</div>

View File

@@ -7,7 +7,7 @@ export default function WorkPermitPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<WorkPermitPortal/>
</div>

View File

@@ -9,7 +9,7 @@ export default function BuildingOwnerPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<BuildingOwnerPortal/>
</div>

View File

@@ -9,7 +9,7 @@ export default function OverViewDashboardPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<OperationsDashboard />
</div>

View File

@@ -6,7 +6,7 @@ export default function EngagementDashboard() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<EngagementPage/>
</div>

View File

@@ -6,7 +6,7 @@ export default function PropertymanagerPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<PropertyManagerPortal/>
</div>

View File

@@ -6,7 +6,7 @@ export default function ServiceEngineerPage() {
return (
<div className="p-8 mx-3 ">
<div className="p-6 mx-2 ">
<ServiceEngineerPortal/>
</div>

View File

@@ -8,7 +8,7 @@ export default function MeetingPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<MeetingRoomPortal/>
</div>

View File

@@ -7,7 +7,7 @@ export default function VisitorPage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<VistiorManagementPortal/>
</div>

View File

@@ -7,7 +7,7 @@ export default function WorkSpacePage() {
return (
<div className="p-8 mx-3">
<div className="p-6 mx-2">
<WorkSpacePortal/>
</div>

View File

@@ -19,3 +19,7 @@ body {
color: var(--foreground);
font-family: Arial, Helvetica, sans-serif;
}

View File

@@ -2,6 +2,11 @@
import "./globals.css";
import SessionWrapper from "./sessionWrapper";
import { Inter } from "next/font/google";
const inter = Inter({
subsets: ["latin"],
});
export default function RootLayout({
children,
@@ -11,6 +16,7 @@ export default function RootLayout({
return (
<html
lang="en"
className={inter.className}
>
<body>
<SessionWrapper>

View File

@@ -7,7 +7,8 @@ type TableProps = {
export default function Table({ headers, rows }: TableProps) {
return (
<div className="w-full overflow-hidden rounded-2xl border border-slate-800 bg-[#0B1727] shadow-xl">
<div className="w-full overflow-hidden rounded-2xl border
border-slate-800 bg-[#0B1727] shadow-xl">
<div className="overflow-x-auto">
<table className="w-full border-collapse text-[12px]">
<thead>

View File

@@ -10,16 +10,16 @@ export default function EnergyPortal() {
return (
<div className="text-slate-100 mt-15 font-sans">
<div className="text-slate-100 my-15 font-sans">
{/* --- HEADER SECTION --- */}
<div className="flex flex-col md:flex-row md:items-start md:justify-between gap-4 mb-6">
<div>
<div className="flex items-center gap-2 text-[10px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<div className="flex items-center gap-2 text-[12px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<span className="text-teal-400">Apple One HQ Tower</span>
<span></span>
<span>Operations</span>
<span></span>
<span>Energy</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Operations</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Energy</span>
</div>
<h1 className="text-2xl font-bold text-white tracking-tight mt-2">
Meters & readings

View File

@@ -1,6 +1,4 @@
import {
Pencil,
FileText,
QrCode,
Search,
Plus,
@@ -30,18 +28,18 @@ export default function EquipmentPortal() {
return (
<div className="my-15 text-slate-100 font-sans ">
<div className="flex items-center gap-2 text-[10px]
<div className="flex items-center gap-2 text-[12px]
font-bold tracking-widest text-slate-500 uppercase font-mono">
<span className="text-teal-400">Apple One HQ Tower</span>
<span></span>
<span className='text-gray-600'></span>
<span>Operations</span>
<span className='text-gray-400'>Operations</span>
<span></span>
<span className='text-gray-600'></span>
<span>Equipment</span>
<span className='text-gray-400'>Equipment</span>
</div>

View File

@@ -6,9 +6,6 @@ import {
Clock,
Search,
QrCode,
Power,
List,
Pencil,
Plus,
} from 'lucide-react';
import Button from "@/components/common/button";
@@ -28,16 +25,16 @@ export default function HelpDeskPortal() {
const [activeTab, setActiveTab] = useState<string>('Location');
return (
<div className="my-15 px-4 text-slate-100 font-sans">
<div className="my-15 text-slate-100 font-sans">
{/* --- HEADER SECTION --- */}
<div className="flex flex-col md:flex-row md:items-start md:justify-between gap-3 mb-4">
<div>
<div className="flex items-center gap-2 text-[10px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<div className="flex items-center gap-2 text-[12px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<span className="text-teal-400">Apple One HQ Tower</span>
<span></span>
<span>Operations</span>
<span></span>
<span>Help Desk</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Operations</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Help Desk</span>
</div>
<h1 className="text-2xl font-extrabold text-white tracking-tight mt-1.5">
Help Desk & checklists

View File

@@ -21,12 +21,12 @@ export default function InventoryPortal() {
{/* --- HEADER SECTION --- */}
<div className="flex flex-col md:flex-row md:items-start md:justify-between gap-4 mb-6">
<div>
<div className="flex items-center gap-2 text-[10px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<div className="flex items-center gap-2 text-[12px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<span className="text-teal-400">Apple One HQ Tower</span>
<span></span>
<span>Operations</span>
<span></span>
<span>Inventory</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Operations</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Inventory</span>
</div>
<h1 className="text-2xl font-bold text-white tracking-tight mt-2">
Inventory & stock

View File

@@ -22,16 +22,16 @@ export default function ServiceRequestsPortal() {
return (
<div className="my-15 text-slate-100 max-w-7xl mx-auto font-sans">
<div className="my-15 text-slate-100 font-sans">
{/* --- HEADER SECTION --- */}
<div className="flex flex-col md:flex-row md:items-start md:justify-between gap-4 mb-6">
<div>
<div className="flex items-center gap-2 text-[10px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<div className="flex items-center gap-2 text-[12px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<span className="text-teal-400">Apple One HQ Tower</span>
<span></span>
<span>Operations</span>
<span></span>
<span>Requests</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Operations</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Requests</span>
</div>
<h1 className="text-2xl font-bold text-white tracking-tight mt-2">
Service requests

View File

@@ -19,12 +19,12 @@ export default function VendorServicePortal() {
{/* --- HEADER SECTION --- */}
<div className="flex flex-col md:flex-row md:items-start md:justify-between gap-4 mb-6">
<div>
<div className="flex items-center gap-2 text-[10px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<div className="flex items-center gap-2 text-[12px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<span className="text-teal-400">Apple One HQ Tower</span>
<span></span>
<span>Operations</span>
<span></span>
<span>Vendors</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Operations</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Vendors</span>
</div>
<h1 className="text-2xl font-bold text-white tracking-tight mt-2">
Vendor & field service

View File

@@ -74,12 +74,12 @@ export default function WorkPermitPortal() {
{/* --- HEADER SECTION --- */}
<div className="flex flex-col md:flex-row md:items-start md:justify-between gap-4 mb-6">
<div>
<div className="flex items-center gap-2 text-[10px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<div className="flex items-center gap-2 text-[12px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<span className="text-teal-400">Apple One HQ Tower</span>
<span></span>
<span>Operations</span>
<span></span>
<span>Work Permit</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Operations</span>
<span className='text-gray-600'></span>
<span className='text-gray-400'>Work Permit</span>
</div>
<h1 className="text-2xl font-bold text-white tracking-tight mt-2">
Permit to Work

View File

@@ -12,17 +12,17 @@ import { CardHeader } from "@/components/common/cardHeader";
export default function BuildingOwnerPortal() {
return (
<div className="mt-20 font-sans antialiased">
<div className="mt-15 font-sans antiliased">
{/* --- HEADER SECTION --- */}
<div className="flex flex-col md:flex-row md:items-start md:justify-between gap-4 mb-4">
<div>
<div className="flex items-center gap-2 text-[10px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<div className="flex items-center gap-2 text-[12px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<span className="text-teal-400">Apple One HQ Tower</span>
<span></span>
<span>Portal</span>
<span></span>
<span>Building Owner</span>
<span className="text-gray-600"></span>
<span className="text-gray-400">Portal</span>
<span className="text-gray-600"></span>
<span className="text-gray-400">Building Owner</span>
</div>
<h1 className="text-2xl font-bold text-white tracking-tight mt-2">
Building owner portal

View File

@@ -3,32 +3,33 @@ import { Check } from 'lucide-react';
import BarChart from "@/components/charts/barchart";
import StatCard from "@/components/common/dashStatCard";
import ActivityFeed from "@/components/dashboard/overview/activityFeed";
import {activities, chartData} from "@/constants/constant"
import {activities, chartData, schedulePerformanceHeaders, schedulePerformanceRows} from "@/constants/constant"
import { Card } from '@/components/common/cardWrapper';
import {CardHeader} from '@/components/common/cardHeader';
import {ProgressBarRow }from '@/components/charts/progressBarRow';
import {StatusProgressRow} from '@/components/charts/statusProgressRow';
import Table from '@/components/common/dataTable';
export default function Dashboard() {
return (
<div >
<hr className="border-[#142538]" />
<main className=" pt-8 bg-[#071321] text-[#93a3b8] font-sans antialiased" >
<div className='my-15 font-sans antialiased' >
{/* Title Section */}
<div className="flex items-start justify-between">
<div>
<div className="flex items-center gap-2
text-xs font-bold uppercase tracking-widest text-teal-500 mt-8">
text-xs font-bold uppercase tracking-widest text-teal-500">
<span>Apple One HQ Tower</span>
<span className="text-gray-600">·</span>
<span className="text-gray-400">Tenant</span>
<span className="text-gray-600">·</span>
<span className="text-gray-400">Apple One</span>
</div>
<h1 className="text-2xl font-bold text-white tracking-tight">Operations dashboard</h1>
<p className="mt-2 text-sm text-gray-400 max-w-xl leading-relaxed">
<h1 className="text-2xl
font-bold text-white tracking-tight">Operations dashboard</h1>
<p className="text-sm font-medium text-slate-400 mt-2 max-w-xl leading-relaxed">
Live snapshot scoped to Apple One. The layout below is the dashboard published for this tenant in Administration.
</p>
</div>
@@ -87,35 +88,7 @@ export default function Dashboard() {
<div className="lg:col-span-7">
<Card>
<CardHeader title="Schedule performance • MMR" subtitle="ppm & amc" />
<div className="overflow-x-auto mt-2">
<table className=" text-left border-collapse">
<thead>
<tr className="text-[#4b5f7a] text-xs font-bold uppercase tracking-wider border-b border-[#1b2b41]/40 pb-3">
<th className="pb-3">Schedule</th>
<th className="pb-3 text-right">Total</th>
<th className="pb-3 text-right">Done</th>
<th className="pb-3 text-right">On Time</th>
<th className="pb-3 text-right">Delayed</th>
</tr>
</thead>
<tbody className="divide-y divide-[#1b2b41]/30 text-sm font-semibold">
<tr className="hover:bg-[#11233a]/25 transition-colors">
<td className="py-4 text-white">PPM</td>
<td className="py-4 text-right text-slate-300">24</td>
<td className="py-4 text-right text-slate-300">19</td>
<td className="py-4 text-right text-slate-300">17</td>
<td className="py-4 text-right text-red-500">2</td>
</tr>
<tr className="hover:bg-[#11233a]/25 transition-colors">
<td className="py-4 text-white">AMC</td>
<td className="py-4 text-right text-slate-300">8</td>
<td className="py-4 text-right text-slate-300">6</td>
<td className="py-4 text-right text-slate-300">6</td>
<td className="py-4 text-right text-slate-400">0</td>
</tr>
</tbody>
</table>
</div>
<Table headers={schedulePerformanceHeaders} rows={schedulePerformanceRows}/>
</Card>
</div>
@@ -204,7 +177,7 @@ export default function Dashboard() {
</Card>
</div>
</main>
</div>
);
}

View File

@@ -18,16 +18,16 @@ import { CardHeader } from "@/components/common/cardHeader";
export default function EngagementPage() {
return (
<div className=" text-[#93a3b8] font-sans ">
<div className="my-15 font-sans antiliased ">
<main className="mt-20">
{/* Page Header Section */}
<div className="flex flex-col md:flex-row md:items-center
justify-between gap-4 mt-4">
<div>
<div className="flex items-center gap-2 text-xs
font-bold uppercase tracking-widest text-teal-500">
font-bold uppercase tracking-widest text-teal-500 font-mono">
<span>Apple One HQ Tower</span>
<span className="text-gray-600">·</span>
<span className="text-gray-400">Intelligence</span>
@@ -35,7 +35,7 @@ export default function EngagementPage() {
<span className="text-gray-400">Engagement</span>
</div>
<h1 className="text-2xl font-bold text-white tracking-tight mt-1">Employee engagement</h1>
<p className="mt-2 text-sm text-gray-400 max-w-2xl leading-relaxed">
<p className="text-sm font-medium text-slate-400 mt-2 max-w-xl leading-relaxed">
Pulse satisfaction surveys, complaint tickets and a suggestion system boosting morale, transparency and retention.
</p>
</div>
@@ -151,7 +151,7 @@ export default function EngagementPage() {
</div>
</main>
<div className="mb-10 mt-10">
<InfoBanner

View File

@@ -18,18 +18,20 @@ import { CardHeader } from "@/components/common/cardHeader";
export default function PropertyManagerPortal() {
return (
<div className=" text-slate-100 mt-15
<div className=" mt-15 font-sans antiliased
">
{/* --- HEADER SECTION --- */}
<div className="flex flex-col md:flex-row md:items-start md:justify-between gap-4 mb-4">
<div className="flex flex-col md:flex-row md:items-start
md:justify-between gap-4 mb-4">
<div>
<div className="flex items-center gap-2 text-[10px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<div className="flex items-center
gap-2 text-[12px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<span className="text-teal-400">Apple One HQ Tower</span>
<span></span>
<span>Portal</span>
<span></span>
<span>Property Manager</span>
<span className="text-gray-600"></span>
<span className="text-gray-400">Portal</span>
<span className="text-gray-600"></span>
<span className="text-gray-400">Property Manager</span>
</div>
<h1 className="text-2xl font-bold text-white tracking-tight mt-2">
Property manager portal

View File

@@ -16,13 +16,14 @@ import { CardHeader } from "@/components/common/cardHeader";
export default function ServiceEngineerPortal() {
return (
<div className="my-15 text-slate-100 ">
<div className="my-15 font-sans antiliased ">
{/* --- HEADER SECTION --- */}
<div className=" flex flex-col
md:flex-row md:items-start md:justify-between gap-4 mb-4">
<div>
<div className="flex items-center gap-2 text-[10px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<div className="flex items-center gap-2
text-[12px] font-bold tracking-widest text-slate-500 uppercase font-mono">
<span className="text-teal-400">Apple One HQ Tower</span>
<span></span>
<span>Portal</span>

View File

@@ -8,14 +8,17 @@ export default function Navbar() {
const { mode } = useNav();
return (
<header className="fixed top-0 right-0 left-64 z-30 flex h-16 items-center justify-between border-b border-[#142538]/50 bg-[#071321] px-8">
<header className="fixed top-0 right-0
left-64 z-30 flex h-16 items-center justify-between border-b
border-[#142538]/50 bg-[#071321]/80 backdrop-blur-md px-8">
{mode === "operations" ? (
/* ================= OPERATIONS NAVBAR ================= */
<>
{/* Left Group */}
<div className="flex items-center gap-2">
{/* Company Selector */}
<div className="flex items-center gap-2 rounded-full bg-[#0a1826] px-3 py-1.5 text-sm font-semibold text-[#10b981] border border-[#132338] cursor-pointer hover:bg-[#0f2338] transition whitespace-nowrap relative">
<div className="flex items-center gap-2
rounded-full bg-[#0a1826] px-3 py-1.5 text-sm font-semibold text-[#10b981] border border-[#132338] cursor-pointer hover:bg-[#0f2338] transition whitespace-nowrap relative">
<span className="h-2 w-2 rounded-full bg-[#10b981] shrink-0"></span>
<select

View File

@@ -60,78 +60,78 @@ export const OPERATIONS_SIDEBAR_ITEMS = [
title: "Operations",
icon: Settings,
children: [
{ title: "Help Desk", href: "/operations/help-desk", icon: CheckSquare, badge: 6, badgeColor: "bg-amber-500 text-black" },
{ title: "Equipment", href: "/operations/equipment", icon: Target },
{ title: "Requests", href: "/operations/requests", icon: FileText, badge: 15, badgeColor: "bg-amber-400 text-black" },
{ title: "Inventory", href: "/operations/inventory", icon: Box },
{ title: "Energy", href: "/operations/energy", icon: Zap },
{ title: "Work Permit", href: "/operations/work-permit", icon: ClipboardList, badge: 3, badgeColor: "bg-amber-500 text-black" },
{ title: "Vendor & Field Service", href: "/operations/vendor-field", icon: Star, badge: 12, badgeColor: "bg-sky-400 text-black" },
{ title: "Help Desk", href: "/dashboard/operations/helpDesk", icon: CheckSquare, badge: 6, badgeColor: "bg-amber-500 text-black" },
{ title: "Equipment", href: "/dashboard/operations/equipment", icon: Target },
{ title: "Requests", href: "/dashboard/operations/request", icon: FileText, badge: 15, badgeColor: "bg-amber-400 text-black" },
{ title: "Inventory", href: "/dashboard/operations/inventory", icon: Box },
{ title: "Energy", href: "/dashboard/operations/energy", icon: Zap },
{ title: "Work Permit", href: "/dashboard/operations/workPermit", icon: ClipboardList, badge: 3, badgeColor: "bg-amber-500 text-black" },
{ title: "Vendor & Field Service", href: "/dashboard/operations/vendorFieldService", icon: Star, badge: 12, badgeColor: "bg-sky-400 text-black" },
],
},
{
title: "Workplace",
icon: Monitor,
children: [
{ title: "Visitor Management", href: "/workplace/visitor", icon: UserCheck },
{ title: "Meeting Rooms", href: "/workplace/meeting-rooms", icon: Calendar },
{ title: "Workspace", href: "/workplace/workspace", icon: Layers },
{ title: "Visitor Management", href: "/dashboard/workplace/visitorManagement", icon: UserCheck },
{ title: "Meeting Rooms", href: "/dashboard/workplace/meetingRoom", icon: Calendar },
{ title: "Workspace", href: "/dashboard/workplace/workspace", icon: Layers },
],
},
{
title: "Finance",
icon: Wallet,
children: [
{ title: "O&M Budget", href: "/finance/om-budget", icon: Coins },
{ title: "Costing & Invoicing", href: "/finance/costing-invoicing", icon: Receipt },
{ title: "O&M Budget", href: "/dashboard/finance/budget", icon: Coins },
{ title: "Costing & Invoicing", href: "/dashboard/finance/costinvoice", icon: Receipt },
],
},
{
title: "Compliance & Safety",
icon: ShieldCheck,
children: [
{ title: "Statutory Compliance", href: "/compliance/statutory", icon: ShieldCheck },
{ title: "Contracts & SLA", href: "/compliance/contracts-sla", icon: FileText },
{ title: "Fire & Safety", href: "/compliance/fire-safety", icon: Flame },
{ title: "Waste & ESG", href: "/compliance/waste-esg", icon: Recycle },
{ title: "Training", href: "/compliance/training", icon: GraduationCap },
{ title: "Audit & Survey", href: "/compliance/training", icon: GraduationCap },
{ title: "Statutory Compliance", href: "/dashboard/compliance-safety/statutoryCompliance", icon: ShieldCheck },
{ title: "Contracts & SLA", href: "/dashboard/compliance-safety/contracts", icon: FileText },
{ title: "Fire & Safety", href: "/dashboard/compliance-safety/fireAndSafety", icon: Flame },
{ title: "Waste & ESG", href: "/dashboard/compliance-safety/wasteAndEsg", icon: Recycle },
{ title: "Training", href: "/dashboard/compliance-safety/training", icon: GraduationCap },
{ title: "Audit & Survey", href: "/dashboard/compliance-safety/auditAndSurvey", icon: GraduationCap },
],
},
{
title: "Intelligence",
icon: Brain,
children: [{ title: "AI & Predictive", href: "/intelligence/predictive", icon: Brain },
{ title: "Asset Health", href: "/intelligence/asset-health", icon: ShieldCheck },
{ title: "Energy Benchmarking", href: "/intelligence/benchmarking", icon: Activity },
{ title: "AI Helpdesk", href: "/intelligence/ai-helpdesk", icon: Bot },
{ title: "Connected Ops", href: "/intelligence/connected-ops", icon: Gauge },
{ title: "Connected Assets", href: "/intelligence/connected-assets", icon: Snowflake },
{ title: "Sustainability", href: "/intelligence/sustainability", icon: Leaf },
{ title: "GPS Tracking", href: "/intelligence/gps-tracking", icon: MapPin },],
children: [{ title: "AI & Predictive", href: "/dashboard/intelligence/aiPredictive", icon: Brain },
{ title: "Asset Health", href: "/dashboard/intelligence/assetHealth", icon: ShieldCheck },
{ title: "Energy Benchmarking", href: "/dashboard/intelligence/energyBenchmarking", icon: Activity },
{ title: "AI Helpdesk", href: "/dashboard/intelligence/aiHelpdesk", icon: Bot },
{ title: "Connected Ops", href: "/dashboard/intelligence/connectedOps", icon: Gauge },
{ title: "Connected Assets", href: "/dashboard/intelligence/connectedAsset", icon: Snowflake },
{ title: "Sustainability", href: "/dashboard/intelligence/sustainability", icon: Leaf },
{ title: "GPS Tracking", href: "/dashboard/intelligence/gpstracking", icon: MapPin },],
},
{
title: "IoT Application",
icon: Radar,
children: [{ title: "Command Center", href: "/iot/command-center", icon: Gauge },
{ title: "HVAC Plant", href: "/iot/hvac-plant", icon: Snowflake },
{ title: "Energy & Utilities", href: "/iot/energy-utilities", icon: Zap },
{ title: "Device Fleet", href: "/iot/device-fleet", icon: LayoutGrid },
{ title: "Alarms & Rules", href: "/iot/alarms-rules", icon: Shield, badge: 7, badgeColor: "bg-rose-500 text-white" },],
children: [{ title: "Command Center", href: "/dashboard/iot-app/commandCenter", icon: Gauge },
{ title: "HVAC Plant", href: "/dashboard/iot-app/hvacPlant", icon: Snowflake },
{ title: "Energy & Utilities", href: "/dashboard/iot-app/energyUtility", icon: Zap },
{ title: "Device Fleet", href: "/dashboard/iot-app/deviceFleet", icon: LayoutGrid },
{ title: "Alarms & Rules", href: "/dashboard/iot-app/alarmsRules", icon: Shield, badge: 7, badgeColor: "bg-rose-500 text-white" },],
},
{
title: "Insight",
icon: BarChart3,
children: [{ title: "Reports & MMR", href: "/insight/reports", icon: BarChart3 },],
children: [{ title: "Reports & MMR", href: "/dashboard/insight/report", icon: BarChart3 },],
},
{
title: "Configure",
icon: Cog,
children: [{ title: "Master Data", href: "/configure/master-data", icon: Layers },
{ title: "Roles & Access", href: "/configure/roles-access", icon: Shield },
{ title: "Workflow Automation", href: "/configure/workflow", icon: Bot },
{ title: "User Location", href: "/configure/user-location", icon: MapPin },
{ title: "Settings", href: "/configure/settings", icon: Sun },],
children: [{ title: "Master Data", href: "/dashboard/configure/masterdata", icon: Layers },
{ title: "Roles & Access", href: "/dashboard/configure/rolesAndAccess", icon: Shield },
{ title: "Workflow Automation", href: "/dashboard/configure/workflowautomation", icon: Bot },
{ title: "User Location", href: "/dashboard/configure/userLocation", icon: MapPin },
{ title: "Settings", href: "/dashboard/configure/settings", icon: Sun },],
},
];
export const ADMIN_SIDEBAR_ITEMS = [
@@ -139,26 +139,38 @@ export const ADMIN_SIDEBAR_ITEMS = [
title: "Platform",
icon: Building2,
children: [
{ title: "Overview", href: "/admin/overview", icon: LayoutGrid },
{ title: "Tenants", href: "/admin/tenants", icon: Building2 },
{ title: "Users", href: "/admin/users", icon: Users },
{ title: "Sites", href: "/admin/sites", icon: MapPin },
{ title: "Security", href: "/admin/security", icon: Shield },
{ title: "Overview", href: "/dashboard/admin/overview", icon: LayoutGrid },
{ title: "Tenants", href: "/dashboard/admin/tenants", icon: Building2 },
{ title: "Users", href: "/dashboard/admin/users", icon: Users },
{ title: "Sites", href: "/dashboard/admin/site", icon: MapPin },
{ title: "Security", href: "/dashboard/admin/security", icon: Shield },
],
},
{
title: "Configuration",
icon: LayoutGrid,
children: [
{ title: "Modules", href: "/admin/configuration/modules", icon: LayoutGrid },
{ title: "Language", href: "/admin/configuration/language", icon: Globe },
{ title: "Dynamic Dashboard", href: "/admin/configuration/dynamic-dashboard", icon: LayoutDashboard },
{ title: "Mobile Flows", href: "/admin/configuration/mobile-flows", icon: Smartphone },
{ title: "Modules", href: "/dashboard/admin/modules", icon: LayoutGrid },
{ title: "Language", href: "/dashboard/admin/language", icon: Globe },
{ title: "Dynamic Dashboard", href: "/dashboard/admin/dynamicDashboard", icon: LayoutDashboard },
{ title: "Mobile Flows", href: "/dashboard/admin/mobileFlow", icon: Smartphone },
],
},
];
export const schedulePerformanceHeaders = [
"Schedule",
"Total",
"Done",
"On Time",
"Delayed",
];
export const schedulePerformanceRows = [
["PPM", 24, 19, 17, 2],
["AMC", 8, 6, 6, 0],
];
//Overview dashboard data