From a9dc047b447fb4e14d70293cf7dc1ab6fe04149d Mon Sep 17 00:00:00 2001 From: Youwes09 Date: Mon, 11 May 2026 20:47:37 -0500 Subject: [PATCH] Fix: Toolbar Uniformity & SeriesDetail Redirect (#66) --- .../downloads/components/Downloads.svelte | 4 +- .../extensions/components/Extensions.svelte | 5 +- .../series/components/SeriesDetail.svelte | 4 +- .../series/components/SeriesHeader.svelte | 82 +++++++++-- .../components/TrackingToolbar.svelte | 132 +++++++----------- src/shared/chrome/RecentActivity.svelte | 35 ++--- src/shared/chrome/Sidebar.svelte | 2 +- 7 files changed, 139 insertions(+), 125 deletions(-) diff --git a/src/features/downloads/components/Downloads.svelte b/src/features/downloads/components/Downloads.svelte index 6baa1ab..a642ee6 100644 --- a/src/features/downloads/components/Downloads.svelte +++ b/src/features/downloads/components/Downloads.svelte @@ -211,8 +211,8 @@ .content { flex: 1; overflow-y: auto; padding: 0 var(--sp-6) var(--sp-6); display: flex; flex-direction: column; gap: var(--sp-4); } - .icon-btn { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: var(--radius-md); border: 1px solid var(--border-dim); color: var(--text-muted); background: none; cursor: pointer; transition: color var(--t-base), border-color var(--t-base), background var(--t-base); } - .icon-btn:hover:not(:disabled):not(.active) { color: var(--text-secondary); border-color: var(--border-strong); background: var(--bg-raised); } + .icon-btn { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: var(--radius-md); border: 1px solid var(--border-dim); background: var(--bg-raised); color: var(--text-faint); cursor: pointer; flex-shrink: 0; transition: color var(--t-base), border-color var(--t-base), background var(--t-base); } + .icon-btn:hover:not(:disabled):not(.active) { color: var(--text-primary); border-color: var(--border-strong); } .icon-btn.active:hover:not(:disabled) { border-color: var(--accent); background: var(--accent-muted); } .icon-btn:disabled { opacity: 0.3; cursor: default; } .icon-btn.loading { border-color: var(--accent-dim); color: var(--accent-fg); background: var(--accent-muted); } diff --git a/src/features/extensions/components/Extensions.svelte b/src/features/extensions/components/Extensions.svelte index 8143223..2d21da9 100644 --- a/src/features/extensions/components/Extensions.svelte +++ b/src/features/extensions/components/Extensions.svelte @@ -323,8 +323,9 @@ .root { display: flex; flex-direction: column; height: 100%; overflow: hidden; } .list { flex: 1; overflow-y: auto; padding: 0 var(--sp-4) var(--sp-4); display: flex; flex-direction: column; gap: 1px; } .empty { display: flex; align-items: center; justify-content: center; flex: 1; color: var(--text-faint); font-family: var(--font-ui); font-size: var(--text-xs); letter-spacing: var(--tracking-wide); } - :global(.icon-btn) { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: var(--radius-md); color: var(--text-muted); transition: color var(--t-base), background var(--t-base); } - :global(.icon-btn:hover:not(:disabled)) { color: var(--text-primary); background: var(--bg-raised); } + :global(.icon-btn) { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: var(--radius-md); border: 1px solid var(--border-dim); background: var(--bg-raised); color: var(--text-faint); cursor: pointer; flex-shrink: 0; transition: color var(--t-base), border-color var(--t-base), background var(--t-base); } + :global(.icon-btn:hover:not(:disabled)) { color: var(--text-primary); border-color: var(--border-strong); } + :global(.icon-btn-active) { color: var(--accent-fg); border-color: var(--accent-dim); background: var(--accent-muted); } .ext-panel { display: flex; flex-direction: column; gap: var(--sp-2); padding: var(--sp-3) var(--sp-6); flex-shrink: 0; border-bottom: 1px solid var(--border-dim); background: var(--bg-raised); opacity: 1; } .ext-panel-anim { animation: panelSlide 0.18s cubic-bezier(0.16,1,0.3,1) both; } .panel-header { display: flex; align-items: center; padding-bottom: var(--sp-1); } diff --git a/src/features/series/components/SeriesDetail.svelte b/src/features/series/components/SeriesDetail.svelte index 009c35d..8b02094 100644 --- a/src/features/series/components/SeriesDetail.svelte +++ b/src/features/series/components/SeriesDetail.svelte @@ -103,8 +103,8 @@ const totalPages = $derived(Math.ceil(sortedChapters.length / CHAPTERS_PER_PAGE)); const pageChapters = $derived(sortedChapters.slice((chapterPage - 1) * CHAPTERS_PER_PAGE, chapterPage * CHAPTERS_PER_PAGE)); - const readCount = $derived(chapters.filter(c => c.isRead).length); - const totalCount = $derived(chapters.length); + const readCount = $derived(sortedChapters.filter(c => c.isRead).length); + const totalCount = $derived(sortedChapters.length); const progressPct = $derived(totalCount > 0 ? (readCount / totalCount) * 100 : 0); const downloadedCount = $derived(chapters.filter(c => c.isDownloaded).length); diff --git a/src/features/series/components/SeriesHeader.svelte b/src/features/series/components/SeriesHeader.svelte index f8d6aae..0d1a529 100644 --- a/src/features/series/components/SeriesHeader.svelte +++ b/src/features/series/components/SeriesHeader.svelte @@ -55,6 +55,7 @@ let manageOpen: boolean = $state(false); let genresExpanded: boolean = $state(false); + let altOpen: boolean = $state(false); const statusLabel = $derived( manga?.status ? manga.status.charAt(0) + manga.status.slice(1).toLowerCase() : null @@ -68,7 +69,9 @@ !!store.settings.mangaPrefs?.[store.activeManga!.id]?.coverUrl ); - function focusOnMount(node: HTMLElement) { node.focus(); } + const altTitles = $derived( + (manga as any)?.alternativeTitles ?? (manga as any)?.altTitles ?? [] + );