Problem
Three issues in TransactionHistory affect UX, accessibility, and data correctness.
1. feePaid field from Transaction type is never displayed
Transaction has a feePaid field but TxRow only renders the hash, ledger, memo, status, and timestamp. Users have no way to see what fee was paid for a transaction without going to Stellar Explorer.
2. Transaction memo is truncated with no tooltip for long memos
{tx.memo && <span className="text-[10px] text-ink-3">· {tx.memo}</span>} renders the full memo inline. Long memos overflow the row layout. No title attribute or truncation cap is applied.
3. TxRow has no role or aria-label — screen readers announce raw text
Each TxRow is a <div> with no semantic role. Screen reader users traversing the list hear the truncated hash, ledger number, memo, and status as unrelated fragments with no grouping context.
Solution
- Add a
feePaid field to TxRow rendered as a small secondary label (e.g. "Fee: 100 stroops").
- Cap memo display at 20 chars with
title={tx.memo} for the full value.
- Add
role="row" or wrap each TxRow in an <article> with aria-label describing the transaction.
Acceptance Criteria
Note for Contributors: Write a clear PR description. Include a screenshot of the updated row layout showing the fee field and truncated memo.
Problem
Three issues in
TransactionHistoryaffect UX, accessibility, and data correctness.1.
feePaidfield fromTransactiontype is never displayedTransactionhas afeePaidfield butTxRowonly renders the hash, ledger, memo, status, and timestamp. Users have no way to see what fee was paid for a transaction without going to Stellar Explorer.2. Transaction memo is truncated with no tooltip for long memos
{tx.memo && <span className="text-[10px] text-ink-3">· {tx.memo}</span>}renders the full memo inline. Long memos overflow the row layout. Notitleattribute or truncation cap is applied.3.
TxRowhas noroleoraria-label— screen readers announce raw textEach
TxRowis a<div>with no semantic role. Screen reader users traversing the list hear the truncated hash, ledger number, memo, and status as unrelated fragments with no grouping context.Solution
feePaidfield toTxRowrendered as a small secondary label (e.g. "Fee: 100 stroops").title={tx.memo}for the full value.role="row"or wrap eachTxRowin an<article>witharia-labeldescribing the transaction.Acceptance Criteria
feePaidis visible in each transaction rowtitletooltipnpm run buildpasses