Files
Sortarr/web/src/index.html
2026-05-15 02:41:52 +00:00

152 lines
5.7 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Sortarr</title>
<link rel="stylesheet" href="/styles.css">
<link rel="stylesheet" href="/themes.css">
<link rel="stylesheet" href="/api/theme/custom.css">
</head>
<body>
<div class="app-shell">
<aside class="sidebar">
<div class="brand">
<span class="brand-mark">S</span>
<div>
<strong>Sortarr</strong>
</div>
</div>
<nav>
<a href="#/overview" data-route="overview" class="active">Overview</a>
<a href="#/library" data-route="library">Library</a>
<a href="#/downloads" data-route="downloads">Downloads</a>
<a href="#/releases" data-route="releases">Releases</a>
<a href="#/tools" data-route="tools">Tools</a>
<a href="#/settings" data-route="settings">Settings</a>
</nav>
</aside>
<main>
<header class="topbar">
<div>
<h1>Media Dashboard</h1>
<p id="statusLine">Connecting to backend...</p>
</div>
<div class="actions">
<button id="scanButton">Run scan</button>
<button id="refreshButton">Refresh</button>
</div>
</header>
<section id="page-overview" class="page active">
<div class="grid overview-grid">
<article class="panel">
<h2>Storage</h2>
<div id="storageCards" class="storage-list"></div>
</article>
<article class="panel">
<h2>File Types</h2>
<div id="extensionBreakdown" class="bars"></div>
</article>
<article class="panel">
<h2>Activity</h2>
<div id="events" class="event-list"></div>
</article>
</div>
</section>
<section id="page-library" class="page panel">
<div class="section-head">
<h2>Library Contents</h2>
<div class="actions">
<input id="libraryFilter" placeholder="Filter library">
<button id="libraryScanButton">Scan library</button>
</div>
</div>
<p id="libraryStatus" class="muted"></p>
<div id="libraryTabs" class="segmented"></div>
<div id="libraryGrid" class="poster-grid"></div>
<div id="libraryPager" class="pager"></div>
<div id="libraryDetail" class="media-detail"></div>
</section>
<section id="page-downloads" class="page panel">
<div class="section-head">
<div>
<h2>Downloads</h2>
<p id="downloadsStatus" class="muted"></p>
</div>
<button id="downloadsRefresh">Refresh downloads</button>
</div>
<div class="downloads-layout">
<article>
<h3>Organizer Queue</h3>
<div id="organizerSummary" class="queue-summary"></div>
<div id="organizerRows" class="download-list"></div>
</article>
<article>
<h3>Current /downloads Files</h3>
<div id="downloadRows" class="download-list"></div>
</article>
<article>
<h3>Recently Planned or Moved</h3>
<div id="recentDownloadRows" class="download-list"></div>
</article>
</div>
</section>
<section id="page-releases" class="page panel">
<div class="section-head">
<h2>Missing & Upcoming</h2>
<button id="releaseRefresh">Refresh releases</button>
</div>
<div id="releaseRows" class="release-grid"></div>
</section>
<section id="page-tools" class="page panel">
<div class="section-head">
<h2>Library Tools</h2>
<span class="muted">Uses the cached library index. Run a library scan first if results look stale.</span>
</div>
<div class="tool-grid">
<button id="transcoderPlanButton">Build transcode queue</button>
<button id="transcoderRunButton">Run next transcode</button>
<button id="subtitleAuditButton">Run subtitle audit</button>
<button id="duplicateButton">Duplicate finder</button>
</div>
<div id="toolOutput" class="tool-output"></div>
</section>
<section id="page-settings" class="page panel">
<div class="section-head">
<div>
<h2>Settings</h2>
<p class="muted">Runtime settings are saved in /data/state.json and override TOML/env values for this backend process.</p>
</div>
<div class="actions">
<button id="tmdbTestButton" type="button">TMDb API Test</button>
<button id="settingsSaveButton" type="button">Save settings</button>
</div>
</div>
<div id="settingsNotice" class="settings-notice" role="status" aria-live="polite"></div>
<section class="settings-hero">
<div>
<h3>Dashboard Theme</h3>
<p class="muted">Choose the local dashboard theme here. The default theme below is also configurable and saved on the server.</p>
</div>
<div id="themeOptions" class="theme-options"></div>
</section>
<div id="settingsForm" class="settings-stack"></div>
<details open>
<summary>Raw config</summary>
<pre id="configView"></pre>
</details>
</section>
</main>
</div>
<div id="toastHost" class="toast-host" aria-live="polite"></div>
<script src="/app.js?v=20260514-3"></script>
</body>
</html>