';document.querySelectorAll('.role-edit').forEach(s=>s.onchange=async()=>{const next=s.value;if(!confirm(`Change this staff role to ${next}?`)){render();return}s.disabled=true;try{await api('/v1/admin/staff/'+encodeURIComponent(s.dataset.id)+'/role',{method:'POST',body:JSON.stringify({role:next})});await load()}catch(e){alert(e.message||'Role change failed');await load()}});document.querySelectorAll('.active-toggle').forEach(b=>b.onclick=async()=>{if(!confirm(`${b.dataset.next==='true'?'Enable':'Disable'} this staff account?`))return;try{b.disabled=true;await api('/v1/admin/staff/'+encodeURIComponent(b.dataset.id)+'/active',{method:'POST',body:JSON.stringify({is_active:b.dataset.next==='true'})});await load()}catch(e){alert(e.message||'Status change failed');b.disabled=false}})};document.getElementById('staffSearch').oninput=render;document.getElementById('staffRoleFilter').onchange=render;document.getElementById('staffAdd').onclick=()=>{document.getElementById('staffModal').classList.remove('hidden');msg('sStatus','')};document.getElementById('sCancel').onclick=()=>document.getElementById('staffModal').classList.add('hidden');document.getElementById('sCreate').onclick=async()=>{try{const email=document.getElementById('sEmail').value.trim(),password=document.getElementById('sPassword').value;if(!email||password.length<10)throw new Error('Valid email and password of at least 10 characters are required');msg('sStatus','Creating staff account…');document.getElementById('sCreate').disabled=true;await api('/v1/admin/staff',{method:'POST',body:JSON.stringify({email,password,display_name:document.getElementById('sName').value.trim(),phone:document.getElementById('sPhone').value.trim(),role:document.getElementById('sRole').value})});document.getElementById('staffModal').classList.add('hidden');document.getElementById('sPassword').value='';await load()}catch(e){msg('sStatus',e.message||'Staff creation failed',true)}finally{document.getElementById('sCreate').disabled=false}};window.DTStaff={load};load()})();