import React, { useState } from 'react'; import { NewsletterPuffButton } from '../newsletter-puff-button/NewsletterPuffButton'; import { NewsletterPuffLink } from '../newsletter-puff-link/NewsletterPuffLink'; import { LoadingOverlay } from '../loading-overlay/LoadingOverlay'; import { InpCopy, InpPreferencesContainer, InpSignupContainer, InpSignupCTAContainer, InpSignupHeadline, InpSubscribedContainer } from './styles'; import { InpContainer } from '../styles'; type NewsletterProps = { intersectObserverRef: (ref: HTMLElement | null) => void; section?: string; headline: string; copy: string; code: string; subscribeNewsletter: any; loading?: boolean; error?: string; }; export const Newsletter = ({ intersectObserverRef, section, headline, copy, code, subscribeNewsletter, loading, error }: NewsletterProps) => { const [justSubscribed, setJustSubscribed] = useState(false); const PuffButton = (style: 'link' | 'button') => ( { if (!loading) { setJustSubscribed(true); subscribeNewsletter(`/api/subscribe-newsletter/${code}`); } }} /> ); return ( {loading && } {!error && justSubscribed && ( You’ve successfully signed up to the{' '} {`${headline}.`} )} {error && ( An error occurred. Please use the link below. )} {!justSubscribed && !error && ( {headline} {`${copy} `} {PuffButton('link')} {PuffButton('button')} )} ); };