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

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