Merge version_2_1781370156952 into main

Merge version_2_1781370156952 into main
This commit was merged in pull request #1.
This commit is contained in:
2026-06-13 17:04:04 +00:00
10 changed files with 320 additions and 234 deletions

View File

@@ -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",

View File

@@ -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 */

View File

@@ -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 />
</>
);
}

View 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>
);
}

View 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>
);
}

View 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>
);
}

View 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>
);
}

View 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>
);
}

View 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>
);
}

View 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>
);
}