From f4264886f9fdb75a7fbe7cce4be7bef3ffb422bb Mon Sep 17 00:00:00 2001 From: kbot Date: Mon, 6 Jul 2026 20:31:47 -0500 Subject: [PATCH] feat(portfolio): add status bar and floating nav --- components/portfolio/FeaturedDossier.tsx | 93 ++++++++++++++++++++++++ components/portfolio/PortfolioNav.tsx | 78 ++++++++++++++++++++ components/portfolio/StatusBar.tsx | 23 ++++++ 3 files changed, 194 insertions(+) create mode 100644 components/portfolio/FeaturedDossier.tsx create mode 100644 components/portfolio/PortfolioNav.tsx create mode 100644 components/portfolio/StatusBar.tsx diff --git a/components/portfolio/FeaturedDossier.tsx b/components/portfolio/FeaturedDossier.tsx new file mode 100644 index 0000000..c242f11 --- /dev/null +++ b/components/portfolio/FeaturedDossier.tsx @@ -0,0 +1,93 @@ +"use client"; + +import { m, useReducedMotion } from "motion/react"; +import { featuredDossier } from "@/lib/portfolio"; + +const fieldRows = [ + { label: "MISSION", value: featuredDossier.mission }, + { label: "CONSTRAINT", value: featuredDossier.constraint ?? "—" }, + { label: "SYSTEM", value: featuredDossier.system }, + { label: "RESULT", value: featuredDossier.result }, +]; + +export function FeaturedDossier() { + const shouldReduceMotion = useReducedMotion(); + + return ( + +
+
+

FEATURED DOSSIER /.00

+
+ +
+ + +
+
+ {fieldRows.map((row) => ( +
+

{row.label}

+

{row.value}

+
+ ))} +
+ + +
+
+
+ ); +} diff --git a/components/portfolio/PortfolioNav.tsx b/components/portfolio/PortfolioNav.tsx new file mode 100644 index 0000000..f325c6a --- /dev/null +++ b/components/portfolio/PortfolioNav.tsx @@ -0,0 +1,78 @@ +"use client"; + +import Link from "next/link"; +import { usePathname } from "next/navigation"; + +const navLinks = [ + { label: "WORK", href: "#work" }, + { label: "CAPABILITIES", href: "#capabilities" }, + { label: "FIELD NOTES", href: "/blog/" }, + { label: "CONTACT", href: "#contact" }, +]; + +function openCommandPalette() { + window.dispatchEvent(new CustomEvent("blacksite:palette")); +} + +export function PortfolioNav() { + const pathname = usePathname(); + + return ( + + ); +} diff --git a/components/portfolio/StatusBar.tsx b/components/portfolio/StatusBar.tsx new file mode 100644 index 0000000..84c7c10 --- /dev/null +++ b/components/portfolio/StatusBar.tsx @@ -0,0 +1,23 @@ +import { statusLine } from "@/lib/portfolio"; + +export function StatusBar() { + return ( +
+
+

+

+ + Contact ↗ + +
+
+ ); +}