-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
651 additions
and
114 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,122 +3,67 @@ | |
<head> | ||
<meta charset="UTF-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<title>Card Gallery</title> | ||
<style> | ||
|
||
.wrapper { | ||
display: flex; | ||
width: 90%; | ||
justify-content: center; | ||
} | ||
|
||
.employeecard { | ||
width: 200px; | ||
height: 280px; | ||
margin: 20px; | ||
border-radius: 15px; | ||
padding: 1.5rem; | ||
background: white; | ||
position: relative; | ||
display: flex; | ||
align-items: flex-end; | ||
transition: 0.4s ease-out; | ||
box-shadow: 0px 7px 10px rgba(0, 0, 0, 0.5); | ||
} | ||
|
||
.employeecard:hover { | ||
transform: translateY(20px); | ||
} | ||
|
||
.employeecard:before { | ||
content: ""; | ||
position: absolute; | ||
top: 0; | ||
left: 0; | ||
display: block; | ||
width: 100%; | ||
height: 100%; | ||
border-radius: 15px; | ||
background: rgba(0, 0, 0, 0.6); | ||
z-index: 2; | ||
transition: 0.5s; | ||
opacity: 0; | ||
} | ||
|
||
.employeecard:hover:before { | ||
opacity: 1; | ||
} | ||
|
||
.employeecard img { | ||
width: 100%; | ||
height: 100%; | ||
object-fit: cover; | ||
position: absolute; | ||
top: 0; | ||
left: 0; | ||
border-radius: 15px; | ||
} | ||
|
||
.employeecard .info { | ||
position: relative; | ||
z-index: 3; | ||
color: white; | ||
opacity: 0; | ||
transform: translateY(30px); | ||
transition: 0.5s; | ||
} | ||
|
||
.employeecard:hover .info { | ||
opacity: 1; | ||
transform: translateY(0px); | ||
} | ||
|
||
.employeecard .info h1 { | ||
margin: 0px; | ||
} | ||
|
||
.employeecard .info p { | ||
letter-spacing: 1px; | ||
font-size: 16px; | ||
font-weight: 700; | ||
margin-top: 8px; | ||
} | ||
|
||
.employeecard .info button { | ||
padding: 0.6rem; | ||
outline: none; | ||
border: none; | ||
border-radius: 3px; | ||
background: white; | ||
color: black; | ||
font-weight: bold; | ||
cursor: pointer; | ||
transition: 0.4s ease; | ||
} | ||
|
||
.employeecard .info button:hover { | ||
background: dodgerblue; | ||
color: white; | ||
} | ||
|
||
</style> | ||
<title>Document</title> | ||
</head> | ||
<body> | ||
<div class="wrapper"> | ||
<div class="employeecard"> | ||
<img src="R.png" alt="Mountain"> | ||
<div class="info"> | ||
<h1>Mountain</h1> | ||
<p>Lorem Ipsum is simply dummy text from the printing and typeseting industry</p> | ||
</div> | ||
<form id="appointment-form"> | ||
<div class="formbold-mb-5"> | ||
<label for="name" class="formbold-form-label">Full Name</label> | ||
<input type="text" name="name" id="name" placeholder="Full Name" class="formbold-form-input" /> | ||
</div> | ||
<div class="employeecard"> | ||
<img src="R.png" alt="Road"> | ||
<div class="info"> | ||
<h1>Road</h1> | ||
<p>Lorem Ipsum is simply dummy text from the printing and typeseting industry</p> | ||
</div> | ||
<div class="formbold-mb-5"> | ||
<label for="phone" class="formbold-form-label">Phone Number</label> | ||
<input type="text" name="phone" id="phone" placeholder="Enter your phone number" class="formbold-form-input" /> | ||
</div> | ||
</div> | ||
<div class="formbold-mb-5"> | ||
<label for="email" class="formbold-form-label">Email Address</label> | ||
<input type="email" name="email" id="email" placeholder="Enter your email" class="formbold-form-input" /> | ||
</div> | ||
<div class="formbold-mb-5"> | ||
<label for="message" class="formbold-form-label">Message</label> | ||
<input type="message" name="message" id="message" placeholder="Enter your message" class="formbold-form-input" /> | ||
</div> | ||
<!-- Add appointment date and time input fields here --> | ||
<!-- Example: <input type="datetime-local" name="appointmentDateTime" id="appointmentDateTime" /> --> | ||
|
||
<button type="button" onclick="sendAppointment()">Book Appointment</button> | ||
</form> | ||
<script src="https://cdn.emailjs.com/dist/email.min.js"></script> | ||
<script> | ||
// Initialize EmailJS with your user ID | ||
emailjs.init('lEUcQj8FrMJspVoh7'); | ||
|
||
// Function to send the appointment details | ||
function sendAppointment() { | ||
const form = document.getElementById('appointment-form'); | ||
const name = form.elements.name.value; | ||
const email = form.elements.email.value; | ||
const phone = form.elements.phone.value; | ||
const message = form.elements.message.value; | ||
// Get the appointment date and time (if you added that field) | ||
|
||
// Set up the email template | ||
const templateParams = { | ||
to_email: '[email protected]', // Replace with your recipient's email address | ||
from_name: name, | ||
from_email: email, | ||
phone: phone, | ||
message: message, | ||
// Add appointment date and time to templateParams if needed | ||
}; | ||
|
||
// Send the email | ||
emailjs.send('service_c4z771e', 'template_w2jm7lo', templateParams) | ||
.then(function (response) { | ||
console.log('Email sent successfully:', response); | ||
// Show a confirmation message to the user | ||
alert('Mail Sent, Waiting for confirmation'); | ||
}) | ||
.catch(function (error) { | ||
console.error('Error sending email:', error); | ||
}); | ||
} | ||
</script> | ||
|
||
</body> | ||
</html> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
* { | ||
margin: 0; | ||
padding: 0; | ||
box-sizing: border-box; | ||
} | ||
body { | ||
font-family: "Inter", Arial, Helvetica, sans-serif; | ||
background-repeat: no-repeat; | ||
background-size: cover; | ||
background-position: center; | ||
/* background: linear-gradient(rgba(250,250,250, 0.6), | ||
rgba(250,250,250, 0.8)),url('https://images.rawpixel.com/image_800/cHJpdmF0ZS9sci9pbWFnZXMvd2Vic2l0ZS8yMDIzLTA4L3Jhd3BpeGVsX29mZmljZV8yNV9zaW1wbGVfM2RfaWxsdXN0cmF0aW9uX29mX2FfcmVjb3Zlcnlfcm9vbV93aV80ZjhkNDIwNC02N2I4LTQwMDQtYTBlNy05YjljMjIyMzE2ZGVfMS5qcGc.jpg'); */ | ||
} | ||
.formbold-mb-5 { | ||
margin-bottom: 20px; | ||
} | ||
.formbold-pt-3 { | ||
padding-top: 12px; | ||
} | ||
.formbold-main-wrapper { | ||
display: flex; | ||
align-items: center; | ||
justify-content: center; | ||
padding: 48px; | ||
} | ||
|
||
.formbold-form-wrapper { | ||
margin: 0 auto; | ||
max-width: 550px; | ||
width: 100%; | ||
background: rgb(235, 185, 185); | ||
} | ||
.formbold-form-label { | ||
display: block; | ||
font-weight: 500; | ||
font-size: 16px; | ||
color: #07074d; | ||
margin-bottom: 12px; | ||
} | ||
.formbold-form-label-2 { | ||
font-weight: 600; | ||
font-size: 20px; | ||
margin-bottom: 20px; | ||
} | ||
|
||
.formbold-form-input { | ||
width: 100%; | ||
padding: 12px 24px; | ||
border-radius: 6px; | ||
border: 1px solid #e0e0e0; | ||
background: white; | ||
font-weight: 500; | ||
font-size: 16px; | ||
color: #6b7280; | ||
outline: none; | ||
resize: none; | ||
} | ||
.formbold-form-input:focus { | ||
border-color: #6a64f1; | ||
box-shadow: 0px 3px 8px rgba(0, 0, 0, 0.05); | ||
} | ||
|
||
.formbold-btn { | ||
text-align: center; | ||
font-size: 16px; | ||
border-radius: 6px; | ||
padding: 14px 32px; | ||
border: none; | ||
font-weight: 600; | ||
background-color: #6a64f1; | ||
color: white; | ||
width: 100%; | ||
cursor: pointer; | ||
} | ||
.formbold-btn:hover { | ||
box-shadow: 0px 3px 8px rgba(0, 0, 0, 0.05); | ||
} | ||
|
||
.formbold--mx-3 { | ||
margin-left: -12px; | ||
margin-right: -12px; | ||
} | ||
.formbold-px-3 { | ||
padding-left: 12px; | ||
padding-right: 12px; | ||
} | ||
.flex { | ||
display: flex; | ||
} | ||
.flex-wrap { | ||
flex-wrap: wrap; | ||
} | ||
.w-full { | ||
width: 100%; | ||
} | ||
@media (min-width: 540px) { | ||
.sm\:w-half { | ||
width: 50%; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
|
||
<head> | ||
<meta charset="UTF-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<link rel="stylesheet" href="appointment.css"> | ||
<title>Document</title> | ||
</head> | ||
|
||
<body style="background-color: #ffffff; padding: 20px;"> | ||
<div class="formbold-main-wrapper"> | ||
<!-- Author: FormBold Team --> | ||
<!-- Learn More: https://formbold.com --> | ||
<form class="formbold-form-wrapper" style="background-color: rgb(173, 192, 190); padding: 30px;" action="https://formspree.io/f/xvoewqoo" method="POST"> | ||
<form> | ||
<div class="formbold-mb-5"> | ||
<label for="name" class="formbold-form-label"> Full Name </label> | ||
<input type="text" id="name" name="name" class="formbold-form-input" required /> | ||
</div> | ||
<div class="formbold-mb-5"> | ||
<label for="phone" class="formbold-form-label"> Phone Number </label> | ||
<input type="tel" id="phone" name="phone" class="formbold-form-input" required /> | ||
</div> | ||
<div class="formbold-mb-5"> | ||
<label for="email" class="formbold-form-label"> Email Address </label> | ||
<input type="email" id="email" name="email" class="formbold-form-input" required /> | ||
</div> | ||
<div class="flex flex-wrap formbold--mx-3"> | ||
<div class="w-full sm:w-half formbold-px-3"> | ||
<div class="formbold-mb-5 w-full"> | ||
<label for="date" class="formbold-form-label"> Prefered Appointment Time </label> | ||
<input type="datetime-local" id="date" name="message" class="formbold-form-input" required /> | ||
</div> | ||
</div> | ||
</div> | ||
<button type="submit" class="formbold-btn">Book Appointment</button> | ||
</form> | ||
</div> | ||
</div> | ||
|
||
|
||
|
||
<script> | ||
|
||
</script> | ||
|
||
<!-- <script> | ||
function scheduleAppointment() { | ||
var name = document.getElementById('name').value; | ||
var phone = document.getElementById('phone').value; | ||
var email = document.getElementById('email').value; | ||
var date = document.getElementById('date').value; | ||
var time = document.getElementById('time').value; | ||
const templateParams = { | ||
to_email: '[email protected]', // Replace with your recipient's email address | ||
sender_name: name, | ||
from_email: email, | ||
sender_phone: phone, | ||
appt_date : date, | ||
appt_time : time, | ||
// Add appointment date and time to templateParams if needed | ||
}; | ||
emailjs.send('service_c4z771e', 'template_w2jm7lo', templateParams).then( | ||
(response) => { | ||
console.log('SUCCESS!', response.status, response.text); | ||
}, | ||
(error) => { | ||
console.log('FAILED...', error); | ||
}, | ||
); | ||
// if (name !== '' && phone !== '' && email !== '' && date !== '' && time !== '') { | ||
// } else { | ||
// alert("All fields are not filled"); | ||
// } | ||
} --> | ||
</script> | ||
|
||
</body> | ||
|
||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# How to build an Event Booking App using HTML, CSS, JavaScript and Firebase? | ||
|
||
In this tutorial, we are going to build an Event Booking App with HTML, CSS, JavaScript, and Firebase. | ||
Find the [full article](https://www.ibrahima-ndaw.com/blog/build-an-event-booking-app-with-javascript-and-firebase/) on my blog |
Oops, something went wrong.