Fix background hierarchy: body base-100 (lightest), navbar base-200, cards base-100 with border, hover base-200
This commit is contained in:
@@ -1,31 +1,23 @@
|
||||
{#if entries.isEmpty()}
|
||||
<div class="bg-base-100 shadow-xl rounded-box p-12 text-center border border-base-300">
|
||||
<svg class="icon-lg" style="margin:0 auto 0.75rem;color:var(--bc);opacity:0.15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
||||
<circle cx="6" cy="18" r="3"/><circle cx="18" cy="16" r="3"/>
|
||||
<path d="M9 18V5l12-2v13"/><path d="M9 9l12-2"/>
|
||||
</svg>
|
||||
<p style="font-size:1.125rem;font-weight:500;color:var(--bc);opacity:0.6">No releases found</p>
|
||||
<p style="font-size:0.875rem;color:var(--bc);opacity:0.4;margin-top:0.25rem">Add artists to your collection to see their releases here</p>
|
||||
<div class="card bg-base-200 shadow-xl p-12 text-center border border-base-300">
|
||||
<p class="text-lg text-base-content/60">No releases found</p>
|
||||
<p class="text-sm text-base-content/40 mt-2">Add artists to your collection to see their releases here</p>
|
||||
</div>
|
||||
{#else}
|
||||
<div style="display:flex;flex-direction:column;gap:1rem">
|
||||
<div class="flex flex-col gap-4">
|
||||
{#for entry in entries}
|
||||
<a href="https://musicbrainz.org/release-group/{entry.mbid}"
|
||||
target="_blank" rel="noopener noreferrer"
|
||||
class="shadow-sm" style="display:flex;text-decoration:none;transition:box-shadow 0.15s;background:var(--b1);border:1px solid var(--b3);border-radius:0.5rem;overflow:hidden"
|
||||
onmouseover="this.style.boxShadow='0 3px 12px rgba(0,0,0,0.12)'"
|
||||
onmouseout="this.style.boxShadow=''">
|
||||
<div style="width:250px;height:250px;flex-shrink:0;overflow:hidden;background:var(--b2)">
|
||||
<a href="https://musicbrainz.org/release-group/{entry.mbid}" target="_blank" rel="noopener noreferrer"
|
||||
class="card card-side bg-base-100 border border-base-300 hover:bg-base-200 transition-colors overflow-hidden">
|
||||
<figure class="w-64">
|
||||
<img src="https://coverartarchive.org/release-group/{entry.mbid}/front-250"
|
||||
alt="Cover for {entry.title}"
|
||||
style="width:100%;height:100%;object-fit:cover;display:block"
|
||||
alt="{entry.title}" class="object-cover w-full h-full"
|
||||
loading="lazy"
|
||||
onerror="this.parentElement.innerHTML='<div style=\'display:flex;align-items:center;justify-content:center;width:250px;height:250px;color:var(--bc);opacity:0.1\'><svg width=\'64\' height=\'64\' viewBox=\'0 0 24 24\' fill=\'none\' stroke=\'currentColor\' stroke-width=\'1.5\'><circle cx=\'6\' cy=\'18\' r=\'3\'/><circle cx=\'18\' cy=\'16\' r=\'3\'/><path d=\'M9 18V5l12-2v13\'/><path d=\'M9 9l12-2\'/></svg></div>'">
|
||||
</div>
|
||||
<div style="padding:1rem 1.25rem;flex:1;display:flex;flex-direction:column;justify-content:center;gap:0.3rem;min-width:0">
|
||||
<div style="font-size:0.8rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--p);opacity:0.7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">{entry.artistName}</div>
|
||||
<div style="font-size:1.1rem;font-weight:700;color:var(--bc);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden">{entry.title}</div>
|
||||
<div style="margin-top:0.3rem;display:flex;align-items:center;gap:0.6rem;flex-wrap:wrap">
|
||||
onerror="this.parentElement.innerHTML='<div class=\'flex items-center justify-center h-full text-base-content/20\'>No Cover</div>'">
|
||||
</figure>
|
||||
<div class="card-body">
|
||||
<h3 class="card-title text-sm text-base-content/60 uppercase tracking-wider">{entry.artistName}</h3>
|
||||
<h2 class="text-lg font-semibold">{entry.title}</h2>
|
||||
<div class="flex items-center gap-2 mt-2">
|
||||
{#if entry.primaryType == 'Album'}
|
||||
<span class="badge badge-primary badge-sm">Album</span>
|
||||
{#else if entry.primaryType == 'Single'}
|
||||
@@ -36,7 +28,7 @@
|
||||
<span class="badge badge-ghost badge-sm">{entry.primaryType}</span>
|
||||
{/if}
|
||||
{#if entry.firstReleaseDate}
|
||||
<span style="font-size:0.8rem;color:var(--bc);opacity:0.45">{entry.firstReleaseDate}</span>
|
||||
<span class="text-sm text-base-content/40">{entry.firstReleaseDate}</span>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,13 +8,12 @@
|
||||
<script src="https://unpkg.com/htmx.org@2/dist/htmx.min.js"></script>
|
||||
<style>
|
||||
#search-wrapper { position: relative; width: 100%; }
|
||||
#search-results {
|
||||
position: absolute; top: 100%; left: 0; right: 0; z-index: 50;
|
||||
}
|
||||
#search-results { position: absolute; top: 100%; left: 0; right: 0; z-index: 50; }
|
||||
main { max-width: 1100px; margin: 0 auto; padding: 1.5rem 1rem; }
|
||||
.icon-sm { width: 16px; height: 16px; flex-shrink: 0; }
|
||||
.icon-xs { width: 12px; height: 12px; flex-shrink: 0; }
|
||||
.icon-lg { width: 48px; height: 48px; flex-shrink: 0; }
|
||||
.cover-img { width: 250px; height: 250px; object-fit: cover; }
|
||||
</style>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
@@ -28,37 +27,28 @@
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body style="min-height:100vh;background:var(--b2)">
|
||||
<div style="display:flex;align-items:center;gap:1rem;padding:0.5rem 1rem;background:var(--b1);box-shadow:0 1px 3px rgba(0,0,0,0.1)">
|
||||
<div style="display:flex;align-items:center;gap:0.25rem;flex-shrink:0">
|
||||
<body class="min-h-screen bg-base-100">
|
||||
<div class="navbar bg-base-200 shadow-lg px-4">
|
||||
<div class="flex-1">
|
||||
<div class="tabs tabs-box">
|
||||
<a href="/" class="tab tab-sm {#if activeTab == 'releases'}tab-active{/if}">Releases</a>
|
||||
<a href="/artists" class="tab tab-sm {#if activeTab == 'artists'}tab-active{/if}">Artists</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="flex:1;text-align:center">
|
||||
<a href="/" style="text-decoration:none;font-size:1.25rem;font-weight:800;color:var(--p)">DiscDrop</a>
|
||||
</div>
|
||||
|
||||
<div style="display:flex;align-items:center;gap:0.5rem;flex:1;justify-content:flex-end;max-width:50%">
|
||||
<div id="search-wrapper" style="max-width:420px">
|
||||
<div class="flex-none gap-2 flex items-center">
|
||||
<div id="search-wrapper" class="w-72">
|
||||
<form hx-get="/api/artists/search"
|
||||
hx-target="#search-results"
|
||||
hx-swap="innerHTML"
|
||||
hx-trigger="keyup changed delay:300ms from:#search-input">
|
||||
<input id="search-input"
|
||||
type="text"
|
||||
placeholder="Search artists..."
|
||||
class="input input-bordered input-sm w-full"
|
||||
name="q"
|
||||
autocomplete="off">
|
||||
<input id="search-input" type="text" placeholder="Search artists..."
|
||||
class="input input-bordered input-sm w-full" name="q" autocomplete="off">
|
||||
</form>
|
||||
<div id="search-results"></div>
|
||||
</div>
|
||||
|
||||
<select class="select select-bordered select-sm" style="width:7rem;flex-shrink:0"
|
||||
onchange="setTheme(this)">
|
||||
<select class="select select-bordered select-sm w-28" onchange="setTheme(this)">
|
||||
<option value="dark">Dark</option>
|
||||
<option value="light">Light</option>
|
||||
<option value="synthwave">Synthwave</option>
|
||||
@@ -69,8 +59,7 @@
|
||||
<option value="nord">Nord</option>
|
||||
</select>
|
||||
|
||||
<button class="btn btn-ghost btn-sm px-2" style="flex-shrink:0"
|
||||
onclick="settingsModal.showModal()">⚙️</button>
|
||||
<button class="btn btn-ghost btn-sm" onclick="settingsModal.showModal()">⚙️</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -80,9 +69,7 @@
|
||||
|
||||
<dialog id="settingsModal" class="modal">
|
||||
<div class="modal-box max-w-md" id="settings-modal-content"
|
||||
hx-get="/api/settings/form"
|
||||
hx-trigger="load"
|
||||
hx-swap="innerHTML">
|
||||
hx-get="/api/settings/form" hx-trigger="load" hx-swap="innerHTML">
|
||||
<span class="loading loading-spinner"></span>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
Reference in New Issue
Block a user