/**
 * VendorKpiTile variant definitions.
 *
 * delta variant drives color + icon:
 *   'up'   — metric improved (green)
 *   'warn' — metric needs attention (amber)
 *   'down' — metric declined (red)
 *   'neutral' — no delta (gray)
 */

export type KpiDeltaVariant = 'up' | 'warn' | 'down' | 'neutral';

export interface KpiVariantConfig {
  /** Tailwind text color class for the delta label. */
  deltaClass: string;
  /** Arrow direction symbol for the delta. */
  arrow: string;
}

export const KPI_VARIANT_CONFIG: Record<KpiDeltaVariant, KpiVariantConfig> = {
  up: {
    deltaClass: 'text-success-600',
    arrow: '↑',
  },
  warn: {
    deltaClass: 'text-warning-600',
    arrow: '▲',
  },
  down: {
    deltaClass: 'text-danger-600',
    arrow: '↓',
  },
  neutral: {
    deltaClass: 'text-text-muted',
    arrow: '–',
  },
};

/**
 * Derive delta variant from a numeric change value.
 *
 * @param delta - Positive = up, negative = down.
 * @param warnThreshold - Absolute value at or below which 'warn' fires (default 0 = no warn).
 */
export function deriveDeltaVariant(delta: number, warnThreshold = 0): KpiDeltaVariant {
  if (delta > warnThreshold) return 'up';
  if (delta < 0) return 'down';
  if (warnThreshold > 0 && delta <= warnThreshold && delta >= 0) return 'warn';
  return 'neutral';
}
