diff --git a/app/components/WeatherDisplay.tsx b/app/components/WeatherDisplay.tsx new file mode 100644 index 0000000..6efd581 --- /dev/null +++ b/app/components/WeatherDisplay.tsx @@ -0,0 +1,46 @@ + +import React from 'react'; +import { + Cloud, + CloudDrizzle, + CloudFog, + CloudLightning, CloudMoon, + CloudRain, + CloudSnow, + CloudSun, + MapPin, Moon, Sun, + ThermometerSun +} from 'lucide-react'; + +import { formatTemperature } from "@/lib/utils"; +import { useWeatherStore } from '@/store/weatherStore'; +interface WeatherIconProps { + description: string; + isDay: string; + className?: string; +} + +/** + * Returns the appropriate weather icon based on description and time of day + */ +function WeatherIcon({ description, isDay, className = "w-16 h-16 md:w-20 md:h-20" }: WeatherIconProps) { + const desc = description.toLowerCase(); + const isDaytime = isDay === 'yes'; + + if (desc.includes('rain') || desc.includes('雨')) { + return desc.includes('heavy') || desc.includes('暴') + ? + : ; + } + if (desc.includes('snow') || desc.includes('雪')) return ; + if (desc.includes('thunder') || desc.includes('storm') || desc.includes('雷')) return ; + if (desc.includes('fog') || desc.includes('mist') || desc.includes('haze') || desc.includes('雾') || desc.includes('霾')) return ; + if (desc.includes('partly') || desc.includes('scattered') || desc.includes('多云')) { + return isDaytime ? : ; + } + if (desc.includes('cloudy') || desc.includes('overcast') || desc.includes('阴')) return ; + if (desc.includes('clear') || desc.includes('sunny') || desc.includes('晴')) { + return isDaytime ? : ; + } + return isDaytime ? : ; +}