From 15cb147c81dc27ace35e4a947c26f11a7c4b9fbe Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 6 Jun 2026 19:24:25 +0700 Subject: [PATCH] fix(spa): redesign remaining pages to light theme --- apps/spa/src/components/Navbar.tsx | 2 +- apps/spa/src/pages/AboutPage.tsx | 26 ++++++++--------- apps/spa/src/pages/ArticleReaderPage.tsx | 10 +++---- apps/spa/src/pages/ContactPage.tsx | 28 +++++++++--------- apps/spa/src/pages/FaqPage.tsx | 16 +++++------ apps/spa/src/pages/NotFoundPage.tsx | 12 ++++---- apps/spa/src/pages/ScentGuidePage.tsx | 12 ++++---- fix_theme.js | 36 ++++++++++++++++++++++++ 8 files changed, 89 insertions(+), 53 deletions(-) create mode 100644 fix_theme.js diff --git a/apps/spa/src/components/Navbar.tsx b/apps/spa/src/components/Navbar.tsx index 91eab4b..3b08a1d 100644 --- a/apps/spa/src/components/Navbar.tsx +++ b/apps/spa/src/components/Navbar.tsx @@ -271,7 +271,7 @@ export default function Navbar({ categories = [] }: NavbarProps) { {/* ── MOBILE DRAWER ── */}
{/* Backdrop */}
-

Our Story

+

Our Story

- Born from a passion for stillness + Born from a passion for stillness

HomAroma began in 2019 as a one-person studio in Bangkok, crafting small batches of botanical aroma blends for friends and family. What started as a personal journey toward calm became a philosophy — that our environment shapes how we feel, think, and rest. @@ -58,11 +58,11 @@ export default function AboutPage() { {/* Stats Band */} -

+
{STATS.map(s => (
-
{s.value}
+
{s.value}
{s.label}
))} @@ -73,7 +73,7 @@ export default function AboutPage() {
-

Our Mission

+

Our Mission

Transforming spaces into sanctuaries of peace

@@ -81,10 +81,10 @@ export default function AboutPage() { We believe that scent is the fastest pathway to emotional transformation. A single breath of the right blend can dissolve anxiety, sharpen focus, or unlock creativity. Our mission is to make that transformation accessible — through products that are as beautiful as they are effective.

- Every HomAroma product is designed with intention: the glass bottles are reusable, the packaging is recycled, and the formulas are written to be understood by anyone — not hidden behind chemical jargon. + Every HomAroma product is designed with intention: the bg-white shadow-sm border border-spa-stone/10 bottles are reusable, the packaging is recycled, and the formulas are written to be understood by anyone — not hidden behind chemical jargon.

-
+
@@ -97,16 +97,16 @@ export default function AboutPage() {
{/* Three Pillars */} -
+
-

What We Stand For

+

What We Stand For

Three Pillars

-
+
{PILLARS.map(p => ( -
+
{p.icon}

{p.title}

{p.desc}

@@ -125,13 +125,13 @@ export default function AboutPage() {
Take the Scent Guide Shop All Products diff --git a/apps/spa/src/pages/ArticleReaderPage.tsx b/apps/spa/src/pages/ArticleReaderPage.tsx index c362bee..f03a751 100644 --- a/apps/spa/src/pages/ArticleReaderPage.tsx +++ b/apps/spa/src/pages/ArticleReaderPage.tsx @@ -25,7 +25,7 @@ export default function ArticleReaderPage() { if (loading) return (
- +
) @@ -41,13 +41,13 @@ export default function ArticleReaderPage() { ) return ( -
+
- + @@ -56,7 +56,7 @@ export default function ArticleReaderPage() { Go Back -

+

{new Date(article.createdAt).toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' })}

@@ -66,7 +66,7 @@ export default function ArticleReaderPage() { {/* Cover Image */} {article.coverImage && ( -
+
{article.title}
)} diff --git a/apps/spa/src/pages/ContactPage.tsx b/apps/spa/src/pages/ContactPage.tsx index 9d06bb4..d4fe8b7 100644 --- a/apps/spa/src/pages/ContactPage.tsx +++ b/apps/spa/src/pages/ContactPage.tsx @@ -35,8 +35,8 @@ export default function ContactPage() { {/* Header */} -
-

Get in Touch

+
+

Get in Touch

Contact Us

Have a question, custom request, or partnership idea? We'd love to hear from you. @@ -56,32 +56,32 @@ export default function ContactPage() { { icon: '📍', label: 'Studio', value: 'Bangkok, Thailand', href: '#' }, ].map(item => ( -

-
+

Response Time

Email - ~2 hours + ~2 hours
LINE - ~30 minutes + ~30 minutes
Instagram DM - ~4 hours + ~4 hours

Mon–Sat, 9:00–18:00 (ICT)

@@ -98,7 +98,7 @@ export default function ContactPage() {

Thank you for reaching out. We'll get back to you within 2 hours.

@@ -116,7 +116,7 @@ export default function ContactPage() { value={form.name} onChange={handleChange} placeholder="Your name" - className="w-full glass border border-white/10 focus:border-cyan-glow/40 rounded-xl px-4 py-3.5 bg-transparent outline-none text-sm text-white placeholder-slate-600 transition-colors" + className="w-full bg-white shadow-sm border border-spa-stone/10 border border-spa-stone/10 focus:border-spa-forest rounded-xl px-4 py-3.5 bg-transparent outline-none text-sm text-white placeholder-slate-600 transition-colors" />
@@ -128,7 +128,7 @@ export default function ContactPage() { value={form.email} onChange={handleChange} placeholder="your@email.com" - className="w-full glass border border-white/10 focus:border-cyan-glow/40 rounded-xl px-4 py-3.5 bg-transparent outline-none text-sm text-white placeholder-slate-600 transition-colors" + className="w-full bg-white shadow-sm border border-spa-stone/10 border border-spa-stone/10 focus:border-spa-forest rounded-xl px-4 py-3.5 bg-transparent outline-none text-sm text-white placeholder-slate-600 transition-colors" />
@@ -139,7 +139,7 @@ export default function ContactPage() { name="subject" value={form.subject} onChange={handleChange} - className="w-full glass border border-white/10 focus:border-cyan-glow/40 rounded-xl px-4 py-3.5 bg-night-900 outline-none text-sm text-white transition-colors" + className="w-full bg-white shadow-sm border border-spa-stone/10 border border-spa-stone/10 focus:border-spa-forest rounded-xl px-4 py-3.5 bg-white outline-none text-sm text-white transition-colors" > {SUBJECTS.map(s => )} @@ -154,13 +154,13 @@ export default function ContactPage() { onChange={handleChange} rows={6} placeholder="Tell us about your inquiry..." - className="w-full glass border border-white/10 focus:border-cyan-glow/40 rounded-xl px-4 py-3.5 bg-transparent outline-none text-sm text-white placeholder-slate-600 resize-none transition-colors" + className="w-full bg-white shadow-sm border border-spa-stone/10 border border-spa-stone/10 focus:border-spa-forest rounded-xl px-4 py-3.5 bg-transparent outline-none text-sm text-white placeholder-slate-600 resize-none transition-colors" />
{/* Still have questions? */} -
+
💬

Still have questions?

Our team is here to help — usually responds within 2 hours.

Contact Us diff --git a/apps/spa/src/pages/NotFoundPage.tsx b/apps/spa/src/pages/NotFoundPage.tsx index e7025c8..a028445 100644 --- a/apps/spa/src/pages/NotFoundPage.tsx +++ b/apps/spa/src/pages/NotFoundPage.tsx @@ -2,11 +2,11 @@ import { Link } from 'react-router-dom' export default function NotFoundPage() { return ( -
+
{/* Background glow */}
-
-
+
+
@@ -30,19 +30,19 @@ export default function NotFoundPage() {
Go Home Browse Products
-
+
Scent Guide FAQ diff --git a/apps/spa/src/pages/ScentGuidePage.tsx b/apps/spa/src/pages/ScentGuidePage.tsx index 3945587..d436e65 100644 --- a/apps/spa/src/pages/ScentGuidePage.tsx +++ b/apps/spa/src/pages/ScentGuidePage.tsx @@ -18,8 +18,8 @@ export default function ScentGuidePage() { {/* Header */} -
-

Journal

+
+

Journal

Scent Guide

Explore our collection of articles, guides, and sensory knowledge. @@ -37,9 +37,9 @@ export default function ScentGuidePage() { -

+
{article.coverImage ? ( {article.title} ) : ( @@ -49,10 +49,10 @@ export default function ScentGuidePage() { )}
-

+

{new Date(article.createdAt).toLocaleDateString()}

-

{article.title}

+

{article.title}

{/* Remove HTML tags for purely excerpt preview */}
diff --git a/fix_theme.js b/fix_theme.js new file mode 100644 index 0000000..7ba03b2 --- /dev/null +++ b/fix_theme.js @@ -0,0 +1,36 @@ +const fs = require('fs'); + +const files = [ + 'apps/spa/src/pages/AboutPage.tsx', + 'apps/spa/src/pages/ContactPage.tsx', + 'apps/spa/src/pages/FaqPage.tsx', + 'apps/spa/src/pages/ScentGuidePage.tsx', + 'apps/spa/src/pages/NotFoundPage.tsx', + 'apps/spa/src/pages/ArticleReaderPage.tsx' +]; + +for (const file of files) { + let content = fs.readFileSync(file, 'utf8'); + + // Specific replaces for safety + content = content.replace(/bg-night-950/g, 'bg-pop-bg'); + content = content.replace(/bg-night-900/g, 'bg-white'); + content = content.replace(/bg-night-800\/20/g, 'bg-white border-b border-spa-stone/10'); + content = content.replace(/bg-night-[0-9]+\/[0-9]+/g, 'bg-spa-stone/10'); + + content = content.replace(/text-cyan-glow/g, 'text-spa-forest'); + content = content.replace(/bg-cyan-glow\/[0-9]+/g, 'bg-spa-forest/10'); + content = content.replace(/bg-cyan-glow/g, 'bg-spa-forest text-white'); + + content = content.replace(/border-cyan-glow\/[0-9]+/g, 'border-spa-forest'); + content = content.replace(/border-white\/[0-9]+/g, 'border-spa-stone/10'); + + content = content.replace(/text-night-900/g, 'text-spa-forest'); + content = content.replace(/to-night-700/g, 'to-spa-stone'); + + // Replace glass with light theme equivalent + content = content.replace(/glass/g, 'bg-white shadow-sm border border-spa-stone/10'); + + fs.writeFileSync(file, content); +} +console.log("Done fixing themes.");