3.1 KiB
Asset Bank Composition Base Components Agenda
Status: Open
Domain Owner: docs/studio
Cross-Domain Impact: docs/packer
Problem
The Bank Composition section depends on two new Studio components:
StudioDualListView<T>StudioAssetCapacityMeter
Those components need a first-wave contract and scope before the section shell or middleware can be implemented safely.
Context
The current direction is already partially fixed:
StudioDualListView<T>should be abstract;- the first concrete subclass should be asset-details-specific;
- right-list ordering must support
move up,move down, and visible indices; StudioAssetCapacityMetershould be a vertical, game-like progress bar with color bands and percentage text;- both components should stay intentionally dumb and leave family-specific rules to middleware/controller logic.
Options
- Build highly generic reusable components from the start.
- Build bank-composition-scoped Studio components with narrow first-wave APIs.
- Skip dedicated components and build the section directly inside
AssetDetails.
Tradeoffs
- Highly generic components risk overengineering before the first section is proven.
- Narrow first-wave components keep momentum and preserve room to generalize later from real usage.
- Inline section code would move faster once, but it would bury behavior that already deserves named UI building blocks.
Recommendation
Build dedicated first-wave components with narrow APIs:
- abstract
StudioDualListView<T>as the transfer-list base; - one asset-details concrete subclass first;
StudioAssetCapacityMeteras a dumb vertical meter component with color thresholds and percentage display.
Do not force broad reuse rules yet.
First-Wave Component Baseline
The first-wave component contract should stay intentionally small.
StudioDualListView<T> should expose only the hooks needed for the initial bank-composition section:
- row text and/or row graphic projection;
- current left and right collections;
- current selection state;
- move left-to-right;
- move right-to-left;
moveUp;moveDown;- visible index refresh for the right-side list.
The first concrete asset-details subclass should render rows directly. Do not introduce a separate row renderer abstraction yet.
StudioAssetCapacityMeter should start as a dumb visual component with these baseline inputs:
progressin the0..1range;- a label, including percentage text when needed;
- a severity band state;
- optional hint text.
Open Questions
No open questions remain in this agenda wave.
Resolved In This Agenda Wave
The following points are now closed:
StudioDualListView<T>should expose only a narrow first-wave hook set for row projection, selection, transfers, reordering, and right-list index refresh.- The first concrete asset-details subclass should own row rendering directly.
StudioAssetCapacityMetershould start withprogress, label, severity band state, and optional hint text.
Next Suggested Step
Turn this into a decision that fixes the first-wave component contracts for StudioDualListView<T> and StudioAssetCapacityMeter.