Layout is one row; Pages always shows the pages

Top Menu, Content and Footer were a hierarchy the screen does not have — all
three are edited by the same controls at the same time, so clicking one changed
the URL and nothing else.

The pages were announced by PagesPanel and only by PagesPanel, which mounts when
Pages is open. So they were invisible in the nav until you had already been to
the page that lists them. The nav fetches them itself when nobody has said yet;
the channel stays, and is still why a rename shows here the moment it is typed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-01 08:58:31 +01:00
co-authored by Claude Opus 5
parent aab536059b
commit ce1eb43d51
2 changed files with 35 additions and 61 deletions
+6 -20
View File
@@ -70,27 +70,13 @@ export type Section = {
pinned?: boolean;
};
/**
* The three bands the layout is made of, in the order they appear on the page.
*
* The layout IS a page: a header, the slot a page goes in, and a footer. These are the nav rows under
* Layout, and the `band` in the query string.
*
* FIXED, unlike the pages under Pages. A band cannot be added or removed from the admin — only the
* code that draws it can — so reading them from the database would be a query that can only ever
* return the same three rows in the same order.
*/
export const LAYOUT_BANDS = [
{ key: 'header', label: 'Top Menu' },
{ key: 'content', label: 'Content' },
{ key: 'footer', label: 'Footer' },
] as const;
export type LayoutBand = (typeof LAYOUT_BANDS)[number]['key'];
export const isLayoutBand = (value: string | null): value is LayoutBand =>
value !== null && LAYOUT_BANDS.some((band) => band.key === value);
/*
Layout had three rows under it — Top Menu, Content, Footer — and they are gone.
They were a hierarchy the screen did not have: all three are edited in the same panel, by the same
controls, at the same time. Clicking one changed the URL and nothing else, which teaches that the
nav does not mean anything. Pages keeps its children because a page IS a destination.
*/
export const SECTIONS: Section[] = [
{
/*