import React from 'react'; import { AlertTriangle } from 'lucide-react'; const NavigationConfirmModal = ({ isOpen, onConfirm, onCancel, targetPath, hasData }) => { if (!isOpen) return null; const getDataSummary = () => { try { const invoiceData = localStorage.getItem('currentInvoice'); const objectData = localStorage.getItem('objectEditorData'); const tableData = localStorage.getItem('tableEditorData'); const summary = []; if (invoiceData) { const parsed = JSON.parse(invoiceData); if (parsed.invoiceNumber) summary.push(`Invoice #${parsed.invoiceNumber}`); if (parsed.company?.name) summary.push(`Company information (${parsed.company.name})`); if (parsed.client?.name) summary.push(`Client information (${parsed.client.name})`); if (parsed.items?.length > 0) summary.push(`${parsed.items.length} line items`); } if (objectData) { const parsed = JSON.parse(objectData); if (parsed && Object.keys(parsed).length > 0) { summary.push(`Object data with ${Object.keys(parsed).length} properties`); } } if (tableData) { const parsed = JSON.parse(tableData); if (parsed && parsed.length > 0) { summary.push(`Table data with ${parsed.length} rows`); } } return summary; } catch (error) { return ['Unsaved data']; } }; const dataSummary = getDataSummary(); return (
{/* Header */}

Confirm Navigation

You have unsaved data that will be lost

{/* Content */}

You currently have unsaved data that will be lost if you leave this page. Are you sure you want to continue?

{dataSummary.length > 0 && (

You currently have:

    {dataSummary.map((item, index) => (
  • {item}
  • ))}
)}

Tip: Consider saving or exporting your current work before proceeding.

{/* Footer */}
); }; export default NavigationConfirmModal;