"use client"; import React, { useEffect, useState } from "react"; import { Card, CardContent, CardHeader } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Category } from "@/lib/types"; const defaultLogo = "/default-logo.png"; // Fallback logo path const CategoryView = () => { const [categories, setCategories] = useState([]); const [selectedCategory, setSelectedCategory] = useState(null); useEffect(() => { const fetchCategories = async () => { try { const response = await fetch("/api/categories"); if (!response.ok) { throw new Error("Failed to fetch categories"); } const data = await response.json(); console.log("Fetched categories:", data); // Debugging setCategories(data); } catch (error) { console.error("Error fetching categories:", error); } }; fetchCategories(); }, []); const handleCategoryClick = (category: Category) => { setSelectedCategory(category); }; const handleBackClick = () => { setSelectedCategory(null); }; return (
{categories.length === 0 && (

No categories available. Please check the API endpoint.

)} {selectedCategory ? (

{selectedCategory.name}

{selectedCategory.scripts .sort((a, b) => a.name.localeCompare(b.name)) .map((script) => (

{script.name}

{script.date_created || "No date available"}

))}
) : (

Categories

{categories.map((category) => ( handleCategoryClick(category)} className="cursor-pointer hover:shadow-lg flex flex-col items-center justify-center" >
{category.scripts && category.scripts.slice(0, 4).map((script, index) => ( {script.name ))}

{category.name}

{(category as any).description || "No description available."}

))}
)}
); }; export default CategoryView;