diff --git a/src/app/employees/page.tsx b/src/app/employees/page.tsx new file mode 100644 index 0000000..ae35e44 --- /dev/null +++ b/src/app/employees/page.tsx @@ -0,0 +1,241 @@ +"use client"; + +import { useState } from "react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple'; +import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis'; +import { Plus, Trash2, Edit2, Users } from 'lucide-react'; + +interface Employee { + id: string; + name: string; + email: string; + department: string; + points: number; +} + +export default function EmployeesPage() { + const [employees, setEmployees] = useState([ + { id: "1", name: "Alice Johnson", email: "alice@company.com", department: "Sales", points: 250 }, + { id: "2", name: "Bob Smith", email: "bob@company.com", department: "Engineering", points: 180 }, + { id: "3", name: "Carol Davis", email: "carol@company.com", department: "Marketing", points: 320 } + ]); + + const [showForm, setShowForm] = useState(false); + const [editingId, setEditingId] = useState(null); + const [formData, setFormData] = useState({ name: "", email: "", department: "", points: "0" }); + + const handleAddEmployee = () => { + setEditingId(null); + setFormData({ name: "", email: "", department: "", points: "0" }); + setShowForm(true); + }; + + const handleEditEmployee = (employee: Employee) => { + setEditingId(employee.id); + setFormData({ name: employee.name, email: employee.email, department: employee.department, points: String(employee.points) }); + setShowForm(true); + }; + + const handleSaveEmployee = (e: React.FormEvent) => { + e.preventDefault(); + if (editingId) { + setEmployees(employees.map(emp => emp.id === editingId ? { ...emp, name: formData.name, email: formData.email, department: formData.department, points: parseInt(formData.points) } : emp)); + } else { + setEmployees([...employees, { id: String(Date.now()), name: formData.name, email: formData.email, department: formData.department, points: parseInt(formData.points) }]); + } + setShowForm(false); + }; + + const handleDeleteEmployee = (id: string) => { + setEmployees(employees.filter(emp => emp.id !== id)); + }; + + return ( + + + +
+
+
+
+ +

Employee Directory

+
+ +
+ + {showForm && ( +
+

{editingId ? "Edit Employee" : "Add New Employee"}

+
+
+ setFormData({ ...formData, name: e.target.value })} + required + className="bg-gray-600 text-white px-4 py-2 rounded border border-gray-500 focus:outline-none focus:border-blue-500" + /> + setFormData({ ...formData, email: e.target.value })} + required + className="bg-gray-600 text-white px-4 py-2 rounded border border-gray-500 focus:outline-none focus:border-blue-500" + /> + setFormData({ ...formData, department: e.target.value })} + required + className="bg-gray-600 text-white px-4 py-2 rounded border border-gray-500 focus:outline-none focus:border-blue-500" + /> + setFormData({ ...formData, points: e.target.value })} + required + className="bg-gray-600 text-white px-4 py-2 rounded border border-gray-500 focus:outline-none focus:border-blue-500" + /> +
+
+ + +
+
+
+ )} + +
+
+ + + + + + + + + + + + {employees.map((employee, idx) => ( + + + + + + + + ))} + +
NameEmailDepartmentPointsActions
{employee.name}{employee.email}{employee.department} + {employee.points} + +
+ + +
+
+
+
+ +
+

Total Employees: {employees.length}

+

Total Points Distributed: {employees.reduce((sum, emp) => sum + emp.points, 0)}

+
+
+
+ + +
+ ); +} \ No newline at end of file