diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx new file mode 100644 index 0000000..62b97f6 --- /dev/null +++ b/src/app/about/page.tsx @@ -0,0 +1,76 @@ +"use client"; +import { Mail } from "lucide-react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline"; +import InlineImageSplitTextAbout from "@/components/sections/about/InlineImageSplitTextAbout"; +import ContactSplit from "@/components/sections/contact/ContactSplit"; +import FooterLogoReveal from "@/components/sections/footer/FooterLogoReveal"; + +export default function AboutPage() { + return ( + + + +
+ +
+ +
+ +
+ + +
+ ); +} diff --git a/src/app/accessibility/page.tsx b/src/app/accessibility/page.tsx new file mode 100644 index 0000000..6d44289 --- /dev/null +++ b/src/app/accessibility/page.tsx @@ -0,0 +1,222 @@ +"use client"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline"; +import FooterLogoReveal from "@/components/sections/footer/FooterLogoReveal"; +import { AccessibilityIcon, Eye, Ear, Zap, Heart } from "lucide-react"; + +export default function AccessibilityPage() { + return ( + + + +
+
+ {/* Header */} +
+

+ Accessibility Statement +

+

+ At Rehoboth Dental Clinic, we are committed to providing accessible and inclusive dental care for all patients. +

+
+ + {/* Main Content */} +
+ {/* Facility Accessibility */} +
+
+
+ +
+
+

+ Physical Accessibility +

+
    +
  • + + Wheelchair Access: Our clinic features wheelchair-accessible entrance with automatic doors and ramps. +
  • +
  • + + Accessible Parking: Reserved parking spaces close to the clinic entrance. +
  • +
  • + + Accessible Restrooms: Wheelchair-accessible restrooms with grab bars and adequate space. +
  • +
  • + + Elevator Access: Elevators available to all clinic levels. +
  • +
  • + + Seating Areas: Comfortable waiting areas with various seating options. +
  • +
+
+
+
+ + {/* Services for Different Abilities */} +
+
+
+ +
+
+

+ Communication Support +

+
    +
  • + + Sign Language Interpreters: Available upon request with at least 48 hours notice. +
  • +
  • + + Written Materials: We provide treatment information in writing and large print upon request. +
  • +
  • + + Visual Aids: Diagrams and videos to explain procedures and oral health information. +
  • +
  • + + Clear Communication: Our staff is trained to communicate clearly and patiently with all patients. +
  • +
+
+
+
+ + {/* Medical Accommodations */} +
+
+
+ +
+
+

+ Medical Accommodations +

+
    +
  • + + Extended Appointments: Extra time available for patients who need it. +
  • +
  • + + Anxiety Management: Calming environment and sedation options for anxious patients. +
  • +
  • + + Mobility Support: Assistance with positioning in the dental chair for patients with mobility issues. +
  • +
  • + + Medication Management: We work with patients to accommodate necessary medical treatments. +
  • +
+
+
+
+ + {/* Technology & Digital Access */} +
+
+
+ +
+
+

+ Digital Accessibility +

+
    +
  • + + Accessible Website: Our website is designed to be accessible to screen readers and other assistive technologies. +
  • +
  • + + Online Booking: Easy-to-use appointment booking system accessible from any device. +
  • +
  • + + Email & Phone Support: Multiple ways to contact us for appointments and inquiries. +
  • +
  • + + Telehealth Options: Virtual consultations available for follow-ups and advice. +
  • +
+
+
+
+ + {/* How to Request Accommodations */} +
+

Requesting Accommodations

+

+ We are happy to make accommodations to ensure you receive excellent dental care. To request accommodations: +

+
    +
  1. Call us at +250 792 891 566
  2. +
  3. Email us at info@rehobothdental.com
  4. +
  5. Visit us in person at 68 KG 208 St, Kigali, Rwanda
  6. +
  7. Message us on WhatsApp with your accessibility needs
  8. +
+

+ We request at least 48 hours notice for certain accommodations to ensure we can provide the best support. +

+
+ + {/* Commitment Statement */} +
+

Our Commitment

+

+ Rehoboth Dental Clinic is committed to treating all patients with dignity and respect. We believe that everyone deserves quality dental care, regardless of physical, sensory, cognitive, or any other abilities. We continuously review and improve our accessibility measures to better serve our diverse patient community. +

+

+ If you have any feedback about our accessibility services or encounter any barriers, please don't hesitate to contact us. Your input helps us improve our services for all patients. +

+
+
+
+
+ + +
+ ); +} diff --git a/src/app/book-appointment/page.tsx b/src/app/book-appointment/page.tsx new file mode 100644 index 0000000..71a1488 --- /dev/null +++ b/src/app/book-appointment/page.tsx @@ -0,0 +1,352 @@ +"use client"; +import { useState } from "react"; +import { Calendar, Phone, Mail, User, MessageSquare } from "lucide-react"; +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline"; +import FooterLogoReveal from "@/components/sections/footer/FooterLogoReveal"; +import Textarea from "@/components/form/Textarea"; + +interface FormData { + fullName: string; + email: string; + phone: string; + serviceType: string; + preferredDate: string; + preferredTime: string; + message: string; +} + +interface FormErrors { + [key: string]: string; +} + +export default function BookAppointmentPage() { + const [formData, setFormData] = useState({ + fullName: "", email: "", phone: "", serviceType: "", preferredDate: "", preferredTime: "", message: ""}); + + const [errors, setErrors] = useState({}); + const [submitted, setSubmitted] = useState(false); + + const validateForm = (): boolean => { + const newErrors: FormErrors = {}; + + if (!formData.fullName.trim()) { + newErrors.fullName = "Full name is required"; + } + + if (!formData.email.trim()) { + newErrors.email = "Email is required"; + } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) { + newErrors.email = "Please enter a valid email address"; + } + + if (!formData.phone.trim()) { + newErrors.phone = "Phone number is required"; + } else if (!/^[\d\s\-\+\(\)]+$/.test(formData.phone) || formData.phone.replace(/\D/g, "").length < 9) { + newErrors.phone = "Please enter a valid phone number"; + } + + if (!formData.serviceType) { + newErrors.serviceType = "Please select a service"; + } + + if (!formData.preferredDate) { + newErrors.preferredDate = "Please select a preferred date"; + } + + if (!formData.preferredTime) { + newErrors.preferredTime = "Please select a preferred time"; + } + + setErrors(newErrors); + return Object.keys(newErrors).length === 0; + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + if (validateForm()) { + setSubmitted(true); + setFormData({ + fullName: "", email: "", phone: "", serviceType: "", preferredDate: "", preferredTime: "", message: ""}); + + setTimeout(() => { + setSubmitted(false); + }, 5000); + } + }; + + const handleChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData((prev) => ({ + ...prev, + [name]: value, + })); + if (errors[name]) { + setErrors((prev) => { + const newErrors = { ...prev }; + delete newErrors[name]; + return newErrors; + }); + } + }; + + const handleTextareaChange = (value: string) => { + setFormData((prev) => ({ + ...prev, + message: value, + })); + }; + + return ( + + + +
+
+
+

Book Your Appointment

+

Schedule your visit to Rehoboth Dental Clinic

+
+ + {submitted && ( +
+

✓ Your appointment request has been submitted successfully! We'll contact you shortly to confirm your booking.

+
+ )} + +
+
+ {/* Full Name */} +
+ + + {errors.fullName &&

{errors.fullName}

} +
+ + {/* Email */} +
+ + + {errors.email &&

{errors.email}

} +
+ + {/* Phone */} +
+ + + {errors.phone &&

{errors.phone}

} +
+ + {/* Service Type */} +
+ + + {errors.serviceType &&

{errors.serviceType}

} +
+ + {/* Preferred Date */} +
+ + + {errors.preferredDate &&

{errors.preferredDate}

} +
+ + {/* Preferred Time */} +
+ + + {errors.preferredTime &&

{errors.preferredTime}

} +
+
+ + {/* Message */} +
+ +