Template
The root layout exported no metadata, so routes without their own export rendered no title at all, and no route had a description. Add a root metadata block with a title template, Open Graph and Twitter defaults, and fill in the routes that were missing tags. - config/site.ts: description and env-driven absolute url for metadataBase - home, /collections and /shop/collections: titles and descriptions - products/[handle] and collections/[handle]: generateMetadata off the existing catalog fetchers, with canonical and OG image - existing titles: drop the hand-written " — Shop" suffix now that the root template appends it Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011x5jT4fJJCnqPx3umEvXRk
22 lines
807 B
TypeScript
22 lines
807 B
TypeScript
import type { NavLink } from '@/components/shopify/header';
|
|
|
|
/** Chrome shared by every route — rendered once in the root layout. */
|
|
export const site = {
|
|
storeName: 'Shop',
|
|
description:
|
|
'An agent-friendly Shopify storefront built with Next.js and Hydrogen.',
|
|
// Absolute origin behind `metadataBase`, so Open Graph images resolve to full
|
|
// URLs. Vercel injects VERCEL_PROJECT_PRODUCTION_URL on deployed builds.
|
|
url:
|
|
process.env.NEXT_PUBLIC_SITE_URL ??
|
|
(process.env.VERCEL_PROJECT_PRODUCTION_URL
|
|
? `https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}`
|
|
: 'http://localhost:3000'),
|
|
logoUrl: '',
|
|
copyright: '© 2026 Shop. All rights reserved.',
|
|
navLinks: [
|
|
{ label: 'Products', url: '/' },
|
|
{ label: 'Collections', url: '/collections' },
|
|
] as NavLink[],
|
|
};
|