232 lines
5.8 KiB
HTML
232 lines
5.8 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>NotPlexApp</title>
|
||
<script src="https://unpkg.com/@ffmpeg/ffmpeg@0.11.8/dist/ffmpeg.min.js"></script>
|
||
<style>
|
||
html, body {
|
||
margin: 0;
|
||
padding: 0;
|
||
height: 100%;
|
||
font-family: Arial, sans-serif;
|
||
}
|
||
/* Tabs style */
|
||
#tabs {
|
||
display: flex;
|
||
background: #333;
|
||
}
|
||
#tabs button {
|
||
flex: 1;
|
||
padding: 10px;
|
||
color: #fff;
|
||
background: #444;
|
||
border: none;
|
||
cursor: pointer;
|
||
font-size: 16px;
|
||
}
|
||
#tabs button.active {
|
||
background: #222;
|
||
}
|
||
/* Content lists (item grids inside each section) */
|
||
.content-list {
|
||
display: grid;
|
||
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
|
||
gap: 20px;
|
||
overflow-x: visible; /* ensure no horizontal scrolling */
|
||
/* Optional: force items to wrap into multiple rows */
|
||
grid-auto-rows: auto;
|
||
}
|
||
/* Section‐container: stack each <section> as a row */
|
||
.section-list {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 40px; /* space between sections */
|
||
padding: 20px;
|
||
box-sizing: border-box;
|
||
height: calc(100% - 48px); /* adjust for tab height */
|
||
overflow-y: auto;
|
||
background-color: #f1f1f1;
|
||
}
|
||
.movie-item {
|
||
cursor: pointer;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
text-align: center;
|
||
background: #fff;
|
||
padding: 10px;
|
||
box-shadow: 0px 2px 5px rgba(0,0,0,0.1);
|
||
}
|
||
.movie-item img {
|
||
width: 200px;
|
||
height: auto;
|
||
margin-bottom: 10px;
|
||
}
|
||
/* Overlay for details/stream */
|
||
#overlay {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
background: rgba(0,0,0,0.8);
|
||
display: none;
|
||
justify-content: center;
|
||
align-items: center;
|
||
z-index: 100;
|
||
}
|
||
#overlay-content {
|
||
background: #fff;
|
||
padding: 20px;
|
||
max-width: 800px;
|
||
width: 90%;
|
||
max-height: 90%;
|
||
overflow-y: auto;
|
||
box-sizing: border-box;
|
||
position: relative;
|
||
}
|
||
#close-overlay {
|
||
position: absolute;
|
||
top: 10px;
|
||
right: 10px;
|
||
background: red;
|
||
color: #fff;
|
||
border: none;
|
||
padding: 5px 10px;
|
||
cursor: pointer;
|
||
}
|
||
video {
|
||
max-width: 100%;
|
||
margin-top: 20px;
|
||
}
|
||
/* Authentication Page Styles */
|
||
#auth-page {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
z-index: 200;
|
||
background: rgba(0,0,0,0.8);
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
#auth-content {
|
||
background: #fff;
|
||
padding: 30px;
|
||
border-radius: 4px;
|
||
text-align: center;
|
||
width: 300px;
|
||
}
|
||
#auth-content input {
|
||
width: 90%;
|
||
padding: 10px;
|
||
margin: 5px 0;
|
||
font-size: 14px;
|
||
}
|
||
#auth-content button {
|
||
width: 45%;
|
||
padding: 10px;
|
||
margin: 5px;
|
||
font-size: 14px;
|
||
cursor: pointer;
|
||
}
|
||
/* show a “Remuxing…” banner above the video */
|
||
.remuxing-indicator {
|
||
color: #ff0;
|
||
font-size: 18px;
|
||
font-weight: bold;
|
||
text-align: center;
|
||
margin-bottom: 8px;
|
||
}
|
||
/* new: horizontal scrolling row */
|
||
.content-row {
|
||
display: flex;
|
||
overflow-x: auto;
|
||
gap: 20px;
|
||
padding-bottom: 10px;
|
||
}
|
||
.content-row::-webkit-scrollbar {
|
||
height: 8px;
|
||
}
|
||
.content-row::-webkit-scrollbar-thumb {
|
||
background: rgba(0,0,0,0.2);
|
||
border-radius: 4px;
|
||
}
|
||
/* hide native scrollbar */
|
||
.content-row {
|
||
scrollbar-width: none; /* Firefox */
|
||
-ms-overflow-style: none; /* IE 10+ */
|
||
}
|
||
.content-row::-webkit-scrollbar { /* WebKit */
|
||
display: none;
|
||
}
|
||
|
||
/* wrap arrows + row */
|
||
.scroll-container {
|
||
position: relative;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
.scroll-arrow {
|
||
position: absolute;
|
||
top: 50%;
|
||
transform: translateY(-50%);
|
||
background: rgba(0,0,0,0.5);
|
||
color: #fff;
|
||
border: none;
|
||
width: 30px;
|
||
height: 40px;
|
||
cursor: pointer;
|
||
z-index: 10;
|
||
}
|
||
.scroll-arrow.left { left: 0; }
|
||
.scroll-arrow.right { right: 0; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div id="auth-page">
|
||
<div id="auth-content">
|
||
<h2>Login / Register</h2>
|
||
<input type="text" id="username" placeholder="Username" />
|
||
<input type="password" id="password" placeholder="Password" />
|
||
<div>
|
||
<button id="login-btn">Login</button>
|
||
<button id="register-btn">Register</button>
|
||
</div>
|
||
<p id="auth-error" style="color:red;"></p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="tabs">
|
||
<button id="movies-tab" class="active">Movies</button>
|
||
<button id="shows-tab">TV Shows</button>
|
||
<button id="scan-btn">Scan for New Files</button> <!-- New button -->
|
||
</div>
|
||
|
||
<div id="sync-controls" style="text-align: center; margin: 10px;">
|
||
<input type="text" id="sync-session-id" placeholder="Enter Sync Session ID" />
|
||
<button id="join-sync-btn">Join Sync Session</button>
|
||
</div>
|
||
|
||
<!-- use section-list instead of content-list on the containers -->
|
||
<div id="movies-list" class="section-list"></div>
|
||
<div id="shows-list" class="section-list" style="display:none;"></div>
|
||
|
||
<div id="overlay">
|
||
<div id="overlay-content">
|
||
<button id="close-overlay">Close</button>
|
||
<div id="movie-details"></div>
|
||
<!-- Add Sync Controls inside the overlay -->
|
||
<div id="overlay-sync-controls" style="text-align: center; margin-top: 10px;">
|
||
<input type="text" id="overlay-sync-session-id" placeholder="Enter Sync Session ID" />
|
||
<button id="overlay-join-sync-btn">Join Sync Session</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="renderer.js"></script>
|
||
</body>
|
||
</html> |