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);