"use client"; import Link from "next/link"; import { useState } from "react"; /* * One record-line entry. `copy` marks the value as worth lifting to the * clipboard — an instance UUID or a licence ID, the strings people paste into * support tickets. */ export type RecordField = { key: string; value: string; copy?: boolean }; function CopyButton({ value }: { value: string }) { const [done, setDone] = useState(false); return ( ); } /* * The page frame every screen starts with, replacing nine hand-rolled header * blocks that each picked their own gaps and their own place for actions. * * The record line is the one new idea: Vantage HQ is a registry, so every screen * is a record and records have reference numbers. Giving the reference a fixed * slot, in mono, above the fold, means "where is the ID" stops being a per-page * question. It costs one hairline rule. */ export function PageHeader({ back, title, subtitle, actions, record, status, }: { back?: { href: string; label: string }; title: string; subtitle?: React.ReactNode; actions?: React.ReactNode; record?: RecordField[]; status?: React.ReactNode; }) { return (
{back && ( ← {back.label} )}

{title}

{subtitle &&

{subtitle}

}
{actions &&
{actions}
}
{(record?.length || status) && (
{record?.map((f) => ( {f.key} {f.value} {f.copy && } ))} {status && {status}}
)}
); }