233 lines
10 KiB
HTML
233 lines
10 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>WaifuBoard Books</title>
|
||
<link rel="stylesheet" href="/views/css/globals.css">
|
||
<link rel="stylesheet" href="/views/css/components/navbar.css">
|
||
<link rel="stylesheet" href="/views/css/components/hero.css">
|
||
<link rel="stylesheet" href="/views/css/components/titlebar.css">
|
||
<link rel="stylesheet" href="/views/css/components/anilist-modal.css">
|
||
<link rel="stylesheet" href="/views/css/components/updateNotifier.css">
|
||
<link rel="icon" href="/public/assets/waifuboards.ico" type="image/x-icon">
|
||
<script src="/src/scripts/titlebar.js"></script>
|
||
</head>
|
||
<body>
|
||
<div id="titlebar"> <div class="title-left">
|
||
<img class="app-icon" src="/public/assets/waifuboards.ico" alt=""/>
|
||
<span class="app-title">WaifuBoard</span>
|
||
</div>
|
||
<div class="title-right">
|
||
<button class="min">—</button>
|
||
<button class="max">🗖</button>
|
||
<button class="close">✕</button>
|
||
</div>
|
||
</div>
|
||
|
||
<nav class="navbar" id="navbar">
|
||
<a href="#" class="nav-brand">
|
||
<div class="brand-icon">
|
||
<img src="/public/assets/waifuboards.ico" alt="WF Logo">
|
||
</div>
|
||
WaifuBoard
|
||
</a>
|
||
|
||
<div class="nav-center">
|
||
<button class="nav-button" onclick="window.location.href='/anime'">Anime</button>
|
||
<button class="nav-button active">Books</button>
|
||
<button class="nav-button" onclick="window.location.href='/gallery'">Gallery</button>
|
||
<button class="nav-button" onclick="window.location.href='/schedule'">Schedule</button>
|
||
<button class="nav-button" onclick="window.location.href='/my-list'">My List</button>
|
||
<button class="nav-button" onclick="window.location.href='/marketplace'">Marketplace</button>
|
||
</div>
|
||
|
||
<div class="nav-right">
|
||
<div class="search-wrapper">
|
||
<svg class="search-icon" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg>
|
||
<input type="text" class="search-input" id="search-input" placeholder="Search books..." autocomplete="off">
|
||
<div class="search-results" id="search-results"></div>
|
||
</div>
|
||
|
||
<div class="nav-user" id="nav-user" style="display:none;">
|
||
<div class="user-avatar-btn">
|
||
<img id="nav-avatar" src="/public/assets/waifuboards.ico" alt="avatar">
|
||
<div class="online-indicator"></div>
|
||
</div>
|
||
|
||
<div class="nav-dropdown" id="nav-dropdown">
|
||
<div class="dropdown-header">
|
||
<img id="dropdown-avatar" src="/public/assets/waifuboards.ico" alt="avatar" class="dropdown-avatar">
|
||
<div class="dropdown-user-info">
|
||
<div class="dropdown-username" id="nav-username"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<a href="/my-list" class="dropdown-item">
|
||
<svg width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
|
||
<path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/>
|
||
<polyline points="17 21 17 13 7 13 7 21"/>
|
||
<polyline points="7 3 7 8 15 8"/>
|
||
</svg>
|
||
<span>My List</span>
|
||
</a>
|
||
<button class="dropdown-item logout-item" id="nav-logout">
|
||
<svg width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
|
||
<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/>
|
||
<polyline points="16 17 21 12 16 7"/>
|
||
<line x1="21" y1="12" x2="9" y2="12"/>
|
||
</svg>
|
||
<span>Logout</span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
|
||
<div class="hero-wrapper">
|
||
<div class="hero-background">
|
||
<img id="hero-bg-media" src="" alt="">
|
||
</div>
|
||
<div class="hero-vignette"></div>
|
||
|
||
<div class="hero-content">
|
||
<div class="hero-poster-card">
|
||
<img id="hero-poster" src="" alt="">
|
||
</div>
|
||
<div class="hero-text">
|
||
<h1 class="hero-title" id="hero-title">Loading...</h1>
|
||
<div class="hero-meta">
|
||
<span class="score-badge" id="hero-score"></span>
|
||
<span id="hero-year"></span>
|
||
<span id="hero-type"></span>
|
||
</div>
|
||
<p class="hero-desc" id="hero-desc"></p>
|
||
<div class="hero-buttons">
|
||
<button class="btn-primary" id="read-btn">Read Now</button>
|
||
<button class="btn-blur">+ Add to Library</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="modal-overlay" id="add-list-modal">
|
||
<div class="modal-content modal-list">
|
||
<button class="modal-close" onclick="closeAddToListModal()">✕</button>
|
||
<h2 class="modal-title" id="modal-title">Add to Library</h2>
|
||
|
||
<div class="modal-body">
|
||
<div class="modal-fields-grid">
|
||
|
||
<div class="form-group">
|
||
<label for="entry-status">Status</label>
|
||
<select id="entry-status" class="form-input">
|
||
<option value="CURRENT">Reading</option>
|
||
<option value="COMPLETED">Completed</option>
|
||
<option value="PLANNING">Plan to Read</option>
|
||
<option value="PAUSED">Paused</option>
|
||
<option value="DROPPED">Dropped</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="entry-progress" id="progress-label">Chapters Read</label>
|
||
<input type="number" id="entry-progress" class="form-input" min="0" max="0" placeholder="0">
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="entry-score">Score (0-10)</label>
|
||
<input type="number" id="entry-score" class="form-input" min="0" max="10" step="0.1" placeholder="Optional">
|
||
</div>
|
||
|
||
<div class="form-group full-width date-group">
|
||
<div class="date-input-pair">
|
||
<label for="entry-start-date">Start Date</label>
|
||
<input type="date" id="entry-start-date" class="form-input">
|
||
</div>
|
||
<div class="date-input-pair">
|
||
<label for="entry-end-date">End Date</label>
|
||
<input type="date" id="entry-end-date" class="form-input">
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="entry-repeat-count">Re-read Count</label>
|
||
<input type="number" id="entry-repeat-count" class="form-input" min="0">
|
||
</div>
|
||
|
||
<div class="form-group notes-group">
|
||
<label for="entry-notes">Notes</label>
|
||
<textarea id="entry-notes" class="form-input notes-textarea" rows="4" placeholder="Personal notes..."></textarea>
|
||
</div>
|
||
|
||
<div class="form-group checkbox-group">
|
||
<input type="checkbox" id="entry-is-private" class="form-checkbox">
|
||
<label for="entry-is-private">Mark as Private</label>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="modal-actions">
|
||
<button class="btn-danger" id="modal-delete-btn" onclick="deleteFromList()">Remove</button>
|
||
<button class="btn-secondary" onclick="closeAddToListModal()">Cancel</button>
|
||
<button class="btn-primary" onclick="saveToList()">Save Changes</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<main>
|
||
<section class="section">
|
||
<div class="section-header">
|
||
<div class="section-title">Continue Reading</div>
|
||
</div>
|
||
<div class="carousel-wrapper">
|
||
<button class="scroll-btn left" onclick="scrollCarousel('my-status-books', -1)">‹</button>
|
||
<div class="carousel" id="my-status-books"></div>
|
||
<button class="scroll-btn right" onclick="scrollCarousel('my-status-books', 1)">›</button>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section">
|
||
<div class="section-header"><div class="section-title">Trending Books</div></div>
|
||
<div class="carousel-wrapper">
|
||
<button class="scroll-btn left" onclick="scrollCarousel('trending', -1)">‹</button>
|
||
<div class="carousel" id="trending"></div>
|
||
<button class="scroll-btn right" onclick="scrollCarousel('trending', 1)">›</button>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section">
|
||
<div class="section-header"><div class="section-title">All Time Popular</div></div>
|
||
<div class="carousel-wrapper">
|
||
<button class="scroll-btn left" onclick="scrollCarousel('popular', -1)">‹</button>
|
||
<div class="carousel" id="popular"></div>
|
||
<button class="scroll-btn right" onclick="scrollCarousel('popular', 1)">›</button>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
|
||
<div id="updateToast" class="hidden">
|
||
<p>Update available: <span id="latestVersionDisplay">v1.x</span></p>
|
||
|
||
<a
|
||
id="downloadButton"
|
||
href="https://git.waifuboard.app/ItsSkaiya/WaifuBoard/releases"
|
||
target="_blank"
|
||
>
|
||
Click To Download
|
||
</a>
|
||
</div>
|
||
|
||
<script src="/src/scripts/utils/auth-utils.js"></script>
|
||
<script src="/src/scripts/utils/notification-utils.js"></script>
|
||
<script src="/src/scripts/utils/search-manager.js"></script>
|
||
<script src="/src/scripts/utils/list-modal-manager.js"></script>
|
||
<script src="/src/scripts/utils/continue-watching-manager.js"></script>
|
||
<script src="/src/scripts/books/books.js"></script>
|
||
|
||
<script src="/src/scripts/updateNotifier.js"></script>
|
||
<script src="/src/scripts/rpc-inapp.js"></script>
|
||
<script src="/src/scripts/auth-guard.js"></script>
|
||
</body>
|
||
</html> |