import { useState, useEffect } from 'react'; import { Helmet } from 'react-helmet-async'; import { FiTrendingUp, FiTrendingDown, FiStar } from 'react-icons/fi'; import { type Language, t } from '../translations'; import { AreaChart, Area, ResponsiveContainer, YAxis } from 'recharts'; import { useNavigate } from 'react-router-dom'; import { slugify } from '../utils/slugify'; import { useFavorites } from '../hooks/useFavorites'; import { CircularProgress } from './CircularProgress'; import { Tooltip } from './Tooltip'; import { TbSwimming, TbSailboat } from 'react-icons/tb'; interface Lake { id: string; name: string; river: string; priority: boolean; level: number; capacity: number; storageDiff?: number; inflow: number; outflow: number; volume: number; maxVolume: number; navigationForbidden: boolean; sparkline: number[]; country?: string; area?: number; depth?: number; } const getFlagEmoji = (countryCode?: string) => { const code = countryCode || 'CZ'; const codePoints = code .toUpperCase() .split('') .map(char => 127397 + char.charCodeAt(0)); return String.fromCodePoint(...codePoints); }; const LakeCard = ({ lake, language, isFav, onToggleFav }: { lake: Lake, language: Language, isFav: boolean, onToggleFav: (id: string) => void }) => { const navigate = useNavigate(); const chartData = lake.sparkline.map((val, i) => ({ name: i, value: val })); const minVal = Math.min(...lake.sparkline); const maxVal = Math.max(...lake.sparkline); const diff = maxVal - minVal; const padding = diff === 0 ? 0.1 : diff * 0.1; // dynamic 10% padding const yDomain = [minVal - padding, maxVal + padding]; const firstVal = lake.sparkline[0] || 0; const lastVal = lake.sparkline[lake.sparkline.length - 1] || 0; const trendDiff = lastVal - firstVal; // Dynamic color based on trend direction: stable=cyan, rising=green, falling=red let trendColor = 'var(--color-cyan)'; if (trendDiff > 0.01) trendColor = 'var(--color-green)'; else if (trendDiff < -0.01) trendColor = 'var(--color-red)'; return (
{t[language].seo.homeDesc}