[ 'nome' => 'Verde', 'css' => 'assets/css/identidade-visual-verde.css', 'favicon' => 'assets/img/logos/verde/favicon.ico', 'icone' => 'assets/img/logos/verde/svg/icone-cor.svg', 'cor' => '#7FA653', ], 'marrom' => [ 'nome' => 'Marrom', 'css' => 'assets/css/identidade-visual-marrom.css', 'favicon' => 'assets/img/logos/marrom/favicon.ico', 'icone' => 'assets/img/logos/marrom/svg/icone-cor.svg', 'cor' => '#A6754C', ], 'cinza' => [ 'nome' => 'Cinza', 'css' => 'assets/css/identidade-visual-cinza.css', 'favicon' => 'assets/img/logos/cinza/favicon.ico', 'icone' => 'assets/img/logos/cinza/svg/icone-cor.svg', 'cor' => '#6B6F77', ], ]; $ao_modos_info = [ 'claro' => ['nome' => 'Claro', 'icone' => '☀️'], 'escuro' => ['nome' => 'Escuro', 'icone' => '🌙'], ]; // Duração do cookie de identidade: 1 ano. Guardamos a escolha do usuário // em cookie (não em sessão) justamente para que ela sobreviva ao fechar // o navegador — é isso que "lembra" o tema/modo na próxima visita. const AO_COOKIE_DURACAO = 60 * 60 * 24 * 365; function ao_definir_cookie($nome, $valor) { setcookie($nome, $valor, [ 'expires' => time() + AO_COOKIE_DURACAO, 'path' => '/', 'secure' => AO_IS_PRODUCAO, 'httponly' => true, 'samesite' => 'Lax', ]); } // Troca de tema/modo via link "?tema=marrom" e/ou "?modo=escuro" — grava // em cookie e redireciona para a mesma URL sem o parâmetro, para manter // o endereço limpo. Os dois podem vir juntos na mesma requisição. $ao_precisa_redirecionar = false; if (isset($_GET['tema']) && array_key_exists($_GET['tema'], $ao_temas_info)) { ao_definir_cookie('ao_tema', $_GET['tema']); $_COOKIE['ao_tema'] = $_GET['tema']; $ao_precisa_redirecionar = true; } if (isset($_GET['modo']) && array_key_exists($_GET['modo'], $ao_modos_info)) { ao_definir_cookie('ao_modo', $_GET['modo']); $_COOKIE['ao_modo'] = $_GET['modo']; $ao_precisa_redirecionar = true; } if ($ao_precisa_redirecionar) { $destino = strtok($_SERVER['REQUEST_URI'], '?'); header('Location: ' . $destino); exit; } $ao_tema = $_COOKIE['ao_tema'] ?? 'verde'; if (!array_key_exists($ao_tema, $ao_temas_info)) { $ao_tema = 'verde'; } $ao_modo = $_COOKIE['ao_modo'] ?? 'claro'; if (!array_key_exists($ao_modo, $ao_modos_info)) { $ao_modo = 'claro'; } $ao_tema_atual = $ao_temas_info[$ao_tema]; $ao_modo_atual = $ao_modos_info[$ao_modo]; $ao_proximo_modo = $ao_modo === 'claro' ? 'escuro' : 'claro';