fanzha / src /components /layout /ChildrenLayout.tsx
luoleyuan's picture
Initial commit
82d14ef
import React from 'react';
import { Outlet, useNavigate, useLocation } from 'react-router-dom';
import { Home, BookOpen, Bot, Grid, User } from 'lucide-react';
const ChildrenLayout: React.FC = () => {
const navigate = useNavigate();
const location = useLocation();
const navItems = [
{ path: '/children/home', icon: <Home size={24} />, label: '首页' },
{ path: '/children/news', icon: <BookOpen size={24} />, label: '资讯' },
{ path: '/children/ai-chat', icon: <Bot size={24} />, label: 'AI助手' },
{ path: '/children/services', icon: <Grid size={24} />, label: '服务站' },
{ path: '/children/profile', icon: <User size={24} />, label: '我的' },
];
return (
<div className="flex flex-col min-h-screen bg-gray-50 text-gray-900 font-sans">
<main className="flex-1 overflow-y-auto pb-20">
<Outlet />
</main>
<nav className="fixed bottom-0 left-0 right-0 bg-white border-t border-gray-200 flex justify-around items-center h-16 px-2 shadow-[0_-4px_10px_rgba(0,0,0,0.05)] z-50">
{navItems.map((item) => {
const isActive = location.pathname.startsWith(item.path);
return (
<button
key={item.path}
onClick={() => navigate(item.path)}
className={`flex flex-col items-center justify-center w-full h-full space-y-1 transition-colors ${
isActive ? 'text-blue-600' : 'text-gray-500 hover:text-gray-700'
}`}
>
{item.icon}
<span className={`text-[10px] ${isActive ? 'font-bold' : 'font-medium'}`}>{item.label}</span>
</button>
);
})}
</nav>
</div>
);
};
export default ChildrenLayout;