Téléverser les fichiers vers "Theme-Bento/assets/js"

This commit is contained in:
Bateast 2025-03-09 15:05:13 +00:00
parent da3214fc2e
commit 0c2da2cde1
3 changed files with 112 additions and 0 deletions

@ -0,0 +1 @@
console.log('This site was generated by Hugo.');

@ -0,0 +1,64 @@
function toggleTheme() {
const html = document.documentElement;
const currentTheme = html.getAttribute('data-theme');
const newTheme = currentTheme === 'light' ? 'dark' : 'light';
const sunIcon = document.querySelector('.sun-icon');
const moonIcon = document.querySelector('.moon-icon');
html.setAttribute('data-theme', newTheme);
localStorage.setItem('theme', newTheme);
// Toggle icon visibility
if (newTheme === 'dark') {
sunIcon.style.display = 'none';
moonIcon.style.display = 'block';
} else {
sunIcon.style.display = 'block';
moonIcon.style.display = 'none';
}
}
// Initialize theme and icon on load
document.addEventListener('DOMContentLoaded', () => {
const savedTheme = localStorage.getItem('theme') || 'light';
const sunIcon = document.querySelector('.sun-icon');
const moonIcon = document.querySelector('.moon-icon');
document.documentElement.setAttribute('data-theme', savedTheme);
if (savedTheme === 'dark') {
sunIcon.style.display = 'none';
moonIcon.style.display = 'block';
} else {
sunIcon.style.display = 'block';
moonIcon.style.display = 'none';
}
});
document.addEventListener('DOMContentLoaded', function() {
const mobileMenuToggle = document.querySelector('.mobile-menu-toggle');
const mobileMenuClose = document.querySelector('.mobile-menu-close');
const mobileMenu = document.querySelector('.mobile-menu');
function closeMenu() {
mobileMenu.classList.remove('active');
document.body.style.overflow = '';
}
function openMenu() {
mobileMenu.classList.add('active');
document.body.style.overflow = 'hidden';
}
mobileMenuToggle.addEventListener('click', openMenu);
mobileMenuClose.addEventListener('click', closeMenu);
// Fermer le menu en cliquant en dehors
document.addEventListener('click', function(e) {
if (mobileMenu.classList.contains('active') &&
!mobileMenu.contains(e.target) &&
!mobileMenuToggle.contains(e.target)) {
closeMenu();
}
});
});

@ -0,0 +1,47 @@
class Typewriter {
constructor(element) {
this.element = element;
this.words = JSON.parse(element.getAttribute('data-text'));
this.wait = parseInt(element.getAttribute('data-wait') || 3000);
this.currentWord = 0;
this.txt = '';
this.isDeleting = false;
this.type();
}
type() {
const current = this.currentWord % this.words.length;
const fullTxt = this.words[current];
if (this.isDeleting) {
this.txt = fullTxt.substring(0, this.txt.length - 1);
} else {
this.txt = fullTxt.substring(0, this.txt.length + 1);
}
this.element.innerHTML = `<span class="typewriter-text">${this.txt}</span>`;
let typeSpeed = 100;
if (this.isDeleting) {
typeSpeed /= 2;
}
if (!this.isDeleting && this.txt === fullTxt) {
typeSpeed = this.wait;
this.isDeleting = true;
} else if (this.isDeleting && this.txt === '') {
this.isDeleting = false;
this.currentWord++;
typeSpeed = 500;
}
setTimeout(() => this.type(), typeSpeed);
}
}
// Initialisation immédiate
document.addEventListener('DOMContentLoaded', () => {
const elements = document.querySelectorAll('.typewriter');
elements.forEach(element => new Typewriter(element));
});