import { type HTMLAttributes, useEffect, useState } from 'react'; import { MenuIcon, SearchIcon } from 'lucide-react'; import { Link, useLocation, useParams } from 'react-router'; import type { SessionUser } from '@documenso/auth/server/lib/session/session'; 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 { BrandingLogo } from '~/components/general/branding-logo'; import { AppCommandMenu } from './app-command-menu'; import { AppNavDesktop } from './app-nav-desktop'; import { AppNavMobile } from './app-nav-mobile'; import { MenuSwitcher } from './menu-switcher'; export type HeaderProps = HTMLAttributes & { user: SessionUser; teams: TGetTeamsResponse; }; export const Header = ({ className, user, teams, ...props }: HeaderProps) => { const params = useParams(); const { pathname } = useLocation(); 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} >
); };