81 lines
3.8 KiB
HTML
81 lines
3.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" data-theme="dark">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>DiscDrop</title>
|
|
<link href="https://cdn.jsdelivr.net/npm/daisyui@4/dist/full.min.css" rel="stylesheet">
|
|
<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; }
|
|
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; }
|
|
html { overflow-y: scroll; }
|
|
body { margin: 0; }
|
|
.navbar { position: relative; }
|
|
.navbar::after { content: ''; position: absolute; right: calc(-1 * (100vw - 100%)); top: 0; width: calc(100vw - 100%); height: 100%; background: var(--fallback-b3, oklch(var(--b3)/1)); pointer-events: none; }
|
|
.card-shadow { box-shadow: 0 4px 12px rgba(0,0,0,0.15); }
|
|
.card-shadow:hover { box-shadow: 0 6px 20px rgba(0,0,0,0.25); }
|
|
.dropdown-shadow { box-shadow: 0 8px 24px rgba(0,0,0,0.3); }
|
|
</style>
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
var saved = localStorage.getItem('daisyui-theme');
|
|
if (saved) document.documentElement.setAttribute('data-theme', saved);
|
|
});
|
|
function setTheme(sel) {
|
|
var theme = sel.value;
|
|
document.documentElement.setAttribute('data-theme', theme);
|
|
localStorage.setItem('daisyui-theme', theme);
|
|
}
|
|
</script>
|
|
</head>
|
|
<body class="min-h-screen bg-base-100">
|
|
<div class="navbar bg-base-300 shadow-lg" style="min-height:3.5rem;display:flex;align-items:center;justify-content:center">
|
|
<div style="display:flex;align-items:center;width:100%;max-width:1100px;padding:0 1rem;gap:2rem">
|
|
<a href="/" class="font-bold text-lg text-base-content no-underline" style="flex-shrink:0">DiscDrop</a>
|
|
<div style="flex:1;display:flex;justify-content:center">
|
|
<div id="search-wrapper" style="width:18rem">
|
|
<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">
|
|
</form>
|
|
<div id="search-results"></div>
|
|
</div>
|
|
</div>
|
|
<a href="/artists" class="font-medium text-base-content no-underline {#if activeTab == 'artists'}font-bold{/if}" style="flex-shrink:0">Artists</a>
|
|
<div style="display:flex;align-items:center;gap:0.5rem;flex-shrink:0;margin-left:1rem">
|
|
<select class="select select-bordered select-sm" style="width:7rem" onchange="setTheme(this)">
|
|
<option value="dark">Dark</option>
|
|
<option value="light">Light</option>
|
|
<option value="synthwave">Synthwave</option>
|
|
<option value="retro">Retro</option>
|
|
<option value="dracula">Dracula</option>
|
|
<option value="night">Night</option>
|
|
<option value="dim">Dim</option>
|
|
<option value="nord">Nord</option>
|
|
</select>
|
|
<button class="btn btn-ghost btn-sm" onclick="settingsModal.showModal()">⚙️</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<main>
|
|
{#insert page-content}{/insert}
|
|
</main>
|
|
|
|
<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">
|
|
<span class="loading loading-spinner"></span>
|
|
</div>
|
|
</dialog>
|
|
</body>
|
|
</html>
|