Phase 1: Project scaffold
- Quarkus Maven project with all dependencies - SQLite DatabaseService with DAO methods - MusicBrainz REST client with DTOs - ArtistService, ReleaseGroupService, CacheService, FeedService - HTMX web controllers (ReleasesPage, ArtistsPage, ArtistController, FeedController, SettingsController) - RSS feed builder using Rome library - Qute templates with daisyUI theme switching - Base layout with navbar, search, theme picker, settings modal
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
<!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.12.23/dist/full.min.css" rel="stylesheet">
|
||||
<script src="https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js"></script>
|
||||
<style>
|
||||
.search-dropdown {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 50;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="min-h-screen bg-base-200">
|
||||
<div class="navbar bg-base-100 shadow-lg px-4">
|
||||
<div class="flex-1 gap-2">
|
||||
<a href="/" class="text-xl font-bold">🎵 DiscDrop</a>
|
||||
<div class="tabs tabs-box ml-4 hidden sm:flex">
|
||||
<a href="/" class="tab {#if activeTab == 'releases'}tab-active{/if}">Releases</a>
|
||||
<a href="/artists" class="tab {#if activeTab == 'artists'}tab-active{/if}">Artists</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-none gap-2 relative">
|
||||
<div class="form-control">
|
||||
<input type="text" placeholder="Search artists..."
|
||||
class="input input-bordered input-sm w-48 md:w-64"
|
||||
name="q"
|
||||
hx-get="/api/artists/search"
|
||||
hx-trigger="keyup changed delay:300ms"
|
||||
hx-target="#search-results"
|
||||
hx-swap="innerHTML"
|
||||
autocomplete="off">
|
||||
</div>
|
||||
<div id="search-results" class="search-dropdown"></div>
|
||||
|
||||
<select class="select select-bordered select-sm w-full max-w-[8rem]" data-choose-theme>
|
||||
<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>
|
||||
|
||||
<main class="container mx-auto p-4">
|
||||
{#insert page-content}{/page-content}
|
||||
</main>
|
||||
|
||||
<dialog id="settingsModal" class="modal">
|
||||
<div class="modal-box" 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>
|
||||
Reference in New Issue
Block a user