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 (
@@ -79,7 +86,7 @@ const ClientDetails = () => {
{/* Orders List */}
- {groupedOrders.map((group, groupIndex) => ( + {paginatedOrders.map((group, groupIndex) => (

@@ -133,6 +140,48 @@ const ClientDetails = () => {

))}
+ +
+
+ Mostrar + + pedidos por página +
+ +
+ + Mostrando {groupedOrders.length > 0 ? startIndex + 1 : 0} a {Math.min(startIndex + ordersPerPage, groupedOrders.length)} de {groupedOrders.length} pedidos + +
+ + +
+
+
); };