diff --git a/web/pixiv_dialog.css b/web/pixiv_dialog.css index 9d80214..9d502f3 100644 --- a/web/pixiv_dialog.css +++ b/web/pixiv_dialog.css @@ -190,6 +190,44 @@ .px-login-tab.active { background: #2a2a3e; color: #cba6f7; } .px-login-tab:hover { color: #cdd6f4; } +/* Ranking pane */ +.px-ranking-pane { + display: flex; + flex-direction: column; + flex: 1; + overflow: hidden; + min-height: 0; +} + +.px-rank-bar { + display: flex; + gap: 4px; + padding: 6px 8px; + border-bottom: 1px solid #3a3a5c; + flex-shrink: 0; + flex-wrap: wrap; + background: #181825; +} + +.px-rank-btn { + padding: 3px 10px; + background: transparent; + border: 1px solid #45475a; + color: #7f849c; + border-radius: 4px; + cursor: pointer; + font-size: 11px; +} +.px-rank-btn:hover { color: #cdd6f4; border-color: #7f849c; } +.px-rank-btn.active { background: #313244; color: #cba6f7; border-color: #cba6f7; } + +.px-rank-grid-wrap { + flex: 1; + overflow: hidden; + display: flex; + min-height: 0; +} + /* Artist pane */ .px-artist-pane { display: flex; diff --git a/web/pixiv_extension.js b/web/pixiv_extension.js index bc74a6f..c661e30 100644 --- a/web/pixiv_extension.js +++ b/web/pixiv_extension.js @@ -36,6 +36,7 @@ function initNodeBrowser(container, idsWidget) { loading: false, activeArtistId: null, artistNextUrl: null, + rankingMode: "day", }, }; @@ -256,11 +257,58 @@ function switchTab(ctx, tabName) { renderSelectedPane(ctx); } else if (tabName === "artists") { renderArtistPane(ctx); + } else if (tabName === "ranking") { + renderRankingPane(ctx); } else { openMainBrowser(ctx); } } +// ── Ranking pane ────────────────────────────────────────────────────────────── +const RANKING_MODES = [ + { id: "day", label: "日榜" }, + { id: "week", label: "周榜" }, + { id: "month", label: "月榜" }, + { id: "day_male", label: "男性向" }, + { id: "day_female", label: "女性向" }, + { id: "week_original", label: "原创" }, + { id: "week_rookie", label: "新人" }, +]; + +function renderRankingPane(ctx) { + const { contentEl, S } = ctx; + contentEl.innerHTML = ` +