diff --git a/apps/spa/src/components/DynamicCategories.tsx b/apps/spa/src/components/DynamicCategories.tsx index 1112549..6dd5165 100644 --- a/apps/spa/src/components/DynamicCategories.tsx +++ b/apps/spa/src/components/DynamicCategories.tsx @@ -47,14 +47,14 @@ export default function DynamicCategories({ payload, categories, loading }: Dyna >
{cat.name} { (e.target as HTMLImageElement).style.display = 'none' }} />
- {cat.name} + {typeof cat.name === 'string' ? cat.name : (cat.name as any)?.[localStorage.getItem('homaroma_lang') || 'en'] || (cat.name as any)?.en || ''} {cat._count && ( diff --git a/apps/spa/src/components/Footer.tsx b/apps/spa/src/components/Footer.tsx index 6eab078..663dfc8 100644 --- a/apps/spa/src/components/Footer.tsx +++ b/apps/spa/src/components/Footer.tsx @@ -93,7 +93,7 @@ export default function Footer({ categories = [] }: FooterProps) {
{categories.map((c) => ( - {c.name} + {typeof c.name === 'string' ? c.name : (c.name as any)?.[localStorage.getItem('homaroma_lang') || 'en'] || (c.name as any)?.en || ''} ))}
diff --git a/apps/spa/src/components/Navbar.tsx b/apps/spa/src/components/Navbar.tsx index 1a1dc07..a2bedac 100644 --- a/apps/spa/src/components/Navbar.tsx +++ b/apps/spa/src/components/Navbar.tsx @@ -158,7 +158,7 @@ export default function Navbar({ categories = [], topOffsetClassName = 'top-0' } to={`/category/${cat.id}`} className="flex items-center justify-between px-4 py-2.5 text-xs uppercase tracking-widest text-spa-stone rounded-lg hover:bg-spa-sage hover:text-spa-forest transition-colors" > - {cat.name} + {typeof cat.name === 'string' ? cat.name : (cat.name as any)?.[i18n.language] || (cat.name as any)?.en || ''} @@ -456,7 +456,7 @@ export default function Navbar({ categories = [], topOffsetClassName = 'top-0' } onClick={() => setMobileOpen(false)} className="flex items-center justify-between px-4 py-2.5 rounded-xl text-sm text-spa-stone hover:text-spa-forest hover:bg-spa-sage transition-all" > - {cat.name} + {typeof cat.name === 'string' ? cat.name : (cat.name as any)?.[i18n.language] || (cat.name as any)?.en || ''} @@ -541,7 +541,7 @@ export default function Navbar({ categories = [], topOffsetClassName = 'top-0' }

Quick Links

{[ - ...categories.map(c => ({ label: c.name, to: `/category/${c.id}` })), + ...categories.map(c => ({ label: typeof c.name === 'string' ? c.name : (c.name as any)?.[i18n.language] || (c.name as any)?.en || '', to: `/category/${c.id}` })), { label: '✨ Scent Guide', to: '/scent-guide' }, { label: 'All Products', to: '/shop' }, ].map(item => ( diff --git a/apps/spa/src/components/ProductCard.tsx b/apps/spa/src/components/ProductCard.tsx index 77e233b..8a985e2 100644 --- a/apps/spa/src/components/ProductCard.tsx +++ b/apps/spa/src/components/ProductCard.tsx @@ -49,7 +49,7 @@ export default function ProductCard({ product, enableQuickShop = false }: Produc {/* Image Area */}
{product.scent.name} { @@ -58,7 +58,7 @@ export default function ProductCard({ product, enableQuickShop = false }: Produc /> {/* Category badge */}
- {product.category.name} + {typeof product.category.name === 'string' ? product.category.name : (product.category.name as any)?.[i18n.language] || (product.category.name as any)?.en || ''}
{/* Wishlist Button */}
@@ -136,7 +136,7 @@ export default function ProductCard({ product, enableQuickShop = false }: Produc price: selectedVariant.price || 0, productName: displayName, variantSize: selectedVariant.size, - productImage: product.images?.[0]?.url || getCategoryImage(product.category.name) + productImage: product.images?.[0]?.url || getCategoryImage(typeof product.category.name === 'string' ? product.category.name : (product.category.name as any)?.en || '') }); }} className="w-full py-2.5 bg-spa-forest text-white hover:bg-spa-forest/90 rounded-xl font-bold text-xs uppercase tracking-widest transition-all shadow-sm hover:shadow flex items-center justify-center gap-1.5 cursor-pointer" diff --git a/apps/spa/src/pages/CategoryPage.tsx b/apps/spa/src/pages/CategoryPage.tsx index 6797437..e6586f1 100644 --- a/apps/spa/src/pages/CategoryPage.tsx +++ b/apps/spa/src/pages/CategoryPage.tsx @@ -121,9 +121,9 @@ export default function CategoryPage() { ) : (
{category?.name} { (e.target as HTMLImageElement).style.display = 'none' }} />
@@ -136,13 +136,13 @@ export default function CategoryPage() { / Shop / - {category?.name ?? '...'} + {typeof category?.name === 'string' ? category.name : (category?.name as any)?.[localStorage.getItem('homaroma_lang') || 'en'] || (category?.name as any)?.en || '...'}

{loading ? (
) : ( - category?.name + typeof category?.name === 'string' ? category.name : (category?.name as any)?.[i18n.language] || (category?.name as any)?.en || '' )}

{!loading && category?._count && ( @@ -169,7 +169,7 @@ export default function CategoryPage() { : 'bg-white text-spa-stone border-spa-stone/20 hover:border-spa-forest hover:text-spa-forest shadow-sm' }`} > - {cat.name} + {typeof cat.name === 'string' ? cat.name : (cat.name as any)?.[localStorage.getItem('homaroma_lang') || 'en'] || (cat.name as any)?.en || ''} ))}
diff --git a/apps/spa/src/pages/ProductDetailPage.tsx b/apps/spa/src/pages/ProductDetailPage.tsx index 48981e3..52a1a41 100644 --- a/apps/spa/src/pages/ProductDetailPage.tsx +++ b/apps/spa/src/pages/ProductDetailPage.tsx @@ -133,7 +133,7 @@ export default function ProductDetailPage() { price: currentVariant.price || product.price || 0, productName: displayName, variantSize: currentVariant.size, - productImage: product.images?.[0]?.url || getCategoryImage(product.category.name) + productImage: product.images?.[0]?.url || getCategoryImage(typeof product.category.name === 'string' ? product.category.name : (product.category.name as any)?.en || '') }) } @@ -160,7 +160,7 @@ export default function ProductDetailPage() { {t('common.shop')} / - {product.category.name} + {typeof product.category.name === 'string' ? product.category.name : (product.category.name as any)?.[i18n.language] || (product.category.name as any)?.en || ''} / {displayName} @@ -172,9 +172,9 @@ export default function ProductDetailPage() {
@@ -182,7 +182,7 @@ export default function ProductDetailPage() {

- {product.category.name} + {typeof product.category.name === 'string' ? product.category.name : (product.category.name as any)?.[i18n.language] || (product.category.name as any)?.en || ''}

{displayName} @@ -258,7 +258,7 @@ export default function ProductDetailPage() { to={`/category/${product.category.id}`} className="text-pop-black font-bold hover:text-spa-forest transition-colors" > - {product.category.name} + {typeof product.category.name === 'string' ? product.category.name : (product.category.name as any)?.[i18n.language] || (product.category.name as any)?.en || ''}

diff --git a/apps/spa/src/pages/SearchPage.tsx b/apps/spa/src/pages/SearchPage.tsx index caa1666..1852d67 100644 --- a/apps/spa/src/pages/SearchPage.tsx +++ b/apps/spa/src/pages/SearchPage.tsx @@ -126,10 +126,10 @@ export default function SearchPage() { {categories.map((cat) => ( - {cat.name} + {typeof cat.name === 'string' ? cat.name : (cat.name as any)?.[i18n.language] || (cat.name as any)?.en || ''} ))}
diff --git a/apps/spa/src/pages/ShopPage.tsx b/apps/spa/src/pages/ShopPage.tsx index 4103106..4edef92 100644 --- a/apps/spa/src/pages/ShopPage.tsx +++ b/apps/spa/src/pages/ShopPage.tsx @@ -211,7 +211,7 @@ export default function ShopPage() { : 'bg-white text-spa-stone border-spa-stone/20 hover:border-spa-forest hover:text-spa-forest shadow-sm' }`} > - {cat.name} + {typeof cat.name === 'string' ? cat.name : (cat.name as any)?.[i18n.language] || (cat.name as any)?.en || ''} {cat._count && ( ({cat._count.products}) )}