This commit is contained in:
2026-01-26 16:57:35 +01:00
parent 46d97d433c
commit 0f5f732b4d
43 changed files with 2657 additions and 40 deletions

View File

@ -40,6 +40,8 @@ return [
'copy' => [
public_path('build') => 'build',
public_path('assets') => 'assets',
public_path('css') => 'css',
],
'symlinks' => [

View File

@ -1,11 +1,11 @@
---
id: home
blueprint: pages
title: Home
title: 'HFS Summer 2026'
template: home
author: 5a7338bf-56d2-42b5-8ad0-7459a1fd8152
updated_by: cf207a21-df92-4f9c-b7c7-897476d8f464
updated_at: 1769093488
updated_at: 1769442520
incentives:
-
id: mki632jb

View File

@ -4,6 +4,7 @@ blueprint: price
title: 'Pass Damage Reduce'
price: 39
updated_by: cf207a21-df92-4f9c-b7c7-897476d8f464
updated_at: 1768580264
updated_at: 1769422568
sold_out: true
---
Pour les 100 premières places !

View File

@ -5,5 +5,6 @@ title: Scanlines
name: Scanlines
logo: logo_black.png
updated_by: cf207a21-df92-4f9c-b7c7-897476d8f464
updated_at: 1768579951
updated_at: 1769440581
link: 'https://www.scanlines.fr'
---

View File

@ -4,7 +4,7 @@ blueprint: tournament
title: 'Facteur X'
author: 5a7338bf-56d2-42b5-8ad0-7459a1fd8152
updated_by: cf207a21-df92-4f9c-b7c7-897476d8f464
updated_at: 1769093099
updated_at: 1769422061
logo: image_2026-01-06_210603982.png
type: stier
backdrop: image_2026-01-06_210653383.png
@ -20,9 +20,10 @@ guests:
name: Kark
country: France
picture: mousse.png
reveal: true
reveal: false
type: guest
enabled: true
flag: japan_flag-wallpaper-1920x1080.jpg
description:
-
type: heading

View File

@ -0,0 +1,26 @@
---
id: c5cc552b-22ea-43f2-b601-73ecd7c59505
blueprint: tournament
title: 'Autre stuph'
author: 5a7338bf-56d2-42b5-8ad0-7459a1fd8152
updated_by: cf207a21-df92-4f9c-b7c7-897476d8f464
updated_at: 1769004164
logo: anglers_fish-512.png
type: stier
backdrop: 03.24.jpg
start: '2026-01-06 14:00'
end: '2026-01-06 17:00'
duplicated_from: 8bd8dafe-19f4-4a20-a72f-46cb0b6ac245
game: 'Le gros jeu sa mère'
guests:
-
id: mko3bj62
name: Karkinge
country: France
picture:
- mousse.png
reveal: false
type: guest
enabled: true
---
That's the hado yup. Et ca déchire.

View File

@ -0,0 +1,4 @@
title: main
collections:
- pages
root: true

View File

@ -0,0 +1,7 @@
tree:
-
id: 0116de64-dac8-45e9-b0dc-d5b2312d4f56
entry: home
-
id: b3bfe37d-cdbc-4e1e-96d3-95f9b15077fb
entry: f7371605-56d8-4396-b118-879cab386516

2166
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
data: { }
size: 239316
last_modified: 1769004161
width: 1280
height: 1024
mime_type: image/jpeg
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 20831
last_modified: 1769004141
width: 512
height: 512
mime_type: image/png
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 71249
last_modified: 1769004528
width: 2277
height: 459
mime_type: image/png
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 71761
last_modified: 1769004528
width: 2277
height: 459
mime_type: image/png
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 44831
last_modified: 1769004528
width: 2259
height: 316
mime_type: image/png
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 44592
last_modified: 1769004528
width: 2259
height: 316
mime_type: image/png
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 646672
last_modified: 1769422056
width: 1920
height: 1080
mime_type: image/jpeg
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 1078
last_modified: 1768916584
width: '1697'
height: '1870'
mime_type: image/svg+xml
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 20163
last_modified: 1769004105
width: 250
height: 308
mime_type: image/png
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 268149
last_modified: 1763567009
width: '6470'
height: '5748'
mime_type: image/svg+xml
duration: null

BIN
public/assets/03.24.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
public/assets/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 KiB

View File

@ -102,4 +102,48 @@ document.addEventListener('DOMContentLoaded', () => {
photoEl.classList.toggle('full');
});
});
// Accordion functionality
// Comportement "accordion" : quand un details s'ouvre, fermer les autres
(function(){
const faqContainer = document.getElementById('faq');
if (!faqContainer) return;
const items = faqContainer.querySelectorAll('details');
items.forEach(item => {
// Mise à jour de l'attribut aria-expanded pour accessibilité
item.addEventListener('toggle', () => {
item.querySelector('summary')?.setAttribute('aria-expanded', item.open ? 'true' : 'false');
if (item.open) {
items.forEach(other => { if (other !== item) other.removeAttribute('open'); });
}
});
// Permet Enter / Espace pour déclencher l'ouverture quand summary a le focus
const summary = item.querySelector('summary');
summary.addEventListener('keydown', (e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
summary.click();
}
});
});
})();
// Link prefetching on hover
(function(){
const prefetchLinks = new Set();
document.querySelectorAll('a[href]').forEach(link => {
link.addEventListener('mouseenter', () => {
const url = link.href;
if (!prefetchLinks.has(url)) {
const linkEl = document.createElement('link');
linkEl.rel = 'prefetch';
linkEl.href = url;
document.head.appendChild(linkEl);
prefetchLinks.add(url);
}
});
});
})();
});

BIN
public/assets/mousse.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/assets/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/assets/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#101010","background_color":"#ffd600","display":"standalone"}

View File

@ -13,6 +13,9 @@
--bulma-black-l: 6%;
--bulma-body-background-color: hsl(0, 0%, 6%);
}
.card{
--bulma-card-shadow: none !important;
}
.has-text-weight-bold {
font-weight: 600 !important;
}
@ -92,7 +95,7 @@ video{
cursor:pointer;
border-radius: 5px;
box-shadow: 0 4px 6px hsla(0,0%,6%,0.3);
transition: transform 0.5s ease-in-out;
transition: transform 0.2s ease-in-out;
}
.photo:hover{
transform: rotate(0deg) !important;
@ -221,8 +224,43 @@ video{
background-size: cover;
background-position: center;
}
/*FAQ ACCORDIONS*/
/* Masque le marker natif et stylise le summary */
#faq summary { list-style: none; cursor: pointer; padding: 1rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
#faq summary::-webkit-details-marker { display: none; }
/* Effet boîte Bulma-compatible */
.faq-item { margin-bottom: 0.75rem; transition: box-shadow 0.15s ease; }
.faq-item[open] { box-shadow: 0 6px 18px rgba(10,10,10,0.08); }
/* Caret rotatif */
.faq-caret { transition: transform 0.18s ease; font-size: 1.1rem; color: rgba(255,255,255,0.6); }
.faq-item[open] .faq-caret { transform: rotate(180deg); }
/* Espace pour le contenu et rendu propre */
.faq-item .content { padding: 0 1rem 1rem 1rem; color: rgba(0,0,0,0.85); }
/*------------------------------------------------------------------*/
/*SPONSORS*/
.partner-link{
display: flex;
align-items: center;
justify-content: center;
}
.partner-box{
background: #ffffff;
border-radius: 50%;
corner-shape: squircle;
padding: 2rem;
display: flex;
align-items: center;
justify-content: center;
/*height: 120px;*/
/*box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);*/
aspect-ratio: 1;
}
/*Twist animation*/
.twist{
/* 3D transform pivot on Y axis*/

View File

@ -0,0 +1,55 @@
title: Rule
tabs:
main:
display: Main
sections:
-
fields:
-
handle: title
field:
type: text
required: true
validate:
- required
-
handle: rules
field:
buttons:
- h2
- h3
- bold
- italic
- unorderedlist
- orderedlist
- removeformat
- quote
- anchor
- image
- table
- underline
- strikethrough
remove_empty_nodes: false
type: bard
display: Rules
instructions: 'Description des règles des tournois'
sidebar:
display: Sidebar
sections:
-
fields:
-
handle: slug
field:
type: slug
localizable: true
validate: 'max:200'
-
handle: parent
field:
type: entries
collections:
- pages
max_items: 1
listable: false
localizable: true

View File

@ -25,6 +25,11 @@ tabs:
type: integer
display: Price
instructions: 'Prix de la place'
-
handle: sold_out
field:
type: toggle
display: 'Sold out'
sidebar:
display: Sidebar
sections:

View File

@ -28,6 +28,11 @@ tabs:
type: assets
display: Logo
instructions: 'Logo du sponsor'
-
handle: link
field:
type: link
display: Link
sidebar:
display: Sidebar
sections:

View File

@ -143,6 +143,7 @@ tabs:
display: Picture
instructions: 'Image détourée du guest'
max_files: 1
mode: grid
-
handle: reveal
field:

View File

@ -0,0 +1,29 @@
<div class="card">
<div class="card-image">
<figure class="image px-3 pt-3">
{{ if reveal === true }}
<img src="{{ glide:picture preset="logo" }}" alt="{{ name }}" title="{{ name }}">
{{ else }}
<img src="{{ glide:picture preset="logo" bri="-100" }}" alt="TBA" title="TBA">
{{ /if }}
</figure>
</div>
<div class="card-content">
<div class="media">
<div class="media-left">
{{ if flag }}
<figure class="image is-48x48">
<img
src="{{ glide:flag height="80" }}"
alt="Placeholder image"
/>
</figure>
{{ /if }}
</div>
<div class="media-content">
<p class="title is-4 has-text-primary">{{ name }}</p>
{{# <p class="subtitle is-6">@johnsmith</p> #}}
</div>
</div>
</div>
</div>

View File

@ -1,5 +1,5 @@
<div class="cell">
{{? $angle = rand(-30,30); ?}}
{{? $angle = rand(-15,15); ?}}
<img src="{{ glide:url preset="thumbnail" }}" alt="{{ alt }}" class="photo"
style="transform: rotate({{ $angle }}deg);">
{{# <img src="{{ glide:url }}" alt="{{ alt }}" class="photo full"> #}}

View File

@ -71,7 +71,7 @@
</section>
<section class="section" id="gallery">
<section class="section ink top yellow" id="gallery">
<div class="container">
<h2 class="is-size-2 has-text-weight-bold is-uppercase block has-text-primary">Gallerie</h2>
<div class="grid is-col-min-9">
@ -83,45 +83,71 @@
</section>
<section class="section" id="faq">
<section class="section has-background-primary has-text-black" id="faq">
<div class="container">
<h2>FAQ</h2>
<div class="grid">
<h2 class="is-size-2 has-text-weight-bold is-uppercase block">Infos pratiques</h2>
<div class="faq-list">
{{ faqs sort="order asc" }}
<div class="cell block">
<h3 class="is-size-3 block">{{ question }}</h3>
<p class="block">{{ reponse }}</p>
<details class="box faq-item" role="group">
<summary class="is-size-4 has-text-weight-semibold is-uppercase" role="button" aria-expanded="false">
<span>{{ question }}</span>
<span class="faq-caret" aria-hidden="true"></span>
</summary>
<div class="content mt-3 has-text-white">
<p>{{ reponse }}</p>
</div>
</details>
{{ /faqs }}
</div>
</div>
</section>
<section class="section" id="tickets">
<div class="container">
<h2>Tickets</h2>
<div class="grid">
{{ collection:prices sort="order asc" }}
<div class="cell block">
<h3 class="is-size-3 block">{{ title }}</h3>
<p class="block">{{ price }}</p>
<a href="{{ hfs:lien_billetterie }}" class="button is-primary" target="_blank">Buy Ticket</a>
<h2 class="is-size-2 has-text-weight-bold is-uppercase block has-text-primary">Tarifs</h2>
<div class="grid is-multiline">
{{ collection:prices sort="order asc" limit="3" }}
<div class="cell block has-text-centered">
<h3 class="is-size-4 has-text-weight-bold is-uppercase mb-2">{{ title }}</h3>
<p class="is-size-1 has-text-weight-bold mb-3">{{ price }} €</p>
{{# <a href="{{ hfs:lien_billetterie }}" class="button is-primary is-rounded" target="_blank" aria-label="Acheter {{ title }}">Acheter</a> #}}
</div>
{{ /collection:prices }}
</div>
<p class="mt-4">
<a href="{{ hfs:lien_billetterie }}" class="button is-outlined is-primary is-fullwidth is-rounded" target="_blank">Voir la billetterie</a>
</p>
</div>
</section>
<section class="section" id="sponsors">
<section class="section has-background-primary has-text-black" id="sponsors">
<div class="container">
<h2>Sponsors</h2>
<div class="grid">
<h2 class="is-size-2 has-text-weight-bold is-uppercase block">Sponsors & partenaires</h2>
<div class="columns is-multiline is-mobile">
{{ collection:sponsors sort="order asc" }}
<div class="cell">
<img src="{{ glide:logo preset='logo' }}" alt="{{ logo:alt }}">
<div class="column is-half-mobile is-one-fifth-tablet" title="{{ name }}">
{{ if link }}
<a href="{{ link }}" target="_blank" rel="noopener noreferrer" class="partner-link" style="text-decoration:none;">
{{ else }}
<div class="partner-link" style="">
{{ /if }}
<div class="partner-box">
<img src="{{ glide:logo preset='logo' }}" alt="{{ logo:alt }}" style="max-width:100%;max-height:100%;object-fit:contain;display:block;">
</div>
{{ if link }}
</a>
{{ else }}
</div>
{{ /if }}
</div>
{{ /collection:sponsors }}
</div>
</div>
</section>

View File

@ -0,0 +1,127 @@
<section id="hero" class="section hero is-primary is-fullheight ink bottom">
<div class="hero-body twist has-text-centered container">
<img src="{{ hfs:logo }}" alt="HFS SUMMER"/>
<p class="title twist-fore">
{{ hfs:date_start }} - {{ hfs:date_end }}
</p>
<p class="subtitle twist-fore">{{ hfs:place }}</p>
</div>
</section>
<section id="reel">
<video autoplay loop muted playsinline>
<source src="assets/video/reel.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</section>
<section class="section has-background-primary has-text-black ink top" id="catch">
<div class="is-size-1 has-text-weight-bold is-uppercase container">
{{ content | widont }}
</div>
</section>
<section class="section has-background-black ink bottom yellow" id="incentive">
<div class="container">
<h2 class="is-size-2 has-text-weight-bold is-uppercase has-text-primary block">L'évènement</h2>
{{ incentives }}
{{ partial:_incentiveblock }}
{{ /incentives }}
</div>
</section>
<section class="section has-background-primary has-text-black" id="tournaments">
<div class="container">
<h2 class="is-size-2 has-text-weight-bold is-uppercase block">
Tournois
<a class="navbar-item button is-rounded is-float-right" href="/reglement">
Règlement
</a>
</h2>
<h3 class="is-size-3 has-text-weight-bold is-uppercase block">Tournois S-Tier</h3>
<div class="custom-grid block">
{{ collection:tournaments type:is="stier" }}
{{ partial:_tournamentblock }}
{{ /collection:tournaments }}
</div>
<h3 class="is-size-3 has-text-weight-bold is-uppercase">Tournois A-Tier</h3>
<div class="custom-grid block">
{{ collection:tournaments type:is="atier" }}
{{ partial:_tournamentblock }}
{{ /collection:tournaments }}
</div>
<h3 class="is-size-3 has-text-weight-bold is-uppercase">Tournois Rythm-Tier</h3>
<div class="custom-grid block">
{{ collection:tournaments type:is="rythm" }}
{{ partial:_tournamentblock }}
{{ /collection:tournaments }}
</div>
<h3 class="is-size-3 has-text-weight-bold is-uppercase">Tournois Family-Tier</h3>
<div class="custom-grid block">
{{ collection:tournaments type:is="family" }}
{{ partial:_tournamentblock }}
{{ /collection:tournaments }}
</div>
</div>
</section>
<section class="section" id="gallery">
<div class="container">
<h2 class="is-size-2 has-text-weight-bold is-uppercase block has-text-primary">Gallerie</h2>
<div class="grid is-col-min-9">
{{ photos }}
{{ partial:_photoblock }}
{{ /photos }}
</div>
</div>
</section>
<section class="section has-background-primary has-text-black" id="faq">
<div class="container">
<h2 class="is-size-2 has-text-weight-bold is-uppercase block">Infos pratiques</h2>
<div class="grid">
{{ faqs sort="order asc" }}
<div class="cell block">
<h3 class="is-size-3 block">{{ question }}</h3>
<p class="block">{{ reponse }}</p>
</div>
{{ /faqs }}
</div>
</div>
</section>
<section class="section" id="tickets">
<div class="container">
<h2 class="is-size-2 has-text-weight-bold is-uppercase block has-text-primary">Tarifs</h2>
<div class="grid">
{{ collection:prices sort="order asc" }}
<div class="cell block">
<h3 class="is-size-3 block">{{ title }}</h3>
<p class="block">{{ price }}</p>
<a href="{{ hfs:lien_billetterie }}" class="button is-primary" target="_blank">Buy Ticket</a>
</div>
{{ /collection:prices }}
</div>
</div>
</section>
<section class="section has-background-primary has-text-black" id="sponsors">
<div class="container">
<h2 class="is-size-2 has-text-weight-bold is-uppercase block">Sponsors & partenaires</h2>
<div class="grid">
{{ collection:sponsors sort="order asc" }}
<div class="cell">
<img src="{{ glide:logo preset='logo' }}" alt="{{ logo:alt }}">
</div>
{{ /collection:sponsors }}
</div>
</div>
</section>

View File

@ -9,6 +9,10 @@
href="/css/bulma.min.css"
>
<link rel="stylesheet" href="/css/site.css">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
<link rel="manifest" href="/assets/site.webmanifest">
<title>{{ title ?? site:name }}</title>
</head>
<body>
@ -33,10 +37,19 @@
<img src="/assets/logo2.svg" alt="" style="width:3rem;">
</div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell">
<ul>
{{ nav:main }}
<li><a href="{{ url }}">{{ title }}</a></li>
{{ /nav:main }}
</ul>
</div>
</div>
</footer>
</body>
<script src="https://unpkg.com/lenis@1.3.17/dist/lenis.min.js"></script>
<script src="/assets/js/main.js"></script>
{{ vite src="resources/js/app.js|resources/css/app.css" }}
</html>

View File

@ -10,7 +10,7 @@
{{ title }}
</div>
<div class="has-text-white block is-size-4 mb-6">
{{ type:label }} Tournament
Tournoi {{ type:label }}
</div>
<div>
<span class="tag is-large is-primary has-text-weight-bolder is-uppercase block">
@ -50,13 +50,7 @@
<div class="fixed-grid has-2-cols is-gap-4">
<div class="grid ">
{{ guests }}
<div class="cell squircle has-background-primary">
{{ if reveal === true }}
<img src="{{ glide:picture preset="logo" }}" alt="{{ name }}" title="{{ name }}">
{{ else }}
<img src="{{ glide:picture preset="logo" bri="-100" }}" alt="TBA" title="TBA">
{{ /if }}
</div>
{{ partial:_guest }}
{{ /guests }}
</div>
</div>

View File

@ -13,3 +13,4 @@ preferences:
- slug
- status
- price
favorites: { }