Files
gridpilot.gg/apps/website/lib/config/mediaConfig.ts
2025-12-31 15:39:28 +01:00

50 lines
1.5 KiB
TypeScript

/**
* Media configuration for GridPilot website.
* Single source of truth for all media asset paths and URLs.
*
* Note: This config should be kept in sync with the shared MediaAssetConfig
* in adapters/bootstrap/MediaAssetConfig.ts
*/
export interface MediaConfig {
avatars: {
defaultFallback: string;
paths: {
male: string;
female: string;
neutral: string;
};
};
api: {
avatar: (driverId: string) => string;
teamLogo: (teamId: string) => string;
trackImage: (trackId: string) => string;
sponsorLogo: (sponsorId: string) => string;
categoryIcon: (categoryId: string) => string;
};
}
export const mediaConfig: MediaConfig = {
avatars: {
// Default fallback used when no avatar URL is available
defaultFallback: '/images/avatars/neutral-default-avatar.jpeg',
// Individual avatar type paths
paths: {
male: '/images/avatars/male-default-avatar.jpg',
female: '/images/avatars/female-default-avatar.jpeg',
neutral: '/images/avatars/neutral-default-avatar.jpeg',
},
},
api: {
// Direct media paths (no /api/ prefix) - served by website or API
avatar: (driverId: string) => `/media/avatar/${driverId}`,
teamLogo: (teamId: string) => `/media/teams/${teamId}/logo`,
trackImage: (trackId: string) => `/media/tracks/${trackId}/image`,
sponsorLogo: (sponsorId: string) => `/media/sponsors/${sponsorId}/logo`,
categoryIcon: (categoryId: string) => `/media/categories/${categoryId}/icon`,
},
} as const;
export type MediaConfigType = typeof mediaConfig;