323 lines
24 KiB
HTML
323 lines
24 KiB
HTML
<!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 1–10 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>
|