Merge version_2 into main #4
@@ -1,59 +1,27 @@
|
||||
import type { Metadata } from "next";
|
||||
import { Halant } from "next/font/google";
|
||||
import { Inter } from "next/font/google";
|
||||
import { Source_Sans_3 } from "next/font/google";
|
||||
import localFont from "next/font/local";
|
||||
import "./globals.css";
|
||||
import { ServiceWrapper } from "@/components/ServiceWrapper";
|
||||
import Tag from "@/tag/Tag";
|
||||
import "./styles/variables.css";
|
||||
import "./styles/base.css";
|
||||
|
||||
const halant = Halant({
|
||||
variable: "--font-halant", subsets: ["latin"],
|
||||
weight: ["300", "400", "500", "600", "700"],
|
||||
});
|
||||
|
||||
const inter = Inter({
|
||||
variable: "--font-inter", subsets: ["latin"],
|
||||
});
|
||||
|
||||
const sourceSans3 = Source_Sans_3({
|
||||
variable: "--font-source-sans-3", subsets: ["latin"],
|
||||
});
|
||||
const geistSans = localFont({
|
||||
src: "./fonts/GeistVF.woff2", variable: "--font-geist-sans", weight: "100 900"});
|
||||
const geistMono = localFont({
|
||||
src: "./fonts/GeistMonoVF.woff2", variable: "--font-geist-mono", weight: "100 900"});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Luxe Spa | Premium Wellness Experience", description: "Experience luxury redefined. Book seamless spa services with zero friction. Exclusive wellness treatments curated for affluent professionals seeking premium self-care.", keywords: "luxury spa, premium wellness, booking, facial, massage therapy, spa services, wellness retreat", metadataBase: new URL("https://luxespa.com"),
|
||||
alternates: {
|
||||
canonical: "https://luxespa.com"
|
||||
},
|
||||
openGraph: {
|
||||
title: "Luxe Spa | Luxury Redefined Effortlessly", description: "Experience premium service with zero friction. Instant booking, curated exclusively for you.", url: "https://luxespa.com", siteName: "Luxe Spa", type: "website", images: [
|
||||
{
|
||||
url: "http://img.b2bpic.net/free-photo/spa-concept-with-woman-with-creme-face_23-2147817010.jpg", alt: "Luxury spa experience"
|
||||
}
|
||||
]
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image", title: "Luxe Spa | Premium Wellness", description: "Luxury redefined. Book your spa experience instantly.", images: ["http://img.b2bpic.net/free-photo/candle-roses-cozy-interior-with-wide-space-calm-branding_169016-71507.jpg"]
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true
|
||||
}
|
||||
};
|
||||
title: "Luxe Spa - Premium Luxury & Wellness", description: "Experience premium service with zero friction. Instant booking, curated exclusively for you. Seamless elegance in every interaction."};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
}) {
|
||||
return (
|
||||
<html lang="en" suppressHydrationWarning>
|
||||
<ServiceWrapper>
|
||||
<body
|
||||
className={`${halant.variable} ${inter.variable} ${sourceSans3.variable} antialiased`}
|
||||
>
|
||||
<Tag />
|
||||
{children}
|
||||
|
||||
<html lang="en">
|
||||
<body className={`${geistSans.variable} ${geistMono.variable}`}>
|
||||
{children}
|
||||
|
||||
<script
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: `
|
||||
@@ -1421,7 +1389,6 @@ export default function RootLayout({
|
||||
}}
|
||||
/>
|
||||
</body>
|
||||
</ServiceWrapper>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -8,10 +8,15 @@ import FeatureCardMedia from '@/components/sections/feature/FeatureCardMedia';
|
||||
import TestimonialCardOne from '@/components/sections/testimonial/TestimonialCardOne';
|
||||
import ContactFaq from '@/components/sections/contact/ContactFaq';
|
||||
import TeamCardFive from '@/components/sections/team/TeamCardFive';
|
||||
import FooterCard from '@/components/sections/footer/FooterCard';
|
||||
import { Sparkles, Crown, Zap, Heart, Calendar, Users, Instagram, Linkedin, Mail } from 'lucide-react';
|
||||
import FooterBase from '@/components/sections/footer/FooterBase';
|
||||
import { Sparkles, Crown, Zap, Heart, Calendar, Users, Instagram, Linkedin, Mail, Phone, MessageCircle } from 'lucide-react';
|
||||
import { useCallback } from 'react';
|
||||
|
||||
export default function LandingPage() {
|
||||
const handleBooking = useCallback(() => {
|
||||
window.open('https://calendly.com/app/availability/schedules', '_blank');
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="expand-hover"
|
||||
@@ -29,14 +34,14 @@ export default function LandingPage() {
|
||||
<NavbarStyleCentered
|
||||
brandName="Luxe Spa"
|
||||
navItems={[
|
||||
{ name: "Home", id: "home" },
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "About", id: "about" },
|
||||
{ name: "Services", id: "services" },
|
||||
{ name: "Team", id: "team" },
|
||||
{ name: "Testimonials", id: "testimonials" }
|
||||
]}
|
||||
button={{
|
||||
text: "Book Your Experience", href: "booking"
|
||||
text: "Book Your Experience", onClick: handleBooking
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
@@ -62,11 +67,11 @@ export default function LandingPage() {
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/senior-couple-relaxing-with-spa-treatment_53876-15222.jpg?_wi=1", imageAlt: "Professional services" }
|
||||
]}
|
||||
buttons={[
|
||||
{ text: "Book Your Experience", href: "booking" },
|
||||
{ text: "Book Your Experience", onClick: handleBooking },
|
||||
{ text: "Learn More", href: "about" }
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
ariaLabel="Hero section - Luxury Spa SPA"
|
||||
ariaLabel="Hero section - Luxury Spa"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -78,8 +83,8 @@ export default function LandingPage() {
|
||||
title="Curated Exclusively for the Discerning. Where Luxury Meets Wellness."
|
||||
useInvertedBackground={false}
|
||||
buttons={[
|
||||
{ text: "Explore Our Philosophy", href: "#services" },
|
||||
{ text: "Book a Consultation", href: "booking" }
|
||||
{ text: "Explore Our Philosophy", href: "services" },
|
||||
{ text: "Book a Consultation", onClick: handleBooking }
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
@@ -96,13 +101,13 @@ export default function LandingPage() {
|
||||
animationType="slide-up"
|
||||
features={[
|
||||
{
|
||||
id: "1", title: "Signature Facial Treatment", description: "Indulge in our signature facial featuring premium Swiss skincare with personalized serums and multi-step rejuvenation protocol.", tag: "90 Minutes", imageSrc: "http://img.b2bpic.net/free-photo/spa-concept-with-woman-with-creme-face_23-2147817003.jpg", buttons: [{ text: "Book Now", href: "booking" }]
|
||||
id: "1", title: "Signature Facial Treatment", description: "Indulge in our signature facial featuring premium Swiss skincare with personalized serums and multi-step rejuvenation protocol.", tag: "90 Minutes", imageSrc: "http://img.b2bpic.net/free-photo/spa-concept-with-woman-with-creme-face_23-2147817003.jpg", buttons: [{ text: "Book Now", onClick: handleBooking }]
|
||||
},
|
||||
{
|
||||
id: "2", title: "Holistic Massage Therapy", description: "Experience therapeutic massage blending ancient techniques with modern wellness science. Available in Swedish, deep tissue, and hot stone options.", tag: "60-120 Minutes", imageSrc: "http://img.b2bpic.net/free-photo/woman-relaxing-massage-bed-with-hot-stones-her-back_23-2147939928.jpg?_wi=2", buttons: [{ text: "Book Now", href: "booking" }]
|
||||
id: "2", title: "Holistic Massage Therapy", description: "Experience therapeutic massage blending ancient techniques with modern wellness science. Available in Swedish, deep tissue, and hot stone options.", tag: "60-120 Minutes", imageSrc: "http://img.b2bpic.net/free-photo/woman-relaxing-massage-bed-with-hot-stones-her-back_23-2147939928.jpg?_wi=2", buttons: [{ text: "Book Now", onClick: handleBooking }]
|
||||
},
|
||||
{
|
||||
id: "3", title: "Bespoke Wellness Retreat", description: "Tailored multi-service packages combining facials, massages, and meditative experiences designed to your precise wellness goals.", tag: "Half or Full Day", imageSrc: "http://img.b2bpic.net/free-photo/senior-couple-relaxing-with-spa-treatment_53876-15222.jpg?_wi=2", buttons: [{ text: "Book Now", href: "booking" }]
|
||||
id: "3", title: "Bespoke Wellness Retreat", description: "Tailored multi-service packages combining facials, massages, and meditative experiences designed to your precise wellness goals.", tag: "Half or Full Day", imageSrc: "http://img.b2bpic.net/free-photo/senior-couple-relaxing-with-spa-treatment_53876-15222.jpg?_wi=2", buttons: [{ text: "Book Now", onClick: handleBooking }]
|
||||
}
|
||||
]}
|
||||
/>
|
||||
@@ -166,7 +171,7 @@ export default function LandingPage() {
|
||||
]}
|
||||
ctaTitle="Book Your Luxe Experience"
|
||||
ctaDescription="Reserve your personalized appointment with our wellness experts. Instant calendar access, zero wait times."
|
||||
ctaButton={{ text: "Open Calendly Booking", href: "booking" }}
|
||||
ctaButton={{ text: "Open Calendly Booking", onClick: handleBooking }}
|
||||
ctaIcon={Calendar}
|
||||
useInvertedBackground={false}
|
||||
animationType="slide-up"
|
||||
@@ -208,14 +213,34 @@ export default function LandingPage() {
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterCard
|
||||
<FooterBase
|
||||
logoText="Luxe Spa"
|
||||
copyrightText="© 2025 Luxe Spa | Curated Luxury & Wellness"
|
||||
socialLinks={[
|
||||
{ icon: Instagram, href: "https://instagram.com/luxespa", ariaLabel: "Instagram" },
|
||||
{ icon: Linkedin, href: "https://linkedin.com/company/luxespa", ariaLabel: "LinkedIn" },
|
||||
{ icon: Mail, href: "mailto:hello@luxespa.com", ariaLabel: "Email" }
|
||||
columns={[
|
||||
{
|
||||
title: "Company", items: [
|
||||
{ label: "About", href: "about" },
|
||||
{ label: "Services", href: "services" },
|
||||
{ label: "Team", href: "team" },
|
||||
{ label: "Testimonials", href: "testimonials" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Contact", items: [
|
||||
{ label: "Book an Appointment", href: "https://calendly.com/app/availability/schedules" },
|
||||
{ label: "Email: hello@luxespa.com", href: "mailto:hello@luxespa.com" },
|
||||
{ label: "Phone: +1 (555) 123-4567", href: "tel:+15551234567" }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Follow Us", items: [
|
||||
{ label: "Instagram", href: "https://instagram.com/luxespa" },
|
||||
{ label: "LinkedIn", href: "https://linkedin.com/company/luxespa" },
|
||||
{ label: "Facebook", href: "https://facebook.com/luxespa" }
|
||||
]
|
||||
}
|
||||
]}
|
||||
onPrivacyClick={() => window.open('https://example.com/privacy', '_blank')}
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
|
||||
Reference in New Issue
Block a user