import React, { useState } from "react"; import { motion } from "framer-motion"; import { Search, Building2, Send, CheckCircle2, ArrowLeft, X } from "lucide-react"; import { useNavigate } from "react-router-dom"; import { organizationService } from "../services/organizationService"; interface OrgResult { id: number; name: string; } export const JoinOrganizationPage: React.FC = () => { const navigate = useNavigate(); const [query, setQuery] = useState(""); const [results, setResults] = useState(null); const [isLoading, setIsLoading] = useState(false); const [requestedId, setRequestedId] = useState(null); const handleSearch = async (e: React.FormEvent) => { e.preventDefault(); if (!query) return; setIsLoading(true); try { const data = await organizationService.search(query); setResults(data); } catch (error) { console.error("Search failed", error); } finally { setIsLoading(false); } }; const handleJoinRequest = async (id: number) => { try { await organizationService.requestJoin(id); setRequestedId(id); alert("Solicitação enviada! Aguarde a aprovação do dono da organização."); } catch (error) { console.error("Join request failed", error); alert( error instanceof Error ? error.message : "Erro ao enviar solicitação.", ); } }; return (

Buscar Organização

Encontre uma organização pelo nome

setQuery(e.target.value)} className="block w-full pl-12 pr-4 py-3.5 bg-surface-muted/50 border border-border-soft rounded-2xl text-text-main placeholder-text-muted/60 focus:outline-none focus:ring-4 focus:ring-brand/10 focus:border-brand transition-all font-medium" placeholder="Nome da organização..." />
{results && results.length > 0 ? ( results.map((org) => (
{org.name}
{requestedId === org.id ? (
Solicitado
) : ( )}
)) ) : results && results.length === 0 ? (

Nenhuma organização encontrada.

) : null}
); };