document.addEventListener('DOMContentLoaded', () => { fetchTeamData(); setupEventListeners(); feather.replace(); }); // Fetch Data from Public API (RandomUser.me) async function fetchTeamData() { const grid = document.getElementById('team-grid'); const btn = document.getElementById('refresh-team'); // Add loading state visual if(btn) { const icon = btn.querySelector('[data-feather]'); if(icon) icon.classList.add('animate-spin'); btn.disabled = true; btn.innerHTML = 'Loading...'; } try { const response = await fetch('https://randomuser.me/api/?results=4&nat=us,gb,ca,au,de'); const data = await response.json(); renderTeam(data.results); } catch (error) { console.error('Error fetching team:', error); grid.innerHTML = `

Failed to load team data. Please try again.

`; feather.replace(); } finally { // Reset button state if(btn) { btn.disabled = false; btn.innerHTML = ` Refresh Team`; feather.replace(); } } } // Render Team Cards function renderTeam(users) { const grid = document.getElementById('team-grid'); grid.innerHTML = ''; users.forEach((user, index) => { const card = document.createElement('div'); card.className = 'bg-white rounded-2xl p-6 shadow-sm border border-slate-100 text-center hover:shadow-md transition-all duration-300 group animate-fade-in'; card.style.animationDelay = `${index * 100}ms`; card.innerHTML = `
${user.name.first}

${user.name.first} ${user.name.last}

Product Designer

${user.location.city}, ${user.location.country}

`; grid.appendChild(card); }); feather.replace(); } function setupEventListeners() { const refreshBtn = document.getElementById('refresh-team'); if (refreshBtn) { refreshBtn.addEventListener('click', fetchTeamData); } }