import React, { useState } from 'react'; import { Users, Camera, Mail, Phone, MapPin, Star, Plus, Search, Filter, User } from 'lucide-react'; import { Button } from '../components/Button'; interface Photographer { id: string; name: string; email: string; phone: string; location: string; specialties: string[]; rating: number; eventsCompleted: number; status: 'active' | 'inactive' | 'busy'; avatar: string; joinDate: string; } const MOCK_PHOTOGRAPHERS: Photographer[] = [ { id: '1', name: 'Carlos Silva', email: 'carlos.silva@photum.com', phone: '(41) 99999-1111', location: 'Curitiba, PR', specialties: ['Formaturas', 'Eventos Corporativos'], rating: 4.8, eventsCompleted: 45, status: 'active', avatar: 'https://i.pravatar.cc/150?img=12', joinDate: '2023-01-15' }, { id: '2', name: 'Ana Paula Mendes', email: 'ana.mendes@photum.com', phone: '(41) 99999-2222', location: 'Curitiba, PR', specialties: ['Casamentos', 'Formaturas'], rating: 4.9, eventsCompleted: 62, status: 'busy', avatar: 'https://i.pravatar.cc/150?img=5', joinDate: '2022-08-20' }, { id: '3', name: 'Roberto Costa', email: 'roberto.costa@photum.com', phone: '(41) 99999-3333', location: 'São José dos Pinhais, PR', specialties: ['Formaturas', 'Eventos Sociais'], rating: 4.7, eventsCompleted: 38, status: 'active', avatar: 'https://i.pravatar.cc/150?img=33', joinDate: '2023-03-10' }, { id: '4', name: 'Juliana Santos', email: 'juliana.santos@photum.com', phone: '(41) 99999-4444', location: 'Curitiba, PR', specialties: ['Casamentos', 'Ensaios'], rating: 5.0, eventsCompleted: 71, status: 'active', avatar: 'https://i.pravatar.cc/150?img=9', joinDate: '2022-05-12' }, { id: '5', name: 'Fernando Oliveira', email: 'fernando.oliveira@photum.com', phone: '(41) 99999-5555', location: 'Pinhais, PR', specialties: ['Eventos Corporativos', 'Formaturas'], rating: 4.6, eventsCompleted: 29, status: 'inactive', avatar: 'https://i.pravatar.cc/150?img=15', joinDate: '2023-07-01' }, { id: '6', name: 'Mariana Rodrigues', email: 'mariana.rodrigues@photum.com', phone: '(41) 99999-6666', location: 'Curitiba, PR', specialties: ['Formaturas', 'Eventos Sociais', 'Casamentos'], rating: 4.9, eventsCompleted: 54, status: 'busy', avatar: 'https://i.pravatar.cc/150?img=10', joinDate: '2022-11-05' } ]; export const TeamPage: React.FC = () => { const [searchTerm, setSearchTerm] = useState(''); const [statusFilter, setStatusFilter] = useState<'all' | 'active' | 'busy' | 'inactive'>('all'); const [selectedPhotographer, setSelectedPhotographer] = useState(null); const [showAddModal, setShowAddModal] = useState(false); const [newPhotographer, setNewPhotographer] = useState({ name: '', email: '', phone: '', location: '', specialties: [] as string[], }); const getStatusColor = (status: Photographer['status']) => { switch (status) { case 'active': return 'bg-green-100 text-green-800'; case 'busy': return 'bg-yellow-100 text-yellow-800'; case 'inactive': return 'bg-gray-100 text-gray-800'; } }; const getStatusLabel = (status: Photographer['status']) => { switch (status) { case 'active': return 'Disponível'; case 'busy': return 'Em Evento'; case 'inactive': return 'Inativo'; } }; const filteredPhotographers = MOCK_PHOTOGRAPHERS.filter(photographer => { const matchesSearch = photographer.name.toLowerCase().includes(searchTerm.toLowerCase()) || photographer.email.toLowerCase().includes(searchTerm.toLowerCase()); const matchesStatus = statusFilter === 'all' || photographer.status === statusFilter; return matchesSearch && matchesStatus; }); const stats = { total: MOCK_PHOTOGRAPHERS.length, active: MOCK_PHOTOGRAPHERS.filter(p => p.status === 'active').length, busy: MOCK_PHOTOGRAPHERS.filter(p => p.status === 'busy').length, avgRating: (MOCK_PHOTOGRAPHERS.reduce((acc, p) => acc + p.rating, 0) / MOCK_PHOTOGRAPHERS.length).toFixed(1) }; return (
{/* Header */}

Equipe & Fotógrafos

Gerencie sua equipe de fotógrafos profissionais

{/* Stats */}

Total de Fotógrafos

{stats.total}

Disponíveis

{stats.active}

Em Evento

{stats.busy}

Avaliação Média

{stats.avgRating}

{/* Filters and Search */}
setSearchTerm(e.target.value)} className="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-brand-gold" />
{/* Photographers Grid */}
{filteredPhotographers.map((photographer) => (
setSelectedPhotographer(photographer)} >
{photographer.name}

{photographer.name}

{photographer.rating} ({photographer.eventsCompleted} eventos)
{getStatusLabel(photographer.status)}
{photographer.email}
{photographer.phone}
{photographer.location}
{photographer.specialties.map((specialty, index) => ( {specialty} ))}
))}
{filteredPhotographers.length === 0 && (

Nenhum fotógrafo encontrado

)}
{/* Add Photographer Modal */} {showAddModal && (
setShowAddModal(false)} >
e.stopPropagation()} >

Adicionar Novo Fotógrafo

{ e.preventDefault(); alert('Fotógrafo adicionado com sucesso!\n\n' + JSON.stringify(newPhotographer, null, 2)); setShowAddModal(false); setNewPhotographer({ name: '', email: '', phone: '', location: '', specialties: [] }); }}>
setNewPhotographer({ ...newPhotographer, name: e.target.value })} placeholder="Ex: João Silva" className="w-full pl-10 pr-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-brand-gold" />
setNewPhotographer({ ...newPhotographer, email: e.target.value })} placeholder="joao.silva@photum.com" className="w-full pl-10 pr-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-brand-gold" />
setNewPhotographer({ ...newPhotographer, phone: e.target.value })} placeholder="(41) 99999-0000" className="w-full pl-10 pr-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-brand-gold" />
setNewPhotographer({ ...newPhotographer, location: e.target.value })} placeholder="Curitiba, PR" className="w-full pl-10 pr-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-brand-gold" />
{['Formaturas', 'Casamentos', 'Eventos Corporativos', 'Eventos Sociais', 'Ensaios'].map((specialty) => ( ))}
)} {/* Photographer Detail Modal */} {selectedPhotographer && (
setSelectedPhotographer(null)} >
e.stopPropagation()} >
{selectedPhotographer.name}

{selectedPhotographer.name}

{selectedPhotographer.rating} ({selectedPhotographer.eventsCompleted} eventos concluídos)
{getStatusLabel(selectedPhotographer.status)}
{selectedPhotographer.email}
{selectedPhotographer.phone}
{selectedPhotographer.location}

Especialidades

{selectedPhotographer.specialties.map((specialty, index) => ( {specialty} ))}
)}
); };