This commit is contained in:
2025-09-08 17:18:54 +02:00
parent a69f35c9a7
commit 7e2b30fbcc
5 changed files with 63 additions and 5 deletions

28
src/components/Banner.tsx Normal file
View File

@@ -0,0 +1,28 @@
import { XMarkIcon } from '@heroicons/react/20/solid'
export function Banner() {
return (
<div className="relative flex items-center gap-x-6 bg-gray-200 px-6 py-2.5 after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-white/10 sm:px-3.5 sm:before:flex-1">
<p className="text-sm/6 text-white">
<strong className="font-semibold">ThreeFold is going commercial!</strong>
<svg viewBox="0 0 2 2" aria-hidden="true" className="mx-2 inline size-0.5 fill-current">
<circle r={1} cx={1} cy={1} />
</svg>
Read our <a
href="https://www.threefold.io/newsroom/summer-2025-roundup/"
target="_blank"
rel="noopener noreferrer"
className="underline hover:text-white hover:font-semibold"
>
2025 Summer Round Up
</a>
</p>
<div className="flex flex-1 justify-end">
<button type="button" className="-m-3 p-3 focus-visible:-outline-offset-4">
<span className="sr-only">Dismiss</span>
<XMarkIcon aria-hidden="true" className="size-5 text-white" />
</button>
</div>
</div>
)
}

View File

@@ -98,7 +98,7 @@ function StatCard({
e.currentTarget.style.filter = 'brightness(1)';
}}
>
<h3 className="text-lg font-semibold text-gradient-neutral-vertical">{label}</h3>
<h3 className="text-lg font-semibold text-gradient-neutral-vertical" style={{ textShadow: '0 0 12px rgba(255, 255, 255, 0.3), 0 0 24px rgba(255, 255, 255, 0.1)' }}>{label}</h3>
<p className="mt-2 text-sm font-light text-pretty text-white lg:text-base">
{description}
</p>

View File

@@ -1,10 +1,12 @@
import { Footer } from '@/components/Footer'
import { Header } from '@/components/Header'
import { Banner } from '@/components/Banner'
export function Layout({ children }: { children: React.ReactNode }) {
return (
<>
<Header />
<Banner />
<main className="flex-auto">{children}</main>
<Footer />
</>

View File

@@ -22,7 +22,7 @@ export function SpotlightPreview() {
/>
<div className="relative z-10 mx-auto w-full max-w-7xl p-4 pt-20 md:pt-0">
<div className="flex justify-center mb-6">
<div className="mb-4 relative rounded-full px-3 py-1 text-sm/6 text-gray-600 ring-1 ring-gray-900/10 hover:ring-gray-900/20">
<div className="mb-4 relative rounded-full px-3 py-1 text-sm/6 text-gray-600 ring-1 ring-gray-900/10 hover:ring-gray-900/20 animate-fade-in-delay-1">
Announcing The New TF Marketplace.{' '}
<a href="#" className="font-semibold text-white hover:text-gray-200">
<span aria-hidden="true" className="absolute inset-0" />
@@ -31,13 +31,13 @@ export function SpotlightPreview() {
</div>
</div>
<h1 className="bg-opacity-50 bg-gradient-to-b from-neutral-50 to-neutral-400 bg-clip-text tracking-tighter text-center text-4xl font-semibold text-transparent lg:text-6xl">
<h1 className="bg-opacity-50 bg-gradient-to-b from-neutral-50 to-neutral-400 bg-clip-text tracking-tighter text-center text-4xl font-semibold text-transparent lg:text-6xl animate-fade-in-delay-2">
Built by Everyone <br /> for Everyone.
</h1>
<p className="mx-auto mt-8 max-w-lg text-center text-base lg:text-xl font-light text-neutral-300">
<p className="mx-auto mt-8 max-w-lg text-center text-base lg:text-xl font-light text-neutral-300 animate-fade-in-delay-3">
ThreeFold is a fully operational, decentralized internet infrastructure deployed locally, scalable globally, and owned and powered by the people.
</p>
<div className="mt-8 flex flex-col sm:flex-row justify-center gap-4">
<div className="mt-8 flex flex-col sm:flex-row justify-center gap-4 animate-fade-in-delay-4">
<Button href="/login" variant="glass">
Start Building
</Button>

View File

@@ -302,4 +302,32 @@
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* Reusable animation effects */
.animate-fade-in-delay-1 {
animation: fadeInUp 0.8s ease-out 0.2s both;
}
.animate-fade-in-delay-2 {
animation: fadeInUp 0.8s ease-out 0.4s both;
}
.animate-fade-in-delay-3 {
animation: fadeInUp 0.8s ease-out 0.6s both;
}
.animate-fade-in-delay-4 {
animation: fadeInUp 0.8s ease-out 0.8s both;
}
@keyframes fadeInUp {
0% {
opacity: 0;
transform: translateY(30px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
}