import { getAllUsers } from "@/pages/users/lib/api"; import formatPhone from "@/shared/lib/formatPhone"; import { Avatar, AvatarFallback, AvatarImage } from "@/shared/ui/avatar"; import { Button } from "@/shared/ui/button"; import { useQuery } from "@tanstack/react-query"; import { AlertTriangle, Calendar, ChevronLeft, ChevronRight, Eye, Loader2, Mail, Pencil, Phone, Search, Trash2, Users, } from "lucide-react"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router-dom"; export default function UserList() { const [searchQuery, setSearchQuery] = useState(""); const [currentPage, setCurrentPage] = useState(1); const usersPerPage = 6; const { t } = useTranslation(); const navigate = useNavigate(); const { data, isLoading, isError, refetch } = useQuery({ queryKey: ["user_all", currentPage, searchQuery], queryFn: () => getAllUsers({ page: currentPage, page_size: usersPerPage, search: searchQuery, }), }); const getAvatarGradient = (id: number) => { const gradients = ["from-blue-600 to-cyan-500"]; return gradients[id % gradients.length]; }; if (isError) { return (

{t("Ma'lumotlarni yuklashda xatolik yuz berdi.")}

); } return (

{t("Foydalanuvchilar")}

{t("Jami")} {data?.data.data.total_items}{" "} {t("ta foydalanuvchini boshqaring")}

{/* */}
} gradient="from-blue-600 to-blue-400" /> } gradient="from-cyan-600 to-cyan-400" /> } gradient="from-purple-600 to-pink-400" />
{ setSearchQuery(e.target.value); setCurrentPage(1); }} className="w-full pl-14 pr-4 py-3 bg-slate-700/30 border border-slate-600/50 text-white placeholder-slate-400 rounded-xl focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all" />
{isLoading ? (

{t("Ma'lumotlar yuklanmoqda...")}

) : ( <>
{data && data.data.data.results.users.map((e) => (
{e.first_name.slice(0, 1).toUpperCase()} {e.last_name.slice(0, 1).toUpperCase()}

{e.first_name} {e.last_name}

{e.email && (
{e.email}
)} {e.phone && (
{formatPhone(e.phone)}
)}
{e.validated_at}
))}
{[...Array(data?.data.data.total_pages)].map((_, i) => ( ))}
{/* {confirmDelete && (

{t("Foydalanuvchini o'chirish")}

{t("Siz")}{" "} {confirmDelete.username} {" "} {t("foydalanuvchini o'chirmoqchimisiz?")}

{t("Ushbu amalni qaytarib bo'lmaydi")}

)} */} )}
); } function StatCard({ title, value, icon, gradient, }: { title: string; value: string; icon: React.ReactNode; gradient: string; }) { return (

{title}

{icon}

{value}

); }