Merge version_2_1781370156952 into main #1
@@ -1,5 +1,5 @@
|
||||
import FooterSimpleCard from '@/components/sections/footer/FooterSimpleCard';
|
||||
import NavbarFloating from '@/components/ui/NavbarFloating';
|
||||
import NavbarFullscreen from '@/components/ui/NavbarFullscreen';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
import SiteBackgroundSlot from "@/components/ui/SiteBackgroundSlot";
|
||||
import { Outlet } from 'react-router-dom';
|
||||
@@ -41,7 +41,7 @@ export default function Layout() {
|
||||
<StyleProvider buttonVariant="bounce" siteBackground="floatingGradient" heroBackground="gradientBars">
|
||||
<SiteBackgroundSlot />
|
||||
<SectionErrorBoundary name="navbar">
|
||||
<NavbarFloating
|
||||
<NavbarFullscreen
|
||||
logo="Anand Family Salon"
|
||||
ctaButton={{
|
||||
text: "Book Now",
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Playfair:wght@400;500;600;700&display=swap');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600;700&family=DM+Sans:wght@400;500;700&display=swap');
|
||||
@import "tailwindcss";
|
||||
@import "./styles/masks.css";
|
||||
@import "./styles/animations.css";
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #f5faff;
|
||||
--background: #faf8f5;
|
||||
--card: #ffffff;
|
||||
--foreground: #001122;
|
||||
--primary-cta: #15479c;
|
||||
--primary-cta-text: #f5faff;
|
||||
--foreground: #2c2825;
|
||||
--primary-cta: #c9a84c;
|
||||
--primary-cta-text: #ffffff;
|
||||
--secondary-cta: #ffffff;
|
||||
--secondary-cta-text: #001122;
|
||||
--accent: #a8cce8;
|
||||
--background-accent: #7ba3cf;
|
||||
--secondary-cta-text: #2c2825;
|
||||
--accent: #e8dcc4;
|
||||
--background-accent: #f0e8d5;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 0.5rem;
|
||||
@@ -88,8 +88,8 @@
|
||||
--color-background-accent: var(--background-accent);
|
||||
|
||||
/* Fonts */
|
||||
--font-sans: 'Playfair', sans-serif;
|
||||
--font-tight: "Inter Tight", sans-serif;
|
||||
--font-sans: 'Playfair Display', serif;
|
||||
--font-tight: "DM Sans", sans-serif;
|
||||
--font-mono: monospace;
|
||||
|
||||
/* Border Radius */
|
||||
|
||||
@@ -1,233 +1,33 @@
|
||||
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
// AUTO-GENERATED shell by per-section-migrate.
|
||||
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
|
||||
// files directly. Non-block content (wrappers, non-inlinable sections) is
|
||||
// preserved inline; extracted section blocks become <XSection/> refs.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HeroSection from './HomePage/sections/Hero';
|
||||
import MarqueeSection from './HomePage/sections/Marquee';
|
||||
import ServicesSection from './HomePage/sections/Services';
|
||||
import GallerySection from './HomePage/sections/Gallery';
|
||||
import ReviewsSection from './HomePage/sections/Reviews';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import BookingSection from './HomePage/sections/Booking';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="LUXURY SALON EXPERIENCE"
|
||||
title="Beauty Is An Art. We Are The Artists."
|
||||
description="Premium hair and beauty services by expert stylists. Trusted by 5000+ happy customers."
|
||||
primaryButton={{
|
||||
text: "Book Appointment",
|
||||
href: "#booking",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "View Services",
|
||||
href: "#services",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/male-hairdresser-combing-hair-senior-client_23-2148181882.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="marquee" data-section="marquee">
|
||||
<SectionErrorBoundary name="marquee">
|
||||
<SocialProofMarquee
|
||||
tag="SERVICES"
|
||||
title="Our Expertise"
|
||||
description="World-class care for your beauty needs"
|
||||
names={[
|
||||
"Haircut",
|
||||
"Bridal Makeup",
|
||||
"Facial",
|
||||
"Hair Color",
|
||||
"Keratin",
|
||||
"Waxing",
|
||||
"Threading",
|
||||
"Pedicure",
|
||||
"Manicure",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MarqueeSection />
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesTaggedCards
|
||||
tag="SERVICES"
|
||||
title="Our Luxury Treatments"
|
||||
description="Choose from our curated menu of beauty and wellness services."
|
||||
items={[
|
||||
{
|
||||
tag: "Hair",
|
||||
title: "Haircut & Styling",
|
||||
description: "Professional cuts tailored to your unique face shape.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/instruments-used-latino-hair-salon_23-2150555177.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Bridal",
|
||||
title: "Bridal Makeup",
|
||||
description: "Expert bridal artistry for your special day.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wellness-concept-with-woman-with-creme-face_23-2147816997.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Skin",
|
||||
title: "Facial & Skincare",
|
||||
description: "Rejuvenating facials for glowing skin.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-applying-cosmetics-model_23-2148398679.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Treatments",
|
||||
title: "Keratin & Color",
|
||||
description: "High-quality chemical treatments for healthy shine.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/attractive-asian-woman-posing-towel-after-shower_197531-19624.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Nails",
|
||||
title: "Nail Art & Spa",
|
||||
description: "Pamper yourself with our relaxing nail services.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/comb-scissor-box_23-2148352937.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Body",
|
||||
title: "Waxing & Threading",
|
||||
description: "Precision hair removal for a flawless finish.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/steel-scissors-lie-wave-silk-brown-hair_8353-7032.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ServicesSection />
|
||||
|
||||
<div id="gallery" data-section="gallery">
|
||||
<SectionErrorBoundary name="gallery">
|
||||
<FeaturesImageBento
|
||||
tag="GALLERY"
|
||||
title="Our Works"
|
||||
description="Explore our portfolio of beauty transformations."
|
||||
items={[
|
||||
{
|
||||
title: "Hair transformation",
|
||||
description: "Before and after",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautician-styling-clients-hair_107420-94677.jpg",
|
||||
},
|
||||
{
|
||||
title: "Bridal glow",
|
||||
description: "Classic bridal look",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-drunk-girl-party_23-2149628562.jpg",
|
||||
},
|
||||
{
|
||||
title: "Nail art",
|
||||
description: "Intricate designs",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/empty-therapist-office-with-modern-furniture-decorations_482257-108008.jpg",
|
||||
},
|
||||
{
|
||||
title: "Hair coloring",
|
||||
description: "Vibrant shades",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/photo-two-black-ceramical-hair-sinks-standing-beaty-salon_651396-960.jpg",
|
||||
},
|
||||
{
|
||||
title: "Skincare",
|
||||
description: "Fresh facial results",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/luxurious-vintage-interior-ofroom_1232-4716.jpg",
|
||||
},
|
||||
{
|
||||
title: "Styling",
|
||||
description: "Elegant up-dos",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/view-scissors-hair-salon_23-2150462460.jpg",
|
||||
},
|
||||
{
|
||||
title: "Happy clients",
|
||||
description: "Five-star service",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/barber-doing-haircut-bearded-aged-client-hair-salon_23-2148182013.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<GallerySection />
|
||||
|
||||
<div id="reviews" data-section="reviews">
|
||||
<SectionErrorBoundary name="reviews">
|
||||
<TestimonialTrustCard
|
||||
quote="Priya Sharma: Maine pehli baar Anand Family Salon mein bridal makeup karwaya tha aur main bilkul satisfied thi. Professional staff aur amazing results! Highly recommended!"
|
||||
rating={5}
|
||||
author="Priya Sharma"
|
||||
avatars={[
|
||||
{
|
||||
name: "Priya S",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-with-short-curly-hair-smiling-cheerfully-showing-victory-sign-standing-pink-wall_141793-29291.jpg",
|
||||
},
|
||||
{
|
||||
name: "Rahul V",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-green-eyed-brunette-woman-hair-band-white-t-shirt-against-wall-windows-cacti_197531-17042.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sunita P",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sexy-smiling-beautiful-woman-her-handsome-boyfriend-happy-cheerful-family-having-tender-moments-near-yellow-wall-studiopure-cheerful-models-huggingembracing-each-other_158538-22507.jpg",
|
||||
},
|
||||
{
|
||||
name: "Anjali M",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-young-woman-rejoicing-pink-wall_179666-2859.jpg",
|
||||
},
|
||||
{
|
||||
name: "Deepak G",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beauty-redhead-female-barista-drinks-coffee-coffee-shop_613910-4782.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ReviewsSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="ABOUT US"
|
||||
title="10+ Years of Excellence"
|
||||
description="Anand Family Salon was founded with a mission to bring world-class beauty services to our local community. We combine luxury with personal care."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/barber-showing-man-his-haircut-mirror_107420-94782.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="booking" data-section="booking">
|
||||
<SectionErrorBoundary name="booking">
|
||||
<ContactCta
|
||||
tag="BOOKING"
|
||||
text="Ready to experience the best? Book your appointment today and tell your story."
|
||||
primaryButton={{
|
||||
text: "Book Now",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "tel:+919999999999",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<BookingSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
21
src/pages/HomePage/sections/About.tsx
Normal file
21
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "about" section.
|
||||
|
||||
import React from 'react';
|
||||
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="ABOUT US"
|
||||
title="10+ Years of Excellence"
|
||||
description="Anand Family Salon was founded with a mission to bring world-class beauty services to our local community. We combine luxury with personal care."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/barber-showing-man-his-haircut-mirror_107420-94782.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
24
src/pages/HomePage/sections/Booking.tsx
Normal file
24
src/pages/HomePage/sections/Booking.tsx
Normal file
@@ -0,0 +1,24 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "booking" section.
|
||||
|
||||
import React from 'react';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function BookingSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="booking" data-section="booking">
|
||||
<SectionErrorBoundary name="booking">
|
||||
<ContactCta
|
||||
tag="BOOKING"
|
||||
text="Ready to experience the best? Book your appointment today and tell your story."
|
||||
primaryButton={{"href":"https://wa.me/919999999999","text":"Book Now"}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "tel:+919999999999",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Gallery.tsx
Normal file
57
src/pages/HomePage/sections/Gallery.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "gallery" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function GallerySection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="gallery" data-section="gallery">
|
||||
<SectionErrorBoundary name="gallery">
|
||||
<FeaturesImageBento
|
||||
tag="GALLERY"
|
||||
title="Our Works"
|
||||
description="Explore our portfolio of beauty transformations."
|
||||
items={[
|
||||
{
|
||||
title: "Hair transformation",
|
||||
description: "Before and after",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautician-styling-clients-hair_107420-94677.jpg",
|
||||
},
|
||||
{
|
||||
title: "Bridal glow",
|
||||
description: "Classic bridal look",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-drunk-girl-party_23-2149628562.jpg",
|
||||
},
|
||||
{
|
||||
title: "Nail art",
|
||||
description: "Intricate designs",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/empty-therapist-office-with-modern-furniture-decorations_482257-108008.jpg",
|
||||
},
|
||||
{
|
||||
title: "Hair coloring",
|
||||
description: "Vibrant shades",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/photo-two-black-ceramical-hair-sinks-standing-beaty-salon_651396-960.jpg",
|
||||
},
|
||||
{
|
||||
title: "Skincare",
|
||||
description: "Fresh facial results",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/luxurious-vintage-interior-ofroom_1232-4716.jpg",
|
||||
},
|
||||
{
|
||||
title: "Styling",
|
||||
description: "Elegant up-dos",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/view-scissors-hair-salon_23-2150462460.jpg",
|
||||
},
|
||||
{
|
||||
title: "Happy clients",
|
||||
description: "Five-star service",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/barber-doing-haircut-bearded-aged-client-hair-salon_23-2148182013.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Hero.tsx
Normal file
29
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="LUXURY SALON EXPERIENCE"
|
||||
title="Beauty Is An Art. We Are The Artists."
|
||||
description="Premium hair and beauty services by expert stylists. Trusted by 5000+ happy customers."
|
||||
primaryButton={{
|
||||
text: "Book Appointment",
|
||||
href: "#booking",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "View Services",
|
||||
href: "#services",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/male-hairdresser-combing-hair-senior-client_23-2148181882.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
31
src/pages/HomePage/sections/Marquee.tsx
Normal file
31
src/pages/HomePage/sections/Marquee.tsx
Normal file
@@ -0,0 +1,31 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "marquee" section.
|
||||
|
||||
import React from 'react';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MarqueeSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="marquee" data-section="marquee">
|
||||
<SectionErrorBoundary name="marquee">
|
||||
<SocialProofMarquee
|
||||
tag="SERVICES"
|
||||
title="Our Expertise"
|
||||
description="World-class care for your beauty needs"
|
||||
names={[
|
||||
"Haircut",
|
||||
"Bridal Makeup",
|
||||
"Facial",
|
||||
"Hair Color",
|
||||
"Keratin",
|
||||
"Waxing",
|
||||
"Threading",
|
||||
"Pedicure",
|
||||
"Manicure",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Reviews.tsx
Normal file
42
src/pages/HomePage/sections/Reviews.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "reviews" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ReviewsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="reviews" data-section="reviews">
|
||||
<SectionErrorBoundary name="reviews">
|
||||
<TestimonialTrustCard
|
||||
quote="Priya Sharma: Maine pehli baar Anand Family Salon mein bridal makeup karwaya tha aur main bilkul satisfied thi. Professional staff aur amazing results! Highly recommended!"
|
||||
rating={5}
|
||||
author="Priya Sharma"
|
||||
avatars={[
|
||||
{
|
||||
name: "Priya S",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-with-short-curly-hair-smiling-cheerfully-showing-victory-sign-standing-pink-wall_141793-29291.jpg",
|
||||
},
|
||||
{
|
||||
name: "Rahul V",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-green-eyed-brunette-woman-hair-band-white-t-shirt-against-wall-windows-cacti_197531-17042.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sunita P",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sexy-smiling-beautiful-woman-her-handsome-boyfriend-happy-cheerful-family-having-tender-moments-near-yellow-wall-studiopure-cheerful-models-huggingembracing-each-other_158538-22507.jpg",
|
||||
},
|
||||
{
|
||||
name: "Anjali M",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-young-woman-rejoicing-pink-wall_179666-2859.jpg",
|
||||
},
|
||||
{
|
||||
name: "Deepak G",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beauty-redhead-female-barista-drinks-coffee-coffee-shop_613910-4782.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
82
src/pages/HomePage/sections/Services.tsx
Normal file
82
src/pages/HomePage/sections/Services.tsx
Normal file
@@ -0,0 +1,82 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "services" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ServicesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesTaggedCards
|
||||
tag="SERVICES"
|
||||
title="Our Luxury Treatments"
|
||||
description="Choose from our curated menu of beauty and wellness services."
|
||||
items={[
|
||||
{
|
||||
tag: "Hair",
|
||||
title: "Haircut & Styling",
|
||||
description: "Professional cuts tailored to your unique face shape.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/instruments-used-latino-hair-salon_23-2150555177.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Bridal",
|
||||
title: "Bridal Makeup",
|
||||
description: "Expert bridal artistry for your special day.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wellness-concept-with-woman-with-creme-face_23-2147816997.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Skin",
|
||||
title: "Facial & Skincare",
|
||||
description: "Rejuvenating facials for glowing skin.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-applying-cosmetics-model_23-2148398679.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Treatments",
|
||||
title: "Keratin & Color",
|
||||
description: "High-quality chemical treatments for healthy shine.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/attractive-asian-woman-posing-towel-after-shower_197531-19624.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Nails",
|
||||
title: "Nail Art & Spa",
|
||||
description: "Pamper yourself with our relaxing nail services.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/comb-scissor-box_23-2148352937.jpg",
|
||||
},
|
||||
{
|
||||
tag: "Body",
|
||||
title: "Waxing & Threading",
|
||||
description: "Precision hair removal for a flawless finish.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "#booking",
|
||||
},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/steel-scissors-lie-wave-silk-brown-hair_8353-7032.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user