/**
 * Sistema de Padronização de Tipografia para RH
 * Baseado nos agents de UX (FontQualityAgent e UIAdaptationAgent)
 * 
 * Padrões mínimos de legibilidade:
 * - Texto mínimo: 14px (0.875rem) - text-sm
 * - Labels: 14px (0.875rem) - text-sm
 * - Corpo de texto: 16px (1rem) - text-base
 * - Subtítulos: 18px (1.125rem) - text-lg
 * - Títulos: 24px+ (1.5rem+) - text-2xl+
 * 
 * Evitar:
 * - text-xs (12px) - muito pequeno
 * - text-[10px] ou text-[11px] - extremamente pequeno
 */

export const RH_TYPOGRAPHY = {
  // Tamanhos mínimos recomendados
  MINIMUM: {
    body: 'text-sm',        // 14px - mínimo para texto legível
    label: 'text-sm',       // 14px - mínimo para labels
    caption: 'text-sm',     // 14px - mínimo para legendas
    table: 'text-sm',       // 14px - mínimo para tabelas
  },
  
  // Tamanhos padrão
  STANDARD: {
    body: 'text-base',      // 16px - corpo de texto padrão
    label: 'text-sm',       // 14px - labels padrão
    caption: 'text-sm',     // 14px - legendas
    table: 'text-sm',       // 14px - tabelas
    subtitle: 'text-lg',    // 18px - subtítulos
    title: 'text-2xl',      // 24px - títulos
  },
  
  // Tamanhos responsivos (usando clamp quando necessário)
  RESPONSIVE: {
    // Para textos que precisam ser menores em mobile mas maiores em desktop
    body: 'text-[clamp(0.875rem,1vw,1rem)]',      // 14px-16px
    label: 'text-[clamp(0.875rem,0.9vw,0.9375rem)]', // 14px-15px
    table: 'text-[clamp(0.875rem,0.9vw,0.9375rem)]',  // 14px-15px
    caption: 'text-sm',                            // 14px fixo
  },
  
  // Pesos de fonte
  WEIGHT: {
    normal: 'font-normal',   // 400
    medium: 'font-medium',  // 500
    semibold: 'font-semibold', // 600
    bold: 'font-bold',       // 700
    black: 'font-black',     // 900
  },
  
  // Cores de texto (acessibilidade)
  COLOR: {
    primary: 'text-slate-800 dark:text-white',
    secondary: 'text-slate-600 dark:text-slate-300',
    muted: 'text-slate-500 dark:text-slate-400',
    caption: 'text-slate-500 dark:text-slate-400',
  }
};

/**
 * Helper para aplicar classes de tipografia padronizadas
 */
export const applyTypography = (type = 'body', options = {}) => {
  const {
    size = 'standard',
    weight = 'normal',
    color = 'primary',
    responsive = false
  } = options;
  
  const sizeClass = responsive 
    ? RH_TYPOGRAPHY.RESPONSIVE[type] || RH_TYPOGRAPHY.STANDARD[type]
    : size === 'minimum'
    ? RH_TYPOGRAPHY.MINIMUM[type] || RH_TYPOGRAPHY.STANDARD[type]
    : RH_TYPOGRAPHY.STANDARD[type];
  
  const weightClass = RH_TYPOGRAPHY.WEIGHT[weight] || '';
  const colorClass = RH_TYPOGRAPHY.COLOR[color] || '';
  
  return `${sizeClass} ${weightClass} ${colorClass}`.trim();
};

/**
 * Mapeamento de substituições para correção automática
 * text-xs (12px) -> text-sm (14px)
 * text-[10px] -> text-sm (14px)
 * text-[11px] -> text-sm (14px)
 */
export const FONT_SIZE_REPLACEMENTS = {
  'text-xs': 'text-sm',
  'text-[10px]': 'text-sm',
  'text-[11px]': 'text-sm',
  'text-[12px]': 'text-sm',
};
