Files
hr-portal-v5-designs/designs/05-employee-directory.html
T
2026-05-09 19:35:10 +00:00

313 lines
22 KiB
HTML
Raw 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>Employees — 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; flex-shrink: 0; }
.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; transition: all 0.15s; }
.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; border-radius: 8px; cursor: pointer; }
.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; font-weight: 500; 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 a:hover { color: #6B7280; }
.breadcrumb svg { width: 14px; height: 14px; color: #D1D5DB; }
.breadcrumb span { color: #111827; font-weight: 500; }
.topnav-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.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; color: #111827; }
.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; transition: background 0.15s; }
.btn-primary:hover { background: #4338CA; }
.btn-primary svg { width: 16px; height: 16px; }
.stats-mini { display: flex; gap: 24px; margin-bottom: 20px; }
.stat-mini-item { display: flex; align-items: center; gap: 8px; }
.stat-mini-dot { width: 8px; height: 8px; border-radius: 50%; }
.stat-mini-label { font-size: 13px; color: #6B7280; }
.stat-mini-value { font-size: 14px; font-weight: 600; color: #111827; }
.filter-bar { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
.filter-search { flex: 1; max-width: 300px; display: flex; align-items: center; gap: 8px; background: #FFFFFF; border: 1.5px solid #E5E7EB; border-radius: 8px; padding: 9px 14px; }
.filter-search svg { width: 16px; height: 16px; color: #9CA3AF; flex-shrink: 0; }
.filter-search input { border: none; background: transparent; font-size: 14px; color: #111827; outline: none; width: 100%; }
.filter-search input::placeholder { color: #9CA3AF; }
.filter-select { padding: 9px 14px; background: #FFFFFF; border: 1.5px solid #E5E7EB; border-radius: 8px; font-size: 14px; color: #374151; outline: none; cursor: pointer; appearance: none; min-width: 140px; }
.filter-btn { padding: 9px 14px; background: #FFFFFF; border: 1.5px solid #E5E7EB; border-radius: 8px; font-size: 14px; color: #374151; cursor: pointer; display: flex; align-items: center; gap: 6px; }
.filter-btn svg { width: 16px; height: 16px; color: #9CA3AF; }
.filter-btn.active { border-color: #4F46E5; color: #4F46E5; background: #EEF2FF; }
.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.5px; white-space: nowrap; }
th input[type="checkbox"] { accent-color: #4F46E5; }
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: 12px; }
.emp-avatar { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; color: #FFF; flex-shrink: 0; }
.emp-name { font-size: 14px; font-weight: 500; color: #111827; }
.emp-email { font-size: 12px; color: #9CA3AF; }
.badge { padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 600; }
.badge-green { background: #ECFDF5; color: #10B981; }
.badge-gray { background: #F3F4F6; color: #6B7280; }
.badge-blue { background: #EFF6FF; color: #3B82F6; }
.action-btn { padding: 5px 12px; border-radius: 5px; font-size: 12px; font-weight: 500; cursor: pointer; text-decoration: none; transition: all 0.15s; }
.action-btn-primary { background: #EEF2FF; color: #4F46E5; border: 1px solid #C7D2FE; }
.action-btn-primary:hover { background: #4F46E5; color: #FFF; }
.action-btn-secondary { background: #F9FAFB; color: #6B7280; border: 1px solid #E5E7EB; }
.action-btn-secondary:hover { background: #F3F4F6; }
.actions-cell { display: flex; gap: 6px; }
.pagination { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; border-top: 1px solid #F3F4F6; background: #FFFFFF; }
.page-info { font-size: 13px; color: #6B7280; }
.page-buttons { display: flex; gap: 4px; }
.page-btn { width: 32px; height: 32px; 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; font-family: 'Inter', sans-serif; transition: all 0.15s; }
.page-btn:hover { border-color: #4F46E5; color: #4F46E5; }
.page-btn.active { background: #4F46E5; border-color: #4F46E5; color: #FFF; font-weight: 600; }
.page-btn svg { width: 14px; height: 14px; }
</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 active"><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"><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>Employees</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>
<div class="page-title">Employees</div>
<div class="stats-mini" style="margin-top:6px;margin-bottom:0;">
<div class="stat-mini-item">
<div class="stat-mini-dot" style="background:#4F46E5;"></div>
<span class="stat-mini-label">Total:</span>
<span class="stat-mini-value">248</span>
</div>
<div class="stat-mini-item">
<div class="stat-mini-dot" style="background:#F59E0B;"></div>
<span class="stat-mini-label">On Leave:</span>
<span class="stat-mini-value">12</span>
</div>
<div class="stat-mini-item">
<div class="stat-mini-dot" style="background:#10B981;"></div>
<span class="stat-mini-label">New This Month:</span>
<span class="stat-mini-value">5</span>
</div>
</div>
</div>
<a href="07-add-employee.html" class="btn-primary">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
Add Employee
</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 by name, email, department...">
</div>
<select class="filter-select">
<option>All Departments</option>
<option>Engineering</option>
<option>HR</option>
<option>Finance</option>
<option>Marketing</option>
<option>Operations</option>
<option>Sales</option>
</select>
<select class="filter-select">
<option>All Status</option>
<option>Active</option>
<option>Inactive</option>
<option>On Leave</option>
</select>
<button class="filter-btn">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/></svg>
Filters
</button>
<button class="filter-btn">
<svg 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 class="table-card">
<table>
<thead>
<tr>
<th><input type="checkbox"></th>
<th>Employee</th>
<th>Department</th>
<th>Designation</th>
<th>Join Date</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox"></td>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#4F46E5;">SC</div><div><div class="emp-name">Sarah Chen</div><div class="emp-email">sarah.chen@techflow.com</div></div></div></td>
<td>HR</td>
<td>HR Director</td>
<td>Jan 15, 2022</td>
<td><span class="badge badge-green">Active</span></td>
<td><div class="actions-cell"><a href="06-employee-profile.html" class="action-btn action-btn-primary">View</a><button class="action-btn action-btn-secondary">Edit</button></div></td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#10B981;">MR</div><div><div class="emp-name">Michael Rodriguez</div><div class="emp-email">m.rodriguez@techflow.com</div></div></div></td>
<td>Engineering</td>
<td>Senior Engineer</td>
<td>Mar 8, 2021</td>
<td><span class="badge badge-green">Active</span></td>
<td><div class="actions-cell"><a href="06-employee-profile.html" class="action-btn action-btn-primary">View</a><button class="action-btn action-btn-secondary">Edit</button></div></td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#F59E0B;">PP</div><div><div class="emp-name">Priya Patel</div><div class="emp-email">priya.patel@techflow.com</div></div></div></td>
<td>Finance</td>
<td>Financial Analyst</td>
<td>Jun 22, 2022</td>
<td><span class="badge" style="background:#FEF3C7;color:#D97706;">On Leave</span></td>
<td><div class="actions-cell"><a href="06-employee-profile.html" class="action-btn action-btn-primary">View</a><button class="action-btn action-btn-secondary">Edit</button></div></td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#EF4444;">JK</div><div><div class="emp-name">James Kim</div><div class="emp-email">james.kim@techflow.com</div></div></div></td>
<td>Engineering</td>
<td>Frontend Developer</td>
<td>Sep 5, 2023</td>
<td><span class="badge badge-green">Active</span></td>
<td><div class="actions-cell"><a href="06-employee-profile.html" class="action-btn action-btn-primary">View</a><button class="action-btn action-btn-secondary">Edit</button></div></td>
</tr>
<tr>
<td><input type="checkbox"></td>
<td><div class="emp-cell"><div class="emp-avatar" style="background:#7C3AED;">AL</div><div><div class="emp-name">Aisha Larsson</div><div class="emp-email">a.larsson@techflow.com</div></div></div></td>
<td>Marketing</td>
<td>Marketing Manager</td>
<td>Feb 14, 2023</td>
<td><span class="badge badge-green">Active</span></td>
<td><div class="actions-cell"><a href="06-employee-profile.html" class="action-btn action-btn-primary">View</a><button class="action-btn action-btn-secondary">Edit</button></div></td>
</tr>
<tr>
<td><input type="checkbox"></td>
<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-email">ravi.shankar@techflow.com</div></div></div></td>
<td>Operations</td>
<td>Operations Lead</td>
<td>Nov 12, 2020</td>
<td><span class="badge badge-green">Active</span></td>
<td><div class="actions-cell"><a href="06-employee-profile.html" class="action-btn action-btn-primary">View</a><button class="action-btn action-btn-secondary">Edit</button></div></td>
</tr>
<tr>
<td><input type="checkbox"></td>
<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-email">d.torres@techflow.com</div></div></div></td>
<td>Sales</td>
<td>Sales Representative</td>
<td>Apr 3, 2024</td>
<td><span class="badge badge-green">Active</span></td>
<td><div class="actions-cell"><a href="06-employee-profile.html" class="action-btn action-btn-primary">View</a><button class="action-btn action-btn-secondary">Edit</button></div></td>
</tr>
<tr>
<td><input type="checkbox"></td>
<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-email">n.williams@techflow.com</div></div></div></td>
<td>Engineering</td>
<td>DevOps Engineer</td>
<td>Jul 19, 2022</td>
<td><span class="badge badge-gray">Inactive</span></td>
<td><div class="actions-cell"><a href="06-employee-profile.html" class="action-btn action-btn-primary">View</a><button class="action-btn action-btn-secondary">Edit</button></div></td>
</tr>
</tbody>
</table>
<div class="pagination">
<span class="page-info">Showing 18 of 248 employees</span>
<div class="page-buttons">
<button class="page-btn"><svg 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">...</button>
<button class="page-btn">31</button>
<button class="page-btn"><svg 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>