This commit is contained in:
2026-06-30 10:33:56 +08:00
commit 6e047dc0a5
607 changed files with 65966 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
import { NavLink, Outlet, useNavigate } from 'react-router-dom';
import { isLoggedIn } from '../lib/api';
const TABS = [
{ to: '/', end: true, icon: 'home', label: '首页', fillActive: false },
{ to: '/stores', icon: 'storefront', label: '门店', fillActive: true },
{ to: '/benefit', icon: 'card_giftcard', label: '好客权益', fillActive: false },
{ to: '/mine', icon: 'person', label: '我的', fillActive: true },
] as const;
export default function TabLayout() {
const navigate = useNavigate();
if (!isLoggedIn()) {
navigate('/login');
return null;
}
return (
<>
<Outlet />
<nav className="app-tabbar">
{TABS.map((tab) => (
<NavLink
key={tab.to}
to={tab.to}
end={tab.end}
className={({ isActive }) => `app-tabbar-item${isActive ? ' active' : ''}`}
>
{({ isActive }) => (
<>
<span
className="material-symbols-outlined app-tabbar-icon"
style={
isActive && tab.fillActive
? { fontVariationSettings: "'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24" }
: undefined
}
>
{tab.icon}
</span>
<span className="app-tabbar-label">{tab.label}</span>
</>
)}
</NavLink>
))}
</nav>
</>
);
}