flower / index.html
Amin1838's picture
Add 1 files
5d65795 verified
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ورود به دنیای گل‌ها</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
@import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@100..900&display=swap');
body {
font-family: 'Vazirmatn', sans-serif;
background: url('https://images.unsplash.com/photo-1530103862676-de8c9debad1d?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80') no-repeat center center fixed;
background-size: cover;
position: relative;
}
body::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(255, 255, 255, 0.7);
z-index: -1;
}
.input-focus:focus {
box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.3);
border-color: #a78bfa;
}
.btn-primary {
background: linear-gradient(to right, #a78bfa, #8b5cf6);
transition: all 0.3s ease;
}
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 10px 20px -5px rgba(167, 139, 250, 0.5);
}
.floral-decoration {
position: absolute;
width: 100px;
height: 100px;
opacity: 0.7;
}
.floral-decoration-1 {
top: -30px;
left: -30px;
transform: rotate(45deg);
}
.floral-decoration-2 {
bottom: -30px;
right: -30px;
transform: rotate(-45deg);
}
.login-container {
backdrop-filter: blur(5px);
background-color: rgba(255, 255, 255, 0.85);
border: 1px solid rgba(255, 255, 255, 0.3);
}
/* Animation for floral decorations */
@keyframes float {
0% { transform: translateY(0px) rotate(45deg); }
50% { transform: translateY(-10px) rotate(45deg); }
100% { transform: translateY(0px) rotate(45deg); }
}
@keyframes float2 {
0% { transform: translateY(0px) rotate(-45deg); }
50% { transform: translateY(10px) rotate(-45deg); }
100% { transform: translateY(0px) rotate(-45deg); }
}
.floral-decoration-1 {
animation: float 6s ease-in-out infinite;
}
.floral-decoration-2 {
animation: float2 6s ease-in-out infinite;
}
/* Notification styles */
.notification {
position: fixed;
top: 20px;
right: 20px;
background: linear-gradient(to right, #4ade80, #22c55e);
color: white;
padding: 16px 24px;
border-radius: 12px;
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
display: flex;
align-items: center;
max-width: 350px;
transform: translateX(150%);
transition: transform 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55);
z-index: 1000;
}
.notification.show {
transform: translateX(0);
}
.notification-icon {
font-size: 24px;
margin-left: 12px;
}
.notification-content {
flex: 1;
}
.notification-title {
font-weight: 600;
margin-bottom: 4px;
}
.notification-message {
font-size: 14px;
opacity: 0.9;
}
.notification-close {
background: none;
border: none;
color: white;
font-size: 16px;
cursor: pointer;
opacity: 0.7;
transition: opacity 0.2s;
margin-right: -8px;
margin-left: 12px;
}
.notification-close:hover {
opacity: 1;
}
@keyframes float-up {
0% { transform: translateY(100px); opacity: 0; }
100% { transform: translateY(0); opacity: 1; }
}
@keyframes float-down {
0% { transform: translateY(0); opacity: 1; }
100% { transform: translateY(100px); opacity: 0; }
}
</style>
</head>
<body class="min-h-screen flex items-center justify-center p-4">
<!-- Notification container -->
<div id="notification" class="notification">
<div class="notification-icon">
<i class="fas fa-check-circle"></i>
</div>
<div class="notification-content">
<div class="notification-title">ورود موفقیت‌آمیز بود!</div>
<div class="notification-message">خوش آمدید! در حال انتقال به صفحه اصلی...</div>
</div>
<button class="notification-close" id="closeNotification">
<i class="fas fa-times"></i>
</button>
</div>
<div class="relative max-w-md w-full rounded-2xl shadow-xl overflow-hidden login-container">
<!-- Decorative floral elements -->
<div class="floral-decoration floral-decoration-1">
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<path d="M50 30C40 30 30 40 30 50C30 60 40 70 50 70C60 70 70 60 70 50C70 40 60 30 50 30Z" fill="#a78bfa" opacity="0.3"/>
<path d="M50 50C45 45 40 40 35 35C30 30 25 25 20 20C15 25 10 30 5 35C10 40 15 45 20 50C25 55 30 60 35 65C40 60 45 55 50 50Z" fill="#f472b6" opacity="0.3"/>
</svg>
</div>
<div class="floral-decoration floral-decoration-2">
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<path d="M50 30C40 30 30 40 30 50C30 60 40 70 50 70C60 70 70 60 70 50C70 40 60 30 50 30Z" fill="#f472b6" opacity="0.3"/>
<path d="M50 50C45 45 40 40 35 35C30 30 25 25 20 20C15 25 10 30 5 35C10 40 15 45 20 50C25 55 30 60 35 65C40 60 45 55 50 50Z" fill="#a78bfa" opacity="0.3"/>
</svg>
</div>
<!-- Header section -->
<div class="bg-gradient-to-r from-purple-400 to-pink-400 p-6 text-center">
<h1 class="text-2xl font-bold text-white">به گلستان خوش آمدید</h1>
<p class="text-white opacity-90 mt-2">دنیای زیبایی را با گل‌های ما تجربه کنید</p>
</div>
<!-- Main form -->
<div class="p-8 pt-6">
<form id="loginForm" class="space-y-6">
<div class="relative">
<div class="absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none text-gray-400">
<i class="fas fa-user"></i>
</div>
<input
type="text"
id="username"
class="w-full pr-10 pl-4 py-3 rounded-lg border border-gray-300 input-focus focus:outline-none transition-all duration-200"
placeholder="نام کاربری یا ایمیل"
required
>
</div>
<div class="relative">
<div class="absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none text-gray-400">
<i class="fas fa-lock"></i>
</div>
<input
type="password"
id="password"
class="w-full pr-10 pl-4 py-3 rounded-lg border border-gray-300 input-focus focus:outline-none transition-all duration-200"
placeholder="رمز عبور"
required
>
<button type="button" class="absolute left-0 inset-y-0 flex items-center pl-3 text-gray-400 hover:text-gray-600">
<i class="fas fa-eye-slash" id="togglePassword"></i>
</button>
</div>
<div class="flex items-center justify-between">
<div class="flex items-center">
<input id="remember-me" type="checkbox" class="h-4 w-4 text-purple-600 focus:ring-purple-500 border-gray-300 rounded">
<label for="remember-me" class="mr-2 block text-sm text-gray-700">مرا به خاطر بسپار</label>
</div>
<a href="#" class="text-sm text-purple-600 hover:text-purple-500">رمز عبور را فراموش کرده‌اید؟</a>
</div>
<button type="submit" class="w-full py-3 px-4 rounded-lg text-white font-medium btn-primary">
ورود به حساب کاربری
</button>
<div class="relative flex items-center justify-center">
<div class="absolute inset-0 border-t border-gray-200"></div>
<div class="relative bg-white px-4 text-sm text-gray-500">یا</div>
</div>
<div class="grid grid-cols-2 gap-4">
<button type="button" class="flex items-center justify-center py-2 px-4 border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors">
<i class="fab fa-google text-red-500 mr-2"></i>
<span>گوگل</span>
</button>
<button type="button" class="flex items-center justify-center py-2 px-4 border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors">
<i class="fab fa-apple text-gray-800 mr-2"></i>
<span>اپل</span>
</button>
</div>
</form>
<div class="mt-6 text-center text-sm text-gray-500">
حساب کاربری ندارید؟
<a href="#" class="font-medium text-purple-600 hover:text-purple-500">ثبت‌نام کنید</a>
</div>
</div>
</div>
<script>
document.getElementById('togglePassword').addEventListener('click', function() {
const passwordInput = document.getElementById('password');
const icon = this;
if (passwordInput.type === 'password') {
passwordInput.type = 'text';
icon.classList.replace('fa-eye-slash', 'fa-eye');
} else {
passwordInput.type = 'password';
icon.classList.replace('fa-eye', 'fa-eye-slash');
}
});
// Notification functions
function showNotification() {
const notification = document.getElementById('notification');
notification.classList.add('show');
// Auto hide after 5 seconds
setTimeout(() => {
hideNotification();
}, 5000);
}
function hideNotification() {
const notification = document.getElementById('notification');
notification.classList.remove('show');
}
// Close notification when close button is clicked
document.getElementById('closeNotification').addEventListener('click', hideNotification);
document.getElementById('loginForm').addEventListener('submit', function(e) {
e.preventDefault();
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
const loginButton = document.querySelector('.btn-primary');
// Show loading state
loginButton.innerHTML = '<i class="fas fa-spinner fa-spin mr-2"></i> در حال ورود...';
// Here you would typically send the data to your server
console.log('Login attempt with:', { username, password });
// Simulate API call with timeout
setTimeout(() => {
// Show success state
loginButton.innerHTML = '<i class="fas fa-check mr-2"></i> ورود موفق';
loginButton.classList.remove('from-purple-400', 'to-pink-400');
loginButton.classList.add('from-green-400', 'to-teal-400');
// Show notification
showNotification();
// Create floating flower animation
for (let i = 0; i < 5; i++) {
createFloatingFlower();
}
// Redirect after 3 seconds
setTimeout(() => {
window.location.href = "#"; // Replace with your actual redirect URL
}, 3000);
}, 1500);
});
function createFloatingFlower() {
const flower = document.createElement('div');
flower.className = 'absolute z-50';
// Random flower icon
const flowers = ['fa-leaf', 'fa-seedling', 'fa-spa', 'fa-feather-alt'];
const randomFlower = flowers[Math.floor(Math.random() * flowers.length)];
// Random color
const colors = ['text-purple-400', 'text-pink-400', 'text-green-500', 'text-yellow-400'];
const randomColor = colors[Math.floor(Math.random() * colors.length)];
flower.innerHTML = `<i class="fas ${randomFlower} ${randomColor} text-xl"></i>`;
// Random position
const startX = Math.random() * window.innerWidth;
const startY = window.innerHeight + 50;
flower.style.left = `${startX}px`;
flower.style.top = `${startY}px`;
document.body.appendChild(flower);
// Animation
const duration = Math.random() * 3000 + 2000;
const endY = -50;
const rotation = Math.random() * 360;
flower.animate([
{
transform: `translateY(0) rotate(0deg)`,
opacity: 1
},
{
transform: `translateY(${endY}px) rotate(${rotation}deg)`,
opacity: 0
}
], {
duration: duration,
easing: 'cubic-bezier(0.4, 0, 0.2, 1)'
});
// Remove after animation
setTimeout(() => {
flower.remove();
}, duration);
}
</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=Amin1838/flower" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>