Mass replace irelax with homaroma across project

This commit is contained in:
Your Name committed 2026-06-03 11:01:01 +07:00
1 parent 5e6cb851de
commit d9c79aa900
57 files changed
+117 -117

No files matched your search

+3 -3
View File
@@ -52,7 +52,7 @@ export default function AboutPage() {
Born from a passion for <span className="text-transparent bg-clip-text bg-gradient-to-r from-cyan-glow to-night-700 italic font-serif">stillness</span>
</h1>
<p className="text-slate-300 text-lg leading-relaxed">
iRelax 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.
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.
</p>
</div>
</section>
@@ -81,7 +81,7 @@ 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.
</p>
<p className="text-slate-400 leading-relaxed text-sm">
Every iRelax 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 glass bottles are reusable, the packaging is recycled, and the formulas are written to be understood by anyone — not hidden behind chemical jargon.
</p>
</div>
<div className="relative h-80 rounded-2xl overflow-hidden glass border border-white/5">
@@ -89,7 +89,7 @@ export default function AboutPage() {
<div className="absolute inset-0 flex items-center justify-center">
<div className="text-center space-y-3">
<div className="text-7xl">🌿</div>
<p className="text-white/30 text-sm uppercase tracking-widest">iRelax Studio, Bangkok</p>
<p className="text-white/30 text-sm uppercase tracking-widest">HomAroma Studio, Bangkok</p>
</div>
</div>
</div>
+6 -6
View File
@@ -58,7 +58,7 @@ export default function CheckoutPage() {
.then(setCategories)
// Check if there's an active coupon saved in localStorage
const savedCoupon = localStorage.getItem('irelax_active_coupon')
const savedCoupon = localStorage.getItem('homaroma_active_coupon')
if (savedCoupon) {
setCouponCode(savedCoupon)
// We will trigger handleApplyCoupon but we need to wait for items/subtotal to be ready.
@@ -80,7 +80,7 @@ export default function CheckoutPage() {
// Auto-apply saved coupon if subtotal is ready
useEffect(() => {
const savedCoupon = localStorage.getItem('irelax_active_coupon')
const savedCoupon = localStorage.getItem('homaroma_active_coupon')
if (savedCoupon && subtotal > 0 && !appliedCoupon && !couponError && !couponLoading) {
setCouponCode(savedCoupon)
// trigger fetch to validate
@@ -96,7 +96,7 @@ export default function CheckoutPage() {
setDiscountAmount(data.discountAmount)
setIsFreeShipping(data.isFreeShipping)
} else {
localStorage.removeItem('irelax_active_coupon') // Remove invalid
localStorage.removeItem('homaroma_active_coupon') // Remove invalid
}
})
.catch(console.error)
@@ -160,7 +160,7 @@ export default function CheckoutPage() {
setDiscountAmount(0)
setIsFreeShipping(false)
setCouponError('')
localStorage.removeItem('irelax_active_coupon')
localStorage.removeItem('homaroma_active_coupon')
}
const handleSubmit = async (e: React.FormEvent) => {
@@ -200,10 +200,10 @@ export default function CheckoutPage() {
if (res.ok) {
clearCart()
const existingStr = localStorage.getItem('irelax_local_orders')
const existingStr = localStorage.getItem('homaroma_local_orders')
const existing = existingStr ? JSON.parse(existingStr) : []
if (!existing.includes(responseData.id)) {
localStorage.setItem('irelax_local_orders', JSON.stringify([responseData.id, ...existing]))
localStorage.setItem('homaroma_local_orders', JSON.stringify([responseData.id, ...existing]))
}
navigate(`/order/${responseData.id}`)
+3 -3
View File
@@ -50,9 +50,9 @@ export default function ContactPage() {
<h2 className="font-bold text-xl mb-6">Reach Us Directly</h2>
<div className="space-y-5">
{[
{ icon: '📧', label: 'Email', value: 'hello@irelax.co.th', href: 'mailto:hello@irelax.co.th' },
{ icon: '📱', label: 'LINE Official', value: '@irelaxessential', href: '#' },
{ icon: '📸', label: 'Instagram', value: '@irelax.essential', href: '#' },
{ icon: '📧', label: 'Email', value: 'hello@homaroma.shop', href: 'mailto:hello@homaroma.shop' },
{ icon: '📱', label: 'LINE Official', value: '@homaroma', href: '#' },
{ icon: '📸', label: 'Instagram', value: '@homaroma', href: '#' },
{ icon: '📍', label: 'Studio', value: 'Bangkok, Thailand', href: '#' },
].map(item => (
<a key={item.label} href={item.href} className="flex items-start gap-4 group">
+1 -1
View File
@@ -56,7 +56,7 @@ export default function CouponsPage() {
}
const handleUseNow = (code: string) => {
localStorage.setItem('irelax_active_coupon', code)
localStorage.setItem('homaroma_active_coupon', code)
navigate('/shop')
}
+3 -3
View File
@@ -8,7 +8,7 @@ const FAQS = [
category: 'Products',
icon: '🌿',
items: [
{ q: 'What are the ingredients in your aroma products?', a: 'All iRelax products are crafted from 100% natural botanical extracts, pure essential oils, and pharmaceutical-grade carrier bases. We never use synthetic fragrances, parabens, or harmful chemicals. Each product label lists full ingredient transparency.' },
{ q: 'What are the ingredients in your aroma products?', a: 'All HomAroma products are crafted from 100% natural botanical extracts, pure essential oils, and pharmaceutical-grade carrier bases. We never use synthetic fragrances, parabens, or harmful chemicals. Each product label lists full ingredient transparency.' },
{ q: 'How long does each product last?', a: 'Our Reed Diffusers last 4–8 weeks depending on room size and airflow. Aroma Oils (30ml) last approximately 3–4 months with normal use. Room Sprays (100ml) provide 60–80 uses. Car Diffusers cartridges last up to 45 days.' },
{ q: 'Are your products suitable for sensitive skin or allergies?', a: 'We recommend patch testing before topical use. Our Aroma Oils are formulated for diffuser use primarily. If you have known fragrance allergies, consult our scent guide or contact us with your specific concerns — we are happy to help identify suitable options.' },
{ q: 'What is the difference between Aroma Oil and Oil Ozone?', a: 'Aroma Oils are pure essential oil blends designed for aromatherapy diffusers and therapeutic use. Oil Ozone is our premium line featuring ozone-infused botanical extracts — designed for air purification and deeper space transformation, ideal for large rooms and commercial spaces.' },
@@ -29,7 +29,7 @@ const FAQS = [
items: [
{ q: 'How long does shipping take?', a: 'Standard delivery within Bangkok takes 1–2 business days. Provincial orders take 2–4 business days. Express same-day delivery is available in Bangkok for orders placed before 12:00 PM.' },
{ q: 'Do you ship internationally?', a: 'Currently we ship within Thailand only. International shipping is planned for late 2025. Sign up for our newsletter to be notified when we expand to your region.' },
{ q: 'What is your return policy?', a: 'We accept returns within 14 days of purchase for unopened, undamaged products in original packaging. For defective or damaged products, we offer full replacement at no cost. Contact us at hello@irelax.co.th with your order number.' },
{ q: 'What is your return policy?', a: 'We accept returns within 14 days of purchase for unopened, undamaged products in original packaging. For defective or damaged products, we offer full replacement at no cost. Contact us at hello@homaroma.shop with your order number.' },
],
},
{
@@ -64,7 +64,7 @@ export default function FaqPage() {
<p className="text-cyan-glow uppercase tracking-[0.4em] text-xs font-semibold opacity-70">Support</p>
<h1 className="text-5xl font-bold">Frequently Asked Questions</h1>
<p className="text-slate-400 max-w-lg mx-auto">
Everything you need to know about iRelax products, shipping, and care.
Everything you need to know about HomAroma products, shipping, and care.
</p>
</div>
+1 -1
View File
@@ -27,7 +27,7 @@ export default function ShopPage() {
const params = new URLSearchParams(location.search)
const coupon = params.get('coupon')
if (coupon) {
localStorage.setItem('irelax_active_coupon', coupon)
localStorage.setItem('homaroma_active_coupon', coupon)
// Optionally clean URL
window.history.replaceState({}, document.title, window.location.pathname)
}
+2 -2
View File
@@ -22,7 +22,7 @@ export default function TrackOrderPage() {
.catch(console.error)
// Load local orders
const storedStr = localStorage.getItem('irelax_local_orders')
const storedStr = localStorage.getItem('homaroma_local_orders')
if (storedStr) {
setLocalOrders(JSON.parse(storedStr))
}
@@ -49,7 +49,7 @@ export default function TrackOrderPage() {
if (!localOrders.includes(data.orderId)) {
const newOrders = [data.orderId, ...localOrders]
setLocalOrders(newOrders)
localStorage.setItem('irelax_local_orders', JSON.stringify(newOrders))
localStorage.setItem('homaroma_local_orders', JSON.stringify(newOrders))
}
navigate(`/order/${data.orderId}`)
} else {