'use client'; import { FiCommand } from '@react-icons/all-files/fi/FiCommand'; import { VscGithubInverted } from '@react-icons/all-files/vsc/VscGithubInverted'; import { VscMenu } from '@react-icons/all-files/vsc/VscMenu'; import { VscSearch } from '@react-icons/all-files/vsc/VscSearch'; import { Button } from 'ariakit/button'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { Fragment, useEffect, useMemo, useState } from 'react'; import { ThemeSwitcher } from './ThemeSwitcher'; import { useCmdK } from '~/contexts/cmdK'; import { useNav } from '~/contexts/nav'; export function Header() { const pathname = usePathname(); const { setOpened } = useNav(); const dialog = useCmdK(); const [asPathWithoutQueryAndAnchor, setAsPathWithoutQueryAndAnchor] = useState(''); useEffect(() => { setAsPathWithoutQueryAndAnchor(pathname?.split('?')[0]?.split('#')[0] ?? ''); }, [pathname]); const asPathWithoutContainerKey = useMemo( () => asPathWithoutQueryAndAnchor?.split(':')[0] ?? '', [asPathWithoutQueryAndAnchor], ); const pathElements = useMemo( () => asPathWithoutContainerKey .split('/') .slice(1) .map((path, idx, original) => ( {path} )), [asPathWithoutContainerKey], ); const breadcrumbs = useMemo( () => pathElements.flatMap((el, idx, array) => { if (idx === 0) { return (
/
{el}
/
); } if (idx !== array.length - 1) { return ( {el}
/
); } return {el}; }), [pathElements], ); return (
{breadcrumbs}
); }