Compare commits
6 Commits
0e8de7e7fe
...
developmen
| Author | SHA1 | Date | |
|---|---|---|---|
| 8d1e2f4c7d | |||
| 0f2f6df299 | |||
| c56f67ae2e | |||
| 39b748cdac | |||
| 6d186c2304 | |||
| 681a7606d5 |
BIN
public/images/agents.webp
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
public/images/iot-gdb6f0c390_1280-1024x706.webp
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
public/images/kubernetes.webp
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
public/images/linux.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
public/images/logo/1_eVqphQ2aNKxqHPMPxjRzAA (1).png
Normal file
|
After Width: | Height: | Size: 286 KiB |
BIN
public/images/logo/1_eVqphQ2aNKxqHPMPxjRzAA.png
Normal file
|
After Width: | Height: | Size: 286 KiB |
BIN
public/images/logo/images.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
public/images/vm.webp
Normal file
|
After Width: | Height: | Size: 78 KiB |
@@ -5,7 +5,7 @@ const baseStyles = {
|
||||
solid:
|
||||
'inline-flex justify-center rounded-full py-2 px-5 text-base font-semibold transition-colors',
|
||||
outline:
|
||||
'inline-flex justify-center bg-white/90 hover:bg-[#fafafa] rounded-full border py-[calc(--spacing(2)-1px)] px-[calc(--spacing(5)-1px)] text-base transition-colors',
|
||||
'inline-flex justify-center bg-transparent rounded-full border py-[calc(--spacing(2)-1px)] px-[calc(--spacing(5)-1px)] text-base transition-colors',
|
||||
}
|
||||
|
||||
const variantStyles = {
|
||||
@@ -17,7 +17,7 @@ const variantStyles = {
|
||||
green: 'bg-green-500 text-white hover:bg-green-600',
|
||||
},
|
||||
outline: {
|
||||
cyan: 'border-cyan-500 text-cyan-500 hover:bg-cyan-50',
|
||||
cyan: 'border-cyan-500 text-cyan-500',
|
||||
gray: 'border-gray-300 text-gray-700 hover:border-cyan-500 active:border-cyan-500',
|
||||
white: 'border-gray-300 text-white hover:border-cyan-500 active:border-cyan-500',
|
||||
},
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import { useState } from 'react'
|
||||
import { Link, useLocation } from 'react-router-dom'
|
||||
import { Dropdown } from './ui/Dropdown'
|
||||
import { ChevronDownIcon } from '@heroicons/react/20/solid'
|
||||
import { Container } from './Container'
|
||||
import { Button } from './Button'
|
||||
import pmyceliumLogo from '../images/logos/logo_1.png'
|
||||
|
||||
import { Dialog } from '@headlessui/react'
|
||||
import { Bars3Icon, XMarkIcon } from '@heroicons/react/24/outline'
|
||||
|
||||
const cloudNavItems = [
|
||||
{ name: 'Cloud', href: '/cloud' },
|
||||
@@ -15,6 +17,7 @@ const cloudNavItems = [
|
||||
|
||||
export function Header() {
|
||||
const location = useLocation()
|
||||
const [mobileMenuOpen, setMobileMenuOpen] = useState(false)
|
||||
|
||||
const getCurrentPageName = () => {
|
||||
const currentPath = location.pathname;
|
||||
@@ -72,9 +75,84 @@ export function Header() {
|
||||
Get Mycelium Connector
|
||||
</Button>
|
||||
</div>
|
||||
<div className="lg:hidden">
|
||||
<button
|
||||
type="button"
|
||||
className="-m-2.5 inline-flex items-center justify-center rounded-md p-2.5 text-gray-700 hover:text-cyan-500 transition-colors"
|
||||
onClick={() => setMobileMenuOpen(true)}
|
||||
>
|
||||
<span className="sr-only">Open main menu</span>
|
||||
<Bars3Icon className="h-6 w-6" aria-hidden="true" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</Container>
|
||||
</nav>
|
||||
<Dialog as="div" className="lg:hidden" open={mobileMenuOpen} onClose={setMobileMenuOpen}>
|
||||
<div className="fixed inset-0 z-10" />
|
||||
<Dialog.Panel className="fixed inset-y-0 right-0 z-10 w-full overflow-y-auto bg-white px-6 py-6 sm:max-w-sm sm:ring-1 sm:ring-gray-900/10">
|
||||
<div className="flex items-center justify-between">
|
||||
<Link to="#" className="-m-1.5 p-1.5">
|
||||
<span className="sr-only">Mycelium</span>
|
||||
<img
|
||||
className="h-8 w-auto"
|
||||
src={pmyceliumLogo}
|
||||
alt=""
|
||||
/>
|
||||
</Link>
|
||||
<button
|
||||
type="button"
|
||||
className="-m-2.5 rounded-md p-2.5 text-gray-700 hover:text-cyan-500 transition-colors"
|
||||
onClick={() => setMobileMenuOpen(false)}
|
||||
>
|
||||
<span className="sr-only">Close menu</span>
|
||||
<XMarkIcon className="h-6 w-6" aria-hidden="true" />
|
||||
</button>
|
||||
</div>
|
||||
<div className="mt-6 flow-root">
|
||||
<div className="-my-6 divide-y divide-gray-500/10">
|
||||
<div className="space-y-2 py-6">
|
||||
{cloudNavItems.map((item) => (
|
||||
<Link
|
||||
key={item.name}
|
||||
to={item.href}
|
||||
className="-mx-3 block rounded-lg px-3 py-2 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50"
|
||||
>
|
||||
{item.name}
|
||||
</Link>
|
||||
))}
|
||||
<Link
|
||||
to="/network"
|
||||
className="-mx-3 block rounded-lg px-3 py-2 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50"
|
||||
>
|
||||
Network
|
||||
</Link>
|
||||
<Link
|
||||
to="/agents"
|
||||
className="-mx-3 block rounded-lg px-3 py-2 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50"
|
||||
>
|
||||
Agents
|
||||
</Link>
|
||||
</div>
|
||||
<div className="py-6">
|
||||
<Button
|
||||
to="https://myceliumcloud.tf"
|
||||
variant="outline"
|
||||
as="a"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="w-full"
|
||||
>
|
||||
Start Deployment
|
||||
</Button>
|
||||
<Button to="/download" variant="solid" color="cyan" className="mt-4 w-full">
|
||||
Get Mycelium Connector
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Dialog.Panel>
|
||||
</Dialog>
|
||||
</header>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,40 +1,43 @@
|
||||
'use client'
|
||||
|
||||
import { Button } from '@/components/Button'
|
||||
import { Eyebrow, P, H3 } from '@/components/Texts'
|
||||
import { Eyebrow, H3 } from '@/components/Texts'
|
||||
|
||||
export function AgentHeroAlt() {
|
||||
return (
|
||||
<div className="relative bg-white lg:mt-10 mt-0">
|
||||
<div className="relative h-80 overflow-hidden bg-transparent md:absolute md:right-0 md:h-full md:w-1/3 lg:w-2/3">
|
||||
<img
|
||||
alt=""
|
||||
src="/images/agents.png"
|
||||
className="size-full object-cover"
|
||||
/>
|
||||
|
||||
</div>
|
||||
<div className="relative mx-auto max-w-7xl py-24 sm:py-32 lg:px-8">
|
||||
<div className="pr-6 pl-6 md:mr-auto md:w-2/3 md:pr-16 lg:w-1/2 lg:pl-0 lg:pr-24 xl:pr-32">
|
||||
<Eyebrow className="text-base/7 font-semibold text-cyan-500">MYCELIUM AGENTS</Eyebrow>
|
||||
<H3 as="h1" className="mt-2 text-gray-900">Sovereign AI Agents, Coming Soon.</H3>
|
||||
<P className="mt-6 text-gray-600">
|
||||
<div className="">
|
||||
{/* Boxed container */}
|
||||
<div
|
||||
className="relative mx-auto max-w-7xl border border-t-0 border-b-0 border-gray-200 bg-white overflow-hidden bg-contain bg-right bg-no-repeat"
|
||||
style={{ backgroundImage: "url('/images/agents.webp')", backgroundSize: "contain" }}
|
||||
>
|
||||
{/* Inner padding */}
|
||||
<div className="px-6 py-16 lg:py-16">
|
||||
<div className="max-w-2xl lg:pl-6">
|
||||
<Eyebrow>MYCELIUM AGENTS</Eyebrow>
|
||||
<H3 as="h1" className="mt-4">
|
||||
Sovereign AI Agents, Coming Soon.
|
||||
</H3>
|
||||
<p className="mt-6 text-lg">
|
||||
The Agent layer will allow you to run autonomous, policy-governed AI that operates on infrastructure you control, with private memory, verifiable execution, and coordination across your personal or organizational environment.
|
||||
</P>
|
||||
<P className="mt-6 text-gray-600">
|
||||
Works Alone. Works Together.
|
||||
Use Agents on top of any Mycelium Cloud deployment or pair them with the Mycelium Network for private, encrypted collaboration across users and systems.
|
||||
</P>
|
||||
<div className="mt-8">
|
||||
</p>
|
||||
<p className="mt-4 lg:text-base italic text-gray-600 text-sm">
|
||||
Works Alone. Works Together. Use Agents on top of any Mycelium Cloud deployment or pair them with the Mycelium Network for private, encrypted collaboration across users and systems.
|
||||
</p>
|
||||
<div className="mt-10 flex items-center gap-x-6">
|
||||
<Button href="#" variant="solid" color="cyan">
|
||||
Follow Deployment
|
||||
</Button>
|
||||
<Button href="#" variant="outline" color="white">
|
||||
Explore Docs
|
||||
<Button href="#" variant="outline">
|
||||
Explore Docs <span aria-hidden="true">→</span>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* ✅ Bottom horizontal line with spacing */}
|
||||
<div className="w-full border-b border-gray-200" />
|
||||
<div className="max-w-7xl bg-transparent mx-auto py-6 border border-t-0 border-b-0 border-gray-200"></div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ export function CloudArchitecture() {
|
||||
<Button variant="solid" color="cyan" href="/start">
|
||||
Get Started
|
||||
</Button>
|
||||
<Button variant="outline" color="gray" href="/docs">
|
||||
<Button variant="outline" color="white" href="/docs">
|
||||
Explore Docs
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@@ -1,58 +1,95 @@
|
||||
import {
|
||||
CpuChipIcon,
|
||||
CubeIcon,
|
||||
ServerIcon,
|
||||
} from '@heroicons/react/24/solid'
|
||||
import { Eyebrow, H3, P, CT, CP } from '@/components/Texts'
|
||||
'use client';
|
||||
|
||||
import { Container } from '@/components/Container'
|
||||
import { Eyebrow, H3, P } from '@/components/Texts'
|
||||
import { Button } from '@/components/Button'
|
||||
|
||||
const capabilities = [
|
||||
{
|
||||
name: 'Containers',
|
||||
description: 'Services, web apps, APIs. Fully compatible with Kubernetes.',
|
||||
icon: CubeIcon,
|
||||
title: 'Containers & K3s',
|
||||
description:
|
||||
'Deploy services, web apps, and APIs with full Kubernetes compatibility.',
|
||||
icon: (
|
||||
<div className=" flex items-center justify-center">
|
||||
<img src="/images/kubernetes.webp" alt="Kubernetes" className="h-full w-full object-cover" />
|
||||
</div>
|
||||
),
|
||||
},
|
||||
{
|
||||
name: 'Virtual Machines',
|
||||
title: 'Virtual Machines',
|
||||
description:
|
||||
'Legacy apps and specialized runtime stacks. Secure boot + attestation included.',
|
||||
icon: ServerIcon,
|
||||
'Run legacy apps and specialized stacks with secure boot and attestation.',
|
||||
icon: (
|
||||
<div className="flex items-center justify-center">
|
||||
<img src="/images/vm.webp" alt="Virtual Machines" className="h-full w-full object-cover" />
|
||||
</div>
|
||||
),
|
||||
},
|
||||
{
|
||||
name: 'Native Linux Workloads',
|
||||
title: 'Native Linux Workloads',
|
||||
description:
|
||||
'Agents, batch jobs, tooling. Runs statelessly anywhere.',
|
||||
icon: CpuChipIcon,
|
||||
'Execute agents, batch jobs, and custom tooling statelessly across the grid.',
|
||||
icon: (
|
||||
<div className="flex items-center justify-center">
|
||||
<img src="/images/linux.png" alt="Linux" className="h-full w-full object-cover" />
|
||||
</div>
|
||||
),
|
||||
},
|
||||
]
|
||||
|
||||
export function ComputeCapabilities() {
|
||||
return (
|
||||
<section className="bg-white py-24 sm:py-32">
|
||||
<section className="bg-[#121212] w-full max-w-8xl mx-auto">
|
||||
{/* Top horizontal spacer */}
|
||||
<div className="max-w-7xl mx-auto py-6 border border-t-0 border-b-0 border-gray-800 bg-transparent" />
|
||||
<div className="w-full border-t border-l border-r border-gray-800" />
|
||||
|
||||
{/* Boxed container */}
|
||||
<div className="relative mx-auto max-w-7xl border border-t-0 border-b-0 border-gray-800 bg-[#111111] py-12">
|
||||
<Container>
|
||||
<div className="mx-auto max-w-3xl text-center">
|
||||
<Eyebrow>CAPABILITIES</Eyebrow>
|
||||
<H3 className="mt-4 text-gray-900">What You Can Run</H3>
|
||||
<P className="mt-6 text-gray-600">
|
||||
Mycelium Compute supports multiple workload types on a single
|
||||
execution fabric.
|
||||
<div className="mx-auto max-w-4xl sm:text-center">
|
||||
<Eyebrow className="text-cyan-400">CAPABILITIES</Eyebrow>
|
||||
<H3 className="text-3xl lg:text-4xl font-medium tracking-tight text-white">
|
||||
What You Can Run
|
||||
</H3>
|
||||
<P className="mt-6 text-lg text-gray-300">
|
||||
Mycelium Compute supports multiple workload types on a single execution
|
||||
fabric, from legacy VMs to modern Kubernetes clusters.
|
||||
</P>
|
||||
</div>
|
||||
|
||||
<div className="mx-auto mt-16 max-w-5xl">
|
||||
<dl className="grid grid-cols-1 gap-12 sm:grid-cols-2 lg:grid-cols-3">
|
||||
{capabilities.map((feature) => (
|
||||
<div key={feature.name} className="flex flex-col text-center">
|
||||
<div className="mx-auto flex size-12 items-center justify-center rounded-xl bg-cyan-50">
|
||||
<feature.icon aria-hidden="true" className="size-6 text-cyan-600" />
|
||||
</div>
|
||||
<CT className="mt-6 text-gray-900">{feature.name}</CT>
|
||||
<CP className="mt-2 text-gray-600">{feature.description}</CP>
|
||||
</div>
|
||||
{/* Card layout */}
|
||||
<ul
|
||||
role="list"
|
||||
className="mx-auto mt-12 grid max-w-2xl grid-cols-1 gap-6 text-sm sm:grid-cols-2 lg:max-w-none lg:grid-cols-3 md:gap-y-10"
|
||||
>
|
||||
{capabilities.map((capability) => (
|
||||
<li
|
||||
key={capability.title}
|
||||
className="rounded-xl border border-gray-800 bg-[#111]/60 p-6 text-center lg:text-left"
|
||||
>
|
||||
{capability.icon}
|
||||
<h3 className="text-lg font-semibold text-white">{capability.title}</h3>
|
||||
<p className="mt-2 text-gray-400 leading-snug">{capability.description}</p>
|
||||
</li>
|
||||
))}
|
||||
</dl>
|
||||
</ul>
|
||||
|
||||
{/* Button section */}
|
||||
<div className="mx-auto mt-12 flex justify-center gap-6">
|
||||
<Button variant="solid" color="cyan" href="#">
|
||||
Get Started
|
||||
</Button>
|
||||
<Button variant="outline" color="white" href="#">
|
||||
Explore Docs
|
||||
</Button>
|
||||
</div>
|
||||
</Container>
|
||||
</div>
|
||||
|
||||
{/* Bottom border + spacer */}
|
||||
<div className="w-full border-b border-gray-800" />
|
||||
<div className="max-w-7xl mx-auto py-6 border border-t-0 border-b-0 border-gray-800 bg-transparent" />
|
||||
</section>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,35 +1,51 @@
|
||||
'use client'
|
||||
import { H3, Eyebrow } from "@/components/Texts"
|
||||
import { Button } from "@/components/Button"
|
||||
|
||||
import { Button } from '@/components/Button'
|
||||
import { Eyebrow, P, H3 } from '@/components/Texts'
|
||||
|
||||
export function ComputeHero() {
|
||||
export function ComputeHero({ onGetStartedClick = () => {} }: { onGetStartedClick?: () => void }) {
|
||||
return (
|
||||
<div className="relative bg-white">
|
||||
<div className="relative h-80 overflow-hidden bg-transparent md:absolute md:right-0 md:h-full md:w-1/3 lg:w-1/2">
|
||||
<img
|
||||
alt=""
|
||||
src="/images/computehero.webp"
|
||||
className="size-full object-contain"
|
||||
/>
|
||||
|
||||
</div>
|
||||
<div className="relative mx-auto max-w-7xl py-12 lg:py-24 lg:px-8">
|
||||
<div className="max-w-2xl pr-6 pl-6 md:mr-auto md:w-2/3 md:pr-16 lg:w-1/2 lg:pl-0 lg:pr-24">
|
||||
<Eyebrow className="text-base/7 font-semibold text-cyan-500">COMPUTE</Eyebrow>
|
||||
<H3 className="mt-2 text-gray-900">Deterministic Compute You Control</H3>
|
||||
<P className="mt-6 text-gray-600">
|
||||
<div className="">
|
||||
{/* Boxed container */}
|
||||
<div
|
||||
className="relative mx-auto max-w-7xl border border-t-0 border-b-0 border-gray-200 bg-white overflow-hidden bg-contain bg-right bg-no-repeat"
|
||||
style={{ backgroundImage: "url('/images/computehero.webp')", backgroundSize: "contain" }}
|
||||
>
|
||||
{/* Inner padding */}
|
||||
<div className="px-6 py-16 lg:py-16">
|
||||
<div className="max-w-xl lg:pl-6">
|
||||
<Eyebrow>
|
||||
Mycelium Compute
|
||||
</Eyebrow>
|
||||
<H3 className="mt-4">
|
||||
Deterministic Compute You Control
|
||||
</H3>
|
||||
<p className="mt-6 text-lg">
|
||||
Run workloads on sovereign, self-verifying infrastructure.
|
||||
Mycelium Compute delivers predictable execution, zero drift, and automatic healing, whether you’re running containers, VMs, agents, or full Kubernetes clusters.
|
||||
</P>
|
||||
<div className="mt-12">
|
||||
<Button href="#" variant="solid" color="cyan">
|
||||
How it works
|
||||
</p>
|
||||
<p className="mt-4 lg:text-base italic text-gray-600 text-sm">
|
||||
Works Alone. Works Together.
|
||||
Mycelium Compute can run on any network fabric, or pair with Mycelium Network
|
||||
for sovereign connectivity.
|
||||
</p>
|
||||
<div className="mt-10 flex items-center gap-x-6">
|
||||
<Button
|
||||
onClick={onGetStartedClick}
|
||||
variant="solid"
|
||||
color="cyan"
|
||||
>
|
||||
Get started
|
||||
</Button>
|
||||
<Button to="#" variant="outline">
|
||||
Documentation <span aria-hidden="true">→</span>
|
||||
</Button>
|
||||
<Button href="#" variant="outline" color="cyan">Explore Docs</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{/* ✅ Bottom horizontal line with spacing */}
|
||||
<div className="w-full border-b border-gray-200" />
|
||||
<div className="max-w-7xl bg-transparent mx-auto py-6 border border-t-0 border-b-0 border-gray-200"></div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,42 +1,40 @@
|
||||
'use client'
|
||||
|
||||
import { Button } from '@/components/Button'
|
||||
import { Eyebrow, SectionHeader, P } from '@/components/Texts'
|
||||
import { Eyebrow, H3 } from '@/components/Texts'
|
||||
|
||||
export function GpuHero() {
|
||||
return (
|
||||
<div className="relative bg-white">
|
||||
<div className="relative h-80 overflow-hidden bg-transparent md:absolute md:right-0 md:h-full md:w-1/3 lg:w-1/2">
|
||||
<img
|
||||
alt="Mycelium GPU nebula illustration"
|
||||
src="/images/gpuhero2.png"
|
||||
className="size-full object-contain"
|
||||
/>
|
||||
</div>
|
||||
<div className="relative mx-auto max-w-7xl py-24 lg:py-32 lg:px-8">
|
||||
<div className="pr-6 pl-6 md:mr-auto md:w-2/3 md:pr-16 lg:w-1/2 lg:pl-0 lg:pr-24 ">
|
||||
<Eyebrow className="tracking-[0.35em] uppercase text-cyan-500">
|
||||
Mycelium GPU
|
||||
</Eyebrow>
|
||||
<SectionHeader as="h1" className="mt-4 text-gray-900">
|
||||
<div className="">
|
||||
{/* Boxed container */}
|
||||
<div
|
||||
className="relative mx-auto max-w-7xl border border-t-0 border-b-0 border-gray-200 bg-white overflow-hidden bg-contain bg-right bg-no-repeat"
|
||||
style={{ backgroundImage: "url('/images/gpuhero2.png')", backgroundSize: "contain" }}
|
||||
>
|
||||
{/* Inner padding */}
|
||||
<div className="px-6 py-16 lg:py-16">
|
||||
<div className="max-w-2xl lg:pl-6">
|
||||
<Eyebrow>Mycelium GPU</Eyebrow>
|
||||
<H3 as="h1" className="mt-4">
|
||||
Sovereign GPU Acceleration for AI and High-Performance Compute
|
||||
</SectionHeader>
|
||||
<P className="mt-6 text-gray-600">
|
||||
Access GPUs across the Mycelium mesh without waitlists,
|
||||
inflated pricing, or centralized control.
|
||||
Run inference, training, and compute workloads where they make sense:
|
||||
cloud, edge, or on your own hardware.
|
||||
</P>
|
||||
<div className="mt-10 flex flex-wrap gap-4">
|
||||
</H3>
|
||||
<p className="mt-6 text-lg">
|
||||
Access GPUs across the Mycelium mesh without waitlists, inflated pricing, or centralized control. Run inference, training, and compute workloads where they make sense: cloud, edge, or on your own hardware.
|
||||
</p>
|
||||
<div className="mt-10 flex items-center gap-x-6">
|
||||
<Button to="#gpu-getting-started" as="a" variant="solid" color="cyan">
|
||||
How it works
|
||||
</Button>
|
||||
<Button to="#gpu-architecture" as="a" variant="outline" color="cyan">
|
||||
Explore Docs
|
||||
<Button to="#gpu-architecture" as="a" variant="outline">
|
||||
Explore Docs <span aria-hidden="true">→</span>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* ✅ Bottom horizontal line with spacing */}
|
||||
<div className="w-full border-b border-gray-200" />
|
||||
<div className="max-w-7xl bg-transparent mx-auto py-6 border border-t-0 border-b-0 border-gray-200"></div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ export function CallToAction() {
|
||||
as="a"
|
||||
target="_blank"
|
||||
variant="outline"
|
||||
color="gray"
|
||||
color="white"
|
||||
>
|
||||
Explore Docs
|
||||
</Button>
|
||||
|
||||
@@ -19,7 +19,7 @@ export function HomeHero() {
|
||||
Start Hosting
|
||||
</Button>
|
||||
|
||||
<Button href="#" variant="outline" color="gray">
|
||||
<Button href="#" variant="outline" color="white">
|
||||
Deploy in Cloud <span aria-hidden="true">→</span>
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@@ -107,7 +107,7 @@ export function Hero() {
|
||||
<img
|
||||
src={phoneFrame}
|
||||
alt="Mycelium application demo"
|
||||
className="mx-auto h-full w-auto max-w-[366px]"
|
||||
className="mx-auto w-auto max-w-[366px]"
|
||||
width={366}
|
||||
height={729}
|
||||
/>
|
||||
|
||||
@@ -1,31 +1,27 @@
|
||||
'use client'
|
||||
|
||||
import { Button } from '@/components/Button'
|
||||
import { Eyebrow, SectionHeader, P } from '@/components/Texts'
|
||||
import { Eyebrow, H3 } from '@/components/Texts'
|
||||
|
||||
export function StorageHero() {
|
||||
return (
|
||||
<div className="relative bg-white">
|
||||
<div className="relative h-80 overflow-hidden bg-transparent md:absolute md:right-0 md:h-full md:w-1/3 lg:w-1/2">
|
||||
<img
|
||||
alt="Mycelium Storage visual"
|
||||
src="/images/computehero11.webp"
|
||||
className="size-full object-contain"
|
||||
/>
|
||||
</div>
|
||||
<div className="relative mx-auto max-w-7xl py-24 lg:py-32 lg:px-8">
|
||||
<div className="pr-6 pl-6 md:mr-auto md:w-2/3 md:pr-16 lg:w-1/2 lg:pl-0 lg:pr-24 xl:pr-32">
|
||||
<Eyebrow className="tracking-[0.35em] uppercase text-cyan-500">
|
||||
Mycelium Storage
|
||||
</Eyebrow>
|
||||
<SectionHeader as="h1" className="mt-4 text-gray-900">
|
||||
<div className="">
|
||||
{/* Boxed container */}
|
||||
<div
|
||||
className="relative mx-auto max-w-7xl border border-t-0 border-b-0 border-gray-200 bg-white overflow-hidden bg-contain bg-right bg-no-repeat"
|
||||
style={{ backgroundImage: "url('/images/computehero11.webp')", backgroundSize: "contain" }}
|
||||
>
|
||||
{/* Inner padding */}
|
||||
<div className="px-6 py-16 lg:py-16">
|
||||
<div className="max-w-2xl lg:pl-6">
|
||||
<Eyebrow>Mycelium Storage</Eyebrow>
|
||||
<H3 as="h1" className="mt-4">
|
||||
Sovereign Storage With Self-Healing and Multi-Protocol Access
|
||||
</SectionHeader>
|
||||
<P className="mt-6 text-gray-600">
|
||||
Store, replicate, and serve data across the global mesh
|
||||
with encrypted, quantum safe, verifiable storage you control at the infrastructure layer.
|
||||
</P>
|
||||
<div className="mt-10 flex flex-wrap gap-4">
|
||||
</H3>
|
||||
<p className="mt-6 text-lg">
|
||||
Store, replicate, and serve data across the global mesh with encrypted, quantum safe, verifiable storage you control at the infrastructure layer.
|
||||
</p>
|
||||
<div className="mt-10 flex items-center gap-x-6">
|
||||
<Button to="#storage-features" as="a" variant="solid" color="cyan">
|
||||
How It Works
|
||||
</Button>
|
||||
@@ -33,13 +29,16 @@ with encrypted, quantum safe, verifiable storage you control at the infrastructu
|
||||
to="#storage-developer-experience"
|
||||
as="a"
|
||||
variant="outline"
|
||||
color="cyan"
|
||||
>
|
||||
Explore Docs
|
||||
Explore Docs <span aria-hidden="true">→</span>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* ✅ Bottom horizontal line with spacing */}
|
||||
<div className="w-full border-b border-gray-200" />
|
||||
<div className="max-w-7xl bg-transparent mx-auto py-6 border border-t-0 border-b-0 border-gray-200"></div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||