Files
NewTube/src/models/theme.model.ts
T

45 lines
3.2 KiB
TypeScript

export interface ThemeDef {
slug: string;
label: string;
emoji: string;
// Optional search tokens for providers; fallback to label
tokens?: string[];
}
export const THEMES: ThemeDef[] = [
{ label: 'Tendances & Viral', slug: 'trending', emoji: '🔥', tokens: ['Trending', 'Highlight', 'Best moments'] },
{ label: 'En direct', slug: 'live', emoji: '🎥', tokens: ['Live', 'Streaming'] },
{ label: 'Jeux vidéo & Esports', slug: 'gaming', emoji: '🎮', tokens: ['Gaming', 'Esports', 'Gameplay', 'Speedrun'] },
{ label: 'Sports', slug: 'sports', emoji: '🏅', tokens: ['Sports', 'Highlights', 'Recap'] },
{ label: 'Actualités & Politique', slug: 'news', emoji: '🗞️', tokens: ['News', 'Politics', 'Debate'] },
{ label: 'Finance & Crypto', slug: 'finance-crypto', emoji: '💰', tokens: ['Finance', 'Crypto', 'Investing'] },
{ label: 'Business & Startups', slug: 'business', emoji: '🏢', tokens: ['Business', 'Startups', 'Entrepreneurship'] },
{ label: 'Tech & Gadgets', slug: 'tech', emoji: '🧠', tokens: ['Tech', 'Gadgets', 'Programming'] },
{ label: 'Science & Espace', slug: 'science', emoji: '🚀', tokens: ['Science', 'Space', 'Discovery'] },
{ label: 'Santé & Bien-être', slug: 'health', emoji: '🩺', tokens: ['Health', 'Wellness', 'Fitness'] },
{ label: 'Musique', slug: 'music', emoji: '🎵', tokens: ['Music', 'Concert', 'Performance'] },
{ label: 'Podcasts & Talk-shows', slug: 'podcasts', emoji: '🎙️', tokens: ['Podcasts', 'Talk show', 'Interview'] },
{ label: 'Cinéma & Séries', slug: 'movies-tv', emoji: '🎬', tokens: ['Movies', 'TV', 'Behind the scenes'] },
{ label: 'Éducation & Tutoriels', slug: 'education', emoji: '🎓', tokens: ['Education', 'Tutorial', 'How to'] },
{ label: 'Voyage', slug: 'travel', emoji: '🧳', tokens: ['Travel', 'Adventure', 'Exploration'] },
{ label: 'Cuisine & Alimentation', slug: 'food', emoji: '🍳', tokens: ['Food', 'Cooking', 'Recipe'] },
{ label: 'DIY, Bricolage & Makers', slug: 'diy-makers', emoji: '🛠️', tokens: ['DIY', 'Makers', 'Workshop'] },
{ label: 'Auto, Moto & Mécanique', slug: 'autos', emoji: '🚗', tokens: ['Cars', 'Automotive', 'Moto'] },
{ label: 'Nature & Animaux', slug: 'nature-animals', emoji: '🌿', tokens: ['Nature', 'Animals', 'Wildlife'] },
{ label: 'Humour & Sketches', slug: 'comedy', emoji: '😂', tokens: ['Comedy', 'Sketch', 'Standup'] },
{ label: 'Art, Design & Photo', slug: 'art-design', emoji: '🖌️', tokens: ['Art', 'Design', 'Photography'] },
{ label: 'Vlogs & Lifestyle', slug: 'vlogs', emoji: '📹', tokens: ['Vlog', 'Lifestyle', 'Daily life'] },
{ label: 'Tests, Avis & Unboxings', slug: 'reviews', emoji: '📦', tokens: ['Review', 'Unboxing', 'Hands on'] },
{ label: 'Documentaires', slug: 'documentary', emoji: '📜', tokens: ['Documentary', 'Investigation', 'History'] },
{ label: 'Famille & Enfants', slug: 'family-kids', emoji: '👨‍👩‍👧', tokens: ['Family', 'Kids', 'Parenting'] },
];
export function slugifyThemeLabel(label: string): string {
return String(label || '')
.normalize('NFKD')
.replace(/[\u0300-\u036f]/g, '')
.toLowerCase()
.replace(/[^a-z0-9]+/g, '-')
.replace(/^-+|-+$/g, '');
}