table constant data is added and Compliance Safety completed
This commit is contained in:
@@ -16,289 +16,13 @@ import StatCard from "@/components/common/dashStatCard";
|
||||
import Table from "@/components/common/dataTable";
|
||||
import NavigationTabs from '@/components/common/tabs';
|
||||
import { helpdeskTtabs } from '@/constants/constant';
|
||||
import { helpdeskheaders, helpdeskrows } from '@/constants/tabledata';
|
||||
|
||||
const StatusBadge = ({
|
||||
text,
|
||||
color,
|
||||
}: {
|
||||
text: string;
|
||||
color: string;
|
||||
}) => (
|
||||
<span
|
||||
className={`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wider whitespace-nowrap ${color}`}
|
||||
>
|
||||
<span className="h-1.5 w-1.5 rounded-full bg-current" />
|
||||
{text}
|
||||
</span>
|
||||
);
|
||||
|
||||
const ActionButtons = ({ active }: { active: boolean }) => (
|
||||
<div className="flex justify-center items-center gap-1">
|
||||
<Button className="flex h-7 w-7 items-center justify-center rounded-md border border-slate-700/60 text-slate-400 hover:bg-slate-800 hover:text-white transition">
|
||||
<Pencil size={13} />
|
||||
</Button>
|
||||
|
||||
<Button className="flex h-7 w-7 items-center justify-center rounded-md border border-slate-700/60 text-slate-400 hover:bg-slate-800 hover:text-white transition">
|
||||
<List size={13} />
|
||||
</Button>
|
||||
|
||||
<Button className="flex h-7 w-7 items-center justify-center rounded-md border border-slate-700/60 text-slate-400 hover:bg-slate-800 hover:text-white transition">
|
||||
<ShieldCheck size={13} />
|
||||
</Button>
|
||||
|
||||
<Button className="flex h-7 w-7 items-center justify-center rounded-md border border-slate-700/60 text-slate-400 hover:bg-slate-800 hover:text-white transition">
|
||||
<QrCode size={13} />
|
||||
</Button>
|
||||
|
||||
<Button
|
||||
className={`flex h-7 w-7 items-center justify-center rounded-md border border-slate-700/60 hover:bg-slate-800 transition ${
|
||||
active ? "text-red-400" : "text-emerald-400"
|
||||
}`}
|
||||
>
|
||||
<Power size={13} />
|
||||
</Button>
|
||||
</div>
|
||||
);
|
||||
|
||||
const headers = [
|
||||
"",
|
||||
"Block",
|
||||
"Floor",
|
||||
"Zone",
|
||||
"Department",
|
||||
"Location",
|
||||
"Window",
|
||||
"TAT",
|
||||
"Sched.",
|
||||
"Approval",
|
||||
"Status",
|
||||
"Actions",
|
||||
];
|
||||
|
||||
const checkbox = (
|
||||
<input
|
||||
type="checkbox"
|
||||
className="h-4 w-4 appearance-none rounded border border-slate-600 bg-slate-700 checked:bg-slate-500 checked:border-slate-500 cursor-pointer"
|
||||
/>
|
||||
);
|
||||
|
||||
const rows = [
|
||||
[
|
||||
checkbox,
|
||||
"Block 2",
|
||||
"1",
|
||||
"Z2",
|
||||
"HVAC",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Parking P1</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">01:56–18:00</span>,
|
||||
"60m",
|
||||
"4",
|
||||
<span className="text-emerald-400 font-semibold whitespace-nowrap">✓ Yes</span>,
|
||||
<StatusBadge
|
||||
text="Inactive"
|
||||
color="bg-slate-700/50 text-slate-400"
|
||||
/>,
|
||||
<ActionButtons active={false} />,
|
||||
],
|
||||
|
||||
[
|
||||
checkbox,
|
||||
"Block 1",
|
||||
"2",
|
||||
"Z1",
|
||||
"Inspection work",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Cafeteria</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">01:56–23:59</span>,
|
||||
"360m",
|
||||
"6",
|
||||
<span className="text-slate-500">—</span>,
|
||||
<StatusBadge
|
||||
text="Active"
|
||||
color="bg-emerald-500/15 text-emerald-400"
|
||||
/>,
|
||||
<ActionButtons active />,
|
||||
],
|
||||
|
||||
[
|
||||
checkbox,
|
||||
"Block 2",
|
||||
"G",
|
||||
"N",
|
||||
"Inspection work",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Main lobby</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">08:00–23:59</span>,
|
||||
"360m",
|
||||
"4",
|
||||
<span className="text-emerald-400 font-semibold whitespace-nowrap">✓ Yes</span>,
|
||||
<StatusBadge
|
||||
text="Active"
|
||||
color="bg-emerald-500/15 text-emerald-400"
|
||||
/>,
|
||||
<ActionButtons active />,
|
||||
],
|
||||
|
||||
[
|
||||
checkbox,
|
||||
"Block 1",
|
||||
"2",
|
||||
"Z2",
|
||||
"Electrical",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Reception</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">08:00–18:00</span>,
|
||||
"360m",
|
||||
"4",
|
||||
<span className="text-slate-500">—</span>,
|
||||
<StatusBadge
|
||||
text="Inactive"
|
||||
color="bg-slate-700/50 text-slate-400"
|
||||
/>,
|
||||
<ActionButtons active={false} />,
|
||||
],
|
||||
|
||||
[
|
||||
checkbox,
|
||||
"Block 2",
|
||||
"3",
|
||||
"Z1",
|
||||
"Housekeeping",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Cafeteria</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">08:00–18:00</span>,
|
||||
"20m",
|
||||
"8",
|
||||
<span className="text-emerald-400 font-semibold whitespace-nowrap">✓ Yes</span>,
|
||||
<StatusBadge
|
||||
text="Active"
|
||||
color="bg-emerald-500/15 text-emerald-400"
|
||||
/>,
|
||||
<ActionButtons active />,
|
||||
],
|
||||
|
||||
[
|
||||
checkbox,
|
||||
"Block 1",
|
||||
"3",
|
||||
"Z1",
|
||||
"Electrical",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Food court</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">08:00–17:30</span>,
|
||||
"20m",
|
||||
"8",
|
||||
<span className="text-slate-500">—</span>,
|
||||
<StatusBadge
|
||||
text="Active"
|
||||
color="bg-emerald-500/15 text-emerald-400"
|
||||
/>,
|
||||
<ActionButtons active />,
|
||||
],
|
||||
|
||||
[
|
||||
checkbox,
|
||||
"Block 2",
|
||||
"1",
|
||||
"Z2",
|
||||
"HVAC",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Parking P1</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">01:56–18:00</span>,
|
||||
"60m",
|
||||
"4",
|
||||
<span className="text-emerald-400 font-semibold whitespace-nowrap">✓ Yes</span>,
|
||||
<StatusBadge
|
||||
text="Inactive"
|
||||
color="bg-slate-700/50 text-slate-400"
|
||||
/>,
|
||||
<ActionButtons active={false} />,
|
||||
],
|
||||
|
||||
[
|
||||
checkbox,
|
||||
"Block 1",
|
||||
"2",
|
||||
"Z1",
|
||||
"Inspection work",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Cafeteria</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">01:56–23:59</span>,
|
||||
"360m",
|
||||
"6",
|
||||
<span className="text-slate-500">—</span>,
|
||||
<StatusBadge
|
||||
text="Active"
|
||||
color="bg-emerald-500/15 text-emerald-400"
|
||||
/>,
|
||||
<ActionButtons active />,
|
||||
],
|
||||
|
||||
[
|
||||
checkbox,
|
||||
"Block 2",
|
||||
"G",
|
||||
"N",
|
||||
"Inspection work",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Main lobby</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">08:00–23:59</span>,
|
||||
"360m",
|
||||
"4",
|
||||
<span className="text-emerald-400 font-semibold whitespace-nowrap">✓ Yes</span>,
|
||||
<StatusBadge
|
||||
text="Active"
|
||||
color="bg-emerald-500/15 text-emerald-400"
|
||||
/>,
|
||||
<ActionButtons active />,
|
||||
],
|
||||
|
||||
[
|
||||
checkbox,
|
||||
"Block 1",
|
||||
"2",
|
||||
"Z2",
|
||||
"Electrical",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Reception</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">08:00–18:00</span>,
|
||||
"360m",
|
||||
"4",
|
||||
<span className="text-slate-500">—</span>,
|
||||
<StatusBadge
|
||||
text="Inactive"
|
||||
color="bg-slate-700/50 text-slate-400"
|
||||
/>,
|
||||
<ActionButtons active={false} />,
|
||||
],
|
||||
|
||||
[
|
||||
checkbox,
|
||||
"Block 2",
|
||||
"3",
|
||||
"Z1",
|
||||
"Housekeeping",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Cafeteria</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">08:00–18:00</span>,
|
||||
"20m",
|
||||
"8",
|
||||
<span className="text-emerald-400 font-semibold whitespace-nowrap">✓ Yes</span>,
|
||||
<StatusBadge
|
||||
text="Active"
|
||||
color="bg-emerald-500/15 text-emerald-400"
|
||||
/>,
|
||||
<ActionButtons active />,
|
||||
],
|
||||
|
||||
[
|
||||
checkbox,
|
||||
"Block 1",
|
||||
"3",
|
||||
"Z1",
|
||||
"Electrical",
|
||||
<span className="font-semibold text-slate-100 whitespace-nowrap">Food court</span>,
|
||||
<span className="font-mono text-xs whitespace-nowrap">08:00–17:30</span>,
|
||||
"20m",
|
||||
"8",
|
||||
<span className="text-slate-500">—</span>,
|
||||
<StatusBadge
|
||||
text="Active"
|
||||
color="bg-emerald-500/15 text-emerald-400"
|
||||
/>,
|
||||
<ActionButtons active />,
|
||||
],
|
||||
];
|
||||
|
||||
export default function HelpDeskPortal() {
|
||||
const [activeTab, setActiveTab] = useState<string>('Location');
|
||||
@@ -425,7 +149,7 @@ export default function HelpDeskPortal() {
|
||||
|
||||
{/* --- TABLE CONTAINER --- */}
|
||||
<div className="mt-4 overflow-x-auto">
|
||||
<Table headers={headers} rows={rows} />
|
||||
<Table headers={helpdeskheaders} rows={helpdeskrows} />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user