Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 79e16537c6 | |||
| 39d5c1f99c | |||
| 2476b1f9d4 | |||
| 7f5d885381 | |||
| 6a0e0faec0 | |||
| 45bae6f702 |
@@ -20,19 +20,22 @@ const inter = Inter({
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Luxury Dental Practice | Premium Care & Advanced Dentistry", description: "Experience luxury dental care with advanced technology and expert dentists. Premium cosmetic, restorative, and preventive services for your perfect smile.", keywords: "luxury dental care, cosmetic dentistry, dental implants, professional dentist, premium dental services", metadataBase: new URL("https://dentalexcellence.com"),
|
||||
title: "Expert Dental Care | Premium Dental Services & Treatment", description: "Experience expert dental care with advanced technology and skilled dentists. Comprehensive cosmetic, restorative, and preventive dental services for your perfect smile.", keywords: "expert dental care, cosmetic dentistry, dental implants, professional dentist, premium dental services", metadataBase: new URL("https://expertdentalcare.com"),
|
||||
alternates: {
|
||||
canonical: "https://dentalexcellence.com"},
|
||||
canonical: "https://expertdentalcare.com"
|
||||
},
|
||||
openGraph: {
|
||||
title: "Luxury Dental Practice | Premium Care & Advanced Dentistry", description: "Experience luxury dental care with advanced technology and expert dentists. Premium cosmetic, restorative, and preventive services for your perfect smile.", siteName: "Dental Excellence", type: "website", images: [
|
||||
title: "Expert Dental Care | Premium Dental Services & Treatment", description: "Experience expert dental care with advanced technology and skilled dentists. Comprehensive cosmetic, restorative, and preventive dental services for your perfect smile.", siteName: "Expert Dental Care", type: "website", images: [
|
||||
{
|
||||
url: "http://img.b2bpic.net/free-photo/dentist-process-dental-services-dental-office-dental-treatment_1321-2973.jpg", alt: "Premium dental care"},
|
||||
],
|
||||
url: "http://img.b2bpic.net/free-photo/dentist-process-dental-services-dental-office-dental-treatment_1321-2973.jpg", alt: "Expert dental care"
|
||||
}
|
||||
]
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image", title: "Luxury Dental Practice | Premium Care & Advanced Dentistry", description: "Experience luxury dental care with advanced technology and expert dentists.", images: [
|
||||
"http://img.b2bpic.net/free-photo/dentist-process-dental-services-dental-office-dental-treatment_1321-2973.jpg"],
|
||||
},
|
||||
card: "summary_large_image", title: "Expert Dental Care | Premium Dental Services & Treatment", description: "Experience expert dental care with advanced technology and skilled dentists.", images: [
|
||||
"http://img.b2bpic.net/free-photo/dentist-process-dental-services-dental-office-dental-treatment_1321-2973.jpg"
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
|
||||
107
src/app/page.tsx
107
src/app/page.tsx
@@ -9,7 +9,7 @@ import FeatureCardOne from "@/components/sections/feature/FeatureCardOne";
|
||||
import TestimonialCardSix from "@/components/sections/testimonial/TestimonialCardSix";
|
||||
import ContactSplit from "@/components/sections/contact/ContactSplit";
|
||||
import FooterBase from "@/components/sections/footer/FooterBase";
|
||||
import { Star, Sparkles, Award, Heart, Mail, Calendar, X, Clock, Users, CheckCircle } from "lucide-react";
|
||||
import { Star, Sparkles, Award, Heart, Mail, CheckCircle } from "lucide-react";
|
||||
import { useState } from "react";
|
||||
import React from "react";
|
||||
|
||||
@@ -50,6 +50,54 @@ const TIME_SLOTS: TimeSlot[] = [
|
||||
{ time: '04:00 PM', available: true },
|
||||
];
|
||||
|
||||
// Pre-generate random values outside of render to avoid impure function violations
|
||||
const generateRandomValues = () => {
|
||||
return Array.from({ length: 30 }).map(() => ({
|
||||
delay: Math.random() * 2,
|
||||
duration: 3 + Math.random() * 2,
|
||||
x: Math.random() * 100,
|
||||
y: Math.random() * 100,
|
||||
size: 2 + Math.random() * 4,
|
||||
offsetX: Math.random() * 100 - 50,
|
||||
offsetY: Math.random() * 100 - 50,
|
||||
}));
|
||||
};
|
||||
|
||||
const RANDOM_VALUES = generateRandomValues();
|
||||
|
||||
function FloatingDotsAnimation() {
|
||||
return (
|
||||
<div className="fixed inset-0 pointer-events-none overflow-hidden">
|
||||
{RANDOM_VALUES.map((values, i) => (
|
||||
<div
|
||||
key={i}
|
||||
className="absolute rounded-full bg-magenta-500 opacity-60"
|
||||
style={{
|
||||
width: `${values.size}px`,
|
||||
height: `${values.size}px`,
|
||||
left: `${values.x}%`,
|
||||
top: `${values.y}%`,
|
||||
animation: `float-dots ${values.duration}s ease-in-out ${values.delay}s infinite`,
|
||||
backgroundColor: '#ff00ff',
|
||||
}}
|
||||
/>
|
||||
))}
|
||||
<style>{`
|
||||
@keyframes float-dots {
|
||||
0%, 100% {
|
||||
transform: translate(0, 0) scale(1);
|
||||
opacity: 0.3;
|
||||
}
|
||||
50% {
|
||||
transform: translate(var(--tx), var(--ty)) scale(1.2);
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
`}</style>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function BookingModal({ isOpen, onClose, onSubmit }: { isOpen: boolean; onClose: () => void; onSubmit: (data: any) => void }) {
|
||||
const [state, setState] = React.useState<BookingState>({
|
||||
isOpen,
|
||||
@@ -110,12 +158,6 @@ function BookingModal({ isOpen, onClose, onSubmit }: { isOpen: boolean; onClose:
|
||||
onClose();
|
||||
};
|
||||
|
||||
const getNextAvailableDate = () => {
|
||||
const tomorrow = new Date();
|
||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
||||
return tomorrow.toISOString().split('T')[0];
|
||||
};
|
||||
|
||||
const getDateRangeOptions = () => {
|
||||
const dates = [];
|
||||
for (let i = 1; i <= 30; i++) {
|
||||
@@ -142,7 +184,7 @@ function BookingModal({ isOpen, onClose, onSubmit }: { isOpen: boolean; onClose:
|
||||
onClick={onClose}
|
||||
className="p-2 hover:bg-blue-200 rounded-lg transition"
|
||||
>
|
||||
<X size={24} className="text-gray-600" />
|
||||
<svg className="w-6 h-6 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" /></svg>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -200,7 +242,7 @@ function BookingModal({ isOpen, onClose, onSubmit }: { isOpen: boolean; onClose:
|
||||
>
|
||||
<div className="font-semibold text-gray-900">{service.name}</div>
|
||||
<div className="text-sm text-gray-500 flex items-center gap-1 mt-1">
|
||||
<Clock size={14} /> {service.duration}
|
||||
<svg className="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" /></svg> {service.duration}
|
||||
</div>
|
||||
</button>
|
||||
))}
|
||||
@@ -358,7 +400,6 @@ export default function LandingPage() {
|
||||
|
||||
const handleBookingSubmit = (data: any) => {
|
||||
console.log('Booking submitted:', data);
|
||||
// Here you would typically send this to your backend
|
||||
alert(`Booking confirmed for ${data.name} on ${data.date} at ${data.time}`);
|
||||
};
|
||||
|
||||
@@ -375,6 +416,7 @@ export default function LandingPage() {
|
||||
secondaryButtonStyle="solid"
|
||||
headingFontWeight="light"
|
||||
>
|
||||
<FloatingDotsAnimation />
|
||||
<BookingModal
|
||||
isOpen={bookingOpen}
|
||||
onClose={() => setBookingOpen(false)}
|
||||
@@ -383,7 +425,7 @@ export default function LandingPage() {
|
||||
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingInline
|
||||
brandName="Dental Excellence"
|
||||
brandName="Expert Dental Care"
|
||||
navItems={[
|
||||
{ name: "Services", id: "services" },
|
||||
{ name: "About", id: "about" },
|
||||
@@ -435,13 +477,16 @@ export default function LandingPage() {
|
||||
products={[
|
||||
{
|
||||
id: "1", brand: "Cosmetic Dentistry", name: "Smile Enhancement", price: "From $500", rating: 5,
|
||||
reviewCount: "248", imageSrc: "http://img.b2bpic.net/free-photo/female-patient-smiling_107420-65384.jpg", imageAlt: "Cosmetic smile enhancement"},
|
||||
reviewCount: "248", imageSrc: "http://img.b2bpic.net/free-photo/female-patient-smiling_107420-65384.jpg", imageAlt: "Cosmetic smile enhancement"
|
||||
},
|
||||
{
|
||||
id: "2", brand: "Restorative", name: "Dental Implants", price: "From $2,500", rating: 5,
|
||||
reviewCount: "189", imageSrc: "http://img.b2bpic.net/free-photo/old-man-sitting-dentist-s-office_1157-19454.jpg", imageAlt: "Advanced dental implant procedure"},
|
||||
reviewCount: "189", imageSrc: "http://img.b2bpic.net/free-photo/old-man-sitting-dentist-s-office_1157-19454.jpg", imageAlt: "Advanced dental implant procedure"
|
||||
},
|
||||
{
|
||||
id: "3", brand: "Preventive Care", name: "Professional Cleaning", price: "From $150", rating: 5,
|
||||
reviewCount: "342", imageSrc: "http://img.b2bpic.net/free-photo/young-woman-receiving-dental-treatment-from-male-dentist-clinic_662251-2591.jpg", imageAlt: "Professional dental cleaning"},
|
||||
reviewCount: "342", imageSrc: "http://img.b2bpic.net/free-photo/young-woman-receiving-dental-treatment-from-male-dentist-clinic_662251-2591.jpg", imageAlt: "Professional dental cleaning"
|
||||
},
|
||||
]}
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
animationType="slide-up"
|
||||
@@ -455,7 +500,8 @@ export default function LandingPage() {
|
||||
heading={[
|
||||
{ type: "text", content: "Luxury Dental Excellence with" },
|
||||
{
|
||||
type: "image", src: "http://img.b2bpic.net/free-photo/dental-clinic-interior-with-modern-dentistry-equipment-orange-color-stomatology-cabinet-with-nobody-it-orange-equipment-oral-treatment_482257-12486.jpg", alt: "Modern dental office"},
|
||||
type: "image", src: "http://img.b2bpic.net/free-photo/dental-clinic-interior-with-modern-dentistry-equipment-orange-color-stomatology-cabinet-with-nobody-it-orange-equipment-oral-treatment_482257-12486.jpg", alt: "Modern dental office"
|
||||
},
|
||||
{ type: "text", content: "State-of-the-Art Care" },
|
||||
]}
|
||||
useInvertedBackground={true}
|
||||
@@ -478,11 +524,14 @@ export default function LandingPage() {
|
||||
useInvertedBackground={false}
|
||||
features={[
|
||||
{
|
||||
title: "Patient Comfort", description: "Relax in our luxurious treatment rooms with premium seating, ambient lighting, and calming environments designed for maximum comfort.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-female-patient_23-2148396133.jpg", imageAlt: "Comfortable patient treatment area"},
|
||||
title: "Patient Comfort", description: "Relax in our luxurious treatment rooms with premium seating, ambient lighting, and calming environments designed for maximum comfort.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-female-patient_23-2148396133.jpg", imageAlt: "Comfortable patient treatment area"
|
||||
},
|
||||
{
|
||||
title: "Advanced Technology", description: "We invest in the latest dental technology including digital imaging, laser treatments, and computer-guided implant placement.", imageSrc: "http://img.b2bpic.net/free-photo/dentist-doctor-patient-looking-digital-teeh-x-ray-dental-office-person-pov-stomatology-wearing-protective-face-mask-gloves-pointing-teeth-radiography-stomatological-clinic_482257-13097.jpg", imageAlt: "Advanced dental technology"},
|
||||
title: "Advanced Technology", description: "We invest in the latest dental technology including digital imaging, laser treatments, and computer-guided implant placement.", imageSrc: "http://img.b2bpic.net/free-photo/dentist-doctor-patient-looking-digital-teeh-x-ray-dental-office-person-pov-stomatology-wearing-protective-face-mask-gloves-pointing-teeth-radiography-stomatological-clinic_482257-13097.jpg", imageAlt: "Advanced dental technology"
|
||||
},
|
||||
{
|
||||
title: "Expert Team", description: "Our board-certified dentists and specialists have over 25 years combined experience delivering exceptional results.", imageSrc: "http://img.b2bpic.net/free-photo/smiley-doctor-talking-with-nurse_23-2148757329.jpg", imageAlt: "Professional dental team"},
|
||||
title: "Expert Team", description: "Our board-certified dentists and specialists have over 25 years combined experience delivering exceptional results.", imageSrc: "http://img.b2bpic.net/free-photo/smiley-doctor-talking-with-nurse_23-2148757329.jpg", imageAlt: "Professional dental team"
|
||||
},
|
||||
]}
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
animationType="slide-up"
|
||||
@@ -504,17 +553,23 @@ export default function LandingPage() {
|
||||
speed={40}
|
||||
testimonials={[
|
||||
{
|
||||
id: "1", name: "Sarah Mitchell", handle: "CEO, Tech Innovations", testimonial: "Dr. Chen transformed my smile completely. The care and attention to detail was exceptional. I've never felt more confident!", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg", imageAlt: "Sarah Mitchell"},
|
||||
id: "1", name: "Sarah Mitchell", handle: "CEO, Tech Innovations", testimonial: "Dr. Chen transformed my smile completely. The care and attention to detail was exceptional. I've never felt more confident!", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg", imageAlt: "Sarah Mitchell"
|
||||
},
|
||||
{
|
||||
id: "2", name: "James Rodriguez", handle: "Marketing Director", testimonial: "The entire experience was luxury from start to finish. Modern facilities, expert care, and results beyond my expectations.", imageSrc: "http://img.b2bpic.net/free-photo/real-professional-smiling-businesswoman-looking-confident-determined-face-expression-standing-suit-white-background_1258-123234.jpg", imageAlt: "James Rodriguez"},
|
||||
id: "2", name: "James Rodriguez", handle: "Marketing Director", testimonial: "The entire experience was luxury from start to finish. Modern facilities, expert care, and results beyond my expectations.", imageSrc: "http://img.b2bpic.net/free-photo/real-professional-smiling-businesswoman-looking-confident-determined-face-expression-standing-suit-white-background_1258-123234.jpg", imageAlt: "James Rodriguez"
|
||||
},
|
||||
{
|
||||
id: "3", name: "Emily Watson", handle: "Business Owner", testimonial: "Finally found a dentist who understands premium care. The comfort level and professionalism are unmatched in the city.", imageSrc: "http://img.b2bpic.net/free-photo/happy-businessman-smiling-camera_1163-4660.jpg", imageAlt: "Emily Watson"},
|
||||
id: "3", name: "Emily Watson", handle: "Business Owner", testimonial: "Finally found a dentist who understands premium care. The comfort level and professionalism are unmatched in the city.", imageSrc: "http://img.b2bpic.net/free-photo/happy-businessman-smiling-camera_1163-4660.jpg", imageAlt: "Emily Watson"
|
||||
},
|
||||
{
|
||||
id: "4", name: "David Thompson", handle: "Entrepreneur", testimonial: "My implant procedure was seamless and painless. The team made me feel completely at ease throughout the entire process.", imageSrc: "http://img.b2bpic.net/free-photo/female-patient-smiling-while-talking-doctor_107420-73983.jpg", imageAlt: "David Thompson"},
|
||||
id: "4", name: "David Thompson", handle: "Entrepreneur", testimonial: "My implant procedure was seamless and painless. The team made me feel completely at ease throughout the entire process.", imageSrc: "http://img.b2bpic.net/free-photo/female-patient-smiling-while-talking-doctor_107420-73983.jpg", imageAlt: "David Thompson"
|
||||
},
|
||||
{
|
||||
id: "5", name: "Lisa Anderson", handle: "Designer", testimonial: "The smile makeover exceeded all my dreams. Dr. Chen's expertise combined with the luxurious setting made it truly special.", imageSrc: "http://img.b2bpic.net/free-photo/casual-smile-street-style-background-spring_1139-777.jpg", imageAlt: "Lisa Anderson"},
|
||||
id: "5", name: "Lisa Anderson", handle: "Designer", testimonial: "The smile makeover exceeded all my dreams. Dr. Chen's expertise combined with the luxurious setting made it truly special.", imageSrc: "http://img.b2bpic.net/free-photo/casual-smile-street-style-background-spring_1139-777.jpg", imageAlt: "Lisa Anderson"
|
||||
},
|
||||
{
|
||||
id: "6", name: "Michael Chang", handle: "Consultant", testimonial: "Best dental investment I've made. The quality, comfort, and results speak volumes. Highly recommend to everyone!", imageSrc: "http://img.b2bpic.net/free-photo/smiling-senior-businessman-sitting-stairs_1262-3109.jpg", imageAlt: "Michael Chang"},
|
||||
id: "6", name: "Michael Chang", handle: "Consultant", testimonial: "Best dental investment I've made. The quality, comfort, and results speak volumes. Highly recommend to everyone!", imageSrc: "http://img.b2bpic.net/free-photo/smiling-senior-businessman-sitting-stairs_1262-3109.jpg", imageAlt: "Michael Chang"
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
@@ -540,8 +595,8 @@ export default function LandingPage() {
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterBase
|
||||
logoText="Dental Excellence"
|
||||
copyrightText="© 2025 Dental Excellence. All rights reserved."
|
||||
logoText="Expert Dental Care"
|
||||
copyrightText="© 2025 Expert Dental Care. All rights reserved."
|
||||
columns={[
|
||||
{
|
||||
title: "Services", items: [
|
||||
|
||||
Reference in New Issue
Block a user