11import { useRouter } from 'next/router' ;
2- import { ReactNode , useMemo } from 'react' ;
2+ import { ReactNode , useMemo , useState } from 'react' ;
33
44import Header from '@/components/layout/Header' ;
55import { Side } from '@/components/side/Side' ;
6-
7- import TagList from '../side/TagList' ;
6+ import TagList from '@/components/side/TagList' ;
87
98interface LayoutProps {
109 children : ReactNode ;
@@ -13,6 +12,15 @@ interface LayoutProps {
1312const Layout : React . FC < LayoutProps > = ( { children } ) => {
1413 const router = useRouter ( ) ;
1514 const { pathname } = router ;
15+ const [ showHeaderAd , setShowHeaderAd ] = useState ( false ) ;
16+
17+ const handleShowAd = ( ) => {
18+ setShowHeaderAd ( true ) ;
19+ } ;
20+
21+ const handleColseAd = ( ) => {
22+ setShowHeaderAd ( false ) ;
23+ } ;
1624
1725 const isSinglePage = useMemo ( ( ) => {
1826 const singlePageRoutes = [
@@ -23,15 +31,21 @@ const Layout: React.FC<LayoutProps> = ({ children }) => {
2331 return singlePageRoutes . includes ( pathname ) ;
2432 } , [ pathname ] ) ;
2533
34+ const ptValue = showHeaderAd ? '5.5rem' : '3.5rem' ;
35+ const topValue = showHeaderAd ? '6rem' : '4rem' ;
36+
2637 return (
2738 < >
28- < Header />
29- < main className = 'container mx-auto px-0 pt-14 xl:px-40 2xl:px-56' >
39+ < Header hiddenAd = { handleColseAd } showAd = { handleShowAd } />
40+ < main
41+ className = 'container mx-auto px-0 xl:px-40 2xl:px-56'
42+ style = { { paddingTop : ptValue } }
43+ >
3044 { isSinglePage ? (
3145 < div > { children } </ div >
3246 ) : (
3347 < div className = 'flex flex-row md:border-none' >
34- { pathname === '/' && < TagList /> }
48+ { pathname === '/' && < TagList topValue = { topValue } /> }
3549 < div
3650 className = { `relative ${
3751 pathname === '/'
@@ -42,7 +56,7 @@ const Layout: React.FC<LayoutProps> = ({ children }) => {
4256 { children }
4357 </ div >
4458 < div className = 'relative hidden w-3/12 shrink-0 md:block' >
45- < Side isHome = { pathname === '/' } />
59+ < Side isHome = { pathname === '/' } topValue = { topValue } />
4660 </ div >
4761 </ div >
4862 ) }
0 commit comments