Editors can pick product, store, blog, portfolio, or video category links, and image cards expose compact info/link actions without dumping URLs in the footer. Co-authored-by: Cursor <cursoragent@cursor.com>
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { getBusinessDomain } from '../lib/config'
|
|
|
|
export type WebsiteLinkKind = 'product' | 'storeItem' | 'blog' | 'portfolio' | 'video'
|
|
|
|
export const WEBSITE_LINK_KINDS: WebsiteLinkKind[] = [
|
|
'product',
|
|
'storeItem',
|
|
'blog',
|
|
'portfolio',
|
|
'video',
|
|
]
|
|
|
|
export const WEBSITE_LINK_KIND_PATH: Record<WebsiteLinkKind, string> = {
|
|
product: '/products',
|
|
storeItem: '/store-items',
|
|
blog: '/blogs',
|
|
portfolio: '/portfolios',
|
|
video: '/videos',
|
|
}
|
|
|
|
export function getWebsiteOrigin(domain = getBusinessDomain()): string {
|
|
const host = domain.trim().replace(/^https?:\/\//i, '').replace(/\/$/, '')
|
|
const protocol = window.location.protocol === 'http:' ? 'http:' : 'https:'
|
|
return `${protocol}//${host}`
|
|
}
|
|
|
|
export function buildWebsiteCategoryUrl(
|
|
kind: WebsiteLinkKind,
|
|
category: { id: string; slug?: string | null },
|
|
domain = getBusinessDomain(),
|
|
): string {
|
|
const path = WEBSITE_LINK_KIND_PATH[kind]
|
|
const query = category.slug
|
|
? `category=${encodeURIComponent(category.slug)}`
|
|
: `categoryId=${encodeURIComponent(category.id)}`
|
|
return `${getWebsiteOrigin(domain)}${path}?${query}`
|
|
}
|