play page : add dynamical coming soon status. related to #37
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s

This commit is contained in:
isUnknown 2026-03-26 14:43:41 +01:00
parent f087260398
commit 80a7b41112
13 changed files with 99 additions and 48 deletions

20
assets/img/lock-icon.svg Normal file
View file

@ -0,0 +1,20 @@
<svg width="18" height="17" viewBox="0 0 18 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2096_2257)">
<path d="M6.72667 0.977011H11.2733V0H6.68715V0.977011H5.70801V1.95402H6.72667V0.977011Z" fill="black" style="fill:black;fill-opacity:1;"/>
<path d="M12.292 0.97699H11.2733V1.9519H12.292V0.97699Z" fill="black" style="fill:black;fill-opacity:1;"/>
<path d="M15.9605 4.76531H13.315V1.95404H12.292V4.76531H5.70799V1.95404H4.68713V4.76531H2.04169V5.74232H15.9605V4.76531Z" fill="black" style="fill:black;fill-opacity:1;"/>
<path d="M16.9791 6.71722V13.1718V15.046H18V13.1718V6.71722H16.9791Z" fill="black" style="fill:black;fill-opacity:1;"/>
<path d="M16.9792 5.74231H15.9605V6.71722H16.9792V5.74231Z" fill="black" style="fill:black;fill-opacity:1;"/>
<path d="M1.02086 6.71722H0V13.1718V15.046H1.02086V13.1718V6.71722Z" fill="black" style="fill:black;fill-opacity:1;"/>
<path d="M2.03953 5.74231H1.02087V6.71722H2.03953V5.74231Z" fill="black" style="fill:black;fill-opacity:1;"/>
<path d="M15.9605 16.0209H2.04169V16.9979H15.9605V16.0209Z" fill="black" style="fill:black;fill-opacity:1;"/>
<path d="M16.9792 15.046H15.9605V16.0209H16.9792V15.046Z" fill="black" style="fill:black;fill-opacity:1;"/>
<path d="M2.03953 15.046H1.02087V16.0209H2.03953V15.046Z" fill="black" style="fill:black;fill-opacity:1;"/>
<path d="M8.47203 8.9696H7.45117V9.94452V10.9026V10.9194V11.8775H8.47203V12.8524H9.49069V11.8775H10.5093V10.9194V10.9026V9.94452V8.9696H9.49069H8.47203Z" fill="black" style="fill:black;fill-opacity:1;"/>
</g>
<defs>
<clipPath id="clip0_2096_2257">
<rect width="18" height="17" fill="white" style="fill:white;fill-opacity:1;"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -1,7 +1,7 @@
title: À propos
icon: info
image:
back: #fff
back: rgba(0,0,0, 0)
color: var(--color-green)
query: false
options:

View file

@ -1,7 +1,7 @@
title: Blog
icon: blog
image:
back: #fff
back: rgba(0,0,0, 0)
color: var(--color-green)
query: false
options:

View file

@ -1,7 +1,7 @@
title: Expertise
icon: text-left
image:
back: #fff
back: rgba(0,0,0, 0)
color: var(--color-green)
options:
delete: false

View file

@ -28,6 +28,7 @@ tabs:
translate: false
image:
ratio: 1/1
back: rgba(0,0,0, 0)
uploads:
template: image
help: Pour le carousel de navigation parmi les jeux
@ -40,10 +41,11 @@ tabs:
translate: false
layout: cards
size: tiny
image:
back: rgba(0,0,0, 0)
uploads:
template: image
help: Affiché au-dessus de la description
width: 1/3
- width: 3/10
fields:
description:
@ -64,28 +66,26 @@ tabs:
help: Laissez vide pour afficher "à venir / coming soon"
translate: false
type: url
- width: 3/10
sections:
previewCol:
type: fields
fields:
backgroundColor:
label: Couleur d'arrière plan
type: code-editor
language: css
size: custom-size
default: radial-gradient(circle at 20% 80%, rgb(240, 154, 110) 0%, rgb(233, 101, 122) 100%)
translate: false
help: À remplir avec la valeur de la propriété CSS `background-color` souhaitée
preview:
label: Aperçu
type: files
layout: cards
multiple: false
translate: false
uploads:
template: image
help: Image affichée à droite de la description (sur ordinateur uniquement)
fields:
preview:
label: Aperçu
type: files
layout: cards
multiple: false
translate: false
image:
back: rgba(0,0,0, 0)
uploads:
template: image
help: Image affichée à droite de la description (sur ordinateur uniquement)
backgroundColor:
label: Couleur d'arrière plan
type: code-editor
language: css
size: custom-size
default: radial-gradient(circle at 20% 80%, rgb(240, 154, 110) 0%, rgb(233, 101, 122) 100%)
translate: false
help: À remplir avec la valeur de la propriété CSS `background-color` souhaitée
seo: seo/page

View file

@ -1,7 +1,7 @@
title: Jouer
icon: game-pad
image:
back: #ffffff
back: rgba(0,0,0, 0)fff
color: var(--color-green)
options:
delete: false

View file

@ -1,7 +1,7 @@
title: Portfolio
icon: stack
image:
back: #ffffff
back: rgba(0,0,0, 0)fff
query: false
color: var(--color-green)
options:

View file

@ -100,7 +100,7 @@ tabs:
translate: false
image:
ratio: 1/1
back: #ffffff
back: rgba(0,0,0, 0)fff
uploads:
template: image
help: Écran de jeu mis en situation sur un appareil
@ -140,7 +140,7 @@ tabs:
accept: image/*
translate: false
image:
back: #ffffff
back: rgba(0,0,0, 0)fff
uploads:
template: image
help: |

View file

@ -1,7 +1,7 @@
title: Livres blancs
icon: book
image:
back: #fff
back: rgba(0,0,0, 0)
color: var(--color-green)
query: false
options:

View file

@ -89,7 +89,7 @@ tabs:
type: files
layout: cards
image:
back: #fff
back: rgba(0,0,0, 0)
max: 1
help: Utilisé en pied de page (page À propos, Blog et Article).
- width: 3/4

View file

@ -16,7 +16,7 @@ const dict = {
read_article: { fr: "Lire l'article", en: "Read article" },
// Play
play: { fr: "Jouer", en: "Play" },
coming_soon: { fr: "Coming soon", en: "Coming soon" },
coming_soon: { fr: "À venir", en: "Coming soon" },
// Header
close_menu: { fr: "Fermer le menu", en: "Close menu" },
open_menu: { fr: "Ouvrir le menu", en: "Open menu" },

View file

@ -57,23 +57,15 @@ button[disabled] {
}
.button.play-icon::before {
content: "";
background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M15.7598 13.5H14.6348V14.625V15.75H15.7598V14.625H16.8848V13.5V12.375H15.7598V13.5Z' fill='black'/%3E%3Cpath d='M12.3848 15.75V16.875H13.5098H14.6348V15.75H13.5098H12.3848Z' fill='black'/%3E%3Cpath d='M10.1348 16.875H9.00977V18H10.1348H11.2598H12.3848V16.875H11.2598H10.1348Z' fill='black'/%3E%3Cpath d='M1.125 10.125V9V7.875V6.75V5.625H0V6.75V7.875V9V10.125V11.25V12.375H1.125V11.25V10.125Z' fill='black'/%3E%3Cpath d='M3.375 13.5H2.25V12.375H1.125V13.5V14.625H2.25V15.75H3.375V14.625V13.5Z' fill='black'/%3E%3Cpath d='M4.5 15.75H3.375V16.875H4.5H5.625V15.75H4.5Z' fill='black'/%3E%3Cpath d='M6.75 16.875H5.625V18H6.75H7.875H9V16.875H7.875H6.75Z' fill='black'/%3E%3Cpath d='M16.8848 5.625V6.75V7.875V9V10.125V11.25V12.375H18.0098V11.25V10.125V9V7.875V6.75V5.625H16.8848Z' fill='black'/%3E%3Cpath d='M16.8848 3.375H15.7598V2.25H14.6348V3.375V4.5H15.7598V5.625H16.8848V4.5V3.375Z' fill='black'/%3E%3Cpath d='M11.2598 0H10.1348H9.00977V1.125H10.1348H11.2598H12.3848V0H11.2598Z' fill='black'/%3E%3Cpath d='M13.5098 1.125H12.3848V2.25H13.5098H14.6348V1.125H13.5098Z' fill='black'/%3E%3Cpath d='M2.25 4.5H3.375V3.375V2.25H2.25V3.375H1.125V4.5V5.625H2.25V4.5Z' fill='black'/%3E%3Cpath d='M5.625 2.25V1.125H4.5H3.375V2.25H4.5H5.625Z' fill='black'/%3E%3Cpath d='M7.875 1.125H9V0H7.875H6.75H5.625V1.125H6.75H7.875Z' fill='black'/%3E%3Cpath d='M10.1399 10.1825H11.2774V9.6775H12.4149V8.54H11.2774V7.91H10.1399V6.7725H9.00492V5.6375H7.86742V4.5H6.73242V13.5925H7.86742V12.455H9.00492V11.3175H10.1399V10.1825Z' fill='black'/%3E%3C/svg%3E");
background-size: 100%;
width: 1.125rem;
height: 1.125rem;
transform: translateX(-0.5rem);
transition: all 0.5s ease-out;
}
.button.download-icon::before {
content: "";
background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2219%22%20height%3D%2218%22%20viewBox%3D%220%200%2019%2018%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url(%23clip0_2339_203)%22%3E%3Cpath%20d%3D%22M6.26423%208.06567H4.10986V10.0801H6.26423V8.06567Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M8.41853%2012.1025V14.1169H10.5816V12.1025H12.7359V10.08H10.5816V8.06562V4.03685V0H8.41853V4.03685V8.06562V10.08H6.26416V12.1025H8.41853Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M16.8456%2011.9487V13.9631V15.9775H2.15437V13.9631V11.9487H0V13.9631V15.9775V18H19V15.9775V13.9631V11.9487H16.8456Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M14.8902%208.06567H12.7358V10.0801H14.8902V8.06567Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22clip0_2339_203%22%3E%3Crect%20width%3D%2219%22%20height%3D%2218%22%20fill%3D%22white%22%20style%3D%22fill%3Awhite%3Bfill-opacity%3A1%3B%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E");
background-size: 100%;
width: 1.125rem;
height: 1.125rem;
transform: translateX(-0.5rem);
transition: all 0.5s ease-out;
}
.button.lock-icon::before {
background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2218%22%20height%3D%2217%22%20viewBox%3D%220%200%2018%2017%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url(%23clip0_2096_2257)%22%3E%3Cpath%20d%3D%22M6.72667%200.977011H11.2733V0H6.68715V0.977011H5.70801V1.95402H6.72667V0.977011Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M12.292%200.97699H11.2733V1.9519H12.292V0.97699Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M15.9605%204.76531H13.315V1.95404H12.292V4.76531H5.70799V1.95404H4.68713V4.76531H2.04169V5.74232H15.9605V4.76531Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M16.9791%206.71722V13.1718V15.046H18V13.1718V6.71722H16.9791Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M16.9792%205.74231H15.9605V6.71722H16.9792V5.74231Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M1.02086%206.71722H0V13.1718V15.046H1.02086V13.1718V6.71722Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M2.03953%205.74231H1.02087V6.71722H2.03953V5.74231Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M15.9605%2016.0209H2.04169V16.9979H15.9605V16.0209Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M16.9792%2015.046H15.9605V16.0209H16.9792V15.046Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M2.03953%2015.046H1.02087V16.0209H2.03953V15.046Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3Cpath%20d%3D%22M8.47203%208.9696H7.45117V9.94452V10.9026V10.9194V11.8775H8.47203V12.8524H9.49069V11.8775H10.5093V10.9194V10.9026V9.94452V8.9696H9.49069H8.47203Z%22%20fill%3D%22black%22%20style%3D%22fill%3Ablack%3Bfill-opacity%3A1%3B%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22clip0_2096_2257%22%3E%3Crect%20width%3D%2218%22%20height%3D%2217%22%20fill%3D%22white%22%20style%3D%22fill%3Awhite%3Bfill-opacity%3A1%3B%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E");
}
/* Clickable elements */

View file

@ -270,7 +270,7 @@
class="button play-icon"
>{t('play')}</a>
{:else}
<button class="button" disabled>{t('coming_soon')}</button>
<button class="button with-icon lock-icon" disabled>{t('coming_soon')}</button>
{/if}
</div>
{/if}
@ -280,7 +280,14 @@
<nav class="play-carousel" aria-label="Choisir un jeu">
<ul role="list">
{#each games as game, i}
<li class="play-carousel-item" class:active={i === currentIndex}>
<li
class={[
"play-carousel-item",
i === currentIndex ? 'active' : '',
!game.playLink ? 'coming-soon' : ''
]}
style:--status={!game.playLink ? '"' + t('coming_soon') + '"' : 'false'}
>
<button
aria-label={game.title}
aria-current={i === currentIndex ? 'true' : undefined}
@ -440,18 +447,37 @@
height: 100%;
}
.play-carousel-item :global(picture) {
display: block;
}
.play-carousel-item button {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
gap: 0.5rem;
background: none;
cursor: pointer;
transition: all 0.4s var(--ease-standard);
}
.play-carousel-item.coming-soon button::after {
content: var(--status);
text-transform: uppercase;
font-family: "Danzza Bold", sans-serif;
font-size: .7rem;
background-color: var(--color-primary);
margin-top: 1rem;
padding: .5rem .7rem;
border-radius: .5rem .5rem .5rem .5rem;
position: absolute;
}
.play-carousel-item :global(img) {
width: clamp(140px, 15.09vw, 291px);
border-radius: 25%;
}
.play-carousel-item.active :global(img) {
@ -462,7 +488,10 @@
object-fit: cover;
transition: all 0.4s var(--ease-standard);
border: 5px solid var(--color-primary);
border-radius: 25%;
}
.play-carousel-item.coming-soon :global(img) {
filter: saturate(0) contrast(1.3);
}
@media screen and (max-width: 1140px) {
@ -471,6 +500,16 @@
}
}
@media screen and (max-width: 800px) {
.play-carousel-item.coming-soon button::after {
font-family: "Danzza", sans-serif;
margin-top: .5rem;
padding: .3rem .5rem;
font-size: .5rem;
font-weight: 600;
}
}
/* --- Mobile (≤ 700px) --- */
@media (max-width: 700px) {