Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ab675e9eeb | |||
| 6afd826e30 | |||
|
|
a26cb3da35 | ||
| b027dcc9a2 | |||
| abcf1cbde4 | |||
| 86e323f31f |
@@ -4,7 +4,6 @@ import { Inter } from "next/font/google";
|
||||
import "./globals.css";
|
||||
import "@/lib/gsap-setup";
|
||||
import { ServiceWrapper } from "@/components/ServiceWrapper";
|
||||
import Tag from "@/tag/Tag";
|
||||
import { getVisualEditScript } from "@/utils/visual-edit-script";
|
||||
import { Montserrat } from "next/font/google";
|
||||
|
||||
@@ -26,7 +25,7 @@ export default function RootLayout({
|
||||
<html lang="en" suppressHydrationWarning>
|
||||
<ServiceWrapper>
|
||||
<body className={`${montserrat.variable} antialiased`}>
|
||||
<Tag />
|
||||
|
||||
{children}
|
||||
<script
|
||||
dangerouslySetInnerHTML={{
|
||||
|
||||
121
src/app/page.tsx
121
src/app/page.tsx
@@ -6,6 +6,7 @@ import FaqBase from '@/components/sections/faq/FaqBase';
|
||||
import FaqSplitText from '@/components/sections/faq/FaqSplitText';
|
||||
import FooterCard from '@/components/sections/footer/FooterCard';
|
||||
import HeroBillboardTestimonial from '@/components/sections/hero/HeroBillboardTestimonial';
|
||||
import LogoCloudGlassmorphic from "@/components/sections/logocloud/LogoCloudGlassmorphic";
|
||||
import MetricCardFourteen from '@/components/sections/metrics/MetricCardFourteen';
|
||||
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
|
||||
import TextSplitAbout from '@/components/sections/about/TextSplitAbout';
|
||||
@@ -29,21 +30,13 @@ export default function LandingPage() {
|
||||
<NavbarStyleCentered
|
||||
navItems={[
|
||||
{
|
||||
name: "Home",
|
||||
id: "/",
|
||||
},
|
||||
name: "Home", id: "/"},
|
||||
{
|
||||
name: "Shop",
|
||||
id: "/shop",
|
||||
},
|
||||
name: "Shop", id: "/shop"},
|
||||
{
|
||||
name: "About",
|
||||
id: "/about",
|
||||
},
|
||||
name: "About", id: "/about"},
|
||||
{
|
||||
name: "Contact",
|
||||
id: "/contact",
|
||||
},
|
||||
name: "Contact", id: "/contact"},
|
||||
]}
|
||||
brandName="Veloura Intimates"
|
||||
/>
|
||||
@@ -53,52 +46,29 @@ export default function LandingPage() {
|
||||
<HeroBillboardTestimonial
|
||||
useInvertedBackground={true}
|
||||
background={{
|
||||
variant: "gradient-bars",
|
||||
}}
|
||||
variant: "gradient-bars"}}
|
||||
title="Unleash Your Confidence"
|
||||
description="Luxury lingerie designed to make you feel irresistible."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.",
|
||||
handle: "@sarahj",
|
||||
testimonial: "The most comfortable and elegant set I have ever owned. I feel so empowered.",
|
||||
rating: 5,
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AJb0zJP2EWyuYlH5wmRP5jjTA5/a-portrait-of-a-woman-looking-confident--1774618527096-9d1bd115.png?_wi=1",
|
||||
},
|
||||
name: "Sarah J.", handle: "@sarahj", testimonial: "The most comfortable and elegant set I have ever owned. I feel so empowered.", rating: 5,
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AJb0zJP2EWyuYlH5wmRP5jjTA5/a-portrait-of-a-woman-looking-confident--1774618527096-9d1bd115.png?_wi=1"},
|
||||
{
|
||||
name: "Chloe M.",
|
||||
handle: "@chloem",
|
||||
testimonial: "Soft, luxury feel. Perfect fit for every body type.",
|
||||
rating: 5,
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AJb0zJP2EWyuYlH5wmRP5jjTA5/a-portrait-of-a-woman-with-an-elegant-sm-1774618528979-2f055a22.png",
|
||||
},
|
||||
name: "Chloe M.", handle: "@chloem", testimonial: "Soft, luxury feel. Perfect fit for every body type.", rating: 5,
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AJb0zJP2EWyuYlH5wmRP5jjTA5/a-portrait-of-a-woman-with-an-elegant-sm-1774618528979-2f055a22.png"},
|
||||
{
|
||||
name: "Amelia R.",
|
||||
handle: "@ameliar",
|
||||
testimonial: "Sophisticated designs that make me feel beautiful every single day.",
|
||||
rating: 5,
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AJb0zJP2EWyuYlH5wmRP5jjTA5/a-portrait-of-a-stylish-woman-high-fashi-1774618525531-ff699f82.png",
|
||||
},
|
||||
name: "Amelia R.", handle: "@ameliar", testimonial: "Sophisticated designs that make me feel beautiful every single day.", rating: 5,
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AJb0zJP2EWyuYlH5wmRP5jjTA5/a-portrait-of-a-stylish-woman-high-fashi-1774618525531-ff699f82.png"},
|
||||
{
|
||||
name: "Elena V.",
|
||||
handle: "@elenav",
|
||||
testimonial: "My partner loved the gift, and I loved the quality of the lace!",
|
||||
rating: 5,
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AJb0zJP2EWyuYlH5wmRP5jjTA5/a-portrait-of-a-sophisticated-woman-1774618527017-703f5186.png",
|
||||
},
|
||||
name: "Elena V.", handle: "@elenav", testimonial: "My partner loved the gift, and I loved the quality of the lace!", rating: 5,
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AJb0zJP2EWyuYlH5wmRP5jjTA5/a-portrait-of-a-sophisticated-woman-1774618527017-703f5186.png"},
|
||||
{
|
||||
name: "Sophia L.",
|
||||
handle: "@sophialuxe",
|
||||
testimonial: "Truly unmatched quality. I feel like a queen every time I wear these pieces.",
|
||||
rating: 5,
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AJb0zJP2EWyuYlH5wmRP5jjTA5/a-portrait-of-a-woman-looking-confident--1774618527096-9d1bd115.png?_wi=2",
|
||||
},
|
||||
name: "Sophia L.", handle: "@sophialuxe", testimonial: "Truly unmatched quality. I feel like a queen every time I wear these pieces.", rating: 5,
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AJb0zJP2EWyuYlH5wmRP5jjTA5/a-portrait-of-a-woman-looking-confident--1774618527096-9d1bd115.png?_wi=2"},
|
||||
]}
|
||||
buttons={[
|
||||
{
|
||||
text: "Shop Now",
|
||||
href: "/shop",
|
||||
},
|
||||
text: "Shop Now", href: "/shop"},
|
||||
]}
|
||||
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AJb0zJP2EWyuYlH5wmRP5jjTA5/professional-fashion-photography-of-a-co-1774618527118-96d74e84.png"
|
||||
mediaAnimation="slide-up"
|
||||
@@ -106,14 +76,25 @@ export default function LandingPage() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="logo-cloud" data-section="logo-cloud">
|
||||
<LogoCloudGlassmorphic
|
||||
badgeText="Trusted by 10+ companies"
|
||||
logos={[
|
||||
{ src: "https://placehold.co/400x400?text=Logo1", alt: "Company 1" },
|
||||
{ src: "https://placehold.co/400x400?text=Logo2", alt: "Company 2" },
|
||||
{ src: "https://placehold.co/400x400?text=Logo3", alt: "Company 3" },
|
||||
{ src: "https://placehold.co/400x400?text=Logo4", alt: "Company 4" },
|
||||
{ src: "https://placehold.co/400x400?text=Logo5", alt: "Company 5" },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="about-section" data-section="about-section">
|
||||
<TextSplitAbout
|
||||
useInvertedBackground={false}
|
||||
title="Our Philosophy"
|
||||
description={[
|
||||
"At Veloura Intimates, we believe confidence starts from within. Our pieces are crafted to celebrate self-love and the beauty of your skin.",
|
||||
"Every stitch is designed with the modern, empowered woman in mind—blending comfort with pure luxury.",
|
||||
]}
|
||||
"At Veloura Intimates, we believe confidence starts from within. Our pieces are crafted to celebrate self-love and the beauty of your skin.", "Every stitch is designed with the modern, empowered woman in mind—blending comfort with pure luxury."]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -123,20 +104,11 @@ export default function LandingPage() {
|
||||
useInvertedBackground={true}
|
||||
faqs={[
|
||||
{
|
||||
id: "f1",
|
||||
title: "How do I find my size?",
|
||||
content: "Check our detailed size guide on each product page for a perfect, comfortable fit.",
|
||||
},
|
||||
id: "f1", title: "How do I find my size?", content: "Check our detailed size guide on each product page for a perfect, comfortable fit."},
|
||||
{
|
||||
id: "f2",
|
||||
title: "Is the shipping free?",
|
||||
content: "We offer free shipping on all orders over $100.",
|
||||
},
|
||||
id: "f2", title: "Is the shipping free?", content: "We offer free shipping on all orders over $100."},
|
||||
{
|
||||
id: "f3",
|
||||
title: "What is your return policy?",
|
||||
content: "We accept returns within 30 days of purchase for unused, pristine items.",
|
||||
},
|
||||
id: "f3", title: "What is your return policy?", content: "We accept returns within 30 days of purchase for unused, pristine items."},
|
||||
]}
|
||||
title="Common Questions"
|
||||
description="Everything you need to know about your order and comfort fit."
|
||||
@@ -151,20 +123,11 @@ export default function LandingPage() {
|
||||
tag="Quality Assured"
|
||||
metrics={[
|
||||
{
|
||||
id: "m1",
|
||||
value: "100+",
|
||||
description: "Unique Designs",
|
||||
},
|
||||
id: "m1", value: "100+", description: "Unique Designs"},
|
||||
{
|
||||
id: "m2",
|
||||
value: "5k+",
|
||||
description: "Happy Clients",
|
||||
},
|
||||
id: "m2", value: "5k+", description: "Happy Clients"},
|
||||
{
|
||||
id: "m3",
|
||||
value: "24/7",
|
||||
description: "Support",
|
||||
},
|
||||
id: "m3", value: "24/7", description: "Support"},
|
||||
]}
|
||||
metricsAnimation="slide-up"
|
||||
/>
|
||||
@@ -178,15 +141,9 @@ export default function LandingPage() {
|
||||
faqsAnimation="slide-up"
|
||||
faqs={[
|
||||
{
|
||||
id: "f1",
|
||||
title: "How do I care for my lace?",
|
||||
content: "We recommend hand washing in cool water with mild detergent.",
|
||||
},
|
||||
id: "f1", title: "How do I care for my lace?", content: "We recommend hand washing in cool water with mild detergent."},
|
||||
{
|
||||
id: "f2",
|
||||
title: "Do you ship globally?",
|
||||
content: "Yes, we ship our luxury collection worldwide.",
|
||||
},
|
||||
id: "f2", title: "Do you ship globally?", content: "Yes, we ship our luxury collection worldwide."},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
56
src/components/sections/logocloud/LogoCloudGlassmorphic.tsx
Normal file
56
src/components/sections/logocloud/LogoCloudGlassmorphic.tsx
Normal file
@@ -0,0 +1,56 @@
|
||||
"use client";
|
||||
|
||||
import { cls } from "@/lib/utils";
|
||||
import Image from "next/image";
|
||||
|
||||
interface Logo {
|
||||
src: string;
|
||||
alt: string;
|
||||
}
|
||||
|
||||
interface LogoCloudGlassmorphicProps {
|
||||
badgeText: string;
|
||||
logos: Logo[];
|
||||
useInvertedBackground?: boolean;
|
||||
className?: string;
|
||||
containerClassName?: string;
|
||||
badgeClassName?: string;
|
||||
logosContainerClassName?: string;
|
||||
}
|
||||
|
||||
export default function LogoCloudGlassmorphic({
|
||||
badgeText,
|
||||
logos,
|
||||
useInvertedBackground = false,
|
||||
className = "",
|
||||
containerClassName = "",
|
||||
badgeClassName = "",
|
||||
logosContainerClassName = "",
|
||||
}: LogoCloudGlassmorphicProps) {
|
||||
return (
|
||||
<section className={cls("relative w-full py-hero-page-padding", className)}>
|
||||
<div className={cls("w-content-width mx-auto flex flex-col items-center gap-6", containerClassName)}>
|
||||
<div
|
||||
className={cls(
|
||||
"tag-card rounded-theme-capped px-4 py-2 text-sm",
|
||||
badgeClassName
|
||||
)}
|
||||
>
|
||||
{badgeText}
|
||||
</div>
|
||||
<div className={cls("flex w-full flex-wrap items-center justify-center gap-x-8 gap-y-4 opacity-80", logosContainerClassName)}>
|
||||
{logos.map((logo, index) => (
|
||||
<Image
|
||||
key={index}
|
||||
src={logo.src}
|
||||
alt={logo.alt}
|
||||
width={120}
|
||||
height={40}
|
||||
className="h-8 w-auto object-contain"
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user