Files
nextjs-shopify-hydrogen/lib/content.ts
T
2026-07-29 11:02:40 -04:00

149 lines
4.3 KiB
TypeScript

/**
* Copy strings transcribed from `examples/core/content.json`. Centralized so
* the React Router example uses the same verified copy as the other examples.
*/
export const content = {
announcement: {
label: "Announcement",
text: "Free shipping on orders over $50",
},
general: {
skipToContent: "Skip to content",
search: "Search",
account: "Account",
back: "Back",
close: "Close",
drawer: "Drawer",
dismiss: "Dismiss",
},
header: {
menu: "Menu",
navigation: "Main navigation",
mobileNavigation: "Mobile navigation",
navItems: ["Collections", "Men", "Women", "Accessories"] as const,
},
footer: {
quickLinks: "Quick links",
customerCare: "Customer care",
search: "Search",
account: "Account",
paymentMethods: "Payment methods",
},
cart: {
title: "Cart",
checkout: "Checkout",
empty: "Your cart is empty.",
emptyDescription: "Looks like you haven't added anything to your cart yet.",
totalLabel: "Estimated total",
taxesAndShippingAtCheckout: "Taxes and shipping calculated at checkout",
itemRemoved: "Item removed from cart",
updated: "Cart updated",
updateError: "Could not update cart. Please try again.",
iconLabel: {
one: "Cart (1 item)",
other: "Cart ({{ count }} items)",
},
itemCount: {
one: "1 item in cart",
other: "{{ count }} items in cart",
},
},
product: {
details: "Product details",
quantity: "Quantity",
addToCart: "Add to cart",
selectOptions: "Select options",
addedToCart: "Added to cart",
soldOut: "Out of stock",
description: "Description",
relatedProducts: "You may also like",
badge: {
soldOut: "Sold out",
sale: "Sale",
},
inventory: {
inStock: "In stock",
lowStock: "Low stock",
lowStockCount: "Only {{ count }} left in stock",
outOfStock: "Out of stock",
},
},
collection: {
title: "Outerwear",
description:
"Layering pieces built for shifting weather — midweight overshirts, field jackets, and knitwear cut from durable natural fibers.",
productsCount: {
one: "1 product",
other: "{{ count }} products",
},
sortBy: "Sort by",
filters: "Filters",
filter: "Filter",
showResults: "Show results",
clearAll: "Clear all",
activeFilters: "Active filters",
removeFilter: "Remove {{ filter }} filter",
priceMin: "Min",
priceMax: "Max",
priceTo: "to",
loadMore: "Load more",
showingCount: "Showing {{ shown }} of {{ total }} products",
noProducts: "No products found.",
},
collections: {
title: "Collections",
allCollections: "All collections",
productCount: {
one: "1 product",
other: "{{ count }} products",
},
viewCollection: "View {{ title }}",
},
search: {
title: "Search",
placeholder: "Search",
label: "Search",
submit: "Search",
clear: "Clear search",
resultsFor: "{{ count }} results found for {{ terms }}",
showingCount: "Showing {{ shown }} of {{ total }} results",
loadMore: "Load more",
noResults: "No results found for {{ terms }}",
noResultsSuggestion: "Check your spelling or try a more general term.",
noResultsAnnouncement: "No results found for {{ terms }}",
},
home: {
hero: {
heading: "Discover our latest collection",
subtitle: "Explore our curated selection of premium products",
primaryCta: "Shop now",
secondaryCta: "Learn more",
},
bestSellers: "Best sellers",
shopByCategory: "Shop by category",
viewAll: "View all",
},
consent: {
label: "Cookie consent",
message: "We use cookies to improve your experience, analyze traffic, and personalize content.",
privacyPolicy: "Privacy Policy",
acceptAll: "Accept all",
decline: "Decline",
managePreferences: "Manage preferences",
},
} as const;
/** Pluralized cart icon label. */
export function cartIconLabel(count: number): string {
return count === 1
? content.cart.iconLabel.one
: content.cart.iconLabel.other.replace("{{ count }}", String(count));
}
/** Pluralized cart item-count live-region text. */
export function cartItemCount(count: number): string {
return count === 1
? content.cart.itemCount.one
: content.cart.itemCount.other.replace("{{ count }}", String(count));
}