From 5e3853b753c317c6c5edc914779239578f0c9b51 Mon Sep 17 00:00:00 2001 From: qiuchenfan <2035024011@qq.com> Date: Mon, 17 Nov 2025 19:18:46 +0800 Subject: [PATCH] 11171918 --- app/components/WeatherDisplay.tsx | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 app/components/WeatherDisplay.tsx 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 ? : ; +}