From bc8c5114dcd5531d14c67236bbdd320331dab892 Mon Sep 17 00:00:00 2001 From: Local Dev Date: Sun, 20 Sep 2026 00:58:25 +0200 Subject: [PATCH] fix(sirius-x): phone layouts for the dashboard and market; real market empty state Reviewed both pages at desktop and phone widths. Desktop was fine; on phones three things were wrong. The top bar wrapped into four rows because the font-comparison pill and full-size links all stayed; on screens under 640px the pill is hidden and links and buttons tighten. The dashboard menu rendered as five full-width blocks because the wide-screen width:100% rule outranked the phone override; it is now a row of pills, the wallet block collapses to one line (short address, live balance, refresh), and the sub-tabs scroll sideways instead of wrapping. The long address had also been pushing the whole page wider than the viewport, fixed with minmax(0,1fr) on the grid column. The market showed an empty filter bar and a one-line status when there were no listings; it now shows a proper empty state with the two things a visitor can do (sell from the dashboard, register a new name) and hides the filters until there is something to filter. Buy buttons go full width on phones. --- docs/index.html | 4 ++-- i18n/de.json | 6 +++++- i18n/el.json | 6 +++++- i18n/es.json | 6 +++++- i18n/fr.json | 6 +++++- i18n/pt.json | 6 +++++- i18n/ru.json | 6 +++++- index.html | 4 ++-- js/i18n.js | 2 +- js/market.js | 13 ++++++++++++- js/profile-menu.js | 11 +++++++++++ market.html | 13 ++++++++++--- portal.html | 24 ++++++++++++++++++------ studio.html | 2 +- tld.html | 4 ++-- 15 files changed, 89 insertions(+), 24 deletions(-) diff --git a/docs/index.html b/docs/index.html index ae620da..4e0dbf8 100644 --- a/docs/index.html +++ b/docs/index.html @@ -92,7 +92,7 @@ - + @@ -607,6 +607,6 @@ process.exit(0);" - + diff --git a/i18n/de.json b/i18n/de.json index 323dd68..e5e5cc6 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -585,5 +585,9 @@ "Request declined": "Anfrage abgelehnt", "Open dashboard →": "Dashboard öffnen →", "incl.": "inkl.", - "sat unconfirmed · spendable now": "Sat unbestätigt · sofort verfügbar" + "sat unconfirmed · spendable now": "Sat unbestätigt · sofort verfügbar", + "Nothing is for sale right now": "Derzeit steht nichts zum Verkauf", + "Names go on sale when their owners list them from the dashboard. Have one to sell, or want a fresh one instead?": "Namen kommen in den Verkauf, wenn ihre Besitzer sie im Dashboard anbieten. Hast du einen zu verkaufen — oder lieber einen neuen registrieren?", + "Sell a name from your dashboard →": "Einen Namen im Dashboard verkaufen →", + "Register a new name": "Neuen Namen registrieren" } diff --git a/i18n/el.json b/i18n/el.json index 8c360fe..35c93bc 100644 --- a/i18n/el.json +++ b/i18n/el.json @@ -585,5 +585,9 @@ "Request declined": "Το αίτημα απορρίφθηκε", "Open dashboard →": "Άνοιγμα πίνακα ελέγχου →", "incl.": "συμπ.", - "sat unconfirmed · spendable now": "sat ανεπιβεβαίωτα · διαθέσιμα τώρα" + "sat unconfirmed · spendable now": "sat ανεπιβεβαίωτα · διαθέσιμα τώρα", + "Nothing is for sale right now": "Τίποτα δεν πωλείται αυτή τη στιγμή", + "Names go on sale when their owners list them from the dashboard. Have one to sell, or want a fresh one instead?": "Τα ονόματα βγαίνουν προς πώληση όταν οι ιδιοκτήτες τους τα καταχωρούν από τον πίνακα ελέγχου. Έχεις ένα να πουλήσεις ή προτιμάς ένα καινούργιο;", + "Sell a name from your dashboard →": "Πούλησε ένα όνομα από τον πίνακα ελέγχου →", + "Register a new name": "Καταχώρηση νέου ονόματος" } diff --git a/i18n/es.json b/i18n/es.json index 3daf5de..932bf8d 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -585,5 +585,9 @@ "Request declined": "Solicitud rechazada", "Open dashboard →": "Abrir panel →", "incl.": "incl.", - "sat unconfirmed · spendable now": "sat sin confirmar · disponibles ya" + "sat unconfirmed · spendable now": "sat sin confirmar · disponibles ya", + "Nothing is for sale right now": "Ahora mismo no hay nada en venta", + "Names go on sale when their owners list them from the dashboard. Have one to sell, or want a fresh one instead?": "Los nombres salen a la venta cuando sus dueños los publican desde el panel. ¿Tienes uno para vender, o prefieres uno nuevo?", + "Sell a name from your dashboard →": "Vender un nombre desde tu panel →", + "Register a new name": "Registrar un nombre nuevo" } diff --git a/i18n/fr.json b/i18n/fr.json index 535eea1..e170095 100644 --- a/i18n/fr.json +++ b/i18n/fr.json @@ -585,5 +585,9 @@ "Request declined": "Demande refusée", "Open dashboard →": "Ouvrir le tableau de bord →", "incl.": "dont", - "sat unconfirmed · spendable now": "sat non confirmés · disponibles maintenant" + "sat unconfirmed · spendable now": "sat non confirmés · disponibles maintenant", + "Nothing is for sale right now": "Rien n'est à vendre pour l'instant", + "Names go on sale when their owners list them from the dashboard. Have one to sell, or want a fresh one instead?": "Les noms sont mis en vente lorsque leurs propriétaires les listent depuis le tableau de bord. Vous en avez un à vendre, ou vous en voulez un tout neuf ?", + "Sell a name from your dashboard →": "Vendre un nom depuis le tableau de bord →", + "Register a new name": "Enregistrer un nouveau nom" } diff --git a/i18n/pt.json b/i18n/pt.json index 54f6528..c5c7bc1 100644 --- a/i18n/pt.json +++ b/i18n/pt.json @@ -585,5 +585,9 @@ "Request declined": "Pedido recusado", "Open dashboard →": "Abrir painel →", "incl.": "incl.", - "sat unconfirmed · spendable now": "sat por confirmar · disponíveis já" + "sat unconfirmed · spendable now": "sat por confirmar · disponíveis já", + "Nothing is for sale right now": "De momento não há nada à venda", + "Names go on sale when their owners list them from the dashboard. Have one to sell, or want a fresh one instead?": "Os nomes são postos à venda quando os donos os anunciam a partir do painel. Tem um para vender, ou prefere um novo?", + "Sell a name from your dashboard →": "Vender um nome a partir do painel →", + "Register a new name": "Registar um nome novo" } diff --git a/i18n/ru.json b/i18n/ru.json index b6afd35..0a2eab7 100644 --- a/i18n/ru.json +++ b/i18n/ru.json @@ -585,5 +585,9 @@ "Request declined": "Запрос отклонён", "Open dashboard →": "Открыть панель →", "incl.": "вкл.", - "sat unconfirmed · spendable now": "сат не подтверждено · доступно сейчас" + "sat unconfirmed · spendable now": "сат не подтверждено · доступно сейчас", + "Nothing is for sale right now": "Сейчас ничего не продаётся", + "Names go on sale when their owners list them from the dashboard. Have one to sell, or want a fresh one instead?": "Имена появляются в продаже, когда владельцы выставляют их из панели. Есть что продать — или лучше зарегистрировать новое?", + "Sell a name from your dashboard →": "Продать имя из панели →", + "Register a new name": "Зарегистрировать новое имя" } diff --git a/index.html b/index.html index 34fc464..5247676 100644 --- a/index.html +++ b/index.html @@ -130,7 +130,7 @@ .verify dd{margin:2px 0 0;font-family:ui-monospace,monospace;font-size:12.5px;word-break:break-all;color:var(--ink)} footer{border-top:1px solid var(--line);padding:2.4rem 0 3.5rem;color:var(--dim);font-size:13px;text-align:center;margin-top:2.5rem} - + @@ -515,6 +515,6 @@ process.exit(0);" - + diff --git a/js/i18n.js b/js/i18n.js index 321220f..8293994 100644 --- a/js/i18n.js +++ b/js/i18n.js @@ -22,7 +22,7 @@ (function () { var STORE = "sirius-lang"; var CACHE = "sirius-i18n:"; - var VERSION = "20260917i"; // bump when dictionaries change + var VERSION = "20260920a"; // bump when dictionaries change var LANGS = { en: "English", de: "Deutsch", diff --git a/js/market.js b/js/market.js index 2afe6ec..d83c98b 100644 --- a/js/market.js +++ b/js/market.js @@ -54,7 +54,18 @@ function render() { rows.sort((a, b) => sort === "name" ? a.name.localeCompare(b.name) : sort === "new" ? Date.parse(b.created_at) - Date.parse(a.created_at) : Number(a.price_sats) - Number(b.price_sats)); $("count").textContent = `${rows.length} of ${listings.length}`; const status = $("status"); - if (!listings.length) { status.className = "status"; status.textContent = "Nothing is for sale right now. Owners list names from their dashboard."; $("list").innerHTML = ""; return; } + document.querySelector(".toolbar").hidden = !listings.length; + if (!listings.length) { + status.hidden = true; + $("list").innerHTML = `
+
🛒
+

Nothing is for sale right now

+

Names go on sale when their owners list them from the dashboard. Have one to sell, or want a fresh one instead?

+ +
`; + return; + } + status.hidden = false; status.className = "status"; status.textContent = `${listings.length} name${listings.length === 1 ? "" : "s"} for sale. Prices are set by the sellers; you pay the price plus about 1,300 sat of chain dust and fee.`; $("list").innerHTML = rows.length ? rows.map((l) => `
diff --git a/js/profile-menu.js b/js/profile-menu.js index 10229c9..5c63000 100644 --- a/js/profile-menu.js +++ b/js/profile-menu.js @@ -247,6 +247,17 @@ s.id = "profile-menu-css"; s.textContent = ` .topnav .profile-wrap{position:relative;margin-left:auto} + /* Phones: the bar was wrapping into four rows. Drop the font-comparison + pill, tighten link padding, and shrink the two buttons. */ + @media (max-width:640px){ + .topnav{padding:8px 10px;gap:0} + .topnav .font-picker{display:none !important} + .topnav > a{padding:5px 8px;font-size:13px} + .topnav .brand{margin-right:6px} + .topnav .dash-link{padding:5px 9px;font-size:12.5px} + .topnav .profile-wrap button.portal{padding:5px 9px;font-size:12.5px} + .topnav .profile-wrap .wallet-label{max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} + } .topnav .dash-link{margin-left:auto;display:inline-flex;align-items:center;gap:6px; padding:6px 12px;border-radius:999px;font-size:13.5px;font-weight:500;text-decoration:none; color:var(--ink,#f1f4fa);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12)} diff --git a/market.html b/market.html index 1918058..7f9f049 100644 --- a/market.html +++ b/market.html @@ -48,6 +48,13 @@ .btn:disabled{opacity:.45;cursor:not-allowed} .badge{display:inline-block;font-size:11px;padding:2px 9px;border-radius:999px;font-weight:600;background:rgba(214,255,61,.14);color:var(--acid)} .empty{padding:28px;text-align:center;color:var(--mut);border:1px dashed var(--line);border-radius:12px;margin-top:10px} + .empty.big{padding:40px 24px;border-style:solid;background:var(--panel2)} + .empty.big .ico{font-size:34px;line-height:1;opacity:.8} + .empty.big h3{margin:.6rem 0 .3rem;font-family:var(--serif);font-size:1.25rem;color:var(--ink)} + .empty.big p{margin:0 auto;max-width:460px;font-size:14px} + .empty.big .cta{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:18px} + .toolbar[hidden],.status[hidden]{display:none} + @media (max-width:560px){.row > div:nth-child(3){grid-column:1/-1}.row > div:nth-child(3) .btn{width:100%;justify-content:center}} .note{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--acid);border-radius:10px;padding:14px 18px;color:var(--mut);font-size:14px;margin-top:1.6rem} .note b{color:var(--ink)} /* buy dialog */ @@ -67,7 +74,7 @@ footer{border-top:1px solid var(--line);padding:2rem 0 3rem;color:var(--dim);font-size:13px;text-align:center;margin-top:2.5rem} @media (max-width:560px){.row{grid-template-columns:1fr auto}.row .price{grid-column:1/-1;text-align:left}} - +