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("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"
/>
{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 && (
)}
{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 (
);
}