import { useEffect, useState } from 'react'; import { ChevronDown, CloudSun, Globe, MapPin } from 'lucide-react'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { useTempoUi } from '@/components/tempo-brand'; type Weather = { temp: number; description: string; humidity?: number }; export function TempoWeather() { const { language } = useTempoUi(); const [weather, setWeather] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { const controller = new AbortController(); const timer = setTimeout(() => controller.abort(), 8000); fetch(`https://teste-info.tempo.co.mz/api/weather?lang=${language}`, { signal: controller.signal, credentials: 'omit', }) .then((response) => (response.ok ? response.json() : null)) .then((data: { current?: Weather } | null) => { if (data?.current && Number.isFinite(data.current.temp)) setWeather(data.current); }) .catch(() => { /* No guessed temperatures when the source is unavailable. */ }) .finally(() => { clearTimeout(timer); setLoading(false); }); return () => { clearTimeout(timer); controller.abort(); }; }, [language]); return (

Maputo, Moçambique

{weather ? ( <>

{Math.round(weather.temp)}°C

{weather.description}

{weather.humidity !== undefined && (

Humidade: {weather.humidity}%

)} ) : (

{loading ? 'A consultar a temperatura…' : 'Temperatura temporariamente indisponível.'}

)}

Meteorologia · Tempo

); } export function TempoLanguageSelector() { const { language, setLanguage } = useTempoUi(); return ( Navegação institucional {[ ['pt', 'Português'], ['en', 'English'], ['fr', 'Français'], ['es', 'Español'], ].map(([code, name]) => ( setLanguage(code)} className={`tempo-menu-item ${language === code ? 'bg-red-50 text-red-700' : ''}`} > {code} {name} ))} ); }