aethex-forge/client/pages/Index.tsx
Builder.io 305068a6cc Update resource offerings grid with colorful cards
cgen-8c67072d3ab64ca99f6279dde03154be
2025-10-04 10:53:59 +00:00

577 lines
23 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.

import { useState, useEffect } from "react";
import Layout from "@/components/Layout";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Badge } from "@/components/ui/badge";
import LoadingScreen from "@/components/LoadingScreen";
import { SkeletonStats, SkeletonUserPath } from "@/components/Skeleton";
import { Link } from "react-router-dom";
import {
GamepadIcon,
BriefcaseIcon,
UsersIcon,
ShoppingCartIcon,
ArrowRight,
CheckCircle,
Sparkles,
Zap,
Target,
Users,
TrendingUp,
Microscope,
} from "lucide-react";
export default function Index() {
const [isLoading, setIsLoading] = useState(true);
const [activeSection, setActiveSection] = useState(0);
useEffect(() => {
const timer = setTimeout(() => {
setIsLoading(false);
}, 1200);
return () => clearTimeout(timer);
}, []);
useEffect(() => {
const interval = setInterval(() => {
setActiveSection((prev) => (prev + 1) % 4);
}, 4000);
return () => clearInterval(interval);
}, []);
const features = [
{
title: "Game Development",
description: "Fullcycle production and tooling",
icon: Zap,
color: "from-blue-500 to-purple-600",
},
{
title: "Product Design",
description: "UX/UI, prototyping, and branding",
icon: Target,
color: "from-purple-500 to-pink-600",
},
{
title: "Platform Engineering",
description: "Web, mobile, and backend foundations",
icon: Users,
color: "from-green-500 to-blue-600",
},
{
title: "Community & Growth",
description: "Programs, content, and engagement",
icon: TrendingUp,
color: "from-orange-500 to-red-600",
},
];
const achievements = [
{ metric: "10K+", label: "Active Creators" },
{ metric: "500+", label: "Projects Shipped" },
{ metric: "99.99%", label: "Feature Quality" },
{ metric: "24/7", label: "Global Community" },
];
const serviceOfferings = [
{
title: "Game Development",
description: "Studios and indie support",
link: "/game-development",
cardClass:
"border-blue-500/40 bg-gradient-to-br from-blue-950/60 via-indigo-950/30 to-purple-900/40 text-blue-100 hover:border-blue-400/80 hover:shadow-[0_0_25px_rgba(59,130,246,0.35)]",
titleClass: "text-blue-100",
descriptionClass: "text-blue-100/70",
buttonClass:
"bg-gradient-to-r from-blue-500 via-indigo-500 to-purple-500 hover:from-blue-400 hover:via-indigo-400 hover:to-purple-400 text-white shadow-[0_0_18px_rgba(59,130,246,0.25)]",
},
{
title: "Consulting",
description: "Architecture & delivery",
link: "/consulting",
cardClass:
"border-fuchsia-500/40 bg-gradient-to-br from-fuchsia-950/60 via-rose-950/30 to-purple-900/40 text-fuchsia-100 hover:border-fuchsia-400/80 hover:shadow-[0_0_25px_rgba(217,70,239,0.35)]",
titleClass: "text-fuchsia-100",
descriptionClass: "text-fuchsia-100/70",
buttonClass:
"bg-gradient-to-r from-fuchsia-500 via-pink-500 to-rose-500 hover:from-fuchsia-400 hover:via-pink-400 hover:to-rose-400 text-white shadow-[0_0_18px_rgba(236,72,153,0.25)]",
},
{
title: "Mentorship",
description: "Programs and guidance",
link: "/mentorship",
cardClass:
"border-emerald-500/40 bg-gradient-to-br from-emerald-950/60 via-teal-950/30 to-blue-900/40 text-emerald-100 hover:border-emerald-400/80 hover:shadow-[0_0_25px_rgba(16,185,129,0.35)]",
titleClass: "text-emerald-100",
descriptionClass: "text-emerald-100/70",
buttonClass:
"bg-gradient-to-r from-emerald-500 via-teal-500 to-cyan-500 hover:from-emerald-400 hover:via-teal-400 hover:to-cyan-400 text-black font-semibold shadow-[0_0_18px_rgba(20,184,166,0.25)]",
},
];
const resourceOfferings = [
{
title: "Documentation",
description: "Guides and tutorials",
cardClass:
"border-cyan-400/40 bg-gradient-to-br from-cyan-950/50 via-sky-950/25 to-blue-900/30 text-cyan-100 hover:border-cyan-300/70 hover:shadow-[0_0_20px_rgba(34,211,238,0.3)]",
titleClass: "text-cyan-100",
descriptionClass: "text-cyan-100/70",
actions: [
{
label: "Docs",
href: "/docs",
variant: "outline",
buttonClass:
"border-cyan-400/60 text-cyan-200 hover:bg-cyan-500/10 hover:text-cyan-100",
},
{
label: "Tutorials",
href: "/docs/tutorials",
variant: "outline",
buttonClass:
"border-cyan-400/60 text-cyan-200 hover:bg-cyan-500/10 hover:text-cyan-100",
},
],
},
{
title: "Community",
description: "News and discussions",
cardClass:
"border-orange-400/40 bg-gradient-to-br from-amber-950/50 via-orange-950/25 to-rose-900/30 text-orange-100 hover:border-orange-300/70 hover:shadow-[0_0_20px_rgba(249,115,22,0.3)]",
titleClass: "text-orange-100",
descriptionClass: "text-orange-100/70",
actions: [
{
label: "Community",
href: "/community",
variant: "outline",
buttonClass:
"border-orange-400/60 text-orange-200 hover:bg-orange-500/10 hover:text-orange-100",
},
{
label: "Blog",
href: "/blog",
variant: "outline",
buttonClass:
"border-orange-400/60 text-orange-200 hover:bg-orange-500/10 hover:text-orange-100",
},
],
},
{
title: "Company",
description: "About and contact",
cardClass:
"border-indigo-400/40 bg-gradient-to-br from-indigo-950/50 via-blue-950/25 to-slate-900/30 text-indigo-100 hover:border-indigo-300/70 hover:shadow-[0_0_20px_rgba(99,102,241,0.3)]",
titleClass: "text-indigo-100",
descriptionClass: "text-indigo-100/70",
actions: [
{
label: "About",
href: "/about",
variant: "outline",
buttonClass:
"border-indigo-400/60 text-indigo-200 hover:bg-indigo-500/10 hover:text-indigo-100",
},
{
label: "Contact",
href: "/contact",
variant: "outline",
buttonClass:
"border-indigo-400/60 text-indigo-200 hover:bg-indigo-500/10 hover:text-indigo-100",
},
],
},
];
if (isLoading) {
return (
<LoadingScreen
message="Initializing AeThex OS..."
showProgress={true}
duration={1200}
/>
);
}
return (
<Layout>
{/* Hero Section - Geometric Design */}
<section className="relative min-h-screen flex items-center justify-center overflow-hidden">
{/* Geometric Background Pattern */}
<div className="absolute inset-0">
<div className="absolute inset-0 bg-gradient-to-br from-aethex-900/50 via-background to-aethex-800/50" />
<div className="absolute inset-0">
{/* Large Logo-inspired Geometric Shape */}
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2">
<div className="relative w-96 h-96 opacity-5">
<img
src="https://cdn.builder.io/api/v1/image/assets%2Ffc53d607e21d497595ac97e0637001a1%2F3979ec9a8a28471d900a80e94e2c45fe?format=webp&width=800"
alt="Background"
className="w-full h-full animate-float"
/>
</div>
</div>
{/* Floating Geometric Elements */}
{[...Array(20)].map((_, i) => (
<div
key={i}
className="absolute bg-aethex-400/20 animate-float"
style={{
width: `${10 + Math.random() * 20}px`,
height: `${10 + Math.random() * 20}px`,
left: `${Math.random() * 100}%`,
top: `${Math.random() * 100}%`,
animationDelay: `${Math.random() * 5}s`,
animationDuration: `${4 + Math.random() * 3}s`,
clipPath: "polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)",
}}
/>
))}
</div>
</div>
{/* Main Content */}
<div className="container mx-auto px-4 relative z-10">
<div className="text-center space-y-12">
{/* Title */}
<div className="space-y-6 animate-scale-in">
<div className="space-y-4">
<h1 className="text-4xl sm:text-5xl lg:text-7xl font-bold">
<span className="text-gradient-purple">AeThex</span>
</h1>
<h2 className="text-2xl lg:text-3xl text-gradient animate-fade-in">
Crafting Digital Realities
</h2>
<p className="text-lg text-muted-foreground max-w-2xl mx-auto animate-slide-up">
Where vision meets execution. We craft experiences through
design, development, and community.
</p>
</div>
</div>
{/* Interactive Features Grid */}
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6 max-w-4xl mx-auto animate-slide-up">
{features.map((feature, index) => {
const Icon = feature.icon;
const isActive = activeSection === index;
return (
<Card
key={index}
className={`relative overflow-hidden border-2 transition-all duration-500 hover-lift cursor-pointer group ${
isActive
? "border-aethex-500 glow-blue scale-105"
: "border-border/30 hover:border-aethex-400/50"
}`}
onClick={() => setActiveSection(index)}
>
<CardContent className="p-5 sm:p-6 text-center space-y-3">
<div
className={`mx-auto w-12 h-12 rounded-lg bg-gradient-to-r ${feature.color} flex items-center justify-center transition-all duration-300 group-hover:scale-110`}
>
<Icon className="h-6 w-6 text-white" />
</div>
<h3 className="font-semibold text-sm">{feature.title}</h3>
<p className="text-xs text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity duration-300">
{feature.description}
</p>
</CardContent>
</Card>
);
})}
</div>
{/* Action Buttons */}
<div className="flex flex-col sm:flex-row justify-center gap-6 animate-slide-up">
<Button
asChild
size="lg"
className="bg-gradient-to-r from-aethex-500 to-neon-blue hover:from-aethex-600 hover:to-neon-blue/90 glow-blue hover-lift text-base sm:text-lg px-6 py-4 sm:px-8 sm:py-6"
>
<Link
to="/onboarding"
className="flex items-center space-x-2 group"
>
<Sparkles className="h-5 w-5" />
<span>Start Your Journey</span>
<ArrowRight className="h-5 w-5 transition-transform group-hover:translate-x-2" />
</Link>
</Button>
<Button
asChild
variant="outline"
size="lg"
className="border-aethex-400/50 hover:border-aethex-400 hover-lift text-base sm:text-lg px-6 py-4 sm:px-8 sm:py-6"
>
<Link to="/dashboard">Explore Dashboard</Link>
</Button>
</div>
</div>
</div>
</section>
{/* Achievements Section */}
<section className="py-16 sm:py-20 bg-background/30">
<div className="container mx-auto px-4">
<div className="max-w-6xl mx-auto">
<div className="text-center mb-16 animate-slide-up">
<h2 className="text-3xl lg:text-4xl font-bold text-gradient mb-4">
Powering Innovation Worldwide
</h2>
<p className="text-lg text-muted-foreground">
Our impact across the digital landscape
</p>
</div>
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-8">
{achievements.map((achievement, index) => (
<div
key={index}
className="text-center space-y-4 animate-scale-in hover-lift"
style={{ animationDelay: `${index * 0.2}s` }}
>
<div className="relative">
<div className="text-4xl lg:text-5xl font-bold text-gradient-purple animate-pulse-glow">
{achievement.metric}
</div>
<div className="absolute -inset-2 bg-gradient-to-r from-aethex-400/20 to-neon-blue/20 rounded-lg blur-xl opacity-50" />
</div>
<p className="text-sm text-muted-foreground uppercase tracking-wider">
{achievement.label}
</p>
</div>
))}
</div>
</div>
</div>
</section>
{/* Offerings Overview */}
<section className="py-16 sm:py-20">
<div className="container mx-auto px-4">
<div className="text-center mb-12">
<h2 className="text-3xl lg:text-4xl font-bold text-gradient">
Everything We Offer
</h2>
<p className="text-muted-foreground mt-2">
Explore services, programs, resources, and community
</p>
</div>
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
{serviceOfferings.map((offering) => (
<Card
key={offering.title}
className={`relative overflow-hidden border transition-all duration-500 group hover:-translate-y-1 ${offering.cardClass}`}
>
<div className="pointer-events-none absolute inset-0 bg-gradient-to-br from-white/10 via-transparent to-transparent opacity-0 group-hover:opacity-40 transition-opacity duration-500" />
<CardHeader className="relative space-y-2">
<CardTitle className={`text-lg ${offering.titleClass}`}>
{offering.title}
</CardTitle>
<CardDescription className={`text-sm ${offering.descriptionClass}`}>
{offering.description}
</CardDescription>
</CardHeader>
<CardContent className="relative pt-2">
<Button asChild className={`w-full ${offering.buttonClass}`}>
<Link to={offering.link}>Learn More</Link>
</Button>
</CardContent>
</Card>
))}
<Card className="relative overflow-hidden border border-yellow-400/40 bg-black/80 text-yellow-100 shadow-[0_0_20px_rgba(250,204,21,0.15)] transition-all duration-500 hover:-translate-y-1 hover:border-yellow-300 group">
<div className="pointer-events-none absolute inset-0 bg-gradient-to-br from-yellow-500/10 via-transparent to-transparent opacity-0 group-hover:opacity-40 transition-opacity duration-500" />
<CardHeader className="relative space-y-2">
<CardTitle className="flex items-center gap-2 text-lg">
<Microscope className="h-5 w-5 text-yellow-300" />
AeThex Labs
</CardTitle>
<CardDescription className="text-yellow-100/70">
BlackSite R&D portal synced with Labs mainframe
</CardDescription>
</CardHeader>
<CardContent className="relative space-y-3">
<Button
asChild
className="w-full bg-yellow-400 text-black hover:bg-yellow-300 shadow-[0_0_18px_rgba(250,204,21,0.25)]"
>
<Link to="/research">Open Interface</Link>
</Button>
<Button
asChild
variant="outline"
className="w-full border-yellow-400/60 text-yellow-200 hover:bg-yellow-500/10"
>
<a
href="https://labs.aethex.biz"
target="_blank"
rel="noreferrer"
>
Visit labs.aethex.biz
</a>
</Button>
</CardContent>
</Card>
</div>
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 mt-6">
{resourceOfferings.map((offering) => (
<Card
key={offering.title}
className={`relative overflow-hidden border transition-all duration-500 group hover:-translate-y-1 ${offering.cardClass}`}
>
<div className="pointer-events-none absolute inset-0 bg-gradient-to-br from-white/10 via-transparent to-transparent opacity-0 group-hover:opacity-35 transition-opacity duration-500" />
<CardHeader className="relative space-y-2">
<CardTitle className={`text-lg ${offering.titleClass}`}>
{offering.title}
</CardTitle>
<CardDescription className={`text-sm ${offering.descriptionClass}`}>
{offering.description}
</CardDescription>
</CardHeader>
<CardContent className="relative">
<div className="flex flex-wrap gap-2">
{offering.actions.map((action) => (
<Button
key={action.label}
asChild
variant={action.variant}
className={`flex-1 min-w-[120px] ${action.buttonClass}`}
>
{action.external ? (
<a href={action.href} target="_blank" rel="noreferrer">
{action.label}
</a>
) : (
<Link to={action.href}>{action.label}</Link>
)}
</Button>
))}
</div>
</CardContent>
</Card>
))}
</div>
</div>
</section>
{/* Technology Showcase */}
<section className="py-16 sm:py-20 relative overflow-hidden">
<div className="absolute inset-0 bg-gradient-to-r from-aethex-900/20 via-transparent to-neon-blue/20" />
<div className="container mx-auto px-4 relative z-10">
<div className="max-w-4xl mx-auto text-center space-y-12">
<div className="animate-slide-up">
<h2 className="text-3xl lg:text-4xl font-bold text-gradient mb-6">
What We Build
</h2>
<p className="text-lg text-muted-foreground">
Built on cutting-edge frameworks and powered by advanced
algorithms
</p>
</div>
{/* Interactive Technology Grid */}
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 animate-fade-in">
{[
{
name: "Game Studios",
status: "Active",
color: "from-purple-500 to-blue-600",
},
{
name: "Design Systems",
status: "Evolving",
color: "from-blue-500 to-green-600",
},
{
name: "Creator Tools",
status: "Live",
color: "from-green-500 to-yellow-600",
},
{
name: "Launch Ops",
status: "Scaling",
color: "from-yellow-500 to-red-600",
},
{
name: "Content Pipeline",
status: "In Progress",
color: "from-red-500 to-purple-600",
},
{
name: "Edge Experiences",
status: "Deployed",
color: "from-purple-500 to-pink-600",
},
].map((tech, index) => (
<Card
key={index}
className="relative overflow-hidden bg-card/30 border-border/50 hover:border-aethex-400/50 transition-all duration-500 hover-lift group animate-scale-in"
style={{ animationDelay: `${index * 0.1}s` }}
>
<CardContent className="p-6">
<div className="flex items-center justify-between mb-4">
<h3 className="font-semibold text-gradient group-hover:animate-pulse">
{tech.name}
</h3>
<div
className={`w-3 h-3 rounded-full bg-gradient-to-r ${tech.color} animate-pulse`}
/>
</div>
<p className="text-sm text-muted-foreground">
{tech.status}
</p>
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-aethex-400/5 to-transparent -translate-x-full group-hover:translate-x-full transition-transform duration-1000" />
</CardContent>
</Card>
))}
</div>
{/* Call to Action */}
<div className="space-y-6 animate-slide-up">
<h3 className="text-2xl font-bold text-gradient-purple">
Ready to Build the Future?
</h3>
<div className="flex flex-col sm:flex-row justify-center gap-4">
<Button
asChild
size="lg"
className="bg-gradient-to-r from-aethex-500 to-neon-blue hover:from-aethex-600 hover:to-neon-blue/90 glow-blue hover-lift interactive-scale"
>
<Link
to="/onboarding"
className="flex items-center space-x-2 group"
>
<Sparkles className="h-5 w-5" />
<span>Join AeThex</span>
<ArrowRight className="h-5 w-5 transition-transform group-hover:translate-x-1" />
</Link>
</Button>
<Button
asChild
variant="outline"
size="lg"
className="border-aethex-400/50 hover:border-aethex-400 hover-lift interactive-scale"
>
<Link to="/dashboard">Explore Platform</Link>
</Button>
</div>
</div>
</div>
</div>
</section>
</Layout>
);
}