@@ -5,9 +5,26 @@ import Header from './Header';
55import Sidebar from './Sidebar' ;
66import MobileMenu from './MobileMenu' ;
77
8+ const hasEmbeddedMode = ( search : string ) =>
9+ new URLSearchParams ( search ) . get ( 'mode' ) === 'embed' ;
10+
11+ const isEmbeddedMode = ( ) => {
12+ if ( typeof window === 'undefined' ) {
13+ return false ;
14+ }
15+
16+ const hashQueryIndex = window . location . hash . indexOf ( '?' ) ;
17+ const hashQuery =
18+ hashQueryIndex > - 1 ? window . location . hash . slice ( hashQueryIndex + 1 ) : '' ;
19+
20+ return hasEmbeddedMode ( window . location . search ) || hasEmbeddedMode ( hashQuery ) ;
21+ } ;
22+
823export default function Layout ( ) {
924 const [ mobileMenuOpen , setMobileMenuOpen ] = useState ( false ) ;
1025
26+ const embedded = isEmbeddedMode ( ) ;
27+
1128 const handleBurgerClick = ( ) => {
1229 setMobileMenuOpen ( true ) ;
1330 } ;
@@ -18,16 +35,16 @@ export default function Layout() {
1835
1936 return (
2037 < div className = "app-container" >
21- < Header onBurgerClick = { handleBurgerClick } />
38+ { ! embedded && < Header onBurgerClick = { handleBurgerClick } /> }
2239
2340 < div className = "layout-body" >
24- < Sidebar /> { /* Hidden on mobile via CSS */ }
41+ { ! embedded && < Sidebar /> } { /* Hidden on mobile via CSS */ }
2542 < main className = "main-content" >
2643 < Outlet />
2744 </ main >
2845 </ div >
2946
30- { mobileMenuOpen && (
47+ { ! embedded && mobileMenuOpen && (
3148 < MobileMenu onClose = { handleMenuClose } />
3249 ) }
3350 </ div >
0 commit comments