export const driverTheme = {
  background: '#07111F',
  panel: 'rgba(8, 15, 30, 0.86)',
  panelStrong: '#0E1B31',
  panelSoft: '#12233D',
  card: '#F8FAFC',
  cardSoft: '#E2E8F0',
  border: 'rgba(148, 163, 184, 0.22)',
  text: '#E5EEF8',
  textMuted: '#94A3B8',
  textDark: '#0F172A',
  accent: '#F97316',
  accentDark: '#C2410C',
  accentSoft: '#FFF1E8',
  success: '#10B981',
  successSoft: '#DCFCE7',
  warning: '#F59E0B',
  warningSoft: '#FEF3C7',
  danger: '#DC2626',
  dangerSoft: '#FEE2E2',
  info: '#38BDF8',
  infoSoft: '#E0F2FE',
};

export const driverShadow = {
  shadowColor: '#020617',
  shadowOpacity: 0.24,
  shadowRadius: 18,
  shadowOffset: { width: 0, height: 10 } as const,
  elevation: 10,
};

export function formatCurrency(value?: number | string | null) {
  const amount = Number(value ?? 0);
  return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(
    Number.isFinite(amount) ? amount : 0,
  );
}

export function formatDistance(value?: number | string | null) {
  const distance = Number(value ?? 0);
  if (!Number.isFinite(distance) || distance <= 0) {
    return '--';
  }
  return `${distance.toFixed(1)} km`;
}

export function formatDateTime(value?: string | null) {
  if (!value) {
    return '--';
  }

  return new Date(value).toLocaleString('pt-BR');
}

export function toNumber(value?: number | string | null) {
  if (value === null || value === undefined || value === '') {
    return null;
  }
  const parsed = Number(value);
  return Number.isFinite(parsed) ? parsed : null;
}
