forked from ourworld_web/www_engage_os
ok
This commit is contained in:
BIN
public/images/tfdash.png
Normal file
BIN
public/images/tfdash.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 846 KiB |
@@ -14,6 +14,7 @@ import GlobeDemo from '@/components/GlobeDemo'
|
|||||||
import { Dashboard } from '@/components/Dashboard'
|
import { Dashboard } from '@/components/Dashboard'
|
||||||
import { AppsPreview } from '@/components/Apps'
|
import { AppsPreview } from '@/components/Apps'
|
||||||
import { FarmerPreview } from '@/components/Farmer'
|
import { FarmerPreview } from '@/components/Farmer'
|
||||||
|
import { TfDashboard } from '@/components/TfDashboard'
|
||||||
|
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
@@ -23,6 +24,7 @@ export default function Home() {
|
|||||||
<StackSectionPreview />
|
<StackSectionPreview />
|
||||||
<Dashboard />
|
<Dashboard />
|
||||||
<FarmerPreview />
|
<FarmerPreview />
|
||||||
|
<TfDashboard />
|
||||||
<AppsPreview />
|
<AppsPreview />
|
||||||
|
|
||||||
</>
|
</>
|
||||||
|
@@ -22,7 +22,7 @@ const logos = [
|
|||||||
export function AppsPreview() {
|
export function AppsPreview() {
|
||||||
return (
|
return (
|
||||||
<div className="relative flex h-[40rem] w-full overflow-hidden rounded-md bg-transparent antialiased md:items-center md:justify-center">
|
<div className="relative flex h-[40rem] w-full overflow-hidden rounded-md bg-transparent antialiased md:items-center md:justify-center">
|
||||||
<div className="relative z-10 mx-auto w-full max-w-4xl p-4 pt-24">
|
<div className="relative z-10 mx-auto w-full max-w-3xl p-4 pt-16">
|
||||||
|
|
||||||
{/* Heading */}
|
{/* Heading */}
|
||||||
<motion.div
|
<motion.div
|
||||||
@@ -31,7 +31,7 @@ export function AppsPreview() {
|
|||||||
animate={{ opacity: 1, y: 0 }}
|
animate={{ opacity: 1, y: 0 }}
|
||||||
transition={{ duration: 1 }}
|
transition={{ duration: 1 }}
|
||||||
>
|
>
|
||||||
<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-5xl">
|
||||||
Anything That Runs on Linux Can Run on ThreeFold
|
Anything That Runs on Linux Can Run on ThreeFold
|
||||||
</h1>
|
</h1>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
|
@@ -14,11 +14,11 @@ const variantStyles = {
|
|||||||
'bg-gradient-to-r from-[#caa5f0] via-[#8f79f9] to-[#3c82f5] text-white hover:brightness-110 active:brightness-95',
|
'bg-gradient-to-r from-[#caa5f0] via-[#8f79f9] to-[#3c82f5] text-white hover:brightness-110 active:brightness-95',
|
||||||
cyan: 'relative overflow-hidden bg-cyan-500 text-white before:absolute before:inset-0 active:before:bg-transparent hover:before:bg-white/10 active:bg-cyan-600 active:text-white/80 before:transition-colors',
|
cyan: 'relative overflow-hidden bg-cyan-500 text-white before:absolute before:inset-0 active:before:bg-transparent hover:before:bg-white/10 active:bg-cyan-600 active:text-white/80 before:transition-colors',
|
||||||
white:
|
white:
|
||||||
'bg-white text-cyan-900 hover:bg-white/90 active:bg-white/90 active:text-cyan-900/70',
|
'bg-white text-black hover:bg-white/90 active:bg-white/90 active:text-gray-400',
|
||||||
gray: 'bg-gray-800 text-white hover:bg-gray-900 active:bg-gray-800 active:text-white/80',
|
gray: 'bg-gray-800 text-white hover:bg-gray-900 active:bg-gray-800 active:text-white/80',
|
||||||
},
|
},
|
||||||
outline: {
|
outline: {
|
||||||
gray: 'border-gray-300 text-gray-700 hover:border-gray-400 active:bg-gray-100 active:text-gray-700/80',
|
gray: 'border-gray-300 text-gray-700 hover:border-gray-600 hover:text-white active:bg-gray-100 active:text-gray-600/80',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,7 +19,7 @@ export function Dashboard() {
|
|||||||
<p className="mt-4 sm:mt-6 text-sm font-light text-pretty text-white lg:text-base">
|
<p className="mt-4 sm:mt-6 text-sm font-light text-pretty text-white lg:text-base">
|
||||||
ThreeFold’s groundbreaking technology enables anyone – individuals, organizations, and communities – to deploy their own Internet infrastructure.
|
ThreeFold’s groundbreaking technology enables anyone – individuals, organizations, and communities – to deploy their own Internet infrastructure.
|
||||||
</p>
|
</p>
|
||||||
<Button className="mt-6" variant="solid" color="gradient" href="https://threefold.io/build" >Explore TFGrid →</Button>
|
<Button className="mt-8" variant="outline" href="https://threefold.io/build" >Explore TFGrid →</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@@ -61,7 +61,7 @@ export function FarmerPreview() {
|
|||||||
</div>
|
</div>
|
||||||
{/* Right Column - Stacked Cubes (2/3 width) */}
|
{/* Right Column - Stacked Cubes (2/3 width) */}
|
||||||
<div className="lg:col-span-2 flex items-center justify-center lg:justify-start order-2 lg:order-2">
|
<div className="lg:col-span-2 flex items-center justify-center lg:justify-start order-2 lg:order-2">
|
||||||
<Button variant="outline" className=" text-black px-4 py-2 rounded-md hover:bg-gray-700 transition-colors">
|
<Button variant="outline">
|
||||||
Become A Farmer
|
Become A Farmer
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -73,7 +73,7 @@ export function Header() {
|
|||||||
{({ open }) => (
|
{({ open }) => (
|
||||||
<>
|
<>
|
||||||
<PopoverButton
|
<PopoverButton
|
||||||
className="relative z-10 -m-2 inline-flex items-center rounded-lg stroke-white p-2 hover:bg-gray-800/50 hover:stroke-gray-300 focus:not-data-focus:outline-hidden active:stroke-white"
|
className="relative z-10 -m-2 inline-flex items-center rounded-lg stroke-white p-2 hover:bg-transparent hover:stroke-gray-200 focus:not-data-focus:outline-hidden active:stroke-white"
|
||||||
aria-label="Toggle site navigation"
|
aria-label="Toggle site navigation"
|
||||||
>
|
>
|
||||||
{({ open }) =>
|
{({ open }) =>
|
||||||
@@ -134,9 +134,11 @@ export function Header() {
|
|||||||
</Popover>
|
</Popover>
|
||||||
<div className="flex items-center gap-6 max-lg:hidden">
|
<div className="flex items-center gap-6 max-lg:hidden">
|
||||||
<Button href="/login" variant="outline">
|
<Button href="/login" variant="outline">
|
||||||
Log in
|
Info
|
||||||
|
</Button>
|
||||||
|
<Button href="#" variant="solid" color="white">
|
||||||
|
Participate
|
||||||
</Button>
|
</Button>
|
||||||
<Button href="#">Download</Button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Container>
|
</Container>
|
||||||
|
@@ -17,7 +17,7 @@ export function NavLinks() {
|
|||||||
<Link
|
<Link
|
||||||
key={label}
|
key={label}
|
||||||
href={href}
|
href={href}
|
||||||
className="relative -mx-3 -my-2 rounded-lg px-3 py-2 text-sm text-gray-300 transition-colors delay-150 hover:text-white hover:delay-0"
|
className="relative -mx-3 -my-2 rounded-lg px-3 py-2 text-sm text-gray-600 transition-colors delay-150 hover:text-white hover:delay-0"
|
||||||
onMouseEnter={() => {
|
onMouseEnter={() => {
|
||||||
if (timeoutRef.current) {
|
if (timeoutRef.current) {
|
||||||
window.clearTimeout(timeoutRef.current)
|
window.clearTimeout(timeoutRef.current)
|
||||||
@@ -33,7 +33,7 @@ export function NavLinks() {
|
|||||||
<AnimatePresence>
|
<AnimatePresence>
|
||||||
{hoveredIndex === index && (
|
{hoveredIndex === index && (
|
||||||
<motion.span
|
<motion.span
|
||||||
className="absolute inset-0 rounded-lg bg-gray-800"
|
className="absolute inset-0 rounded-lg bg-transparent"
|
||||||
layoutId="hoverBackground"
|
layoutId="hoverBackground"
|
||||||
initial={{ opacity: 0 }}
|
initial={{ opacity: 0 }}
|
||||||
animate={{ opacity: 1, transition: { duration: 0.15 } }}
|
animate={{ opacity: 1, transition: { duration: 0.15 } }}
|
||||||
|
@@ -17,10 +17,10 @@ export function StackSectionPreview() {
|
|||||||
<h2 className="text-xl sm:text-2xl font-semibold tracking-tight leading-tight text-white lg:text-4xl">
|
<h2 className="text-xl sm:text-2xl font-semibold tracking-tight leading-tight text-white lg:text-4xl">
|
||||||
A Decentralized Infrastructure Layer
|
A Decentralized Infrastructure Layer
|
||||||
</h2>
|
</h2>
|
||||||
<p className="mt-4 sm:mt-6 text-sm font-light text-pretty text-white lg:text-base">
|
<p className="mt-4 lg:mt-6 text-sm font-light text-pretty text-white lg:text-base">
|
||||||
We have built a foundational platform that runs directly on bare metal, offering a scalable solution focused on the essential building blocks of the Internet and Cloud: compute, data, and network.
|
We have built a foundational platform that runs directly on bare metal, offering a scalable solution focused on the essential building blocks of the Internet and Cloud: compute, data, and network.
|
||||||
</p>
|
</p>
|
||||||
<Button className="mt-4" variant="solid" color="gradient" href="https://threefold.io/build" >Discover How It Works →</Button>
|
<Button className="mt-8" variant="outline" href="https://threefold.io/build" >Discover How It Works →</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Right Column - Stacked Cubes (2/3 width) */}
|
{/* Right Column - Stacked Cubes (2/3 width) */}
|
||||||
|
91
src/components/TfDashboard.tsx
Normal file
91
src/components/TfDashboard.tsx
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { CloudArrowUpIcon, LockClosedIcon, ServerIcon } from '@heroicons/react/20/solid'
|
||||||
|
import { motion } from 'framer-motion'
|
||||||
|
import { Button } from './Button'
|
||||||
|
|
||||||
|
const features = [
|
||||||
|
{
|
||||||
|
name: 'Push to deploy.',
|
||||||
|
description: 'Lorem ipsum, dolor sit amet consectetur adipisicing elit aute id magna.',
|
||||||
|
icon: CloudArrowUpIcon,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'SSL certificates.',
|
||||||
|
description: 'Anim aute id magna aliqua ad ad non deserunt sunt. Qui irure qui lorem cupidatat commodo.',
|
||||||
|
icon: LockClosedIcon,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Database backups.',
|
||||||
|
description: 'Ac tincidunt sapien vehicula erat auctor pellentesque rhoncus.',
|
||||||
|
icon: ServerIcon,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
export function TfDashboard() {
|
||||||
|
return (
|
||||||
|
<div className="bg-transparent pt-24 pb-0">
|
||||||
|
<div className="mx-auto max-w-7xl px-4 lg:px-2">
|
||||||
|
<div className="relative isolate overflow-hidden bg-transparent px-6 py-12 after:pointer-events-none after:absolute after:inset-0 after:inset-ring after:inset-ring-white/10 sm:rounded-3xl sm:px-10 sm:py-24 after:sm:rounded-3xl lg:py-24 xl:px-24">
|
||||||
|
<div className="mx-auto grid max-w-2xl grid-cols-1 gap-x-8 gap-y-16 sm:gap-y-20 lg:mx-0 lg:max-w-none lg:grid-cols-2 lg:items-center lg:gap-y-0">
|
||||||
|
<div className="lg:row-start-2 lg:max-w-md">
|
||||||
|
<motion.h2
|
||||||
|
className="text-3xl font-semibold tracking-tight text-balance text-white sm:text-4xl"
|
||||||
|
initial={{opacity: 0}}
|
||||||
|
animate={{opacity: 1}}
|
||||||
|
transition={{delay: 0.5, duration: 0.5}}
|
||||||
|
>
|
||||||
|
Threefold Dashboard
|
||||||
|
</motion.h2>
|
||||||
|
<motion.p
|
||||||
|
className="mt-4 lg:mt-6 text-sm font-light text-pretty text-white lg:text-base"
|
||||||
|
initial={{opacity: 0}}
|
||||||
|
animate={{opacity: 1}}
|
||||||
|
transition={{delay: 1, duration: 0.5}}
|
||||||
|
>
|
||||||
|
ThreeFold is open for developers and system administrators. Deploy virtual machines, containers, Kubernetes clusters, web gateways, and more on top of a best-effort decentralized open source cloud.
|
||||||
|
</motion.p>
|
||||||
|
<motion.p
|
||||||
|
className="mt-6 text-sm font-light text-pretty text-white lg:text-base"
|
||||||
|
initial={{opacity: 0}}
|
||||||
|
animate={{opacity: 1}}
|
||||||
|
transition={{delay: 1.5, duration: 0.5}}
|
||||||
|
>
|
||||||
|
The ThreeFold Dashboard is your gateway to the new internet infrastructure. It can be used by any Web2, Web3, AI, or Edge IT workload – enabling a world of possibilities.
|
||||||
|
</motion.p>
|
||||||
|
<motion.div
|
||||||
|
initial={{opacity: 0}}
|
||||||
|
animate={{opacity: 1}}
|
||||||
|
transition={{delay: 2, duration: 1}}
|
||||||
|
>
|
||||||
|
<Button className="mt-8" variant="outline" href="https://dashboard.threefold.io" >Explore the Dashboard →</Button>
|
||||||
|
</motion.div>
|
||||||
|
</div>
|
||||||
|
<motion.img
|
||||||
|
alt="Product screenshot"
|
||||||
|
src="/images/tfdash.png"
|
||||||
|
width={2432}
|
||||||
|
height={1442}
|
||||||
|
className="relative z-0 max-w-xl min-w-full rounded-xl shadow-xl ring-1 ring-white/10 lg:row-span-4 lg:w-5xl lg:max-w-none"
|
||||||
|
whileHover={{scale: 1.05}}
|
||||||
|
transition={{duration: 0.5}}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
aria-hidden="true"
|
||||||
|
className="pointer-events-none absolute top-1/2 left-12 -z-10 -translate-y-1/2 transform-gpu blur-3xl lg:top-auto lg:-bottom-48 lg:translate-y-0"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
clipPath:
|
||||||
|
'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',
|
||||||
|
}}
|
||||||
|
className="aspect-1155/678 w-288.75 bg-linear-to-tr from-[#ff80b5] to-[#9089fc] opacity-20"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
Reference in New Issue
Block a user