Merge version_1 into main #2
@@ -22,8 +22,7 @@ export default function BookingPage() {
|
||||
|
||||
const footerColumns = [
|
||||
{
|
||||
title: "Quick Links",
|
||||
items: [
|
||||
title: "Quick Links", items: [
|
||||
{ label: "Home", href: "/" },
|
||||
{ label: "Services", href: "/services" },
|
||||
{ label: "Packages", href: "/packages" },
|
||||
@@ -31,8 +30,7 @@ export default function BookingPage() {
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Our Branches",
|
||||
items: [
|
||||
title: "Our Branches", items: [
|
||||
{ label: "Umhlanga", href: "/locations#umhlanga" },
|
||||
{ label: "Berea", href: "/locations#berea" },
|
||||
{ label: "Northgate", href: "/locations#northgate" },
|
||||
@@ -40,8 +38,7 @@ export default function BookingPage() {
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Wellness Info",
|
||||
items: [
|
||||
title: "Wellness Info", items: [
|
||||
{ label: "About Our Team", href: "#team" },
|
||||
{ label: "Health Benefits", href: "/services" },
|
||||
{ label: "Gift Vouchers", href: "/packages" },
|
||||
@@ -49,8 +46,7 @@ export default function BookingPage() {
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Resources",
|
||||
items: [
|
||||
title: "Resources", items: [
|
||||
{ label: "FAQ", href: "#faq" },
|
||||
{ label: "Contact Us", href: "#contact" },
|
||||
{ label: "Testimonials", href: "#testimonials" },
|
||||
@@ -76,9 +72,7 @@ export default function BookingPage() {
|
||||
<NavbarStyleCentered
|
||||
navItems={navItems}
|
||||
button={{
|
||||
text: "Reserve Your Escape Today",
|
||||
href: "/booking",
|
||||
}}
|
||||
text: "Reserve Your Escape Today", href: "/booking"}}
|
||||
brandName="Orchard Day Spa"
|
||||
/>
|
||||
</div>
|
||||
@@ -89,18 +83,13 @@ export default function BookingPage() {
|
||||
description="Reserve your perfect escape at Orchard Day Spa. Choose from our luxurious treatments, select your preferred location and time, and let us help you begin your wellness journey."
|
||||
buttons={[
|
||||
{
|
||||
text: "Continue Booking",
|
||||
href: "#booking-form",
|
||||
},
|
||||
text: "Continue Booking", href: "#booking-form"},
|
||||
{
|
||||
text: "View Packages",
|
||||
href: "/packages",
|
||||
},
|
||||
text: "View Packages", href: "/packages"},
|
||||
]}
|
||||
background={{
|
||||
variant: "circleGradient",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/women-having-beauty-treatment-sauna_23-2149241471.jpg?_wi=2"
|
||||
variant: "sparkles-gradient"}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/women-having-beauty-treatment-sauna_23-2149241471.jpg"
|
||||
imageAlt="Serene spa sanctuary with warm lighting"
|
||||
frameStyle="card"
|
||||
mediaAnimation="slide-up"
|
||||
@@ -114,38 +103,24 @@ export default function BookingPage() {
|
||||
description="Complete this form and our wellness team will confirm your booking within 24 hours. Let us know your preferences and any special requests."
|
||||
inputs={[
|
||||
{
|
||||
name: "fullName",
|
||||
type: "text",
|
||||
placeholder: "Your Full Name",
|
||||
required: true,
|
||||
name: "fullName", type: "text", placeholder: "Your Full Name", required: true,
|
||||
},
|
||||
{
|
||||
name: "email",
|
||||
type: "email",
|
||||
placeholder: "Your Email Address",
|
||||
required: true,
|
||||
name: "email", type: "email", placeholder: "Your Email Address", required: true,
|
||||
},
|
||||
{
|
||||
name: "phone",
|
||||
type: "tel",
|
||||
placeholder: "Phone Number",
|
||||
required: true,
|
||||
name: "phone", type: "tel", placeholder: "Phone Number", required: true,
|
||||
},
|
||||
{
|
||||
name: "location",
|
||||
type: "text",
|
||||
placeholder: "Preferred Location (Umhlanga / Berea / Northgate)",
|
||||
required: true,
|
||||
name: "location", type: "text", placeholder: "Preferred Location (Umhlanga / Berea / Northgate)", required: true,
|
||||
},
|
||||
]}
|
||||
textarea={{
|
||||
name: "message",
|
||||
placeholder: "Tell us about your treatment preferences, any health concerns, and special requests...",
|
||||
rows: 5,
|
||||
name: "message", placeholder: "Tell us about your treatment preferences, any health concerns, and special requests...", rows: 5,
|
||||
required: true,
|
||||
}}
|
||||
useInvertedBackground={false}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/i-love-u-title-lamp-near-spa-tub-with-burning-candles_23-2148003833.jpg?_wi=2"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/i-love-u-title-lamp-near-spa-tub-with-burning-candles_23-2148003833.jpg"
|
||||
imageAlt="Serene spa ambiance"
|
||||
mediaAnimation="slide-up"
|
||||
mediaPosition="right"
|
||||
|
||||
422
src/app/page.tsx
422
src/app/page.tsx
@@ -46,9 +46,7 @@ export default function HomePage() {
|
||||
brandName="Orchard Day Spa"
|
||||
navItems={navItems}
|
||||
button={{
|
||||
text: "Reserve Your Escape Today",
|
||||
href: "#contact",
|
||||
}}
|
||||
text: "Reserve Your Escape Today", href: "#contact"}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -58,16 +56,12 @@ export default function HomePage() {
|
||||
description="Step into Orchard Day Spa, where tranquillity meets expert care across three luxurious Durban locations. Discover bespoke treatments, curated wellness packages, and the serene sanctuary you deserve."
|
||||
buttons={[
|
||||
{
|
||||
text: "Reserve Your Escape Today",
|
||||
href: "#contact",
|
||||
},
|
||||
text: "Reserve Your Escape Today", href: "#contact"},
|
||||
{
|
||||
text: "Explore Our Packages",
|
||||
href: "#packages",
|
||||
},
|
||||
text: "Explore Our Packages", href: "#packages"},
|
||||
]}
|
||||
background={{ variant: "circleGradient" }}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/women-having-beauty-treatment-sauna_23-2149241471.jpg?_wi=1"
|
||||
background={{ variant: "sparkles-gradient" }}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/women-having-beauty-treatment-sauna_23-2149241471.jpg"
|
||||
imageAlt="Serene spa sanctuary with warm lighting"
|
||||
frameStyle="card"
|
||||
mediaAnimation="slide-up"
|
||||
@@ -79,37 +73,21 @@ export default function HomePage() {
|
||||
<InlineImageSplitTextAbout
|
||||
heading={[
|
||||
{
|
||||
type: "text",
|
||||
content: "Escape",
|
||||
},
|
||||
type: "text", content: "Escape"},
|
||||
{
|
||||
type: "image",
|
||||
src: "http://img.b2bpic.net/free-vector/vegetation-background-with-golden-details_79603-2107.jpg",
|
||||
alt: "Orchard leaf symbol",
|
||||
},
|
||||
type: "image", src: "http://img.b2bpic.net/free-vector/vegetation-background-with-golden-details_79603-2107.jpg", alt: "Orchard leaf symbol"},
|
||||
{
|
||||
type: "text",
|
||||
content: "Recharge",
|
||||
},
|
||||
type: "text", content: "Recharge"},
|
||||
{
|
||||
type: "image",
|
||||
src: "http://img.b2bpic.net/free-vector/mandala-background_23-2148091107.jpg",
|
||||
alt: "Wellness circle",
|
||||
},
|
||||
type: "image", src: "http://img.b2bpic.net/free-vector/mandala-background_23-2148091107.jpg", alt: "Wellness circle"},
|
||||
{
|
||||
type: "text",
|
||||
content: "Rejuvenate Your Soul",
|
||||
},
|
||||
type: "text", content: "Rejuvenate Your Soul"},
|
||||
]}
|
||||
buttons={[
|
||||
{
|
||||
text: "Discover Our Expertise",
|
||||
href: "/services",
|
||||
},
|
||||
text: "Discover Our Expertise", href: "/services"},
|
||||
{
|
||||
text: "Meet Our Team",
|
||||
href: "#team",
|
||||
},
|
||||
text: "Meet Our Team", href: "#team"},
|
||||
]}
|
||||
useInvertedBackground={false}
|
||||
buttonAnimation="slide-up"
|
||||
@@ -124,33 +102,15 @@ export default function HomePage() {
|
||||
tagIcon={Sparkles}
|
||||
features={[
|
||||
{
|
||||
title: "Swedish & Deep Tissue Massage",
|
||||
description: "Therapeutic massage techniques to release tension and promote healing.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-composition-spa-objects_23-2148099274.jpg?_wi=1",
|
||||
imageAlt: "Professional massage therapy session",
|
||||
button: {
|
||||
text: "Learn More",
|
||||
href: "/services",
|
||||
},
|
||||
title: "Swedish & Deep Tissue Massage", description: "Therapeutic massage techniques to release tension and promote healing.", imageSrc: "http://img.b2bpic.net/free-photo/top-view-composition-spa-objects_23-2148099274.jpg", imageAlt: "Professional massage therapy session", button: {
|
||||
text: "Learn More", href: "/services"},
|
||||
},
|
||||
{
|
||||
title: "Luxury Facials",
|
||||
description: "Premium facial treatments using organic, high-performance skincare lines.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-relaxing-spa_329181-18838.jpg?_wi=1",
|
||||
imageAlt: "Rejuvenating facial treatment",
|
||||
},
|
||||
title: "Luxury Facials", description: "Premium facial treatments using organic, high-performance skincare lines.", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-relaxing-spa_329181-18838.jpg", imageAlt: "Rejuvenating facial treatment"},
|
||||
{
|
||||
title: "Body Treatments",
|
||||
description: "Exfoliating scrubs and wraps to revitalise and nourish your skin.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-getting-massaged-spa_23-2149871260.jpg?_wi=1",
|
||||
imageAlt: "Luxurious body treatment",
|
||||
},
|
||||
title: "Body Treatments", description: "Exfoliating scrubs and wraps to revitalise and nourish your skin.", imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-getting-massaged-spa_23-2149871260.jpg", imageAlt: "Luxurious body treatment"},
|
||||
{
|
||||
title: "Wellness Rituals",
|
||||
description: "Holistic treatments combining aromatherapy, reflexology, and mindfulness.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/friends-speaking-spa_23-2148206210.jpg?_wi=1",
|
||||
imageAlt: "Holistic wellness experience",
|
||||
},
|
||||
title: "Wellness Rituals", description: "Holistic treatments combining aromatherapy, reflexology, and mindfulness.", imageSrc: "http://img.b2bpic.net/free-photo/friends-speaking-spa_23-2148206210.jpg", imageAlt: "Holistic wellness experience"},
|
||||
]}
|
||||
textboxLayout="default"
|
||||
gridVariant="two-columns-alternating-heights"
|
||||
@@ -172,87 +132,32 @@ export default function HomePage() {
|
||||
useInvertedBackground={false}
|
||||
plans={[
|
||||
{
|
||||
id: "sweetheart",
|
||||
tag: "Sweetheart Package",
|
||||
tagIcon: Heart,
|
||||
price: "R1,200",
|
||||
period: "per couple",
|
||||
description: "Intimate couples' experience combining massage and facial treatments.",
|
||||
button: {
|
||||
text: "Reserve Now",
|
||||
href: "#contact",
|
||||
},
|
||||
featuresTitle: "Package Includes:",
|
||||
features: [
|
||||
"60-minute couples massage",
|
||||
"30-minute facial treatment",
|
||||
"Champagne and canapés",
|
||||
"Private relaxation suite",
|
||||
"Complimentary amenities",
|
||||
],
|
||||
id: "sweetheart", tag: "Sweetheart Package", tagIcon: Heart,
|
||||
price: "R1,200", period: "per couple", description: "Intimate couples' experience combining massage and facial treatments.", button: {
|
||||
text: "Reserve Now", href: "#contact"},
|
||||
featuresTitle: "Package Includes:", features: [
|
||||
"60-minute couples massage", "30-minute facial treatment", "Champagne and canapés", "Private relaxation suite", "Complimentary amenities"],
|
||||
},
|
||||
{
|
||||
id: "rejuvenation",
|
||||
tag: "Rejuvenation Retreat",
|
||||
tagIcon: Sparkles,
|
||||
price: "R2,500",
|
||||
period: "per person",
|
||||
description: "Complete day retreat for ultimate stress relief and skin renewal.",
|
||||
button: {
|
||||
text: "Reserve Now",
|
||||
href: "#contact",
|
||||
},
|
||||
featuresTitle: "Package Includes:",
|
||||
features: [
|
||||
"90-minute therapeutic massage",
|
||||
"60-minute luxury facial",
|
||||
"Body exfoliation treatment",
|
||||
"Light wellness lunch",
|
||||
"Aromatherapy consultation",
|
||||
"Wellness journal gift",
|
||||
],
|
||||
id: "rejuvenation", tag: "Rejuvenation Retreat", tagIcon: Sparkles,
|
||||
price: "R2,500", period: "per person", description: "Complete day retreat for ultimate stress relief and skin renewal.", button: {
|
||||
text: "Reserve Now", href: "#contact"},
|
||||
featuresTitle: "Package Includes:", features: [
|
||||
"90-minute therapeutic massage", "60-minute luxury facial", "Body exfoliation treatment", "Light wellness lunch", "Aromatherapy consultation", "Wellness journal gift"],
|
||||
},
|
||||
{
|
||||
id: "family-experience",
|
||||
tag: "Tots & Teens Experience",
|
||||
tagIcon: Users,
|
||||
price: "R1,800",
|
||||
period: "per family",
|
||||
description: "Family-inclusive wellness designed for parents and children aged 8+.",
|
||||
button: {
|
||||
text: "Reserve Now",
|
||||
href: "#contact",
|
||||
},
|
||||
featuresTitle: "Package Includes:",
|
||||
features: [
|
||||
"Family relaxation area access",
|
||||
"Age-appropriate massage (30 min kids)",
|
||||
"Parent wellness treatment (60 min)",
|
||||
"Healthy refreshments",
|
||||
"Family wellness guide",
|
||||
],
|
||||
id: "family-experience", tag: "Tots & Teens Experience", tagIcon: Users,
|
||||
price: "R1,800", period: "per family", description: "Family-inclusive wellness designed for parents and children aged 8+.", button: {
|
||||
text: "Reserve Now", href: "#contact"},
|
||||
featuresTitle: "Package Includes:", features: [
|
||||
"Family relaxation area access", "Age-appropriate massage (30 min kids)", "Parent wellness treatment (60 min)", "Healthy refreshments", "Family wellness guide"],
|
||||
},
|
||||
{
|
||||
id: "premium-elite",
|
||||
tag: "Premium Elite Collection",
|
||||
tagIcon: Crown,
|
||||
price: "R4,200",
|
||||
period: "per person",
|
||||
description: "Our most exclusive all-inclusive wellness experience with personalised consultation.",
|
||||
button: {
|
||||
text: "Reserve Now",
|
||||
href: "#contact",
|
||||
},
|
||||
featuresTitle: "Package Includes:",
|
||||
features: [
|
||||
"120-minute bespoke treatment",
|
||||
"Personalised wellness consultation",
|
||||
"Private spa suite access",
|
||||
"Gourmet wellness menu",
|
||||
"Dedicated spa concierge",
|
||||
"Exclusive product samples",
|
||||
"VIP membership discount",
|
||||
],
|
||||
id: "premium-elite", tag: "Premium Elite Collection", tagIcon: Crown,
|
||||
price: "R4,200", period: "per person", description: "Our most exclusive all-inclusive wellness experience with personalised consultation.", button: {
|
||||
text: "Reserve Now", href: "#contact"},
|
||||
featuresTitle: "Package Includes:", features: [
|
||||
"120-minute bespoke treatment", "Personalised wellness consultation", "Private spa suite access", "Gourmet wellness menu", "Dedicated spa concierge", "Exclusive product samples", "VIP membership discount"],
|
||||
},
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
@@ -269,59 +174,17 @@ export default function HomePage() {
|
||||
useInvertedBackground={false}
|
||||
testimonials={[
|
||||
{
|
||||
id: "1",
|
||||
title: "A sanctuary from the hustle",
|
||||
quote: "Orchard Day Spa is my escape from the demands of professional life. The therapists understand exactly what my stressed muscles need, and I always leave feeling completely restored.",
|
||||
name: "Sarah Johnson",
|
||||
role: "CEO, Marketing Director",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-confident-businesswoman-suit-cross-arms-chest-looking-like-real-professional-smili_1258-122403.jpg?_wi=1",
|
||||
imageAlt: "Sarah Johnson",
|
||||
},
|
||||
id: "1", title: "A sanctuary from the hustle", quote: "Orchard Day Spa is my escape from the demands of professional life. The therapists understand exactly what my stressed muscles need, and I always leave feeling completely restored.", name: "Sarah Johnson", role: "CEO, Marketing Director", imageSrc: "http://img.b2bpic.net/free-photo/portrait-confident-businesswoman-suit-cross-arms-chest-looking-like-real-professional-smili_1258-122403.jpg", imageAlt: "Sarah Johnson"},
|
||||
{
|
||||
id: "2",
|
||||
title: "Exceptional couples experience",
|
||||
quote: "Our anniversary at Orchard was unforgettable. The attention to detail, the serene setting, and the expert touch made it truly special. We're already planning our next visit.",
|
||||
name: "Michael & Emma Thompson",
|
||||
role: "Entrepreneurs",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elegant-couple-sitting-near-swimmingpool_1157-20204.jpg?_wi=1",
|
||||
imageAlt: "Michael and Emma Thompson",
|
||||
},
|
||||
id: "2", title: "Exceptional couples experience", quote: "Our anniversary at Orchard was unforgettable. The attention to detail, the serene setting, and the expert touch made it truly special. We're already planning our next visit.", name: "Michael & Emma Thompson", role: "Entrepreneurs", imageSrc: "http://img.b2bpic.net/free-photo/elegant-couple-sitting-near-swimmingpool_1157-20204.jpg", imageAlt: "Michael and Emma Thompson"},
|
||||
{
|
||||
id: "3",
|
||||
title: "Best facial I've ever had",
|
||||
quote: "The luxury facial treatment was transformative for my skin. The therapist took time to understand my skin type and concerns, and the results have been incredible.",
|
||||
name: "Amelia Rodriguez",
|
||||
role: "Beauty and Wellness Influencer",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-having-video-call-her-phone_23-2148990156.jpg?_wi=1",
|
||||
imageAlt: "Amelia Rodriguez",
|
||||
},
|
||||
id: "3", title: "Best facial I've ever had", quote: "The luxury facial treatment was transformative for my skin. The therapist took time to understand my skin type and concerns, and the results have been incredible.", name: "Amelia Rodriguez", role: "Beauty and Wellness Influencer", imageSrc: "http://img.b2bpic.net/free-photo/woman-having-video-call-her-phone_23-2148990156.jpg", imageAlt: "Amelia Rodriguez"},
|
||||
{
|
||||
id: "4",
|
||||
title: "Family wellness made easy",
|
||||
quote: "As a busy parent, finding a spa that welcomes my teenage children was a game-changer. Orchard made our family wellness day stress-free and deeply rejuvenating.",
|
||||
name: "David Chen",
|
||||
role: "Family Man & Wellness Advocate",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-angry-expression_1194-1680.jpg?_wi=1",
|
||||
imageAlt: "David Chen",
|
||||
},
|
||||
id: "4", title: "Family wellness made easy", quote: "As a busy parent, finding a spa that welcomes my teenage children was a game-changer. Orchard made our family wellness day stress-free and deeply rejuvenating.", name: "David Chen", role: "Family Man & Wellness Advocate", imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-angry-expression_1194-1680.jpg", imageAlt: "David Chen"},
|
||||
{
|
||||
id: "5",
|
||||
title: "Pure luxury at every touch",
|
||||
quote: "From the moment I entered, I felt truly valued. The personalised premium experience justified every rand spent. Orchard sets a new standard for luxury spa services.",
|
||||
name: "Priya Patel",
|
||||
role: "Luxury Travel Consultant",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-smiling-adult-woman-leaning-wall_1262-1759.jpg?_wi=1",
|
||||
imageAlt: "Priya Patel",
|
||||
},
|
||||
id: "5", title: "Pure luxury at every touch", quote: "From the moment I entered, I felt truly valued. The personalised premium experience justified every rand spent. Orchard sets a new standard for luxury spa services.", name: "Priya Patel", role: "Luxury Travel Consultant", imageSrc: "http://img.b2bpic.net/free-photo/closeup-smiling-adult-woman-leaning-wall_1262-1759.jpg", imageAlt: "Priya Patel"},
|
||||
{
|
||||
id: "6",
|
||||
title: "Professional expertise you can trust",
|
||||
quote: "The credentials of the therapists and the quality of products used give me complete confidence. This is not a typical spa—it's a wellness destination.",
|
||||
name: "James Williams",
|
||||
role: "Healthcare Professional",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-nurse-wearing-stethoscope_23-2149741227.jpg?_wi=1",
|
||||
imageAlt: "James Williams",
|
||||
},
|
||||
id: "6", title: "Professional expertise you can trust", quote: "The credentials of the therapists and the quality of products used give me complete confidence. This is not a typical spa—it's a wellness destination.", name: "James Williams", role: "Healthcare Professional", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-nurse-wearing-stethoscope_23-2149741227.jpg", imageAlt: "James Williams"},
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
/>
|
||||
@@ -338,37 +201,16 @@ export default function HomePage() {
|
||||
useInvertedBackground={false}
|
||||
metrics={[
|
||||
{
|
||||
id: "umhlanga",
|
||||
value: "Umhlanga",
|
||||
title: "Beachfront Luxury Branch",
|
||||
items: [
|
||||
"Ocean-view treatment suites",
|
||||
"Boutique retail products",
|
||||
"Full facilities and amenities",
|
||||
"Premium parking available",
|
||||
],
|
||||
id: "umhlanga", value: "Umhlanga", title: "Beachfront Luxury Branch", items: [
|
||||
"Ocean-view treatment suites", "Boutique retail products", "Full facilities and amenities", "Premium parking available"],
|
||||
},
|
||||
{
|
||||
id: "berea",
|
||||
value: "Berea",
|
||||
title: "Urban Wellness Hub",
|
||||
items: [
|
||||
"Contemporary design aesthetic",
|
||||
"Central Durban location",
|
||||
"Extended service menu",
|
||||
"Corporate packages available",
|
||||
],
|
||||
id: "berea", value: "Berea", title: "Urban Wellness Hub", items: [
|
||||
"Contemporary design aesthetic", "Central Durban location", "Extended service menu", "Corporate packages available"],
|
||||
},
|
||||
{
|
||||
id: "northgate",
|
||||
value: "Northgate",
|
||||
title: "Neighbourhood Sanctuary",
|
||||
items: [
|
||||
"Warm, intimate setting",
|
||||
"Specialised treatments",
|
||||
"Family-friendly hours",
|
||||
"Easy accessibility",
|
||||
],
|
||||
id: "northgate", value: "Northgate", title: "Neighbourhood Sanctuary", items: [
|
||||
"Warm, intimate setting", "Specialised treatments", "Family-friendly hours", "Easy accessibility"],
|
||||
},
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
@@ -381,29 +223,13 @@ export default function HomePage() {
|
||||
tag="Expert Team"
|
||||
members={[
|
||||
{
|
||||
id: "1",
|
||||
name: "Therapist Lindy Mbatha",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-beautiful-girl-relaxing-spa-salon_176420-14869.jpg?_wi=1",
|
||||
imageAlt: "Lindy Mbatha, Lead Therapist",
|
||||
},
|
||||
id: "1", name: "Therapist Lindy Mbatha", imageSrc: "http://img.b2bpic.net/free-photo/young-beautiful-girl-relaxing-spa-salon_176420-14869.jpg", imageAlt: "Lindy Mbatha, Lead Therapist"},
|
||||
{
|
||||
id: "2",
|
||||
name: "Facial Specialist Natasha Goveia",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/doctor-clinic-interior_1398-732.jpg?_wi=1",
|
||||
imageAlt: "Natasha Goveia, Facial Specialist",
|
||||
},
|
||||
id: "2", name: "Facial Specialist Natasha Goveia", imageSrc: "http://img.b2bpic.net/free-photo/doctor-clinic-interior_1398-732.jpg", imageAlt: "Natasha Goveia, Facial Specialist"},
|
||||
{
|
||||
id: "3",
|
||||
name: "Wellness Director Dr. Amandla Dlamini",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-nurse-with-stethoscope_23-2149308237.jpg?_wi=1",
|
||||
imageAlt: "Dr. Amandla Dlamini, Wellness Director",
|
||||
},
|
||||
id: "3", name: "Wellness Director Dr. Amandla Dlamini", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-nurse-with-stethoscope_23-2149308237.jpg", imageAlt: "Dr. Amandla Dlamini, Wellness Director"},
|
||||
{
|
||||
id: "4",
|
||||
name: "Body Therapist Jasmine Patel",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-smiley-woman-sitting-chair_23-2149927604.jpg?_wi=1",
|
||||
imageAlt: "Jasmine Patel, Body Therapist",
|
||||
},
|
||||
id: "4", name: "Body Therapist Jasmine Patel", imageSrc: "http://img.b2bpic.net/free-photo/front-view-smiley-woman-sitting-chair_23-2149927604.jpg", imageAlt: "Jasmine Patel, Body Therapist"},
|
||||
]}
|
||||
memberVariant="default"
|
||||
useInvertedBackground={false}
|
||||
@@ -423,45 +249,21 @@ export default function HomePage() {
|
||||
animationType="smooth"
|
||||
faqs={[
|
||||
{
|
||||
id: "1",
|
||||
title: "How do I book a treatment at Orchard Day Spa?",
|
||||
content: "You can book online through our website by selecting your preferred location, treatment, and time. Alternatively, call any of our branches directly. We recommend booking at least 48 hours in advance to secure your preferred slot.",
|
||||
},
|
||||
id: "1", title: "How do I book a treatment at Orchard Day Spa?", content: "You can book online through our website by selecting your preferred location, treatment, and time. Alternatively, call any of our branches directly. We recommend booking at least 48 hours in advance to secure your preferred slot."},
|
||||
{
|
||||
id: "2",
|
||||
title: "What is your cancellation policy?",
|
||||
content: "Cancellations made 24 hours before your appointment receive a full refund. Cancellations within 24 hours incur a 50% charge. No-shows are charged in full. We recommend confirming your appointment the day before.",
|
||||
},
|
||||
id: "2", title: "What is your cancellation policy?", content: "Cancellations made 24 hours before your appointment receive a full refund. Cancellations within 24 hours incur a 50% charge. No-shows are charged in full. We recommend confirming your appointment the day before."},
|
||||
{
|
||||
id: "3",
|
||||
title: "Are your products natural and organic?",
|
||||
content: "Yes, we exclusively use premium, dermatologically-tested skincare lines featuring natural and organic ingredients. All products are cruelty-free and sustainably sourced. Our team can provide detailed product information during your consultation.",
|
||||
},
|
||||
id: "3", title: "Are your products natural and organic?", content: "Yes, we exclusively use premium, dermatologically-tested skincare lines featuring natural and organic ingredients. All products are cruelty-free and sustainably sourced. Our team can provide detailed product information during your consultation."},
|
||||
{
|
||||
id: "4",
|
||||
title: "Do you offer packages for corporate groups?",
|
||||
content: "Absolutely! We offer customised corporate wellness packages for team building and stress relief. Contact our corporate concierge to discuss group rates, flexible scheduling, and tailored treatment menus.",
|
||||
},
|
||||
id: "4", title: "Do you offer packages for corporate groups?", content: "Absolutely! We offer customised corporate wellness packages for team building and stress relief. Contact our corporate concierge to discuss group rates, flexible scheduling, and tailored treatment menus."},
|
||||
{
|
||||
id: "5",
|
||||
title: "Are there any age restrictions for treatments?",
|
||||
content: "Most treatments are suitable for adults. Our Tots & Teens Experience welcomes children aged 8+. Pregnant clients should inform therapists in advance, and we offer specialised prenatal massage options.",
|
||||
},
|
||||
id: "5", title: "Are there any age restrictions for treatments?", content: "Most treatments are suitable for adults. Our Tots & Teens Experience welcomes children aged 8+. Pregnant clients should inform therapists in advance, and we offer specialised prenatal massage options."},
|
||||
{
|
||||
id: "6",
|
||||
title: "What should I bring to my appointment?",
|
||||
content: "Arrive 10–15 minutes early to complete our wellness intake form. Bring your ID and any relevant health information. We provide robes, slippers, and lockers—just bring yourself ready to relax!",
|
||||
},
|
||||
id: "6", title: "What should I bring to my appointment?", content: "Arrive 10–15 minutes early to complete our wellness intake form. Bring your ID and any relevant health information. We provide robes, slippers, and lockers—just bring yourself ready to relax!"},
|
||||
{
|
||||
id: "7",
|
||||
title: "Do you offer gift vouchers?",
|
||||
content: "Yes! Gift vouchers are available for any treatment or package value. They make perfect presents for birthdays, anniversaries, or corporate recognition. Purchase online or at any of our locations.",
|
||||
},
|
||||
id: "7", title: "Do you offer gift vouchers?", content: "Yes! Gift vouchers are available for any treatment or package value. They make perfect presents for birthdays, anniversaries, or corporate recognition. Purchase online or at any of our locations."},
|
||||
{
|
||||
id: "8",
|
||||
title: "What are your operating hours?",
|
||||
content: "Our locations operate Monday–Friday 9 AM–7 PM, Saturday 9 AM–6 PM, and Sunday 10 AM–5 PM. Some extended hours available by appointment. Check with your preferred location for specific details.",
|
||||
},
|
||||
id: "8", title: "What are your operating hours?", content: "Our locations operate Monday–Friday 9 AM–7 PM, Saturday 9 AM–6 PM, and Sunday 10 AM–5 PM. Some extended hours available by appointment. Check with your preferred location for specific details."},
|
||||
]}
|
||||
showCard={true}
|
||||
/>
|
||||
@@ -473,38 +275,24 @@ export default function HomePage() {
|
||||
description="Have questions or ready to book? Reach out to our wellness team. We're here to help you plan your perfect escape."
|
||||
inputs={[
|
||||
{
|
||||
name: "fullName",
|
||||
type: "text",
|
||||
placeholder: "Your Full Name",
|
||||
required: true,
|
||||
name: "fullName", type: "text", placeholder: "Your Full Name", required: true,
|
||||
},
|
||||
{
|
||||
name: "email",
|
||||
type: "email",
|
||||
placeholder: "Your Email Address",
|
||||
required: true,
|
||||
name: "email", type: "email", placeholder: "Your Email Address", required: true,
|
||||
},
|
||||
{
|
||||
name: "phone",
|
||||
type: "tel",
|
||||
placeholder: "Phone Number",
|
||||
required: true,
|
||||
name: "phone", type: "tel", placeholder: "Phone Number", required: true,
|
||||
},
|
||||
{
|
||||
name: "location",
|
||||
type: "text",
|
||||
placeholder: "Preferred Location",
|
||||
required: false,
|
||||
name: "location", type: "text", placeholder: "Preferred Location", required: false,
|
||||
},
|
||||
]}
|
||||
textarea={{
|
||||
name: "message",
|
||||
placeholder: "Tell us about your wellness goals or ask us anything...",
|
||||
rows: 5,
|
||||
name: "message", placeholder: "Tell us about your wellness goals or ask us anything...", rows: 5,
|
||||
required: true,
|
||||
}}
|
||||
useInvertedBackground={false}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/i-love-u-title-lamp-near-spa-tub-with-burning-candles_23-2148003833.jpg?_wi=1"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/i-love-u-title-lamp-near-spa-tub-with-burning-candles_23-2148003833.jpg"
|
||||
imageAlt="Serene spa ambiance"
|
||||
mediaAnimation="slide-up"
|
||||
mediaPosition="right"
|
||||
@@ -518,87 +306,51 @@ export default function HomePage() {
|
||||
logoText="Orchard"
|
||||
columns={[
|
||||
{
|
||||
title: "Quick Links",
|
||||
items: [
|
||||
title: "Quick Links", items: [
|
||||
{
|
||||
label: "Home",
|
||||
href: "/",
|
||||
},
|
||||
label: "Home", href: "/"},
|
||||
{
|
||||
label: "Services",
|
||||
href: "/services",
|
||||
},
|
||||
label: "Services", href: "/services"},
|
||||
{
|
||||
label: "Packages",
|
||||
href: "#packages",
|
||||
},
|
||||
label: "Packages", href: "#packages"},
|
||||
{
|
||||
label: "Locations",
|
||||
href: "#locations",
|
||||
},
|
||||
label: "Locations", href: "#locations"},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Our Branches",
|
||||
items: [
|
||||
title: "Our Branches", items: [
|
||||
{
|
||||
label: "Umhlanga",
|
||||
href: "#umhlanga",
|
||||
},
|
||||
label: "Umhlanga", href: "#umhlanga"},
|
||||
{
|
||||
label: "Berea",
|
||||
href: "#berea",
|
||||
},
|
||||
label: "Berea", href: "#berea"},
|
||||
{
|
||||
label: "Northgate",
|
||||
href: "#northgate",
|
||||
},
|
||||
label: "Northgate", href: "#northgate"},
|
||||
{
|
||||
label: "Book Now",
|
||||
href: "#contact",
|
||||
},
|
||||
label: "Book Now", href: "#contact"},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Wellness Info",
|
||||
items: [
|
||||
title: "Wellness Info", items: [
|
||||
{
|
||||
label: "About Our Team",
|
||||
href: "#team",
|
||||
},
|
||||
label: "About Our Team", href: "#team"},
|
||||
{
|
||||
label: "Health Benefits",
|
||||
href: "/services",
|
||||
},
|
||||
label: "Health Benefits", href: "/services"},
|
||||
{
|
||||
label: "Gift Vouchers",
|
||||
href: "#packages",
|
||||
},
|
||||
label: "Gift Vouchers", href: "#packages"},
|
||||
{
|
||||
label: "Corporate Wellness",
|
||||
href: "#contact",
|
||||
},
|
||||
label: "Corporate Wellness", href: "#contact"},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Resources",
|
||||
items: [
|
||||
title: "Resources", items: [
|
||||
{
|
||||
label: "FAQ",
|
||||
href: "#faq",
|
||||
},
|
||||
label: "FAQ", href: "#faq"},
|
||||
{
|
||||
label: "Contact Us",
|
||||
href: "#contact",
|
||||
},
|
||||
label: "Contact Us", href: "#contact"},
|
||||
{
|
||||
label: "Testimonials",
|
||||
href: "#testimonials",
|
||||
},
|
||||
label: "Testimonials", href: "#testimonials"},
|
||||
{
|
||||
label: "Privacy Policy",
|
||||
href: "/privacy",
|
||||
},
|
||||
label: "Privacy Policy", href: "/privacy"},
|
||||
],
|
||||
},
|
||||
]}
|
||||
|
||||
@@ -1,51 +1,33 @@
|
||||
"use client";
|
||||
|
||||
import { memo } from "react";
|
||||
import useSvgTextLogo from "./useSvgTextLogo";
|
||||
import { cls } from "@/lib/utils";
|
||||
import React from "react";
|
||||
|
||||
interface SvgTextLogoProps {
|
||||
logoText: string;
|
||||
adjustHeightFactor?: number;
|
||||
verticalAlign?: "top" | "center";
|
||||
text: string;
|
||||
fontSize?: number;
|
||||
fontFamily?: string;
|
||||
fill?: string;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
const SvgTextLogo = memo<SvgTextLogoProps>(function SvgTextLogo({
|
||||
logoText,
|
||||
adjustHeightFactor,
|
||||
verticalAlign = "top",
|
||||
className = "",
|
||||
}) {
|
||||
const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor);
|
||||
|
||||
export const SvgTextLogo: React.FC<SvgTextLogoProps> = ({
|
||||
text,
|
||||
fontSize = 48,
|
||||
fontFamily = "sans-serif", fill = "currentColor", className = ""}) => {
|
||||
return (
|
||||
<svg
|
||||
ref={svgRef}
|
||||
viewBox={viewBox}
|
||||
className={cls("w-full", className)}
|
||||
style={{ aspectRatio: aspectRatio }}
|
||||
preserveAspectRatio="none"
|
||||
role="img"
|
||||
aria-label={`${logoText} logo`}
|
||||
viewBox={`0 0 ${text.length * fontSize * 0.6} ${fontSize * 1.2}`}
|
||||
className={className}
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<text
|
||||
ref={textRef}
|
||||
x="0"
|
||||
y={verticalAlign === "center" ? "50%" : "0"}
|
||||
className="font-bold fill-current"
|
||||
style={{
|
||||
fontSize: "20px",
|
||||
letterSpacing: "-0.02em",
|
||||
dominantBaseline: verticalAlign === "center" ? "middle" : "text-before-edge"
|
||||
}}
|
||||
y={fontSize}
|
||||
fontSize={fontSize}
|
||||
fontFamily={fontFamily}
|
||||
fill={fill}
|
||||
dominantBaseline="auto"
|
||||
>
|
||||
{logoText}
|
||||
{text}
|
||||
</text>
|
||||
</svg>
|
||||
);
|
||||
});
|
||||
|
||||
SvgTextLogo.displayName = "SvgTextLogo";
|
||||
|
||||
export default SvgTextLogo;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user