59 lines
2.4 KiB
TypeScript
59 lines
2.4 KiB
TypeScript
import React from 'react';
|
|
import Link from 'next/link';
|
|
import AdminNavItem from './components/AdminNavItem';
|
|
import SignOutButton from './components/SignOutButton';
|
|
import { getSession } from '@/app/lib/auth';
|
|
import './admin.css';
|
|
|
|
export default async function AdminLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) {
|
|
const session = await getSession();
|
|
|
|
return (
|
|
<div className="admin-layout">
|
|
<aside className="admin-sidebar">
|
|
<div className="admin-sidebar-header">
|
|
<Link href="/admin" className="admin-logo">
|
|
LUNA <span>ADMIN</span>
|
|
</Link>
|
|
</div>
|
|
<nav className="admin-nav">
|
|
<AdminNavItem href="/admin">
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><rect x="3" y="3" width="7" height="7" /><rect x="14" y="3" width="7" height="7" /><rect x="14" y="14" width="7" height="7" /><rect x="3" y="14" width="7" height="7" /></svg>
|
|
Dashboard
|
|
</AdminNavItem>
|
|
<AdminNavItem href="/admin/categories">
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z" /></svg>
|
|
Kategoriler
|
|
</AdminNavItem>
|
|
<AdminNavItem href="/admin/items">
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" /></svg>
|
|
Ürünler
|
|
</AdminNavItem>
|
|
</nav>
|
|
<div className="admin-sidebar-footer">
|
|
<Link href="/" target="_blank" className="admin-view-site">
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" /><polyline points="15 3 21 3 21 9" /><line x1="10" y1="14" x2="21" y2="3" /></svg>
|
|
Siteyi Görüntüle
|
|
</Link>
|
|
</div>
|
|
</aside>
|
|
<main className="admin-main">
|
|
<header className="admin-header">
|
|
<div className="admin-header-title">Panel</div>
|
|
<div style={{ display: 'flex', alignItems: 'center', gap: '1.5rem' }}>
|
|
<div className="admin-user">{session?.username || 'Admin'}</div>
|
|
<SignOutButton />
|
|
</div>
|
|
</header>
|
|
<div className="admin-content">
|
|
{children}
|
|
</div>
|
|
</main>
|
|
</div>
|
|
);
|
|
}
|