diff --git a/src/pages/compute/ComputeDesign.tsx b/src/pages/compute/ComputeDesign.tsx index f2c70b7..f2bc740 100644 --- a/src/pages/compute/ComputeDesign.tsx +++ b/src/pages/compute/ComputeDesign.tsx @@ -1,4 +1,4 @@ -import { Eyebrow, H3, P, CP, CT } from '@/components/Texts' +import { CP, CT } from '@/components/Texts' import { ArrowPathIcon, GlobeAltIcon, diff --git a/src/pages/compute/ComputeFeatures.tsx b/src/pages/compute/ComputeFeatures.tsx index 4016fa2..8e14a96 100644 --- a/src/pages/compute/ComputeFeatures.tsx +++ b/src/pages/compute/ComputeFeatures.tsx @@ -1,68 +1,102 @@ -import { Container } from '@/components/Container' -import { Eyebrow, SectionHeader, P, Small } from '@/components/Texts' -const featureGroups = [ - { - title: 'Self-Managing Infrastructure', - description: - 'Scaling, healing, and failover happen automatically, no manual intervention.', - }, - { - title: 'Secure, Stateless Execution', - description: - 'Workloads remain isolated, reproducible, and portable, no environment drift or configuration decay.', - }, - { - title: 'Zero-Image Delivery', - description: - 'Deploy workloads using metadata instead of large container images for instant launches.', - }, - { - title: 'Global Placement Control', - description: - 'Choose where workloads run, on your hardware or across the decentralized grid.', - }, -] +import { Container } from '@/components/Container' +import { Eyebrow, SectionHeader, H3, P, Small, CT, CP } from '@/components/Texts' +import { + ArrowTrendingUpIcon, + ChatBubbleLeftRightIcon, + MagnifyingGlassIcon, + ServerStackIcon, +} from '@heroicons/react/24/solid' export function ComputeFeatures() { return ( -
- -
- - Core Features +
+ + {/* ✅ Top horizontal line with spacing */} +
+
+ +
+ + {/* ✅ LEFT SIDE — Title + Intro */} +
+ + Core Components - - Precision infrastructure that verifies itself. - -

- Every layer is designed for determinism, from how workloads are - declared to the way they scale, protect, and govern themselves on - the grid. + +

+ Network Capabilities +

+ +

+ Built for resilience and autonomy, the Mycelium Network dynamically connects nodes + through intelligent routing, proxy discovery, and decentralized delivery. +

+ +

+ Each component — from message passing to content distribution — works in harmony + to create a fully self-healing, self-optimizing data mesh.

-
- {featureGroups.map((feature) => ( -
-
- - Feature - -

- {feature.title} -

-

- {feature.description} -

-
-
- ))} + {/* ✅ RIGHT SIDE — 4 items stacked with dividers */} +
+ + {/* 1 — Routing */} +
+

+ + Automatic routing & pathfinding +

+

+ The Mycelium Network automatically discovers the shortest and fastest + routes between nodes, ensuring optimal data flow and network efficiency. +

+
+
+ + {/* 2 — Distributed bus */} +
+

+ + Distributed message bus +

+

+ Nodes exchange information seamlessly through a resilient global + message layer, enabling asynchronous decentralized communication. +

+
+
+ + {/* 3 — Proxy detection */} +
+

+ + Automatic proxy discovery +

+

+ The network scans for open SOCKS5 proxies so devices can join and + connect without manual setup or configuration. +

+
+
+ + {/* 4 — Delivery / CDN */} +
+

+ + Decentralized content distribution +

+

+ Data can be served from distributed 0-DBs, forming a CDN-like delivery + layer that is faster and more resilient than centralized servers. +

+
- +
+ {/* ✅ Bottom horizontal line with spacing */} +
+
) } diff --git a/src/pages/home/HomeBenefits.tsx b/src/pages/home/HomeBenefits.tsx index 8ce3ff6..a45661b 100644 --- a/src/pages/home/HomeBenefits.tsx +++ b/src/pages/home/HomeBenefits.tsx @@ -1,305 +1,69 @@ -import createGlobe from "cobe"; -import { useEffect, useRef } from "react"; -import { motion } from "motion/react"; -import { IconBrandYoutubeFilled } from "@tabler/icons-react"; -import { H2, CP, Eyebrow } from '@/components/Texts' +import { CP } from '@/components/Texts' +import { + ShieldCheckIcon, + GlobeAltIcon, + BoltIcon, + BanknotesIcon, +} from '@heroicons/react/24/solid' +const benefits = [ + { + id: 1, + title: "Unbreakable by Design", + desc: "No central cloud to censor or fail. The network heals itself.", + icon: ShieldCheckIcon, + }, + { + id: 2, + title: "Sovereign by Default", + desc: "Identity, compute, and data belong to you – cryptographically.", + icon: GlobeAltIcon, + }, + { + id: 3, + title: "Hackable & Open", + desc: "Learn, build, and experiment without permission.", + icon: BoltIcon, + }, + { + id: 4, + title: "Cost & Energy Efficient", + desc: "Distributed hardware eliminates hyperscale overhead.", + icon: BanknotesIcon, + }, +]; export function HomeBenefits() { - const features = [ - { - title: "Unbreakable by Design", - description: - "No central cloud to censor or fail. The network heals itself.", - image: "/images/benefits/energy.webp", - }, - { - title: "Sovereign by Default", - description: - "Identity, compute, and data belong to you – cryptographically.", - image: "/images/benefits/sovereign.webp", - }, - { - title: "Hackable & Open", - description: - "Learn, build, and experiment without permission.", - image: "/images/benefits/autonomous.webp", - }, - - { - title: "Cost & Energy Efficient", - description: - "Distributed hardware eliminates hyperscale overhead.", - image: "/images/benefits/cost.webp", - }, - ]; return ( -
-
- - Benefits - -

- Why It Matters -

+
+ + {/* ✅ Top horizontal line with spacing */} +
+
+ + {/* ✅ Main content */} +
+
+ {benefits.map((item) => ( +
+ +

+ {item.title} +

+ + {item.desc} + +
+ ))} +
-
-
-
-
-
- {features[0].title} -
-
-

{features[0].title}

- - {features[0].description} - -
-
-
-
-
-
-
-
- {features[1].title} -
-
-

{features[1].title}

- - {features[1].description} - -
-
-
-
-
-
-
-
- {features[2].title} -
-
-

{features[2].title}

- - {features[2].description} - -
-
-
-
-
-
-
-
- {features[3].title} -
-
-

{features[3].title}

- - {features[3].description} - -
-
-
-
-
+ {/* ✅ Bottom line + spacing */} +
+
); } - - -export const SkeletonOne = () => { - return ( -
-
-
- {/* TODO */} - header -
-
- -
-
-
- ); -}; - -export const SkeletonThree = () => { - return ( - -
-
- {/* TODO */} - - header -
-
-
- ); -}; - -export const SkeletonTwo = () => { - const images = [ - "https://images.unsplash.com/photo-1517322048670-4fba75cbbb62?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", - "https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=3425&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", - "https://images.unsplash.com/photo-1555400038-63f5ba517a47?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", - "https://images.unsplash.com/photo-1554931670-4ebfabf6e7a9?q=80&w=3387&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", - "https://images.unsplash.com/photo-1546484475-7f7bd55792da?q=80&w=2581&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D", - ]; - - const imageVariants = { - whileHover: { - scale: 1.1, - rotate: 0, - zIndex: 100, - }, - whileTap: { - scale: 1.1, - rotate: 0, - zIndex: 100, - }, - }; - return ( -
- {/* TODO */} -
- {images.map((image, idx) => ( - - bali images - - ))} -
-
- {images.map((image, idx) => ( - - bali images - - ))} -
- -
-
-
- ); -}; - -export const SkeletonFour = () => { - return ( -
- -
- ); -}; - -export const Globe = ({ className }: { className?: string }) => { - const canvasRef = useRef(null); - - useEffect(() => { - let phi = 0; - - if (!canvasRef.current) return; - - const globe = createGlobe(canvasRef.current, { - devicePixelRatio: 2, - width: 600 * 2, - height: 600 * 2, - phi: 0, - theta: 0, - dark: 1, - diffuse: 1.2, - mapSamples: 16000, - mapBrightness: 6, - baseColor: [0.3, 0.3, 0.3], - markerColor: [0.1, 0.8, 1], - glowColor: [1, 1, 1], - markers: [ - // longitude latitude - { location: [37.7595, -122.4367], size: 0.03 }, - { location: [40.7128, -74.006], size: 0.1 }, - ], - onRender: (state) => { - // Called on every animation frame. - // `state` will be an empty object, return updated params. - state.phi = phi; - phi += 0.01; - }, - }); - - return () => { - globe.destroy(); - }; - }, []); - - return ( - - ); -}; diff --git a/src/pages/home/HomePage.tsx b/src/pages/home/HomePage.tsx index 74f8988..c0a74bb 100644 --- a/src/pages/home/HomePage.tsx +++ b/src/pages/home/HomePage.tsx @@ -7,7 +7,7 @@ import { CallToAction } from './CallToAction' import { HomeHosting } from './HomeHosting' import { HomeAurora } from './HomeAurora' import { HomeTab } from './HomeTab' - +import { HomeBenefits } from './HomeBenefits' export default function HomePage() { @@ -37,6 +37,9 @@ export default function HomePage() { + + +