import { Show, createMemo, createSignal, onCleanup, onMount } from "solid-js";
import { A } from "~/ui/i18n-anchor";
import { isServer } from "solid-js/web";
import { Logo, GitHubIcon, DiscordIcon } from "~/ui/logo";
import { ThemeSelector } from "./theme-selector";
import { MobileNavigation } from "./mobile-navigation";
import { useMatch } from "@solidjs/router";
import { SUPPORTED_LOCALES } from "~/i18n/config";
import { LanguageSelector } from "./language-selector";
import { Search } from "../search";
import { useCurrentRouteMetaData } from "~/utils/route-metadata-helper";
interface Entry {
title: string;
path: string;
children?: Entry[];
mainNavExclude: boolean;
isTranslated?: boolean;
}
interface NavProps {
tree: {
learn: Entry[];
reference: Entry[];
};
}
export function MainHeader(props: NavProps) {
const [isScrolled, setIsScrolled] = createSignal(false);
const notSolidCore = useMatch(() => "/:project/*", {
project: ["solid-router", "solid-start", "solid-meta"],
});
const translatedLocale = useMatch(() => "/:locale/:project/*", {
locale: SUPPORTED_LOCALES,
project: ["solid-router", "solid-start", "solid-meta"],
});
if (!isServer) {
const onScroll = () => {
setIsScrolled(window.scrollY > 0);
};
onMount(() => {
onScroll();
window.addEventListener("scroll", onScroll, { passive: true });
});
onCleanup(() => {
window.removeEventListener("scroll", onScroll);
});
}
const currentRouteMetaData = createMemo(() => {
return useCurrentRouteMetaData();
});
return (