---
import type { CollectionEntry } from 'astro:content'
import { getConfig } from '@libs/config'
import { getVersionedDocsPath } from '@libs/path'
import type { Layout } from '@libs/layout'
import BootstrapWhiteFillIcon from '@components/icons/BootstrapWhiteFillIcon.astro'
import GitHubIcon from '@components/icons/GitHubIcon.astro'
import HamburgerIcon from '@components/icons/HamburgerIcon.astro'
import LinkItem from '@components/header/LinkItem.astro'
import OpenCollectiveIcon from '@components/icons/OpenCollectiveIcon.astro'
import XIcon from '@components/icons/XIcon.astro'
import Versions from '@components/header/Versions.astro'
import ThemeToggler from '@layouts/partials/ThemeToggler.astro'

interface Props {
  addedIn?: CollectionEntry<'docs'>['data']['added']
  layout: Layout
  title: string
}

const { addedIn, layout, title } = Astro.props
---

<header class="navbar navbar-expand-lg bd-navbar sticky-top">
  <nav class="container-xxl bd-gutter flex-wrap flex-lg-nowrap" aria-label="Main navigation">
    {
      layout === 'docs' && (
        <div class="bd-navbar-toggle">
          <button
            class="navbar-toggler p-2"
            type="button"
            data-bs-toggle="offcanvas"
            data-bs-target="#bdSidebar"
            aria-controls="bdSidebar"
            aria-label="Toggle docs navigation"
          >
            <HamburgerIcon class="bi" height={24} width={24} />
            <span class="d-none fs-6 pe-1">Browse</span>
          </button>
        </div>
      )
    }
    {layout !== 'docs' && <div class="d-lg-none" style="width: 4.25rem;" />}

    <a class="navbar-brand p-0 me-0 me-lg-2" href="/" aria-label="Bootstrap">
      <BootstrapWhiteFillIcon class="d-block my-1" height={32} width={40} />
    </a>

    <div class="d-flex">
      <div class="bd-search" id="docsearch" data-bd-docs-version={getConfig().docs_version}></div>

      <button
        class="navbar-toggler d-flex d-lg-none order-3 p-2"
        type="button"
        data-bs-toggle="offcanvas"
        data-bs-target="#bdNavbar"
        aria-controls="bdNavbar"
        aria-label="Toggle navigation"
      >
        <svg class="bi" aria-hidden="true"><use xlink:href="#three-dots"></use></svg>
      </button>
    </div>

    <div
      class="offcanvas-lg offcanvas-end flex-grow-1"
      tabindex="-1"
      id="bdNavbar"
      aria-labelledby="bdNavbarOffcanvasLabel"
    >
      <div class="offcanvas-header px-4 pb-0">
        <h5 class="offcanvas-title text-white" id="bdNavbarOffcanvasLabel">Bootstrap</h5>
        <button
          type="button"
          class="btn-close btn-close-white"
          data-bs-dismiss="offcanvas"
          aria-label="Close"
          data-bs-target="#bdNavbar"></button>
      </div>

      <div class="offcanvas-body p-4 pt-0 p-lg-0">
        <hr class="d-lg-none text-white-50" />
        <ul class="navbar-nav flex-row flex-wrap bd-navbar-nav">
          <LinkItem active={layout === 'docs'} href={getVersionedDocsPath('getting-started/introduction/')} track>
            Docs
          </LinkItem>
          <LinkItem active={title === 'Examples'} href={getVersionedDocsPath('examples/')} track>Examples</LinkItem>
          <LinkItem href={getConfig().icons} target="_blank" rel="noopener" track>Icons</LinkItem>
          <LinkItem href={getConfig().blog} target="_blank" rel="noopener" track>Blog</LinkItem>
        </ul>

        <hr class="d-lg-none text-white-50" />

        <ul class="navbar-nav flex-row flex-wrap ms-md-auto">
          <LinkItem class="nav-link py-2 px-0 px-lg-2" href={getConfig().github_org} target="_blank" rel="noopener">
            <GitHubIcon class="navbar-nav-svg" height={16} width={16} />
            <small class="d-lg-none ms-2">GitHub</small>
          </LinkItem>
          <LinkItem
            class="nav-link py-2 px-0 px-lg-2"
            href={`https://x.com/${getConfig().x}`}
            target="_blank"
            rel="noopener"
          >
            <XIcon class="navbar-nav-svg" height={16} width={16} />
            <small class="d-lg-none ms-2">X</small>
          </LinkItem>
          <LinkItem class="nav-link py-2 px-0 px-lg-2" href={getConfig().opencollective} target="_blank" rel="noopener">
            <OpenCollectiveIcon class="navbar-nav-svg" height={16} width={16} />
            <small class="d-lg-none ms-2">Open Collective</small>
          </LinkItem>
          <li class="nav-item py-2 py-lg-1 col-12 col-lg-auto">
            <div class="vr d-none d-lg-flex h-100 mx-lg-2 text-white"></div>
            <hr class="d-lg-none my-2 text-white-50" />
          </li>

          <Versions layout={layout} addedIn={addedIn} />

          <li class="nav-item py-2 py-lg-1 col-12 col-lg-auto">
            <div class="vr d-none d-lg-flex h-100 mx-lg-2 text-white"></div>
            <hr class="d-lg-none my-2 text-white-50" />
          </li>

          <li class="nav-item dropdown">
            <ThemeToggler layout={layout} />
          </li>
        </ul>
      </div>
    </div>
  </nav>
</header>
