{professional.name}
{professional.role}
import { useEffect, useMemo, useState } from 'react' import { FeatureBadge, FeatureCallout } from '../components/FeatureState.jsx' import { featurePanelClass } from '../components/featureStateStyles.js' import { availabilityRepository } from '../repositories/availabilityRepository.js' import { professionalRepository } from '../repositories/professionalRepository.js' const cardClass = 'rounded-2xl border border-[#404040] bg-[#262626] shadow-sm' const weekdays = [ { label: 'Seg', value: 1 }, { label: 'Ter', value: 2 }, { label: 'Qua', value: 3 }, { label: 'Qui', value: 4 }, { label: 'Sex', value: 5 }, ] export function TeamPage({ navigate }) { const [professionals, setProfessionals] = useState([]) const [availability, setAvailability] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState('') useEffect(() => { let active = true async function loadTeam() { try { setError('') const [professionalsData, availabilityData] = await Promise.all([ professionalRepository.getAll(), availabilityRepository.getAll({ active: true }), ]) if (!active) return setProfessionals(professionalsData) setAvailability(availabilityData) } catch (loadError) { if (!active) return setError(loadError.message || 'Erro ao carregar profissionais e disponibilidade.') } finally { if (active) setLoading(false) } } loadTeam() return () => { active = false } }, []) const availabilityByDoctor = useMemo(() => groupAvailabilityByDoctor(availability), [availability]) return (
Equipe, agenda e cobertura operacional da clínica.
Carregando profissionais...
) : null}{professional.role}
Disponibilidades ativas cadastradas em /rest/v1/doctor_availability.