'use client'; import { useState, useEffect } from 'react'; import Link from "next/link"; import { Input } from "@/components/ui/input"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import strings from "@/strings.json"; type Post = { id: string; title: string; slug: string; category: string; date: string; }; export function Sidebar() { const [posts, setPosts] = useState([]); const [error, setError] = useState(''); const [loadingPosts, setLoadingPosts] = useState(true); const [loadingCategories, setLoadingCategories] = useState(true); const [uniqueCategories, setUniqueCategories] = useState<{ name: string; slug: string }[]>([]); useEffect(() => { console.log("[i] Fetching post list..."); fetch('http://localhost:3001/api/posts/fetchList') .then(response => response.json()) .then(data => { if (!data.posts) { throw new Error('[!] Failed to fetch posts'); } console.log("[✓] Fetched posts"); setPosts(data.posts); setLoadingPosts(false); }) .catch(error => { console.error(error); setError(`[!] Error fetching posts: ${error.message}`); setLoadingPosts(false); }); console.log("[i] Fetching category list..."); fetch('http://localhost:3001/api/categories/fetchList') .then(response => response.json()) .then(data => { if (!data.categories) { throw new Error('Failed to fetch categories'); } console.log("[✓] Fetched categories"); const categories = data.categories.map((cat: { name: string, slug: string }) => ({ name: cat.name, slug: cat.slug, })); setUniqueCategories(categories); setLoadingCategories(false); }) .catch(error => { console.error(error); setError(`[!] Error fetching categories: ${error.message}`); setLoadingCategories(false); }); }, []); return ( ); }