--- import DashboardLayout from '../../../layouts/DashboardLayout.astro'; import { Icon } from 'astro-icon/components'; import { db } from '../../../db'; import { categories, members, organizations } from '../../../db/schema'; import { eq } from 'drizzle-orm'; const user = Astro.locals.user; if (!user) return Astro.redirect('/login'); // Get current team from cookie const currentTeamId = Astro.cookies.get('currentTeamId')?.value; const userMemberships = await db.select() .from(members) .where(eq(members.userId, user.id)) .all(); if (userMemberships.length === 0) return Astro.redirect('/dashboard'); // Use current team or fallback to first membership const userMembership = currentTeamId ? userMemberships.find(m => m.organizationId === currentTeamId) || userMemberships[0] : userMemberships[0]; const isAdmin = userMembership.role === 'owner' || userMembership.role === 'admin'; if (!isAdmin) return Astro.redirect('/dashboard/team'); const orgId = userMembership.organizationId; const organization = await db.select() .from(organizations) .where(eq(organizations.id, orgId)) .get(); if (!organization) return Astro.redirect('/dashboard'); const allCategories = await db.select() .from(categories) .where(eq(categories.organizationId, orgId)) .all(); const url = new URL(Astro.request.url); const successType = url.searchParams.get('success'); ---

Team Settings

Team Settings

{successType === 'org-name' && (
Team information updated successfully!
)}
Team Logo
{organization.logoUrl ? ( {organization.name} ) : ( )}
Upload a company logo (PNG, JPG).
Will be displayed on invoices and quotes.
Address Information
Address information appears on invoices and quotes

Work Categories

Add Category

Categories help organize time tracking by type of work. All team members use the same categories.

{allCategories.length === 0 ? (
No categories yet
Create your first category to start organizing time entries.
) : (
{allCategories.map(category => (
{category.color && ( )}

{category.name}

Created {category.createdAt?.toLocaleDateString() ?? 'N/A'}

))}
)}