diff --git a/src/components/App/index.tsx b/src/components/App/index.tsx
index c59cef9..53999ce 100755
--- a/src/components/App/index.tsx
+++ b/src/components/App/index.tsx
@@ -121,7 +121,7 @@ import LoadingPage from "../pages/LoadingPage";
import { EProductKeys, productUrls } from "@/data/products";
import SinglePaymentPage from "../pages/SinglePaymentPage";
import ABDesignV1Routes from "@/routerComponents/ABDesign/v1";
-import metricService, { EGoals } from "@/services/metric/metricService";
+import metricService from "@/services/metric/metricService";
const isProduction = import.meta.env.MODE === "production";
@@ -164,11 +164,6 @@ function App(): JSX.Element {
const birthPlace = user?.profile?.birthplace || birthPlaceFromStore;
useEffect(() => {
- if (location.pathname.includes("v1/trial-choice")) {
- metricService.reachGoal(EGoals.AURA_TRIAL_CHOICE_PAGE_VISIT, true);
- } else if (location.pathname.includes("v1/trial-payment")) {
- metricService.reachGoal(EGoals.AURA_TRIAL_PAYMENT_PAGE_VISIT, true);
- }
// metricService.initMetricAB()
metricService.hit();
}, [location]);
diff --git a/src/components/pages/ABDesign/v1/components/PriceItem/index.tsx b/src/components/pages/ABDesign/v1/components/PriceItem/index.tsx
index 2fd25a2..f9499b0 100644
--- a/src/components/pages/ABDesign/v1/components/PriceItem/index.tsx
+++ b/src/components/pages/ABDesign/v1/components/PriceItem/index.tsx
@@ -1,6 +1,9 @@
import { removeAfterDot, roundToWhole } from "@/services/price";
import styles from "./styles.module.css";
import Price, { Currency, Locale } from "@/components/PaymentTable/Price";
+import { useEffect, useRef } from "react";
+import { useDispatch } from "react-redux";
+import { actions } from "@/store";
const currency = Currency.USD;
const locale = Locale.EN;
@@ -22,12 +25,28 @@ function PriceItem({
classNameActive = "",
click,
}: PriceItemProps): JSX.Element {
+ const dispatch = useDispatch();
+
const _price = new Price(
roundToWhole(value === 1 ? 0.99 : value),
currency,
locale
);
+ const itemRef = useRef(null);
+
+ useEffect(() => {
+ if (value === 13.76 && itemRef.current?.offsetLeft) {
+ dispatch(
+ actions.siteConfig.updateTrialChoiceArrowOptions({
+ left: `${
+ itemRef.current.offsetLeft + itemRef.current.offsetWidth / 2 - 26
+ }px`,
+ })
+ );
+ }
+ }, [dispatch, value, itemRef.current?.offsetLeft]);
+
const compatClassName = () => {
const isPopular = id === "stripe.7";
const isActive = active;
@@ -41,7 +60,11 @@ function PriceItem({
};
return (
-
+
{removeAfterDot(_price.format())}
);
diff --git a/src/components/pages/ABDesign/v1/data/questionary.module.css b/src/components/pages/ABDesign/v1/data/questionary.module.css
index 992d890..87b676f 100644
--- a/src/components/pages/ABDesign/v1/data/questionary.module.css
+++ b/src/components/pages/ABDesign/v1/data/questionary.module.css
@@ -1,3 +1,3 @@
-.relationship-goal-answer {
+.small-font-size-answer {
font-size: 15px !important;
}
\ No newline at end of file
diff --git a/src/components/pages/ABDesign/v1/data/stepsQuestionary.tsx b/src/components/pages/ABDesign/v1/data/stepsQuestionary.tsx
index f7be40c..b3c2f68 100644
--- a/src/components/pages/ABDesign/v1/data/stepsQuestionary.tsx
+++ b/src/components/pages/ABDesign/v1/data/stepsQuestionary.tsx
@@ -846,6 +846,7 @@ export const stepsQuestionary: IStep[] = [
{
id: "aboutGoals",
question: "When you think about your relationship goals, you feel...?",
+ answerClassName: styles["small-font-size-answer"],
lottie: {
preloadKey: ELottieKeys.darts,
},
@@ -1191,7 +1192,7 @@ export const stepsQuestionary: IStep[] = [
{
id: "relationshipGoal",
question: "When you think about your relationship goals, you feel...?",
- answerClassName: styles["relationship-goal-answer"],
+ answerClassName: styles["small-font-size-answer"],
answers: [
{
id: "optimistic",
diff --git a/src/components/pages/ABDesign/v1/pages/AllRight/styles.module.css b/src/components/pages/ABDesign/v1/pages/AllRight/styles.module.css
index 072ff21..f00c543 100644
--- a/src/components/pages/ABDesign/v1/pages/AllRight/styles.module.css
+++ b/src/components/pages/ABDesign/v1/pages/AllRight/styles.module.css
@@ -86,4 +86,11 @@
background-color: #fff;
color: #0F1323;
}
-
\ No newline at end of file
+
+.lottie-animation {
+ width: 100%;
+ height: 100%;
+ margin-left: 12px;
+ margin-top: 12px;
+ transform: scale(1.35);
+}
\ No newline at end of file
diff --git a/src/components/pages/ABDesign/v1/pages/AlmostThere/styles.module.css b/src/components/pages/ABDesign/v1/pages/AlmostThere/styles.module.css
index c1aa8ca..b8665ba 100644
--- a/src/components/pages/ABDesign/v1/pages/AlmostThere/styles.module.css
+++ b/src/components/pages/ABDesign/v1/pages/AlmostThere/styles.module.css
@@ -77,6 +77,6 @@
}
.lottie-animation {
- width: 100%;
- aspect-ratio: 401.27 / 353.27;
+ width: 68%;
+ aspect-ratio: 229 / 178;
}
\ No newline at end of file
diff --git a/src/components/pages/ABDesign/v1/pages/EmailConfirm/index.tsx b/src/components/pages/ABDesign/v1/pages/EmailConfirm/index.tsx
index 0948053..7133ce2 100644
--- a/src/components/pages/ABDesign/v1/pages/EmailConfirm/index.tsx
+++ b/src/components/pages/ABDesign/v1/pages/EmailConfirm/index.tsx
@@ -8,6 +8,7 @@ import { useDynamicSize } from "@/hooks/useDynamicSize";
import QuestionnaireGreenButton from "../../ui/GreenButton";
import { DotLottieReact } from "@lottiefiles/dotlottie-react";
import { ELottieKeys, useLottie } from "@/hooks/lottie/useLottie";
+import { useEffect } from "react";
function EmailConfirmPage() {
const navigate = useNavigate();
@@ -21,6 +22,13 @@ function EmailConfirmPage() {
navigate(routes.client.onboardingV1());
};
+ useEffect(() => {
+ document.body.classList.add(styles["body-email-confirm"]);
+ return () => {
+ document.body.classList.remove(styles["body-email-confirm"]);
+ };
+ }, []);
+
return (
{
+ const _preloadImages = [
+ "/heart.webp",
+ "https://d2ecldjic51fgm.cloudfront.net/pub/assets/aura/emoji/twohearts-bc5e3e37.png",
+ "https://d2ecldjic51fgm.cloudfront.net/pub/assets/aura/emoji/ring-26f6592d.png",
+ "https://d2ecldjic51fgm.cloudfront.net/pub/assets/aura/emoji/brokenheart-9e2ba6fb.png",
+ "https://d2ecldjic51fgm.cloudfront.net/pub/assets/aura/emoji/thinkingface-aa0f3a72.png",
+ ];
+ if (isNextPageMentioned === "true") {
+ _preloadImages.push("/new-york-times.png");
+ _preloadImages.push("/partnersWithoutNewYorkTime.png");
+ }
+ return _preloadImages;
+ }, [isNextPageMentioned]);
+
+ usePreloadImages(preloadImages);
useEffect(() => {
const feature = location.pathname.replace("/v1/gender/", "");
diff --git a/src/components/pages/ABDesign/v1/pages/Gender/styles.module.css b/src/components/pages/ABDesign/v1/pages/Gender/styles.module.css
index 6f12d89..f690ba4 100644
--- a/src/components/pages/ABDesign/v1/pages/Gender/styles.module.css
+++ b/src/components/pages/ABDesign/v1/pages/Gender/styles.module.css
@@ -4,7 +4,7 @@
align-items: center;
width: 100%;
max-width: 460px;
- padding: 20px 24px;
+ padding: 20px 24px 116px;
color: #2C2C2C;
}
@@ -120,6 +120,8 @@
}
.toast-container {
+ position: fixed;
+ bottom: calc(0dvh + 16px);
margin-top: 16px;
}
diff --git a/src/components/pages/ABDesign/v1/pages/PartnerRightPlace/styles.module.css b/src/components/pages/ABDesign/v1/pages/PartnerRightPlace/styles.module.css
index 3cad5c2..cf7815e 100644
--- a/src/components/pages/ABDesign/v1/pages/PartnerRightPlace/styles.module.css
+++ b/src/components/pages/ABDesign/v1/pages/PartnerRightPlace/styles.module.css
@@ -88,4 +88,5 @@
.lottie-animation {
height: 100%;
aspect-ratio: 250 / 145;
+ margin-left: 9%;
}
\ No newline at end of file
diff --git a/src/components/pages/ABDesign/v1/pages/QuestionnaireIntermediate/index.tsx b/src/components/pages/ABDesign/v1/pages/QuestionnaireIntermediate/index.tsx
index 9ade62d..62f355a 100644
--- a/src/components/pages/ABDesign/v1/pages/QuestionnaireIntermediate/index.tsx
+++ b/src/components/pages/ABDesign/v1/pages/QuestionnaireIntermediate/index.tsx
@@ -41,10 +41,13 @@ function QuestionnaireIntermediatePage() {
return (
+
* {
+ z-index: 1;
+}
+
+.background-image {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 0;
+ background: url("/couple_holding_hands_1.webp");
+ background-position-y: bottom;
+ background-position-x: center;
+ background-size: cover;
+ background-attachment: fixed;
+ background-repeat: no-repeat;
}
.header-title {
diff --git a/src/components/pages/ABDesign/v1/pages/RelationshipAlmostThere/styles.module.css b/src/components/pages/ABDesign/v1/pages/RelationshipAlmostThere/styles.module.css
index bb160b0..9b77362 100644
--- a/src/components/pages/ABDesign/v1/pages/RelationshipAlmostThere/styles.module.css
+++ b/src/components/pages/ABDesign/v1/pages/RelationshipAlmostThere/styles.module.css
@@ -1,7 +1,9 @@
.page {
position: relative;
display: grid;
+ justify-items: center;
grid-template-rows: repeat(4, min-content);
+ gap: 40px;
height: fit-content;
min-height: 100vh;
background: url("/almost-there.webp");
@@ -68,6 +70,6 @@
}
.lottie-animation {
- width: 100%;
- aspect-ratio: 575 / 506;
+ width: 68%;
+ aspect-ratio: 229 / 178;
}
\ No newline at end of file
diff --git a/src/components/pages/ABDesign/v1/pages/TrialChoice/index.tsx b/src/components/pages/ABDesign/v1/pages/TrialChoice/index.tsx
index bade3cc..f683dec 100644
--- a/src/components/pages/ABDesign/v1/pages/TrialChoice/index.tsx
+++ b/src/components/pages/ABDesign/v1/pages/TrialChoice/index.tsx
@@ -14,7 +14,10 @@ import { usePaywall } from "@/hooks/paywall/usePaywall";
import { EPlacementKeys } from "@/api/resources/Paywall";
import { getRandomArbitrary } from "@/services/random-value";
import Loader from "@/components/Loader";
-import metricService, { EGoals } from "@/services/metric/metricService";
+import metricService, {
+ EGoals,
+ EMetrics,
+} from "@/services/metric/metricService";
import PersonalVideo from "../TrialPayment/components/PersonalVideo";
enum EDisplayOptionButton {
@@ -23,7 +26,7 @@ enum EDisplayOptionButton {
}
const displayOptionButton: EDisplayOptionButton =
- EDisplayOptionButton.alwaysVisible;
+ EDisplayOptionButton.visibleIfChosen; //
function TrialChoicePage() {
const dispatch = useDispatch();
@@ -39,9 +42,16 @@ function TrialChoicePage() {
const { products, isLoading, getText } = usePaywall({
placementKey: EPlacementKeys["aura.placement.redesign.main"],
});
+ const arrowLeft = useSelector(selectors.selectTrialChoiceArrowOptions)?.left;
const { videoUrl } = useSelector(selectors.selectPersonalVideo);
+ useEffect(() => {
+ metricService.reachGoal(EGoals.AURA_TRIAL_CHOICE_PAGE_VISIT, [
+ EMetrics.KLAVIYO,
+ ]);
+ }, []);
+
useEffect(() => {
const randomDelay = getRandomArbitrary(3000, 5000);
const countUsersTimeOut = setTimeout(() => {
@@ -130,7 +140,14 @@ function TrialChoicePage() {
classNameItemActive={`${styles["price-item-active"]} ${styles[gender]}`}
click={handlePriceItem}
/>
-
+
{getText("text.3", {
color: "#1C38EA",
})}
@@ -139,6 +156,13 @@ function TrialChoicePage() {
className={styles["arrow-image"]}
src="/arrow.svg"
alt={`Arrow to $${products.at(-1)?.trialPrice}`}
+ style={
+ arrowLeft
+ ? {
+ left: arrowLeft,
+ }
+ : {}
+ }
/>
diff --git a/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PaymentTable/index.tsx b/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PaymentTable/index.tsx
index a51242d..54fafd4 100644
--- a/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PaymentTable/index.tsx
+++ b/src/components/pages/ABDesign/v1/pages/TrialPayment/components/PaymentTable/index.tsx
@@ -15,7 +15,10 @@ interface IPaymentTableProps {
}
const getPrice = (product: IPaywallProduct) => {
- return (product.trialPrice || 0) / 100;
+ if (product.trialPrice % 100 === 0) {
+ return product.trialPrice / 100;
+ }
+ return ((product.trialPrice || 0) / 100).toFixed(2);
};
function PaymentTable({
@@ -71,12 +74,21 @@ function PaymentTable({
-
Your cost per 2 weeks after trial
+ {product.trialPrice !== 50 && (
+
Your cost per 2 weeks after trial
+ )}
+ {product.trialPrice === 50 && (
+
+ Your cost after the trial is fourteen dollars for every two
+ weeks or $0.50 per half-day
+
+ )}
${Number(getText("full.price")) / 100}
- ${product.price / 100}
+ {product.trialPrice !== 50 && ${product.price / 100}}
+ {product.trialPrice === 50 && ${getPrice(product)}}
@@ -89,9 +101,8 @@ function PaymentTable({
You are enrolling in 2 weeks subscription. By continuing you agree that
if you don't cancel prior to the end of the {product?.trialDuration}-day
trial for the ${getPrice(product)} you will automatically be charged $
- {product.price / 100}{" "}
- every 2 weeks until you cancel in settings. Learn more about
- cancellation and refund policy in{" "}
+ {product.price / 100} every 2 weeks until you cancel in settings. Learn
+ more about cancellation and refund policy in{" "}
Subscription policy
>
diff --git a/src/components/pages/ABDesign/v1/pages/TrialPayment/index.tsx b/src/components/pages/ABDesign/v1/pages/TrialPayment/index.tsx
index d20a3a8..b836b4e 100644
--- a/src/components/pages/ABDesign/v1/pages/TrialPayment/index.tsx
+++ b/src/components/pages/ABDesign/v1/pages/TrialPayment/index.tsx
@@ -24,7 +24,10 @@ import { useDynamicSize } from "@/hooks/useDynamicSize";
import { EPlacementKeys, IPaywallProduct } from "@/api/resources/Paywall";
import { usePaywall } from "@/hooks/paywall/usePaywall";
import PaymentModal from "@/components/PaymentModal";
-import metricService, { EGoals } from "@/services/metric/metricService";
+import metricService, {
+ EGoals,
+ EMetrics,
+} from "@/services/metric/metricService";
function TrialPaymentPage() {
const dispatch = useDispatch();
@@ -55,6 +58,12 @@ function TrialPaymentPage() {
>("single");
const { subPlan } = useParams();
+ useEffect(() => {
+ metricService.reachGoal(EGoals.AURA_TRIAL_PAYMENT_PAGE_VISIT, [
+ EMetrics.KLAVIYO,
+ ]);
+ }, []);
+
useEffect(() => {
if (subPlan) {
const targetProduct = products.find(
diff --git a/src/components/pages/GetInformationPartner/index.tsx b/src/components/pages/GetInformationPartner/index.tsx
index effc206..2f55920 100644
--- a/src/components/pages/GetInformationPartner/index.tsx
+++ b/src/components/pages/GetInformationPartner/index.tsx
@@ -19,7 +19,7 @@ function GetInformationPartnerPage() {