@@ -14,14 +14,17 @@ import { Breadcrumbs } from 'src/frame/components/page-header/Breadcrumbs'
1414import { VersionPicker } from 'src/versions/components/VersionPicker'
1515import { SidebarNav } from 'src/frame/components/sidebar/SidebarNav'
1616import { AllProductsLink } from 'src/frame/components/sidebar/AllProductsLink'
17-
18- import styles from './Header.module.scss'
17+ import { SearchBarButton } from '@/search/components/input/SearchBarButton'
1918import { OldHeaderSearchAndWidgets } from './OldHeaderSearchAndWidgets'
2019import { HeaderSearchAndWidgets } from './HeaderSearchAndWidgets'
2120import { useInnerWindowWidth } from './hooks/useInnerWindowWidth'
2221import { EXPERIMENTS } from '@/events/components/experiments/experiments'
2322import { useShouldShowExperiment } from '@/events/components/experiments/useShouldShowExperiment'
2423import { useQueryParam } from '@/frame/components/hooks/useQueryParam'
24+ import { useMultiQueryParams } from '@/search/components/hooks/useMultiQueryParams'
25+ import { SearchOverlayContainer } from '@/search/components/input/SearchOverlayContainer'
26+
27+ import styles from './Header.module.scss'
2528
2629export const Header = ( ) => {
2730 const router = useRouter ( )
@@ -34,6 +37,7 @@ export const Header = () => {
3437 'search-overlay-open' ,
3538 true ,
3639 )
40+ const { params, updateParams } = useMultiQueryParams ( )
3741 const [ scroll , setScroll ] = useState ( false )
3842 const [ isSidebarOpen , setIsSidebarOpen ] = useState ( false )
3943 const openSidebar = useCallback ( ( ) => setIsSidebarOpen ( true ) , [ isSidebarOpen ] )
@@ -45,8 +49,20 @@ export const Header = () => {
4549 const isEarlyAccessPage = currentProduct && currentProduct . id === 'early-access'
4650 const { width } = useInnerWindowWidth ( )
4751 const returnFocusRef = useRef ( null )
52+ const searchButtonRef = useRef < HTMLButtonElement > ( null )
4853
4954 const showNewSearch = useShouldShowExperiment ( EXPERIMENTS . ai_search_experiment )
55+ let SearchButton : JSX . Element | null = (
56+ < SearchBarButton
57+ isSearchOpen = { isSearchOpen }
58+ setIsSearchOpen = { setIsSearchOpen }
59+ params = { params }
60+ searchButtonRef = { searchButtonRef }
61+ />
62+ )
63+ if ( ! showNewSearch ) {
64+ SearchButton = null
65+ }
5066
5167 useEffect ( ( ) => {
5268 function onScroll ( ) {
@@ -166,14 +182,16 @@ export const Header = () => {
166182 < MarkGithubIcon size = { 32 } />
167183 < span className = "h4 text-semibold ml-2 mr-3" > { t ( 'github_docs' ) } </ span >
168184 </ Link >
169- < div className = "hide-sm border-left pl-3" >
185+ < div className = "hide-sm border-left pl-3 d-flex flex-items-center " >
170186 < VersionPicker />
187+ { /* In larger viewports, we want to show the search bar next to the version picker */ }
188+ < div className = { styles . displayOverLarge } > { SearchButton } </ div >
171189 </ div >
172190 </ div >
173191 { showNewSearch ? (
174192 < HeaderSearchAndWidgets
175193 isSearchOpen = { isSearchOpen }
176- setIsSearchOpen = { setIsSearchOpen }
194+ SearchButton = { SearchButton }
177195 width = { width }
178196 />
179197 ) : (
@@ -246,6 +264,15 @@ export const Header = () => {
246264 </ div >
247265 </ div >
248266 ) }
267+ { showNewSearch && (
268+ < SearchOverlayContainer
269+ isSearchOpen = { isSearchOpen }
270+ setIsSearchOpen = { setIsSearchOpen }
271+ params = { params }
272+ updateParams = { updateParams }
273+ searchButtonRef = { searchButtonRef }
274+ />
275+ ) }
249276 </ header >
250277 </ div >
251278 )
0 commit comments