forked from emre/www_projectmycelium_com
refactor: improve NodeHero and NodeBenefits typography and layout with AnimatedSection wrappers
- Changed NodeBenefits from SectionHeader to H3 component with mt-2 and text-white - Updated NodeBenefits description from P color="light" to text-gray-200 - Changed benefit cards border-radius from rounded-2xl to rounded-md - Added responsive padding to benefit cards: lg:p-8 p-6 - Updated benefit description from text-gray-200 to font-light text-gray-300 - Removed NodeHero background image inline style in
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { motion } from "framer-motion";
|
import { motion } from "framer-motion";
|
||||||
import { SectionHeader, P, Eyebrow, CT, CP } from "@/components/Texts";
|
import { H3, P, Eyebrow, CT, CP } from "@/components/Texts";
|
||||||
import type { ComponentPropsWithoutRef } from "react";
|
import type { ComponentPropsWithoutRef } from "react";
|
||||||
|
|
||||||
type CircleIconProps = ComponentPropsWithoutRef<"svg">;
|
type CircleIconProps = ComponentPropsWithoutRef<"svg">;
|
||||||
@@ -62,14 +62,13 @@ export function NodeBenefits() {
|
|||||||
className="mx-auto max-w-5xl text-center"
|
className="mx-auto max-w-5xl text-center"
|
||||||
>
|
>
|
||||||
<Eyebrow color="accent">Host</Eyebrow>
|
<Eyebrow color="accent">Host</Eyebrow>
|
||||||
<SectionHeader
|
<H3
|
||||||
className="text-3xl font-medium tracking-tight"
|
className="mt-2 text-white"
|
||||||
color="light"
|
|
||||||
>
|
>
|
||||||
Benefits of Hosting Nodes
|
Benefits of Hosting Nodes
|
||||||
</SectionHeader>
|
</H3>
|
||||||
|
|
||||||
<P className="mt-6" color="light">
|
<P className="mt-6 text-gray-200">
|
||||||
Hosting a node gives you private compute, contributes to the global
|
Hosting a node gives you private compute, contributes to the global
|
||||||
Mycelium infrastructure, and unlocks ways to earn from real network
|
Mycelium infrastructure, and unlocks ways to earn from real network
|
||||||
usage, all while keeping sovereignty and control.
|
usage, all while keeping sovereignty and control.
|
||||||
@@ -95,13 +94,13 @@ export function NodeBenefits() {
|
|||||||
delay: 0.3 + index * 0.15,
|
delay: 0.3 + index * 0.15,
|
||||||
ease: "easeOut",
|
ease: "easeOut",
|
||||||
}}
|
}}
|
||||||
className="rounded-2xl border border-gray-300 bg-white/5 p-8 transition-all duration-300 ease-in-out hover:scale-105 hover:border-cyan-500 hover:shadow-lg hover:shadow-cyan-500/20 backdrop-blur-md"
|
className="rounded-md border border-gray-300 bg-white/5 lg:p-8 p-6 transition-all duration-300 ease-in-out hover:scale-105 hover:border-cyan-500 hover:shadow-lg hover:shadow-cyan-500/20 backdrop-blur-md"
|
||||||
>
|
>
|
||||||
<feature.icon className="mb-4 h-8 w-8 text-white" />
|
<feature.icon className="mb-4 h-8 w-8 text-white" />
|
||||||
<CT as="span" className="text-left font-semibold" color="light">
|
<CT as="span" className="text-left font-semibold" color="light">
|
||||||
{feature.name}
|
{feature.name}
|
||||||
</CT>
|
</CT>
|
||||||
<CP className="mt-2 text-left text-gray-200">
|
<CP className="mt-2 text-left font-light text-gray-300">
|
||||||
{feature.description}
|
{feature.description}
|
||||||
</CP>
|
</CP>
|
||||||
</motion.li>
|
</motion.li>
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
'use client'
|
'use client'
|
||||||
|
|
||||||
import { Button } from '@/components/Button'
|
import { Button } from '@/components/Button'
|
||||||
import { Eyebrow, H3 } from '@/components/Texts'
|
import { Eyebrow, H3, P } from '@/components/Texts'
|
||||||
|
|
||||||
export function NodeHero() {
|
export function NodeHero() {
|
||||||
return (
|
return (
|
||||||
<div className="">
|
<div className="">
|
||||||
{/* Boxed container */}
|
{/* Boxed container */}
|
||||||
<div
|
<div
|
||||||
className="relative mx-auto max-w-7xl border border-t-0 border-b-0 border-gray-100 bg-white overflow-hidden bg-contain bg-right bg-no-repeat"
|
className="relative mx-auto max-w-7xl border border-t-0 border-b-0 border-gray-100 bg-white overflow-hidden md:bg-[url('/images/gpuhero2.png')] md:bg-contain md:bg-right md:bg-no-repeat"
|
||||||
style={{ backgroundImage: "url('/images/gpuhero2.png')", backgroundSize: "contain" }}
|
|
||||||
>
|
>
|
||||||
{/* Inner padding */}
|
{/* Inner padding */}
|
||||||
<div className="px-6 py-16 lg:py-24">
|
<div className="px-6 py-16 lg:py-24">
|
||||||
@@ -18,9 +17,9 @@ export function NodeHero() {
|
|||||||
<H3 as="h1" className="mt-4">
|
<H3 as="h1" className="mt-4">
|
||||||
Host a Node. Power the Network.
|
Host a Node. Power the Network.
|
||||||
</H3>
|
</H3>
|
||||||
<p className="mt-6 text-lg text-gray-800">
|
<P className="mt-6 text-gray-600">
|
||||||
The Mycelium Network runs on nodes hosted by people and organizations around the world. Each node adds capacity, resilience, and sovereignty, expanding a global network for private, distributed compute and AI.
|
The Mycelium Network runs on nodes hosted by people and organizations around the world. Each node adds capacity, resilience, and sovereignty, expanding a global network for private, distributed compute and AI.
|
||||||
</p>
|
</P>
|
||||||
<div className="mt-10 flex items-center gap-x-6">
|
<div className="mt-10 flex items-center gap-x-6">
|
||||||
<Button to="#node-getting-started" as="a" variant="solid" color="cyan">
|
<Button to="#node-getting-started" as="a" variant="solid" color="cyan">
|
||||||
How it works
|
How it works
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import { AnimatedSection } from '@/components/AnimatedSection';
|
||||||
import { NodeHero } from './NodeHero';
|
import { NodeHero } from './NodeHero';
|
||||||
import { NodeBenefits } from './NodeBenefits';
|
import { NodeBenefits } from './NodeBenefits';
|
||||||
import { NodeSteps } from './NodeSteps';
|
import { NodeSteps } from './NodeSteps';
|
||||||
@@ -9,12 +10,29 @@ import { CallToAction } from './CallToAction';
|
|||||||
const NodesPage: React.FC = () => {
|
const NodesPage: React.FC = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<NodeHero />
|
<AnimatedSection>
|
||||||
<NodeBenefits />
|
<NodeHero />
|
||||||
<NodeSteps />
|
</AnimatedSection>
|
||||||
<NodeProducts />
|
|
||||||
<NodeSpecs />
|
<AnimatedSection>
|
||||||
<CallToAction />
|
<NodeBenefits />
|
||||||
|
</AnimatedSection>
|
||||||
|
|
||||||
|
<AnimatedSection>
|
||||||
|
<NodeSteps />
|
||||||
|
</AnimatedSection>
|
||||||
|
|
||||||
|
<AnimatedSection>
|
||||||
|
<NodeProducts />
|
||||||
|
</AnimatedSection>
|
||||||
|
|
||||||
|
<AnimatedSection>
|
||||||
|
<NodeSpecs />
|
||||||
|
</AnimatedSection>
|
||||||
|
|
||||||
|
<AnimatedSection>
|
||||||
|
<CallToAction />
|
||||||
|
</AnimatedSection>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user