Files
www_projectmycelium_com/src/pages/home/HomeAudience.tsx
sasha-astiadi d1fc11ce80 refactor: simplify navigation structure and update homepage content
- Removed Cloud dropdown menu and flattened navigation to direct links (Network, Cloud, Pods, Agents, Node)
- Reordered navigation items for better flow and renamed "Nodes" to "Node" for consistency
- Updated homepage hero and CTA sections with clearer messaging focused on digital sovereignty and infrastructure control
- Added new bento grid images for visual refresh
2025-11-14 15:41:21 +01:00

110 lines
3.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use client";
import { useEffect, useState } from "react";
import { motion, AnimatePresence } from "motion/react";
import { H3, P } from "@/components/Texts";
const rotating = [
"Communities",
"Integrators",
"Builders",
"Enterprises",
"Institutions",
"Creators",
"Researchers",
"Individuals",
];
// ✅ Use local image files (18)
const gallery = [
"/images/audiences/1.jpg",
"/images/audiences/2.jpg",
"/images/audiences/3.jpg",
"/images/audiences/4.jpg",
"/images/audiences/5.jpg",
"/images/audiences/6.jpg",
"/images/audiences/7.jpg",
"/images/audiences/8.jpg",
];
export function HomeAudience() {
const [index, setIndex] = useState(0);
useEffect(() => {
const timer = setInterval(() => {
setIndex((prev) => (prev + 1) % rotating.length);
}, 3200);
return () => clearInterval(timer);
}, []);
return (
<div>
{/* ✅ Top horizontal line + container border */}
<div className="max-w-7xl bg-transparent mx-auto py-6 border border-t-0 border-b-0 border-gray-100"></div>
<div className="w-full border-t border-l border-r border-gray-100" />
{/* ✅ Main content */}
<div className="mx-auto max-w-7xl bg-white border border-t-0 border-b-0 border-gray-100">
<div className="grid grid-cols-1 lg:grid-cols-2">
{/* ✅ LEFT — Text & rotating headline */}
<div className="px-6 py-14 sm:px-10 lg:px-14 flex flex-col justify-center">
<H3 className="text-black">
Sovereign Infrastructure for{" "}
<span className="inline-block text-black font-semibold relative ml-2 h-[1.2em]">
<AnimatePresence mode="wait">
<motion.span
key={rotating[index]}
initial={{ opacity: 0, y: 8 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -8 }}
transition={{ duration: 0.35 }}
className="absolute left-0 top-0"
>
{rotating[index]}
</motion.span>
</AnimatePresence>
{/* Invisible placeholder to avoid layout jump */}
<span className="opacity-0">{rotating[index]}</span>
</span>
</H3>
<P className="text-gray-800 mt-4">
The internet wasnt built for sovereignty. Today, data, AI models, and identity
live on centralized clouds and owned by a few.
</P>
<P className="text-gray-800 mt-4">
Mycelium brings infrastructure back
to people, communities, and nations: private, resilient, and cryptographically yours.
</P>
</div>
{/* ✅ RIGHT — Landscape image gallery synced with title */}
<div className="relative h-64 sm:h-96 lg:h-full w-full overflow-hidden">
<AnimatePresence mode="wait">
<motion.img
key={gallery[index]}
src={gallery[index]}
alt=""
initial={{ opacity: 0, scale: 1.02 }}
animate={{ opacity: 1, scale: 1 }}
exit={{ opacity: 0, scale: 1.02 }}
transition={{ duration: 0.6 }}
className="absolute inset-0 w-full h-full object-cover"
/>
</AnimatePresence>
</div>
</div>
</div>
{/* ✅ Bottom border */}
<div className="w-full border-b border-gray-100" />
<div className="max-w-7xl bg-transparent mx-auto py-6 border border-t-0 border-b-0 border-gray-100" />
</div>
);
}