Rebuild the UI as an app shell: left sidebar, media gallery, structured events

Replaces the centered single-column of full-width cards with a proper application layout: a persistent left sidebar (Trees, and per-tree People/Sources/Media, with the tree name and sign-out) and a constrained content column. Marketing landing and auth pages are split out (own header/footer; centered auth with the logo).

Adds a Media gallery (upload + image thumbnails / file tiles, served via the backend content endpoint). Events are no longer free-text: a curated event-type list (+ custom) and a structured date (qualifier + day/month/year) that composes a proper genealogical date. Regenerated the OpenAPI client.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Justin Paul <justin@jpaul.me>
This commit is contained in:
2026-06-06 21:56:05 -04:00
parent bd8ee9b647
commit fe9a95c60d
12 changed files with 1056 additions and 104 deletions
+9 -1
View File
@@ -34,7 +34,13 @@ export default function RegisterPage() {
}
return (
<Card className="mx-auto max-w-md">
<div className="grid min-h-screen place-items-center px-4 py-10">
<div className="w-full max-w-md space-y-6">
<Link href="/" className="flex justify-center" aria-label="Provenance — home">
{/* eslint-disable-next-line @next/next/no-img-element */}
<img src="/provenance-logo-plain.svg" alt="Provenance" className="h-8 w-auto" />
</Link>
<Card>
<CardHeader>
<CardTitle>Create your account</CardTitle>
</CardHeader>
@@ -78,5 +84,7 @@ export default function RegisterPage() {
</p>
</CardContent>
</Card>
</div>
</div>
);
}