+
APPLE ONE — HQ TOWER
- •
- INTELLIGENCE
- •
- BENCHMARKING
+ •
+ INTELLIGENCE
+ •
+ BENCHMARKING
Portfolio energy benchmarking
diff --git a/components/dashboard/intelligence/gpsTracking.tsx b/components/dashboard/intelligence/gpsTracking.tsx
index 2e271aa..e8b0905 100644
--- a/components/dashboard/intelligence/gpsTracking.tsx
+++ b/components/dashboard/intelligence/gpsTracking.tsx
@@ -16,17 +16,10 @@ import { Card } from "@/components/common/cardWrapper";
import { CardHeader } from "@/components/common/cardHeader";
import InfoBanner from '@/components/common/infoBanner';
-import { gpsTrackingtabs } from '@/constants/constant';
+import { STAFF_DATA } from '@/constants/constant';
+import { gpsTrackingtabs } from '@/constants/tabConstant';
+
-// Staff Table Data
-const STAFF_DATA = [
- { name: "Ravi Kumar", role: "M&E Technician", zone: "Chiller plant", inTime: "08:02", hrs: "6.4", status: "ON-SITE", statusType: "success" },
- { name: "Sana Iqbal", role: "HVAC Engineer", zone: "AHU room L7", inTime: "08:15", hrs: "6.1", status: "ON-SITE", statusType: "success" },
- { name: "Mohan D.", role: "Electrician", zone: "En route", inTime: "—", hrs: "0", status: "EN-ROUTE", statusType: "warning" },
- { name: "Lakshmi N.", role: "Housekeeping Lead", zone: "Lobby + L2", inTime: "07:48", hrs: "6.7", status: "ON-SITE", statusType: "success" },
- { name: "Arjun P.", role: "Plumber", zone: "Off-site", inTime: "—", hrs: "0", status: "OFF-SITE", statusType: "neutral" },
- { name: "Fatima R.", role: "BMS Operator", zone: "Control room", inTime: "06:55", hrs: "7.6", status: "ON-SITE", statusType: "success" },
-];
export default function GpsTrackingPortal() {
const [activeTab, setActiveTab] = useState('Live tracking');
@@ -36,12 +29,12 @@ export default function GpsTrackingPortal() {
{/* --- HEADER SECTION --- */}
-
+
Apple One — HQ Tower
- •
- INTELLIGENCE
- •
- GPS TRACKING
+ •
+ INTELLIGENCE
+ •
+ GPS TRACKING
GPS staff tracking & geo-fencing
diff --git a/components/dashboard/intelligence/sustainability.tsx b/components/dashboard/intelligence/sustainability.tsx
index d02694d..fdcb8a1 100644
--- a/components/dashboard/intelligence/sustainability.tsx
+++ b/components/dashboard/intelligence/sustainability.tsx
@@ -6,8 +6,6 @@ import {
Star,
BarChart2,
Plus,
- ShieldCheck,
- Clock
} from "lucide-react";
import Button from "@/components/common/button";
import StatCard from "@/components/common/dashStatCard";
@@ -21,25 +19,11 @@ import { CardHeader } from "@/components/common/cardHeader";
import BarChart from "@/components/charts/barchart";
import InfoBanner from '@/components/common/infoBanner';
-import { sustainabilitytabs } from '@/constants/constant';
+import { EMISSION_SOURCES, energyData, } from '@/constants/constant';
+import { sustainabilitytabs } from '@/constants/tabConstant';
+
-// Sample Bar Chart Data for Carbon Emissions
-const CARBON_EMISSIONS_DATA = [
- { month: 'Jan', height: 'h-32' },
- { month: 'Feb', height: 'h-32' },
- { month: 'Mar', height: 'h-32' },
- { month: 'Apr', height: 'h-32' },
- { month: 'May', height: 'h-32' },
- { month: 'Jun', height: 'h-28' },
-];
-// Emission Sources Progress Data
-const EMISSION_SOURCES = [
- { name: "Purchased electricity", percentage: "58%", width: "w-[58%]", color: "bg-sky-400" },
- { name: "DG / fuel combustion", percentage: "21%", width: "w-[21%]", color: "bg-amber-400" },
- { name: "Refrigerants (fugitive)", percentage: "12%", width: "w-[12%]", color: "bg-rose-400" },
- { name: "Water & waste", percentage: "9%", width: "w-[9%]", color: "bg-slate-400" },
-];
export default function SustainabilityPortal() {
const [activeTab, setActiveTab] = useState('ESG Data Hub');
@@ -49,12 +33,12 @@ export default function SustainabilityPortal() {
{/* --- HEADER SECTION --- */}
-
+
Apple One — HQ Tower
- •
- INTELLIGENCE
- •
- SUSTAINABILITY
+ •
+ INTELLIGENCE
+ •
+ SUSTAINABILITY
ESG One — sustainability platform
@@ -140,7 +124,7 @@ export default function SustainabilityPortal() {
{/* --- ESG CARDS SECTION BELOW TABS --- */}
{/* Environmental Card */}
-
+
@@ -175,7 +159,7 @@ export default function SustainabilityPortal() {
{/* Social Card */}
-
+
@@ -210,7 +194,7 @@ export default function SustainabilityPortal() {
{/* Governance Card */}
-
+
@@ -249,17 +233,17 @@ export default function SustainabilityPortal() {
{/* Left: Carbon Emissions BarChart */}
{/* Right: Emission Sources */}
-
+
{EMISSION_SOURCES.map((source, idx) => (
diff --git a/components/dashboard/operations/equipment.tsx b/components/dashboard/operations/equipment.tsx
index 0ecb831..4e395c9 100644
--- a/components/dashboard/operations/equipment.tsx
+++ b/components/dashboard/operations/equipment.tsx
@@ -14,7 +14,7 @@ import Table from "@/components/common/dataTable";
import InfoBanner from "@/components/common/infoBanner";
import Button from "@/components/common/button";
import NavigationTabs from "@/components/common/tabs";
-import { equipmentTabs } from "@/constants/constant";
+import { equipmentTabs } from "@/constants/tabConstant";
import { useState } from "react";
import StatCard from "@/components/common/dashStatCard";
import { equipmentheaders, equipmentrows } from "@/constants/tabledata";
diff --git a/components/dashboard/operations/helpDesk.tsx b/components/dashboard/operations/helpDesk.tsx
index 31e8023..4bc0a3a 100644
--- a/components/dashboard/operations/helpDesk.tsx
+++ b/components/dashboard/operations/helpDesk.tsx
@@ -12,7 +12,7 @@ import Button from "@/components/common/button";
import StatCard from "@/components/common/dashStatCard";
import Table from "@/components/common/dataTable";
import NavigationTabs from '@/components/common/tabs';
-import { helpdeskTtabs } from '@/constants/constant';
+import { helpdeskTtabs } from '@/constants/tabConstant';
import { helpdeskheaders, helpdeskrows } from '@/constants/tabledata';
diff --git a/components/dashboard/operations/request.tsx b/components/dashboard/operations/request.tsx
index ec16955..b9ffa90 100644
--- a/components/dashboard/operations/request.tsx
+++ b/components/dashboard/operations/request.tsx
@@ -3,7 +3,8 @@ import { Plus } from 'lucide-react';
import Button from "@/components/common/button";
import LocationTable from '@/components/common/dataTable';
import NavigationTabs from '@/components/common/tabs';
-import { Reqeusttabs,statusFilters } from '@/constants/constant';
+import { statusFilters } from '@/constants/constant';
+import { Reqeusttabs } from '@/constants/tabConstant';
import FilterTabs from '@/components/common/roundedFilters';
import Table from '@/components/common/dataTable';
import { requestheaders, requestrows } from '@/constants/tabledata';
diff --git a/components/dashboard/workplace/workspace.tsx b/components/dashboard/workplace/workspace.tsx
index 8657800..4058ca1 100644
--- a/components/dashboard/workplace/workspace.tsx
+++ b/components/dashboard/workplace/workspace.tsx
@@ -14,10 +14,11 @@ import Button from "@/components/common/button";
import NavigationTabs from "@/components/common/tabs";
import { useState } from "react";
-import { workspaceTabs, zoneUtilizationData } from "@/constants/constant";
+import { zoneUtilizationData } from "@/constants/constant";
import StatCard from "@/components/common/dashStatCard";
import { Card } from '@/components/common/cardWrapper';
import { CardHeader } from '@/components/common/cardHeader';
+import { workspaceTabs } from '@/constants/tabConstant';
export default function WorkSpacePortal() {
const [activeTab, setActiveTab] = useState("Desk Booking");
diff --git a/components/layouts/sidebar.tsx b/components/layouts/sidebar.tsx
index 34605f2..79d44be 100644
--- a/components/layouts/sidebar.tsx
+++ b/components/layouts/sidebar.tsx
@@ -65,15 +65,15 @@ export default function Sidebar() {
))}
-
-
+
+
Minimise menu
{/* Profile Card */}
-
+
diff --git a/constants/adminTableDatat.tsx b/constants/adminTableDatat.tsx
new file mode 100644
index 0000000..2122635
--- /dev/null
+++ b/constants/adminTableDatat.tsx
@@ -0,0 +1,516 @@
+import Button from "@/components/common/button";
+import { StatusBadge } from "@/components/common/statusBadge";
+import { Eye, GitBranch, KeyRound, Pencil, Settings } from "lucide-react";
+import ActionButtons from "@/components/common/actionButton";
+
+
+
+
+
+export const siteHeaders = [
+ "Site",
+ "Tenant",
+ "Coordinates",
+ "Radius",
+ "Status",
+ "Actions",
+];
+
+export const siteRows = [
+ [
+
+
Apple One — HQ Tower
+
AO-HQ · SIT-3001
+
,
+ "Apple One",
+
19.0760, 72.8777 ,
+
200 m ,
+
,
+
,
+ ],
+
+ [
+
+
Apple One — Annexe
+
AO-AX · SIT-3002
+
,
+ "Apple One",
+
19.1020, 72.8895 ,
+
150 m ,
+
,
+
,
+ ],
+
+ [
+
+
Novotel Pune — Main
+
NP-M · SIT-3003
+
,
+ "Novotel Pune",
+
18.5604, 73.9090 ,
+
180 m ,
+
,
+
,
+ ],
+
+ [
+
+
+ SRM Campus — Academic Block
+
+
SRM-AB · SIT-3004
+
,
+ "SRM Campus",
+
12.8230, 80.0444 ,
+
400 m ,
+
,
+
,
+ ],
+
+ [
+
+
+ SRM Campus — Hostel Block
+
+
SRM-HB · SIT-3005
+
,
+ "SRM Campus",
+
12.8255, 80.0478 ,
+
350 m ,
+
,
+
,
+ ],
+
+ [
+
+
Local 1 — Site
+
L1-S · SIT-3006
+
,
+ "Local 1",
+
19.2183, 72.9781 ,
+
120 m ,
+
,
+
,
+ ],
+];
+
+export const organizationHeaders = [
+ "Organization",
+ "Tenant ID",
+ "Contact",
+ "Time Zone",
+ "Status",
+ "Actions",
+];
+
+
+
+export const organizationRows = [
+ [
+
+
+ AO
+
+
+
+
Apple One
+
ops@appleone.com
+
+
,
+
+
+ TNT-1001
+ ,
+
+
+
Dhananjay T.
+
+91 98200 10001
+
,
+
+
Asia/Kolkata ,
+
+
,
+
+
,
+ ],
+
+ [
+
+
+ NP
+
+
+
+
Novotel Pune
+
fm@novotelpune.com
+
+
,
+
+
+ TNT-1002
+ ,
+
+
+
Site FM Lead
+
+91 98220 20002
+
,
+
+
Asia/Kolkata ,
+
+
,
+
+
,
+ ],
+
+ [
+
+
+ SC
+
+
+
+
SRM Campus
+
estates@srm.edu
+
+
,
+
+
+ TNT-1003
+ ,
+
+
+
Estates Office
+
+91 98430 30003
+
,
+
+
Asia/Kolkata ,
+
+
,
+
+
,
+ ],
+
+ [
+
+
+ L1
+
+
+
+
Local 1
+
admin@local1.com
+
+
,
+
+
+ TNT-1004
+ ,
+
+
+
Local Admin
+
+91 98000 40004
+
,
+
+
Asia/Kolkata ,
+
+
,
+
+
,
+ ],
+];
+
+
+
+export const userHeaders = [
+ "Name",
+ "Email",
+ "Phone",
+ "Tenants",
+ "MFA",
+ "User ID",
+ "Actions",
+];
+
+const UserActionButtons = () => (
+
+
+
+
+
+
+
+
+
+);
+
+export const userRows = [
+ [
+
+
+ DT
+
+
+
+ Dhananjay T.
+
+
,
+
+
+ dhananjay@kafm.io
+ ,
+
+
+ +91 98200 10001
+ ,
+
+
+ 4 assigned
+ ,
+
+
,
+
+
+ USR-5001
+ ,
+
+
,
+ ],
+
+ [
+
+
+ MS
+
+
+
+ ME Supervisor
+
+
,
+
+
+ me.local@kafm.io
+ ,
+
+
+ +91 98201 10010
+ ,
+
+
+ 1 assigned
+ ,
+
+
,
+
+
+ USR-5002
+ ,
+
+
,
+ ],
+
+ [
+
+
+ T
+
+
+
+ Technician
+
+
,
+
+
+ tech.local@kafm.io
+ ,
+
+
+ +91 98202 10011
+ ,
+
+
+ 2 assigned
+ ,
+
+
,
+
+
+ USR-5003
+ ,
+
+
,
+ ],
+
+ [
+
+
+ TC
+
+
+
+ Tenant Customer
+
+
,
+
+
+ tenant@kafm.io
+ ,
+
+
+ +91 98203 10012
+ ,
+
+
+ 1 assigned
+ ,
+
+
,
+
+
+ USR-5004
+ ,
+
+
,
+ ],
+
+ [
+
+
+ HA
+
+
+
+ Helpdesk Agent
+
+
,
+
+
+ help@kafm.io
+ ,
+
+
+ +91 98204 10013
+ ,
+
+
+ 2 assigned
+ ,
+
+
,
+
+
+ USR-5005
+ ,
+
+
,
+ ],
+
+ [
+
+
+ EA
+
+
+
+ Energy Analyst
+
+
,
+
+
+ energy@kafm.io
+ ,
+
+
+ +91 98430 30030
+ ,
+
+
+ 1 assigned
+ ,
+
+
,
+
+
+ USR-5006
+ ,
+
+
,
+ ],
+];
\ No newline at end of file
diff --git a/constants/constant.ts b/constants/constant.ts
index 189ae40..b151799 100644
--- a/constants/constant.ts
+++ b/constants/constant.ts
@@ -1,3 +1,5 @@
+import { BarChart2, Box, CheckSquare,
+ ClipboardCheck, Crosshair, FileText, LayoutGrid, Zap } from "lucide-react";
@@ -26,6 +28,14 @@ export const chartData = [
{ month: "May", height: 'h-18' },
{ month: "Jun", height: 'h-20' },
];
+// Emission Sources Progress Data
+export const EMISSION_SOURCES = [
+ { name: "Purchased electricity", percentage: "58%", width: "w-[58%]", color: "bg-sky-400" },
+ { name: "DG / fuel combustion", percentage: "21%", width: "w-[21%]", color: "bg-amber-400" },
+ { name: "Refrigerants (fugitive)", percentage: "12%", width: "w-[12%]", color: "bg-rose-400" },
+ { name: "Water & waste", percentage: "9%", width: "w-[9%]", color: "bg-slate-400" },
+];
+
export const activities = [
{ time: '09:42', text: '6/1009 assigned to ME Local', boldText: '6/1009' },
@@ -501,6 +511,103 @@ export const blocks = ["Block 1", "Block 2", "Tower A"];
},
];
+export const STAT_CARDS_DATA = [
+ {
+ title: "SLA ADHERENCE",
+ value: "90%",
+ subtext: "target 90% · automated tracking",
+ progress: 90,
+ color: "bg-[#00c985]", // Vibrant emerald green
+ valueColor: "text-[#00c985]",
+ },
+ {
+ title: "AVG WO RESOLUTION",
+ value: "22.4 h",
+ subtext: "target < 24 h · portfolio median",
+ progress: 93,
+ color: "bg-[#2dd4bf]", // Mint / Teal
+ valueColor: "text-white",
+ },
+ {
+ title: "MANUAL DATA ENTRY",
+ value: "-80%",
+ subtext: "agent-captured requests & readings",
+ progress: 80,
+ color: "bg-[#2dd4bf]", // Mint / Teal
+ valueColor: "text-[#2dd4bf]",
+ },
+ {
+ title: "REPORTING EFFORT",
+ value: "-75%",
+ subtext: "metrics ready for review — no compiling",
+ progress: 75,
+ color: "bg-[#2dd4bf]", // Mint / Teal
+ valueColor: "text-[#2dd4bf]",
+ },
+];
+
+// Data for Risk Radar
+export const RISK_RADAR_ITEMS = [
+ {
+ title: "Coastal One · vendor gap",
+ desc: "HVAC vendor completion rate fell to 61% — 8 PPMs at risk of slipping this month. Backup vendor suggested.",
+ tag: "Escalates in ~6 days",
+ tagColor: "text-rose-400",
+ dotColor: "bg-rose-500",
+ action: "Assign backup",
+ },
+ {
+ title: "Lakeside · SLA drift",
+ desc: "P2 response times trending +18% over 3 weeks; correlated with night-shift staffing.",
+ tag: "Breach risk · next week",
+ tagColor: "text-amber-400",
+ dotColor: "bg-amber-400",
+ action: "Adjust roster",
+ },
+ {
+ title: "Monsoon readiness",
+ desc: "4 of 11 waterproofing checks pending across portfolio with rains forecast in 10 days.",
+ tag: "Window closing",
+ tagColor: "text-amber-400",
+ dotColor: "bg-amber-400",
+ action: "Schedule now",
+ },
+ {
+ title: "Spares shortfall",
+ desc: "AHU belt stock below reorder level at 2 sites; next PPM cycle consumes remaining stock.",
+ tag: "3 weeks of stock left",
+ tagColor: "text-sky-400",
+ dotColor: "bg-sky-400",
+ action: "Raise PO",
+ },
+];
+
+// Data for Vendor Performance
+export const VENDOR_PERFORMANCE = [
+ { name: "CoolServ HVAC", score: 94, barColor: "bg-emerald-400" },
+ { name: "Apex Elevators", score: 91, barColor: "bg-emerald-400" },
+ { name: "SecureWatch", score: 86, barColor: "bg-emerald-400" },
+ { name: "AquaPure", score: 82, barColor: "bg-amber-400" },
+ { name: "GreenScape", score: 61, barColor: "bg-rose-400" },
+];
+
+// Data for Live Context Feed
+ export const LIVE_FEED = [
+ { time: "now", text: "Vendor CoolServ acknowledged P1 · Chiller-02 — tenant portal updated" },
+ { time: "4 min", text: "Energy spike at Lakeside auto-linked to AHU-07 alert" },
+ { time: "11 min", text: "Coastal One WO-1221 completed · SLA met · invoice draft created" },
+ { time: "26 min", text: "Tenant satisfaction pulse: 4.4 ★ this week (+0.2)" },
+];
+
+export const STAFF_DATA = [
+ { name: "Ravi Kumar", role: "M&E Technician", zone: "Chiller plant", inTime: "08:02", hrs: "6.4", status: "ON-SITE", statusType: "success" },
+ { name: "Sana Iqbal", role: "HVAC Engineer", zone: "AHU room L7", inTime: "08:15", hrs: "6.1", status: "ON-SITE", statusType: "success" },
+ { name: "Mohan D.", role: "Electrician", zone: "En route", inTime: "—", hrs: "0", status: "EN-ROUTE", statusType: "warning" },
+ { name: "Lakshmi N.", role: "Housekeeping Lead", zone: "Lobby + L2", inTime: "07:48", hrs: "6.7", status: "ON-SITE", statusType: "success" },
+ { name: "Arjun P.", role: "Plumber", zone: "Off-site", inTime: "—", hrs: "0", status: "OFF-SITE", statusType: "neutral" },
+ { name: "Fatima R.", role: "BMS Operator", zone: "Control room", inTime: "06:55", hrs: "7.6", status: "ON-SITE", statusType: "success" },
+];
+
export const permitsData = [
{
permit: "PTW-2663",
@@ -664,3 +771,123 @@ export const HANDLES_DATA = [
subtitle: "assigns per contract & skill",
},
];
+
+
+export const initialRows = [
+ // Row 1 (2 cards)
+ {
+ id: "row-1",
+ widgets: [
+ { id: "w1", title: "TFM Requests · Monthly", type: "report.widget" },
+ { id: "w2", title: "Recent Activity", type: "report.widget" },
+ ],
+ },
+ // Row 2 (2 cards)
+ {
+ id: "row-2",
+ widgets: [
+ { id: "w3", title: "Schedule Performance", type: "report.widget" },
+ { id: "w4", title: "Energy · Today", type: "report.widget" },
+ ],
+ },
+ // Row 3 (3 cards)
+ {
+ id: "row-3",
+ widgets: [
+ { id: "w5", title: "Top 5 Requester", type: "report.widget" },
+ { id: "w6", title: "Asset Register", type: "report.widget" },
+ { id: "w7", title: "PM Plan vs Started", type: "report.widget" },
+ ],
+ },
+];
+
+
+export const initialLanguageValues = [
+ {
+ id: 1,
+ app: "Web Console",
+ menu: "Tenant",
+ screen: "Tenant List",
+ uiKey: "btn.add_tenant",
+ code: "EN",
+ value: "Add Tenant",
+ },
+ {
+ id: 2,
+ app: "Web Console",
+ menu: "Site",
+ screen: "Site List",
+ uiKey: "btn.add_site",
+ code: "EN",
+ value: "Add Site",
+ },
+ {
+ id: 3,
+ app: "Mobile App",
+ menu: "Inspections",
+ screen: "QR Round",
+ uiKey: "lbl.scan_qr",
+ code: "EN",
+ value: "Scan QR to begin round",
+ },
+];
+
+
+export const initialModules = [
+ {
+ id: "MOD-01",
+ title: "Dashboard",
+ description: "Operational overview & live KPIs",
+ icon: LayoutGrid,
+ menus: [], // Currently empty as per screenshot
+ },
+ {
+ id: "MOD-02",
+ title: "Helpdesk",
+ description: "Tickets, requests & SLA tracking",
+ icon: CheckSquare,
+ menus: ["Tickets", "SLA Settings", "Queues"],
+ },
+ {
+ id: "MOD-03",
+ title: "Equipment",
+ description: "Asset register & equipment groups",
+ icon: Crosshair,
+ menus: ["Asset Register", "Categories"],
+ },
+ {
+ id: "MOD-04",
+ title: "Request",
+ description: "Service requests & approvals",
+ icon: FileText,
+ menus: ["My Requests", "Approvals"],
+ },
+ {
+ id: "MOD-05",
+ title: "Inventory",
+ description: "Stock, spares & consumables",
+ icon: Box,
+ menus: ["Stock Levels", "Suppliers"],
+ },
+ {
+ id: "MOD-06",
+ title: "Energy",
+ description: "Meters, consumption & analytics",
+ icon: Zap,
+ menus: ["Meters", "Analytics"],
+ },
+ {
+ id: "MOD-07",
+ title: "Inspections",
+ description: "QR rounds & checklists",
+ icon: ClipboardCheck,
+ menus: ["Rounds", "Checklists"],
+ },
+ {
+ id: "MOD-08",
+ title: "Reports",
+ description: "Analytics & export tools",
+ icon: BarChart2,
+ menus: ["Scheduled Reports", "Custom Builder"],
+ },
+];
\ No newline at end of file
diff --git a/constants/tabConstant.ts b/constants/tabConstant.ts
new file mode 100644
index 0000000..e371429
--- /dev/null
+++ b/constants/tabConstant.ts
@@ -0,0 +1,82 @@
+//Tabs used in Operations dashboards
+
+export const equipmentTabs: string[] = [
+ 'Equipment Groups',
+ 'Site-Wise Equipment',
+ 'PPM Checklist',
+ 'AMC Checklist',
+ 'PPM Schedule',
+ 'AMC Schedule',
+ 'Maintenance Calendar'
+ ];
+
+
+
+ export const helpdeskTtabs: string[] =
+ ['Location',
+ 'Technical',
+ 'Missed',
+ 'Departments',
+ 'HSQE'];
+
+
+
+export const aiHelpdeskTabs: string[] = [
+ 'Live triage',
+ 'Invoice verification',
+ 'SLA Enforecment',
+ 'Automation rules',
+
+ ];
+
+export const Reqeusttabs: string[] = [
+ 'TFM Requests',
+ 'Engineering',
+ 'Schedule Complaints'
+ ];
+
+
+ export const trainingtabs: string[] = [
+ 'Courses',
+ 'Certificates & history',
+
+ ];
+
+
+ export const workspaceTabs: string[] = [
+ 'Desk Booking',
+ 'Floor Plan',
+ 'TimeTable',
+
+ ];
+ export const connectedassettabs:string[]=[
+ 'Asset Fleet',
+ 'Excursions',
+ 'Optimisation',
+ ]
+
+ export const sustainabilitytabs:string[]=[
+ 'ESG Data Hub',
+ 'IoT sensor',
+ 'Reporting engine',
+ 'Target & forecasts',
+ 'Social & goverance',
+ ]
+ export const gpsTrackingtabs:string[]=[
+ 'Live tracking',
+ 'Geo-fences',
+ 'Entry/exit logs',
+ 'Route history',
+ 'Mobile app',
+ ]
+ export const reporttabs: string[] = [
+ 'Equipment',
+ 'Maintance',
+ 'Checklists',
+ 'Requests',
+ 'Inventory',
+ 'Energy',
+ 'HSQE',
+ 'MMR',
+ ];
+
diff --git a/constants/tabledata.tsx b/constants/tabledata.tsx
index 50b262b..5409cd9 100644
--- a/constants/tabledata.tsx
+++ b/constants/tabledata.tsx
@@ -1,7 +1,7 @@
import ActionButtons from "@/components/common/actionButton";
import Button from "@/components/common/button";
import { StatusBadge } from "@/components/common/statusBadge";
-import { FileText, Eye } from "lucide-react";
+import { FileText, Eye, Pencil, GitBranch, Settings } from "lucide-react";
//Vendor field Service
@@ -3301,6 +3301,177 @@ export const budgetPerformanceRows = [
];
+
+export const trustedDeviceHeaders = [
+ "USER",
+ "DEVICE",
+ "IP",
+ "LAST SEEN",
+ "EXPIRES",
+ "STATUS",
+ "ACTIONS",
+];
+
+export const trustedDeviceRows = [
+ [
+
Dhananjay T. ,
+ "Chrome 126 · Windows 11",
+
103.212.14.8 ,
+
Today, 08:12 ,
+
Jul 30, 2026 ,
+
,
+
+ Revoke
+ ,
+ ],
+
+ [
+
Kavya Raghunathan ,
+ "Safari 18 · macOS",
+
49.37.201.55 ,
+
Yesterday, 17:40 ,
+
Jul 21, 2026 ,
+
,
+
+ Revoke
+ ,
+ ],
+
+ [
+
Rahul Iyer ,
+ "KAFM Mobile · Android 15",
+
152.58.33.104 ,
+
Today, 06:58 ,
+
Jul 12, 2026 ,
+
,
+
+ Revoke
+ ,
+ ],
+
+ [
+
Meera Pillai ,
+ "Edge 126 · Windows 10",
+
103.212.14.31 ,
+
Jun 18, 2026 ,
+
Expired ,
+
,
+
— ,
+ ],
+];
+
+export const auditLogHeaders = [
+ "WHEN",
+ "USER",
+ "EVENT",
+ "IP",
+ "RESULT",
+];
+
+export const auditLogRows = [
+ [
+
Today 08:12 ,
+
dhananjay@kafm.io ,
+
Sign-in · password + MFA ,
+
103.212.14.8 ,
+
,
+ ],
+
+ [
+
Today 07:56 ,
+
kavya@kafm.io ,
+
+ Role changed · Technician → M&E Supervisor
+ ,
+
49.37.201.55 ,
+
,
+ ],
+
+ [
+
Today 07:31 ,
+
unknown@ext.net ,
+
+ Sign-in · wrong password (3rd attempt)
+ ,
+
91.240.118.7 ,
+
,
+ ],
+
+ [
+
Today 06:58 ,
+
rahul@kafm.io ,
+
+ Device trusted · KAFM Mobile (30 days)
+ ,
+
152.58.33.104 ,
+
,
+ ],
+
+ [
+
Yesterday 17:40 ,
+
kavya@kafm.io ,
+
+ Password reset · self-service link
+ ,
+
49.37.201.55 ,
+
,
+ ],
+
+ [
+
Yesterday 14:05 ,
+
meera@kafm.io ,
+
+ MFA reset by admin · device revoked
+ ,
+
103.212.14.31 ,
+
,
+ ],
+
+ [
+
Jun 30 09:12 ,
+
admin@kafm.io ,
+
+ Sign-in policy updated · idle timeout 30 min
+ ,
+
103.212.14.8 ,
+
,
+ ],
+];
+
+
//Statutory Compliance Page
export const statutoryheaders = [
"Obligation",
@@ -3914,4 +4085,138 @@ export const auditrows = [
,
],
-];
\ No newline at end of file
+];
+export const siteHeaders = [
+ "Site",
+ "Tenant",
+ "Coordinates",
+ "Radius",
+ "Status",
+ "Actions",
+];
+
+export const siteRows = [
+ [
+
+
Apple One — HQ Tower
+
AO-HQ · SIT-3001
+
,
+ "Apple One",
+
19.0760, 72.8777 ,
+
200 m ,
+
,
+
,
+ ],
+
+ [
+
+
Apple One — Annexe
+
AO-AX · SIT-3002
+
,
+ "Apple One",
+
19.1020, 72.8895 ,
+
150 m ,
+
,
+
,
+ ],
+
+ [
+
+
Novotel Pune — Main
+
NP-M · SIT-3003
+
,
+ "Novotel Pune",
+
18.5604, 73.9090 ,
+
180 m ,
+
,
+
,
+ ],
+
+ [
+
+
+ SRM Campus — Academic Block
+
+
SRM-AB · SIT-3004
+
,
+ "SRM Campus",
+
12.8230, 80.0444 ,
+
400 m ,
+
,
+
,
+ ],
+
+ [
+
+
+ SRM Campus — Hostel Block
+
+
SRM-HB · SIT-3005
+
,
+ "SRM Campus",
+
12.8255, 80.0478 ,
+
350 m ,
+
,
+
,
+ ],
+
+ [
+
+
Local 1 — Site
+
L1-S · SIT-3006
+
,
+ "Local 1",
+
19.2183, 72.9781 ,
+
120 m ,
+
,
+
,
+ ],
+];