feat: initial Jimi Gallery prototype
- Public site (Home/Artists/Exhibitions/News/About/Contact) with EN/KO/JA i18n - Admin panel with login, CRUD, image upload, multilingual editing - Exhibition slider/lightbox view - FastAPI + MongoDB backend, JWT auth - Docker Compose deployment, behind nginx at jimi.yakenator.io
This commit is contained in:
58
news.html
Normal file
58
news.html
Normal file
@ -0,0 +1,58 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>News — Jimi Gallery</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Cinzel:wght@500;600&family=Cormorant+Garamond:wght@400;500;600&family=Inter:wght@300;400;500&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link rel="stylesheet" href="assets/styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="nav-slot"></div>
|
||||
<main>
|
||||
<section class="page-title">
|
||||
<div class="eyebrow" id="eyebrow"></div>
|
||||
<h1 id="title"></h1>
|
||||
</section>
|
||||
<section class="section-tight">
|
||||
<div id="news-list"></div>
|
||||
</section>
|
||||
</main>
|
||||
<div id="footer-slot"></div>
|
||||
<script src="assets/i18n.js"></script>
|
||||
<script src="assets/data.js"></script>
|
||||
<script src="assets/app.js"></script>
|
||||
<script>
|
||||
(async () => {
|
||||
try { await Store.load(); } catch (e) { return showBootError(e); }
|
||||
renderChrome("news");
|
||||
document.getElementById("eyebrow").textContent = t("eyebrow.announcements");
|
||||
document.getElementById("title").textContent = t("title.news");
|
||||
const items = [...Store.news()].sort((a, b) => b.date.localeCompare(a.date));
|
||||
mount(
|
||||
"news-list",
|
||||
items
|
||||
.map(
|
||||
(n) => `
|
||||
<article class="news-item">
|
||||
<img src="${n.image}" alt="${L(n.title)}" />
|
||||
<div>
|
||||
<time>${fmtDate(n.date)}</time>
|
||||
<h3>${L(n.title)}</h3>
|
||||
<p class="muted">${L(n.excerpt)}</p>
|
||||
<p>${L(n.body)}</p>
|
||||
</div>
|
||||
</article>
|
||||
`
|
||||
)
|
||||
.join("")
|
||||
);
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user