The spacing and free-text editors rendered below the preview, so they took their height from the thing being edited: choosing a spacing shrank the page you were choosing it for, and on a laptop two dropdowns cost a third of the frame. They are a third panel now, to the right of the preview. The workspace already knows how to size and move panels; a drawer was a second, worse layout system living inside one of them. The panel holds nothing. Whichever panel owns a selection BUILDS the editor and announces it through a `useGlobal` slot — the two are siblings and neither may own the other, and a provider around both would mean something above them knowing they exist. The slot carries the ELEMENT, not a description of one. A descriptor plus a switch would move every editor's loading, saving and cancelling into a panel that would have to learn what a section is — a second place that understands the page builder, kept in step by hand. SaveTarget makes the same trade for the same reason. The hazard is real and worth naming: an element captures the props it was built with, so the announcing effect must depend on everything the editor DISPLAYS. The save handlers sit in refs so they cannot drag that list wider — depending on them would re-announce on every keystroke, and omitting them without refs would announce a stale one. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
28 lines
1.4 KiB
TypeScript
28 lines
1.4 KiB
TypeScript
import type { LayoutNode } from 'officerdev';
|
|
|
|
/**
|
|
* A nav down the left, whatever it selects beside it.
|
|
*
|
|
* Two panels rather than three: `plugins/proxy-manager` puts a chat across the bottom, and this does
|
|
* not, because there is no fofos skill for an agent to use yet. A chat panel with nothing to tell the
|
|
* agent about the site would be a third of the screen spent on a general-purpose conversation that is
|
|
* better had in the chat screen. Worth adding on the day this plugin ships a `skills/` directory.
|
|
*
|
|
* The nav is the narrow one: nine rows of two short lines, and nothing in it grows.
|
|
*
|
|
* The editor is a COLUMN and not a drawer under the preview, which is where it used to be. A drawer
|
|
* takes its height from the thing being edited — choosing a spacing shrank the page you were choosing
|
|
* it for, and on a laptop two dropdowns cost a third of the frame. The preview stays whole and the
|
|
* controls sit where a workspace puts controls.
|
|
*/
|
|
export const defaultLayout: LayoutNode = {
|
|
type: 'group',
|
|
id: 'fofos-admin-root',
|
|
direction: 'horizontal',
|
|
children: [
|
|
{ node: { type: 'panel', id: 'fofos-admin-nav', appType: 'fofos-admin-nav' }, size: 22 },
|
|
{ node: { type: 'panel', id: 'fofos-admin-detail', appType: 'fofos-admin-detail' }, size: 54 },
|
|
{ node: { type: 'panel', id: 'fofos-admin-editor', appType: 'fofos-admin-editor' }, size: 24 },
|
|
],
|
|
};
|