import React, { useState, useEffect } from "react"; import { X, Truck } from "lucide-react"; import { DeliveryTaxTable } from "../../src/services/order.service"; interface DeliveryTaxModalProps { isOpen: boolean; onClose: () => void; onSelect: (deliveryTax: DeliveryTaxTable) => void; deliveryTaxOptions: DeliveryTaxTable[]; isLoading: boolean; } const DeliveryTaxModal: React.FC = ({ isOpen, onClose, onSelect, deliveryTaxOptions, isLoading, }) => { const [selectedRow, setSelectedRow] = useState(null); useEffect(() => { if (!isOpen) { setSelectedRow(null); } }, [isOpen]); if (!isOpen) return null; const handleSelect = () => { if (selectedRow !== null) { const selected = deliveryTaxOptions[selectedRow]; onSelect(selected); onClose(); } }; const formatCurrency = (value: number) => { return new Intl.NumberFormat("pt-BR", { style: "currency", currency: "BRL", }).format(value); }; return (
{/* Header */}

Opções de entrega para o endereço

Selecione uma opção

{/* Content */}
{isLoading ? (
) : deliveryTaxOptions.length === 0 ? (

Sem registros para serem exibidos.

) : ( <> {/* Desktop Table */}
{deliveryTaxOptions.map((option, index) => ( setSelectedRow(index)} className={`cursor-pointer transition-colors ${ selectedRow === index ? "bg-orange-50 border-l-4 border-orange-500" : "hover:bg-slate-50" }`} > ))}
Filial Transportadora Cidade de Entrega Prazo de Entrega Valor Frete
{option.store} {option.carrierName} {option.cityName} {option.deliveryTime} {formatCurrency(option.deliveryValue)}
{/* Mobile Cards */}
{deliveryTaxOptions.map((option, index) => (
setSelectedRow(index)} className={`p-4 rounded-2xl border-2 transition-all cursor-pointer ${ selectedRow === index ? "bg-orange-50 border-orange-500" : "bg-slate-50 border-slate-200 hover:border-orange-300" }`} >

{option.carrierName}

{option.cityName}

{formatCurrency(option.deliveryValue)}

Filial: {option.store}
Prazo: {option.deliveryTime}
))}
)}
{/* Footer */}
); }; export default DeliveryTaxModal;