Intelligence
Artifacts
Browse the repository, read documents, and manage the governance folders. Source, runtime, and infrastructure are read-only.
Repository
repositories/aaf-holdings/hq01/app/assets/page.tsx
2.1 KB
import { Box } from "lucide-react";
import { PageHeader } from "@/components/layout/page-header";
import { Card } from "@/components/ui/card";
import { EmptyState } from "@/components/shared/empty-state";
import { AssetList } from "@/components/assets/asset-list";
import { AssetFilters } from "@/components/assets/asset-filters";
import { searchAssets, assetFacets } from "@/lib/assets/ledger";
/**
* Asset Ledger (PASS M5) — the organization's durable assets, each with exactly
* one originating mission. Assets reference files and outlive their mission.
*/
export const dynamic = "force-dynamic";
export const metadata = { title: "Asset Ledger" };
export default function AssetLedgerPage({
searchParams,
}: {
searchParams: Record<string, string | undefined>;
}) {
const filters = {
mission: searchParams.mission,
type: searchParams.type,
repository: searchParams.repository,
executive: searchParams.executive,
tag: searchParams.tag,
status: searchParams.status,
};
const assets = searchAssets(filters);
const facets = assetFacets();
const filtered = Object.values(filters).some(Boolean);
return (
<div>
<PageHeader
eyebrow="Intelligence"
title="Asset Ledger"
description="Every durable asset the organization owns, with one originating mission and a permanent, navigable lineage."
/>
<Card className="mb-5 p-4">
<AssetFilters facets={facets} current={filters} />
</Card>
{assets.length === 0 ? (
<EmptyState
icon={Box}
title={filtered ? "No assets match" : "No assets yet"}
description={
filtered
? "Adjust the filters above."
: "Register a report's produced artifacts to add them to the ledger."
}
hint="/srv/aaf/assets/ASSET-000001/"
/>
) : (
<Card className="p-5">
<div className="mb-2 text-[12px] text-muted-foreground">
{assets.length} asset{assets.length === 1 ? "" : "s"}
</div>
<AssetList assets={assets} />
</Card>
)}
</div>
);
}
root · /srv/aaf