import React from 'react' import cx from 'classnames' import { IconButton } from '@primer/react' import { CopilotIcon, SearchIcon } from '@primer/octicons-react' import { useTranslation } from '@/languages/components/useTranslation' import { QueryParams } from '@/search/components/hooks/useMultiQueryParams' import styles from './SearchBarButton.module.scss' type Props = { isSearchOpen: boolean setIsSearchOpen: (value: boolean) => void params: QueryParams searchButtonRef: React.RefObject instanceId?: string } export function SearchBarButton({ isSearchOpen, setIsSearchOpen, params, searchButtonRef, instanceId, }: Props) { const { t } = useTranslation('search') const urlSearchInputQuery = params['search-overlay-input'] // Handle click events const handleClick = (e: React.MouseEvent) => { e.preventDefault() setIsSearchOpen(true) } // Handle key down events const handleKeyDown = (event: React.KeyboardEvent) => { if (event.key === 'Enter' || event.key === 'Space') { event.preventDefault() setIsSearchOpen(true) } else if (event.key === 'Escape') { event.preventDefault() setIsSearchOpen(false) } } const placeHolderElements = t('search.input.placeholder') .split(/({{[^}]+}})/) .filter((item) => item.trim() !== '') .map((item, index) => {item.trim()}) placeHolderElements[1] = return ( <> {/* We don't want to show the input when overlay is open */} {!isSearchOpen ? ( <> {/* On mobile only the IconButton is shown */} {/* On large and up the SearchBarButton is shown */} ) : null} ) }