// i18n.jsx — Bilingual strings ES / EN

const STRINGS = {
  // Nav
  dashboard: { en: "Dashboard", es: "Panel" },
  invoices: { en: "Invoices", es: "Facturas" },
  clients: { en: "Clients", es: "Clientes" },
  catalog: { en: "Catalog", es: "Catálogo" },
  reports: { en: "Reports", es: "Reportes" },
  settings: { en: "Settings", es: "Configuración" },
  newInvoice: { en: "New invoice", es: "Nueva factura" },

  // Dashboard
  outstanding: { en: "Outstanding", es: "Por cobrar" },
  paidThisMonth: { en: "Paid this month", es: "Cobrado este mes" },
  overdue: { en: "Overdue", es: "Vencido" },
  draft: { en: "Draft", es: "Borrador" },
  recentActivity: { en: "Recent activity", es: "Actividad reciente" },
  cashflow: { en: "Cash flow · last 12 weeks", es: "Flujo de efectivo · últimas 12 semanas" },
  topClients: { en: "Top clients", es: "Clientes principales" },
  upcoming: { en: "Upcoming due", es: "Próximos vencimientos" },
  quickActions: { en: "Quick actions", es: "Acciones rápidas" },
  sendReminder: { en: "Send reminder", es: "Enviar recordatorio" },
  recordPayment: { en: "Record payment", es: "Registrar pago" },
  exportCsv: { en: "Export CSV", es: "Exportar CSV" },

  // Invoice list
  search: { en: "Search invoices, clients, projects…", es: "Buscar facturas, clientes, proyectos…" },
  all: { en: "All", es: "Todas" },
  paid: { en: "Paid", es: "Pagada" },
  pending: { en: "Pending", es: "Pendiente" },
  number: { en: "Number", es: "Número" },
  client: { en: "Client", es: "Cliente" },
  project: { en: "Project", es: "Proyecto" },
  issued: { en: "Issued", es: "Emitida" },
  due: { en: "Due", es: "Vence" },
  amount: { en: "Amount", es: "Monto" },
  status: { en: "Status", es: "Estado" },

  // Editor
  editor: { en: "Invoice editor", es: "Editor de factura" },
  preview: { en: "Preview", es: "Vista previa" },
  billTo: { en: "Bill to", es: "Facturar a" },
  from: { en: "From", es: "De" },
  invoiceNumber: { en: "Invoice #", es: "Factura #" },
  issueDate: { en: "Issue date", es: "Fecha de emisión" },
  dueDate: { en: "Due date", es: "Fecha de vencimiento" },
  billingPeriod: { en: "Billing period", es: "Periodo de facturación" },
  weekly: { en: "Weekly", es: "Semanal" },
  biweekly: { en: "Biweekly", es: "Quincenal" },
  monthly: { en: "Monthly", es: "Mensual" },
  custom: { en: "Custom", es: "Personalizado" },
  description: { en: "Description", es: "Descripción" },
  qty: { en: "Qty", es: "Cant." },
  hours: { en: "Hours", es: "Horas" },
  rate: { en: "Rate", es: "Tarifa" },
  total: { en: "Total", es: "Total" },
  addLine: { en: "Add line item", es: "Agregar línea" },
  addTimeEntry: { en: "Add time entry", es: "Agregar tiempo" },
  subtotal: { en: "Subtotal", es: "Subtotal" },
  tax: { en: "Tax", es: "Impuesto" },
  notes: { en: "Notes & terms", es: "Notas y términos" },
  saveDraft: { en: "Save draft", es: "Guardar borrador" },
  send: { en: "Send invoice", es: "Enviar factura" },
  download: { en: "Download PDF", es: "Descargar PDF" },
  duplicate: { en: "Duplicate", es: "Duplicar" },

  // Detail
  back: { en: "Back", es: "Volver" },
  timeline: { en: "Timeline", es: "Cronología" },
  payments: { en: "Payments", es: "Pagos" },
  reminders: { en: "Reminders", es: "Recordatorios" },
  markPaid: { en: "Mark as paid", es: "Marcar como pagada" },

  // Misc
  thisWeek: { en: "this week", es: "esta semana" },
  vs: { en: "vs last month", es: "vs mes anterior" },
  daysOverdue: { en: "days overdue", es: "días de retraso" },
  inDays: { en: "in {n} days", es: "en {n} días" },
  today: { en: "Today", es: "Hoy" },
  yesterday: { en: "Yesterday", es: "Ayer" },
};

function makeT(lang) {
  return function t(key, vars) {
    const entry = STRINGS[key];
    if (!entry) return key;
    let str = entry[lang] ?? entry.en ?? key;
    if (vars) {
      Object.entries(vars).forEach(([k, v]) => {
        str = str.replace(`{${k}}`, v);
      });
    }
    return str;
  };
}

window.makeT = makeT;
