loan accepted translated

This commit is contained in:
Kakabay 2024-04-06 20:03:07 +05:00
parent f531a9b523
commit 0a047d2eeb
12 changed files with 234 additions and 206 deletions

View File

@ -1,13 +1,13 @@
// IMPORT MODULES
import React, { useState, useContext } from "react";
import { LanguageContext } from "../../backend/LanguageContext";
import { UserContext } from "../../backend/UserContext";
import { useForm } from "react-hook-form";
import { z } from "zod";
import { zodResolver } from "@hookform/resolvers/zod";
import React, { useState, useContext } from 'react';
import { LanguageContext } from '../../backend/LanguageContext';
import { UserContext } from '../../backend/UserContext';
import { useForm } from 'react-hook-form';
import { z } from 'zod';
import { zodResolver } from '@hookform/resolvers/zod';
// IMPORT IMAGES
import next from "../../icons/next.svg";
import next_reverse from "../../icons/next-reverse.svg";
import next from '../../icons/next.svg';
import next_reverse from '../../icons/next-reverse.svg';
// import arrow from "../../icons/arrow.svg";
const schema = z.object({
@ -30,7 +30,7 @@ const AcceptStage = ({
userDataRes,
}) => {
const { locale } = useContext(LanguageContext);
const userToken = localStorage.getItem("userToken");
const userToken = localStorage.getItem('userToken');
const { user } = useContext(UserContext);
const handleCardDetails = (e) => {
@ -47,23 +47,20 @@ const AcceptStage = ({
} = useForm({
resolver: zodResolver(schema),
defaultValues: {
amount: recepientAmount ? recepientAmount : "Loading",
duration: creditDuration ? creditDuration : "loading",
amount: recepientAmount ? recepientAmount : 'Loading',
duration: creditDuration ? creditDuration : 'loading',
},
});
const sendCode = async () => {
try {
const response = await fetch(
"https://shahsyotag.halkbank.gov.tm/sendOTP",
{
method: "POST",
headers: { "Content-Type": "aplication/json" },
body: JSON.stringify({
phone_number: user.mobile_phone,
}),
}
);
const response = await fetch('https://shahsyotag.halkbank.gov.tm/sendOTP', {
method: 'POST',
headers: { 'Content-Type': 'aplication/json' },
body: JSON.stringify({
phone_number: user.mobile_phone,
}),
});
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
@ -85,23 +82,19 @@ const AcceptStage = ({
<section className="imm-cs-1">
<h1 className="cs-2-title">Error...</h1>
<div className="cu-bottom cd-2-title">
<button
type="button"
className="sign-btn reg-btn"
onClick={() => setStage(7)}
>
<button type="button" className="sign-btn reg-btn" onClick={() => setStage(7)}>
<div>
<div className="btn-img">
<img src={next_reverse} alt="logout" />
</div>
<h3>
{locale === "TKM"
? "Yza"
: locale === "РУС"
? "Назад"
: locale === "ENG"
? "Back"
: "Yza"}
{locale === 'TKM'
? 'Yza'
: locale === 'РУС'
? 'Назад'
: locale === 'ENG'
? 'Back'
: 'Yza'}
</h3>
</div>
</button>
@ -112,7 +105,7 @@ const AcceptStage = ({
if (isLoading) {
return (
<section className="imm-cs-1">
<section className="loading">
<h1 className="cs-2-title">Loading...</h1>
</section>
);
@ -122,55 +115,50 @@ const AcceptStage = ({
<section className="imm-cs-1">
<form onSubmit={handleSubmit(onSubmit)}>
<h2 className="cs-2-title">
{locale === "TKM"
? "Karzyň kalkulýatory"
: locale === "РУС"
? "Подтвердите данные"
: locale === "ENG"
? "Loan calculator"
: "Karzyň kalkulýatory"}
{locale === 'TKM'
? 'Maglumatlary tassyklaň'
: locale === 'РУС'
? 'Подтвердите данные'
: locale === 'ENG'
? 'Confirm your details'
: 'Maglumatlary tassyklaň'}
</h2>
<div className="imm-credit-form-wrapper">
<div className="input-block">
<label htmlFor="amount">
{locale === "TKM"
? "At"
: locale === "РУС"
? "Сумма"
: locale === "ENG"
? "amount"
: "At"}
{locale === 'TKM'
? 'Jemi'
: locale === 'РУС'
? 'Сумма'
: locale === 'ENG'
? 'Amount'
: 'Jemi'}
</label>
<input {...register("amount")} type="text" id="amount" disabled />
<input {...register('amount')} type="text" id="amount" disabled />
{errors.amount && <span>{errors.amount.message}</span>}
</div>
<div className="input-block">
<label htmlFor="surname">
{locale === "TKM"
? "At"
: locale === "РУС"
? "Срок"
: locale === "ENG"
? "duration"
: "At"}
{locale === 'TKM'
? 'Möhleti'
: locale === 'РУС'
? 'Срок'
: locale === 'ENG'
? 'Term'
: 'Möhleti'}
</label>
<input
{...register("duration")}
type="text"
id="duration"
disabled
/>
<input {...register('duration')} type="text" id="duration" disabled />
{errors.duration && <span>{errors.duration.message}</span>}
</div>
<div className="input-block">
<label htmlFor="code">
{locale === "TKM"
? "At"
: locale === "РУС"
? "Номер карты"
: locale === "ENG"
? "amount"
: "At"}
{locale === 'TKM'
? 'Kart nomeri'
: locale === 'РУС'
? 'Номер карты'
: locale === 'ENG'
? 'Card number'
: 'Kart nomeri'}
</label>
<input
value={cardDetails}
@ -180,29 +168,31 @@ const AcceptStage = ({
placeholder="6435980023168745"
/>
<span className="another-option" onClick={() => setStage(12)}>
Оформить карту
{locale === 'TKM'
? 'Kartyňyz ýok bolsa, täze karty üçin ýüz tutuň'
: locale === 'РУС'
? 'Оформите новую карту, если она у вас отсувствует'
: locale === 'ENG'
? 'Apply for a new card if you do not have one'
: 'Kartyňyz ýok bolsa, täze karty üçin ýüz tutuň'}
</span>
{/* {errors.code && <span>{errors.code.message}</span>} */}
</div>
</div>
<div className="cu-bottom cd-2-title">
<button
type="button"
className="sign-btn reg-btn"
onClick={() => setStage(7)}
>
<button type="button" className="sign-btn reg-btn" onClick={() => setStage(7)}>
<div>
<div className="btn-img">
<img src={next_reverse} alt="logout" />
</div>
<h3>
{locale === "TKM"
? "Yza"
: locale === "РУС"
? "Назад"
: locale === "ENG"
? "Back"
: "Yza"}
{locale === 'TKM'
? 'Yza'
: locale === 'РУС'
? 'Назад'
: locale === 'ENG'
? 'Back'
: 'Yza'}
</h3>
</div>
</button>
@ -213,17 +203,16 @@ const AcceptStage = ({
onClick={() => {
onSubmit();
setStage(9);
}}
>
}}>
<div>
<h3>
{locale === "TKM"
? "Dowam et"
: locale === "РУС"
? "Подтвердить "
: locale === "ENG"
? "Proceed"
: "Dowam et"}
{locale === 'TKM'
? 'Dowam et'
: locale === 'РУС'
? 'Подтвердить '
: locale === 'ENG'
? 'Proceed'
: 'Dowam et'}
</h3>
<div className="btn-img">
<img src={next} alt="logout" />

View File

@ -74,12 +74,12 @@ const BorrowerInfo = ({
<form onSubmit={handleSubmit(onSubmit)}>
<h2 className="cs-2-title">
{locale === 'TKM'
? 'Karzyň kalkulýatory'
? 'Görkezilen maglumatlary tassyklaň, eger-de görkezilen maglumatlar nädogry bolsa ýa-da doldurylmadyk meýdançalar bar bolsa, bank bilen habarlaşyň!'
: locale === 'РУС'
? 'Подтвердите данные'
? 'Подтвердите указанные данные, если указанные данные неверны или есть пустые поля, обратитесь в банк!'
: locale === 'ENG'
? 'Loan calculator'
: 'Karzyň kalkulýatory'}
? 'Confirm the specified data, if the specified data is incorrect or there are blank fields, contact the bank!'
: 'Görkezilen maglumatlary tassyklaň, eger-de görkezilen maglumatlar nädogry bolsa ýa-da doldurylmadyk meýdançalar bar bolsa, bank bilen habarlaşyň!'}
</h2>
<div className="imm-credit-form-wrapper">
<div className="input-block">
@ -113,12 +113,12 @@ const BorrowerInfo = ({
<div className="input-block">
<label htmlFor="surname">
{locale === 'TKM'
? 'At'
? 'Familiýasy'
: locale === 'РУС'
? 'Отчество'
: locale === 'ENG'
? 'Surname'
: 'At'}
? 'Middle name'
: 'Familiýasy'}
</label>
<input {...register('surname')} type="text" id="surname" disabled />
{/* {errors.surname && <span>{errors.surname.message}</span>} */}
@ -126,25 +126,26 @@ const BorrowerInfo = ({
<div className="input-block">
<label htmlFor="birthDate">
{locale === 'TKM'
? 'At'
? 'Doglan ýyly'
: locale === 'РУС'
? 'Год рождения'
: locale === 'ENG'
? 'Surname'
: 'At'}
? 'Year of birth'
: 'Doglan ýyly'}
</label>
<input {...register('birthDate')} type="text" id="birthDate" disabled />
{/* {errors.surname && <span>{errors.surname.message}</span>} */}
</div>
<div className="input-block">
<label htmlFor="passport-serial">
{locale === 'TKM'
? 'Hasaba almak'
? 'Pasport seriýasy'
: locale === 'РУС'
? 'Серия паспорта'
: locale === 'ENG'
? 'Sign up'
: 'Hasaba almak'}
? 'Passport Series'
: 'Pasport seriýasy'}
</label>
<input {...register('passportSerial')} type="text" id="passport-serial" disabled />
{errors.passportSerial && <span>{errors.passportSerial.message}</span>}
@ -152,12 +153,12 @@ const BorrowerInfo = ({
<div className="input-block">
<label htmlFor="passport-number">
{locale === 'TKM'
? 'Hasaba almak'
? 'Pasport şahsyýetnamasy'
: locale === 'РУС'
? 'Номер паспорта'
: locale === 'ENG'
? 'Sign up'
: 'Hasaba almak'}
? 'Passport ID'
: 'Pasport şahsyýetnamasy'}
</label>
<input
{...register('passportNumber', { valueAsNumber: true })}
@ -171,12 +172,12 @@ const BorrowerInfo = ({
<div className="input-block">
<label htmlFor="address">
{locale === 'TKM'
? 'Hasaba almak'
? 'Resaşaýyş ýeri'
: locale === 'РУС'
? 'Адресс прописки'
: locale === 'ENG'
? 'Sign up'
: 'Hasaba almak'}
? 'Place of residence'
: 'Resaşaýyş ýeri'}
</label>
<input {...register('address')} type="text" id="address" disabled />
</div>
@ -184,12 +185,12 @@ const BorrowerInfo = ({
<div className="input-block">
<label htmlFor="bank-acc">
{locale === 'TKM'
? 'Hasaba almak'
? 'Bank hasaby belgisi'
: locale === 'РУС'
? 'Номер банковского аккаунта'
: locale === 'ENG'
? 'Sign up'
: 'Hasaba almak'}
? 'Bank account number'
: 'Bank hasaby belgisi'}
</label>
<input
{...register('bankAccount', { valueAsNumber: true })}
@ -202,12 +203,12 @@ const BorrowerInfo = ({
<div className="input-block">
<label htmlFor="phone-number">
{locale === 'TKM'
? 'Hasaba almak'
? 'Telefon belgisi'
: locale === 'РУС'
? 'Номер телефона'
: locale === 'ENG'
? 'Sign up'
: 'Hasaba almak'}
? 'Phone number'
: 'Telefon belgisi'}
</label>
<input disabled type="text" id="phone-number" {...register('phoneNumber')} />
@ -217,16 +218,18 @@ const BorrowerInfo = ({
<div className="input-block">
<label htmlFor="workPlace">
{locale === 'TKM'
? 'Hasaba almak'
? 'Iş ýeri'
: locale === 'РУС'
? 'Место работы'
: locale === 'ENG'
? 'Sign up'
: 'Hasaba almak'}
? 'Place of work'
: 'Iş ýeri'}
<span> *</span>
</label>
<input
type="text"
id="workPlace"
required={true}
onChange={handleWorkPlace}
value={recipientWorkPlace}
/>
@ -234,16 +237,18 @@ const BorrowerInfo = ({
<div className="input-block">
<label htmlFor="workPosition">
{locale === 'TKM'
? 'Hasaba almak'
? 'Iş ady'
: locale === 'РУС'
? 'Должность'
: locale === 'ENG'
? 'Sign up'
: 'Hasaba almak'}
? 'Job title'
: 'Iş ady'}
<span> *</span>
</label>
<input
type="text"
id="workPosition"
required={true}
onChange={handleWorkPosition}
value={recipientWorkPosition}
/>
@ -269,6 +274,9 @@ const BorrowerInfo = ({
</button>
<button
type="button"
disabled={
recipientWorkPosition.length < 3 || recipientWorkPlace.length < 3 ? true : false
}
className="sign-btn cu-btn"
onClick={() => (isGuranter ? setStage(4) : setStage(7))}>
<div>

View File

@ -142,7 +142,7 @@ const BorrowerStage = ({
if (isLoading) {
return (
<section className="imm-cs-1">
<section className="loading">
<h1 className="cs-2-title">Loading...</h1>
</section>
);
@ -251,7 +251,7 @@ const BorrowerStage = ({
</div>
</div>
<div className="imm-credit-checkbox-block">
<div className="imm-credit-checkbox-wrapper">
<h3>
{locale === 'TKM'
? 'Zamunçylygyň görnüşini saýlan'
@ -310,7 +310,11 @@ const BorrowerStage = ({
<div className="card-button cs-1-bottom">
<button
disabled={passportNumber.length === 6 && accNumber.length === 23 ? false : true}
disabled={
passportNumber.length === 6 && accNumber.length === 23 && isGuranterSelected
? false
: true
}
type="submit"
className="sign-btn cd-btn"
onClick={() => {

View File

@ -19,6 +19,7 @@ const CalculateStage = ({
setCreditDuration,
maxAmount,
creditDuration,
modalOpen,
}) => {
const { locale } = useContext(LanguageContext);
const [max, setMax] = useState(maxAmount);
@ -46,6 +47,11 @@ const CalculateStage = ({
input.current.value = inputValue;
}, [inputValue]);
useEffect(() => {
setCreditDuration(0);
setRadio(0);
}, [modalOpen]);
// useEffect(() => {
// if (creditData) {
// creditData.data.map((el) => {
@ -65,6 +71,15 @@ const CalculateStage = ({
<div className="cs-2-left">
<div className="calculate-header">
<h2 className="cs-2-title">
{locale === 'TKM'
? 'Karzyň gerekli möçberini saýlaň'
: locale === 'РУС'
? 'Выберите необходимую сумму кредита'
: locale === 'ENG'
? 'Select the required loan amount'
: 'Karzyň gerekli möçberini saýlaň'}
</h2>
<p className="">
{locale === 'TKM'
? 'Karzyň kalkulýatory'
: locale === 'РУС'
@ -72,8 +87,8 @@ const CalculateStage = ({
: locale === 'ENG'
? 'Loan calculator'
: 'Karzyň kalkulýatory'}
</h2>
<p>Максимальная сумма онлайн потребительского кредита составляет 60000 манат</p>
</p>
{/* <p>Максимальная сумма онлайн потребительского кредита составляет 60000 манат</p> */}
</div>
<div className="input-block">
<label htmlFor="sum">
@ -215,6 +230,7 @@ const CalculateStage = ({
</button>
<button
type="button"
disabled={creditDuration === 0 ? true : false}
className="sign-btn cd-btn"
onClick={() => {
setStage(8);
@ -253,61 +269,7 @@ const CalculateStage = ({
:
</h6>
<div className="payment">
{/* <div
className="data-img"
onClick={() => {
if (
(parseInt(monthlyPayment) -
(
((inputValue * bet) / 100 / (radio * 365)) *
(radio * 30)
).toFixed(2)) *
12 -
1 >
100
) {
setInputValue(
(parseInt(monthlyPayment) -
(
((inputValue * bet) / 100 / (radio * 365)) *
(radio * 30)
).toFixed(2)) *
12 -
1
);
}
}}
>
<img src={minus2} alt="minus" />
</div> */}
<h5>{monthlyPayment} TMT</h5>
{/* <div
className="data-img"
onClick={() => {
if (
(parseInt(monthlyPayment) +
1 -
(
((inputValue * bet) / 100 / (radio * 365)) *
(radio * 30)
).toFixed(2)) *
12 <
max
) {
setInputValue(
(parseInt(monthlyPayment) +
1 -
(
((inputValue * bet) / 100 / (radio * 365)) *
(radio * 30)
).toFixed(2)) *
12
);
}
}}
>
<img src={plus2} alt="plus" />
</div> */}
<h5>{creditDuration === 0 ? 0 : monthlyPayment} TMT</h5>
</div>
<div className="percent">
<h6>
@ -320,7 +282,7 @@ const CalculateStage = ({
: 'Göterim töleg'}
:
</h6>
<h5>{bet} %</h5>
<h5>{creditDuration === 0 ? 0 : bet} %</h5>
</div>
</div>
<div className="cs-2-right-middle">
@ -335,7 +297,10 @@ const CalculateStage = ({
: 'UgrPul ýygymyatmak'}
:
</h6>
<h5>{(((inputValue * (bet / 100)) / 365) * 30).toFixed(2)} TMT</h5>
<h5>
{creditDuration === 0 ? 0 : (((inputValue * (bet / 100)) / 365) * 30).toFixed(2)}
TMT
</h5>
</div>
<div className="cs-2-right-middle-content">
<h6>
@ -348,7 +313,7 @@ const CalculateStage = ({
: 'Karzyň esasy bergisiniň töleg möçberi'}
:
</h6>
<h5>{(inputValue / (radio * 12)).toFixed(2)} TMT</h5>
<h5>{creditDuration === 0 ? 0 : (inputValue / (radio * 12)).toFixed(2)} TMT</h5>
</div>
</div>
<div className="cs-2-right-bottom">
@ -362,7 +327,7 @@ const CalculateStage = ({
: 'Karz almak üçin bolmaly aýlyk zähmet haky'}
:
</h6>
<h5>{monthlyPayment * 2} TMT</h5>
<h5>{creditDuration === 0 ? 0 : monthlyPayment * 2} TMT</h5>
</div>
</div>
</div>

View File

@ -158,7 +158,7 @@ const CardRegistration = ({ borrowerData, setStage, setPaymentLink, setPaymentDe
if (isLoading) {
return (
<section className="imm-cs-1">
<section className="loading">
<h1 className="cs-2-title">Loading...</h1>
</section>
);

View File

@ -126,7 +126,7 @@ const GuaranterStage = ({
if (isLoading) {
return (
<section className="imm-cs-1">
<section className="loading">
<h1 className="cs-2-title">Loading...</h1>
</section>
);

View File

@ -11,12 +11,12 @@ const LoanAccepted = ({ setStage, setModalOpen, acceptedMessage }) => {
<form>
<h2 className="loan-accepted-title">
{locale === 'TKM'
? 'Karzyň kalkulýatory'
? 'Arzaňyz kabul edildi'
: locale === 'РУС'
? acceptedMessage
? 'Ваша заявка принята'
: locale === 'ENG'
? 'Loan calculator'
: 'Karzyň kalkulýatory'}
? 'Your application is accepted'
: 'Arzaňyz kabul edildi'}
</h2>
<div className="cu-bottom cd-2-title">
<button type="button" className="sign-btn reg-btn" onClick={() => setModalOpen(false)}>

View File

@ -118,7 +118,7 @@ const PaymentSuccess = ({
if (isLoading) {
return (
<section className="imm-cs-1">
<section className="loading">
<h1 className="cs-2-title">Loading...</h1>
</section>
);

View File

@ -268,7 +268,7 @@ const PhoneAccept = ({
if (isLoading) {
return (
<section className="imm-cs-1">
<section className="loading">
<h1 className="cs-2-title">Loading...</h1>
</section>
);
@ -303,24 +303,24 @@ const PhoneAccept = ({
<form onSubmit={handleSubmit(onSubmit)}>
<h2 className="cs-2-title">
{locale === 'TKM'
? 'Karzyň kalkulýatory'
? 'Belgä iberilen SMS duýduryş koduny giriziň'
: locale === 'РУС'
? 'Введите код с СМС оповещения, отправленный на номер '
: locale === 'ENG'
? 'Loan calculator'
: 'Karzyň kalkulýatory'}
? 'Enter the SMS alert code sent to the number'
: 'Belgä iberilen SMS duýduryş koduny giriziň'}
{cardDetails ? user.mobile_phone : submitCardDetails['three-d-secure-number']}
</h2>
<div className="imm-credit-form-wrapper">
<div className="input-block">
<label htmlFor="code">
{locale === 'TKM'
? 'At'
? 'Kod'
: locale === 'РУС'
? 'Код'
: locale === 'ENG'
? 'amount'
: 'At'}
? 'Code'
: 'Kod'}
</label>
<input value={codeValue} onChange={handleCodeChange} type="text" id="code" />
{/* <span className="another-option" onClick={codeResend}>
@ -331,12 +331,29 @@ const PhoneAccept = ({
</div>
{invalidData && (
<section className="imm-cs-1">
<h1 className="cs-2-title">Ошибкаб проверьте данные</h1>
<h1 className="cs-2-title">
{locale === 'TKM'
? 'Roralňyşlyk, maglumatlary barlaň'
: locale === 'РУС'
? 'Ошибка, проверьте данные'
: locale === 'ENG'
? 'Error, check data'
: 'Roralňyşlyk, maglumatlary barlaň'}
</h1>
</section>
)}
{tryAgain && (
<section className="imm-cs-1">
<h1 className="cs-2-title">Попробуйте отправить снова</h1>
<h1 className="cs-2-title">
{' '}
{locale === 'TKM'
? 'Gaýtadan iberip görüň'
: locale === 'РУС'
? 'Попробуйте отправить снова'
: locale === 'ENG'
? 'Try sending again'
: 'Gaýtadan iberip görüň'}
</h1>
</section>
)}
<div className="cu-bottom cd-2-title">

View File

@ -60,7 +60,7 @@ const ImmediateCreditModal = ({
const [sighGuaranter, setSignGuaranter] = useState();
const [maxAmount, setMaxAmount] = useState();
const [recepientAmount, setRecepientAmount] = useState(0);
const [creditDuration, setCreditDuration] = useState(1);
const [creditDuration, setCreditDuration] = useState(0);
const [phoneNumber, setPhoneNumber] = useState('');
const [cardDetails, setCardDetails] = useState('');
@ -77,7 +77,7 @@ const ImmediateCreditModal = ({
console.log('WorkPosition', recipientWorkPosition);
return (
<section className={modalOpen ? 'modal imm-credit-modal active' : 'modal imm-credit-modal'}>
<section className={modalOpen ? 'modal credit-modal active' : 'modal credit-modal'}>
<div className="modal-container">
<div className="modal-inner" ref={window}>
<div className="modal-window">
@ -339,6 +339,7 @@ const ImmediateCreditModal = ({
creditDuration={creditDuration}
setCreditDuration={setCreditDuration}
maxAmount={maxAmount}
modalOpen={modalOpen}
/>
) : stage === 8 ? (
<AcceptStage

View File

@ -269,7 +269,15 @@ const ImmediateCredit = () => {
{paymentCardData ? (
<div className="home-table-wrapper">
<h3 className="loan-card-table-title">Зааявка для получения кредитной карты</h3>
<h3 className="loan-card-table-title">
{locale === 'TKM'
? 'Kredit kart üçin ýüztutma'
: locale === 'РУС'
? 'Зааявка для получения кредитной карты'
: locale === 'ENG'
? 'Application for a credit card'
: 'Kredit kart üçin ýüztutma'}
</h3>
<table className="home-table">
<tbody>
<tr className="table-head">

View File

@ -21,6 +21,16 @@
gap: 4rem;
}
.imm-credit-checkbox-wrapper {
display: flex;
flex-direction: column;
gap: 1.6rem;
h3 {
font-size: 1.6rem;
}
}
.imm-credit-checkbox-block {
display: flex;
align-items: center;
@ -44,9 +54,23 @@
// font-weight: 600;
}
label {
span {
color: red;
}
}
.another-option {
color: $base-green;
color: $dark-green;
cursor: pointer;
width: 100%;
padding: 1.6rem;
display: flex;
justify-content: center;
align-items: center;
border-radius: 0.8rem;
// font-weight: 600;
background: rgba(1, 129, 95, 0.151);
}
}
@ -92,6 +116,10 @@
flex-direction: column;
gap: 1.6rem;
h3 {
font-size: 1.8rem;
}
p {
font-size: 1.6rem;
}
@ -136,3 +164,11 @@
font-size: 2.4rem;
margin-bottom: 1.6rem;
}
.loading {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}