diff --git a/apps/spa/src/index.css b/apps/spa/src/index.css index bced9dc..741850b 100644 --- a/apps/spa/src/index.css +++ b/apps/spa/src/index.css @@ -1,71 +1,78 @@ @import "tailwindcss"; @theme { - /* Night Luxury color palette */ - --color-night-900: #0B0C10; - --color-night-800: #1F2833; - --color-night-700: #45A29E; - --color-cyan-glow: #66FCF1; - --color-silver-metallic: #C5C6C7; + /* Memphis Pop-Art color palette */ + --color-pop-pink: #FF69B4; + --color-pop-yellow: #FFF200; + --color-pop-orange: #FF8800; + --color-pop-red: #FF3333; + --color-pop-cyan: #00FFFF; + --color-pop-green: #39FF14; + --color-pop-purple: #BA55D3; + --color-pop-bg: #FFF9E6; + --color-pop-black: #111111; + /* Brutalist Shadows */ + --shadow-brutal: 6px 6px 0px 0px #111; + --shadow-brutal-hover: 2px 2px 0px 0px #111; + /* Custom animations */ - --animate-fade-in: fade-in 1.2s ease-out forwards; - --animate-float: float 3s ease-in-out infinite; + --animate-pop-in: pop-in 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards; + --animate-spin-slow: spin 8s linear infinite; - @keyframes fade-in { - 0% { opacity: 0; transform: translateY(10px); } - 100% { opacity: 1; transform: translateY(0); } - } - - @keyframes float { - 0%, 100% { transform: translateY(0); } - 50% { transform: translateY(-10px); } + @keyframes pop-in { + 0% { opacity: 0; transform: scale(0.8); } + 100% { opacity: 1; transform: scale(1); } } } @layer base { body { - @apply bg-night-900 text-silver-metallic font-sans antialiased; - background-image: - radial-gradient(at 0% 0%, rgba(31, 40, 51, 0.5) 0px, transparent 50%), - radial-gradient(at 100% 100%, rgba(11, 12, 16, 1) 0px, transparent 50%); + @apply bg-pop-bg text-pop-black font-sans antialiased; + background-image: radial-gradient(#111 2px, transparent 2px); + background-size: 32px 32px; + background-position: 0 0, 16px 16px; min-height: 100vh; } h1, h2, h3, h4 { - @apply text-white tracking-tight leading-none; + @apply text-pop-black font-black uppercase tracking-tight; } } @layer components { - .glass { - @apply bg-white/5 backdrop-blur-lg border border-white/10; + .brutal-box { + @apply bg-white border-4 border-pop-black shadow-brutal transition-all duration-300; } - .glass-hover { - @apply transition-all duration-300 hover:bg-white/10 hover:border-white/20; + .brutal-box-hover { + @apply hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-brutal-hover; } - .text-glow { - text-shadow: 0 0 15px rgba(102, 252, 241, 0.4); + .brutal-button { + @apply px-8 py-4 bg-pop-yellow text-pop-black font-black uppercase border-4 border-pop-black shadow-brutal transition-all duration-200 hover:bg-pop-pink hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-brutal-hover; + } + + .brutal-button-alt { + @apply px-8 py-4 bg-pop-cyan text-pop-black font-black uppercase border-4 border-pop-black shadow-brutal transition-all duration-200 hover:bg-pop-orange hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-brutal-hover; } } /* Custom Scrollbar */ ::-webkit-scrollbar { - width: 8px; + width: 12px; } ::-webkit-scrollbar-track { - @apply bg-night-900; + @apply bg-pop-bg border-l-4 border-pop-black; } ::-webkit-scrollbar-thumb { - @apply bg-night-800 rounded-full border-2 border-night-900; + @apply bg-pop-pink border-4 border-pop-black; } ::-webkit-scrollbar-thumb:hover { - @apply bg-night-700; + @apply bg-pop-red; } /* Smooth Scrolling */ @@ -73,12 +80,12 @@ html { scroll-behavior: smooth; } -/* Product Editorial Image Overrides (for ReactQuill Content) */ +/* Product Editorial Image Overrides */ .product-editorial img { width: 100%; max-width: 480px; margin: 2rem auto; display: block; - border: 1px solid rgba(255, 255, 255, 0.1); - box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5); + border: 4px solid var(--color-pop-black); + box-shadow: var(--shadow-brutal); } diff --git a/apps/spa/src/pages/HomePage.tsx b/apps/spa/src/pages/HomePage.tsx index f28eb98..aad1adc 100644 --- a/apps/spa/src/pages/HomePage.tsx +++ b/apps/spa/src/pages/HomePage.tsx @@ -38,35 +38,37 @@ export default function HomePage() { }, []) return ( -
+
{/* Hero Section */} -
-
+
+
Hero Background { (e.target as HTMLImageElement).style.display = 'none' }} /> -
-
-

- {hero?.tagline || "A New Paradigm of Calm"} +

+
+ +
+

+ {hero?.tagline || "Vibrant Memphis Pop-Art"}

-

+

{hero ? ( hero.title.split('[').map((part, i) => { if (part.includes(']')) { const [accent, rest] = part.split(']') return ( - + {accent} {rest} @@ -78,83 +80,74 @@ export default function HomePage() { ) : ( <> Inhale{' '} - + Serenity )}

-

+

{hero?.description || "Crafting premium sensory experiences that transform your space into a sanctuary of peace."}

-
+
{hero?.buttonText || "Explore Collection"} Learn More
- -
-
-
{/* Categories Showcase */} -
-
-
-

- Our Range -

-

The Categories

-
+
+
+
+
+

+ The Categories +

{loading ? ( -
+
{Array.from({ length: 5 }).map((_, i) => ( -
+
))}
) : ( -
- {categories.map((cat) => ( +
+ {categories.map((cat, idx) => ( +
{cat.name} { (e.target as HTMLImageElement).style.display = 'none' }} /> -
-
- +
+
+ {cat.name} {cat._count && ( - + {cat._count.products} products )}
-
- - - -
))}
@@ -163,33 +156,32 @@ export default function HomePage() {
{/* Featured Products */} -
-
-
-
-

- Top Picks -

-

Featured Products

-
+
+
+
+

+ Featured Picks +

- View All → + View All
{loading ? ( -
+
{Array.from({ length: 3 }).map((_, i) => ( -
+
))}
) : ( -
- {featuredProducts.map((p) => ( - +
+ {featuredProducts.map((p, idx) => ( +
+ +
))}
)} diff --git a/apps/spa/tailwind.config.js b/apps/spa/tailwind.config.js index 34b0db4..f9e264e 100644 --- a/apps/spa/tailwind.config.js +++ b/apps/spa/tailwind.config.js @@ -7,31 +7,31 @@ export default { theme: { extend: { colors: { - night: { - 900: "#0B0C10", - 800: "#1F2833", - 700: "#45A29E", + pop: { + pink: "#FF69B4", + yellow: "#FFF200", + orange: "#FF8800", + red: "#FF3333", + cyan: "#00FFFF", + green: "#39FF14", + purple: "#BA55D3", + bg: "#FFF9E6", + black: "#111111", }, - cyan: { - glow: "#66FCF1" - }, - silver: { - metallic: "#C5C6C7" - } + }, + boxShadow: { + 'brutal': '6px 6px 0px 0px #111', + 'brutal-hover': '2px 2px 0px 0px #111', }, animation: { - 'fade-in': 'fade-in 1.2s ease-out forwards', - 'float': 'float 3s ease-in-out infinite', + 'pop-in': 'pop-in 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards', + 'spin-slow': 'spin 8s linear infinite', }, keyframes: { - 'fade-in': { - '0%': { opacity: '0', transform: 'translateY(10px)' }, - '100%': { opacity: '1', transform: 'translateY(0)' }, + 'pop-in': { + '0%': { opacity: '0', transform: 'scale(0.8)' }, + '100%': { opacity: '1', transform: 'scale(1)' }, }, - 'float': { - '0%, 100%': { transform: 'translateY(0)' }, - '50%': { transform: 'translateY(-10px)' }, - } } }, }, diff --git a/apps/website/src/app/globals.css b/apps/website/src/app/globals.css index bced9dc..741850b 100644 --- a/apps/website/src/app/globals.css +++ b/apps/website/src/app/globals.css @@ -1,71 +1,78 @@ @import "tailwindcss"; @theme { - /* Night Luxury color palette */ - --color-night-900: #0B0C10; - --color-night-800: #1F2833; - --color-night-700: #45A29E; - --color-cyan-glow: #66FCF1; - --color-silver-metallic: #C5C6C7; + /* Memphis Pop-Art color palette */ + --color-pop-pink: #FF69B4; + --color-pop-yellow: #FFF200; + --color-pop-orange: #FF8800; + --color-pop-red: #FF3333; + --color-pop-cyan: #00FFFF; + --color-pop-green: #39FF14; + --color-pop-purple: #BA55D3; + --color-pop-bg: #FFF9E6; + --color-pop-black: #111111; + /* Brutalist Shadows */ + --shadow-brutal: 6px 6px 0px 0px #111; + --shadow-brutal-hover: 2px 2px 0px 0px #111; + /* Custom animations */ - --animate-fade-in: fade-in 1.2s ease-out forwards; - --animate-float: float 3s ease-in-out infinite; + --animate-pop-in: pop-in 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards; + --animate-spin-slow: spin 8s linear infinite; - @keyframes fade-in { - 0% { opacity: 0; transform: translateY(10px); } - 100% { opacity: 1; transform: translateY(0); } - } - - @keyframes float { - 0%, 100% { transform: translateY(0); } - 50% { transform: translateY(-10px); } + @keyframes pop-in { + 0% { opacity: 0; transform: scale(0.8); } + 100% { opacity: 1; transform: scale(1); } } } @layer base { body { - @apply bg-night-900 text-silver-metallic font-sans antialiased; - background-image: - radial-gradient(at 0% 0%, rgba(31, 40, 51, 0.5) 0px, transparent 50%), - radial-gradient(at 100% 100%, rgba(11, 12, 16, 1) 0px, transparent 50%); + @apply bg-pop-bg text-pop-black font-sans antialiased; + background-image: radial-gradient(#111 2px, transparent 2px); + background-size: 32px 32px; + background-position: 0 0, 16px 16px; min-height: 100vh; } h1, h2, h3, h4 { - @apply text-white tracking-tight leading-none; + @apply text-pop-black font-black uppercase tracking-tight; } } @layer components { - .glass { - @apply bg-white/5 backdrop-blur-lg border border-white/10; + .brutal-box { + @apply bg-white border-4 border-pop-black shadow-brutal transition-all duration-300; } - .glass-hover { - @apply transition-all duration-300 hover:bg-white/10 hover:border-white/20; + .brutal-box-hover { + @apply hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-brutal-hover; } - .text-glow { - text-shadow: 0 0 15px rgba(102, 252, 241, 0.4); + .brutal-button { + @apply px-8 py-4 bg-pop-yellow text-pop-black font-black uppercase border-4 border-pop-black shadow-brutal transition-all duration-200 hover:bg-pop-pink hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-brutal-hover; + } + + .brutal-button-alt { + @apply px-8 py-4 bg-pop-cyan text-pop-black font-black uppercase border-4 border-pop-black shadow-brutal transition-all duration-200 hover:bg-pop-orange hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-brutal-hover; } } /* Custom Scrollbar */ ::-webkit-scrollbar { - width: 8px; + width: 12px; } ::-webkit-scrollbar-track { - @apply bg-night-900; + @apply bg-pop-bg border-l-4 border-pop-black; } ::-webkit-scrollbar-thumb { - @apply bg-night-800 rounded-full border-2 border-night-900; + @apply bg-pop-pink border-4 border-pop-black; } ::-webkit-scrollbar-thumb:hover { - @apply bg-night-700; + @apply bg-pop-red; } /* Smooth Scrolling */ @@ -73,12 +80,12 @@ html { scroll-behavior: smooth; } -/* Product Editorial Image Overrides (for ReactQuill Content) */ +/* Product Editorial Image Overrides */ .product-editorial img { width: 100%; max-width: 480px; margin: 2rem auto; display: block; - border: 1px solid rgba(255, 255, 255, 0.1); - box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5); + border: 4px solid var(--color-pop-black); + box-shadow: var(--shadow-brutal); } diff --git a/apps/website/src/app/page.tsx b/apps/website/src/app/page.tsx index 482c136..272fc06 100644 --- a/apps/website/src/app/page.tsx +++ b/apps/website/src/app/page.tsx @@ -42,30 +42,32 @@ export default async function HomePage() { ]) return ( -
+
{/* Hero Section */} -
-
+
+
Hero Background -
-
-

- {hero?.tagline || "A New Paradigm of Calm"} +

+
+ +
+

+ {hero?.tagline || "Vibrant Memphis Pop-Art"}

-

+

{hero ? ( hero.title.split('[').map((part, i) => { if (part.includes(']')) { const [accent, rest] = part.split(']') return ( - + {accent} {rest} @@ -77,75 +79,66 @@ export default async function HomePage() { ) : ( <> Inhale{' '} - + Serenity )}

-

+

{hero?.description || "Crafting premium sensory experiences that transform your space into a sanctuary of peace."}

-
+
{hero?.buttonText || "Explore Collection"} Learn More
- -
-
-
{/* Categories Showcase */} -
-
-
-

- Our Range -

-

The Categories

-
+
+
+
+
+

+ The Categories +

-
- {categories.map((cat) => ( +
+ {categories.map((cat, idx) => ( +
{cat.name} -
-
- +
+
+ {cat.name} {cat._count && ( - + {cat._count.products} products )}
-
- - - -
))}
@@ -153,26 +146,25 @@ export default async function HomePage() {
{/* Featured Products */} -
-
-
-
-

- Top Picks -

-

Featured Products

-
+
+
+
+

+ Featured Picks +

- View All → + View All
-
- {featuredProducts.map((p) => ( - +
+ {featuredProducts.map((p, idx) => ( +
+ +
))}