diff --git a/src/pages/ClientDetails.tsx b/src/pages/ClientDetails.tsx index 02dfcdf..18a8843 100644 --- a/src/pages/ClientDetails.tsx +++ b/src/pages/ClientDetails.tsx @@ -1,6 +1,6 @@ -import { useMemo } from 'react'; +import { useMemo, useState } from 'react'; import { useParams, Link, useOutletContext } from 'react-router-dom'; -import { ArrowLeft, User, Tag, Package, DollarSign, Clock, Phone } from 'lucide-react'; +import { ArrowLeft, User, Tag, Package, DollarSign, Clock, Phone, ChevronLeft, ChevronRight } from 'lucide-react'; import type { OrderData } from '../types'; import { buildClientDetailsMetrics } from '../analytics/clients'; @@ -8,6 +8,8 @@ const ClientDetails = () => { const { name } = useParams<{ name: string }>(); const decodedName = name ? decodeURIComponent(name) : ''; const { ordersData, isDataLoading } = useOutletContext<{ ordersData: OrderData[], isDataLoading: boolean }>(); + const [currentPage, setCurrentPage] = useState(1); + const [ordersPerPage, setOrdersPerPage] = useState(10); const { groupedOrders, totalSpent, totalItems, clientPhone } = useMemo(() => { return buildClientDetailsMetrics(ordersData, decodedName); @@ -17,6 +19,11 @@ const ClientDetails = () => { return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(value); }; + const totalPages = Math.ceil(groupedOrders.length / ordersPerPage); + const safeCurrentPage = Math.min(currentPage, totalPages || 1); + const startIndex = (safeCurrentPage - 1) * ordersPerPage; + const paginatedOrders = groupedOrders.slice(startIndex, startIndex + ordersPerPage); + if (!groupedOrders.length && isDataLoading) { return (