convert home to alpine

This commit is contained in:
isUnknown 2024-01-25 18:34:32 +01:00
parent 4f8f01aa95
commit 77074c47bf
9 changed files with 159 additions and 42 deletions

View file

@ -1,45 +1,31 @@
function toggleTab(event, tabName) { function openTab(data, tab) {
hideAllTabs(event) data.activeTab === tab ? (data.activeTab = "") : (data.activeTab = tab);
const button =
event.target.tagName === "BUTTON"
? event.target
: event.target.closest("button")
// const buttonTop = button.offsetTop
const icon = button.querySelector(".more-less-icon")
const article = document.querySelector("#" + tabName)
icon.textContent = icon.textContent === "+" ? "-" : "+"
button.classList.toggle("open")
article.classList.toggle("hidden")
} }
function hideAllTabs(event) { function scrollToElem(selector) {
const tabContainer = event.target.closest("toggle") setTimeout(() => {
const buttons = document.querySelectorAll(".toggle-btn") const yOffset = -185;
const articles = document.querySelectorAll(".tab") const elem = document.querySelector(selector);
const top = elem.getBoundingClientRect().top;
buttons.forEach((btn) => { window.scrollTo({
btn.classList.remove("open") top: top + window.scrollY + yOffset,
btn.querySelector(".more-less-icon").textContent = "+" behavior: "smooth",
}) });
articles.forEach((article) => { }, 100);
article.classList.add("hidden")
})
} }
document.addEventListener("DOMContentLoaded", () => { document.addEventListener("DOMContentLoaded", () => {
function toggleLogoState() { function toggleLogoState() {
const scrollY = window.scrollY || window.pageYOffset const scrollY = window.scrollY || window.pageYOffset;
if (scrollY > 10) { if (scrollY > 10) {
document.querySelector("#header").classList.add("minimized") document.querySelector("#header").classList.add("minimized");
} else { } else {
document.querySelector("#header").classList.remove("minimized") document.querySelector("#header").classList.remove("minimized");
} }
} }
window.addEventListener("scroll", () => { window.addEventListener("scroll", () => {
toggleLogoState() toggleLogoState();
}) });
}) });

View file

@ -10,6 +10,11 @@
} }
/* ================= RESET ================= */ /* ================= RESET ================= */
body,
html {
scroll-behavior: smooth;
}
html, html,
body, body,
h1, h1,
@ -166,6 +171,10 @@ button {
align-items: center; align-items: center;
} }
article p {
margin-bottom: var(--unit--vertical);
}
/* ================= HEADER ================= */ /* ================= HEADER ================= */
#header { #header {
position: fixed; position: fixed;
@ -351,17 +360,33 @@ h2.left.open::before {
justify-content: space-between; justify-content: space-between;
} }
#content { button.toggle.open {
margin-top: calc(var(--unit--vertical) * 2); font-weight: bold;
} }
.toggle-btn--left .more-less-icon { button.toggle.left::after {
margin-left: var(--unit--horizontal); margin-left: var(--unit--horizontal);
} }
button.toggle.left.close::after {
content: "+";
}
button.toggle.left.open::after {
content: "-";
}
.toggle-btn--right .more-less-icon { button.toggle.right::before {
margin-right: var(--unit--horizontal); margin-right: var(--unit--horizontal);
} }
button.toggle.right.close::before {
content: "+";
}
button.toggle.right.open::before {
content: "-";
}
.content {
margin-top: calc(var(--unit--vertical) * 2);
}
/* ================= ARTICLES LIST ================= */ /* ================= ARTICLES LIST ================= */
#articles { #articles {

View file

@ -1 +1,5 @@
Title: Error Title: Error
----
Uuid: atOcJYYJAw8Buk3z

View file

@ -1 +1,5 @@
Title: Home Title: Home
----
Uuid: Ie9MrbnsQDy1oSUB

View file

@ -1 +1,5 @@
Title: Site Title Title: actuel / inactuel
----
Edito: <p>Leo tortor nunc placerat adipiscing diam elementum facilisis nunc elit eget nisl suspendisse accumsan tincidunt nisi urna sit leo arcu suspendisse eu congue eget id.</p><p>Et sollicitudin massa sem commodo elementum phasellus arcu diam purus tempus ex mi condimentum interdum maecenas scelerisque sed elit sem eget elit vel et a.</p><p>Ac rutrum elementum purus cursus quisque aliquam scelerisque scelerisque metus eu bibendum et euismod ac quisque aliquam tortor amet sollicitudin sit lorem portaest adipiscing sollicitudin.</p><p>Commodo morbi magna bibendum ut sem arcu ipsum maecenas vivamus quis tempus lacus urna quis morbi enim tincidunt nisi placerat quisque euismod eget tristique nunc.</p><p>Molestie cursus ex tempus varius gravida phasellus placerat quam varius maecenas nisl nunc facilisis nunc condimentum et mi purus interdum orci quis sollicitudin enim dolor.</p>

View file

@ -1,5 +1,12 @@
title: Site title: Site
sections: tabs:
pages: contentTab:
type: pages label: Contenu
sections:
fieldsSection:
label: Contenu
type: fields
fields:
edito:
type: writer

2
site/snippets/footer.php Normal file
View file

@ -0,0 +1,2 @@
</body>
</html>

36
site/snippets/header.php Normal file
View file

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><?= $site->title() ?><?= e($page->url() !== $site->url(), '-' . $page->title()) ?></title>
<link rel="stylesheet" href="assets/style.css" />
<script src="assets/script.js" defer></script>
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
<meta name="robots" content="noindex">
</head>
<body class="grid">
<header id="header">
<div id="logo">
<a href="/">
<h1 id="actuel">actuel</h1>
<h1 id="inactuel">inactuel</h1>
</a>
</div>
<nav class="grid">
<div id="logo-nav">
<h1 id="actuel-nav">actuel</h1>
<h1 id="inactuel-nav">inactuel</h1>
</div>
<ul id="spaces">
<li>
<a href="#">accueil</a>
</li>
<li>
<a href="#">proposer une idée / un texte</a>
</li>
<li><a href="#">équipe</a></li>
<li><a href="#">mentions légales</a></li>
</ul>
</nav>
</header>

49
site/templates/home.php Normal file
View file

@ -0,0 +1,49 @@
<?php snippet('header') ?>
<main>
<h2 id="baseline">
critique des arts<br />
et des techniques
</h2>
<div id="tabs" x-data="{
activeTab: ''
}">
<div class="toggle-btns">
<button
class="toggle left"
:class="activeTab === 'edito' ? 'open' : 'close'"
@click="[openTab($data, 'edito'), scrollToElem('.content')]"
>éditorial</button>
<button
class="toggle right"
:class="activeTab === 'articles' ? 'open' : 'close'"
@click="[openTab($data, 'articles'), scrollToElem('.content')]"
>articles</button>
</div>
<div class="content">
<article x-show="activeTab === 'edito'">
<?= $site->edito() ?>
</article>
<ul x-show="activeTab === 'articles'">
<li class="article">
<a href="/article.html" class="article__title">
<strong
><em
>Le timbre dans l'<em>Inhumain</em> de Jean-François
Lyotard,</em
></strong
><br />
</a>
<div class="article__infos">
<button class="author">Cécile Fournel</button>,&nbsp;
<p>16 novembre 2023</p>
</div>
<div class="article__labels">
<button class="label label--year">1987</button>
<button class="label label--category">livre</button>
</div>
</li>
</ul>
</div>
</div>
</main>
<?php snippet('footer') ?>