import type { HTMLAttributes } from 'react'; import { useEffect, useMemo, useState } from 'react'; import { msg } from '@lingui/core/macro'; import { useLingui } from '@lingui/react'; import { Trans } from '@lingui/react/macro'; import { motion } from 'framer-motion'; import { AnimatePresence } from 'framer-motion'; import { Search } from 'lucide-react'; import { Link, useLocation } from 'react-router'; import { useSession } from '@documenso/lib/client-only/providers/session'; import { isPersonalLayout } from '@documenso/lib/utils/organisations'; import { cn } from '@documenso/ui/lib/utils'; import { Button } from '@documenso/ui/primitives/button'; import { useOptionalCurrentTeam } from '~/providers/team'; export type AppNavDesktopProps = HTMLAttributes & { setIsCommandMenuOpen: (value: boolean) => void; }; export const AppNavDesktop = ({ className, setIsCommandMenuOpen, ...props }: AppNavDesktopProps) => { const { _ } = useLingui(); const { organisations } = useSession(); const { pathname } = useLocation(); const [modifierKey, setModifierKey] = useState(() => 'Ctrl'); const currentTeam = useOptionalCurrentTeam(); useEffect(() => { const userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown'; const isMacOS = /Macintosh|Mac\s+OS\s+X/i.test(userAgent); setModifierKey(isMacOS ? '⌘' : 'Ctrl'); }, []); const menuNavigationLinks = useMemo(() => { let teamUrl = currentTeam?.url || null; if (!teamUrl && isPersonalLayout(organisations)) { teamUrl = organisations[0].teams[0]?.url || null; } if (!teamUrl) { return []; } return [ { href: `/t/${teamUrl}/documents`, label: msg`Documents`, }, { href: `/t/${teamUrl}/templates`, label: msg`Templates`, }, ]; }, [currentTeam, organisations]); return ( ); };