118 lines
4.2 KiB
TypeScript
118 lines
4.2 KiB
TypeScript
/**
|
|
* =============================================================================
|
|
* SITE ASSETS — Single source of truth for all website media
|
|
* =============================================================================
|
|
*
|
|
* Change any image or video path HERE and the whole site updates.
|
|
* Physical files live under /public — this file maps logical names → URLs.
|
|
*
|
|
* Folder layout (public/):
|
|
* /images/logo/ — brand logo, hero banner videos
|
|
* /images/dishes/ — menu dish photos & video posters
|
|
* /images/animation/ — chef expressions, illustrations
|
|
* /images/real/ — restaurant interior photos
|
|
* /images/booking/ — table QR codes (askim + backaplan)
|
|
* /videos/ — dish & promo videos
|
|
*/
|
|
|
|
/** Base folders served from /public */
|
|
export const MEDIA_FOLDERS = {
|
|
images: '/images',
|
|
dishes: '/images/dishes',
|
|
logo: '/images/logo',
|
|
animation: '/images/animation',
|
|
real: '/images/real',
|
|
booking: {
|
|
askim: '/images/booking/askim',
|
|
backaplan: '/images/booking/backaplan',
|
|
},
|
|
videos: '/videos',
|
|
} as const;
|
|
|
|
/** Join a folder with a filename → public URL */
|
|
export function mediaUrl(folder: string, filename: string): string {
|
|
return `${folder}/${filename}`;
|
|
}
|
|
|
|
/**
|
|
* All named static assets used across the website.
|
|
* Prefer these constants over hardcoded strings in components.
|
|
*/
|
|
export const SITE_ASSETS = {
|
|
logo: {
|
|
primary: mediaUrl(MEDIA_FOLDERS.logo, 'logo1.png'),
|
|
alt: mediaUrl(MEDIA_FOLDERS.logo, 'logo.jpg'),
|
|
chef: mediaUrl(MEDIA_FOLDERS.images, 'logo-shahi-chef.jpg'),
|
|
chefIcon: mediaUrl(MEDIA_FOLDERS.images, 'logo-shahi-chef-icon.jpg'),
|
|
},
|
|
|
|
hero: {
|
|
restaurantInterior: mediaUrl(MEDIA_FOLDERS.images, 'hero-restaurant-interior.jpg'),
|
|
restaurantInterior2: mediaUrl(MEDIA_FOLDERS.images, 'hero-restaurant-interior-2.jpg'),
|
|
restaurantBg: mediaUrl(MEDIA_FOLDERS.images, 'hero-restaurant-bg.jpg'),
|
|
},
|
|
|
|
banner: {
|
|
mobileWebm: mediaUrl(MEDIA_FOLDERS.logo, 'banner_mobile-optimized.webm'),
|
|
mobileMp4: mediaUrl(MEDIA_FOLDERS.logo, 'banner_mobile-optimized.mp4'),
|
|
desktopMp4: mediaUrl(MEDIA_FOLDERS.logo, 'banner1.mp4'),
|
|
originalMp4: mediaUrl(MEDIA_FOLDERS.logo, 'banner.mp4'),
|
|
mobileOriginalMp4: mediaUrl(MEDIA_FOLDERS.logo, 'banner_mobile.mp4'),
|
|
},
|
|
|
|
animation: {
|
|
chefWink: mediaUrl(MEDIA_FOLDERS.animation, 'chef-wink.jpg'),
|
|
chefSmile: mediaUrl(MEDIA_FOLDERS.animation, 'chef-smile.jpg'),
|
|
chefNormal: mediaUrl(MEDIA_FOLDERS.animation, 'chef-normal.jpg'),
|
|
biryaniIllust: mediaUrl(MEDIA_FOLDERS.animation, 'biryani-illust.jpg'),
|
|
butterChickenIllust: mediaUrl(MEDIA_FOLDERS.animation, 'butter-chicken-illust.jpg'),
|
|
jalebiIllust: mediaUrl(MEDIA_FOLDERS.animation, 'jalebi-illust.jpg'),
|
|
kulfiIllust: mediaUrl(MEDIA_FOLDERS.animation, 'kulfi-illust.jpg'),
|
|
naanIllust: mediaUrl(MEDIA_FOLDERS.animation, 'naan-illust.jpg'),
|
|
spicesIllust: mediaUrl(MEDIA_FOLDERS.animation, 'spices-illust.jpg'),
|
|
chefSequence: mediaUrl(MEDIA_FOLDERS.animation, 'chef_sequence.mp4'),
|
|
creamBg: mediaUrl(MEDIA_FOLDERS.animation, 'cream_bg.mp4'),
|
|
bannerOriginal: mediaUrl(MEDIA_FOLDERS.animation, 'banner_original.mp4'),
|
|
},
|
|
|
|
dishes: {
|
|
/** Default poster when a dish has no image/video */
|
|
defaultPoster: mediaUrl(MEDIA_FOLDERS.dishes, 'palak-paneer.jpg'),
|
|
},
|
|
|
|
/** Global fallbacks used in onError handlers */
|
|
fallbacks: {
|
|
logo: mediaUrl(MEDIA_FOLDERS.logo, 'logo1.png'),
|
|
dishPoster: mediaUrl(MEDIA_FOLDERS.dishes, 'palak-paneer.jpg'),
|
|
},
|
|
} as const;
|
|
|
|
/** Restaurant interior gallery (real photos) — add/remove filenames here */
|
|
export const RESTAURANT_GALLERY = [
|
|
'real1.jpg',
|
|
'real2.jpg',
|
|
'real3.jpg',
|
|
'real4.jpg',
|
|
'real5.jpg',
|
|
'real6.jpg',
|
|
'real7.jpg',
|
|
'real9.jpg',
|
|
'real11.jpg',
|
|
'real12.jpg',
|
|
'real13.jpg',
|
|
'real15.jpg',
|
|
'real16.jpg',
|
|
'real17.jpg',
|
|
'real18.jpg',
|
|
'real19.jpg',
|
|
] as const;
|
|
|
|
export function restaurantPhoto(filename: string): string {
|
|
return mediaUrl(MEDIA_FOLDERS.real, filename);
|
|
}
|
|
|
|
export function tableQrCode(branch: 'askim' | 'backaplan', tableNumber: string): string {
|
|
const folder = MEDIA_FOLDERS.booking[branch];
|
|
const prefix = branch === 'askim' ? 'qr-askim' : 'qr-backaplan';
|
|
return mediaUrl(folder, `${prefix}-${tableNumber}.svg`);
|
|
} |