summaryrefslogtreecommitdiffstats
path: root/src/ui/components/SiteNav.tsx
blob: 7518e3c740c56743697c8f1ec9f0cad2b6789d86 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { Icon } from "$/ui/objects/Icon.tsx";

import { nav } from "../../data/nav.ts";
import { Navbar } from "../objects/Navbar.tsx";
import { NavbarItem } from "../objects/NavbarItem.tsx";

export interface Props {
	url: string;
}

export const SiteNav = ({ url }: Props) => {
	const navItems = nav
		.filter((item) => !item.hidden)
		.map((item) => ({
			...item,
			selected: item.url === "/" ? item.url === url : new RegExp(`^${item.url}`).test(url),
		}));

	return (
		<>
			<div class="c-site-nav-placeholder"></div>

			<footer class="c-site-nav">
				<Navbar aria-label="Mainmenu" quiet variant="static-white">
					{navItems.map((item) => (
						<NavbarItem
							href={item.url}
							icon={<Icon icon={item.icon} variant={item.selected ? "fill" : "regular"} />}
							selected={item.selected}
						>
							{item.label}
						</NavbarItem>
					))}
				</Navbar>
			</footer>
		</>
	);
};