From a8c707ba20e07adf1fa9ab65272254e8f205a508 Mon Sep 17 00:00:00 2001 From: internxt-yu Date: Wed, 5 Aug 2026 10:38:55 +0200 Subject: [PATCH 01/11] refresh From d80b7f23d977cafeb4d3ab0a528b87dfabee7e0e Mon Sep 17 00:00:00 2001 From: internxt-yu Date: Wed, 5 Aug 2026 13:02:41 +0200 Subject: [PATCH 02/11] removed the pricing section for the preview and aumented the images size --- src/components/photo/CoreFeaturesSection.tsx | 2 +- src/components/photo/PhotoSection.tsx | 8 +-- src/pages/photos.tsx | 63 +------------------- 3 files changed, 6 insertions(+), 67 deletions(-) diff --git a/src/components/photo/CoreFeaturesSection.tsx b/src/components/photo/CoreFeaturesSection.tsx index 47dabc45b..52d5cc611 100644 --- a/src/components/photo/CoreFeaturesSection.tsx +++ b/src/components/photo/CoreFeaturesSection.tsx @@ -84,7 +84,7 @@ const CoreFeaturesSection = ({ textContent }: CoreFeaturesSectionProps): JSX.Ele src={getImage(`/images/photos/mockup${activeIndex + 1}.webp`)} alt={textContent.accordionCards.titles[activeIndex]} height={450} - width={345} + width={495} className="rounded-16 object-cover" /> diff --git a/src/components/photo/PhotoSection.tsx b/src/components/photo/PhotoSection.tsx index 55f41cf80..9b3706e3f 100644 --- a/src/components/photo/PhotoSection.tsx +++ b/src/components/photo/PhotoSection.tsx @@ -14,7 +14,7 @@ const PhotoSection = ({ textContent }: PhotoSectionProps): JSX.Element => {

{textContent.title}

-
+
{textContent.description.map((desc) => (

{desc} @@ -22,12 +22,12 @@ const PhotoSection = ({ textContent }: PhotoSectionProps): JSX.Element => { ))}

-
+
Internxt Drive panel interface diff --git a/src/pages/photos.tsx b/src/pages/photos.tsx index 9d7cd158c..8b7342fc6 100644 --- a/src/pages/photos.tsx +++ b/src/pages/photos.tsx @@ -13,10 +13,6 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2'; import ThreeCardsSection from '@/components/shared/sections/ThreeCardsWithImagesSection'; import HorizontalScrollableWithPhotoSection from '@/components/photo/HorizontalScrollableWithPhotoSection' import RelationalLinks from '@/components/shared/sections/RelationalLinks'; -import { PricingSectionWrapper } from '@/components/shared/pricing/PricingSectionWrapper'; -import usePricing from '@/hooks/usePricing'; -import { PromoCodeName } from '@/lib/types'; -import { stripeService } from '@/services/stripe.service'; interface PhotoProps { metatagsDescription: MetatagsDescription[]; @@ -37,45 +33,7 @@ const Photo = ({ } : PhotoProps): JSX.Element => { const metatags = metatagsDescription.find((metatag) => metatag.id === 'photo'); const lang = locale as string; - const { - products, - loadingCards, - currencyValue, - coupon: individualCoupon, - lifetimeCoupon: lifetimeCoupon, - lifetimeCoupons, - } = usePricing({ couponCode: PromoCodeName.OFFSUB, couponCodeForLifetime: PromoCodeName.OFFLFT }); - - const decimalDiscountForLifetime = lifetimeCoupon?.percentOff && 100 - lifetimeCoupon.percentOff; - const decimalDiscount = individualCoupon?.percentOff && 100 - individualCoupon.percentOff; - - const onCheckoutButtonClicked = async ( - priceId: string, - isCheckoutForLifetime: boolean, - interval: string, - storage: string, - ) => { - const couponCodeForCheckout = isCheckoutForLifetime ? lifetimeCoupon : individualCoupon; - - const finalPrice = await stripeService.calculateFinalPrice( - priceId, - interval, - currencyValue, - 'individuals', - couponCodeForCheckout, - ); - - stripeService.redirectToCheckout( - priceId, - finalPrice, - currencyValue, - 'individual', - isCheckoutForLifetime, - interval, - storage, - couponCodeForCheckout?.name, - ); - }; + return ( @@ -84,25 +42,6 @@ const Photo = ({ - - Date: Wed, 5 Aug 2026 17:24:21 +0200 Subject: [PATCH 03/11] adjust spacing of components and restore pricing table --- src/components/photo/CoreFeaturesSection.tsx | 12 ++-- src/components/photo/HeroSection.tsx | 8 +-- src/pages/photos.tsx | 63 +++++++++++++++++++- 3 files changed, 72 insertions(+), 11 deletions(-) diff --git a/src/components/photo/CoreFeaturesSection.tsx b/src/components/photo/CoreFeaturesSection.tsx index 52d5cc611..3d69f4f96 100644 --- a/src/components/photo/CoreFeaturesSection.tsx +++ b/src/components/photo/CoreFeaturesSection.tsx @@ -38,11 +38,11 @@ const CoreFeaturesSection = ({ textContent }: CoreFeaturesSectionProps): JSX.Ele return (
-
-

{textContent.title}

-

{textContent.description}

-
-
+
+

{textContent.title}

+

{textContent.description}

+
+
{textContent.accordionCards.titles[activeIndex]}
diff --git a/src/components/photo/HeroSection.tsx b/src/components/photo/HeroSection.tsx index caadb1e0c..9fd1aab3a 100644 --- a/src/components/photo/HeroSection.tsx +++ b/src/components/photo/HeroSection.tsx @@ -7,11 +7,11 @@ export const HeroSection = ({ textContent }) => { return (
{
-
+
Internxt Drive panel interface { const metatags = metatagsDescription.find((metatag) => metatag.id === 'photo'); const lang = locale as string; - + const { + products, + loadingCards, + currencyValue, + coupon: individualCoupon, + lifetimeCoupon: lifetimeCoupon, + lifetimeCoupons, + } = usePricing({ couponCode: PromoCodeName.OFFSUB, couponCodeForLifetime: PromoCodeName.OFFLFT }); + + const decimalDiscountForLifetime = lifetimeCoupon?.percentOff && 100 - lifetimeCoupon.percentOff; + const decimalDiscount = individualCoupon?.percentOff && 100 - individualCoupon.percentOff; + + const onCheckoutButtonClicked = async ( + priceId: string, + isCheckoutForLifetime: boolean, + interval: string, + storage: string, + ) => { + const couponCodeForCheckout = isCheckoutForLifetime ? lifetimeCoupon : individualCoupon; + + const finalPrice = await stripeService.calculateFinalPrice( + priceId, + interval, + currencyValue, + 'individuals', + couponCodeForCheckout, + ); + + stripeService.redirectToCheckout( + priceId, + finalPrice, + currencyValue, + 'individual', + isCheckoutForLifetime, + interval, + storage, + couponCodeForCheckout?.name, + ); + }; return ( @@ -42,6 +84,25 @@ const Photo = ({ + + Date: Thu, 6 Aug 2026 09:31:46 +0200 Subject: [PATCH 04/11] adjust spacing --- src/components/photo/HeroSection.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/photo/HeroSection.tsx b/src/components/photo/HeroSection.tsx index 9fd1aab3a..f31380930 100644 --- a/src/components/photo/HeroSection.tsx +++ b/src/components/photo/HeroSection.tsx @@ -7,11 +7,11 @@ export const HeroSection = ({ textContent }) => { return (
{

{textContent.label}

-

+

{textContent.title}

{textContent.description}

-
+
Date: Thu, 6 Aug 2026 10:28:59 +0200 Subject: [PATCH 05/11] changed reference photo to photos in EN version --- src/assets/lang/en/photo.json | 164 ------------------- src/assets/lang/en/photos.json | 290 ++++++++++++++++++--------------- src/pages/photos.tsx | 2 +- 3 files changed, 156 insertions(+), 300 deletions(-) delete mode 100644 src/assets/lang/en/photo.json diff --git a/src/assets/lang/en/photo.json b/src/assets/lang/en/photo.json deleted file mode 100644 index a93418476..000000000 --- a/src/assets/lang/en/photo.json +++ /dev/null @@ -1,164 +0,0 @@ -{ - "HeroSection": { - "label": "Internxt Photos", - "title": "Secure and Encrypted Photo Storage", - "description": "Securely store, sync, backup, and access your photos in total privacy.", - "cta": "Get Internxt", - "garantee": "Included with Ultimate plans" - }, - "PhotoSection": { - "title": "Internxt Photos", - "description": [ - "Back up and sync your memories with our secure cloud storage for photos, protecting your memories with post-quantum encryption and built for complete privacy." - ] - }, - "CoreFeatures": { - "title": "Private photo storage: Your memories, accessible from anywhere", - "description": "Keep your photo library up to date and synced across all devices. Even if your device is lost or replaced, your photo library remains safe and accessible.", - "accordionCards": { - "titles": [ - "Back up of all your devices", - "Zero trackers, ads, and AI", - "Automatic syncing and backups" - ], - "descriptions": [ - "Automatically back up photos from all your devices and access them securely whenever you need them from any of your devices. ", - "Internxt Photos offers a completely ad-free experience, free from data tracking and AI using your photos and data for its machine learning.", - "Your entire photo library is continuously updated in real time, so any change you make on one device is reflected everywhere on all devices. Automatic backups mean you never have to worry about data loss." - ] - } - }, - "PhotoFeatureSection": { - "title": "Secure cloud storage for photos, focused on privacy", - "description": "Internxt Photos uses post-quantum and zero-knowledge encryption to encrypt your files and data at rest and in transit.", - "scrollableSection": { - "titles": [ - "Fully encrypted vault", - "Privacy over profit", - "Compliance", - "Open source and audited", - "Built for freedom", - "No backdoors" - ], - "descriptions": [ - "Internxt Photos uses Kyber 512 post-quantum and AES-256 encryption, ensuring data protection with end-to-end security, European privacy, and advanced technology.", - "Unlike Google Photos or other Big Tech companies, Internxt can’t view or delete your photos. Everything is encrypted directly on your device. Nobody, not even us, can access your photos or data.", - "Internxt is GDPR, HIPAA, ISO 27001, and SOC 2 compliant. Whether you need cloud storage for healthcare, finance, or personal use, Internxt ensures your data and files meet the highest standards of data protection.", - "All our code is publicly available on GitHub and has been verified by external cybersecurity experts to ensure it is a safe platform for your data.", - "We give you total ownership and control over your privacy. With our privacy-focused products, you hold the power, not Big Tech.", - "We have no access to your data or files and don’t share it with anyone. Our apps are fully open source and audited, guaranteeing your privacy is respected." - ] - } - }, - "CtaSectionV2": { - "title": "Secure cloud storage for photos", - "description": "Get the best protection and security for your memories with Internxt Photos", - "cta": "Get Internxt" - }, - "DesignedSection": { - "title": "Core features of our secure cloud storage for photos", - "scrollableSection": { - "images": ["partial1", "partial2", "partial3", "partial4"], - "titles": ["A fully private ecosystem", "Sync and backups", "End-to-end encrypted", "Encrypted backups"], - "descriptions": [ - "Internxt Photos is included with our Ultimate package, giving you everything you need to protect your privacy. From encrypted cloud storage, VPN, Mail, Antivirus, Meet, and more.", - "Photos are automatically synced and backed up in the cloud, keeping your memories safe, accessible, and protected.", - "All photos are encrypted with post-quantum and zero-knowledge encryption. Nobody but you, or those you choose to share files with, can see its contents.", - "Ensure your photos stay safe from ransomware and accidental loss with automatic, encrypted backups that provide extra protection and peace of mind." - ] - } - }, - "MadeInEuropeSection": { - "title": "Made in Europe", - "description": "Your data is protected with strict European compliance laws and regulations combined with award-winning encryption.", - "cards": { - "images": ["/images/drive/GDPR.webp", "/images/drive/redundancy.webp", "/images/drive/sustainability.webp"], - "imagesMobile": [ - "/images/drive/GDPR2.webp", - "/images/drive/Redundancy2.webp", - "/images/drive/Sustainability2.webp" - ], - "titles": ["European data centers", "Redundancy", "Commitment to sustainability "], - "descriptions": [ - "Internxt is based in Valencia, Spain, and our data centers are based in Europe and other locations worldwide, offering you security, speed, and compliance.", - "Your files are protected through redundant systems, environmental controls, and 24/7 onsite security monitoring. No matter what happens, your files always remain safe and accessible.", - "Internxt leads by example in working for a more sustainable cloud storage solution through energy-efficient practices for a cleaner and more sustainable cloud storage solution." - ] - } - }, - "TableSection": { - "title": "Internxt Plans", - "valentinesTitle": "Secure love - ", - "hotLabel": "{{discount}}% off", - "planTitles": { - "header": "Select your plan", - "lifetimeHeader": "Select your lifetime plan", - "individuals": "Annual Plans", - "homePage": "Choose the right plan for you", - "lifetime": "Lifetime Plans", - "business": "Business Plans", - "lifetimeCampaign": { - "blueText": "50% off", - "normalText": "on all our exclusive lifetime plans" - } - }, - "lifetimeDescription": "Pay once and enjoy privacy and security for life", - "planDescription": "All Internxt plans are fully featured with complete access to our award-winning privacy suite consisting of Internxt Drive, Send, VPN, Antivirus, Cleaner, Dark Web Monitor, Meet and Mail.", - "businessDescription": "We're currently working on new Internxt plans designed exclusively to defend your business, protect your employees, and secure your profitability.", - "businessDescription2": "Ensure your company's data security with Internxt's encrypted cloud storage plans.", - "billingFrequency": { - "monthly": "Monthly", - "annually": "Annual", - "lifetime": "Lifetime", - "individual": "Individual", - "business": "Business" - }, - "freePlanCard": { - "eyeBrow": "Free", - "description": "Get 1 GB of encrypted cloud storage for free", - "cta": "Select plan" - }, - "features": { - "endToEnd": "End-to-end encryption", - "openSource": "Open source and audited", - "anonymousAccount": "Anonymous account creation", - "premiumSupport": "Premium customer support", - "guarantee": "30-day money-back guarantee" - }, - "planStorage": { - "essential": "1TB", - "premium": "3TB", - "ultimate": "5TB" - } - }, - "SemanticAccordion": { - "title": "Have any questions about Internxt Photos? We have answers", - "items": [ - { - "question": "What is Internxt Photos?", - "answer": [ - "Internxt Photos is an end-to-end encrypted cloud storage for photos app, allowing you to store, sync, and automatically back up your photos and albums in total privacy." - ] - }, - { - "question": "What plan includes Internxt Photos?", - "answer": [ - "Internxt Photos is included for all Ultimate annual and lifetime plans. This also gives you access to 5TB of cloud storage and access to our full privacy suite." - ] - }, - { - "question": "Why should I use encrypted photo storage?", - "answer": [ - "Encrypted photo storage matters because most mainstream cloud photo services are not fully private. Big tech companies can view your private photos and albums in certain situations, such as moderation, AI processing, or legal requests, depending on how the service is designed." - ] - }, - { - "question": "Is Internxt Photos an alternative to Google Photos?", - "answer": [ - "Yes, Internxt Photos is a private and secure alternative to Google Photos that protects your photos with zero-knowledge and post-quantum encryption so nobody can access your files except you. ", - "With Internxt Photos, you also get access to Internxt’s full product suite which includes Drive, VPN, Meet, Mail, and more." - ] - } - ] - } -} \ No newline at end of file diff --git a/src/assets/lang/en/photos.json b/src/assets/lang/en/photos.json index 989cb4c03..a93418476 100644 --- a/src/assets/lang/en/photos.json +++ b/src/assets/lang/en/photos.json @@ -1,144 +1,164 @@ { - "HeroSection": { - "eyebrow": "Internxt Photos", - "title": { - "line1": "Your picture-perfect moments,", - "line2": "safe under lock and key" + "HeroSection": { + "label": "Internxt Photos", + "title": "Secure and Encrypted Photo Storage", + "description": "Securely store, sync, backup, and access your photos in total privacy.", + "cta": "Get Internxt", + "garantee": "Included with Ultimate plans" }, - "subtitle": { - "line1": "Relive, share, and keep your best memories safe, all in one place. ", - "line2": "Let Internxt Photos focus on privacy and security, ", - "line3": "so you can concentrate on capturing the moments that matter to you." - }, - "availableSoon": "Available soon", - "DownloadLinks": { - "downloadTitle": "Download Internxt Drive", - "or": "or", - "downloadFor": "Download for", - "orDownloadFor": "Or download for", - "downloadOnThe": "Download on the", - "orDownloadOnThe": "Or download on the", - "getOn": "Get on", - "orGetOn": "Or get on", - "openDriveWeb": "Open Drive Web", - "iPhone": "App Store", - "iPad": "App Store", - "Android": "Play Store", - "Windows": "Windows", - "Linux": "Linux", - "UNIX": "Linux", - "MacOS": "Mac" - } - }, - "FeaturesSection": { - "section1": { - "title": { - "line1": "Synced gallery on all your devices" - } + "PhotoSection": { + "title": "Internxt Photos", + "description": [ + "Back up and sync your memories with our secure cloud storage for photos, protecting your memories with post-quantum encryption and built for complete privacy." + ] }, - "section2": { - "title": { - "line1": "Upload from your", - "line2": "smartphone, access", - "line3": "wherever you want" - }, - "subtitle": { - "line1": "Your photo library will always be up to", - "line2": "date on all your devices. This means that", - "line3": "you can access your synced photos even", - "line4": "when your device is lost, stolen, or broken." - } + "CoreFeatures": { + "title": "Private photo storage: Your memories, accessible from anywhere", + "description": "Keep your photo library up to date and synced across all devices. Even if your device is lost or replaced, your photo library remains safe and accessible.", + "accordionCards": { + "titles": [ + "Back up of all your devices", + "Zero trackers, ads, and AI", + "Automatic syncing and backups" + ], + "descriptions": [ + "Automatically back up photos from all your devices and access them securely whenever you need them from any of your devices. ", + "Internxt Photos offers a completely ad-free experience, free from data tracking and AI using your photos and data for its machine learning.", + "Your entire photo library is continuously updated in real time, so any change you make on one device is reflected everywhere on all devices. Automatic backups mean you never have to worry about data loss." + ] + } }, - "section3": { - "title": { - "line1": "Share your photos", - "line2": "with your friends", - "line3": "and family" - }, - "subtitle": { - "line1": "Generate a share link so you can", - "line2": "control how many times a photo", - "line3": "can be accessed and downloaded." - } + "PhotoFeatureSection": { + "title": "Secure cloud storage for photos, focused on privacy", + "description": "Internxt Photos uses post-quantum and zero-knowledge encryption to encrypt your files and data at rest and in transit.", + "scrollableSection": { + "titles": [ + "Fully encrypted vault", + "Privacy over profit", + "Compliance", + "Open source and audited", + "Built for freedom", + "No backdoors" + ], + "descriptions": [ + "Internxt Photos uses Kyber 512 post-quantum and AES-256 encryption, ensuring data protection with end-to-end security, European privacy, and advanced technology.", + "Unlike Google Photos or other Big Tech companies, Internxt can’t view or delete your photos. Everything is encrypted directly on your device. Nobody, not even us, can access your photos or data.", + "Internxt is GDPR, HIPAA, ISO 27001, and SOC 2 compliant. Whether you need cloud storage for healthcare, finance, or personal use, Internxt ensures your data and files meet the highest standards of data protection.", + "All our code is publicly available on GitHub and has been verified by external cybersecurity experts to ensure it is a safe platform for your data.", + "We give you total ownership and control over your privacy. With our privacy-focused products, you hold the power, not Big Tech.", + "We have no access to your data or files and don’t share it with anyone. Our apps are fully open source and audited, guaranteeing your privacy is respected." + ] + } }, - "section4": { - "title": { - "line1": "Sync your photos", - "line2": "in total privacy" - } + "CtaSectionV2": { + "title": "Secure cloud storage for photos", + "description": "Get the best protection and security for your memories with Internxt Photos", + "cta": "Get Internxt" }, - "section5": { - "title": { - "line1": "All your files,", - "line2": "secure and private" - }, - "subtitle": { - "line1": "Privacy and security are our core, we don’t run our business on data or advertising,", - "line2": " but on trust. We respect your rights and build amazing tools around them, not against them." - }, - "cta": "Our commitment on privacy", - "card1": { - "title": "Military-grade encryption", - "subtitle": "We take your privacy very seriously, that’s why your files are encrypted so only you can access your files." - }, - "card2": { - "title": "Zero-knowledge technology", - "subtitle": "We never store or transmit files, user passwords, or encryption keys in an unencrypted or unhashed form." - }, - "card3": { - "title": "Privacy by design", - "subtitle": "We develop our products with the user in mind, and their privacy is a must in the data-driven world we live in." - }, - "card4": { - "title": "Open source and transparent", - "subtitle": "We are proud of what we do, so our code is made public on GitHub and can be personally reviewed, audited, and verified by anyone. We have nothing to hide but your data." - } + "DesignedSection": { + "title": "Core features of our secure cloud storage for photos", + "scrollableSection": { + "images": ["partial1", "partial2", "partial3", "partial4"], + "titles": ["A fully private ecosystem", "Sync and backups", "End-to-end encrypted", "Encrypted backups"], + "descriptions": [ + "Internxt Photos is included with our Ultimate package, giving you everything you need to protect your privacy. From encrypted cloud storage, VPN, Mail, Antivirus, Meet, and more.", + "Photos are automatically synced and backed up in the cloud, keeping your memories safe, accessible, and protected.", + "All photos are encrypted with post-quantum and zero-knowledge encryption. Nobody but you, or those you choose to share files with, can see its contents.", + "Ensure your photos stay safe from ransomware and accidental loss with automatic, encrypted backups that provide extra protection and peace of mind." + ] + } }, - "DownloadLinks": { - "or": "or", - "downloadFor": "Download for", - "orDownloadFor": "Or download for", - "downloadOnThe": "Download on the", - "orDownloadOnThe": "Or download on the", - "getOn": "Get on", - "orGetOn": "Or get on", - "openDriveWeb": "Open Drive Web", - "iPhone": "App Store", - "iPad": "App Store", - "Android": "Play Store", - "Windows": "Windows", - "Linux": "Linux", - "UNIX": "Linux", - "MacOS": "Mac" - } - }, - "FeatureSection": { - "title": "Protect your pics with Internxt Photos", - "description": "With Internxt, you are the absolute only one with access to your files. Store, share, and back up your images in complete privacy.", - "cta": "Get started" - }, - "FaqSection": { - "title": "Questions? We have answers", - "faq": [ - { - "question": "How do I sync my files and photos in Internxt?", - "answer": [ - "To sync and encrypt your photos from your phone library to the Internxt cloud, simply:", - "1.Open the Internxt mobile app", - "2.Select 'Photos' and your photos will start syncing automatically" + "MadeInEuropeSection": { + "title": "Made in Europe", + "description": "Your data is protected with strict European compliance laws and regulations combined with award-winning encryption.", + "cards": { + "images": ["/images/drive/GDPR.webp", "/images/drive/redundancy.webp", "/images/drive/sustainability.webp"], + "imagesMobile": [ + "/images/drive/GDPR2.webp", + "/images/drive/Redundancy2.webp", + "/images/drive/Sustainability2.webp" + ], + "titles": ["European data centers", "Redundancy", "Commitment to sustainability "], + "descriptions": [ + "Internxt is based in Valencia, Spain, and our data centers are based in Europe and other locations worldwide, offering you security, speed, and compliance.", + "Your files are protected through redundant systems, environmental controls, and 24/7 onsite security monitoring. No matter what happens, your files always remain safe and accessible.", + "Internxt leads by example in working for a more sustainable cloud storage solution through energy-efficient practices for a cleaner and more sustainable cloud storage solution." ] - }, - { - "question": "How can I upload files from my phone?", - "answer": [ - "Open the Internxt mobile app, and tap the blue plus (+) icon at the bottom-center of the screen. Select 'Upload files' or 'Upload from camera roll' to upload a photo." + } + }, + "TableSection": { + "title": "Internxt Plans", + "valentinesTitle": "Secure love - ", + "hotLabel": "{{discount}}% off", + "planTitles": { + "header": "Select your plan", + "lifetimeHeader": "Select your lifetime plan", + "individuals": "Annual Plans", + "homePage": "Choose the right plan for you", + "lifetime": "Lifetime Plans", + "business": "Business Plans", + "lifetimeCampaign": { + "blueText": "50% off", + "normalText": "on all our exclusive lifetime plans" + } + }, + "lifetimeDescription": "Pay once and enjoy privacy and security for life", + "planDescription": "All Internxt plans are fully featured with complete access to our award-winning privacy suite consisting of Internxt Drive, Send, VPN, Antivirus, Cleaner, Dark Web Monitor, Meet and Mail.", + "businessDescription": "We're currently working on new Internxt plans designed exclusively to defend your business, protect your employees, and secure your profitability.", + "businessDescription2": "Ensure your company's data security with Internxt's encrypted cloud storage plans.", + "billingFrequency": { + "monthly": "Monthly", + "annually": "Annual", + "lifetime": "Lifetime", + "individual": "Individual", + "business": "Business" + }, + "freePlanCard": { + "eyeBrow": "Free", + "description": "Get 1 GB of encrypted cloud storage for free", + "cta": "Select plan" + }, + "features": { + "endToEnd": "End-to-end encryption", + "openSource": "Open source and audited", + "anonymousAccount": "Anonymous account creation", + "premiumSupport": "Premium customer support", + "guarantee": "30-day money-back guarantee" + }, + "planStorage": { + "essential": "1TB", + "premium": "3TB", + "ultimate": "5TB" + } + }, + "SemanticAccordion": { + "title": "Have any questions about Internxt Photos? We have answers", + "items": [ + { + "question": "What is Internxt Photos?", + "answer": [ + "Internxt Photos is an end-to-end encrypted cloud storage for photos app, allowing you to store, sync, and automatically back up your photos and albums in total privacy." + ] + }, + { + "question": "What plan includes Internxt Photos?", + "answer": [ + "Internxt Photos is included for all Ultimate annual and lifetime plans. This also gives you access to 5TB of cloud storage and access to our full privacy suite." + ] + }, + { + "question": "Why should I use encrypted photo storage?", + "answer": [ + "Encrypted photo storage matters because most mainstream cloud photo services are not fully private. Big tech companies can view your private photos and albums in certain situations, such as moderation, AI processing, or legal requests, depending on how the service is designed." + ] + }, + { + "question": "Is Internxt Photos an alternative to Google Photos?", + "answer": [ + "Yes, Internxt Photos is a private and secure alternative to Google Photos that protects your photos with zero-knowledge and post-quantum encryption so nobody can access your files except you. ", + "With Internxt Photos, you also get access to Internxt’s full product suite which includes Drive, VPN, Meet, Mail, and more." + ] + } ] - } - ] - }, - "CtaSection": { - "title": "Try Internxt risk-free", - "description": "Protect the really important stuff with Internxt's secure, private, and encrypted cloud storage.", - "cta": "Select a plan now" - } -} + } +} \ No newline at end of file diff --git a/src/pages/photos.tsx b/src/pages/photos.tsx index 9d7cd158c..b6979f81c 100644 --- a/src/pages/photos.tsx +++ b/src/pages/photos.tsx @@ -156,7 +156,7 @@ export function getServerSideProps(ctx: GetServerSidePropsContext) { const locale = ctx.locale as string; const metatagsDescription = require(`@/assets/lang/${locale}/metatags-descriptions.json`); const navbarText = require(`@/assets/lang/${locale}/navbar.json`); - const textContent = require(`@/assets/lang/${locale}/photo.json`); + const textContent = require(`@/assets/lang/${locale}/photos.json`); const footerText = require(`@/assets/lang/${locale}/footer.json`); const relationalLinksText = require(`@/assets/lang/${locale}/relational-links.json`); From ba0ee07b0707eb996d09dbb82f996100d1723761 Mon Sep 17 00:00:00 2001 From: internxt-yu Date: Thu, 6 Aug 2026 10:36:31 +0200 Subject: [PATCH 06/11] changed metatags id and folder name to photos --- src/assets/lang/en/metatags-descriptions.json | 7 +------ .../{photo => photos}/CoreFeaturesSection.tsx | 0 src/components/{photo => photos}/HeroSection.tsx | 0 .../HorizontalScrollableSection.tsx | 0 .../HorizontalScrollableWithPhotoSection.tsx | 0 src/components/{photo => photos}/PhotoSection.tsx | 0 src/pages/photos.tsx | 12 ++++++------ 7 files changed, 7 insertions(+), 12 deletions(-) rename src/components/{photo => photos}/CoreFeaturesSection.tsx (100%) rename src/components/{photo => photos}/HeroSection.tsx (100%) rename src/components/{photo => photos}/HorizontalScrollableSection.tsx (100%) rename src/components/{photo => photos}/HorizontalScrollableWithPhotoSection.tsx (100%) rename src/components/{photo => photos}/PhotoSection.tsx (100%) diff --git a/src/assets/lang/en/metatags-descriptions.json b/src/assets/lang/en/metatags-descriptions.json index 606a7b17b..cdac8c96c 100644 --- a/src/assets/lang/en/metatags-descriptions.json +++ b/src/assets/lang/en/metatags-descriptions.json @@ -44,11 +44,6 @@ "title": "Media Area — Internxt", "description": "Internxt Media Area - Find out more about Internxt’s products and mission and download our media kit of screenshots and mockups for the media and journalists." }, - { - "id": "photos", - "title": "Internxt Photos – Safe Photo Storage & Image Backup", - "description": "Save, view, and sync your photos and images across all devices with Internxt Photos. End-to-end encrypted cloud photo sharing and image backup." - }, { "id": "pricing", "title": "Best Cloud Storage Pricing & Cost", @@ -780,7 +775,7 @@ "description": "Internxt Mail is an encrypted email solution that keeps your inbox safe. Thanks to post-quantum encryption, Internxt is the most secure email service for privacy." }, { - "id": "photo", + "id": "photos", "title": "Internxt Photos – Secure Cloud Storage for Photos", "description": "Internxt Photos is a private, secure photo storage app for automatic backups and syncing. Zero-knowledge, open source, and private." } diff --git a/src/components/photo/CoreFeaturesSection.tsx b/src/components/photos/CoreFeaturesSection.tsx similarity index 100% rename from src/components/photo/CoreFeaturesSection.tsx rename to src/components/photos/CoreFeaturesSection.tsx diff --git a/src/components/photo/HeroSection.tsx b/src/components/photos/HeroSection.tsx similarity index 100% rename from src/components/photo/HeroSection.tsx rename to src/components/photos/HeroSection.tsx diff --git a/src/components/photo/HorizontalScrollableSection.tsx b/src/components/photos/HorizontalScrollableSection.tsx similarity index 100% rename from src/components/photo/HorizontalScrollableSection.tsx rename to src/components/photos/HorizontalScrollableSection.tsx diff --git a/src/components/photo/HorizontalScrollableWithPhotoSection.tsx b/src/components/photos/HorizontalScrollableWithPhotoSection.tsx similarity index 100% rename from src/components/photo/HorizontalScrollableWithPhotoSection.tsx rename to src/components/photos/HorizontalScrollableWithPhotoSection.tsx diff --git a/src/components/photo/PhotoSection.tsx b/src/components/photos/PhotoSection.tsx similarity index 100% rename from src/components/photo/PhotoSection.tsx rename to src/components/photos/PhotoSection.tsx diff --git a/src/pages/photos.tsx b/src/pages/photos.tsx index b6979f81c..2eba2e269 100644 --- a/src/pages/photos.tsx +++ b/src/pages/photos.tsx @@ -5,13 +5,13 @@ import Layout from '@/components/layout/Layout'; import Navbar from '@/components/layout/navbars/Navbar'; import FAQSection from "@/components/shared/sections/FaqSection"; import { PhotoText, RelationalLinksText } from '@/assets/types/photos'; -import HorizontalScrollableSection from '@/components/photo/HorizontalScrollableSection'; -import { HeroSection } from '@/components/photo/HeroSection'; -import PhotoSection from '@/components/photo/PhotoSection'; -import CoreFeaturesSection from '@/components/photo/CoreFeaturesSection'; +import HorizontalScrollableSection from '@/components/photos/HorizontalScrollableSection'; +import { HeroSection } from '@/components/photos/HeroSection'; +import PhotoSection from '@/components/photos/PhotoSection'; +import CoreFeaturesSection from '@/components/photos/CoreFeaturesSection'; import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2'; import ThreeCardsSection from '@/components/shared/sections/ThreeCardsWithImagesSection'; -import HorizontalScrollableWithPhotoSection from '@/components/photo/HorizontalScrollableWithPhotoSection' +import HorizontalScrollableWithPhotoSection from '@/components/photos/HorizontalScrollableWithPhotoSection' import RelationalLinks from '@/components/shared/sections/RelationalLinks'; import { PricingSectionWrapper } from '@/components/shared/pricing/PricingSectionWrapper'; import usePricing from '@/hooks/usePricing'; @@ -35,7 +35,7 @@ const Photo = ({ locale, relationalLinksText, } : PhotoProps): JSX.Element => { - const metatags = metatagsDescription.find((metatag) => metatag.id === 'photo'); + const metatags = metatagsDescription.find((metatag) => metatag.id === 'photos'); const lang = locale as string; const { products, From 8684c57a26fd256a4e36d40315e1916b52f1cc19 Mon Sep 17 00:00:00 2001 From: internxt-yu Date: Thu, 6 Aug 2026 11:43:30 +0200 Subject: [PATCH 07/11] fix for spacing for longer texts in herosection --- src/components/photos/HeroSection.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/photos/HeroSection.tsx b/src/components/photos/HeroSection.tsx index f31380930..f52ed0c1a 100644 --- a/src/components/photos/HeroSection.tsx +++ b/src/components/photos/HeroSection.tsx @@ -7,7 +7,7 @@ export const HeroSection = ({ textContent }) => { return (
Date: Thu, 6 Aug 2026 13:45:07 +0200 Subject: [PATCH 08/11] fix garatee text size in mobile version --- src/components/photos/HeroSection.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/photos/HeroSection.tsx b/src/components/photos/HeroSection.tsx index f52ed0c1a..c7db78339 100644 --- a/src/components/photos/HeroSection.tsx +++ b/src/components/photos/HeroSection.tsx @@ -32,7 +32,7 @@ export const HeroSection = ({ textContent }) => {
-

+

{textContent.garantee}

From e323b52abc2afd1bf373f58335f30ad366f4bcf2 Mon Sep 17 00:00:00 2001 From: internxt-yu Date: Thu, 6 Aug 2026 15:53:04 +0200 Subject: [PATCH 09/11] added translations and link in navbar and footer --- src/assets/lang/de/footer.json | 3 ++- src/assets/lang/de/navbar.json | 3 ++- src/assets/lang/en/footer.json | 3 ++- src/assets/lang/en/navbar.json | 3 ++- src/assets/lang/es/footer.json | 3 ++- src/assets/lang/es/navbar.json | 3 ++- src/assets/lang/fr/footer.json | 3 ++- src/assets/lang/fr/navbar.json | 3 ++- src/assets/lang/it/footer.json | 3 ++- src/assets/lang/it/navbar.json | 3 ++- src/assets/lang/ru/footer.json | 3 ++- src/assets/lang/ru/navbar.json | 3 ++- src/assets/lang/zh-tw/footer.json | 3 ++- src/assets/lang/zh-tw/navbar.json | 3 ++- src/assets/lang/zh/footer.json | 3 ++- src/assets/lang/zh/navbar.json | 3 ++- src/assets/types/layout/footer.ts | 1 + src/assets/types/layout/navbar.ts | 1 + .../layout/components/navbar/ItemsNavigation.tsx | 3 ++- src/components/layout/footers/Footer.tsx | 14 +++++++++++++- src/components/layout/navbars/Navbar.tsx | 6 ++++++ 21 files changed, 55 insertions(+), 18 deletions(-) diff --git a/src/assets/lang/de/footer.json b/src/assets/lang/de/footer.json index d8cf62a07..c9ef1d77f 100644 --- a/src/assets/lang/de/footer.json +++ b/src/assets/lang/de/footer.json @@ -32,7 +32,8 @@ "business": "Internxt für Unternehmen", "family": "Internxt für Familien", "pricing": "Preise", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "company": { "title": "Firma", diff --git a/src/assets/lang/de/navbar.json b/src/assets/lang/de/navbar.json index 2c027efaa..61ed7b066 100644 --- a/src/assets/lang/de/navbar.json +++ b/src/assets/lang/de/navbar.json @@ -25,7 +25,8 @@ "cleaner": "Internxt Cleaner", "meet": "Internxt Meet", "ai": "Internxt AI", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "solutions": { "secureCloudStorage": "Sichere Cloud-Speicherung", diff --git a/src/assets/lang/en/footer.json b/src/assets/lang/en/footer.json index e26a38f60..30f3a274c 100644 --- a/src/assets/lang/en/footer.json +++ b/src/assets/lang/en/footer.json @@ -32,7 +32,8 @@ "business": "Internxt for Business", "family": "Internxt for Families", "pricing": "Cloud storage pricing", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "company": { "title": "Company", diff --git a/src/assets/lang/en/navbar.json b/src/assets/lang/en/navbar.json index b0aed8e1b..da43d5957 100644 --- a/src/assets/lang/en/navbar.json +++ b/src/assets/lang/en/navbar.json @@ -25,7 +25,8 @@ "cleaner": "Internxt Cleaner", "meet": "Internxt Meet", "ai": "Internxt AI", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "solutions": { "secureCloudStorage": "Secure Cloud Storage", diff --git a/src/assets/lang/es/footer.json b/src/assets/lang/es/footer.json index 8137f1843..2f69531e6 100644 --- a/src/assets/lang/es/footer.json +++ b/src/assets/lang/es/footer.json @@ -32,7 +32,8 @@ "business": "Internxt para Empresas", "family": "Internxt para Familias", "pricing": "Precios", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "company": { "title": "Compañía", diff --git a/src/assets/lang/es/navbar.json b/src/assets/lang/es/navbar.json index 864c096fa..941e893f0 100644 --- a/src/assets/lang/es/navbar.json +++ b/src/assets/lang/es/navbar.json @@ -40,7 +40,8 @@ "cleaner": "Internxt Cleaner", "meet": "Internxt Meet", "ai": "Internxt AI", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "Auth": { "SignUp": { diff --git a/src/assets/lang/fr/footer.json b/src/assets/lang/fr/footer.json index cb7e86e23..f085d387e 100644 --- a/src/assets/lang/fr/footer.json +++ b/src/assets/lang/fr/footer.json @@ -32,7 +32,8 @@ "business": "Internxt pour les Entreprises", "family": "Internxt pour les Familles", "pricing": "Tarifs", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "company": { "title": "Entreprise", diff --git a/src/assets/lang/fr/navbar.json b/src/assets/lang/fr/navbar.json index a53f0662e..8b45a78ff 100644 --- a/src/assets/lang/fr/navbar.json +++ b/src/assets/lang/fr/navbar.json @@ -40,7 +40,8 @@ "cleaner": "Internxt Cleaner", "meet": "Internxt Meet", "ai": "Internxt AI", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "Auth": { "SignUp": { diff --git a/src/assets/lang/it/footer.json b/src/assets/lang/it/footer.json index e0c1d65d0..3c7768688 100644 --- a/src/assets/lang/it/footer.json +++ b/src/assets/lang/it/footer.json @@ -32,7 +32,8 @@ "business": "Internxt per Aziende", "family": "Internxt per Famiglie", "pricing": "Prezzi", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "company": { "title": "Azienda", diff --git a/src/assets/lang/it/navbar.json b/src/assets/lang/it/navbar.json index d62984a27..aec6431b9 100644 --- a/src/assets/lang/it/navbar.json +++ b/src/assets/lang/it/navbar.json @@ -41,7 +41,8 @@ "meet": "Internxt Meet", "ai": "Internxt AI", "certifications": "Certificazioni", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "Auth": { "SignUp": { diff --git a/src/assets/lang/ru/footer.json b/src/assets/lang/ru/footer.json index 492eccd51..c8b7532a5 100644 --- a/src/assets/lang/ru/footer.json +++ b/src/assets/lang/ru/footer.json @@ -32,7 +32,8 @@ "business": "Internxt для бизнеса", "family": "Internxt для семьи", "pricing": "Цены", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "company": { "title": "Компания", diff --git a/src/assets/lang/ru/navbar.json b/src/assets/lang/ru/navbar.json index e472eb66a..75d4d4b5c 100644 --- a/src/assets/lang/ru/navbar.json +++ b/src/assets/lang/ru/navbar.json @@ -41,7 +41,8 @@ "meet": "Internxt Meet", "ai": "Internxt AI", "certifications": "Сертификаты", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "Auth": { "SignUp": { diff --git a/src/assets/lang/zh-tw/footer.json b/src/assets/lang/zh-tw/footer.json index 4b8b92b90..92983f5f0 100644 --- a/src/assets/lang/zh-tw/footer.json +++ b/src/assets/lang/zh-tw/footer.json @@ -32,7 +32,8 @@ "business": "Internxt 企業版", "family": "Internxt 家庭版", "pricing": "價格", - "mail": "Internxt Mail (加密電子郵件)" + "mail": "Internxt Mail (加密電子郵件)", + "photos": "Internxt Photos (加密照片)" }, "company": { "title": "公司", diff --git a/src/assets/lang/zh-tw/navbar.json b/src/assets/lang/zh-tw/navbar.json index 2963b48b2..2bb3ed73e 100644 --- a/src/assets/lang/zh-tw/navbar.json +++ b/src/assets/lang/zh-tw/navbar.json @@ -25,7 +25,8 @@ "cleaner": "Internxt Cleaner", "meet": "Internxt Meet", "ai": "Internxt AI", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "ourValues": { "privacy": "隱私", diff --git a/src/assets/lang/zh/footer.json b/src/assets/lang/zh/footer.json index 6b8fe7969..528d4a645 100644 --- a/src/assets/lang/zh/footer.json +++ b/src/assets/lang/zh/footer.json @@ -32,7 +32,8 @@ "business": "Internxt 商业版", "family": "Internxt 家庭版", "pricing": "价格", - "mail": "Internxt Mail (加密电子邮件)" + "mail": "Internxt Mail (加密电子邮件)", + "photos": "Internxt Photos (加密照片)" }, "company": { "title": "公司", diff --git a/src/assets/lang/zh/navbar.json b/src/assets/lang/zh/navbar.json index dfc68f78a..bb12ff5ca 100644 --- a/src/assets/lang/zh/navbar.json +++ b/src/assets/lang/zh/navbar.json @@ -25,7 +25,8 @@ "cleaner": "Internxt Cleaner", "meet": "Internxt Meet", "ai": "Internxt AI", - "mail": "Internxt Mail" + "mail": "Internxt Mail", + "photos": "Internxt Photos" }, "solutions": { "secureCloudStorage": "安全云存储", diff --git a/src/assets/types/layout/footer.ts b/src/assets/types/layout/footer.ts index e8989e82d..cec59a216 100644 --- a/src/assets/types/layout/footer.ts +++ b/src/assets/types/layout/footer.ts @@ -74,6 +74,7 @@ export interface Products { family: string; pricing: string; mail: string; + photos: string; } export interface Resources { diff --git a/src/assets/types/layout/navbar.ts b/src/assets/types/layout/navbar.ts index c4e161681..bad27506f 100644 --- a/src/assets/types/layout/navbar.ts +++ b/src/assets/types/layout/navbar.ts @@ -51,6 +51,7 @@ export interface Products { meet: string; ai: string; mail: string; + photos: string; } export interface Auth { diff --git a/src/components/layout/components/navbar/ItemsNavigation.tsx b/src/components/layout/components/navbar/ItemsNavigation.tsx index f2176001c..8211db98c 100644 --- a/src/components/layout/components/navbar/ItemsNavigation.tsx +++ b/src/components/layout/components/navbar/ItemsNavigation.tsx @@ -131,7 +131,8 @@ export const ItemsNavigation = ({ { href: '/vpn', text: textContent.products.vpn }, { href: '/cleaner', text: textContent.products.cleaner }, { href: '/meet', text: textContent.products.meet }, - { href: '/mail', text: textContent.products.mail } + { href: '/mail', text: textContent.products.mail }, + { href: '/photos', text: textContent.products.photos } ]} darkMode={darkMode} lang={lang} diff --git a/src/components/layout/footers/Footer.tsx b/src/components/layout/footers/Footer.tsx index e620ec681..867980c05 100644 --- a/src/components/layout/footers/Footer.tsx +++ b/src/components/layout/footers/Footer.tsx @@ -295,7 +295,15 @@ export default function Footer({ {textContent.FooterSection.sections.products.mail} - + + {textContent.FooterSection.sections.products.photos} + + {textContent.FooterSection.sections.products.pricing} @@ -1000,6 +1008,10 @@ export default function Footer({ {textContent.FooterSection.sections.products.mail} + + {textContent.FooterSection.sections.products.photos} + + {textContent.FooterSection.sections.products.pricing} diff --git a/src/components/layout/navbars/Navbar.tsx b/src/components/layout/navbars/Navbar.tsx index a46f672ce..e39ee8e38 100644 --- a/src/components/layout/navbars/Navbar.tsx +++ b/src/components/layout/navbars/Navbar.tsx @@ -295,6 +295,12 @@ export default function Navbar(props: Readonly) {

{props.textContent.products.meet}

+ + +

{props.textContent.products.mail}

+ + +

{props.textContent.products.photos}

Date: Fri, 7 Aug 2026 10:55:23 +0200 Subject: [PATCH 10/11] adjust spacing and text size --- src/components/photos/CoreFeaturesSection.tsx | 6 +++--- .../photos/HorizontalScrollableWithPhotoSection.tsx | 4 +--- src/components/photos/PhotoSection.tsx | 4 ++-- src/components/shared/sections/FaqSection.tsx | 2 +- src/pages/photos.tsx | 4 ---- 5 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/components/photos/CoreFeaturesSection.tsx b/src/components/photos/CoreFeaturesSection.tsx index 3d69f4f96..f8bb1d4b7 100644 --- a/src/components/photos/CoreFeaturesSection.tsx +++ b/src/components/photos/CoreFeaturesSection.tsx @@ -38,10 +38,10 @@ const CoreFeaturesSection = ({ textContent }: CoreFeaturesSectionProps): JSX.Ele return (
-
+

{textContent.title}

-

{textContent.description}

-
+

{textContent.description}

+
): JSX.Element { const cardTitles = textContent?.scrollableSection.titles ?? []; const cardDescriptions = textContent?.scrollableSection.descriptions ?? []; @@ -88,7 +86,7 @@ export default function HorizontalScrollableSectionWithPhotosSection({ return (
diff --git a/src/components/photos/PhotoSection.tsx b/src/components/photos/PhotoSection.tsx index 9b3706e3f..911f608dd 100644 --- a/src/components/photos/PhotoSection.tsx +++ b/src/components/photos/PhotoSection.tsx @@ -10,8 +10,8 @@ interface PhotoSectionProps { const PhotoSection = ({ textContent }: PhotoSectionProps): JSX.Element => { return ( -
-

{textContent.title}

+
+

{textContent.title}

diff --git a/src/components/shared/sections/FaqSection.tsx b/src/components/shared/sections/FaqSection.tsx index 6d7284bf2..4e52f14dc 100644 --- a/src/components/shared/sections/FaqSection.tsx +++ b/src/components/shared/sections/FaqSection.tsx @@ -31,7 +31,7 @@ const FAQSection = ({ >
diff --git a/src/pages/photos.tsx b/src/pages/photos.tsx index 2eba2e269..ea7f5cb04 100644 --- a/src/pages/photos.tsx +++ b/src/pages/photos.tsx @@ -132,10 +132,6 @@ const Photo = ({ bgPadding="lg:py-20 lg:pb-20 pb-10" /> -
-
-
- Date: Fri, 7 Aug 2026 14:50:46 +0200 Subject: [PATCH 11/11] added new tag and adjust spacing --- src/components/layout/footers/Footer.tsx | 46 ++++++++++++------- .../shared/sections/RelationalLinks.tsx | 2 +- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/components/layout/footers/Footer.tsx b/src/components/layout/footers/Footer.tsx index 867980c05..e1f680c74 100644 --- a/src/components/layout/footers/Footer.tsx +++ b/src/components/layout/footers/Footer.tsx @@ -278,30 +278,44 @@ export default function Footer({ -
{textContent.FooterSection.sections.products.objStorage}
+ {textContent.FooterSection.sections.products.mail} + + {textContent.FooterSection.new} + - {textContent.FooterSection.sections.products.mail} + {textContent.FooterSection.sections.products.photos} + + {textContent.FooterSection.new} + - {textContent.FooterSection.sections.products.photos} +
{textContent.FooterSection.sections.products.objStorage}
@@ -995,6 +1009,14 @@ export default function Footer({ {textContent.FooterSection.sections.products.ai} + + {textContent.FooterSection.sections.products.mail} + + + + {textContent.FooterSection.sections.products.photos} + + - - {textContent.FooterSection.sections.products.mail} - - - - {textContent.FooterSection.sections.products.photos} - - {textContent.FooterSection.sections.products.pricing} diff --git a/src/components/shared/sections/RelationalLinks.tsx b/src/components/shared/sections/RelationalLinks.tsx index 5fb97f850..dc73b607f 100644 --- a/src/components/shared/sections/RelationalLinks.tsx +++ b/src/components/shared/sections/RelationalLinks.tsx @@ -105,7 +105,7 @@ const RelationalLinks = ({ textContent }: RelationalLinksProps) => { if (cards.length === 0) return null; return ( -
+

{textContent.title}