razrabotay-stranitsu-registr/index.html

264 lines
11 KiB
HTML
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.

<!DOCTYPE html>
<html lang="ru" data-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Hackathon Open 2026 — Регистрация</title>
<link rel="stylesheet" href="design-system/kt-ai-fonts.css">
<link rel="stylesheet" href="design-system/kt-ai-tokens.css">
<link rel="stylesheet" href="design-system/kt-ai-components.css">
<link rel="stylesheet" href="design-system/kt-ai-page.css">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🚀</text></svg>">
<style>
a.kt-ai-btn { text-decoration: none; }
.hero-bg {
background: linear-gradient(135deg, var(--kt-ai-bg-soft) 0%, var(--kt-ai-bg) 100%);
border-radius: var(--kt-ai-radius-3xl);
padding: var(--kt-ai-space-12);
margin-bottom: var(--kt-ai-space-12);
}
.form-card {
background: var(--kt-ai-card-bg);
border: 1px solid var(--kt-ai-card-border);
border-radius: var(--kt-ai-radius-3xl);
padding: var(--kt-ai-space-10);
max-width: 520px;
}
.stats-strip {
display: flex;
gap: var(--kt-ai-space-6);
flex-wrap: wrap;
margin-bottom: var(--kt-ai-space-8);
}
.stat-card {
background: var(--kt-ai-card-bg);
border: 1px solid var(--kt-ai-card-border);
border-radius: var(--kt-ai-radius-xl);
padding: var(--kt-ai-space-5);
min-width: 140px;
text-align: center;
}
.stat-value {
font-size: var(--kt-ai-text-3xl);
font-weight: var(--kt-ai-weight-bold);
color: var(--kt-ai-primary);
}
.stat-label {
font-size: var(--kt-ai-text-sm);
color: var(--kt-ai-fg-muted);
}
.checkbox-wrapper {
display: flex;
align-items: flex-start;
gap: var(--kt-ai-space-3);
margin-top: var(--kt-ai-space-2);
}
.checkbox-wrapper input[type="checkbox"] {
width: 18px;
height: 18px;
margin-top: 2px;
}
.checkbox-label {
font-size: var(--kt-ai-text-sm);
color: var(--kt-ai-fg-muted);
line-height: 1.4;
}
.success-message {
background: var(--kt-ai-bg-soft);
border: 1px solid var(--kt-ai-border);
border-radius: var(--kt-ai-radius-xl);
padding: var(--kt-ai-space-6);
text-align: center;
margin-top: var(--kt-ai-space-6);
}
.success-icon {
font-size: 48px;
margin-bottom: var(--kt-ai-space-3);
}
.error-message {
background: var(--kt-ai-bg-soft);
border: 1px solid var(--kt-ai-border);
border-radius: var(--kt-ai-radius-xl);
padding: var(--kt-ai-space-4);
color: var(--kt-ai-fg-muted);
margin-top: var(--kt-ai-space-4);
}
</style>
</head>
<body class="kt-ai-app" data-kt-data-mode="demo">
<header class="kt-ai-pagehead">
<div class="kt-ai-wrap kt-ai-pagehead-in">
<div style="display:flex;align-items:center;gap:var(--kt-ai-space-3)">
<img src="https://code.vibe42.kz/tore/aitu/kt-logo.svg" alt="Казахтелеком" height="28">
<strong>Hackathon Open 2026</strong>
</div>
<span class="kt-ai-spacer"></span>
<span class="kt-ai-chip" data-tone="orange">Демо-данные</span>
</div>
</header>
<section class="kt-ai-hero" data-align="center">
<div class="kt-ai-wrap">
<div class="hero-bg">
<h1 style="margin-bottom:var(--kt-ai-space-4)">Hackathon Open 2026</h1>
<p class="kt-ai-hero-sub" style="max-width:600px;margin:0 auto var(--kt-ai-space-8)">
Крупнейший хакатон от Казахтелекома. 48 часов кодинга, менторство от экспертов,
призовой фонд и реальные кейсы телеком-индустрии.
</p>
<div class="kt-ai-hero-actions" style="justify-content:center">
<a class="kt-ai-btn" data-variant="primary" data-size="lg" href="#register">Зарегистрироваться</a>
<a class="kt-ai-btn" data-size="lg" href="#about">О хакатоне</a>
</div>
</div>
</div>
</section>
<section class="kt-ai-section" data-divider="true">
<div class="kt-ai-wrap">
<div class="kt-ai-section-head">
<h2>О хакатоне в цифрах</h2>
<p>Масштабное событие для IT-сообщества</p>
</div>
<div class="stats-strip">
<div class="stat-card">
<div class="stat-value" style="color:var(--kt-ai-chart-green)">$10K</div>
<div class="stat-label">Призовой фонд</div>
</div>
<div class="stat-card">
<div class="stat-value" style="color:var(--kt-ai-primary)">10K+</div>
<div class="stat-label">Участников</div>
</div>
<div class="stat-card">
<div class="stat-value" style="color:var(--kt-ai-chart-orange)">20</div>
<div class="stat-label">Потоков e-кейсов</div>
</div>
<div class="stat-card">
<div class="stat-value" style="color:var(--kt-ai-chart-pink)">48</div>
<div class="stat-label">Часов на хакатон</div>
</div>
</div>
</div>
</section>
<section id="register" class="kt-ai-section" data-divider="true">
<div class="kt-ai-wrap">
<div class="kt-ai-section-head">
<h2>Регистрация участника</h2>
<p>Заполните форму для участия в хакатоне</p>
</div>
<div class="kt-ai-grid" style="margin-top:var(--kt-ai-space-9)">
<div>
<div class="form-card">
<form id="registrationForm">
<div class="kt-ai-field" style="margin-bottom:var(--kt-ai-space-5)">
<label style="font-weight:var(--kt-ai-weight-medium);color:var(--kt-ai-fg)">Имя</label>
<input class="kt-ai-input" id="firstName" name="firstName" placeholder="Ваше имя" required>
</div>
<div class="kt-ai-field" style="margin-bottom:var(--kt-ai-space-5)">
<label style="font-weight:var(--kt-ai-weight-medium);color:var(--kt-ai-fg)">Фамилия</label>
<input class="kt-ai-input" id="lastName" name="lastName" placeholder="Ваша фамилия" required>
</div>
<div class="kt-ai-field" style="margin-bottom:var(--kt-ai-space-5)">
<label style="font-weight:var(--kt-ai-weight-medium);color:var(--kt-ai-fg)">Телефон</label>
<input class="kt-ai-input" id="phone" name="phone" type="tel" placeholder="+7 (777) 777-77-77" required>
</div>
<div class="kt-ai-field" style="margin-bottom:var(--kt-ai-space-5)">
<label style="font-weight:var(--kt-ai-weight-medium);color:var(--kt-ai-fg)">Telegram-аккаунт</label>
<input class="kt-ai-input" id="telegram" name="telegram" type="text" placeholder="@username" required>
</div>
<div class="checkbox-wrapper">
<input type="checkbox" id="consent" name="consent" required>
<label class="checkbox-label" for="consent">
Я подтверждаю достоверность указанных данных и даю согласие на их обработку
в соответствии с политикой конфиденциальности Hackathon Open 2026
</label>
</div>
<button class="kt-ai-btn" data-variant="primary" data-size="lg" type="submit" style="width:100%;margin-top:var(--kt-ai-space-7)">
Зарегистрироваться
</button>
</form>
<div id="successMessage" class="success-message" style="display:none">
<div class="success-icon">✅</div>
<h3 style="margin-bottom:var(--kt-ai-space-2)">Регистрация успешна!</h3>
<p style="color:var(--kt-ai-fg-muted)">Добро пожаловать на Hackathon Open 2026!</p>
</div>
<div id="errorMessage" class="error-message" style="display:none"></div>
</div>
</div>
<div id="about" style="display:flex;flex-direction:column;gap:var(--kt-ai-space-6)">
<article class="kt-ai-tile">
<h3 style="margin-bottom:var(--kt-ai-space-2)">📅 Когда</h3>
<p style="color:var(--kt-ai-fg-muted)">15-17 ноября 2026, старт в пятницу 18:00</p>
</article>
<article class="kt-ai-tile">
<h3 style="margin-bottom:var(--kt-ai-space-2)">📍 Где</h3>
<p style="color:var(--kt-ai-fg-muted)">Алматы, Технопарк Казахтелеком, ул. Байсеитовой 46</p>
</article>
<article class="kt-ai-tile">
<h3 style="margin-bottom:var(--kt-ai-space-2)">👥 Кто может участвовать</h3>
<p style="color:var(--kt-ai-fg-muted)">Студенты, выпускники и специалисты IT-сферы от 18 лет</p>
</article>
<article class="kt-ai-tile">
<h3 style="margin-bottom:var(--kt-ai-space-2)">🏆 Призовой фонд</h3>
<p style="color:var(--kt-ai-fg-muted)">10 000 000 тенге, стажировки и менторская поддержка</p>
</article>
</div>
</div>
</div>
</section>
<footer class="kt-ai-wrap kt-ai-pagefoot">
<span>© 2026 Hackathon Open — Казахтелеком</span>
<span class="kt-ai-spacer"></span>
<a class="kt-ai-link" href="#">Политика конфиденциальности</a>
<a class="kt-ai-link" href="#">Контакты</a>
</footer>
<script>
document.getElementById('registrationForm').addEventListener('submit', async function(e) {
e.preventDefault();
const formData = {
firstName: document.getElementById('firstName').value.trim(),
lastName: document.getElementById('lastName').value.trim(),
phone: document.getElementById('phone').value.trim(),
telegram: document.getElementById('telegram').value.trim()
};
if (!formData.firstName || !formData.lastName || !formData.phone || !formData.telegram) {
return;
}
if (!document.getElementById('consent').checked) {
return;
}
const successMsg = document.getElementById('successMessage');
const errorMsg = document.getElementById('errorMessage');
try {
const response = await fetch('/api/registrations', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(formData)
});
if (!response.ok) {
throw new Error('Ошибка сервера: ' + response.status);
}
document.getElementById('registrationForm').reset();
document.getElementById('registrationForm').style.display = 'none';
successMsg.style.display = 'block';
errorMsg.style.display = 'none';
} catch (err) {
errorMsg.textContent = 'Ошибка: ' + err.message + '. Попробуйте ещё раз.';
errorMsg.style.display = 'block';
}
});
</script>
</body>
</html>