Opravy střední priority - sjednocení cest, lazy loading, minifikace

- Sjednoceny všechny relativní cesty na absolutní (od kořene /web/)
- Přidáno loading="lazy" pro všechny obrázky pod foldem
- Vytvořeny minifikované verze:
  - web/js/min/shared.min.js (125 → 3 řádky)
  - web/css/min/shared.min.css
  - web/css/min/variables.min.css
- Přidány dev dependencies: cssnano, terser
- Vytvořen minify.js skript pro budoucí minifikaci

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
kankys committed 2026-08-10 20:08:15 +02:00
1 parent c816b42bc8
commit 31833adfb7
52 files changed
+4207 -51

No files matched your search

+3
View File
@@ -0,0 +1,3 @@
npm notice run npx
npm notice run 'terser' js/shared.js
function setupMobileMenu(){const menuIcon=document.querySelector(".menu-icon");const menuList=document.querySelector("nav");const hamburgerIcon=document.querySelector(".fa-solid");if(menuIcon&&hamburgerIcon&&menuList){menuIcon.addEventListener("click",()=>{if(hamburgerIcon.classList.contains("fa-bars")){hamburgerIcon.classList.add("fa-xmark");hamburgerIcon.classList.remove("fa-bars");menuList.style.display="block"}else{hamburgerIcon.classList.add("fa-bars");hamburgerIcon.classList.remove("fa-xmark");menuList.style.display="none"}})}}function scrollToTop(){document.body.scrollTop=0;document.documentElement.scrollTop=0}function setupScrollToTopButton(buttonId="scrollToTopBtn"){const scrollToTopBtn=document.getElementById(buttonId);if(scrollToTopBtn){window.onscroll=function(){if(document.body.scrollTop>20||document.documentElement.scrollTop>20){scrollToTopBtn.style.display="block"}else{scrollToTopBtn.style.display="none"}}}}function setupThemeToggle(config={}){const defaults={toggleButtonId:"toggleButton",storageKey:"themePreference",defaultTheme:"dark"};const options={...defaults,...config};const toggleButton=document.getElementById(options.toggleButtonId);if(!toggleButton)return;const savedTheme=localStorage.getItem(options.storageKey)||options.defaultTheme;let isDarkMode=savedTheme==="dark";if(isDarkMode){document.body.classList.add("dark-theme")}else{document.body.classList.remove("dark-theme")}function toggleTheme(){isDarkMode=!isDarkMode;if(isDarkMode){document.body.classList.add("dark-theme");localStorage.setItem(options.storageKey,"dark")}else{document.body.classList.remove("dark-theme");localStorage.setItem(options.storageKey,"light")}if(options.onToggle){options.onToggle(isDarkMode)}}toggleButton.addEventListener("click",toggleTheme)}function setupImageZoom(selector=".picture",scale=2.2){const images=document.querySelectorAll(selector);images.forEach((img,index)=>{img.addEventListener("mouseenter",()=>{img.style.transform=`scale(${scale})`});img.addEventListener("mouseleave",()=>{img.style.transform="scale(1)"})})}document.addEventListener("DOMContentLoaded",function(){setupMobileMenu();setupScrollToTopButton();setupThemeToggle();setupImageZoom()});