Merge version_2 into main
Merge version_2 into main
This commit was merged in pull request #1.
This commit is contained in:
47
src/app/about/page.tsx
Normal file
47
src/app/about/page.tsx
Normal file
@@ -0,0 +1,47 @@
|
||||
"use client"
|
||||
|
||||
import ReactLenis from "lenis/react";
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import TextAbout from '@/components/sections/about/TextAbout';
|
||||
import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
|
||||
|
||||
export default function AboutPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="bounce-effect"
|
||||
defaultTextAnimation="background-highlight"
|
||||
borderRadius="rounded"
|
||||
contentWidth="medium"
|
||||
sizing="mediumLargeSizeLargeTitles"
|
||||
background="circleGradient"
|
||||
cardStyle="layered-gradient"
|
||||
primaryButtonStyle="radial-glow"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="semibold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="UMBRA"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Collection", id: "/products" },
|
||||
{ name: "About", id: "/about" },
|
||||
{ name: "Services", id: "/services" }
|
||||
]}
|
||||
button={{ text: "Contact", href: "/contact" }}
|
||||
/>
|
||||
<div className="pt-32 pb-20">
|
||||
<TextAbout
|
||||
title="Our Story"
|
||||
useInvertedBackground={false}
|
||||
/>
|
||||
</div>
|
||||
<FooterLogoEmphasis
|
||||
logoText="UMBRA"
|
||||
columns={[]}
|
||||
/>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
42
src/app/admin/dashboard/page.tsx
Normal file
42
src/app/admin/dashboard/page.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
"use client";
|
||||
|
||||
import React, { useState } from 'react';
|
||||
import { ThemeProvider } from '@/providers/themeProvider/ThemeProvider';
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import { Settings, FileText, ShoppingBag, Mail, Plus } from 'lucide-react';
|
||||
|
||||
export default function AdminDashboard() {
|
||||
const [activeTab, setActiveTab] = useState('pages');
|
||||
|
||||
return (
|
||||
<ThemeProvider>
|
||||
<div className="min-h-screen bg-gray-50">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="UMBRA ADMIN"
|
||||
navItems={[
|
||||
{ name: "Content", id: "pages" },
|
||||
{ name: "Products", id: "products" },
|
||||
{ name: "Requests", id: "requests" }
|
||||
]}
|
||||
/>
|
||||
<main className="pt-24 px-8 max-w-7xl mx-auto">
|
||||
<div className="flex justify-between items-center mb-8">
|
||||
<h1 className="text-3xl font-bold">{activeTab.charAt(0).toUpperCase() + activeTab.slice(1)} Management</h1>
|
||||
<button className="bg-black text-white px-4 py-2 rounded flex items-center gap-2">
|
||||
<Plus size={18} /> Add New
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 gap-6">
|
||||
<div className="bg-white p-6 rounded-lg shadow-sm border border-gray-100">
|
||||
<p className="text-gray-600">Dashboard interface for managing {activeTab}.</p>
|
||||
<div className="mt-4 p-8 border-2 border-dashed border-gray-200 rounded flex justify-center text-gray-400">
|
||||
CRUD operations table placeholder
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
29
src/app/contact/page.tsx
Normal file
29
src/app/contact/page.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
"use client"
|
||||
|
||||
import React from 'react';
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
||||
|
||||
export default function ContactPage() {
|
||||
return (
|
||||
<ThemeProvider>
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="UMBRA"
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Collection", id: "/#products" }, { name: "Fragrance Request", id: "/fragrance-request" }]}
|
||||
/>
|
||||
<div className="pt-32">
|
||||
<ContactSplitForm
|
||||
title="Contact Us"
|
||||
description="Get in touch for support or collaborations."
|
||||
inputs={[
|
||||
{ name: "name", type: "text", placeholder: "Name", required: true },
|
||||
{ name: "email", type: "email", placeholder: "Email", required: true }
|
||||
]}
|
||||
textarea={{ name: "msg", placeholder: "Message", required: true }}
|
||||
onSubmit={(data) => alert("Message sent!")}
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
29
src/app/fragrance-request/page.tsx
Normal file
29
src/app/fragrance-request/page.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
"use client"
|
||||
|
||||
import React from 'react';
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
||||
|
||||
export default function FragranceRequestPage() {
|
||||
return (
|
||||
<ThemeProvider>
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="UMBRA"
|
||||
navItems={[{ name: "Home", id: "/" }, { name: "Collection", id: "/#products" }, { name: "Contact", id: "/contact" }]}
|
||||
/>
|
||||
<div className="pt-32">
|
||||
<ContactSplitForm
|
||||
title="Bespoke Fragrance Design"
|
||||
description="We'll help you craft the perfect scent profile."
|
||||
inputs={[
|
||||
{ name: "name", type: "text", placeholder: "Name", required: true },
|
||||
{ name: "email", type: "email", placeholder: "Email", required: true }
|
||||
]}
|
||||
textarea={{ name: "pref", placeholder: "Notes", required: true }}
|
||||
onSubmit={(data) => alert("Request submitted! We will reach out shortly.")}
|
||||
/>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
281
src/app/page.tsx
281
src/app/page.tsx
@@ -21,8 +21,8 @@ export default function LandingPage() {
|
||||
defaultButtonVariant="bounce-effect"
|
||||
defaultTextAnimation="background-highlight"
|
||||
borderRadius="rounded"
|
||||
contentWidth="small"
|
||||
sizing="mediumLargeSizeLargeTitles"
|
||||
contentWidth="medium"
|
||||
sizing="largeSizeMediumTitles"
|
||||
background="circleGradient"
|
||||
cardStyle="layered-gradient"
|
||||
primaryButtonStyle="radial-glow"
|
||||
@@ -57,36 +57,12 @@ export default function LandingPage() {
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
carouselItems={[
|
||||
{
|
||||
id: "1",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-1.webp",
|
||||
imageAlt: "UMBRA Solum Eau de Parfum held against earth tones"
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-2.webp",
|
||||
imageAlt: "UMBRA Solum white bottle with draped fabric"
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-3.webp",
|
||||
imageAlt: "UMBRA Solum with botanical wood and greenery"
|
||||
},
|
||||
{
|
||||
id: "4",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-4.webp",
|
||||
imageAlt: "UMBRA Solum on stone pedestal with natural light"
|
||||
},
|
||||
{
|
||||
id: "5",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-5.webp",
|
||||
imageAlt: "Model with bronzing face drops"
|
||||
},
|
||||
{
|
||||
id: "6",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-6.webp",
|
||||
imageAlt: "UMBRA Solum flat lay with golden serums"
|
||||
}
|
||||
{ id: "1", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-1.webp", imageAlt: "UMBRA Solum Eau de Parfum held against earth tones" },
|
||||
{ id: "2", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-2.webp", imageAlt: "UMBRA Solum white bottle with draped fabric" },
|
||||
{ id: "3", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-3.webp", imageAlt: "UMBRA Solum with botanical wood and greenery" },
|
||||
{ id: "4", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-4.webp", imageAlt: "UMBRA Solum on stone pedestal with natural light" },
|
||||
{ id: "5", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-5.webp", imageAlt: "Model with bronzing face drops" },
|
||||
{ id: "6", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/hero-6.webp", imageAlt: "UMBRA Solum flat lay with golden serums" }
|
||||
]}
|
||||
autoPlay={true}
|
||||
autoPlayInterval={4000}
|
||||
@@ -112,38 +88,10 @@ export default function LandingPage() {
|
||||
tagIcon={Award}
|
||||
tagAnimation="slide-up"
|
||||
products={[
|
||||
{
|
||||
id: "1",
|
||||
name: "Solum Eau de Parfum",
|
||||
price: "$185",
|
||||
variant: "50ml • Earthy & Warm",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/product-1.webp",
|
||||
imageAlt: "Solum Eau de Parfum"
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
name: "Aura Eau de Parfum",
|
||||
price: "$165",
|
||||
variant: "50ml • Floral & Soft",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/product-2.webp",
|
||||
imageAlt: "Aura Eau de Parfum"
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
name: "Velour Body Mist",
|
||||
price: "$125",
|
||||
variant: "100ml • Light & Fresh",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/product-3.webp",
|
||||
imageAlt: "Velour Body Mist"
|
||||
},
|
||||
{
|
||||
id: "4",
|
||||
name: "Noir Absolu Parfum",
|
||||
price: "$195",
|
||||
variant: "30ml • Rich & Intense",
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/product-4.webp",
|
||||
imageAlt: "Noir Absolu Parfum"
|
||||
}
|
||||
{ id: "1", name: "Solum Eau de Parfum", price: "$185", variant: "50ml • Earthy & Warm", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/product-1.webp" },
|
||||
{ id: "2", name: "Aura Eau de Parfum", price: "$165", variant: "50ml • Floral & Soft", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/product-2.webp" },
|
||||
{ id: "3", name: "Velour Body Mist", price: "$125", variant: "100ml • Light & Fresh", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/product-3.webp" },
|
||||
{ id: "4", name: "Noir Absolu Parfum", price: "$195", variant: "30ml • Rich & Intense", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/product-4.webp" }
|
||||
]}
|
||||
gridVariant="uniform-all-items-equal"
|
||||
animationType="slide-up"
|
||||
@@ -160,24 +108,9 @@ export default function LandingPage() {
|
||||
tagIcon={Beaker}
|
||||
tagAnimation="slide-up"
|
||||
features={[
|
||||
{
|
||||
title: "Rare Ingredient Sourcing",
|
||||
description: "We source precious essences from sustainable fields worldwide — Grasse rose, Madagascan vanilla, and Italian bergamot at their peak.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/organic-cosmetic-product-with-dreamy-aesthetic-fresh-background_23-2151382870.jpg",
|
||||
imageAlt: "Botanical extraction process"
|
||||
},
|
||||
{
|
||||
title: "Master Perfumers",
|
||||
description: "Every composition is crafted by world-renowned noses who balance top, heart, and base notes into unforgettable olfactory journeys.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/preparing-utensils-microneedling-procedure_23-2149374097.jpg",
|
||||
imageAlt: "Laboratory research"
|
||||
},
|
||||
{
|
||||
title: "Lasting Sillage",
|
||||
description: "Our concentrated formulas are designed for exceptional longevity — a single application carries you beautifully from dawn to dusk.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/coffee-machine-with-water-cup_23-2148892890.jpg",
|
||||
imageAlt: "Formulation development"
|
||||
}
|
||||
{ title: "Rare Ingredient Sourcing", description: "We source precious essences from sustainable fields worldwide.", imageSrc: "http://img.b2bpic.net/free-photo/organic-cosmetic-product-with-dreamy-aesthetic-fresh-background_23-2151382870.jpg" },
|
||||
{ title: "Master Perfumers", description: "Every composition is crafted by world-renowned noses.", imageSrc: "http://img.b2bpic.net/free-photo/preparing-utensils-microneedling-procedure_23-2149374097.jpg" },
|
||||
{ title: "Lasting Sillage", description: "Our concentrated formulas are designed for exceptional longevity.", imageSrc: "http://img.b2bpic.net/free-photo/coffee-machine-with-water-cup_23-2148892890.jpg" }
|
||||
]}
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
@@ -192,76 +125,31 @@ export default function LandingPage() {
|
||||
tagIcon={Heart}
|
||||
tagAnimation="slide-up"
|
||||
features={[
|
||||
{
|
||||
title: "Amara Osei",
|
||||
description: " ",
|
||||
videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-amara.mp4",
|
||||
videoAriaLabel: "Amara Osei wearing UMBRA fragrance",
|
||||
},
|
||||
{
|
||||
title: "Chloe Marchand",
|
||||
description: " ",
|
||||
videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-chloe.mp4",
|
||||
videoAriaLabel: "Chloe Marchand getting ready with UMBRA",
|
||||
},
|
||||
{
|
||||
title: "Elena Vasquez",
|
||||
description: " ",
|
||||
videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-elena.mp4",
|
||||
videoAriaLabel: "Elena Vasquez wearing UMBRA fragrance",
|
||||
},
|
||||
{
|
||||
title: "Isla Montgomery",
|
||||
description: " ",
|
||||
videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-isla.mp4",
|
||||
videoAriaLabel: "Isla Montgomery wearing UMBRA fragrance",
|
||||
},
|
||||
{
|
||||
title: "Zara Kimani",
|
||||
description: " ",
|
||||
videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-zara.mp4",
|
||||
videoAriaLabel: "Zara Kimani getting ready with UMBRA fragrance",
|
||||
},
|
||||
{
|
||||
title: "Nadia Petrova",
|
||||
description: " ",
|
||||
videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-nadia.mp4",
|
||||
videoAriaLabel: "Nadia Petrova wearing UMBRA fragrance",
|
||||
},
|
||||
{ title: "Amara Osei", description: " ", videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-amara.mp4" },
|
||||
{ title: "Chloe Marchand", description: " ", videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-chloe.mp4" },
|
||||
{ title: "Elena Vasquez", description: " ", videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-elena.mp4" },
|
||||
{ title: "Isla Montgomery", description: " ", videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-isla.mp4" },
|
||||
{ title: "Zara Kimani", description: " ", videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-zara.mp4" },
|
||||
{ title: "Nadia Petrova", description: " ", videoSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/influencer-nadia.mp4" }
|
||||
]}
|
||||
gridVariant="uniform-all-items-equal"
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
cardDescriptionClassName="hidden"
|
||||
cardTitleClassName="verified-name"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<MetricCardEleven
|
||||
title="Why Women Choose UMBRA"
|
||||
description="Our fragrances deliver an emotional connection that goes beyond scent — a presence that speaks before you do."
|
||||
description="Our fragrances deliver an emotional connection that goes beyond scent."
|
||||
tag="The Numbers"
|
||||
tagIcon={TrendingUp}
|
||||
tagAnimation="slide-up"
|
||||
metrics={[
|
||||
{
|
||||
id: "1",
|
||||
value: "92%",
|
||||
title: "Receive Compliments Daily",
|
||||
description: "Women report being asked what perfume they're wearing within the first week.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-using-face-roller_23-2148803514.jpg",
|
||||
imageAlt: "Skin radiance transformation"
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
value: "87%",
|
||||
title: "Repurchase Their Scent",
|
||||
description: "Our customers return for the same fragrance — a true sign of finding your signature.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/scientist-examining-substance-petri-dish-while-conducting-virus-research_181624-1110.jpg",
|
||||
imageAlt: "Anti-aging results"
|
||||
}
|
||||
{ id: "1", value: "92%", title: "Receive Compliments Daily", description: "Women report being asked what perfume they're wearing.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-using-face-roller_23-2148803514.jpg" },
|
||||
{ id: "2", value: "87%", title: "Repurchase Their Scent", description: "Customers return for the same fragrance.", imageSrc: "http://img.b2bpic.net/free-photo/scientist-examining-substance-petri-dish-while-conducting-virus-research_181624-1110.jpg" }
|
||||
]}
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
@@ -272,44 +160,14 @@ export default function LandingPage() {
|
||||
<div id="blog" data-section="blog">
|
||||
<BlogCardOne
|
||||
title="The UMBRA Journal"
|
||||
description="Stories of scent, craft, and the women who inspire us. Explore the world behind our fragrances."
|
||||
description="Stories of scent, craft, and the women who inspire us."
|
||||
tag="Journal"
|
||||
tagIcon={BookOpen}
|
||||
tagAnimation="slide-up"
|
||||
blogs={[
|
||||
{
|
||||
id: "1",
|
||||
category: "Fragrance Notes",
|
||||
title: "The Art of Layering Scents for Every Season",
|
||||
excerpt: "Discover how to combine UMBRA fragrances for a signature scent that evolves with you throughout the day.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/skin-regeneration-product-still-life_23-2151232284.jpg",
|
||||
imageAlt: "Luxury perfume bottles arranged artfully",
|
||||
authorName: "Camille Laurent",
|
||||
authorAvatar: "http://img.b2bpic.net/free-photo/portrait-successful-businesswoman-with-charming-smile-osing-street-with-interesting-architecture-background_613910-3354.jpg",
|
||||
date: "Feb 2026",
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
category: "Behind the Bottle",
|
||||
title: "From Grasse to Your Vanity: Sourcing Rose Absolute",
|
||||
excerpt: "A journey through the fields of Provence where our master perfumers hand-select the rarest rose petals.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/organic-cosmetic-product-with-dreamy-aesthetic-fresh-background_23-2151382870.jpg",
|
||||
imageAlt: "Rose fields in Provence",
|
||||
authorName: "Elena Vasquez",
|
||||
authorAvatar: "http://img.b2bpic.net/free-photo/senior-woman-portrait_23-2148891695.jpg",
|
||||
date: "Jan 2026",
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
category: "Women of UMBRA",
|
||||
title: "How Amara Osei Found Her Signature Scent",
|
||||
excerpt: "The model and entrepreneur shares why Noir Absolu became the fragrance she never leaves the house without.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-using-face-roller_23-2148803514.jpg",
|
||||
imageAlt: "Amara Osei portrait",
|
||||
authorName: "Nadia Petrova",
|
||||
authorAvatar: "http://img.b2bpic.net/free-photo/pretty-blonde-woman-with-wavy-hair-dressed-skirt-light-blouse-white-jacket-sits-chair_197531-33594.jpg",
|
||||
date: "Jan 2026",
|
||||
},
|
||||
{ id: "1", category: "Fragrance", title: "The Art of Layering", excerpt: "How to combine fragrances.", imageSrc: "http://img.b2bpic.net/free-photo/skin-regeneration-product-still-life_23-2151232284.jpg", authorName: "Camille L.", authorAvatar: "", date: "Feb 2026" },
|
||||
{ id: "2", category: "Sourcing", title: "The Rose Absolute", excerpt: "A journey through Provence.", imageSrc: "http://img.b2bpic.net/free-photo/organic-cosmetic-product-with-dreamy-aesthetic-fresh-background_23-2151382870.jpg", authorName: "Elena V.", authorAvatar: "", date: "Jan 2026" },
|
||||
{ id: "3", category: "Community", title: "Signature Scent", excerpt: "Finding your match.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-using-face-roller_23-2148803514.jpg", authorName: "Nadia P.", authorAvatar: "", date: "Jan 2026" }
|
||||
]}
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
@@ -320,45 +178,15 @@ export default function LandingPage() {
|
||||
<div id="faq" data-section="faq">
|
||||
<FaqSplitMedia
|
||||
title="Frequently Asked Questions"
|
||||
description="Everything you need to know about our luxury fragrances, ingredients, and satisfaction guarantee."
|
||||
description="Everything you need to know."
|
||||
tag="Support"
|
||||
tagIcon={HelpCircle}
|
||||
tagAnimation="slide-up"
|
||||
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/skincare-luxury/faq-image.webp"
|
||||
imageAlt="UMBRA Solum Eau de Parfum with botanical elements"
|
||||
mediaPosition="left"
|
||||
mediaAnimation="slide-up"
|
||||
faqs={[
|
||||
{
|
||||
id: "1",
|
||||
title: "What makes UMBRA fragrances different from other luxury brands?",
|
||||
content: "UMBRA combines rare natural essences with master perfumery techniques. Every composition is developed over months of refinement to deliver extraordinary depth and longevity. We prioritize ingredient quality and sustainable sourcing."
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
title: "How long does the fragrance last on skin?",
|
||||
content: "Most of our Eau de Parfums last 8-12 hours on skin. Our Parfum concentrations can last up to 16 hours. For best results, apply to pulse points — wrists, neck, and behind the ears — right after moisturizing."
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
title: "Are your fragrances suitable for sensitive skin?",
|
||||
content: "Our perfumes are formulated with high-quality, dermatologically considered ingredients. They are free from common irritants and suitable for most skin types. If you have fragrance sensitivities, we recommend trying our discovery set first."
|
||||
},
|
||||
{
|
||||
id: "4",
|
||||
title: "Do you offer a satisfaction guarantee?",
|
||||
content: "We're confident in our compositions. If a fragrance doesn't feel right within 14 days of purchase, we offer a full refund—no questions asked. Your confidence in your scent is our priority."
|
||||
},
|
||||
{
|
||||
id: "5",
|
||||
title: "Are your ingredients natural or synthetic?",
|
||||
content: "We blend premium natural essences — oud, jasmine, rose — with refined aroma molecules for stability and projection. This hybrid approach ensures both authenticity and lasting performance in every bottle."
|
||||
},
|
||||
{
|
||||
id: "6",
|
||||
title: "How do I choose the right fragrance for me?",
|
||||
content: "Start with our Discovery Set to explore all four scents. Solum is earthy and warm, Aura is soft and floral, Velour is light and fresh, and Noir Absolu is rich and intense. Wear each for a full day to find your match."
|
||||
}
|
||||
{ id: "1", title: "Longevity", content: "8-12 hours." },
|
||||
{ id: "2", title: "Skin Safety", content: "Dermatologically considered." },
|
||||
{ id: "3", title: "Returns", content: "14-day full refund." }
|
||||
]}
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
@@ -369,20 +197,13 @@ export default function LandingPage() {
|
||||
<div id="contact" data-section="contact">
|
||||
<ContactSplitForm
|
||||
title="Get in Touch"
|
||||
description="Have a question or looking for your signature scent? We'd love to hear from you. Fill out the form and our fragrance advisors will respond within 24 hours."
|
||||
description="Have a question or looking for your signature scent?"
|
||||
inputs={[
|
||||
{ name: "name", type: "text", placeholder: "Your name", required: true },
|
||||
{ name: "email", type: "email", placeholder: "your@email.com", required: true },
|
||||
{ name: "phone", type: "tel", placeholder: "+1 (555) 000-0000", required: false },
|
||||
{ name: "subject", type: "text", placeholder: "How can we help?", required: true }
|
||||
{ name: "email", type: "email", placeholder: "your@email.com", required: true }
|
||||
]}
|
||||
textarea={{ name: "message", placeholder: "Tell us about your fragrance preferences...", required: true }}
|
||||
useInvertedBackground={false}
|
||||
buttonText="Send Message"
|
||||
mediaAnimation="slide-up"
|
||||
mediaPosition="right"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/skin-regeneration-product-still-life_23-2151232284.jpg?_wi=2"
|
||||
imageAlt="Luxury fragrance contact"
|
||||
buttonText="Send"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -390,38 +211,12 @@ export default function LandingPage() {
|
||||
<FooterLogoEmphasis
|
||||
logoText="UMBRA"
|
||||
columns={[
|
||||
{
|
||||
items: [
|
||||
{ label: "Shop", href: "#products" },
|
||||
{ label: "Our Craft", href: "#ingredients" },
|
||||
{ label: "Why UMBRA", href: "#metrics" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "Our Story", href: "#" },
|
||||
{ label: "Sustainability", href: "#" },
|
||||
{ label: "Community", href: "#influencers" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "Customer Care", href: "#" },
|
||||
{ label: "Contact", href: "#contact" },
|
||||
{ label: "FAQ", href: "#faq" }
|
||||
]
|
||||
},
|
||||
{
|
||||
items: [
|
||||
{ label: "Privacy Policy", href: "#" },
|
||||
{ label: "Terms & Conditions", href: "#" },
|
||||
{ label: "Return Policy", href: "#" }
|
||||
]
|
||||
}
|
||||
{ items: [{ label: "Shop", href: "#products" }, { label: "Craft", href: "#ingredients" }] },
|
||||
{ items: [{ label: "Support", href: "#faq" }, { label: "Contact", href: "#contact" }] }
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
50
src/app/products/page.tsx
Normal file
50
src/app/products/page.tsx
Normal file
@@ -0,0 +1,50 @@
|
||||
"use client"
|
||||
|
||||
import ReactLenis from "lenis/react";
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import ProductCardFour from '@/components/sections/product/ProductCardFour';
|
||||
import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
|
||||
|
||||
export default function ProductsPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="bounce-effect"
|
||||
defaultTextAnimation="background-highlight"
|
||||
borderRadius="rounded"
|
||||
contentWidth="medium"
|
||||
sizing="mediumLargeSizeLargeTitles"
|
||||
background="circleGradient"
|
||||
cardStyle="layered-gradient"
|
||||
primaryButtonStyle="radial-glow"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="semibold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="UMBRA"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Collection", id: "/products" },
|
||||
{ name: "About", id: "/about" },
|
||||
{ name: "Services", id: "/services" }
|
||||
]}
|
||||
button={{ text: "Contact", href: "/contact" }}
|
||||
/>
|
||||
<div className="pt-32 pb-20">
|
||||
<ProductCardFour
|
||||
title="All Products"
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
/>
|
||||
</div>
|
||||
<FooterLogoEmphasis
|
||||
logoText="UMBRA"
|
||||
columns={[]}
|
||||
/>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
49
src/app/services/page.tsx
Normal file
49
src/app/services/page.tsx
Normal file
@@ -0,0 +1,49 @@
|
||||
"use client"
|
||||
|
||||
import ReactLenis from "lenis/react";
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||
import FeatureCardSix from '@/components/sections/feature/FeatureCardSix';
|
||||
import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
|
||||
|
||||
export default function ServicesPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="bounce-effect"
|
||||
defaultTextAnimation="background-highlight"
|
||||
borderRadius="rounded"
|
||||
contentWidth="medium"
|
||||
sizing="mediumLargeSizeLargeTitles"
|
||||
background="circleGradient"
|
||||
cardStyle="layered-gradient"
|
||||
primaryButtonStyle="radial-glow"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="semibold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="UMBRA"
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Collection", id: "/products" },
|
||||
{ name: "About", id: "/about" },
|
||||
{ name: "Services", id: "/services" }
|
||||
]}
|
||||
button={{ text: "Contact", href: "/contact" }}
|
||||
/>
|
||||
<div className="pt-32 pb-20">
|
||||
<FeatureCardSix
|
||||
title="Our Services"
|
||||
features={[]}
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
/>
|
||||
</div>
|
||||
<FooterLogoEmphasis
|
||||
logoText="UMBRA"
|
||||
columns={[]}
|
||||
/>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
@@ -10,15 +10,15 @@
|
||||
--accent: #ffffff;
|
||||
--background-accent: #ffffff; */
|
||||
|
||||
--background: #f7f6f7;
|
||||
--card: #ffffff;
|
||||
--foreground: #250c0d;
|
||||
--primary-cta: #b82b40;
|
||||
--background: #f5faff;
|
||||
--card: #f1f8ff;
|
||||
--foreground: #001122;
|
||||
--primary-cta: #15479c;
|
||||
--primary-cta-text: #f7f6f7;
|
||||
--secondary-cta: #ffffff;
|
||||
--secondary-cta-text: #250c0d;
|
||||
--accent: #b90941;
|
||||
--background-accent: #e8a8b6;
|
||||
--accent: #a8cce8;
|
||||
--background-accent: #7ba3cf;
|
||||
|
||||
/* text sizing - set by ThemeProvider */
|
||||
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);
|
||||
|
||||
Reference in New Issue
Block a user