import type { ReactNode } from 'react';
/**
* The primitives a written page is built from.
*
* `/parity?tab=findings` is a document rather than a gallery — 888 lines of
* argument, evidence tables and hex values — and it grew these five inline. On
* its own that was fine; nothing was duplicated. But they are the generic parts
* of *any* such page, and the second one would have copied them, which is the
* shape `narrow`/`Field` had already reached across five gallery pages before
* `chrome/ui/axis-filter.tsx` gave them one home.
*
* The names are longer here than they were as file-locals. `P` and `H3` read
* fine next to their only caller; imported into a page that also renders kit
* components they read as nothing at all, and `Table` would have collided with
* what `chrome/ui/tables.tsx` exports.
*/
/** A numbered section: heading, one line of provenance, then the argument. */
export function Finding({
n,
title,
meta,
children,
}: {
n: number;
title: string;
meta: ReactNode;
children: ReactNode;
}) {
return (
{meta}
{n}.
{title}
{children}
; } /** A heading inside a finding. */ export function SubHeading({ children }: { children: ReactNode }) { return| {h} | ))}
|---|
| {cell} | ))}
{value}
);
}