'use client' import { Input } from "@/components/ui/input" import { ScrollArea } from "@/components/ui/scroll-area" import { ChevronDown, ChevronRight } from 'lucide-react' import { useEffect, useState } from "react" type NavItem = { name: string url: string description: string } type SubCategory = { name: string items: NavItem[] } type CategoryData = { [key: string]: SubCategory[] } export function Navigation() { const [searchTerm, setSearchTerm] = useState("") const [activeCategory, setActiveCategory] = useState("all") const [activeSubCategory, setActiveSubCategory] = useState("all") const [data, setData] = useState({}) const [filteredItems, setFilteredItems] = useState([]) const [expandedCategories, setExpandedCategories] = useState([]) useEffect(() => { async function loadData() { try { const response = await fetch('/api/load-yaml-data'); const yamlData = await response.json(); setData(yamlData); } catch (error) { console.error('Failed to load YAML data:', error); } } loadData(); }, []) useEffect(() => { let items: NavItem[] = [] if (activeCategory === "all") { items = Object.values(data).flatMap(subCategories => subCategories.flatMap(subCategory => subCategory.items) ) } else if (activeSubCategory === "all") { items = data[activeCategory]?.flatMap(subCategory => subCategory.items) || [] } else { items = data[activeCategory]?.find(subCategory => subCategory.name === activeSubCategory)?.items || [] } if (searchTerm) { items = items.filter(item => item.name.toLowerCase().includes(searchTerm.toLowerCase()) || item.description.toLowerCase().includes(searchTerm.toLowerCase()) ) } setFilteredItems(items) }, [searchTerm, activeCategory, activeSubCategory, data]) const toggleCategory = (category: string) => { setExpandedCategories(prev => prev.includes(category) ? prev.filter(c => c !== category) : [...prev, category] ) } return (
{/* Left Sidebar Navigation */} {/* Main Content */}
{/* Search Bar */}
setSearchTerm(e.target.value)} />
{/* Items Grid */}
{filteredItems.map((item) => (

{item.name}

{item.description}

))}
{/* Empty State */} {filteredItems.length === 0 && (

没有找到相关项目

)}
) }