'use client' import { useState, useMemo } from 'react' import type { NavigationData, NavigationItem, NavigationSubItem } from '@/types/navigation' import type { SiteConfig } from '@/types/site' import { NavigationCard } from '@/components/navigation-card' import { Sidebar } from '@/components/sidebar' import { SearchBar } from '@/components/search-bar' import { ModeToggle } from '@/components/mode-toggle' import { Footer } from '@/components/footer' import { Github, HelpCircle, Puzzle } from 'lucide-react' import { Button } from "@/registry/new-york/ui/button" import Link from 'next/link' import { cn } from '@/lib/utils' import { Menu } from 'lucide-react' interface NavigationContentProps { navigationData: NavigationData siteData: SiteConfig } export function NavigationContent({ navigationData, siteData }: NavigationContentProps) { const [isSidebarOpen, setIsSidebarOpen] = useState(false) const [searchQuery, setSearchQuery] = useState('') // 修复类型检查和搜索逻辑 const searchResults = useMemo(() => { const query = searchQuery.toLowerCase().trim() if (!query) return [] const results: Array<{ category: NavigationItem items: (NavigationItem | NavigationSubItem)[] subCategories: Array<{ title: string items: (NavigationItem | NavigationSubItem)[] }> }> = [] navigationData.navigationItems.forEach(category => { // 搜索主分类下的项目(只搜索启用的) const items = (category.items || []).filter(item => { if (item.enabled === false) return false const titleMatch = item.title.toLowerCase().includes(query) const descMatch = item.description?.toLowerCase().includes(query) return titleMatch || descMatch }) // 搜索子分类下的项目(只搜索启用的) const subResults: Array<{ title: string items: (NavigationItem | NavigationSubItem)[] }> = [] if (category.subCategories) { category.subCategories.forEach(sub => { if (sub.enabled === false) return const subItems = (sub.items || []).filter(item => { if (item.enabled === false) return false const titleMatch = item.title.toLowerCase().includes(query) const descMatch = item.description?.toLowerCase().includes(query) return titleMatch || descMatch }) if (subItems.length > 0) { subResults.push({ title: sub.title, items: subItems }) } }) } // 只有当主分类或子分类有匹配结果时才添加到结果中 if (items.length > 0 || subResults.length > 0) { results.push({ category, items, subCategories: subResults }) } }) // 调试信息 if (query && results.length > 0) { console.log('搜索结果:', { query, totalResults: results.length, results: results.map(r => ({ category: r.category.title, mainItems: r.items.length, subCategories: r.subCategories.map(s => ({ title: s.title, items: s.items.length })) })) }) } return results }, [navigationData, searchQuery]) const handleSearch = (query: string) => { setSearchQuery(query) } return (
setIsSidebarOpen(false)} />
{/* */}
{navigationData.navigationItems.map((category) => (

{category.title}

{category.subCategories && category.subCategories.length > 0 ? ( category.subCategories.map((subCategory) => (

{subCategory.title}

{(subCategory.items || []).map((item) => ( ))}
)) ) : (
{(category.items || []).map((item) => ( ))}
)}
))}
{/* 页脚 */}
) }