# PR-10b Bank Composition Base Components Domain owner: `docs/studio` ## Briefing Introduce the base UI building blocks for `Bank Composition`: - `StudioDualListView` - `StudioAssetCapacityMeter` This slice lands the named components with intentionally narrow first-wave APIs, before section-shell wiring or behavior orchestration. ## Objective After this PR: - `StudioDualListView` exists as an abstract Studio component; - the first asset-details concrete dual-list implementation exists; - `StudioAssetCapacityMeter` exists as a dumb vertical meter component; - right-list ordering support includes `moveUp`, `moveDown`, and visible indices. ## Dependencies - [`../decisions/Bank Composition Base Components Decision.md`](../decisions/Bank%20Composition%20Base%20Components%20Decision.md) - [`../decisions/Bank Composition Details DTO Projection Decision.md`](../decisions/Bank%20Composition%20Details%20DTO%20Projection%20Decision.md) - [`./PR-10a-bank-composition-details-dto-projection.md`](./PR-10a-bank-composition-details-dto-projection.md) ## Scope - add abstract `StudioDualListView` - add the first asset-details-specific concrete dual-list implementation - add dumb `StudioAssetCapacityMeter` - support row rendering directly in the concrete dual-list implementation - support right-list index display - support `moveUp` and `moveDown` affordances in the component contract ## Non-Goals - no section shell yet - no `FormSession` integration yet - no family-specific capacity rules inside components - no workspace-bus contract yet - no apply persistence ## Execution Method 1. Add the abstract dual-list base component. 2. Add the first concrete asset-details implementation against the new DTOs. 3. Add the capacity meter component with: - `progress` - label - severity band - optional hint text 4. Add component tests for rendering, ordering affordances, and meter state display. ## Acceptance Criteria - the codebase contains the new named base components for `Bank Composition` - the first concrete dual-list implementation works against Studio DTOs - the right/build list can show visible indices - the component contract exposes `moveUp` and `moveDown` - the capacity meter can render absolute progress and severity state without owning bank rules ## Validation - unit tests for dual-list rendering and ordering controls - unit tests for visible index updates - unit tests for capacity-meter state rendering ## Affected Artifacts - `prometeu-studio/src/main/java/p/studio/controls/...` - `prometeu-studio/src/main/java/p/studio/workspaces/assets/details/...` - tests for dual-list and capacity meter components