import { useState } from 'react'; import { Plus, Search, Filter, Users as UsersIcon, UserCheck, UserX } from 'lucide-react'; import { Table } from '../components/ui/Table'; import { Button } from '../components/ui/Button'; import { Modal } from '../components/ui/Modal'; import { Pagination } from '../components/ui/Pagination'; import { UserForm } from '../components/forms/UserForm'; import { PermissionWrapper } from '../components/common/PermissionWrapper'; import { TableColumn } from '../types'; import { UserFormData } from '../utils/validationSchemas'; import { PageContainer, PageTitle, StatValue } from '../components/ui/Typography'; const allUsers = [ { id: 1, name: 'علی احمدی', email: 'ali@example.com', role: 'کاربر', status: 'فعال', createdAt: '۱۴۰۲/۰۸/۱۵', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, { id: 2, name: 'فاطمه حسینی', email: 'fateme@example.com', role: 'مدیر', status: 'فعال', createdAt: '۱۴۰۲/۰۸/۱۴', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, { id: 3, name: 'محمد رضایی', email: 'mohammad@example.com', role: 'کاربر', status: 'غیرفعال', createdAt: '۱۴۰۲/۰۸/۱۳', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, { id: 4, name: 'زهرا کریمی', email: 'zahra@example.com', role: 'کاربر', status: 'فعال', createdAt: '۱۴۰۲/۰۸/۱۲', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, { id: 5, name: 'حسن نوری', email: 'hassan@example.com', role: 'مدیر', status: 'فعال', createdAt: '۱۴۰۲/۰۸/۱۱', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, { id: 6, name: 'مریم صادقی', email: 'maryam@example.com', role: 'کاربر', status: 'غیرفعال', createdAt: '۱۴۰۲/۰۸/۱۰', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, { id: 7, name: 'احمد قاسمی', email: 'ahmad@example.com', role: 'کاربر', status: 'فعال', createdAt: '۱۴۰۲/۰۸/۰۹', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, { id: 8, name: 'سارا محمدی', email: 'sara@example.com', role: 'مدیر', status: 'فعال', createdAt: '۱۴۰۲/۰۸/۰۸', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, { id: 9, name: 'رضا کریمی', email: 'reza@example.com', role: 'کاربر', status: 'فعال', createdAt: '۱۴۰۲/۰۸/۰۷', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, { id: 10, name: 'نرگس احمدی', email: 'narges@example.com', role: 'کاربر', status: 'فعال', createdAt: '۱۴۰۲/۰۸/۰۶', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, { id: 11, name: 'امیر حسینی', email: 'amir@example.com', role: 'مدیر', status: 'فعال', createdAt: '۱۴۰۲/۰۸/۰۵', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, { id: 12, name: 'مینا رضایی', email: 'mina@example.com', role: 'کاربر', status: 'غیرفعال', createdAt: '۱۴۰۲/۰۸/۰۴', phone: '۰۹۱۲۳۴۵۶۷۸۹' }, ]; export const Users = () => { const [searchTerm, setSearchTerm] = useState(''); const [showUserModal, setShowUserModal] = useState(false); const [editingUser, setEditingUser] = useState(null); const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 5; const columns: TableColumn[] = [ { key: 'name', label: 'نام', sortable: true }, { key: 'email', label: 'ایمیل', sortable: true }, { key: 'phone', label: 'تلفن' }, { key: 'role', label: 'نقش' }, { key: 'status', label: 'وضعیت', render: (value) => ( {value} ) }, { key: 'createdAt', label: 'تاریخ عضویت', sortable: true }, { key: 'actions', label: 'عملیات', render: (_, row) => (
) } ]; const filteredUsers = allUsers.filter((user: any) => user.name.toLowerCase().includes(searchTerm.toLowerCase()) || user.email.toLowerCase().includes(searchTerm.toLowerCase()) ); const totalPages = Math.ceil(filteredUsers.length / itemsPerPage); const startIndex = (currentPage - 1) * itemsPerPage; const paginatedUsers = filteredUsers.slice(startIndex, startIndex + itemsPerPage); const handleAddUser = () => { setEditingUser(null); setShowUserModal(true); }; const handleEditUser = (user: any) => { setEditingUser(user); setShowUserModal(true); }; const handleDeleteUser = (userId: number) => { if (confirm('آیا از حذف این کاربر اطمینان دارید؟')) { console.log('Deleting user:', userId); } }; const handleSubmitUser = (data: UserFormData) => { console.log('User data:', data); setShowUserModal(false); }; const handleCloseModal = () => { setShowUserModal(false); setEditingUser(null); }; return (
مدیریت کاربران

{filteredUsers.length} کاربر یافت شد

setSearchTerm(e.target.value)} className="input pr-10 max-w-md" />
); };