Files
GTI_GERENCIADOR_FISCAL/central/templates/base.html
T

91 lines
4.8 KiB
HTML

<!doctype html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>{% block title %}GTI Fiscal{% endblock %}</title>
<link rel="icon" type="image/png" href="/static/logo-gti-256x256.png">
<!-- Mesma identidade visual do GTI Gerenciador: tokens/layout em gti-theme.css (cópia fiel), ajustes do Fiscal em control-panel.css -->
<link rel="stylesheet" href="/static/gti-theme.css">
<link rel="stylesheet" href="/static/control-panel.css">
<script>
(function () {
var tema = localStorage.getItem("tema");
// Sem preferência salva o padrão é o tema escuro; a escolha explícita do usuário sempre prevalece.
document.documentElement.setAttribute("data-tema", tema === "claro" ? "claro" : "escuro");
})();
</script>
</head>
<body>
{% set path = request.url.path %}
<div class="layout">
<div class="sidebar-backdrop" id="sidebar-backdrop"></div>
<aside class="sidebar" id="sidebar">
<div class="sidebar-topo">
<img src="/static/logo-gti-256x256.png" alt="GTI Grupo" class="sidebar-logo">
<span class="sidebar-titulo">GTI Fiscal</span>
</div>
<nav class="sidebar-nav" aria-label="Navegação principal">
{% if panel_home %}
<a href="{{ panel_home }}" class="sidebar-voltar">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M15 18l-6-6 6-6"/></svg>
<span>Painel de Clientes</span>
</a>
<div class="sidebar-secao"><span>Fiscal</span></div>
{% endif %}
<a href="/" class="{{ 'ativo' if path == '/' else '' }}">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="9" rx="1"/><rect x="14" y="3" width="7" height="5" rx="1"/><rect x="14" y="12" width="7" height="9" rx="1"/><rect x="3" y="16" width="7" height="5" rx="1"/></svg>
<span>Resumo</span>
</a>
<a href="/agents" class="{{ 'ativo' if path.startswith('/agents') else '' }}">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="7" rx="2"/><rect x="3" y="13" width="18" height="7" rx="2"/><path d="M7 7.5h.01M7 16.5h.01"/></svg>
<span>Agents / Servidores</span>
</a>
<a href="/blockers" class="{{ 'ativo' if path.startswith('/blockers') else '' }}">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 3l8 4v5c0 5-3.5 8-8 9-4.5-1-8-4-8-9V7l8-4Z"/><path d="M12 8v5M12 16h.01"/></svg>
<span>Blockers</span>
</a>
<a href="/jobs" class="{{ 'ativo' if path.startswith('/jobs') else '' }}">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"/></svg>
<span>Jobs</span>
</a>
</nav>
<div class="sidebar-rodape">
{% if auth %}
<div class="sidebar-usuario">{{ auth[1].display_name or auth[1].username }}</div>
{% endif %}
<button type="button" class="botao-tema" id="botao-tema" aria-label="Alternar tema claro/escuro">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></svg>
<span>Tema claro/escuro</span>
</button>
{% if auth %}
<form method="post" action="/logout" class="form-logout">
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
<button type="submit" class="botao-sair">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><path d="M16 17l5-5-5-5M21 12H9"/></svg>
<span>Sair do Fiscal</span>
</button>
</form>
{% endif %}
<button type="button" class="botao-recolher" id="botao-recolher" aria-label="Recolher menu">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M11 19l-7-7 7-7M18 19l-7-7 7-7"/></svg>
<span>Recolher</span>
</button>
</div>
</aside>
<div class="conteudo-area">
<header class="topbar-mobile">
<button type="button" class="topbar-menu-btn" id="btn-menu-mobile" aria-label="Abrir menu">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width:22px;height:22px"><path d="M3 6h18M3 12h18M3 18h18"/></svg>
</button>
<span class="topbar-titulo">GTI Fiscal</span>
</header>
<main class="conteudo conteudo-fiscal">{% block content %}{% endblock %}</main>
</div>
</div>
<script src="/static/sidebar.js" defer></script>
<script src="/static/tema.js" defer></script>
<script src="/static/control-panel.js"></script>
</body>
</html>