import { useState } from 'react'; import { useNavigate, useLocation } from 'react-router'; import { ArrowRight, Check, ExternalLink, ShieldCheck } from 'lucide-react'; interface ConsentItem { id: string; required: boolean; text: string; linkLabel: string; linkHref: string; } const consents: ConsentItem[] = [ { id: 'pdp', required: true, text: 'Я ознакомлен с Политикой обработки персональных данных ООО «ХАН» и даю своё Согласие на обработку моих персональных данных', linkLabel: 'Политика обработки персональных данных', linkHref: '#pdp', }, { id: 'terms', required: true, text: 'Я прочитал и соглашаюсь с Пользовательским соглашением', linkLabel: 'Пользовательское соглашение', linkHref: '#terms', }, { id: 'marketing', required: false, text: 'Я даю своё согласие на получение рекламных и маркетинговых коммуникаций', linkLabel: 'Условия получения коммуникаций', linkHref: '#marketing', }, ]; function Checkbox({ checked, onChange }: { checked: boolean; onChange: () => void }) { return ( {checked && } ); } export function AuthConsent() { const navigate = useNavigate(); const location = useLocation(); const returnTo = (location.state as { returnTo?: string })?.returnTo ?? '/auth/phone'; const [checked, setChecked] = useState>({ pdp: false, terms: false, marketing: false, }); const toggle = (id: string) => setChecked(prev => ({ ...prev, [id]: !prev[id] })); const requiredDone = consents.filter(c => c.required).every(c => checked[c.id]); function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (requiredDone) navigate(returnTo); } return ( {/* Иконка + заголовок */} Перед началом работы Для использования приложения ознакомьтесь со следующими документами и предоставьте необходимые согласия {/* Форма согласий */} {consents.map(consent => ( toggle(consent.id)} > toggle(consent.id)} /> {consent.text} {consent.required && ( * )} {/* Ссылка на документ */} e.stopPropagation()} className="inline-flex items-center gap-1 text-xs text-primary underline underline-offset-2 hover:opacity-75 transition-opacity" target="_blank" rel="noreferrer" > {consent.linkLabel} ))} * — обязательные согласия {/* Кнопка */} Продолжить ); }
Для использования приложения ознакомьтесь со следующими документами и предоставьте необходимые согласия
{consent.text} {consent.required && ( * )}
* — обязательные согласия