mirror of
https://git.kh3group.com/georgebiri/khy_website.git
synced 2026-07-02 07:03:33 +00:00
All checks were successful
continuous-integration/drone/push Build is passing
878 lines
30 KiB
HTML
878 lines
30 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Contact - KHY</title>
|
|
<meta
|
|
name="description"
|
|
content="Get in touch with KHY for professional furniture and design services."
|
|
/>
|
|
<link rel="stylesheet" href="styles/main.css" />
|
|
<style>
|
|
/* Smooth scrolling for the entire page */
|
|
html {
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
/* Active navigation link styling */
|
|
.nav-link.active {
|
|
color: #b8873f !important;
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* Force responsive behavior */
|
|
@media (min-width: 640px) {
|
|
.sm\:hidden {
|
|
display: none !important;
|
|
}
|
|
.sm\:flex {
|
|
display: flex !important;
|
|
}
|
|
}
|
|
</style>
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&family=Playfair+Display:wght@100;200;300;400;500;600;700&family=Poppins:wght@400;500;600&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
</head>
|
|
<body class="bg-white font-sans text-gray-800">
|
|
<!-- Header -->
|
|
<header
|
|
class="fixed w-full h-20 sm:h-28 top-0 left-0 bg-white shadow-[0_8px_24px_rgba(0,0,0,0.06)] border-b border-black/10 z-50"
|
|
>
|
|
<nav class="h-full">
|
|
<div
|
|
class="max-w-7xl mx-auto h-full flex items-center justify-between px-5"
|
|
>
|
|
<!-- Logo Section -->
|
|
<div class="flex items-center">
|
|
<img
|
|
src="assets/images/khy_logo.png"
|
|
alt="KHY Logo"
|
|
class="h-12 sm:h-20 w-auto drop-shadow-sm"
|
|
/>
|
|
</div>
|
|
|
|
<!-- Desktop Navigation -->
|
|
<ul class="hidden sm:flex space-x-10">
|
|
<li>
|
|
<a
|
|
href="index.html"
|
|
class="nav-link text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors text-shadow-default"
|
|
>Home</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="index.html#products"
|
|
class="nav-link text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors text-shadow-default"
|
|
>Products</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="index.html#projects-button"
|
|
class="nav-link text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors text-shadow-default"
|
|
>Projects</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="index.html#clients"
|
|
class="nav-link text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors text-shadow-default"
|
|
>Clients</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="index.html#about"
|
|
class="nav-link text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors text-shadow-default"
|
|
>About</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="contact.html"
|
|
class="nav-link text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors text-shadow-default"
|
|
>Contact</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="blog.html"
|
|
class="nav-link text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors text-shadow-default"
|
|
>Blog</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="quote.html"
|
|
class="nav-link text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors text-shadow-default"
|
|
>Quote</a
|
|
>
|
|
</li>
|
|
</ul>
|
|
|
|
<!-- Mobile Quote Button and Hamburger -->
|
|
<div class="sm:hidden flex items-center space-x-3">
|
|
<!-- Quote Button -->
|
|
<a
|
|
href="quote.html"
|
|
class="px-3 py-1 border border-black text-black font-playfair text-sm font-normal tracking-wider hover:bg-black hover:text-white transition-colors"
|
|
>
|
|
Quote
|
|
</a>
|
|
|
|
<!-- Hamburger Button -->
|
|
<button
|
|
id="mobile-menu-button"
|
|
class="text-black hover:text-gray-600 transition-colors"
|
|
aria-label="Open mobile menu"
|
|
>
|
|
<svg
|
|
class="w-7 h-7"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
d="M4 6h16M4 12h16M4 18h16"
|
|
></path>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
</header>
|
|
|
|
<!-- Mobile Menu Overlay -->
|
|
<div
|
|
id="mobile-menu-overlay"
|
|
class="fixed inset-0 bg-black bg-opacity-50 z-40 hidden transition-opacity duration-300 sm:hidden"
|
|
></div>
|
|
|
|
<!-- Mobile Menu -->
|
|
<div
|
|
id="mobile-menu"
|
|
class="fixed top-0 right-0 h-full w-80 bg-white shadow-xl z-50 transform translate-x-full transition-transform duration-300 sm:hidden"
|
|
>
|
|
<!-- Mobile Menu Header -->
|
|
<div
|
|
class="flex items-center justify-between p-5 border-b border-gray-200"
|
|
>
|
|
<img
|
|
src="assets/images/khy_logo.png"
|
|
alt="KHY Logo"
|
|
class="h-10 w-auto"
|
|
/>
|
|
<button
|
|
id="mobile-menu-close"
|
|
class="p-2 text-black hover:text-gray-600 transition-colors"
|
|
aria-label="Close mobile menu"
|
|
>
|
|
<svg
|
|
class="w-6 h-6"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
d="M6 18L18 6M6 6l12 12"
|
|
></path>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
|
|
<!-- Mobile Menu Items -->
|
|
<nav class="p-5">
|
|
<ul class="flex flex-col space-y-4">
|
|
<li>
|
|
<a
|
|
href="index.html"
|
|
class="nav-link block text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors py-2"
|
|
>Home</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="index.html#products"
|
|
class="nav-link block text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors py-2"
|
|
>Products</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="index.html#projects-button"
|
|
class="nav-link block text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors py-2"
|
|
>Projects</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="index.html#clients"
|
|
class="nav-link block text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors py-2"
|
|
>Clients</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="index.html#about"
|
|
class="nav-link block text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors py-2"
|
|
>About</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="contact.html"
|
|
class="block text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors py-2"
|
|
>Contact</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="blog.html"
|
|
class="block text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors py-2"
|
|
>Blog</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="quote.html"
|
|
class="block text-black hover:text-gray-600 font-playfair text-md font-extralight tracking-wider transition-colors py-2"
|
|
>Quote</a
|
|
>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
|
|
<main>
|
|
<!-- Hero Section -->
|
|
<section class="relative h-80 mt-20 sm:mt-28">
|
|
<!-- Background Image -->
|
|
<div class="absolute inset-0 w-full h-full">
|
|
<img
|
|
src="assets/images/first_homepage.jpg"
|
|
alt="Modern office interior"
|
|
class="w-full h-full object-cover object-center"
|
|
style="filter: blur(2px)"
|
|
/>
|
|
</div>
|
|
|
|
<!-- White Overlay -->
|
|
<div class="absolute inset-0 bg-white bg-opacity-60"></div>
|
|
|
|
<!-- Overlay Content -->
|
|
<div
|
|
class="absolute z-10 inset-0 flex items-center justify-center text-center text-black"
|
|
>
|
|
<h1
|
|
class="font-playfair font-medium text-3xl md:text-4xl lg:text-5xl leading-tight"
|
|
>
|
|
Contact
|
|
</h1>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Get In Touch Section -->
|
|
<section class="relative bg-white py-20">
|
|
<div class="max-w-7xl mx-auto px-5">
|
|
<!-- Section Header -->
|
|
<div class="text-center mb-16">
|
|
<h2
|
|
class="font-playfair font-bold text-2xl md:text-3xl lg:text-4xl leading-tight text-black mb-6"
|
|
>
|
|
Get In Touch With Us
|
|
</h2>
|
|
<p
|
|
class="font-playfair font-normal text-base leading-relaxed text-gray-500 max-w-2xl mx-auto"
|
|
>
|
|
For More Information About Our Product & Services. Please Feel
|
|
Free To Drop Us An Email. Our Staff Always Be There To Help You
|
|
Out. Do Not Hesitate!
|
|
</p>
|
|
</div>
|
|
|
|
<!-- Contact Content -->
|
|
<div class="grid grid-cols-1 lg:grid-cols-2 gap-16">
|
|
<!-- Contact Information -->
|
|
<div class="bg-white p-8 rounded-lg shadow-sm">
|
|
<div class="space-y-8">
|
|
<!-- Address -->
|
|
<div class="flex items-start space-x-4">
|
|
<img
|
|
src="assets/icons/address.png"
|
|
alt="Address"
|
|
class="w-6 mt-1"
|
|
/>
|
|
<div>
|
|
<h3
|
|
class="font-playfair font-semibold text-2xl text-black mb-2"
|
|
>
|
|
Address
|
|
</h3>
|
|
<p
|
|
class="font-playfair font-normal text-base leading-relaxed text-black"
|
|
>
|
|
5 Labone Crescent, <br />
|
|
Greater Accra, <br />
|
|
Ghana
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Phone -->
|
|
<div class="flex items-start space-x-4">
|
|
<img
|
|
src="assets/icons/phone.png"
|
|
alt="Phone"
|
|
class="w-6 h-6 mt-1"
|
|
/>
|
|
<div>
|
|
<h3
|
|
class="font-playfair font-semibold text-2xl text-black mb-2"
|
|
>
|
|
Phone
|
|
</h3>
|
|
<p
|
|
class="font-playfair font-normal text-base leading-relaxed text-black"
|
|
>
|
|
Mobile: +(233) 546-6789
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Working Time -->
|
|
<div class="flex items-start space-x-4">
|
|
<img
|
|
src="assets/icons/time.png"
|
|
alt="Time"
|
|
class="w-6 h-6 mt-1"
|
|
/>
|
|
<div>
|
|
<h3
|
|
class="font-playfair font-semibold text-2xl text-black mb-2"
|
|
>
|
|
Working Time
|
|
</h3>
|
|
<p
|
|
class="font-playfair font-normal text-base leading-relaxed text-black"
|
|
>
|
|
Monday-Friday: 9AM - 5PM
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Contact Form -->
|
|
<div class="bg-white p-8 rounded-lg shadow-sm">
|
|
<form id="contact-form" class="space-y-6">
|
|
<!-- Name -->
|
|
<div>
|
|
<label
|
|
class="block font-playfair font-semibold text-base text-black mb-2"
|
|
>
|
|
Your name
|
|
</label>
|
|
<input
|
|
type="text"
|
|
id="contact-name"
|
|
name="name"
|
|
placeholder="First name last name"
|
|
class="w-full px-4 py-3 font-playfair font-normal text-base text-gray-500 bg-white border border-gray-300 rounded-lg focus:outline-none focus:border-uc-gold"
|
|
required
|
|
/>
|
|
</div>
|
|
|
|
<!-- Email -->
|
|
<div>
|
|
<label
|
|
class="block font-playfair font-semibold text-base text-black mb-2"
|
|
>
|
|
Email address
|
|
</label>
|
|
<input
|
|
type="email"
|
|
id="contact-email"
|
|
name="email"
|
|
placeholder="your@email.com"
|
|
class="w-full px-4 py-3 font-playfair font-normal text-base text-gray-500 bg-white border border-gray-300 rounded-lg focus:outline-none focus:border-uc-gold"
|
|
required
|
|
/>
|
|
</div>
|
|
|
|
<!-- Subject -->
|
|
<div>
|
|
<label
|
|
class="block font-playfair font-semibold text-base text-black mb-2"
|
|
>
|
|
Subject
|
|
</label>
|
|
<input
|
|
type="text"
|
|
id="contact-subject"
|
|
name="subject"
|
|
placeholder="Title of your message"
|
|
class="w-full px-4 py-3 font-playfair font-normal text-base text-gray-500 bg-white border border-gray-300 rounded-lg focus:outline-none focus:border-uc-gold"
|
|
required
|
|
/>
|
|
</div>
|
|
|
|
<!-- Message -->
|
|
<div>
|
|
<label
|
|
class="block font-playfair font-semibold text-base text-black mb-2"
|
|
>
|
|
Message
|
|
</label>
|
|
<textarea
|
|
rows="5"
|
|
id="contact-message"
|
|
name="message"
|
|
placeholder="Type your message here ..."
|
|
class="w-full px-4 py-3 font-playfair font-normal text-base text-gray-500 bg-white border border-gray-300 rounded-lg focus:outline-none focus:border-uc-gold resize-none"
|
|
required
|
|
></textarea>
|
|
</div>
|
|
|
|
<!-- Success Message -->
|
|
<div
|
|
id="contact-success"
|
|
class="hidden bg-green-50 border border-green-200 text-green-800 px-4 py-3 rounded-lg font-playfair font-normal text-base mb-4"
|
|
style="display: none"
|
|
>
|
|
Thank you for your message! We will reply to you shortly.
|
|
</div>
|
|
|
|
<!-- Error Message -->
|
|
<div
|
|
id="contact-error"
|
|
class="hidden bg-red-50 border border-red-200 text-red-800 px-4 py-3 rounded-lg font-playfair font-normal text-base mb-4"
|
|
style="display: none"
|
|
>
|
|
Please fill in all required fields before submitting.
|
|
</div>
|
|
|
|
<!-- Submit Button -->
|
|
<button
|
|
type="submit"
|
|
id="contact-submit"
|
|
class="bg-uc-gold text-white font-playfair font-normal text-base px-8 py-3 rounded-lg hover:bg-opacity-90 transition-all"
|
|
>
|
|
Submit
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Features Section -->
|
|
<section class="relative bg-floral-white py-16">
|
|
<div class="max-w-7xl mx-auto px-5">
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
|
|
<!-- High Quality -->
|
|
<div class="flex items-center space-x-4">
|
|
<div class="w-12 h-12">
|
|
<img
|
|
src="assets/icons/trophy.png"
|
|
alt="Trophy"
|
|
class="w-full h-full object-contain"
|
|
/>
|
|
</div>
|
|
<div>
|
|
<h3
|
|
class="font-playfair font-semibold text-2xl text-black mb-1"
|
|
>
|
|
High Quality
|
|
</h3>
|
|
<p class="font-playfair font-normal text-lg text-gray-500">
|
|
crafted from top materials
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Warranty Protection -->
|
|
<div class="flex items-center space-x-4">
|
|
<div class="w-12 h-12">
|
|
<img
|
|
src="assets/icons/warranty.png"
|
|
alt="Guarantee"
|
|
class="w-full h-full object-contain"
|
|
/>
|
|
</div>
|
|
<div>
|
|
<h3
|
|
class="font-playfair font-semibold text-2xl text-black mb-1"
|
|
>
|
|
Warranty Protection
|
|
</h3>
|
|
<p class="font-playfair font-normal text-lg text-gray-500">
|
|
Over 2 years
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Free Shipping -->
|
|
<div class="flex items-center space-x-4">
|
|
<div class="w-12 h-12">
|
|
<img
|
|
src="assets/icons/shipping.png"
|
|
alt="Shipping"
|
|
class="w-full h-full object-contain"
|
|
/>
|
|
</div>
|
|
<div>
|
|
<h3
|
|
class="font-playfair font-semibold text-2xl text-black mb-1"
|
|
>
|
|
Free Shipping
|
|
</h3>
|
|
<p class="font-playfair font-normal text-lg text-gray-500">
|
|
Order over 150 $
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 24/7 Support -->
|
|
<div class="flex items-center space-x-4">
|
|
<div class="w-12 h-12">
|
|
<img
|
|
src="assets/icons/support.png"
|
|
alt="Support"
|
|
class="w-full h-full object-contain"
|
|
/>
|
|
</div>
|
|
<div>
|
|
<h3
|
|
class="font-playfair font-semibold text-2xl text-black mb-1"
|
|
>
|
|
24 / 7 Support
|
|
</h3>
|
|
<p class="font-playfair font-normal text-lg text-gray-500">
|
|
Dedicated support
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<!-- Footer Separator -->
|
|
<div class="border-t border-gray-200"></div>
|
|
|
|
<!-- Footer -->
|
|
<footer class="bg-white">
|
|
<!-- Main Footer Content -->
|
|
<div class="max-w-7xl mx-auto px-5 py-16">
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
|
|
<!-- Company Information -->
|
|
<div class="space-y-2">
|
|
<!-- Logo -->
|
|
<div class="w-16 h-20">
|
|
<img
|
|
src="assets/images/khy_logo.png"
|
|
alt="khy"
|
|
class="w-full h-full object-contain"
|
|
/>
|
|
</div>
|
|
|
|
<!-- Address -->
|
|
<p
|
|
class="font-playfair font-normal text-base leading-relaxed text-gray-600"
|
|
>
|
|
5 Labone Crescent, Greater Accra, Ghana
|
|
</p>
|
|
|
|
<!-- Contact Info -->
|
|
<div class="space-y-1">
|
|
<!-- Phone -->
|
|
<div class="flex items-center space-x-3">
|
|
<img
|
|
src="assets/images/phone.png"
|
|
alt="Phone"
|
|
class="w-4 h-4"
|
|
/>
|
|
<span class="font-playfair font-normal text-base text-gray-800">
|
|
+233 (555) 76677
|
|
</span>
|
|
</div>
|
|
|
|
<!-- Email -->
|
|
<div class="flex items-center space-x-3">
|
|
<img src="assets/images/mail.png" alt="Email" class="w-4 h-4" />
|
|
<span class="font-playfair font-normal text-base text-gray-800">
|
|
design@khyltd.com
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Quick Links -->
|
|
<div class="space-y-6">
|
|
<h3
|
|
class="font-playfair font-normal text-md leading-relaxed tracking-wider text-eerie-black uppercase"
|
|
>
|
|
Quick Links
|
|
</h3>
|
|
<div class="space-y-4">
|
|
<a
|
|
href="#"
|
|
class="block font-playfair font-normal text-base leading-relaxed tracking-wider text-gray-800 hover:text-black transition-colors"
|
|
>
|
|
Home
|
|
</a>
|
|
<a
|
|
href="#"
|
|
class="block font-playfair font-normal text-base leading-relaxed tracking-wider text-gray-800 hover:text-black transition-colors"
|
|
>
|
|
Products
|
|
</a>
|
|
<a
|
|
href="#"
|
|
class="block font-playfair font-normal text-base leading-relaxed tracking-wider text-gray-800 hover:text-black transition-colors"
|
|
>
|
|
About
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Help -->
|
|
<div class="space-y-6">
|
|
<h3
|
|
class="font-playfair font-normal text-md leading-relaxed tracking-wider text-eerie-black uppercase"
|
|
>
|
|
Help
|
|
</h3>
|
|
<div class="space-y-4">
|
|
<a
|
|
href="#"
|
|
class="block font-playfair font-normal text-base leading-relaxed tracking-wider text-gray-800 hover:text-black transition-colors"
|
|
>
|
|
Contact Us
|
|
</a>
|
|
<a
|
|
href="#"
|
|
class="block font-playfair font-normal text-base leading-relaxed tracking-wider text-gray-800 hover:text-black transition-colors"
|
|
>
|
|
Privacy Policies
|
|
</a>
|
|
<a
|
|
href="#"
|
|
class="block font-playfair font-normal text-base leading-relaxed tracking-wider text-gray-800 hover:text-black transition-colors"
|
|
>
|
|
Terms and Conditions
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Newsletter -->
|
|
<div class="space-y-6">
|
|
<h3
|
|
class="font-playfair font-normal text-md leading-relaxed tracking-wider text-eerie-black uppercase"
|
|
>
|
|
Newsletter
|
|
</h3>
|
|
<div class="space-y-4">
|
|
<div class="flex items-center space-x-4">
|
|
<input
|
|
type="email"
|
|
placeholder="Enter Your Email Address"
|
|
class="flex-1 font-playfair font-normal text-sm leading-relaxed tracking-wider text-taupe-gray bg-transparent border-b border-black focus:outline-none focus:border-black"
|
|
/>
|
|
<button
|
|
class="font-playfair font-normal text-sm leading-relaxed tracking-wider text-gray-800 border-b border-black hover:text-black transition-colors"
|
|
>
|
|
Subscribe
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Copyright Section -->
|
|
<div class="border-t border-light-silver">
|
|
<div class="max-w-7xl mx-auto px-5 py-4">
|
|
<p
|
|
class="font-playfair font-normal text-xs leading-relaxed text-davys-grey"
|
|
>
|
|
© 2025 khy. All rights reserved.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
<script src="scripts/main.js?v=1.1"></script>
|
|
<script>
|
|
// Contact form validation and submission
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
const contactForm = document.getElementById("contact-form");
|
|
const successMessage = document.getElementById("contact-success");
|
|
const errorMessage = document.getElementById("contact-error");
|
|
const submitButton = document.getElementById("contact-submit");
|
|
|
|
if (contactForm) {
|
|
contactForm.addEventListener("submit", function (e) {
|
|
e.preventDefault();
|
|
|
|
// Get form fields
|
|
const name = document.getElementById("contact-name").value.trim();
|
|
const email = document.getElementById("contact-email").value.trim();
|
|
const subject = document
|
|
.getElementById("contact-subject")
|
|
.value.trim();
|
|
const message = document
|
|
.getElementById("contact-message")
|
|
.value.trim();
|
|
|
|
// Hide any existing messages
|
|
successMessage.classList.add("hidden");
|
|
errorMessage.classList.add("hidden");
|
|
|
|
// Validate all fields
|
|
if (!name || !email || !subject || !message) {
|
|
// Show error message
|
|
errorMessage.classList.remove("hidden");
|
|
errorMessage.style.display = "block";
|
|
|
|
// Highlight empty fields with red border
|
|
const fields = [name, email, subject, message];
|
|
const fieldIds = [
|
|
"contact-name",
|
|
"contact-email",
|
|
"contact-subject",
|
|
"contact-message",
|
|
];
|
|
|
|
fieldIds.forEach((fieldId, index) => {
|
|
const field = document.getElementById(fieldId);
|
|
if (!fields[index]) {
|
|
field.classList.add("border-red-500");
|
|
field.classList.remove("border-gray-300");
|
|
} else {
|
|
field.classList.remove("border-red-500");
|
|
field.classList.add("border-gray-300");
|
|
}
|
|
});
|
|
|
|
// Scroll to error message
|
|
errorMessage.scrollIntoView({
|
|
behavior: "smooth",
|
|
block: "center",
|
|
});
|
|
|
|
// Hide error message after 3 seconds
|
|
setTimeout(() => {
|
|
errorMessage.classList.add("hidden");
|
|
errorMessage.style.display = "none";
|
|
}, 3000);
|
|
|
|
return;
|
|
}
|
|
|
|
// Validate email format
|
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
if (!emailRegex.test(email)) {
|
|
errorMessage.textContent = "Please enter a valid email address.";
|
|
errorMessage.classList.remove("hidden");
|
|
errorMessage.style.display = "block";
|
|
document
|
|
.getElementById("contact-email")
|
|
.classList.add("border-red-500");
|
|
document
|
|
.getElementById("contact-email")
|
|
.classList.remove("border-gray-300");
|
|
|
|
// Hide error message after 3 seconds
|
|
setTimeout(() => {
|
|
errorMessage.classList.add("hidden");
|
|
errorMessage.style.display = "none";
|
|
}, 3000);
|
|
|
|
return;
|
|
}
|
|
|
|
// All validation passed - show success message
|
|
successMessage.classList.remove("hidden");
|
|
successMessage.style.display = "block";
|
|
|
|
// Reset form
|
|
contactForm.reset();
|
|
|
|
// Reset all field borders
|
|
const allFields = [
|
|
"contact-name",
|
|
"contact-email",
|
|
"contact-subject",
|
|
"contact-message",
|
|
];
|
|
allFields.forEach((fieldId) => {
|
|
const field = document.getElementById(fieldId);
|
|
field.classList.remove("border-red-500");
|
|
field.classList.add("border-gray-300");
|
|
});
|
|
|
|
// Scroll to success message
|
|
successMessage.scrollIntoView({
|
|
behavior: "smooth",
|
|
block: "center",
|
|
});
|
|
|
|
// Hide success message after 3 seconds
|
|
setTimeout(() => {
|
|
successMessage.classList.add("hidden");
|
|
successMessage.style.display = "none";
|
|
}, 3000);
|
|
|
|
// Optional: Disable submit button temporarily
|
|
submitButton.disabled = true;
|
|
submitButton.textContent = "Message Sent!";
|
|
submitButton.classList.add("bg-green-600");
|
|
submitButton.classList.remove("bg-uc-gold");
|
|
|
|
// Re-enable button after 3 seconds
|
|
setTimeout(() => {
|
|
submitButton.disabled = false;
|
|
submitButton.textContent = "Submit";
|
|
submitButton.classList.remove("bg-green-600");
|
|
submitButton.classList.add("bg-uc-gold");
|
|
}, 3000);
|
|
});
|
|
|
|
// Real-time validation feedback
|
|
const formFields = [
|
|
"contact-name",
|
|
"contact-email",
|
|
"contact-subject",
|
|
"contact-message",
|
|
];
|
|
formFields.forEach((fieldId) => {
|
|
const field = document.getElementById(fieldId);
|
|
if (field) {
|
|
field.addEventListener("input", function () {
|
|
// Remove error styling when user starts typing
|
|
this.classList.remove("border-red-500");
|
|
this.classList.add("border-gray-300");
|
|
|
|
// Hide error message when user starts correcting
|
|
if (this.value.trim()) {
|
|
errorMessage.classList.add("hidden");
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|