/* ===== Подари вторую жизнь — воронка заявки на усыновление ===== */ function AdoptFlow({ a, onClose, onDone }){ const [step, setStep] = useState(0); const [f, setF] = useState({ housing:'', otherPets:'', kids:'', experience:'', name:'', phone:'', consent:false, checklist:[], contract:false, }); const set = (k,v)=> setF(p=>({...p,[k]:v})); const toggleList = (id)=> setF(p=>({...p, checklist: p.checklist.includes(id)?p.checklist.filter(x=>x!==id):[...p.checklist,id]})); const CHECKS = [ {id:'time', t:'Готов(а) уделять время каждый день', s:a.species==='dog'?'прогулки 2–3 раза в день':'игры, уход, общение'}, {id:'money', t:'Готов(а) к расходам', s:'корм, ветеринар, прививки'}, {id:'years', t:'Беру друга на всю его жизнь', s:'это 10–15 лет ответственности'}, {id:'visit', t:'Согласен(на) на знакомство и визит куратора', s:'мы убедимся, что всем будет хорошо'}, ]; const valid = [ f.housing && f.otherPets && f.kids && f.experience, f.name.trim() && f.phone.replace(/\D/g,'').length>=10 && f.consent, f.checklist.length===CHECKS.length, f.contract, ]; const TITLES = ['Расскажите о себе','Контакт и согласие','Чек-лист готовности','Договор усыновления']; const next = ()=>{ if(step<3){ if(valid[step]) setStep(step+1); } else if(valid[3]) setStep(4); }; const back = ()=> step>0 && step<4 ? setStep(step-1) : onClose(); const RadioRow = ({label, k, opts})=>(
{label}
{opts.map(o=>( ))}
); const fieldStyle = {width:'100%',padding:'13px 15px',borderRadius:'var(--radius-sm)',border:'1.5px solid var(--line-strong)',fontSize:15,fontFamily:'var(--font-body)',background:'var(--surface)'}; return (
e.stopPropagation()}> {/* header */}
Заявка · {a.name}
{step<4?`Шаг ${step+1} из 4`:'Готово'}
{step<4 &&
} {/* body */}
{step===0 &&

{TITLES[0]}

Это поможет куратору понять, подойдёт ли {a.name} вашему дому.

} {step===1 &&

{TITLES[1]}

Куратор свяжется с вами по этим контактам.

set('name',e.target.value)} placeholder="Как к вам обращаться"/>
set('phone',e.target.value)} placeholder="+7 ___ ___-__-__" inputMode="tel"/>
set('consent',!f.consent)} label={Я согласен(на) на обработку персональных данных в соответствии с 152-ФЗ} sub="Данные используются только для связи по этой заявке и не передаются третьим лицам."/>
} {step===2 &&

{TITLES[2]}

Отметьте всё — так мы убедимся, что готовы подарить дом осознанно.

{CHECKS.map(c=>toggleList(c.id)} label={c.t} sub={c.s}/>)}
} {step===3 &&

{TITLES[3]}

Краткие условия передачи животного новому дому.

1. Ответственное содержание. Новый владелец обязуется обеспечить {a.name==='Барсик'?a.name:'питомца'} кормом, ветеринарной помощью и достойными условиями жизни.

2. Без перепродажи. Животное передаётся безвозмездно и не может быть продано или передано третьим лицам без уведомления куратора.

3. Стерилизация. Если животное ещё не стерилизовано по возрасту, владелец обязуется провести процедуру в рекомендованный срок.

4. Контроль. Куратор вправе раз в полгода узнавать о судьбе питомца в течение первого года.

5. Возврат. Если содержание станет невозможным, животное возвращается куратору, а не на улицу.

set('contract',!f.contract)} label="Я прочитал(а) и принимаю условия договора" />
} {step===4 &&

Заявка отправлена!

Спасибо, {f.name||'друг'}! Заявка на {a.name} ушла на модерацию куратору. Обычно мы отвечаем в течение дня — после проверки откроем прямой контакт.

Заявка на модерации
}
{/* footer */}
{step<4 ? <> : }
); } function CheckRow({ checked, onToggle, label, sub }){ return ( ); } window.AdoptFlow = AdoptFlow;