// Galeria de avatares inspirados em artistas do cinema // Usando DiceBear API com estilos variados para aparência cinematográfica export interface Avatar { id: string; name: string; url: string; seed: string; style: string; } // Avatares inspirados em artistas do cinema (30 avatares estilizados) const cinemaArtistsAvatars = [ // 15 Masculinos - Inspirados em grandes atores { id: 'avatar-male-1', name: 'Leonardo DiCaprio', seed: 'Leonardo', style: 'adventurer', bgColor: 'C5CAE9', }, { id: 'avatar-male-2', name: 'Brad Pitt', seed: 'Bradley', style: 'adventurer', bgColor: 'B2DFDB', }, { id: 'avatar-male-3', name: 'Tom Hanks', seed: 'Thomas', style: 'adventurer-neutral', bgColor: 'DCEDC8', }, { id: 'avatar-male-4', name: 'Morgan Freeman', seed: 'Morgan', style: 'adventurer', bgColor: 'F0F4C3', }, { id: 'avatar-male-5', name: 'Robert De Niro', seed: 'Robert', style: 'adventurer-neutral', bgColor: 'E0E0E0', }, { id: 'avatar-male-6', name: 'Al Pacino', seed: 'Alfredo', style: 'adventurer', bgColor: 'FFCCBC', }, { id: 'avatar-male-7', name: 'Johnny Depp', seed: 'John', style: 'adventurer', bgColor: 'D1C4E9', }, { id: 'avatar-male-8', name: 'Denzel Washington', seed: 'Denzel', style: 'adventurer-neutral', bgColor: 'B3E5FC', }, { id: 'avatar-male-9', name: 'Will Smith', seed: 'Willard', style: 'adventurer', bgColor: 'FFF9C4', }, { id: 'avatar-male-10', name: 'Tom Cruise', seed: 'TomC', style: 'adventurer-neutral', bgColor: 'CFD8DC', }, { id: 'avatar-male-11', name: 'Samuel L Jackson', seed: 'Samuel', style: 'adventurer', bgColor: 'F8BBD0', }, { id: 'avatar-male-12', name: 'Harrison Ford', seed: 'Harrison', style: 'adventurer-neutral', bgColor: 'C8E6C9', }, { id: 'avatar-male-13', name: 'Keanu Reeves', seed: 'Keanu', style: 'adventurer', bgColor: 'BBDEFB', }, { id: 'avatar-male-14', name: 'Matt Damon', seed: 'Matthew', style: 'adventurer-neutral', bgColor: 'FFE0B2', }, { id: 'avatar-male-15', name: 'Christian Bale', seed: 'Christian', style: 'adventurer', bgColor: 'E1BEE7', }, // 15 Femininos - Inspiradas em grandes atrizes { id: 'avatar-female-1', name: 'Meryl Streep', seed: 'Meryl', style: 'lorelei', bgColor: 'F8BBD0', }, { id: 'avatar-female-2', name: 'Scarlett Johansson', seed: 'Scarlett', style: 'lorelei', bgColor: 'FFCCBC', }, { id: 'avatar-female-3', name: 'Jennifer Lawrence', seed: 'Jennifer', style: 'lorelei-neutral', bgColor: 'E1BEE7', }, { id: 'avatar-female-4', name: 'Angelina Jolie', seed: 'Angelina', style: 'lorelei', bgColor: 'C5CAE9', }, { id: 'avatar-female-5', name: 'Cate Blanchett', seed: 'Catherine', style: 'lorelei-neutral', bgColor: 'B2DFDB', }, { id: 'avatar-female-6', name: 'Nicole Kidman', seed: 'Nicole', style: 'lorelei', bgColor: 'DCEDC8', }, { id: 'avatar-female-7', name: 'Julia Roberts', seed: 'Julia', style: 'lorelei-neutral', bgColor: 'FFF9C4', }, { id: 'avatar-female-8', name: 'Emma Stone', seed: 'Emma', style: 'lorelei', bgColor: 'CFD8DC', }, { id: 'avatar-female-9', name: 'Natalie Portman', seed: 'Natalie', style: 'lorelei-neutral', bgColor: 'F0F4C3', }, { id: 'avatar-female-10', name: 'Charlize Theron', seed: 'Charlize', style: 'lorelei', bgColor: 'E0E0E0', }, { id: 'avatar-female-11', name: 'Kate Winslet', seed: 'Kate', style: 'lorelei-neutral', bgColor: 'D1C4E9', }, { id: 'avatar-female-12', name: 'Sandra Bullock', seed: 'Sandra', style: 'lorelei', bgColor: 'B3E5FC', }, { id: 'avatar-female-13', name: 'Halle Berry', seed: 'Halle', style: 'lorelei-neutral', bgColor: 'C8E6C9', }, { id: 'avatar-female-14', name: 'Anne Hathaway', seed: 'Anne', style: 'lorelei', bgColor: 'BBDEFB', }, { id: 'avatar-female-15', name: 'Amy Adams', seed: 'Amy', style: 'lorelei-neutral', bgColor: 'FFE0B2', }, ]; /** * Gera uma galeria de avatares inspirados em artistas do cinema * Usa DiceBear API com estilos cinematográficos * @param count Número de avatares a gerar (padrão: 30) * @returns Array de objetos com id, name, url, seed e style */ export function generateAvatarGallery(count: number = 30): Avatar[] { const avatars: Avatar[] = []; for (let i = 0; i < Math.min(count, cinemaArtistsAvatars.length); i++) { const avatar = cinemaArtistsAvatars[i]; // URL do DiceBear com estilo cinematográfico const url = `https://api.dicebear.com/7.x/${avatar.style}/svg?seed=${encodeURIComponent(avatar.seed)}&backgroundColor=${avatar.bgColor}&radius=50&size=200`; avatars.push({ id: avatar.id, name: avatar.name, url, seed: avatar.seed, style: avatar.style, }); } return avatars; } /** * Obter URL do avatar por ID * @param avatarId ID do avatar (ex: "avatar-male-1") * @returns URL do avatar ou string vazia se não encontrado */ export function getAvatarUrl(avatarId: string): string { const gallery = generateAvatarGallery(); const avatar = gallery.find(a => a.id === avatarId); return avatar?.url || ''; } /** * Gerar avatar aleatório da galeria * @returns Avatar aleatório */ export function getRandomAvatar(): Avatar { const gallery = generateAvatarGallery(); const randomIndex = Math.floor(Math.random() * gallery.length); return gallery[randomIndex]; } /** * Salvar avatar selecionado (retorna o ID para salvar no backend) * @param avatarId ID do avatar selecionado * @returns ID do avatar */ export function saveAvatarSelection(avatarId: string): string { return avatarId; }