aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-02-27 23:45:57 -0800
committerAdam Soltys <[email protected]>2026-02-27 23:45:57 -0800
commita13df7e6333514843a12832f6d75ce5a4a8eade9 (patch)
tree66685c5487ee571e18e0e18575ca2608d4a04273 /src
parent7f52cb3b1613e8acb50755483ef210a4f9e15ac3 (diff)
downloadcoinos-ui-a13df7e6333514843a12832f6d75ce5a4a8eade9.tar.gz
coinos-ui-a13df7e6333514843a12832f6d75ce5a4a8eade9.zip
ui updates
Diffstat (limited to 'src')
-rw-r--r--src/components/Menu.svelte2
-rw-r--r--src/components/Toggle.svelte2
-rw-r--r--src/lib/store.ts2
-rw-r--r--src/locales/ar.json7
-rw-r--r--src/locales/bn.json7
-rw-r--r--src/locales/de.json5
-rw-r--r--src/locales/el.json5
-rw-r--r--src/locales/en.json7
-rw-r--r--src/locales/es.json5
-rw-r--r--src/locales/fa.json5
-rw-r--r--src/locales/fr.json5
-rw-r--r--src/locales/hi.json7
-rw-r--r--src/locales/it.json5
-rw-r--r--src/locales/ja.json7
-rw-r--r--src/locales/ko.json7
-rw-r--r--src/locales/nl.json5
-rw-r--r--src/locales/pl.json5
-rw-r--r--src/locales/pt.json7
-rw-r--r--src/locales/ru.json7
-rw-r--r--src/locales/th.json7
-rw-r--r--src/locales/tr.json7
-rw-r--r--src/locales/zh.json5
-rw-r--r--src/routes/(app)/[username]/(profile)/+layout.svelte132
-rw-r--r--src/routes/(app)/[username]/accepted/[text]/+page.svelte5
-rw-r--r--src/routes/(app)/settings/account/+page.svelte2
-rw-r--r--src/routes/(app)/settings/profile/+page.svelte43
-rw-r--r--src/routes/(static)/register/+page.svelte4
-rw-r--r--src/routes/(static)/register/auth/+page.svelte4
28 files changed, 148 insertions, 163 deletions
diff --git a/src/components/Menu.svelte b/src/components/Menu.svelte
index f1584cde..17c0bf08 100644
--- a/src/components/Menu.svelte
+++ b/src/components/Menu.svelte
@@ -8,7 +8,7 @@
let showMenu = $state(false);
let menuButtons = [
- { key: "nav.settings", icon: "ph:gear-bold", href: `/settings` },
+ { key: "nav.settings", icon: "ph:faders-bold", href: `/settings` },
{ key: "nav.support", icon: "ph:lifebuoy-bold", href: `/support` },
{ key: "nav.map", icon: "ph:map-trifold-bold", href: `/map` },
// {
diff --git a/src/components/Toggle.svelte b/src/components/Toggle.svelte
index 8aee2829..14a8abcc 100644
--- a/src/components/Toggle.svelte
+++ b/src/components/Toggle.svelte
@@ -5,6 +5,6 @@
<label for={id} class="inline-flex relative items-center mr-5 cursor-pointer">
<input type="checkbox" bind:checked={value} {id} name={id} class="sr-only peer" />
<div
- class="w-11 h-6 bg-gray-200 rounded-full peer dark:bg-gray-700 peer-focus:ring-4 peer-focus:ring-gray-300 dark:peer-focus:ring-gray-800 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-green-500"
+ class="w-11 h-6 bg-gray-400 rounded-full peer peer-focus:ring-4 peer-focus:ring-gray-300 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-green-500"
></div>
</label>
diff --git a/src/lib/store.ts b/src/lib/store.ts
index df2c1eba..435df4b2 100644
--- a/src/lib/store.ts
+++ b/src/lib/store.ts
@@ -71,7 +71,7 @@ export const avatar = writable();
export const banner = writable();
export const event = writable();
export const events = writable({});
-export const fiat = persistLocalValue("fiat", true);
+export const fiat = persistLocalValue("fiat", false);
export const installPrompt: Writable<any> = writable();
export const invoice = writable();
export const last = writable();
diff --git a/src/locales/ar.json b/src/locales/ar.json
index 5cc77c61..8d7dfb57 100644
--- a/src/locales/ar.json
+++ b/src/locales/ar.json
@@ -250,7 +250,7 @@
"login": {
"forgot": "نسيت كلمة السر؟?",
"resetSent": "وصلة إعادة صياغة كلمة السر سوف ترسل إلى بريدك الإلكتروني إذا كان لدينا على ملف.",
- "continue": "استمر",
+ "continue": "متابعة",
"reset": "إعادة صياغة كلمة السر",
"resetDesc": "يمكننا إرسال وصلة إعادة إذا أضفت وتحققت من بريدك الإليكتروني",
"optional": "الاختياري",
@@ -274,7 +274,10 @@
"accountCreatedNeedsPasskey": "! يجب أن تجهزي مفتاح المرور لتكمليه.",
"setupPasskey": "جهزوا جواز السفر",
"passkeyCreationFailed": "فشل صنع (باسكي) أرجوك حاول مرة أخرى.",
- "enter2faCode": "Enter 2FA Code"
+ "enter2faCode": "Enter 2FA Code",
+ "usernamePlaceholder": "اسم المستخدم الخاص بك",
+ "registerPasskey": "التسجيل باستخدام مفتاح المرور",
+ "registerNostr": "التسجيل باستخدام Nostr"
},
"nav": {
"dark": "الوضع الداكن",
diff --git a/src/locales/bn.json b/src/locales/bn.json
index 87a0b4ed..c28d34a0 100644
--- a/src/locales/bn.json
+++ b/src/locales/bn.json
@@ -220,7 +220,7 @@
"login": {
"forgot": "পাসওয়ার্ড ভুলে গেলে?",
"resetSent": "ফাইলের মধ্যে উপস্থিত তথ্য নিরাপদ হলে পাসওয়ার্ড সহযোগে একটি পাসওয়ার্ড সহযোগে প্রেরিত হবে।.",
- "continue": "এগিয়ে চলুন",
+ "continue": "চালিয়ে যান",
"reset": "পাসওয়ার্ড পুনরায় নির্ধারণ করুন",
"resetDesc": "আপনি যোগ করলে আমরা একটি রিসেট লিঙ্ক পাঠাতে পারেন এবং যাচাই করে দেখতে পারেন অন্যথায় অনুগ্রহ করে প্রবেশ করুন",
"optional": "বিকল্প",
@@ -244,7 +244,10 @@
"accountCreatedNeedsPasskey": "অ্যাকাউন্ট তৈরি! আপনাকে একটি পাসকি সেট করতে হবে।.",
"setupPasskey": "পাস-কি স্থাপন করুন",
"passkeyCreationFailed": "পাসকি সৃষ্টি করতে ব্যর্থ. অনুগ্রহ করে পুনরায় প্রচেষ্টা করুন।.",
- "enter2faCode": "২F কোড লিখুন"
+ "enter2faCode": "২F কোড লিখুন",
+ "usernamePlaceholder": "আপনার ব্যবহারকারীর নাম",
+ "registerPasskey": "পাসকি দিয়ে নিবন্ধন করুন",
+ "registerNostr": "Nostr দিয়ে নিবন্ধন করুন"
},
"nav": {
"dark": "ডার্ক মোড",
diff --git a/src/locales/de.json b/src/locales/de.json
index fc78402d..e99b8130 100644
--- a/src/locales/de.json
+++ b/src/locales/de.json
@@ -194,7 +194,10 @@
"accountCreatedNeedsPasskey": "Konto erstellt! Du musst einen Passkey einrichten, um weiterzumachen.",
"setupPasskey": "Passkey einrichten",
"passkeyCreationFailed": "Passkey-Erstellung fehlgeschlagen. Bitte versuchen Sie es noch einmal.",
- "enter2faCode": "Geben Sie 2FA-Code ein"
+ "enter2faCode": "Geben Sie 2FA-Code ein",
+ "usernamePlaceholder": "Dein Benutzername",
+ "registerPasskey": "Mit Passkey registrieren",
+ "registerNostr": "Mit Nostr registrieren"
},
"nav": {
"profile": "Profil",
diff --git a/src/locales/el.json b/src/locales/el.json
index f669dc90..bc17abc0 100644
--- a/src/locales/el.json
+++ b/src/locales/el.json
@@ -163,7 +163,10 @@
"accountCreatedNeedsPasskey": "Ο λογαριασμός δημιουργήθηκε! Πρέπει να στήσεις ένα κλειδί για να συνεχίσεις.",
"setupPasskey": "Set κλειδιού πρόσβασης",
"passkeyCreationFailed": "Η δημιουργία passkey απέτυχε. Παρακαλώ προσπαθήστε ξανά.",
- "enter2faCode": "Εισάγετε τον κωδικό 2FA"
+ "enter2faCode": "Εισάγετε τον κωδικό 2FA",
+ "usernamePlaceholder": "Το όνομα χρήστη σου",
+ "registerPasskey": "Εγγραφή με Passkey",
+ "registerNostr": "Εγγραφή με Nostr"
},
"nav": {
"profile": "Προφίλ",
diff --git a/src/locales/en.json b/src/locales/en.json
index 01fefe71..ae5a56f0 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -309,7 +309,10 @@
"accountCreatedNeedsPasskey": "Account created! You need to set up a passkey to continue.",
"setupPasskey": "Set up Passkey",
"passkeyCreationFailed": "Passkey creation failed. Please try again.",
- "enter2faCode": "Enter 2FA Code"
+ "enter2faCode": "Enter 2FA Code",
+ "usernamePlaceholder": "Your username",
+ "registerPasskey": "Register with Passkey",
+ "registerNostr": "Register with Nostr"
},
"nav": {
"home": "Home",
@@ -341,6 +344,7 @@
"loadMore": "Load more",
"url": "Public URL",
"lnurl": "Payment code",
+ "copyLnurl": "Copy LNURL",
"install": "Add to homescreen",
"moreDetails": "Profile details",
"noMessages": "You have not sent or received any messages",
@@ -365,6 +369,7 @@
"pay": "Pay",
"scanToPayBTC": "Scan to pay with bitcoin",
"this": "This",
+ "paymentCode": "Payment code",
"lightningAddress": "Lightning address",
"dashboard": {
"setup": "Setup self-custody",
diff --git a/src/locales/es.json b/src/locales/es.json
index 65430b04..dba0385a 100644
--- a/src/locales/es.json
+++ b/src/locales/es.json
@@ -177,7 +177,10 @@
"accountCreatedNeedsPasskey": "¡Cuenta creada! Necesitas establecer un passkey para continuar.",
"setupPasskey": "Configuración de Passkey",
"passkeyCreationFailed": "La creación de Passkey falló. Por favor, inténtalo de nuevo.",
- "enter2faCode": "Código 2FA"
+ "enter2faCode": "Código 2FA",
+ "usernamePlaceholder": "Tu nombre de usuario",
+ "registerPasskey": "Registrarse con Passkey",
+ "registerNostr": "Registrarse con Nostr"
},
"nav": {
"about": "Acerca de",
diff --git a/src/locales/fa.json b/src/locales/fa.json
index 8dc781b7..9e13cdc2 100644
--- a/src/locales/fa.json
+++ b/src/locales/fa.json
@@ -177,7 +177,10 @@
"accountCreatedNeedsPasskey": "حساب ایجاد شده! شما باید یک کلید برای ادامه دادن تنظیم کنید.",
"setupPasskey": "راه اندازی Passkey",
"passkeyCreationFailed": "آفرینش کلید شکست خورد. لطفا دوباره امتحان کنید.",
- "enter2faCode": "کد 2FA"
+ "enter2faCode": "کد 2FA",
+ "usernamePlaceholder": "نام کاربری شما",
+ "registerPasskey": "ثبت‌نام با کلید عبور",
+ "registerNostr": "ثبت‌نام با Nostr"
},
"nav": {
"about": "در باره",
diff --git a/src/locales/fr.json b/src/locales/fr.json
index 73b11b7f..b84c48db 100644
--- a/src/locales/fr.json
+++ b/src/locales/fr.json
@@ -182,7 +182,10 @@
"accountCreatedNeedsPasskey": "Compte créé ! Vous devez installer une clé de passe pour continuer.",
"setupPasskey": "Configurer Passkey",
"passkeyCreationFailed": "La création de Passkey a échoué. Veuillez réessayer.",
- "enter2faCode": "Entrez le code 2FA"
+ "enter2faCode": "Entrez le code 2FA",
+ "usernamePlaceholder": "Votre nom d'utilisateur",
+ "registerPasskey": "S'inscrire avec Passkey",
+ "registerNostr": "S'inscrire avec Nostr"
},
"nav": {
"startInSeconds": "Commencer en quelques secondes",
diff --git a/src/locales/hi.json b/src/locales/hi.json
index 29a788ac..8f24ab9c 100644
--- a/src/locales/hi.json
+++ b/src/locales/hi.json
@@ -250,7 +250,7 @@
"login": {
"forgot": "पासवर्ड भूल गए?",
"resetSent": "यदि हमारे पास फ़ाइल है तो पासवर्ड रीसेट लिंक आपके ईमेल पर भेजा जाएगा।.",
- "continue": "जारी",
+ "continue": "जारी रखें",
"reset": "पासवर्ड रीसेट",
"resetDesc": "यदि आप अपने ईमेल को जोड़ा और सत्यापित करते हैं तो हम एक रीसेट लिंक भेज सकते हैं अन्यथा कृपया हमसे संपर्क करें",
"optional": "वैकल्पिक",
@@ -274,7 +274,10 @@
"accountCreatedNeedsPasskey": "खाता बनाया! आपको जारी रखने के लिए एक बंदी स्थापित करने की आवश्यकता है।.",
"setupPasskey": "Passkey",
"passkeyCreationFailed": "बंदी निर्माण विफल रहा। फिर से प्रयास करें।.",
- "enter2faCode": "2FA कोड दर्ज करें"
+ "enter2faCode": "2FA कोड दर्ज करें",
+ "usernamePlaceholder": "आपका उपयोगकर्ता नाम",
+ "registerPasskey": "पासकी से रजिस्टर करें",
+ "registerNostr": "Nostr से रजिस्टर करें"
},
"nav": {
"dark": "डार्क मोड",
diff --git a/src/locales/it.json b/src/locales/it.json
index 90bfce28..ba332eeb 100644
--- a/src/locales/it.json
+++ b/src/locales/it.json
@@ -274,7 +274,10 @@
"accountCreatedNeedsPasskey": "Account creato! È necessario impostare un passkey per continuare.",
"setupPasskey": "Impostare Passkey",
"passkeyCreationFailed": "La creazione del passkey è fallita. Per favore riprovate.",
- "enter2faCode": "Inserisci il codice 2FA"
+ "enter2faCode": "Inserisci il codice 2FA",
+ "usernamePlaceholder": "Il tuo nome utente",
+ "registerPasskey": "Registrati con Passkey",
+ "registerNostr": "Registrati con Nostr"
},
"nav": {
"dark": "Modalità scura",
diff --git a/src/locales/ja.json b/src/locales/ja.json
index 4664e058..d80ace25 100644
--- a/src/locales/ja.json
+++ b/src/locales/ja.json
@@ -170,14 +170,17 @@
"createAccount": "アカウントを作成する",
"signUp": "サインアップ",
"resetSent": "パスワードリセットリンクは、ファイルにインストールしている場合は、メールに送信されます.",
- "continue": "お問い合わせ",
+ "continue": "続ける",
"resetDesc": "追加して確認したメールが届かない場合は、リセットリンクを送信できます",
"nostr": "Nostrでサインイン",
"nostrConnect": "ノスト接続",
"accountCreatedNeedsPasskey": "アカウント作成 続けてパスキーを設定する必要があります.",
"setupPasskey": "パスキーの設定",
"passkeyCreationFailed": "パッキー作成が失敗しました。 お問い合わせ.",
- "enter2faCode": "2FAコードを入力してください"
+ "enter2faCode": "2FAコードを入力してください",
+ "usernamePlaceholder": "ユーザー名",
+ "registerPasskey": "パスキーで登録",
+ "registerNostr": "Nostrで登録"
},
"nav": {
"about": "About",
diff --git a/src/locales/ko.json b/src/locales/ko.json
index 6aaa8357..6dcd594e 100644
--- a/src/locales/ko.json
+++ b/src/locales/ko.json
@@ -250,7 +250,7 @@
"login": {
"forgot": "비밀번호를 잊으셨나요?",
"resetSent": "비밀번호 재설정 링크가 이메일로 전송됩니다.",
- "continue": "계속하기",
+ "continue": "계속",
"reset": "비밀번호 재설정",
"resetDesc": "우리는 당신이 추가하고 확인하면 재설정 링크를 보낼 수 있습니다",
"optional": "옵션 정보",
@@ -274,7 +274,10 @@
"accountCreatedNeedsPasskey": "계정 생성! 패스키를 계속 설정해야 합니다.",
"setupPasskey": "Passkey 설정",
"passkeyCreationFailed": "Passkey 생성 실패. 다시 시도하십시오.",
- "enter2faCode": "2FA 코드 입력"
+ "enter2faCode": "2FA 코드 입력",
+ "usernamePlaceholder": "사용자 이름",
+ "registerPasskey": "패스키로 등록",
+ "registerNostr": "Nostr로 등록"
},
"nav": {
"dark": "다크 모드",
diff --git a/src/locales/nl.json b/src/locales/nl.json
index f2d0724a..fb475bab 100644
--- a/src/locales/nl.json
+++ b/src/locales/nl.json
@@ -274,7 +274,10 @@
"accountCreatedNeedsPasskey": "Account aangemaakt! Je moet een wachtwoord instellen om door te gaan.",
"setupPasskey": "Wachtwoord instellen",
"passkeyCreationFailed": "Aanmaken van wachtwoord is mislukt. Probeer het nog eens.",
- "enter2faCode": "Code 2FA"
+ "enter2faCode": "Code 2FA",
+ "usernamePlaceholder": "Je gebruikersnaam",
+ "registerPasskey": "Registreren met Passkey",
+ "registerNostr": "Registreren met Nostr"
},
"nav": {
"dark": "Donkere modus",
diff --git a/src/locales/pl.json b/src/locales/pl.json
index 5a664aa5..d03c068d 100644
--- a/src/locales/pl.json
+++ b/src/locales/pl.json
@@ -244,7 +244,10 @@
"accountCreatedNeedsPasskey": "Konto utworzone! Musisz ustawić klucz, żeby kontynuować.",
"setupPasskey": "Ustaw hasło",
"passkeyCreationFailed": "Tworzenie hasła nie powiodło się. Proszę spróbować jeszcze raz.",
- "enter2faCode": "Wprowadź kod 2FA"
+ "enter2faCode": "Wprowadź kod 2FA",
+ "usernamePlaceholder": "Twoja nazwa użytkownika",
+ "registerPasskey": "Zarejestruj się z Passkey",
+ "registerNostr": "Zarejestruj się z Nostr"
},
"mapAdd": {
"header": "Dodaj swoją lokalizację",
diff --git a/src/locales/pt.json b/src/locales/pt.json
index ea11ff52..bdb94c30 100644
--- a/src/locales/pt.json
+++ b/src/locales/pt.json
@@ -186,14 +186,17 @@
"createAccount": "Criar uma conta",
"signUp": "Inscrever-se",
"resetSent": "Um link de redefinição de senha será enviado para o seu e-mail se o tivermos no arquivo.",
- "continue": "Continue",
+ "continue": "Continuar",
"resetDesc": "Podemos enviar um link de reset se você adicionou e verificou seu e-mail caso contrário, por favor, acesse para",
"nostr": "Entrar com Nostr",
"nostrConnect": "Nostr conectar",
"accountCreatedNeedsPasskey": "Conta criada! Tens de configurar uma chave de acesso para continuar.",
"setupPasskey": "Configurar senha",
"passkeyCreationFailed": "A criação da chave de passagem falhou. Por favor, tente novamente.",
- "enter2faCode": "Digite o código 2FA"
+ "enter2faCode": "Digite o código 2FA",
+ "usernamePlaceholder": "Seu nome de usuário",
+ "registerPasskey": "Registrar com Passkey",
+ "registerNostr": "Registrar com Nostr"
},
"nav": {
"about": "Sobre",
diff --git a/src/locales/ru.json b/src/locales/ru.json
index 0535cfab..0b0dcee6 100644
--- a/src/locales/ru.json
+++ b/src/locales/ru.json
@@ -140,14 +140,17 @@
"createAccount": "Зарегистрироваться",
"signUp": "Зарегистрироваться",
"resetSent": "Ссылка сброса пароля будет отправлена на вашу электронную почту, если у нас она есть в файле.",
- "continue": "Продолжать",
+ "continue": "Продолжить",
"resetDesc": "Мы можем отправить ссылку сброса, если вы добавили и проверили свою электронную почту, в противном случае, пожалуйста, свяжитесь с нами",
"nostr": "Зарегистрируйтесь в Nostr",
"nostrConnect": "Подключение Nostr",
"accountCreatedNeedsPasskey": "Создан аккаунт! Вам нужно установить ключ, чтобы продолжить.",
"setupPasskey": "Настройка Passkey",
"passkeyCreationFailed": "Создание Passkey провалилось. Пожалуйста, попробуйте еще раз.",
- "enter2faCode": "Введите код 2FA"
+ "enter2faCode": "Введите код 2FA",
+ "usernamePlaceholder": "Ваше имя пользователя",
+ "registerPasskey": "Зарегистрироваться с Passkey",
+ "registerNostr": "Зарегистрироваться с Nostr"
},
"mapAdd": {
"header": "Добавьте свою локацию",
diff --git a/src/locales/th.json b/src/locales/th.json
index 6023d831..f5c2ce0e 100644
--- a/src/locales/th.json
+++ b/src/locales/th.json
@@ -220,7 +220,7 @@
"login": {
"forgot": "ลืมรหัสผ่าน?",
"resetSent": "จะมีการส่งลิงก์ใหม่ไปยังอีเมลของคุณ ถ้าเรามีมันอยู่ในแฟ้ม.",
- "continue": "ทําต่อไป",
+ "continue": "ดำเนินการต่อ",
"reset": "ตั้งค่ารหัสผ่านใหม่",
"resetDesc": "เราสามารถส่งลิงก์ใหม่ได้ ถ้าคุณเพิ่มและตรวจสอบอีเมลของคุณ มิฉะนั้น โปรดติดต่อไปยัง",
"optional": "ตัวเลือก",
@@ -244,7 +244,10 @@
"accountCreatedNeedsPasskey": "คิด บัญชี! คุณต้องติดตั้งพาสคีย์เพื่อดําเนินการต่อ.",
"setupPasskey": "ตั้งค่าพาสคีย์",
"passkeyCreationFailed": "การสร้างพาสคีย์ล้มเหลว กรุณาลองอีกครั้ง.",
- "enter2faCode": "ป้อนรหัส 2FA"
+ "enter2faCode": "ป้อนรหัส 2FA",
+ "usernamePlaceholder": "ชื่อผู้ใช้ของคุณ",
+ "registerPasskey": "ลงทะเบียนด้วย Passkey",
+ "registerNostr": "ลงทะเบียนด้วย Nostr"
},
"nav": {
"dark": "โหมดมืด",
diff --git a/src/locales/tr.json b/src/locales/tr.json
index a55d3ac9..893fc6f7 100644
--- a/src/locales/tr.json
+++ b/src/locales/tr.json
@@ -220,7 +220,7 @@
"login": {
"forgot": "Şifreyi mi unuttunuz?",
"resetSent": "Bir parola sıfırlama linki, dosya üzerinde varsa e-postanıza gönderilir.",
- "continue": "Devam etmeye devam et",
+ "continue": "Devam et",
"reset": "Şifre sıfırlama",
"resetDesc": "E-postanızı ekledikten ve doğrulayan bir sıfırlama linkini gönderebiliriz, aksi takdirde lütfen e-postanızı onaylayın",
"optional": "Seçmeli",
@@ -244,7 +244,10 @@
"accountCreatedNeedsPasskey": "Hesap oluşturuldu! Devam etmek için bir passkey kurmak zorundasınız.",
"setupPasskey": "Set up Passkey",
"passkeyCreationFailed": "Paskey yaratımı başarısız oldu. Lütfen tekrar deneyin.",
- "enter2faCode": "2FA Code"
+ "enter2faCode": "2FA Code",
+ "usernamePlaceholder": "Kullanıcı adınız",
+ "registerPasskey": "Passkey ile kayıt ol",
+ "registerNostr": "Nostr ile kayıt ol"
},
"mapAdd": {
"header": "Konumunuzu ekleyin",
diff --git a/src/locales/zh.json b/src/locales/zh.json
index 16951da9..95b4d38d 100644
--- a/src/locales/zh.json
+++ b/src/locales/zh.json
@@ -177,7 +177,10 @@
"accountCreatedNeedsPasskey": "账户创建! 你需要设置一个密码继续.",
"setupPasskey": "设置密码",
"passkeyCreationFailed": "Passkey 创建失败 。 请再试一次.",
- "enter2faCode": "输入 2FA 代码"
+ "enter2faCode": "输入 2FA 代码",
+ "usernamePlaceholder": "您的用户名",
+ "registerPasskey": "使用 Passkey 注册",
+ "registerNostr": "使用 Nostr 注册"
},
"nav": {
"about": "关于",
diff --git a/src/routes/(app)/[username]/(profile)/+layout.svelte b/src/routes/(app)/[username]/(profile)/+layout.svelte
index 168be9b2..df63051f 100644
--- a/src/routes/(app)/[username]/(profile)/+layout.svelte
+++ b/src/routes/(app)/[username]/(profile)/+layout.svelte
@@ -1,29 +1,19 @@
<script lang="ts">
- import { copy, f, loc, post, s, sats, success, fail } from "$lib/utils";
- import { fiat } from "$lib/store";
- import { t } from "$lib/translations";
- import { bech32 } from "@scure/base";
- import { page } from "$app/stores";
- import { PUBLIC_DOMAIN } from "$env/static/public";
+ import { f, loc, post, s, sats, success, fail } from "$lib/utils";
let { data, children } = $props();
- let { encode, toWords } = bech32;
-
let { rates, user, subject } = $derived(data);
let rate = $derived(rates[subject.currency]);
let { events, src, text } = $derived(data as any);
let satsPerCurrency = $derived((1 * sats) / rate);
- let { currency, npub, username: n, display } = $derived(subject);
+ let { currency, username: n, display } = $derived(subject);
let locale = $derived(loc(user));
let showBio = $state();
let toggleBio = () => (showBio = !showBio);
- let showDetails = $state();
- let toggleDetails = () => (showDetails = !showDetails);
-
let password = $state();
let reset = async (e) => {
@@ -38,33 +28,19 @@
let stripped = $derived(n.replace(/\s/g, ""));
let username = $derived(n.length > 60 ? n.substr(0, 6) : display || stripped);
- let lnaddr = $derived(subject?.anon ? subject.lud16 || undefined : `${stripped}@${$page.url.host}`);
- let profile = $derived(`${$page.url.host}/${subject.anon ? npub : stripped}`);
- let lnurl = $derived(
- encode(
- "lnurl",
- toWords(
- new TextEncoder().encode(`https://${PUBLIC_DOMAIN}/p/${subject.anon ? npub : stripped}`),
- ),
- 20000,
- ),
- );
</script>
<div class="container mx-auto w-full px-4 flex flex-wrap lg:flex-nowrap">
<div class="hidden lg:block lg:w-[280px] xl:w-[360px]"></div>
<div class="w-full lg:w-[280px] xl:w-[360px] lg:absolute space-y-2 left-20 mx-auto">
- <div class="flex text-3xl font-bold text-center mx-auto justify-center gap-1 items-center">
- <button class="flex gap-1 items-center" onclick={toggleDetails}>
- <div class="break-words">{display || username}</div>
- <iconify-icon noobserver icon="ph:list-bold" width="32"></iconify-icon>
- </button>
+ <div class="flex text-3xl font-bold text-center mx-auto justify-center gap-3 items-center">
+ <div class="break-words">{display || username}</div>
{#if subject.id === user?.id}
- <a href="/settings/profile" class="btn contents" aria-label="Edit profile">
- <iconify-icon noobserver icon="ph:pencil-bold" width="32"></iconify-icon>
+ <a href="/settings/profile" class="flex items-center" aria-label="Profile settings">
+ <iconify-icon noobserver icon="ph:faders-bold" width="32"></iconify-icon>
</a>
{:else}
- <a href="/dm?username={subject.username}" class="btn contents" aria-label="Direct Message">
+ <a href="/dm?username={subject.username}" aria-label="Direct Message">
<iconify-icon noobserver icon="ph:chat-bold" width="32"></iconify-icon>
</a>
{/if}
@@ -92,100 +68,6 @@
</div>
{/if}
- {#if showDetails}
- <div class="space-y-5">
- {#if lnaddr}
- <div>
- <div class="text-secondary">{$t("user.lightningAddress")}</div>
- <div class="flex gap-4">
- <div class="break-all grow text-xl">{lnaddr}</div>
- <div class="flex mb-auto gap-1">
- <button
- type="button"
- class="my-auto"
- aria-label="Copy lightning address"
- onclick={() => copy(lnaddr)}
- >
- <iconify-icon noobserver icon="ph:copy-bold" width="32"></iconify-icon>
- </button>
- <a
- href={`/qr/${encodeURIComponent(lnaddr)}`}
- class="my-auto"
- aria-label="Show lightning address QR"
- >
- <iconify-icon noobserver icon="ph:qr-code-bold" width="32"></iconify-icon>
- </a>
- </div>
- </div>
- </div>
- {/if}
- <div>
- <div class="text-secondary">{$t("user.url")}</div>
- <div class="flex gap-4">
- <div class="break-all grow text-xl">{profile}</div>
- <div class="flex mb-auto gap-1">
- <button
- type="button"
- class="my-auto"
- aria-label="Copy profile URL"
- onclick={() => copy(profile)}
- >
- <iconify-icon noobserver icon="ph:copy-bold" width="32"></iconify-icon>
- </button>
- <a
- href={`/qr/${encodeURIComponent(`${$page.url.protocol}//${profile}`)}`}
- class="my-auto"
- aria-label="Show profile URL QR"
- >
- <iconify-icon noobserver icon="ph:qr-code-bold" width="32"></iconify-icon>
- </a>
- </div>
- </div>
- </div>
- <div>
- <div class="text-secondary">{$t("user.lnurl")}</div>
- <div class="flex gap-4">
- <div class="break-all grow text-xl">{lnurl}</div>
- <div class="flex mb-auto gap-1">
- <button
- type="button"
- class="my-auto"
- aria-label="Copy LNURL"
- onclick={() => copy(`lightning:${lnurl}`)}
- >
- <iconify-icon noobserver icon="ph:copy-bold" width="32"></iconify-icon>
- </button>
- <a
- href={`/${n}/accepted/${encodeURIComponent(`lightning:${lnurl}`)}`}
- class="my-auto"
- aria-label="Show LNURL QR"
- >
- <iconify-icon noobserver icon="ph:qr-code-bold" width="32"></iconify-icon>
- </a>
- </div>
- </div>
- </div>
- <!-- <div> -->
- <!-- <div class="text-secondary">{$t("user.nostrPubkey")}</div> -->
- <!-- <div class="flex gap-4"> -->
- <!-- <div class="break-all grow text-xl"> -->
- <!-- {npub} -->
- <!-- </div> -->
- <!-- <div class="flex my-auto gap-1"> -->
- <!-- <button class="my-auto" onclick={() => copy(npub)} -->
- <!-- ><iconify-icon noobserver icon="ph:copy-bold" width="32" -->
- <!-- ></iconify-icon></button -->
- <!-- > -->
- <!-- <a href={`/qr/${encodeURIComponent(npub)}`} class="my-auto"> -->
- <!-- <iconify-icon noobserver icon="ph:qr-code-bold" width="32" -->
- <!-- ></iconify-icon> -->
- <!-- </a> -->
- <!-- </div> -->
- <!-- </div> -->
- <!-- </div> -->
- </div>
- {/if}
-
<div class="flex flex-wrap gap-2 w-full text-lg">
<!-- {#if user &#38;&#38; user.username !== subject.username &#38;&#38; subject.pubkey} -->
<!-- {#if following} -->
diff --git a/src/routes/(app)/[username]/accepted/[text]/+page.svelte b/src/routes/(app)/[username]/accepted/[text]/+page.svelte
index 6b2c3a86..be4cfe55 100644
--- a/src/routes/(app)/[username]/accepted/[text]/+page.svelte
+++ b/src/routes/(app)/[username]/accepted/[text]/+page.svelte
@@ -1,6 +1,7 @@
<script>
import Qr from "$comp/Qr.svelte";
import { back, copy } from "$lib/utils";
+ import { t } from "$lib/translations";
import { bech32 } from "@scure/base";
import { page } from "$app/stores";
import { PUBLIC_DOMAIN } from "$env/static/public";
@@ -21,7 +22,7 @@
</script>
<div class="px-2">
- <div class="border-8 border-black p-8 max-w-[580px] mx-auto mt-20 space-y-2 rounded-3xl relative">
+ <div class="border-8 border-black bg-white text-black p-8 max-w-[580px] mx-auto mt-20 space-y-2 rounded-3xl relative">
<div class="flex gap-2 mx-auto justify-center">
<!-- <img src="/images/bitcoin.png" class="w-16 h-16 my-auto" /> -->
<img src="/images/bitcoin-logo.png" class="my-auto w-[400px]" alt="Bitcoin" />
@@ -43,6 +44,6 @@
<button onclick={() => copy(lnurl)} class="flex gap-1 m-auto my-8">
<iconify-icon icon="ph:copy-bold" width={32}></iconify-icon>
- LNURL
+ {$t("user.copyLnurl")}
</button>
</div>
diff --git a/src/routes/(app)/settings/account/+page.svelte b/src/routes/(app)/settings/account/+page.svelte
index 8622553e..bb9ddbc6 100644
--- a/src/routes/(app)/settings/account/+page.svelte
+++ b/src/routes/(app)/settings/account/+page.svelte
@@ -146,7 +146,7 @@
{#if connect !== "connected"}
<a href={connect} class="btn flex">
- <img src="/images/square.svg" class="w-12" alt="Square" />
+ <img src="/images/square.svg" class="w-12" class:invert={$theme === "dark"} alt="Square" />
<div>{$t("user.settings.connectSquare")}</div>
</a>
{:else}
diff --git a/src/routes/(app)/settings/profile/+page.svelte b/src/routes/(app)/settings/profile/+page.svelte
index 201a9c30..a6e86d58 100644
--- a/src/routes/(app)/settings/profile/+page.svelte
+++ b/src/routes/(app)/settings/profile/+page.svelte
@@ -3,6 +3,9 @@
import { avatar, banner as bannerStore } from "$lib/store";
import { t } from "$lib/translations";
import { page } from "$app/stores";
+ import { copy } from "$lib/utils";
+ import { bech32 } from "@scure/base";
+ import { PUBLIC_DOMAIN } from "$env/static/public";
import PasswordInput from "$comp/PasswordInput.svelte";
let { data } = $props();
@@ -60,6 +63,20 @@
let full = $derived(`${$page.url.protocol}//${url}`);
let addr = $derived(`${username}@${$page.url.host}`);
+ let { encode, toWords } = bech32;
+ let stripped = $derived((username as string)?.replace(/\s/g, ""));
+ let lnurl = $derived(
+ stripped
+ ? encode(
+ "lnurl",
+ toWords(
+ new TextEncoder().encode(`https://${PUBLIC_DOMAIN}/p/${user?.anon ? user.npub : stripped}`),
+ ),
+ 20000,
+ )
+ : "",
+ );
+
$effect(() => {
if (!user) return;
if (typeof about === "undefined") about = user.about;
@@ -179,3 +196,29 @@
<textarea name="about" bind:value={about} placeholder={$t("user.settings.aboutPlaceholder")}
></textarea>
</div>
+
+{#if lnurl}
+ <div>
+ <span class="font-bold">{$t("user.paymentCode")}</span>
+ <div class="flex gap-4">
+ <div class="break-all grow text-xl">{lnurl}</div>
+ <div class="flex mb-auto gap-1">
+ <button
+ type="button"
+ class="my-auto"
+ aria-label="Copy payment code"
+ onclick={() => copy(`lightning:${lnurl}`)}
+ >
+ <iconify-icon noobserver icon="ph:copy-bold" width="32"></iconify-icon>
+ </button>
+ <a
+ href={`/${username}/accepted/${encodeURIComponent(`lightning:${lnurl}`)}`}
+ class="my-auto"
+ aria-label="Show payment code QR"
+ >
+ <iconify-icon noobserver icon="ph:qr-code-bold" width="32"></iconify-icon>
+ </a>
+ </div>
+ </div>
+ </div>
+{/if}
diff --git a/src/routes/(static)/register/+page.svelte b/src/routes/(static)/register/+page.svelte
index 8645356a..9c196011 100644
--- a/src/routes/(static)/register/+page.svelte
+++ b/src/routes/(static)/register/+page.svelte
@@ -115,14 +115,14 @@
bind:value={username}
onfocus={clear}
autocapitalize="none"
- placeholder="Your username"
+ placeholder={$t("login.usernamePlaceholder")}
onkeydown={(e: KeyboardEvent) => e.key === "Enter" && continueToAuth()}
/>
<span class="at-suffix font-bold whitespace-nowrap select-none self-stretch flex items-center px-3">@coinos.io</span>
</label>
<button class="btn btn-accent" onclick={continueToAuth}>
- Continue
+ {$t("login.continue")}
</button>
<p class="text-secondary text-center font-medium">
diff --git a/src/routes/(static)/register/auth/+page.svelte b/src/routes/(static)/register/auth/+page.svelte
index 5809ef4b..80915108 100644
--- a/src/routes/(static)/register/auth/+page.svelte
+++ b/src/routes/(static)/register/auth/+page.svelte
@@ -363,7 +363,7 @@
{:else}
<iconify-icon noobserver icon="ph:fingerprint-bold" width="24"></iconify-icon>
{/if}
- <div class="my-auto">Register with Passkey</div>
+ <div class="my-auto">{$t("login.registerPasskey")}</div>
</button>
<button type="button" class="btn" onclick={nostrLogin}>
@@ -374,7 +374,7 @@
{:else}
<img src="/images/nostr.png" class="w-8" alt="Nostr" />
{/if}
- <div class="my-auto">Register with Nostr</div>
+ <div class="my-auto">{$t("login.registerNostr")}</div>
</button>
<p class="text-secondary text-center font-medium">