First pass

This commit is contained in:
2025-12-25 22:10:06 -07:00
parent a2af6195f9
commit 455c3dbd9a
58 changed files with 10299 additions and 3 deletions

View 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>