diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx
new file mode 100644
index 0000000..c6f171a
--- /dev/null
+++ b/src/app/about/page.tsx
@@ -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 (
+
+
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/app/admin/dashboard/page.tsx b/src/app/admin/dashboard/page.tsx
new file mode 100644
index 0000000..ac31a53
--- /dev/null
+++ b/src/app/admin/dashboard/page.tsx
@@ -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 (
+
+
+
+
+
+
{activeTab.charAt(0).toUpperCase() + activeTab.slice(1)} Management
+
+
+
+
+
+
Dashboard interface for managing {activeTab}.
+
+ CRUD operations table placeholder
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx
new file mode 100644
index 0000000..1d0cbcb
--- /dev/null
+++ b/src/app/contact/page.tsx
@@ -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 (
+
+
+
+ alert("Message sent!")}
+ />
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/app/fragrance-request/page.tsx b/src/app/fragrance-request/page.tsx
new file mode 100644
index 0000000..39066f6
--- /dev/null
+++ b/src/app/fragrance-request/page.tsx
@@ -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 (
+
+
+
+ alert("Request submitted! We will reach out shortly.")}
+ />
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/app/page.tsx b/src/app/page.tsx
index c1176c7..b17e0fe 100644
--- a/src/app/page.tsx
+++ b/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"
/>
@@ -390,38 +211,12 @@ export default function LandingPage() {
);
-}
+}
\ No newline at end of file
diff --git a/src/app/products/page.tsx b/src/app/products/page.tsx
new file mode 100644
index 0000000..8d83624
--- /dev/null
+++ b/src/app/products/page.tsx
@@ -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 (
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/app/services/page.tsx b/src/app/services/page.tsx
new file mode 100644
index 0000000..9a77c28
--- /dev/null
+++ b/src/app/services/page.tsx
@@ -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 (
+
+
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/app/styles/variables.css b/src/app/styles/variables.css
index d12c3c0..926623a 100644
--- a/src/app/styles/variables.css
+++ b/src/app/styles/variables.css
@@ -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);