@@ -1783,6 +1783,9 @@ export function MasterSearchHeader({
17831783 function renderSearchComposer ( placement : "default" | "desktop-home" | "desktop-page" ) {
17841784 const isDesktopHomeComposer = placement === "desktop-home" ;
17851785 const isDesktopPageComposer = placement === "desktop-page" ;
1786+ const isDefaultComposer = placement === "default" ;
1787+ const isPageDesktopComposerPending =
1788+ isDefaultComposer && Boolean ( desktopPageComposerSlotId ) && ! desktopComposerPortalFallback ;
17861789 const usesAnswerFooterStyle = isAnswerFooterComposer && ! isDesktopHomeComposer ;
17871790 const usesMobileBottomStyle = isMobileBottomComposer && ! isDesktopHomeComposer ;
17881791 const usesBottomComposerPlacement = usesAnswerFooterStyle || ( usesMobileBottomStyle && usesPhoneSearchLayout ) ;
@@ -1903,6 +1906,7 @@ export function MasterSearchHeader({
19031906 "universal-top-search-edge mx-auto box-border w-full px-3 py-3 sm:px-4" ,
19041907 stickySearchOwnedByOuterStack ? "relative z-20" : cn ( "sticky z-20" , stickySearchTopClass ) ,
19051908 ) ,
1909+ isPageDesktopComposerPending && "sm:hidden" ,
19061910 usesBottomComposerPlacement && "answer-footer-search-edge" ,
19071911 usesPhoneFooterDock && "answer-footer-search-dock" ,
19081912 usesCompactMobileBottomStyle && "document-mobile-search-compact" ,
@@ -2495,16 +2499,18 @@ export function MasterSearchHeader({
24952499 const portalPlacement = desktopHomeComposerSlotId ? "desktop-home" : "desktop-page" ;
24962500 const homePortalPending =
24972501 Boolean ( desktopHomeComposerSlotId ) && homeComposerMediaEligible && ! desktopComposerPortalFallback ;
2498- const pagePortalPending =
2499- Boolean ( desktopPageComposerSlotId ) && ! usesPhoneSearchLayout && ! desktopComposerPortalFallback ;
2500- const portalPending = homePortalPending || pagePortalPending ;
2502+ const portalPending = homePortalPending ;
25012503 const searchComposer = searchComposerVisible ? (
25022504 < >
25032505 { /* ModeHomeTemplate and desktop page slots reserve their settled geometry
25042506 in SSR, so a temporary header fallback would make the stack grow and
25052507 shift all main content when the portal attaches (CLS 0.118 on desktop
2506- /documents/search). A failed adoption restores the header fallback after
2507- the bounded retry window above. */ }
2508+ /documents/search). Mode home routes suppress the header fallback entirely
2509+ because the hero slot in the page body reserves geometry during SSR;
2510+ generic page slots keep the phone fallback rendered during SSR and
2511+ unknown media state while applying sm:hidden so the desktop fallback
2512+ never renders over the reserved page slot. A failed adoption restores
2513+ the header fallback after the bounded retry window above. */ }
25082514 { desktopComposerPortalActive && desktopComposerPortalHost
25092515 ? null
25102516 : portalPending
0 commit comments