Skip to content

feat(wallet): port the cu-04 wallet screen with deposit / withdraw / transactions tabs#24

Merged
netqo merged 1 commit into
devfrom
feat/wallet-screen
May 27, 2026
Merged

feat(wallet): port the cu-04 wallet screen with deposit / withdraw / transactions tabs#24
netqo merged 1 commit into
devfrom
feat/wallet-screen

Conversation

@netqo
Copy link
Copy Markdown
Owner

@netqo netqo commented May 27, 2026

Summary

  • Replaces the Wallet placeholder with the cu-04 mockup port. Header, balance hero (Available + Locked + currency dropdown), tab strip (Deposit / Withdraw / Transactions) and three tab panes.
  • Splits the screen body into four files (WalletScreen, WalletDepositTab, WalletWithdrawTab, WalletTransactionsTab) so each section stays under the detekt function-count budget and reads as one cohesive surface.
  • Promotes CurrencyDropdown out of LobbyScreen into ui/components so the lobby and wallet balance blocks share one implementation.

Notes

  • Tab strip paints its underline with Modifier.drawBehind on the Text itself rather than wrapping in a Column with a fillMaxWidth indicator (the wrapped variant collapses the other two tabs to one character of width).
  • Address row uses Modifier.height(IntrinsicSize.Max) so the share / copy buttons can resolve fillMaxHeight against the wrapped mono address; combined with aspectRatio(1f) the buttons stay square regardless of how many lines the address occupies.
  • Amount quick-chips ($10 / $25 / $50 / $100 / MAX) all share weight 1f - the only visual differentiator on MAX is the violet border. Both chips pass an explicit lineHeight = AmountChipFontSize so they don't pick up the theme body lineHeight that was making MAX taller than its siblings.
  • Clipboard, share intent, real form validation and signing land with the wallet repository in a later card; the visual surface and tab behaviour ship now.

Test plan

  • ./gradlew assembleDebug
  • ./gradlew ktlintCheck
  • ./gradlew detekt
  • ./gradlew testDebugUnitTest
  • ./gradlew connectedDebugAndroidTest (WalletScreenTest: 4/4 passing on device)
  • Installed on device, walked all three tabs and the KYC CTA

…transactions tabs

Wires the Wallet destination to a real screen rendering the three tabs
from the mockup. The screen body lives across four files so each tab
stays focused and the detekt function-count budget is respected:

  * WalletScreen: title header, balance hero (Available + Locked +
    currency dropdown), tab strip with a per-text drawBehind underline
    so the row never collapses inactive tabs to a single column.
  * WalletDepositTab: mock QR (Canvas dot grid + finder squares + STACK
    glyph in the centre), monospace address row with square share /
    copy action buttons (height pinned via IntrinsicSize.Max so the
    buttons match the wrapped address's height as squares), Polygon
    network chip, lossy-network warning.
  * WalletWithdrawTab: destination + amount form with quick-amount
    chips ($10 / $25 / $50 / $100 / MAX, all equal width via flex
    weight 1f), inline available balance, fee summary, KYC gate
    (linked to the Kyc placeholder route), disabled Withdraw button.
  * WalletTransactionsTab: FilterChipRow (All / Deposits /
    Withdrawals), tx rows backed by StackCard with the win/loss/
    pending left accent stripe, EmptyState shown when the active
    filter has no rows.

Promotes CurrencyDropdown out of LobbyScreen into ui/components so
both the lobby balance block and the wallet balance block share a
single implementation.

Clipboard write, share intent, real form validation and signing are
deferred to the wallet repository in a later card; the visual surface
and tab behaviour ship now.
@netqo netqo merged commit 2dbd06e into dev May 27, 2026
3 checks passed
@netqo netqo deleted the feat/wallet-screen branch May 27, 2026 18:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant