Skip to content

feat(wallet-setup): primary Spark mode + More-options accordion#570

Open
dmnyc wants to merge 1 commit into
barrydeen:mainfrom
dmnyc:feat/wallet-setup-spark-primary
Open

feat(wallet-setup): primary Spark mode + More-options accordion#570
dmnyc wants to merge 1 commit into
barrydeen:mainfrom
dmnyc:feat/wallet-setup-spark-primary

Conversation

@dmnyc
Copy link
Copy Markdown
Contributor

@dmnyc dmnyc commented May 26, 2026

First in a series of slim carve-outs from #556 (closing soon). Pure UI / no behavioural change — just makes the obvious next step visually obvious. Ports iOS commit #3 from feat/one-tap-zap.

What changes

Mode picker (screen 1):

  • Spark row → full-bleed orange card with white text + icon, layered shadow glow (two stacked shadows in WispThemeColors.zapColor — wide outer + tighter inner — for the iOS bloom)
  • NWC keeps its dark surface-variant peer treatment. Not buried under "More options" per spec — it's a genuine alternative

Spark sub-screen (screen 2):

  • "Use my default wallet" gets the same primary treatment (orange fill + glow stack) so the nsec-derived recovery path reads as the obvious first choice
  • Create new / Restore from seed phrase / Restore from relays collapse under a "More options" disclosure with a chevron that rotates 0→180° via animateFloatAsState. Expand defaults to open if there's no default-wallet option visible (so users who can't derive still see all paths immediately)
  • AnimatedVisibility wraps the inner column for the expand/collapse transition (expandVertically + fadeIn / shrinkVertically + fadeOut), matching the iOS "fade rows in/out" cue

Scope

One file: app/src/main/kotlin/com/wisp/app/ui/screen/WalletScreen.kt (+148 / -26).

Test plan

  • Mode picker shows Spark as glowing orange card, NWC as dark surface-variant peer
  • Tap NWC → goes to NWC setup
  • Tap Spark → goes to Spark sub-screen
  • On Spark sub-screen with default-wallet available: orange "Use my default wallet" row visible, "More options" collapsed by default. Tap to expand → other paths fade in.
  • On Spark sub-screen with no default-wallet (e.g. fresh install): "More options" expanded by default, all paths immediately visible.

Carve-out context

Replaces the equivalent work in #556. Other slim PRs follow for the remaining concerns:

  • Wallet dashboard polish (top-5 tx, NWC paste reorder, parity polish)
  • Bolt glow pulse animation
  • Zap sheet pin Send button + recipient wiring
  • Zap sheet iOS-layout rewrite + in-sheet toggle
  • Instant zap (long-press) + Interface settings section
  • Hero-input composer + Edit Presets sheet + per-account presets

Ports iOS commit barrydeen#3 from feat/one-tap-zap. Two-screen reshape that
makes the obvious next step visually obvious.

Mode picker (Screen 1):
  • Spark row is now a full-bleed orange card with white text + icon,
    layered shadow glow (two stacked shadows in `WispThemeColors.zapColor`
    — wide outer + tighter inner — for the iOS bloom).
  • NWC keeps its dark surface-variant peer treatment. Not buried
    under "More options" per spec — it's a genuine alternative.

Spark sub-screen (Screen 2):
  • "Use my default wallet" gets the same primary treatment (orange
    fill + glow stack) so the nsec-derived recovery path reads as
    the obvious first choice.
  • Create new / Restore from seed phrase / Restore from relays
    collapse under a "More options" disclosure with a chevron that
    rotates 0→180° via animateFloatAsState. Expand defaults to
    open if there's no default-wallet option visible (so users who
    can't derive still see all paths immediately).
  • AnimatedVisibility wraps the inner Column for the expand/collapse
    transition (expandVertically + fadeIn / shrinkVertically +
    fadeOut), matching the iOS "fade rows in/out" cue.

Extracted as `WalletPrimaryRow`, shared by both screens.

Vertical-centering of the pick stack (iOS spec calls out a
GeometryReader-backed ScrollView) isn't implemented here — the
existing Spark sub-screen already uses weighted spacers within a
non-scrolling Column, which centers naturally when content fits
the viewport; smaller phones fall back to scroll via the parent's
verticalScroll.
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