import { type HTMLAttributes, useEffect, useState } from 'react'; import type { User } from '@prisma/client'; import { MenuIcon, SearchIcon } from 'lucide-react'; import { Link, useLocation, useParams } from 'react-router'; import type { TGetTeamsResponse } from '@documenso/lib/server-only/team/get-teams'; import { getRootHref } from '@documenso/lib/utils/params'; import { cn } from '@documenso/ui/lib/utils'; import { Logo } from '~/components/branding/logo'; import { CommandMenu } from '../common/command-menu'; import { DesktopNav } from './desktop-nav'; import { MenuSwitcher } from './menu-switcher'; import { MobileNavigation } from './mobile-navigation'; export type HeaderProps = HTMLAttributes & { user: User; teams: TGetTeamsResponse; }; export const Header = ({ className, user, teams, ...props }: HeaderProps) => { const params = useParams(); const { pathname } = useLocation(); // Todo: Test const [isCommandMenuOpen, setIsCommandMenuOpen] = useState(false); const [isHamburgerMenuOpen, setIsHamburgerMenuOpen] = useState(false); const [scrollY, setScrollY] = useState(0); useEffect(() => { const onScroll = () => { setScrollY(window.scrollY); }; window.addEventListener('scroll', onScroll); return () => window.removeEventListener('scroll', onScroll); }, []); const isPathTeamUrl = (teamUrl: string) => { if (!pathname || !pathname.startsWith(`/t/`)) { return false; } return pathname.split('/')[2] === teamUrl; }; const selectedTeam = teams?.find((team) => isPathTeamUrl(team.url)); return ( 5 && 'border-b-border', className, )} {...props} > setIsCommandMenuOpen(true)}> setIsHamburgerMenuOpen(true)}> ); };