import { useState, useRef, useEffect } from 'react'; import { Link } from 'react-router-dom'; import { useTeam } from '../contexts/TeamContext'; import { useAuth } from '../contexts/AuthContext'; import { TeamDetail } from '../types'; import './TeamSelector.css'; export function TeamSelector() { const { user } = useAuth(); const { teams, currentTeam, loading, setCurrentTeam } = useTeam(); const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); // Close dropdown when clicking outside useEffect(() => { function handleClickOutside(event: MouseEvent) { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setIsOpen(false); } } document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); // Don't show if not authenticated if (!user) { return null; } const handleTeamSelect = (team: TeamDetail) => { setCurrentTeam(team); setIsOpen(false); }; const roleColors: Record = { owner: 'var(--color-success)', admin: 'var(--color-primary)', member: 'var(--color-text-muted)', }; return (
{isOpen && (
{teams.length === 0 ? (

You're not a member of any teams yet.

setIsOpen(false)} > Create your first team
) : ( <>
    {teams.map(team => (
  • ))}
setIsOpen(false)} > View all teams setIsOpen(false)} > + New Team
)}
)}
); }