44 lines
1.5 KiB
Markdown
44 lines
1.5 KiB
Markdown
# M52 CandidateLedger Component Contract
|
|
|
|
`ABGM52CandidateLedger` is the second independently reviewable M52 module.
|
|
It is a warm adventurer ledger, not a page controller: it receives candidate
|
|
data and emits one `action_requested` signal.
|
|
|
|
## Ownership tree
|
|
|
|
```text
|
|
ABGM52CandidateLedger (Control)
|
|
├── LedgerShell
|
|
├── LedgerHeader
|
|
├── PortraitModule
|
|
├── IdentityModule
|
|
├── FactCopy
|
|
├── TraitModule
|
|
├── CostModule
|
|
└── ActionButton
|
|
```
|
|
|
|
## Layout rules
|
|
|
|
- The shell and action use shared market chrome; the page must not add a
|
|
second panel or a second button style around this component.
|
|
- Portrait, name, trait and cost remain independent clipped modules. Text is
|
|
engine-rendered and never baked into generated art.
|
|
- The fact copy is limited to profession plus one short detail sentence;
|
|
long descriptions belong to a later full-screen detail state.
|
|
- The action occupies one bottom dock with a 48px minimum hit target.
|
|
|
|
## Responsive rules
|
|
|
|
The parent supplies a normalized slot. The ledger background may stretch, while
|
|
portrait and icon content preserve aspect ratio. All dynamic labels clip or
|
|
wrap inside their local bounds; no label may paint over the neighboring slot.
|
|
|
|
## Acceptance
|
|
|
|
- `m52_candidate_ledger_component_test.gd` verifies the tree, clipping and
|
|
non-overlapping slots.
|
|
- `m52_candidate_ledger_component_capture.gd` produces a 420x560 normal-render
|
|
evidence image.
|
|
- Owner visual review is required before Market integration.
|