Replace entire repo content with correct code from /root/shahikitchen-website/

This commit is contained in:
root
2026-06-29 16:22:09 +00:00
parent 57cc67d2d3
commit 50e3a34895
723 changed files with 20055 additions and 26101 deletions
+118
View File
@@ -0,0 +1,118 @@
/**
* =============================================================================
* 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`);
}