// --- Family Profiles Logic --- async function loadFamilyProfiles() { const container = document.getElementById('familyProfilesContainer'); try { const res = await fetch('/api/family-profiles', { headers: { 'Authorization': `Bearer ${getToken()}` } }); const data = await res.json(); if (data.success) { if (data.profiles.length === 0) { container.innerHTML = '

No family profiles added yet. Add family members to get smart size and outfit recommendations.

'; return; } container.innerHTML = data.profiles.map(p => `

${p.name} ${p.relationship}

Age: ${p.age || 'N/A'} | Top Size: ${p.top_size || 'N/A'} | Bottom Size: ${p.bottom_size || 'N/A'} | Shoe Size: ${p.shoe_size || 'N/A'}
`).join(''); } } catch (err) { container.innerHTML = '

Failed to load family profiles.

'; } } function openFamilyProfileModal() { document.getElementById('familyProfileModal').style.display = 'flex'; } function closeFamilyProfileModal() { document.getElementById('familyProfileModal').style.display = 'none'; document.getElementById('familyProfileForm').reset(); } async function saveFamilyProfile(e) { e.preventDefault(); const btn = document.getElementById('saveFamilyBtn'); btn.innerHTML = ' Saving...'; btn.disabled = true; const body = { name: document.getElementById('fpName').value, relationship: document.getElementById('fpRelationship').value, age: document.getElementById('fpAge').value, gender: document.getElementById('fpGender').value, top_size: document.getElementById('fpTop').value, bottom_size: document.getElementById('fpBottom').value, shoe_size: document.getElementById('fpShoe').value }; try { const res = await fetch('/api/family-profiles', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${getToken()}` }, body: JSON.stringify(body) }); const data = await res.json(); if (data.success) { showToast('Family Profile saved!'); closeFamilyProfileModal(); loadFamilyProfiles(); } else { showToast(data.message, 'error'); } } catch (err) { showToast('Error saving profile', 'error'); } finally { btn.innerHTML = 'Save Profile'; btn.disabled = false; } } async function deleteFamilyProfile(id) { if(!confirm('Delete this family member profile?')) return; try { const res = await fetch('/api/family-profiles/' + id, { method: 'DELETE', headers: { 'Authorization': `Bearer ${getToken()}` } }); const data = await res.json(); if (data.success) { showToast('Profile deleted'); loadFamilyProfiles(); } } catch (err) { showToast('Error deleting profile', 'error'); } }