Files
PixivFE/assets/views/layout/default.jet.html
T
2024-09-30 21:28:01 +10:00

157 lines
7.8 KiB
HTML

<!doctype html>
<html lang="en" data-bs-theme="dark">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Read this on PixivFE" />
{{ title := "PixivFE" }}
{{- if isset(.Title) -}}
{{ title = .Title + " - PixivFE" }}
{{ end -}}
<title>{{ title }}</title>
<link href="/img/favicon.png" rel="icon" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
<!-- TODO: figure out custom themes (e.g. charcoal theme) -->
<!-- <link href="/css/bootstrap-style.css" rel="stylesheet" /> -->
<!-- TODO: get htmx working properly again; currently causes comment pagination to be persisted across page navigations -->
<!-- <meta name="htmx-config" content='{"includeIndicatorStyles":false}'>
<script src="/js/htmx@1.9.10.min.js"
integrity="sha384-D1Kt99CQMDuVetoL1lrYwg5t+9QdHe7NLX/SoJYkXDFfX37iInKRy5xLSi8nO7UC"></script> -->
<!-- TODO: load these JS files only on pages that require them -->
<script src="/js/illust-preview.js" defer></script>
<!-- TODO: can be annoying when you accidentally scroll inside a horizontal scroll area instead of the main content -->
<!-- <script src="/js/horizontal-scroll.js" defer></script> -->
<script src="/js/comment-pagination.js" defer></script>
<script src="/js/proxy-toggle.js" defer></script>
<meta content="summary_large_image" name="twitter:card" />
<meta property="og:title" content="{{ title }}" />
<meta property="og:site_name" content="PixivFE" />
<meta property="og:type" content="article" />
<meta property="og:url" content="{{ PageURL }}" />
{{- if isset(.MetaAuthor) }}
<link rel="alternate" type="application/json+oembed"
href="{{ BaseURL }}/oembed?a={{ .MetaAuthor }}&u={{ BaseURL }}/users/{{ .MetaAuthorID }}">
{{- else }}
<link rel="alternate" type="application/json+oembed" href="{{ BaseURL }}/oembed">
{{- end -}}
{{- if isset(.MetaDescription) }}
<meta property="og:description" content="{{.MetaDescription}}" />
{{- end -}}
{{- if isset(.MetaImage) }}
<meta property="og:image" content="{{ .MetaImage }}" />
{{- end }}
</head>
<body data-hx-boost="true" data-hx-swap="outerHTML" data-hx-target="main" data-hx-select="main">
<!-- mb-4 for spacing between the navbar and main content -->
<nav class="navbar bg-body-tertiary mb-4">
<div class="container-fluid justify-content-between">
<div class="d-flex align-items-center">
<!-- Offcanvas menu for navigation items -->
<button class="navbar-toggler border-0 me-2" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar" aria-controls="offcanvasNavbar" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasNavbar" aria-labelledby="offcanvasNavbarLabel">
<div class="offcanvas-header d-flex align-items-start">
<div class="d-flex flex-column w-75">
<!-- TODO: fw-bold for the title? can't decide -->
<h2 class="display-6 offcanvas-title mb-0" id="offcanvasNavbarLabel">PixivFE</h2>
<span class="h6 text-muted mb-0">A privacy-respecting alternative front-end for Pixiv that doesn't suck.</span>
</div>
<!-- TODO: p-4 is a dirty hack to 'align' the close button with the title; inconsistent across devices -->
<button type="button" class="btn-close text-reset p-4" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<ul class="navbar-nav me-auto">
<div class="mb-4">
<h3 class="h5 fw-bold">Explore</h3>
<li class="nav-item">
<a class="nav-link" href="/discovery"><i class="bi bi-compass" title="compass"></i> Discovery</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/ranking"><i class="bi bi-trophy" title="crown"></i> Ranking</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/rankingCalendar"><i class="bi bi-calendar" title="calendar"></i> Ranking history</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/newest"><i class="bi bi-stars" title="sparkling"></i> Newest</a>
</li>
</div>
<div class="mb-4">
<h3 class="h5 fw-bold">Your profile</h3>
<li class="nav-item">
<a class="nav-link" href="/self/followingWorks"><i class="bi bi-people" title="users"></i> Latest works by followed</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/self/bookmarks"><i class="bi bi-heart" title="heart"></i> Your bookmarks</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/self"><i class="bi bi-person" title="user"></i> Your profile</a>
</li>
</div>
<div class="mb-4">
<h3 class="h5 fw-bold">Settings & info</h3>
<li class="nav-item">
<a class="nav-link" href="/settings"><i class="bi bi-gear" title="settings"></i> Settings</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/about"><i class="bi bi-info-circle" title="about"></i> About</a>
</li>
<li class="nav-item">
<!-- NOTE: seems to break this nav option -->
<a class="nav-link" href="https://codeberg.org/vnpower/pixivfe"><i class="bi bi-globe" title="globe"></i> Source code</a>
</li>
</div>
</ul>
</div>
</div>
<!-- Icon and title -->
<a class="h4 text-decoration-none fw-bold mb-0 d-flex align-items-center" href="/">
<img src="/img/favicon.svg" alt="PixivFE icon" width="30" height="30" class="d-inline-block me-2">
<p class="m-0">PixivFE</p>
</a>
</div>
<!-- Search bar -->
<div class="flex-grow-1 d-flex justify-content-center">
<form class="d-flex" action="/tags" method="post" autocomplete="off">
<input class="form-control me-2" type="search" name="name" required placeholder="⌕ Search artworks..." aria-label="Search">
<button class="btn btn-outline-success" type="submit">
<i class="bi bi-search" title="Search"></i>
</button>
</form>
</div>
<!-- TODO: figure out how to have the logged in user's avatar and name in the navbar -->
<!-- <a class="h5 text-decoration-none mb-0 d-flex align-items-center" href="/">
<img src=" .User.Avatar " width="30" height="30" class="d-inline-block rounded-circle me-2">
<p class="m-0"> .User.Name </p>
</a> -->
</div>
</nav>
<script src="/js/on-page-load.js"></script>
<!-- mb-5 for spacing at the bottom of the page -->
<main class="container mb-5">
{{- yield body() }}
</main>
<div id="site-config" class="d-none">
<span id="artworkPreview">{{CookieList["pixivfe-ArtworkPreview"]}}</span>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</body>
</html>