4 Commits

Author SHA1 Message Date
e0179b5230 Merge version_2_1782125849784 into main
Merge version_2_1782125849784 into main
2026-06-22 10:59:52 +00:00
kudinDmitriyUp
461acaadfe Bob AI: Populate src/pages/ShopPage.tsx (snippet builder, 2 sections) 2026-06-22 10:59:16 +00:00
kudinDmitriyUp
d38e9e44fa Bob AI: Add shop page 2026-06-22 10:58:26 +00:00
2ee021fa29 Merge version_1_1782125535153 into main
Merge version_1_1782125535153 into main
2026-06-22 10:53:25 +00:00
4 changed files with 25 additions and 1 deletions

View File

@@ -2,11 +2,13 @@ import { Routes, Route } from 'react-router-dom';
import Layout from './components/Layout';
import HomePage from './pages/HomePage';
import ShopPage from "@/pages/ShopPage";
export default function App() {
return (
<Routes>
<Route element={<Layout />}>
<Route path="/" element={<HomePage />} />
<Route path="/shop" element={<ShopPage />} />
</Route>
</Routes>
);

View File

@@ -27,7 +27,9 @@ export default function Layout() {
},
{
"name": "Team", "href": "#team"
}
},
{ name: "Shop", href: "/shop" },
];
return (

19
src/pages/ShopPage.tsx Normal file
View File

@@ -0,0 +1,19 @@
import Button from "@/components/ui/Button";
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import ScrollReveal from "@/components/ui/ScrollReveal";
import AvatarGroup from "@/components/ui/AvatarGroup";
import { Star, Loader2 } from "lucide-react";
import { cls } from "@/lib/utils";
import GridOrCarousel from "@/components/ui/GridOrCarousel";
import useProducts from "@/hooks/useProducts";
export default function ShopPage() {
return (
<>
<div data-webild-section="HeroBillboard"><section aria-label="Hero section" className="relative pt-25 pb-20 md:pt-30"><HeroBackgroundSlot /><div className="flex flex-col gap-12 md:gap-15 w-content-width mx-auto"><div className="flex flex-col items-center gap-3 text-center"><AvatarGroup avatarsSrc={["https://img.freepik.com/free-photo/portrait-young-beautiful-woman-with-smoky-eyes-makeup-red-lips_186202-8958.jpg","https://img.freepik.com/free-photo/close-up-portrait-beautiful-young-woman-with-elegant-make-up-red-lips_186202-8960.jpg","https://img.freepik.com/free-photo/beautiful-woman-with-red-lipstick_23-2148330752.jpg"]} label="Loved by beauty enthusiasts everywhere" className="mb-1" /><TextAnimation text="Unleash Your Bold Beauty" variant="fade" gradientText={true} tag="h1" className="md:max-w-8/10 text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-center text-balance" /><TextAnimation text="Explore our complete collection of professional-grade makeup. From ruby-red lips to flawless foundations, find everything you need to speak your truth." variant="fade" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="Shop Collection" href="#products" variant="primary" /><Button text="Read Reviews" href="#reviews" variant="secondary" animationDelay={0.1} /></div></div><ScrollReveal variant="fade" delay={0.2} className="w-full p-2 xl:p-3 2xl:p-4 card rounded overflow-hidden"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/flat-lay-makeup-products-with-red-lipstick_23-2148330760.jpg" className="aspect-4/5 md:aspect-video" /></ScrollReveal></div></section></div>
<div data-webild-section="ProductRatingCards"><section aria-label="Products section" className="py-20"><div className="w-content-width mx-auto flex justify-center"><Loader2 className="size-8 animate-spin text-foreground" strokeWidth={1.5} /></div></section></div>
</>
);
}

View File

@@ -6,4 +6,5 @@ export interface Route {
export const routes: Route[] = [
{ path: '/', label: 'Home', pageFile: 'HomePage' },
{ path: '/shop', label: 'Shop', pageFile: 'ShopPage' },
];