a band lists its blocks, and selection is the URL

A fourth level under the open band only — a page of six bands with four blocks
each is thirty rows, and the nav stops being somewhere you can find anything.

Blocks are named by the same list the picker offers, so a thing is called the
same word wherever it appears.

Clicking a block in the PAGE now writes that address too, rather than calling the
handler directly. Both ways of picking a block are the same act, so neither can
disagree with the other about what is selected — and closing it is the band row.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-01 09:49:44 +01:00
co-authored by Claude Opus 5
parent 7c4c3f48a8
commit 949d61efc6
5 changed files with 117 additions and 24 deletions
+6 -1
View File
@@ -76,7 +76,12 @@ export const pageFromParam = (pages: Page[] | null, value: string | null): Page
* Null means nobody has said yet: the nav then draws no rows rather than an empty list, which would
* read as "this page has no sections".
*/
export type NamedSection = { id: number; name: string };
export type NamedSection = {
id: number;
name: string;
/** What is in it, in the order the page renders them. The nav lists these under the band. */
components: { id: number; kind: string }[];
};
const useSectionsList = defineChannel<NamedSection[] | null>('fofos-admin:sections', null);