veeweb-v2 / index.html
Sasanou's picture
reverse all text colors and buttons - Follow Up Deployment
36a31c9 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Particle Background Login</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://esm.sh/[email protected]"></script>
<style>
body, html {
margin: 0;
padding: 0;
overflow: hidden;
height: 100%;
background: linear-gradient(135deg, #1a202c 0%, #2d3748 100%);
}
#animation {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
}
#animation > div {
position: absolute;
top: 0;
left: 0;
width: 4px;
height: 4px;
border-radius: 50%;
opacity: 0.9;
}
.login-card {
backdrop-filter: blur(10px);
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.6);
}
.glow-button {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
box-shadow: 0 0 20px rgba(118, 75, 162, 0.6);
transition: all 0.3s ease;
}
.glow-button:hover {
transform: translateY(-2px);
box-shadow: 0 10px 25px -5px rgba(118, 75, 162, 0.8);
}
input:focus {
box-shadow: 0 0 0 2px rgba(118, 75, 162, 0.5) !important;
}
</style>
</head>
<body class="relative font-sans">
<!-- Sticky Navigation -->
<nav class="fixed top-0 left-0 right-0 bg-black/50 backdrop-blur-md z-50 border-b border-white/10">
<div class="container mx-auto px-4 py-3 flex items-center justify-between">
<div class="flex items-center space-x-2">
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8 text-indigo-400" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0L12 2.69z" />
</svg>
<span class="text-white font-bold text-xl">AwesomeApp</span>
</div>
<div class="hidden md:flex space-x-6">
<a href="#home" class="text-gray-300 hover:text-white transition">Home</a>
<a href="#features" class="text-gray-300 hover:text-white transition">Features</a>
<a href="#pricing" class="text-gray-300 hover:text-white transition">Pricing</a>
<a href="#about" class="text-gray-300 hover:text-white transition">About</a>
</div>
<div class="flex items-center space-x-4">
<div class="relative group">
<button id="languageDropdown" class="flex items-center space-x-1 text-gray-300 hover:text-white transition cursor-pointer">
<span class="language-code">EN</span>
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
</svg>
</button>
<div class="absolute right-0 mt-2 w-24 rounded-md shadow-lg bg-gray-800 border border-gray-700 hidden group-hover:block">
<div class="py-1">
<button class="language-option block w-full text-left px-4 py-2 text-sm text-white hover:bg-indigo-600" data-lang="en">English</button>
<button class="language-option block w-full text-left px-4 py-2 text-sm text-white hover:bg-indigo-600" data-lang="fr">Français</button>
<button class="language-option block w-full text-left px-4 py-2 text-sm text-white hover:bg-indigo-600" data-lang="ru">Русский</button>
</div>
</div>
</div>
<button id="showLoginBtn" class="text-white px-4 py-2 rounded-lg bg-indigo-600 hover:bg-indigo-700 transition">Login</button>
<button id="showSignupBtn" class="text-white px-4 py-2 rounded-lg bg-transparent border border-indigo-600 hover:bg-indigo-600/20 transition">Sign Up</button>
<button class="md:hidden text-white">
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
</svg>
</button>
</div>
</div>
</nav>
<!-- Background particle animation container -->
<div id="animation"></div>
<!-- Home Section -->
<section id="home" class="min-h-screen flex items-center justify-center px-4 pt-20 md:pt-24">
<div class="max-w-5xl mx-auto text-center">
<h1 class="text-5xl md:text-7xl font-bold text-white mb-6 leading-tight">
Build Amazing Things <br>
<span class="bg-gradient-to-r from-blue-500 to-purple-600 bg-clip-text text-transparent">With AwesomeApp</span>
</h1>
<p class="text-xl text-gray-300 mb-12 max-w-2xl mx-auto">
The most powerful platform to build, deploy and scale your applications with ease.
</p>
<div class="flex flex-col sm:flex-row justify-center gap-4">
<button class="px-8 py-3 bg-indigo-600 hover:bg-indigo-700 text-white rounded-lg font-semibold shadow-lg transition">
Get Started
</button>
<button class="px-8 py-3 bg-gray-800 hover:bg-gray-700 text-white rounded-lg font-semibold border border-gray-700 transition">
Learn More
</button>
</div>
</div>
</section>
<!-- Features Section -->
<section id="features" class="py-20 bg-gray-900/50">
<div class="max-w-6xl mx-auto px-4">
<div class="text-center mb-16">
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4">Powerful Features</h2>
<p class="text-gray-400 max-w-2xl mx-auto">
Everything you need to build, deploy and scale your applications
</p>
</div>
<div class="grid md:grid-cols-3 gap-8">
<div class="bg-gray-800/50 p-8 rounded-xl border border-gray-700/50 hover:border-indigo-500 transition">
<div class="w-12 h-12 bg-indigo-500/10 rounded-lg flex items-center justify-center mb-6">
<svg class="w-6 h-6 text-indigo-400" fill="currentColor" viewBox="0 0 20 20">
<path d="M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z"/>
</svg>
</div>
<h3 class="text-xl font-semibold text-white mb-3">Built-in Editor</h3>
<p class="text-gray-400">
Powerful code editor with syntax highlighting, auto-completion and custom themes.
</p>
</div>
<div class="bg-gray-800/50 p-8 rounded-xl border border-gray-700/50 hover:border-indigo-500 transition">
<div class="w-12 h-12 bg-indigo-500/10 rounded-lg flex items-center justify-center mb-6">
<svg class="w-6 h-6 text-indigo-400" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M11.3 1.046A1 1 0 0112 2v5h4a1 1 0 01.82 1.573l-7 10A1 1 0 018 18v-5H4a1 1 0 01-.82-1.573l7-10a1 1 0 011.12-.38z" clip-rule="evenodd"/>
</svg>
</div>
<h3 class="text-xl font-semibold text-white mb-3">Instant Deployment</h3>
<p class="text-gray-400">
One-click deployment to global CDN with automatic SSL and custom domains.
</p>
</div>
<div class="bg-gray-800/50 p-8 rounded-xl border border-gray-700/50 hover:border-indigo-500 transition">
<div class="w-12 h-12 bg-indigo-500/10 rounded-lg flex items-center justify-center mb-6">
<svg class="w-6 h-6 text-indigo-400" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M11.49 3.17c-.38-1.56-2.6-1.56-2.98 0a1.532 1.532 0 01-2.286.948c-1.372-.836-2.942.734-2.106 2.106.54.886.061 2.042-.947 2.287-1.561.379-1.561 2.6 0 2.978a1.532 1.532 0 01.947 2.287c-.836 1.372.734 2.942 2.106 2.106a1.532 1.532 0 012.287.947c.379 1.561 2.6 1.561 2.978 0a1.533 1.533 0 012.287-.947c1.372.836 2.942-.734 2.106-2.106a1.533 1.533 0 01.947-2.287c1.561-.379 1.561-2.6 0-2.978a1.532 1.532 0 01-.947-2.287c.836-1.372-.734-2.942-2.106-2.106a1.532 1.532 0 01-2.287-.947zM10 13a3 3 0 100-6 3 3 0 000 6z" clip-rule="evenodd"/>
</svg>
</div>
<h3 class="text-xl font-semibold text-white mb-3">Advanced Analytics</h3>
<p class="text-gray-400">
Real-time monitoring and analytics to track your application's performance.
</p>
</div>
</div>
</div>
</section>
<!-- Pricing Section -->
<section id="pricing" class="py-20">
<div class="max-w-6xl mx-auto px-4">
<div class="text-center mb-16">
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4">Simple Pricing</h2>
<p class="text-gray-400 max-w-2xl mx-auto">
Choose the plan that fits your needs
</p>
</div>
<div class="grid md:grid-cols-3 gap-8 max-w-5xl mx-auto">
<div class="bg-gray-800/50 p-8 rounded-xl border border-gray-700/50">
<h3 class="text-xl font-semibold text-white mb-4">Starter</h3>
<div class="text-4xl font-bold text-white mb-6">
$9<span class="text-lg text-gray-400">/month</span>
</div>
<ul class="space-y-3 mb-8">
<li class="flex items-center text-gray-300">
<svg class="w-5 h-5 mr-2 text-green-500" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/>
</svg>
10 Projects
</li>
<li class="flex items-center text-gray-300">
<svg class="w-5 h-5 mr-2 text-green-500" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/>
</svg>
50GB Storage
</li>
<li class="flex items-center text-gray-300">
<svg class="w-5 h-5 mr-2 text-green-500" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/>
</svg>
Basic Analytics
</li>
</ul>
<button class="w-full py-3 bg-gray-700 hover:bg-gray-600 text-white rounded-lg font-medium transition">
Get Started
</button>
</div>
<div class="bg-gray-800/50 p-8 rounded-xl border-2 border-indigo-500 relative">
<div class="absolute -top-3 left-1/2 transform -translate-x-1/2 bg-indigo-500 text-white text-xs font-semibold px-3 py-1 rounded-full">
POPULAR
</div>
<h3 class="text-xl font-semibold text-white mb-4">Pro</h3>
<div class="text-4xl font-bold text-white mb-6">
$29<span class="text-lg text-gray-400">/month</span>
</div>
<ul class="space-y-3 mb-8">
<li class="flex items-center text-gray-300">
<svg class="w-5 h-5 mr-2 text-green-500" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/>
</svg>
50 Projects
</li>
<li class="flex items-center text-gray-300">
<svg class="w-5 h-5 mr-2 text-green-500" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/>
</svg>
500GB Storage
</li>
<li class="flex items-center text-gray-300">
<svg class="w-5 h-5 mr-2 text-green-500" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/>
</svg>
Advanced Analytics
</li>
</ul>
<button class="w-full py-3 bg-indigo-600 hover:bg-indigo-700 text-white rounded-lg font-medium transition">
Get Started
</button>
</div>
<div class="bg-gray-800/50 p-8 rounded-xl border border-gray-700/50">
<h3 class="text-xl font-semibold text-white mb-4">Enterprise</h3>
<div class="text-4xl font-bold text-white mb-6">
$99<span class="text-lg text-gray-400">/month</span>
</div>
<ul class="space-y-3 mb-8">
<li class="flex items-center text-gray-300">
<svg class="w-5 h-5 mr-2 text-green-500" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/>
</svg>
Unlimited Projects
</li>
<li class="flex items-center text-gray-300">
<svg class="w-5 h-5 mr-2 text-green-500" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/>
</svg>
2TB Storage
</li>
<li class="flex items-center text-gray-300">
<svg class="w-5 h-5 mr-2 text-green-500" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/>
</svg>
Premium Support
</li>
</ul>
<button class="w-full py-3 bg-gray-700 hover:bg-gray-600 text-white rounded-lg font-medium transition">
Get Started
</button>
</div>
</div>
</div>
</section>
<!-- About Section -->
<section id="about" class="py-20 bg-gray-900/50">
<div class="max-w-6xl mx-auto px-4">
<div class="text-center mb-16">
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4">About Us</h2>
<p class="text-gray-400 max-w-2xl mx-auto">
Our mission is to empower developers to build amazing things
</p>
</div>
<div class="md:flex items-center gap-12">
<div class="md:w-1/2 mb-10 md:mb-0">
<div class="relative">
<div class="absolute -inset-4 bg-gradient-to-r from-indigo-600 to-purple-600 rounded-2xl opacity-20 blur"></div>
<div class="relative bg-gray-800/50 rounded-2xl border border-gray-700 p-6">
<p class="text-gray-300 mb-4">
Founded in 2020, AwesomeApp started with a simple goal: to make application development accessible to everyone.
</p>
<p class="text-gray-300 mb-4">
Our platform provides all the tools you need to go from idea to production in minutes, without worrying about infrastructure.
</p>
<p class="text-gray-300">
Join thousands of developers who are already building amazing things with AwesomeApp.
</p>
</div>
</div>
</div>
<div class="md:w-1/2">
<div class="grid grid-cols-2 gap-4">
<div class="bg-indigo-500/10 p-6 rounded-xl border border-indigo-500/30">
<div class="text-3xl font-bold text-indigo-400 mb-2">10,000+</div>
<div class="text-gray-400">Active Users</div>
</div>
<div class="bg-indigo-500/10 p-6 rounded-xl border border-indigo-500/30">
<div class="text-3xl font-bold text-indigo-400 mb-2">50+</div>
<div class="text-gray-400">Countries</div>
</div>
<div class="bg-indigo-500/10 p-6 rounded-xl border border-indigo-500/30">
<div class="text-3xl font-bold text-indigo-400 mb-2">24/7</div>
<div class="text-gray-400">Support</div>
</div>
<div class="bg-indigo-500/10 p-6 rounded-xl border border-indigo-500/30">
<div class="text-3xl font-bold text-indigo-400 mb-2">99.9%</div>
<div class="text-gray-400">Uptime</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Login/Signup Content -->
<div class="flex items-center justify-center min-h-screen px-4 pt-20 md:pt-24">
<div class="login-card w-full max-w-md bg-white/10 rounded-2xl overflow-hidden border border-white/10">
<div class="text-center py-10 px-6 sm:px-10">
<!-- Logo -->
<div class="w-24 h-24 rounded-full bg-gradient-to-r from-indigo-500/20 to-purple-500/20 mx-auto mb-6 flex items-center justify-center">
<svg xmlns="http://www.w3.org/2000/svg" class="h-12 w-12 text-indigo-300" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0L12 2.69z" />
</svg>
</div>
<!-- Heading -->
<h1 class="text-3xl font-bold text-white mb-2">Welcome Back</h1>
<p class="text-gray-300 mb-8">Sign in to continue your journey</p>
<!-- Login Form -->
<form id="loginForm" class="space-y-6">
<div>
<label for="email" class="block text-left text-white text-sm font-medium mb-2">Email Address</label>
<input
type="email"
id="email"
name="email"
required
class="w-full px-4 py-3 bg-gray-800/50 border border-gray-700 rounded-lg text-white placeholder-gray-400 focus:outline-none transition-all"
placeholder="[email protected]"
>
</div>
<div>
<label for="password" class="block text-left text-white text-sm font-medium mb-2">Password</label>
<input
type="password"
id="password"
name="password"
required
class="w-full px-4 py-3 bg-gray-800/50 border border-gray-700 rounded-lg text-white placeholder-gray-400 focus:outline-none transition-all"
placeholder="••••••••"
>
</div>
<div class="flex items-center justify-between">
<div class="flex items-center">
<input
id="remember"
name="remember"
type="checkbox"
class="h-4 w-4 text-indigo-500 focus:ring-indigo-400 rounded border-gray-600 bg-gray-700"
>
<label for="remember" class="ml-2 block text-sm text-gray-300">Remember me</label>
</div>
<a href="#" class="text-sm text-purple-300 hover:text-purple-200 transition-colors">
Forgot password?
</a>
</div>
<button
type="submit"
class="w-full glow-button text-white font-semibold py-3 px-4 rounded-lg transition-all"
>
Sign In
</button>
</form>
<!-- OAuth Options -->
<div class="mt-8">
<p class="text-gray-400 text-sm">Or continue with</p>
<div class="flex justify-center space-x-4 mt-3">
<button class="w-10 h-10 rounded-full bg-gray-800 flex items-center justify-center hover:bg-gray-700 transition-colors">
<svg class="w-5 h-5 text-blue-500" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M22.675 0h-21.35c-.732 0-1.325.593-1.325 1.325v21.351c0 .731.593 1.324 1.325 1.324h11.495v-9.294h-3.128v-3.622h3.128v-2.671c0-3.1 1.893-4.788 4.659-4.788 1.325 0 2.463.099 2.795.143v3.24l-1.918.001c-1.504 0-1.795.715-1.795 1.763v2.313h3.587l-.467 3.622h-3.12v9.293h6.116c.73 0 1.323-.593 1.323-1.325v-21.35c0-.732-.593-1.325-1.325-1.325z"/>
</svg>
</button>
<button class="w-10 h-10 rounded-full bg-gray-800 flex items-center justify-center hover:bg-gray-700 transition-colors">
<svg class="w-5 h-5 text-blue-400" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307c-1.467-1.353-3.267-2.053-5.807-2.053-5.413 0-9.867 4.013-9.867 9.467 0 5.453 4.454 9.467 9.867 9.467 5.547 0 8.813-4.52 8.813-10.72 0-.267-.027-.427-.06-.853h-8.748z"/>
</svg>
</button>
<button class="w-10 h-10 rounded-full bg-gray-800 flex items-center justify-center hover:bg-gray-700 transition-colors">
<svg class="w-5 h-5 text-gray-300" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
</svg>
</button>
</div>
</div>
<!-- Sign up link -->
<p class="mt-8 text-gray-400">
Don't have an account?
<button id="showSignupBtnBottom" class="text-purple-300 font-medium hover:text-purple-200 transition-colors">Sign up</button>
</p>
</div>
</div>
<!-- Sign Up Card (Hidden by default) -->
<div id="signupCard" class="login-card w-full max-w-md bg-white/10 rounded-2xl overflow-hidden border border-white/10 hidden">
<div class="text-center py-10 px-6 sm:px-10">
<!-- Logo -->
<div class="w-24 h-24 rounded-full bg-gradient-to-r from-indigo-500/20 to-purple-500/20 mx-auto mb-6 flex items-center justify-center">
<svg xmlns="http://www.w3.org/2000/svg" class="h-12 w-12 text-indigo-300" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0L12 2.69z" />
</svg>
</div>
<!-- Heading -->
<h1 class="text-3xl font-bold text-white mb-2">Create Account</h1>
<p class="text-gray-300 mb-8">Join our community today</p>
<!-- Sign Up Form -->
<form id="signupForm" class="space-y-6">
<div>
<label for="signupName" class="block text-left text-white text-sm font-medium mb-2">Full Name</label>
<input
type="text"
id="signupName"
name="name"
required
class="w-full px-4 py-3 bg-gray-800/50 border border-gray-700 rounded-lg text-white placeholder-gray-400 focus:outline-none transition-all"
placeholder="John Doe"
>
</div>
<div>
<label for="signupEmail" class="block text-left text-white text-sm font-medium mb-2">Email Address</label>
<input
type="email"
id="signupEmail"
name="email"
required
class="w-full px-4 py-3 bg-gray-800/50 border border-gray-700 rounded-lg text-white placeholder-gray-400 focus:outline-none transition-all"
placeholder="[email protected]"
>
</div>
<div>
<label for="signupPassword" class="block text-left text-white text-sm font-medium mb-2">Password</label>
<input
type="password"
id="signupPassword"
name="password"
required
class="w-full px-4 py-3 bg-gray-800/50 border border-gray-700 rounded-lg text-white placeholder-gray-400 focus:outline-none transition-all"
placeholder="••••••••"
>
</div>
<div>
<label for="signupConfirmPassword" class="block text-left text-white text-sm font-medium mb-2">Confirm Password</label>
<input
type="password"
id="signupConfirmPassword"
name="confirmPassword"
required
class="w-full px-4 py-3 bg-gray-800/50 border border-gray-700 rounded-lg text-white placeholder-gray-400 focus:outline-none transition-all"
placeholder="••••••••"
>
</div>
<div class="flex items-center">
<input
id="terms"
name="terms"
type="checkbox"
required
class="h-4 w-4 text-indigo-500 focus:ring-indigo-400 rounded border-gray-600 bg-gray-700"
>
<label for="terms" class="ml-2 block text-sm text-gray-300">
I agree to the <a href="#" class="text-purple-300">Terms</a> and <a href="#" class="text-purple-300">Privacy Policy</a>
</label>
</div>
<button
type="submit"
class="w-full glow-button text-white font-semibold py-3 px-4 rounded-lg transition-all"
>
Create Account
</button>
</form>
<!-- Sign in link -->
<p class="mt-8 text-gray-400">
Already have an account?
<button id="showLoginBtnBottom" class="text-purple-300 font-medium hover:text-purple-200 transition-colors">Sign in</button>
</p>
</div>
</div>
</div>
<script>
// Language data
const translations = {
en: {
appName: "AwesomeApp",
home: "Home",
features: "Features",
pricing: "Pricing",
about: "About",
login: "Login",
signup: "Sign Up",
welcomeBack: "Welcome Back",
signInPrompt: "Sign in to continue your journey",
email: "Email Address",
password: "Password",
rememberMe: "Remember me",
forgotPassword: "Forgot password?",
signIn: "Sign In",
continueWith: "Or continue with",
noAccount: "Don't have an account?",
createAccount: "Create Account",
joinCommunity: "Join our community today",
fullName: "Full Name",
confirmPassword: "Confirm Password",
termsAgreement: "I agree to the Terms and Privacy Policy",
terms: "Terms",
privacy: "Privacy Policy",
haveAccount: "Already have an account?"
},
fr: {
appName: "SuperApp",
home: "Accueil",
features: "Fonctionnalités",
pricing: "Tarifs",
about: "À propos",
login: "Connexion",
signup: "Inscription",
welcomeBack: "Bon retour parmi nous",
signInPrompt: "Connectez-vous pour continuer",
email: "Adresse e-mail",
password: "Mot de passe",
rememberMe: "Se souvenir de moi",
forgotPassword: "Mot de passe oublié?",
signIn: "Se connecter",
continueWith: "Ou continuer avec",
noAccount: "Vous n'avez pas de compte?",
createAccount: "Créer un compte",
joinCommunity: "Rejoignez notre communauté aujourd'hui",
fullName: "Nom complet",
confirmPassword: "Confirmez le mot de passe",
termsAgreement: "J'accepte les Conditions et la Politique de confidentialité",
terms: "Conditions",
privacy: "Politique de confidentialité",
haveAccount: "Vous avez déjà un compte?"
},
ru: {
appName: "ОтличноеПриложение",
home: "Главная",
features: "Возможности",
pricing: "Цены",
about: "О нас",
login: "Войти",
signup: "Регистрация",
welcomeBack: "С возвращением",
signInPrompt: "Войдите, чтобы продолжить",
email: "Электронная почта",
password: "Пароль",
rememberMe: "Запомнить меня",
forgotPassword: "Забыли пароль?",
signIn: "Войти",
continueWith: "Или войти через",
noAccount: "Нет учетной записи?",
createAccount: "Создать аккаунт",
joinCommunity: "Присоединяйтесь к нашему сообществу",
fullName: "Полное имя",
confirmPassword: "Подтвердите пароль",
termsAgreement: "Я согласен с Условиями и Политикой конфиденциальности",
terms: "Условия",
privacy: "Политика конфиденциальности",
haveAccount: "Уже есть аккаунт?"
}
};
const { random, cos, sin, sqrt, PI } = Math;
const count = 2500;
const duration = 3000;
const win = { w: window.innerWidth * .26, h: window.innerHeight * .26 };
const target = { x: 0, y: 0, r: win.w * .25 };
const radius = Symbol();
const theta = Symbol();
// Set up animation container
const animationContainer = document.getElementById('animation');
// Create particles
for (let i = 0; i < count; i++) {
const $el = document.createElement('div');
const h = anime.random(15, 25);
const l = anime.random(10, 18);
$el.style.background = `hsl(${h}, 60%, ${l}%)`;
$el[theta] = random() * PI * 2;
$el[radius] = target.r * sqrt(random());
animationContainer.appendChild($el);
}
// Create timeline animation
const tl = anime.timeline({
targets: animationContainer.children,
autoplay: true,
loop: true,
easing: 'easeInOutQuad',
onLoop: self => self.refresh(),
});
tl.add({
targets: animationContainer.children,
x: $el => target.x + ($el[radius] * cos($el[theta])),
y: $el => target.y + ($el[radius] * sin($el[theta])),
duration: () => duration + anime.random(-100, 100),
easing: 'easeInOutQuad',
onLoop: self => {
const t = self.animatables[0].target;
t[theta] = random() * PI * 2;
t[radius] = target.r * sqrt(random());
self.refresh();
}
}, 0)
.add({
targets: target,
r: () => win.w * anime.random(.05, .5, 2),
duration: 1250,
update: () => tl.restart()
}, 0)
.add({
targets: target,
x: () => anime.random(-win.w, win.w),
modifier: x => x + sin(tl.currentTime * .0007) * (win.w * .65),
duration: 2800,
update: () => tl.restart()
}, 0)
.add({
targets: target,
y: () => anime.random(-win.h, win.h),
modifier: y => y + cos(tl.currentTime * .00012) * (win.h * .65),
duration: 1800,
update: () => tl.restart()
}, 0);
// Pause animation when tab is not active
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible') {
tl.play();
} else {
tl.pause();
}
});
// Handle form submission
document.getElementById('loginForm').addEventListener('submit', (e) => {
e.preventDefault();
// Get form values
const email = document.getElementById('email').value;
const password = document.getElementById('password').value;
const remember = document.getElementById('remember').checked;
// Add a simple loading effect to the button
const button = document.querySelector('button[type="submit"]');
const originalText = button.textContent;
button.textContent = 'Signing in...';
button.disabled = true;
// Simulate API call
setTimeout(() => {
// Reset button state
button.textContent = originalText;
button.disabled = false;
// Show success message (would normally redirect in a real app)
alert(`Welcome back ${email}! Successfully signed in.`);
// Reset form if "Remember me" is not checked
if (!remember) {
document.getElementById('loginForm').reset();
}
}, 1500);
});
// Handle window resize
window.addEventListener('resize', () => {
win.w = window.innerWidth * .26;
win.h = window.innerHeight * .26;
target.r = win.w * .25;
});
// Language switching functionality
function changeLanguage(lang) {
// Update UI elements with translations
document.querySelector('.language-code').textContent = lang.toUpperCase();
// Update navigation
document.querySelector('.nav-home').textContent = translations[lang].home;
document.querySelector('.nav-features').textContent = translations[lang].features;
document.querySelector('.nav-pricing').textContent = translations[lang].pricing;
document.querySelector('.nav-about').textContent = translations[lang].about;
// Update login form
document.querySelector('#showLoginBtn').textContent = translations[lang].login;
document.querySelector('#showSignupBtn').textContent = translations[lang].signup;
// Update login card
document.querySelector('.login-card h1').textContent = translations[lang].welcomeBack;
document.querySelector('.login-card p').textContent = translations[lang].signInPrompt;
document.querySelector('label[for="email"]').textContent = translations[lang].email;
document.querySelector('input[name="email"]').placeholder = translations[lang].email;
document.querySelector('label[for="password"]').textContent = translations[lang].password;
document.querySelector('input[name="password"]').placeholder = translations[lang].password;
document.querySelector('label[for="remember"]').textContent = translations[lang].rememberMe;
document.querySelector('button[type="submit"]').textContent = translations[lang].signIn;
document.querySelector('a[href="#"]').textContent = translations[lang].forgotPassword;
document.querySelector('.login-card .text-gray-400.text-sm').textContent = translations[lang].continueWith;
document.querySelector('.login-card .text-gray-400').innerHTML =
translations[lang].noAccount + ' <button id="showSignupBtnBottom" class="text-purple-300 font-medium hover:text-purple-200 transition-colors">' + translations[lang].signup + '</button>';
// Update signup card
document.querySelector('#signupCard h1').textContent = translations[lang].createAccount;
document.querySelector('#signupCard p').textContent = translations[lang].joinCommunity;
document.querySelector('label[for="signupName"]').textContent = translations[lang].fullName;
document.querySelector('input[name="name"]').placeholder = translations[lang].fullName;
document.querySelector('label[for="signupEmail"]').textContent = translations[lang].email;
document.querySelector('input[name="email"]').placeholder = translations[lang].email;
document.querySelector('label[for="signupPassword"]').textContent = translations[lang].password;
document.querySelector('input[name="password"]').placeholder = translations[lang].password;
document.querySelector('label[for="signupConfirmPassword"]').textContent = translations[lang].confirmPassword;
document.querySelector('input[name="confirmPassword"]').placeholder = translations[lang].confirmPassword;
document.querySelector('label[for="terms"]').innerHTML =
translations[lang].termsAgreement.replace(/Terms/g, `<a href="#" class="text-purple-300">${translations[lang].terms}</a>`)
.replace(/Privacy Policy/g, `<a href="#" class="text-purple-300">${translations[lang].privacy}</a>`);
document.querySelector('#signupCard button[type="submit"]').textContent = translations[lang].createAccount;
document.querySelector('#signupCard .text-gray-400').innerHTML =
translations[lang].haveAccount + ' <button id="showLoginBtnBottom" class="text-purple-300 font-medium hover:text-purple-200 transition-colors">' + translations[lang].login + '</button>';
// Update document language
document.documentElement.lang = lang;
}
// Page switching functionality
document.addEventListener('DOMContentLoaded', () => {
// Smooth scrolling for navigation
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
e.preventDefault();
const targetId = this.getAttribute('href');
if (targetId === '#') return;
const targetElement = document.querySelector(targetId);
if (targetElement) {
window.scrollTo({
top: targetElement.offsetTop - 80,
behavior: 'smooth'
});
}
});
});
// Add click handlers for language options
document.querySelectorAll('.language-option').forEach(btn => {
btn.addEventListener('click', () => {
const lang = btn.dataset.lang;
changeLanguage(lang);
});
});
const loginCard = document.querySelector('.login-card');
const signupCard = document.getElementById('signupCard');
// Set default language
changeLanguage('en');
// Show login/signup buttons
const showLoginBtns = document.querySelectorAll('#showLoginBtn, #showLoginBtnBottom');
const showSignupBtns = document.querySelectorAll('#showSignupBtn, #showSignupBtnBottom');
showLoginBtns.forEach(btn => {
btn.addEventListener('click', () => {
loginCard.classList.remove('hidden');
signupCard.classList.add('hidden');
});
});
showSignupBtns.forEach(btn => {
btn.addEventListener('click', () => {
signupCard.classList.remove('hidden');
loginCard.classList.add('hidden');
});
});
// Handle sign up form submission
document.getElementById('signupForm').addEventListener('submit', (e) => {
e.preventDefault();
// Get form values
const name = document.getElementById('signupName').value;
const email = document.getElementById('signupEmail').value;
const password = document.getElementById('signupPassword').value;
const confirmPassword = document.getElementById('signupConfirmPassword').value;
// Simple validation
if (password !== confirmPassword) {
alert("Passwords don't match!");
return;
}
// Add loading effect to button
const button = e.target.querySelector('button[type="submit"]');
const originalText = button.textContent;
button.textContent = 'Creating account...';
button.disabled = true;
// Simulate API call
setTimeout(() => {
// Reset button
button.textContent = originalText;
button.disabled = false;
// Show success and switch to login
alert(`Welcome ${name}! Your account has been created.`);
// Reset form
e.target.reset();
// Show login form
loginCard.classList.remove('hidden');
signupCard.classList.add('hidden');
}, 1500);
});
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Sasanou/veeweb-v2" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>