<?php
/**
 * MontaLoja - Dynamic Theme Variables
 * Generates CSS :root variables based on store configuration
 * 
 * Usage: Include this file in the <head> of pages after theme.css
 * <link rel="stylesheet" href="assets/css/theme.css">
 * <style><?php include 'assets/css/theme-vars.php'; ?></style>
 * 
 * OR use as a standalone CSS endpoint:
 * <link rel="stylesheet" href="assets/css/theme-vars.php">
 */

// Se chamado diretamente como arquivo CSS
if (basename($_SERVER['SCRIPT_FILENAME']) === 'theme-vars.php') {
    header('Content-Type: text/css');
    
    // Cache por 1 hora
    header('Cache-Control: public, max-age=3600');
}

/**
 * Converte cor HEX para RGB
 * @param string $hex Cor em formato hexadecimal (#RRGGBB ou RRGGBB)
 * @return string RGB no formato "R, G, B"
 */
function hexToRgb($hex) {
    $hex = ltrim($hex, '#');
    
    if (strlen($hex) === 3) {
        $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
    }
    
    $r = hexdec(substr($hex, 0, 2));
    $g = hexdec(substr($hex, 2, 2));
    $b = hexdec(substr($hex, 4, 2));
    
    return "$r, $g, $b";
}

/**
 * Ajusta a luminosidade de uma cor
 * @param string $hex Cor em formato hexadecimal
 * @param float $percent Percentual de ajuste (-1 a 1)
 * @return string Cor ajustada em hexadecimal
 */
function adjustBrightness($hex, $percent) {
    $hex = ltrim($hex, '#');
    
    $r = hexdec(substr($hex, 0, 2));
    $g = hexdec(substr($hex, 2, 2));
    $b = hexdec(substr($hex, 4, 2));
    
    if ($percent > 0) {
        // Clarear
        $r = min(255, $r + (255 - $r) * $percent);
        $g = min(255, $g + (255 - $g) * $percent);
        $b = min(255, $b + (255 - $b) * $percent);
    } else {
        // Escurecer
        $r = max(0, $r + $r * $percent);
        $g = max(0, $g + $g * $percent);
        $b = max(0, $b + $b * $percent);
    }
    
    return sprintf('#%02X%02X%02X', $r, $g, $b);
}

/**
 * Gera as variáveis CSS do tema
 * @param array $config Configurações do tema
 * @return string CSS com as variáveis
 */
function generateThemeVars($config) {
    // Valores padrão
    $defaults = [
        'primary' => '#2563EB',
        'accent' => '#10B981',
        'bg' => '#FAFBFC',
        'text' => '#111827',
        'border' => '#E5E7EB',
        'surface' => '#FFFFFF',
        'font' => "'Plus Jakarta Sans', sans-serif"
    ];
    
    // Mesclar com os valores fornecidos
    $theme = array_merge($defaults, $config);
    
    // Gerar variações de cores
    $primaryRgb = hexToRgb($theme['primary']);
    $accentRgb = hexToRgb($theme['accent']);
    $textRgb = hexToRgb($theme['text']);
    
    // Variações da cor primária
    $primaryHover = adjustBrightness($theme['primary'], -0.15);
    $primaryLight = adjustBrightness($theme['primary'], 0.85);
    $primaryDark = adjustBrightness($theme['primary'], -0.25);
    
    // Variações da cor de destaque
    $accentHover = adjustBrightness($theme['accent'], -0.15);
    $accentLight = adjustBrightness($theme['accent'], 0.85);
    
    // Variações de superfície
    $surfaceHover = adjustBrightness($theme['surface'], -0.02);
    $surfaceSecondary = adjustBrightness($theme['surface'], -0.05);
    
    // Variações de borda
    $borderLight = adjustBrightness($theme['border'], 0.4);
    $borderDark = adjustBrightness($theme['border'], -0.15);
    
    // Variações de texto
    $textSecondary = adjustBrightness($theme['text'], 0.3);
    $textMuted = adjustBrightness($theme['text'], 0.45);
    $textLight = adjustBrightness($theme['text'], 0.6);
    
    $css = <<<CSS
:root {
    /* ===== CORES DINÂMICAS DO TEMA ===== */
    
    /* Cor Primária */
    --primary: {$theme['primary']};
    --primary-rgb: {$primaryRgb};
    --primary-soft: rgba({$primaryRgb}, 0.08);
    --primary-hover: {$primaryHover};
    --primary-light: {$primaryLight};
    --primary-dark: {$primaryDark};
    
    /* Cor de Destaque */
    --accent: {$theme['accent']};
    --accent-rgb: {$accentRgb};
    --accent-soft: rgba({$accentRgb}, 0.1);
    --accent-hover: {$accentHover};
    --accent-light: {$accentLight};
    
    /* Cores de Fundo */
    --bg: {$theme['bg']};
    --bg-card: {$theme['surface']};
    --surface: {$theme['surface']};
    --surface-hover: {$surfaceHover};
    --surface-secondary: {$surfaceSecondary};
    
    /* Cores de Texto */
    --text: {$theme['text']};
    --text-rgb: {$textRgb};
    --text-secondary: {$textSecondary};
    --text-muted: {$textMuted};
    --text-light: {$textLight};
    
    /* Cores de Borda */
    --border: {$theme['border']};
    --border-light: {$borderLight};
    --border-dark: {$borderDark};
    
    /* Tipografia */
    --font-family: {$theme['font']};
}
CSS;

    return $css;
}

// Verificar se existem variáveis globais definidas (quando incluído em páginas)
if (isset($storeConfig) && is_array($storeConfig)) {
    echo generateThemeVars($storeConfig);
} elseif (isset($store) && is_array($store)) {
    // Extrair configurações da variável $store (formato comum no MontaLoja)
    $config = [
        'primary' => $store['primary_color'] ?? $store['cor_primaria'] ?? '#2563EB',
        'accent' => $store['accent_color'] ?? $store['cor_destaque'] ?? '#10B981',
        'bg' => $store['bg_color'] ?? $store['cor_fundo'] ?? '#FAFBFC',
        'text' => $store['text_color'] ?? $store['cor_texto'] ?? '#111827',
        'border' => $store['border_color'] ?? '#E5E7EB',
        'surface' => $store['surface_color'] ?? '#FFFFFF',
        'font' => $store['font_family'] ?? "'Plus Jakarta Sans', sans-serif"
    ];
    echo generateThemeVars($config);
}
?>
