import { getRootHref } from '@documenso/lib/utils/params'; import { trpc } from '@documenso/trpc/react'; import { cn } from '@documenso/ui/lib/utils'; import { Button } from '@documenso/ui/primitives/button'; import { ReadStatus } from '@prisma/client'; import { InboxIcon, MenuIcon, SearchIcon } from 'lucide-react'; import { type HTMLAttributes, useEffect, useState } from 'react'; import { Link, useParams } from 'react-router'; 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 { OrgMenuSwitcher } from './org-menu-switcher'; export type HeaderProps = HTMLAttributes & { /** Span the full viewport width instead of the centered max-w-screen-xl container. */ fullWidth?: boolean; }; export const Header = ({ className, fullWidth = false, ...props }: HeaderProps) => { const params = useParams(); const [isCommandMenuOpen, setIsCommandMenuOpen] = useState(false); const [isHamburgerMenuOpen, setIsHamburgerMenuOpen] = useState(false); const [scrollY, setScrollY] = useState(0); const { data: unreadCountData } = trpc.document.inbox.getCount.useQuery( { readStatus: ReadStatus.NOT_OPENED, }, { // refetchInterval: 30000, // Refetch every 30 seconds }, ); useEffect(() => { const onScroll = () => { setScrollY(window.scrollY); }; window.addEventListener('scroll', onScroll); return () => window.removeEventListener('scroll', onScroll); }, []); return (
5 || fullWidth) && 'border-b-border', className, )} {...props} >
); };