{{ $page := . }}

{{ $basepath := path.Clean (urls.Parse site.BaseURL).Path }}
{{ $breakpoint := $page.Param "paige.menu.breakpoint" | default "sm" }}
{{ $links := false }}
{{ $pills := false }}

{{ if eq $basepath "/" }}
    {{ $basepath = "" }}
{{ end }}

{{ with $page.Param "paige.menu.style" }}
    {{ if eq . "links" }}
        {{ $links = true }}
    {{ else if eq . "pills" }}
        {{ $pills = true }}
    {{ else }}
        {{ errorf "paige/menu: invalid menu style: %q" . }}
    {{ end }}
{{ else }}
    {{ $pills = true }}
{{ end }}

<nav class="justify-content-center my-3 navbar navbar-expand-{{ $breakpoint }}">
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#paige-menu-toggler" aria-controls="paige-menu-toggler" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse justify-content-center mt-3 mt-{{ $breakpoint }}-0 navbar-collapse" id="paige-menu-toggler">
        <div class="align-items-center flex-column flex-{{ $breakpoint }}-row justify-content-center nav {{ if $pills }} nav-pills {{ end }}">
            {{ range site.Menus.main }}
                {{ $pagepath := strings.TrimPrefix $basepath $.RelPermalink }}
                {{ $menupath := strings.TrimPrefix $basepath .URL }}
                {{ $active := or (and (eq $menupath "/") (eq $pagepath "/")) (and (ne $menupath "/") (hasPrefix $pagepath $menupath)) }}

                <a {{ if $active }} aria-current="page" {{ end }} class="{{ if $active }} active {{ if $links }} link-secondary {{ end }} {{ end }} nav-link" href="{{ .URL | safeURL }}">{{ .Name }}</a>
            {{ end }}
        </div>
    </div>
</nav>
