"use client"; import Link from "next/link"; import { useEffect, useMemo, useState } from "react"; import data from "../data/content-templates.json"; import styles from "./SimpleList.module.css"; const categories = ["全部", "世界观", "制作资料", "角色", "音乐", "品牌", "运营"]; const statusStyles: Record = { "已发布": "statusPublished", "评审中": "statusReview", "草稿": "statusDraft", "已归档": "statusArchived", }; export default function SimpleListPage() { const [query, setQuery] = useState(""); const [category, setCategory] = useState("全部"); const [status, setStatus] = useState("全部状态"); const [selected, setSelected] = useState([]); const [favorites, setFavorites] = useState(data.listItems.filter((item) => item.favorite).map((item) => item.id)); const [toast, setToast] = useState(""); const [compact, setCompact] = useState(false); useEffect(() => { const saved = window.localStorage.getItem("orbit-simple-list-favorites"); if (saved) { try { setFavorites(JSON.parse(saved)); } catch { /* use JSON defaults */ } } }, []); useEffect(() => { window.localStorage.setItem("orbit-simple-list-favorites", JSON.stringify(favorites)); }, [favorites]); const items = useMemo(() => data.listItems.filter((item) => { const matchQuery = `${item.title}${item.description}${item.id}${item.tags.join("")}`.toLowerCase().includes(query.toLowerCase()); return matchQuery && (category === "全部" || item.category === category) && (status === "全部状态" || item.status === status); }), [query, category, status]); const notify = (message: string) => { setToast(message); window.setTimeout(() => setToast(""), 2000); }; const toggleAll = () => setSelected(selected.length === items.length ? [] : items.map((item) => item.id)); return (
OOrbit Docs

CONTENT LIBRARY

内容资料库

轻量、清晰的通用列表模板,适合文档、项目或数据记录。

全部资料{data.listItems.length}

已发布{data.listItems.filter((item) => item.status === "已发布").length}

等待评审{data.listItems.filter((item) => item.status === "评审中").length}

我的收藏{favorites.length}

{categories.map((item) => )}
{selected.length > 0 &&
已选择 {selected.length} 项
}
0 && selected.length === items.length} onChange={toggleAll} aria-label="全选" />资料名称分类状态负责人更新时间
{items.map((item) => { const checked = selected.includes(item.id); const favorite = favorites.includes(item.id); return
setSelected((current) => checked ? current.filter((id) => id !== item.id) : [...current, item.id])} aria-label={`选择 ${item.title}`} /> {item.category} {item.status} {item.initial}{item.owner}
; })} {items.length === 0 &&
没有找到匹配资料

调整关键词或筛选条件后再试试。

}
显示 {items.length} 条,共 {data.listItems.length} 条
{toast &&
✓ {toast}
}
); }