aditya0103's picture
Tasks 5-7: eval harness, FastAPI backend, Paper & Ink UI- src/eval/ β€” precision/recall/F1 harness with type-aware comparators,micro/macro F1, CSV + markdown reports, --model benchmark flag- src/api/ β€” FastAPI backend with /extract, /schemas, /health,request-ID middleware, typed error envelope, injectable extractor- ui/ β€” Vite + React + TS + Tailwind + Motion + React Three FiberPaper & Ink editorial UI with 3D paper hero, dark/light mode,confidence inkwell, wax-stamp metrics, kinetic typography- 95 passing tests (up from 54); UI is a separate npm workspace
557ab38
Raw
History Blame Contribute Delete
1.7 kB
/**
* TopNav β€” logo mark on the left, GitHub + theme toggle on the right.
* Deliberately quiet β€” no full navigation, no CTAs. The site is one page.
*/
import { ThemeToggle } from "./ThemeToggle";
const GITHUB_URL = "https://github.com/adityapatel007-byte/structured-data-extractor";
export function TopNav() {
return (
<header className="relative z-30 mx-auto flex w-full max-w-[1240px] items-center justify-between px-6 py-6 md:px-10">
<a href="#top" className="flex items-center gap-3">
<LogoMark />
<span className="font-display text-[22px] leading-none tracking-tight">
Ledger
</span>
<span className="hidden text-[11px] uppercase tracking-[0.18em] text-[var(--ink-mute)] md:inline-block">
/ structured extraction
</span>
</a>
<nav className="flex items-center gap-3">
<a
href={GITHUB_URL}
target="_blank"
rel="noreferrer"
className="hidden text-[13px] tracking-wide text-[var(--ink-soft)] transition-colors duration-300 hover:text-[var(--ink)] md:inline"
>
Source β†—
</a>
<ThemeToggle />
</nav>
</header>
);
}
function LogoMark() {
// A minimal ink glyph β€” a page corner folded over. Two strokes, that's it.
return (
<svg width="26" height="26" viewBox="0 0 26 26" fill="none" aria-hidden>
<path
d="M5 3.5h11.5L21 8v14.5H5V3.5Z"
stroke="currentColor"
strokeWidth="1.4"
strokeLinejoin="round"
/>
<path
d="M16.5 3.5V8H21"
stroke="currentColor"
strokeWidth="1.4"
strokeLinejoin="round"
/>
</svg>
);
}