{"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":""}