// Paleta de cor de log compartilhada entre o terminal ao vivo do "Rodar" (RunButton, Edit.tsx)
// e o modal de Logs (texto vindo dos arquivos de log) — pra ficar tudo com a mesma cara.

export const LOG_COLOR: Record<string, string> = {
    CRITICAL: 'text-rose-400',
    SUCCESS:  'text-emerald-400',
    DEBUG:    'text-sky-400',
    INIT:     'text-purple-400',
    INFO:     'text-zinc-300',
};

// Mesmas cores de LOG_COLOR, mas com variante clara — LOG_COLOR foi pensada pro terminal do Rodar,
// que é sempre um box escuro (bg-zinc-950); em superfícies que seguem o tema (claro/escuro) da
// página, como o modal de Logs, usa essa aqui em vez da de cima.
export const LOG_TEXT_COLOR: Record<string, string> = {
    CRITICAL: 'text-rose-600 dark:text-rose-400',
    SUCCESS:  'text-emerald-600 dark:text-emerald-400',
    DEBUG:    'text-sky-600 dark:text-sky-400',
    INIT:     'text-purple-600 dark:text-purple-400',
    INFO:     'text-foreground',
};

export const LOG_BADGE: Record<string, string> = {
    CRITICAL: 'bg-rose-100 text-rose-700 dark:bg-rose-950 dark:text-rose-400',
    SUCCESS:  'bg-emerald-100 text-emerald-700 dark:bg-emerald-950 dark:text-emerald-400',
    DEBUG:    'bg-sky-100 text-sky-700 dark:bg-sky-950 dark:text-sky-400',
    INIT:     'bg-purple-100 text-purple-700 dark:bg-purple-950 dark:text-purple-400',
    INFO:     'bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-300',
};

export const LOG_DOT: Record<string, string> = {
    CRITICAL: 'text-rose-500 fill-rose-500',
    SUCCESS:  'text-emerald-500 fill-emerald-500',
    DEBUG:    'text-sky-500 fill-sky-500',
    INIT:     'text-purple-500 fill-purple-500',
    INFO:     'text-zinc-400 fill-zinc-400',
};

/**
 * O que fica gravado no arquivo de log (via Monolog: info/debug/notice/critical) não é
 * exatamente igual ao $logType usado no SSE do Rodar (addLog aceita CRITICAL/SUCCESS/DEBUG/
 * INIT/INFO, mas grava INIT como info() e SUCCESS como notice()). Esse mapeamento traduz o
 * nível como ele aparece no arquivo pro tipo equivalente da paleta acima.
 */
export function fileLevelToLogType(level: string): keyof typeof LOG_COLOR {
    switch (level.toUpperCase()) {
        case 'CRITICAL':
        case 'ERROR':
        case 'ALERT':
        case 'EMERGENCY':
        case 'WARNING':
            return 'CRITICAL';
        case 'NOTICE':
            return 'SUCCESS';
        case 'DEBUG':
            return 'DEBUG';
        default:
            return 'INFO';
    }
}
