import React from 'react'; import { YStack } from '@tamagui/stacks'; import { SizableText as Text } from '@tamagui/text'; import { MobileSheet } from './Sheet'; import { CTAButton } from './Primitives'; type Translator = (key: string, defaultValue?: string) => string; type LegalConsentSheetProps = { open: boolean; onClose: () => void; onConfirm: (consents: { acceptedTerms: boolean; acceptedWaiver: boolean }) => Promise | void; busy?: boolean; requireWaiver?: boolean; t: Translator; }; export function LegalConsentSheet({ open, onClose, onConfirm, busy = false, requireWaiver = true, t }: LegalConsentSheetProps) { const [acceptedTerms, setAcceptedTerms] = React.useState(false); const [acceptedWaiver, setAcceptedWaiver] = React.useState(false); const [error, setError] = React.useState(null); React.useEffect(() => { if (open) { setAcceptedTerms(false); setAcceptedWaiver(false); setError(null); } }, [open]); async function handleConfirm() { if (!acceptedTerms) { setError(t('events.legalConsent.errorTerms', 'Please confirm the terms.')); return; } if (requireWaiver && !acceptedWaiver) { setError(t('events.legalConsent.errorWaiver', 'Please confirm the waiver.')); return; } setError(null); await onConfirm({ acceptedTerms, acceptedWaiver: requireWaiver ? acceptedWaiver : true }); } return ( {error ? ( {error} ) : null} } > {t('events.legalConsent.description', 'Please confirm the legal notes before buying an add-on.')} {requireWaiver ? ( ) : null} ); }