Merge version_2_1782065376521 into main #1
@@ -1,252 +1,38 @@
|
||||
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroTiltedCards from '@/components/sections/hero/HeroTiltedCards';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
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 ShopSection from './HomePage/sections/Shop';
|
||||
import HighlightsSection from './HomePage/sections/Highlights';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import PartnersSection from './HomePage/sections/Partners';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
|
||||
import NewsletterSection from './HomePage/sections/Newsletter';export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroTiltedCards
|
||||
tag="Artisanal Home Goods"
|
||||
title="Curated Elegance for Your Living Space"
|
||||
description="Discover a hand-picked collection of beautiful, sustainable home goods that bring warmth and comfort into your daily life."
|
||||
primaryButton={{
|
||||
text: "Shop Collection",
|
||||
href: "#shop",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Story",
|
||||
href: "#about",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-working-with-dried-flowers_52683-91337.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-details-autumn-home-decor-blurred-background_169016-23622.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/modern-organizer-cutlery-drawer-premium-kitchen_169016-68988.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-fruits-tablecloth_23-2151318370.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/many-wooden-tags-ribbons-shelf_23-2147874985.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="Our Philosophy"
|
||||
title="Crafted with Intent"
|
||||
description="We believe in the power of handmade objects to transform a house into a home. Each piece in our shop is selected for its story, quality, and commitment to sustainable craftsmanship."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/home-workspace-minimalistic-design_23-2148991458.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="shop" data-section="shop">
|
||||
<SectionErrorBoundary name="shop">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Bestsellers"
|
||||
title="Curated Essentials"
|
||||
description="Explore our favorite items that define the Blissful aesthetic."
|
||||
items={[
|
||||
{
|
||||
title: "Ceramic Vase",
|
||||
description: "Hand-thrown pottery, perfect for minimal bouquets.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-artist-clay-pot_23-2148986303.jpg",
|
||||
},
|
||||
{
|
||||
title: "Scented Candle",
|
||||
description: "Notes of cedarwood and amber, hand-poured.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-table-book-candle-tea-space-dark-sofa-autumn-coziness-concept_169016-9787.jpg",
|
||||
},
|
||||
{
|
||||
title: "Linen Throw",
|
||||
description: "Soft, breathable linen for cozy afternoons.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/composition-with-candles-knitted-elements-other-decor-details-bedroom_169016-6768.jpg",
|
||||
},
|
||||
{
|
||||
title: "Wooden Utensils",
|
||||
description: "Sustainable oak cooking essentials.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elegant-minimalistic-bowls_23-2149483981.jpg",
|
||||
},
|
||||
{
|
||||
title: "Ceramic Mug",
|
||||
description: "Speckled stoneware for your morning ritual.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/girl-holding-cup-tea-hands_169016-3431.jpg",
|
||||
},
|
||||
{
|
||||
title: "Cushion Cover",
|
||||
description: "Embroidered linen in earthy neutral tones.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/autumn-reading-book_169016-1462.jpg",
|
||||
},
|
||||
{
|
||||
title: "Minimalist Print",
|
||||
description: "Framed abstract art for your gallery wall.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/modern-art-studio-composition_23-2147868506.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ShopSection />
|
||||
|
||||
<div id="highlights" data-section="highlights">
|
||||
<SectionErrorBoundary name="highlights">
|
||||
<FeaturesMediaCarousel
|
||||
tag="Why Blissful?"
|
||||
title="Designed for Living"
|
||||
description="Our products are designed to last, blending modern functionality with timeless aesthetic values."
|
||||
items={[
|
||||
{
|
||||
title: "Natural Materials",
|
||||
description: "Only the highest quality wood, clay, and fiber.",
|
||||
buttonIcon: "Leaf",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-making-vase-with-clay_1157-30694.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sustainable Ethics",
|
||||
description: "Carbon-neutral shipping and ethical sourcing.",
|
||||
buttonIcon: "Recycle",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-christmas-gift-boxes_23-2149205047.jpg",
|
||||
},
|
||||
{
|
||||
title: "Timeless Design",
|
||||
description: "Pieces that evolve with your unique style.",
|
||||
buttonIcon: "Heart",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cozy-home-still-life-with-inscription-home_169016-1530.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<HighlightsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialRatingCards
|
||||
tag="Love from Customers"
|
||||
title="What They Say"
|
||||
description="Read stories from those who have found their home essentials with us."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Elena R.",
|
||||
role: "Interior Stylist",
|
||||
quote: "The quality of the ceramics I purchased is absolutely breathtaking.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-shopaholic-woman-with-colorful-paper-bags_23-2147823604.jpg",
|
||||
},
|
||||
{
|
||||
name: "Marcus J.",
|
||||
role: "Architect",
|
||||
quote: "Finally, a shop that prioritizes both aesthetics and sustainability.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-creative-man-holding-tablet-papers-carpentry-workshop_342744-800.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah P.",
|
||||
role: "Content Creator",
|
||||
quote: "My living room feels so much more grounded since adding these pieces.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-worker-desk_1170-83.jpg",
|
||||
},
|
||||
{
|
||||
name: "David W.",
|
||||
role: "Entrepreneur",
|
||||
quote: "The shipping was fast, and the packaging was completely plastic-free.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-interacting-color-swatch_1170-832.jpg",
|
||||
},
|
||||
{
|
||||
name: "Chloe M.",
|
||||
role: "Home Chef",
|
||||
quote: "I love the rustic charm of these wooden kitchen accessories.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-friends-looking-up-product-shop_23-2148721120.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="partners" data-section="partners">
|
||||
<SectionErrorBoundary name="partners">
|
||||
<SocialProofMarquee
|
||||
tag="Recognized By"
|
||||
title="Featured In"
|
||||
description="We are honored to have been shared by these design leaders."
|
||||
names={[
|
||||
"Design Monthly",
|
||||
"Artisan Home",
|
||||
"Organic Living",
|
||||
"Urban Dweller",
|
||||
"Craft & Style",
|
||||
"Home Aesthetic",
|
||||
"Modern Habitat",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PartnersSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Help Center"
|
||||
title="Common Questions"
|
||||
description="Everything you need to know about our products and shipping."
|
||||
items={[
|
||||
{
|
||||
question: "Are your materials sustainably sourced?",
|
||||
answer: "Yes, we prioritize ethically harvested materials and fair-trade manufacturing.",
|
||||
},
|
||||
{
|
||||
question: "What is your return policy?",
|
||||
answer: "We offer a 30-day hassle-free return window for all unused goods.",
|
||||
},
|
||||
{
|
||||
question: "Do you ship internationally?",
|
||||
answer: "Currently, we ship to most regions across North America and Europe.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Let's Connect"
|
||||
text="Have questions about our collection or need a consultation? Let's chat."
|
||||
primaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Read Our Blog",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
<NewsletterSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
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="Crafted with Intent"
|
||||
description="We believe in the power of handmade objects to transform a house into a home. Each piece in our shop is selected for its story, quality, and commitment to sustainable craftsmanship."
|
||||
imageSrc="http://img.b2bpic.net/free-photo/home-workspace-minimalistic-design_23-2148991458.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="Let's Connect"
|
||||
text="Have questions about our collection or need a consultation? Let's chat."
|
||||
primaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Read Our Blog",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Faq.tsx
Normal file
34
src/pages/HomePage/sections/Faq.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 "faq" section.
|
||||
|
||||
import React from 'react';
|
||||
import FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Help Center"
|
||||
title="Common Questions"
|
||||
description="Everything you need to know about our products and shipping."
|
||||
items={[
|
||||
{
|
||||
question: "Are your materials sustainably sourced?",
|
||||
answer: "Yes, we prioritize ethically harvested materials and fair-trade manufacturing.",
|
||||
},
|
||||
{
|
||||
question: "What is your return policy?",
|
||||
answer: "We offer a 30-day hassle-free return window for all unused goods.",
|
||||
},
|
||||
{
|
||||
question: "Do you ship internationally?",
|
||||
answer: "Currently, we ship to most regions across North America and Europe.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
45
src/pages/HomePage/sections/Hero.tsx
Normal file
45
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,45 @@
|
||||
// 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 HeroTiltedCards from '@/components/sections/hero/HeroTiltedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroTiltedCards
|
||||
tag="Artisanal Home Goods"
|
||||
title="Curated Elegance for Your Living Space"
|
||||
description="Discover a hand-picked collection of beautiful, sustainable home goods that bring warmth and comfort into your daily life."
|
||||
primaryButton={{
|
||||
text: "Shop Collection",
|
||||
href: "#shop",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Story",
|
||||
href: "#about",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-working-with-dried-flowers_52683-91337.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-details-autumn-home-decor-blurred-background_169016-23622.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/modern-organizer-cutlery-drawer-premium-kitchen_169016-68988.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-fruits-tablecloth_23-2151318370.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/many-wooden-tags-ribbons-shelf_23-2147874985.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Highlights.tsx
Normal file
40
src/pages/HomePage/sections/Highlights.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "highlights" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HighlightsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="highlights" data-section="highlights">
|
||||
<SectionErrorBoundary name="highlights">
|
||||
<FeaturesMediaCarousel
|
||||
tag="Why Blissful?"
|
||||
title="Designed for Living"
|
||||
description="Our products are designed to last, blending modern functionality with timeless aesthetic values."
|
||||
items={[
|
||||
{
|
||||
title: "Natural Materials",
|
||||
description: "Only the highest quality wood, clay, and fiber.",
|
||||
buttonIcon: "Leaf",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-making-vase-with-clay_1157-30694.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sustainable Ethics",
|
||||
description: "Carbon-neutral shipping and ethical sourcing.",
|
||||
buttonIcon: "Recycle",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-christmas-gift-boxes_23-2149205047.jpg",
|
||||
},
|
||||
{
|
||||
title: "Timeless Design",
|
||||
description: "Pieces that evolve with your unique style.",
|
||||
buttonIcon: "Heart",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cozy-home-still-life-with-inscription-home_169016-1530.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
74
src/pages/HomePage/sections/Newsletter.tsx
Normal file
74
src/pages/HomePage/sections/Newsletter.tsx
Normal file
@@ -0,0 +1,74 @@
|
||||
import { useState } from 'react';
|
||||
import Button from '@/components/ui/Button';
|
||||
import Input from '@/components/ui/Input';
|
||||
import Tag from '@/components/ui/Tag';
|
||||
import TextAnimation from '@/components/ui/TextAnimation';
|
||||
import ScrollReveal from '@/components/ui/ScrollReveal';
|
||||
import ImageOrVideo from '@/components/ui/ImageOrVideo';
|
||||
|
||||
export default function NewsletterSection() {
|
||||
const [email, setEmail] = useState('');
|
||||
|
||||
const handleSubmit = (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
if (email) {
|
||||
console.log('Subscribed:', email);
|
||||
setEmail('');
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<section data-webild-section="newsletter" id="newsletter" className="relative w-full py-24 bg-background">
|
||||
<div className="w-content-width mx-auto">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
|
||||
<ScrollReveal variant="slide-up" className="order-2 lg:order-1">
|
||||
<div className="relative aspect-[4/5] w-full rounded-lg overflow-hidden">
|
||||
<ImageOrVideo
|
||||
imageSrc="https://images.unsplash.com/photo-1556228578-0d85b1a4d571?auto=format&fit=crop&q=80&w=800"
|
||||
className="object-cover w-full h-full"
|
||||
/>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
|
||||
<div className="flex flex-col justify-center order-1 lg:order-2">
|
||||
<ScrollReveal variant="slide-up">
|
||||
<Tag text="Newsletter" className="mb-6" />
|
||||
<TextAnimation
|
||||
text="Stay in the Loop"
|
||||
variant="slide-up"
|
||||
tag="h2"
|
||||
gradientText={false}
|
||||
className="text-4xl md:text-5xl font-bold text-foreground mb-6"
|
||||
/>
|
||||
<p className="text-lg text-accent mb-8">
|
||||
Join our community to receive updates on new arrivals, exclusive offers, and styling tips directly to your inbox.
|
||||
</p>
|
||||
|
||||
<form onSubmit={handleSubmit} className="flex flex-col sm:flex-row gap-4">
|
||||
<Input
|
||||
type="email"
|
||||
placeholder="Enter your email address"
|
||||
value={email}
|
||||
onChange={(e) => setEmail(e.target.value)}
|
||||
required
|
||||
className="flex-1"
|
||||
/>
|
||||
<Button
|
||||
text="Subscribe"
|
||||
variant="primary"
|
||||
onClick={() => {
|
||||
if (email) {
|
||||
console.log('Subscribed:', email);
|
||||
setEmail('');
|
||||
}
|
||||
}}
|
||||
className="w-full sm:w-auto"
|
||||
/>
|
||||
</form>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Partners.tsx
Normal file
29
src/pages/HomePage/sections/Partners.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 "partners" section.
|
||||
|
||||
import React from 'react';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PartnersSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="partners" data-section="partners">
|
||||
<SectionErrorBoundary name="partners">
|
||||
<SocialProofMarquee
|
||||
tag="Recognized By"
|
||||
title="Featured In"
|
||||
description="We are honored to have been shared by these design leaders."
|
||||
names={[
|
||||
"Design Monthly",
|
||||
"Artisan Home",
|
||||
"Organic Living",
|
||||
"Urban Dweller",
|
||||
"Craft & Style",
|
||||
"Home Aesthetic",
|
||||
"Modern Habitat",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Shop.tsx
Normal file
64
src/pages/HomePage/sections/Shop.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 "shop" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ShopSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="shop" data-section="shop">
|
||||
<SectionErrorBoundary name="shop">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Bestsellers"
|
||||
title="Curated Essentials"
|
||||
description="Explore our favorite items that define the Blissful aesthetic."
|
||||
items={[
|
||||
{
|
||||
title: "Ceramic Vase",
|
||||
description: "Hand-thrown pottery, perfect for minimal bouquets.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-artist-clay-pot_23-2148986303.jpg",
|
||||
},
|
||||
{
|
||||
title: "Scented Candle",
|
||||
description: "Notes of cedarwood and amber, hand-poured.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-table-book-candle-tea-space-dark-sofa-autumn-coziness-concept_169016-9787.jpg",
|
||||
},
|
||||
{
|
||||
title: "Linen Throw",
|
||||
description: "Soft, breathable linen for cozy afternoons.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/composition-with-candles-knitted-elements-other-decor-details-bedroom_169016-6768.jpg",
|
||||
},
|
||||
{
|
||||
title: "Wooden Utensils",
|
||||
description: "Sustainable oak cooking essentials.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elegant-minimalistic-bowls_23-2149483981.jpg",
|
||||
},
|
||||
{
|
||||
title: "Ceramic Mug",
|
||||
description: "Speckled stoneware for your morning ritual.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/girl-holding-cup-tea-hands_169016-3431.jpg",
|
||||
},
|
||||
{
|
||||
title: "Cushion Cover",
|
||||
description: "Embroidered linen in earthy neutral tones.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/autumn-reading-book_169016-1462.jpg",
|
||||
},
|
||||
{
|
||||
title: "Minimalist Print",
|
||||
description: "Framed abstract art for your gallery wall.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/modern-art-studio-composition_23-2147868506.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="Love from Customers"
|
||||
title="What They Say"
|
||||
description="Read stories from those who have found their home essentials with us."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Elena R.",
|
||||
role: "Interior Stylist",
|
||||
quote: "The quality of the ceramics I purchased is absolutely breathtaking.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-shopaholic-woman-with-colorful-paper-bags_23-2147823604.jpg",
|
||||
},
|
||||
{
|
||||
name: "Marcus J.",
|
||||
role: "Architect",
|
||||
quote: "Finally, a shop that prioritizes both aesthetics and sustainability.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-creative-man-holding-tablet-papers-carpentry-workshop_342744-800.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah P.",
|
||||
role: "Content Creator",
|
||||
quote: "My living room feels so much more grounded since adding these pieces.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-worker-desk_1170-83.jpg",
|
||||
},
|
||||
{
|
||||
name: "David W.",
|
||||
role: "Entrepreneur",
|
||||
quote: "The shipping was fast, and the packaging was completely plastic-free.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-interacting-color-swatch_1170-832.jpg",
|
||||
},
|
||||
{
|
||||
name: "Chloe M.",
|
||||
role: "Home Chef",
|
||||
quote: "I love the rustic charm of these wooden kitchen accessories.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-friends-looking-up-product-shop_23-2148721120.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user