feat: Next.js 14 web admin scaffold — auth, sidebar, dashboard, placeholders

This commit is contained in:
Forge
2026-03-25 08:23:25 +08:00
parent dc01eac449
commit 310a9453de
37 changed files with 2755 additions and 292 deletions

32
app/(app)/layout.tsx Normal file
View File

@@ -0,0 +1,32 @@
'use client';
import { useEffect } from 'react';
import { useRouter } from 'next/navigation';
import { useAuthStore } from '@/lib/auth-store';
import Sidebar from '@/components/layout/sidebar';
import Topbar from '@/components/layout/topbar';
export default function AppLayout({ children }: { children: React.ReactNode }) {
const router = useRouter();
const accessToken = useAuthStore((s) => s.accessToken);
useEffect(() => {
if (!accessToken) {
router.replace('/login');
}
}, [accessToken, router]);
if (!accessToken) {
return null;
}
return (
<div className="flex min-h-screen" style={{ backgroundColor: '#F8FAFC' }}>
<Sidebar />
<div className="flex-1 flex flex-col overflow-hidden">
<Topbar />
<main className="flex-1 overflow-y-auto p-6">{children}</main>
</div>
</div>
);
}