Compare commits

...

4 Commits

77 changed files with 741 additions and 661 deletions

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "{{planName}} planı ilə daha çox şey edin",
"StartupTitle": "Pulsuz {{planName}} planından istifadə edirsiniz",
"StripeCustomerPortal": "Stripe müştəri portalına keçin",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/ay</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/ay</2>",
"UpgradeNow": "İndi yeniləyin",
"UpgradePlan": "Planı yeniləyin",
"UpgradePlanInfo": "Yeni istifadəçilərin əlavə edilməsi cari qiymət planınızın icazə verdiyi otaq üzvlərinin maksimum sayını keçəcək.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Правете повече с плана {{planName}}",
"StartupTitle": "Използвате безплатен план {{planName}}",
"StripeCustomerPortal": "отидете на Stripe портала за клиенти",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/месец</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/месец</2>",
"UpgradeNow": "Надстройте сега",
"UpgradePlan": "Надграждане на абонамента",
"UpgradePlanInfo": "Добавянето на нови потребители ще надвиши максималния брой членове на стаята, достъпен за текущия Ви абонаментен план.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Udělejte více díky tarifu {{planName}}",
"StartupTitle": "Používáte bezplatný tarif {{planName}}",
"StripeCustomerPortal": "přejít na zákaznický portál společnosti Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/měsíc</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/měsíc</2>",
"UpgradeNow": "Aktualizovat nyní",
"UpgradePlan": "Plán aktualizace",
"UpgradePlanInfo": "Přidáním nových uživatelů překročíte maximální počet členů místnosti povolený vaším aktuálním cenovým tarifem.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Mehr Möglichkeiten mit {{planName}} Plan",
"StartupTitle": "Sie verwenden einen kostenlosen {{planName}}-Plan",
"StripeCustomerPortal": "gehen Sie zum Stripe-Kundenportal",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/Monat</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/Monat</2>",
"UpgradeNow": "Jetzt upgraden",
"UpgradePlan": "Plan upgraden",
"UpgradePlanInfo": "Das Hinzufügen neuer Benutzer überschreitet die maximale Anzahl von Raummitgliedern, die Ihr aktueller Preisplan zulässt.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Κάντε περισσότερα με το πρόγραμμα {{planName}}",
"StartupTitle": "Χρησιμοποιείτε το δωρεάν πρόγραμμα {{planName}}",
"StripeCustomerPortal": "μεταβείτε στην πύλη πελατών της Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/μήνα</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/μήνα</2>",
"UpgradeNow": "Αναβάθμιση τώρα",
"UpgradePlan": "Αναβάθμιση προγράμματος",
"UpgradePlanInfo": "Η προσθήκη νέων χρηστών θα υπερβεί τον μέγιστο αριθμό μελών δωματίου που επιτρέπεται από το τρέχον τιμολογιακό σας πρόγραμμα.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Do more with {{planName}} plan",
"StartupTitle": "You are using free {{planName}} plan",
"StripeCustomerPortal": "go to the Stripe customer portal",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/month</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/month</2>",
"UpgradeNow": "Upgrade now",
"UpgradePlan": "Upgrade plan",
"UpgradePlanInfo": "By adding new users you will exceed the maximum number of room members allowed by your current pricing plan.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Puede hacer más con el plan {{planName}}",
"StartupTitle": "Está utilizando el plan gratuito {{planName}}",
"StripeCustomerPortal": "vaya al portal de cliente de Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/mes</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/mes</2>",
"UpgradeNow": "Actualizar ahora",
"UpgradePlan": "Actualizar plan",
"UpgradePlanInfo": "La adición de nuevos usuarios excederá el número máximo de miembros de la sala permitidos por su plan de precios actual.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Tee enemmän {{planName}} ohjelmalla",
"StartupTitle": "Käytät ilmaista {{planName}}-ohjelmaa",
"StripeCustomerPortal": "Mene Stripe-asiakasportaaliin",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/kuukausi</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/kuukausi</2>",
"UpgradeNow": "Päivitä nyt",
"UpgradePlan": "Päivitä ohjelma",
"UpgradePlanInfo": "Uusien käyttäjien lisääminen ylittää huoneen jäsenien maksimimäärän, jonka tämänhetkinen hinnoitteluohjelma sallii.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Faites plus avec le plan tarifaire {{planName}}",
"StartupTitle": "Vous utilisez le plan gratuit {{planName}}",
"StripeCustomerPortal": "aller sur le portail client Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/mois</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/mois</2>",
"UpgradeNow": "Mettre à jour maintenant",
"UpgradePlan": "Mettre à jour le plan tarifaire",
"UpgradePlanInfo": "Lajout de nouveaux utilisateurs dépassera le nombre maximum de membres de la salle autorisé par votre plan tarifaire actuel.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Կատարեք ավելին {{planName}} պլանի հետ",
"StartupTitle": "Դուք օգտագործում եք անվճար {{planName}} պլանը",
"StripeCustomerPortal": "գնալ Stripe հաճախորդների պորտալ",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/ամիս</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/ամիս</2>",
"UpgradeNow": "Թարմացնել հիմա",
"UpgradePlan": "Թարմացման պլան",
"UpgradePlanInfo": "Նոր օգտվողների ավելացումը կգերազանցի սենյակի անդամների առավելագույն թիվը, որը թույլատրվում է ձեր ընթացիկ գնային պլանով:",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Fai di più con il piano {{planName}}",
"StartupTitle": "Stai utilizzando il piano {{planName}} gratuito",
"StripeCustomerPortal": "vai al portale clienti Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/mese</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/mese</2>",
"UpgradeNow": "Aggiorna ora",
"UpgradePlan": "Aggiorna il piano",
"UpgradePlanInfo": "Aggiungendo nuovi utenti supererai il numero massimo di membri della stanza consentito dal tuo attuale piano tariffario.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "{{planName}}プランに切り替えて、DocSpaceをもっと便利に活用",
"StartupTitle": "無料の {{planName}}プランをご利用いただいています。",
"StripeCustomerPortal": "Stripeカスタマーポータルにアクセスする",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/月</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/月</2>",
"UpgradeNow": "今すぐアップグレードする",
"UpgradePlan": "プランのアップグレード",
"UpgradePlanInfo": "新しいユーザーを追加すると、現在の料金プランで許可されているルームメンバーの最大数を超えます。",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "{{planName}} 요금제로 더 많은 기능을 이용하세요",
"StartupTitle": "무료 {{planName}} 요금제를 사용 중입니다",
"StripeCustomerPortal": "Stripe 고객 포털로 이동",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/월</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/월</2>",
"UpgradeNow": "지금 업그레이드",
"UpgradePlan": "요금제 업그레이드",
"UpgradePlanInfo": "새 사용자를 추가하면 현재 요금제에서 허용하는 최대 방 회원 수를 초과하게 됩니다.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "ເຮັດໄດ້ຫຼາຍຂຶ້ນກັບແຜນ {{ planName }}",
"StartupTitle": "ທ່ານກຳລັງໃຊ້ແພັກເກດ {{ planName }} ຟຣີ",
"StripeCustomerPortal": "ໄປທີ່ແຜງບໍລິການລູກຄ້າ Stripe",
"TotalPricePerMonth": "<1>{{ currencySymbol }}</1><2>{{price}}</2><3>/ເດືອນ</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/ເດືອນ</2>",
"UpgradeNow": "ອັບເກຣດດຽວນີ້",
"UpgradePlan": "ແຜນການຍົກລະດັບ",
"UpgradePlanInfo": "ການເພີ່ມຜູ້ໃຊ້ໃໝ່ຈະເກີນຈຳນວນສູງສຸດຂອງສະມາຊິກຫ້ອງທີ່ອະນຸຍາດໂດຍແຜນລາຄາປັດຈຸບັນຂອງທ່ານ.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Paveiciet vairāk ar {{planName}} plānu",
"StartupTitle": "Jūs izmantojat bezmaksas {{planName}} plānu",
"StripeCustomerPortal": "doties uz Stripe klientu portālu",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/mēnesī</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/mēnesī</2>",
"UpgradeNow": "Atjaunot tagad",
"UpgradePlan": "Jaunināt plānu",
"UpgradePlanInfo": "Pievienojot jaunus lietotājus, jūs pārsniegsiet jūsu pašreizējo cenu noteikšanas plānā atļauto maksimālo telpas dalībnieku skaitu.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Doe meer met {{planName}} plan",
"StartupTitle": "U gebruikt het gratis {{planName}} plan",
"StripeCustomerPortal": "ga naar het Stripe klantenportaal",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/maand</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/maand</2>",
"UpgradeNow": "Upgrade nu",
"UpgradePlan": "Upgrade plan",
"UpgradePlanInfo": "Nieuwe gebruikers toevoegen betekent dat het maximum aantal leden van de kamer dat in uw huidige tariefplan is toegestaan, wordt overschreden.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Osiągnij więcej z planem {{planName}}",
"StartupTitle": "Korzystasz z darmowego planu {{planName}}",
"StripeCustomerPortal": "przejdź do portalu klienta Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/miesięcznie</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/miesięcznie</2>",
"UpgradeNow": "Uaktualnij teraz",
"UpgradePlan": "Uaktualnij plan",
"UpgradePlanInfo": "Dodanie nowych użytkowników spowoduje przekroczenie maksymalnej liczby członków pokoju dozwoloną przez Twój bieżący plan cenowy.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Faça mais com o plano {{planName}}",
"StartupTitle": "Você está usando o plano gratuito {{planName}}",
"StripeCustomerPortal": "vá para o portal do cliente Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/mês</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/mês</2>",
"UpgradeNow": "Atualize agora",
"UpgradePlan": "Plano de atualização",
"UpgradePlanInfo": "A adição de novos usuários excederá o número máximo de membros da sala permitido pelo seu plano de preços atual.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Faça mais com o plano {{planName}}",
"StartupTitle": "Está a utilizar o plano gratuito {{planName}}",
"StripeCustomerPortal": "vá para o portal do cliente Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/mês </3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/mês </2>",
"UpgradeNow": "Aumentar agora",
"UpgradePlan": "Aumentar o plano",
"UpgradePlanInfo": "Adicionar novos utilizadores vai exceder o número máximo de membros presentes na sala permitido pelo seu plano de preços.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Faceţi mai mult cu abonamentul {{planName}}",
"StartupTitle": "Utilizaţi abonamentul gratuit {{planName}}",
"StripeCustomerPortal": "salt la portalul de client Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/lună</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/lună</2>",
"UpgradeNow": "Upgrade acum",
"UpgradePlan": "Actualizare abonament",
"UpgradePlanInfo": "Dacă adăugaţi noi utilizatori, va depăşi numărul maxim permis de vizitatori într-o sală conform planului tarifar al abonamentului dvs.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Делайте больше с помощью {{planName}} тарифа",
"StartupTitle": "Вы используете бесплатный {{planName}} тариф",
"StripeCustomerPortal": "перейти на клиентский портал Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/месяц</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/месяц</2>",
"UpgradeNow": "Обновить прямо сейчас",
"UpgradePlan": "Обновить план",
"UpgradePlanInfo": "Добавление новых пользователей приведет к превышению максимального количества участников комнаты, разрешенного вашим текущим тарифным планом.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Urobte viac s plánom {{planName}}",
"StartupTitle": "Používate bezplatný plán {{planName}}",
"StripeCustomerPortal": "prejdite na zákaznícky portál Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/mesiac</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/mesiac</2>",
"UpgradeNow": "Aktualizovať teraz",
"UpgradePlan": "Aktualizovať plán",
"UpgradePlanInfo": "Pridaním nových používateľov prekročíte maximálny počet členov v miestnosti povolený vaším aktuálnym cenovým plánom.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Naredite več z paketom {{planName}}",
"StartupTitle": "Uporabljate brezplačen paket {{planName}}",
"StripeCustomerPortal": "pojdite na portal za stranke Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/mesec</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/mesec</2>",
"UpgradeNow": "Nadgradi zdaj",
"UpgradePlan": "Načrt nadgradnje",
"UpgradePlanInfo": "Dodajanje novih uporabnikov bo preseglo največje število članov sobe, ki jih omogoča vaš trenutni naročniški paket.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "{{planName}} planıyla daha fazlasını yapın",
"StartupTitle": "Ücretsiz {{planName}} planı kullanıyorsunuz",
"StripeCustomerPortal": "Stripe müşteri portalına gidin",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/ay</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/ay</2>",
"UpgradeNow": "Şimdi Yükselt",
"UpgradePlan": "Yükseltme planı",
"UpgradePlanInfo": "Yeni kullanıcılar eklemek, mevcut fiyatlandırma planınızın izin verdiği maksimum oda üyesi sayısını aşacaktır.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Робіть більше з планом {{planName}}",
"StartupTitle": "Ви використовуєте безкоштовний план {{planName}}",
"StripeCustomerPortal": "перейти на портал клієнтів Stripe",
"TotalPricePerMonth": "<2>{{price}}</2><1>{{currencySymbol}}</1><3> на місяць</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2> на місяць</2>",
"UpgradeNow": "Підвищити зараз",
"UpgradePlan": "Підвищити план",
"UpgradePlanInfo": "У разі додавання нових користувачів буде перевищено максимальну кількість учасників кімнати, дозволену вашим поточним тарифним планом.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "Làm nhiều hơn với gói dịch vụ {{planName}}",
"StartupTitle": "Bạn đang sử dụng gói dịch vụ {{planName}} miễn phí",
"StripeCustomerPortal": "truy cập cổng thông tin khách hàng trên Stripe",
"TotalPricePerMonth": "<1>{{currencySymbol}} </1><2>{{price}} </2><3>/tháng</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/tháng</2>",
"UpgradeNow": "Nâng cấp ngay",
"UpgradePlan": "Nâng cấp gói dịch vụ",
"UpgradePlanInfo": "Việc thêm người dùng mới sẽ vượt quá số lượng thành viên tối đa được phép trong phòng theo gói dịch vụ hiện tại của bạn.",

View File

@ -33,7 +33,7 @@
"StartupSuggestion": "升级为{{planName}}版获得更多权限",
"StartupTitle": "您正在使用免费{{planName}}版本",
"StripeCustomerPortal": "前往 Stripe 客户门户",
"TotalPricePerMonth": "<1>{{currencySymbol}}</1><2>{{price}}</2><3>/月</3>",
"TotalPricePerMonth": "<1>{{price}}</1><2>/月</2>",
"UpgradeNow": "立即升级",
"UpgradePlan": "升级版本",
"UpgradePlanInfo": "新用户添加后将超出您当前版本允许的最大房间数或成员数限制。",

View File

@ -1,47 +1,13 @@
import React from "react";
import styled from "styled-components";
import Text from "@docspace/components/text";
import { inject, observer } from "mobx-react";
import { smallTablet } from "@docspace/components/utils/device";
const StyledBody = styled.div`
border-radius: 12px;
border: ${(props) => props.theme.client.settings.payment.border};
max-width: 320px;
import { StyledBenefits } from "./StyledComponent";
padding: 24px;
box-sizing: border-box;
background: ${(props) =>
props.theme.client.settings.payment.backgroundBenefitsColor};
p {
margin-bottom: 24px;
}
.payment-benefits_text {
margin-bottom: 20px;
}
.payment-benefits {
margin-bottom: 14px;
align-items: flex-start;
display: grid;
grid-template-columns: 24px 1fr;
grid-gap: 10px;
p {
margin-bottom: 0;
}
svg {
path {
fill: ${(props) =>
props.theme.client.settings.payment.benefitsContainer
.iconsColor} !important;
}
}
}
`;
const BenefitsContainer = ({ t, features, theme }) => {
const BenefitsContainer = ({ t, features }) => {
return (
<StyledBody className="benefits-container">
<StyledBenefits className="benefits-container">
<Text
fontSize={"16px"}
fontWeight={"600"}
@ -59,17 +25,16 @@ const BenefitsContainer = ({ t, features, theme }) => {
</div>
);
})}
</StyledBody>
</StyledBenefits>
);
};
export default inject(({ auth }) => {
const { paymentQuotasStore, settingsStore } = auth;
const { theme } = settingsStore;
const { paymentQuotasStore } = auth;
const { portalPaymentQuotasFeatures } = paymentQuotasStore;
return {
theme,
features: portalPaymentQuotasFeatures,
};
})(observer(BenefitsContainer));

View File

@ -1,17 +1,9 @@
import React from "react";
import styled from "styled-components";
import { useTranslation } from "react-i18next";
import { inject, observer } from "mobx-react";
import { ColorTheme, ThemeType } from "@docspace/components/ColorTheme";
import Text from "@docspace/components/text";
const StyledContactContainer = styled.div`
display: flex;
width: 100%;
a {
margin-left: 4px;
}
`;
import { StyledContactContainer } from "./StyledComponent";
const ContactContainer = ({ t, salesEmail }) => {
return (

View File

@ -1,43 +1,12 @@
import React from "react";
import styled from "styled-components";
import Text from "@docspace/components/text";
import { useTranslation } from "react-i18next";
import { inject, observer } from "mobx-react";
import { PortalFeaturesLimitations } from "@docspace/common/constants";
import { getConvertedSize } from "@docspace/common/utils";
import { mobile } from "@docspace/components/utils/device";
const StyledCurrentTariffContainer = styled.div`
display: flex;
min-height: 40px;
background: ${(props) => props.theme.client.settings.payment.backgroundColor};
margin-bottom: 24px;
flex-wrap: wrap;
margin-top: 14px;
padding: 12px 16px;
box-sizing: border-box;
padding-bottom: 0;
border-radius: 6px;
@media ${mobile} {
flex-direction: column;
margin-bottom: 27px;
}
div {
padding-bottom: 8px;
margin-right: 24px;
}
p {
margin-bottom: 0;
color: ${(props) => props.theme.client.settings.payment.tariffText};
.current-tariff_count {
color: ${(props) => props.theme.client.settings.payment.tariffText};
margin-left: 4px;
}
}
`;
import { StyledCurrentTariffContainer } from "./StyledComponent";
const CurrentTariffContainer = ({ style, quotaCharacteristics }) => {
const { t } = useTranslation(["Payments", "Common"]);

View File

@ -1,6 +1,6 @@
import HelpReactSvgUrl from "PUBLIC_DIR/images/help.react.svg?url";
import React from "react";
import styled from "styled-components";
import Text from "@docspace/components/text";
import { useTranslation, Trans } from "react-i18next";
import { inject, observer } from "mobx-react";
@ -8,48 +8,7 @@ import { HelpButton, Link } from "@docspace/components";
import Avatar from "@docspace/components/avatar";
import { ColorTheme, ThemeType } from "@docspace/components/ColorTheme";
import DefaultUserPhoto from "PUBLIC_DIR/images/default_user_photo_size_82-82.png";
const StyledContainer = styled.div`
display: flex;
background: ${(props) => props.theme.client.settings.payment.backgroundColor};
min-height: 72px;
padding: 16px;
box-sizing: border-box;
margin-top: 16px;
border-radius: 6px;
.payer-info {
margin-left: 3px;
}
.payer-info_avatar {
margin-right: 16px;
}
.payer-info {
margin-right: 3px;
}
.payer-info_wrapper {
height: max-content;
display: grid;
grid-template-columns: 1fr;
grid-template-rows: max-content max-content;
grid-gap: 4px;
.payer-info_description {
p {
margin-right: 3px;
}
div {
display: inline-block;
margin: auto 0;
height: 14px;
}
}
.payer-info_account-link {
cursor: pointer;
text-decoration: underline;
}
}
`;
import { StyledPayerInformation } from "./StyledComponent";
const PayerInformationContainer = ({
style,
@ -177,7 +136,7 @@ const PayerInformationContainer = ({
: {};
return (
<StyledContainer style={style} theme={theme}>
<StyledPayerInformation style={style}>
<div className="payer-info_avatar">
<Avatar
size={"base"}
@ -200,7 +159,7 @@ const PayerInformationContainer = ({
{!payerInfo ? unknownPayerInformation : payerInformation}
</div>
</StyledContainer>
</StyledPayerInformation>
);
};

View File

@ -5,7 +5,7 @@ import { Trans } from "react-i18next";
import { inject, observer } from "mobx-react";
import Text from "@docspace/components/text";
import { size, desktop } from "@docspace/components/utils/device";
import { size } from "@docspace/components/utils/device";
import { Consumer } from "@docspace/components/utils/context";
import { HelpButton } from "@docspace/components";
@ -14,71 +14,7 @@ import PriceCalculation from "./PriceCalculation";
import BenefitsContainer from "./BenefitsContainer";
import ContactContainer from "./ContactContainer";
import PayerInformationContainer from "./PayerInformationContainer";
const StyledBody = styled.div`
max-width: 660px;
.payment-info_suggestion,
.payment-info_grace-period {
margin-bottom: 12px;
}
.payment-info {
margin-top: 18px;
display: grid;
grid-template-columns: repeat(2, minmax(100px, 320px));
grid-gap: 20px;
margin-bottom: 20px;
@media (max-width: ${size.smallTablet + 40}px) {
grid-template-columns: 1fr;
grid-template-rows: ${(props) => "1fr max-content"};
.price-calculation-container,
.benefits-container {
max-width: 600px;
}
.select-users-count-container {
max-width: 520px;
}
}
${(props) =>
props.isChangeView &&
css`
grid-template-columns: 1fr;
grid-template-rows: ${(props) => "1fr max-content"};
.price-calculation-container,
.benefits-container {
-webkit-transition: all 0.8s ease;
transition: all 0.4s ease;
max-width: 600px;
}
.select-users-count-container {
-webkit-transition: all 0.8s ease;
transition: all 0.4s ease;
max-width: 520px;
}
@media ${desktop} {
grid-template-columns: repeat(2, minmax(100px, 320px));
}
`}
}
.payment-info_wrapper {
display: flex;
margin-top: 11px;
div {
margin: auto 0;
}
.payment-info_managers-price {
margin-right: 6px;
}
}
`;
import { StyledPaymentContainer } from "./StyledComponent";
const PaymentContainer = (props) => {
const {
@ -273,8 +209,7 @@ const PaymentContainer = (props) => {
return (
<Consumer>
{(context) => (
<StyledBody
theme={theme}
<StyledPaymentContainer
isChangeView={
context.sectionWidth < size.smallTablet && expandArticle
}
@ -326,7 +261,7 @@ const PaymentContainer = (props) => {
<BenefitsContainer t={t} />
</div>
<ContactContainer t={t} />
</StyledBody>
</StyledPaymentContainer>
)}
</Consumer>
);

View File

@ -1,65 +1,25 @@
import React, { useEffect, useRef } from "react";
import styled, { css } from "styled-components";
import Text from "@docspace/components/text";
import { inject, observer } from "mobx-react";
import SelectUsersCountContainer from "./sub-components/SelectUsersCountContainer";
import TotalTariffContainer from "./sub-components/TotalTariffContainer";
import ButtonContainer from "./sub-components/ButtonContainer";
import { Trans } from "react-i18next";
import CurrentUsersCountContainer from "./sub-components/CurrentUsersCount";
const StyledBody = styled.div`
border-radius: 12px;
border: ${(props) =>
props.theme.client.settings.payment.priceContainer.border};
background: ${(props) =>
props.theme.client.settings.payment.priceContainer.background};
max-width: 320px;
padding: 23px;
box-sizing: border-box;
.payment_main-title {
margin-bottom: 24px;
${(props) =>
props.isDisabled &&
css`
color: ${props.theme.client.settings.payment.priceContainer
.disableColor};
`}
}
.payment_price_user {
display: flex;
align-items: center;
justify-content: center;
background: ${(props) =>
props.theme.client.settings.payment.priceContainer.backgroundText};
margin-top: 24px;
min-height: 38px;
border-radius: 6px;
p {
margin-bottom: 5px;
margin-top: 5px;
padding-left: 16px;
padding-right: 16px;
}
}
`;
import PricePerUser from "./sub-components/PricePerUser";
import { StyledPriceCalculation } from "./StyledComponent";
let timeout = null,
controller;
const PriceCalculation = ({
t,
theme,
setIsLoading,
maxAvailableManagersCount,
canUpdateTariff,
isGracePeriod,
isNotPaidPeriod,
priceManagerPerMonth,
currencySymbol,
isAlreadyPaid,
isFreeAfterPaidPeriod,
managersCount,
@ -101,46 +61,11 @@ const PriceCalculation = ({
const isDisabled = !canUpdateTariff;
const priceInfoPerManager = (
<div className="payment_price_user">
<Text
noSelect
fontSize={"13px"}
color={
isDisabled
? theme.client.settings.payment.priceContainer.disablePriceColor
: theme.client.settings.payment.priceColor
}
fontWeight={600}
>
<Trans t={t} i18nKey="PerUserMonth" ns="Common">
""
<Text
fontSize="16px"
isBold
as="span"
fontWeight={600}
color={
isDisabled
? theme.client.settings.payment.priceContainer.disablePriceColor
: theme.client.settings.payment.priceColor
}
>
{{ currencySymbol }}
</Text>
<Text fontSize="16px" isBold as="span" fontWeight={600}>
{{ price: priceManagerPerMonth }}
</Text>
per manager/month
</Trans>
</Text>
</div>
);
const isNeedPlusSign = managersCount > maxAvailableManagersCount;
return (
<StyledBody className="price-calculation-container" isDisabled={isDisabled}>
<StyledPriceCalculation
className="price-calculation-container"
isDisabled={isDisabled}
>
<Text
fontSize="16px"
fontWeight={600}
@ -152,19 +77,12 @@ const PriceCalculation = ({
: t("PriceCalculation")}
</Text>
{isGracePeriod || isNotPaidPeriod || isFreeAfterPaidPeriod ? (
<CurrentUsersCountContainer
isNeedPlusSign={isNeedPlusSign}
t={t}
isDisabled={isDisabled}
/>
<CurrentUsersCountContainer t={t} isDisabled={isDisabled} />
) : (
<SelectUsersCountContainer
isNeedPlusSign={isNeedPlusSign}
isDisabled={isDisabled}
/>
<SelectUsersCountContainer isDisabled={isDisabled} />
)}
{priceInfoPerManager}
<PricePerUser t={t} isDisabled={isDisabled} />
<TotalTariffContainer t={t} isDisabled={isDisabled} />
<ButtonContainer
@ -172,7 +90,7 @@ const PriceCalculation = ({
t={t}
isFreeAfterPaidPeriod={isFreeAfterPaidPeriod}
/>
</StyledBody>
</StyledPriceCalculation>
);
};
@ -188,14 +106,8 @@ export default inject(({ auth, payments }) => {
getPaymentLink,
canUpdateTariff,
} = payments;
const { theme } = auth.settingsStore;
const {
currentTariffStatusStore,
const { currentTariffStatusStore } = auth;
paymentQuotasStore,
} = auth;
const { planCost } = paymentQuotasStore;
const { isNotPaidPeriod, isGracePeriod } = currentTariffStatusStore;
return {
@ -205,15 +117,13 @@ export default inject(({ auth, payments }) => {
setManagersCount,
tariffsInfo,
theme,
setIsLoading,
maxAvailableManagersCount,
isGracePeriod,
isNotPaidPeriod,
priceManagerPerMonth: planCost.value,
currencySymbol: planCost.currencySymbol,
getPaymentLink,
};
})(observer(PriceCalculation));

View File

@ -0,0 +1,455 @@
import styled, { css } from "styled-components";
import {
mobile,
smallTablet,
size,
desktop,
} from "@docspace/components/utils/device";
const StyledPriceCalculation = styled.div`
border-radius: 12px;
border: ${(props) =>
props.theme.client.settings.payment.priceContainer.border};
background: ${(props) =>
props.theme.client.settings.payment.priceContainer.background};
max-width: 320px;
padding: 23px;
box-sizing: border-box;
.payment_main-title {
margin-bottom: 24px;
${(props) =>
props.isDisabled &&
css`
color: ${props.theme.client.settings.payment.priceContainer
.disableColor};
`}
}
.payment_price_user {
display: flex;
align-items: baseline;
justify-content: center;
background: ${(props) =>
props.theme.client.settings.payment.priceContainer.backgroundText};
margin-top: 24px;
min-height: 38px;
border-radius: 6px;
margin-bottom: 5px;
margin-top: 5px;
/* padding-left: 16px;
padding-right: 16px; */
p {
text-align: center;
margin: auto;
}
.payment_user-price {
margin-right: 8px;
}
.payment_discount-price {
text-decoration: line-through;
margin-right: 5px;
color: ${(props) =>
props.theme.client.settings.payment.contactContainer.textColor};
}
.payment_per-user {
color: ${(props) =>
props.isDisabled
? props.theme.client.settings.payment.priceContainer.disablePriceColor
: props.theme.client.settings.payment.priceColor};
}
}
`;
const StyledPayerInformation = styled.div`
display: flex;
background: ${(props) => props.theme.client.settings.payment.backgroundColor};
min-height: 72px;
padding: 16px;
box-sizing: border-box;
margin-top: 16px;
border-radius: 6px;
.payer-info {
margin-left: 3px;
}
.payer-info_avatar {
margin-right: 16px;
}
.payer-info {
margin-right: 3px;
}
.payer-info_wrapper {
height: max-content;
display: grid;
grid-template-columns: 1fr;
grid-template-rows: max-content max-content;
grid-gap: 4px;
.payer-info_description {
p {
margin-right: 3px;
}
div {
display: inline-block;
margin: auto 0;
height: 14px;
}
}
.payer-info_account-link {
cursor: pointer;
text-decoration: underline;
}
}
`;
const StyledCurrentTariffContainer = styled.div`
display: flex;
min-height: 40px;
background: ${(props) => props.theme.client.settings.payment.backgroundColor};
margin-bottom: 24px;
flex-wrap: wrap;
margin-top: 14px;
padding: 12px 16px;
box-sizing: border-box;
padding-bottom: 0;
border-radius: 6px;
@media ${mobile} {
flex-direction: column;
margin-bottom: 27px;
}
div {
padding-bottom: 8px;
margin-right: 24px;
}
p {
margin-bottom: 0;
color: ${(props) => props.theme.client.settings.payment.tariffText};
.current-tariff_count {
color: ${(props) => props.theme.client.settings.payment.tariffText};
margin-left: 4px;
}
}
`;
const StyledContactContainer = styled.div`
display: flex;
width: 100%;
a {
margin-left: 4px;
}
`;
const StyledBenefits = styled.div`
border-radius: 12px;
border: ${(props) => props.theme.client.settings.payment.border};
max-width: 320px;
padding: 24px;
box-sizing: border-box;
background: ${(props) =>
props.theme.client.settings.payment.backgroundBenefitsColor};
p {
margin-bottom: 24px;
}
.payment-benefits_text {
margin-bottom: 20px;
}
.payment-benefits {
margin-bottom: 14px;
align-items: flex-start;
display: grid;
grid-template-columns: 24px 1fr;
grid-gap: 10px;
p {
margin-bottom: 0;
}
svg {
path {
fill: ${(props) =>
props.theme.client.settings.payment.benefitsContainer
.iconsColor} !important;
}
}
}
`;
const StyledTotalTariff = styled.div`
max-width: 272px;
margin: 0 auto;
@media ${smallTablet} {
max-width: 520px;
}
.payment_price_total-price {
display: flex;
justify-content: center;
flex-wrap: wrap;
min-height: 65px;
margin-top: 16px;
margin-bottom: 16px;
.payment_price_price-text {
line-height: 1;
margin: auto 0;
padding-top: 6px;
}
.payment_price_description,
.payment_price_price-text,
.total-tariff_description {
margin-bottom: 0px;
}
.payment_price_description {
margin-top: 16px;
}
.total-tariff_description {
margin: auto;
}
.payment_price_month-text {
margin: auto 0;
margin-bottom: 0px;
margin-left: 8px;
padding-bottom: 2px;
}
.payment_price_month-text,
.payment_price_price-text {
${(props) =>
props.isDisabled &&
css`
color: ${props.theme.client.settings.payment.priceContainer
.disableColor};
`};
}
.payment_discount-price {
text-decoration: line-through;
margin: auto 8px 0 0;
padding-bottom: 4px;
color: ${(props) =>
props.theme.client.settings.payment.contactContainer.textColor};
}
}
button {
width: 100%;
}
`;
const StyledSelectUsers = styled.div`
max-width: 272px;
margin: 0 auto;
.payment-slider {
margin-top: 20px;
}
.slider-track {
display: flex;
position: relative;
margin-top: -8px;
margin-left: -3px;
height: 16px;
.slider-track-value_min,
.slider-track-value_max {
color: ${(props) =>
props.theme.client.settings.payment.priceContainer.trackNumberColor};
}
.slider-track-value_max {
position: absolute;
right: 0;
}
.slider-track-value_min {
position: absolute;
left: 0;
}
}
.payment-operations_input {
width: 101px;
height: 60px;
font-size: 44px;
text-align: center;
margin-left: 20px;
margin-right: 20px;
padding: 0;
font-weight: 700;
${(props) =>
props.isDisabled &&
css`
color: ${props.theme.client.settings.payment.priceContainer
.disableColor};
`};
}
.payment-users {
display: flex;
align-items: center;
margin: 0 auto;
width: max-content;
.payment-score {
path {
${(props) =>
props.isDisabled &&
css`
fill: ${props.theme.text.disableColor};
`}
}
}
.payment-score,
.circle {
cursor: ${(props) => (props.isDisabled ? "default" : "pointer")};
}
.circle {
position: relative;
background: ${(props) =>
props.theme.client.settings.payment.rectangleColor};
border: 1px solid
${(props) => props.theme.client.settings.payment.rectangleColor};
border-radius: 50%;
width: 38px;
height: 38px;
svg {
position: absolute;
path {
fill: ${(props) =>
props.isDisabled
? props.theme.client.settings.payment.priceContainer.disableColor
: props.theme.text.color};
}
}
}
.minus-icon {
svg {
top: 44%;
left: 28%;
}
}
.plus-icon {
svg {
top: 30%;
left: 27%;
}
}
}
.payment-users_count {
margin-left: 20px;
margin-right: 20px;
text-align: center;
width: 102px;
}
.payment-users_text {
margin-bottom: 4px;
text-align: center;
${(props) =>
props.isDisabled &&
css`
color: ${props.theme.client.settings.payment.priceContainer
.disableColor};
`}
}
`;
const StyledCurrentUsersContainer = styled.div`
height: fit-content;
.current-admins-number {
${(props) =>
props.isDisabled &&
css`
color: ${props.theme.client.settings.payment.priceContainer
.disableColor};
`}
}
`;
const StyledPaymentContainer = styled.div`
max-width: 660px;
.payment-info_suggestion,
.payment-info_grace-period {
margin-bottom: 12px;
}
.payment-info {
margin-top: 18px;
display: grid;
grid-template-columns: repeat(2, minmax(100px, 320px));
grid-gap: 20px;
margin-bottom: 20px;
@media (max-width: ${size.smallTablet + 40}px) {
grid-template-columns: 1fr;
grid-template-rows: ${(props) => "1fr max-content"};
.price-calculation-container,
.benefits-container {
max-width: 600px;
}
.select-users-count-container {
max-width: 520px;
}
}
${(props) =>
props.isChangeView &&
css`
grid-template-columns: 1fr;
grid-template-rows: ${(props) => "1fr max-content"};
.price-calculation-container,
.benefits-container {
-webkit-transition: all 0.8s ease;
transition: all 0.4s ease;
max-width: 600px;
}
.select-users-count-container {
-webkit-transition: all 0.8s ease;
transition: all 0.4s ease;
max-width: 520px;
}
@media ${desktop} {
grid-template-columns: repeat(2, minmax(100px, 320px));
}
`}
}
.payment-info_wrapper {
display: flex;
margin-top: 11px;
div {
margin: auto 0;
}
.payment-info_managers-price {
margin-right: 6px;
}
}
`;
export {
StyledPriceCalculation,
StyledPayerInformation,
StyledCurrentTariffContainer,
StyledContactContainer,
StyledBenefits,
StyledTotalTariff,
StyledSelectUsers,
StyledCurrentUsersContainer,
StyledPaymentContainer,
};

View File

@ -1,32 +1,17 @@
import Text from "@docspace/components/text";
import React from "react";
import styled, { css } from "styled-components";
import { inject, observer } from "mobx-react";
import SelectTotalSizeContainer from "./SelectTotalSizeContainer";
const StyledCurrentUsersContainer = styled.div`
height: fit-content;
.current-admins-number {
${(props) =>
props.isDisabled &&
css`
color: ${props.theme.client.settings.payment.priceContainer
.disableColor};
`}
}
`;
import { StyledCurrentUsersContainer } from "../StyledComponent";
const CurrentUsersCountContainer = (props) => {
const {
isNeedPlusSign,
maxCountManagersByQuota,
t,
isDisabled,
theme,
addedManagersCountTitle,
} = props;
return (
<StyledCurrentUsersContainer isDisabled={isDisabled} theme={theme}>
<StyledCurrentUsersContainer isDisabled={isDisabled}>
<Text
fontSize="16px"
fontWeight={600}
@ -44,18 +29,17 @@ const CurrentUsersCountContainer = (props) => {
>
{maxCountManagersByQuota}
</Text>
<SelectTotalSizeContainer isNeedPlusSign={isNeedPlusSign} />
<SelectTotalSizeContainer />
</StyledCurrentUsersContainer>
);
};
export default inject(({ auth }) => {
const { settingsStore, currentQuotaStore, paymentQuotasStore } = auth;
const { currentQuotaStore, paymentQuotasStore } = auth;
const { maxCountManagersByQuota } = currentQuotaStore;
const { addedManagersCountTitle } = paymentQuotasStore;
const { theme } = settingsStore;
return {
theme,
maxCountManagersByQuota,
addedManagersCountTitle,
};

View File

@ -0,0 +1,63 @@
import React from "react";
import { inject, observer } from "mobx-react";
import { Trans } from "react-i18next";
import Text from "@docspace/components/text";
import { ColorTheme, ThemeType } from "@docspace/components/ColorTheme";
const textProp = {
fontSize: "16px",
isBold: true,
as: "span",
fontWeight: 600,
};
const PricePerUser = ({ t, priceManagerPerMonth, currencySymbol }) => {
const price = `${currencySymbol}${priceManagerPerMonth}`;
const oldPrice = `${currencySymbol}${priceManagerPerMonth}`;
const isNewPrice = true;
const newPriceComponent = isNewPrice ? (
<ColorTheme {...textProp} themeId={ThemeType.Text}>
{{ price }}
</ColorTheme>
) : (
<Text {...textProp} className="payment_per-user">
{{ price }}
</Text>
);
return (
<div className="payment_price_user">
<Text noSelect fontSize={"13px"} className="payment_per-user">
<Trans t={t} i18nKey="PerUserMonth" ns="Common">
""
{isNewPrice && (
<Text
fontSize="12px"
as="span"
textAlign={"center"}
fontWeight={600}
className="payment_discount-price"
noSelect
>
{{ oldPrice }}
</Text>
)}
{newPriceComponent}
</Trans>
</Text>
</div>
);
};
export default inject(({ auth }) => {
const { paymentQuotasStore } = auth;
const { planCost } = paymentQuotasStore;
return {
priceManagerPerMonth: planCost.value,
currencySymbol: planCost.currencySymbol,
};
})(observer(PricePerUser));

View File

@ -4,6 +4,7 @@ import { useTranslation } from "react-i18next";
import Text from "@docspace/components/text";
import { inject, observer } from "mobx-react";
import { getConvertedSize } from "@docspace/common/utils";
const StyledBody = styled.div`
.select-total-size_title {
margin-bottom: 8px;
@ -21,14 +22,14 @@ const SelectTotalSizeContainer = ({
allowedStorageSizeByQuota,
usedTotalStorageSizeTitle,
theme,
isNeedPlusSign,
isNeedRequest,
}) => {
const { t } = useTranslation(["Payments", "Common"]);
const convertedSize = getConvertedSize(t, allowedStorageSizeByQuota);
return (
<StyledBody theme={theme}>
<StyledBody>
<Text
textAlign={"center"}
noSelect
@ -37,7 +38,7 @@ const SelectTotalSizeContainer = ({
className="select-total-size_title"
color={theme.client.settings.payment.storageSizeTitle}
>
{usedTotalStorageSizeTitle}: {convertedSize} {isNeedPlusSign ? "+" : ""}
{usedTotalStorageSizeTitle}: {convertedSize} {isNeedRequest ? "+" : ""}
</Text>
</StyledBody>
);
@ -47,10 +48,11 @@ export default inject(({ auth, payments }) => {
const { paymentQuotasStore } = auth;
const { usedTotalStorageSizeTitle } = paymentQuotasStore;
const { theme } = auth.settingsStore;
const { allowedStorageSizeByQuota } = payments;
const { allowedStorageSizeByQuota, isNeedRequest } = payments;
return {
theme,
isNeedRequest,
usedTotalStorageSizeTitle,
allowedStorageSizeByQuota,
};

View File

@ -8,131 +8,10 @@ import MinusIcon from "PUBLIC_DIR/images/minus.react.svg";
import TextInput from "@docspace/components/text-input";
import { inject, observer } from "mobx-react";
import SelectTotalSizeContainer from "./SelectTotalSizeContainer";
const StyledBody = styled.div`
max-width: 272px;
margin: 0 auto;
.payment-slider {
margin-top: 20px;
}
.slider-track {
display: flex;
position: relative;
margin-top: -8px;
margin-left: -3px;
height: 16px;
.slider-track-value_min,
.slider-track-value_max {
color: ${(props) =>
props.theme.client.settings.payment.priceContainer.trackNumberColor};
}
.slider-track-value_max {
position: absolute;
right: 0;
}
.slider-track-value_min {
position: absolute;
left: 0;
}
}
.payment-operations_input {
width: 101px;
height: 60px;
font-size: 44px;
text-align: center;
margin-left: 20px;
margin-right: 20px;
padding: 0;
font-weight: 700;
${(props) =>
props.isDisabled &&
css`
color: ${props.theme.client.settings.payment.priceContainer
.disableColor};
`};
}
.payment-users {
display: flex;
align-items: center;
margin: 0 auto;
width: max-content;
.payment-score {
path {
${(props) =>
props.isDisabled &&
css`
fill: ${props.theme.text.disableColor};
`}
}
}
.payment-score,
.circle {
cursor: ${(props) => (props.isDisabled ? "default" : "pointer")};
}
.circle {
position: relative;
background: ${(props) =>
props.theme.client.settings.payment.rectangleColor};
border: 1px solid
${(props) => props.theme.client.settings.payment.rectangleColor};
border-radius: 50%;
width: 38px;
height: 38px;
svg {
position: absolute;
path {
fill: ${(props) =>
props.isDisabled
? props.theme.client.settings.payment.priceContainer.disableColor
: props.theme.text.color};
}
}
}
.minus-icon {
svg {
top: 44%;
left: 28%;
}
}
.plus-icon {
svg {
top: 30%;
left: 27%;
}
}
}
.payment-users_count {
margin-left: 20px;
margin-right: 20px;
text-align: center;
width: 102px;
}
.payment-users_text {
margin-bottom: 4px;
text-align: center;
${(props) =>
props.isDisabled &&
css`
color: ${props.theme.client.settings.payment.priceContainer
.disableColor};
`}
}
`;
import { StyledSelectUsers } from "../StyledComponent";
const SelectUsersCountContainer = ({
managersCount,
theme,
isDisabled,
isLoading,
minAvailableManagersValue,
@ -143,7 +22,7 @@ const SelectUsersCountContainer = ({
isLessCountThanAcceptable,
step,
addedManagersCountTitle,
isNeedPlusSign,
isNeedRequest,
}) => {
const onSliderChange = (e) => {
const count = parseFloat(e.target.value);
@ -203,7 +82,7 @@ const SelectUsersCountContainer = ({
setTotalPrice(numberValue);
};
const value = isNeedPlusSign
const value = isNeedRequest
? maxAvailableManagersCount + "+"
: managersCount + "";
@ -217,15 +96,14 @@ const SelectUsersCountContainer = ({
isDisabled || isUpdatingTariff ? {} : { onChange: onChangeNumber };
return (
<StyledBody
<StyledSelectUsers
className="select-users-count-container"
theme={theme}
isDisabled={isDisabled || isUpdatingTariff}
>
<Text noSelect fontWeight={600} className="payment-users_text">
{addedManagersCountTitle}
</Text>
<SelectTotalSizeContainer isNeedPlusSign={isNeedPlusSign} />
<SelectTotalSizeContainer />
<div className="payment-users">
<div
className="circle minus-icon"
@ -277,13 +155,13 @@ const SelectUsersCountContainer = ({
{maxAvailableManagersCount + "+"}
</Text>
</div>
</StyledBody>
</StyledSelectUsers>
);
};
export default inject(({ auth, payments }) => {
const { paymentQuotasStore } = auth;
const { theme } = auth.settingsStore;
const {
isLoading,
minAvailableManagersValue,
@ -294,14 +172,15 @@ export default inject(({ auth, payments }) => {
isLessCountThanAcceptable,
stepByQuotaForManager,
isAlreadyPaid,
isNeedRequest,
} = payments;
const { addedManagersCountTitle } = paymentQuotasStore;
const step = stepByQuotaForManager;
return {
isNeedRequest,
isAlreadyPaid,
theme,
isLoading,
minAvailableManagersValue,
managersCount,

View File

@ -0,0 +1,67 @@
import React from "react";
import { Trans } from "react-i18next";
import { inject, observer } from "mobx-react";
import Text from "@docspace/components/text";
import { ColorTheme, ThemeType } from "@docspace/components/ColorTheme";
const textProp = {
fontSize: "48px",
fontWeight: "600",
target: "_blank",
as: "span",
className: "payment_price_price-text",
};
const TotalPrice = ({ t, totalPrice, currencySymbol }) => {
const price = `${currencySymbol}${totalPrice}`;
const isNewPrice = true;
return (
<>
{isNewPrice && (
<Text
fontSize="16px"
as="span"
textAlign={"center"}
fontWeight={600}
className="payment_discount-price"
noSelect
>
{price}
</Text>
)}
<Trans t={t} i18nKey="TotalPricePerMonth" ns="Payments">
""
{isNewPrice ? (
<ColorTheme {...textProp} themeId={ThemeType.Text}>
{{ price }}
</ColorTheme>
) : (
<Text {...textProp}> {{ price }}</Text>
)}
<Text
as="span"
fontWeight={600}
fontSize="16px"
className="payment_price_month-text"
noSelect
>
/month
</Text>
</Trans>
</>
);
};
export default inject(({ auth, payments }) => {
const { paymentQuotasStore } = auth;
const { totalPrice } = payments;
const { planCost } = paymentQuotasStore;
return {
totalPrice,
currencySymbol: planCost.currencySymbol,
};
})(observer(TotalPrice));

View File

@ -1,70 +1,20 @@
import React from "react";
import styled, { css } from "styled-components";
import { Trans } from "react-i18next";
import Text from "@docspace/components/text";
import { inject, observer } from "mobx-react";
import { smallTablet } from "@docspace/components/utils/device";
const StyledBody = styled.div`
max-width: 272px;
margin: 0 auto;
@media ${smallTablet} {
max-width: 520px;
}
.payment_price_total-price {
display: flex;
justify-content: center;
min-height: 65px;
margin-top: 16px;
margin-bottom: 16px;
.payment_price_description,
.payment_price_price-text,
.total-tariff_description {
margin-bottom: 0px;
}
.payment_price_description {
margin-top: 16px;
}
.total-tariff_description {
margin: auto;
}
.payment_price_month-text {
margin: auto 0;
margin-bottom: 9px;
margin-left: 8px;
}
.payment_price_month-text,
.payment_price_price-text {
${(props) =>
props.isDisabled &&
css`
color: ${props.theme.client.settings.payment.priceContainer
.disableColor};
`};
}
}
button {
width: 100%;
}
`;
import TotalPrice from "./TotalPrice";
import { StyledTotalTariff } from "../StyledComponent";
const TotalTariffContainer = ({
t,
maxAvailableManagersCount,
isDisabled,
theme,
totalPrice,
isNeedRequest,
currencySymbol,
}) => {
return (
<StyledBody isDisabled={isDisabled} theme={theme}>
<StyledTotalTariff isDisabled={isDisabled}>
<div className="payment_price_total-price">
{isNeedRequest ? (
<Text
@ -79,62 +29,18 @@ const TotalTariffContainer = ({
</Trans>
</Text>
) : (
<>
<Trans t={t} i18nKey="TotalPricePerMonth" ns="Payments">
""
<Text
fontSize="48px"
as="span"
textAlign={"center"}
fontWeight={600}
className="payment_price_price-text"
noSelect
>
{{ currencySymbol }}
</Text>
<Text
fontSize="48px"
as="span"
fontWeight={600}
className="payment_price_price-text"
noSelect
>
{{ price: totalPrice }}
</Text>
<Text
as="span"
fontWeight={600}
fontSize="16px"
className="payment_price_month-text"
noSelect
>
/month
</Text>
</Trans>
</>
<TotalPrice t={t} />
)}
</div>
</StyledBody>
</StyledTotalTariff>
);
};
export default inject(({ auth, payments }) => {
const { paymentQuotasStore } = auth;
const { theme } = auth.settingsStore;
const {
isLoading,
totalPrice,
isNeedRequest,
maxAvailableManagersCount,
} = payments;
export default inject(({ payments }) => {
const { isNeedRequest, maxAvailableManagersCount } = payments;
const { planCost } = paymentQuotasStore;
return {
theme,
totalPrice,
isLoading,
isNeedRequest,
maxAvailableManagersCount,
currencySymbol: planCost.currencySymbol,
};
})(observer(TotalTariffContainer));

View File

@ -5,7 +5,6 @@ import styled from "styled-components";
import toastr from "@docspace/components/toast/toastr";
import DowngradePlanButtonContainer from "./DowngradePlanButtonContainer";
import api from "@docspace/common/api";
import { Trans } from "react-i18next";
import { updatePayment } from "@docspace/common/api/portal";
const StyledBody = styled.div`
@ -199,7 +198,6 @@ export default inject(({ auth, payments }) => {
const {
setIsLoading,
paymentLink,
isNeedRequest,
isLoading,
managersCount,
isLessCountThanAcceptable,
@ -213,7 +211,6 @@ export default inject(({ auth, payments }) => {
isAlreadyPaid,
setIsLoading,
paymentLink,
isNeedRequest,
isLoading,
managersCount,
maxCountManagersByQuota,

View File

@ -50,8 +50,8 @@ class PaymentStore {
}
setIsInitPaymentPage = (value) => {
this.isInitPaymentPage = value
}
this.isInitPaymentPage = value;
};
setIsUpdatingBasicSettings = (isUpdatingBasicSettings) => {
this.isUpdatingBasicSettings = isUpdatingBasicSettings;
@ -89,11 +89,8 @@ class PaymentStore {
return;
}
const {
paymentQuotasStore,
currentTariffStatusStore,
currentQuotaStore,
} = authStore;
const { paymentQuotasStore, currentTariffStatusStore, currentQuotaStore } =
authStore;
const { setPayerInfo } = currentTariffStatusStore;
const { addedManagersCount } = currentQuotaStore;
const { setPortalPaymentQuotas } = paymentQuotasStore;
@ -295,11 +292,8 @@ class PaymentStore {
};
setBasicTariffContainer = () => {
const { currentQuotaStore } = authStore;
const {
currentPlanCost,
maxCountManagersByQuota,
addedManagersCount,
} = currentQuotaStore;
const { currentPlanCost, maxCountManagersByQuota, addedManagersCount } =
currentQuotaStore;
const currentTotalPrice = currentPlanCost.value;
if (this.isAlreadyPaid) {
@ -392,10 +386,8 @@ class PaymentStore {
setRangeStepByQuota = () => {
const { paymentQuotasStore } = authStore;
const {
stepAddingQuotaManagers,
stepAddingQuotaTotalSize,
} = paymentQuotasStore;
const { stepAddingQuotaManagers, stepAddingQuotaTotalSize } =
paymentQuotasStore;
this.stepByQuotaForManager = stepAddingQuotaManagers;
this.minAvailableManagersValue = this.stepByQuotaForManager;

View File

@ -31,6 +31,7 @@ import {
IndicatorLoaderTheme,
ProgressTheme,
MobileProgressBarTheme,
TextTheme,
} from "./styled";
import { ThemeType } from "./constants";
@ -310,6 +311,15 @@ const ColorTheme = forwardRef(
/>
);
}
case ThemeType.Text: {
return (
<TextTheme
{...props}
$currentColorScheme={currentColorScheme}
ref={ref}
/>
);
}
}
}
);

View File

@ -29,4 +29,5 @@ export const ThemeType = {
IndicatorLoader: "indicatorLoader",
Progress: "progress",
MobileProgressBar: "mobileProgressBar",
Text: "text",
};

View File

@ -57,3 +57,5 @@ export { default as IndicatorLoaderTheme } from "./indicatorLoader";
export { default as ProgressTheme } from "./progress";
export { default as MobileProgressBarTheme } from "./mobileProgressBar";
export { default as TextTheme } from "./text";

View File

@ -0,0 +1,13 @@
import styled, { css } from "styled-components";
import StyledText from "@docspace/components/text/styled-text";
import Text from "@docspace/components/text";
const PureText = (props) => <Text {...props} />;
const getDefaultStyles = ({ $currentColorScheme }) =>
$currentColorScheme &&
css`
color: ${$currentColorScheme.main.accent};
`;
export default styled(StyledText)(getDefaultStyles);

View File

@ -7,7 +7,7 @@ const Heading = ({ level, color, className, ...rest }) => {
<StyledHeading
className={`${className} not-selectable`}
as={`h${level}`}
colorProp={color}
color={color}
dir="auto"
{...rest}
></StyledHeading>

View File

@ -5,8 +5,7 @@ const commonTextStyles = css`
font-family: ${(props) => props.theme.fontFamily};
text-align: ${(props) =>
getCorrectTextAlign(props.textAlign, props.theme.interfaceDirection)};
color: ${(props) =>
props.colorProp ? props.colorProp : props.theme.text.color};
color: ${(props) => (props.color ? props.color : props.theme.text.color)};
${(props) =>
props.truncate &&
css`

View File

@ -2,28 +2,8 @@ import React from "react";
import PropTypes from "prop-types";
import StyledText from "./styled-text";
const Text = ({
title,
tag,
as,
fontSize,
fontWeight,
color,
textAlign,
...rest
}) => {
return (
<StyledText
fontSizeProp={fontSize}
fontWeightProp={fontWeight}
colorProp={color}
textAlign={textAlign}
as={!as && tag ? tag : as}
title={title}
dir="auto"
{...rest}
/>
);
const Text = ({ tag, as, ...rest }) => {
return <StyledText as={!as && tag ? tag : as} dir="auto" {...rest} />;
};
Text.propTypes = {

View File

@ -3,12 +3,12 @@ import commonTextStyles from "./common-text-styles";
import Base from "../themes/base";
import NoUserSelect from "@docspace/components/utils/commonStyles";
const styleCss = css`
font-size: ${(props) => props.fontSizeProp};
font-size: ${(props) => props.fontSize};
outline: 0 !important;
margin: 0;
font-weight: ${(props) =>
props.fontWeightProp
? props.fontWeightProp
props.fontWeight
? props.fontWeight
: props.isBold == true
? 700
: props.theme.text.fontWeight};

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Güzəşt müddəti bitməzdən əvvəl ödəniş etdiyinizə əmin olun.",
"PaymentsTitle": "Ödənişlər",
"People": "İnsanlar",
"PerUserMonth": "Admin/ekspert istifadəçi /aylıq <1>{{currencySymbol}}</1><1>{{price}}</1>",
"PerUserMonth": "Admin/ekspert istifadəçi /aylıq <1>{{oldPrice}}</1><2>{{price}}</2>",
"Petabyte": "PB",
"Phone": "Nömrə",
"Plugin": "Plugin",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Уверете се, че сте извършили плащането преди изтичането на гратисния период.",
"PaymentsTitle": "Плащания",
"People": "Хора",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> на администратор/опитен потребител /месец",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> на администратор/опитен потребител /месец",
"Petabyte": "PB",
"Phone": "Телефон",
"Plugin": "Плъгин",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Ujistěte se, že jste platbu provedli před uplynutím doby odkladu.",
"PaymentsTitle": "Platby",
"People": "Lidé",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> za administrátora/pověřeného uživatele /měsíc",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> za administrátora/pověřeného uživatele /měsíc",
"Petabyte": "PB",
"Phone": "Telefon",
"Plugin": "Zásuvný modul",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Stellen Sie sicher, dass die Zahlung vor Ablauf der bezahlten Frist erfolgt.",
"PaymentsTitle": "Zahlungen",
"People": "Personen",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> pro Admin/Power-Benutzer/Monat",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> pro Admin/Power-Benutzer/Monat",
"Petabyte": "PB",
"Phone": "Telefon",
"Plugin": "Plugin",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Βεβαιωθείτε ότι έχετε πραγματοποιήσει την πληρωμή πριν από τη λήξη της περιόδου χάριτος.",
"PaymentsTitle": "Πληρωμές",
"People": "Άτομα",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> ανά διαχειριστή/χρήστη ισχύος /μήνα",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> ανά διαχειριστή/χρήστη ισχύος /μήνα",
"Petabyte": "PB",
"Phone": "Τηλέφωνο",
"Plugin": "Πρόσθετο",

View File

@ -188,7 +188,7 @@
"PayBeforeTheEndGracePeriod": "Make sure to make payment before the grace period is due.",
"PaymentsTitle": "Payments",
"People": "People",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> per admin/power user /month",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> per admin/power user /month",
"Petabyte": "PB",
"Phone": "Phone",
"Plugin": "Plugin",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Asegúrese de realizar el pago antes de que expire el periodo de gracia.",
"PaymentsTitle": "Pagos",
"People": "Personas",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> por administrador/usuario avanzado/mes",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> por administrador/usuario avanzado/mes",
"Petabyte": "PB",
"Phone": "Teléfono",
"Plugin": "Plugin",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Suorita maksu ennen kuin lisäaika päättyy.",
"PaymentsTitle": "Maksut",
"People": "Ihmiset",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> per ylläpitäjä/tehokäyttäjä /kuukausi",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> per ylläpitäjä/tehokäyttäjä /kuukausi",
"Petabyte": "PB",
"Phone": "Puhelin",
"Plugin": "Kytkentä",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Veillez à effectuer le paiement avant lexpiration de la période de grâce.",
"PaymentsTitle": "Paiements",
"People": "Personnes",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> par administrateur/utilisateur avancé /mois",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> par administrateur/utilisateur avancé /mois",
"Petabyte": "Po",
"Phone": "Téléphone",
"Plugin": "Module complémentaire",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Համոզվեք, որ վճարում եք արտոնյալ ժամկետի ավարտից առաջ:",
"PaymentsTitle": "Վճարումներ",
"People": "Մարդիկ",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> մեկ ադմինիստրատորի / փորձառու օգտագործողի / ամսվա համար",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> մեկ ադմինիստրատորի / փորձառու օգտագործողի / ամսվա համար",
"Petabyte": "PB",
"Phone": "Հեռախոս",
"Plugin": "Միացնել",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Assicurati di effettuare il pagamento prima della scadenza del periodo di prova.",
"PaymentsTitle": "Pagamenti",
"People": "Persone",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> per amministratore/utente esperto /mese",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> per amministratore/utente esperto /mese",
"Petabyte": "PB",
"Phone": "Telefono",
"Plugin": "Plugin",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "猶予期間内に必ずお支払いください。",
"PaymentsTitle": "お支払い",
"People": "方々",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> 管理者 / パワーユザーあたり / 月額",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> 管理者 / パワーユザーあたり / 月額",
"Petabyte": "PB",
"Phone": "電話",
"Plugin": "プラグイン",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "유예 기간이 만료되기 전에 결제를 완료하세요.",
"PaymentsTitle": "결제",
"People": "사람들",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1>/관리자, 고급 사용자, 월",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2>/관리자, 고급 사용자, 월",
"Petabyte": "PB",
"Phone": "휴대전화",
"Plugin": "플러그인",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "ໃຫ້ແນ່ໃຈວ່າຈ່າຍເງິນກ່ອນໄລຍະເວລາຜ່ອນຜັນ.",
"PaymentsTitle": "ການຊຳລະເງິນ",
"People": "ຄົນ",
"PerUserMonth": "<1>{{ currencySymbol }}</1><1>{{price}}</1> ຕໍ່ຜູ້ໃຊ້ admin/ເດືອນ ຫຼື ຜູ້ໃຊ້ທົ່ວໄປ/ຕໍ່ເດືອນ",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> ຕໍ່ຜູ້ໃຊ້ admin/ເດືອນ ຫຼື ຜູ້ໃຊ້ທົ່ວໄປ/ຕໍ່ເດືອນ",
"Petabyte": "PB",
"Phone": "ໂທລະສັບ",
"Plugin": "ປລັກອິນ",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Pārliecinieties, ka veicat maksājumu pirms termiņa pagarinājuma perioda beigām.",
"PaymentsTitle": "Maksājumi",
"People": "Cilvēki",
"PerUserMonth": "<1>{{currencySymbol}} </1><1>{{price}} </1> vienam administratoram/prasmīgam lietotājam /mēnesī",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> vienam administratoram/prasmīgam lietotājam /mēnesī",
"Petabyte": "PB",
"Phone": "Tālrunis",
"Plugin": "Spraudnis",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Zorg ervoor dat u betaalt voordat de wachtperiode is verstreken.",
"PaymentsTitle": "Betalingen",
"People": "Mensen",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> per beheerder/power user /maand",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> per beheerder/power user /maand",
"Petabyte": "PB",
"Phone": "Telefoon",
"Plugin": "Plug-in",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Pamiętaj, aby dokonać płatności przed upływem okresu prolongaty.",
"PaymentsTitle": "Płatności",
"People": "Ludzie",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> na administratora/użytkownika z większą liczbą uprawnień /miesięcznie",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> na administratora/użytkownika z większą liczbą uprawnień /miesięcznie",
"Petabyte": "PB",
"Phone": "Telefon",
"Plugin": "Wtyczka",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Certifique-se de fazer o pagamento antes do vencimento do período de carência.",
"PaymentsTitle": "Pagamentos",
"People": "Pessoas",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> por administrador/usuário avançado/mês",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> por administrador/usuário avançado/mês",
"Petabyte": "PB",
"Phone": "Telefone",
"Plugin": "Plugin",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Certifique-se que faz o pagamento antes do período de tolerância terminar.",
"PaymentsTitle": "Pagamentos",
"People": "Pessoas",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> por administrador/utilizadores com poder utilizador /mês",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> por administrador/utilizadores com poder utilizador /mês",
"Petabyte": "PB",
"Phone": "Telemóvel",
"Plugin": "Plugin",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Aveţi grijă să efectuaţi plata înainte de expirarea perioadei de graţie.",
"PaymentsTitle": "Plăți",
"People": "Persoane",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> per administrator/utilizator avansat /lună",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> per administrator/utilizator avansat /lună",
"Petabyte": "PO",
"Phone": "Telefon",
"Plugin": "Plugin",

View File

@ -186,7 +186,7 @@
"PayBeforeTheEndGracePeriod": "Обязательно произведите оплату до окончания льготного периода.",
"PaymentsTitle": "Платежи",
"People": "Люди",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> за администратора/опытного пользователя /месяц",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> за администратора/опытного пользователя /месяц",
"Petabyte": "Пб",
"Phone": "Телефон",
"Plugin": "Плагин",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Uistite sa, že ste platbu vykonali pred uplynutím doby odkladu platby.",
"PaymentsTitle": "Platby",
"People": "Ľudia",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> za administrátora/mesiac",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> za administrátora/mesiac",
"Petabyte": "PB",
"Phone": "Telefón",
"Plugin": "Plugin",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Prepričajte se, da ste izvedli plačilo pred iztekom odložnega obdobja.",
"PaymentsTitle": "Plačila",
"People": "Ljudje",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> na skrbnika/naprednega uporabnika/mesec",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> na skrbnika/naprednega uporabnika/mesec",
"Petabyte": "PB",
"Phone": "Telefon",
"Plugin": "Vtičnik",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Ödemesiz dönem sona ermeden önce ödeme yaptığınızdan emin olun.",
"PaymentsTitle": "Ödemeler",
"People": "Kişiler",
"PerUserMonth": "Yönetici/uzman kullanıcı /ay başına <1>{{price}}</1><1>{{currencySymbol}}</1>",
"PerUserMonth": "Yönetici/uzman kullanıcı /ay başına <1>{{oldPrice}}</1><2>{{price}}</2>",
"Petabyte": "PB",
"Phone": "Telefon",
"Plugin": "Eklenti",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Обов’язково здійсніть платіж до закінчення пільгового періоду.",
"PaymentsTitle": "Платежі",
"People": "Люди",
"PerUserMonth": "<1>{{price}}</1><1>{{currencySymbol}}</1> за адміністратора / досвідченого користувача на місяць",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> за адміністратора / досвідченого користувача на місяць",
"Petabyte": "ПБ",
"Phone": "Телефон",
"Plugin": "Плагін",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "Hãy đảm bảo thực hiện thanh toán trước khi hết thời gian gia hạn.",
"PaymentsTitle": "Thanh toán",
"People": "Người",
"PerUserMonth": "<1>{{price}} </1><1>{{currencySymbol}} </1> mỗi quản trị viên/người dùng cấp cao/tháng",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> mỗi quản trị viên/người dùng cấp cao/tháng",
"Petabyte": "PB",
"Phone": "Điện thoại",
"Plugin": "Plugin",

View File

@ -185,7 +185,7 @@
"PayBeforeTheEndGracePeriod": "请确保在宽限期到期前付款。",
"PaymentsTitle": "付款",
"People": "人脉",
"PerUserMonth": "<1>{{currencySymbol}}</1><1>{{price}}</1> 每个管理员/高级用户/月",
"PerUserMonth": "<1>{{oldPrice}}</1><2>{{price}}</2> 每个管理员/高级用户/月",
"Petabyte": "PB",
"Phone": "电话",
"Plugin": "插件",