update img partenaire et team
|
|
@ -236,6 +236,6 @@ Pour contribuer au projet:
|
||||||
Consulter [pages/mentions-legales.html](pages/mentions-legales.html) et [pages/cgv.html](pages/cgv.html).
|
Consulter [pages/mentions-legales.html](pages/mentions-legales.html) et [pages/cgv.html](pages/cgv.html).
|
||||||
|
|
||||||
---
|
---
|
||||||
**Version du site web**: 1.5.2.16
|
**Version du site web**: 1.5.2.17
|
||||||
**Dernière mise à jour**: Avril 2026
|
**Dernière mise à jour**: Avril 2026
|
||||||
**Mainteneur**: KIRITO_KMA / L'équipe OmégaKube
|
**Mainteneur**: KIRITO_KMA / L'équipe OmégaKube
|
||||||
|
|
|
||||||
|
|
@ -3783,24 +3783,19 @@ footer {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Partner modal — réutilise team-modal, surcharge avatar */
|
/* Partner modal — utilise exactement la même structure que team-modal */
|
||||||
.partner-modal-avatar {
|
|
||||||
background: none !important;
|
|
||||||
border: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.team-modal-avatar-photo {
|
.team-modal-avatar-photo {
|
||||||
width: 72px;
|
width: 100%;
|
||||||
height: 72px;
|
height: 100%;
|
||||||
border-radius: 10px;
|
object-fit: cover;
|
||||||
object-fit: contain;
|
|
||||||
display: block;
|
display: block;
|
||||||
|
/* Remplit l'octogone — clip-path du parent gère la forme */
|
||||||
}
|
}
|
||||||
|
|
||||||
.team-modal-avatar-fallback {
|
.team-modal-avatar-fallback {
|
||||||
width: 72px;
|
width: 100%;
|
||||||
height: 72px;
|
height: 100%;
|
||||||
border-radius: 10px;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-family: 'OmegaLarge', sans-serif;
|
font-family: 'OmegaLarge', sans-serif;
|
||||||
|
|
@ -3817,8 +3812,8 @@ footer {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
border-radius: 50%;
|
|
||||||
display: block;
|
display: block;
|
||||||
|
/* Pas de border-radius — le clip-path octogone du parent s'applique */
|
||||||
}
|
}
|
||||||
|
|
||||||
.team-avatar-fallback {
|
.team-avatar-fallback {
|
||||||
|
|
@ -3838,8 +3833,7 @@ footer {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
border-radius: 50%;
|
/* overflow géré par clip-path du parent — pas de border-radius */
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Modal avatar photo */
|
/* Modal avatar photo */
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "victorias-vice",
|
"name": "victorias-vice",
|
||||||
"displayName": "Victoria's Vice 2",
|
"displayName": "Victoria's Vice",
|
||||||
"description": "Serveur RP whitelist Fortnite sur thème italien. L'une de nos collaborations les plus abouties.",
|
"description": "Serveur RP whitelist Fortnite sur thème italien. L'une de nos collaborations les plus abouties.",
|
||||||
"longDesc": "Victoria's Vice est un serveur RP whitelist Fortnite immersif basé sur une esthétique italienne unique. OmégaKube a développé l'intégralité de la map UEFN, le bot RP Vicy et l'identité visuelle du projet.",
|
"longDesc": "Victoria's Vice est un serveur RP whitelist Fortnite immersif basé sur une esthétique italienne unique. OmégaKube a développé l'intégralité de la map UEFN, le bot RP Vicy et l'identité visuelle du projet.",
|
||||||
"gradient": "linear-gradient(135deg, #5E2040, #8b3a62)",
|
"gradient": "linear-gradient(135deg, #5E2040, #8b3a62)",
|
||||||
"since": "2025",
|
"since": "2025",
|
||||||
"services": [
|
"services": [
|
||||||
"Map UEFN",
|
"Sessions RP Victoria's Vice 2"
|
||||||
"Bot Discord",
|
|
||||||
"Branding"
|
|
||||||
],
|
],
|
||||||
"stats": [
|
"stats": [
|
||||||
{
|
{
|
||||||
|
|
@ -35,43 +33,45 @@
|
||||||
"youtube": "https://www.youtube.com/@VictoriasVice",
|
"youtube": "https://www.youtube.com/@VictoriasVice",
|
||||||
"tiktok": "",
|
"tiktok": "",
|
||||||
"website": "#"
|
"website": "#"
|
||||||
}
|
},
|
||||||
|
"logo": "assets/images/partners/victorias-vice.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "red-dust-redemption",
|
"name": "red-dust-redemption",
|
||||||
"displayName": "Red Dust Redemption",
|
"displayName": "Red Dust Redemption",
|
||||||
"description": "Serveur RP whitelist sur le thème far-west.",
|
"description": "Plongez au cœur du Far West en 1884, dans l’Ouest des États-Unis où chaque choix compte.",
|
||||||
"longDesc": "Serveur RP whitelist sur le thème du far-west.",
|
"longDesc": "Bienvenue sur Red Dust Redemption RP WL.Plongez au cœur du Far West en 1884, dans l’Ouest des États-Unis où chaque choix compte. Une multitude de possibilités s'offrent à vous. Piano en fond, ambiance chaleureuse et rencontres garanties, c'est l’endroit idéal pour ceux qui aiment la convivialité. Et si le danger vous attire, sachez que plusieurs organisations criminelles n’attendent que vous. Si l’aventure vous tente, n’attendez plus et foncez-nous rejoindre dès maintenant.",
|
||||||
"gradient": "linear-gradient(135deg, var(--accent-primary), var(--accent-secondary))",
|
"gradient": "linear-gradient(135deg, var(--accent-primary), var(--accent-secondary))",
|
||||||
"since": "2025",
|
"since": "2025",
|
||||||
"services": [
|
"services": [
|
||||||
"Sessions RP Red Dust Redemption"
|
"Sessions RP Red Dust Redemption 2"
|
||||||
],
|
],
|
||||||
"stats": [
|
"stats": [
|
||||||
{
|
{
|
||||||
"icon": "star",
|
"icon": "users",
|
||||||
"value": "?",
|
"value": "40",
|
||||||
"label": "Stat 1"
|
"label": "Joueurs max"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"icon": "zap",
|
"icon": "home",
|
||||||
"value": "?",
|
"value": "+6",
|
||||||
"label": "Stat 2"
|
"label": "Paysages uniques"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"icon": "heart",
|
"icon": "play",
|
||||||
"value": "?",
|
"value": "+50",
|
||||||
"label": "Stat 3"
|
"label": "Sessions"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"social": {
|
"social": {
|
||||||
"discord": "#",
|
"discord": "https://discord.gg/FUamNpf7hq",
|
||||||
"twitter": "",
|
"twitter": "",
|
||||||
"instagram": "",
|
"instagram": "",
|
||||||
"youtube": "",
|
"youtube": "",
|
||||||
"tiktok": "",
|
"tiktok": "",
|
||||||
"website": "#"
|
"website": "#"
|
||||||
}
|
},
|
||||||
|
"logo": "assets/images/partners/red-dust-redemption.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "rickroll",
|
"name": "rickroll",
|
||||||
|
|
@ -82,7 +82,11 @@
|
||||||
"since": "2025",
|
"since": "2025",
|
||||||
"services": [
|
"services": [
|
||||||
"Service 1",
|
"Service 1",
|
||||||
"Service 2"
|
"Service 2",
|
||||||
|
"Map UEFN",
|
||||||
|
"Bot Discord",
|
||||||
|
"Branding"
|
||||||
|
|
||||||
],
|
],
|
||||||
"stats": [
|
"stats": [
|
||||||
{
|
{
|
||||||
|
|
@ -108,6 +112,7 @@
|
||||||
"youtube": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
|
"youtube": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
|
||||||
"tiktok": "",
|
"tiktok": "",
|
||||||
"website": "#"
|
"website": "#"
|
||||||
}
|
},
|
||||||
|
"logo": "assets/images/partners/rickroll.png"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
BIN
assets/images/imgrd-1.jpg
Normal file
|
After Width: | Height: | Size: 389 KiB |
BIN
assets/images/imgrd-2.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
assets/images/partners/red-dust-redemption.jpg
Normal file
|
After Width: | Height: | Size: 389 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 11 KiB |
BIN
assets/images/team/534003230435442690.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
|
|
@ -73,7 +73,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
// Générer les slides (tripler pour garantir boucle sans trou)
|
// Générer les slides (tripler pour garantir boucle sans trou)
|
||||||
const copies = [...partners, ...partners, ...partners];
|
const copies = [...partners, ...partners, ...partners];
|
||||||
partnersTrack.innerHTML = copies.map((p, i) => {
|
partnersTrack.innerHTML = copies.map((p, i) => {
|
||||||
const imgSrc = `assets/images/partners/${p.name}.png`;
|
const imgSrc = p.logo || `assets/images/partners/${p.name}.png`;
|
||||||
return `
|
return `
|
||||||
<div class="partner-slide" data-partner-idx="${i % partners.length}" role="button" tabindex="0" aria-label="Voir ${p.displayName}">
|
<div class="partner-slide" data-partner-idx="${i % partners.length}" role="button" tabindex="0" aria-label="Voir ${p.displayName}">
|
||||||
<div class="partner-slide-inner">
|
<div class="partner-slide-inner">
|
||||||
|
|
@ -153,16 +153,26 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
|
||||||
function openPartnerModal(p) {
|
function openPartnerModal(p) {
|
||||||
isPaused = true;
|
isPaused = true;
|
||||||
const imgSrc = `assets/images/partners/${p.name}.png`;
|
const imgSrc = p.logo || `assets/images/partners/${p.name}.png`;
|
||||||
document.getElementById('partner-modal-logo-img').src = imgSrc;
|
const logoImg = document.getElementById('partner-modal-logo-img');
|
||||||
document.getElementById('partner-modal-logo-img').alt = p.displayName;
|
const logoInner = document.getElementById('partner-modal-logo-fallback');
|
||||||
document.getElementById('partner-modal-logo-img').onerror = function() {
|
logoImg.src = imgSrc;
|
||||||
|
logoImg.alt = p.displayName;
|
||||||
|
logoImg.style.display = 'block';
|
||||||
|
logoInner.style.background = '';
|
||||||
|
logoInner.style.justifyContent = '';
|
||||||
|
// Si l'image échoue → fallback initiales dans l'octogone
|
||||||
|
logoImg.onerror = function() {
|
||||||
this.style.display = 'none';
|
this.style.display = 'none';
|
||||||
document.getElementById('partner-modal-logo-fallback').style.display = 'flex';
|
logoInner.style.background = p.gradient;
|
||||||
document.getElementById('partner-modal-logo-fallback').style.background = p.gradient;
|
logoInner.style.display = 'flex';
|
||||||
document.getElementById('partner-modal-logo-fallback').textContent = p.displayName.substring(0,2).toUpperCase();
|
logoInner.style.alignItems = 'center';
|
||||||
|
logoInner.style.justifyContent = 'center';
|
||||||
|
logoInner.style.fontSize = '2rem';
|
||||||
|
logoInner.style.fontFamily = "'OmegaLarge', sans-serif";
|
||||||
|
logoInner.style.color = 'white';
|
||||||
|
logoInner.textContent = p.displayName.substring(0,2).toUpperCase();
|
||||||
};
|
};
|
||||||
document.getElementById('partner-modal-logo-fallback').style.display = 'none';
|
|
||||||
document.getElementById('partner-modal-name').textContent = p.displayName;
|
document.getElementById('partner-modal-name').textContent = p.displayName;
|
||||||
document.getElementById('partner-modal-desc').textContent = p.longDesc;
|
document.getElementById('partner-modal-desc').textContent = p.longDesc;
|
||||||
document.getElementById('partner-modal-since').textContent = p.since;
|
document.getElementById('partner-modal-since').textContent = p.since;
|
||||||
|
|
@ -226,7 +236,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
<div class="team-avatar">
|
<div class="team-avatar">
|
||||||
<div class="team-avatar-inner" id="team-avatar-inner-${i}">
|
<div class="team-avatar-inner" id="team-avatar-inner-${i}">
|
||||||
<img src="${imgSrc}" alt="${m.name}" class="team-avatar-photo"
|
<img src="${imgSrc}" alt="${m.name}" class="team-avatar-photo"
|
||||||
onerror="this.style.display='none';document.getElementById('team-avatar-fallback-${i}').style.display='flex';">
|
onerror="if(this.src.endsWith('.png')){this.src=this.src.replace('.png','.jpg');}else{this.style.display='none';document.getElementById('team-avatar-fallback-${i}').style.display='flex';}">
|
||||||
<span class="team-avatar-fallback" id="team-avatar-fallback-${i}" style="display:none;">${m.avatar}</span>
|
<span class="team-avatar-fallback" id="team-avatar-fallback-${i}" style="display:none;">${m.avatar}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -322,7 +332,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
const imgSrc = `assets/images/team/${m.id}.png`;
|
const imgSrc = `assets/images/team/${m.id}.png`;
|
||||||
modalAvatar.innerHTML = `
|
modalAvatar.innerHTML = `
|
||||||
<img src="${imgSrc}" alt="${m.name}" class="team-modal-avatar-photo"
|
<img src="${imgSrc}" alt="${m.name}" class="team-modal-avatar-photo"
|
||||||
onerror="this.style.display='none';this.nextElementSibling.style.display='flex';">
|
onerror="if(this.src.endsWith('.png')){this.src=this.src.replace('.png','.jpg');}else{this.style.display='none';this.nextElementSibling.style.display='flex';}">
|
||||||
<span class="team-modal-avatar-fallback">${m.avatar || m.name.charAt(0)}</span>
|
<span class="team-modal-avatar-fallback">${m.avatar || m.name.charAt(0)}</span>
|
||||||
`;
|
`;
|
||||||
modalName.textContent = m.name;
|
modalName.textContent = m.name;
|
||||||
|
|
|
||||||
|
|
@ -223,9 +223,10 @@
|
||||||
<button class="team-modal-close" id="partner-modal-close">
|
<button class="team-modal-close" id="partner-modal-close">
|
||||||
<i data-feather="x"></i>
|
<i data-feather="x"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="team-modal-avatar partner-modal-avatar">
|
<div class="team-modal-avatar">
|
||||||
|
<div class="team-modal-avatar-inner" id="partner-modal-logo-fallback">
|
||||||
<img src="" alt="" id="partner-modal-logo-img" class="team-modal-avatar-photo">
|
<img src="" alt="" id="partner-modal-logo-img" class="team-modal-avatar-photo">
|
||||||
<div class="team-modal-avatar-inner team-modal-avatar-fallback" id="partner-modal-logo-fallback"></div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<h3 class="team-modal-name" id="partner-modal-name"></h3>
|
<h3 class="team-modal-name" id="partner-modal-name"></h3>
|
||||||
<p class="team-modal-role">Partenaire depuis <span id="partner-modal-since"></span></p>
|
<p class="team-modal-role">Partenaire depuis <span id="partner-modal-since"></span></p>
|
||||||
|
|
|
||||||