refactor: replace hr separators with light well containers in TransactionDetail
All checks were successful
check / check (push) Successful in 9s

Replace horizontal rules (<hr>) between TransactionDetail groups with
bg-well container divs matching the Settings view pattern. Each logical
group (Identity, Timing, Value, Decoded Details, Network Details, Raw
Data) is now wrapped in a bg-well p-3 mx-1 mb-3 container with an h3
heading, providing subtle background-based visual grouping instead of
line separators.

Conditional groups (Decoded, Network, Raw Data) retain their visibility
toggling with the bg-well wrapper inside the hidden container.

Update README TransactionDetail section to reflect light well containers.

Closes #131
This commit is contained in:
clawbot
2026-03-01 07:40:03 -08:00
parent 437b904ab6
commit a35f794c53
2 changed files with 112 additions and 82 deletions

View File

@@ -435,7 +435,8 @@ transitions.
#### TransactionDetail #### TransactionDetail
- **When**: User tapped a transaction row from AddressDetail or AddressToken. - **When**: User tapped a transaction row from AddressDetail or AddressToken.
- **Elements** (grouped into logical blocks separated by thin rules): - **Elements** (grouped into logical blocks using light well containers,
matching the Settings view pattern):
- "Transaction" heading, "Back" button - "Transaction" heading, "Back" button
- **Identity block**: - **Identity block**:
- Transaction hash: full hash (tap to copy) + etherscan link - Transaction hash: full hash (tap to copy) + etherscan link

View File

@@ -1066,109 +1066,138 @@
</h2> </h2>
<!-- ── Identity ── --> <!-- ── Identity ── -->
<div class="mb-2"> <div class="bg-well p-3 mx-1 mb-3">
<div class="text-xs text-muted mb-1">Transaction hash</div> <h3 class="font-bold mb-1">Identity</h3>
<div id="tx-detail-hash" class="text-xs break-all"></div> <div class="mb-2">
<div class="text-xs text-muted mb-1">
Transaction hash
</div>
<div
id="tx-detail-hash"
class="text-xs break-all"
></div>
</div>
<div id="tx-detail-type-section" class="mb-2 hidden">
<div class="text-xs text-muted mb-1">Type</div>
<div
id="tx-detail-type"
class="text-xs font-bold"
></div>
</div>
<div class="mb-2">
<div class="text-xs text-muted mb-1">Status</div>
<div id="tx-detail-status" class="text-xs"></div>
</div>
</div> </div>
<div id="tx-detail-type-section" class="mb-2 hidden">
<div class="text-xs text-muted mb-1">Type</div>
<div id="tx-detail-type" class="text-xs font-bold"></div>
</div>
<div class="mb-2">
<div class="text-xs text-muted mb-1">Status</div>
<div id="tx-detail-status" class="text-xs"></div>
</div>
<hr class="border-border my-3" />
<!-- ── Timing ── --> <!-- ── Timing ── -->
<div class="mb-2"> <div class="bg-well p-3 mx-1 mb-3">
<div class="text-xs text-muted mb-1">Time</div> <h3 class="font-bold mb-1">Timing</h3>
<div id="tx-detail-time" class="text-xs"></div> <div class="mb-2">
<div class="text-xs text-muted mb-1">Time</div>
<div id="tx-detail-time" class="text-xs"></div>
</div>
<div id="tx-detail-block-section" class="mb-2 hidden">
<div class="text-xs text-muted mb-1">Block</div>
<div id="tx-detail-block" class="text-xs"></div>
</div>
</div> </div>
<div id="tx-detail-block-section" class="mb-2 hidden">
<div class="text-xs text-muted mb-1">Block</div>
<div id="tx-detail-block" class="text-xs"></div>
</div>
<hr class="border-border my-3" />
<!-- ── Value ── --> <!-- ── Value ── -->
<div class="mb-2"> <div class="bg-well p-3 mx-1 mb-3">
<div class="text-xs text-muted mb-1">Amount</div> <h3 class="font-bold mb-1">Value</h3>
<div id="tx-detail-value" class="text-xs"></div> <div class="mb-2">
</div> <div class="text-xs text-muted mb-1">Amount</div>
<div class="mb-2 hidden"> <div id="tx-detail-value" class="text-xs"></div>
<div class="text-xs text-muted mb-1">Native quantity</div> </div>
<div id="tx-detail-native" class="text-xs"></div> <div class="mb-2 hidden">
</div> <div class="text-xs text-muted mb-1">
<div id="tx-detail-token-contract-section" class="mb-2 hidden"> Native quantity
<div class="text-xs text-muted mb-1">Token contract</div> </div>
<div id="tx-detail-native" class="text-xs"></div>
</div>
<div <div
id="tx-detail-token-contract" id="tx-detail-token-contract-section"
class="text-xs break-all" class="mb-2 hidden"
></div> >
</div> <div class="text-xs text-muted mb-1">
<div class="mb-2"> Token contract
<div class="text-xs text-muted mb-1">From</div> </div>
<div id="tx-detail-from" class="text-xs break-all"></div> <div
</div> id="tx-detail-token-contract"
<div class="mb-2"> class="text-xs break-all"
<div class="text-xs text-muted mb-1">To</div> ></div>
<div id="tx-detail-to" class="text-xs break-all"></div> </div>
<div class="mb-2">
<div class="text-xs text-muted mb-1">From</div>
<div
id="tx-detail-from"
class="text-xs break-all"
></div>
</div>
<div class="mb-2">
<div class="text-xs text-muted mb-1">To</div>
<div id="tx-detail-to" class="text-xs break-all"></div>
</div>
</div> </div>
<!-- ── Decoded details ── --> <!-- ── Decoded details ── -->
<div id="tx-detail-calldata-section" class="hidden"> <div id="tx-detail-calldata-section" class="hidden">
<hr class="border-border my-3" /> <div class="bg-well p-3 mx-1 mb-3">
<div <h3 class="font-bold mb-1">Decoded Details</h3>
id="tx-detail-calldata-well" <div id="tx-detail-calldata-well" class="mb-2">
class="mb-2 border border-border border-dashed p-2" <div class="text-xs text-muted mb-1">Action</div>
> <div
<div class="text-xs text-muted mb-1">Action</div> id="tx-detail-calldata-action"
<div class="text-xs font-bold mb-2"
id="tx-detail-calldata-action" ></div>
class="text-xs font-bold mb-2" <div
></div> id="tx-detail-calldata-details"
<div class="text-xs"
id="tx-detail-calldata-details" ></div>
class="text-xs" </div>
></div>
</div> </div>
</div> </div>
<!-- ── Network details ── --> <!-- ── Network details ── -->
<div id="tx-detail-network-section" class="hidden"> <div id="tx-detail-network-section" class="hidden">
<hr class="border-border my-3" /> <div class="bg-well p-3 mx-1 mb-3">
<div id="tx-detail-nonce-section" class="mb-2 hidden"> <h3 class="font-bold mb-1">Network Details</h3>
<div class="text-xs text-muted mb-1">Nonce</div> <div id="tx-detail-nonce-section" class="mb-2 hidden">
<div id="tx-detail-nonce" class="text-xs"></div> <div class="text-xs text-muted mb-1">Nonce</div>
</div> <div id="tx-detail-nonce" class="text-xs"></div>
<div id="tx-detail-gasprice-section" class="mb-2 hidden"> </div>
<div class="text-xs text-muted mb-1">Gas price</div> <div
<div id="tx-detail-gasprice" class="text-xs"></div> id="tx-detail-gasprice-section"
</div> class="mb-2 hidden"
<div id="tx-detail-gasused-section" class="mb-2 hidden"> >
<div class="text-xs text-muted mb-1">Gas used</div> <div class="text-xs text-muted mb-1">Gas price</div>
<div id="tx-detail-gasused" class="text-xs"></div> <div id="tx-detail-gasprice" class="text-xs"></div>
</div> </div>
<div id="tx-detail-fee-section" class="mb-2 hidden"> <div id="tx-detail-gasused-section" class="mb-2 hidden">
<div class="text-xs text-muted mb-1"> <div class="text-xs text-muted mb-1">Gas used</div>
Transaction fee <div id="tx-detail-gasused" class="text-xs"></div>
</div>
<div id="tx-detail-fee-section" class="mb-2 hidden">
<div class="text-xs text-muted mb-1">
Transaction fee
</div>
<div id="tx-detail-fee" class="text-xs"></div>
</div> </div>
<div id="tx-detail-fee" class="text-xs"></div>
</div> </div>
</div> </div>
<!-- ── Raw data ── --> <!-- ── Raw data ── -->
<div id="tx-detail-rawdata-section" class="hidden"> <div id="tx-detail-rawdata-section" class="hidden">
<hr class="border-border my-3" /> <div class="bg-well p-3 mx-1 mb-3">
<div class="mb-2"> <h3 class="font-bold mb-1">Raw Data</h3>
<div class="text-xs text-muted mb-1">Raw data</div> <div class="mb-2">
<div <div class="text-xs text-muted mb-1">Raw data</div>
id="tx-detail-rawdata" <div
class="text-xs break-all font-mono border border-border border-dashed p-2" id="tx-detail-rawdata"
></div> class="text-xs break-all font-mono border border-border border-dashed p-2"
></div>
</div>
</div> </div>
</div> </div>
</div> </div>