Isolate document collection navigation and search
Verify and deploy Tabularium / verify-and-deploy (push) Successful in 6m8s

This commit is contained in:
2026-10-28 14:09:28 +08:00
parent e0191e1aa3
commit e381deb04e
3 changed files with 21 additions and 4 deletions
+18 -2
View File
@@ -29,7 +29,10 @@ export function Navigation({
current?: string;
onNavigate?: () => void;
}) {
const groups = [...new Set(docs.map((d) => d.group))];
const collection = docs.find((d) => d.slug === current)?.collection;
const scopedDocs = docs.filter((d) => d.collection === collection);
const groups = [...new Set(scopedDocs.map((d) => d.group))];
const collections = [...new Set(docs.map((d) => d.collection))];
return (
<nav aria-label="文档导航">
<Link
@@ -39,10 +42,21 @@ export function Navigation({
>
<Icon name="book" size={17} /> <span>资料库</span>
</Link>
{!current && collections.map((name) => (
<Link
onClick={onNavigate}
className="nav-item"
href={`/docs/${docs.find((d) => d.collection === name)!.slug}`}
key={name}
>
{name}
</Link>
))}
{collection && !groups.includes(collection) && <p className="eyebrow">{collection}</p>}
{groups.map((group) => (
<div className="nav-group" key={group}>
<p>{group}</p>
{docs
{scopedDocs
.filter((d) => d.group === group)
.map((d) => (
<Link
@@ -81,7 +95,9 @@ export function Shell({
const [searchStatus, setSearchStatus] = useState("");
const [selected, setSelected] = useState(0);
const [menu, setMenu] = useState(false);
const collection = docs.find((d) => d.slug === current)?.collection;
const results = searchDocs.filter((d) =>
(!collection || d.collection === collection) &&
`${d.title} ${d.description} ${d.searchText ?? ""}`
.toLocaleLowerCase()
.includes(query.trim().toLocaleLowerCase()),