import type { ApiBlog, ApiCategory, ApiProduct } from "./api"; import { detailPath, slugifyForUrl } from "./seo-slug"; export function productTitle(product: Pick) { return product.nameFa?.trim() || product.title?.trim() || String(product.id); } export function categoryTitle(category: Pick) { return category.nameFa?.trim() || category.name?.trim() || String(category.id); } /** Public product URL: /products/{id}/{nameFaSlug} — never use legacy DB slug. */ export function productHref(product: Pick | string, title?: string | null) { if (typeof product === "string") { return detailPath("/products", product, title?.trim() || product); } return detailPath("/products", product.id, productTitle(product)); } /** Public category URL: /products/category/{id}/{nameFaSlug} */ export function categoryHref(category: Pick) { return detailPath("/products/category", category.id, categoryTitle(category)); } /** Public blog URL: /blog/{id}/{titleSlug} */ export function blogHref(blog: Pick) { return detailPath("/blog", blog.id, blog.title); } export function productNameSlug(title: string) { return slugifyForUrl(title); } export function categoryNameSlug(title: string) { return slugifyForUrl(title); } export function blogTitleSlug(title: string) { return slugifyForUrl(title); }