"use client";

import Link from "next/link";
import { usePathname } from "next/navigation";
import { ReactElement } from "react";
import { HrefButton } from "./href-button";
import Logo from "./logo";
import { ToggleThemeButton } from "./theme-toggle-button";
import { GithubStar } from "@/app/components/github-star";

type Page = {
  /**
   * The name of the button for the navbar.
   */
  name: string;

  /**
   * The URL to go to.
   */
  url: string;

  /**
   * Whether clicking the button will
   * open the link in a new tab.
   */
  openInNewTab?: boolean;
};

const pages: Page[] = [
  { name: "Player", url: "/player" },
  { name: "Server", url: "/server/java" },
  { name: "Mojang", url: "/mojang/status" },
  { name: "API", url: "https://api.mcutils.xyz", openInNewTab: true },
];

export default function NavBar(): ReactElement {
  const path = usePathname();

  return (
    <div className="bg-secondary relative w-full rounded-lg flex justify-between items-center gap-3 mt-2 px-3 bg-opacity-85 h-12">
      {/* Left */}
      <Link href="/" className="flex items-center gap-2">
        <Logo />
        <p className="hidden md:block">Minecraft Utilities</p>
      </Link>

      {/* Links */}
      <div className="absolute inset-x-0 flex justify-center">
        <div className="flex gap-4">
          {pages.map((page, index) => {
            const isActive = path.includes(page.url);

            return (
              <HrefButton
                className={isActive ? "text-primary" : ""}
                key={index}
                title={page.name}
                url={page.url}
                openInNewTab={page.openInNewTab}
              />
            );
          })}
        </div>
      </div>

      {/* Right */}
      <div className="flex gap-4 items-center">
        <ToggleThemeButton />
        <GithubStar />
      </div>
    </div>
  );
}
