Merge version_2_1781785863762 into main #2

Merged
bender merged 1 commits from version_2_1781785863762 into main 2026-06-18 12:32:33 +00:00
10 changed files with 374 additions and 257 deletions

View File

@@ -1,5 +1,6 @@
import FooterSimpleMedia from '@/components/sections/footer/FooterSimpleMedia';
import NavbarCentered from '@/components/ui/NavbarCentered';
import DropdownMenu from '@/components/ui/DropdownMenu';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
import SiteBackgroundSlot from "@/components/ui/SiteBackgroundSlot";
import { Outlet } from 'react-router-dom';
@@ -41,13 +42,28 @@ export default function Layout() {
<StyleProvider buttonVariant="shift" siteBackground="floatingGradient" heroBackground="gradientBars">
<SiteBackgroundSlot />
<SectionErrorBoundary name="navbar">
<NavbarCentered
logo="Human House"
ctaButton={{
text: "Shop Now",
href: "#products",
}}
navItems={navItems} />
<div className="relative z-50">
<NavbarCentered
logo="Human House"
ctaButton={{
text: "Shop Now",
href: "#products",
}}
navItems={navItems}
/>
<div className="absolute top-4 right-40 z-50 hidden md:block">
<DropdownMenu
options={[
{ label: 'ENG', value: 'eng' },
{ label: 'UZB', value: 'uzb' },
{ label: 'RUS', value: 'rus' }
]}
value="eng"
onChange={(val) => console.log('Language changed to:', val)}
className="w-24 bg-background/80 backdrop-blur-sm border-border"
/>
</div>
</div>
</SectionErrorBoundary>
<main className="flex-grow">
<Outlet />

View File

@@ -1,262 +1,36 @@
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
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 TestimonialsSection from './HomePage/sections/Testimonials';
import ProofSection from './HomePage/sections/Proof';
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">
<HeroCenteredLogos
avatarsSrc={[
"http://img.b2bpic.net/free-photo/woman-resting-her-art-studio_273609-12942.jpg",
"http://img.b2bpic.net/free-photo/side-view-woman-checking-natural-pigmented-cloths_23-2148734283.jpg",
"http://img.b2bpic.net/free-photo/medium-shot-man-holding-plate_23-2148986267.jpg",
"http://img.b2bpic.net/free-photo/woman-buying-stuff-decoration-store_1303-24634.jpg",
]}
avatarText="Join our community of culture lovers"
title="Human House: Traditions of Central Asia"
description="Discover unique hand-crafted collections that embody the spirit, traditions, and rich character of people living across Central Asia."
primaryButton={{
text: "Explore Collection",
href: "#products",
}}
secondaryButton={{
text: "Our Story",
href: "#about",
}}
names={[
"Cultural Enthusiasts",
"Artisans",
"Collectors",
"Designers",
]}
imageSrc="http://img.b2bpic.net/free-photo/round-shelf-with-vessels_116348-46.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="Our Essence"
title="Heart of the Silk Road"
description="Human House Shop collections are full of traditions and characters of people living in Central Asia. We bridge the gap between ancient craftsmanship and contemporary living through thoughtfully curated, handmade goods."
imageSrc="http://img.b2bpic.net/free-photo/person-working-embroidery-workshop_23-2148970773.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesMediaCarousel
tag="Craftsmanship"
title="A Life of Tradition"
description="Experience the intricate details of life in Central Asia through our artisanal features."
items={[
{
title: "Ceramic Heritage",
description: "Centuries of pottery technique.",
buttonIcon: "Palette",
imageSrc: "http://img.b2bpic.net/free-photo/cactus-plant-lemon-mint-tea-cup-oriental-floral-design-textured-backdrop_23-2148123977.jpg?_wi=1",
},
{
title: "Woven Stories",
description: "Ancient textiles telling tales.",
buttonIcon: "Layers",
imageSrc: "http://img.b2bpic.net/free-photo/carpets-market-marrakech_23-2148129866.jpg",
},
{
title: "Artisan Woodcraft",
description: "Carving beauty into every piece.",
buttonIcon: "Hammer",
imageSrc: "http://img.b2bpic.net/free-photo/two-ancient-kettles-with-empty-wooden-plate-burlap_114579-40135.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesRevealCardsBento
tag="Curated Shop"
title="Explore Our Collections"
description="Find authentic pieces for your home and lifestyle."
items={[
{
title: "Ceramic Bowls",
description: "Hand-painted clay artisan bowls.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-plants-deco_23-2149192267.jpg",
},
{
title: "Embroidered Cushions",
description: "Silk and cotton traditional patterns.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/fabric-background-with-floral-pattern_1385-1976.jpg",
},
{
title: "Wall Hanging",
description: "Intricate traditional weave decor.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/circular-clock-indoors-still-life_23-2150436161.jpg",
},
{
title: "Copper Jugs",
description: "Hand-hammered heritage water jugs.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/craftswoman-working-workshop_107420-65186.jpg",
},
{
title: "Leather Accessories",
description: "Traditional motifs on leather.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-beautiful-rpg-still-life-items_23-2149282419.jpg",
},
{
title: "Tea Ware",
description: "Traditional ceramic tea sets.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-cups-wooden-board_23-2149860577.jpg",
},
{
title: "Wool Carpets",
description: "Warm artisanal floor rugs.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/intricate-gold-mosaic-facade-wat-phra-kaew-temple_1308-189361.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ProductsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialOverlayCards
tag="Testimonials"
title="Loved by Our Community"
description="Hear what our patrons and artisan partners have to say."
testimonials={[
{
name: "Anna S.",
role: "Collector",
company: "Human House Fan",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-headband_155996-38.jpg",
},
{
name: "Marco V.",
role: "Architect",
company: "V Studio",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/shoemaker-work_1321-2749.jpg",
},
{
name: "Elena K.",
role: "Interior Designer",
company: "K Design",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/front-view-smiley-woman-posing-studio_23-2150104881.jpg",
},
{
name: "Sanjay D.",
role: "Visitor",
company: "Cultural Explorer",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/seller-shows-ripe-fruits-veggies_482257-76484.jpg",
},
{
name: "Leila F.",
role: "Local Artisan",
company: "Handmade Guild",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/talented-woman-working-with-japanese-paper_23-2149048411.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="proof" data-section="proof">
<SectionErrorBoundary name="proof">
<SocialProofMarquee
tag="Global Recognition"
title="Honoring Craft Worldwide"
description="Trusted by heritage groups and design studios."
names={[
"Craft Heritage Guild",
"Silk Road Arts",
"Central Asian Design Council",
"Global Artisan Collective",
"Modern Folk Gallery",
"Nomadic Soul Interior",
"Heritage Daily",
]}
/>
</SectionErrorBoundary>
</div>
<ProofSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="Help"
title="Frequently Asked Questions"
description="Everything you need to know about our sourcing."
categories={[
{
name: "Shipping",
items: [
{
question: "Do you ship worldwide?",
answer: "Yes, we ship globally.",
},
{
question: "How long is shipping?",
answer: "Average 10-14 days.",
},
],
},
{
name: "Sourcing",
items: [
{
question: "Where are goods made?",
answer: "Handmade in Central Asia.",
},
{
question: "Are pieces fair trade?",
answer: "Always fair wages.",
},
],
},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Contact Us"
text="Have a specific request or looking to partner?"
primaryButton={{
text: "Get in touch",
href: "#",
}}
secondaryButton={{
text: "Follow us",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

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="Our Essence"
title="Heart of the Silk Road"
description="Human House Shop collections are full of traditions and characters of people living in Central Asia. We bridge the gap between ancient craftsmanship and contemporary living through thoughtfully curated, handmade goods."
imageSrc="http://img.b2bpic.net/free-photo/person-working-embroidery-workshop_23-2148970773.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View 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="Contact Us"
text="Have a specific request or looking to partner?"
primaryButton={{
text: "Get in touch",
href: "#",
}}
secondaryButton={{
text: "Follow us",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,48 @@
// 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 FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="Help"
title="Frequently Asked Questions"
description="Everything you need to know about our sourcing."
categories={[
{
name: "Shipping",
items: [
{
question: "Do you ship worldwide?",
answer: "Yes, we ship globally.",
},
{
question: "How long is shipping?",
answer: "Average 10-14 days.",
},
],
},
{
name: "Sourcing",
items: [
{
question: "Where are goods made?",
answer: "Handmade in Central Asia.",
},
{
question: "Are pieces fair trade?",
answer: "Always fair wages.",
},
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,40 @@
// 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 FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesMediaCarousel
tag="Craftsmanship"
title="A Life of Tradition"
description="Experience the intricate details of life in Central Asia through our artisanal features."
items={[
{
title: "Ceramic Heritage",
description: "Centuries of pottery technique.",
buttonIcon: "Palette",
imageSrc: "http://img.b2bpic.net/free-photo/cactus-plant-lemon-mint-tea-cup-oriental-floral-design-textured-backdrop_23-2148123977.jpg?_wi=1",
},
{
title: "Woven Stories",
description: "Ancient textiles telling tales.",
buttonIcon: "Layers",
imageSrc: "http://img.b2bpic.net/free-photo/carpets-market-marrakech_23-2148129866.jpg",
},
{
title: "Artisan Woodcraft",
description: "Carving beauty into every piece.",
buttonIcon: "Hammer",
imageSrc: "http://img.b2bpic.net/free-photo/two-ancient-kettles-with-empty-wooden-plate-burlap_114579-40135.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,41 @@
// 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 HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroCenteredLogos
avatarsSrc={[
"http://img.b2bpic.net/free-photo/woman-resting-her-art-studio_273609-12942.jpg",
"http://img.b2bpic.net/free-photo/side-view-woman-checking-natural-pigmented-cloths_23-2148734283.jpg",
"http://img.b2bpic.net/free-photo/medium-shot-man-holding-plate_23-2148986267.jpg",
"http://img.b2bpic.net/free-photo/woman-buying-stuff-decoration-store_1303-24634.jpg",
]}
avatarText="Join our community of culture lovers"
title="Human House: Traditions of Central Asia"
description="Discover unique hand-crafted collections that embody the spirit, traditions, and rich character of people living across Central Asia."
primaryButton={{
text: "Explore Collection",
href: "#products",
}}
secondaryButton={{
text: "Our Story",
href: "#about",
}}
names={[
"Cultural Enthusiasts",
"Artisans",
"Collectors",
"Designers",
]}
imageSrc="http://img.b2bpic.net/free-photo/round-shelf-with-vessels_116348-46.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View 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="Curated Shop"
title="Explore Our Collections"
description="Find authentic pieces for your home and lifestyle."
items={[
{
title: "Ceramic Bowls",
description: "Hand-painted clay artisan bowls.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/still-life-with-plants-deco_23-2149192267.jpg",
},
{
title: "Embroidered Cushions",
description: "Silk and cotton traditional patterns.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/fabric-background-with-floral-pattern_1385-1976.jpg",
},
{
title: "Wall Hanging",
description: "Intricate traditional weave decor.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/circular-clock-indoors-still-life_23-2150436161.jpg",
},
{
title: "Copper Jugs",
description: "Hand-hammered heritage water jugs.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/craftswoman-working-workshop_107420-65186.jpg",
},
{
title: "Leather Accessories",
description: "Traditional motifs on leather.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-beautiful-rpg-still-life-items_23-2149282419.jpg",
},
{
title: "Tea Ware",
description: "Traditional ceramic tea sets.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-cups-wooden-board_23-2149860577.jpg",
},
{
title: "Wool Carpets",
description: "Warm artisanal floor rugs.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/intricate-gold-mosaic-facade-wat-phra-kaew-temple_1308-189361.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 "proof" section.
import React from 'react';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ProofSection(): React.JSX.Element {
return (
<div id="proof" data-section="proof">
<SectionErrorBoundary name="proof">
<SocialProofMarquee
tag="Global Recognition"
title="Honoring Craft Worldwide"
description="Trusted by heritage groups and design studios."
names={[
"Craft Heritage Guild",
"Silk Road Arts",
"Central Asian Design Council",
"Global Artisan Collective",
"Modern Folk Gallery",
"Nomadic Soul Interior",
"Heritage Daily",
]}
/>
</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 "testimonials" section.
import React from 'react';
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialOverlayCards
tag="Testimonials"
title="Loved by Our Community"
description="Hear what our patrons and artisan partners have to say."
testimonials={[
{
name: "Anna S.",
role: "Collector",
company: "Human House Fan",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-headband_155996-38.jpg",
},
{
name: "Marco V.",
role: "Architect",
company: "V Studio",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/shoemaker-work_1321-2749.jpg",
},
{
name: "Elena K.",
role: "Interior Designer",
company: "K Design",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/front-view-smiley-woman-posing-studio_23-2150104881.jpg",
},
{
name: "Sanjay D.",
role: "Visitor",
company: "Cultural Explorer",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/seller-shows-ripe-fruits-veggies_482257-76484.jpg",
},
{
name: "Leila F.",
role: "Local Artisan",
company: "Handmade Guild",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/talented-woman-working-with-japanese-paper_23-2149048411.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}