From 0c2da2cde1c10ffccb1d1e12aced3249906cb2c6 Mon Sep 17 00:00:00 2001 From: Bateast Date: Sun, 9 Mar 2025 15:05:13 +0000 Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9verser=20les=20fichiers=20vers=20?= =?UTF-8?q?"Theme-Bento/assets/js"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Theme-Bento/assets/js/main.js | 1 + Theme-Bento/assets/js/theme-toggle.js | 64 +++++++++++++++++++++++++++ Theme-Bento/assets/js/typewriter.js | 47 ++++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 Theme-Bento/assets/js/main.js create mode 100644 Theme-Bento/assets/js/theme-toggle.js create mode 100644 Theme-Bento/assets/js/typewriter.js diff --git a/Theme-Bento/assets/js/main.js b/Theme-Bento/assets/js/main.js new file mode 100644 index 0000000..e2aac52 --- /dev/null +++ b/Theme-Bento/assets/js/main.js @@ -0,0 +1 @@ +console.log('This site was generated by Hugo.'); diff --git a/Theme-Bento/assets/js/theme-toggle.js b/Theme-Bento/assets/js/theme-toggle.js new file mode 100644 index 0000000..6a5d46f --- /dev/null +++ b/Theme-Bento/assets/js/theme-toggle.js @@ -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(); + } + }); +}); diff --git a/Theme-Bento/assets/js/typewriter.js b/Theme-Bento/assets/js/typewriter.js new file mode 100644 index 0000000..8e14903 --- /dev/null +++ b/Theme-Bento/assets/js/typewriter.js @@ -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 = `${this.txt}`; + + 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)); +});