Files
2026-05-09 19:35:10 +00:00

323 lines
24 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Leave Requests — HR Portal</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Inter', sans-serif; background: #FAFAFA; color: #111827; display: flex; min-height: 100vh; }
.sidebar { width: 240px; min-height: 100vh; background: #FFFFFF; border-right: 1px solid #E5E7EB; display: flex; flex-direction: column; position: fixed; top: 0; left: 0; bottom: 0; z-index: 50; }
.sidebar-logo { padding: 20px 20px 16px; display: flex; align-items: center; gap: 10px; font-size: 18px; font-weight: 700; color: #111827; border-bottom: 1px solid #F3F4F6; }
.logo-icon { width: 32px; height: 32px; background: #4F46E5; border-radius: 8px; display: flex; align-items: center; justify-content: center; }
.logo-icon svg { width: 16px; height: 16px; }
.sidebar-nav { flex: 1; padding: 12px 0; overflow-y: auto; }
.nav-item { display: flex; align-items: center; gap: 10px; padding: 9px 16px; margin: 1px 8px; border-radius: 6px; font-size: 14px; font-weight: 500; color: #6B7280; text-decoration: none; cursor: pointer; }
.nav-item:hover { background: #F9FAFB; color: #111827; }
.nav-item.active { background: #EEF2FF; color: #4F46E5; font-weight: 600; }
.nav-item svg { width: 18px; height: 18px; flex-shrink: 0; }
.nav-badge { margin-left: auto; background: #F59E0B; color: #FFF; font-size: 11px; font-weight: 600; padding: 1px 7px; border-radius: 10px; }
.sidebar-footer { padding: 16px; border-top: 1px solid #F3F4F6; }
.user-row { display: flex; align-items: center; gap: 10px; padding: 8px; }
.user-avatar { width: 34px; height: 34px; border-radius: 50%; background: #4F46E5; color: #FFF; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; }
.user-name { font-size: 13px; font-weight: 600; color: #111827; }
.user-role { font-size: 11px; color: #9CA3AF; }
.logout-btn { width: 100%; margin-top: 8px; padding: 7px; border: 1.5px solid #E5E7EB; border-radius: 6px; background: transparent; color: #6B7280; font-size: 13px; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 6px; }
.main-wrapper { margin-left: 240px; flex: 1; display: flex; flex-direction: column; }
.topnav { height: 64px; background: #FFFFFF; border-bottom: 1px solid #E5E7EB; display: flex; align-items: center; gap: 16px; padding: 0 28px; position: sticky; top: 0; z-index: 40; }
.breadcrumb { display: flex; align-items: center; gap: 8px; font-size: 14px; }
.breadcrumb a { color: #9CA3AF; text-decoration: none; }
.breadcrumb svg { width: 14px; height: 14px; color: #D1D5DB; }
.breadcrumb span { color: #111827; font-weight: 500; }
.topnav-actions { margin-left: auto; display: flex; gap: 8px; align-items: center; }
.icon-btn { width: 36px; height: 36px; border-radius: 8px; border: 1.5px solid #E5E7EB; background: #FFFFFF; display: flex; align-items: center; justify-content: center; cursor: pointer; position: relative; }
.icon-btn svg { width: 18px; height: 18px; color: #6B7280; }
.notif-badge { position: absolute; top: -4px; right: -4px; background: #EF4444; color: #FFF; font-size: 10px; font-weight: 700; width: 16px; height: 16px; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 2px solid #FFFFFF; }
.topnav-avatar { width: 36px; height: 36px; border-radius: 50%; background: #4F46E5; color: #FFF; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; cursor: pointer; }
.content { padding: 28px; }
.page-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.page-title { font-size: 22px; font-weight: 700; }
.header-right { display: flex; gap: 8px; }
.btn-outline { padding: 8px 16px; border: 1.5px solid #E5E7EB; border-radius: 6px; background: #FFFFFF; color: #374151; font-size: 14px; font-weight: 500; cursor: pointer; display: flex; align-items: center; gap: 6px; }
.btn-primary { padding: 9px 18px; background: #4F46E5; color: #FFF; border: none; border-radius: 6px; font-size: 14px; font-weight: 600; cursor: pointer; display: flex; align-items: center; gap: 6px; }
.btn-primary svg { width: 16px; height: 16px; }
.tabs { display: flex; gap: 0; border-bottom: 1px solid #E5E7EB; margin-bottom: 20px; }
.tab { padding: 10px 20px; font-size: 14px; font-weight: 500; color: #6B7280; cursor: pointer; border-bottom: 2px solid transparent; white-space: nowrap; transition: all 0.15s; display: flex; align-items: center; gap: 6px; }
.tab:hover { color: #374151; }
.tab.active { color: #4F46E5; border-bottom-color: #4F46E5; font-weight: 600; }
.tab-count { background: #F3F4F6; color: #6B7280; font-size: 11px; font-weight: 600; padding: 1px 7px; border-radius: 10px; }
.tab.active .tab-count { background: #EEF2FF; color: #4F46E5; }
.filter-bar { display: flex; align-items: center; gap: 10px; margin-bottom: 20px; flex-wrap: wrap; }
.filter-input { padding: 8px 13px; background: #FFFFFF; border: 1.5px solid #E5E7EB; border-radius: 6px; font-size: 14px; color: #374151; outline: none; }
.filter-input:focus { border-color: #4F46E5; }
.filter-select { padding: 8px 13px; background: #FFFFFF; border: 1.5px solid #E5E7EB; border-radius: 6px; font-size: 14px; color: #374151; outline: none; appearance: none; cursor: pointer; }
.filter-search { display: flex; align-items: center; gap: 8px; background: #FFFFFF; border: 1.5px solid #E5E7EB; border-radius: 6px; padding: 8px 13px; }
.filter-search svg { width: 15px; height: 15px; color: #9CA3AF; flex-shrink: 0; }
.filter-search input { border: none; background: transparent; font-size: 14px; outline: none; width: 180px; }
.table-card { background: #FFFFFF; border-radius: 10px; border: 1px solid #E5E7EB; box-shadow: 0 1px 3px rgba(0,0,0,0.06); overflow: hidden; }
table { width: 100%; border-collapse: collapse; }
thead { background: #F9FAFB; border-bottom: 1px solid #E5E7EB; }
th { padding: 12px 16px; font-size: 12px; font-weight: 600; color: #6B7280; text-align: left; text-transform: uppercase; letter-spacing: 0.4px; white-space: nowrap; }
tbody tr { border-bottom: 1px solid #F3F4F6; transition: background 0.1s; }
tbody tr:last-child { border-bottom: none; }
tbody tr:hover { background: #FAFAFA; }
td { padding: 14px 16px; font-size: 14px; color: #374151; vertical-align: middle; }
.emp-cell { display: flex; align-items: center; gap: 10px; }
.emp-avatar { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 600; color: #FFF; flex-shrink: 0; }
.emp-name { font-size: 13px; font-weight: 500; color: #111827; }
.emp-dept { font-size: 11px; color: #9CA3AF; }
.badge { padding: 3px 9px; border-radius: 4px; font-size: 11px; font-weight: 600; }
.badge-blue { background: #EFF6FF; color: #3B82F6; }
.badge-yellow { background: #FFFBEB; color: #D97706; }
.badge-green { background: #ECFDF5; color: #059669; }
.badge-red { background: #FEF2F2; color: #DC2626; }
.badge-purple { background: #F5F3FF; color: #7C3AED; }
.badge-orange { background: #FFF7ED; color: #EA580C; }
.badge-pink { background: #FDF2F8; color: #DB2777; }
.status-pending { background: #FFFBEB; color: #D97706; padding: 3px 9px; border-radius: 4px; font-size: 11px; font-weight: 600; }
.status-approved { background: #ECFDF5; color: #059669; padding: 3px 9px; border-radius: 4px; font-size: 11px; font-weight: 600; }
.status-rejected { background: #FEF2F2; color: #DC2626; padding: 3px 9px; border-radius: 4px; font-size: 11px; font-weight: 600; }
.reason-text { max-width: 180px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #6B7280; font-size: 13px; }
.actions-cell { display: flex; gap: 6px; }
.btn-approve { padding: 4px 10px; background: #ECFDF5; color: #10B981; border: 1px solid #BBF7D0; border-radius: 4px; font-size: 11px; font-weight: 600; cursor: pointer; transition: all 0.15s; }
.btn-approve:hover { background: #10B981; color: #FFF; }
.btn-reject { padding: 4px 10px; background: #FEF2F2; color: #EF4444; border: 1px solid #FECACA; border-radius: 4px; font-size: 11px; font-weight: 600; cursor: pointer; transition: all 0.15s; }
.btn-reject:hover { background: #EF4444; color: #FFF; }
.btn-view { padding: 4px 10px; background: #F9FAFB; color: #6B7280; border: 1px solid #E5E7EB; border-radius: 4px; font-size: 11px; font-weight: 500; cursor: pointer; }
.pagination { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; border-top: 1px solid #F3F4F6; }
.page-info { font-size: 13px; color: #6B7280; }
.page-buttons { display: flex; gap: 4px; }
.page-btn { width: 30px; height: 30px; border-radius: 6px; border: 1.5px solid #E5E7EB; background: #FFFFFF; font-size: 13px; color: #374151; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.page-btn.active { background: #4F46E5; border-color: #4F46E5; color: #FFF; font-weight: 600; }
</style>
</head>
<body>
<aside class="sidebar">
<div class="sidebar-logo"><div class="logo-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#FFFFFF" stroke-width="2"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg></div>HR Portal</div>
<nav class="sidebar-nav">
<a href="04-admin-dashboard.html" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg>Dashboard</a>
<a href="05-employee-directory.html" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>Employees</a>
<a href="08-department-management.html" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>Departments</a>
<a href="09-leave-requests.html" class="nav-item active"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg>Leave Management<span class="nav-badge">7</span></a>
<a href="11-attendance.html" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>Attendance</a>
<a href="12-payroll-dashboard.html" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="5" width="20" height="14" rx="2"/><line x1="2" y1="10" x2="22" y2="10"/></svg>Payroll</a>
<a href="13-recruitment.html" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"/><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"/></svg>Recruitment</a>
<a href="14-expense-claims.html" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>Expense Claims</a>
<a href="15-performance-reviews.html" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg>Performance</a>
<a href="16-reports.html" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21.21 15.89A10 10 0 1 1 8 2.83"/><path d="M22 12A10 10 0 0 0 12 2v10z"/></svg>Reports</a>
<a href="20-org-chart.html" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="1" width="6" height="5" rx="1"/><rect x="1" y="14" width="6" height="5" rx="1"/><rect x="17" y="14" width="6" height="5" rx="1"/><path d="M4 14v-4a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v4"/><line x1="12" y1="6" x2="12" y2="9"/></svg>Org Chart</a>
<a href="#" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg>Announcements</a>
<a href="17-settings.html" class="nav-item"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="3"/><path d="M19.07 4.93l-1.41 1.41M4.93 4.93l1.41 1.41M12 2v2M12 20v2M2 12h2M20 12h2M17.66 17.66l-1.41-1.41M6.34 17.66l1.41-1.41"/></svg>Settings</a>
</nav>
<div class="sidebar-footer">
<div class="user-row"><div class="user-avatar">SC</div><div><div class="user-name">Sarah Chen</div><div class="user-role">HR Administrator</div></div></div>
<button class="logout-btn">Sign Out</button>
</div>
</aside>
<div class="main-wrapper">
<header class="topnav">
<div class="breadcrumb">
<a href="04-admin-dashboard.html">Home</a>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="9 18 15 12 9 6"/></svg>
<span>Leave Management</span>
</div>
<div class="topnav-actions">
<div class="icon-btn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 17H2a3 3 0 0 0 3-3V9a7 7 0 0 1 14 0v5a3 3 0 0 0 3 3zm-8.27 4a2 2 0 0 1-3.46 0"/></svg><span class="notif-badge">3</span></div>
<div class="topnav-avatar">SC</div>
</div>
</header>
<main class="content">
<div class="page-header">
<div class="page-title">Leave Requests</div>
<div class="header-right">
<a href="10-leave-types.html" class="btn-outline">
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="3"/><path d="M19.07 4.93l-1.41 1.41M4.93 4.93l1.41 1.41M12 2v2M12 20v2M2 12h2M20 12h2"/></svg>
Leave Types
</a>
<button class="btn-outline">
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
Export
</button>
</div>
</div>
<div class="tabs">
<a href="#" class="tab">All Requests <span class="tab-count">52</span></a>
<a href="#" class="tab active">Pending <span class="tab-count">7</span></a>
<a href="#" class="tab">Approved <span class="tab-count">38</span></a>
<a href="#" class="tab">Rejected <span class="tab-count">7</span></a>
</div>
<div class="filter-bar">
<div class="filter-search">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
<input type="text" placeholder="Search employee...">
</div>
<input class="filter-input" type="date" value="2026-05-01">
<input class="filter-input" type="date" value="2026-05-31">
<select class="filter-select">
<option>All Departments</option>
<option>Engineering</option>
<option>HR</option>
<option>Finance</option>
<option>Marketing</option>
</select>
<select class="filter-select">
<option>All Leave Types</option>
<option>Annual Leave</option>
<option>Sick Leave</option>
<option>Casual Leave</option>
<option>Maternity Leave</option>
</select>
</div>
<div class="table-card">
<table>
<thead>
<tr>
<th>Employee</th>
<th>Leave Type</th>
<th>From</th>
<th>To</th>
<th>Days</th>
<th>Reason</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#4F46E5;">MR</div><div><div class="emp-name">Michael Rodriguez</div><div class="emp-dept">Engineering</div></div></div></td>
<td><span class="badge badge-blue">Annual Leave</span></td>
<td>May 12, 2026</td>
<td>May 15, 2026</td>
<td>4</td>
<td><span class="reason-text">Family vacation, planned in advance</span></td>
<td><span class="status-pending">Pending</span></td>
<td><div class="actions-cell"><button class="btn-approve">Approve</button><button class="btn-reject">Reject</button></div></td>
</tr>
<tr>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#10B981;">PP</div><div><div class="emp-name">Priya Patel</div><div class="emp-dept">Finance</div></div></div></td>
<td><span class="badge badge-orange">Sick Leave</span></td>
<td>May 13, 2026</td>
<td>May 13, 2026</td>
<td>1</td>
<td><span class="reason-text">Fever and cold, doctor's appointment</span></td>
<td><span class="status-pending">Pending</span></td>
<td><div class="actions-cell"><button class="btn-approve">Approve</button><button class="btn-reject">Reject</button></div></td>
</tr>
<tr>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#F59E0B;">JK</div><div><div class="emp-name">James Kim</div><div class="emp-dept">Engineering</div></div></div></td>
<td><span class="badge badge-blue">Annual Leave</span></td>
<td>May 19, 2026</td>
<td>May 23, 2026</td>
<td>5</td>
<td><span class="reason-text">Wedding anniversary trip abroad</span></td>
<td><span class="status-pending">Pending</span></td>
<td><div class="actions-cell"><button class="btn-approve">Approve</button><button class="btn-reject">Reject</button></div></td>
</tr>
<tr>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#EF4444;">AL</div><div><div class="emp-name">Aisha Larsson</div><div class="emp-dept">Marketing</div></div></div></td>
<td><span class="badge badge-purple">Casual Leave</span></td>
<td>May 26, 2026</td>
<td>May 28, 2026</td>
<td>3</td>
<td><span class="reason-text">Personal errands and home renovation</span></td>
<td><span class="status-pending">Pending</span></td>
<td><div class="actions-cell"><button class="btn-approve">Approve</button><button class="btn-reject">Reject</button></div></td>
</tr>
<tr>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#3B82F6;">RS</div><div><div class="emp-name">Ravi Shankar</div><div class="emp-dept">Operations</div></div></div></td>
<td><span class="badge badge-blue">Annual Leave</span></td>
<td>Jun 2, 2026</td>
<td>Jun 6, 2026</td>
<td>5</td>
<td><span class="reason-text">Family visit and religious festival</span></td>
<td><span class="status-approved">Approved</span></td>
<td><div class="actions-cell"><button class="btn-view">View</button></div></td>
</tr>
<tr>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#EC4899;">DT</div><div><div class="emp-name">Diana Torres</div><div class="emp-dept">Sales</div></div></div></td>
<td><span class="badge badge-orange">Sick Leave</span></td>
<td>May 7, 2026</td>
<td>May 8, 2026</td>
<td>2</td>
<td><span class="reason-text">Migraine, needed bed rest</span></td>
<td><span class="status-approved">Approved</span></td>
<td><div class="actions-cell"><button class="btn-view">View</button></div></td>
</tr>
<tr>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#6366F1;">NW</div><div><div class="emp-name">Noah Williams</div><div class="emp-dept">Engineering</div></div></div></td>
<td><span class="badge badge-pink">Bereavement</span></td>
<td>Apr 28, 2026</td>
<td>Apr 30, 2026</td>
<td>3</td>
<td><span class="reason-text">Loss of grandparent, funeral attendance</span></td>
<td><span class="status-approved">Approved</span></td>
<td><div class="actions-cell"><button class="btn-view">View</button></div></td>
</tr>
<tr>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#059669;">LO</div><div><div class="emp-name">Lucas Oliveira</div><div class="emp-dept">Operations</div></div></div></td>
<td><span class="badge badge-blue">Annual Leave</span></td>
<td>Apr 14, 2026</td>
<td>Apr 18, 2026</td>
<td>5</td>
<td><span class="reason-text">Planned vacation to Mexico</span></td>
<td><span class="status-rejected">Rejected</span></td>
<td><div class="actions-cell"><button class="btn-view">View</button></div></td>
</tr>
<tr>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#D97706;">FA</div><div><div class="emp-name">Fatima Al-Rashid</div><div class="emp-dept">Finance</div></div></div></td>
<td><span class="badge badge-purple">Casual Leave</span></td>
<td>May 9, 2026</td>
<td>May 9, 2026</td>
<td>1</td>
<td><span class="reason-text">Urgent bank errand</span></td>
<td><span class="status-pending">Pending</span></td>
<td><div class="actions-cell"><button class="btn-approve">Approve</button><button class="btn-reject">Reject</button></div></td>
</tr>
<tr>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#7C3AED;">KL</div><div><div class="emp-name">Kevin Liu</div><div class="emp-dept">Marketing</div></div></div></td>
<td><span class="badge badge-orange">Sick Leave</span></td>
<td>May 5, 2026</td>
<td>May 6, 2026</td>
<td>2</td>
<td><span class="reason-text">Food poisoning, doctor advised rest</span></td>
<td><span class="status-approved">Approved</span></td>
<td><div class="actions-cell"><button class="btn-view">View</button></div></td>
</tr>
</tbody>
</table>
<div class="pagination">
<span class="page-info">Showing 110 of 52 requests</span>
<div class="page-buttons">
<button class="page-btn"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="15 18 9 12 15 6"/></svg></button>
<button class="page-btn active">1</button>
<button class="page-btn">2</button>
<button class="page-btn">3</button>
<button class="page-btn">4</button>
<button class="page-btn">5</button>
<button class="page-btn"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="9 18 15 12 9 6"/></svg></button>
</div>
</div>
</div>
</main>
</div>
</body>
</html>