-
+
+
+
+
{title}
+ {icon && (
+
+
+
+ )}
- )}
-
{title}
-
{value}
- {description &&
{description}
}
+
{value}
+ {description &&
{description}
}
+
diff --git a/src/layouts/DashboardLayout.astro b/src/layouts/DashboardLayout.astro
index d8d7851..b6e7782 100644
--- a/src/layouts/DashboardLayout.astro
+++ b/src/layouts/DashboardLayout.astro
@@ -30,6 +30,20 @@ const userMemberships = await db.select({
const currentTeamId = Astro.cookies.get('currentTeamId')?.value || userMemberships[0]?.organization.id;
const currentTeam = userMemberships.find(m => m.organization.id === currentTeamId);
+
+const navItems = [
+ { href: '/dashboard', label: 'Dashboard', icon: 'heroicons:home', exact: true },
+ { href: '/dashboard/tracker', label: 'Time Tracker', icon: 'heroicons:clock' },
+ { href: '/dashboard/invoices', label: 'Invoices & Quotes', icon: 'heroicons:document-currency-dollar' },
+ { href: '/dashboard/reports', label: 'Reports', icon: 'heroicons:chart-bar' },
+ { href: '/dashboard/clients', label: 'Clients', icon: 'heroicons:building-office' },
+ { href: '/dashboard/team', label: 'Team', icon: 'heroicons:user-group' },
+];
+
+function isActive(item: { href: string; exact?: boolean }) {
+ if (item.exact) return Astro.url.pathname === item.href;
+ return Astro.url.pathname.startsWith(item.href);
+}
---
@@ -51,157 +65,137 @@ const currentTeam = userMemberships.find(m => m.organization.id === currentTeamI
-
-
-
-
+
-