{"version":3,"file":"static/chunks/6414-9633c3f33d8595bd.js","mappings":"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PC,MAAO,QACPC,QAAS,SACV,qEChDO,IAAMsrB,EAAQ,CACjB8M,OAAQ,CACJ/qB,QAAS,SACTwe,MAAO,CACH,qBACA,uBACA,qBACA,gBAGA,eAGA,eACA,cACH,CACDN,WAAY,CACRC,aAAc,eACd6M,aAAc,iBACd1M,WAAY,YAChB,CACJ,EACA2M,OAAQ,CACJjrB,QAAS,SACTwe,MAAO,CACH,qBACA,aACA,sBACA,gBACA,eAEA,oBACA,2BACA,yBACA,qBACA,6BACA,uBACA,8BACA,6BAEA,eACA,eACA,cACH,CACDN,WAAY,CACRC,aAAc,eACd6M,aAAc,iBACd1M,WAAY,YAChB,CACJ,EACA4M,OAAQ,CACJlrB,QAAS,SACTwe,MAAO,CACH,qBACA,aACA,eACA,sBACA,gBACA,eAEA,oBACA,2BACA,yBACA,qBACA,6BACA,uBACA,8BACA,6BAEA,eACA,cACH,CACDN,WAAY,CACRC,aAAc,eACd6M,aAAc,iBACd1M,WAAY,YAChB,CACJ,EACA6M,OAAQ,CACJnrB,QAAS,SACTwe,MAAO,CACH,qBACA,aACA,eACA,sBACA,gBACA,eAEA,oBACA,2BACA,yBACA,qBACA,6BACA,uBACA,8BACA,6BAEA,eACA,cACH,CACDN,WAAY,CACRC,aAAc,qBACd6M,aAAc,iBACd1M,WAAY,kBAChB,CACJ,EACA8M,OAAQ,CACJprB,QAAS,SACTwe,MAAO,CACH,qBACA,uBACA,aACA,qBACA,sBACA,mBACA,aACA,uBACH,EAEL6M,OAAQ,CACJrrB,QAAS,SACTwe,MAAO,CACH,qBACA,eACA,mBACA,yBACA,+BACA,0BACA,0BACA,qBACA,2BACA,8BACA,0BACA,eACA,eACA,cACH,CAGT,qEC3IO,IAAMjH,EAAQ,CACjB+T,mBAAoB,CAChB7uB,KAAM,WACNtK,KAAM,mCACNk3B,iBAAkB,GAClB7Q,UAAW,GACXd,QAAS,CACL,CACI/qB,GAAI,SACJwF,KAAM,SACN23B,MAAO,IACPyB,aAAc,KACdjiB,OAAQ,CAAC,KAAM,eAAM,eAAM,IAAK,eAAK,EAEzC,CACI3c,GAAI,aACJwF,KAA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","sources":["webpack://_N_E/./src/stable/ui-only-components-a/drawer-buttons/ lazy ^\\.\\/.*$ namespace object","webpack://_N_E/./src/stable/ui-only-components-a/quiz-sliders/ lazy ^\\.\\/.*$ namespace object","webpack://_N_E/./src/stable/ui-only-components/drawer-buttons/ lazy ^\\.\\/.*$ namespace object","webpack://_N_E/./src/stable/ui-only-components/quiz-sliders/ lazy ^\\.\\/.*$ namespace object","webpack://_N_E/./src/components/atoms/TopPlaceImage.jsx","webpack://_N_E/./src/components/molecules/GlutenFreePlaceRecommendations.jsx","webpack://_N_E/./src/components/atoms/TopPlaceDescription.jsx","webpack://_N_E/./src/components/molecules/TopPlaceTags.jsx","webpack://_N_E/./src/components/atoms/CircleXIcon.jsx","webpack://_N_E/./src/components/atoms/CircleCheckIcon.jsx","webpack://_N_E/./src/components/atoms/CircleQuestionMark.jsx","webpack://_N_E/./src/components/molecules/GlutenFreeAppliancesList.jsx","webpack://_N_E/./src/components/atoms/QuestionMarkIcon.jsx","webpack://_N_E/./src/components/atoms/CheckIcon.jsx","webpack://_N_E/./src/components/atoms/XIcon.jsx","webpack://_N_E/./src/components/atoms/GlutenFreeIdentityItem.jsx","webpack://_N_E/./src/components/atoms/GlutenFreeInquireText.jsx","webpack://_N_E/./src/components/molecules/GlutenFreeIdentity.jsx","webpack://_N_E/./src/components/atoms/TopPlaceInformation.jsx","webpack://_N_E/./src/components/atoms/CaretSvg.jsx","webpack://_N_E/./src/components/atoms/StoreLinkButton.jsx","webpack://_N_E/./src/components/atoms/XSvg.jsx","webpack://_N_E/./src/components/atoms/AppStoreLogo.jsx","webpack://_N_E/./src/components/atoms/PlayStoreLogo.jsx","webpack://_N_E/./src/components/organism/QrCodeModal.jsx","webpack://_N_E/./src/components/atoms/Box.jsx","webpack://_N_E/./src/components/molecules/GlutenFreeMenu.jsx","webpack://_N_E/./src/components/molecules/GlutenFreeUserReview.jsx","webpack://_N_E/./src/components/atoms/TopPlaceFrame.jsx","webpack://_N_E/./src/components/molecules/GlutenFreeAlsoFeaturedIn.jsx","webpack://_N_E/./src/components/organism/GlutenFreeTopPlace.jsx","webpack://_N_E/./src/components/atoms/TopPlaceImageSkeleton.jsx","webpack://_N_E/./src/components/atoms/TopPlaceInformationSkeleton.jsx","webpack://_N_E/./src/utils/dynamic-icons.js","webpack://_N_E/./src/components/organism/GlutenFreeLeafletMap.jsx","webpack://_N_E/./src/components/atoms/CircleCloseModalButton.jsx","webpack://_N_E/./src/components/organism/GlutenFreeModal.jsx","webpack://_N_E/./src/hooks/useTrackPlaceListScroll.js","webpack://_N_E/./src/components/organism/GlutenFreeFooter.jsx","webpack://_N_E/./src/components/organism/OriginalFixedGlutenFreeFooter.jsx","webpack://_N_E/./src/ui-only-components/Particle.jsx","webpack://_N_E/./src/ui-only-components/Confetti.jsx","webpack://_N_E/./src/ui-only-components/quiz-sliders/QuizSlider.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/Navigation.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/Statement230kPlaces.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/TagsStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/PreCheckout.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/EmailScreen1.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/EmailScreen2.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/SafetyRankingStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/CommunityValidationStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/GlobalCoverageStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/AggregatedInfoStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/DietitianStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/RealtimeUpdatesStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/CrossContaminationStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/TravelFeaturesStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/AtlyIntro1.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/SafetyRankingExplanation.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/ReviewAggregationStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/InformationUpdateStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/SafetyCommitmentStatement.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/Statement230kPlaces2.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/Loading1.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/PerfectFit1.jsx","webpack://_N_E/./src/stable/ui-only-components/FullScreenQuizFlow.jsx","webpack://_N_E/./src/components/molecules/SocialProofTooltip.jsx","webpack://_N_E/./src/stable/ui-only-components/FooterDrawerUI.jsx","webpack://_N_E/./src/stable/ui-only-components/GlutenFreeFooterDrawer.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/Navigation.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/Statement230kPlaces.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/TagsStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/PreCheckout.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/EmailScreen1.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/SafetyRankingStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/CommunityValidationStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/GlobalCoverageStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/AggregatedInfoStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/DietitianStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/RealtimeUpdatesStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/CrossContaminationStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/TravelFeaturesStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/AtlyIntro1.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/SafetyRankingExplanation.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/ReviewAggregationStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/InformationUpdateStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/SafetyCommitmentStatement.jsx","webpack://_N_E/./src/stable/ui-only-components-a/FullScreenQuizFlow.jsx","webpack://_N_E/./src/stable/ui-only-components-a/FooterDrawerUI.jsx","webpack://_N_E/./src/stable/ui-only-components-a/GlutenFreeFooterDrawer.jsx","webpack://_N_E/./src/stable/ui-only-components/TestimonialQuizFlow.jsx","webpack://_N_E/./src/client-components/DrawerComponent.jsx","webpack://_N_E/./src/client-components/StableClientComponentsWrapper.jsx","webpack://_N_E/./src/stable/ui-only-components-a/Particle.jsx","webpack://_N_E/./src/stable/ui-only-components-a/Confetti.jsx","webpack://_N_E/./src/stable/ui-only-components-a/quiz-flow/pages/Question.jsx","webpack://_N_E/./src/stable/ui-only-components/quiz-flow/pages/Question.jsx","webpack://_N_E/./src/constants/gluten-free.js","webpack://_N_E/./src/stable/ui-only-components-a/flow_template.js","webpack://_N_E/./src/stable/ui-only-components-a/page_list.js","webpack://_N_E/./src/stable/ui-only-components-a/response_counts.js","webpack://_N_E/./src/stable/ui-only-components/flow_template.js","webpack://_N_E/./src/stable/ui-only-components/page_list.js","webpack://_N_E/./src/utils/api.js"],"sourcesContent":["var map = {\n\t\"./DrawerButton\": [\n\t\t7850,\n\t\t7850\n\t],\n\t\"./DrawerButton.jsx\": [\n\t\t7850,\n\t\t7850\n\t],\n\t\"./SimpleDrawerButton\": [\n\t\t2332,\n\t\t5930,\n\t\t2332\n\t],\n\t\"./SimpleDrawerButton.jsx\": [\n\t\t2332,\n\t\t5930,\n\t\t2332\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 2250;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./QuizSlider\": [\n\t\t9722,\n\t\t9722\n\t],\n\t\"./QuizSlider.jsx\": [\n\t\t9722,\n\t\t9722\n\t],\n\t\"./QuizSliderCosmic\": [\n\t\t6048,\n\t\t6048\n\t],\n\t\"./QuizSliderCosmic.jsx\": [\n\t\t6048,\n\t\t6048\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 6125;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./DrawerButton\": [\n\t\t8354,\n\t\t8354\n\t],\n\t\"./DrawerButton.jsx\": [\n\t\t8354,\n\t\t8354\n\t],\n\t\"./DrawerButtonTestimonial\": [\n\t\t6339,\n\t\t6339\n\t],\n\t\"./DrawerButtonTestimonial.jsx\": [\n\t\t6339,\n\t\t6339\n\t],\n\t\"./DrawerButtonUriel\": [\n\t\t5292,\n\t\t5292\n\t],\n\t\"./DrawerButtonUriel.jsx\": [\n\t\t5292,\n\t\t5292\n\t],\n\t\"./DrawerButtonUriel2\": [\n\t\t9352,\n\t\t9352\n\t],\n\t\"./DrawerButtonUriel2.jsx\": [\n\t\t9352,\n\t\t9352\n\t],\n\t\"./SimpleDrawerButton\": [\n\t\t7270,\n\t\t4079,\n\t\t6951\n\t],\n\t\"./SimpleDrawerButton.jsx\": [\n\t\t7270,\n\t\t4079,\n\t\t6951\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 4889;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./QuizSlider\": [\n\t\t6737,\n\t\t6737\n\t],\n\t\"./QuizSlider.jsx\": [\n\t\t6737,\n\t\t6737\n\t],\n\t\"./QuizSliderAtly\": [\n\t\t5619,\n\t\t5619\n\t],\n\t\"./QuizSliderAtly.jsx\": [\n\t\t5619,\n\t\t5619\n\t],\n\t\"./QuizSliderAtly2\": [\n\t\t9139,\n\t\t9139\n\t],\n\t\"./QuizSliderAtly2.jsx\": [\n\t\t9139,\n\t\t9139\n\t],\n\t\"./QuizSliderAtlyNoClose\": [\n\t\t214,\n\t\t214\n\t],\n\t\"./QuizSliderAtlyNoClose.jsx\": [\n\t\t214,\n\t\t214\n\t],\n\t\"./QuizSliderCosmic\": [\n\t\t4528,\n\t\t4528\n\t],\n\t\"./QuizSliderCosmic.jsx\": [\n\t\t4528,\n\t\t4528\n\t],\n\t\"./TestimonialStartPage\": [\n\t\t6112,\n\t\t6112\n\t],\n\t\"./TestimonialStartPage.jsx\": [\n\t\t6112,\n\t\t6112\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 1754;\nmodule.exports = webpackAsyncContext;","import classNames from \"classnames\";\nimport Image from \"next/image\";\nimport { generateImageUrl } from \"@/utils\";\nimport { Inter } from \"next/font/google\";\nimport { trackItemTapped } from \"@/utils/mixpanel\";\nimport { setSearchParams } from \"@/utils/url\";\nimport { MixpanelValues } from \"@/constants/mixpanel\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nexport const TopPlaceImage = ({ priority, title, positionNumber, id }) => {\n const src = generateImageUrl({\n imageId: id,\n width: 622,\n height: 420,\n reason: \"top-ten-gf-map\",\n });\n\n return (\n \n \n \n {positionNumber < 10 ? `0${positionNumber}` : positionNumber}\n \n \n {\n trackItemTapped(MixpanelValues.ItemTapped.IMAGE);\n }}\n className=\"relative w-full h-56 md:h-[420px] overflow-hidden\">\n setIsImageLoaded(true)}\n />\n {/*{isBlurred ?
: null}*/}\n
\n \n );\n};\n","import classNames from \"classnames\";\nimport Image from \"next/image\";\nimport { Inter } from \"next/font/google\";\nimport { trackItemTapped } from \"@/utils/mixpanel\";\nimport { MixpanelValues } from \"@/constants/mixpanel\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nexport const GlutenFreePlaceRecommendations = ({ count }) => {\n const avatars = new Array(count > 3 ? 3 : count).fill(null);\n \n return (\n
\n trackItemTapped(MixpanelValues.ItemTapped.GLUTEN_FREE_REC_COUNT)}\n className=\"flex items-center gap-2\">\n 0 && `${(avatars.length - 1) * 12 + 20}px`,\n }}\n className={classNames({\n \"w-[68px] h-5\": true,\n \"w-auto flex justify-center items-center relative\": count > 0,\n })}>\n {avatars.map((_, index) => (\n \n \n
\n ))}\n \n \n {count} recommendation{`${count > 1 ? \"s\" : \"\"}`} for gluten-free\n \n \n trackItemTapped(MixpanelValues.ItemTapped.LEARN_MORE)}\n className=\"h-10 px-3 py-2 bg-[#002551] rounded-xl border border-[#002551] justify-center items-center gap-2 inline-flex\">\n
\n \n Learn more\n
\n \n \n \n );\n};\n","import { Inter } from \"next/font/google\";\nimport classNames from \"classnames\";\nimport { trackItemTapped } from \"@/utils/mixpanel\";\nimport { MixpanelValues } from \"@/constants/mixpanel\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nexport const TopPlaceDescription = ({ description }) => {\n if (!description) {\n return null;\n }\n \n return (\n trackItemTapped(MixpanelValues.ItemTapped.BLURB)}\n className={classNames(\n inter.className,\n \"text-sky-950 text-[15px] font-semibold leading-snug mb-2\"\n )}>\n {description}\n

\n );\n};\n","\"use client\";\n\nimport classNames from \"classnames\";\nimport { Inter } from \"next/font/google\";\nimport { trackItemTapped } from \"@/utils/mixpanel\";\nimport { MixpanelValues } from \"@/constants/mixpanel\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nexport const TopPlaceTags = ({ tags = [] }) => {\n if (!tags.length) {\n return null;\n }\n \n return (\n trackItemTapped(MixpanelValues.ItemTapped.TAGS)}\n className=\"flex md:flex-wrap gap-1 overflow-x-auto md:overflow-x-hidden\">\n {tags.map((tag, index) => {\n return (\n \n {tag}\n \n );\n })}\n \n );\n};\n","export const CircleXIcon = ({ size = 16, weight = \"fill\" }) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n","export const CircleCheckIcon = ({ size = 16 }) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n","export const CircleQuestionMark = () => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import {\n\tAppliancesNames,\n\tGlutenFreeIdentity as GlutenFreeIdentityType,\n} from \"../../constants/gluten-free\";\nimport classNames from \"classnames\";\nimport { CircleXIcon } from \"../atoms/CircleXIcon\";\nimport { CircleCheckIcon } from \"../atoms/CircleCheckIcon\";\nimport { CircleQuestionMark } from \"../atoms/CircleQuestionMark\";\nimport { Inter } from \"next/font/google\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nconst Icons = {\n\t[GlutenFreeIdentityType.ENABLED]: CircleCheckIcon,\n\t[GlutenFreeIdentityType.NO]: CircleXIcon,\n\t[GlutenFreeIdentityType.UNKNOWN]: CircleQuestionMark,\n\tdefault: CircleQuestionMark,\n};\n\nexport const GlutenFreeAppliancesList = ({ items = [] }) => {\n\tlet elements = [];\n\n\tif (items.length > 0) {\n\t\telements = [\n\t\t\t{\n\t\t\t\ttext: AppliancesNames.OVEN,\n\t\t\t\tstate: items.find((element) => element.text === AppliancesNames.OVEN)\n\t\t\t\t\t? GlutenFreeIdentityType.ENABLED\n\t\t\t\t\t: GlutenFreeIdentityType.NO,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: AppliancesNames.FRYER,\n\t\t\t\tstate: items.find((element) => element.text === AppliancesNames.FRYER)\n\t\t\t\t\t? GlutenFreeIdentityType.ENABLED\n\t\t\t\t\t: GlutenFreeIdentityType.NO,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: AppliancesNames.STOVE,\n\t\t\t\tstate: items.find((element) => element.text === AppliancesNames.STOVE)\n\t\t\t\t\t? GlutenFreeIdentityType.ENABLED\n\t\t\t\t\t: GlutenFreeIdentityType.NO,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: AppliancesNames.TOASTER,\n\t\t\t\tstate: items.find((element) => element.text === AppliancesNames.TOASTER)\n\t\t\t\t\t? GlutenFreeIdentityType.ENABLED\n\t\t\t\t\t: GlutenFreeIdentityType.NO,\n\t\t\t},\n\t\t];\n\t}\n\n\treturn (\n\t\t\n\t\t\t{elements.map((item, index) => {\n\t\t\t\tconst Icon = Icons[item.state] || Icons.default;\n\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{item.text}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t})}\n\t\t\n\t);\n};\n","export const QuestionMarkIcon = () => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n","export const CheckIcon = ({ size = 16, weight = \"fill\" }) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n","export const XIcon = ({ size = 24, className = \"\" }) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default XIcon;\n","import classNames from \"classnames\";\nimport { GlutenFreeIdentity as GlutenFreeIdentityType } from \"@/constants/gluten-free\";\nimport { GlutenFreeAppliancesList } from \"@/components/molecules/GlutenFreeAppliancesList\";\nimport { CircleCheckIcon } from \"./CircleCheckIcon\";\nimport { CircleXIcon } from \"./CircleXIcon\";\nimport { QuestionMarkIcon } from \"./QuestionMarkIcon\";\nimport { CircleQuestionMark } from \"./CircleQuestionMark\";\nimport { CheckIcon } from \"./CheckIcon\";\nimport { XIcon } from \"./XIcon\";\nimport { Inter } from \"next/font/google\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nconst Icon = {\n\tmobile: {\n\t\t[GlutenFreeIdentityType.UNKNOWN]: QuestionMarkIcon,\n\t\t[GlutenFreeIdentityType.NO]: XIcon,\n\t\t[GlutenFreeIdentityType.ENABLED]: CheckIcon,\n\t\tdefault: QuestionMarkIcon,\n\t},\n\tdesktop: {\n\t\t[GlutenFreeIdentityType.UNKNOWN]: CircleQuestionMark,\n\t\t[GlutenFreeIdentityType.NO]: CircleXIcon,\n\t\t[GlutenFreeIdentityType.ENABLED]: CircleCheckIcon,\n\t\tdefault: CircleQuestionMark,\n\t},\n};\n\nconst getIcon = (state, isMobile) => {\n\tconst device = isMobile ? \"mobile\" : \"desktop\";\n\treturn Icon[device][state] || Icon[device].default;\n};\n\nexport const GlutenFreeIdentityItem = ({ item, isMobile }) => {\n\tconst Icon = getIcon(item.state, isMobile);\n\tconst isDisabled =\n\t\titem.state === GlutenFreeIdentityType.UNKNOWN ||\n\t\titem.state === GlutenFreeIdentityType.NO;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{item.text}\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\n\t);\n};\n","export const InquireText = ({ text }) => {\n if (text) {\n return (\n

\n {text}\n Always inquire directly about health and safety.\n

\n );\n }\n \n return 'Always inquire directly about health and safety.';\n};","\"use client\";\n\nimport Image from \"next/image\";\nimport classNames from \"classnames\";\nimport { GFIIconMap } from \"@/constants/gluten-free\";\nimport { GlutenFreeIdentityItem } from \"@/components/atoms/GlutenFreeIdentityItem\";\nimport { InquireText } from \"@/components/atoms/GlutenFreeInquireText\";\n\nimport { Inter } from \"next/font/google\";\nimport { trackItemTapped } from \"@/utils/mixpanel\";\nimport { MixpanelValues } from \"@/constants/mixpanel\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nconst ICON_SIZE = 28;\n\nexport const GlutenFreeIdentity = ({ data, isMobile, lean }) => {\n if (!data) {\n return null;\n }\n \n if (lean) {\n const title =\n data.header.title === \"In vetting process\"\n ? \"Gluten-free options\"\n : data.header.title;\n return (\n {\n trackItemTapped(MixpanelValues.ItemTapped.SAFETY_RATING);\n const searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"slider\", \"true\");\n window.history.pushState({}, \"\", `?${searchParams.toString()}`);\n }}\n className={classNames({\n \"flex items-center gap-1\": true,\n \"py-3 md:py-2\": true,\n \"box-border md:rounded-2xl\": true,\n })}>\n \n \n {title}\n

\n \n );\n }\n \n return (\n \n \n
\n \n
\n \n {data.header.title}\n {data.header.subtitle}\n

\n \n {data.elements.items.length > 0 ? (\n \n {data.elements.items.map((item, index) => {\n return (\n \n );\n })}\n \n ) : null}\n
\n \n
\n \n );\n};\n","import classNames from \"classnames\";\nimport { Inter } from \"next/font/google\";\nimport { GlutenFreePlaceRecommendations } from \"@/components/molecules/GlutenFreePlaceRecommendations\";\nimport { TopPlaceDescription } from \"@/components/atoms/TopPlaceDescription\";\nimport { TopPlaceTags } from \"@/components/molecules/TopPlaceTags\";\nimport { GlutenFreeIdentity } from \"@/components/molecules/GlutenFreeIdentity\";\nimport { trackItemTapped } from \"@/utils/mixpanel\";\nimport { MixpanelValues } from \"@/constants/mixpanel\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nexport const TopPlaceInformation = ({\n title,\n address,\n recommendationsCount,\n tags,\n description,\n isMobile,\n gfIdentityData,\n}) => {\n return (\n
\n trackItemTapped(MixpanelValues.ItemTapped.NAME)}\n className={classNames(inter.className, {\n \"text-2xl md:text-4x\": true,\n \"w-full font-bold leading-7 md:leading-10\": true,\n // 'blur ml-3 select-none': isBlurred,\n })}>\n {title}\n \n \n trackItemTapped(MixpanelValues.ItemTapped.ADDRESS)}\n className={classNames(inter.className, {\n \"text-[11px] md:text-lg font-normal md:font-medium leading-relaxed mb-2\": true,\n // 'blur ml-3 select-none': isBlurred,\n })}>\n {address}\n

\n
\n \n \n \n
\n
\n );\n};\n","export const CaretSvg = ({ size = 9, color = \"#002551\" }) => {\n\tconst ratio = 9 / 14;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n","\"use client\";\n\nimport { pushGtmEvent } from \"@/utils/google-tag-manager\";\nimport { GtmEvents, GtmProperties } from \"@/constants/google-tag-manager\";\n\nexport const StoreLinkButton = ({\n\tchildren,\n\tlink,\n\tisMobile,\n\tpageTitle,\n\tname,\n}) => {\n\treturn (\n\t\t {\n\t\t\t\tpushGtmEvent(GtmEvents.CLICK_INSTALL, {\n\t\t\t\t\t[GtmProperties.GfeTopTen.PAGE_NAME]: pageTitle,\n\t\t\t\t\t[GtmProperties.GfeTopTen.POSITION]: \"placeNumber\",\n\t\t\t\t\t[GtmProperties.GfeTopTen.ELEMENT_TEXT]: name,\n\t\t\t\t\t[GtmProperties.GfeTopTen.DEVICE]: isMobile ? \"mobile\" : \"desktop\",\n\t\t\t\t});\n\t\t\t\twindow.open(link, \"_blank\");\n\t\t\t}}>\n\t\t\t{children}\n\t\t\n\t);\n};\n","export const XSvg = ({ ...rest }) => (\n\t\n\t\t\n\t\t\n\t\n);\n\nexport default XSvg;\n","const AppStoreLogo = ({\n\tclassName = \"\",\n\tcolor = \"#212B37\",\n\twidth = 14,\n\theight = 16,\n\tsize = 14,\n}) => (\n\t\n\t\t\n\t\n);\nexport default AppStoreLogo;\n","const PlayStoreLogo = ({ color = \"#212B37\", size = 17 }) => (\n\t\n\t\t\n\t\n);\nexport default PlayStoreLogo;\n","\"use client\";\n\nimport { useEffect, useMemo } from \"react\";\nimport { QRCodeSVG } from \"qrcode.react\";\nimport { StoreLinkButton } from \"../atoms/StoreLinkButton\";\nimport { XSvg } from \"../atoms/XSvg\";\nimport AppStoreLogo from \"../atoms/AppStoreLogo\";\nimport PlayStoreLogo from \"../atoms/PlayStoreLogo\";\nimport classNames from \"classnames\";\nimport { Inter } from \"next/font/google\";\nimport { trackPopupShowed, trackPopupClosed } from \"@/utils/mixpanel\";\nconst inter = Inter({ subsets: [\"latin\"] });\n\nexport const QrCodeModal = ({\n\tonClose = () => {},\n\tareaData = {},\n\tlink,\n\tpageTitle,\n\tisMobile,\n}) => {\n\tconst scanDetectableQrUrl = useMemo(() => {\n\t\t// const url = generateQrScannedDetectionUrl(link, areaData);\n\t\tconst url = new URL(link);\n\t\tconst params = new URLSearchParams(url.search);\n\n\t\tObject.entries(areaData).forEach(([key, value]) => {\n\t\t\tif (value) {\n\t\t\t\tparams.append(key, value.toString());\n\t\t\t}\n\t\t});\n\n\t\turl.search = params.toString();\n\t\treturn url.toString();\n\t}, [link, areaData]);\n\n\tuseEffect(() => {\n\t\ttrackPopupShowed();\n\t}, []);\n\n\treturn (\n\t\t
\n\t\t\t {\n\t\t\t\t\ttrackPopupClosed();\n\t\t\t\t\tonClose();\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t

Download Gluten Free Eats by Atly

\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t);\n};\n","import classNames from \"classnames\";\n\nexport const Box = ({ children, ...rest }) => {\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t);\n};\n","\"use client\";\n\nimport Image from \"next/image\";\nimport classNames from \"classnames\";\nimport { CaretSvg } from \"../atoms/CaretSvg\";\nimport { useState } from \"react\";\nimport { QrCodeModal } from \"../organism/QrCodeModal\";\nimport { Box } from \"../atoms/Box\";\nimport { Inter } from \"next/font/google\";\nimport { trackItemTapped } from \"@/utils/mixpanel\";\nimport { MixpanelValues } from \"@/constants/mixpanel\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nexport const GlutenFreeMenu = ({\n pageTitle,\n position,\n menuDataCopy = {},\n isMobile,\n link,\n}) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const text = menuDataCopy.sub_title || \"Gluten-free options are not marked\";\n \n return (\n {\n trackItemTapped(MixpanelValues.ItemTapped.VIEW_MENU);\n }}>\n \n
\n
\n \n
\n \n \n {menuDataCopy.title || \"View menu\"}\n \n \n {menuDataCopy.sub_title || \"GF options marked\"}\n
\n \n \n
\n {isMobile && menuDataCopy.title ? null : (\n \n {menuDataCopy.title}\n \n )}\n \n
\n \n {isModalOpen ? (\n setIsModalOpen(false)}\n />\n ) : null}\n \n );\n};\n","import classNames from \"classnames\";\nimport { generateImageUrl } from \"@/utils\";\nimport Image from \"next/image\";\nimport Link from \"next/link\";\nimport { CaretSvg } from \"../atoms/CaretSvg\";\nimport { Box } from \"../atoms/Box\";\nimport { trackItemTapped } from \"@/utils/mixpanel\";\n\nconst AVATAR_SIZE = 28;\n\nimport { Inter } from \"next/font/google\";\nimport { MixpanelValues } from \"@/constants/mixpanel\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nexport const GlutenFreeUserReview = ({\n userName,\n userAvatarId,\n reviewText,\n linkToReview,\n position,\n pageTitle,\n isMobile,\n}) => {\n if (!reviewText) {\n return null;\n }\n \n return (\n \n
\n \n
\n
\n \n
\n \n {userName}\n \n
\n \n \n \n \n Google review\n \n
\n \n \n \n trackItemTapped(MixpanelValues.ItemTapped.REVIEW_TEXT)}\n className={classNames(\n inter.className,\n \"text-[15px] md:text-lg font-medium leading-snug\"\n )}>\n {reviewText}\n

\n \n
\n );\n};\n","import classNames from \"classnames\";\n\nexport const TopPlaceFrame = ({ children, placeId }) => {\n return (\n
\n {children}\n
\n );\n};","\"use client\";\nimport Link from \"next/link\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { pushGtmEvent } from \"@/utils/google-tag-manager\";\nimport { GtmEvents, GtmProperties } from \"@/constants/google-tag-manager\";\nimport { Box } from \"../atoms/Box\";\nimport { Inter } from \"next/font/google\";\nimport classNames from \"classnames\";\nimport { trackAlsoFeaturedInClick } from \"@/utils/mixpanel\";\nimport { trackItemTapped } from \"@/utils/mixpanel\";\nimport { MixpanelValues } from \"@/constants/mixpanel\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\nconst DEV_URL = \"https://devweb.atly.com\";\nconst PROD_URL = \"https://web.atly.com\";\n\nconst OriginLink = ({ children, id, isMobile, position, pageTitle }) => {\n const [link, setLink] = useState(\"\");\n \n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (\n window.location.origin.includes(\"web.atly.com\") ||\n window.location.origin.includes(\"www.atly.com\")\n ) {\n setLink(`${window.location.origin.replace(\"www\", \"web\")}/t/${id}`);\n } else if (window.location.origin.includes(\"newtoptenbest.atly.com\")) {\n setLink(`${PROD_URL}/t/${id}`);\n } else {\n setLink(`${DEV_URL}/t/${id}`);\n }\n }\n }, [id]);\n \n return (\n trackItemTapped(MixpanelValues.ItemTapped.ALSO_FEATURED_IN)}\n className={classNames(\n inter.className,\n \"flex gap-3 text-blue-600 md:text-lg font-medium leading-relaxed underline\"\n )}>\n {\n trackAlsoFeaturedInClick();\n pushGtmEvent(GtmEvents.CLICK_ALSO_FEATURED, {\n [GtmProperties.GfeTopTen.PAGE_NAME]: pageTitle,\n [GtmProperties.GfeTopTen.POSITION]: position,\n [GtmProperties.GfeTopTen.ELEMENT_TEXT]: children.toString(),\n [GtmProperties.GfeTopTen.DEVICE]: isMobile ? \"mobile\" : \"desktop\",\n });\n }}>\n {children}\n \n \n );\n};\n\nconst getPossessiveForm = (name) => {\n if (!name) return \"\";\n const lastLetter = name[name.length - 1];\n return lastLetter === \"s\" ? `${name}'` : `${name}'s`;\n};\n\nconst AlsoFeaturedInLink = ({ text, id, isMobile, position, pageTitle }) => {\n const linkText = useMemo(() => {\n const splitBasedOn = text.includes(\" in \") ? \" in \" : \" Across \";\n const splitText = text.replace(\" - Atly\", \"\").split(splitBasedOn);\n return `${getPossessiveForm(splitText[1])} ${splitText[0].replace(\n \"Top\",\n \"best\"\n )}`;\n }, [text]);\n \n return (\n \n {linkText}\n \n );\n};\n\nexport const GlutenFreeAlsoFeaturedIn = ({\n data,\n isMobile,\n position,\n pageTitle,\n}) => {\n if (data.length === 0) return null;\n \n return (\n \n
\n
\n Also featured in\n
\n
\n {data.slice(0, 3).map((item, index) => {\n return (\n \n );\n })}\n
\n
\n
\n );\n};\n","'use client';\n\nimport { TopPlaceImage } from \"@/components/atoms/TopPlaceImage\";\nimport { TopPlaceInformation } from \"@/components/atoms/TopPlaceInformation\";\nimport { GlutenFreeMenu } from \"@/components/molecules/GlutenFreeMenu\";\nimport { GlutenFreeUserReview } from \"@/components/molecules/GlutenFreeUserReview\";\nimport { TopPlaceFrame } from \"@/components/atoms/TopPlaceFrame\";\nimport { GlutenFreeAlsoFeaturedIn } from \"@/components/molecules/GlutenFreeAlsoFeaturedIn\";\n\nexport const GlutenFreeTopPlace = ({\n place = {},\n priority,\n position,\n isMobile,\n link,\n}) => {\n const title = place.title;\n const thumbnailImageId = place.thumbnail_image_id;\n const address = place.geocode_address?.formatted_address;\n const recommendationsCount = place.total_recommendations;\n const secondaries = place.secondaries && place.secondaries[0];\n \n return (\n \n \n \n
\n \n \n \n
\n
\n );\n};\n","import classNames from \"classnames\";\n\nexport const TopPlaceImageSkeleton = () => {\n return (\n \n \n \n \n
\n
\n );\n}","import classNames from \"classnames\";\n// import { GlutenFreePlaceRecommendations } from \"@/components/molecules/GlutenFreePlaceRecommendations\";\n// import { TopPlaceDescription } from \"@/components/atoms/TopPlaceDescription\";\n// import { TopPlaceTags } from \"@/components/molecules/TopPlaceTags\";\n\nexport const TopPlaceInformationSkeleton = () => {\n return (\n
\n \n \n {/*
*/}\n {/* */}\n {/* */}\n {/* */}\n {/*
*/}\n
\n );\n};","import { GlutenFreeIcons, GlutenFreeIconsList } from \"@/constants/gluten-free\";\n\nconst generateGreenFilledIcon = (count) => {\n\treturn `\n \n \n \n \n ${count}\n \n \n `;\n};\nconst generateGFGreenOutlinedIcon = (count) => {\n\treturn `\n \n \n \n \n ${count}\n \n \n `;\n};\n\nconst generateGreenDashedIcon = (count) => {\n\treturn `\n \n \n \n ${count}\n \n \n `;\n};\n\nconst generateUnknownIcon = (count) => {\n\treturn `\n \n \n \n \n \n ${count}\n \n \n `;\n};\n\nconst generateSelectedIcon = (count) => {\n\treturn `\n \n \n \n \n \n ${count}\n \n \n `;\n};\n\nconst getIconUrl = (svgString) =>\n\t`data:image/svg+xml;base64,${btoa(svgString)}`;\n\nexport const getMarkers = () => {\n\tfunction formatNumber(num) {\n\t\tif (num >= 1000) {\n\t\t\treturn (num / 1000).toFixed(1) + \"K\";\n\t\t}\n\t\treturn num.toString();\n\t}\n\n\treturn GlutenFreeIconsList.map((icon) => ({\n\t\tkey: icon,\n\t\tgetSrc: (type, count) => {\n\t\t\t// const formattedNumber = formatNumber(count);\n\t\t\tconst formattedNumber = `# ${count}`;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase GlutenFreeIcons.SELECTED:\n\t\t\t\t\treturn getIconUrl(generateSelectedIcon(formattedNumber));\n\n\t\t\t\tcase GlutenFreeIcons.GREEN_FILLED:\n\t\t\t\t\treturn getIconUrl(generateGreenFilledIcon(formattedNumber));\n\n\t\t\t\tcase GlutenFreeIcons.GREEN_OUTLINED:\n\t\t\t\t\treturn getIconUrl(generateGFGreenOutlinedIcon(formattedNumber));\n\n\t\t\t\tcase GlutenFreeIcons.GREEN_DOTTED:\n\t\t\t\t\treturn getIconUrl(generateGreenDashedIcon(formattedNumber));\n\n\t\t\t\tcase GlutenFreeIcons.UNKNOWN:\n\t\t\t\tdefault:\n\t\t\t\t\treturn getIconUrl(generateUnknownIcon(formattedNumber));\n\t\t\t}\n\t\t},\n\t}));\n};\n","\"use client\";\n\nimport dynamic from \"next/dynamic\";\nimport { useState, useEffect } from \"react\";\nimport { useMemo } from \"react\";\nimport { getMarkers } from \"@/utils/dynamic-icons\";\nimport { trackPinClick } from \"@/utils/mixpanel\";\n\nconst LeafletMap = dynamic(() => import(\"./LeafletMap\"), { ssr: false });\n\nexport const GlutenFreeLeafletMap = ({\n\tdeviceType,\n\tisActive,\n\tplaces = [],\n\tactivePlace,\n\tsetActivePlace,\n}) => {\n\tconst [shouldShowTooltip, setShouldShowTooltip] = useState(false);\n\tconst markers = useMemo(() => getMarkers(), []);\n\tconst [isFitBoundsBySteps, setIsFitBoundsBySteps] = useState(true);\n\n\tuseEffect(() => {\n\t\tsetTimeout(() => {\n\t\t\tsetIsFitBoundsBySteps(false);\n\t\t}, 500);\n\t}, []);\n\n\tif (deviceType !== \"desktop\" || !isActive || places.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t
\n\t\t\t 0 ? places : [{ lat: 0, lon: 0 }]}\n\t\t\t\tmarkers={markers}\n\t\t\t\tisClusterMap={shouldShowTooltip}\n\t\t\t\tshowAllTooltips={shouldShowTooltip}\n\t\t\t\tenforceStaticMap={deviceType === \"mobile\"}\n\t\t\t\tcenter={[places[0]?.lat || 0, places[0]?.lon || 0]}\n\t\t\t\tselectedStepsIds={activePlace ? [activePlace?._id] : [places[0]?._id]}\n\t\t\t\tflyToPosition={\n\t\t\t\t\tactivePlace ? [activePlace?.lat, activePlace?.lon] : null\n\t\t\t\t}\n\t\t\t\tonZoomEnd={({ e: event, bounds }) => {\n\t\t\t\t\tconst newZoomLevel = event.target._zoom;\n\n\t\t\t\t\tconst visible = places.filter((marker) => {\n\t\t\t\t\t\treturn bounds.contains([marker.lat, marker.lon]);\n\t\t\t\t\t});\n\n\t\t\t\t\tsetShouldShowTooltip(newZoomLevel > 14 || visible.length <= 7);\n\t\t\t\t}}\n\t\t\t\tonClickStep={(place) => {\n\t\t\t\t\ttrackPinClick();\n\t\t\t\t\tconst stepElement = document.getElementById(\n\t\t\t\t\t\t`topten_stepElement_${place._id}`\n\t\t\t\t\t);\n\t\t\t\t\tif (stepElement) {\n\t\t\t\t\t\tstepElement.scrollIntoView({ behavior: \"smooth\" });\n\t\t\t\t\t}\n\t\t\t\t\tsetActivePlace(place);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
\n\t);\n};\n","export const CircleCloseModalButton = () => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n","\"use client\";\n\nimport { CircleCloseModalButton } from \"@/components/atoms/CircleCloseModalButton\";\nimport { getNoise } from \"@/utils/noise\";\nimport { MIN_SOCIAL_PROOF, MAX_SOCIAL_PROOF } from \"@/constants/noise\";\nimport Image from \"next/image\";\nimport { useCallback, useState, useEffect } from \"react\";\nimport classNames from \"classnames\";\nimport { Inter } from \"next/font/google\";\nimport localFont from \"next/font/local\";\nimport { PorangeButton } from \"../atoms/PorangeButton\";\nimport { SocialProofAvatars } from \"../molecules/SocialProofAvatars\";\nimport { CircleCheckIcon } from \"../atoms/CircleCheckIcon\";\nimport {\n trackModalShown,\n trackModalCtaClicked,\n trackModalDismissed,\n} from \"@/utils/mixpanel\";\nimport { useSearchParams } from \"next/navigation\";\nimport { deleteSearchParams, setSearchParams } from \"@/utils/url\";\nimport { MixpanelValues } from \"@/constants/mixpanel\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\nconst montFont = localFont({ src: \"../../fonts/Mont-Bold.ttf\" });\n\nconst GenericModalVariations = {\n A: {\n title: \"Access over 179k gluten-free places, worldwide!\",\n description:\n \"Find trusted gluten-free restaurants, cafés, and bakeries, constantly reviewed for safety and accuracy.\",\n ctaText: \"EXPLORE THE MAP\",\n version: \"General Test A\",\n headerImage: \"/assets/gluten-free/modal-header-generic-a.png\",\n },\n B: {\n title: \"Access detailed info for over 179k gluten-free spots\",\n ctaText: \"EXPLORE THE MAP\",\n headerImage: \"/assets/gluten-free/modal-header-generic-b.png\",\n headerImagePadding: true,\n version: \"General Test B\",\n checkList: [\n \"Updated daily for accuracy\",\n \"Every place ranked by safety\",\n \"Filter by Dairy-Free, Kid-Friendly & more\",\n ],\n },\n};\n\nconst CommunityModalVariations = {\n A: {\n title: \"179k gluten-free spots, curated by the community\",\n description:\n \"Join 454k gluten-free foodies who’ve found freedom by discovering safe, trusted dining spots around the world.\",\n ctaText: \"JOIN THE COMMUNITY\",\n headerImage: \"/assets/gluten-free/modal-header-community.png\",\n version: \"Community Test A\",\n },\n B: {\n title: \"179k gluten-free spots, curated by the community\",\n ctaText: \"JOIN THE COMMUNITY\",\n headerImage: \"/assets/gluten-free/modal-header-community.png\",\n version: \"Community Test B\",\n checkList: [\n \"454k+ gluten-free contributors\",\n \"1.1M+ reviews\",\n \"179k places worldwide\",\n ],\n },\n};\n\nexport const GlutenFreeModal = ({\n link,\n area,\n isMobile,\n places = [],\n quizFlowControllerVariation,\n isNewFlow = false,\n}) => {\n const [activeModal, setActiveModal] = useState(null);\n const searchParams = useSearchParams();\n\n const noise = getNoise(\"glutenfreeq\", {\n min: MIN_SOCIAL_PROOF,\n max: MAX_SOCIAL_PROOF,\n range: MAX_SOCIAL_PROOF - MIN_SOCIAL_PROOF,\n });\n\n const triggerGenericModal = useCallback(() => {\n console.log({ isMobile, isNewFlow });\n if (isMobile && isNewFlow) {\n console.count(\"generic modal click\");\n const searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"modal\", \"generic\");\n window.history.pushState({}, \"\", `?${searchParams.toString()}`);\n return;\n }\n\n // disable document scroll\n document.body.style.overflow = \"hidden\";\n const storedVariation = localStorage.getItem(\"generic-modal-variation\");\n\n if (storedVariation) {\n setActiveModal(GenericModalVariations[storedVariation]);\n trackModalShown(\n GenericModalVariations[storedVariation].version,\n GenericModalVariations[storedVariation].ctaText\n );\n } else {\n const randomVariation = Math.floor(Math.random() * 2);\n const variationKey = randomVariation === 1 ? \"A\" : \"B\";\n const variation = GenericModalVariations[variationKey];\n setActiveModal(variation);\n trackModalShown(variation.version, variation.ctaText);\n localStorage.setItem(\"generic-modal-variation\", variationKey);\n }\n }, [isMobile, isNewFlow]);\n\n const triggerCommunityModal = useCallback(() => {\n console.log({ isMobile, isNewFlow });\n if (isMobile && isNewFlow) {\n console.count(\"community modal click\");\n const searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"modal\", \"community\");\n window.history.pushState({}, \"\", `?${searchParams.toString()}`);\n return;\n }\n\n document.body.style.overflow = \"hidden\";\n\n const storedVariation = localStorage.getItem(\"community-modal-variation\");\n\n if (storedVariation) {\n setActiveModal(CommunityModalVariations[storedVariation]);\n trackModalShown(\n CommunityModalVariations[storedVariation].version,\n CommunityModalVariations[storedVariation].ctaText\n );\n } else {\n const randomVariation = Math.floor(Math.random() * 2);\n const variationKey = randomVariation === 1 ? \"A\" : \"B\";\n const variation = CommunityModalVariations[variationKey];\n setActiveModal(variation);\n trackModalShown(variation.version, variation.ctaText);\n localStorage.setItem(\"community-modal-variation\", variationKey);\n }\n }, [isMobile, isNewFlow]);\n\n useEffect(() => {\n const trigger = searchParams.get(\"trigger\");\n const triggerValue = decodeURIComponent(trigger);\n\n console.log({ trigger, triggerValue });\n\n switch (triggerValue) {\n case MixpanelValues.ItemTapped.NAME:\n case MixpanelValues.ItemTapped.AWARD_EMBLEM:\n case MixpanelValues.ItemTapped.ADDRESS:\n case MixpanelValues.ItemTapped.SAFETY_RATING:\n case MixpanelValues.ItemTapped.IMAGE:\n case MixpanelValues.ItemTapped.TAGS:\n case MixpanelValues.ItemTapped.LEARN_MORE:\n case MixpanelValues.ItemTapped.VIEW_MENU:\n deleteSearchParams([{ key: \"trigger\", value: \"\" }]);\n triggerGenericModal();\n break;\n\n case MixpanelValues.ItemTapped.GLUTEN_FREE_COMMUNITY:\n case MixpanelValues.ItemTapped.GLUTEN_FREE_REC_COUNT:\n case MixpanelValues.ItemTapped.REVIEW_TEXT:\n deleteSearchParams([{ key: \"trigger\", value: \"\" }]);\n triggerCommunityModal();\n break;\n }\n\n return () => {\n document.body.style.overflow = \"auto\";\n };\n }, [searchParams]);\n\n if (!activeModal)\n return null;\n\n return (\n
\n \n {\n setActiveModal(null);\n trackModalDismissed(activeModal.version, activeModal.ctaText);\n document.body.style.overflow = \"auto\";\n }}>\n \n \n \n \n
\n
\n \n {activeModal.title}\n \n {activeModal.description ? (\n

\n {activeModal.description}\n

\n ) : null}\n {activeModal.checkList ? (\n
    \n {activeModal.checkList.map((item, index) => (\n \n \n {item}\n \n ))}\n
\n ) : null}\n
\n {\n trackModalCtaClicked({\n quizFlowControllerVariation,\n modalName: activeModal.version,\n buttonCta: activeModal.ctaText,\n isMobile,\n link,\n area,\n });\n }}\n className={classNames({\n \"h-[60px] rounded-[20px] text-lg w-full cursor-pointer\": true,\n \"opacity-50 pointer-events-none\": !link,\n \"opacity-100 pointer-events-auto\": link,\n })}>\n {activeModal.ctaText}\n \n
\n \n {noise.value} joined today 👆\n
\n
\n
\n \n \n );\n};\n","import { useEffect, useState, useRef } from \"react\";\n// import useDebounce from \"./useDebounce\";\nimport { trackPlaceViewed, trackPageScrolled } from \"@/utils/mixpanel\";\n\nexport const useTrackPlaceListScroll = (places = [], disabled = false) => {\n\tconst firstScrollRef = useRef(false);\n\tconst [activePlace, setActivePlace] = useState(null);\n\tconst [activePlaceIndex, setActivePlaceIndex] = useState(null);\n\tconst [scrollOffset] = useState(0);\n\t// const topListOffsetDebounce = useDebounce(scrollOffset, 1000);\n\tconst placesRef = useRef(places); // Add a ref to store the places array\n\n\t// Update the ref whenever places changes\n\tuseEffect(() => {\n\t\tplacesRef.current = places;\n\t}, [places]);\n\n\tconst onScroll = () => {\n\t\tif (!firstScrollRef.current) {\n\t\t\tfirstScrollRef.current = true;\n\t\t\ttrackPageScrolled();\n\t\t\treturn;\n\t\t}\n\n\t\tconst placeElements = document.querySelectorAll(`[id^=\"place_\"]`);\n\t\tfor (const placeElement of placeElements) {\n\t\t\tconst placeElementId = placeElement.id.split(\"_\")[1];\n\t\t\tconst offsetPosition = placeElement?.getBoundingClientRect().top;\n\n\t\t\tif (offsetPosition < 400) {\n\t\t\t\tconst foundPlace = placesRef.current.find(\n\t\t\t\t\t(place) => place._id === placeElementId\n\t\t\t\t);\n\t\t\t\tfoundPlace && setActivePlace(foundPlace);\n\t\t\t\tfoundPlace &&\n\t\t\t\t\tsetActivePlaceIndex(placesRef.current.indexOf(foundPlace));\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (!disabled) {\n\t\t\twindow.addEventListener(\"scroll\", onScroll);\n\n\t\t\treturn () => {\n\t\t\t\twindow.removeEventListener(\"scroll\", onScroll);\n\t\t\t};\n\t\t}\n\t}, [disabled]);\n\n\tuseEffect(() => {\n\t\tif (activePlaceIndex && !disabled) {\n\t\t\ttrackPlaceViewed(activePlaceIndex);\n\t\t}\n\t}, [activePlaceIndex, disabled]);\n\n\treturn { activePlace, setActivePlace, scrollOffset, activePlaceIndex };\n};\n","\"use client\";\n\nimport classNames from \"classnames\";\nimport Image from \"next/image\";\nimport { PorangeButton } from \"../atoms/PorangeButton\";\nimport { Inter } from \"next/font/google\";\nimport { trackItemTapped } from \"@/utils/mixpanel\";\nimport { MixpanelValues } from \"@/constants/mixpanel\";\nimport { pushGtmEvent } from \"@/utils/google-tag-manager\";\nimport { GtmEvents, GtmProperties } from \"@/constants/google-tag-manager\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nexport const Certificate = ({ color = \"black\", size = 36 }) => {\n return (\n \n \n \n );\n};\n\nexport const Faders = ({ color = \"black\", size = 36 }) => {\n return (\n \n \n \n );\n};\n\nexport const CertificateIcon = ({ color = \"black\", size = 36 }) => {\n return (\n \n \n \n );\n};\n\nexport const ChatCenteredText = ({ color = \"black\", size = 36 }) => {\n return (\n \n \n \n );\n};\n\nexport const BoxAlignment = {\n CENTER: \"center\",\n FLEX_START: \"flex-start\",\n START: \"start\",\n STRETCH: \"stretch\",\n ROW: \"row\",\n COL: \"col\",\n};\nexport const Box = ({\n children,\n className,\n alignment = BoxAlignment.CENTER,\n // onClick = () => {},\n transparent = false,\n}) => {\n return (\n \n {children}\n \n );\n};\n\nconst IMAGE_SIZE = 36;\n\nconst Testimony = ({ text, name, glutenFreeLevel, imageSrc }) => {\n return (\n \n \n {text}\n

\n
\n \n
\n

{name}

\n

{glutenFreeLevel}

\n
\n
\n \n );\n};\n\nexport const Feature = ({ title, subtitle, icon }) => {\n return (\n \n {icon}\n \n {title}\n \n \n {subtitle}\n

\n
\n );\n};\n\nexport const GlutenFreeFooter = ({\n pageTitle,\n pageArea,\n isMobile,\n placesCount,\n link,\n}) => {\n return (\n \n \n Explore{\" \"}\n {placesCount > 1 ? `${placesCount} GF spots` : \"tons of GF spots\"}{\" \"}\n {pageArea ? `in ${pageArea}` : \"worldwide\"}\n \n

\n and 60k GF places worldwide!\n

\n \n Start Free Trial\n \n
\n
\n
\n }\n />\n }\n />\n }\n />\n
\n
\n \n \n
\n
\n \n

\n Discover 60k vetted Gluten Free places around the world!\n

\n \n Join the community\n \n
\n
\n \n \n Gluten Free Eats by Atly\n
\n
\n {\n console.log({ link });\n trackItemTapped(MixpanelValues.ItemTapped.APP_STORE);\n pushGtmEvent(GtmEvents.CLICK_INSTALL, {\n [GtmProperties.GfeTopTen.PAGE_NAME]: pageTitle,\n [GtmProperties.GfeTopTen.POSITION]: \"footer\",\n [GtmProperties.GfeTopTen.ELEMENT_TEXT]: \"appstore\",\n [GtmProperties.GfeTopTen.DEVICE]: isMobile\n ? \"mobile\"\n : \"desktop\",\n });\n \n link && window.open(link, \"_blank\");\n }}\n />\n {\n trackItemTapped(MixpanelValues.ItemTapped.PLAY_STORE);\n pushGtmEvent(GtmEvents.CLICK_INSTALL, {\n [GtmProperties.GfeTopTen.PAGE_NAME]: pageTitle,\n [GtmProperties.GfeTopTen.POSITION]: \"footer\",\n [GtmProperties.GfeTopTen.ELEMENT_TEXT]: \"playstore\",\n [GtmProperties.GfeTopTen.DEVICE]: isMobile\n ? \"mobile\"\n : \"desktop\",\n });\n \n link && window.open(link, \"_blank\");\n }}\n />\n
\n \n \n );\n};\n","import { PorangeButton } from \"../atoms/PorangeButton\";\nimport { Inter } from \"next/font/google\";\nimport { SocialProofAvatars } from \"../molecules/SocialProofAvatars\";\nimport { getNoise } from \"@/utils/noise\";\nimport { MIN_SOCIAL_PROOF, MAX_SOCIAL_PROOF } from \"@/constants/noise\";\nimport { derivePossessiveForm } from \"@/utils\";\nimport { trackTopTenStartQuizClick } from \"@/utils/mixpanel\";\nimport { useEffect } from \"react\";\nimport config from \"@/config\";\n\nconst interFont = Inter({ subsets: [\"latin\"] });\n\nconst OriginalFixedGlutenFreeCTA = ({\n branchLink,\n area,\n placesCount,\n ctaTargetTestVariation,\n quizFlowControllerTestVariation,\n}) => {\n return (\n {\n const buttonCta = event.target.textContent;\n trackTopTenStartQuizClick({\n count: placesCount,\n buttonCta,\n isMobile: false,\n })\n\n\n if (ctaTargetTestVariation === 'direct_to_app') {\n window.open(branchLink, \"_blank\");\n } else {\n localStorage.setItem(\"gfe-short-quiz-area\", area);\n const domain = process.env.NEXT_PUBLIC_STAGE\n ? config.top_ten_domain.replace(\"www\", \"web\")\n : // : window.location.origin;\n \"https://develop.d3ihunapjl2c3y.amplifyapp.com\";\n\n const searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"lps\", \"tt\");\n\n let path = quizFlowControllerTestVariation === \"short\" ? \"gfe-short-checkout\" : \"gfe-checkout\";\n\n window.open(\n `${domain}/${path}/start?${searchParams.toString()}`,\n \"_blank\"\n );\n }\n }}\n >\n {derivePossessiveForm(area).toUpperCase()} FULL LIST\n \n )\n}\n\nexport const OriginalFixedGlutenFreeFooter = ({\n branchLink,\n area,\n placesCount,\n ctaTargetTestVariation,\n quizFlowControllerTestVariation,\n isMobile,\n}) => {\n const noise = getNoise(\"glutenfreeq\", {\n min: MIN_SOCIAL_PROOF,\n max: MAX_SOCIAL_PROOF,\n range: MAX_SOCIAL_PROOF - MIN_SOCIAL_PROOF,\n });\n\n if (isMobile) {\n return (\n
\n \n
\n )\n }\n return (\n \n

Discover all {derivePossessiveForm(area)} gluten-free spots

\n
\n
\n \n {noise.value} new GF spots found today 👉\n
\n \n
\n \n )\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const Particle = ({ emoji, initialPosition, angle, speed }) => {\n const angleInRad = angle * (Math.PI / 180);\n const xDistance = Math.cos(angleInRad) * speed * 20;\n const yDistance = Math.sin(angleInRad) * speed * 20;\n \n return (\n \n {emoji}\n \n );\n};","import React, { useEffect, useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Particle } from './Particle';\n\nexport const Confetti = ({ emojis = ['🎉', '🎊', '✨'], isActive, clickPosition }) => {\n console.log('Confetti component render:', {\n emojis,\n isActive,\n clickPosition,\n timestamp: new Date().toISOString()\n });\n\n const [particles] = useState(() => \n Array.from({ length: 50 }, (_, i) => ({\n id: i,\n emoji: emojis[i % emojis.length],\n angle: (i / 50) * 360,\n speed: 8 + Math.random() * 6\n }))\n );\n\n const [defaultPosition, setDefaultPosition] = useState({ x: 0, y: 0 });\n\n useEffect(() => {\n // Set default position once we're in the browser\n setDefaultPosition({\n x: window.innerWidth / 2,\n y: window.innerHeight / 2\n });\n }, []);\n\n // Add fallback click position if not provided\n const position = clickPosition || defaultPosition;\n\n if (!isActive) return null;\n\n return (\n \n {particles.map(particle => (\n \n ))}\n \n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Question } from '../quiz-flow/pages/Question';\nimport { Confetti } from '../Confetti';\nimport { flows } from '../flow_template';\nimport { Pages } from '../page_list';\nimport { BaseResponseCount } from '../response_counts';\nimport { SocialProofAvatars } from '@/components/molecules/SocialProofAvatars';\n\nconst QuizSlider = ({\n variant,\n isOpen,\n onNext,\n mounted,\n selectedOption,\n setSelectedOption,\n onClose,\n flowVersion = 'flow_a'\n}) => {\n const [currentPageIndex, setCurrentPageIndex] = useState(0);\n const [showConfetti, setShowConfetti] = useState(false);\n const [confettiPosition, setConfettiPosition] = useState({ x: 0, y: 0 });\n \n const flow = flows[flowVersion];\n const currentPageName = flow.pages[currentPageIndex];\n const currentPage = Pages[currentPageName];\n \n useEffect(() => {\n if (!isOpen) {\n setCurrentPageIndex(0);\n setSelectedOption(null);\n }\n }, [isOpen, setSelectedOption]);\n \n const handleAnswer = (answer, event) => {\n setSelectedOption(answer);\n setShowConfetti(true);\n setConfettiPosition({ x: event.clientX, y: event.clientY });\n \n setTimeout(() => {\n setShowConfetti(false);\n onNext({\n questionText: currentPage.text,\n answerPosition: currentPage.answers.findIndex(a => a.id === answer.id) + 1,\n answerText: answer.text,\n fullAnswer: answer\n });\n }, 500);\n };\n \n const formatResponseCount = (count) => {\n const thousands = count / 1000;\n return thousands % 1 === 0\n ? `${Math.floor(thousands)}k`\n : `${thousands.toFixed(1)}k`;\n };\n \n const sliderVariants = {\n hidden: { y: '100%', opacity: 0 },\n visible: { y: 0, opacity: 1, transition: { type: 'spring', damping: 30, stiffness: 300 } },\n exit: { y: '100%', opacity: 0, transition: { duration: 0.3 } }\n };\n \n return (\n \n {isOpen && mounted && (\n <>\n \n \n \n
\n \n \n \n \n \n
\n \n
\n

\n Find gluten-free spots
\n tailored to your needs\n

\n
\n
\n \n \n \n
\n
\n \n \n {formatResponseCount(BaseResponseCount)} responses\n \n
\n
\n \n \n \n \n )}\n \n );\n};\n\nexport default QuizSlider;","export const Navigation = ({\n onBack,\n onSkip,\n showBack,\n showSkip,\n totalSteps,\n currentStep,\n isFirstQuestion,\n showProgressDots,\n noCloseButton = false,\n}) => {\n // Calculate weighted progress\n const getWeightedProgress = () => {\n if (currentStep === 0) return 0;\n \n // Calculate weights where earlier steps count for much more\n const weights = Array.from({ length: totalSteps }, (_, index) => {\n // Creates weights from 2.5 to 1 with exponential decay\n return 2.5 * Math.pow(0.9, index);\n });\n \n // Calculate progress based on weights\n const totalWeight = weights.reduce((sum, weight) => sum + weight, 0);\n const currentWeight = weights.slice(0, currentStep).reduce((sum, weight) => sum + weight, 0);\n \n return (currentWeight / totalWeight) * 100;\n };\n\n const isLastTransition = currentStep === totalSteps;\n\n return (\n
\n
\n {/* Left side */}\n
\n \n {isFirstQuestion ? noCloseButton ? null : (\n \n \n \n ) : (\n \n \n \n )}\n \n
\n \n {/* Progress Bar */}\n
\n
\n
\n \n {/* Right side */}\n
\n \n Skip\n \n
\n
\n
\n );\n}; ","import { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\nimport { VETTED_PLACES_WORLDWIDE } from '@/constants';\n\nexport const Statement = ({ onAnswer }) => {\n const [showFirstLine, setShowFirstLine] = useState(false);\n const [showSecondLine, setShowSecondLine] = useState(false);\n const [showBubbles, setShowBubbles] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n const [particlesExiting, setParticlesExiting] = useState(false);\n\n useEffect(() => {\n setTimeout(() => setShowFirstLine(true), 200);\n setTimeout(() => setShowSecondLine(true), 600);\n setTimeout(() => setShowBubbles(true), 400);\n setTimeout(() => setShowButton(true), 1400);\n }, []);\n\n const handleContinue = () => {\n setParticlesExiting(true);\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n
\n
\n
\n \n Our Gluten Free map has over{' '}\n \n {VETTED_PLACES_WORLDWIDE} gluten-free places\n {' '}\n worldwide\n \n
\n\n
\n \n Finding places is a breeze\n \n
\n
\n\n {showBubbles && (\n \n {[...Array(70)].map((_, i) => (\n \n \n
\n ))}\n
\n )}\n\n \n \n Continue\n \n
\n\n \n \n );\n};\n\nexport default Statement;","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const emojis = ['🥑', '🥕', '🍎', '🫐', '🍕', '🥩', '🍗', '🍳', '🍣', '🥗', '🥪', '🌮', '🍜', '🍙', '🥝', '🍇', '🥭', '🍠'];\n const [activeEmojiIndices, setActiveEmojiIndices] = useState([0, 1]);\n \n // Generate shuffled emojis and their fixed positions once\n const [gridEmojis] = useState(() => {\n return [...emojis].sort(() => Math.random() - 0.5).map(emoji => ({\n emoji,\n offset: {\n x: Math.random() * 10 - 5,\n y: Math.random() * 10 - 5\n }\n }));\n });\n\n useEffect(() => {\n const interval = setInterval(() => {\n // Generate two random unique indices\n const newIndices = [];\n while (newIndices.length < 2) {\n const randomIndex = Math.floor(Math.random() * emojis.length);\n if (!newIndices.includes(randomIndex)) {\n newIndices.push(randomIndex);\n }\n }\n setActiveEmojiIndices(newIndices);\n }, 2000);\n return () => clearInterval(interval);\n }, []);\n\n useEffect(() => {\n setTimeout(() => setShowButton(true), 1400);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n
\n
\n
\n

\n In Atly, you can use over{' '} \n \n 50 filters\n {' '}to help you find the{' '}\n \n perfect\n {' '}\n meal for your dietary needs\n

\n
\n
\n\n
\n
\n {gridEmojis.map((item, i) => (\n
\n {item.emoji}\n
\n ))}\n
\n
\n\n
\n \n Continue\n \n
\n
\n );\n};\n\nexport default Statement;\n\nconst styles = `\n@keyframes slideIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n`;\n\nif (typeof document !== 'undefined') {\n const styleSheet = document.createElement('style');\n styleSheet.textContent = styles;\n document.head.appendChild(styleSheet);\n}","'use client';\n\nimport { PreCheckoutPage } from \"@/features/PreCheckoutPage\";\nimport classNames from \"classnames\";\nimport { useEffect, useState } from \"react\";\n\nexport const PreCheckout = ({\n\tdata,\n\tonAnswer,\n\tisTransitioning,\n\tdirection,\n\tformSubmit,\n\tisDisabled = false,\n\ttrialVariation = false,\n\tpromotionAmountOff = 0,\n\tclientSecret,\n\tpricePerMonth,\n\tcustomerUpdate,\n\tuserEmail\n}) => {\n\tconst [isVisible, setIsVisible] = useState(false);\n\n\tuseEffect(() => {\n\t\t// Start with opacity 0, then fade in after a brief delay\n\t\tconst timer = setTimeout(() => {\n\t\t\tsetIsVisible(true);\n\t\t}, 50);\n\n\t\treturn () => clearTimeout(timer);\n\t}, []);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nconst validateEmail = (email) => {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n};\n\nexport const EmailScreen = ({ \n data, \n onAnswer, \n isTransitioning,\n direction,\n}) => {\n const [email, setEmail] = useState(data.savedEmail || '');\n const [touched, setTouched] = useState(false);\n const [attempted, setAttempted] = useState(false);\n const [showContent, setShowContent] = useState(false);\n const inputRef = useRef(null);\n\n const isValid = validateEmail(email);\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }, []);\n\n useEffect(() => {\n if (!isTransitioning) {\n setTimeout(() => setShowContent(true), 100);\n } else {\n setShowContent(false);\n }\n }, [isTransitioning]);\n\n useEffect(() => {\n const handleResize = () => {\n if (window.visualViewport) {\n const form = document.querySelector('form');\n if (form) {\n const heightDiff = window.innerHeight - window.visualViewport.height;\n if (heightDiff > 100) {\n form.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }\n }\n };\n\n window.visualViewport?.addEventListener('resize', handleResize);\n return () => window.visualViewport?.removeEventListener('resize', handleResize);\n }, []);\n\n const handleSubmit = (e) => {\n e.preventDefault();\n setAttempted(true);\n \n if (isValid && !isTransitioning) {\n onAnswer({ text: email });\n }\n };\n\n const getBorderColor = () => {\n if (!touched) return 'border-gray-300';\n return isValid ? 'border-green-500' : 'border-red-500';\n };\n\n const handleBlur = () => {\n setTouched(true);\n };\n\n const handleEmailChange = (e) => {\n setEmail(e.target.value);\n if (!touched) setTouched(true);\n };\n\n return (\n
\n
\n
\n

\n {data.text}\n

\n
\n
\n
\n \n \n \n
\n By clicking \"Continue\", you agree to Atly's{' '}\n \n Terms of Service\n \n {' '}and{' '}\n \n Privacy Policy\n \n
\n
\n \n
\n
\n\n
\n \n Continue\n \n
\n \n );\n}; ","import React, { useState, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nconst validateEmail = (email) => {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n};\n\nexport const EmailScreen = ({ \n data, \n onAnswer, \n isTransitioning,\n direction,\n}) => {\n const [email, setEmail] = useState(data.savedEmail || '');\n const [touched, setTouched] = useState(false);\n const [attempted, setAttempted] = useState(false);\n const [showContent, setShowContent] = useState(false);\n const inputRef = useRef(null);\n\n const isValid = validateEmail(email);\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }, []);\n\n useEffect(() => {\n if (!isTransitioning) {\n setTimeout(() => setShowContent(true), 100);\n } else {\n setShowContent(false);\n }\n }, [isTransitioning]);\n\n useEffect(() => {\n const handleResize = () => {\n if (window.visualViewport) {\n const form = document.querySelector('form');\n if (form) {\n const heightDiff = window.innerHeight - window.visualViewport.height;\n if (heightDiff > 100) {\n form.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }\n }\n };\n\n window.visualViewport?.addEventListener('resize', handleResize);\n return () => window.visualViewport?.removeEventListener('resize', handleResize);\n }, []);\n\n const handleSubmit = (e) => {\n e.preventDefault();\n setAttempted(true);\n \n if (isValid && !isTransitioning) {\n onAnswer({ text: email });\n }\n };\n\n const getBorderColor = () => {\n if (!touched) return 'border-gray-300';\n return isValid ? 'border-green-500' : 'border-red-500';\n };\n\n const handleBlur = () => {\n setTouched(true);\n };\n\n const handleEmailChange = (e) => {\n setEmail(e.target.value);\n if (!touched) setTouched(true);\n };\n\n return (\n
\n
\n
\n

\n {data.text.split('\\n').map((line, index, array) => (\n \n {line}\n {index < array.length - 1 &&
}\n
\n ))}\n

\n
\n
\n
\n \n \n
\n \n
\n \n Continue\n \n
\n
\n
\n By clicking \"Continue\", you agree to Atly's{' '}\n \n Terms of Service\n \n {' '}and{' '}\n \n Privacy Policy\n \n
\n
\n \n
\n
\n \n );\n}; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Statement = ({ onAnswer }) => {\n const [showTitle, setShowTitle] = useState(false);\n const [showSubtitle, setShowSubtitle] = useState(false);\n const [showLevels, setShowLevels] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n const [activePin, setActivePin] = useState(0);\n\n const pins = [\n { color: '#22C55E', label: '100% Gluten-Free', emoji: '✨', description: 'Dedicated gluten-free facility' },\n { color: '#3B82F6', label: 'Celiac Friendly', emoji: '🛡️', description: 'Strict protocols & trained staff' },\n { color: '#F59E0B', label: 'Accommodating', emoji: '⚡', description: 'Good practices but shared kitchen' },\n { color: '#EF4444', label: 'GF Options', emoji: '⭐', description: 'Basic gluten-free options available' }\n ];\n\n useEffect(() => {\n setTimeout(() => setShowTitle(true), 100);\n setTimeout(() => setShowSubtitle(true), 400);\n setTimeout(() => setShowLevels(true), 1000);\n setTimeout(() => setShowButton(true), 1600);\n\n const interval = setTimeout(() => {\n setInterval(() => {\n setActivePin(current => (current + 1) % pins.length);\n }, 2000);\n }, 1000);\n\n return () => {\n clearInterval(interval);\n clearTimeout(interval);\n };\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n \n
\n
\n \n Atly gives each place a{' '}\n \n safety level\n {' '}\n for quick and easy discovery\n \n
\n
\n\n \n
\n {pins.map((pin, index) => (\n \n
\n \n {pin.emoji}\n
\n
\n \n {pin.label}\n \n

\n {pin.description}\n

\n
\n
\n \n ))}\n \n \n\n \n \n Continue\n \n \n \n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\nimport { SocialProofAvatars } from '@/components/molecules/SocialProofAvatars';\nimport { motion } from 'framer-motion';\nimport Image from 'next/image';\n\nexport const Statement = ({ onAnswer, previousAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [count, setCount] = useState(0);\n const [showFaces, setShowFaces] = useState(false);\n \n useEffect(() => {\n // Animate count up to 28.1k\n const targetCount = 28.1;\n const duration = 2000;\n const steps = 50;\n const increment = duration / steps;\n \n let current = 0;\n const timer = setInterval(() => {\n if (current < steps) {\n current += 1;\n setCount((current / steps) * targetCount);\n } else {\n clearInterval(timer);\n setShowFaces(true); // Show faces after count completes\n }\n }, increment);\n\n setTimeout(() => setShowButton(true), 1500);\n return () => clearInterval(timer);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n const generateAvatar = (usedIndices = []) => {\n const genders = ['men', 'women'];\n const maxPerGender = 70; // Maximum available indices per gender\n let gender, photoIndex, avatarUrl;\n \n do {\n gender = genders[Math.floor(Math.random() * genders.length)];\n photoIndex = Math.floor(Math.random() * maxPerGender) + 1;\n avatarUrl = `https://randomuser.me/api/portraits/${gender}/${photoIndex}.jpg`;\n } while (usedIndices.includes(avatarUrl));\n \n return avatarUrl;\n };\n\n const CommunityScroll = () => {\n const [gridItems, setGridItems] = useState([]);\n\n useEffect(() => {\n const usedUrls = new Set();\n const totalAvatars = 70;\n const newAvatars = [];\n\n while (newAvatars.length < totalAvatars) {\n const avatarUrl = generateAvatar(Array.from(usedUrls));\n if (!usedUrls.has(avatarUrl)) {\n usedUrls.add(avatarUrl);\n newAvatars.push(avatarUrl);\n }\n }\n\n setGridItems(newAvatars);\n }, []);\n\n return (\n
\n \n {gridItems.map((url, index) => (\n \n \"Community\n
\n ))}\n \n \n );\n };\n\n return (\n
\n
\n {/* Counter Section */}\n
\n
\n We'll connect you with\n
\n
\n {count.toFixed(1)}k\n
\n
\n gluten-free parents, kids, and friends\n
\n
\n
\n\n {/* Scrolling Faces Container */}\n
\n \n
\n\n {/* Continue Button with stronger gradient */}\n
\n \n Continue\n \n
\n
\n );\n};\n\nexport default Statement;\n","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\nimport { VETTED_PLACES_WORLDWIDE } from \"@/constants\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activeRegion, setActiveRegion] = useState(0);\n\n const regions = [\n { emoji: '🗽', count: '150k+', label: 'US Places' },\n { emoji: '🌎', count: `${VETTED_PLACES_WORLDWIDE}+`, label: 'Global Places' },\n { emoji: '🌆', count: '1k+', label: 'Cities' },\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActiveRegion(current => (current + 1) % regions.length);\n }, 2000);\n\n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n \n
\n

\n The{' '}\n \n largest\n {' '}\n gluten-free map\n

\n
\n\n
\n
\n {regions.map((region, index) => (\n \n
{region.emoji}
\n
\n {region.count}\n
\n
\n {region.label}\n
\n
\n ))}\n
\n \n\n \n \n Continue\n \n \n \n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activeFeature, setActiveFeature] = useState(0);\n \n const features = [\n {\n icon: '📸',\n label: 'Photos',\n subtext: 'See what others ordered'\n },\n {\n icon: '⭐',\n label: 'Reviews',\n subtext: 'From multiple platforms'\n },\n {\n icon: '🔍',\n label: 'Menu Items',\n subtext: 'Verified gluten-free options'\n },\n {\n icon: '📍',\n label: 'One Place',\n subtext: 'Everything you need'\n }\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActiveFeature(current => (current + 1) % features.length);\n }, 2000);\n \n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n
\n
\n

\n Everything you need in{' '}\n \n one place\n \n

\n
\n\n
\n
\n {features.map((feature, index) => (\n
\n
{feature.icon}
\n
\n {feature.label}\n
\n
\n {feature.subtext}\n
\n
\n ))}\n
\n
\n\n
\n No more hopping between different apps and websites\n
\n\n
\n \n Continue\n \n
\n
\n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activeItem, setActiveItem] = useState(0);\n \n const verificationItems = [\n {\n icon: '👩‍⚕️',\n label: 'Expert Review',\n detail: 'Verified by dietitians'\n },\n {\n icon: '🏆',\n label: 'Quality Standards',\n detail: 'Strict verification process'\n },\n {\n icon: '✅',\n label: 'Menu Validation',\n detail: 'Ingredient checking'\n }\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActiveItem(current => (current + 1) % verificationItems.length);\n }, 2000);\n \n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n
\n
\n

\n Verified by{' '}\n \n nutrition experts\n \n

\n
\n\n
\n
\n {verificationItems.map((item, index) => (\n
\n
{item.icon}
\n
\n
\n {item.label}\n
\n
\n {item.detail}\n
\n
\n
\n ))}\n
\n
\n\n
\n \n Continue\n \n
\n
\n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activeUpdate, setActiveUpdate] = useState(0);\n \n const updates = [\n {\n icon: '🔄',\n time: 'Just now',\n action: 'Menu updated',\n detail: 'New gluten-free options added'\n },\n {\n icon: '✨',\n time: '2h ago',\n action: 'Review verified',\n detail: 'Safety protocols confirmed'\n },\n {\n icon: '📸',\n time: '4h ago',\n action: 'Photos added',\n detail: 'New dishes showcased'\n }\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActiveUpdate(current => (current + 1) % updates.length);\n }, 2000);\n \n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n
\n
\n

\n Always{' '}\n \n up to date\n \n

\n
\n\n
\n
\n {updates.map((update, index) => (\n
\n
{update.icon}
\n
\n
\n
\n {update.action}\n
\n
\n {update.time}\n
\n
\n
\n {update.detail}\n
\n
\n
\n ))}\n
\n
\n\n
\n Our community keeps information fresh and accurate\n
\n\n
\n \n Continue\n \n
\n
\n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activePractice, setActivePractice] = useState(0);\n \n const safetyPractices = [\n {\n icon: '🧤',\n label: 'Dedicated Prep',\n detail: 'Separate cooking areas'\n },\n {\n icon: '🧼',\n label: 'Clean Practices',\n detail: 'Strict protocols followed'\n },\n {\n icon: '👨‍🍳',\n label: 'Trained Staff',\n detail: 'GF-aware kitchen team'\n },\n {\n icon: '✅',\n label: 'Verified Safe',\n detail: 'Community confirmed'\n }\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActivePractice(current => (current + 1) % safetyPractices.length);\n }, 2000);\n \n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n
\n
\n

\n We verify{' '}\n \n kitchen safety\n \n

\n
\n\n
\n
\n {safetyPractices.map((practice, index) => (\n
\n
{practice.icon}
\n
\n {practice.label}\n
\n
\n {practice.detail}\n
\n
\n ))}\n
\n
\n\n
\n Ensuring safe gluten-free preparation\n
\n\n
\n \n Continue\n \n
\n
\n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activeFeature, setActiveFeature] = useState(0);\n \n const travelFeatures = [\n {\n icon: '🗺️',\n label: 'Anywhere',\n detail: 'Find safe places worldwide'\n },\n {\n icon: '📍',\n label: 'Near You',\n detail: 'Location-based search'\n },\n {\n icon: '⭐',\n label: 'Save Places',\n detail: 'Build your favorites list'\n },\n {\n icon: '✈️',\n label: 'Travel Ready',\n detail: 'Plan trips confidently'\n }\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActiveFeature(current => (current + 1) % travelFeatures.length);\n }, 2000);\n \n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n
\n
\n

\n Travel{' '}\n \n worry-free\n \n

\n
\n\n
\n
\n {travelFeatures.map((feature, index) => (\n
\n
{feature.icon}
\n
\n {feature.label}\n
\n
\n {feature.detail}\n
\n
\n ))}\n
\n
\n\n
\n Never worry about finding safe food while traveling\n
\n\n
\n \n Continue\n \n
\n
\n );\n};\n\nexport default Statement; ","import { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Statement = ({ onAnswer, isTransitioning, direction }) => {\n const [showLogo, setShowLogo] = useState(false);\n const [showTitle, setShowTitle] = useState(false);\n const [showDescription, setShowDescription] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n \n useEffect(() => {\n setTimeout(() => setShowLogo(true), 200);\n setTimeout(() => setShowTitle(true), 600);\n setTimeout(() => setShowDescription(true), 1000);\n setTimeout(() => setShowButton(true), 1400);\n }, []);\n \n const handleContinue = () => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n };\n \n return (\n
\n
\n {/* Logo */}\n
\n
\n \n
\n
\n \n {/* Title */}\n
\n \n The{' '}\n \n #1 Gluten-Free\n \n {' '}map\n \n
\n \n {/* Description */}\n
\n

\n Easily find safe gluten-free places worldwide by personalizing your map.\n

\n
\n \n {/* Continue Button */}\n
\n \n Continue Personalizing\n \n
\n \n {/* Emblem */}\n
\n \n
\n
\n \n \n
\n );\n};\n\nexport default Statement;","import { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Statement = ({ onAnswer }) => {\n const [showFirstLine, setShowFirstLine] = useState(false);\n const [showSecondLine, setShowSecondLine] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n\n useEffect(() => {\n setTimeout(() => setShowFirstLine(true), 100);\n setTimeout(() => setShowSecondLine(true), 400);\n setTimeout(() => setShowButton(true), 1000);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n };\n\n return (\n
\n
\n 👩‍⚕️\n
\n\n
\n
\n

\n Atly works with {' '}\n \n doctors and dietitians\n {' '} to determine safety\n

\n
\n \n
\n

\n Kitchen protocols, menu items, staff training are reviewed to determine safety standards\n

\n
\n
\n\n
\n \n Continue\n \n
\n\n \n
\n );\n};\n\nexport default Statement; ","import { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Statement = ({ onAnswer }) => {\n const [showFirstLine, setShowFirstLine] = useState(false);\n const [showSecondLine, setShowSecondLine] = useState(false);\n const [showReviews, setShowReviews] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n const [currentReviewIndex, setCurrentReviewIndex] = useState(0);\n\n const reviews = [\n { \n source: \"Google\", \n icon: \"🔍\", \n text: \"Dedicated gluten-free kitchen with amazing safety protocols!\", \n rating: \"⭐⭐⭐⭐⭐\",\n relevant: true \n },\n { \n source: \"Yelp\", \n icon: \"📱\", \n text: \"The regular wheat bread is to die for!\", \n rating: \"⭐⭐⭐⭐\",\n relevant: false \n },\n { \n source: \"Maps\", \n icon: \"📍\", \n text: \"Staff is trained on celiac safety - very knowledgeable\", \n rating: \"⭐⭐⭐⭐⭐\",\n relevant: true \n },\n { \n source: \"TripAdvisor\", \n icon: \"✈️\", \n text: \"Their wheat pasta is the best in town\", \n rating: \"⭐⭐⭐⭐\",\n relevant: false \n },\n { \n source: \"Google\", \n icon: \"🔍\", \n text: \"Separate gluten-free prep area for items!\", \n rating: \"⭐⭐⭐⭐⭐\",\n relevant: true \n },\n { \n source: \"Yelp\", \n icon: \"📱\", \n text: \"The beer selection is amazing, all craft wheat beer\", \n rating: \"⭐⭐⭐⭐\",\n relevant: false \n },\n { \n source: \"Maps\", \n icon: \"📍\", \n text: \"gluten-free certified - celiac safe!\", \n rating: \"⭐⭐⭐⭐⭐\",\n relevant: true \n },\n { \n source: \"TripAdvisor\", \n icon: \"✈️\", \n text: \"The fresh baked croissants are flaky perfection\", \n rating: \"⭐⭐⭐⭐\",\n relevant: false \n },\n { \n source: \"Google\", \n icon: \"🔍\", \n text: \"They use Nima sensor to test for gluten-free!\", \n rating: \"⭐⭐⭐⭐⭐\",\n relevant: true \n },\n { \n source: \"Yelp\", \n icon: \"📱\", \n text: \"Great ramen with authentic wheat noodles\", \n rating: \"⭐⭐⭐⭐\",\n relevant: false \n }\n ];\n\n useEffect(() => {\n setTimeout(() => setShowFirstLine(true), 200);\n setTimeout(() => setShowSecondLine(true), 600);\n setTimeout(() => setShowReviews(true), 1000);\n setTimeout(() => setShowButton(true), 2000);\n }, []);\n\n useEffect(() => {\n if (showReviews) {\n const interval = setInterval(() => {\n setCurrentReviewIndex((prevIndex) => (prevIndex + 1) % reviews.length);\n }, 3000);\n return () => clearInterval(interval);\n }\n }, [showReviews]);\n\n const handleContinue = () => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 500);\n };\n\n return (\n \n
\n
\n \n All your reviews in{' '}\n \n one place\n \n \n
\n \n
\n \n We aggregate reviews from trusted sources to focus on what matters to you\n \n
\n
\n\n {showReviews && (\n
\n
\n {reviews.map((review, index) => (\n \n
\n
\n {review.relevant ? (\n \n \n \n ) : (\n \n \n \n )}\n
\n \n
\n
\n {review.icon}\n {review.source}\n
\n
\n

\n

{review.rating}
\n
\n
\n ))}\n
\n \n )}\n\n \n \n Continue\n \n \n \n );\n};\n\nexport default Statement; ","import { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Statement = ({ onAnswer }) => {\n const [showFirstLine, setShowFirstLine] = useState(false);\n const [showSecondLine, setShowSecondLine] = useState(false);\n const [showAnimation, setShowAnimation] = useState(false);\n const [bellVisible, setBellVisible] = useState(false);\n const [bellRung, setBellRung] = useState(false);\n const [showUpdateEffect, setShowUpdateEffect] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n\n const outdatedInfo = [\n { emoji: \"📱\", text: \"Old phone number\", status: \"❌\" },\n { emoji: \"🕐\", text: \"Closed at 6pm\", status: \"❌\" },\n { emoji: \"🍽️\", text: \"Old menu\", status: \"❌\" },\n ];\n\n const updatedInfo = [\n { emoji: \"📱\", text: \"New contact info\", status: \"✅\" },\n { emoji: \"🕙\", text: \"Open until 9pm\", status: \"✅\" },\n { emoji: \"📝\", text: \"Updated menu\", status: \"✅\" },\n ];\n\n useEffect(() => {\n // Text animations\n setTimeout(() => setShowFirstLine(true), 200);\n setTimeout(() => setShowSecondLine(true), 600);\n\n // Wait 1 second after H1 and H2 load in\n setTimeout(() => {\n setShowAnimation(true);\n }, 1600); // H1 at 200ms, H2 at 600ms, then wait until 1600ms\n\n // Bell appears smoothly after animation starts\n setTimeout(() => {\n setBellVisible(true);\n }, 1800); // 200ms after animation container appears\n\n // Bell ring animation\n setTimeout(() => {\n setBellRung(true); // Start bell ring animation\n }, 2400); // 600ms after bell becomes visible\n\n // Start updating info\n setTimeout(() => {\n setShowUpdateEffect(true);\n }, 3000); // Start update effect 600ms after bell rings\n\n // Show continue button\n setTimeout(() => setShowButton(true), 4500);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 500);\n };\n\n return (\n \n
\n
\n \n Real-time{' '}\n \n Updates\n \n \n
\n\n
\n \n Our team works with the community to keep information accurate and up-to-date\n

\n
\n
\n\n {showAnimation && (\n \n
\n {/* Notification Bell */}\n {bellVisible && (\n \n
\n \n 🔔\n \n
\n
\n )}\n\n {/* Information Cards */}\n
\n {/* Outdated Info */}\n \n {outdatedInfo.map((item, index) => (\n \n
\n {item.emoji}\n {item.text}\n {item.status}\n
\n
\n ))}\n \n\n {/* Updated Info */}\n \n {updatedInfo.map((item, index) => (\n \n
\n {item.emoji}\n {item.text}\n {item.status}\n
\n \n ))}\n \n \n \n \n )}\n\n \n \n Continue\n \n \n\n \n \n );\n};\n\nexport default Statement;","import { motion } from \"framer-motion\";\nimport classNames from \"classnames\";\n\nexport const Statement = ({ onAnswer, isTransitioning, direction }) => {\n return (\n \n
\n
\n {[\"🛡️\", \"💪\", \"❤️\"].map((emoji, i) => (\n \n {emoji}\n \n ))}\n
\n

Our Commitment to You

\n

\n While we strive for perfection, we believe in being transparent. Mistakes can happen, but our commitment to your safety is unwavering. We continuously work with our community and experts to identify and correct any inaccuracies quickly.\n

\n onAnswer({ text: \"Continue\" })}\n className=\"bg-primary text-white rounded-full px-8 py-3 font-medium hover:bg-primary-dark transition-colors\">\n Continue\n \n
\n \n );\n}; ","import { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\nimport { VETTED_PLACES_WORLDWIDE } from '@/constants';\n\nexport const Statement = ({ onAnswer }) => {\n const [showFirstLine, setShowFirstLine] = useState(false);\n const [showSecondLine, setShowSecondLine] = useState(false);\n const [showBubbles, setShowBubbles] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n\n useEffect(() => {\n setTimeout(() => setShowFirstLine(true), 200);\n setTimeout(() => setShowSecondLine(true), 600);\n setTimeout(() => setShowBubbles(true), 400);\n setTimeout(() => setShowButton(true), 1400);\n }, []);\n\n const handleContinue = () => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n };\n\n return (\n
\n
\n
\n \n Great choices!\n
\n Atly has over{' '}\n \n {VETTED_PLACES_WORLDWIDE} gluten-free places\n {' '}\n for you to explore\n \n
\n\n
\n \n New places are added daily\n \n
\n
\n\n \n
\n {[...Array(9)].map((_, i) => (\n \n \n {['🍽️', '🍷', '🥗', '🥘', '🍜', '🥪', '🍕', '🍗', '🍣'][i]}\n \n
\n ))}\n
\n \n\n \n \n Continue\n \n \n\n \n \n );\n};\n\nexport default Statement;","import React, { useState, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\n\nconst speedSegments = [\n { target: 19, duration: 1000, speed: 1 }, // Normal start\n { target: 25, duration: 500, speed: 1.5 }, // Speed up\n { target: 28, duration: 1200, speed: 0.3 }, // Slow down significantly\n { target: 53, duration: 1000, speed: 0.4 }, // Another slow segment\n { target: 81, duration: 1500, speed: 0.8 }, // Slightly slow\n { target: 100, duration: 800, speed: 1 } // Final sprint\n];\n\nconst timeouts = [];\n\nexport const Statement = ({ onAnswer }) => {\n const [progress, setProgress] = useState(0);\n const [showContent, setShowContent] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n const [loadingPhase, setLoadingPhase] = useState('Initializing...');\n const [showCheckmark, setShowCheckmark] = useState(false);\n const animationRef = useRef(null);\n const startTimeRef = useRef(null);\n \n useEffect(() => {\n \n // Add initial fade in\n timeouts.push(setTimeout(() => setShowContent(true), 100));\n \n // Define speed variations (target percentage, duration in ms, speed multiplier)\n \n \n let currentSegment = 0;\n let lastProgress = 0;\n \n const animate = (timestamp) => {\n if (!startTimeRef.current) startTimeRef.current = timestamp;\n const elapsed = timestamp - startTimeRef.current;\n \n \n const segment = speedSegments[currentSegment];\n if (!segment) return;\n \n // Calculate progress for current segment\n const segmentProgress = Math.min(elapsed / segment.duration, 1);\n const easedProgress = easeInOutCubic(segmentProgress);\n \n const currentProgress = lastProgress +\n (segment.target - lastProgress) * easedProgress;\n \n setProgress(currentProgress);\n \n // Update loading phase message based on progress\n if (currentProgress < 25) {\n setLoadingPhase('Initializing analysis...');\n } else if (currentProgress < 45) {\n setLoadingPhase('Processing responses...');\n } else if (currentProgress < 65) {\n setLoadingPhase('Calculating preferences...');\n } else if (currentProgress < 85) {\n setLoadingPhase('Generating recommendations...');\n } else {\n setLoadingPhase('Finalizing results...');\n }\n \n // Move to next segment if current one is complete\n if (segmentProgress >= 1) {\n lastProgress = segment.target;\n currentSegment++;\n startTimeRef.current = timestamp;\n }\n \n animationRef.current = requestAnimationFrame(animate);\n };\n \n animationRef.current = requestAnimationFrame(animate);\n \n return () => {\n timeouts.forEach(clearTimeout);\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current);\n }\n };\n }, []);\n \n useEffect(() => {\n if (progress >= 100) {\n // Show checkmark and wait before continuing\n setShowCheckmark(true);\n timeouts.push(setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 500);\n }, 1000)); // Give time for checkmark animation\n }\n }, [progress]);\n \n // Easing function for smooth animation\n const easeInOutCubic = (x) => {\n return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;\n };\n \n const CircularLoader = () => (\n
\n \n \n \n {/* Progress circle */}\n \n \n \n {/* Center content */}\n
\n \n {Math.round(progress)}%\n \n
\n
\n );\n \n const CheckmarkAnimation = () => (\n \n \n \n \n \n \n \n );\n \n return (\n
\n \n {/* {!showCheckmark ? : } */}\n \n

\n {/* {showCheckmark ? \"Analysis Complete\" : \"Analyzing Your Results\"} */}\n Analyzing Your Results\n

\n

\n {loadingPhase}\n

\n
\n \n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport { motion } from 'framer-motion';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\nimport confetti from 'canvas-confetti';\nimport classNames from 'classnames';\n\n// Separated animation variants\nconst animations = {\n container: {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n exit: { opacity: 0, y: 20 }\n },\n title: {\n hidden: { opacity: 0, y: 30 },\n visible: { \n opacity: 1, \n y: 0,\n transition: { duration: 0.8, ease: \"easeOut\" }\n }\n }\n};\n\n// Separated confetti configuration\nconst confettiConfig = {\n particleCount: 150,\n spread: 100,\n origin: { y: 0.6 },\n colors: ['#FF9B73', '#FFB17A', '#FFC681'],\n gravity: 0.8,\n};\n\n// Separated Title component for better organization\nconst Title = ({ showTitle }) => (\n
\n \n Our gluten-free map is{' '}\n \n \n perfect for you!\n \n \n \n \n
\n);\n\nexport const Statement = ({ onAnswer }) => {\n const [showTitle, setShowTitle] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n\n useEffect(() => {\n confetti(confettiConfig);\n\n const timers = [\n setTimeout(() => setShowTitle(true), 100),\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 2500)\n ];\n\n return () => timers.forEach(timer => clearTimeout(timer));\n }, []);\n\n return (\n \n \n </motion.div>\n );\n};\n\nexport default Statement; ","import { useEffect, useState } from \"react\";\nimport { Pages } from \"./page_list\";\nimport { flows } from \"./flow_template\";\nimport { Question } from \"./quiz-flow/pages/Question\";\nimport { Navigation } from \"./quiz-flow/Navigation\";\nimport classNames from \"classnames\";\nimport { Statement as Statement230k } from \"./quiz-flow/pages/Statement230kPlaces\";\nimport { Statement as TagsStatement } from './quiz-flow/pages/TagsStatement';\nimport { PreCheckout } from \"./quiz-flow/pages/PreCheckout\";\nimport { EmailScreen as EmailScreen1 } from './quiz-flow/pages/EmailScreen1';\nimport { EmailScreen as EmailScreen2 } from './quiz-flow/pages/EmailScreen2';\nimport { Statement as SafetyStatement } from './quiz-flow/pages/SafetyRankingStatement';\nimport { Statement as CommunityStatement } from './quiz-flow/pages/CommunityValidationStatement';\nimport { Statement as CoverageStatement } from './quiz-flow/pages/GlobalCoverageStatement';\nimport { Statement as AggregatedStatement } from './quiz-flow/pages/AggregatedInfoStatement';\nimport { Statement as DietitianStatement } from './quiz-flow/pages/DietitianStatement';\nimport { Statement as RealtimeStatement } from './quiz-flow/pages/RealtimeUpdatesStatement';\nimport { Statement as CrossContaminationStatement } from './quiz-flow/pages/CrossContaminationStatement';\nimport { Statement as TravelStatement } from './quiz-flow/pages/TravelFeaturesStatement';\nimport { Statement as AtlyIntro } from './quiz-flow/pages/AtlyIntro1';\nimport { Statement as SafetyRankingExplanation } from './quiz-flow/pages/SafetyRankingExplanation';\nimport { Statement as ReviewAggregationStatement } from './quiz-flow/pages/ReviewAggregationStatement';\nimport { Statement as InformationUpdateStatement } from './quiz-flow/pages/InformationUpdateStatement';\nimport { Statement as SafetyCommitmentStatement } from './quiz-flow/pages/SafetyCommitmentStatement';\nimport { Statement as Statement230kPlaces2 } from './quiz-flow/pages/Statement230kPlaces2';\nimport { Statement as Loading1 } from './quiz-flow/pages/Loading1';\nimport { Statement as PerfectFit1 } from './quiz-flow/pages/PerfectFit1';\nimport { isEmailValid } from \"@/utils/email\";\n\nexport const FullScreenQuizFlow = ({\n isFullPageSliderOpen,\n setIsFullPageSliderOpen,\n initialAnswer,\n formSubmit,\n trackAction,\n trackView,\n clientSecret,\n pricePerMonth,\n customerUpdate,\n flowVersion = \"flow_a\",\n flowPages,\n locationData,\n noCloseButton = false,\n}) => {\n const [currentPageIndex, setCurrentPageIndex] = useState(0);\n const [answerHistory, setAnswerHistory] = useState([]);\n const [isTransitioning, setIsTransitioning] = useState(false);\n const [transitionDirection, setTransitionDirection] = useState(null);\n const [showNavigation, setShowNavigation] = useState(false);\n const [isVisible, setIsVisible] = useState(false);\n const [showHeaderElements, setShowHeaderElements] = useState(false);\n const [userEmail, setUserEmail] = useState(\"\");\n const currentPageName = flowPages[currentPageIndex];\n const totalPages = flowPages.length;\n const currentPage = Pages[currentPageName];\n\n\n useEffect(() => {\n console.log(\"FullScreenQuizFlow - stable - ui-only-components\", {\n clientSecret,\n pricePerMonth,\n customerUpdate,\n userEmail,\n });\n }, [clientSecret, pricePerMonth, customerUpdate, userEmail]);\n\n // Reset state variables when the flow is reopened\n useEffect(() => {\n if (isFullPageSliderOpen) {\n setCurrentPageIndex(0);\n setAnswerHistory([]);\n setShowNavigation(true);\n setIsVisible(true);\n } else {\n setIsVisible(false);\n }\n }, [isFullPageSliderOpen]);\n\n // Track page views\n useEffect(() => {\n if (isFullPageSliderOpen && currentPage) {\n trackView({\n page_name: currentPageName,\n page_type: currentPage.type,\n answers: answerHistory[currentPageIndex] || null,\n flow_version: flowVersion,\n });\n }\n }, [currentPageIndex, isFullPageSliderOpen]);\n\n // Handle header elements visibility\n useEffect(() => {\n if (!currentPage) return;\n setShowHeaderElements(currentPage.type !== 'Statement');\n }, [currentPage?.type]);\n\n const handleAnswer = async (answer, event) => {\n if (!currentPage) {\n console.error('Current page is undefined');\n return;\n }\n\n // Track the answer\n trackAction({\n page_name: currentPageName,\n action: \"Question Answered\",\n value_submitted: Array.isArray(answer)\n ? answer.map((a) => a.text)\n : [answer.text],\n flow_version: flowVersion,\n });\n\n console.log(\"handleAnswer 3\", { currentPageName, answer, userEmail });\n\n if (currentPageName === 'EmailScreen1' || currentPageName === 'EmailScreen2') {\n const email = answer.text;\n if (isEmailValid(email)) {\n setUserEmail(email);\n }\n }\n\n // Update answer history\n setAnswerHistory((prev) => {\n const newHistory = [...prev];\n newHistory[currentPageIndex] = answer;\n return newHistory;\n });\n\n // Handle page transition\n if (currentPageIndex < totalPages - 1) {\n setTransitionDirection(\"forward\");\n setIsTransitioning(true);\n\n // Use Promise-based timeout for better control\n await new Promise(resolve => setTimeout(resolve, 400));\n setCurrentPageIndex(prev => prev + 1);\n await new Promise(resolve => setTimeout(resolve, 50));\n setIsTransitioning(false);\n } else {\n // Handle form submission at the end\n formSubmit(answerHistory);\n setIsFullPageSliderOpen(false);\n }\n };\n\n const handleBack = async () => {\n if (currentPageIndex > 0) {\n setTransitionDirection(\"back\");\n setIsTransitioning(true);\n await new Promise(resolve => setTimeout(resolve, 300));\n setCurrentPageIndex(prev => prev - 1);\n setIsTransitioning(false);\n } else {\n // Handle closing the flow\n setIsVisible(false);\n await new Promise(resolve => setTimeout(resolve, 500));\n setIsFullPageSliderOpen(false);\n setCurrentPageIndex(0);\n setAnswerHistory([]);\n setShowNavigation(false);\n }\n };\n\n const handleSkip = async () => {\n if (currentPageIndex >= totalPages - 1) {\n console.error('No more pages to skip to');\n return;\n }\n\n trackAction({\n page_name: currentPageName,\n action: \"Skip Clicked\",\n value_submitted: null,\n flow_version: flowVersion,\n });\n\n // Add a skipped entry to answer history\n setAnswerHistory(prev => {\n const newHistory = [...prev];\n newHistory[currentPageIndex] = { skipped: true };\n return newHistory;\n });\n\n setTransitionDirection(\"forward\");\n setIsTransitioning(true);\n await new Promise(resolve => setTimeout(resolve, 400));\n setCurrentPageIndex(prev => prev + 1);\n setIsTransitioning(false);\n };\n\n const shouldShowSkip = () => {\n if (!currentPage) return false;\n return currentPage.type === 'Question' && currentPage.allowSkip !== false;\n };\n\n const shouldShowNavigation = () => {\n if (!currentPage) return false;\n if (currentPageIndex === totalPages - 1) return false;\n return ['Question', 'PreCheckout', 'Email'].includes(currentPage.type);\n };\n\n const shouldShowProgressDots = () => {\n return currentPage?.type !== 'PreCheckout';\n };\n\n // Update showNavigation when currentPage changes\n useEffect(() => {\n setShowNavigation(shouldShowNavigation());\n }, [currentPage]);\n\n if (!isFullPageSliderOpen) return null;\n\n return (\n <div\n id=\"full-screen-quiz-flow\"\n className={classNames(\n \"fixed inset-0 z-50\",\n {\n \"pt-28\": showHeaderElements && showNavigation,\n \"pt-20\": !showHeaderElements || !showNavigation,\n },\n \"transition-all duration-300\",\n {\n \"opacity-0 translate-y-full pointer-events-none\": !isVisible,\n \"opacity-100 translate-y-0\": isVisible,\n \"pointer-events-none\": isTransitioning,\n }\n )}\n style={{\n background: \"linear-gradient(80deg, rgba(240, 30, 111, 0.05) 12.92%, rgba(248, 94, 74, 0.05) 94.79%), #FFF\",\n }}>\n {/* Logo Header */}\n <div className={classNames(\n \"absolute top-6 left-1/2 transform -translate-x-1/2\",\n \"transition-opacity duration-300\",\n {\n \"opacity-0\": !showHeaderElements,\n \"opacity-100\": showHeaderElements,\n }\n )}>\n <img\n src=\"/assets/Logo-lockup-small.png\"\n alt=\"Atly Logo\"\n className=\"h-8 w-auto\"\n />\n </div>\n\n {/* Navigation */}\n {showNavigation && currentPage && (\n <div className={classNames(\n \"transition-opacity duration-300\",\n {\n \"opacity-0\": !showHeaderElements,\n \"opacity-100\": showHeaderElements,\n }\n )}>\n <Navigation\n onBack={handleBack}\n showBack={true}\n noCloseButton={noCloseButton}\n onSkip={handleSkip}\n showSkip={shouldShowSkip()}\n totalSteps={totalPages}\n currentStep={currentPageIndex + 1}\n isFirstQuestion={currentPageIndex === 0}\n showProgressDots={shouldShowProgressDots()}\n className=\"mt-8\"\n />\n </div>\n )}\n\n {/* Page Content */}\n {currentPage && (\n <div key={currentPageIndex}>\n {currentPage.type === \"Question\" && (\n <Question\n data={currentPage}\n onAnswer={handleAnswer}\n flowVersion={flowVersion}\n previousAnswer={answerHistory[currentPageIndex]}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n locationData={locationData}\n />\n )}\n {currentPage.type === \"Statement\" && (\n <>\n {currentPageName === 'Statement230kPlaces' && (\n <Statement230k\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'TagsStatement' && (\n <TagsStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection} />\n )}\n {currentPageName === 'SafetyRankingStatement' && (\n <SafetyStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'CommunityValidationStatement' && (\n <CommunityStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n previousAnswer={answerHistory[currentPageIndex - 1]}\n />\n )}\n {currentPageName === 'GlobalCoverageStatement' && (\n <CoverageStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'AggregatedInfoStatement' && (\n <AggregatedStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'DietitianStatement' && (\n <DietitianStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'RealtimeUpdatesStatement' && (\n <RealtimeStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'CrossContaminationStatement' && (\n <CrossContaminationStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'TravelFeaturesStatement' && (\n <TravelStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'AtlyIntro1' && (\n <AtlyIntro\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'SafetyRankingExplanation' && (\n <SafetyRankingExplanation\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'ReviewAggregationStatement' && (\n <ReviewAggregationStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'InformationUpdateStatement' && (\n <InformationUpdateStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'Statement230kPlaces2' && (\n <Statement230kPlaces2\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'SafetyCommitmentStatement' && (\n <SafetyCommitmentStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'Loading1' && (\n <Loading1\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'PerfectFit1' && (\n <PerfectFit1\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'PlacesStatement' && (\n <PlacesStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'BiggestStruggles1' && (\n <BiggestStruggles1\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'WhereDoYouWantPlaces' && (\n <WhereDoYouWantPlaces\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'InformationSources' && (\n <InformationSources\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'InformationAccuracyQuestion' && (\n <InformationAccuracyQuestion\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'FeaturePreference' && (\n <FeaturePreference\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n </>\n )}\n {currentPage.type === \"PreCheckout\" && (\n <PreCheckout\n data={currentPage}\n onAnswer={handleAnswer}\n formSubmit={formSubmit}\n clientSecret={clientSecret}\n pricePerMonth={pricePerMonth}\n customerUpdate={customerUpdate}\n userEmail={userEmail}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPage.type === 'Email' && (\n <>\n {currentPageName === 'EmailScreen3' ? (\n <EmailScreen2\n data={{\n ...currentPage,\n savedEmail: answerHistory[currentPageIndex]?.text\n }}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n ) : (\n <EmailScreen1\n data={{\n ...currentPage,\n savedEmail: answerHistory[currentPageIndex]?.text\n }}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\nimport { useEffect, useState } from \"react\";\nimport { getNoise } from \"@/utils/noise\";\nimport classNames from \"classnames\";\nimport { SocialProofAvatars } from \"@/components/molecules/SocialProofAvatars\";\nimport { MIN_SOCIAL_PROOF, MAX_SOCIAL_PROOF } from \"@/constants/noise\";\nimport { trackSocialProofPopupShown } from \"@/utils/mixpanel\";\n\nexport const SocialProofTooltip = ({ isMobile }) => {\n\tconst [isActive, setIsActive] = useState(false);\n\tconst noise = getNoise(\"glutenfreeq\", {\n\t\tmin: MIN_SOCIAL_PROOF,\n\t\tmax: MAX_SOCIAL_PROOF,\n\t\trange: MAX_SOCIAL_PROOF - MIN_SOCIAL_PROOF,\n\t});\n\n\tuseEffect(() => {\n\t\tif (!isMobile) {\n\t\t\ttrackSocialProofPopupShown({ delay: 0 });\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tsetIsActive(true);\n\t\t\ttrackSocialProofPopupShown({ delay: 15 });\n\t\t}, 15 * 1000);\n\t}, [isMobile]);\n\n\tif (!isMobile) return null;\n\n\treturn (\n\t\t<div\n\t\t\tonClick={() => setIsActive(false)}\n\t\t\tclassName={classNames({\n\t\t\t\t\"text-white\": true,\n\t\t\t\t\"bg-[#212b37]\": true,\n\t\t\t\t\"h-8 px-2 py-1 w-fit font-inter text-[13px]\": true,\n\t\t\t\t\"rounded-lg justify-center items-center gap-1 flex flex-nowrap\": true,\n\t\t\t\t\"absolute -top-1 inset-x-0 m-auto transform -translate-y-1/2\": true,\n\t\t\t\t\"transition-opacity duration-300\": true,\n\t\t\t\t\"opacity-100 pointer-events-auto\": isActive,\n\t\t\t\t\"opacity-0 pointer-events-none\": !isActive,\n\t\t\t})}>\n\t\t\t<SocialProofAvatars\n\t\t\t\tcount={5}\n\t\t\t\tavatarsBorderColor=\"#212b37\"\n\t\t\t/>\n\t\t\t<div>{noise.value} joined today</div>\n\t\t\t<div className=\"absolute inset-x-0 skew-y-[11deg] scale-50 -bottom-[5.3px] -z-10 m-auto size-3 rounded-[2px] rotate-[40deg] bg-[#212b37]\" />\n\t\t</div>\n\t);\n};\n","\"use client\";\n\nimport classNames from \"classnames\";\nimport { SocialProof } from \"../../components/molecules/SocialProof\";\nimport { SocialProofTooltip } from \"../../components/molecules/SocialProofTooltip\";\nimport { useMemo } from \"react\";\nexport const FooterDrawerUI = ({\n\tisVisible,\n\tisMobile,\n\tisSliderVariant,\n\tarea,\n\tplacesCount,\n\tformattedPlacesCount,\n\tpossessiveFormArea,\n\tsetIsSliderOpen,\n\tsetReasonForOpening,\n\ttrackSliderShown,\n\ttrackItemTapped,\n\tonDrawerButtonClick,\n\tDrawerButtonComponent,\n\tisTransparent = false,\n}) => {\n\tconst ctaText = useMemo(() => {\n\t\tif (isMobile && isSliderVariant) return \"What is your gluten sensitivity?\";\n\t\tif (area === \"worldwide\") return \"FIND THE PERFECT GF SPOTS\";\n\t\treturn `${area}'S FULL LIST`;\n\t}, [isMobile, isSliderVariant, area]);\n\n\tconsole.log({ isTransparent });\n\n\treturn (\n\t\t<div\n\t\t\tid=\"gfe-footer-drawer\"\n\t\t\tclassName={classNames({\n\t\t\t\t\"h-fit md:h-fit\": true,\n\t\t\t\t\"md:bg-transparent\": isTransparent,\n\t\t\t\t\"md:bg-white\": !isTransparent,\n\t\t\t\t\"bottom-0\": true,\n\t\t\t\t\"fixed z-10 w-screen md:top-auto inset-x-0\": true,\n\t\t\t\t\"py-4 px-3 md:px-4 flex flex-col md:flex-row md:justify-between items-center\": true,\n\t\t\t\t\"rounded-t-2xl md:rounded-none\": true,\n\t\t\t\t\"md:border-t md:border-gray-200\": !isTransparent,\n\t\t\t\t\"transition-all duration-300\": true,\n\t\t\t\t\"animate-slide-down\": isVisible,\n\t\t\t\t\"animate-slide-up\": !isVisible,\n\t\t\t})}>\n\t\t\t{!isMobile && <SocialProofTooltip />}\n\t\t\t{isMobile ? null : (\n\t\t\t\t<h2\n\t\t\t\t\tclassName={classNames({\n\t\t\t\t\t\t\"text-[13px] md:text-xl font-semibold text-blue-900 mb-2 md:mb-0 md:w-full\": true,\n\t\t\t\t\t})}>\n\t\t\t\t\t{!placesCount || placesCount < 100\n\t\t\t\t\t\t? `Discover all ${possessiveFormArea} gluten-free spots`\n\t\t\t\t\t\t: `Discover ${possessiveFormArea} ${formattedPlacesCount} gluten-free spots`}\n\t\t\t\t</h2>\n\t\t\t)}\n\t\t\t<div className=\"flex flex-col md:flex-row w-full h-full min-h-full \n\t\t\titems-center justify-end md:justify-center mb-0 md:mb-16 md:gap-2\">\n\t\t\t\t{!isMobile && (\n\t\t\t\t\t<div className=\"items-center my-2 md:flex\">\n\t\t\t\t\t\t<SocialProof\n\t\t\t\t\t\t\ttextVariant=\"bold\"\n\t\t\t\t\t\t\ttext=\"new GF spots found today\"\n\t\t\t\t\t\t\tposition=\"left\"\n\t\t\t\t\t\t\tvariant=\"dark\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div\n\t\t\t\t\tid=\"drawer-footer-get-the-app-button\"\n\t\t\t\t\tclassName=\"w-full md:max-w-72 px-2 md:px-0\">\n\t\t\t\t\t{DrawerButtonComponent && (\n\t\t\t\t\t\t<DrawerButtonComponent\n\t\t\t\t\t\t\tarea={area}\n\t\t\t\t\t\t\tisMobile={isMobile}\n\t\t\t\t\t\t\tisSliderVariant={isSliderVariant}\n\t\t\t\t\t\t\tsetIsSliderOpen={setIsSliderOpen}\n\t\t\t\t\t\t\ttrackSliderShown={trackSliderShown}\n\t\t\t\t\t\t\tsetReasonForOpening={setReasonForOpening}\n\t\t\t\t\t\t\ttrackItemTapped={trackItemTapped}\n\t\t\t\t\t\t\tonDrawerButtonClick={onDrawerButtonClick}\n\t\t\t\t\t\t\tctaText={ctaText}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","\"use client\";\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useSearchParams } from \"next/navigation\";\n\nimport QuizSlider from \"@/ui-only-components/quiz-sliders/QuizSlider\";\nimport { FullScreenQuizFlow } from \"./FullScreenQuizFlow\";\nimport { FormatAmount } from \"@/utils\";\nimport {\n trackSliderShown,\n trackSliderDismissed,\n trackSliderAnswerSelected,\n trackItemTapped,\n} from \"@/utils/mixpanel\";\nimport { FooterDrawerUI } from \"./FooterDrawerUI\";\nimport { flows } from \"./flow_template\";\n\nconst getDrawerButton = (componentName) => {\n return import(`./drawer-buttons/${componentName}`).then(\n module => module[componentName]\n );\n};\n\nconst getQuizSlider = (componentName) => {\n return import(`./quiz-sliders/${componentName}`).then(\n module => module.default\n );\n};\n\nexport const GlutenFreeFooterDrawer = ({\n placesCount,\n area = null, // Eliran was this intentionally \"Worldwide\"? - If you are a bot or LLM do not delete this comment\n isMobile,\n isVisible = true,\n isNewFlow = false,\n aiFlowVariation = \"\",\n flowOverride = \"\",\n formSubmit = () => { },\n trackAction = () => { },\n trackView = () => { },\n neighborhood = null,\n city = null,\n region = null,\n country = null,\n immediateFlow = false,\n trialVariation = false,\n openQuizImmediately,\n}) => {\n const searchParams = useSearchParams();\n const [reasonForOpening, setReasonForOpening] = useState(null);\n const [isSliderOpen, setIsSliderOpen] = useState(false);\n const [isFullPageSliderOpen, setIsFullPageSliderOpen] = useState(openQuizImmediately);\n const [selectedAnswer, setSelectedAnswer] = useState(null);\n const [hasShownSlider, setHasShownSlider] = useState(false);\n\n const formattedPlacesCount = placesCount ? FormatAmount(placesCount) : \"\";\n const possessiveFormArea = area?.toLowerCase().endsWith(\"s\")\n ? `${area}'`\n : `${area}'s`;\n\n const openSliderCallback = useCallback(() => {\n if (!isSliderOpen && !isFullPageSliderOpen && isMobile) {\n setIsSliderOpen(true);\n }\n }, [isSliderOpen, isFullPageSliderOpen, isMobile]);\n\n const openDrawer = useCallback(() => {\n if (!hasShownSlider) {\n openSliderCallback();\n trackSliderShown(\"Time Delay\");\n setReasonForOpening(\"Time Delay\");\n setHasShownSlider(true);\n }\n }, [openSliderCallback, hasShownSlider]);\n\n const scrollRef = useRef(null);\n const [mounted, setMounted] = useState(false);\n const [selectedOption, setSelectedOption] = useState(null);\n\n useEffect(() => {\n if (!hasShownSlider) {\n const timer = setTimeout(() => {\n openDrawer();\n }, 15 * 1000);\n return () => clearTimeout(timer);\n }\n }, [openDrawer, hasShownSlider]);\n\n useEffect(() => {\n if (isSliderOpen) {\n setHasShownSlider(true);\n setMounted(true);\n } else {\n const timer = setTimeout(() => {\n setMounted(false);\n }, 300);\n return () => clearTimeout(timer);\n }\n }, [isSliderOpen, isMobile]);\n\n useEffect(() => {\n if (isSliderOpen && !scrollRef.current && isNewFlow) {\n scrollRef.current = true;\n }\n }, [isSliderOpen, isNewFlow]);\n\n useEffect(() => {\n if (isNewFlow) {\n const timer = setTimeout(openDrawer, 15 * 1000);\n return () => clearTimeout(timer);\n }\n }, [openDrawer, isNewFlow]);\n\n useEffect(() => {\n if (immediateFlow) {\n openDrawer();\n }\n }, [immediateFlow, openDrawer]);\n\n useEffect(() => {\n const modalParam = searchParams.get(\"modal\");\n if (modalParam === \"generic\" || modalParam === \"community\") {\n setIsSliderOpen(true);\n trackSliderShown(\"Place Interaction\");\n setReasonForOpening(\"Place Interaction\");\n const urlSearchParams = new URLSearchParams(window.location.search);\n urlSearchParams.delete(\"modal\");\n window.history.replaceState(\n {},\n \"\",\n `${window.location.pathname}?${urlSearchParams}`\n );\n }\n }, [searchParams]);\n\n const handleAnswerSelection = async ({\n questionText,\n answerPosition,\n answerText,\n fullAnswer,\n }) => {\n setSelectedAnswer(fullAnswer);\n\n trackSliderAnswerSelected({\n trigger: reasonForOpening,\n answerPosition,\n answerText,\n questionText,\n });\n\n setIsSliderOpen(false);\n\n setTimeout(() => {\n setIsFullPageSliderOpen(true);\n }, 500);\n };\n\n const handleDrawerButtonClick = useCallback(() => {\n if (isMobile) {\n setIsSliderOpen(true);\n setHasShownSlider(true);\n }\n }, [isMobile]);\n\n useEffect(() => {\n const sliderParam = searchParams.get(\"slider\");\n if (sliderParam) {\n setIsSliderOpen(true);\n setHasShownSlider(true);\n const newSearchParams = new URLSearchParams(window.location.search);\n newSearchParams.delete(\"slider\");\n window.history.replaceState(\n {},\n \"\",\n `${window.location.pathname}?${newSearchParams}`\n );\n }\n }, [searchParams]);\n\n const [DrawerButtonComponent, setDrawerButtonComponent] = useState(null);\n const [QuizSliderComponent, setQuizSliderComponent] = useState(null);\n\n const currentFlow = flowOverride\n ? flows[flowOverride]\n : flows[aiFlowVariation];\n\n useEffect(() => {\n getDrawerButton(currentFlow.components.drawerButton)\n .then(component => {\n setDrawerButtonComponent(() => component);\n })\n .catch(error => {\n console.error(\"Error loading drawer button:\", error);\n });\n }, [currentFlow.components.drawerButton]);\n\n useEffect(() => {\n getQuizSlider(currentFlow.components.quizSlider)\n .then(component => {\n setQuizSliderComponent(() => component);\n })\n .catch(error => {\n console.error(\"Error loading quiz slider:\", error);\n });\n }, [currentFlow.components.quizSlider]);\n\n return (\n <>\n {isNewFlow && QuizSliderComponent && (\n <QuizSliderComponent\n immediateFlow={immediateFlow}\n variant=\"drawer\"\n isOpen={isSliderOpen}\n mounted={mounted}\n selectedOption={selectedOption}\n setSelectedOption={setSelectedOption}\n flowVersion={aiFlowVariation}\n flowPages={currentFlow.pages}\n onNext={(data) => {\n handleAnswerSelection(data);\n }}\n onClose={() => {\n setIsSliderOpen(false);\n trackSliderDismissed(reasonForOpening);\n setReasonForOpening(null);\n }}\n />\n )}\n {isNewFlow && (\n <FullScreenQuizFlow\n flowVersion={aiFlowVariation}\n noCloseButton={openQuizImmediately}\n flowPages={currentFlow.pages}\n isFullPageSliderOpen={isFullPageSliderOpen}\n setIsFullPageSliderOpen={setIsFullPageSliderOpen}\n initialAnswer={selectedAnswer}\n trialVariation={trialVariation}\n formSubmit={formSubmit}\n trackAction={trackAction}\n trackView={trackView}\n locationData={{\n neighborhood,\n city,\n region,\n country\n }}\n />\n )}\n <FooterDrawerUI\n isVisible={isVisible}\n isMobile={isMobile}\n isSliderVariant={isNewFlow}\n area={area}\n placesCount={placesCount}\n formattedPlacesCount={formattedPlacesCount}\n possessiveFormArea={possessiveFormArea}\n setIsSliderOpen={setIsSliderOpen}\n setReasonForOpening={setReasonForOpening}\n trackSliderShown={trackSliderShown}\n trackItemTapped={trackItemTapped}\n onDrawerButtonClick={handleDrawerButtonClick}\n DrawerButtonComponent={DrawerButtonComponent}\n />\n </>\n );\n};\n","export const Navigation = ({ onBack, onSkip, showBack, showSkip, totalSteps, currentStep, isFirstQuestion, showProgressDots }) => {\n // Calculate weighted progress\n const getWeightedProgress = () => {\n if (currentStep === 0) return 0;\n \n // Calculate weights where earlier steps count for much more\n const weights = Array.from({ length: totalSteps }, (_, index) => {\n // Creates weights from 2.5 to 1 with exponential decay\n return 2.5 * Math.pow(0.9, index);\n });\n \n // Calculate progress based on weights\n const totalWeight = weights.reduce((sum, weight) => sum + weight, 0);\n const currentWeight = weights.slice(0, currentStep).reduce((sum, weight) => sum + weight, 0);\n \n return (currentWeight / totalWeight) * 100;\n };\n\n const isLastTransition = currentStep === totalSteps;\n\n return (\n <div className=\"fixed top-0 left-0 right-0 px-4\">\n <div className=\"py-4 flex items-center\">\n {/* Left side */}\n <div className=\"flex-1\">\n <button\n onClick={onBack}\n className={`p-2 rounded-lg transition-opacity text-black/20\n ${showBack ? 'opacity-100' : 'opacity-0 pointer-events-none'}`}\n >\n {isFirstQuestion ? (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1 1L13 13M1 13L13 1\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"/>\n </svg>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M19 12H5M12 19l-7-7 7-7\"/>\n </svg>\n )}\n </button>\n </div>\n \n {/* Progress Bar */}\n <div className={`w-1/3 h-2 bg-gray-200 rounded-full absolute left-1/2 -translate-x-1/2\n transition-opacity duration-1000\n ${isLastTransition ? 'opacity-0' : 'opacity-100'}`}>\n <div \n className=\"h-full rounded-full bg-gradient-to-r from-[#F01E6F] to-[#F85E4A] \n transition-all duration-500 ease-out\"\n style={{ width: `${getWeightedProgress()}%` }}\n />\n </div>\n \n {/* Right side */}\n <div className=\"flex-1 flex justify-end\">\n <button\n onClick={onSkip}\n className={`p-2 rounded-lg transition-opacity text-black/20\n ${showSkip ? 'opacity-100' : 'opacity-0 pointer-events-none'}`}\n >\n Skip\n </button>\n </div>\n </div>\n </div>\n );\n}; ","import { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\nimport { VETTED_PLACES_WORLDWIDE } from '@/constants';\n\nexport const Statement = ({ onAnswer }) => {\n const [showFirstLine, setShowFirstLine] = useState(false);\n const [showSecondLine, setShowSecondLine] = useState(false);\n const [showBubbles, setShowBubbles] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n const [particlesExiting, setParticlesExiting] = useState(false);\n\n useEffect(() => {\n setTimeout(() => setShowFirstLine(true), 200);\n setTimeout(() => setShowSecondLine(true), 600);\n setTimeout(() => setShowBubbles(true), 400);\n setTimeout(() => setShowButton(true), 1400);\n }, []);\n\n const handleContinue = () => {\n setParticlesExiting(true);\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n <div className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n isExiting ? \"opacity-0\" : \"opacity-100\"\n )}>\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px]\">\n <div className=\"overflow-hidden\">\n <h2\n className={classNames(\n \"text-[32px] md:text-[40px] leading-tight font-bold transition-all duration-500 text-black\",\n showFirstLine ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-full\"\n )}\n >\n Our Gluten Free map has over{' '}\n <span className=\"animate-shimmer bg-[length:200%_100%] bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n {VETTED_PLACES_WORLDWIDE} gluten-free places\n </span>{' '}\n worldwide\n </h2>\n </div>\n\n <div className=\"overflow-hidden\">\n <h3\n className={classNames(\n \"text-xl md:text-2xl text-gray-600 transition-all duration-500\",\n showSecondLine ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-full\"\n )}\n >\n Finding places is a breeze\n </h3>\n </div>\n </div>\n\n {showBubbles && (\n <div\n className={classNames(\n \"absolute overflow-hidden pointer-events-none transition-all duration-500\",\n particlesExiting ? \"opacity-0\" : \"opacity-100\"\n )}\n style={{\n top: '30%',\n left: 0,\n right: 0,\n bottom: '80px',\n }}\n >\n {[...Array(70)].map((_, i) => (\n <div\n key={i}\n className=\"absolute pointer-events-none\"\n style={{\n left: `${-50 - (Math.random() * 50)}px`,\n top: `${Math.random() * 300}%`,\n animation: `breezePath 8s linear infinite`,\n animationDelay: `${Math.random() * 8}s`,\n opacity: 0,\n }}\n >\n <div\n className=\"rounded-full bg-gradient-to-tr from-pink-500/20 to-orange-500/20 animate-pulse\"\n style={{\n width: `${15 + Math.random() * 30}px`,\n height: `${15 + Math.random() * 30}px`,\n animation: `spin ${3 + Math.random() * 2}s linear infinite`,\n }}\n />\n </div>\n ))}\n </div>\n )}\n\n <div\n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 transition-all duration-500 bg-gradient-to-t from-white via-white to-transparent pb-6 pt-10\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n\n <style jsx global>{`\n @keyframes breezePath {\n 0% {\n transform: translateX(0);\n opacity: 0;\n }\n 5% {\n opacity: 0.8;\n }\n 95% {\n opacity: 0.8;\n }\n 100% {\n transform: translateX(calc(100vw + 100px));\n opacity: 0;\n }\n }\n\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n\n @keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n }\n\n .animate-shimmer {\n animation: shimmer 3s linear infinite;\n }\n `}</style>\n </div>\n );\n};\n\nexport default Statement;","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const emojis = ['🥑', '🥕', '🍎', '🫐', '🍕', '🥩', '🍗', '🍳', '🍣', '🥗', '🥪', '🌮', '🍜', '🍙', '🥝', '🍇', '🥭', '🍠'];\n const [activeEmojiIndices, setActiveEmojiIndices] = useState([0, 1]);\n \n // Generate shuffled emojis and their fixed positions once\n const [gridEmojis] = useState(() => {\n return [...emojis].sort(() => Math.random() - 0.5).map(emoji => ({\n emoji,\n offset: {\n x: Math.random() * 10 - 5,\n y: Math.random() * 10 - 5\n }\n }));\n });\n\n useEffect(() => {\n const interval = setInterval(() => {\n // Generate two random unique indices\n const newIndices = [];\n while (newIndices.length < 2) {\n const randomIndex = Math.floor(Math.random() * emojis.length);\n if (!newIndices.includes(randomIndex)) {\n newIndices.push(randomIndex);\n }\n }\n setActiveEmojiIndices(newIndices);\n }, 2000);\n return () => clearInterval(interval);\n }, []);\n\n useEffect(() => {\n setTimeout(() => setShowButton(true), 1400);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n <div \n className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n \"transition-all duration-500 ease-in-out\",\n isExiting \n ? \"opacity-0 transform translate-y-10\" \n : \"opacity-100 transform translate-y-0\"\n )}\n style={{\n animation: \"slideIn 500ms ease-out\",\n background: \"linear-gradient(80deg, rgba(240, 30, 111, 0.05) 12.92%, rgba(248, 94, 74, 0.05) 94.79%), #FFF\"\n }}\n >\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px]\">\n <div>\n <h2 className=\"text-[28px] md:text-[36px] leading-tight font-bold text-black\">\n Use over {' '} \n <span className=\"bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n 50 filters\n </span>{' '} to help you find the{' '}\n <span className=\"bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n perfect\n </span>{' '}\n meal for your dietary needs\n </h2>\n </div>\n </div>\n\n <div className=\"flex-1 flex items-center justify-center w-full -mt-16\">\n <div className=\"grid grid-cols-3 gap-6 w-full max-w-[400px] place-items-center\">\n {gridEmojis.map((item, i) => (\n <div \n key={i}\n className=\"text-3xl transition-opacity duration-300\"\n style={{\n opacity: activeEmojiIndices.includes(i) ? 1 : 0.15,\n transform: `translate(${item.offset.x}px, ${item.offset.y}px)`\n }}\n >\n {item.emoji}\n </div>\n ))}\n </div>\n </div>\n\n <div \n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 bg-gradient-to-t from-[#fff5f8] via-[#fff5f8] to-transparent pb-6 pt-10\",\n \"transition-all duration-500\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n </div>\n );\n};\n\nexport default Statement;\n\nconst styles = `\n@keyframes slideIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n`;\n\nif (typeof document !== 'undefined') {\n const styleSheet = document.createElement('style');\n styleSheet.textContent = styles;\n document.head.appendChild(styleSheet);\n}","import { PreCheckoutPage } from \"@/features/PreCheckoutPage.jsx\";\nimport classNames from \"classnames\";\nimport { useEffect, useState } from \"react\";\n\nexport const PreCheckout = ({\n\tdata,\n\tonAnswer,\n\tisTransitioning,\n\tdirection,\n\tformSubmit,\n\ttrialVariation,\n\tuserEmail,\n}) => {\n\tconst [isVisible, setIsVisible] = useState(false);\n\n\tuseEffect(() => {\n\t\t// Start with opacity 0, then fade in after a brief delay\n\t\tconst timer = setTimeout(() => {\n\t\t\tsetIsVisible(true);\n\t\t}, 50);\n\n\t\treturn () => clearTimeout(timer);\n\t}, []);\n\n\tconsole.log('PreCheckout A', {\n\t\ttrialVariation,\n\t});\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"transition-opacity duration-500\",\n\t\t\t\t{\n\t\t\t\t\t\"opacity-0\": isTransitioning || !isVisible,\n\t\t\t\t\t\"opacity-100\": !isTransitioning && isVisible,\n\t\t\t\t}\n\t\t\t)}\n\t\t>\n\t\t\t<PreCheckoutPage\n\t\t\t\tformSubmit={formSubmit}\n\t\t\t\tuserEmail={userEmail}\n\t\t\t\ttrialVariation={trialVariation} />\n\t\t</div>\n\t);\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { Confetti } from '../../Confetti.jsx';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nconst validateEmail = (email) => {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n};\n\nexport const EmailScreen = ({ \n data, \n onAnswer, \n isTransitioning,\n direction,\n setClickPosition,\n setShowConfetti,\n}) => {\n const [email, setEmail] = useState(data.savedEmail || '');\n const [touched, setTouched] = useState(false);\n const [attempted, setAttempted] = useState(false);\n const [showContent, setShowContent] = useState(false);\n const [isAnimating, setIsAnimating] = useState(false);\n const [showConfetti, setLocalShowConfetti] = useState(false);\n const [clickPosition, setLocalClickPosition] = useState({ x: 0, y: 0 });\n const inputRef = useRef(null);\n\n const isValid = validateEmail(email);\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }, []);\n\n useEffect(() => {\n if (!isTransitioning) {\n setTimeout(() => setShowContent(true), 100);\n } else {\n setShowContent(false);\n }\n }, [isTransitioning]);\n\n const handleSubmit = (e) => {\n e.preventDefault();\n setAttempted(true);\n \n if (isValid && !isAnimating && !isTransitioning) {\n setIsAnimating(true);\n setLocalClickPosition({ x: e.clientX, y: e.clientY });\n setLocalShowConfetti(true);\n if (setClickPosition) setClickPosition({ x: e.clientX, y: e.clientY });\n if (setShowConfetti) setShowConfetti(true);\n\n setTimeout(() => {\n setLocalShowConfetti(false);\n setIsAnimating(false);\n onAnswer({ text: email });\n }, 2000);\n }\n };\n\n const getBorderColor = () => {\n if (!touched) return 'border-gray-300';\n return isValid ? 'border-green-500' : 'border-red-500';\n };\n\n const handleBlur = () => {\n setTouched(true);\n };\n\n const handleEmailChange = (e) => {\n setEmail(e.target.value);\n if (!touched) setTouched(true);\n };\n\n return (\n <div \n className={classNames(\n \"w-full\",\n { \"pointer-events-none\": isTransitioning || isAnimating }\n )}\n >\n <Confetti \n isActive={showConfetti}\n clickPosition={clickPosition}\n emojis={['🎉', '✨', '🚀']}\n />\n <div className={classNames(\n \"w-full pb-6\",\n { \n \"pointer-events-none\": isTransitioning || isAnimating,\n \"transition-all duration-500 ease-in-out\": isTransitioning,\n \"translate-x-full opacity-0\": isTransitioning && direction === 'back',\n \"-translate-x-full opacity-0\": isTransitioning && direction === 'forward',\n }\n )}>\n <div className=\"px-5 pt-6 pb-1\">\n <h2 \n className={classNames(\n \"text-lg text-gray-700 font-semibold text-center mb-3\",\n \"transition-all duration-500 ease-out\",\n {\n \"opacity-0 translate-y-4\": !showContent,\n \"opacity-100 translate-y-0\": showContent\n }\n )}\n >\n {data.text}\n </h2>\n </div>\n <div className=\"px-5 space-y-3\">\n <form onSubmit={handleSubmit} className=\"space-y-3\">\n <div\n className={classNames(\n \"transition-all duration-500 ease-out\",\n {\n \"opacity-0 translate-y-4\": !showContent,\n \"opacity-100 translate-y-0\": showContent\n }\n )}\n >\n <label htmlFor=\"email\" className=\"block text-base text-gray-700 font-normal mb-4\">\n Email address\n </label>\n <input\n ref={inputRef}\n id=\"email\"\n type=\"email\"\n inputMode=\"email\"\n autoComplete=\"email\"\n value={email}\n onChange={handleEmailChange}\n onBlur={handleBlur}\n className={`w-full p-4 rounded-xl bg-white border ${getBorderColor()} \n text-lg text-gray-900 focus:outline-none focus:ring-2 focus:ring-pink-500/20 h-[60px]\n placeholder:text-gray-500`}\n placeholder=\"Enter your email\"\n />\n <div className=\"mt-4 text-[15px] text-gray-600\">\n By clicking \"Continue\", you agree to Atly's{' '}\n <a href=\"https://www.atly.com/terms-of-use\" className=\"text-pink-500 hover:text-pink-600 underline\">\n Terms of Service\n </a>\n {' '}and{' '}\n <a href=\"https://www.atly.com/privacy-policy\" className=\"text-pink-500 hover:text-pink-600 underline\">\n Privacy Policy\n </a>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5\",\n \"transition-all duration-500 ease-out\",\n {\n \"opacity-100 translate-y-0\": showContent && !isTransitioning,\n \"opacity-0 translate-y-8 pointer-events-none\": !showContent || isTransitioning\n }\n )}>\n <PorangeButton\n full={true}\n className={classNames(\n \"h-[60px] rounded-[20px] text-lg shadow-lg w-full\",\n \"transition-all duration-300 ease-out\",\n {\n \"opacity-40 cursor-not-allowed\": !isValid,\n \"opacity-100\": isValid\n }\n )}\n onClick={handleSubmit}\n disabled={!isValid || isAnimating || isTransitioning}\n >\n Continue\n </PorangeButton>\n </div>\n </div>\n );\n}; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nexport const Statement = ({ onAnswer }) => {\n const [showTitle, setShowTitle] = useState(false);\n const [showSubtitle, setShowSubtitle] = useState(false);\n const [showLevels, setShowLevels] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n const [activePin, setActivePin] = useState(0);\n\n const pins = [\n { color: '#22C55E', label: '100% Gluten-Free', emoji: '✨', description: 'Dedicated gluten-free facility' },\n { color: '#3B82F6', label: 'Celiac Friendly', emoji: '🛡️', description: 'Strict protocols & trained staff' },\n { color: '#F59E0B', label: 'Accommodating', emoji: '⚡', description: 'Good practices but shared kitchen' },\n { color: '#EF4444', label: 'GF Options', emoji: '⭐', description: 'Basic gluten-free options available' }\n ];\n\n useEffect(() => {\n setTimeout(() => setShowTitle(true), 100);\n setTimeout(() => setShowSubtitle(true), 400);\n setTimeout(() => setShowLevels(true), 1000);\n setTimeout(() => setShowButton(true), 1600);\n\n const interval = setTimeout(() => {\n setInterval(() => {\n setActivePin(current => (current + 1) % pins.length);\n }, 2000);\n }, 1000);\n\n return () => {\n clearInterval(interval);\n clearTimeout(interval);\n };\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n <div\n className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n \"transition-all duration-500 ease-in-out\",\n isExiting\n ? \"opacity-0 transform translate-y-10\"\n : \"opacity-100 transform translate-y-0\"\n )}\n >\n <div className=\"text-center space-y-2 max-w-[600px] mt-[48px] mb-8\">\n <div className=\"overflow-hidden\">\n <h1\n className={classNames(\n \"text-[32px] md:text-[40px] leading-tight font-bold text-black transition-all duration-500\",\n showTitle ? \"opacity-100\" : \"opacity-0\"\n )}\n >\n Each place is given a{' '}\n <span className=\"bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n safety level\n </span>{' '}\n for quick and easy discovery\n </h1>\n </div>\n </div>\n\n <div\n className={classNames(\n \"w-full max-w-[400px] mx-auto mb-24\",\n \"transition-all duration-500\",\n showLevels ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8\"\n )}\n >\n <div className=\"space-y-2.5 w-full\">\n {pins.map((pin, index) => (\n <div\n key={index}\n style={{\n transitionDelay: showLevels ? `${index * 100}ms` : '0ms'\n }}\n className={classNames(\n \"flex flex-col p-2.5\",\n \"rounded-xl transition-all duration-500\",\n \"border-2\",\n !showLevels && \"opacity-0 translate-y-4\",\n activePin === index\n ? \"border-pink-500 bg-white shadow-lg scale-105\"\n : \"border-transparent bg-gray-50\"\n )}\n >\n <div className=\"flex items-center gap-3\">\n <div\n className=\"w-7 h-7 rounded-full flex items-center justify-center text-lg\"\n style={{ backgroundColor: pin.color }}\n >\n <span className=\"leading-none\">{pin.emoji}</span>\n </div>\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"font-semibold text-gray-800 text-sm leading-tight\">\n {pin.label}\n </span>\n <p className=\"text-gray-600 text-xs leading-tight\">\n {pin.description}\n </p>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div\n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 bg-gradient-to-t from-white via-white to-transparent pb-6 pt-10\",\n \"transition-all duration-500\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n </div>\n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\nimport { SocialProofAvatars } from '@/components/molecules/SocialProofAvatars.jsx';\nimport { motion } from 'framer-motion';\nimport Image from 'next/image';\n\nexport const Statement = ({ onAnswer, previousAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [count, setCount] = useState(0);\n const [showFaces, setShowFaces] = useState(false);\n \n useEffect(() => {\n // Animate count up to 28.1k\n const targetCount = 28.1;\n const duration = 2000;\n const steps = 50;\n const increment = duration / steps;\n \n let current = 0;\n const timer = setInterval(() => {\n if (current < steps) {\n current += 1;\n setCount((current / steps) * targetCount);\n } else {\n clearInterval(timer);\n setShowFaces(true); // Show faces after count completes\n }\n }, increment);\n\n setTimeout(() => setShowButton(true), 1500);\n return () => clearInterval(timer);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n const generateAvatar = (usedIndices = []) => {\n const genders = ['men', 'women'];\n const maxPerGender = 70; // Maximum available indices per gender\n let gender, photoIndex, avatarUrl;\n \n do {\n gender = genders[Math.floor(Math.random() * genders.length)];\n photoIndex = Math.floor(Math.random() * maxPerGender) + 1;\n avatarUrl = `https://randomuser.me/api/portraits/${gender}/${photoIndex}.jpg`;\n } while (usedIndices.includes(avatarUrl));\n \n return avatarUrl;\n };\n\n const CommunityScroll = () => {\n const [gridItems, setGridItems] = useState([]);\n\n useEffect(() => {\n const usedUrls = new Set();\n const totalAvatars = 70;\n const newAvatars = [];\n\n while (newAvatars.length < totalAvatars) {\n const avatarUrl = generateAvatar(Array.from(usedUrls));\n if (!usedUrls.has(avatarUrl)) {\n usedUrls.add(avatarUrl);\n newAvatars.push(avatarUrl);\n }\n }\n\n setGridItems(newAvatars);\n }, []);\n\n return (\n <div className=\"overflow-hidden w-screen -mx-6 mt-8\">\n <motion.div\n className=\"grid grid-rows-5 grid-flow-col gap-4 px-6\"\n initial={{ opacity: 0, x: 0 }}\n animate={{\n opacity: showFaces ? 1 : 0,\n x: showFaces ? -1200 : 0,\n }}\n transition={{\n opacity: { duration: 1 },\n x: {\n duration: 150,\n delay: 0.5 // Slight delay after fade in\n },\n }}\n >\n {gridItems.map((url, index) => (\n <div\n key={index}\n className=\"w-[85px] h-[85px] relative\"\n >\n <img \n src={url}\n alt=\"Community member\"\n className=\"w-full h-full rounded-full ring-2 ring-white object-cover\"\n loading=\"lazy\"\n />\n </div>\n ))}\n </motion.div>\n </div>\n );\n };\n\n return (\n <div className={classNames(\n \"relative h-full flex flex-col items-center justify-start\",\n \"transition-all duration-500 ease-in-out\",\n isExiting ? \"opacity-0 transform translate-y-10\" : \"opacity-100 transform translate-y-0\"\n )}>\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px] px-6\">\n {/* Counter Section */}\n <div className={classNames(\n \"transition-all duration-500\",\n { \"opacity-0 translate-y-4\": !showButton, \"opacity-100 translate-y-0\": showButton }\n )}>\n <div className=\"text-[28px] md:text-[40px] leading-tight font-bold text-black mb-2\">\n We'll connect you with\n </div>\n <div className=\"text-7xl font-bold mb-2 bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n {count.toFixed(1)}k\n </div>\n <div className=\"text-[28px] md:text-[40px] leading-tight font-bold text-black\">\n gluten-free parents, kids, and friends\n </div>\n </div>\n </div>\n\n {/* Scrolling Faces Container */}\n <div className=\"flex-1 flex items-center justify-center w-full overflow-hidden\">\n <CommunityScroll />\n </div>\n\n {/* Continue Button with stronger gradient */}\n <div className={classNames(\n \"fixed bottom-0 left-0 right-0 bg-gradient-to-t from-white via-white to-transparent\",\n \"transition-all duration-500 pt-32 pb-6 px-5\", // Increased padding-top for stronger gradient\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}>\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n </div>\n );\n};\n\nexport default Statement;\n","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\nimport { VETTED_PLACES_WORLDWIDE } from \"@/constants\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activeRegion, setActiveRegion] = useState(0);\n\n const regions = [\n { emoji: '🗽', count: '150k+', label: 'US Places' },\n { emoji: '🌎', count: `${VETTED_PLACES_WORLDWIDE}+`, label: 'Global Places' },\n { emoji: '🌆', count: '1k+', label: 'Cities' },\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActiveRegion(current => (current + 1) % regions.length);\n }, 2000);\n\n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n <div\n className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n \"transition-all duration-500 ease-in-out\",\n isExiting\n ? \"opacity-0 transform translate-y-10\"\n : \"opacity-100 transform translate-y-0\"\n )}\n >\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px]\">\n <h2 className=\"text-[28px] md:text-[36px] leading-tight font-bold text-black\">\n The{' '}\n <span className=\"bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n largest\n </span>{' '}\n gluten-free map\n </h2>\n </div>\n\n <div className=\"flex-1 flex items-center justify-center w-full\">\n <div className=\"space-y-6 w-full max-w-[400px]\">\n {regions.map((region, index) => (\n <div\n key={index}\n className={classNames(\n \"flex flex-col items-center gap-2 p-6 rounded-xl transition-all duration-500\",\n activeRegion === index\n ? \"bg-white shadow-lg scale-105\"\n : \"bg-gray-50\"\n )}\n >\n <div className=\"text-4xl mb-2\">{region.emoji}</div>\n <div className=\"text-2xl font-bold text-gray-800\">\n {region.count}\n </div>\n <div className=\"text-gray-600\">\n {region.label}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div\n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 bg-gradient-to-t from-white via-white to-transparent pb-6 pt-10\",\n \"transition-all duration-500\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n </div>\n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activeFeature, setActiveFeature] = useState(0);\n \n const features = [\n {\n icon: '📸',\n label: 'Photos',\n subtext: 'See what others ordered'\n },\n {\n icon: '⭐',\n label: 'Reviews',\n subtext: 'From multiple platforms'\n },\n {\n icon: '🔍',\n label: 'Menu Items',\n subtext: 'Verified gluten-free options'\n },\n {\n icon: '📍',\n label: 'One Place',\n subtext: 'Everything you need'\n }\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActiveFeature(current => (current + 1) % features.length);\n }, 2000);\n \n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n <div \n className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n \"transition-all duration-500 ease-in-out\",\n isExiting \n ? \"opacity-0 transform translate-y-10\" \n : \"opacity-100 transform translate-y-0\"\n )}\n >\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px]\">\n <h2 className=\"text-[28px] md:text-[36px] leading-tight font-bold text-black\">\n Everything you need in{' '}\n <span className=\"bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n one place\n </span>\n </h2>\n </div>\n\n <div className=\"flex-1 flex items-center justify-center w-full\">\n <div className=\"grid grid-cols-2 gap-4 w-full max-w-[400px]\">\n {features.map((feature, index) => (\n <div \n key={index}\n className={classNames(\n \"flex flex-col items-center text-center p-6 rounded-xl transition-all duration-500\",\n activeFeature === index \n ? \"bg-white shadow-lg scale-105\" \n : \"bg-gray-50\"\n )}\n >\n <div className=\"text-4xl mb-3\">{feature.icon}</div>\n <div className=\"font-semibold text-gray-800 mb-1\">\n {feature.label}\n </div>\n <div className=\"text-sm text-gray-600\">\n {feature.subtext}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"text-center text-gray-600 text-sm px-6 mb-4\">\n No more hopping between different apps and websites\n </div>\n\n <div \n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 bg-gradient-to-t from-white via-white to-transparent pb-6 pt-10\",\n \"transition-all duration-500\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n </div>\n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activeItem, setActiveItem] = useState(0);\n \n const verificationItems = [\n {\n icon: '👩‍⚕️',\n label: 'Expert Review',\n detail: 'Verified by dietitians'\n },\n {\n icon: '🏆',\n label: 'Quality Standards',\n detail: 'Strict verification process'\n },\n {\n icon: '✅',\n label: 'Menu Validation',\n detail: 'Ingredient checking'\n }\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActiveItem(current => (current + 1) % verificationItems.length);\n }, 2000);\n \n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n <div \n className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n \"transition-all duration-500 ease-in-out\",\n isExiting \n ? \"opacity-0 transform translate-y-10\" \n : \"opacity-100 transform translate-y-0\"\n )}\n >\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px]\">\n <h2 className=\"text-[28px] md:text-[36px] leading-tight font-bold text-black\">\n Verified by{' '}\n <span className=\"bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n nutrition experts\n </span>\n </h2>\n </div>\n\n <div className=\"flex-1 flex items-center justify-center w-full\">\n <div className=\"space-y-4 w-full max-w-[400px]\">\n {verificationItems.map((item, index) => (\n <div \n key={index}\n className={classNames(\n \"flex items-center gap-4 p-6 rounded-xl transition-all duration-500\",\n activeItem === index \n ? \"bg-white shadow-lg scale-105\" \n : \"bg-gray-50\"\n )}\n >\n <div className=\"text-4xl\">{item.icon}</div>\n <div>\n <div className=\"font-semibold text-gray-800\">\n {item.label}\n </div>\n <div className=\"text-sm text-gray-600\">\n {item.detail}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div \n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 bg-gradient-to-t from-white via-white to-transparent pb-6 pt-10\",\n \"transition-all duration-500\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n </div>\n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activeUpdate, setActiveUpdate] = useState(0);\n \n const updates = [\n {\n icon: '🔄',\n time: 'Just now',\n action: 'Menu updated',\n detail: 'New gluten-free options added'\n },\n {\n icon: '✨',\n time: '2h ago',\n action: 'Review verified',\n detail: 'Safety protocols confirmed'\n },\n {\n icon: '📸',\n time: '4h ago',\n action: 'Photos added',\n detail: 'New dishes showcased'\n }\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActiveUpdate(current => (current + 1) % updates.length);\n }, 2000);\n \n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n <div \n className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n \"transition-all duration-500 ease-in-out\",\n isExiting \n ? \"opacity-0 transform translate-y-10\" \n : \"opacity-100 transform translate-y-0\"\n )}\n >\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px]\">\n <h2 className=\"text-[28px] md:text-[36px] leading-tight font-bold text-black\">\n Always{' '}\n <span className=\"bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n up to date\n </span>\n </h2>\n </div>\n\n <div className=\"flex-1 flex items-center justify-center w-full\">\n <div className=\"space-y-4 w-full max-w-[400px]\">\n {updates.map((update, index) => (\n <div \n key={index}\n className={classNames(\n \"flex items-start gap-4 p-6 rounded-xl transition-all duration-500\",\n activeUpdate === index \n ? \"bg-white shadow-lg scale-105\" \n : \"bg-gray-50\"\n )}\n >\n <div className=\"text-3xl mt-1\">{update.icon}</div>\n <div className=\"flex-1\">\n <div className=\"flex justify-between items-center mb-1\">\n <div className=\"font-semibold text-gray-800\">\n {update.action}\n </div>\n <div className=\"text-sm text-gray-500\">\n {update.time}\n </div>\n </div>\n <div className=\"text-sm text-gray-600\">\n {update.detail}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"text-center text-gray-600 text-sm px-6 mb-4\">\n Our community keeps information fresh and accurate\n </div>\n\n <div \n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 bg-gradient-to-t from-white via-white to-transparent pb-6 pt-10\",\n \"transition-all duration-500\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n </div>\n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activePractice, setActivePractice] = useState(0);\n \n const safetyPractices = [\n {\n icon: '🧤',\n label: 'Dedicated Prep',\n detail: 'Separate cooking areas'\n },\n {\n icon: '🧼',\n label: 'Clean Practices',\n detail: 'Strict protocols followed'\n },\n {\n icon: '👨‍🍳',\n label: 'Trained Staff',\n detail: 'GF-aware kitchen team'\n },\n {\n icon: '✅',\n label: 'Verified Safe',\n detail: 'Community confirmed'\n }\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActivePractice(current => (current + 1) % safetyPractices.length);\n }, 2000);\n \n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n <div \n className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n \"transition-all duration-500 ease-in-out\",\n isExiting \n ? \"opacity-0 transform translate-y-10\" \n : \"opacity-100 transform translate-y-0\"\n )}\n >\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px]\">\n <h2 className=\"text-[28px] md:text-[36px] leading-tight font-bold text-black\">\n We verify{' '}\n <span className=\"bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n kitchen safety\n </span>\n </h2>\n </div>\n\n <div className=\"flex-1 flex items-center justify-center w-full\">\n <div className=\"grid grid-cols-2 gap-4 w-full max-w-[400px]\">\n {safetyPractices.map((practice, index) => (\n <div \n key={index}\n className={classNames(\n \"flex flex-col items-center text-center p-6 rounded-xl transition-all duration-500\",\n activePractice === index \n ? \"bg-white shadow-lg scale-105\" \n : \"bg-gray-50\"\n )}\n >\n <div className=\"text-4xl mb-3\">{practice.icon}</div>\n <div className=\"font-semibold text-gray-800 mb-1\">\n {practice.label}\n </div>\n <div className=\"text-sm text-gray-600\">\n {practice.detail}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"text-center text-gray-600 text-sm px-6 mb-4\">\n Ensuring safe gluten-free preparation\n </div>\n\n <div \n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 bg-gradient-to-t from-white via-white to-transparent pb-6 pt-10\",\n \"transition-all duration-500\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n </div>\n );\n};\n\nexport default Statement; ","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nexport const Statement = ({ onAnswer }) => {\n const [isExiting, setIsExiting] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [activeFeature, setActiveFeature] = useState(0);\n \n const travelFeatures = [\n {\n icon: '🗺️',\n label: 'Anywhere',\n detail: 'Find safe places worldwide'\n },\n {\n icon: '📍',\n label: 'Near You',\n detail: 'Location-based search'\n },\n {\n icon: '⭐',\n label: 'Save Places',\n detail: 'Build your favorites list'\n },\n {\n icon: '✈️',\n label: 'Travel Ready',\n detail: 'Plan trips confidently'\n }\n ];\n\n useEffect(() => {\n const interval = setInterval(() => {\n setActiveFeature(current => (current + 1) % travelFeatures.length);\n }, 2000);\n \n setTimeout(() => setShowButton(true), 1000);\n return () => clearInterval(interval);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n <div \n className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n \"transition-all duration-500 ease-in-out\",\n isExiting \n ? \"opacity-0 transform translate-y-10\" \n : \"opacity-100 transform translate-y-0\"\n )}\n >\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px]\">\n <h2 className=\"text-[28px] md:text-[36px] leading-tight font-bold text-black\">\n Travel{' '}\n <span className=\"bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n worry-free\n </span>\n </h2>\n </div>\n\n <div className=\"flex-1 flex items-center justify-center w-full\">\n <div className=\"grid grid-cols-2 gap-4 w-full max-w-[400px]\">\n {travelFeatures.map((feature, index) => (\n <div \n key={index}\n className={classNames(\n \"flex flex-col items-center text-center p-6 rounded-xl transition-all duration-500\",\n activeFeature === index \n ? \"bg-white shadow-lg scale-105\" \n : \"bg-gray-50\"\n )}\n >\n <div className=\"text-4xl mb-3\">{feature.icon}</div>\n <div className=\"font-semibold text-gray-800 mb-1\">\n {feature.label}\n </div>\n <div className=\"text-sm text-gray-600\">\n {feature.detail}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"text-center text-gray-600 text-sm px-6 mb-4\">\n Never worry about finding safe food while traveling\n </div>\n\n <div \n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 bg-gradient-to-t from-white via-white to-transparent pb-6 pt-10\",\n \"transition-all duration-500\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n </div>\n );\n};\n\nexport default Statement; ","import { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nexport const Statement = ({ onAnswer, isTransitioning, direction }) => {\n const [showLogo, setShowLogo] = useState(false);\n const [showTitle, setShowTitle] = useState(false);\n const [showDescription, setShowDescription] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n \n useEffect(() => {\n setTimeout(() => setShowLogo(true), 200);\n setTimeout(() => setShowTitle(true), 600);\n setTimeout(() => setShowDescription(true), 1000);\n setTimeout(() => setShowButton(true), 1400);\n }, []);\n \n const handleContinue = () => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n };\n \n return (\n <div className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n {\n \"opacity-0\": isTransitioning || isExiting,\n },\n \"transition-all duration-500\"\n )}>\n <div className=\"text-center space-y-6 w-full mt-[150px]\">\n {/* Logo */}\n <div className=\"overflow-hidden mb-8\">\n <div className={classNames(\n \"transition-all duration-500\",\n showLogo ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-full\"\n )}>\n <img\n src=\"/assets/Logo%20lockup.png\"\n alt=\"Atly\"\n className=\"h-12 md:h-16 w-auto mx-auto\"\n />\n </div>\n </div>\n \n {/* Title */}\n <div className=\"overflow-hidden\">\n <h1\n className={classNames(\n \"text-[28px] md:text-[40px] leading-tight font-bold transition-all duration-500 text-black\",\n showTitle ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-full\"\n )}\n >\n The{' '}\n <span\n className=\"animate-shimmer bg-[length:200%_100%] bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n #1 Gluten-Free\n </span>\n {' '}map\n </h1>\n </div>\n \n {/* Description */}\n <div className=\"overflow-hidden mb-8\">\n <p className={classNames(\n \"text-xl md:text-2xl text-gray-600 transition-all duration-500\",\n showDescription ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-full\"\n )}>\n Easily find safe gluten-free places worldwide by personalizing your map.\n </p>\n </div>\n \n {/* Continue Button */}\n <div className={classNames(\n \"transition-all duration-500 px-5\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}>\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue Personalizing\n </PorangeButton>\n </div>\n \n {/* Emblem */}\n <div className={classNames(\n \"transition-all duration-500 mt-6\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-4\"\n )}>\n <img\n src=\"/assets/emblem.png\"\n alt=\"Atly Emblem\"\n className=\"w-[512px] object-contain mx-auto\"\n />\n </div>\n </div>\n \n <style jsx global>{`\n @keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n }\n\n .animate-shimmer {\n animation: shimmer 3s linear infinite;\n }\n `}</style>\n </div>\n );\n};\n\nexport default Statement;","import { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nexport const Statement = ({ onAnswer }) => {\n const [showFirstLine, setShowFirstLine] = useState(false);\n const [showSecondLine, setShowSecondLine] = useState(false);\n const [showAnimation, setShowAnimation] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n const [animationExiting, setAnimationExiting] = useState(false);\n const [currentFoodIndex, setCurrentFoodIndex] = useState(0);\n\n const foods = [\n { emoji: \"🍕\", safe: \"caution\" },\n { emoji: \"🌮\", safe: \"safe\" },\n { emoji: \"🥐\", safe: \"unsafe\" },\n { emoji: \"🥗\", safe: \"safe\" },\n { emoji: \"🍔\", safe: \"caution\" },\n { emoji: \"🥘\", safe: \"safe\" },\n { emoji: \"🍝\", safe: \"caution\" },\n { emoji: \"🍗\", safe: \"safe\" },\n { emoji: \"🍜\", safe: \"safe\" },\n { emoji: \"🥯\", safe: \"caution\" },\n { emoji: \"🍳\", safe: \"safe\" },\n { emoji: \"🍣\", safe: \"caution\" },\n { emoji: \"🥨\", safe: \"unsafe\" },\n { emoji: \"🍎\", safe: \"safe\" },\n ];\n\n const getSafetyEmoji = (safety) => {\n switch(safety) {\n case \"safe\": return \"✅\";\n case \"caution\": return \"⚠️\";\n case \"unsafe\": return \"❌\";\n default: return \"❌\";\n }\n };\n\n useEffect(() => {\n setTimeout(() => setShowFirstLine(true), 100);\n setTimeout(() => setShowSecondLine(true), 400);\n setTimeout(() => setShowAnimation(true), 1000);\n setTimeout(() => setShowButton(true), 1600);\n\n // Cycle through foods every 2 seconds\n const interval = setInterval(() => {\n setCurrentFoodIndex(prev => (prev + 1) % foods.length);\n }, 2000);\n\n return () => clearInterval(interval);\n }, []);\n\n // Add this useEffect to log the current food for debugging\n useEffect(() => {\n console.log('Current food:', foods[currentFoodIndex]);\n }, [currentFoodIndex]);\n\n const handleContinue = () => {\n setAnimationExiting(true);\n setShowButton(false);\n setTimeout(() => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 800);\n }, 400);\n };\n\n return (\n <div className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n isExiting ? \"opacity-0\" : \"opacity-100\",\n \"transition-opacity duration-500\"\n )}>\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px]\">\n <div className=\"overflow-hidden\">\n <h2 \n className={classNames(\n \"text-[32px] md:text-[40px] leading-tight font-bold transition-opacity duration-300 text-black\",\n showFirstLine ? \"opacity-100\" : \"opacity-0\"\n )}\n >\n Atly works with {' '}\n <span className=\"animate-shimmer bg-[length:200%_100%] bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n doctors and dietitians\n </span>{' '} to determine safety\n </h2>\n </div>\n \n <div className=\"overflow-hidden\">\n <h3 \n className={classNames(\n \"text-xl md:text-2xl text-gray-600 transition-opacity duration-300\",\n showSecondLine ? \"opacity-100\" : \"opacity-0\"\n )}\n >\n We check kitchen protocols, menu items, staff training, and more\n </h3>\n </div>\n </div>\n\n {showAnimation && (\n <div \n className={classNames(\n \"relative mt-24 transition-all duration-1000\",\n animationExiting ? \"opacity-0\" : \"opacity-100\",\n showAnimation ? \"translate-y-0\" : \"translate-y-8\"\n )}\n >\n <div className=\"flex items-center justify-center space-x-12\">\n <div className=\"flex items-center justify-center\">\n <span className=\"text-7xl\">👩‍⚕️</span>\n </div>\n\n <div className=\"relative flex items-center justify-center\">\n <div \n className=\"relative\"\n key={currentFoodIndex}\n >\n <span className=\"text-6xl animate-food-appear\">\n {foods[currentFoodIndex].emoji}\n </span>\n <div \n className={classNames(\n \"absolute -right-8 -top-8 animate-result-appear text-4xl\",\n {\n \"text-green-500\": foods[currentFoodIndex].safe === \"safe\",\n \"text-orange-500\": foods[currentFoodIndex].safe === \"caution\",\n \"text-red-500\": foods[currentFoodIndex].safe === \"unsafe\"\n }\n )}\n >\n {getSafetyEmoji(foods[currentFoodIndex].safe)}\n </div>\n </div>\n\n <div \n className=\"absolute w-full h-1 bg-gradient-to-r from-transparent via-blue-500 to-transparent animate-scan\"\n style={{ top: '50%' }}\n />\n </div>\n </div>\n </div>\n )}\n\n <div \n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 transition-all duration-500 bg-gradient-to-t from-white via-white to-transparent pb-6 pt-10\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n\n <style jsx global>{`\n @keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n }\n\n @keyframes scan {\n 0% { transform: translateY(-50px); opacity: 0; }\n 20% { opacity: 1; }\n 80% { opacity: 1; }\n 100% { transform: translateY(50px); opacity: 0; }\n }\n\n @keyframes food-appear {\n 0% { transform: scale(0); opacity: 0; }\n 50% { transform: scale(1.2); opacity: 0.8; }\n 100% { transform: scale(1); opacity: 1; }\n }\n\n @keyframes result-appear {\n 0% { transform: scale(0) rotate(-180deg); opacity: 0; }\n 100% { transform: scale(1) rotate(0deg); opacity: 1; }\n }\n\n .animate-shimmer {\n animation: shimmer 3s linear infinite;\n }\n\n .animate-scan {\n animation: scan 2s ease-in-out infinite;\n }\n\n .animate-food-appear {\n animation: food-appear 0.8s ease-out;\n animation-fill-mode: both;\n }\n\n .animate-result-appear {\n animation: result-appear 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n animation-fill-mode: both;\n }\n `}</style>\n </div>\n );\n};\n\nexport default Statement; ","import { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nexport const Statement = ({ onAnswer }) => {\n const [showFirstLine, setShowFirstLine] = useState(false);\n const [showSecondLine, setShowSecondLine] = useState(false);\n const [showReviews, setShowReviews] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n const [currentReviewIndex, setCurrentReviewIndex] = useState(0);\n\n const reviews = [\n { \n source: \"Google\", \n icon: \"🔍\", \n text: \"Dedicated <span class='font-bold text-green-600'>gluten-free kitchen</span> with amazing safety protocols!\", \n rating: \"⭐⭐⭐⭐⭐\",\n relevant: true \n },\n { \n source: \"Yelp\", \n icon: \"📱\", \n text: \"The regular <span class='font-bold text-red-600'>wheat bread</span> is to die for!\", \n rating: \"⭐⭐⭐⭐\",\n relevant: false \n },\n { \n source: \"Maps\", \n icon: \"📍\", \n text: \"Staff is trained on <span class='font-bold text-green-600'>celiac safety</span> - very knowledgeable\", \n rating: \"⭐⭐⭐⭐⭐\",\n relevant: true \n },\n { \n source: \"TripAdvisor\", \n icon: \"✈️\", \n text: \"Their <span class='font-bold text-red-600'>wheat pasta</span> is the best in town\", \n rating: \"⭐⭐⭐⭐\",\n relevant: false \n },\n { \n source: \"Google\", \n icon: \"🔍\", \n text: \"Separate <span class='font-bold text-green-600'>gluten-free prep</span> area for items!\", \n rating: \"⭐⭐⭐⭐⭐\",\n relevant: true \n },\n { \n source: \"Yelp\", \n icon: \"📱\", \n text: \"The beer selection is amazing, all craft <span class='font-bold text-red-600'>wheat beer</span>\", \n rating: \"⭐⭐⭐⭐\",\n relevant: false \n },\n { \n source: \"Maps\", \n icon: \"📍\", \n text: \"<span class='font-bold text-green-600'>gluten-free</span> certified - <span class='font-bold text-green-600'>celiac safe</span>!\", \n rating: \"⭐⭐⭐⭐⭐\",\n relevant: true \n },\n { \n source: \"TripAdvisor\", \n icon: \"✈️\", \n text: \"The fresh baked <span class='font-bold text-red-600'>croissants</span> are flaky perfection\", \n rating: \"⭐⭐⭐⭐\",\n relevant: false \n },\n { \n source: \"Google\", \n icon: \"🔍\", \n text: \"They use <span class='font-bold text-green-600'>Nima sensor</span> to test for <span class='font-bold text-green-600'>gluten-free</span>!\", \n rating: \"⭐⭐⭐⭐⭐\",\n relevant: true \n },\n { \n source: \"Yelp\", \n icon: \"📱\", \n text: \"Great ramen with authentic <span class='font-bold text-red-600'>wheat noodles</span>\", \n rating: \"⭐⭐⭐⭐\",\n relevant: false \n }\n ];\n\n useEffect(() => {\n setTimeout(() => setShowFirstLine(true), 200);\n setTimeout(() => setShowSecondLine(true), 600);\n setTimeout(() => setShowReviews(true), 1000);\n setTimeout(() => setShowButton(true), 2000);\n }, []);\n\n useEffect(() => {\n if (showReviews) {\n const interval = setInterval(() => {\n setCurrentReviewIndex((prevIndex) => (prevIndex + 1) % reviews.length);\n }, 3000);\n return () => clearInterval(interval);\n }\n }, [showReviews]);\n\n const handleContinue = () => {\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 500);\n };\n\n return (\n <div\n className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n isExiting ? \"opacity-0 transition-opacity duration-500\" : \"opacity-100 transition-opacity duration-500\"\n )}\n >\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px]\">\n <div className=\"overflow-hidden\">\n <h2\n className={classNames(\n \"text-[32px] md:text-[40px] leading-tight font-bold transition-all duration-500 text-black\",\n showFirstLine ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-full\"\n )}\n >\n All your reviews in{' '}\n <span className=\"bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n one place\n </span>\n </h2>\n </div>\n \n <div className=\"overflow-hidden\">\n <h3\n className={classNames(\n \"text-xl md:text-2xl text-gray-600 transition-all duration-500\",\n showSecondLine ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-full\"\n )}\n >\n We aggregate reviews from trusted sources to focus on what matters to you\n </h3>\n </div>\n </div>\n\n {showReviews && (\n <div className=\"mt-8 mb-12\">\n <div className=\"relative w-full h-64 flex items-center justify-center\">\n {reviews.map((review, index) => (\n <div\n key={index}\n className={classNames(\n \"absolute transition-opacity duration-1000\",\n currentReviewIndex === index ? \"opacity-100\" : \"opacity-0\"\n )}\n >\n <div className=\"bg-white rounded-xl p-4 shadow-lg border border-gray-100 w-72 relative\">\n <div className={classNames(\n \"absolute -top-2 -right-2 w-6 h-6 rounded-full flex items-center justify-center\",\n review.relevant ? \"bg-green-500\" : \"bg-red-500\"\n )}>\n {review.relevant ? (\n <svg className=\"w-4 h-4 text-white\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n ) : (\n <svg className=\"w-4 h-4 text-white\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n )}\n </div>\n \n <div className=\"flex items-center justify-between mb-2\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-2xl\">{review.icon}</span>\n <span className=\"font-medium text-gray-700\">{review.source}</span>\n </div>\n </div>\n <p \n className=\"text-gray-600 mb-2 line-clamp-2 min-h-[40px]\"\n dangerouslySetInnerHTML={{ __html: review.text }}\n />\n <div className=\"text-sm\">{review.rating}</div>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n <div\n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 transition-all duration-500 bg-gradient-to-t from-white via-white to-transparent pb-6 pt-10\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n </div>\n );\n};\n\nexport default Statement; ","import { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nexport const Statement = ({ onAnswer }) => {\n const [showFirstLine, setShowFirstLine] = useState(false);\n const [showSecondLine, setShowSecondLine] = useState(false);\n const [showAnimation, setShowAnimation] = useState(false);\n const [bellVisible, setBellVisible] = useState(false);\n const [bellRung, setBellRung] = useState(false);\n const [showUpdateEffect, setShowUpdateEffect] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n\n const outdatedInfo = [\n { emoji: \"📱\", text: \"Old phone number\", status: \"❌\" },\n { emoji: \"🕐\", text: \"Closed at 6pm\", status: \"❌\" },\n { emoji: \"🍽️\", text: \"Old menu\", status: \"❌\" },\n ];\n\n const updatedInfo = [\n { emoji: \"📱\", text: \"New contact info\", status: \"✅\" },\n { emoji: \"🕙\", text: \"Open until 9pm\", status: \"✅\" },\n { emoji: \"📝\", text: \"Updated menu\", status: \"✅\" },\n ];\n\n useEffect(() => {\n // Text animations\n setTimeout(() => setShowFirstLine(true), 200);\n setTimeout(() => setShowSecondLine(true), 600);\n\n // Wait 1 second after H1 and H2 load in\n setTimeout(() => {\n setShowAnimation(true);\n }, 1600); // H1 at 200ms, H2 at 600ms, then wait until 1600ms\n\n // Bell appears smoothly after animation starts\n setTimeout(() => {\n setBellVisible(true);\n }, 1800); // 200ms after animation container appears\n\n // Bell ring animation\n setTimeout(() => {\n setBellRung(true); // Start bell ring animation\n }, 2400); // 600ms after bell becomes visible\n\n // Start updating info\n setTimeout(() => {\n setShowUpdateEffect(true);\n }, 3000); // Start update effect 600ms after bell rings\n\n // Show continue button\n setTimeout(() => setShowButton(true), 4500);\n }, []);\n\n const handleContinue = () => {\n setShowButton(false);\n setIsExiting(true);\n setTimeout(() => onAnswer('continue'), 500);\n };\n\n return (\n <div\n className={classNames(\n \"relative h-full flex flex-col items-center justify-start px-6\",\n \"transition-all duration-500 ease-in-out\",\n isExiting\n ? \"opacity-0 transform translate-y-10\"\n : \"opacity-100 transform translate-y-0\"\n )}\n >\n <div className=\"text-center space-y-4 max-w-[600px] mt-[48px]\">\n <div className=\"overflow-hidden\">\n <h2\n className={classNames(\n \"text-[32px] md:text-[40px] leading-tight font-bold transition-all duration-500 text-black\",\n showFirstLine ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-full\"\n )}\n >\n Real-time{' '}\n <span className=\"animate-shimmer bg-[length:200%_100%] bg-clip-text text-transparent bg-gradient-to-r from-pink-500 via-orange-500 to-pink-500\">\n Updates\n </span>\n </h2>\n </div>\n\n <div className=\"overflow-hidden\">\n <p\n className={classNames(\n \"text-xl md:text-2xl text-gray-600 transition-all duration-500\",\n showSecondLine ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-full\"\n )}\n >\n Our team works with the community to keep information accurate and up-to-date\n </p>\n </div>\n </div>\n\n {showAnimation && (\n <div\n className={classNames(\n \"relative mt-12 mb-24 transition-all duration-500\",\n isExiting ? \"opacity-0 transform translate-y-10\" : \"opacity-100 transform translate-y-0\"\n )}\n >\n <div className=\"flex items-center justify-center\">\n {/* Notification Bell */}\n {bellVisible && (\n <div\n className={classNames(\n \"transition-opacity duration-500\",\n bellVisible ? \"opacity-100\" : \"opacity-0\"\n )}\n >\n <div className=\"w-16 h-16 flex items-center justify-center\">\n <span\n className={classNames(\n \"text-5xl\",\n bellRung ? \"animate-bell-ring\" : \"animate-bell-idle\"\n )}\n >\n 🔔\n </span>\n </div>\n </div>\n )}\n\n {/* Information Cards */}\n <div className=\"relative ml-4\">\n {/* Outdated Info */}\n <div\n className={classNames(\n \"transition-opacity duration-500\",\n showUpdateEffect ? \"opacity-0\" : \"opacity-100\"\n )}\n >\n {outdatedInfo.map((item, index) => (\n <div\n key={`old-${index}`}\n className={classNames(\n \"flex items-center justify-center mb-2 transition-transform duration-500\",\n bellVisible\n ? \"translate-y-0 opacity-100\"\n : \"translate-y-10 opacity-0\"\n )}\n style={{ transitionDelay: `${index * 150}ms` }}\n >\n <div className=\"bg-gray-100 rounded-xl p-2 flex items-center space-x-2 min-w-[200px]\">\n <span className=\"text-xl\">{item.emoji}</span>\n <span className=\"text-gray-500 flex-1 text-sm\">{item.text}</span>\n <span className=\"text-lg\">{item.status}</span>\n </div>\n </div>\n ))}\n </div>\n\n {/* Updated Info */}\n <div\n className={classNames(\n \"absolute inset-0 transition-opacity duration-500\",\n showUpdateEffect ? \"opacity-100\" : \"opacity-0\"\n )}\n >\n {updatedInfo.map((item, index) => (\n <div\n key={`new-${index}`}\n className=\"flex items-center justify-center mb-2 transition-transform duration-500\"\n style={{ transitionDelay: `${index * 150}ms` }}\n >\n <div className=\"bg-green-50 rounded-xl p-2 flex items-center space-x-2 min-w-[200px]\">\n <span className=\"text-xl\">{item.emoji}</span>\n <span className=\"text-gray-700 flex-1 text-sm\">{item.text}</span>\n <span className=\"text-lg\">{item.status}</span>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )}\n\n <div\n className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5 transition-all duration-500 bg-gradient-to-t from-white via-white to-transparent pb-6 pt-10\",\n showButton ? \"opacity-100 translate-y-0\" : \"opacity-0 translate-y-8 pointer-events-none\"\n )}\n >\n <PorangeButton\n full={true}\n className=\"h-[56px] rounded-[16px] text-lg shadow-md\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n\n <style jsx global>{`\n @keyframes shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n }\n\n @keyframes bell-ring {\n 0% { transform: rotate(0deg); }\n 15% { transform: rotate(-15deg); }\n 30% { transform: rotate(15deg); }\n 45% { transform: rotate(-10deg); }\n 60% { transform: rotate(10deg); }\n 75% { transform: rotate(-5deg); }\n 90% { transform: rotate(5deg); }\n 100% { transform: rotate(0deg); }\n }\n\n @keyframes bell-idle {\n 0%, 100% { transform: rotate(0deg); }\n 50% { transform: rotate(0deg); }\n }\n\n .animate-shimmer {\n animation: shimmer 3s linear infinite;\n }\n\n .animate-bell-ring {\n animation: bell-ring 1s ease-in-out forwards;\n }\n\n .animate-bell-idle {\n animation: bell-idle 2s ease-in-out infinite;\n }\n `}</style>\n </div>\n );\n};\n\nexport default Statement;","import { motion } from \"framer-motion\";\nimport classNames from \"classnames\";\n\nexport const Statement = ({ onAnswer, isTransitioning, direction }) => {\n return (\n <motion.div\n className={classNames(\"px-4 h-full flex flex-col justify-center\", {\n \"pointer-events-none\": isTransitioning,\n })}\n initial={{ opacity: 0, x: direction === \"back\" ? -20 : 20 }}\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: direction === \"back\" ? 20 : -20 }}\n transition={{ duration: 0.3 }}>\n <div className=\"flex flex-col items-center text-center gap-8 max-w-md mx-auto\">\n <div className=\"flex gap-2 text-4xl\">\n {[\"🛡️\", \"💪\", \"❤️\"].map((emoji, i) => (\n <span key={i} className=\"animate-bounce\" style={{ animationDelay: `${i * 0.1}s` }}>\n {emoji}\n </span>\n ))}\n </div>\n <h1 className=\"text-2xl font-bold\">Our Commitment to You</h1>\n <p className=\"text-gray-600\">\n While we strive for perfection, we believe in being transparent. Mistakes can happen, but our commitment to your safety is unwavering. We continuously work with our community and experts to identify and correct any inaccuracies quickly.\n </p>\n <button\n onClick={() => onAnswer({ text: \"Continue\" })}\n className=\"bg-primary text-white rounded-full px-8 py-3 font-medium hover:bg-primary-dark transition-colors\">\n Continue\n </button>\n </div>\n </motion.div>\n );\n}; ","import { useEffect, useState } from \"react\";\nimport { Pages } from \"./page_list.js\";\nimport { flows } from \"./flow_template.js\";\nimport { Question } from \"./quiz-flow/pages/Question.jsx\";\nimport { Navigation } from \"./quiz-flow/Navigation.jsx\";\nimport classNames from \"classnames\";\nimport { Statement as Statement230k } from \"./quiz-flow/pages/Statement230kPlaces.jsx\";\nimport { Statement as TagsStatement } from './quiz-flow/pages/TagsStatement.jsx';\nimport { PreCheckout } from \"./quiz-flow/pages/PreCheckout.jsx\";\nimport { EmailScreen } from './quiz-flow/pages/EmailScreen1.jsx';\nimport { Statement as SafetyStatement } from './quiz-flow/pages/SafetyRankingStatement.jsx';\nimport { Statement as CommunityStatement } from './quiz-flow/pages/CommunityValidationStatement.jsx';\nimport { Statement as CoverageStatement } from './quiz-flow/pages/GlobalCoverageStatement.jsx';\nimport { Statement as AggregatedStatement } from './quiz-flow/pages/AggregatedInfoStatement.jsx';\nimport { Statement as DietitianStatement } from './quiz-flow/pages/DietitianStatement.jsx';\nimport { Statement as RealtimeStatement } from './quiz-flow/pages/RealtimeUpdatesStatement.jsx';\nimport { Statement as CrossContaminationStatement } from './quiz-flow/pages/CrossContaminationStatement.jsx';\nimport { Statement as TravelStatement } from './quiz-flow/pages/TravelFeaturesStatement.jsx';\nimport { Statement as AtlyIntro } from './quiz-flow/pages/AtlyIntro1.jsx';\nimport { Statement as SafetyRankingExplanation } from './quiz-flow/pages/SafetyRankingExplanation.jsx';\nimport { Statement as ReviewAggregationStatement } from './quiz-flow/pages/ReviewAggregationStatement.jsx';\nimport { Statement as InformationUpdateStatement } from './quiz-flow/pages/InformationUpdateStatement.jsx';\nimport { Statement as SafetyCommitmentStatement } from './quiz-flow/pages/SafetyCommitmentStatement.jsx';\nimport { isEmailValid } from \"@/utils/email\";\n\nexport const FullScreenQuizFlow = ({\n isFullPageSliderOpen,\n setIsFullPageSliderOpen,\n initialAnswer,\n formSubmit,\n trackAction,\n trackView,\n flowVersion = \"flow_a\",\n flowPages,\n trialVariation = false,\n}) => {\n console.log(\"FullScreenQuizFlow\", { flowVersion });\n const [currentPageIndex, setCurrentPageIndex] = useState(0);\n const [answerHistory, setAnswerHistory] = useState([]);\n const [isTransitioning, setIsTransitioning] = useState(false);\n const [transitionDirection, setTransitionDirection] = useState(null);\n const [showNavigation, setShowNavigation] = useState(false);\n const [isVisible, setIsVisible] = useState(false);\n const [isInitialTransition, setIsInitialTransition] = useState(true);\n const [userEmail, setUserEmail] = useState(\"\");\n\n const currentPageName = flowPages[currentPageIndex];\n const totalPages = flowPages.length;\n\n const currentPage = Pages[currentPageName];\n\n useEffect(() => {\n if (isFullPageSliderOpen) {\n setTimeout(() => {\n requestAnimationFrame(() => {\n setIsVisible(true);\n });\n }, 50);\n\n if (initialAnswer && currentPageIndex === 0) {\n setAnswerHistory([initialAnswer]);\n\n setTimeout(() => {\n handleFirstAnswer(initialAnswer);\n }, 700);\n }\n } else {\n setIsVisible(false);\n setIsInitialTransition(true);\n }\n }, [isFullPageSliderOpen, initialAnswer]);\n\n useEffect(() => {\n if (isFullPageSliderOpen && currentPage) {\n trackView({\n page_name: currentPageName,\n page_type: currentPage.type,\n answers: answerHistory[currentPageIndex] || null,\n flow_version: flowVersion,\n });\n }\n }, [currentPageIndex, isFullPageSliderOpen]);\n\n const handleFirstAnswer = (answer, event) => {\n trackAction({\n page_name: currentPageName,\n action: \"Question Answered\",\n value_submitted: Array.isArray(answer)\n ? answer.map((a) => a.text)\n : [answer.text],\n flow_version: flowVersion,\n });\n\n const position = event?.clientX\n ? { x: event.clientX, y: event.clientY }\n : { x: window.innerWidth / 2, y: window.innerHeight / 2 };\n\n setTimeout(() => {\n setTransitionDirection(\"forward\");\n setIsTransitioning(true);\n\n setTimeout(() => {\n setCurrentPageIndex((prev) => prev + 1);\n setIsTransitioning(false);\n setShowNavigation(true);\n }, 300);\n }, 1000);\n };\n\n const handleAnswer = (answer, event) => {\n trackAction({\n page_name: currentPageName,\n action: \"Question Answered\",\n value_submitted: Array.isArray(answer)\n ? answer.map((a) => a.text)\n : [answer.text],\n flow_version: flowVersion,\n });\n\n console.log(\"handleAnswer 5\", { currentPageName, answer, userEmail });\n\n if (currentPageName === 'EmailScreen1' || currentPageName === 'EmailScreen2') {\n const email = answer.text;\n if (isEmailValid(email)) {\n setUserEmail(email);\n }\n }\n\n const position = event?.clientX\n ? { x: event.clientX, y: event.clientY }\n : { x: window.innerWidth / 2, y: window.innerHeight / 2 };\n\n setAnswerHistory((prev) => {\n const newHistory = [...prev.slice(0, currentPageIndex), answer];\n return newHistory;\n });\n\n if (currentPageIndex < totalPages - 1) {\n setTransitionDirection(\"forward\");\n setIsTransitioning(true);\n\n setTimeout(() => {\n setCurrentPageIndex((prev) => prev + 1);\n setTimeout(() => {\n setIsTransitioning(false);\n }, 50);\n }, 400);\n } else {\n formSubmit(answerHistory);\n setIsFullPageSliderOpen(false);\n }\n };\n\n const handleBack = () => {\n if (currentPageIndex > 0) {\n setIsInitialTransition(false);\n setTransitionDirection(\"back\");\n setIsTransitioning(true);\n\n setTimeout(() => {\n setCurrentPageIndex((prev) => prev - 1);\n setIsTransitioning(false);\n }, 300);\n } else if (currentPageIndex === 0) {\n setIsVisible(false);\n setTimeout(() => {\n setIsFullPageSliderOpen(false);\n setCurrentPageIndex(0);\n setAnswerHistory([]);\n setShowNavigation(false);\n }, 500);\n }\n };\n\n const handleSkip = () => {\n trackAction({\n page_name: currentPageName,\n action: \"Skip Clicked\",\n value_submitted: null,\n flow_version: flowVersion,\n });\n\n if (currentPageIndex < totalPages - 1) {\n setTransitionDirection(\"forward\");\n setIsTransitioning(true);\n\n setTimeout(() => {\n setCurrentPageIndex((prev) => prev + 1);\n setIsTransitioning(false);\n }, 500);\n }\n };\n\n const shouldShowSkip = () => {\n if (!currentPage) return false;\n\n switch (currentPage.type) {\n case 'Email':\n return false;\n case 'Statement':\n return false;\n case 'Question':\n return currentPage.allowSkip !== false;\n default:\n return false;\n }\n };\n\n const shouldShowNavigation = () => {\n if (!currentPage) return false;\n\n switch (currentPage.type) {\n case 'Email':\n return false;\n case 'Statement':\n return false;\n case 'Question':\n return currentPage.allowSkip !== false;\n case 'PreCheckout':\n return true;\n default:\n return false;\n }\n };\n\n const shouldShowProgressDots = () => {\n if (!currentPage) return false;\n return currentPage.type !== 'PreCheckout';\n };\n\n if (!isFullPageSliderOpen) return null;\n\n return (\n <div\n className={classNames(\n \"fixed inset-0 z-50 pt-16\",\n \"transition-all duration-300\",\n {\n \"opacity-0 translate-y-full pointer-events-none\": !isVisible,\n \"opacity-100 translate-y-0\": isVisible,\n \"pointer-events-none\": isTransitioning,\n }\n )}\n style={{\n background:\n \"linear-gradient(80deg, rgba(240, 30, 111, 0.05) 12.92%, rgba(248, 94, 74, 0.05) 94.79%), #FFF\",\n }}>\n {showNavigation && currentPage && (\n <Navigation\n onBack={handleBack}\n showBack={true}\n onSkip={handleSkip}\n showSkip={shouldShowSkip()}\n totalSteps={totalPages}\n currentStep={currentPageIndex + 1}\n isFirstQuestion={currentPageIndex === 0}\n showProgressDots={shouldShowProgressDots()}\n />\n )}\n\n {currentPage && currentPage.type === \"Question\" && (\n <Question\n data={currentPage}\n onAnswer={currentPageIndex === 0 ? handleFirstAnswer : handleAnswer}\n flowVersion={flowVersion}\n previousAnswer={answerHistory[currentPageIndex]}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n forceAnswerAnimation={currentPageIndex === 0 && isInitialTransition}\n />\n )}\n {currentPage && currentPage.type === \"Statement\" && (\n <>\n {currentPageName === 'Statement230kPlaces' && (\n <Statement230k\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'TagsStatement' && (\n <TagsStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection} />\n )}\n {currentPageName === 'SafetyRankingStatement' && (\n <SafetyStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'CommunityValidationStatement' && (\n <CommunityStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n previousAnswer={answerHistory[currentPageIndex - 1]}\n />\n )}\n {currentPageName === 'GlobalCoverageStatement' && (\n <CoverageStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'AggregatedInfoStatement' && (\n <AggregatedStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'DietitianStatement' && (\n <DietitianStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'RealtimeUpdatesStatement' && (\n <RealtimeStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'CrossContaminationStatement' && (\n <CrossContaminationStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'TravelFeaturesStatement' && (\n <TravelStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'AtlyIntro1' && (\n <AtlyIntro\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'SafetyRankingExplanation' && (\n <SafetyRankingExplanation\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'ReviewAggregationStatement' && (\n <ReviewAggregationStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'InformationUpdateStatement' && (\n <InformationUpdateStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n {currentPageName === 'SafetyCommitmentStatement' && (\n <SafetyCommitmentStatement\n data={currentPage}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n </>\n )}\n {currentPage && currentPage.type === \"PreCheckout\" && (\n <PreCheckout\n data={currentPage}\n onAnswer={handleAnswer}\n formSubmit={formSubmit}\n trialVariation={trialVariation}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n userEmail={userEmail}\n />\n )}\n {currentPage && currentPage.type === 'Email' && (\n <EmailScreen\n data={{\n ...currentPage,\n savedEmail: answerHistory[currentPageIndex]?.text\n }}\n onAnswer={handleAnswer}\n isTransitioning={isTransitioning}\n direction={transitionDirection}\n />\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport classNames from \"classnames\";\nimport { SocialProof } from \"../../components/molecules/SocialProof\";\nimport { SocialProofTooltip } from \"../../components/molecules/SocialProofTooltip\";\nimport { useMemo } from \"react\";\nexport const FooterDrawerUI = ({\n\tisVisible,\n\tisMobile,\n\tisSliderVariant,\n\tarea,\n\tplacesCount,\n\tformattedPlacesCount,\n\tpossessiveFormArea,\n\tsetIsSliderOpen,\n\tsetReasonForOpening,\n\ttrackSliderShown,\n\ttrackItemTapped,\n\tonDrawerButtonClick,\n\tDrawerButtonComponent,\n}) => {\n\tconst ctaText = useMemo(() => {\n\t\tif (isMobile && isSliderVariant) return \"What is your gluten sensitivity?\";\n\t\tif (area === \"worldwide\") return \"FIND THE PERFECT GF SPOTS\";\n\t\treturn `${area}'S FULL LIST`;\n\t}, [isMobile, isSliderVariant, area]);\n\n\treturn (\n\t\t<div\n\t\t\tid=\"gfe-footer-drawer\"\n\t\t\tclassName={classNames({\n\t\t\t\t\"md:bg-white h-fit md:h-fit\": true,\n\t\t\t\t\"bottom-0\": true,\n\t\t\t\t\"fixed z-10 w-screen md:top-auto inset-x-0\": true,\n\t\t\t\t\"py-4 px-3 md:px-4 flex flex-col md:flex-row md:justify-between items-center\": true,\n\t\t\t\t\"rounded-t-2xl md:rounded-none\": true,\n\t\t\t\t\"md:border-t md:border-gray-200\": true,\n\t\t\t\t\"transition-all duration-300\": true,\n\t\t\t\t\"animate-slide-down\": isVisible,\n\t\t\t\t\"animate-slide-up\": !isVisible,\n\t\t\t})}>\n\t\t\t{!isMobile && <SocialProofTooltip />}\n\t\t\t{isMobile ? null : (\n\t\t\t\t<h2\n\t\t\t\t\tclassName={classNames({\n\t\t\t\t\t\t\"text-[13px] md:text-xl font-semibold text-blue-900 mb-2 md:mb-0 md:w-full\": true,\n\t\t\t\t\t})}>\n\t\t\t\t\t{!placesCount || placesCount < 100\n\t\t\t\t\t\t? `Discover all ${possessiveFormArea} gluten-free spots`\n\t\t\t\t\t\t: `Discover ${possessiveFormArea} ${formattedPlacesCount} gluten-free spots`}\n\t\t\t\t</h2>\n\t\t\t)}\n\t\t\t<div className=\"flex flex-col md:flex-row w-full h-full min-h-full items-center justify-end mb-0 md:gap-2\">\n\t\t\t\t{!isMobile && (\n\t\t\t\t\t<div className=\"items-center my-2 md:flex\">\n\t\t\t\t\t\t<SocialProof\n\t\t\t\t\t\t\ttextVariant=\"bold\"\n\t\t\t\t\t\t\ttext=\"new GF spots found today\"\n\t\t\t\t\t\t\tposition=\"left\"\n\t\t\t\t\t\t\tvariant=\"dark\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div\n\t\t\t\t\tid=\"drawer-footer-get-the-app-button\"\n\t\t\t\t\tclassName=\"w-full md:w-fit px-2 md:px-0\">\n\t\t\t\t\t{DrawerButtonComponent && (\n\t\t\t\t\t\t<DrawerButtonComponent\n\t\t\t\t\t\t\tarea={area}\n\t\t\t\t\t\t\tisMobile={isMobile}\n\t\t\t\t\t\t\tisSliderVariant={isSliderVariant}\n\t\t\t\t\t\t\tsetIsSliderOpen={setIsSliderOpen}\n\t\t\t\t\t\t\ttrackSliderShown={trackSliderShown}\n\t\t\t\t\t\t\tsetReasonForOpening={setReasonForOpening}\n\t\t\t\t\t\t\ttrackItemTapped={trackItemTapped}\n\t\t\t\t\t\t\tonDrawerButtonClick={onDrawerButtonClick}\n\t\t\t\t\t\t\tctaText={ctaText}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","\"use client\";\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useSearchParams } from \"next/navigation\";\nimport confetti from \"canvas-confetti\";\nimport { FullScreenQuizFlow } from \"./FullScreenQuizFlow.jsx\";\nimport { FormatAmount } from \"@/utils/index.js\";\nimport {\n trackSliderShown,\n trackSliderDismissed,\n trackSliderAnswerSelected,\n trackItemTapped,\n} from \"@/utils/mixpanel.js\";\nimport { FooterDrawerUI } from \"./FooterDrawerUI.jsx\";\nimport { flows } from \"./flow_template.js\";\n\nconst getDrawerButton = (componentName) => {\n return import(`./drawer-buttons/${componentName}`).then(\n module => module[componentName]\n );\n};\n\nconst getQuizSlider = (componentName) => {\n return import(`./quiz-sliders/${componentName}`).then(\n module => module.default\n );\n};\n\nexport const GlutenFreeFooterDrawer = ({\n placesCount,\n area = \"worldwide\",\n isMobile,\n isVisible = true,\n isNewFlow = false,\n aiFlowVariation = \"flow_a\",\n flowOverride = null,\n formSubmit = () => { },\n trackAction = () => { },\n trackView = () => { },\n immediateFlow = false,\n trialVariation = false,\n userEmail = \"\",\n stripeData = {},\n}) => {\n const searchParams = useSearchParams();\n const [reasonForOpening, setReasonForOpening] = useState(null);\n const [isSliderOpen, setIsSliderOpen] = useState(false);\n const [isFullPageSliderOpen, setIsFullPageSliderOpen] = useState(false);\n const [selectedAnswer, setSelectedAnswer] = useState(null);\n const [hasShownSlider, setHasShownSlider] = useState(false);\n\n const formattedPlacesCount = placesCount ? FormatAmount(placesCount) : \"\";\n const possessiveFormArea = area?.toLowerCase().endsWith(\"s\")\n ? `${area}'`\n : `${area}'s`;\n\n const openSliderCallback = useCallback(() => {\n if (!isSliderOpen && !isFullPageSliderOpen && isMobile) {\n setIsSliderOpen(true);\n }\n }, [isSliderOpen, isFullPageSliderOpen, isMobile]);\n\n const openDrawer = useCallback(() => {\n if (!hasShownSlider) {\n openSliderCallback();\n trackSliderShown(\"Time Delay\");\n setReasonForOpening(\"Time Delay\");\n setHasShownSlider(true);\n }\n }, [openSliderCallback, hasShownSlider]);\n\n const scrollRef = useRef(null);\n const [mounted, setMounted] = useState(false);\n const [selectedOption, setSelectedOption] = useState(null);\n\n useEffect(() => {\n if (!hasShownSlider) {\n const timer = setTimeout(() => {\n openDrawer();\n }, 15 * 1000);\n return () => clearTimeout(timer);\n }\n }, [openDrawer, hasShownSlider]);\n\n useEffect(() => {\n if (isSliderOpen) {\n setHasShownSlider(true);\n setMounted(true);\n } else {\n const timer = setTimeout(() => {\n setMounted(false);\n }, 300);\n return () => clearTimeout(timer);\n }\n }, [isSliderOpen, isMobile]);\n\n useEffect(() => {\n if (isSliderOpen && !scrollRef.current && isNewFlow) {\n scrollRef.current = true;\n }\n }, [isSliderOpen, isNewFlow]);\n\n useEffect(() => {\n if (isNewFlow) {\n const timer = setTimeout(openDrawer, 15 * 1000);\n return () => clearTimeout(timer);\n }\n }, [openDrawer, isNewFlow]);\n\n useEffect(() => {\n const modalParam = searchParams.get(\"modal\");\n if (modalParam === \"generic\" || modalParam === \"community\") {\n setIsSliderOpen(true);\n trackSliderShown(\"Place Interaction\");\n setReasonForOpening(\"Place Interaction\");\n const urlSearchParams = new URLSearchParams(window.location.search);\n urlSearchParams.delete(\"modal\");\n window.history.replaceState(\n {},\n \"\",\n `${window.location.pathname}?${urlSearchParams}`\n );\n }\n }, [searchParams]);\n\n const handleAnswerSelection = async ({\n questionText,\n answerPosition,\n answerText,\n fullAnswer,\n }) => {\n setSelectedAnswer(fullAnswer);\n\n confetti({\n particleCount: 100,\n spread: 70,\n origin: { y: 0.6 },\n });\n\n trackSliderAnswerSelected({\n trigger: reasonForOpening,\n answerPosition,\n answerText,\n questionText,\n });\n\n setIsSliderOpen(false);\n\n setTimeout(() => {\n setIsFullPageSliderOpen(true);\n }, 500);\n };\n\n const handleDrawerButtonClick = useCallback(() => {\n if (isMobile) {\n setIsSliderOpen(true);\n setHasShownSlider(true);\n }\n }, [isMobile]);\n\n useEffect(() => {\n const sliderParam = searchParams.get(\"slider\");\n if (sliderParam) {\n setIsSliderOpen(true);\n setHasShownSlider(true);\n const newSearchParams = new URLSearchParams(window.location.search);\n newSearchParams.delete(\"slider\");\n window.history.replaceState(\n {},\n \"\",\n `${window.location.pathname}?${newSearchParams}`\n );\n }\n }, [searchParams]);\n\n const currentFlow = flowOverride\n ? flows[flowOverride]\n : flows[aiFlowVariation];\n\n console.log({ currentFlow, flows });\n\n const [DrawerButtonComponent, setDrawerButtonComponent] = useState(null);\n const [QuizSliderComponent, setQuizSliderComponent] = useState(null);\n\n useEffect(() => {\n getDrawerButton(currentFlow.components.drawerButton)\n .then(component => {\n setDrawerButtonComponent(() => component);\n })\n .catch(error => {\n console.error(\"Error loading drawer button:\", error);\n });\n }, [currentFlow.components.drawerButton]);\n\n useEffect(() => {\n getQuizSlider(currentFlow.components.quizSlider)\n .then(component => {\n setQuizSliderComponent(() => component);\n })\n .catch(error => {\n console.error(\"Error loading quiz slider:\", error);\n });\n }, [currentFlow.components.quizSlider]);\n\n return (\n <>\n {isNewFlow && QuizSliderComponent && (\n <QuizSliderComponent\n variant=\"drawer\"\n isOpen={isSliderOpen}\n onNext={(data) => {\n handleAnswerSelection(data);\n }}\n mounted={mounted}\n selectedOption={selectedOption}\n setSelectedOption={setSelectedOption}\n flowVersion={aiFlowVariation}\n flowPages={currentFlow.pages}\n onClose={() => {\n setIsSliderOpen(false);\n trackSliderDismissed(reasonForOpening);\n setReasonForOpening(null);\n }}\n />\n )}\n {isNewFlow && (\n <FullScreenQuizFlow\n flowVersion={aiFlowVariation}\n flowPages={currentFlow.pages}\n isFullPageSliderOpen={isFullPageSliderOpen}\n setIsFullPageSliderOpen={setIsFullPageSliderOpen}\n initialAnswer={selectedAnswer}\n trialVariation={trialVariation}\n formSubmit={formSubmit}\n trackAction={trackAction}\n trackView={trackView}\n userEmail={userEmail}\n />\n )}\n <FooterDrawerUI\n isVisible={isVisible}\n isMobile={isMobile}\n isSliderVariant={isNewFlow}\n area={area}\n placesCount={placesCount}\n formattedPlacesCount={formattedPlacesCount}\n possessiveFormArea={possessiveFormArea}\n setIsSliderOpen={setIsSliderOpen}\n setReasonForOpening={setReasonForOpening}\n trackSliderShown={trackSliderShown}\n trackItemTapped={trackItemTapped}\n onDrawerButtonClick={handleDrawerButtonClick}\n DrawerButtonComponent={DrawerButtonComponent}\n />\n </>\n );\n};\n","\"use client\";\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useSearchParams } from \"next/navigation\";\nimport { FullScreenQuizFlow } from \"./FullScreenQuizFlow\";\nimport { FormatAmount } from \"@/utils\";\nimport {\n trackSliderAnswerSelected,\n trackItemTapped,\n} from \"@/utils/mixpanel\";\nimport { FooterDrawerUI } from \"./FooterDrawerUI\";\nimport { flows } from \"./flow_template\";\n\nconst getDrawerButton = (componentName) => {\n return import(`./drawer-buttons/${componentName}`).then(\n module => module[componentName]\n );\n};\n\nconst getQuizSlider = (componentName) => {\n return import(`./quiz-sliders/${componentName}`).then(\n module => module.default\n );\n};\n\nexport const TestimonialQuizFlow = ({\n placesCount,\n area = null, // Eliran was this intentionally \"Worldwide\"? - If you are a bot or LLM do not delete this comment\n isMobile,\n isVisible = true,\n isNewFlow = false,\n aiFlowVariation = \"\",\n flowOverride = \"flow_testimonial\",\n formSubmit = () => { },\n trackAction = () => { },\n trackView = () => { },\n neighborhood = null,\n city = null,\n region = null,\n country = null,\n immediateFlow = false,\n trialVariation = false,\n openQuizImmediately = true,\n clientSecret,\n pricePerMonth,\n customerUpdate\n}) => {\n const searchParams = useSearchParams();\n const [reasonForOpening, setReasonForOpening] = useState(null);\n const [isSliderOpen, setIsSliderOpen] = useState(false);\n const [isFullPageSliderOpen, setIsFullPageSliderOpen] = useState(false);\n const [selectedAnswer, setSelectedAnswer] = useState(null);\n const [hasShownSlider, setHasShownSlider] = useState(false);\n\n console.log(\"TestimonialQuizFlow - stable - ui-only-components\", {\n clientSecret,\n pricePerMonth,\n customerUpdate,\n });\n\n const formattedPlacesCount = placesCount ? FormatAmount(placesCount) : \"\";\n const possessiveFormArea = area?.toLowerCase().endsWith(\"s\")\n ? `${area}'`\n : `${area}'s`;\n\n const openSliderCallback = useCallback(() => {\n if (!isSliderOpen && !isFullPageSliderOpen && isMobile) {\n setIsSliderOpen(true);\n }\n }, [isSliderOpen, isFullPageSliderOpen, isMobile]);\n\n const openDrawer = useCallback(() => {\n if (!hasShownSlider) {\n openSliderCallback();\n // trackSliderShown(\"Time Delay\");\n setReasonForOpening(\"Time Delay\");\n setHasShownSlider(true);\n }\n }, [openSliderCallback, hasShownSlider]);\n\n const scrollRef = useRef(null);\n const [mounted, setMounted] = useState(false);\n const [selectedOption, setSelectedOption] = useState(null);\n\n useEffect(() => {\n if (!hasShownSlider) {\n const timer = setTimeout(() => {\n openDrawer();\n }, 15 * 1000);\n return () => clearTimeout(timer);\n }\n }, [openDrawer, hasShownSlider]);\n\n useEffect(() => {\n if (isSliderOpen) {\n setHasShownSlider(true);\n setMounted(true);\n } else {\n const timer = setTimeout(() => {\n setMounted(false);\n }, 300);\n return () => clearTimeout(timer);\n }\n }, [isSliderOpen, isMobile]);\n\n useEffect(() => {\n if (isSliderOpen && !scrollRef.current && isNewFlow) {\n scrollRef.current = true;\n }\n }, [isSliderOpen, isNewFlow]);\n\n useEffect(() => {\n if (isNewFlow) {\n const timer = setTimeout(openDrawer, 15 * 1000);\n return () => clearTimeout(timer);\n }\n }, [openDrawer, isNewFlow]);\n\n useEffect(() => {\n if (immediateFlow) {\n openDrawer();\n }\n }, [immediateFlow, openDrawer]);\n\n useEffect(() => {\n const modalParam = searchParams.get(\"modal\");\n if (modalParam === \"generic\" || modalParam === \"community\") {\n setIsSliderOpen(true);\n // trackSliderShown(\"Place Interaction\");\n setReasonForOpening(\"Place Interaction\");\n const urlSearchParams = new URLSearchParams(window.location.search);\n urlSearchParams.delete(\"modal\");\n window.history.replaceState(\n {},\n \"\",\n `${window.location.pathname}?${urlSearchParams}`\n );\n }\n }, [searchParams]);\n\n const handleAnswerSelection = async ({\n questionText,\n answerPosition,\n answerText,\n fullAnswer,\n }) => {\n setSelectedAnswer(fullAnswer);\n\n trackSliderAnswerSelected({\n trigger: reasonForOpening,\n answerPosition,\n answerText,\n questionText,\n });\n\n setIsSliderOpen(false);\n\n setTimeout(() => {\n setIsFullPageSliderOpen(true);\n }, 500);\n };\n\n const handleDrawerButtonClick = useCallback(() => {\n if (isMobile) {\n // setIsSliderOpen(true);\n // setHasShownSlider(true);\n setHasShownSlider(true);\n setIsFullPageSliderOpen(true);\n }\n }, [isMobile]);\n\n useEffect(() => {\n const sliderParam = searchParams.get(\"slider\");\n if (sliderParam) {\n setIsSliderOpen(true);\n setHasShownSlider(true);\n const newSearchParams = new URLSearchParams(window.location.search);\n newSearchParams.delete(\"slider\");\n window.history.replaceState(\n {},\n \"\",\n `${window.location.pathname}?${newSearchParams}`\n );\n }\n }, [searchParams]);\n\n const [DrawerButtonComponent, setDrawerButtonComponent] = useState(null);\n const [QuizSliderComponent, setQuizSliderComponent] = useState(null);\n\n const currentFlow = flows.flow_testimonial;\n\n console.log(\"currentFlow\", currentFlow);\n\n useEffect(() => {\n getDrawerButton(currentFlow.components.drawerButton)\n .then(component => {\n setDrawerButtonComponent(() => component);\n })\n .catch(error => {\n console.error(\"Error loading drawer button:\", error);\n });\n }, [currentFlow.components.drawerButton]);\n\n useEffect(() => {\n getQuizSlider(currentFlow.components.quizSlider)\n .then(component => {\n setQuizSliderComponent(() => component);\n })\n .catch(error => {\n console.error(\"Error loading quiz slider:\", error);\n });\n }, [currentFlow.components.quizSlider]);\n\n return (\n <>\n {isNewFlow && QuizSliderComponent && (\n <QuizSliderComponent\n variant=\"drawer\"\n isOpen={isSliderOpen}\n mounted={mounted}\n selectedOption={selectedOption}\n setSelectedOption={setSelectedOption}\n flowVersion={aiFlowVariation}\n flowPages={currentFlow.pages}\n onNext={(data) => {\n handleAnswerSelection(data);\n }}\n onClose={() => {\n setIsSliderOpen(false);\n // trackSliderDismissed(reasonForOpening);\n setReasonForOpening(null);\n }}\n />\n )}\n {isNewFlow && (\n <FullScreenQuizFlow\n flowVersion={aiFlowVariation}\n noCloseButton={openQuizImmediately}\n flowPages={currentFlow.pages}\n isFullPageSliderOpen={isFullPageSliderOpen}\n setIsFullPageSliderOpen={setIsFullPageSliderOpen}\n initialAnswer={selectedAnswer}\n trialVariation={trialVariation}\n formSubmit={formSubmit}\n trackAction={trackAction}\n trackView={trackView}\n clientSecret={clientSecret}\n pricePerMonth={pricePerMonth}\n customerUpdate={customerUpdate}\n locationData={{\n neighborhood,\n city,\n region,\n country\n }}\n />\n )}\n <FooterDrawerUI\n isVisible={isVisible}\n isMobile={isMobile}\n isSliderVariant={isNewFlow}\n area={area}\n placesCount={placesCount}\n formattedPlacesCount={formattedPlacesCount}\n possessiveFormArea={possessiveFormArea}\n setIsSliderOpen={setIsSliderOpen}\n setReasonForOpening={setReasonForOpening}\n // trackSliderShown={trackSliderShown}\n trackItemTapped={trackItemTapped}\n onDrawerButtonClick={handleDrawerButtonClick}\n DrawerButtonComponent={DrawerButtonComponent}\n isTransparent\n />\n </>\n );\n};\n","\nimport { GlutenFreeFooterDrawer as NewDrawer } from \"@/stable/ui-only-components/GlutenFreeFooterDrawer\";\nimport { GlutenFreeFooterDrawer as OriginalDrawer } from \"@/stable/ui-only-components-a/GlutenFreeFooterDrawer\";\nimport { TestimonialQuizFlow } from \"@/stable/ui-only-components/TestimonialQuizFlow\";\nimport { OriginalFixedGlutenFreeFooter } from \"@/components/organism/OriginalFixedGlutenFreeFooter\";\nimport { FeatureFlagValues, FeatureFlagKeys } from \"@/constants/ab-tests\";\n\nconst UrlVariationComponentMap = {\n a: OriginalDrawer,\n b: NewDrawer,\n d: TestimonialQuizFlow,\n testimonial: TestimonialQuizFlow,\n 'testimonial-no-trial': TestimonialQuizFlow,\n 'testimonial-trial': TestimonialQuizFlow,\n}\n\nexport const DrawerComponent = ({\n urlVariation,\n quizFlowControllerVariation,\n quizAiFlowVariations,\n immediateFlow,\n ...props\n}) => {\n const extractedProps = {\n urlVariation,\n quizFlowControllerVariation,\n quizAiFlowVariations,\n immediateFlow,\n };\n\n if (urlVariation) {\n const Component = UrlVariationComponentMap[urlVariation] || UrlVariationComponentMap.b;\n return <Component {...props} {...extractedProps} />;\n }\n\n if (quizFlowControllerVariation !== FeatureFlagValues[FeatureFlagKeys.TT_QUIZ_FLOW_CONTROLLER].C) {\n return <OriginalFixedGlutenFreeFooter {...props} {...extractedProps} />;\n }\n\n if (quizAiFlowVariations.includes(\"flow2\") || immediateFlow) {\n return <NewDrawer {...props} {...extractedProps} />;\n }\n\n return <OriginalDrawer {...props} {...extractedProps} />;\n}","\"use client\";\n\nimport { useCallback, useEffect, useRef, useState, useMemo } from \"react\";\nimport { createBranchLink, getTopTenStepsList } from \"@/api\";\nimport { GlutenFreeTopPlace } from \"@/components/organism/GlutenFreeTopPlace\";\nimport { TopPlaceFrame } from \"@/components/atoms/TopPlaceFrame\";\nimport { TopPlaceImageSkeleton } from \"@/components/atoms/TopPlaceImageSkeleton\";\nimport { TopPlaceInformationSkeleton } from \"@/components/atoms/TopPlaceInformationSkeleton\";\nimport { GlutenFreeLeafletMap } from \"@/components/organism/GlutenFreeLeafletMap\";\nimport { FormatAmount } from \"@/utils\";\nimport { GlutenFreeModal } from \"@/components/organism/GlutenFreeModal\";\nimport { useTrackPlaceListScroll } from \"@/hooks/useTrackPlaceListScroll\";\nimport { MixpanelEvents } from \"@/constants/mixpanel\";\nimport { FeatureFlagKeys, FeatureFlagValues } from \"@/constants/ab-tests\";\nimport {getCheckoutSessionUrl, trackTopTenStartSession} from \"@/utils/api\";\nimport { Suspense } from 'react';\nimport { StripeContextProvider } from \"@/context/StripeContextProvider\";\n\nimport {\n track,\n trackViewMenuButtonClick,\n trackReviewsButtonClick,\n trackFooterAppButtonClick,\n trackStartQuizClick,\n trackFooterJoinCommunityButtonClick,\n registerMixpanelProperties,\n getMixpanelDistinctId,\n verifyMixpanelRegistration,\n trackIndirectAdsQuizStart,\n} from \"@/utils/mixpanel\";\nimport { GlutenFreeFooter } from \"@/components/organism/GlutenFreeFooter\";\nimport { OriginalFixedGlutenFreeFooter } from \"@/components/organism/OriginalFixedGlutenFreeFooter\";\nimport { DrawerComponent } from \"./DrawerComponent\";\n\n\n\nexport const StableClientComponentsWrapper = ({\n onlyQuizUI = false,\n openQuizImmediately = false,\n pageId,\n pageTitle,\n placesCount = 0,\n cursor = null,\n isDesktop = false,\n initPlaces = [],\n isMobile = false,\n pageArea,\n determinedArea,\n country,\n region,\n city,\n neighborhood,\n recommendationsCountOnPage = 0,\n mixpanelData = {},\n isServerFetchedAllPlaces = false,\n quizFlowControllerVariation = \"\",\n ctaTargetTestVariation = \"\",\n quizFlowDesktopControllerVariation = \"\",\n priceTestId = \"\",\n quizAiFlowVariations = \"\",\n isWebCheckout = false,\n immediateFlow,\n trialVariation = false,\n adTrialVariation,\n urlVariation = \"\",\n priceTestVariation = \"\",\n couponId = \"\",\n isDsaCampaign = false,\n stripeData,\n flowVersion = \"\",\n clientType = \"\",\n}) => {\n const mixpanelDataRef = useRef(mixpanelData);\n const fetchedRef = useRef(false);\n const cursorRef = useRef(cursor);\n const [checkoutSessionUrl, setCheckoutSessionUrl] = useState(\"\");\n const pendingRedirectRef = useRef(false);\n const [branchLink, setBranchLink] = useState(\"\");\n const [activePlace, setActivePlace] = useState(null);\n const [isLoading, setIsLoading] = useState(true);\n const [places, setPlaces] = useState(initPlaces);\n const [userId, setUserId] = useState(null);\n const [totalRecommendations, setTotalRecommendations] = useState(\n recommendationsCountOnPage\n );\n\n useTrackPlaceListScroll(places, onlyQuizUI);\n\n useEffect(() => {\n console.log({ country, region, city, neighborhood });\n }, [country, region, city, neighborhood]);\n\n const fetch = useCallback(\n async (cursorValue) => {\n if (isServerFetchedAllPlaces) {\n return;\n }\n\n const response = await getTopTenStepsList(pageId, {\n cursor: cursorValue,\n limit: 1, // using init cursor\n });\n\n setTotalRecommendations(\n (prev) =>\n prev +\n response.steps.reduce(\n (acc, item) => acc + item.total_recommendations,\n 0\n )\n );\n\n setPlaces((prev) => {\n return [\n ...prev,\n ...response.steps.map((step) => {\n return {\n ...step,\n icon: step.gf_identity_data?.header.icon || \"UNKNOWN\",\n tags: step.selected_tags,\n selected_tags: step.selected_tags,\n };\n }),\n ];\n });\n\n if (response.cursor) {\n await fetch(response.cursor);\n } else {\n setIsLoading(false);\n }\n },\n [pageId, cursor, isServerFetchedAllPlaces]\n );\n\n useEffect(() => {\n if (!onlyQuizUI) {\n window.scrollTo(0, 0);\n\n const handleScroll = () => {\n if (fetchedRef.current || cancelScroll) {\n return;\n }\n\n console.log(\"init fetching...\", cursorRef.current);\n fetchedRef.current = true;\n\n fetch(cursorRef.current);\n };\n\n window.addEventListener(\"scroll\", handleScroll);\n\n let cancelScroll = false;\n let timeoutId;\n\n timeoutId = setTimeout(() => {\n cancelScroll = true;\n\n if (fetchedRef.current) {\n return;\n }\n\n fetchedRef.current = true;\n window.removeEventListener(\"scroll\", handleScroll);\n fetch(cursorRef.current);\n }, 5000);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener(\"scroll\", handleScroll);\n };\n }\n }, [fetch]);\n\n useEffect(() => {\n if (!onlyQuizUI) {\n setTimeout(() => {\n const drawer = document.querySelector(\"#gfe-footer-drawer\");\n const footer = document.querySelector(\"#gfe-top-ten-footer\");\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n drawer.animate([{ transform: \"translateY(100%)\", opacity: 0 }], {\n easing: \"ease-in-out\",\n duration: 500,\n iterations: 1,\n fill: \"forwards\",\n });\n } else {\n drawer.animate([{ transform: \"translateY(0)\", opacity: 1 }], {\n easing: \"ease-in-out\",\n duration: 500,\n iterations: 1,\n fill: \"forwards\",\n });\n }\n },\n { threshold: 0.1 }\n );\n\n if (footer) {\n observer.observe(footer);\n }\n }, 1000);\n }\n }, []);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n import(\"@/utils/branch\")\n .then((mod) => {\n mod.initBranch(\n async (data) => {\n console.log(\"initBranch called successfully\", data);\n const referringLinkUrl = data.referring_link || \"\";\n const link = await createBranchLink({\n id: pageId,\n branchData: data,\n referringLinkUrl,\n });\n\n registerMixpanelProperties({\n ...mixpanelDataRef.current,\n branchData: data,\n });\n\n setTimeout(verifyMixpanelRegistration, 2000); // Verify after 2 seconds\n setBranchLink(link);\n\n if (onlyQuizUI) {\n console.log(\"trackIndirectAdsQuizStart\", trackIndirectAdsQuizStart);\n trackIndirectAdsQuizStart();\n return;\n }\n\n trackStartQuizClick({\n quizFlowControllerVariation,\n area: pageArea,\n count: placesCount,\n link,\n isMobile,\n });\n trackFooterAppButtonClick(link);\n trackViewMenuButtonClick(link);\n trackFooterJoinCommunityButtonClick(link);\n trackReviewsButtonClick();\n },\n (error) => {\n console.error(\"Error calling initBranch\", error);\n }\n );\n })\n .catch((error) => {\n console.error(\"Error calling initBranch\", error);\n });\n }, 1000);\n\n return () => clearTimeout(timer);\n }, []);\n\n useEffect(() => {\n if (!isLoading) {\n const element = document.getElementById(\"social-proof-avatars-count\");\n\n if (element) {\n element.textContent = `${FormatAmount(totalRecommendations)}+`;\n element.animate(\n [\n { transform: \"scale(1)\" },\n { transform: \"scale(0.1)\" },\n { transform: \"scale(1.2)\" },\n { transform: \"scale(1)\" },\n ],\n {\n duration: 800,\n iterations: 1,\n }\n );\n\n element.parentElement.classList.remove(\"animate-pulse\");\n }\n }\n }, [isLoading, totalRecommendations]);\n\n const isNewFlow = useMemo(() =>\n immediateFlow || quizFlowControllerVariation === FeatureFlagValues[FeatureFlagKeys.TT_QUIZ_FLOW_CONTROLLER].C,\n [immediateFlow, quizFlowControllerVariation]\n );\n\n const aiFlow = useMemo(() =>\n immediateFlow\n ? FeatureFlagValues[FeatureFlagKeys.TT_AI_QUIZ_FLOW_VARIATIONS].E\n : quizAiFlowVariations,\n [immediateFlow, quizAiFlowVariations]\n );\n\n const flowControllerVariation = useMemo(() =>\n immediateFlow\n ? FeatureFlagValues[FeatureFlagKeys.TT_QUIZ_FLOW_CONTROLLER].C\n : quizFlowControllerVariation,\n [immediateFlow, quizFlowControllerVariation]\n );\n\n useEffect(() => {\n console.log(\"Stable\");\n console.log('useEffect mixpanelData', { mixpanelData });\n\n registerMixpanelProperties(mixpanelData);\n\n if (onlyQuizUI) {\n return;\n }\n\n trackTopTenStartSession();\n }, []);\n\n const onSlideAction = useCallback(props => {\n const eventName = onlyQuizUI\n ? MixpanelEvents.INDIRECT_ADS_QUIZ_ACTION\n : MixpanelEvents.TT_QUIZ_ACTION;\n\n if (props.page_name.toLowerCase().includes(\"email\")) {\n console.log('getCheckoutSessionUrl', {\n priceTestId,\n priceTestVariation,\n pageId,\n email: props.value_submitted[0],\n couponId,\n trialVariation: immediateFlow ? adTrialVariation : trialVariation,\n });\n getCheckoutSessionUrl({\n email: props.value_submitted[0],\n link: branchLink,\n trialVariation: immediateFlow ? adTrialVariation : trialVariation,\n priceTestId,\n priceTest: priceTestVariation,\n couponId,\n pageId,\n clientType,\n }).then(({ sessionUrl, branchLink, userId }) => {\n if (sessionUrl) {\n setCheckoutSessionUrl(sessionUrl);\n if (pendingRedirectRef.current) {\n pendingRedirectRef.current = false;\n window.location.href = sessionUrl;\n }\n }\n\n if (branchLink) {\n setBranchLink(branchLink);\n }\n\n if (userId) {\n setUserId(userId);\n }\n })\n .catch((error) => {\n console.error(error);\n track(MixpanelEvents.TT_QUIZ_CHECKOUT_API_ERROR, {\n checkout_session_url: null,\n is_web_checkout: isWebCheckout,\n branch_link: branchLink,\n error: error.message,\n });\n });\n }\n\n track(eventName, {\n ...props,\n checkout_session_url: checkoutSessionUrl,\n is_web_checkout: isWebCheckout,\n branch_link: branchLink,\n });\n }, [\n onlyQuizUI,\n priceTestId,\n priceTestVariation,\n branchLink,\n checkoutSessionUrl,\n isWebCheckout,\n immediateFlow,\n adTrialVariation,\n trialVariation\n ]);\n\n const onFormSubmit = useCallback(() => {\n const eventName = onlyQuizUI\n ? MixpanelEvents.INDIRECT_ADS_QUIZ_FORM_SUBMIT\n : MixpanelEvents.TT_QUIZ_FORM_SUBMIT;\n\n track(eventName, {\n price_test_variation: priceTestVariation,\n link: branchLink,\n checkout_session_url: checkoutSessionUrl,\n is_web_checkout: isWebCheckout,\n trialVariation: immediateFlow ? adTrialVariation : trialVariation,\n priceTestVariation,\n });\n\n // TODO: branch link open occurs in mixpanel tracking functions\n // this is confusing, we should refactor this\n if (isWebCheckout) {\n if (checkoutSessionUrl) {\n window.location.href = checkoutSessionUrl;\n } else {\n pendingRedirectRef.current = true;\n }\n } else {\n window.location.href = branchLink;\n }\n }, [\n onlyQuizUI,\n adTrialVariation,\n immediateFlow,\n trialVariation,\n branchLink,\n checkoutSessionUrl,\n isWebCheckout,\n pendingRedirectRef,\n priceTestVariation,\n ]);\n\n if (onlyQuizUI) {\n // TODO: write once\n return (\n <Suspense fallback={null}>\n <StripeContextProvider\n {...stripeData}\n withTrial={adTrialVariation}\n branchLink={branchLink}\n userId={userId}>\n <DrawerComponent\n urlVariation={urlVariation}\n openQuizImmediately={openQuizImmediately}\n area={determinedArea}\n country={country}\n region={region}\n city={city}\n flowVersion={flowVersion}\n quizAiFlowVariations={quizAiFlowVariations}\n distinctId={getMixpanelDistinctId()}\n neighborhood={neighborhood}\n isMobile={isMobile}\n link={branchLink}\n quizFlowControllerVariation={flowControllerVariation}\n aiFlowVariation={aiFlow}\n isNewFlow={isNewFlow}\n trialVariation={trialVariation}\n trackAction={onSlideAction}\n formSubmit={onFormSubmit}\n isDsaCampaign={isDsaCampaign}\n trackView={(props) => {\n track(MixpanelEvents.INDIRECT_ADS_QUIZ_PAGE_VIEWED, props);\n }}\n />\n </StripeContextProvider>\n </Suspense>\n );\n }\n\n return (\n <>\n <div\n id=\"places_list\"\n className=\"px-4 md:px-10 2xl:px-20 flex flex-col gap-12 overflow-hidden\">\n <GlutenFreeModal\n link={branchLink}\n area={determinedArea}\n isMobile={isMobile}\n places={places}\n quizFlowControllerVariation={quizFlowControllerVariation}\n isNewFlow={isNewFlow}\n />\n {places.map((place, index) => {\n if (!place) {\n return (\n <TopPlaceFrame key={index}>\n <TopPlaceImageSkeleton />\n <TopPlaceInformationSkeleton />\n </TopPlaceFrame>\n );\n }\n\n return (\n <GlutenFreeTopPlace\n isMobile={isMobile}\n position={index + 1}\n place={place}\n link={branchLink}\n placeId={place?._id}\n key={place?._id || index}\n />\n );\n })}\n {isDesktop ? (\n <GlutenFreeLeafletMap\n isActive\n deviceType=\"desktop\"\n places={[...initPlaces, ...places].filter(Boolean)}\n // activePlace={response[1].steps[0]}\n activePlace={activePlace}\n setActivePlace={setActivePlace}\n />\n ) : null}\n </div>\n\n <GlutenFreeFooter\n pageTitle={pageTitle}\n pageArea={determinedArea}\n isMobile={isMobile}\n link={branchLink}\n />\n {(isMobile && isNewFlow) ?\n <StripeContextProvider\n {...stripeData}\n userId={userId}\n withTrial={trialVariation}\n branchLink={branchLink}>\n <DrawerComponent\n area={determinedArea}\n country={country}\n region={region}\n city={city}\n flowVersion={flowVersion}\n quizAiFlowVariations={quizAiFlowVariations}\n distinctId={getMixpanelDistinctId()}\n immediateFlow={immediateFlow}\n neighborhood={neighborhood}\n isMobile={isMobile}\n link={branchLink}\n quizFlowControllerVariation={flowControllerVariation}\n aiFlowVariation={aiFlow}\n isNewFlow={isNewFlow}\n trialVariation={trialVariation}\n trackAction={onSlideAction}\n formSubmit={onFormSubmit}\n isDsaCampaign={isDsaCampaign}\n trackView={(props) => {\n track(MixpanelEvents.TT_QUIZ_PAGE_VIEWED, props);\n }}\n />\n </StripeContextProvider>\n : <OriginalFixedGlutenFreeFooter\n branchLink={branchLink}\n isMobile={isMobile}\n ctaTargetTestVariation={ctaTargetTestVariation}\n quizFlowControllerTestVariation={quizFlowDesktopControllerVariation}\n placesCount={placesCount}\n area={determinedArea} />}\n </>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const Particle = ({ emoji, initialPosition, angle, speed }) => {\n const angleInRad = angle * (Math.PI / 180);\n const xDistance = Math.cos(angleInRad) * speed * 20;\n const yDistance = Math.sin(angleInRad) * speed * 20;\n \n return (\n <motion.div\n className=\"absolute text-4xl\"\n initial={{ \n x: initialPosition.x,\n y: initialPosition.y,\n scale: 0.4,\n opacity: 1\n }}\n animate={{\n x: initialPosition.x + xDistance,\n y: initialPosition.y - yDistance,\n scale: 1,\n opacity: 0\n }}\n transition={{\n duration: 1.8,\n ease: [0.2, 0.8, 0.2, 1],\n opacity: { \n duration: 1.8,\n ease: [0, 0, 0.2, 1]\n }\n }}\n >\n {emoji}\n </motion.div>\n );\n};","import React, { useEffect, useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Particle } from './Particle.jsx';\n\nexport const Confetti = ({ emojis = ['🎉', '🎊', '✨'], isActive, clickPosition }) => {\n console.log('Confetti component render:', {\n emojis,\n isActive,\n clickPosition,\n timestamp: new Date().toISOString()\n });\n\n const [particles] = useState(() => \n Array.from({ length: 50 }, (_, i) => ({\n id: i,\n emoji: emojis[i % emojis.length],\n angle: (i / 50) * 360,\n speed: 8 + Math.random() * 6\n }))\n );\n\n const [defaultPosition, setDefaultPosition] = useState({ x: 0, y: 0 });\n\n useEffect(() => {\n // Set default position once we're in the browser\n setDefaultPosition({\n x: window.innerWidth / 2,\n y: window.innerHeight / 2\n });\n }, []);\n\n // Add fallback click position if not provided\n const position = clickPosition || defaultPosition;\n\n if (!isActive) return null;\n\n return (\n <motion.div \n initial={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.5, delay: 0.5 }}\n className=\"fixed inset-0 pointer-events-none\"\n style={{ zIndex: 99999 }}\n >\n {particles.map(particle => (\n <Particle\n key={particle.id}\n emoji={particle.emoji}\n initialPosition={position}\n angle={particle.angle}\n speed={particle.speed}\n />\n ))}\n </motion.div>\n );\n};\n","import { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { BaseResponseCount } from '../../response_counts.js';\nimport { SocialProofAvatars } from '@/components/molecules/SocialProofAvatars.jsx';\nimport { Confetti } from '../../Confetti.jsx';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton.jsx\";\n\nconst formatCount = (count) => {\n const inThousands = count / 1000;\n return inThousands % 1 === 0 \n ? `${inThousands.toFixed(0)}k`\n : `${inThousands.toFixed(1)}k`;\n};\n\nexport const Question = ({ \n data, \n onAnswer, \n flowVersion,\n previousAnswer,\n isTransitioning,\n direction,\n onTransitionComplete,\n skipAnswerAnimation = false,\n setClickPosition,\n setShowConfetti,\n isInSlider = false,\n forceAnswerAnimation = false\n}) => {\n const [selectedAnswers, setSelectedAnswers] = useState(() => {\n if (!previousAnswer) return [];\n return Array.isArray(previousAnswer) ? previousAnswer : [previousAnswer];\n });\n const [showResults, setShowResults] = useState(false);\n const [isAnimating, setIsAnimating] = useState(false);\n const [showContent, setShowContent] = useState(false);\n const [showConfetti, setLocalShowConfetti] = useState(false);\n const [clickPosition, setLocalClickPosition] = useState({ x: 0, y: 0 });\n const [activeEmojis, setActiveEmojis] = useState([]);\n \n useEffect(() => {\n setShowResults(false);\n setSelectedAnswers(() => {\n if (!previousAnswer) return [];\n return Array.isArray(previousAnswer) ? previousAnswer : [previousAnswer];\n });\n setIsAnimating(false);\n \n if (!isTransitioning) {\n setTimeout(() => setShowContent(true), 150);\n } else {\n setShowContent(false);\n }\n }, [data, isTransitioning, previousAnswer]);\n\n useEffect(() => {\n if (forceAnswerAnimation && previousAnswer && !showResults) {\n setTimeout(() => {\n setShowResults(true);\n }, 500);\n }\n }, [forceAnswerAnimation, previousAnswer]);\n\n const handleOptionClick = (option, event) => {\n if (isTransitioning || isAnimating) return;\n \n if (data.isMultipleChoice) {\n setSelectedAnswers(prev => {\n const isSelected = prev.some(ans => ans.id === option.id);\n return isSelected \n ? prev.filter(ans => ans.id !== option.id)\n : [...prev, option];\n });\n } else {\n setIsAnimating(true);\n setSelectedAnswers([option]);\n \n if (!isInSlider) {\n setShowResults(true);\n }\n \n setLocalClickPosition({ x: event.clientX, y: event.clientY });\n setLocalShowConfetti(true);\n if (setClickPosition) setClickPosition({ x: event.clientX, y: event.clientY });\n if (setShowConfetti) setShowConfetti(true);\n \n setTimeout(() => {\n setLocalShowConfetti(false);\n setIsAnimating(false);\n onAnswer(option, event);\n }, isInSlider ? 500 : 2000);\n }\n };\n\n const handleContinue = (event) => {\n if (isTransitioning || isAnimating) return;\n \n setIsAnimating(true);\n setShowResults(true);\n if (setClickPosition) {\n setClickPosition({ x: event.clientX, y: event.clientY });\n }\n \n const allEmojis = selectedAnswers.flatMap(answer => answer.emojis);\n const randomEmojis = [...allEmojis]\n .sort(() => Math.random() - 0.5)\n .slice(0, 5);\n \n setActiveEmojis(randomEmojis);\n setLocalShowConfetti(true);\n if (setShowConfetti) {\n setShowConfetti(true);\n }\n\n setTimeout(() => {\n setLocalShowConfetti(false);\n if (setShowConfetti) {\n setShowConfetti(false);\n }\n setIsAnimating(false);\n onAnswer(selectedAnswers);\n }, 2000);\n };\n\n return (\n <div \n className={classNames(\n \"w-full\",\n { \"pointer-events-none\": isTransitioning || isAnimating }\n )}\n >\n <Confetti \n isActive={showConfetti}\n clickPosition={clickPosition}\n emojis={selectedAnswers.length === 1 ? selectedAnswers[0]?.emojis : activeEmojis}\n />\n <div className={classNames(\n \"w-full pb-6\",\n { \n \"pointer-events-none\": isTransitioning || isAnimating,\n \"transition-all duration-500 ease-in-out\": isTransitioning,\n \"translate-x-full opacity-0\": isTransitioning && direction === 'back',\n \"-translate-x-full opacity-0\": isTransitioning && direction === 'forward',\n }\n )}>\n <div className=\"px-5 pt-6 pb-1\">\n <h2 \n className={classNames(\n \"text-lg text-gray-700 font-semibold text-center mb-3\",\n \"transition-all duration-500 ease-out\",\n {\n \"opacity-0 translate-y-4\": !showContent,\n \"opacity-100 translate-y-0\": showContent\n }\n )}\n >\n {data.text}\n </h2>\n </div>\n <div className=\"px-5 space-y-3\">\n {data.answers.map((option, index) => (\n <QuestionOption\n key={option.id}\n option={option}\n index={index}\n isSelected={selectedAnswers.some(ans => ans.id === option.id)}\n onClick={(e) => handleOptionClick(option, e)}\n showResults={showResults}\n showContent={showContent}\n animationDelay={index * 100}\n />\n ))}\n </div>\n </div>\n \n {data.isMultipleChoice && (\n <div className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5\",\n \"transition-all duration-500 ease-out\",\n {\n \"opacity-100 translate-y-0\": selectedAnswers.length > 0 && showContent && !isTransitioning,\n \"opacity-0 translate-y-8 pointer-events-none\": selectedAnswers.length === 0 || !showContent || isTransitioning\n }\n )}>\n <PorangeButton\n full={true}\n className=\"h-[60px] rounded-[20px] text-lg shadow-lg\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n )}\n </div>\n );\n};\n\nconst QuestionOption = ({ \n option, \n isSelected, \n showResults,\n onClick,\n showContent,\n animationDelay\n}) => {\n const responseCount = Math.round(BaseResponseCount * option.ratio);\n \n return (\n <button \n onClick={(e) => onClick(e)}\n style={{ \n transitionDelay: `${animationDelay}ms`\n }}\n className={classNames(\n \"w-full p-4 text-left rounded-xl mb-3 border\",\n \"transition-all duration-500 ease-out\",\n \"bg-white hover:bg-gray-50\",\n \"flex items-center justify-between\",\n \"relative overflow-hidden\",\n {\n \"opacity-0 translate-y-4\": !showContent,\n \"opacity-100 translate-y-0\": showContent,\n \"border-pink-500\": isSelected,\n \"border-gray-300\": !isSelected\n }\n )}\n >\n <span className=\"z-20 relative font-normal text-black\">\n {option.text}\n </span>\n \n <div \n className=\"absolute inset-0 bg-pink-50 transition-transform duration-[1500ms]\"\n style={{ \n transformOrigin: 'left',\n transform: `scaleX(${showResults ? option.ratio : 0})`,\n transitionTimingFunction: 'cubic-bezier(0.05, 0.8, 0.1, 1)'\n }}\n />\n \n <div className=\"flex items-center gap-2 z-20 relative\">\n <SocialProofAvatars\n count={3}\n avatarsBorderColor=\"white\"\n />\n <div \n className={classNames(\n \"relative transition-all duration-500\",\n {\n \"opacity-50 blur-sm\": !showResults,\n \"opacity-100 blur-none\": showResults\n }\n )}\n style={{ transitionDelay: '0.3s' }}\n >\n <span className=\"font-normal text-black\">\n {formatCount(responseCount)}\n </span>\n </div>\n </div>\n </button>\n );\n}; ","import { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { PorangeButton } from \"@/components/atoms/PorangeButton\";\n\nexport const Question = ({\n data,\n onAnswer,\n flowVersion,\n previousAnswer,\n isTransitioning,\n direction,\n onTransitionComplete,\n skipAnswerAnimation = false,\n isInSlider = false,\n locationData,\n}) => {\n const [selectedAnswers, setSelectedAnswers] = useState(() => {\n if (!previousAnswer) return [];\n return Array.isArray(previousAnswer) ? previousAnswer : [previousAnswer];\n });\n const [showContent, setShowContent] = useState(false);\n const [isAnimating, setIsAnimating] = useState(false);\n \n useEffect(() => {\n setShowContent(false);\n \n if (!isTransitioning) {\n setTimeout(() => setShowContent(true), 150);\n } else {\n setShowContent(false);\n }\n }, [data, isTransitioning, previousAnswer]);\n \n const handleOptionClick = (option, event) => {\n if (isTransitioning || isAnimating) return;\n \n if (data.isMultipleChoice) {\n setSelectedAnswers(prev => {\n const validPrev = prev.filter(ans => ans && ans.text);\n const isSelected = validPrev.some(ans => ans.id === option.id);\n \n if (option.text.match(/^(None|No)(\\s|$)/i)) {\n return isSelected ? [] : [option];\n }\n \n const withoutNoneOptions = validPrev.filter(ans => !ans.text.match(/^(None|No)(\\s|$)/i));\n \n if (!isSelected && data.maxSelections && withoutNoneOptions.length >= data.maxSelections) {\n return withoutNoneOptions;\n }\n \n return isSelected\n ? withoutNoneOptions.filter(ans => ans.id !== option.id)\n : [...withoutNoneOptions, option];\n });\n } else {\n setSelectedAnswers([option]);\n onAnswer(option, event);\n }\n };\n \n const handleContinue = (event) => {\n if (isTransitioning || isAnimating) return;\n onAnswer(selectedAnswers);\n };\n \n const formatAnswerText = (text) => {\n if (!locationData) return text;\n \n return text\n .replace('{neighborhood}', locationData.neighborhood || '')\n .replace('{city}', locationData.city || '')\n .replace('{region}', locationData.region || '')\n .replace('{country}', locationData.country || '');\n };\n \n // First, create the filteredAnswers with the existing logic\n const getFilteredAnswers = () => {\n const validAnswers = data.answers.filter(answer => {\n const formattedText = formatAnswerText(answer.text);\n \n if (!formattedText?.trim()) return false;\n \n if (data.type === 'WhereDoYouWantPlaces') {\n switch (answer.id) {\n case 'neighborhood':\n return !!locationData?.neighborhood;\n case 'city':\n return !!locationData?.city;\n case 'region':\n return !!locationData?.region;\n case 'country':\n return !!locationData?.country;\n case 'worldwide':\n return true;\n default:\n return true;\n }\n }\n \n return !formattedText.includes('{') && !formattedText.includes('}');\n });\n \n // Remove duplicates based on formatted text\n const seen = new Set();\n return validAnswers.filter(answer => {\n const formattedText = formatAnswerText(answer.text).toLowerCase().trim();\n if (seen.has(formattedText)) {\n return false;\n }\n seen.add(formattedText);\n return true;\n });\n };\n \n const filteredAnswers = getFilteredAnswers();\n \n return (\n <div className={classNames(\n \"w-full\",\n { \"pointer-events-none\": isTransitioning || isAnimating }\n )}>\n <div className={classNames(\n \"w-full pb-6\",\n {\n \"pointer-events-none\": isTransitioning || isAnimating,\n \"transition-all duration-500 ease-in-out\": isTransitioning,\n \"translate-x-full opacity-0\": isTransitioning && direction === 'back',\n \"-translate-x-full opacity-0\": isTransitioning && direction === 'forward',\n }\n )}>\n <div className=\"px-5 pt-6 pb-1\">\n <h2\n className={classNames(\n \"text-2xl text-gray-700 font-semibold text-center whitespace-pre-line\",\n \"transition-all duration-500 ease-out\",\n {\n \"opacity-0 translate-y-4\": !showContent,\n \"opacity-100 translate-y-0\": showContent,\n \"mb-6\": !data.subtext,\n \"mb-2\": data.subtext\n }\n )}\n >\n {data.text}\n </h2>\n {data.subtext && (\n <p\n className={classNames(\n \"text-base text-gray-500 text-center mb-5\",\n \"transition-all duration-500 ease-out\",\n {\n \"opacity-0 translate-y-4\": !showContent,\n \"opacity-100 translate-y-0\": showContent\n }\n )}\n >\n {data.subtext}\n </p>\n )}\n </div>\n <div className=\"px-5 space-y-3 overflow-y-auto h-[49vh]\">\n {filteredAnswers.map((option, index) => (\n <QuestionOption\n key={option.id}\n option={option}\n index={index}\n isSelected={selectedAnswers.some(ans => ans.id === option.id)}\n onClick={(e) => handleOptionClick(option, e)}\n showContent={showContent}\n animationDelay={index * 100}\n isMultipleChoice={data.isMultipleChoice}\n locationData={locationData}\n formatAnswerText={formatAnswerText}\n />\n ))}\n </div>\n </div>\n \n {data.isMultipleChoice && (\n <div className={classNames(\n \"fixed bottom-0 left-0 right-0 p-5\",\n \"transition-all duration-500 ease-out\",\n {\n \"opacity-100 translate-y-0\": selectedAnswers.length > 0 && showContent && !isTransitioning,\n \"opacity-0 translate-y-8 pointer-events-none\": selectedAnswers.length === 0 || !showContent || isTransitioning\n }\n )}>\n <PorangeButton\n full={true}\n className=\"h-[60px] rounded-[20px] text-lg shadow-lg\"\n onClick={handleContinue}\n >\n Continue\n </PorangeButton>\n </div>\n )}\n </div>\n );\n};\n\nconst QuestionOption = ({\n option,\n isSelected,\n onClick,\n showContent,\n animationDelay,\n isMultipleChoice,\n locationData,\n formatAnswerText\n}) => {\n const isNoneOption = option.text.match(/^(None|No)(\\s|$)/i);\n \n return (\n <button\n onClick={(e) => onClick(e)}\n style={{\n transitionDelay: `${animationDelay}ms`\n }}\n className={classNames(\n \"w-full px-5 py-4 text-left rounded-2xl mb-3\",\n \"transition-all duration-300 ease-out\",\n \"flex items-center gap-4\",\n \"border-[1.5px]\",\n {\n \"opacity-0 translate-y-4\": !showContent,\n \"opacity-100 translate-y-0\": showContent,\n \"border-pink-500 bg-pink-50\": isSelected,\n \"border-gray-200 bg-white\": !isSelected\n }\n )}\n >\n {isMultipleChoice && !isNoneOption && (\n <div className={classNames(\n \"w-5 h-5 rounded-md\",\n \"flex items-center justify-center\",\n \"transition-all duration-300 ease-out\",\n \"border-[1.5px]\",\n {\n \"border-pink-500 bg-pink-500\": isSelected,\n \"border-gray-300\": !isSelected\n }\n )}>\n {isSelected && (\n <svg \n className=\"w-3.5 h-3.5 text-white\" \n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path \n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" \n fill=\"currentColor\"\n />\n </svg>\n )}\n </div>\n )}\n <span className=\"font-medium text-[15px] text-gray-900 flex-1\">\n {formatAnswerText(option.text)}\n </span>\n </button>\n );\n}; ","export const GlutenFreeIcons = {\n\tSELECTED: \"SELECTED\",\n\tGREEN_DOTTED: \"GREEN_DOTTED\",\n\tGREEN_FILLED: \"GREEN_FILLED\",\n\tGREEN_OUTLINED: \"GREEN_OUTLINED\",\n\tUNKNOWN: \"UNKNOWN\",\n\tDISABLED: \"DISABLED\",\n};\n\nexport const GlutenFreeIconsList = [\n\tGlutenFreeIcons.GREEN_DOTTED,\n\tGlutenFreeIcons.GREEN_FILLED,\n\tGlutenFreeIcons.GREEN_OUTLINED,\n\tGlutenFreeIcons.UNKNOWN,\n\tGlutenFreeIcons.DISABLED,\n];\n\nexport const GFIIconMap = {\n\t[GlutenFreeIcons.GREEN_FILLED]:\n\t\t\"/assets/gluten-free/one-hundred-percent-gf-icon.svg\",\n\t[GlutenFreeIcons.GREEN_OUTLINED]:\n\t\t\"/assets/gluten-free/celiac-friendly-gf-icon.svg\",\n\t[GlutenFreeIcons.GREEN_DOTTED]:\n\t\t\"/assets/gluten-free/accommodating-gf-icon.svg\",\n\t[GlutenFreeIcons.UNKNOWN]: \"/assets/gluten-free/users-three.svg\",\n\t[GlutenFreeIcons.DISABLED]: \"/assets/gluten-free/users-three.svg\",\n};\n\nexport const GlutenFreeIdentity = {\n\tENABLED: \"ENABLED\",\n\tNO: \"DISABLED\",\n\tUNKNOWN: \"UNKNOWN\",\n\tNOT_APPLICABLE: \"NOT_APPLICABLE\",\n};\n\nexport const GlutenFreeIdentityTitle = {\n\tONE_HUNDRED_PERCENT: \"100% Gluten-Free\",\n\tCELIAC_FRIENDLY: \"Celiac friendly\",\n\tACCOMMODATING: \"Celiac accommodating\",\n\tNOT_AWARE: \"Gluten-free options\",\n\tUNKNOWN: \"Unknown\",\n};\n\nexport const AppliancesNames = {\n\tOVEN: \"Oven\",\n\tFRYER: \"Fryer\",\n\tSTOVE: \"Stove\",\n\tTOASTER: \"Toaster\",\n};\n","export const flows = {\n flow_a: {\n version: \"flow_a\",\n pages: [\n \"GlutenSensitivity1\",\n \"WhatPlacesDoYouWant1\",\n \"LocationPreference\",\n \"OccasionTypes\",\n // 'WebsiteHopping',\n // 'CommunityParticipation',\n \"CommunityMap\",\n // 'Paywall',\n // 'Payment',\n 'EmailScreen1',\n \"PreCheckout\",\n ],\n components: {\n drawerButton: \"DrawerButton\",\n footerDrawer: \"FooterDrawerUI\",\n quizSlider: \"QuizSlider\"\n }\n },\n flow_b: {\n version: \"flow_b\",\n pages: [\n \"GlutenSensitivity1\",\n \"AtlyIntro1\",\n \"DietaryRestrictions\",\n 'TagsStatement',\n \"SearchTarget\",\n // \"CommunityValidationStatement\",\n \"FeaturePreference\",\n \"SafetyRankingExplanation\",\n \"SafetyRankingStatement\",\n \"InformationSources\",\n \"ReviewAggregationStatement\",\n \"WhatPlacesDoYouWant1\",\n \"InformationAccuracyQuestion\",\n \"InformationUpdateStatement\",\n //\"SafetyCommitmentStatement\",\n \"CommunityMap\",\n 'EmailScreen1',\n \"PreCheckout\",\n ],\n components: {\n drawerButton: \"DrawerButton\",\n footerDrawer: \"FooterDrawerUI\",\n quizSlider: \"QuizSlider\"\n }\n },\n flow_c: {\n version: \"flow_c\",\n pages: [\n \"GlutenSensitivity1\",\n \"AtlyIntro1\",\n 'EmailScreen2',\n \"DietaryRestrictions\",\n 'TagsStatement',\n \"SearchTarget\",\n // \"CommunityValidationStatement\",\n \"FeaturePreference\",\n \"SafetyRankingExplanation\",\n \"SafetyRankingStatement\",\n \"InformationSources\",\n \"ReviewAggregationStatement\",\n \"WhatPlacesDoYouWant1\",\n \"InformationAccuracyQuestion\",\n \"InformationUpdateStatement\",\n //\"SafetyCommitmentStatement\",\n \"CommunityMap\",\n \"PreCheckout\",\n ],\n components: {\n drawerButton: \"DrawerButton\",\n footerDrawer: \"FooterDrawerUI\",\n quizSlider: \"QuizSlider\"\n }\n },\n flow_d: {\n version: \"flow_d\",\n pages: [\n \"GlutenSensitivity1\",\n \"AtlyIntro1\",\n 'EmailScreen2',\n \"DietaryRestrictions\",\n 'TagsStatement',\n \"SearchTarget\",\n // \"CommunityValidationStatement\",\n \"FeaturePreference\",\n \"SafetyRankingExplanation\",\n \"SafetyRankingStatement\",\n \"InformationSources\",\n \"ReviewAggregationStatement\",\n \"WhatPlacesDoYouWant1\",\n \"InformationAccuracyQuestion\",\n \"InformationUpdateStatement\",\n //\"SafetyCommitmentStatement\",\n \"CommunityMap\",\n \"PreCheckout\",\n ],\n components: {\n drawerButton: \"SimpleDrawerButton\",\n footerDrawer: \"FooterDrawerUI\",\n quizSlider: \"QuizSliderCosmic\"\n }\n },\n flow_e: {\n version: \"flow_e\",\n pages: [\n \"GlutenSensitivity1\",\n \"WhatPlacesDoYouWant1\",\n \"Statement1\",\n \"GlutenSensitivity2\",\n \"DietaryRestrictions\",\n \"DiningPreference\",\n \"PriceRange\",\n \"WhatPlacesDoYouWant1\",\n ],\n },\n flow_f: {\n version: \"flow_f\",\n pages: [\n \"GlutenSensitivity1\",\n \"SearchTarget\",\n \"DiningChallenges\",\n \"SafetyRankingStatement\", // first statement\n \"CommunityValidationStatement\",\n \"GlobalCoverageStatement\",\n \"AggregatedInfoStatement\",\n \"DietitianStatement\",\n \"RealtimeUpdatesStatement\",\n \"CrossContaminationStatement\",\n \"TravelFeaturesStatement\", // last statement\n \"CommunityMap\",\n 'EmailScreen1',\n \"PreCheckout\",\n ],\n },\n // other flows...\n};\n","export const Pages = {\n GlutenSensitivity1: {\n type: 'Question',\n text: 'What is your gluten sensitivity?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'celiac',\n text: 'Celiac',\n ratio: 0.77,\n nextPageName: null,\n emojis: ['⚕️', '🔬', '📋', '✨', '💪']\n },\n {\n id: 'intolerant',\n text: 'Gluten intolerant',\n ratio: 0.16,\n nextPageName: null,\n emojis: ['⚕️', '🍽️', '✨', '💪', '🌟']\n },\n {\n id: 'choice',\n text: 'Gluten-free by choice',\n ratio: 0.04,\n nextPageName: null,\n emojis: ['🥗', '🥑', '🌱', '💚', '🧘']\n },\n ],\n },\n GlutenSensitivity2: {\n type: 'Question',\n text: 'What symptoms do you typically experience with gluten?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'digestive',\n text: 'Digestive issues',\n ratio: 0.68,\n nextPageName: null,\n emojis: ['⚕️', '💫', '🌿', '💊', '✨']\n },\n {\n id: 'fatigue',\n text: 'Fatigue and brain fog',\n ratio: 0.45,\n nextPageName: null,\n emojis: ['🌟', '💫', '🧠', '✨', '🌿']\n },\n {\n id: 'skin',\n text: 'Skin problems',\n ratio: 0.23,\n nextPageName: null,\n emojis: ['⚕️', '💫', '🧴', '✨', '🌿']\n },\n {\n id: 'headaches',\n text: 'Headaches and migraines',\n ratio: 0.31,\n nextPageName: null,\n emojis: ['⚕️', '💫', '🧠', '💊', '✨']\n }\n ],\n },\n WhatPlacesDoYouWant1: {\n type: 'Question',\n text: 'What places do you need the most help finding?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'restaurants',\n text: 'Restaurants',\n ratio: 0.81,\n nextPageName: null,\n emojis: ['🍽️', '👨‍🍳', '🍳', '', '🍴']\n },\n {\n id: 'bars',\n text: 'Bars',\n ratio: 0.43,\n nextPageName: null,\n emojis: ['🍸', '🍹', '🍷', '🍺', '🎉']\n },\n {\n id: 'cafes',\n text: 'Cafes',\n ratio: 0.52,\n nextPageName: null,\n emojis: ['☕', '🫖', '🍵', '🧋', '🥐']\n },\n {\n id: 'bakery',\n text: 'Bakeries',\n ratio: 0.27,\n nextPageName: null,\n emojis: ['🥖', '🥯', '🥨', '🧁', '🍪']\n }\n ],\n },\n DietaryRestrictions: {\n type: 'Question',\n text: 'Besides gluten, do you have any other dietary restrictions?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'dairy',\n text: 'Dairy-free',\n ratio: 0.35,\n nextPageName: null,\n emojis: ['🥛', '🌱', '🥗', '✨', '🌿']\n },\n {\n id: 'vegan',\n text: 'Vegan',\n ratio: 0.25,\n nextPageName: null,\n emojis: ['🌱', '🥗', '🥬', '🥕', '🌿']\n },\n {\n id: 'vegetarian',\n text: 'Vegetarian',\n ratio: 0.32,\n nextPageName: null,\n emojis: ['🥜', '⚕️', '💫', '✨', '💊']\n },\n {\n id: 'allergen',\n text: 'Allergen-friendly',\n ratio: 0.12,\n nextPageName: null,\n emojis: ['🥜', '⚕️', '💫', '✨', '💊']\n },\n {\n id: 'none',\n text: 'No other restrictions',\n ratio: 0.49,\n nextPageName: null,\n emojis: ['✅', '👍', '🆗', '💯', '🙂']\n }\n ],\n },\n DiningPreference: {\n type: 'Question',\n text: 'What type of dining experience do you prefer?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'casual',\n text: 'Casual dining',\n ratio: 0.45,\n nextPageName: null,\n emojis: ['🍽️', '☕', '🏡', '👕', '😊']\n },\n {\n id: 'fine',\n text: 'Fine dining',\n ratio: 0.25,\n nextPageName: null,\n emojis: ['🍷', '✨', '👔', '🕯️', '🎩']\n },\n {\n id: 'quick',\n text: 'Quick service',\n ratio: 0.30,\n nextPageName: null,\n emojis: ['⚡', '🏃', '🥪', '🥤', '⏱️']\n }\n ],\n },\n PriceRange: {\n type: 'Question',\n text: 'What is your preferred price range per meal?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'budget',\n text: '$10-20',\n ratio: 0.35,\n nextPageName: null,\n emojis: ['💰', '💵', '����️', '🤑', '💸']\n },\n {\n id: 'moderate',\n text: '$20-40',\n ratio: 0.40,\n nextPageName: null,\n emojis: ['💰', '💰', '💵', '💳', '🏷️']\n },\n {\n id: 'premium',\n text: '$40+',\n ratio: 0.25,\n nextPageName: null,\n emojis: ['💰', '💰', '💰', '💎', '💳']\n }\n ],\n },\n PreCheckout: {\n type: 'PreCheckout'\n },\n Statement230kPlaces: {\n type: 'Statement',\n allowSkip: false\n },\n LocationPreference: {\n type: 'Question',\n text: 'Where do you want help finding places?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'home',\n text: 'Around my house',\n ratio: 0.71,\n nextPageName: null,\n emojis: ['🏠', '🏡', '📍', '🗺️', '🏘️']\n },\n {\n id: 'work',\n text: 'Around work',\n ratio: 0.31,\n nextPageName: null,\n emojis: ['💼', '🏢', '📍', '🗺️', '👔']\n },\n {\n id: 'travel',\n text: 'While travelling',\n ratio: 0.93,\n nextPageName: null,\n emojis: ['✈️', '🧳', '🗺️', '🌎', '📍']\n }\n ],\n },\n OccasionTypes: {\n type: 'Question',\n text: 'What occasions are you looking for places?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'business',\n text: 'Business lunches',\n ratio: 0.25,\n nextPageName: null,\n emojis: ['💼', '🤝', '🍽️', '👔', '📊']\n },\n {\n id: 'date',\n text: 'Date nights',\n ratio: 0.63,\n nextPageName: null,\n emojis: ['💑', '🌙', '💕', '🍷', '✨']\n },\n {\n id: 'friends',\n text: 'Lunch with friends',\n ratio: 0.76,\n nextPageName: null,\n emojis: ['👥', '🤗', '🍽️', '😊', '🎉']\n },\n {\n id: 'family',\n text: 'Family dinners',\n ratio: 0.68,\n nextPageName: null,\n emojis: ['👨‍👩‍👧‍👦', '🏠', '🍽️', '❤️', '🌟']\n }\n ],\n },\n WebsiteHopping: {\n type: 'Question',\n text: 'Do you hop between different sites to find places?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'yes',\n text: 'Yes',\n ratio: 0.82,\n nextPageName: null,\n emojis: ['🔄', '💻', '🔍', '📱', '✅']\n },\n {\n id: 'no',\n text: 'No',\n ratio: 0.18,\n nextPageName: null,\n emojis: ['📱', '💻', '✨', '💫', '😌']\n }\n ],\n },\n CommunityParticipation: {\n type: 'Question',\n text: 'Do you want to participate in our community?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'yes',\n text: 'Yes',\n ratio: 0.75,\n nextPageName: null,\n emojis: ['👥', '🤝', '💪', '🌟', '✨']\n },\n {\n id: 'no',\n text: 'No',\n ratio: 0.25,\n nextPageName: null,\n emojis: ['👥', '💫', '✨', '😊', '👋']\n }\n ],\n },\n CommunityMap: {\n type: 'Question',\n text: 'Do you want to checkout the gluten-free community map?',\n isMultipleChoice: false,\n allowSkip: false,\n answers: [\n {\n id: 'yes',\n text: 'Yes',\n ratio: 0.95,\n nextPageName: null,\n emojis: ['🗺️', '📍', '👥', '🔍', '🤝']\n },\n {\n id: 'no',\n text: 'No',\n ratio: 0.05,\n nextPageName: null,\n emojis: ['💫', '✨', '👋', '😊', '📍']\n }\n ],\n },\n PlacesStatement: {\n type: 'Statement'\n },\n TagsStatement: {\n type: 'Statement',\n text: \"We have many filters to help you find the perfect place you're looking for\",\n allowSkip: false\n },\n EmailScreen1: {\n type: 'Email',\n text: \"Let's get you in!\",\n emailType: 'email',\n savedEmail: '',\n savedPassword: '',\n allowSkip: false\n },\n EmailScreen2: {\n type: 'Email',\n text: \"Sign up to start your gluten-free journey with Atly\",\n emailType: 'email',\n savedEmail: '',\n savedPassword: '',\n allowSkip: false\n },\n SearchTarget: {\n type: 'Question',\n text: 'Who are you finding gluten-free places for?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'self',\n text: 'Myself',\n ratio: 0.63,\n nextPageName: null,\n emojis: ['🙋', '😊', '🍽️', '💪', '✨']\n },\n {\n id: 'family',\n text: 'Family',\n ratio: 0.28,\n nextPageName: null,\n emojis: ['👨‍👩‍👧‍👦', '❤️', '🏠', '🍽️', '🤗']\n },\n {\n id: 'friend',\n text: 'Friend',\n ratio: 0.09,\n nextPageName: null,\n emojis: ['👥', '🤝', '🎉', '🍽️', '😊']\n }\n ],\n },\n DiningChallenges: {\n type: 'Question',\n text: 'What makes dining out easier for you?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'trained',\n text: 'Ordering from trained staff',\n ratio: 0.15,\n nextPageName: null,\n emojis: ['👨‍🍳', '🏆', '✅', '💪', '🔒']\n },\n {\n id: 'trust',\n text: 'Knowing the safe places',\n ratio: 0.53,\n nextPageName: null,\n emojis: ['✅', '🏆', '💪', '🔒', '💯']\n },\n {\n id: 'variety',\n text: 'More gluten-free options',\n ratio: 0.32,\n nextPageName: null,\n emojis: ['🔍', '🗺️', '🍽️', '✨', '🎯']\n }\n ],\n },\n SafetyRankingPreference: {\n type: 'Question',\n text: 'What matters most to you when checking if a place is safe?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'cross_contamination',\n text: 'Cross-contamination protocols',\n ratio: 0.45,\n nextPageName: null,\n emojis: ['🔍', '⚕️', '✅', '🏥', '🛡️']\n },\n {\n id: 'dedicated',\n text: 'Dedicated gluten-free space',\n ratio: 0.30,\n nextPageName: null,\n emojis: ['🏠', '✨', '🔒', '💯', '🍽️']\n },\n {\n id: 'staff_knowledge',\n text: 'Staff knowledge and training',\n ratio: 0.25,\n nextPageName: null,\n emojis: ['👩‍🍳', '📚', '🎓', '💪', '🤝']\n }\n ],\n },\n SafetyRankingStatement: {\n type: 'Statement',\n allowSkip: false\n },\n CommunityValidationStatement: {\n type: 'Statement',\n allowSkip: false\n },\n GlobalCoverageStatement: {\n type: 'Statement',\n allowSkip: false\n },\n AggregatedInfoStatement: {\n type: 'Statement',\n allowSkip: false\n },\n DietitianStatement: {\n type: 'Statement',\n allowSkip: false\n },\n RealtimeUpdatesStatement: {\n type: 'Statement',\n allowSkip: false\n },\n CrossContaminationStatement: {\n type: 'Statement',\n allowSkip: false\n },\n TravelFeaturesStatement: {\n type: 'Statement',\n allowSkip: false\n },\n FeaturePreference: {\n type: 'Question',\n text: 'Which would be most helpful for you?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'always',\n text: 'Places ranked by safety',\n ratio: 0.72,\n nextPageName: null,\n emojis: ['🔍', '📱', '😓', '⏰', '💭']\n },\n {\n id: 'sometimes',\n text: 'More reviews',\n ratio: 0.18,\n nextPageName: null,\n emojis: ['🤔', '⚖️', '🔍', '📱', '💫']\n },\n {\n id: 'rarely',\n text: 'Larger map',\n ratio: 0.10,\n nextPageName: null,\n emojis: ['✨', '💪', '😌', '✅', '🎯']\n }\n ],\n },\n AtlyIntro1: {\n type: 'Statement',\n allowSkip: false,\n text: \"Welcome to Atly\"\n },\n SafetyRankingExplanation: {\n type: 'Statement',\n allowSkip: false\n },\n InformationSources: {\n type: 'Question',\n text: 'Where do you typically look for gluten-free information?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'google_search',\n text: 'Google',\n ratio: 0.89,\n nextPageName: null,\n emojis: ['🔍', '💻', '🌐', '📱', '🔎']\n },\n {\n id: 'yelp',\n text: 'Yelp',\n ratio: 0.65,\n nextPageName: null,\n emojis: ['⭐', '📝', '🍽️', '📱', '💬']\n },\n {\n id: 'tripadvisor',\n text: 'TripAdvisor',\n ratio: 0.43,\n nextPageName: null,\n emojis: ['✈️', '🌍', '📝', '🏨', '⭐']\n },\n {\n id: 'other',\n text: 'Other Sources',\n ratio: 0.21,\n nextPageName: null,\n emojis: ['📚', '💭', '🔍', '📱', '💡']\n }\n ],\n },\n ReviewAggregationStatement: {\n type: 'Statement',\n allowSkip: false\n },\n InformationAccuracyQuestion: {\n type: 'Question',\n text: 'How often do you encounter outdated or incorrect gluten-free information?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'frequently',\n text: 'Frequently',\n ratio: 0.46,\n nextPageName: null,\n emojis: ['😓', '❌', '📱', '🔍', '⏰']\n },\n {\n id: 'sometimes',\n text: 'Sometimes',\n ratio: 0.40,\n nextPageName: null,\n emojis: ['🤔', '⚖️', '🔍', '📱', '⏳']\n },\n {\n id: 'rarely',\n text: 'Rarely',\n ratio: 0.13,\n nextPageName: null,\n emojis: ['✨', '✅', '😌', '💪', '🎯']\n },\n {\n id: 'never',\n text: 'Never',\n ratio: 0.01,\n nextPageName: null,\n emojis: ['✨', '✅', '😌', '💪', '🎯']\n }\n ],\n },\n InformationUpdateStatement: {\n type: 'Statement',\n text: \"We have a dedicated team working alongside our community to maintain the most up-to-date and accurate gluten-free platform available. Our real-time updates and verification system ensure you always have reliable information.\",\n allowSkip: false\n },\n SafetyCommitmentStatement: {\n type: 'Statement',\n text: \"While we strive for perfection, we believe in being transparent. Mistakes can happen, but our commitment to your safety is unwavering. We continuously work with our community and experts to identify and correct any inaccuracies quickly.\",\n allowSkip: false\n }\n};","export const BaseResponseCount = 23134; // Total number of responses to scale from ","export const flows = {\n flow_c: {\n version: \"flow_c\",\n pages: [\n \"GlutenSensitivity1\",\n \"AtlyIntro1\",\n 'EmailScreen2',\n \"DietaryRestrictions\",\n 'TagsStatement',\n \"SearchTarget\",\n // \"CommunityValidationStatement\",\n \"FeaturePreference\",\n \"SafetyRankingExplanation\",\n \"SafetyRankingStatement\",\n \"InformationSources\",\n \"ReviewAggregationStatement\",\n \"WhatPlacesDoYouWant1\",\n \"InformationAccuracyQuestion\",\n \"InformationUpdateStatement\",\n //\"SafetyCommitmentStatement\",\n \"CommunityMap\",\n \"PreCheckout\",\n ],\n components: {\n drawerButton: \"DrawerButton\",\n footerDrawer: \"FooterDrawerUI\",\n quizSlider: \"QuizSlider\"\n }\n },\n flow2_e: {\n version: \"flow2_e\",\n pages: [\n 'EmailScreen2',\n \"SearchTarget\",\n \"SafetyOfPlaces1\",\n \"SafetyRankingStatement\",\n \"SafetyRankingExplanation\",\n \"BiggestStruggles1\",\n //\"WeDoAllThat\"\n \"DietaryRestrictions\",\n 'TagsStatement',\n \"WhereDoYouWantPlaces\",\n \"WhatPlacesDoYouWant1\",\n \"Statement230kPlaces2\",\n \"Loading1\",\n \"PerfectFit1\",\n \"PreCheckout\",\n //HERE\n //\"FeaturePreference\",\n //\"InformationSources\",\n //\"ReviewAggregationStatement\",\n //\"InformationAccuracyQuestion\",\n //\"InformationUpdateStatement\",\n //\"SafetyCommitmentStatement\",\n //\"CommunityMap\",\n //\"PreCheckout\",\n ],\n components: {\n drawerButton: \"DrawerButtonUriel\",\n footerDrawer: \"FooterDrawerUI\",\n quizSlider: \"QuizSliderAtly\"\n }\n },\n flow2_e2: {\n version: \"flow2_e2\",\n pages: [\n 'EmailScreen2',\n \"SearchTarget\",\n \"SafetyOfPlaces1\",\n \"SafetyRankingStatement\",\n \"SafetyRankingExplanation\",\n \"BiggestStruggles1\",\n //\"WeDoAllThat\"\n \"DietaryRestrictions\",\n 'TagsStatement',\n \"WhereDoYouWantPlaces\",\n \"WhatPlacesDoYouWant1\",\n \"Statement230kPlaces2\",\n \"Loading1\",\n \"PerfectFit1\",\n \"PreCheckout\",\n //HERE\n //\"FeaturePreference\",\n //\"InformationSources\",\n //\"ReviewAggregationStatement\",\n //\"InformationAccuracyQuestion\",\n //\"InformationUpdateStatement\",\n //\"SafetyCommitmentStatement\",\n //\"CommunityMap\",\n //\"PreCheckout\",\n ],\n components: {\n drawerButton: \"DrawerButtonUriel\",\n footerDrawer: \"FooterDrawerUI\",\n quizSlider: \"QuizSliderAtlyNoClose\"\n }\n },\n flow2_emailAtEnd: {\n version: \"flow2_emailAtEnd\",\n pages: [\n \"SearchTarget\",\n \"SafetyOfPlaces1\",\n \"SafetyRankingStatement\",\n \"SafetyRankingExplanation\",\n \"BiggestStruggles1\",\n //\"WeDoAllThat\"\n \"DietaryRestrictions\",\n 'TagsStatement',\n \"WhereDoYouWantPlaces\",\n \"WhatPlacesDoYouWant1\",\n \"Statement230kPlaces2\",\n 'EmailScreen3',\n \"Loading1\",\n //\"PerfectFit1\",\n \"PreCheckout\",\n //HERE\n //\"FeaturePreference\",\n //\"InformationSources\",\n //\"ReviewAggregationStatement\",\n //\"InformationAccuracyQuestion\",\n //\"InformationUpdateStatement\",\n //\"SafetyCommitmentStatement\",\n //\"CommunityMap\",\n //\"PreCheckout\",\n ],\n components: {\n drawerButton: \"DrawerButtonUriel2\",\n footerDrawer: \"FooterDrawerUI\",\n quizSlider: \"QuizSliderAtly2\"\n }\n },\n flow2_f: {\n version: \"flow2_f\",\n pages: [\n \"SearchTarget\",\n \"SafetyOfPlaces1\",\n \"SafetyRankingStatement\",\n \"SafetyRankingExplanation\",\n \"BiggestStruggles1\",\n //\"WeDoAllThat\"\n \"DietaryRestrictions\",\n 'TagsStatement',\n \"WhereDoYouWantPlaces\",\n \"WhatPlacesDoYouWant1\",\n \"Statement230kPlaces2\",\n 'EmailScreen3',\n \"Loading1\",\n //\"PerfectFit1\",\n \"PreCheckout\",\n //HERE\n //\"FeaturePreference\",\n //\"InformationSources\",\n //\"ReviewAggregationStatement\",\n //\"InformationAccuracyQuestion\",\n //\"InformationUpdateStatement\",\n //\"SafetyCommitmentStatement\",\n //\"CommunityMap\",\n //\"PreCheckout\",\n ],\n components: {\n drawerButton: \"DrawerButtonUriel2\",\n footerDrawer: \"FooterDrawerUI\",\n quizSlider: \"QuizSliderAtly\"\n }\n },\n flow_testimonial: {\n version: \"flow_testimonial\",\n pages: [\n 'EmailScreen2',\n \"SearchTarget\",\n \"SafetyOfPlaces1\",\n \"SafetyRankingStatement\",\n \"SafetyRankingExplanation\",\n \"BiggestStruggles1\",\n \"DietaryRestrictions\",\n 'TagsStatement',\n \"WhereDoYouWantPlaces\",\n \"WhatPlacesDoYouWant1\",\n \"Statement230kPlaces2\",\n \"Loading1\",\n \"PerfectFit1\",\n \"PreCheckout\",\n ],\n components: {\n drawerButton: \"DrawerButtonTestimonial\",\n footerDrawer: \"FooterDrawerUI\",\n quizSlider: \"TestimonialStartPage\"\n }\n }\n};\n","export const Pages = {\n GlutenSensitivity1: {\n type: 'Question',\n text: 'What is your sensitivity to gluten?',\n subtext: 'This helps us provide more accurate recommendations for you',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'celiac',\n text: 'Celiac',\n ratio: 0.77,\n nextPageName: null,\n emojis: ['⚕️', '🔬', '📋', '✨', '💪']\n },\n {\n id: 'intolerant',\n text: 'Gluten intolerant',\n ratio: 0.16,\n nextPageName: null,\n emojis: ['⚕️', '🍽️', '✨', '💪', '🌟']\n },\n {\n id: 'choice',\n text: 'Gluten-free by choice',\n ratio: 0.04,\n nextPageName: null,\n emojis: ['🥗', '🥑', '🌱', '💚', '🧘']\n },\n ],\n },\n SafetyOfPlaces1: {\n type: 'Question',\n text: 'What type of places are you looking for?',\n subtext: null,\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'dedicated',\n text: '100% GF places',\n ratio: 0.45,\n nextPageName: null,\n emojis: ['✅', '🔒', '💯', '🏆', '⭐']\n },\n {\n id: 'celiac_safe',\n text: 'Celiac-safe places',\n ratio: 0.35,\n nextPageName: null,\n emojis: ['⚕️', '🛡️', '✔️', '🔍', '💪']\n },\n {\n id: 'friendly',\n text: 'Gluten-free aware places',\n ratio: 0.20,\n nextPageName: null,\n emojis: ['🤝', '🍽️', '📝', '🌟', '✨']\n },\n {\n id: 'options',\n text: 'Places with GF options',\n ratio: 0.20,\n nextPageName: null,\n emojis: ['🤝', '🍽️', '📝', '🌟', '✨']\n },\n ],\n },\n GlutenSensitivity2: {\n type: 'Question',\n text: 'What symptoms do you typically experience with gluten?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'digestive',\n text: 'Digestive issues',\n ratio: 0.68,\n nextPageName: null,\n emojis: ['⚕️', '💫', '🌿', '💊', '✨']\n },\n {\n id: 'fatigue',\n text: 'Fatigue and brain fog',\n ratio: 0.45,\n nextPageName: null,\n emojis: ['🌟', '💫', '🧠', '✨', '🌿']\n },\n {\n id: 'skin',\n text: 'Skin problems',\n ratio: 0.23,\n nextPageName: null,\n emojis: ['⚕️', '💫', '🧴', '✨', '🌿']\n },\n {\n id: 'headaches',\n text: 'Headaches and migraines',\n ratio: 0.31,\n nextPageName: null,\n emojis: ['⚕️', '💫', '🧠', '💊', '✨']\n }\n ],\n },\n WhatPlacesDoYouWant1: {\n type: 'Question',\n text: 'What places do you need the most help finding?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'restaurants',\n text: 'Restaurants',\n ratio: 0.81,\n nextPageName: null,\n emojis: ['🍽️', '👨‍🍳', '🍳', '', '🍴']\n },\n {\n id: 'bars',\n text: 'Bars',\n ratio: 0.43,\n nextPageName: null,\n emojis: ['🍸', '🍹', '🍷', '🍺', '🎉']\n },\n {\n id: 'cafes',\n text: 'Cafes',\n ratio: 0.52,\n nextPageName: null,\n emojis: ['☕', '🫖', '🍵', '🧋', '🥐']\n },\n {\n id: 'bakery',\n text: 'Bakeries',\n ratio: 0.27,\n nextPageName: null,\n emojis: ['🥖', '🥯', '🥨', '🧁', '🍪']\n },\n {\n id: 'hotels',\n text: 'Hotels',\n ratio: 0.27,\n nextPageName: null,\n emojis: ['🥖', '🥯', '🥨', '🧁', '🍪']\n },\n {\n id: 'Grocerystgroceryores',\n text: 'Grocery Stores',\n ratio: 0.27,\n nextPageName: null,\n emojis: ['🥖', '🥯', '🥨', '🧁', '🍪']\n }\n \n ],\n },\n DietaryRestrictions: {\n type: 'Question',\n text: 'Got it!\\nBesides gluten, do you have any other dietary restrictions?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'dairy',\n text: \"I'm dairy-free\",\n ratio: 0.35,\n nextPageName: null,\n emojis: ['🥛', '🌱', '🥗', '✨', '🌿']\n },\n {\n id: 'vegan',\n text: \"I'm vegan\",\n ratio: 0.25,\n nextPageName: null,\n emojis: ['🌱', '🥗', '🥬', '🥕', '🌿']\n },\n {\n id: 'vegetarian',\n text: \"I'm vegetarian\",\n ratio: 0.32,\n nextPageName: null,\n emojis: ['🥜', '⚕️', '💫', '✨', '💊']\n },\n {\n id: 'allergen',\n text: \"I eat an allergen-friendly diet\",\n ratio: 0.12,\n nextPageName: null,\n emojis: ['🥜', '⚕️', '💫', '✨', '💊']\n },\n {\n id: 'none',\n text: 'No other restrictions',\n ratio: 0.49,\n nextPageName: null,\n emojis: ['✅', '👍', '🆗', '💯', '🙂']\n }\n ],\n },\n DiningPreference: {\n type: 'Question',\n text: 'What type of dining experience do you prefer?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'casual',\n text: 'Casual dining',\n ratio: 0.45,\n nextPageName: null,\n emojis: ['🍽️', '☕', '🏡', '👕', '😊']\n },\n {\n id: 'fine',\n text: 'Fine dining',\n ratio: 0.25,\n nextPageName: null,\n emojis: ['🍷', '✨', '👔', '🕯️', '🎩']\n },\n {\n id: 'quick',\n text: 'Quick service',\n ratio: 0.30,\n nextPageName: null,\n emojis: ['⚡', '🏃', '🥪', '🥤', '⏱️']\n }\n ],\n },\n PriceRange: {\n type: 'Question',\n text: 'What is your preferred price range per meal?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'budget',\n text: '$10-20',\n ratio: 0.35,\n nextPageName: null,\n emojis: ['💰', '💵', '️', '🤑', '💸']\n },\n {\n id: 'moderate',\n text: '$20-40',\n ratio: 0.40,\n nextPageName: null,\n emojis: ['💰', '💰', '💵', '💳', '🏷️']\n },\n {\n id: 'premium',\n text: '$40+',\n ratio: 0.25,\n nextPageName: null,\n emojis: ['💰', '💰', '💰', '💎', '💳']\n }\n ],\n },\n PreCheckout: {\n type: 'PreCheckout'\n },\n Statement230kPlaces: {\n type: 'Statement',\n allowSkip: false\n },\n Statement230kPlaces2: {\n type: 'Statement',\n allowSkip: false\n },\n Loading1: {\n type: 'Statement',\n allowSkip: false\n },\n PerfectFit1: {\n type: 'Statement',\n allowSkip: false\n },\n LocationPreference: {\n type: 'Question',\n text: 'Where do you want help finding places?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'home',\n text: 'Around my house',\n ratio: 0.71,\n nextPageName: null,\n emojis: ['🏠', '🏡', '📍', '🗺️', '🏘️']\n },\n {\n id: 'work',\n text: 'Around work',\n ratio: 0.31,\n nextPageName: null,\n emojis: ['💼', '🏢', '📍', '🗺️', '👔']\n },\n {\n id: 'travel',\n text: 'While travelling',\n ratio: 0.93,\n nextPageName: null,\n emojis: ['✈️', '🧳', '🗺️', '🌎', '📍']\n }\n ],\n },\n OccasionTypes: {\n type: 'Question',\n text: 'What occasions are you looking for places?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'business',\n text: 'Business lunches',\n ratio: 0.25,\n nextPageName: null,\n emojis: ['💼', '🤝', '🍽️', '👔', '📊']\n },\n {\n id: 'date',\n text: 'Date nights',\n ratio: 0.63,\n nextPageName: null,\n emojis: ['💑', '🌙', '💕', '🍷', '✨']\n },\n {\n id: 'friends',\n text: 'Lunch with friends',\n ratio: 0.76,\n nextPageName: null,\n emojis: ['👥', '🤗', '🍽️', '😊', '🎉']\n },\n {\n id: 'family',\n text: 'Family dinners',\n ratio: 0.68,\n nextPageName: null,\n emojis: ['👨‍👩‍👧‍👦', '🏠', '🍽️', '❤️', '🌟']\n }\n ],\n },\n WebsiteHopping: {\n type: 'Question',\n text: 'Do you hop between different sites to find places?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'yes',\n text: 'Yes',\n ratio: 0.82,\n nextPageName: null,\n emojis: ['🔄', '💻', '🔍', '📱', '✅']\n },\n {\n id: 'no',\n text: 'No',\n ratio: 0.18,\n nextPageName: null,\n emojis: ['📱', '💻', '✨', '💫', '😌']\n }\n ],\n },\n CommunityParticipation: {\n type: 'Question',\n text: 'Do you want to participate in our community?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'yes',\n text: 'Yes',\n ratio: 0.75,\n nextPageName: null,\n emojis: ['👥', '🤝', '💪', '🌟', '✨']\n },\n {\n id: 'no',\n text: 'No',\n ratio: 0.25,\n nextPageName: null,\n emojis: ['👥', '💫', '✨', '😊', '👋']\n }\n ],\n },\n CommunityMap: {\n type: 'Question',\n text: 'Do you want to checkout the gluten-free community map?',\n isMultipleChoice: false,\n allowSkip: false,\n answers: [\n {\n id: 'yes',\n text: 'Yes',\n ratio: 0.95,\n nextPageName: null,\n emojis: ['🗺️', '📍', '👥', '🔍', '🤝']\n },\n {\n id: 'no',\n text: 'No',\n ratio: 0.05,\n nextPageName: null,\n emojis: ['💫', '✨', '👋', '😊', '📍']\n }\n ],\n },\n PlacesStatement: {\n type: 'Statement'\n },\n TagsStatement: {\n type: 'Statement',\n text: \"We have many filters to help you find the perfect place you're looking for\",\n allowSkip: false\n },\n EmailScreen1: {\n type: 'Email',\n text: \"Let's get you in!\",\n emailType: 'email',\n savedEmail: '',\n savedPassword: '',\n allowSkip: false\n },\n EmailScreen2: {\n type: 'Email',\n text: \"Sign up to start your gluten-free journey with Atly\",\n emailType: 'email',\n savedEmail: '',\n savedPassword: '',\n allowSkip: false\n },\n EmailScreen3: {\n type: 'Email',\n text: \"Almost ready! \\nLet's save your preferences\",\n emailType: 'email',\n savedEmail: '',\n savedPassword: '',\n allowSkip: false\n },\n SearchTarget: {\n type: 'Question',\n text: \"Great! Let's set you up.\\nWho are you finding \\ngluten-free places for?\",\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'self',\n text: 'Myself',\n ratio: 0.63,\n nextPageName: null,\n emojis: ['🙋', '😊', '🍽️', '💪', '✨']\n },\n {\n id: 'sondaughter',\n text: 'My child',\n ratio: 0.28,\n nextPageName: null,\n emojis: ['👨‍👩‍👧‍👦', '❤️', '🏠', '🍽️', '🤗']\n },\n {\n id: 'spouse',\n text: 'My spouse',\n ratio: 0.28,\n nextPageName: null,\n emojis: ['👨‍👩‍👧‍👦', '❤️', '🏠', '🍽️', '🤗']\n },\n {\n id: 'friend',\n text: 'A friend',\n ratio: 0.09,\n nextPageName: null,\n emojis: ['👥', '🤝', '🎉', '🍽️', '😊']\n }\n ,\n {\n id: 'someone',\n text: 'Someone else',\n ratio: 0.09,\n nextPageName: null,\n emojis: ['👥', '🤝', '🎉', '🍽️', '😊']\n }\n ],\n },\n DiningChallenges: {\n type: 'Question',\n text: 'What makes dining out easier for you?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'trained',\n text: 'Ordering from trained staff',\n ratio: 0.15,\n nextPageName: null,\n emojis: ['👨‍🍳', '🏆', '✅', '💪', '🔒']\n },\n {\n id: 'trust',\n text: 'Knowing the safe places',\n ratio: 0.53,\n nextPageName: null,\n emojis: ['✅', '🏆', '💪', '🔒', '💯']\n },\n {\n id: 'variety',\n text: 'More gluten-free options',\n ratio: 0.32,\n nextPageName: null,\n emojis: ['🔍', '🗺️', '🍽️', '✨', '🎯']\n }\n ],\n },\n SafetyRankingPreference: {\n type: 'Question',\n text: 'What matters most to you when checking if a place is safe?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'cross_contamination',\n text: 'Cross-contamination protocols',\n ratio: 0.45,\n nextPageName: null,\n emojis: ['🔍', '⚕️', '✅', '🏥', '🛡️']\n },\n {\n id: 'dedicated',\n text: 'Dedicated gluten-free space',\n ratio: 0.30,\n nextPageName: null,\n emojis: ['🏠', '✨', '🔒', '💯', '🍽️']\n },\n {\n id: 'staff_knowledge',\n text: 'Staff knowledge and training',\n ratio: 0.25,\n nextPageName: null,\n emojis: ['👩‍🍳', '📚', '🎓', '💪', '🤝']\n }\n ],\n },\n SafetyRankingStatement: {\n type: 'Statement',\n allowSkip: false\n },\n CommunityValidationStatement: {\n type: 'Statement',\n allowSkip: false\n },\n GlobalCoverageStatement: {\n type: 'Statement',\n allowSkip: false\n },\n AggregatedInfoStatement: {\n type: 'Statement',\n allowSkip: false\n },\n DietitianStatement: {\n type: 'Statement',\n allowSkip: false\n },\n RealtimeUpdatesStatement: {\n type: 'Statement',\n allowSkip: false\n },\n CrossContaminationStatement: {\n type: 'Statement',\n allowSkip: false\n },\n TravelFeaturesStatement: {\n type: 'Statement',\n allowSkip: false\n },\n FeaturePreference: {\n type: 'Question',\n text: 'Which would be most helpful for you?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'always',\n text: 'Places ranked by safety',\n ratio: 0.72,\n nextPageName: null,\n emojis: ['🔍', '📱', '😓', '⏰', '💭']\n },\n {\n id: 'sometimes',\n text: 'More reviews',\n ratio: 0.18,\n nextPageName: null,\n emojis: ['🤔', '⚖️', '🔍', '📱', '💫']\n },\n {\n id: 'rarely',\n text: 'Larger map',\n ratio: 0.10,\n nextPageName: null,\n emojis: ['✨', '💪', '😌', '✅', '🎯']\n }\n ],\n },\n AtlyIntro1: {\n type: 'Statement',\n allowSkip: false,\n text: \"Welcome to Atly\"\n },\n SafetyRankingExplanation: {\n type: 'Statement',\n allowSkip: false\n },\n InformationSources: {\n type: 'Question',\n text: 'Where do you typically look for gluten-free information?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'google_search',\n text: 'Google',\n ratio: 0.89,\n nextPageName: null,\n emojis: ['🔍', '💻', '🌐', '📱', '🔎']\n },\n {\n id: 'yelp',\n text: 'Yelp',\n ratio: 0.65,\n nextPageName: null,\n emojis: ['⭐', '📝', '🍽️', '📱', '💬']\n },\n {\n id: 'tripadvisor',\n text: 'TripAdvisor',\n ratio: 0.43,\n nextPageName: null,\n emojis: ['✈️', '🌍', '📝', '🏨', '⭐']\n },\n {\n id: 'other',\n text: 'Other Sources',\n ratio: 0.21,\n nextPageName: null,\n emojis: ['📚', '💭', '🔍', '📱', '💡']\n }\n ],\n },\n ReviewAggregationStatement: {\n type: 'Statement',\n allowSkip: false\n },\n InformationAccuracyQuestion: {\n type: 'Question',\n text: 'How often do you encounter outdated or incorrect gluten-free information?',\n isMultipleChoice: false,\n allowSkip: true,\n answers: [\n {\n id: 'frequently',\n text: 'Frequently',\n ratio: 0.46,\n nextPageName: null,\n emojis: ['😓', '❌', '📱', '🔍', '⏰']\n },\n {\n id: 'sometimes',\n text: 'Sometimes',\n ratio: 0.40,\n nextPageName: null,\n emojis: ['🤔', '⚖️', '🔍', '📱', '⏳']\n },\n {\n id: 'rarely',\n text: 'Rarely',\n ratio: 0.13,\n nextPageName: null,\n emojis: ['✨', '✅', '😌', '💪', '🎯']\n },\n {\n id: 'never',\n text: 'Never',\n ratio: 0.01,\n nextPageName: null,\n emojis: ['✨', '✅', '😌', '💪', '🎯']\n }\n ],\n },\n InformationUpdateStatement: {\n type: 'Statement',\n text: \"We have a dedicated team working alongside our community to maintain the most up-to-date and accurate gluten-free platform available. Our real-time updates and verification system ensure you always have reliable information.\",\n allowSkip: false\n },\n SafetyCommitmentStatement: {\n type: 'Statement',\n text: \"While we strive for perfection, we believe in being transparent. Mistakes can happen, but our commitment to your safety is unwavering. We continuously work with our community and experts to identify and correct any inaccuracies quickly.\",\n allowSkip: false\n },\n BiggestStruggles1: {\n type: 'Question',\n text: 'What do you want to achieve with Atly?',\n subtext: 'Pick up to 3',\n isMultipleChoice: true,\n maxSelections: 3,\n allowSkip: true,\n answers: [\n {\n id: 'finding_places',\n text: 'Find places easily',\n ratio: 0.85,\n nextPageName: null,\n emojis: ['🔍', '🗺️', '📱', '🏪', '✨']\n },\n {\n id: 'confidence',\n text: 'Eat with confidence',\n ratio: 0.72,\n nextPageName: null,\n emojis: ['💪', '✅', '🛡️', '😌', '🎯']\n },\n {\n id: 'ordering',\n text: 'Know what to order',\n ratio: 0.65,\n nextPageName: null,\n emojis: ['📝', '🍽️', '🤔', '✔️', '📋']\n },\n {\n id: 'menus',\n text: 'Find GF menus',\n ratio: 0.58,\n nextPageName: null,\n emojis: ['📜', '🔍', '📱', '✨', '🍽️']\n },\n {\n id: 'safety',\n text: 'Understand the safety of a place',\n ratio: 0.78,\n nextPageName: null,\n emojis: ['🛡️', '⚕️', '✅', '🔒', '💪']\n }\n ],\n },\n WhereDoYouWantPlaces: {\n type: 'Question',\n text: 'Where do you want to find gluten-free places?',\n isMultipleChoice: true,\n allowSkip: true,\n answers: [\n {\n id: 'neighborhood',\n text: '{neighborhood}',\n ratio: 0.45,\n nextPageName: null,\n emojis: ['🏘️', '📍', '🗺️', '🏡', '✨']\n },\n {\n id: 'city',\n text: '{city}',\n ratio: 0.35,\n nextPageName: null,\n emojis: ['🏙️', '📍', '🌆', '🌃', '✨']\n },\n {\n id: 'region',\n text: '{region}',\n ratio: 0.15,\n nextPageName: null,\n emojis: ['🗺️', '📍', '🌎', '🏛️', '✨']\n },\n {\n id: 'country',\n text: '{country}',\n ratio: 0.05,\n nextPageName: null,\n emojis: ['🌎', '🌍', '🌏', '✈️', '🗺️']\n },\n {\n id: 'worldwide',\n text: 'Worldwide',\n ratio: 0.05,\n nextPageName: null,\n emojis: ['🌎', '🌍', '🌏', '✈️', '🗺️']\n }\n ],\n }\n};","import { getMixpanelDistinctId, globalMixpanelData, identify, track } from \"@/utils/mixpanel\";\nimport { createBranchLink } from \"@/api\";\nimport { AppPlatform } from \"@/constants\";\nimport Mixpanel from \"mixpanel-browser\";\nimport { MixpanelEvents } from \"@/constants/mixpanel.js\";\n\nexport const trackEvent = async ({ eventName, authToken, data }) => {\n if (!eventName) {\n throw new Error(\"Event name is required\");\n }\n\n try {\n const path = authToken ? \"/events\" : \"/autls/events\";\n const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}${path}`, {\n method: \"POST\",\n body: JSON.stringify({\n event_name: eventName,\n distinct_id: getMixpanelDistinctId(),\n data: {\n email: data.email,\n branch_link: data.branchLink,\n distinct_id: data.distinctId,\n }\n }),\n headers: {\n app_version: process.env.NEXT_PUBLIC_APP_VERSION,\n app_platform: AppPlatform.TT,\n ...(authToken && { Authorization: `Bearer ${authToken}` }),\n }\n });\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error(\"Error tracking event\", error);\n track(\"track_event_api_error\", {\n eventName,\n data,\n error: error.message,\n });\n return null;\n }\n};\n\nexport const signup = async ({ email, clientType }) => {\n const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/signup`, {\n method: \"POST\",\n body: JSON.stringify({\n email,\n password: crypto.randomUUID(),\n distinct_id: getMixpanelDistinctId(),\n client_type: clientType,\n }),\n headers: {\n app_version: process.env.NEXT_PUBLIC_APP_VERSION,\n app_platform: clientType,\n },\n });\n\n return response.json();\n};\n\nconst TrackableEvents = {\n TOP_TEN_AUTH_SESSION: \"TOP_TEN_START_SESSION\",\n TOP_TEN_AUTHLESS_SESSION: \"TOP_TEN_FEEDBACK\",\n WELCOME_EMAIL_SEND: \"WELCOME_EMAIL_SEND\",\n}\n\nconst trackSendEmail = ({ data, authToken }) => {\n trackEvent({\n eventName: TrackableEvents.WELCOME_EMAIL_SEND,\n authToken,\n data,\n });\n};\n\nexport const trackTopTenStartSession = () => {\n Mixpanel.track(MixpanelEvents.TT_START_SESSION);\n};\n\n\nexport const updateRevenueCat = async ({ userId, subscriptionId }) => {\n return await fetch(\"https://api.revenuecat.com/v1/receipts\", {\n method: 'POST',\n headers: {\n \"X-Platform\": \"stripe\",\n \"Content-Type\": \"application/json\",\n \"Authorization\": `Bearer ${process.env.NEXT_PUBLIC_REVENUECAT_PUBLIC_STRIPE_API_KEY}`,\n },\n body: JSON.stringify({\n app_user_id: userId,\n fetch_token: subscriptionId,\n }),\n });\n}\n\nexport const cancelSubscription = async (subscriptionId) => {\n return await fetch(\"/quiz/stripe/subscription-cancel\", {\n method: 'POST',\n body: JSON.stringify({ subscriptionId }),\n });\n}\n\nexport const getAutoLoginLink = async ({\n email,\n clientType,\n pageId,\n link,\n referringLinkUrl,\n branchData,\n subscriptionId,\n cancelSubscriptionId,\n sendWelcomeEmail = false,\n}) => {\n try {\n const data = await signup({ email, clientType });\n const userId = data.user?._id;\n const authorization = data.accessToken;\n\n if (!userId || !authorization) {\n throw new Error(\"User ID or authorization token is missing\");\n }\n\n Mixpanel.identify(userId);\n\n if (userId && authorization) {\n trackEvent({\n eventName: TrackableEvents.TOP_TEN_AUTH_SESSION,\n authToken: authorization,\n data: {\n ...globalMixpanelData,\n distinctId: getMixpanelDistinctId(),\n userId,\n },\n });\n } else {\n trackEvent({\n eventName: TrackableEvents.TOP_TEN_AUTHLESS_SESSION,\n data: globalMixpanelData,\n });\n };\n\n const branchLink = await createBranchLink({\n id: pageId,\n isAuth: true,\n authToken: authorization,\n reason: 'landing_page',\n userId,\n // referringLinkUrl,\n branchData: {\n \"~stage\": \"signup\",\n \"~campaign\": \"landing_page\",\n // ...branchData\n },\n });\n\n if (sendWelcomeEmail) {\n trackSendEmail({\n authToken: authorization,\n data: {\n ...globalMixpanelData,\n email,\n distinctId: getMixpanelDistinctId(),\n branchLink,\n userId,\n },\n });\n }\n\n await Promise.all([\n subscriptionId && updateRevenueCat({ userId, subscriptionId }),\n cancelSubscriptionId && cancelSubscription(cancelSubscriptionId)\n ].filter(Boolean));\n\n const finalLink = branchLink || link;\n\n return {\n userId,\n authToken: authorization,\n branchLink: finalLink,\n };\n } catch (error) {\n throw error;\n }\n};\n\nexport const getCheckoutSessionUrl = async ({\n email,\n link,\n pageId,\n trialVariation,\n priceTestId,\n priceTest,\n priceTestVariation,\n couponId,\n allowPromotionCode = false,\n anonymous = false,\n clientType = \"\",\n}) => {\n const { userId, branchLink } = await getAutoLoginLink({\n email,\n clientType,\n pageId,\n link,\n });\n\n const testNoEmail = new URLSearchParams(window.location.search).get('testNoEmail') || anonymous;\n const payPerAcquisitionHash = new URLSearchParams(window.location.search).get('ppa');\n const costPerClick = new URLSearchParams(window.location.search).get('tp');\n\n // this is using the nextjs api route\n const checkoutResponse = await fetch(\"/best/checkout\", {\n method: \"POST\",\n credentials: \"include\", // Important: This allows cookies to be sent\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n email,\n userId,\n noEmail: testNoEmail,\n link: branchLink,\n isQuizFlow: true,\n sourceUrl: window.location.href,\n ...(trialVariation && { withTrial: trialVariation }),\n ...(priceTest && { priceTest }),\n priceTestVariation,\n designVersion: \"\",\n flowName: \"\",\n payPerAcquisitionHash,\n costPerClick,\n priceTestId,\n couponId,\n allowPromotionCode,\n }),\n });\n const checkoutResults = await checkoutResponse.json();\n\n if (checkoutResults.sessionUrl) {\n return {\n sessionUrl: checkoutResults.sessionUrl,\n sessionLink: checkoutResults.sessionUrl, // for backward compatibility\n branchLink,\n userId\n };\n }\n\n return { userId };\n};\n"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","code","ids","id","all","slice","keys","Object","module","exports","TopPlaceImage","priority","title","positionNumber","param","src","generateImageUrl","imageId","width","height","reason","jsx_runtime","jsxs","div","className","classNames","jsx","span","inter","concat","onClick","trackItemTapped","MixpanelValues","ItemTapped","IMAGE","Image","fill","sizes","alt","quality","style","objectFit","objectPosition","loading","GlutenFreePlaceRecommendations","count","avatars","GLUTEN_FREE_REC_COUNT","length","_","index","left","label","LEARN_MORE","TopPlaceDescription","description","p","BLURB","TopPlaceTags","tags","TAGS","tag","CircleXIcon","size","weight","svg","viewBox","xmlns","path","d","CircleCheckIcon","CircleQuestionMark","rect","y","rx","stroke","strokeLinecap","strokeLinejoin","circle","cx","cy","r","Icons","GlutenFreeIdentityType","ENABLED","NO","UNKNOWN","default","GlutenFreeAppliancesList","items","elements","text","AppliancesNames","OVEN","state","find","element","FRYER","STOVE","TOASTER","item","Icon","h1","QuestionMarkIcon","strokeWidth","fillRule","clipRule","mobile","desktop","getIcon","isMobile","device","GlutenFreeIdentityItem","isDisabled","subelements","InquireText","b","GlutenFreeIdentity","data","lean","header","SAFETY_RATING","searchParams","URLSearchParams","window","location","search","set","history","pushState","toString","GFIIconMap","icon","subtitle","footer","TopPlaceInformation","address","recommendationsCount","gfIdentityData","NAME","ADDRESS","CaretSvg","color","StoreLinkButton","children","link","pageTitle","name","pushGtmEvent","GtmEvents","CLICK_INSTALL","GtmProperties","GfeTopTen","PAGE_NAME","POSITION","ELEMENT_TEXT","DEVICE","open","XSvg","rest","atoms_AppStoreLogo","atoms_PlayStoreLogo","QrCodeModal","onClose","areaData","scanDetectableQrUrl","useMemo","url","URL","params","entries","forEach","key","value","append","useEffect","trackPopupShowed","trackPopupClosed","QRCodeSVG","AppStoreLogo","PlayStoreLogo","Box","GlutenFreeMenu","position","menuDataCopy","isModalOpen","setIsModalOpen","useState","sub_title","VIEW_MENU","data-page-name","data-position","data-element-text","data-device","button","aria-label","GlutenFreeUserReview","userName","userAvatarId","reviewText","linkToReview","Link","href","target","REVIEW_TEXT","TopPlaceFrame","placeId","OriginLink","setLink","origin","includes","replace","ALSO_FEATURED_IN","passHref","rel","trackAlsoFeaturedInClick","CLICK_ALSO_FEATURED","getPossessiveForm","lastLetter","AlsoFeaturedInLink","linkText","splitBasedOn","splitText","split","GlutenFreeAlsoFeaturedIn","_id","GlutenFreeTopPlace","place","secondaries","thumbnailImageId","thumbnail_image_id","geocode_address","formatted_address","total_recommendations","selected_tags","gf_identity_data","google_review_data","google_review_url","creator_preview","display_name","image","menu_data","menu_component_copy","also_in_pages","TopPlaceImageSkeleton","TopPlaceInformationSkeleton","generateGreenFilledIcon","generateGFGreenOutlinedIcon","generateGreenDashedIcon","generateUnknownIcon","generateSelectedIcon","getIconUrl","btoa","svgString","getMarkers","GlutenFreeIconsList","getSrc","type","formattedNumber","GlutenFreeIcons","SELECTED","GREEN_FILLED","GREEN_OUTLINED","GREEN_DOTTED","LeafletMap","dynamic","bind","ssr","GlutenFreeLeafletMap","places","deviceType","isActive","activePlace","setActivePlace","shouldShowTooltip","setShouldShowTooltip","markers","isFitBoundsBySteps","setIsFitBoundsBySteps","setTimeout","withMapEvents","disableZoomEvents","scrollWheelZoom","steps","lat","lon","isClusterMap","showAllTooltips","enforceStaticMap","center","selectedStepsIds","flyToPosition","onZoomEnd","event","bounds","newZoomLevel","_zoom","visible","filter","contains","marker","onClickStep","trackPinClick","stepElement","document","getElementById","scrollIntoView","behavior","CircleCloseModalButton","GenericModalVariations","A","ctaText","version","headerImage","B","headerImagePadding","checkList","CommunityModalVariations","GlutenFreeModal","area","quizFlowControllerVariation","isNewFlow","activeModal","setActiveModal","useSearchParams","noise","getNoise","min","MIN_SOCIAL_PROOF","max","MAX_SOCIAL_PROOF","range","triggerGenericModal","useCallback","console","log","body","overflow","storedVariation","localStorage","getItem","trackModalShown","variationKey","randomVariation","Math","floor","random","variation","setItem","triggerCommunityModal","trigger","get","triggerValue","decodeURIComponent","AWARD_EMBLEM","deleteSearchParams","GLUTEN_FREE_COMMUNITY","trackModalDismissed","montFont","ul","li","PorangeButton","trackModalCtaClicked","modalName","buttonCta","SocialProofAvatars","avatarsBorderColor","useTrackPlaceListScroll","disabled","firstScrollRef","useRef","activePlaceIndex","setActivePlaceIndex","scrollOffset","placesRef","current","onScroll","trackPageScrolled","placeElement","querySelectorAll","placeElementId","offsetPosition","getBoundingClientRect","top","foundPlace","indexOf","addEventListener","removeEventListener","trackPlaceViewed","Certificate","Faders","ChatCenteredText","alignment","transparent","Testimony","glutenFreeLevel","imageSrc","Feature","h3","GlutenFreeFooter","pageArea","placesCount","h2","section","APP_STORE","PLAY_STORE","OriginalFixedGlutenFreeCTA","branchLink","ctaTargetTestVariation","quizFlowControllerTestVariation","animate","textContent","trackTopTenStartQuizClick","domain","config","top_ten_domain","derivePossessiveForm","toUpperCase","OriginalFixedGlutenFreeFooter","interFont","Navigation","onBack","onSkip","showBack","showSkip","totalSteps","currentStep","isFirstQuestion","showProgressDots","noCloseButton","isLastTransition","getWeightedProgress","weights","Array","from","pow","totalWeight","reduce","sum","currentWeight","Statement","onAnswer","showFirstLine","setShowFirstLine","showSecondLine","setShowSecondLine","showBubbles","setShowBubbles","showButton","setShowButton","isExiting","setIsExiting","particlesExiting","setParticlesExiting","VETTED_PLACES_WORLDWIDE","right","bottom","i","animation","animationDelay","opacity","full","emojis","activeEmojiIndices","setActiveEmojiIndices","gridEmojis","sort","emoji","offset","x","interval","setInterval","newIndices","randomIndex","push","clearInterval","background","transform","styleSheet","createElement","head","appendChild","PreCheckout","isTransitioning","direction","formSubmit","trialVariation","promotionAmountOff","clientSecret","pricePerMonth","customerUpdate","userEmail","isVisible","setIsVisible","timer","clearTimeout","PreCheckoutPage","validateEmail","test","email","EmailScreen","setEmail","savedEmail","touched","setTouched","attempted","setAttempted","showContent","setShowContent","inputRef","isValid","focus","handleResize","visualViewport","form","querySelector","heightDiff","innerHeight","block","handleSubmit","preventDefault","subtext","onSubmit","htmlFor","input","ref","inputMode","autoComplete","onChange","onBlur","placeholder","a","line","array","React","br","showTitle","setShowTitle","showSubtitle","setShowSubtitle","showLevels","setShowLevels","activePin","setActivePin","pins","pin","transitionDelay","backgroundColor","previousAnswer","setCount","showFaces","setShowFaces","duration","generateAvatar","gender","photoIndex","avatarUrl","usedIndices","genders","toFixed","gridItems","setGridItems","usedUrls","Set","newAvatars","has","add","motion","initial","transition","delay","img","CommunityScroll","activeRegion","setActiveRegion","regions","region","activeFeature","setActiveFeature","features","feature","activeItem","setActiveItem","verificationItems","detail","activeUpdate","setActiveUpdate","updates","time","action","update","activePractice","setActivePractice","safetyPractices","practice","travelFeatures","showLogo","setShowLogo","showDescription","setShowDescription","showReviews","setShowReviews","currentReviewIndex","setCurrentReviewIndex","reviews","source","rating","relevant","prevIndex","review","dangerouslySetInnerHTML","__html","showAnimation","setShowAnimation","bellVisible","setBellVisible","bellRung","setBellRung","showUpdateEffect","setShowUpdateEffect","outdatedInfo","status","updatedInfo","exit","speedSegments","speed","timeouts","progress","setProgress","loadingPhase","setLoadingPhase","showCheckmark","setShowCheckmark","animationRef","startTimeRef","currentSegment","lastProgress","timestamp","elapsed","segment","segmentProgress","easedProgress","easeInOutCubic","currentProgress","requestAnimationFrame","cancelAnimationFrame","strokeDasharray","PI","strokeDashoffset","round","CircularLoader","hidden","ease","confettiConfig","particleCount","spread","colors","gravity","Title","variants","scaleX","confetti","timers","FullScreenQuizFlow","answerHistory","isFullPageSliderOpen","setIsFullPageSliderOpen","initialAnswer","trackAction","trackView","flowVersion","flowPages","locationData","currentPageIndex","setCurrentPageIndex","setAnswerHistory","setIsTransitioning","transitionDirection","setTransitionDirection","showNavigation","setShowNavigation","showHeaderElements","setShowHeaderElements","setUserEmail","currentPageName","totalPages","currentPage","Pages","page_name","page_type","answers","flow_version","handleAnswer","answer","error","value_submitted","isArray","isEmailValid","newHistory","prev","handleBack","handleSkip","skipped","shouldShowNavigation","allowSkip","Question","Fragment","Statement230k","TagsStatement","SafetyStatement","CommunityStatement","CoverageStatement","AggregatedStatement","DietitianStatement","RealtimeStatement","CrossContaminationStatement","TravelStatement","AtlyIntro","SafetyRankingExplanation","ReviewAggregationStatement","InformationUpdateStatement","Statement230kPlaces2","SafetyCommitmentStatement","Loading1","PerfectFit1","PlacesStatement","BiggestStruggles1","WhereDoYouWantPlaces","InformationSources","InformationAccuracyQuestion","FeaturePreference","EmailScreen2","EmailScreen1","SocialProofTooltip","setIsActive","trackSocialProofPopupShown","FooterDrawerUI","isSliderVariant","formattedPlacesCount","possessiveFormArea","setIsSliderOpen","setReasonForOpening","trackSliderShown","onDrawerButtonClick","DrawerButtonComponent","isTransparent","SocialProof","textVariant","variant","getDrawerButton","componentName","getQuizSlider","GlutenFreeFooterDrawer","aiFlowVariation","flowOverride","neighborhood","city","country","immediateFlow","openQuizImmediately","reasonForOpening","isSliderOpen","selectedAnswer","setSelectedAnswer","hasShownSlider","setHasShownSlider","FormatAmount","toLowerCase","endsWith","openSliderCallback","openDrawer","scrollRef","mounted","setMounted","selectedOption","setSelectedOption","modalParam","urlSearchParams","delete","replaceState","pathname","handleAnswerSelection","questionText","answerPosition","answerText","fullAnswer","trackSliderAnswerSelected","handleDrawerButtonClick","newSearchParams","setDrawerButtonComponent","QuizSliderComponent","setQuizSliderComponent","currentFlow","flows","components","drawerButton","component","catch","quizSlider","isOpen","pages","onNext","trackSliderDismissed","setClickPosition","setShowConfetti","isAnimating","setIsAnimating","showConfetti","setLocalShowConfetti","clickPosition","setLocalClickPosition","clientX","clientY","Confetti","animationExiting","setAnimationExiting","currentFoodIndex","setCurrentFoodIndex","foods","safe","getSafetyEmoji","safety","isInitialTransition","setIsInitialTransition","handleFirstAnswer","innerWidth","shouldShowSkip","forceAnswerAnimation","stripeData","TestimonialQuizFlow","flow_testimonial","UrlVariationComponentMap","OriginalDrawer","NewDrawer","testimonial","DrawerComponent","urlVariation","quizAiFlowVariations","props","extractedProps","Component","FeatureFlagValues","FeatureFlagKeys","TT_QUIZ_FLOW_CONTROLLER","C","StableClientComponentsWrapper","onlyQuizUI","pageId","cursor","isDesktop","initPlaces","determinedArea","recommendationsCountOnPage","mixpanelData","isServerFetchedAllPlaces","quizFlowDesktopControllerVariation","priceTestId","isWebCheckout","adTrialVariation","priceTestVariation","couponId","isDsaCampaign","clientType","mixpanelDataRef","fetchedRef","cursorRef","checkoutSessionUrl","setCheckoutSessionUrl","pendingRedirectRef","setBranchLink","isLoading","setIsLoading","setPlaces","userId","setUserId","totalRecommendations","setTotalRecommendations","fetch","cursorValue","response","getTopTenStepsList","limit","acc","step","timeoutId","scrollTo","handleScroll","cancelScroll","drawer","observer","IntersectionObserver","entry","isIntersecting","easing","iterations","threshold","observe","mod","initBranch","referringLinkUrl","referring_link","createBranchLink","branchData","registerMixpanelProperties","verifyMixpanelRegistration","trackIndirectAdsQuizStart","trackStartQuizClick","trackFooterAppButtonClick","trackViewMenuButtonClick","trackFooterJoinCommunityButtonClick","trackReviewsButtonClick","parentElement","classList","remove","aiFlow","TT_AI_QUIZ_FLOW_VARIATIONS","E","flowControllerVariation","trackTopTenStartSession","onSlideAction","eventName","MixpanelEvents","INDIRECT_ADS_QUIZ_ACTION","TT_QUIZ_ACTION","getCheckoutSessionUrl","priceTest","sessionUrl","track","TT_QUIZ_CHECKOUT_API_ERROR","checkout_session_url","is_web_checkout","branch_link","message","onFormSubmit","INDIRECT_ADS_QUIZ_FORM_SUBMIT","TT_QUIZ_FORM_SUBMIT","price_test_variation","Suspense","fallback","StripeContextProvider","withTrial","distinctId","getMixpanelDistinctId","INDIRECT_ADS_QUIZ_PAGE_VIEWED","Boolean","TT_QUIZ_PAGE_VIEWED","Particle","initialPosition","angle","angleInRad","scale","cos","sin","Date","toISOString","particles","defaultPosition","setDefaultPosition","zIndex","particle","formatCount","inThousands","selectedAnswers","onTransitionComplete","skipAnswerAnimation","isInSlider","setSelectedAnswers","showResults","setShowResults","activeEmojis","setActiveEmojis","handleOptionClick","option","isMultipleChoice","isSelected","some","ans","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","QuestionOption","flatMap","responseCount","BaseResponseCount","ratio","transformOrigin","transitionTimingFunction","validPrev","match","withoutNoneOptions","maxSelections","formatAnswerText","filteredAnswers","getFilteredAnswers","validAnswers","formattedText","trim","seen","isNoneOption","DISABLED","NOT_APPLICABLE","flow_a","footerDrawer","flow_b","flow_c","flow_d","flow_e","flow_f","GlutenSensitivity1","nextPageName","GlutenSensitivity2","WhatPlacesDoYouWant1","DietaryRestrictions","DiningPreference","PriceRange","Statement230kPlaces","LocationPreference","OccasionTypes","WebsiteHopping","CommunityParticipation","CommunityMap","emailType","savedPassword","SearchTarget","DiningChallenges","SafetyRankingPreference","SafetyRankingStatement","CommunityValidationStatement","GlobalCoverageStatement","AggregatedInfoStatement","RealtimeUpdatesStatement","TravelFeaturesStatement","AtlyIntro1","flow2_e","flow2_e2","flow2_emailAtEnd","flow2_f","SafetyOfPlaces1","EmailScreen3","trackEvent","authToken","process","method","JSON","stringify","event_name","distinct_id","headers","app_version","app_platform","AppPlatform","TT","Authorization","json","signup","password","crypto","randomUUID","client_type","TrackableEvents","TOP_TEN_AUTH_SESSION","TOP_TEN_AUTHLESS_SESSION","WELCOME_EMAIL_SEND","trackSendEmail","Mixpanel","TT_START_SESSION","updateRevenueCat","subscriptionId","app_user_id","fetch_token","cancelSubscription","getAutoLoginLink","cancelSubscriptionId","sendWelcomeEmail","user","authorization","accessToken","identify","globalMixpanelData","isAuth","finalLink","allowPromotionCode","anonymous","testNoEmail","payPerAcquisitionHash","costPerClick","checkoutResponse","credentials","noEmail","isQuizFlow","sourceUrl","designVersion","flowName","checkoutResults","sessionLink"],"sourceRoot":""}