commit f2f78814b830eefb8d1fb8236030c5c339fea3e6 Author: hardik Date: Tue Jul 15 14:55:44 2025 +0530 first commit diff --git a/dockerfile b/dockerfile new file mode 100644 index 00000000..6ed0d96d --- /dev/null +++ b/dockerfile @@ -0,0 +1,17 @@ +# Use the official Nginx image from Docker Hub +FROM nginx:alpine + +# Set working directory +WORKDIR /usr/share/nginx/html + +# Remove the default Nginx static assets +RUN rm -rf ./* + +# Copy your HTML, CSS, JS, etc., to the container +COPY . . + +# Expose port 80 +EXPOSE 80 + +# Start Nginx server +CMD ["nginx", "-g", "daemon off;"] diff --git a/index.css b/index.css new file mode 100644 index 00000000..97501680 --- /dev/null +++ b/index.css @@ -0,0 +1,811 @@ +:root { + --primary: #2563eb; + --secondary: #1e40af; + --accent: #f59e0b; + --light: #f8fafc; + --dark: #1e293b; + --gray: #64748b; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'Poppins', sans-serif; +} + +body { + background-color: var(--light); + color: var(--dark); + overflow-x: hidden; +} + +/* Header Styles */ +header { + background-color: white; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + position: fixed; + width: 100%; + z-index: 1000; +} + +.navbar { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 5%; + max-width: 1400px; + margin: 0 auto; +} + +.logo { + display: flex; + align-items: center; +} + +.logo img { + height: 40px; + margin-right: 10px; +} + +.logo h1 { + font-size: 1.5rem; + font-weight: 700; + color: var(--primary); +} + +.logo span { + color: var(--accent); +} + +.nav-links { + display: flex; + list-style: none; +} + +.nav-links li { + margin-left: 2rem; +} + +.nav-links a { + text-decoration: none; + color: var(--dark); + font-weight: 500; + transition: color 0.3s; +} + +.nav-links a:hover { + color: var(--primary); +} + +.cta-button { + background-color: var(--primary); + color: white; + padding: 0.5rem 1.5rem; + border-radius: 5px; + font-weight: 600; + transition: all 0.3s; +} + +.cta-button:hover { + background-color: var(--secondary); + transform: translateY(-2px); +} + +.mobile-menu { + display: none; + font-size: 1.5rem; + cursor: pointer; +} + +/* Hero Section */ +.hero { + background: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.6)), url('https://images.unsplash.com/photo-1436491865332-7a61a109cc05?ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80'); + background-size: cover; + background-position: center; + height: 100vh; + display: flex; + align-items: center; + padding: 0 5%; + color: white; +} + +.hero-content { + max-width: 600px; +} + +.hero h2 { + font-size: 3rem; + margin-bottom: 1rem; + line-height: 1.2; +} + +.hero p { + font-size: 1.1rem; + margin-bottom: 2rem; + opacity: 0.9; +} + +/* Booking Form */ +.booking-form { + background-color: white; + padding: 2rem; + border-radius: 10px; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); + max-width: 1200px; + margin: -80px auto 0; + position: relative; + z-index: 100; +} + +.form-title { + text-align: center; + margin-bottom: 1.5rem; + color: var(--primary); +} + +.form-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 1rem; +} + +.form-group { + margin-bottom: 1rem; + position: relative; +} + +.form-group label { + display: block; + margin-bottom: 0.5rem; + font-weight: 500; + color: var(--dark); +} + +.form-group input, +.form-group select { + width: 100%; + padding: 0.8rem 1rem; + border: 1px solid #ddd; + border-radius: 5px; + font-size: 1rem; + background-color: #f8fafc; + transition: all 0.3s; +} + +.form-group input:focus, +.form-group select:focus { + outline: none; + border-color: var(--primary); + box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.2); +} + +/* Modern date/time picker styling */ +input[type="date"], +input[type="time"] { + appearance: none; + -webkit-appearance: none; + padding-right: 1.5rem; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%232563eb' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 0.5rem center; + background-size: 1rem; +} + +input[type="time"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%232563eb' viewBox='0 0 16 16'%3E%3Cpath d='M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 1 0 .496-.868L8 8.71V3.5z'/%3E%3Cpath d='M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0z'/%3E%3C/svg%3E"); +} + +.form-submit { + background-color: var(--accent); + color: white; + border: none; + padding: 1rem 2rem; + font-size: 1rem; + font-weight: 600; + border-radius: 5px; + cursor: pointer; + transition: all 0.3s; + width: 100%; + margin-top: 1rem; +} + +.form-submit:hover { + background-color: #e69009; + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(245, 158, 11, 0.3); +} + +/* Services Section */ +.services { + padding: 5rem 5%; + max-width: 1400px; + margin: 0 auto; +} + +.section-title { + text-align: center; + margin-bottom: 3rem; +} + +.section-title h2 { + font-size: 2.5rem; + color: var(--dark); + margin-bottom: 1rem; +} + +.section-title p { + color: var(--gray); + max-width: 700px; + margin: 0 auto; +} + +.services-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; +} + +.service-card { + background-color: white; + border-radius: 10px; + overflow: hidden; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); + transition: all 0.3s; +} + +.service-card:hover { + transform: translateY(-10px); + box-shadow: 0 15px 30px rgba(0, 0, 0, 0.1); +} + +.service-img { + height: 200px; + overflow: hidden; +} + +.service-img img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.5s; +} + +.service-card:hover .service-img img { + transform: scale(1.1); +} + +.service-content { + padding: 1.5rem; +} + +.service-content h3 { + font-size: 1.3rem; + margin-bottom: 0.5rem; + color: var(--dark); +} + +.service-content p { + color: var(--gray); + margin-bottom: 1rem; +} + +.service-price { + font-size: 1.2rem; + font-weight: 700; + color: var(--primary); +} + +/* Fleet Section */ +.fleet { + background-color: #f1f5f9; + padding: 5rem 5%; +} + +.fleet-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + max-width: 1400px; + margin: 0 auto; +} + +.vehicle-card { + background-color: white; + border-radius: 10px; + overflow: hidden; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); + transition: all 0.3s; +} + +.vehicle-card:hover { + transform: translateY(-5px); +} + +.vehicle-img { + height: 180px; + overflow: hidden; +} + +.vehicle-img img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.vehicle-info { + padding: 1.5rem; +} + +.vehicle-info h3 { + font-size: 1.2rem; + margin-bottom: 0.5rem; +} + +.vehicle-specs { + display: flex; + flex-wrap: wrap; + gap: 1rem; + margin-bottom: 1rem; +} + +.spec-item { + display: flex; + align-items: center; + color: var(--gray); + font-size: 0.9rem; +} + +.spec-item i { + margin-right: 5px; + color: var(--primary); +} + +.vehicle-price { + font-weight: 700; + color: var(--primary); + margin-bottom: 1rem; +} + +.book-now { + background-color: var(--primary); + color: white; + border: none; + padding: 0.5rem 1rem; + border-radius: 5px; + font-weight: 500; + cursor: pointer; + transition: all 0.3s; + width: 100%; +} + +.book-now:hover { + background-color: var(--secondary); +} + +/* Testimonials */ +.testimonials { + padding: 5rem 5%; + max-width: 1400px; + margin: 0 auto; +} + +.testimonial-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; +} + +.testimonial-card { + background-color: white; + padding: 2rem; + border-radius: 10px; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); + position: relative; +} + +.testimonial-card::before { + content: '"'; + font-size: 5rem; + color: var(--primary); + opacity: 0.1; + position: absolute; + top: 10px; + left: 20px; +} + +.testimonial-content { + margin-bottom: 1.5rem; + position: relative; + z-index: 1; +} + +.testimonial-author { + display: flex; + align-items: center; +} + +.author-img { + width: 50px; + height: 50px; + border-radius: 50%; + overflow: hidden; + margin-right: 1rem; +} + +.author-img img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.author-info h4 { + font-size: 1rem; + margin-bottom: 0.2rem; +} + +.author-info p { + font-size: 0.8rem; + color: var(--gray); +} + +.rating { + color: var(--accent); + margin-top: 0.5rem; +} + +/* Footer */ +footer { + background-color: var(--dark); + color: white; + padding: 4rem 5% 2rem; +} + +.footer-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 2rem; + max-width: 1400px; + margin: 0 auto; +} + +.footer-col h3 { + font-size: 1.2rem; + margin-bottom: 1.5rem; + position: relative; + padding-bottom: 0.5rem; +} + +.footer-col h3::after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + width: 50px; + height: 2px; + background-color: var(--accent); +} + +.footer-col ul { + list-style: none; +} + +.footer-col ul li { + margin-bottom: 0.8rem; +} + +.footer-col ul li a { + color: #cbd5e1; + text-decoration: none; + transition: color 0.3s; +} + +.footer-col ul li a:hover { + color: white; +} + +.social-links { + display: flex; + gap: 1rem; + margin-top: 1rem; +} + +.social-links a { + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + background-color: rgba(255, 255, 255, 0.1); + border-radius: 50%; + color: white; + transition: all 0.3s; +} + +.social-links a:hover { + background-color: var(--accent); + transform: translateY(-3px); +} + +.footer-bottom { + text-align: center; + padding-top: 2rem; + margin-top: 2rem; + border-top: 1px solid rgba(255, 255, 255, 0.1); + max-width: 1400px; + margin: 0 auto; +} + +/* Confirmation Dialog Styles */ +.confirmation-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.7); + display: flex; + justify-content: center; + align-items: center; + z-index: 2000; + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; +} + +.confirmation-overlay.active { + opacity: 1; + visibility: visible; +} + +.confirmation-dialog { + background-color: white; + border-radius: 15px; + width: 90%; + max-width: 500px; + padding: 2rem; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); + transform: translateY(20px) scale(0.95); + transition: all 0.3s ease; + position: relative; +} + +.confirmation-overlay.active .confirmation-dialog { + transform: translateY(0) scale(1); +} + +.confirmation-header { + text-align: center; + margin-bottom: 1.5rem; +} + +.confirmation-header i { + font-size: 4rem; + color: #10b981; + margin-bottom: 1rem; +} + +.confirmation-header h3 { + font-size: 1.8rem; + color: var(--dark); + margin-bottom: 0.5rem; +} + +.confirmation-header p { + color: var(--gray); +} + +.confirmation-details { + background-color: #f8fafc; + border-radius: 10px; + padding: 1.5rem; + margin: 1.5rem 0; +} + +.detail-row { + display: flex; + justify-content: space-between; + margin-bottom: 0.8rem; +} + +.detail-row:last-child { + margin-bottom: 0; +} + +.detail-label { + color: var(--gray); + font-weight: 500; +} + +.detail-value { + color: var(--dark); + font-weight: 600; +} + +.confirmation-total { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 0; + border-top: 1px dashed #ddd; + margin-top: 1rem; +} + +.confirmation-total .detail-label { + font-size: 1.2rem; +} + +.confirmation-total .detail-value { + font-size: 1.4rem; + color: var(--primary); +} + +.confirmation-actions { + display: flex; + gap: 1rem; + margin-top: 1.5rem; +} + +.confirmation-actions button { + flex: 1; + padding: 0.8rem; + border-radius: 8px; + font-weight: 600; + cursor: pointer; + transition: all 0.3s; +} + +.confirmation-actions .btn-print { + background-color: white; + border: 1px solid var(--primary); + color: var(--primary); +} + +.confirmation-actions .btn-print:hover { + background-color: #f0f5ff; +} + +.confirmation-actions .btn-close { + background-color: var(--primary); + border: 1px solid var(--primary); + color: white; +} + +.confirmation-actions .btn-close:hover { + background-color: var(--secondary); + border-color: var(--secondary); +} + +.close-dialog { + position: absolute; + top: 15px; + right: 15px; + background: none; + border: none; + font-size: 1.2rem; + color: var(--gray); + cursor: pointer; + transition: color 0.3s; +} + +.close-dialog:hover { + color: var(--dark); +} + +/* Responsive Styles */ +@media (max-width: 768px) { + .nav-links { + display: none; + position: absolute; + top: 70px; + left: 0; + right: 0; + background-color: white; + flex-direction: column; + padding: 1rem; + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1); + } + + .nav-links.active { + display: flex; + } + + .nav-links li { + margin: 0.5rem 0; + } + + .mobile-menu { + display: block; + } + + .hero h2 { + font-size: 2.2rem; + } + + .section-title h2 { + font-size: 2rem; + } + + .booking-form { + margin-top: -120px; + padding: 1.5rem; + } + + .form-grid { + grid-template-columns: 1fr; + } +} + +@media (max-width: 480px) { + .hero h2 { + font-size: 1.8rem; + } + + .hero p { + font-size: 1rem; + } + + .section-title h2 { + font-size: 1.8rem; + } + + .booking-form { + margin-top: -150px; + } +} +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes slideUp { + from { + opacity: 0; + transform: translateY(50px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes bounce { + 0%, 20%, 50%, 80%, 100% { + transform: translateY(0); + } + 40% { + transform: translateY(-20px); + } + 60% { + transform: translateY(-10px); + } +} + +.hero-content { + animation: fadeIn 1s ease-in-out; +} + +.booking-form { + animation: slideUp 0.8s ease-in-out; +} + +.confirmation-header i { + animation: bounce 0.6s ease; +} + +.animate-on-scroll { + opacity: 0; + transform: translateY(30px); + transition: all 0.6s ease-out; +} + +.animate-on-scroll.visible { + opacity: 1; + transform: translateY(0); +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..811a4aec --- /dev/null +++ b/index.html @@ -0,0 +1,1083 @@ + + + + + + + Sangwari Taxi - Reliable Airport Transfers + + + + + + + + +
+ +
+ + +
+
+

Premium Airport Transfers & Taxi Services

+

Reliable, comfortable and affordable taxi services to and from all major airports. Book your ride in + seconds and travel with confidence.

+ Book Your Ride Now +
+
+ + +
+

Book Your Airport Transfer

+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+

Our Services

+

We offer a range of transportation services to meet all your travel needs

+
+
+
+
+ Airport Transfers +
+
+

Airport Transfers

+

Timely pickups and drop-offs at all major airports with flight tracking for delays.

+
1099 onwards
+
+
+
+
+ City Taxi +
+
+

City Taxi

+

Quick and reliable point-to-point transportation within the city.

+
1099 onwards
+
+
+
+
+ Corporate Travel +
+
+

Corporate Travel

+

Professional transportation services for business meetings and events.

+
1099 onwards
+
+
+
+
+ + +
+
+

Our Fleet

+

Choose from our range of well-maintained vehicles

+
+
+
+
+ Standard Sedan +
+
+

Standard Sedan

+
+
3 Passengers
+
2 Bags
+
+
1099 onwards
+ +
+
+
+
+ Executive Car +
+
+

Executive Car

+
+
3 Passengers
+
3 Bags
+
+
1099 onwards
+ +
+
+
+
+ SUV +
+
+

SUV

+
+
5 Passengers
+
4 Bags
+
+
1099 onwards
+ +
+
+
+
+ Minivan +
+
+

Minivan

+
+
7 Passengers
+
6 Bags
+
+
1099 onwards
+ +
+
+
+
+ + +
+
+

What Our Customers Say

+

Don't just take our word for it - hear from our satisfied customers

+
+
+
+
+

Excellent service! The driver was on time, professional, and the car was spotless. Will + definitely use Sangwari Taxi again for my airport transfers.

+
+
+
+ Sarah Johnson +
+
+

Sarah Johnson

+

Business Traveler

+
+ + + + + +
+
+
+
+
+
+

I was impressed by how they tracked my flight and adjusted pickup time when I was delayed. The + driver was waiting when I arrived.

+
+
+
+ Michael Chen +
+
+

Michael Chen

+

Frequent Flyer

+
+ + + + + +
+
+
+
+
+
+

Used their service for a family trip with lots of luggage. The minivan was perfect and the driver + helped with all our bags. Great experience!

+
+
+
+ Lisa Rodriguez +
+
+

Lisa Rodriguez

+

Family Vacation

+
+ + + + + +
+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 00000000..431860f0 --- /dev/null +++ b/index.js @@ -0,0 +1,159 @@ +// Mobile menu toggle +document.addEventListener('DOMContentLoaded', function() { + const mobileMenuBtn = document.querySelector('.mobile-menu'); + const navLinks = document.querySelector('.nav-links'); + + mobileMenuBtn.addEventListener('click', function() { + navLinks.classList.toggle('active'); + }); + + // Close mobile menu when a link is clicked + document.querySelectorAll('.nav-links a').forEach(link => { + link.addEventListener('click', function() { + if (window.innerWidth <= 768) { + navLinks.classList.remove('active'); + } + }); + }); + + // Smooth scrolling for anchor links + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', function(e) { + e.preventDefault(); + + const targetId = this.getAttribute('href'); + const targetElement = document.querySelector(targetId); + + if (targetElement) { + window.scrollTo({ + top: targetElement.offsetTop - 80, + behavior: 'smooth' + }); + } + }); + }); + + // Update year in footer + document.querySelector('.footer-bottom p').innerHTML = `© ${new Date().getFullYear()} Sangwari Taxi. All rights reserved.`; +}); +document.addEventListener('DOMContentLoaded', function() { + // Set minimum date to today + const today = new Date(); + const dd = String(today.getDate()).padStart(2, '0'); + const mm = String(today.getMonth() + 1).padStart(2, '0'); + const yyyy = today.getFullYear(); + const minDate = yyyy + '-' + mm + '-' + dd; + + document.getElementById('date').min = minDate; + + // Set default time to current time + 1 hour + const now = new Date(); + now.setHours(now.getHours() + 1); + const hours = String(now.getHours()).padStart(2, '0'); + const minutes = String(now.getMinutes()).padStart(2, '0'); + const defaultTime = hours + ':' + minutes; + + document.getElementById('time').value = defaultTime; + + // Booking confirmation dialog + const confirmationDialog = document.getElementById('confirmationDialog'); + const closeDialogBtn = document.getElementById('closeDialogBtn'); + const closeDialog = document.getElementById('closeDialog'); + const bookingForm = document.getElementById('bookingForm'); + + // Show confirmation dialog when form is submitted + bookingForm.addEventListener('submit', function(e) { + e.preventDefault(); + + // Get form values + const pickup = document.getElementById('pickup').value; + const destination = document.getElementById('destination').value; + const date = document.getElementById('date').value; + const time = document.getElementById('time').value; + const vehicle = document.getElementById('vehicle').value; + const passengers = document.getElementById('passengers').value; + + // Format the date for display + const formattedDate = new Date(date).toLocaleDateString('en-US', { + month: 'short', + day: 'numeric', + year: 'numeric' + }); + + // Update confirmation dialog with booking details + document.getElementById('confirmPickup').textContent = pickup || 'Not specified'; + document.getElementById('confirmDestination').textContent = destination || 'Not specified'; + document.getElementById('confirmDateTime').textContent = `${formattedDate} at ${time}`; + document.getElementById('confirmVehicle').textContent = + vehicle === 'standard' ? 'Standard Sedan' : + vehicle === 'executive' ? 'Executive Car' : + vehicle === 'suv' ? 'SUV' : + vehicle === 'minivan' ? 'Minivan' : + vehicle === 'luxury' ? 'Luxury Vehicle' : vehicle; + document.getElementById('confirmPassengers').textContent = passengers; + + // Show the dialog + confirmationDialog.classList.add('active'); + document.body.style.overflow = 'hidden'; + }); + + // Show confirmation dialog when Book Now is clicked (for fleet section) + document.querySelectorAll('.book-now').forEach(button => { + button.addEventListener('click', function(e) { + e.preventDefault(); + + // Get vehicle details + const vehicleCard = this.closest('.vehicle-card'); + const vehicleName = vehicleCard.querySelector('h3').textContent; + + // Update confirmation dialog with default values + document.getElementById('confirmPickup').textContent = 'Airport'; + document.getElementById('confirmDestination').textContent = 'Your destination'; + document.getElementById('confirmVehicle').textContent = vehicleName; + document.getElementById('confirmPassengers').textContent = '1'; + + // Show the dialog + confirmationDialog.classList.add('active'); + document.body.style.overflow = 'hidden'; + }); + }); + + // Close dialog handlers + function closeConfirmationDialog() { + confirmationDialog.classList.remove('active'); + document.body.style.overflow = ''; + } + + closeDialogBtn.addEventListener('click', closeConfirmationDialog); + closeDialog.addEventListener('click', closeConfirmationDialog); + + // Close when clicking outside the dialog + confirmationDialog.addEventListener('click', function(e) { + if (e.target === confirmationDialog) { + closeConfirmationDialog(); + } + }); + + // Print button functionality + document.querySelector('.btn-print').addEventListener('click', function() { + window.print(); + }); +}); +// Animation on scroll +document.addEventListener('DOMContentLoaded', function() { + const animateElements = document.querySelectorAll('.animate-on-scroll'); + + const observer = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + entry.target.classList.add('visible'); + } + }); + }, { + threshold: 0.1 + }); + + animateElements.forEach(element => { + observer.observe(element); + }); +}); \ No newline at end of file diff --git a/sangwari taxi logo.png b/sangwari taxi logo.png new file mode 100644 index 00000000..c722e659 Binary files /dev/null and b/sangwari taxi logo.png differ