返回 AiToEarn
index.tsx
1 /**
2 * MainContent - 主内容区域包装组件
3 * 根据当前路由动态控制顶部和底部间距(用于移动端顶部栏与底部导航栏占位)
4 */
5 'use client'
6
7 import { useNavigationLogic } from '@/app/layout/shared/hooks/useNavigationLogic'
8 import { cn } from '@/utils/className'
9
10 interface MainContentProps {
11 children: React.ReactNode
12 banner?: React.ReactNode
13 }
14
15 export function MainContent({ children, banner }: MainContentProps) {
16 const { isAuthPage, isBottomNavHidden } = useNavigationLogic()
17
18 return (
19 <main
20 className={cn(
21 'flex-1 min-h-0 min-w-0 flex flex-col',
22 // 非 auth 页面需要为移动端顶部栏和 BottomBar 留空间
23 !isAuthPage && 'pt-14 md:pt-0',
24 !isBottomNavHidden && 'pb-20 md:pb-0',
25 )}
26 >
27 {banner}
28 <div
29 id="main-content"
30 className="flex-1 min-h-0 overflow-y-auto overflow-x-hidden"
31 >
32 {children}
33 </div>
34 </main>
35 )
36 }
37
37 lines Plain Text