fix(sirius-x): dashboard uses wide screens; Dashboard button always in the header

The dashboard was capped at 1200px with single-column lists, so a
1920px display showed a narrow strip of cards. Above 1280px it now
widens to 1720px with a 260px sidebar, name/TLD lists become card
grids (auto-fill, 360-400px columns), and Settings and TLD detail lay
their cards out in two or three columns. Narrow screens are unchanged.

The header Dashboard button was hidden until sign-in, which left new
visitors with no obvious way in; it is now always shown and lands on
the portal's sign-in when signed out.

Also closes a Settings-pane markup bug: the Wallet card ended one div
early, which pushed the "Reading, language & help" and "This device"
cards outside the pane so they appeared under every other pane.
This commit is contained in:
Local Dev 2026-09-17 08:02:21 +02:00
parent 9351045f45
commit 87c70d745e
6 changed files with 32 additions and 16 deletions

View file

@ -529,6 +529,6 @@ process.exit(0);"</pre>
<script src="../js/pricing.js?v=20260917market"></script>
<script defer src="../js/site-footer.js?v=20260917market"></script>
<script defer src="../js/theme.js?v=20260910font"></script>
<script defer src="../js/profile-menu.js?v=20260917dash"></script>
<script defer src="../js/profile-menu.js?v=20260917wide"></script>
</body>
</html>

View file

@ -515,6 +515,6 @@ process.exit(0);"</pre>
<script src="./js/pin-escrow.js?v=20260909pin"></script>
<script defer src="./js/theme.js?v=20260910font"></script>
<script defer src="./js/site-footer.js?v=20260917market"></script>
<script defer src="./js/profile-menu.js?v=20260917dash"></script>
<script defer src="./js/profile-menu.js?v=20260917wide"></script>
</body>
</html>

View file

@ -37,14 +37,13 @@
menu.className = "profile-menu";
menu.setAttribute("role", "menu");
menu.hidden = true;
// Header "Dashboard" button — sits left of the wallet pill while signed in
// and is the one way into names, TLDs, the web-builder and (for the
// operator) the admin panel.
// Header "Dashboard" button — sits left of the wallet pill and is the one
// way into names, TLDs, the web-builder and (for the operator) the admin
// panel. Always visible: signed out it lands on the portal's sign-in.
const dash = document.createElement("a");
dash.className = "dash-link" + (/\/portal\.html(?:$|[?#])/.test(location.pathname) ? " here" : "");
dash.href = PORTAL_URL;
dash.innerHTML = `<span aria-hidden="true">▦</span> Dashboard`;
dash.hidden = true;
const readWalletInfo = () => {
try { return JSON.parse(localStorage.getItem("siriusWalletInfo") || "null"); } catch { return null; }
};
@ -100,9 +99,7 @@
<span class="mi-body"><b>Sign out</b><span class="mi-hint">clear this browser</span></span>
</a>
`;
dash.hidden = false;
} else {
dash.hidden = true;
const dot = `<span class="wallet-dot" aria-hidden="true"></span>`;
btn.innerHTML = `${dot}<span class="wallet-label">Wallet</span><span class="wallet-caret" aria-hidden="true">▾</span>`;
btn.setAttribute("aria-label", "Wallet — not signed in");

View file

@ -125,6 +125,6 @@
<script type="module" src="./js/market.js?v=20260917market"></script>
<script defer src="./js/theme.js?v=20260910font"></script>
<script defer src="./js/site-footer.js?v=20260917market"></script>
<script defer src="./js/profile-menu.js?v=20260917dash"></script>
<script defer src="./js/profile-menu.js?v=20260917wide"></script>
</body>
</html>

View file

@ -110,6 +110,26 @@
/* ---------- dashboard shell ---------- */
.dash{display:grid;grid-template-columns:236px minmax(0,1fr);gap:26px;max-width:1200px;margin:0 auto;padding:1.4rem 1.2rem 3rem}
/* wide screens: let the dashboard use the width — wider sidebar, card
grids for the lists, two-column settings / TLD detail. Text blocks keep
a readable measure via .ph p max-width. */
@media (min-width:1280px){
.dash{max-width:1720px;grid-template-columns:260px minmax(0,1fr);gap:34px;padding:1.6rem 2rem 3rem}
.list.cols{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:10px;margin-top:8px}
.list.cols .drow{margin-top:0;align-content:start}
.list.cols > .empty,.list.cols > .status{grid-column:1/-1}
.grid2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.pane[data-pane="settings"]:not([hidden]),.pane[data-pane="tld"]:not([hidden]){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-content:start}
.pane[data-pane="settings"] > .ph,.pane[data-pane="tld"] > .crumbs,.pane[data-pane="tld"] > .dhead,.pane[data-pane="tld"] > .msg,.pane[data-pane="tld"] > .grid2{grid-column:1/-1}
.pane[data-pane="settings"] > .card,.pane[data-pane="tld"] > .card{margin-top:0}
.pane[data-pane="tld"] > .msg:empty{display:none}
.pane[data-pane="domain"] .sub[data-sub="summary"] > .grid2{grid-template-columns:repeat(2,minmax(0,1fr))}
.pane[data-pane="newtld"] .card{max-width:760px !important}
}
@media (min-width:1700px){
.list.cols{grid-template-columns:repeat(auto-fill,minmax(400px,1fr))}
.pane[data-pane="settings"]:not([hidden]){grid-template-columns:repeat(3,minmax(0,1fr))}
}
.side{position:sticky;top:68px;align-self:start;display:flex;flex-direction:column;gap:4px}
.side .who{padding:12px 14px;border-radius:12px;background:var(--panel);border:1px solid var(--line);margin-bottom:8px}
.side .who .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
@ -279,7 +299,7 @@
<div class="ph"><div><h2>Web-Builder</h2><p>Sirius Studio builds a site for any name you hold: drag blocks, edit text, publish. Pages live in the name's own folder on Sia and the name points at them — no host, no renewal.</p></div>
<div class="row" style="margin:0"><button class="btn ghost small" id="refresh-btn">↻ Refresh</button></div></div>
<div class="status" id="studio-status">Loading names from the chain…</div>
<div id="studio-list" class="list"></div>
<div id="studio-list" class="list cols"></div>
</div>
<!-- DOMAINS -->
@ -294,7 +314,7 @@
<span class="dim" id="dom-count"></span>
</div>
<div class="status" id="names-status">Loading names from the chain…</div>
<div id="names-list" class="list"></div>
<div id="names-list" class="list cols"></div>
</div>
<!-- DOMAIN DETAIL -->
@ -472,7 +492,7 @@
<div class="ph"><div><h2>My TLDs</h2><p>Every per-TLD registry NFT this wallet holds. Set the price every name under a TLD sells for, switch it on or off (off = private: only you can register under it), and tune policy. Each change is one signed TUPD on chain; you receive 90% of every sale.</p></div>
<button class="btn acid small" data-go="newtld">+ Register a TLD</button></div>
<div class="status" id="tlds-status">Loading TLDs from the chain…</div>
<div id="tlds-list" class="list"></div>
<div id="tlds-list" class="list cols"></div>
</div>
<!-- TLD DETAIL -->
@ -511,7 +531,7 @@
<div class="card">
<h3>Names registered under this TLD</h3>
<p class="hint">Everyone's registrations, from the public registry.</p>
<div id="td-names" class="list"></div>
<div id="td-names" class="list cols"></div>
</div>
</div>
@ -560,7 +580,6 @@
<a class="btn ghost small" href="https://chipnet.imaginary.cash/faucet" target="_blank" rel="noopener">Faucet 2 →</a>
</span>
</div>
</div>
<div class="kv" style="margin-top:14px"><div class="k">Spendable</div><div class="v" id="w-sats">—</div><div class="k">UTXOs</div><div class="v" id="w-utxos">—</div><div class="k">Watched addresses</div><div class="v" id="w-watched">—</div><div class="k">Chain height</div><div class="v" id="stat-height">—</div></div>
</div>
<div class="card">
@ -645,6 +664,6 @@
<script defer src="./js/theme.js?v=20260910font"></script>
<script defer src="./js/site-footer.js?v=20260917market"></script>
<script type="module" src="./js/register-flow.js?v=20260917market"></script>
<script defer src="./js/profile-menu.js?v=20260917dash"></script>
<script defer src="./js/profile-menu.js?v=20260917wide"></script>
</body>
</html>

View file

@ -308,6 +308,6 @@
<script src="./js/pin-escrow.js?v=20260909pin"></script>
<script defer src="./js/theme.js?v=20260910font"></script>
<script defer src="./js/site-footer.js?v=20260917market"></script>
<script defer src="./js/profile-menu.js?v=20260917dash"></script>
<script defer src="./js/profile-menu.js?v=20260917wide"></script>
</body>
</html>