diff --git a/README.md b/README.md index 7514bed..8361e45 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,8 @@ The comic title is extracted from the page and used to name the archive. Output Yoink includes a self-hosted web interface for browsing and downloading comics from your browser. + + ### Running directly ```shell diff --git a/docker-compose.yml b/docker-compose.yml index 4921195..0c9cf0b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ services: yoink: build: . ports: - - "0.0.0.0:8080:8080" + - "8080:8080" volumes: - ./library:/library environment: diff --git a/web/static/index.html b/web/static/index.html index bed07d8..ee21afa 100644 --- a/web/static/index.html +++ b/web/static/index.html @@ -39,6 +39,8 @@ font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 14px; min-height: 100vh; + display: flex; + flex-direction: column; } /* Subtle dot grid background */ @@ -256,7 +258,7 @@ .dismiss-btn:hover { color: var(--text); background: var(--border); } /* ── Main ────────────────────────────────────────────────────────────── */ - main { padding: 32px 28px; } + main { padding: 32px 28px; flex: 1; } /* ── Library toolbar ─────────────────────────────────────────────────── */ .library-toolbar { @@ -400,15 +402,12 @@ } /* Download overlay on hover */ - .comic-card::after { - content: '↓'; + .comic-download-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; - font-size: 2.2rem; - font-weight: 700; color: #fff; background: rgba(91, 140, 245, 0.72); backdrop-filter: blur(3px); @@ -418,7 +417,7 @@ z-index: 3; } - .comic-card:hover::after { opacity: 1; } + .comic-card:hover .comic-download-overlay { opacity: 1; } .comic-cover-placeholder { width: 100%; @@ -431,6 +430,15 @@ .comic-cover-placeholder svg { opacity: 0.2; } + .comic-cover-placeholder .placeholder-initials { + font-size: 3.5rem; + font-weight: 800; + color: rgba(255,255,255,0.18); + line-height: 1; + letter-spacing: -0.02em; + user-select: none; + } + .comic-info { position: absolute; bottom: 0; left: 0; right: 0; @@ -534,6 +542,20 @@ line-height: 1.5; } + .empty-hint { + font-size: 0.76rem !important; + font-style: italic; + color: var(--muted) !important; + display: flex; + align-items: center; + gap: 6px; + } + + .empty-hint svg { + flex-shrink: 0; + opacity: 0.5; + } + /* ── Toasts ──────────────────────────────────────────────────────────── */ #toast { position: fixed; @@ -565,11 +587,40 @@ .toast-msg.is-error { border-left-color: var(--error); } .toast-msg.fade { opacity: 0; } + .toast-icon { + display: inline-flex; + align-items: center; + flex-shrink: 0; + margin-right: 7px; + vertical-align: middle; + position: relative; + top: -1px; + } + @keyframes slideIn { from { transform: translateX(32px); opacity: 0; } to { transform: translateX(0); opacity: 1; } } + /* ── Footer ──────────────────────────────────────────────────────────── */ + footer { + position: relative; + z-index: 1; + text-align: center; + padding: 14px 28px; + font-size: 0.72rem; + color: var(--muted); + border-top: 1px solid var(--border); + } + + footer a { + color: var(--muted); + text-decoration: none; + transition: color 0.15s; + } + + footer a:hover { color: var(--text2); } + /* ── Responsive — tablet ─────────────────────────────────────────────── */ @media (max-width: 860px) { .url-form { max-width: 100%; } @@ -693,9 +744,20 @@
No comics yet — paste a URL above to start building your library.
++ + Your downloaded comics will appear here +
+ +