"use client"; import { useMemo, useState } from "react"; import { AppGrid, CategoryTabs } from "@/components/sections"; import { AppResource } from "@/lib/types"; export function AppsExplorer({ apps }: { apps: AppResource[] }) { const [query, setQuery] = useState(""); const [category, setCategory] = useState("all"); const [sort, setSort] = useState("latest"); const [count, setCount] = useState(6); const filtered = useMemo(() => { let list = [...apps].filter((a) => [a.name, a.subtitle, ...a.tags].join(" ").toLowerCase().includes(query.toLowerCase()) ); if (category !== "all") list = list.filter((a) => a.category === category); list.sort((a, b) => { if (sort === "hot") return b.downloads - a.downloads; if (sort === "update") return b.updatedAt.localeCompare(a.updatedAt); return b.uploadedAt.localeCompare(a.uploadedAt); }); return list; }, [apps, query, category, sort]); return (
setQuery(e.target.value)} />
排序: {[ { id: "latest", label: "最新" }, { id: "hot", label: "最热" }, { id: "update", label: "更新日期" }, ].map((s) => ( ))}
{count < filtered.length && ( )}
); }