"use client"; import { FormEvent, useMemo, useState } from "react"; import { ArrowUpRight, CheckCircle2, ChevronRight, Clock3, FishSymbol, Gauge, MapPin, Plus, Search, Send, Sparkles, Trophy, Users, Waves } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; type Spot = { id: number; water: string; fish: string; coords: string; bait: string; method: string; score: number; confidence: number; reports: number; anglers: number; last: string; avg: string; peak: string; trend: number[]; note: string }; const spots: Spot[] = [ { id: 1, water: "Вьюнок", fish: "Щука обыкновенная", coords: "110:103", bait: "Spiker #2 01-015", method: "Вращение · 25", score: 92, confidence: 87, reports: 27, anglers: 11, last: "34 мин", avg: "1,84 кг", peak: "18:00–22:00", trend: [28,42,36,57,51,72,84,92], note: "Стабильная серия вечерних уловов. Лучше работает проводка поперёк русла." }, { id: 2, water: "Куори", fish: "Форель озёрная", coords: "117:92", bait: "Hornet 1-002", method: "Равномерная · 30", score: 78, confidence: 72, reports: 14, anglers: 7, last: "1 ч 12 мин", avg: "2,31 кг", peak: "05:00–09:00", trend: [31,47,44,62,69,61,74,78], note: "Утреннее окно держится второй день. Данных меньше, чем по Вьюнку." }, { id: 3, water: "Белая", fish: "Голавль", coords: "72:58", bait: "Aikkila 4 г 006", method: "Против течения · 20", score: 64, confidence: 81, reports: 18, anglers: 9, last: "2 ч 08 мин", avg: "0,92 кг", peak: "11:00–15:00", trend: [72,68,57,49,55,62,61,64], note: "Клёв ровный, но без всплеска. Точка хорошо подтверждена разными игроками." }, { id: 4, water: "Лосиное озеро", fish: "Окунь", coords: "44:51", bait: "Express Spinner 2-004", method: "Stop&Go · 18", score: 49, confidence: 58, reports: 8, anglers: 4, last: "3 ч 41 мин", avg: "0,41 кг", peak: "07:00–11:00", trend: [58,62,55,44,39,46,52,49], note: "Свежих сообщений немного. Подходит скорее для опыта, чем для заработка." }, ]; const records = [ ["Щука обыкновенная", "18,642 кг", "Ладожское озеро", "Hunter 2-012", "SibirianFox", "сегодня, 08:14"], ["Форель озёрная", "14,081 кг", "Куори", "Hornet 1-002", "Taimen", "сегодня, 06:47"], ["Голавль", "7,923 кг", "Белая", "Aikkila 4 г 006", "Vega_Altai", "вчера, 21:18"], ["Окунь", "4,218 кг", "Вьюнок", "Spiker #2 01-015", "Rybachok", "вчера, 16:03"], ]; function ScoreRing({ value }: { value: number }) { return
{value}из 100
; } function Sparkline({ values }: { values: number[] }) { const points = values.map((value, index) => `${index * (100 / (values.length - 1))},${48 - value * 0.38}`).join(" "); return ; } function Brand() { return
Ни хвоста,ни чешуи
; } export default function Home() { const [water, setWater] = useState("all"); const [fish, setFish] = useState("all"); const [period, setPeriod] = useState("24"); const [selectedId, setSelectedId] = useState(1); const [sent, setSent] = useState(false); const visibleSpots = useMemo(() => spots.filter((spot) => (water === "all" || spot.water === water) && (fish === "all" || spot.fish === fish)), [water, fish]); const selected = spots.find((spot) => spot.id === selectedId) ?? spots[0]; function submitCatch(event: FormEvent) { event.preventDefault(); setSent(true); } return (
Сейчас клюёт Рекорды Добавить улов
Данные обновлены 4 мин назад
RF4 Живая карта клёва

Выбирай место,
пока клюёт.

Свежие точки, рабочие приманки и честная оценка данных от игроков.

Туманное озеро на рассвете с поплавком
Пульс водоёмов3 точки набирают активность
За {period === "24" ? "последние сутки" : `${period} часов`}

Горячие точки

{visibleSpots.length} {visibleSpots.length === 1 ? "точка" : "точки"}
{visibleSpots.map((spot, index) => ( ))}{visibleSpots.length === 0 &&

Пока нет свежих данных

Попробуйте другой водоём или рыбу.

}
Как читать данные

Не обещаем рыбу.
Показываем факты.

01

Свежесть

Чем старше сообщение, тем меньше оно влияет на активность.

02

Разные игроки

Десять уловов одного человека не равны десяти подтверждениям.

03

Уверенность

Каждая оценка объясняет, сколько данных за ней стоит.

RF4 Официальные данные

Рекорды недели

Таблицы обновляются автоматически. Координаты точек в официальных рекордах не публикуются.

428рекордов за неделю
37новых сегодня
Источник: официальный сайт RF4 · демоданные
{records.map((row) => {row.map((cell, index) => )})}
РыбаВесВодоёмНаживка / приманкаИгрокДата
{index === 0 && }{cell}
+1 Помочь сообществу

Добавить
свой улов

Полминуты — и рабочая точка появится в общей статистике после проверки.

Скриншот повышает довериеМожно загрузить экран улова или оставить ссылку на публикацию.
{sent ?
Улов отправлен

Ни хвоста!

Спасибо. Запись появится в статистике после проверки.

: <>
Новый уловПоля со звёздочкой обязательны