feat(project-editor): reusable image-field (thumbnail+replace+remove), branding OG image+gallery

- shared app-image-field component: thumbnail preview, replace, remove, opens media-picker
- branding: add socialImageUrl + galleryUrls fields, wire to new image-field
- footer: logo + payment icon fields use image-field (drop manual media-picker plumbing)
- i18n: common.remove, adminCategories.replaceImage, builder.socialImage/gallery keys (en/ru/hy)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
sdarbinyan
2026-07-17 15:22:45 +04:00
parent feda0f685f
commit b183410888
12 changed files with 175 additions and 71 deletions

View File

@@ -427,6 +427,9 @@ export const en: Translations = {
logo: 'Logo',
smallLogo: 'Small Logo',
favicon: 'Favicon',
socialImage: 'Social Share Image',
gallery: 'Gallery',
addGalleryImage: 'Add image',
marketplaceTitle: 'Marketplace Title',
primaryColor: 'Primary Color',
secondaryColor: 'Secondary Color',
@@ -572,6 +575,8 @@ export const en: Translations = {
logoDesc: 'Full logo image URL, shown in the header on desktop.',
smallLogoDesc: 'Compact logo image URL, used where space is limited (e.g. mobile header).',
faviconDesc: 'Browser tab icon image URL. Should be a small square image.',
socialImageDesc: 'Default image shown when the marketplace is shared on social media (Open Graph).',
galleryDesc: 'Extra brand images available for future use across the storefront.',
marketplaceTitleDesc: 'The page title used by search engines and browser tabs.',
primaryColorDesc: 'The main brand color, used on primary buttons and highlights. Must be a valid hex color.',
secondaryColorDesc: 'A supporting brand color used for secondary UI elements. Must be a valid hex color.',
@@ -765,6 +770,7 @@ export const en: Translations = {
common: {
retry: 'Try again',
loading: 'Loading...',
remove: 'Remove',
},
location: {
allRegions: 'All regions',
@@ -923,6 +929,7 @@ export const en: Translations = {
},
adminCategories: {
chooseImage: 'Choose image',
replaceImage: 'Replace image',
},
adminProducts: {
emptyTitle: 'No products found',