Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/assets/lang/de/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@
},
{
"id": "file_size_limit_essential",
"name": "Dateigrößenlimit von 1 GB pro Datei",
"name": "Dateigrößenlimit von 10 GB pro Datei",
"group": "file_size_limit",
"avalability": { "Essential": true, "Premium": false, "Ultimate": false }
},
Expand Down
2 changes: 1 addition & 1 deletion src/assets/lang/en/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
},
{
"id": "file_size_limit_essential",
"name": "File size limit 1GB per file",
"name": "File size limit 10GB per file",
"group": "file_size_limit",
"avalability": { "Essential": true, "Premium": false, "Ultimate": false }
},
Expand Down
2 changes: 1 addition & 1 deletion src/assets/lang/es/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@
},
{
"id": "file_size_limit_essential",
"name": "Límite de 1GB por archivo",
"name": "Límite de 10GB por archivo",
"group": "file_size_limit",
"avalability": { "Essential": true, "Premium": false, "Ultimate": false }
},
Expand Down
2 changes: 1 addition & 1 deletion src/assets/lang/fr/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@
},
{
"id": "file_size_limit_essential",
"name": "Limite de 1 Go par fichier",
"name": "Limite de 10 Go par fichier",
"group": "file_size_limit",
"avalability": { "Essential": true, "Premium": false, "Ultimate": false }
},
Expand Down
7 changes: 6 additions & 1 deletion src/assets/lang/it/metatags-descriptions.json
Original file line number Diff line number Diff line change
Expand Up @@ -600,5 +600,10 @@
"id": "thankyou",
"title": "Lista d'attesa offerta speciale — Internxt",
"description": "Iscriviti a Internxt per ricevere il tuo sconto esclusivo sull'archiviazione cloud privata e crittografata di cui puoi fidarti."
},
{
"id": "internxt-private-cloud-storage-solutions",
"title": "Internxt – Soluzioni di archiviazione su cloud privato",
"description": "Scopri un'esperienza di archiviazione dati su cloud privato di altissimo livello. Offriamo soluzioni di archiviazione su cloud privato di prima classe per garantire la sicurezza e l'organizzazione dei tuoi dati. Inizia con il tuo piano gratuito!"
}
]
]
2 changes: 1 addition & 1 deletion src/assets/lang/it/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@
},
{
"id": "file_size_limit_essential",
"name": "Limite dimensione file di 1 GB per file",
"name": "Limite dimensione file di 10 GB per file",
"group": "file_size_limit",
"avalability": { "Essential": true, "Premium": false, "Ultimate": false }
},
Expand Down
2 changes: 1 addition & 1 deletion src/assets/lang/ru/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@
},
{
"id": "file_size_limit_essential",
"name": "Ограничение размера файла 1 ГБ на файл",
"name": "Ограничение размера файла 1O ГБ на файл",
"group": "file_size_limit",
"avalability": { "Essential": true, "Premium": false, "Ultimate": false }
},
Expand Down
2 changes: 1 addition & 1 deletion src/assets/lang/zh-tw/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@
},
{
"id": "file_size_limit_essential",
"name": "檔案大小限制:每個檔案 1GB",
"name": "檔案大小限制:每個檔案 10GB",
"group": "file_size_limit",
"avalability": { "Essential": true, "Premium": false, "Ultimate": false }
},
Expand Down
2 changes: 1 addition & 1 deletion src/assets/lang/zh/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@
},
{
"id": "file_size_limit_essential",
"name": "文件大小限制:每个文件 1GB",
"name": "文件大小限制:每个文件 10GB",
"group": "file_size_limit",
"avalability": { "Essential": true, "Premium": false, "Ultimate": false }
},
Expand Down
7 changes: 3 additions & 4 deletions src/components/cloud-object-storage/PartnersSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,12 @@ export const PartnersSection = ({ textContent }: PartnersSectionProps): JSX.Elem
<PartnerSelector textContent={textContent} activePartner={activePartner} onPlanTypeChange={setActivePartner} />

<div className="flex w-full flex-col gap-6 rounded-16 bg-white p-8 lg:flex-row">
<div className="flex w-full items-center justify-center lg:h-min lg:w-[512px]">
<div className="relative h-[288px] w-full overflow-hidden rounded-xl lg:w-[512px]">
<Image
src={getImage(`/images/cloud-object-storage/${company.image}.webp`)}
alt={`Image of ${company.image}`}
className="w-full rounded-xl"
height={1000}
width={1000}
className="object-cover"
fill
quality={100}
/>
</div>
Expand Down
11 changes: 9 additions & 2 deletions src/components/pricing/ComparisonTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,17 @@
const billingText = billingFrequency === Interval.Year ? textContent.billedAnnualy : textContent.billedOnce;
const isLifetime = billingFrequency === Interval.Lifetime;

const roundIfNeeded = (n: number): string => {
const truncated = (Math.floor(n * 100) / 100).toFixed(2);
if (truncated.endsWith('.98')) return truncated.slice(0, -1) + '9';
if (truncated.endsWith('.00')) return (parseFloat(truncated) - 0.01).toFixed(2);

Check warning on line 54 in src/components/pricing/ComparisonTable.tsx

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer `Number.parseFloat` over `parseFloat`.

See more on https://sonarcloud.io/project/issues?id=internxt_website&issues=AZ61fX8HZBZf2NUkcY7s&open=AZ61fX8HZBZf2NUkcY7s&pullRequest=1932
return truncated;
};

const getPlanPrice = (planOrder: number) => {
const basePrice = Number(products?.individuals?.[billingFrequency]?.[planOrder]?.price ?? 0);
const finalPrice = decimalDiscount && isLifetime ? basePrice * (decimalDiscount / 100) : basePrice;
return finalPrice.toFixed(2).replace('.00', '');
const finalPrice = decimalDiscount ? basePrice * (decimalDiscount / 100) : basePrice;
return roundIfNeeded(finalPrice);
};

const getPlanPriceId = (planOrder: number) => {
Expand Down
Loading