'use client'; import { useEffect, useSyncExternalStore } from 'react'; import { Search, MessageSquare } from 'lucide-react'; import { useSearchContext } from '@fumadocs/ui/contexts/search'; import { useI18n } from '@fumadocs/ui/contexts/i18n'; import { toggleEveChat } from './eve-chat-store'; export function detectMac(): boolean { try { if ('userAgentData' in navigator) { const platform = (navigator as Navigator & { userAgentData?: { platform?: string } }).userAgentData?.platform; if (platform) { return platform === 'macOS'; } } return /mac/i.test(navigator.platform); } catch { return true; // default to Mac } } function useIsMac() { return useSyncExternalStore( () => () => {}, detectMac, () => true, ); } const handleKeyDown = (e: KeyboardEvent) => { if ((e.metaKey || e.ctrlKey) && e.key === 'i') { e.preventDefault(); toggleEveChat(); } }; function useAskAIShortcut() { useEffect(() => { document.addEventListener('keydown', handleKeyDown); return () => document.removeEventListener('keydown', handleKeyDown); }, []); } /** Desktop: search bar + Ask AI button side by side */ export function SearchAndAskAI() { const { enabled, hotKey, setOpenSearch } = useSearchContext(); const { text } = useI18n(); useAskAIShortcut(); const isMac = useIsMac(); return ( <> {enabled && ( )} ); } /** Mobile: search icon + Ask AI icon, shown below lg breakpoint */ export function SearchAndAskAIMobile() { const { enabled, setOpenSearch } = useSearchContext(); return ( <> {enabled && ( )} ); }