feat: add SEOHead to all SPA pages for dynamic page titles

Added SEOHead component to:
- ThankYou page (both template styles)
- Login page
- Account/Dashboard
- Account/Orders
- Account/Downloads
- Account/Addresses
- Account/Wishlist
- Account/Licenses
- Account/AccountDetails
- Public Wishlist page

Also created usePageTitle hook as alternative for non-Helmet usage.
This commit is contained in:
Dwindi Ramadhana
2026-01-07 22:51:47 +07:00
parent d7b132d9d9
commit a4a055a98e
10 changed files with 147 additions and 126 deletions

View File

@@ -3,6 +3,7 @@ import { Link } from 'react-router-dom';
import { Package, Eye } from 'lucide-react';
import { api } from '@/lib/api/client';
import { toast } from 'sonner';
import SEOHead from '@/components/SEOHead';
interface Order {
id: number;
@@ -69,7 +70,7 @@ export default function Orders() {
return (
<div>
<h1 className="text-2xl font-bold mb-6">Orders</h1>
<div className="text-center py-12">
<Package className="w-16 h-16 text-gray-300 mx-auto mb-4" />
<p className="text-gray-600 mb-4">No orders yet</p>
@@ -86,8 +87,9 @@ export default function Orders() {
return (
<div>
<SEOHead title="Orders" description="View your order history" />
<h1 className="text-2xl font-bold mb-6">Orders</h1>
<div className="space-y-4">
{orders.map((order) => (
<div key={order.id} className="border rounded-lg p-4 hover:border-primary transition-colors">
@@ -100,7 +102,7 @@ export default function Orders() {
{order.status.replace('-', ' ').toUpperCase()}
</span>
</div>
<div className="flex items-center justify-between">
<div className="text-sm text-gray-600">
{order.items_count} {order.items_count === 1 ? 'item' : 'items'}