<script lang="ts">
  import { page } from "$app/state";
  import ActionGuard from "$lib/components/ActionGuard.svelte";
  import { Toaster } from "svelte-sonner";
  import PushNotificationManager from "$lib/components/PushNotificationManager.svelte";
  const { children } = $props();

  // Resolver recurso/ação a partir da rota
  const routeAction = $derived.by(() => {
    const p = page.url.pathname;
    if (p === "/" || p === "/solicitar-acesso") return null;

    // Funcionários
    if (p.startsWith("/recursos-humanos/funcionarios")) {
      if (p.includes("/cadastro"))
        return { recurso: "funcionarios", acao: "criar" };
      if (p.includes("/excluir"))
        return { recurso: "funcionarios", acao: "excluir" };
      if (p.includes("/editar") || p.includes("/funcionarioId"))
        return { recurso: "funcionarios", acao: "editar" };
      return { recurso: "funcionarios", acao: "listar" };
    }

    // Símbolos
    if (p.startsWith("/recursos-humanos/simbolos")) {
      if (p.includes("/cadastro"))
        return { recurso: "simbolos", acao: "criar" };
      if (p.includes("/excluir"))
        return { recurso: "simbolos", acao: "excluir" };
      if (p.includes("/editar") || p.includes("/simboloId"))
        return { recurso: "simbolos", acao: "editar" };
      return { recurso: "simbolos", acao: "listar" };
    }

    // Outras áreas (uso genérico: ver)
    if (p.startsWith("/financeiro"))
      return { recurso: "financeiro", acao: "ver" };
    if (p.startsWith("/controladoria"))
      return { recurso: "controladoria", acao: "ver" };
    if (p.startsWith("/licitacoes"))
      return { recurso: "licitacoes", acao: "ver" };
    if (p.startsWith("/compras")) return { recurso: "compras", acao: "ver" };
    if (p.startsWith("/juridico")) return { recurso: "juridico", acao: "ver" };
    if (p.startsWith("/comunicacao"))
      return { recurso: "comunicacao", acao: "ver" };
    if (p.startsWith("/programas-esportivos"))
      return { recurso: "programas_esportivos", acao: "ver" };
    if (p.startsWith("/secretaria-executiva"))
      return { recurso: "secretaria_executiva", acao: "ver" };
    if (p.startsWith("/gestao-pessoas"))
      return { recurso: "gestao_pessoas", acao: "ver" };

    return null;
  });
</script>

{#if routeAction}
  <ActionGuard recurso={routeAction.recurso} acao={routeAction.acao}>
    <main id="container-central" class="w-full max-w-none px-3 lg:px-4 py-4">
      {@render children()}
    </main>
  </ActionGuard>
{: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} />

<!-- Push Notification Manager (registra subscription automaticamente) -->
<PushNotificationManager />
