first commit

This commit is contained in:
Phuoc Nguyen
2025-10-17 15:37:58 +07:00
commit 2125e85d40
123 changed files with 27633 additions and 0 deletions

443
html/register-pending.html Normal file
View File

@@ -0,0 +1,443 @@
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Chờ xác minh - EuroTile Worker</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.0/css/all.min.css">
<style>
:root {
--primary-color: #2563eb;
--primary-dark: #1d4ed8;
--secondary-color: #64748b;
--success-color: #10b981;
--warning-color: #f59e0b;
--danger-color: #ef4444;
--background-color: #f8fafc;
--card-background: #ffffff;
--text-primary: #1e293b;
--text-secondary: #64748b;
--border-color: #e2e8f0;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
color: var(--text-primary);
line-height: 1.6;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 1rem;
}
.container {
max-width: 480px;
width: 100%;
background: var(--card-background);
border-radius: 1.5rem;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
padding: 3rem 2rem;
text-align: center;
}
.pending-icon {
width: 120px;
height: 120px;
background: linear-gradient(135deg, var(--warning-color), #d97706);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 2rem;
position: relative;
animation: pulse 2s infinite;
}
.pending-icon i {
font-size: 3rem;
color: white;
}
.pending-icon::before {
content: '';
position: absolute;
width: 100%;
height: 100%;
border-radius: 50%;
background: linear-gradient(135deg, var(--warning-color), #d97706);
opacity: 0.3;
animation: ripple 2s infinite;
}
@keyframes pulse {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
}
@keyframes ripple {
0% {
transform: scale(1);
opacity: 0.3;
}
100% {
transform: scale(1.3);
opacity: 0;
}
}
.success-title {
font-size: 1.75rem;
font-weight: 700;
color: var(--text-primary);
margin-bottom: 1rem;
animation: fadeInUp 0.6s ease-out 0.3s both;
}
.success-subtitle {
font-size: 1rem;
color: var(--text-secondary);
margin-bottom: 2rem;
line-height: 1.6;
animation: fadeInUp 0.6s ease-out 0.5s both;
}
@keyframes fadeInUp {
0% {
opacity: 0;
transform: translateY(30px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.info-card {
background: #fffbeb;
border: 1px solid var(--warning-color);
border-radius: 0.75rem;
padding: 1.5rem;
margin-bottom: 2rem;
text-align: left;
animation: fadeInUp 0.6s ease-out 0.7s both;
}
.info-title {
font-size: 1rem;
font-weight: 600;
color: #92400e;
margin-bottom: 0.75rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.info-list {
list-style: none;
padding: 0;
margin: 0;
}
.info-list li {
font-size: 0.875rem;
color: #92400e;
margin-bottom: 0.5rem;
padding-left: 1.5rem;
position: relative;
}
.info-list li::before {
content: "✓";
position: absolute;
left: 0;
color: var(--warning-color);
font-weight: bold;
}
.timeline-section {
background: #f0f9ff;
border: 1px solid var(--primary-color);
border-radius: 0.75rem;
padding: 1.5rem;
margin-bottom: 2rem;
text-align: left;
animation: fadeInUp 0.6s ease-out 0.9s both;
}
.timeline-title {
font-size: 1rem;
font-weight: 600;
color: var(--primary-color);
margin-bottom: 1rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.timeline-item {
display: flex;
align-items: center;
gap: 1rem;
margin-bottom: 1rem;
padding: 0.75rem;
background: white;
border-radius: 0.5rem;
border-left: 4px solid var(--primary-color);
}
.timeline-item:last-child {
margin-bottom: 0;
}
.timeline-number {
width: 30px;
height: 30px;
background: var(--primary-color);
color: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 600;
font-size: 0.875rem;
flex-shrink: 0;
}
.timeline-content {
flex: 1;
}
.timeline-step {
font-weight: 600;
color: var(--text-primary);
margin-bottom: 0.25rem;
}
.timeline-desc {
font-size: 0.75rem;
color: var(--text-secondary);
}
.action-buttons {
display: flex;
flex-direction: column;
gap: 0.75rem;
animation: fadeInUp 0.6s ease-out 1.1s both;
}
.primary-button {
background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));
color: white;
border: none;
padding: 1rem 2rem;
border-radius: 0.75rem;
font-size: 1rem;
font-weight: 600;
cursor: pointer;
transition: all 0.3s;
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
text-decoration: none;
}
.primary-button:hover {
transform: translateY(-2px);
box-shadow: 0 4px 15px rgba(37, 99, 235, 0.3);
}
.secondary-button {
background: var(--card-background);
color: var(--secondary-color);
border: 2px solid var(--border-color);
padding: 0.75rem 2rem;
border-radius: 0.75rem;
font-size: 1rem;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
text-decoration: none;
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
}
.secondary-button:hover {
border-color: var(--secondary-color);
color: var(--text-primary);
}
.support-section {
background: #f1f5f9;
border-radius: 0.75rem;
padding: 1rem;
margin-top: 2rem;
animation: fadeInUp 0.6s ease-out 1.3s both;
}
.support-title {
font-size: 0.875rem;
font-weight: 600;
color: var(--text-primary);
margin-bottom: 0.5rem;
}
.support-text {
font-size: 0.75rem;
color: var(--text-secondary);
margin-bottom: 0.75rem;
}
.support-contact {
font-size: 0.875rem;
color: var(--primary-color);
font-weight: 600;
}
@media (max-width: 480px) {
.container {
padding: 2rem 1.5rem;
border-radius: 1rem;
}
.success-title {
font-size: 1.5rem;
}
.pending-icon {
width: 100px;
height: 100px;
}
.pending-icon i {
font-size: 2.5rem;
}
}
</style>
</head>
<body>
<div class="container">
<!-- Pending Icon -->
<div class="pending-icon">
<i class="fas fa-hourglass-half"></i>
</div>
<!-- Title and Subtitle -->
<h1 class="success-title">Yêu cầu đã được gửi!</h1>
<p class="success-subtitle">
Tài khoản của bạn đang chờ được xác minh. Chúng tôi sẽ thông báo cho bạn ngay khi quá trình hoàn tất
(thường trong <strong>24 giờ làm việc</strong>).
</p>
<!-- Information Card -->
<div class="info-card">
<div class="info-title">
<i class="fas fa-info-circle"></i>
Thông tin đã gửi
</div>
<ul class="info-list">
<li>Thông tin cá nhân và liên hệ</li>
<li>Ảnh CCCD/CMND mặt trước</li>
<li>Chứng chỉ hành nghề hoặc GPKD</li>
<li>Số điện thoại xác thực</li>
</ul>
</div>
<!-- Timeline Section -->
<div class="timeline-section">
<div class="timeline-title">
<i class="fas fa-clock"></i>
Quy trình xác minh
</div>
<div class="timeline-item">
<div class="timeline-number">1</div>
<div class="timeline-content">
<div class="timeline-step">Kiểm tra thông tin</div>
<div class="timeline-desc">Xác thực CCCD/CMND và chứng chỉ hành nghề</div>
</div>
</div>
<div class="timeline-item">
<div class="timeline-number">2</div>
<div class="timeline-content">
<div class="timeline-step">Phê duyệt tài khoản</div>
<div class="timeline-desc">Kích hoạt tài khoản và gửi thông báo</div>
</div>
</div>
<div class="timeline-item">
<div class="timeline-number">3</div>
<div class="timeline-content">
<div class="timeline-step">Bắt đầu sử dụng</div>
<div class="timeline-desc">Truy cập đầy đủ tính năng dành cho chuyên gia</div>
</div>
</div>
</div>
<!-- Action Buttons -->
<div class="action-buttons">
<a href="login.html" class="primary-button">
<i class="fas fa-sign-in-alt"></i>
Về trang đăng nhập
</a>
<a href="index.html" class="secondary-button">
<i class="fas fa-home"></i>
Khám phá ứng dụng
</a>
</div>
<!-- Support Section -->
<div class="support-section">
<div class="support-title">Cần hỗ trợ?</div>
<div class="support-text">
Nếu có thắc mắc về quá trình xác minh, vui lòng liên hệ với chúng tôi:
</div>
<div class="support-contact">
<i class="fas fa-phone"></i> Hotline: 1900-xxxx
</div>
</div>
</div>
<script>
// Add some interactive feedback
document.addEventListener('DOMContentLoaded', function() {
// Simulate progress checking (for demo purposes)
const checkProgress = () => {
console.log('Checking verification progress...');
// In a real app, this would check with the server
};
// Check progress every 30 seconds (for demo)
setInterval(checkProgress, 30000);
// Add hover effects to timeline items
const timelineItems = document.querySelectorAll('.timeline-item');
timelineItems.forEach(item => {
item.addEventListener('mouseenter', function() {
this.style.transform = 'translateX(5px)';
});
item.addEventListener('mouseleave', function() {
this.style.transform = 'translateX(0)';
});
});
});
</script>
</body>
</html>