import { registerPageComposition } from '@/lib/ui/composition'; /** * Positions, page level only. * * Positions has three scopes and only one of them is flat. These two slots * render **once for the page**, with no position in context, which is what a * definition reporting across every role needs — and it is where the Board * skill's section lives. * * The other seven slots are *instanced*: `after-position-card` renders inside * each card, and five more render inside the drawer for one open position, each * with `context={{ position }}`. A single tree cannot address those, because * there is no one node for them — there are as many renderings as there are * records. Giving them identity needs a repeating-subtree model and a decision * about whether a change to one card means every card; that is deliberately not * attempted here, and the page keeps rendering them exactly as it always has. * * So this composition is honest about being partial: two nodes, drawn where * they have always been drawn, addressable like anything else. */ registerPageComposition('positions', [ { id: 'positions-extensions-summary', type: 'skill-surface', props: { page: 'positions', placement: 'after-position-list-summary' }, /* The separation this slot has always had from the grid below it. */ layout: { spacingAfter: 'md' }, }, { id: 'positions-extensions-list', type: 'skill-surface', props: { page: 'positions', placement: 'after-position-list' }, layout: { spacingBefore: 'lg' }, }, ]);