<script lang="ts">
  import { page } from "$app/state";
  import MenuProtection from "$lib/components/MenuProtection.svelte";
  import { Toaster } from "svelte-sonner";
  
  const { children } = $props();
  
  // Mapa de rotas para verificação de permissões
  const ROUTE_PERMISSIONS: Record<string, { path: string; requireGravar?: boolean }> = {
    // Recursos Humanos
    "/recursos-humanos": { path: "/recursos-humanos" },
    "/recursos-humanos/funcionarios": { path: "/recursos-humanos/funcionarios" },
    "/recursos-humanos/funcionarios/cadastro": { path: "/recursos-humanos/funcionarios", requireGravar: true },
    "/recursos-humanos/funcionarios/excluir": { path: "/recursos-humanos/funcionarios", requireGravar: true },
    "/recursos-humanos/funcionarios/relatorios": { path: "/recursos-humanos/funcionarios" },
    "/recursos-humanos/simbolos": { path: "/recursos-humanos/simbolos" },
    "/recursos-humanos/simbolos/cadastro": { path: "/recursos-humanos/simbolos", requireGravar: true },
    // Outros menus
    "/financeiro": { path: "/financeiro" },
    "/controladoria": { path: "/controladoria" },
    "/licitacoes": { path: "/licitacoes" },
    "/compras": { path: "/compras" },
    "/juridico": { path: "/juridico" },
    "/comunicacao": { path: "/comunicacao" },
    "/programas-esportivos": { path: "/programas-esportivos" },
    "/secretaria-executiva": { path: "/secretaria-executiva" },
    "/gestao-pessoas": { path: "/gestao-pessoas" },
    "/ti": { path: "/ti" },
  };
  
  // Obter configuração para a rota atual
  const getCurrentRouteConfig = $derived.by(() => {
    const currentPath = page.url.pathname;
    
    // Verificar correspondência exata
    if (ROUTE_PERMISSIONS[currentPath]) {
      return ROUTE_PERMISSIONS[currentPath];
    }
    
    // Verificar rotas dinâmicas (com [id])
    if (currentPath.includes("/editar") || currentPath.includes("/funcionarioId") || currentPath.includes("/simboloId")) {
      // Extrair o caminho base
      if (currentPath.includes("/funcionarios/")) {
        return { path: "/recursos-humanos/funcionarios", requireGravar: true };
      }
      if (currentPath.includes("/simbolos/")) {
        return { path: "/recursos-humanos/simbolos", requireGravar: true };
      }
    }
    
    // Rotas públicas (Dashboard, Solicitar Acesso, etc)
    if (currentPath === "/" || currentPath === "/solicitar-acesso") {
      return null;
    }
    
    // Para qualquer outra rota dentro do dashboard, verificar o primeiro segmento
    const segments = currentPath.split("/").filter(Boolean);
    if (segments.length > 0) {
      const firstSegment = "/" + segments[0];
      if (ROUTE_PERMISSIONS[firstSegment]) {
        return ROUTE_PERMISSIONS[firstSegment];
      }
    }
    
    return null;
  });
</script>

{#if getCurrentRouteConfig}
  <MenuProtection menuPath={getCurrentRouteConfig.path} requireGravar={getCurrentRouteConfig.requireGravar || false}>
    <main
      id="container-central"
      class="w-full max-w-none px-3 lg:px-4 py-4"
    >
      {@render children()}
    </main>
  </MenuProtection>
{:else}
  <main
    id="container-central"
    class="w-full max-w-none px-3 lg:px-4 py-4"
  >
    {@render children()}
  </main>
{/if}

<!-- Toast Notifications (Sonner) -->
<Toaster position="top-right" richColors closeButton expand={true} />
