import { useEffect, useState, useCallback } from 'react'; import { Link } from 'react-router-dom'; import { api } from '@/lib/api'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; interface Post { id: number; title: string; slug: string; excerpt?: string; author: { username: string; first_name: string; last_name: string; }; created_at: string; category?: { name: string; }; } export default function Blog() { const [posts, setPosts] = useState([]); const [search, setSearch] = useState(''); const [loading, setLoading] = useState(true); const loadPosts = useCallback(async () => { try { const data = await api.getPosts({ search: search || undefined }); setPosts(data as Post[]); } catch (error) { console.error('Error loading posts:', error); } finally { setLoading(false); } }, [search]); useEffect(() => { loadPosts(); }, [loadPosts]); return (

وبلاگ

setSearch(e.target.value)} className="max-w-md" />
{loading ? (

در حال بارگذاری...

) : posts.length === 0 ? (

مقاله‌ای یافت نشد

) : (
{posts.map((post) => ( {post.title} {post.category?.name && ( {post.category.name} )} {new Date(post.created_at).toLocaleDateString('fa-IR')} {post.excerpt && (

{post.excerpt}

)}

نویسنده: {post.author.first_name} {post.author.last_name}

))}
)}
); }