'use client'; import React from 'react'; import Link from 'next/link'; import { useSearchParams } from 'next/navigation'; import { Club, UserPortalPermissions } from './types'; interface FounderSidebarProps { club: Club; permissions: UserPortalPermissions; activeNav?: string; onNavSelect?: (nav: string) => void; pendingApplicationsCount?: number; upcomingRidesCount?: number; isOpenOnMobile?: boolean; onCloseMobile?: () => void; } export function FounderSidebar({ club, permissions, activeNav = 'overview', onNavSelect, pendingApplicationsCount = 0, upcomingRidesCount = 0, isOpenOnMobile = false, onCloseMobile, }: FounderSidebarProps) { const searchParams = useSearchParams(); const isDemo = searchParams?.get('preview') === 'demo'; const queryParam = isDemo ? '?preview=demo' : ''; const clubParam = club.slug || club.id; const shortCode = club.name .split(/\s+/) .filter(Boolean) .map((w) => w[0].toUpperCase()) .slice(0, 3) .join('') || 'ATL'; const navItemsTop = [ { id: 'overview', label: 'Overview', icon: 'dashboard', badge: 'ACTIVE', badgeType: 'primary', disabled: false }, { id: 'profile', label: 'Club Profile', icon: 'shield', disabled: false }, { id: 'members', label: 'Members', icon: 'group', disabled: false }, { id: 'applications', label: 'Applications', icon: 'person_add', badge: pendingApplicationsCount > 0 ? `${pendingApplicationsCount} PENDING` : undefined, badgeType: 'error', disabled: false, }, { id: 'ranks_roles', label: 'Ranks & Roles', icon: 'military_tech', disabled: false }, ]; const navItemsMiddle = [ { id: 'rides', label: 'Rides', icon: 'route', badge: upcomingRidesCount > 0 ? `${upcomingRidesCount}` : undefined, badgeType: 'secondary', disabled: false, }, { id: 'routes', label: 'Routes', icon: 'map', badge: 'SOON', badgeType: 'disabled', disabled: true }, { id: 'wall', label: 'Wall', icon: 'forum', disabled: false }, { id: 'chat', label: 'Chat', icon: 'chat', badge: 'SOON', badgeType: 'disabled', disabled: true }, { id: 'stats', label: 'Stats', icon: 'query_stats', disabled: false }, ]; const navItemsBottom = [ { id: 'moderation', label: 'Moderation', icon: 'gavel', disabled: false }, { id: 'settings', label: 'Settings', icon: 'settings', disabled: false }, ]; function getRouteHref(id: string) { if (id === 'overview') return `/clubs/${clubParam}/manage${queryParam}`; if (id === 'profile') return `/clubs/${clubParam}/manage/profile${queryParam}`; if (id === 'members') return `/clubs/${clubParam}/manage/members${queryParam}`; if (id === 'wall') return `/clubs/${clubParam}/manage/wall${queryParam}`; if (id === 'stats') return `/clubs/${clubParam}/manage/stats${queryParam}`; if (id === 'moderation') return `/clubs/${clubParam}/manage/moderation${queryParam}`; if (id === 'applications') return `/clubs/${clubParam}/manage/applications${queryParam}`; if (id === 'ranks_roles') return `/clubs/${clubParam}/manage/ranks-roles${queryParam}`; if (id === 'rides') return `/clubs/${clubParam}/manage/rides${queryParam}`; if (id === 'settings') return `/clubs/${clubParam}/manage/settings${queryParam}`; return undefined; } function handleItemClick(id: string) { onNavSelect?.(id); onCloseMobile?.(); } function renderNavItem(item: { id: string; label: string; icon: string; badge?: string; badgeType?: string; disabled?: boolean; }) { const isActive = activeNav === item.id; const href = !item.disabled ? getRouteHref(item.id) : undefined; const isProfile = item.id === 'profile'; const isSettings = item.id === 'settings'; const isApplications = item.id === 'applications'; const isRides = item.id === 'rides'; const isSubRoute = isProfile || isSettings || isApplications || isRides || item.id === 'ranks_roles' || item.id === 'members' || item.id === 'wall' || item.id === 'stats' || item.id === 'moderation'; if (item.disabled) { return (