document.addEventListener('DOMContentLoaded', function () { // --- Feather Icons --- feather.replace(); // --- Theme Switcher --- const themeSwitch = document.getElementById('checkbox'); const currentTheme = localStorage.getItem('theme'); if (currentTheme) { document.documentElement.setAttribute('data-theme', currentTheme); if (currentTheme === 'dark') { themeSwitch.checked = true; } } function switchTheme(e) { if (e.target.checked) { document.documentElement.setAttribute('data-theme', 'dark'); localStorage.setItem('theme', 'dark'); } else { document.documentElement.setAttribute('data-theme', 'light'); localStorage.setItem('theme', 'light'); } } themeSwitch.addEventListener('change', switchTheme, false); // --- Generator Form: Photo Upload --- const uploadArea = document.getElementById('upload-area'); const fileInput = document.getElementById('photo-upload'); const photoPreview = document.getElementById('photo-preview'); const MAX_FILES = 5; let uploadedFiles = []; if (uploadArea) { uploadArea.addEventListener('click', () => fileInput.click()); uploadArea.addEventListener('dragover', (e) => { e.preventDefault(); uploadArea.style.borderColor = 'var(--color-primary)'; }); uploadArea.addEventListener('dragleave', (e) => { e.preventDefault(); uploadArea.style.borderColor = 'var(--border-color)'; }); uploadArea.addEventListener('drop', (e) => { e.preventDefault(); uploadArea.style.borderColor = 'var(--border-color)'; const files = e.dataTransfer.files; handleFiles(files); }); fileInput.addEventListener('change', (e) => { const files = e.target.files; handleFiles(files); }); } function handleFiles(files) { for (const file of files) { if (uploadedFiles.length < MAX_FILES && file.type.startsWith('image/')) { uploadedFiles.push(file); } } updatePreview(); } function updatePreview() { photoPreview.innerHTML = ''; uploadedFiles.forEach((file, index) => { const reader = new FileReader(); reader.onload = (e) => { const previewItem = document.createElement('div'); previewItem.classList.add('preview-item'); const img = document.createElement('img'); img.src = e.target.result; previewItem.appendChild(img); const removeBtn = document.createElement('button'); removeBtn.classList.add('remove-img-btn'); removeBtn.innerHTML = '×'; removeBtn.addEventListener('click', () => { uploadedFiles.splice(index, 1); updatePreview(); }); previewItem.appendChild(removeBtn); photoPreview.appendChild(previewItem); }; reader.readAsDataURL(file); }); } // --- Copy to Clipboard --- const copyBtn = document.getElementById('copy-btn'); if(copyBtn) { copyBtn.addEventListener('click', () => { const title = document.getElementById('result-title')?.innerText || ''; const shortDesc = document.getElementById('result-short-desc')?.innerText || ''; const desc = document.getElementById('result-desc')?.innerText || ''; const measurements = document.getElementById('result-measurements')?.innerText || ''; const hashtags = document.getElementById('result-hashtags')?.innerText || ''; const fullText = ` ${title} ${shortDesc} ${desc} Measurements: ${measurements} ${hashtags} `; navigator.clipboard.writeText(fullText.trim()).then(() => { const originalText = copyBtn.innerHTML; copyBtn.innerHTML = 'Copied!'; setTimeout(() => { copyBtn.innerHTML = originalText; }, 2000); }).catch(err => { console.error('Failed to copy: ', err); }); }); } });