From 5123d7973e25dadb952a6449dc036462716b48ea Mon Sep 17 00:00:00 2001 From: gudnuf Date: Thu, 14 May 2026 15:52:17 -0700 Subject: [PATCH 1/7] fix(send): match receive/buy layout so account selector doesn't drift The amount and destination now live in the same fixed-height (h-[124px]) block as receive/buy, instead of stacking under an outer wrapper with gap-4. The destination chip tucks tight below the amount when set, and the account selector position stays constant regardless of destination state. --- app/features/send/send-input.tsx | 44 +++++++++++++++----------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/app/features/send/send-input.tsx b/app/features/send/send-input.tsx index 253a6773b..715ca599f 100644 --- a/app/features/send/send-input.tsx +++ b/app/features/send/send-input.tsx @@ -187,32 +187,28 @@ export function SendInput() { -
-
-
- -
- - {!exchangeRateError && ( - - )} +
+
+
-
- {destinationDisplay && ( - <> -

{destinationDisplay}

- - - )} -
+ {!exchangeRateError && ( + + )} + + {destinationDisplay && ( +
+

{destinationDisplay}

+ +
+ )}
From 9d7d6841bbe8ab14fd1039e849682fb047db0ecd Mon Sep 17 00:00:00 2001 From: gudnuf Date: Thu, 14 May 2026 16:07:27 -0700 Subject: [PATCH 2/7] fix(send): tuck destination tight inside amount block and reclaim numpad pb The destination chip was overflowing the 124px amount block on small screens, painting over the account selector. Pull the chip tight against the converted-money switcher with -mt-2 so it fits exactly within the box, and zero the PageFooter mobile bottom padding to give 4-8px of breathing room between destination and selector via the justify-between redistribution. --- app/features/send/send-input.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/features/send/send-input.tsx b/app/features/send/send-input.tsx index 715ca599f..28ceb76a0 100644 --- a/app/features/send/send-input.tsx +++ b/app/features/send/send-input.tsx @@ -204,7 +204,7 @@ export function SendInput() { )} {destinationDisplay && ( -
+

{destinationDisplay}

@@ -263,7 +263,7 @@ export function SendInput() {
- + 0} onButtonClick={(value) => { From 1b3b414adb690ca6cd32889069b6de960eca3fd3 Mon Sep 17 00:00:00 2001 From: gudnuf Date: Thu, 14 May 2026 16:26:02 -0700 Subject: [PATCH 3/7] refactor(send): replace action buttons with destination chip when set Previously the destination chip lived inside the 124px amount block, which forced layout compromises (overlap with selector, dead space, shifts). Move it to the action row instead: when a destination is picked, the Paste/Scan/AtSign icons are replaced by a chip showing the destination with an X to clear. Hitting X restores the icons. This keeps the amount + account selector spacing identical to the receive and buy pages, and the chip's col-span-2 grid cell has enough width for the truncated bolt11 display. --- app/features/send/send-input.tsx | 69 ++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/app/features/send/send-input.tsx b/app/features/send/send-input.tsx index 28ceb76a0..5130851c5 100644 --- a/app/features/send/send-input.tsx +++ b/app/features/send/send-input.tsx @@ -202,13 +202,6 @@ export function SendInput() { money={convertedValue} /> )} - - {destinationDisplay && ( -
-

{destinationDisplay}

- -
- )}
@@ -229,28 +222,44 @@ export function SendInput() {
-
- - - - - - - {sendAccount.purpose === 'transactional' && ( - - )} -
-
{/* spacer */} + {destinationDisplay ? ( +
+ {destinationDisplay} + +
+ ) : ( + <> +
+ + + + + + + {sendAccount.purpose === 'transactional' && ( + + )} +
+
{/* spacer */} + + )}
- + 0} onButtonClick={(value) => { From f2c23b111000c138d3690c801305ea1678f2f470 Mon Sep 17 00:00:00 2001 From: gudnuf Date: Thu, 14 May 2026 16:36:28 -0700 Subject: [PATCH 4/7] feat(send): show more of the bolt11 invoice in destination chip The destination chip in the action row has enough width for ~24 monospace characters at text-sm; the previous 6+...+4 only used 13. Bump to 12+...+8 so the user can recognize more of the invoice at a glance. --- app/features/send/resolve-destination.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/features/send/resolve-destination.ts b/app/features/send/resolve-destination.ts index 45f7e9123..ca88f69bd 100644 --- a/app/features/send/resolve-destination.ts +++ b/app/features/send/resolve-destination.ts @@ -79,7 +79,7 @@ export async function resolveSendDestination( data: { sendType: 'BOLT11_INVOICE', destination: encoded, - destinationDisplay: `${encoded.slice(0, 6)}...${encoded.slice(-4)}`, + destinationDisplay: `${encoded.slice(0, 12)}...${encoded.slice(-8)}`, amount: validated.amount, decoded: bolt11.decoded, }, From 21c2456a5f0fb9ec0cc3df7ab44fa6b756bf10e5 Mon Sep 17 00:00:00 2001 From: gudnuf Date: Thu, 14 May 2026 16:39:34 -0700 Subject: [PATCH 5/7] tweak(send): dial bolt11 destination truncation to 10+6 --- app/features/send/resolve-destination.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/features/send/resolve-destination.ts b/app/features/send/resolve-destination.ts index ca88f69bd..2eef18fa6 100644 --- a/app/features/send/resolve-destination.ts +++ b/app/features/send/resolve-destination.ts @@ -79,7 +79,7 @@ export async function resolveSendDestination( data: { sendType: 'BOLT11_INVOICE', destination: encoded, - destinationDisplay: `${encoded.slice(0, 12)}...${encoded.slice(-8)}`, + destinationDisplay: `${encoded.slice(0, 10)}...${encoded.slice(-6)}`, amount: validated.amount, decoded: bolt11.decoded, }, From bc6a7dfa32f3106d97176159665fdbe2436dd401 Mon Sep 17 00:00:00 2001 From: gudnuf Date: Thu, 14 May 2026 17:03:33 -0700 Subject: [PATCH 6/7] style(send): match destination chip outline to account selector --- app/features/send/send-input.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/features/send/send-input.tsx b/app/features/send/send-input.tsx index 5130851c5..45bbb64b0 100644 --- a/app/features/send/send-input.tsx +++ b/app/features/send/send-input.tsx @@ -223,7 +223,7 @@ export function SendInput() {
{destinationDisplay ? ( -
+
{destinationDisplay}