The frame of a whole screen: the bar at the top, the width the content may reach, and the margins beside it. The width is a token, not a number each application repeats.
IngotPageLayout goes inside it. The frame holds the width and the margins, the layout the vertical rhythm of the blocks within.width="full". A limit there does not protect the reader, it hides columns from them.IngotPageLayout with width="reading".children: ReactNode — The screen's content — typically `IngotPageLayout`.width: "app" | "full" — `app` (the default) stops at `--frame`; `full` lets the content reach both edges. `app` is the default because screens that ARE a wide table are the few, and the rest would be unreadable across a large monitor.bar: ReactNode — The bar at the top, typically `IngotTopNav`. It sticks to the window and spans its full width; pass `INGOT_FRAME_ROW` to its `contentClassName` so its row lines up with the content below.className: string — Vertical rhythm only — padding above and below. Width does not belong here.testId: string — An anchor for tests.