diff --git a/src/assets/lang/de/relational-links.json b/src/assets/lang/de/relational-links.json new file mode 100644 index 000000000..fbb7fbff7 --- /dev/null +++ b/src/assets/lang/de/relational-links.json @@ -0,0 +1,45 @@ +{ + "title": "Das könnte Sie interessieren", + "links": [ + { + "cta": "Sicherer Cloud-Speicher", + "link": "/drive" + }, + { + "cta": "Kostenloser Cloud-Speicher", + "link": "/drive/free-cloud-storage" + }, + { + "cta": "Lebenslanger Cloud-Speicher", + "link": "/lifetime" + }, + { + "cta": "Cloud-Speicher Preise", + "link": "/pricing" + }, + { + "cta": "Privater Cloud-Speicher", + "link": "/private-cloud-storage-solutions" + }, + { + "cta": "Open-Source-Cloud-Speicher", + "link": "/open-source" + }, + { + "cta": "Cloud-Speicher-Backup", + "link": "/cloud-storage-backup-solutions" + }, + { + "cta": "DSGVO-Cloud-Speicher", + "link": "/gdpr-cloud-storage" + }, + { + "cta": "Cloud-Speicher für Fotos", + "link": "/cloud-storage-for-photos" + }, + { + "cta": "Cloud-Speicher für große Videodateien", + "link": "/cloud-storage-for-videos" + } + ] +} diff --git a/src/assets/lang/en/annual.json b/src/assets/lang/en/annual.json index 13f4b4ea1..28a64e886 100644 --- a/src/assets/lang/en/annual.json +++ b/src/assets/lang/en/annual.json @@ -9,7 +9,7 @@ "mail": "Mail", "ai": "AI" }, - "title": "Internxt Annual Plans Offer: Secure Encrypted Cloud Storage **for less**", + "title": "Internxt Annual Plans. Secure Encrypted Cloud Storage **for less**", "valentinesTitle": "Love deserves **privacy**", "description": "Secure cloud storage for less. Claim your special discount today. Access Internxt's award-winning privacy suite with post-quantum encrypted cloud storage and much more.", "subtitle": "Get {{discount}}% off now", diff --git a/src/assets/lang/en/relational-links.json b/src/assets/lang/en/relational-links.json new file mode 100644 index 000000000..806a29871 --- /dev/null +++ b/src/assets/lang/en/relational-links.json @@ -0,0 +1,45 @@ +{ + "title": "You may be interested", + "links": [ + { + "cta": "Secure Cloud Storage", + "link": "/drive" + }, + { + "cta": "Free Cloud Storage", + "link": "/drive/free-cloud-storage" + }, + { + "cta": "Lifetime Cloud Storage", + "link": "/lifetime" + }, + { + "cta": "Cloud Storage Pricing", + "link": "/pricing" + }, + { + "cta": "Private cloud storage", + "link": "/private-cloud-storage-solutions" + }, + { + "cta": "Open Source Storage Cloud", + "link": "/open-source" + }, + { + "cta": "Cloud storage backup", + "link": "/cloud-storage-backup-solutions" + }, + { + "cta": "GDPR cloud storage", + "link": "/gdpr-cloud-storage" + }, + { + "cta": "Cloud storage for photos", + "link": "/cloud-storage-for-photos" + }, + { + "cta": "Cloud storage for large video files", + "link": "/cloud-storage-for-videos" + } + ] +} diff --git a/src/assets/lang/es/relational-links.json b/src/assets/lang/es/relational-links.json new file mode 100644 index 000000000..8c9032022 --- /dev/null +++ b/src/assets/lang/es/relational-links.json @@ -0,0 +1,45 @@ +{ + "title": "También te puede interesar", + "links": [ + { + "cta": "Almacenamiento seguro\n en la nube", + "link": "/drive" + }, + { + "cta": "Almacenamiento en la\n nube gratuito", + "link": "/drive/free-cloud-storage" + }, + { + "cta": "Almacenamiento en la nube\n de por vida", + "link": "/lifetime" + }, + { + "cta": "Precios de almacenamiento\n en la nube", + "link": "/pricing" + }, + { + "cta": "Almacenamiento privado en la nube", + "link": "/private-cloud-storage-solutions" + }, + { + "cta": "Nube de almacenamiento de código abierto", + "link": "/open-source" + }, + { + "cta": "Copia de seguridad \nen la nube", + "link": "/cloud-storage-backup-solutions" + }, + { + "cta": "Almacenamiento en \nla nube GDPR", + "link": "/gdpr-cloud-storage" + }, + { + "cta": "Almacenamiento en la nube\n para fotos", + "link": "/cloud-storage-for-photos" + }, + { + "cta": "Almacenamiento en la nube para archivos de vídeo grandes", + "link": "/cloud-storage-for-videos" + } + ] +} diff --git a/src/assets/lang/fr/relational-links.json b/src/assets/lang/fr/relational-links.json new file mode 100644 index 000000000..2ffebca7b --- /dev/null +++ b/src/assets/lang/fr/relational-links.json @@ -0,0 +1,45 @@ +{ + "title": "Vous pourriez être intéressé", + "links": [ + { + "cta": "Stockage cloud sécurisé", + "link": "/drive" + }, + { + "cta": "Stockage cloud gratuit", + "link": "/drive/free-cloud-storage" + }, + { + "cta": "Stockage cloud à vie", + "link": "/lifetime" + }, + { + "cta": "Tarifs du stockage cloud", + "link": "/pricing" + }, + { + "cta": "Stockage cloud privé", + "link": "/private-cloud-storage-solutions" + }, + { + "cta": "Cloud de stockage open source", + "link": "/open-source" + }, + { + "cta": "Sauvegarde sur le cloud", + "link": "/cloud-storage-backup-solutions" + }, + { + "cta": "Stockage cloud RGPD", + "link": "/gdpr-cloud-storage" + }, + { + "cta": "Stockage cloud pour photos", + "link": "/cloud-storage-for-photos" + }, + { + "cta": "Stockage cloud pour les fichiers vidéo volumineux", + "link": "/cloud-storage-for-videos" + } + ] +} diff --git a/src/assets/lang/it/relational-links.json b/src/assets/lang/it/relational-links.json new file mode 100644 index 000000000..0dd8e0aa2 --- /dev/null +++ b/src/assets/lang/it/relational-links.json @@ -0,0 +1,45 @@ +{ + "title": "Potrebbe interessarti", + "links": [ + { + "cta": "Archiviazione cloud sicura", + "link": "/drive" + }, + { + "cta": "Archiviazione cloud gratuita", + "link": "/drive/free-cloud-storage" + }, + { + "cta": "Archiviazione cloud a vita", + "link": "/lifetime" + }, + { + "cta": "Prezzi dell'archiviazione cloud", + "link": "/pricing" + }, + { + "cta": "Archiviazione cloud privata", + "link": "/private-cloud-storage-solutions" + }, + { + "cta": "Archiviazione cloud open source", + "link": "/open-source" + }, + { + "cta": "Backup su cloud", + "link": "/cloud-storage-backup-solutions" + }, + { + "cta": "Archiviazione cloud GDPR", + "link": "/gdpr-cloud-storage" + }, + { + "cta": "Archiviazione cloud per foto", + "link": "/cloud-storage-for-photos" + }, + { + "cta": "Archiviazione cloud per file video di grandi dimensioni", + "link": "/cloud-storage-for-videos" + } + ] +} diff --git a/src/assets/lang/ru/relational-links.json b/src/assets/lang/ru/relational-links.json new file mode 100644 index 000000000..d40547bb0 --- /dev/null +++ b/src/assets/lang/ru/relational-links.json @@ -0,0 +1,45 @@ +{ + "title": "Вас может заинтересовать", + "links": [ + { + "cta": "Безопасное облачное хранилище", + "link": "/drive" + }, + { + "cta": "Бесплатное облачное хранилище", + "link": "/drive/free-cloud-storage" + }, + { + "cta": "Пожизненное облачное хранилище", + "link": "/lifetime" + }, + { + "cta": "Цены на облачное хранилище", + "link": "/pricing" + }, + { + "cta": "Частное облачное хранилище", + "link": "/private-cloud-storage-solutions" + }, + { + "cta": "Облачное хранилище с открытым исходным кодом", + "link": "/open-source" + }, + { + "cta": "Облачное резервное копирование", + "link": "/cloud-storage-backup-solutions" + }, + { + "cta": "Облачное хранилище GDPR", + "link": "/gdpr-cloud-storage" + }, + { + "cta": "Облачное хранилище для фотографий", + "link": "/cloud-storage-for-photos" + }, + { + "cta": "Облачное хранилище для больших видеофайлов", + "link": "/cloud-storage-for-videos" + } + ] +} diff --git a/src/assets/lang/zh-tw/relational-links.json b/src/assets/lang/zh-tw/relational-links.json new file mode 100644 index 000000000..127b4adb8 --- /dev/null +++ b/src/assets/lang/zh-tw/relational-links.json @@ -0,0 +1,45 @@ +{ + "title": "您可能感興趣", + "links": [ + { + "cta": "安全雲端儲存", + "link": "/drive" + }, + { + "cta": "免費雲端儲存", + "link": "/drive/free-cloud-storage" + }, + { + "cta": "終身雲端儲存", + "link": "/lifetime" + }, + { + "cta": "雲端儲存價格", + "link": "/pricing" + }, + { + "cta": "私有雲端儲存", + "link": "/private-cloud-storage-solutions" + }, + { + "cta": "開源雲端儲存", + "link": "/open-source" + }, + { + "cta": "雲端儲存備份", + "link": "/cloud-storage-backup-solutions" + }, + { + "cta": "符合 GDPR 的雲端儲存", + "link": "/gdpr-cloud-storage" + }, + { + "cta": "照片雲端儲存", + "link": "/cloud-storage-for-photos" + }, + { + "cta": "大影片檔案雲端儲存", + "link": "/cloud-storage-for-videos" + } + ] +} diff --git a/src/assets/lang/zh/relational-links.json b/src/assets/lang/zh/relational-links.json new file mode 100644 index 000000000..ede69cd12 --- /dev/null +++ b/src/assets/lang/zh/relational-links.json @@ -0,0 +1,45 @@ +{ + "title": "您可能感兴趣", + "links": [ + { + "cta": "安全的网络存储", + "link": "/drive" + }, + { + "cta": "免费网络存储", + "link": "/drive/free-cloud-storage" + }, + { + "cta": "终身网络存储", + "link": "/lifetime" + }, + { + "cta": "网络存储价格", + "link": "/pricing" + }, + { + "cta": "私有网络存储", + "link": "/private-cloud-storage-solutions" + }, + { + "cta": "开源网络存储", + "link": "/open-source" + }, + { + "cta": "网络存储备份", + "link": "/cloud-storage-backup-solutions" + }, + { + "cta": "符合 GDPR 的网络存储", + "link": "/gdpr-cloud-storage" + }, + { + "cta": "照片网络存储", + "link": "/cloud-storage-for-photos" + }, + { + "cta": "大视频文件网络存储", + "link": "/cloud-storage-for-videos" + } + ] +} diff --git a/src/components/shared/sections/RelationalLinks.tsx b/src/components/shared/sections/RelationalLinks.tsx new file mode 100644 index 000000000..0ff90b253 --- /dev/null +++ b/src/components/shared/sections/RelationalLinks.tsx @@ -0,0 +1,56 @@ +import React, { useEffect, useState } from 'react'; +import { LinkTo } from '../../drive/components/LinkTo'; + +interface Card { + cta: string; + link: string; +} + +interface RelationalLinksProps { + textContent: { + title: string; + links: Card[]; + }; +} + +const shuffleData = (data: Card[]): Card[] => { + const shuffled = [...data]; + for (let i = shuffled.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; + } + return shuffled; +}; + +const RelationalLinks = ({ textContent }: RelationalLinksProps) => { + const [cards, setCards] = useState([]); + + useEffect(() => { + if (textContent?.links) { + const shuffledLinks = shuffleData(textContent.links); + setCards(shuffledLinks); + } + }, [textContent]); + + if (cards.length === 0) return null; + + return ( +
+

+ {textContent.title} +

+
+ {cards.map((card) => ( +
+ +
+ ))} +
+
+ ); +}; + +export default RelationalLinks; \ No newline at end of file diff --git a/src/pages/antivirus.tsx b/src/pages/antivirus.tsx index f67d3a48f..88aa76094 100644 --- a/src/pages/antivirus.tsx +++ b/src/pages/antivirus.tsx @@ -16,6 +16,7 @@ import FeatureSectionV2 from '@/components/antivirus/FeatureSectionV2'; import FeatureSection from '@/components/antivirus/FeatureSection'; import HeroSection from '@/components/antivirus/HeroSection'; import { InfoSection } from '@/components/antivirus/InfoSecction'; +import RelationalLinks from '@/components/shared/sections/RelationalLinks'; import { downloadDriveLinks } from '@/lib/get-download-url'; interface AntivirusProps { @@ -24,6 +25,7 @@ interface AntivirusProps { navbarLang: NavigationBarText; langJson: AntivirusText; footerLang: FooterText; + relationalLinksText: any; download: { Windows: any; MacOS: any; @@ -40,6 +42,7 @@ const AntivirusPage = ({ footerLang, download, isGetAntivirus, + relationalLinksText, }: AntivirusProps): JSX.Element => { const metatags = metatagsDescriptions.filter((desc) => desc.id === 'internxt-antivirus'); const locale = lang as string; @@ -166,6 +169,8 @@ const AntivirusPage = ({ + +