@@ -23,8 +23,8 @@ export default function BackupSection({ keys, onBackupComplete }: BackupSectionP
2323 id : 'lose-key' ,
2424 question : 'What happens if I lose my private key?' ,
2525 options : [
26- 'I lose access to my account forever' ,
2726 'I can reset it with my email' ,
27+ 'I lose access to my account forever' ,
2828 'Buho can recover it for me'
2929 ] ,
3030 correct : 'I lose access to my account forever' ,
@@ -34,7 +34,7 @@ export default function BackupSection({ keys, onBackupComplete }: BackupSectionP
3434 {
3535 id : 'share-key' ,
3636 question : 'Who should I share my private key with?' ,
37- options : [ 'Nobody, ever ' , 'Close friends only ' , 'Customer support if needed' ] ,
37+ options : [ 'Close friends only ' , 'Nobody, ever ' , 'Customer support if needed' ] ,
3838 correct : 'Nobody, ever' ,
3939 explanation :
4040 'Your private key is like your digital DNA. Anyone with access can impersonate you completely.'
@@ -185,6 +185,7 @@ export default function BackupSection({ keys, onBackupComplete }: BackupSectionP
185185 onClick = { ( ) => {
186186 handleCopy ( keys . nsec , 'nsec' ) ;
187187 markBackupMethod ( 'copy-private' ) ;
188+ if ( navigator . vibrate ) navigator . vibrate ( 10 ) ;
188189 } }
189190 className = "p-3 rounded-xl border border-gray-900 bg-black text-white hover:bg-gray-900/90 transition-colors"
190191 aria-label = "Copy private key"
@@ -218,6 +219,7 @@ export default function BackupSection({ keys, onBackupComplete }: BackupSectionP
218219 onClick = { ( ) => {
219220 handleCopy ( keys . mnemonic ! , 'mnemonic' ) ;
220221 markBackupMethod ( 'copy-mnemonic' ) ;
222+ if ( navigator . vibrate ) navigator . vibrate ( 10 ) ;
221223 } }
222224 className = "p-3 rounded-xl border border-gray-300 bg-white hover:bg-gray-50 transition-colors"
223225 aria-label = "Copy mnemonic"
@@ -319,8 +321,8 @@ export default function BackupSection({ keys, onBackupComplete }: BackupSectionP
319321 </ div >
320322
321323 { /* Manual Copy Method */ }
322- < div className = "border border-gray-200 rounded-xl p-4" >
323- < div className = "flex items-center justify-between" >
324+ < div className = "border border-gray-200 rounded-xl p-4 relative " >
325+ < div className = "flex items-center justify-between mb-3 " >
324326 < div className = "flex items-center" >
325327 < div className = "w-12 h-12 rounded-xl flex items-center justify-center mr-3 bg-gray-100 border border-gray-200" >
326328 < Copy className = "w-6 h-6 text-black" />
@@ -334,6 +336,30 @@ export default function BackupSection({ keys, onBackupComplete }: BackupSectionP
334336 < CheckCircle className = "w-6 h-6 text-gray-600" />
335337 ) }
336338 </ div >
339+
340+ < button
341+ onClick = { ( ) => {
342+ handleCopy ( keys . nsec , 'manual-nsec' ) ;
343+ markBackupMethod ( 'copy-private' ) ;
344+ if ( navigator . vibrate ) navigator . vibrate ( 10 ) ;
345+ } }
346+ className = "w-full rounded-xl py-3 px-4 font-medium text-white bg-black border border-black hover:bg-gray-900 transition-colors active:scale-[0.99]"
347+ aria-label = "Copy nsec to clipboard"
348+ >
349+ Copy Private Key (nsec)
350+ </ button >
351+
352+ { /* Mobile-friendly toast */ }
353+ { copied === 'manual-nsec' && (
354+ < div
355+ role = "status"
356+ aria-live = "polite"
357+ className = "pointer-events-none fixed inset-x-0 bottom-4 mx-auto w-[90%] sm:w-auto sm:min-w-[260px] bg-black text-white text-sm font-medium px-4 py-3 rounded-2xl shadow-xl border border-gray-900/70 flex items-center justify-center gap-2"
358+ >
359+ < Check className = "w-4 h-4 text-white" />
360+ Copied to clipboard
361+ </ div >
362+ ) }
337363 </ div >
338364 </ div >
339365 </ div >
0 commit comments