8 Commits

Author SHA1 Message Date
04bfcbbaf2 Merge version_5_1782032344359 into main
Merge version_5_1782032344359 into main
2026-06-21 09:00:46 +00:00
67ad171b14 Update src/pages/HomePage/sections/Products.tsx 2026-06-21 09:00:43 +00:00
592ddda4f1 Update src/pages/HomePage/sections/Hero.tsx 2026-06-21 09:00:42 +00:00
a80a11af3b Merge version_5_1782032344359 into main
Merge version_5_1782032344359 into main
2026-06-21 09:00:36 +00:00
kudinDmitriyUp
b777ac3d25 Bob AI: Update product gallery with new bag color variations 2026-06-21 08:59:55 +00:00
bb5b2ac198 Merge version_4_1782032136860 into main
Merge version_4_1782032136860 into main
2026-06-21 08:57:54 +00:00
kudinDmitriyUp
b46797ae70 Bob AI: Update hero and product gallery with the provided bag image 2026-06-21 08:57:14 +00:00
a935675358 Merge version_3_1782031993553 into main
Merge version_3_1782031993553 into main
2026-06-21 08:54:41 +00:00
2 changed files with 159 additions and 58 deletions

View File

@@ -10,19 +10,19 @@ export default function HeroSection(): React.JSX.Element {
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplit
tag="Luxury Defined"
title="Timeless Elegance in Every Stitch"
description="Discover the art of refined luxury with our exclusive collection of premium leather bags, handcrafted for the modern connoisseur."
primaryButton={{
tag="Luxury Defined"
title="Timeless Elegance in Every Stitch"
description="Discover the art of refined luxury with our exclusive collection of premium leather bags, handcrafted for the modern connoisseur."
primaryButton={{
text: "Explore Collection",
href: "#products",
}}
secondaryButton={{
secondaryButton={{
text: "Contact Us",
href: "#contact",
}}
imageSrc="http://img.b2bpic.net/free-photo/top-view-desk-concept-with-copy-space_23-2148459663.jpg"
/>
imageSrc="https://storage.googleapis.com/webild/users/user_3FRI9hSVlKawL1T7Ct3lwyvoctg/uploaded-1782032135946-bapcaypw.png?_wi=1"
/>
</SectionErrorBoundary>
</div>
);

View File

@@ -1,57 +1,158 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "products" section.
/* eslint-disable */
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
import Button from "@/components/ui/Button";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import ScrollReveal from "@/components/ui/ScrollReveal";
import { cls } from "@/lib/utils";
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
const items = [
{
title: "Classic Tote",
description: "The ultimate everyday statement.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FRI9hSVlKawL1T7Ct3lwyvoctg/uploaded-1782032135946-bapcaypw.png?_wi=2"
},
{
title: "Crossbody Chic",
description: "Hands-free luxury refined.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FRI9hSVlKawL1T7Ct3lwyvoctg/uploaded-1782032343425-ptuhoama.png?_wi=1"
},
{
title: "Evening Clutch",
description: "Sophistication for every occasion.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FRI9hSVlKawL1T7Ct3lwyvoctg/uploaded-1782032343428-nbdvxo47.png"
},
{
title: "Satchel Elegance",
description: "Timeless structure and style.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FRI9hSVlKawL1T7Ct3lwyvoctg/uploaded-1782032343430-h9m2pm0m.jpg"
},
{
title: "Modern Bucket",
description: "Contemporary design reinvented.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FRI9hSVlKawL1T7Ct3lwyvoctg/uploaded-1782032343430-mvl5k58d.jpg"
},
{
title: "Signature Hobo",
description: "Relaxed and utterly refined.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FRI9hSVlKawL1T7Ct3lwyvoctg/uploaded-1782032135946-bapcaypw.png?_wi=3"
},
{
title: "Deluxe Portfolio",
description: "Function meets luxury design.",
imageSrc: "https://storage.googleapis.com/webild/users/user_3FRI9hSVlKawL1T7Ct3lwyvoctg/uploaded-1782032343425-ptuhoama.png?_wi=2"
}
];
type FeatureItem = {
title: string;
description: string;
href?: string;
} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never });
interface FeaturesImageBentoProps {
tag: string;
title: string;
description: string;
primaryButton?: { text: string; href: string };
secondaryButton?: { text: string; href: string };
items: [FeatureItem, FeatureItem, FeatureItem, FeatureItem, FeatureItem, FeatureItem, FeatureItem];
}
const ProductsInline = () => {
const gridClasses = [
"md:col-span-2",
"md:col-span-4",
"md:col-span-3",
"md:col-span-3",
"md:col-span-2",
"md:col-span-2",
"md:col-span-2",
];
const staggerDelays = [
0,
0.1,
0,
0.1,
0,
0.1,
0.2,
];
export default function ProductsSection(): React.JSX.Element {
return (
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesImageBento
tag="The Collection"
title="Signature Pieces"
description="Exquisitely designed bags that define your presence."
items={[
{
title: "Classic Tote",
description: "The ultimate everyday statement.",
imageSrc: "http://img.b2bpic.net/free-photo/fashion-portrait-two-stylish-caucasian-woman-blazers-french-cap-classic-white-hat-stand_343596-2175.jpg",
},
{
title: "Crossbody Chic",
description: "Hands-free luxury refined.",
imageSrc: "http://img.b2bpic.net/free-photo/women-s-day-still-life-with-makeup-jewelry_23-2149263158.jpg",
},
{
title: "Evening Clutch",
description: "Sophistication for every occasion.",
imageSrc: "http://img.b2bpic.net/free-photo/view-women-s-bag-with-mediterranean-tiles-aesthetics_23-2150916702.jpg",
},
{
title: "Satchel Elegance",
description: "Timeless structure and style.",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-brown-bow-with-black-bow-dark-surface-darkness-pin-measure-photo-color_179666-24409.jpg",
},
{
title: "Modern Bucket",
description: "Contemporary design reinvented.",
imageSrc: "http://img.b2bpic.net/free-photo/small-purse-studio-still-life_23-2151046495.jpg",
},
{
title: "Signature Hobo",
description: "Relaxed and utterly refined.",
imageSrc: "http://img.b2bpic.net/free-photo/happy-father-s-day-composition-father-s-day-top-view_185193-109772.jpg",
},
{
title: "Deluxe Portfolio",
description: "Function meets luxury design.",
imageSrc: "http://img.b2bpic.net/free-photo/closeup-black-fabric-texture-outdoor-setting-sunlight-background-blurred-product-shot_272375-26448.jpg",
},
]}
/>
</SectionErrorBoundary>
<section aria-label="Features image bento section" className="py-20">
<div className="flex flex-col gap-8 md:gap-10">
<div className="flex flex-col items-center w-content-width mx-auto gap-2">
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
<p>{"The Collection"}</p>
</div>
<TextAnimation
text={"Signature Pieces"}
variant="slide-up"
gradientText={true}
tag="h2"
className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance"
/>
<TextAnimation
text={"Exquisitely designed bags that define your presence."}
variant="slide-up"
gradientText={false}
tag="p"
className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance"
/>
{(undefined || undefined) && (
<div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3">
{undefined && <Button text={undefined.text} href={undefined.href} variant="primary"/>}
{undefined && <Button text={undefined.text} href={undefined.href} variant="secondary" animationDelay={0.1} />}
</div>
)}
</div>
<div className="w-content-width mx-auto grid grid-cols-1 md:grid-cols-6 gap-3">
{items.map((item, index) => {
const content = (
<div className="relative h-80 xl:h-100 2xl:h-120 overflow-hidden">
<ImageOrVideo
imageSrc={item.imageSrc}
videoSrc={item.videoSrc}
className="rounded group-hover:scale-105 transition-transform duration-500"
/>
<div className="absolute inset-x-5 bottom-5 xl:inset-x-6 xl:bottom-6 2xl:inset-x-7 2xl:bottom-7 flex flex-col text-background">
<span className="text-2xl font-semibold leading-snug truncate">{item.title}</span>
<span className="text-base leading-snug truncate">{item.description}</span>
</div>
</div>
);
return (
<ScrollReveal key={index} variant="slide-up" delay={staggerDelays[index]} className={cls("col-span-1 group", gridClasses[index])}>
{item.href ? (
<a href={item.href} className="block overflow-hidden rounded">
{content}
</a>
) : (
<div className="overflow-hidden rounded">
{content}
</div>
)}
</ScrollReveal>
);
})}
</div>
</div>
</section>
);
};
export default function ProductsSection() {
return (
<div data-webild-section="products" id="products">
<ProductsInline />
</div>
);
}