feat: background blur compatibility, subscription page text from translation v2

This commit is contained in:
gofnnp 2023-09-29 23:27:57 +04:00
parent 864eb9ee4b
commit 73a9da6a4e
3 changed files with 62 additions and 11 deletions

View File

@ -2,7 +2,7 @@ import { useTranslation } from "react-i18next";
import MainButton from "../MainButton"; import MainButton from "../MainButton";
import Title from "../Title"; import Title from "../Title";
import styles from "./styles.module.css"; import styles from "./styles.module.css";
import { useCallback, useState } from "react"; import { useCallback, useEffect, useState } from "react";
import NameInput from "./nameInput"; import NameInput from "./nameInput";
import DatePicker from "./DatePicker"; import DatePicker from "./DatePicker";
import { IDate } from "@/services/date"; import { IDate } from "@/services/date";
@ -12,6 +12,12 @@ import routes from "@/routes";
import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
import { actions, selectors } from "@/store"; import { actions, selectors } from "@/store";
import { EPathsFromHome } from "@/store/siteConfig"; import { EPathsFromHome } from "@/store/siteConfig";
import {
getCategoryIdByZodiacSign,
getZodiacSignByDate,
} from "@/services/zodiac-sign";
import { Asset } from "@/api/resources/Assets";
import { getRandomArbitrary } from "@/services/random-value";
function CompatibilityPage(): JSX.Element { function CompatibilityPage(): JSX.Element {
const { t, i18n } = useTranslation(); const { t, i18n } = useTranslation();
@ -25,6 +31,31 @@ function CompatibilityPage(): JSX.Element {
const [compatCategory, setCompatCategory] = useState(1); const [compatCategory, setCompatCategory] = useState(1);
const homeConfig = useSelector(selectors.selectHome); const homeConfig = useSelector(selectors.selectHome);
const showNavbarFooter = homeConfig.isShowNavbar; const showNavbarFooter = homeConfig.isShowNavbar;
const birthdate = useSelector(selectors.selectBirthdate);
const zodiacSign = getZodiacSignByDate(birthdate);
const [asset, setAsset] = useState<Asset>();
const api = useApi();
const locale = i18n.language;
const assetsData = useCallback(async () => {
const { asset_categories } = await api.getAssetCategories({ locale });
const categoryId = getCategoryIdByZodiacSign(zodiacSign, asset_categories);
const { assets } = await api.getAssets({
category: String(categoryId || "1"),
});
return assets;
}, [api, locale, zodiacSign]);
const {
data: assets,
// isPending
} = useApiCall<Asset[]>(assetsData);
useEffect(() => {
if (assets) {
setAsset(assets[getRandomArbitrary(0, assets?.length || 0)]);
}
}, [assets]);
const handleNext = () => { const handleNext = () => {
if (isDisabled) return; if (isDisabled) return;
@ -66,8 +97,6 @@ function CompatibilityPage(): JSX.Element {
return navigate(routes.client.home()); return navigate(routes.client.home());
}; };
const api = useApi();
const locale = i18n.language;
const loadData = useCallback(() => { const loadData = useCallback(() => {
return api return api
.getAiCompatCategories({ locale }) .getAiCompatCategories({ locale })
@ -98,8 +127,12 @@ function CompatibilityPage(): JSX.Element {
return ( return (
<section <section
className={`${styles.page} page`} className={`${styles.page} page`}
style={{ paddingBottom: showNavbarFooter ? "48px" : "16px" }} style={{
paddingBottom: showNavbarFooter ? "48px" : "16px",
backgroundImage: `url(${asset?.url.replace("http://", "https://")})`,
}}
> >
<div className={styles.blurring}></div>
{!showNavbarFooter && ( {!showNavbarFooter && (
<div className={styles.cross} onClick={handleCross}></div> <div className={styles.cross} onClick={handleCross}></div>
)} )}

View File

@ -4,8 +4,12 @@
flex: auto; flex: auto;
background-color: #121212; background-color: #121212;
align-items: flex-start; align-items: flex-start;
background-position: center;
/* background-size: cover; */
background-repeat: no-repeat;
} }
.cross { .cross {
position: absolute; position: absolute;
top: 24px; top: 24px;
@ -42,6 +46,20 @@
.content { .content {
width: 100%; width: 100%;
position: relative;
z-index: 2;
}
.blurring {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #00000045;
-webkit-backdrop-filter: blur(100px);
backdrop-filter: blur(100px);
z-index: 1;
} }
.title { .title {

View File

@ -17,17 +17,17 @@ import { useState } from "react";
const currency = Currency.USD; const currency = Currency.USD;
const locale = Locale.EN; const locale = Locale.EN;
const itemPriceId = "aura-membership-2-week-USD"; const itemPriceId = "aura-membership-2-week-USD";
const paymentItems = [
{
title: "Per 7-Day Trial For",
price: 1.0,
description: "2-Week Plan",
},
];
function SubscriptionPage(): JSX.Element { function SubscriptionPage(): JSX.Element {
const [isOpenModal, setIsOpenModal] = useState(false); const [isOpenModal, setIsOpenModal] = useState(false);
const { t } = useTranslation(); const { t } = useTranslation();
const paymentItems = [
{
title: "Per 7-Day Trial For",
price: 1.0,
description: t("au.2week_plan.web"),
},
];
const navigate = useNavigate(); const navigate = useNavigate();
const email = useSelector(selectors.selectEmail); const email = useSelector(selectors.selectEmail);
const itemPrice = useSelector(selectors.selectPlanById(itemPriceId)); const itemPrice = useSelector(selectors.selectPlanById(itemPriceId));