import { Box, Card, Group, Stack, Text } from '@mantine/core'; import { useCommonHooks } from 'hooks'; import { FaLongArrowAltDown, FaLongArrowAltUp, FaWind } from 'react-icons/fa'; import { WiBarometer, WiHumidity, WiSunrise, WiSunset } from 'react-icons/wi'; import { textClasses } from 'styles'; import type { MeteoWeather } from 'types'; import WeatherFeaturePill from './WeatherFeaturePill'; import WeatherIcon from './WeatherIcon'; const WeatherCodes: { [key: number]: string } = { 0: 'Clear sky', 1: 'Mainly clear', 2: 'Partly cloudy', 3: 'Overcast', 45: 'Fog', 48: 'Depositing rime fog', 51: 'Drizzle: Light', 53: 'Drizzle: Moderate', 55: 'Drizzle: Dense', 56: 'Freezing Drizzle: Light', 57: 'Freezing Drizzle: Dense', 61: 'Rain: Slight', 63: 'Rain: Moderate', 65: 'Rain: Heavy', 66: 'Freezing Rain: Light', 67: 'Freezing Rain: Heavy', 71: 'Snowfall: Slight', 73: 'Snowfall: Moderate', 75: 'Snowfall: Heavy', 77: 'Snow grains', 80: 'Rain showers: Slight', 81: 'Rain showers: Moderate', 82: 'Rain showers: Violent', 85: 'Snow showers: Slight', 86: 'Snow showers: Heavy', 95: 'Thunderstorm: Slight or moderate', 96: 'Thunderstorm with slight hail', 99: 'Thunderstorm with heavy hail', } as const; export default function CurrentWeather({ current, }: { current: MeteoWeather | undefined; }) { const { isMobile, theme, textShadowStyle } = useCommonHooks(); const sunrise = new Date(current?.daily.sunrise[0] || 0).toLocaleTimeString(); const sunset = new Date(current?.daily.sunset[0] || 0).toLocaleTimeString(); return ( <> {current && ( Current Weather {current.current.temperature_2m?.toFixed(0)}° F 25 ? 'flex-start' : 'center' } style={{ width: '100%', maxWidth: '180px', whiteSpace: 'nowrap', overflow: 'hidden', boxSizing: 'border-box', position: 'relative', }} > 25 ? textClasses.autoScrollText : undefined } classNames={textClasses} > {current.current.temperature_2m?.toFixed(0) === '69' ? 'Nice' : WeatherCodes[Number(current.current.weather_code)]} Feels like } rightSide={ {current.current.apparent_temperature?.toFixed(0) ?? current.current.temperature_2m?.toFixed(0)} °F } highlight='right' /> Temperatures High } rightSide={ {current.daily.temperature_2m_max?.[0].toFixed(0)}°F } highlight='right' /> Low } rightSide={ {current.daily.temperature_2m_min?.[0].toFixed(0)}°F } highlight='right' /> Conditions Humidity } rightSide={{current.current.relative_humidity_2m}%} highlight='right' /> Wind } rightSide={ {current.current.wind_speed_10m?.toFixed(0)}mph } highlight='right' /> Pressure } rightSide={ {current.current.surface_pressure?.toFixed(0)} mbar } highlight='right' /> Sun Cycle } rightSide={{sunrise}} highlight='left' /> } rightSide={{sunset}} highlight='left' /> )} ); }