'use client' import Link from 'next/link' import { usePathname, useRouter } from 'next/navigation' import { useState } from 'react' import { cn } from '@/lib/utils' import { signOut } from '@/lib/auth-actions' import type { SpaceMember, Space } from '@/lib/types' import { Menu, X, LayoutDashboard, ListChecks, FolderKanban, Settings2, MessageSquare, Users, CreditCard, BookUser, Download, LogOut, } from 'lucide-react' function NavLink({ href, label, icon: Icon, badge, active, onClick, }: { href: string label: string icon: React.ElementType badge?: number active: boolean onClick?: () => void }) { return ( {label} {badge && badge > 0 ? ( {badge} ) : null} ) } // Bottom nav items for mobile const MOBILE_NAV = [ { label: 'Home', href: '/dashboard', icon: LayoutDashboard }, { label: 'Tasks', href: '/tasks', icon: ListChecks }, { label: 'Comms', href: '/comms', icon: MessageSquare }, { label: 'Members', href: '/members', icon: Users }, { label: 'More', href: null, icon: Menu }, ] interface AppSidebarProps { member: SpaceMember & { spaces: Space } taskBadge?: number commsBadge?: number paymentBadge?: number } export function AppSidebar({ member, taskBadge = 0, commsBadge = 0, paymentBadge = 0 }: AppSidebarProps) { const pathname = usePathname() const router = useRouter() const space = member.spaces const initials = member.display_name.split(' ').map(n => n[0]).join('').toUpperCase().slice(0, 2) const isAdmin = member.role === 'admin' || member.role === 'board' const [drawerOpen, setDrawerOpen] = useState(false) function isActive(href: string) { return pathname === href || pathname.startsWith(href + '/') } async function handleSignOut() { await signOut() } const SidebarContent = ({ onNav }: { onNav?: () => void }) => ( <> {/* Logo */}
{'{'}hs{'}'}

{space?.name || 'My Space'}

{/* Nav */} {/* User */}
) return ( <> {/* ── Desktop sidebar ─────────────────────────────────── */} {/* ── Mobile: top bar ──────────────────────────────────── */}
hs
{space?.name}
{/* ── Mobile: full drawer ──────────────────────────────── */} {drawerOpen && (
{/* Backdrop */}
setDrawerOpen(false)} /> {/* Drawer */}
Menu
setDrawerOpen(false)} />
)} ) }