From aaab070de109abfab43ee528c3c6bdf39d3b8765 Mon Sep 17 00:00:00 2001 From: sasha-astiadi Date: Sun, 14 Sep 2025 16:12:31 +0200 Subject: [PATCH] fix rbuild --- src/components/CallTo.tsx | 79 ++++++++++++------------ src/components/ClickableGallery.tsx | 28 +++++---- src/components/Faqs.tsx | 56 +++++++++++++---- src/components/HomeAbout.tsx | 78 +++++++++++++++--------- src/components/HomeHero.tsx | 13 ++-- src/components/StackSection.tsx | 14 ++++- src/components/Steps.tsx | 42 ++++++++----- src/components/Texts.tsx | 86 +++++++++++++++------------ src/components/UseCases.tsx | 32 ++++++++-- src/components/logos/NousResearch.tsx | 0 10 files changed, 276 insertions(+), 152 deletions(-) create mode 100644 src/components/logos/NousResearch.tsx diff --git a/src/components/CallTo.tsx b/src/components/CallTo.tsx index a6b3665..84f7749 100644 --- a/src/components/CallTo.tsx +++ b/src/components/CallTo.tsx @@ -1,46 +1,43 @@ -export function CallTo() { - return ( -
-
-
-
-

- Say Hello to Decentralized AI Agents that are Truly Yours -

-

+import { H2, P } from '@/components/Texts' + +export function CallTo() { + return ( +

+
+
+

+ Say hello to Decentralized AI Agents that are Truly Yours +

+

Why hand out your intelligence to centralized giants when you can build your own? -

-

- With Project Mycelium’s Decentralized Agentic Cloud, you’re not just adopting AI—you’re claiming your own sovereign, autonomous AI infrastructure that grows and evolves with you. -

- -
-
+
- ) - } \ No newline at end of file + +
+ ) +} \ No newline at end of file diff --git a/src/components/ClickableGallery.tsx b/src/components/ClickableGallery.tsx index b11d857..4ccc35e 100644 --- a/src/components/ClickableGallery.tsx +++ b/src/components/ClickableGallery.tsx @@ -1,8 +1,8 @@ 'use client' -import { useEffect, useMemo, useState } from 'react' +import { useEffect, useMemo, useState, useRef } from 'react' import Image from 'next/image' -import { motion, AnimatePresence } from 'framer-motion' +import { motion, AnimatePresence, useInView } from 'framer-motion' import { wrap } from 'popmotion' import { Button } from '@/components/Button'; import { H2, P, H4 } from '@/components/Texts'; @@ -34,6 +34,8 @@ const AUTOPLAY_MS = 3200 export function ClickableGallery() { const [active, setActive] = useState(0) const [hovering, setHovering] = useState(false) + const ref = useRef(null); + const isInView = useInView(ref, { once: true }); // autoplay useEffect(() => { @@ -51,17 +53,20 @@ export function ClickableGallery() { const prev = () => setActive((i) => wrap(0, galleryItems.length, i - 1)) return ( - <> +
- +

One Agent, Endless Possibilities.

- +

The future isn’t about more tools. It’s about one intelligent partner that can do it all. This is your gateway to creativity, automation, and discovery.

- +
-
setHovering(true)} onMouseLeave={() => setHovering(false)} @@ -180,7 +188,7 @@ export function ClickableGallery() {
- - + +
) } diff --git a/src/components/Faqs.tsx b/src/components/Faqs.tsx index a750b8e..735117e 100644 --- a/src/components/Faqs.tsx +++ b/src/components/Faqs.tsx @@ -1,4 +1,8 @@ +'use client' + import { Container } from '@/components/Container' +import { motion, useInView } from 'framer-motion' +import { useRef } from 'react' const faqs = [ [ @@ -22,7 +26,7 @@ const faqs = [ { question: 'How can I find and use my Mycelium address?', answer: - 'Upon using the Mycelium app, you\'re assigned a unique Mycelium address. To copy this address, click the button located to the right of the displayed address in the app interface.', + "Upon using the Mycelium app, you're assigned a unique Mycelium address. To copy this address, click the button located to the right of the displayed address in the app interface.", }, { question: 'Can I deploy workloads on the TFGrid using Mycelium?', @@ -50,17 +54,41 @@ const faqs = [ ] export function Faqs() { + const ref = useRef(null); + const isInView = useInView(ref, { once: true }); + return (
+
) diff --git a/src/components/HomeAbout.tsx b/src/components/HomeAbout.tsx index 452069d..bc94539 100644 --- a/src/components/HomeAbout.tsx +++ b/src/components/HomeAbout.tsx @@ -1,7 +1,7 @@ 'use client' -import { useState } from 'react' -import { motion } from 'framer-motion' +import { useState, useRef } from 'react' +import { motion, useInView } from 'framer-motion' import { TypeAnimation } from 'react-type-animation' import { Dialog, DialogPanel } from '@headlessui/react' import { Bars3Icon, XMarkIcon, ChevronDoubleDownIcon } from '@heroicons/react/24/outline' @@ -37,51 +37,73 @@ const features = [ ]; export function HomeAbout() { - const [mobileMenuOpen, setMobileMenuOpen] = useState(false) + const ref = useRef(null); + const isInView = useInView(ref, { once: true }); return ( -
+
-
-