menu refactor + web account switcher (#7307)

* add account switcher, migrate context menus to overflow menu system, update version filter controls, only pad instance icons

* app account switcher, improve some context menus, theme stuff

* prepr

* handle reauthentication

* fix a couple sign in issues, admin page cleanup, fix org status badges, fix official account badge, open in local keybind, publish plus icons

* rename generic menus to ButtonMenu (& types)

* fix hydration issue w/ dropdowns + middleware error
This commit is contained in:
Prospector
2026-08-27 00:35:34 +00:00
committed by GitHub
parent 3439a43880
commit b68a199814
226 changed files with 6585 additions and 4078 deletions
@@ -5,9 +5,6 @@
"action.continue": {
"message": "متابعة"
},
"admin.billing.error.not-found": {
"message": "المستخدم غير موجود"
},
"ads-consent.accept": {
"message": "قبول الكل"
},
@@ -2648,9 +2645,6 @@
"layout.action.file-lookup": {
"message": "البحث عن ملف"
},
"layout.action.lookup-by-email": {
"message": "البحث باستخدام البريد الإلكتروني"
},
"layout.action.manage-affiliates": {
"message": "إدارة روابط العمولة"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Pokračovat"
},
"admin.billing.error.not-found": {
"message": "Uživatel nebyl nalezen"
},
"ads-consent.accept": {
"message": "Přijmout vše"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Forsæt"
},
"admin.billing.error.not-found": {
"message": "Bruger ikke fundet"
},
"ads-consent.accept": {
"message": "Tillad alle"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Weiter"
},
"admin.billing.error.not-found": {
"message": "Benutzer nicht gefunden"
},
"ads-consent.accept": {
"message": "Alle akzeptieren"
},
@@ -2651,9 +2648,6 @@
"layout.action.file-lookup": {
"message": "Datei ansehen"
},
"layout.action.lookup-by-email": {
"message": "Über E-Mail ansehen"
},
"layout.action.manage-affiliates": {
"message": "Partnerlinks verwalten"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Weiter"
},
"admin.billing.error.not-found": {
"message": "Benutzer nicht gefunden"
},
"ads-consent.accept": {
"message": "Alle akzeptieren"
},
@@ -2651,9 +2648,6 @@
"layout.action.file-lookup": {
"message": "Dateisuche"
},
"layout.action.lookup-by-email": {
"message": "Mit E-Mail suchen"
},
"layout.action.manage-affiliates": {
"message": "Partnerlinks verwalten"
},
+57 -6
View File
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Continue"
},
"admin.billing.error.not-found": {
"message": "User not found"
},
"ads-consent.accept": {
"message": "Accept all"
},
@@ -821,6 +818,33 @@
"auth.create-account.username.placeholder": {
"message": "Enter username"
},
"auth.reauthenticate.2fa.description": {
"message": "Enter the 6-digit code from your authenticator app, or one of your backup codes."
},
"auth.reauthenticate.2fa.label": {
"message": "Two-factor authentication"
},
"auth.reauthenticate.2fa.placeholder": {
"message": "Enter code..."
},
"auth.reauthenticate.continue-with-passkey": {
"message": "Continue with passkey"
},
"auth.reauthenticate.last-signed-in-with": {
"message": "It was last signed into with {method, select, password {a password} passkey {a passkey} github {GitHub} discord {Discord} google {Google} microsoft {Microsoft} gitlab {GitLab} steam {Steam} paypal {PayPal} other {{method}} }."
},
"auth.reauthenticate.page-title": {
"message": "Reauthenticate"
},
"auth.reauthenticate.sign-in-another-way": {
"message": "Sign in another way"
},
"auth.reauthenticate.sign-in-with-provider": {
"message": "Sign in with {provider}"
},
"auth.reauthenticate.title": {
"message": "{name} needs to be reauthenticated."
},
"auth.reset-password.method-choice.action": {
"message": "Send recovery email"
},
@@ -863,6 +887,12 @@
"auth.sign-in.2fa.placeholder": {
"message": "Enter code..."
},
"auth.sign-in.add-account": {
"message": "Add account"
},
"auth.sign-in.choose-account": {
"message": "Choose an account to use in Modrinth App"
},
"auth.sign-in.continue-with-email": {
"message": "Continue with Email"
},
@@ -881,6 +911,9 @@
"auth.sign-in.launcher.complete.description": {
"message": "Were returning you to the Modrinth App. If nothing happens, use the button below."
},
"auth.sign-in.launcher.complete.go-to-website": {
"message": "Go to Modrinth.com"
},
"auth.sign-in.launcher.complete.return-button": {
"message": "Open Modrinth App"
},
@@ -2204,6 +2237,12 @@
"error.generic.401.signed-in-as": {
"message": "You're currently signed in as:"
},
"error.generic.401.switch-account": {
"message": "Or switch to another account:"
},
"error.generic.401.switch-account-failed": {
"message": "Couldn't switch accounts. Please try again."
},
"error.generic.401.title": {
"message": "You don't have access to this page"
},
@@ -2660,9 +2699,6 @@
"layout.action.file-lookup": {
"message": "File lookup"
},
"layout.action.lookup-by-email": {
"message": "Lookup by email"
},
"layout.action.manage-affiliates": {
"message": "Manage affiliate links"
},
@@ -2693,6 +2729,9 @@
"layout.action.tech-review": {
"message": "Tech review"
},
"layout.action.user-lookup": {
"message": "User lookup"
},
"layout.avatar.alt": {
"message": "Your avatar"
},
@@ -2888,6 +2927,9 @@
"layout.nav.active-reports": {
"message": "Active reports"
},
"layout.nav.add-account": {
"message": "Add account"
},
"layout.nav.discover": {
"message": "Discover"
},
@@ -2918,6 +2960,9 @@
"layout.nav.projects": {
"message": "Projects"
},
"layout.nav.remove-account": {
"message": "Remove account"
},
"layout.nav.revenue": {
"message": "Revenue"
},
@@ -2927,6 +2972,12 @@
"layout.nav.search": {
"message": "Search"
},
"layout.nav.switch-account": {
"message": "Switch account"
},
"layout.nav.switch-account-failed": {
"message": "Couldn't switch accounts. Please try again."
},
"layout.nav.upgrade-to-modrinth-plus": {
"message": "Upgrade to Modrinth+"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Continuar"
},
"admin.billing.error.not-found": {
"message": "Usuario no encontrado"
},
"ads-consent.accept": {
"message": "Aceptar todo"
},
@@ -2651,9 +2648,6 @@
"layout.action.file-lookup": {
"message": "Buscar archivo"
},
"layout.action.lookup-by-email": {
"message": "Buscar por correo electrónico"
},
"layout.action.manage-affiliates": {
"message": "Gestionar enlaces de afiliado"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Continuar"
},
"admin.billing.error.not-found": {
"message": "Usuario no encontrado"
},
"ads-consent.accept": {
"message": "Aceptar todos"
},
@@ -2642,9 +2639,6 @@
"layout.action.file-lookup": {
"message": "Búsqueda de archivos"
},
"layout.action.lookup-by-email": {
"message": "Búsqueda por correo electrónico"
},
"layout.action.manage-affiliates": {
"message": "Manejar enlaces de afiliados"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Jatka"
},
"admin.billing.error.not-found": {
"message": "Käyttäjää ei löydetty"
},
"analytics.action.add": {
"message": "Lisää"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Tumuloy"
},
"admin.billing.error.not-found": {
"message": "Hindi mahanap na tagagamit"
},
"analytics.action.add": {
"message": "Magdagdag"
},
@@ -1625,9 +1622,6 @@
"layout.action.file-lookup": {
"message": "File lookup"
},
"layout.action.lookup-by-email": {
"message": "Lookup by email"
},
"layout.action.manage-affiliates": {
"message": "Pamahalaan ang mga affiliate link"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Continuer"
},
"admin.billing.error.not-found": {
"message": "Utilisateur non trouvé"
},
"ads-consent.accept": {
"message": "Tout accepter"
},
@@ -2651,9 +2648,6 @@
"layout.action.file-lookup": {
"message": "Recherche de fichier"
},
"layout.action.lookup-by-email": {
"message": "Recherche par adresse e-mail"
},
"layout.action.manage-affiliates": {
"message": "Gérer les liens affiliés"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "המשך"
},
"admin.billing.error.not-found": {
"message": "משתמש לא קיים"
},
"ads-consent.accept": {
"message": "אשר הכול"
},
@@ -1448,9 +1445,6 @@
"layout.action.file-lookup": {
"message": "חיפוש קבצים"
},
"layout.action.lookup-by-email": {
"message": "חיפוש על ידי אימייל"
},
"layout.action.manage-affiliates": {
"message": "נהל את קישורי השותפים"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Tovább"
},
"admin.billing.error.not-found": {
"message": "Felhasználó nem található"
},
"ads-consent.accept": {
"message": "Összes elfogadása"
},
@@ -2504,9 +2501,6 @@
"layout.action.file-lookup": {
"message": "Fájl keresés"
},
"layout.action.lookup-by-email": {
"message": "Keresés e-mail cím alapján"
},
"layout.action.manage-affiliates": {
"message": "Partnerlinkek kezelése"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Lanjutkan"
},
"admin.billing.error.not-found": {
"message": "Pengguna tidak ditemukan"
},
"analytics.action.add": {
"message": "Tambah"
},
@@ -1640,9 +1637,6 @@
"layout.action.file-lookup": {
"message": "Pencarian berkas"
},
"layout.action.lookup-by-email": {
"message": "Cari dengan sur-el"
},
"layout.action.manage-affiliates": {
"message": "Kelola tautan afiliasi"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Continua"
},
"admin.billing.error.not-found": {
"message": "Utente non trovato"
},
"ads-consent.accept": {
"message": "Accetta tutto"
},
@@ -2642,9 +2639,6 @@
"layout.action.file-lookup": {
"message": "Trova file"
},
"layout.action.lookup-by-email": {
"message": "Trova tramite email"
},
"layout.action.manage-affiliates": {
"message": "Gestisci link affiliati"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "続ける"
},
"admin.billing.error.not-found": {
"message": "ユーザーが見つかりませんでした"
},
"ads-consent.accept": {
"message": "すべて受け入れる"
},
@@ -2537,9 +2534,6 @@
"layout.action.file-lookup": {
"message": "ファイル検索"
},
"layout.action.lookup-by-email": {
"message": "メールで探す"
},
"layout.action.manage-affiliates": {
"message": "アフィリエイトリンクを管理"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "계속"
},
"admin.billing.error.not-found": {
"message": "사용자를 찾을 수 없습니다"
},
"ads-consent.accept": {
"message": "모두 수용"
},
@@ -2651,9 +2648,6 @@
"layout.action.file-lookup": {
"message": "파일 찾기"
},
"layout.action.lookup-by-email": {
"message": "이메일로 찾기"
},
"layout.action.manage-affiliates": {
"message": "제휴 링크 관리"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Teruskan"
},
"admin.billing.error.not-found": {
"message": "Pengguna tidak dijumpai"
},
"analytics.action.add": {
"message": "Tambah"
},
@@ -2156,9 +2153,6 @@
"layout.action.file-lookup": {
"message": "Carian fail"
},
"layout.action.lookup-by-email": {
"message": "Cari melalui e-mel"
},
"layout.action.manage-affiliates": {
"message": "Urus pautan afiliasi"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Doorgaan"
},
"admin.billing.error.not-found": {
"message": "Gebruiker niet gevonden"
},
"ads-consent.accept": {
"message": "Alles accepteren"
},
@@ -2648,9 +2645,6 @@
"layout.action.file-lookup": {
"message": "Bestand opzoeken"
},
"layout.action.lookup-by-email": {
"message": "Zoek op via email"
},
"layout.action.manage-affiliates": {
"message": "Beheer partner links"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Fortsett"
},
"admin.billing.error.not-found": {
"message": "Bruker ikke funnet"
},
"analytics.action.add": {
"message": "Legg til"
},
@@ -2078,9 +2075,6 @@
"layout.action.file-lookup": {
"message": "Filoppslag"
},
"layout.action.lookup-by-email": {
"message": "Bla gjennom med email"
},
"layout.action.manage-affiliates": {
"message": "Hold styr på tilknytte lenker"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Kontynuuj"
},
"admin.billing.error.not-found": {
"message": "Nie znaleziono użytkownika"
},
"ads-consent.accept": {
"message": "Zaakceptuj wszystko"
},
@@ -2645,9 +2642,6 @@
"layout.action.file-lookup": {
"message": "Wyszukiwarka plików"
},
"layout.action.lookup-by-email": {
"message": "Szukaj po e-mailu"
},
"layout.action.manage-affiliates": {
"message": "Zarządzaj linkami afiliacyjnymi"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Continuar"
},
"admin.billing.error.not-found": {
"message": "Usuário não encontrado"
},
"ads-consent.accept": {
"message": "Aceitar todos"
},
@@ -2651,9 +2648,6 @@
"layout.action.file-lookup": {
"message": "Procurar arquivo"
},
"layout.action.lookup-by-email": {
"message": "Procurar por e-mail"
},
"layout.action.manage-affiliates": {
"message": "Gerenciar links de afiliado"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Continuar"
},
"admin.billing.error.not-found": {
"message": "Utilizador não encontrado"
},
"ads-consent.accept": {
"message": "Aceitar todos"
},
@@ -2324,9 +2321,6 @@
"layout.action.file-lookup": {
"message": "Pesquisa de ficheiros"
},
"layout.action.lookup-by-email": {
"message": "Pesquisa por e-mail"
},
"layout.action.manage-affiliates": {
"message": "Gerir links de afiliado"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Continuă"
},
"admin.billing.error.not-found": {
"message": "Utilizatorul nu a fost găsit"
},
"app-marketing.download.description": {
"message": "Aplicația noastră de desktop este disponibilă pe toate platformele, alege versiunea ta favorită."
},
@@ -941,9 +938,6 @@
"layout.action.file-lookup": {
"message": "Căutare fișier"
},
"layout.action.lookup-by-email": {
"message": "Căutare după email"
},
"layout.action.manage-server-notices": {
"message": "Administrează notificările serverului"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Продолжить"
},
"admin.billing.error.not-found": {
"message": "Пользователь не найден"
},
"ads-consent.accept": {
"message": "Принять всё"
},
@@ -2645,9 +2642,6 @@
"layout.action.file-lookup": {
"message": "Поиск файла"
},
"layout.action.lookup-by-email": {
"message": "Поиск по почте"
},
"layout.action.manage-affiliates": {
"message": "Партнёрские ссылки"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Nastavi"
},
"admin.billing.error.not-found": {
"message": "Korisnik nije pronađen"
},
"ads-consent.accept": {
"message": "Prihvati sve"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Fortsätt"
},
"admin.billing.error.not-found": {
"message": "Användaren hittades inte"
},
"ads-consent.accept": {
"message": "Godkänn alla"
},
@@ -2462,9 +2459,6 @@
"layout.action.file-lookup": {
"message": "Sök efter fil"
},
"layout.action.lookup-by-email": {
"message": "Sök efter e-post"
},
"layout.action.manage-affiliates": {
"message": "Hantera affiliatelänk"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "ดำเนินการต่อ"
},
"admin.billing.error.not-found": {
"message": "ไม่พบผู้ใช้นี้"
},
"analytics.action.add": {
"message": "เพิ่ม"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Devam et"
},
"admin.billing.error.not-found": {
"message": "Kullanıcı bulunamadı"
},
"ads-consent.accept": {
"message": "Tümünü kabul et"
},
@@ -2651,9 +2648,6 @@
"layout.action.file-lookup": {
"message": "Dosya bulma"
},
"layout.action.lookup-by-email": {
"message": "E-posta ile arama"
},
"layout.action.manage-affiliates": {
"message": "Ortaklık linklerini yönet"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Продовжити"
},
"admin.billing.error.not-found": {
"message": "Користувача не знайдено"
},
"ads-consent.accept": {
"message": "Прийняти всі"
},
@@ -2648,9 +2645,6 @@
"layout.action.file-lookup": {
"message": "Пошук файлів"
},
"layout.action.lookup-by-email": {
"message": "Пошук електронною поштою"
},
"layout.action.manage-affiliates": {
"message": "Керувати партнерськими посиланнями"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "Tiếp tục"
},
"admin.billing.error.not-found": {
"message": "Không tìm thấy người dùng"
},
"ads-consent.accept": {
"message": "Chấp nhận tất cả"
},
@@ -2321,9 +2318,6 @@
"layout.action.file-lookup": {
"message": "Tra cứu tệp"
},
"layout.action.lookup-by-email": {
"message": "Tra cứu theo email"
},
"layout.action.manage-affiliates": {
"message": "Quản lý link affiliate"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "继续"
},
"admin.billing.error.not-found": {
"message": "用户不存在"
},
"ads-consent.accept": {
"message": "全部接受"
},
@@ -2651,9 +2648,6 @@
"layout.action.file-lookup": {
"message": "文件查询"
},
"layout.action.lookup-by-email": {
"message": "通过电子邮箱查找"
},
"layout.action.manage-affiliates": {
"message": "管理推广链接"
},
@@ -5,9 +5,6 @@
"action.continue": {
"message": "繼續"
},
"admin.billing.error.not-found": {
"message": "找不到使用者"
},
"ads-consent.accept": {
"message": "全部接受"
},
@@ -2651,9 +2648,6 @@
"layout.action.file-lookup": {
"message": "檔案查詢"
},
"layout.action.lookup-by-email": {
"message": "依電子郵件查詢"
},
"layout.action.manage-affiliates": {
"message": "管理聯盟連結"
},