{"version":3,"file":"static/chunks/1756.f2dd99ce6b0e83bd.js","mappings":"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","sources":["webpack://_N_E/./api/newsletterSubscriptionMutation.ts","webpack://_N_E/./utils/getUserName.js","webpack://_N_E/./layouts/Newsletter/Newsletter.tsx","webpack://_N_E/<anon>"],"sourcesContent":["import { gql } from '@apollo/client';\n\nconst SUBSCRIBE_TO_NEWSLETTER = gql`\n mutation SubscribeToNewsletter($status: String, $email: String) {\n insert_boatnew_news_letter_subscribers(\n objects: { status: $status, email: $email }\n ) {\n affected_rows\n }\n }\n`;\nexport default SUBSCRIBE_TO_NEWSLETTER;\n","export function extractUserName(email) {\n const parts = email.split('@');\n const username = parts[0];\n const cleanUsername = username.replace(/[^a-zA-Z]/g, '');\n return cleanUsername;\n}\n","import React, { useEffect, useState } from 'react';\nimport { toast } from 'react-toastify';\nimport styled from 'styled-components';\nimport 'react-toastify/dist/ReactToastify.css';\nimport { useMutation } from '@apollo/client';\nimport SUBSCRIBE_TO_NEWSLETTER from '../../api/newsletterSubscriptionMutation';\nimport { extractUserName } from '../../utils/getUserName';\nimport { useAuthContext } from '../../utils/context/authContext';\nimport { useRouter } from 'next/router';\nimport Image from 'next/image';\nimport { SocialMediaIcons } from '../../shared-components/SocialMediaIcons';\n\nconst Newsletter = ({}) => {\n const { user }: any = useAuthContext();\n const [email, setEmail] = useState('');\n const [subscribeToNewsletter] = useMutation(SUBSCRIBE_TO_NEWSLETTER);\n useEffect(() => {\n setEmail(user !== null && user.emailVerified ? user.email : '');\n }, [user]);\n\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n const username = extractUserName(email);\n\n event.preventDefault();\n event.stopPropagation();\n try {\n const { data } = await subscribeToNewsletter({\n variables: {\n email: email,\n status: 'Subscribed'\n }\n });\n if (data.insert_boatnew_news_letter_subscribers.affected_rows > 0) {\n const emailData = {\n userName: username,\n email: email\n };\n await fetch('/api/subscription_mail', {\n method: 'POST',\n body: JSON.stringify(emailData)\n });\n toast.success('Successfully subscribed to our Newsletters!');\n setEmail('');\n } else {\n toast.error('Subscription failed. Please try again later.');\n setEmail('');\n }\n } catch (error) {\n if (\n error instanceof Error &&\n error.toString().includes('Uniqueness violation')\n ) {\n toast.error(\n 'This email is already subscribed. Please use a different email.'\n );\n } else {\n toast.error('An error occurred. Please try again later.');\n }\n }\n };\n\n const NewsletterHeading = styled.h2`\n font-weight: 600;\n text-align: center;\n color: #333333;\n `;\n const SeparatorLine = styled.div`\n height: 1px;\n background: rgba(5, 7, 60, 0.6);\n border: 1px rgba(19, 19, 19, 0.6);\n `;\n const Newsletter = styled.p`\n font-weight: 400;\n text-align: center;\n `;\n const router = useRouter();\n return (\n <>\n <section\n id=\"newsletter\"\n className={`sm:pt-16 sm:pb-32 pb-5 pt-14 flex justify-center items-center relative z-10`}\n >\n <div className=\"flex flex-col gap-3 sm:gap-4 w-[80%] md:w-[80%] lg:w-[80%] xl:w-[55%] 3xl:w-[45%]\">\n {/* <div\n className={`${\n router.route === '/things-to-do' ? 'block' : 'hidden'\n }`}\n >\n <div className=\"flex justify-center\">\n <Image\n src=\"/logo.svg\"\n width={110}\n height={110}\n alt=\"calendar\"\n className=\"xl:h-[110px] xl:w-[110px] md:h-[110px] md:w-[90px] h-[110px] w-[90px] \"\n />\n </div>\n <div className=\"text-[20px] xsm:text-[22px] sm:text-[32px] md:text-[50px] xl:text-[70px] flex justify-center text-[#222] tracking-[10px] \">\n COMING SOON\n </div>\n </div> */}\n <div className={`flex flex-col gap-3`}>\n <p className=\"text-center text-black13 text-opacity-60 text-base sm:text-lg font-normal leading-snug\">\n Newsletter\n </p>\n <NewsletterHeading className=\"text-center text-black13 text-base sm:text-2xl font-semibold sm:leading-[40px]\">\n Subscribe to our newsletter!\n </NewsletterHeading>\n <SeparatorLine className=\"mx-[1rem] sm:mx-[5rem] lg:mx-[10rem]\" />\n </div>\n <div className=\"flex justify-center\">\n <Newsletter className=\"text-sm sm:text-base md:text-lg text-black13 text-opacity-60 w-[528px]\">\n Signup to our newsletter and we will make sure to let you know\n whenever we have news!\n </Newsletter>\n </div>\n\n <form onSubmit={handleSubmit}>\n <div className=\"flex justify-center relative sm:mx-20 lg:mx-28 2xl:mx-[6rem] 4xl:mx-[14rem]\">\n <input\n className=\"rounded-full text-start pl-[5%] md:pl-[3%] text-black13 xxsm:text-[10px] mmsm:text-base msm:text-sm md:text-lg font-medium leading-[18px] p-2 w-[100%] border border-gray-400 focus:outline-none h-[50px] sm:h-[55px] lg:h-[65px]\"\n placeholder=\"Enter your email\"\n name=\"email\"\n required\n type=\"email\"\n onChange={e => setEmail(e.target.value)}\n maxLength={50}\n minLength={2}\n value={email}\n />\n <button\n className={`xxsm:text-xs mmsm:text-sm lg:text-base w-fit leading-[0.5rem] cursor-pointer absolute xxsm:top-[0.2rem] mmsm:top-[0.1rem] sm:top-[0.45rem] xxsm:right-[0.25rem] mmsm:right-0 sm:right-2 bg-primary border-[#1F2C5B] rounded-full font-medium border-2 sm:leading-none text-white hover:bg-[#2E3D7A] active:bg-[#2E3D7A] hover:shadow-lg focus:shadow-lg focus:outline-none focus:ring-0 active:shadow-lg transition duration-150 ease-in-out p-3`}\n data-mdb-ripple=\"true\"\n data-mdb-ripple-color=\"light\"\n >\n Subscribe\n </button>\n </div>\n </form>\n </div>\n </section>\n </>\n );\n};\n\nexport default Newsletter;\n"],"names":["SUBSCRIBE_TO_NEWSLETTER","gql","Newsletter_Newsletter","param","user","useAuthContext","email","setEmail","useState","subscribeToNewsletter","useMutation","useEffect","emailVerified","handleSubmit","event","username","extractUserName","parts","split","cleanUsername","replace","preventDefault","stopPropagation","data","variables","status","insert_boatnew_news_letter_subscribers","affected_rows","fetch","method","body","JSON","stringify","userName","toast","success","error","Error","toString","includes","NewsletterHeading","styled","h2","withConfig","SeparatorLine","div","Newsletter","p","useRouter","jsx_runtime","jsx","Fragment","section","id","className","jsxs","form","onSubmit","input","placeholder","name","required","type","onChange","e","target","value","maxLength","minLength","button","data-mdb-ripple","data-mdb-ripple-color"],"sourceRoot":""}