Add website schema settings, SEO meta overrides, and resilient bulk SMS.
Business admins can configure site-wide Schema.org and optional per-item SEO title/description; mass SMS continues on failures with an end report. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
15aad9f9d8
commit
c2ede07e73
@@ -19,6 +19,8 @@ export interface PortfolioApi {
|
||||
categoryId: string | null
|
||||
categoryName: string
|
||||
tags: string[]
|
||||
seoMetaTitle?: string | null
|
||||
seoMetaDescription?: string | null
|
||||
titleImageUrl: string | null
|
||||
featuredMediaId: string | null
|
||||
gallery: PortfolioGalleryItem[]
|
||||
@@ -66,6 +68,8 @@ export interface CreatePortfolioPayload {
|
||||
featuredMediaId?: string
|
||||
galleryMediaIds?: string[]
|
||||
tags?: string[]
|
||||
seoMetaTitle?: string | null
|
||||
seoMetaDescription?: string | null
|
||||
sortOrder?: number
|
||||
}
|
||||
|
||||
@@ -82,6 +86,8 @@ export interface UpdatePortfolioPayload {
|
||||
featuredMediaId?: string | null
|
||||
galleryMediaIds?: string[]
|
||||
tags?: string[]
|
||||
seoMetaTitle?: string | null
|
||||
seoMetaDescription?: string | null
|
||||
sortOrder?: number
|
||||
/** Pin to absolute top of the business portfolio list. */
|
||||
moveToTop?: boolean
|
||||
@@ -171,6 +177,8 @@ export function mapPortfolioApiToFormState(portfolio: PortfolioApi) {
|
||||
projectUrl: portfolio.projectUrl?.trim() || '',
|
||||
categoryId: portfolio.categoryId ?? '',
|
||||
tags: portfolio.tags,
|
||||
seoMetaTitle: portfolio.seoMetaTitle ?? '',
|
||||
seoMetaDescription: portfolio.seoMetaDescription ?? '',
|
||||
titleImage: resolvePortfolioTitleImageUrl(portfolio),
|
||||
featuredMediaId: portfolio.featuredMediaId,
|
||||
images: portfolio.gallery.map((item) => item.url),
|
||||
|
||||
Reference in New Issue
Block a user