"use client"; import { useState, useEffect } from "react"; import Link from "next/link"; import Image from "next/image"; import { Card, CardHeader, CardTitle, CardContent, CardFooter, } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { ArrowRight, Loader2 } from "lucide-react"; import { pb, getPbImage } from "@/lib/pb"; export interface PBPost { id: string; collectionId: string; title: string; slug: string; excerpt: string; content: string; image: string; created: string; } export function BlogPreview({ lang }: { lang: string }) { const [posts, setPosts] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { if (!lang) return; async function fetchPosts() { try { setLoading(true); // Берем только 3 последние опубликованные статьи для текущего языка const result = await pb.collection("posts").getList(1, 3, { filter: `lang = "${lang}" && published = true`, sort: "-created", // Свежие сверху requestKey: null, }); setPosts(result.items); } catch (error) { console.error("Ошибка загрузки логов:", error); } finally { setLoading(false); } } fetchPosts(); }, [lang]); if (loading) { return (
); } if (posts.length === 0) return null; // Скрываем секцию, если постов нет return (
Data Logs

Сетевые Хроники

{posts.map((post) => ( {post.image && (
{/* eslint-disable-next-line @next/next/no-img-element */} {post.title}
)}
{new Date(post.created).toLocaleDateString( lang === "ru" ? "ru-RU" : "en-US", )}
{post.title}

{post.excerpt}

))}
); }