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

366 lines
21 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>Add Employee — 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; }
.btn-cancel { padding: 8px 18px; border: 1.5px solid #E5E7EB; border-radius: 6px; background: #FFFFFF; color: #374151; font-size: 14px; font-weight: 500; cursor: pointer; text-decoration: none; }
.btn-save { padding: 8px 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-save:hover { background: #4338CA; }
.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; max-width: 900px; }
.page-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px; }
.page-title { font-size: 22px; font-weight: 700; color: #111827; }
.page-subtitle { font-size: 14px; color: #6B7280; margin-top: 2px; }
.form-actions { display: flex; gap: 8px; }
.form-section { background: #FFFFFF; border-radius: 10px; border: 1px solid #E5E7EB; box-shadow: 0 1px 3px rgba(0,0,0,0.06); overflow: hidden; margin-bottom: 20px; }
.section-header { padding: 18px 24px; border-bottom: 1px solid #F3F4F6; background: #FAFAFA; display: flex; align-items: center; gap: 10px; }
.section-num { width: 24px; height: 24px; background: #4F46E5; border-radius: 50%; color: #FFF; font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.section-title { font-size: 14px; font-weight: 600; color: #111827; }
.section-subtitle { font-size: 12px; color: #9CA3AF; }
.section-body { padding: 24px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.form-grid.three { grid-template-columns: 1fr 1fr 1fr; }
.form-group {}
.form-label { display: block; font-size: 13px; font-weight: 500; color: #374151; margin-bottom: 6px; }
.form-label .req { color: #EF4444; }
.form-input, .form-select, .form-textarea {
width: 100%; padding: 9px 13px;
border: 1.5px solid #E5E7EB; border-radius: 6px;
font-size: 14px; font-family: 'Inter', sans-serif; color: #111827;
background: #FFFFFF; outline: none; transition: border-color 0.15s;
appearance: none;
}
.form-input:focus, .form-select:focus, .form-textarea:focus { border-color: #4F46E5; box-shadow: 0 0 0 3px rgba(79,70,229,0.08); }
.form-input::placeholder, .form-textarea::placeholder { color: #9CA3AF; }
.form-textarea { resize: vertical; min-height: 80px; }
.form-select-wrap { position: relative; }
.form-select-wrap::after { content: ''; position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid #9CA3AF; pointer-events: none; }
.form-hint { font-size: 12px; color: #9CA3AF; margin-top: 4px; }
.col-span-2 { grid-column: 1 / -1; }
/* AVATAR UPLOAD */
.avatar-upload { display: flex; align-items: center; gap: 20px; margin-bottom: 0; grid-column: 1 / -1; }
.avatar-preview { width: 72px; height: 72px; border-radius: 50%; background: #E5E7EB; display: flex; align-items: center; justify-content: center; font-size: 24px; color: #9CA3AF; flex-shrink: 0; }
.avatar-upload-btn { padding: 8px 16px; border: 1.5px solid #E5E7EB; border-radius: 6px; background: #FFFFFF; color: #374151; font-size: 13px; cursor: pointer; }
.avatar-upload-hint { font-size: 12px; color: #9CA3AF; margin-top: 4px; }
/* CHECKBOX TOGGLE */
.checkbox-row { display: flex; align-items: center; gap: 10px; padding: 4px 0; }
.checkbox-row input[type="checkbox"] { width: 16px; height: 16px; accent-color: #4F46E5; cursor: pointer; }
.checkbox-row label { font-size: 14px; color: #374151; cursor: pointer; }
.divider { height: 1px; background: #F3F4F6; margin: 4px 0; }
/* BOTTOM SAVE BAR */
.save-bar {
position: fixed; bottom: 0; left: 240px; right: 0;
background: #FFFFFF; border-top: 1px solid #E5E7EB;
padding: 16px 28px; display: flex; align-items: center; justify-content: space-between;
z-index: 30;
}
.save-bar-note { font-size: 13px; color: #9CA3AF; }
.save-bar-actions { display: flex; gap: 10px; }
</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>
<a href="05-employee-directory.html">Employees</a>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="9 18 15 12 9 6"/></svg>
<span>Add New Employee</span>
</div>
<div class="topnav-actions">
<a href="05-employee-directory.html" class="btn-cancel">Cancel</a>
<button class="btn-save">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="20 6 9 17 4 12"/></svg>
Save Employee
</button>
<div class="topnav-avatar">SC</div>
</div>
</header>
<main class="content" style="padding-bottom:80px;">
<div class="page-header">
<div>
<div class="page-title">Add New Employee</div>
<div class="page-subtitle">Fill in the details below to create a new employee record.</div>
</div>
</div>
<!-- PERSONAL INFORMATION -->
<div class="form-section">
<div class="section-header">
<div class="section-num">1</div>
<div>
<div class="section-title">Personal Information</div>
<div class="section-subtitle">Basic personal details of the employee</div>
</div>
</div>
<div class="section-body">
<div class="form-grid">
<div class="form-group avatar-upload">
<div class="avatar-preview">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="8" r="4"/><path d="M4 20c0-4 3.58-7 8-7s8 3 8 7"/></svg>
</div>
<div>
<button class="avatar-upload-btn">Upload Photo</button>
<div class="avatar-upload-hint">PNG or JPG, max 2MB. Recommended 200x200px.</div>
</div>
</div>
<div class="form-group">
<label class="form-label" for="fname">First Name <span class="req">*</span></label>
<input class="form-input" type="text" id="fname" placeholder="John">
</div>
<div class="form-group">
<label class="form-label" for="lname">Last Name <span class="req">*</span></label>
<input class="form-input" type="text" id="lname" placeholder="Smith">
</div>
<div class="form-group">
<label class="form-label" for="email">Work Email <span class="req">*</span></label>
<input class="form-input" type="email" id="email" placeholder="john.smith@company.com">
</div>
<div class="form-group">
<label class="form-label" for="phone">Phone Number</label>
<input class="form-input" type="tel" id="phone" placeholder="+1 (555) 000-0000">
</div>
<div class="form-group">
<label class="form-label" for="dob">Date of Birth</label>
<input class="form-input" type="date" id="dob" value="1992-06-15">
</div>
<div class="form-group">
<label class="form-label" for="gender">Gender</label>
<div class="form-select-wrap">
<select class="form-select" id="gender">
<option value="">Select gender</option>
<option>Male</option>
<option>Female</option>
<option>Non-binary</option>
<option>Prefer not to say</option>
</select>
</div>
</div>
<div class="form-group col-span-2">
<label class="form-label" for="address">Home Address</label>
<textarea class="form-textarea" id="address" placeholder="Street address, City, State, ZIP Code"></textarea>
</div>
</div>
</div>
</div>
<!-- EMPLOYMENT DETAILS -->
<div class="form-section">
<div class="section-header">
<div class="section-num">2</div>
<div>
<div class="section-title">Employment Details</div>
<div class="section-subtitle">Role, department, and reporting structure</div>
</div>
</div>
<div class="section-body">
<div class="form-grid">
<div class="form-group">
<label class="form-label" for="dept">Department <span class="req">*</span></label>
<div class="form-select-wrap">
<select class="form-select" id="dept">
<option value="">Select department</option>
<option>Engineering</option>
<option>HR</option>
<option>Finance</option>
<option>Marketing</option>
<option>Operations</option>
<option>Sales</option>
</select>
</div>
</div>
<div class="form-group">
<label class="form-label" for="designation">Designation / Job Title <span class="req">*</span></label>
<input class="form-input" type="text" id="designation" placeholder="e.g. Software Engineer">
</div>
<div class="form-group">
<label class="form-label" for="emp-type">Employment Type <span class="req">*</span></label>
<div class="form-select-wrap">
<select class="form-select" id="emp-type">
<option>Full-time</option>
<option>Part-time</option>
<option>Contract</option>
<option>Intern</option>
</select>
</div>
</div>
<div class="form-group">
<label class="form-label" for="doj">Date of Joining <span class="req">*</span></label>
<input class="form-input" type="date" id="doj" value="2026-05-15">
</div>
<div class="form-group">
<label class="form-label" for="manager">Reporting Manager</label>
<div class="form-select-wrap">
<select class="form-select" id="manager">
<option value="">Select manager</option>
<option>Sarah Chen (HR Director)</option>
<option>Ravi Shankar (Operations Lead)</option>
<option>Aisha Larsson (Marketing Manager)</option>
<option>Michael Rodriguez (Senior Engineer)</option>
</select>
</div>
</div>
<div class="form-group">
<label class="form-label" for="location">Work Location</label>
<div class="form-select-wrap">
<select class="form-select" id="location">
<option>San Francisco HQ</option>
<option>New York Office</option>
<option>Remote</option>
<option>Austin Office</option>
</select>
</div>
</div>
</div>
</div>
</div>
<!-- COMPENSATION -->
<div class="form-section">
<div class="section-header">
<div class="section-num">3</div>
<div>
<div class="section-title">Compensation</div>
<div class="section-subtitle">Salary structure and pay details</div>
</div>
</div>
<div class="section-body">
<div class="form-grid">
<div class="form-group">
<label class="form-label" for="salary-struct">Salary Structure <span class="req">*</span></label>
<div class="form-select-wrap">
<select class="form-select" id="salary-struct">
<option value="">Select a salary structure</option>
<option>Junior (L1) — $60K$85K</option>
<option>Mid-level (L2) — $85K$110K</option>
<option>Senior (L3) — $110K$145K</option>
<option>Senior (L4) — $145K$180K</option>
<option>Lead (L5) — $180K$220K</option>
<option>Principal — Custom</option>
</select>
</div>
<div class="form-hint">Salary structure defines base pay, allowances, and deduction rules.</div>
</div>
<div class="form-group">
<label class="form-label" for="base-salary">Base Salary (Annual)</label>
<input class="form-input" type="number" id="base-salary" placeholder="120000">
</div>
</div>
</div>
</div>
<!-- ACCOUNT -->
<div class="form-section">
<div class="section-header">
<div class="section-num">4</div>
<div>
<div class="section-title">Account Setup</div>
<div class="section-subtitle">Configure login credentials and access</div>
</div>
</div>
<div class="section-body">
<div class="form-grid">
<div class="form-group col-span-2">
<div class="checkbox-row">
<input type="checkbox" id="auto-pass" checked>
<label for="auto-pass">Auto-generate a secure password and send login instructions via email</label>
</div>
<div class="form-hint" style="margin-top:8px;margin-left:26px;">A welcome email with login credentials will be sent to the employee's work email address.</div>
</div>
<div class="form-group col-span-2">
<div class="checkbox-row">
<input type="checkbox" id="send-welcome" checked>
<label for="send-welcome">Send welcome email with onboarding checklist</label>
</div>
</div>
<div class="form-group col-span-2">
<div class="checkbox-row">
<input type="checkbox" id="require-change">
<label for="require-change">Require password change on first login</label>
</div>
</div>
</div>
</div>
</div>
</main>
<div class="save-bar">
<div class="save-bar-note">All fields marked with * are required</div>
<div class="save-bar-actions">
<a href="05-employee-directory.html" class="btn-cancel">Discard</a>
<button class="btn-save">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="20 6 9 17 4 12"/></svg>
Save Employee
</button>
</div>
</div>
</div>
</body>
</html>