First pass
This commit is contained in:
85
src/layouts/DashboardLayout.astro
Normal file
85
src/layouts/DashboardLayout.astro
Normal file
@@ -0,0 +1,85 @@
|
||||
---
|
||||
import '../styles/global.css';
|
||||
import { Icon } from 'astro-icon/components';
|
||||
|
||||
interface Props {
|
||||
title: string;
|
||||
}
|
||||
|
||||
const { title } = Astro.props;
|
||||
const user = Astro.locals.user;
|
||||
|
||||
if (!user) {
|
||||
return Astro.redirect('/login');
|
||||
}
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en" data-theme="dark">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="description" content="Zamaan Dashboard" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<meta name="generator" content={Astro.generator} />
|
||||
<title>{title}</title>
|
||||
</head>
|
||||
<body class="bg-base-100 text-base-content">
|
||||
<div class="drawer lg:drawer-open">
|
||||
<input id="my-drawer-2" type="checkbox" class="drawer-toggle" />
|
||||
<div class="drawer-content flex flex-col">
|
||||
<!-- Navbar -->
|
||||
<div class="w-full navbar bg-base-100 border-b border-base-200 lg:hidden">
|
||||
<div class="flex-none lg:hidden">
|
||||
<label for="my-drawer-2" aria-label="open sidebar" class="btn btn-square btn-ghost">
|
||||
<Icon name="heroicons:bars-3" class="w-6 h-6" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="flex-1 px-2 mx-2">Zamaan</div>
|
||||
</div>
|
||||
|
||||
<!-- Page content here -->
|
||||
<main class="p-6">
|
||||
<slot />
|
||||
</main>
|
||||
</div>
|
||||
<div class="drawer-side">
|
||||
<label for="my-drawer-2" aria-label="close sidebar" class="drawer-overlay"></label>
|
||||
<ul class="menu p-4 w-80 min-h-full bg-base-300 text-base-content">
|
||||
<!-- Sidebar content here -->
|
||||
<li class="mb-4">
|
||||
<a href="/dashboard" class="text-xl font-bold px-2">Zamaan</a>
|
||||
</li>
|
||||
<li><a href="/dashboard">Dashboard</a></li>
|
||||
<li><a href="/dashboard/tracker">Time Tracker</a></li>
|
||||
<li><a href="/dashboard/reports">Reports</a></li>
|
||||
<li><a href="/dashboard/clients">Clients</a></li>
|
||||
<li><a href="/dashboard/team">Team</a></li>
|
||||
{user.isSiteAdmin && (
|
||||
<>
|
||||
<div class="divider"></div>
|
||||
<li><a href="/admin" class="font-semibold">⚙️ Site Admin</a></li>
|
||||
</>
|
||||
)}
|
||||
<div class="divider"></div>
|
||||
<li>
|
||||
<div class="flex items-center gap-2">
|
||||
<div class="avatar placeholder">
|
||||
<div class="bg-neutral text-neutral-content rounded-full w-8">
|
||||
<span class="text-xs">{user.name.charAt(0)}</span>
|
||||
</div>
|
||||
</div>
|
||||
<span>{user.name}</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<form action="/api/auth/logout" method="POST">
|
||||
<button type="submit">Logout</button>
|
||||
</form>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user