Merge version_2_1781469881754 into main #1
@@ -42,7 +42,7 @@ export default function Layout() {
|
||||
<SiteBackgroundSlot />
|
||||
<SectionErrorBoundary name="navbar">
|
||||
<NavbarDropdown
|
||||
logo="Hajati"
|
||||
logo="HAJATI"
|
||||
ctaButton={{
|
||||
text: "Shop Now",
|
||||
href: "#products",
|
||||
|
||||
@@ -1,278 +1,36 @@
|
||||
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import FeaturesRevealCards from '@/components/sections/features/FeaturesRevealCards';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
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 AboutSection from './HomePage/sections/About';
|
||||
import FeaturesSection from './HomePage/sections/Features';
|
||||
import ProductsSection from './HomePage/sections/Products';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitVerticalMarquee
|
||||
tag="Love in Every Detail"
|
||||
title="Hajati: Floral Jewelry for Couples"
|
||||
description="Celebrate your bond with our exclusively curated flower-inspired necklace sets. Elegance, connection, and timeless design."
|
||||
primaryButton={{
|
||||
text: "Shop Collections",
|
||||
href: "#products",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Story",
|
||||
href: "#about",
|
||||
}}
|
||||
leftItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-aesthetic-earrings_23-2149649095.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wedding-ring-with-ceramic-human-heart-table_23-2148017905.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-closeup-shot-bride-wearing-delicate-choker-necklace_181624-21214.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-winter_1157-4363.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wedding-accessories-bride-wedding-rings-wedding-dress_8353-10441.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-holds-woman-dressed-30s-style-tender-standing-old-street_8353-7461.jpg",
|
||||
},
|
||||
]}
|
||||
rightItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/valentines-day-romantic-man-hand-holding-engagement-ring-box_114579-421.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-sensitive-man-posing-with-flowers_23-2149486760.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-identical-wedding-rings-lie-wedding-bouquet_8353-10438.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-couple-love_1004-16.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-smiling-holding-valentines-day-bouquet-red-roses_23-2149216120.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-smelling-flowers-close-up_23-2148867036.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="Our Philosophy"
|
||||
title="Handcrafted for Love"
|
||||
description="At Hajati, we believe flowers represent the delicate and unfolding nature of a couple's journey. Each piece is designed to tell a unique story."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/craftswoman-using-blow-torch-workshop_107420-65295.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesRevealCards
|
||||
tag="Why Hajati?"
|
||||
title="Excellence in Design"
|
||||
description="We ensure every piece reflects the premium quality your relationship deserves."
|
||||
items={[
|
||||
{
|
||||
title: "Premium Materials",
|
||||
description: "High-quality, durable gold and silver finishes.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-golden-chains-arrangement_23-2149836478.jpg",
|
||||
},
|
||||
{
|
||||
title: "Gift-Ready",
|
||||
description: "Every order arrives in a beautiful, romantic box.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elegant-couple-home-near-christmas-tree_1157-42877.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fast Shipping",
|
||||
description: "Delivered to your door with care and speed.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wedding-rings-white-background_1303-10487.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Jewelry Collections"
|
||||
title="Couple Necklaces"
|
||||
description="Browse our curated selection of flower-themed sets for you and your partner."
|
||||
items={[
|
||||
{
|
||||
title: "Rose Eternal",
|
||||
description: "Symbol of passion.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/painted-coral-peonies-flowers-starfish-clams-mint-background_23-2148102303.jpg",
|
||||
},
|
||||
{
|
||||
title: "Daisy Bond",
|
||||
description: "Loyalty in bloom.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/variety-retro-flower-wreaths-with-love-messages_23-2147596267.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sunflower Vow",
|
||||
description: "Always looking for you.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-happy-couple-with-candy_23-2149266156.jpg",
|
||||
},
|
||||
{
|
||||
title: "Lotus Harmony",
|
||||
description: "Pure love connection.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/crop-couple-love-walking-beach_23-2147738299.jpg",
|
||||
},
|
||||
{
|
||||
title: "Lavender Peace",
|
||||
description: "Serenity together.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-artist-drawing-heena-woman-s-chest-ramadan_23-2148083021.jpg",
|
||||
},
|
||||
{
|
||||
title: "Cherry Spirit",
|
||||
description: "Fleeting beautiful moments.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/statice-flower_1339-3251.jpg",
|
||||
},
|
||||
{
|
||||
title: "Orchid Elegance",
|
||||
description: "Exquisite grace.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/loving-woman-excited-with-present-from-man_23-2147736657.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProductsSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsMediaCards
|
||||
tag="Trusted by Many"
|
||||
title="Celebrating Love Globally"
|
||||
description="Join thousands of couples sharing their love through our jewelry."
|
||||
metrics={[
|
||||
{
|
||||
value: "10k+",
|
||||
title: "Happy Couples",
|
||||
description: "Sharing love every day.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happiness-asian-caucasian-marry-travel-couple-wearing-casual-cloth-enjoy-unpack-suitcase-luggage-selfie-together-floor-with-joyful-laugh-smile-travel-vacation-concept_609648-2059.jpg",
|
||||
},
|
||||
{
|
||||
value: "50+",
|
||||
title: "Floral Designs",
|
||||
description: "Unique jewelry styles.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/stylish-friends-sitting-beach_273609-5463.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialRatingCards
|
||||
tag="Testimonials"
|
||||
title="Loved by Couples"
|
||||
description="Hear what our happy customers have to say about our sets."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Anna S.",
|
||||
role: "Customer",
|
||||
quote: "The most beautiful necklace we've ever shared.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-couple-wearing-chain-necklace_23-2149490541.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark L.",
|
||||
role: "Customer",
|
||||
quote: "Perfect gift for our anniversary.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/proposal-restaurant_1098-12875.jpg",
|
||||
},
|
||||
{
|
||||
name: "Julia V.",
|
||||
role: "Customer",
|
||||
quote: "Elegant design and wonderful quality.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-happy-cute-sexy-brunette-woman-casual-black-dress-with-red-lips-white-background_158538-9189.jpg",
|
||||
},
|
||||
{
|
||||
name: "Chris B.",
|
||||
role: "Customer",
|
||||
quote: "Stunning floral detail, my partner loved it.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-loving-couple-enjoying-together_1153-1579.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sara D.",
|
||||
role: "Customer",
|
||||
quote: "Fast shipping and fantastic customer care.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-bright-shopping-bags-credit-card_23-2147957920.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Common Questions"
|
||||
title="Need Help?"
|
||||
description="We are here to answer your questions about our collections."
|
||||
items={[
|
||||
{
|
||||
question: "What is the material?",
|
||||
answer: "Premium plated steel and sterling silver options.",
|
||||
},
|
||||
{
|
||||
question: "Do you ship worldwide?",
|
||||
answer: "Yes, we ship globally.",
|
||||
},
|
||||
{
|
||||
question: "How long is shipping?",
|
||||
answer: "Usually 3-7 business days.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/jewelry-maker-working-alone-atelier_23-2149025955.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Get In Touch"
|
||||
text="Ready to celebrate your love with Hajati? Contact our support team for any queries."
|
||||
primaryButton={{
|
||||
text: "Contact Support",
|
||||
href: "mailto:hello@hajati.com",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Follow Us",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
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="Our Philosophy"
|
||||
title="Handcrafted for Love"
|
||||
description="At Hajati, we believe flowers represent the delicate and unfolding nature of a couple's journey. Each piece is designed to tell a unique story."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/craftswoman-using-blow-torch-workshop_107420-65295.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "contact" section.
|
||||
|
||||
import React from 'react';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ContactSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Get In Touch"
|
||||
text="Ready to celebrate your love with Hajati? Contact our support team for any queries."
|
||||
primaryButton={{
|
||||
text: "Contact Support",
|
||||
href: "mailto:hello@hajati.com",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Follow Us",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
35
src/pages/HomePage/sections/Faq.tsx
Normal file
35
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,35 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "faq" section.
|
||||
|
||||
import React from 'react';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Common Questions"
|
||||
title="Need Help?"
|
||||
description="We are here to answer your questions about our collections."
|
||||
items={[
|
||||
{
|
||||
question: "What is the material?",
|
||||
answer: "Premium plated steel and sterling silver options.",
|
||||
},
|
||||
{
|
||||
question: "Do you ship worldwide?",
|
||||
answer: "Yes, we ship globally.",
|
||||
},
|
||||
{
|
||||
question: "How long is shipping?",
|
||||
answer: "Usually 3-7 business days.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/jewelry-maker-working-alone-atelier_23-2149025955.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
37
src/pages/HomePage/sections/Features.tsx
Normal file
37
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCards from '@/components/sections/features/FeaturesRevealCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesRevealCards
|
||||
tag="Why Hajati?"
|
||||
title="Excellence in Design"
|
||||
description="We ensure every piece reflects the premium quality your relationship deserves."
|
||||
items={[
|
||||
{
|
||||
title: "Premium Materials",
|
||||
description: "High-quality, durable gold and silver finishes.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-golden-chains-arrangement_23-2149836478.jpg",
|
||||
},
|
||||
{
|
||||
title: "Gift-Ready",
|
||||
description: "Every order arrives in a beautiful, romantic box.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elegant-couple-home-near-christmas-tree_1157-42877.jpg",
|
||||
},
|
||||
{
|
||||
title: "Fast Shipping",
|
||||
description: "Delivered to your door with care and speed.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wedding-rings-white-background_1303-10487.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
68
src/pages/HomePage/sections/Hero.tsx
Normal file
68
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,68 @@
|
||||
// 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 HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitVerticalMarquee
|
||||
tag="Love in Every Detail"
|
||||
title="HAJATI: Floral Jewelry for Couples"
|
||||
description="Celebrate your bond with our exclusively curated flower-inspired necklace sets. Elegance, connection, and timeless design."
|
||||
primaryButton={{
|
||||
text: "Shop Collections",
|
||||
href: "#products",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Story",
|
||||
href: "#about",
|
||||
}}
|
||||
leftItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-aesthetic-earrings_23-2149649095.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wedding-ring-with-ceramic-human-heart-table_23-2148017905.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-closeup-shot-bride-wearing-delicate-choker-necklace_181624-21214.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-winter_1157-4363.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wedding-accessories-bride-wedding-rings-wedding-dress_8353-10441.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-holds-woman-dressed-30s-style-tender-standing-old-street_8353-7461.jpg",
|
||||
},
|
||||
]}
|
||||
rightItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/valentines-day-romantic-man-hand-holding-engagement-ring-box_114579-421.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-sensitive-man-posing-with-flowers_23-2149486760.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-identical-wedding-rings-lie-wedding-bouquet_8353-10438.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-couple-love_1004-16.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-smiling-holding-valentines-day-bouquet-red-roses_23-2149216120.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-smelling-flowers-close-up_23-2148867036.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Metrics.tsx
Normal file
34
src/pages/HomePage/sections/Metrics.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "metrics" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsMediaCards
|
||||
tag="Trusted by Many"
|
||||
title="Celebrating Love Globally"
|
||||
description="Join thousands of couples sharing their love through our jewelry."
|
||||
metrics={[
|
||||
{
|
||||
value: "10k+",
|
||||
title: "Happy Couples",
|
||||
description: "Sharing love every day.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happiness-asian-caucasian-marry-travel-couple-wearing-casual-cloth-enjoy-unpack-suitcase-luggage-selfie-together-floor-with-joyful-laugh-smile-travel-vacation-concept_609648-2059.jpg",
|
||||
},
|
||||
{
|
||||
value: "50+",
|
||||
title: "Floral Designs",
|
||||
description: "Unique jewelry styles.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/stylish-friends-sitting-beach_273609-5463.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Products.tsx
Normal file
64
src/pages/HomePage/sections/Products.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "products" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProductsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Jewelry Collections"
|
||||
title="Couple Necklaces"
|
||||
description="Browse our curated selection of flower-themed sets for you and your partner."
|
||||
items={[
|
||||
{
|
||||
title: "Rose Eternal",
|
||||
description: "Symbol of passion.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/painted-coral-peonies-flowers-starfish-clams-mint-background_23-2148102303.jpg",
|
||||
},
|
||||
{
|
||||
title: "Daisy Bond",
|
||||
description: "Loyalty in bloom.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/variety-retro-flower-wreaths-with-love-messages_23-2147596267.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sunflower Vow",
|
||||
description: "Always looking for you.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-happy-couple-with-candy_23-2149266156.jpg",
|
||||
},
|
||||
{
|
||||
title: "Lotus Harmony",
|
||||
description: "Pure love connection.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/crop-couple-love-walking-beach_23-2147738299.jpg",
|
||||
},
|
||||
{
|
||||
title: "Lavender Peace",
|
||||
description: "Serenity together.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-artist-drawing-heena-woman-s-chest-ramadan_23-2148083021.jpg",
|
||||
},
|
||||
{
|
||||
title: "Cherry Spirit",
|
||||
description: "Fleeting beautiful moments.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/statice-flower_1339-3251.jpg",
|
||||
},
|
||||
{
|
||||
title: "Orchid Elegance",
|
||||
description: "Exquisite grace.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/loving-woman-excited-with-present-from-man_23-2147736657.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
57
src/pages/HomePage/sections/Testimonials.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 "testimonials" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialRatingCards
|
||||
tag="Testimonials"
|
||||
title="Loved by Couples"
|
||||
description="Hear what our happy customers have to say about our sets."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Anna S.",
|
||||
role: "Customer",
|
||||
quote: "The most beautiful necklace we've ever shared.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-couple-wearing-chain-necklace_23-2149490541.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark L.",
|
||||
role: "Customer",
|
||||
quote: "Perfect gift for our anniversary.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/proposal-restaurant_1098-12875.jpg",
|
||||
},
|
||||
{
|
||||
name: "Julia V.",
|
||||
role: "Customer",
|
||||
quote: "Elegant design and wonderful quality.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-happy-cute-sexy-brunette-woman-casual-black-dress-with-red-lips-white-background_158538-9189.jpg",
|
||||
},
|
||||
{
|
||||
name: "Chris B.",
|
||||
role: "Customer",
|
||||
quote: "Stunning floral detail, my partner loved it.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-loving-couple-enjoying-together_1153-1579.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sara D.",
|
||||
role: "Customer",
|
||||
quote: "Fast shipping and fantastic customer care.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-bright-shopping-bags-credit-card_23-2147957920.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user