@@ -1013,79 +1013,6 @@ <h2>Report User/Content</h2>
10131013 </ div >
10141014 </ div >
10151015
1016- <!-- Nostr Login Modal (easter egg via ASCII art click) -->
1017- < div class ="modal " id ="nostrLoginModal ">
1018- < div class ="modal-content nm-h-1 ">
1019- < button class ="modal-close " data-action ="nostrLoginCloseAndCancel "> ✕</ button >
1020- < div class ="modal-header "> Login with Nostr</ div >
1021- < div class ="modal-body ">
1022- < div class ="nm-h-21 ">
1023- Login with your Nostr identity to sync settings across devices.
1024- </ div >
1025-
1026- <!-- Browser Extension Option (hidden for NymchatApp shell) -->
1027- < div id ="nostrLoginExtensionOption " class ="nm-h-22 ">
1028- < button class ="send-btn nm-h-23 " id ="nostrLoginExtensionBtn " data-action ="nostrLoginWithExtension ">
1029- Login with Browser Extension
1030- </ button >
1031- < div class ="form-hint nm-h-24 "> Use Alby, nos2x, or another NIP-07 extension</ div >
1032- </ div >
1033-
1034- < div id ="nostrLoginDivider " class ="nm-h-25 ">
1035- or
1036- </ div >
1037-
1038- <!-- Remote Signer Option (NIP-46 Nostr Connect) -->
1039- < div id ="nostrLoginRemoteSignerOption " class ="nm-h-22 ">
1040- < button class ="send-btn nm-h-23 " id ="nostrLoginRemoteSignerBtn " data-action ="nostrLoginStartRemoteSigner ">
1041- Login with Remote Signer
1042- </ button >
1043- < div class ="form-hint nm-h-24 "> Use Amber, or another NIP-46 compatible remote signer</ div >
1044-
1045- <!-- Remote signer connection UI (hidden until initiated) -->
1046- < div id ="nostrLoginRemoteSignerConnect " class ="nm-hidden nm-h-26 ">
1047- < div class ="nm-h-27 ">
1048- < div id ="nostrLoginRemoteSignerStatus " class ="nm-h-28 ">
1049- Waiting for remote signer...
1050- </ div >
1051- < div id ="nostrLoginRemoteSignerQR " class ="nm-h-29 "> </ div >
1052- </ div >
1053- < div class ="form-group nm-h-30 ">
1054- < label class ="form-label "> Connection String</ label >
1055- < div class ="nm-h-31 ">
1056- < input type ="text " class ="form-input nm-h-32 " id ="nostrLoginBunkerURI " readonly >
1057- < button class ="icon-btn nm-h-33 " data-action ="nostrLoginCopyBunkerURI " title ="Copy "> Copy</ button >
1058- </ div >
1059- < div class ="form-hint "> Scan the QR code or copy this connection string into your remote signer app</ div >
1060- </ div >
1061- < div class ="nm-h-34 ">
1062- < button class ="icon-btn nm-h-16 " data-action ="nostrLoginCancelRemoteSigner "> Cancel</ button >
1063- </ div >
1064- </ div >
1065- </ div >
1066-
1067- < div id ="nostrLoginDivider2 " class ="nm-h-25 ">
1068- or
1069- </ div >
1070-
1071- <!-- Paste nsec Option -->
1072- < div class ="form-group nm-h-3 ">
1073- < label class ="form-label "> Paste your nsec</ label >
1074- < input type ="password " class ="form-input " id ="nostrLoginNsecInput " placeholder ="nsec1... " autocomplete ="off ">
1075- < div id ="nostrLoginError " class ="nm-hidden nm-h-20 "> </ div >
1076- < div class ="form-hint "> Your private key stays local and is never sent to any server</ div >
1077- </ div >
1078- </ div >
1079- < div class ="modal-actions ">
1080- < button class ="icon-btn " data-action ="nostrLoginCloseAndCancel "> Cancel</ button >
1081- < button class ="send-btn " id ="nostrLoginSubmitBtn " data-action ="nostrLoginWithNsec "> Login</ button >
1082- </ div > < br />
1083- < div class ="nm-h-35 ">
1084- By logging in, you agree to our < a href ="static/tos.html " target ="_blank " rel ="noopener " class ="nm-secondary "> Terms of Service</ a > and < a href ="static/pp.html " target ="_blank " rel ="noopener " class ="nm-secondary "> Privacy Policy</ a > .
1085- </ div >
1086- </ div >
1087- </ div >
1088-
10891016 <!-- Relay Stats Modal -->
10901017 < div class ="modal " id ="relayStatsModal ">
10911018 < div class ="modal-content relay-stats-content ">
@@ -1256,6 +1183,7 @@ <h2>Report User/Content</h2>
12561183 <!-- Initial Setup Modal -->
12571184 < div class ="modal " id ="setupModal ">
12581185 < div class ="modal-content setup-modal-content ">
1186+ < button class ="modal-close nm-hidden " id ="setupCloseBtn " data-action ="closeModal " data-modal-id ="setupModal "> ✕</ button >
12591187 < div class ="modal-header setup-modal-header ">
12601188 < pre class ="logo-ascii setup-logo nm-pointer " data-action ="openNostrLogin " title ="Login with Nostr ">
12611189 ##\ ##\
@@ -1273,8 +1201,12 @@ <h2>Report User/Content</h2>
12731201 </ div >
12741202 < div class ="modal-body ">
12751203 < div class ="setup-invite-banner nm-hidden " id ="setupInviteBanner "> </ div >
1204+ < div class ="setup-tabs " id ="setupTabs ">
1205+ < button type ="button " class ="setup-tab active " data-action ="switchSetupTab " data-setup-tab ="signup "> Sign up</ button >
1206+ < button type ="button " class ="setup-tab " data-action ="switchSetupTab " data-setup-tab ="login "> Login</ button >
1207+ </ div >
1208+ < div class ="setup-tab-panel " id ="setupSignupPanel ">
12761209 < div class ="form-group " id ="nymGroup ">
1277- < div data-action ="openNostrLogin " class ="nm-h-50 "> Login with nsec private key or extension? Click here</ div > < br />
12781210 < label class ="form-label "> Choose Your Nickname < span class ="nm-h-2 "> (optional)</ span > </ label >
12791211 < input type ="text " class ="form-input " id ="nymInput " placeholder ="Leave empty for random nickname "
12801212 maxlength ="20 " data-on-input ="updateFieldCharCount " data-char-count ="nymInputCharCount ">
@@ -1330,11 +1262,79 @@ <h2>Report User/Content</h2>
13301262 < div class ="input-char-count " id ="setupBioCharCount "> 0/150</ div >
13311263 < div class ="form-hint "> Short bio shown on your profile (max 150 characters)</ div >
13321264 </ div >
1265+ </ div >
1266+
1267+ <!-- Login panel (switches in place of the sign up fields) -->
1268+ < div class ="setup-tab-panel nm-hidden " id ="setupLoginPanel ">
1269+ < div class ="nm-h-21 ">
1270+ Login with your Nostr identity to sync settings across devices.
1271+ </ div >
1272+
1273+ <!-- Browser Extension Option (hidden for NymchatApp shell) -->
1274+ < div id ="nostrLoginExtensionOption " class ="nm-h-22 ">
1275+ < button class ="send-btn nm-h-23 " id ="nostrLoginExtensionBtn " data-action ="nostrLoginWithExtension ">
1276+ Login with Browser Extension
1277+ </ button >
1278+ < div class ="form-hint nm-h-24 "> Use Alby, nos2x, or another NIP-07 extension</ div >
1279+ </ div >
1280+
1281+ < div id ="nostrLoginDivider " class ="nm-h-25 ">
1282+ or
1283+ </ div >
1284+
1285+ <!-- Remote Signer Option (NIP-46 Nostr Connect) -->
1286+ < div id ="nostrLoginRemoteSignerOption " class ="nm-h-22 ">
1287+ < button class ="send-btn nm-h-23 " id ="nostrLoginRemoteSignerBtn " data-action ="nostrLoginStartRemoteSigner ">
1288+ Login with Remote Signer
1289+ </ button >
1290+ < div class ="form-hint nm-h-24 "> Use Amber, or another NIP-46 compatible remote signer</ div >
1291+
1292+ <!-- Remote signer connection UI (hidden until initiated) -->
1293+ < div id ="nostrLoginRemoteSignerConnect " class ="nm-hidden nm-h-26 ">
1294+ < div class ="nm-h-27 ">
1295+ < div id ="nostrLoginRemoteSignerStatus " class ="nm-h-28 ">
1296+ Waiting for remote signer...
1297+ </ div >
1298+ < div id ="nostrLoginRemoteSignerQR " class ="nm-h-29 "> </ div >
1299+ </ div >
1300+ < div class ="form-group nm-h-30 ">
1301+ < label class ="form-label "> Connection String</ label >
1302+ < div class ="nm-h-31 ">
1303+ < input type ="text " class ="form-input nm-h-32 " id ="nostrLoginBunkerURI " readonly >
1304+ < button class ="icon-btn nm-h-33 " data-action ="nostrLoginCopyBunkerURI " title ="Copy "> Copy</ button >
1305+ </ div >
1306+ < div class ="form-hint "> Scan the QR code or copy this connection string into your remote signer app</ div >
1307+ </ div >
1308+ < div class ="nm-h-34 ">
1309+ < button class ="icon-btn nm-h-16 " data-action ="nostrLoginCancelRemoteSigner "> Cancel</ button >
1310+ </ div >
1311+ </ div >
1312+ </ div >
1313+
1314+ < div id ="nostrLoginDivider2 " class ="nm-h-25 ">
1315+ or
1316+ </ div >
1317+
1318+ <!-- Paste nsec Option -->
1319+ < div class ="form-group nm-h-3 ">
1320+ < label class ="form-label "> Paste your nsec</ label >
1321+ < input type ="password " class ="form-input " id ="nostrLoginNsecInput " placeholder ="nsec1... " autocomplete ="off ">
1322+ < div id ="nostrLoginError " class ="nm-hidden nm-h-20 "> </ div >
1323+ < div class ="form-hint "> Your private key stays local and is never sent to any server</ div >
1324+ </ div >
1325+
1326+ < div class ="modal-actions nm-h-81 ">
1327+ < button class ="send-btn nm-h-82 " id ="nostrLoginSubmitBtn " data-action ="nostrLoginWithNsec "> Login</ button >
1328+ </ div >
1329+ < div class ="nm-h-35 ">
1330+ By logging in, you agree to our < a href ="static/tos.html " target ="_blank " rel ="noopener " class ="nm-secondary "> Terms of Service</ a > and < a href ="static/pp.html " target ="_blank " rel ="noopener " class ="nm-secondary "> Privacy Policy</ a > .
1331+ </ div >
1332+ </ div >
13331333 </ div >
1334- < div class ="modal-actions nm-h-7 ">
1334+ < div class ="modal-actions nm-h-7 " id =" setupSignupActions " >
13351335 < button class ="send-btn " id ="enterNymBtn " data-action ="initializeNym "> Enter</ button >
13361336 </ div >
1337- < span class ="nm-dim "> By entering, you agree to our < a href ="static/tos.html "
1337+ < span class ="nm-dim " id =" setupSignupTos " > By entering, you agree to our < a href ="static/tos.html "
13381338 target ="_blank " rel ="noopener " class ="nm-secondary "> Terms of Service</ a > and < a
13391339 href ="static/pp.html " target ="_blank " rel ="noopener " class ="nm-secondary "> Privacy
13401340 Policy</ a > .</ span >
0 commit comments