'use client'; import { useEffect, useState } from 'react'; import Link from 'next/link'; import { notFound } from 'next/navigation'; import { categories } from '@/lib/categories'; import type { Category } from '@/types/categories'; import { getColorConfig, cn } from '@/lib/utils'; export default function CategoryContent({ slug }: { slug: string }) { const [category, setCategory] = useState(null); const [isLoading, setIsLoading] = useState(true); useEffect(() => { const foundCategory = categories.find((cat) => cat.slug === slug); setCategory(foundCategory || null); setIsLoading(false); }, [slug]); if (isLoading) { return
Loading...
; } if (!category) { notFound(); } const colorConfig = getColorConfig(category.colorName); return (
); } function Breadcrumb({ category, colorConfig }: { category: Category; colorConfig: ReturnType }) { return ( ); } function Header({ category, colorConfig }: { category: Category; colorConfig: ReturnType }) { return (

{category.title}

{category.description}

); } function DemoCards({ category, colorConfig }: { category: Category; colorConfig: ReturnType }) { if (!category.demos || category.demos.length === 0) { return (

No demos available yet

We're working on exciting demos for this category. Check back soon to see what's new!

); } return (
{category.demos.map((Demo, index) => (
))}
); }