refactor: consolidate cloud and agents page components

- Removed duplicate hero component variations (AgentsHero/AgentsHeroAlt, CloudHero/CloudHeroAlt)
- Deleted unused CloudCTA, CloudGettingStarted, and CloudDesign components
- Cleaned up empty files and legacy page structure
This commit is contained in:
2025-11-06 15:00:37 +01:00
parent b1c59a9b5a
commit b3836062a3
43 changed files with 193 additions and 71 deletions

View File

@@ -0,0 +1,120 @@
import { Container } from '../../../components/Container'
import { Eyebrow, SectionHeader, P } from '../../../components/Texts'
type Experience = {
title: string
description: string
code: string
language: string
}
const experiences: Experience[] = [
{
title: 'S3-Compatible Access',
description:
'Use familiar AWS SDKs to read and write data against the Mycelium Storage endpoint.',
language: 'python',
code: `import boto3
s3_client = boto3.client(
's3',
endpoint_url='https://storage.mycelium.com',
aws_access_key_id='your_access_key',
aws_secret_access_key='your_secret_key'
)
s3_client.upload_file('local_file.txt', 'my-bucket', 'remote_file.txt')
s3_client.download_file('my-bucket', 'remote_file.txt', 'downloaded_file.txt')`,
},
{
title: 'WebDAV Mount',
description:
'Mount storage as a filesystem for desktop workflows and legacy integrations.',
language: 'bash',
code: `mount -t davfs https://storage.mycelium.com/dav /mnt/storage
cp /mnt/storage/data.txt ./
echo "Data updated" > /mnt/storage/updated.txt`,
},
{
title: 'IPFS Integration',
description:
'Leverage IPFS for decentralized addressability without duplicating datasets.',
language: 'python',
code: `import ipfshttpclient
client = ipfshttpclient.connect('/ip4/127.0.0.1/tcp/5001')
result = client.add('data.txt')
print(f"File available at: {result['Hash']}")`,
},
{
title: 'Geo-Aware Placement Policy',
description:
'Declare residency, redundancy, and protocol availability in a single configuration.',
language: 'yaml',
code: `apiVersion: v1
kind: ConfigMap
metadata:
name: storage-config
data:
placement: |
geo_aware_storage:
residency: "eu-west"
redundancy: 3
zones:
- "zone-1"
- "zone-2"
- "zone-3"
protocols:
- "s3"
- "ipfs"
- "webdav"`,
},
]
export function StorageDeveloperExperience() {
return (
<section
id="storage-developer-experience"
className="bg-gray-900 py-24 sm:py-32"
>
<Container>
<div className="mx-auto max-w-3xl text-center">
<Eyebrow className="tracking-[0.32em] uppercase text-cyan-300">
Developer Experience
</Eyebrow>
<SectionHeader as="h2" color="light" className="mt-6">
Build with the interfaces you already know.
</SectionHeader>
<P color="lightSecondary" className="mt-6">
Every protocol rides the same quantum-safe storage fabric, so moving
between APIs is as simple as switching adapters. Choose the workflow
that fits your stack.
</P>
</div>
<div className="mt-16 grid gap-8 lg:grid-cols-2">
{experiences.map((experience) => (
<div
key={experience.title}
className="flex h-full flex-col rounded-3xl border border-white/10 bg-white/4 p-8 backdrop-blur-sm transition hover:-translate-y-1 hover:border-cyan-300/50 hover:bg-white/8"
>
<div>
<h3 className="text-xl font-semibold text-white">
{experience.title}
</h3>
<p className="mt-4 text-sm leading-relaxed text-gray-300">
{experience.description}
</p>
</div>
<pre className="mt-6 overflow-x-auto rounded-2xl border border-white/10 bg-black/70 p-4 text-xs text-cyan-100">
<code>{experience.code}</code>
</pre>
<span className="mt-4 inline-flex w-fit items-center rounded-full border border-cyan-500/40 px-3 py-1 text-[0.65rem] font-semibold uppercase tracking-[0.3em] text-cyan-200">
{experience.language}
</span>
</div>
))}
</div>
</Container>
</section>
)
}

View File

@@ -0,0 +1,65 @@
import { Container } from '../../../components/Container'
import { Eyebrow, SectionHeader, P } from '../../../components/Texts'
const differentiators = [
{
title: 'Quantum-Safe Protection',
description:
'Data is encrypted with algorithms that resist quantum attacks, preserving integrity for decades.',
},
{
title: 'Autonomous Self-Healing',
description:
'Failures and corruption are detected and repaired automatically—no on-call rotations required.',
},
{
title: 'Universal Protocol Support',
description:
'Serve the same data through IPFS, S3, WebDAV, HTTP, and native file systems without duplication.',
},
{
title: 'Geo-Aware Data Governance',
description:
'Define residency, redundancy, and distribution policies per workload and enforce them automatically.',
},
{
title: 'Ultra-Efficient Storage',
description:
'Zero-image technology reduces artifacts by up to 100x, cutting bandwidth and accelerating deployment.',
},
]
export function StorageDifferentiators() {
return (
<section className="bg-gray-950 py-24 sm:py-32">
<Container>
<div className="mx-auto max-w-3xl text-center">
<Eyebrow className="tracking-[0.32em] uppercase text-cyan-300">
Key Differentiators
</Eyebrow>
<SectionHeader as="h2" color="light" className="mt-6">
Sovereignty, resilience, and flexibility in one fabric.
</SectionHeader>
<P color="lightSecondary" className="mt-6">
Mycelium Storage blends quantum safety, autonomous operations, and
protocol choice into a single platform that meets the most demanding
requirements for modern data services.
</P>
</div>
<div className="mt-16 grid gap-8 md:grid-cols-2">
{differentiators.map((item) => (
<div
key={item.title}
className="rounded-3xl border border-white/10 bg-white/4 p-8 backdrop-blur-sm transition hover:-translate-y-1 hover:border-cyan-300/50 hover:bg-white/8"
>
<h3 className="text-lg font-semibold text-white">{item.title}</h3>
<p className="mt-4 text-sm leading-relaxed text-gray-300">
{item.description}
</p>
</div>
))}
</div>
</Container>
</section>
)
}

View File

@@ -0,0 +1,113 @@
import { Container } from '../../../components/Container'
import { Eyebrow, SectionHeader, P, Small } from '../../../components/Texts'
const features = [
{
title: 'Quantum-Safe Storage (QSS)',
description:
'Quantum-resistant encryption secures data beyond the application layer so ownership stays yours.',
bullets: [
'Beyond AES-256 with post-quantum algorithms.',
'Multi-layer protection enforced automatically.',
'Future-proof against emerging quantum threats.',
'Total control of keys, residency, and governance.',
],
},
{
title: 'Self-Healing Storage System',
description:
'Autonomous recovery heals failures or corruption instantly with no human intervention.',
bullets: [
'Instant detection and repair of anomalies.',
'Integrity preserved while data is restored.',
'Continuous verification validates every replica.',
'Zero-ops recovery that runs around the clock.',
],
},
{
title: 'Multi-Protocol Data Access',
description:
'Serve the same dataset over IPFS, S3, WebDAV, HTTP, and native file systems.',
bullets: [
'IPFS for decentralized, content-addressed retrieval.',
'S3-compatible API for existing tooling and SDKs.',
'WebDAV for mounted filesystem access.',
'HTTP and POSIX for direct application integration.',
],
},
{
title: 'Geo-Aware Placement & Replication',
description:
'Define residency, redundancy, and distribution on a per-workload basis.',
bullets: [
'Pin data to specific jurisdictions or zones.',
'Custom redundancy policies per dataset.',
'Automatic zone-to-zone replication for resilience.',
'Global distribution across the ThreeFold Grid.',
],
},
{
title: 'Ultra-Efficient Zero-Images (Flists)',
description:
'Metadata-only flists shrink images up to 100x, enabling instant Zero-OS deployments.',
bullets: [
'Drastically reduced storage footprint for artifacts.',
'Metadata-driven delivery accelerates boot times.',
'Bandwidth-efficient transfers to any node.',
'Perfect for immutable workloads and rapid rollback.',
],
},
]
export function StorageFeatures() {
return (
<section id="storage-features" className="bg-white py-24 sm:py-32">
<Container>
<div className="mx-auto max-w-3xl text-center">
<Eyebrow>
Core Features
</Eyebrow>
<SectionHeader as="h2" className="mt-6 text-gray-900">
Data services engineered for sovereignty and speed.
</SectionHeader>
<P className="mt-6 text-gray-600">
Mycelium Storage combines quantum-safe cryptography, autonomous
healing, and universal protocol support. It adapts to every workload
without sacrificing control or performance.
</P>
</div>
<div className="mt-16 grid gap-8 md:grid-cols-2">
{features.map((feature) => (
<div
key={feature.title}
className="flex h-full flex-col rounded-3xl border border-slate-200 bg-white p-8 shadow-sm transition hover:-translate-y-1 hover:border-cyan-300 hover:shadow-lg"
>
<div>
<Small className="text-xs uppercase tracking-[0.3em] text-cyan-500">
Capability
</Small>
<h3 className="mt-4 text-xl font-semibold text-gray-900">
{feature.title}
</h3>
<p className="mt-4 text-sm leading-relaxed text-gray-600">
{feature.description}
</p>
</div>
<ul className="mt-6 space-y-3 text-sm text-gray-600">
{feature.bullets.map((bullet) => (
<li
key={bullet}
className="flex items-start gap-3 rounded-2xl border border-cyan-100 bg-cyan-50/60 p-3 leading-relaxed"
>
<span className="mt-1 inline-block size-2 rounded-full bg-cyan-500" />
<span>{bullet}</span>
</li>
))}
</ul>
</div>
))}
</div>
</Container>
</section>
)
}