UNPKG

oralify-common

Version:
835 lines (817 loc) 20 kB
import { TimeSlotType } from './availabilityExpertTypes'; import { palette } from '../utils/design'; import { gImages } from '../mock/gImages'; export enum ServiceFormatKey { person = 'person', audio = 'audio', /*'message' = 'mensaje',*/ video = 'video', call = 'call' } export const serviceFormatMap: Record< ServiceFormatKey, ServiceType & { emoji?: string; icon?: string; image?: string; defaults?: Partial<ServiceType & { highlight?: boolean }>[]; } > = { [ServiceFormatKey.audio]: { duration: 2.5, name: 'Audio', icon: 'mic', image: gImages.audioMessage, emoji: '🎤', description: 'Responde mensajes de audio en' + ' cualquier momento y lugar', format: ServiceFormatKey.audio, defaults: [ { format: ServiceFormatKey.audio, price: 1, duration: 1, name: 'Consulta Rápida' }, { format: ServiceFormatKey.audio, price: 3, duration: 5, name: 'Duda específica' }, // 5' { format: ServiceFormatKey.audio, price: 4, duration: 10, name: 'Profundizar sobre un tema', highlight: true } ] }, [ServiceFormatKey.call]: { duration: 10, name: 'Llamada', image: gImages.call, icon: 'phone', emoji: '📞', description: 'Agenda llamadas para resolver dudas puntuales', format: ServiceFormatKey.call, defaults: [ { price: 10, duration: 15, name: 'Consulta puntual' }, { price: 20, duration: 30, name: 'Conversación Extendida', highlight: true } ] }, [ServiceFormatKey.video]: { icon: 'video', name: 'Videollamada', image: gImages.video, format: ServiceFormatKey.video, description: 'Conéctate a través de video desde cualquier lugar', emoji: '📹', duration: 20, defaults: [ { price: 10, duration: 15, highlight: true, name: 'Videoconsulta Exprés' }, { price: 20, duration: 30, name: 'Diálogo en Video' }, { price: 40, duration: 45, name: 'Análisis en Video' }, { price: 50, duration: 60, name: 'Sesión de video' } ] }, [ServiceFormatKey.person]: { icon: 'people', name: 'En persona', image: 'https://img.freepik.com/free-vector/interview-concept-illustration_114360-1501.jpg?w=2000&t=st=1688337692~exp=1688338292~hmac=38e6a84c27daa12639131fa66f4d57f1500f81ddf0028d1d13d5c62ff30618bf', format: ServiceFormatKey.person, description: 'Programa un encuentro en persona para asesoría detallada', emoji: '👥', duration: 180, defaults: [ { price: 50, duration: 60, name: 'Encuentro Personalizado' }, { price: 75, duration: 90, name: 'Análisis en Profundidad', highlight: true } ] } }; export type SpecialityBackendType = { id?: string; specialityKey?: SpecialityKey; } & SpecialityMapType; export type SpecialityMapType = { id?: string; specialityKey?: SpecialityKey; color?: string; icon?: string; // TODO Deprecate in favor of emoji emoji?: string; keywords?: string[]; name: string; }; export type ServiceBackendType = { id?: string; name?: string; // defaults to: "consulta en ${gSpecialities[specialityKey].name}" expertId?: string; //user uid speciality?: SpecialityKey; // TODO @cuaresma check I should receive the keywords?: string[]; description?: string; address?: string; // Only for format.inPerson price?: number; duration?: number; format?: ServiceFormatKey; // defaults to: ServiceFormatKey.video }; /** For frontend to print evertyhing*/ export type ServiceType = ServiceBackendType & { time_slots?: TimeSlotType[]; // Backend generates that based on }; export type FilterType = SpecialityMapType & { selected?: boolean; }; export type ServiceFormatType = { selected: boolean; serviceDetails: ServiceType[]; }; export type ServiceMapType = { [K in ServiceFormatKey]?: ServiceType[]; }; export enum SpecialityKey { psycho = 'psycho', interviewPractice = 'interviewPractice', /*listener = 'listener',*/ language = 'language', computer = 'computer', physiotherapist = 'physiotherapist', personalTrainer = 'personalTrainer', dance = 'dance', /*dreamInterpret = 'dreamInterpret',*/ /*astrology = 'astrology',*/ travel = 'travel', onlineTutor = 'onlineTutor', careerPath = 'careerPath', financialAdvisor = 'financialAdvisor', startupAdvisor = 'startupAdvisor', realState = 'realState', influencer = 'influencer', theatre = 'theatre', film = 'film', /*parenting = 'parenting',*/ /*relationships = 'relationships',*/ design = 'design', personalImage = 'personalImage', productivity = 'productivity', legalAdvisor = 'legalAdvisor', nutrition = 'nutrition', marketing = 'marketing', artAndCraft = 'artAndCraft', architecture = 'architecture', science = 'science', sustainability = 'sustainability', spirituality = 'spirituality', eventPlanning = 'eventPlanning', musicProduction = 'musicProduction', sales = 'sales', oratory = 'oratory', frontend = 'frontend', backend = 'backend', techSupport = 'techSupport' } export const gSpecialities: Record<SpecialityKey, SpecialityMapType> = { /*[SpecialityKey.listener]: { name: 'Escucha', emoji: '👂', icon: 'hearing' },*/ [SpecialityKey.psycho]: { icon: 'psychology', name: 'Psicología', emoji: '👩‍⚕️', keywords: [ 'psicoterapia', 'sexología', 'relaciones', 'neuropsicología', 'infantil', 'sueños', 'ansiedad', 'depresión', 'patologías', 'cognitivoConductual', 'trastornoDeAnsiedad' ] }, [SpecialityKey.nutrition]: { name: 'Nutrición', emoji: '🥑', icon: 'food-variant', keywords: [ 'dieta', 'suplementación', 'nutriciónDeportiva', 'obesidad', 'alergiasAlimentarias', 'veganismo' ] }, [SpecialityKey.physiotherapist]: { name: 'Fisioterapia', emoji: '💆‍♀️', icon: 'massage', keywords: [ 'rehabilitación', 'masajeTerapéutico', 'terapiaManual', 'kinesioterapia', 'osteopatía', 'kinesiología', 'electroterapia', 'ultrasonidoTerapéutico', 'hidroterapia', 'terapiaRespiratoria', 'acupuntura', 'pilatesTerapéutico', 'drenajeLinfático', 'preparaciónFísica', 'prevenciónDeLesiones', 'quiropráctica', 'fisioterapiaDeportiva', 'fisioterapiaNeurológica', 'fisioterapiaPediátrica', 'fisioterapiaGeriátrica', 'técnicasDeRelajación', 'movilizaciónArticular', 'ejerciciosDeFortalecimiento', 'terapiaConLáser', 'magnetoterapia', 'tapingNeuromuscular', 'punciónSeca' ] }, [SpecialityKey.dance]: { name: 'Baile', emoji: '💃', icon: 'dance', keywords: ['bachata', 'salsa', 'salsaCubana', 'cumbia', 'hipHop', 'jazz'] }, [SpecialityKey.personalTrainer]: { name: 'Deporte', emoji: '💪', icon: 'dumbbell', keywords: [ 'fitness', 'artesMarciales', 'gimnasia', 'boxeo', 'raqueta', 'yoga', 'entrenamiento', 'musculación', 'cardio' ] }, [SpecialityKey.startupAdvisor]: { name: 'Startup', emoji: '🚀', icon: 'rocket', keywords: [ 'emprendimiento', 'financiación', 'mentoría', 'tecnología', 'negocios', 'innovación', 'AI' ] }, /*[SpecialityKey.relationships]: { name: 'Relaciones', emoji: '💞', icon: 'heart' },*/ [SpecialityKey.legalAdvisor]: { name: 'Derecho', emoji: '⚖️', icon: 'scale-balance', keywords: [ 'laboral', 'mercantil', 'extranjería', 'sucesiones', 'embargos', 'civil', 'penal', 'fiscal', 'familia', 'administrativo', 'constitucional', 'comercial', 'financiero' ] }, [SpecialityKey.interviewPractice]: { name: 'Entrevistas', emoji: '💼', icon: 'microphone', keywords: ['entrevistas', 'testDeInteligencia', 'speech', 'CV'] }, [SpecialityKey.language]: { name: 'Idiomas', emoji: '💬', icon: 'translate', keywords: [ 'inglés', 'francés', 'español', 'aleman', 'gramática', 'pronunciación' ] }, [SpecialityKey.realState]: { name: 'Inmobiliaria', emoji: '🏠', icon: 'home', keywords: [ 'venta', 'alquiler', 'hipotecas', 'inversión', 'reformas', 'tasación', 'construcción', 'mercado' ] }, [SpecialityKey.productivity]: { name: 'Productividad', emoji: '⏰', icon: 'clock', keywords: ['gestiónDelTiempo', 'crecimiento', 'relaciones'] }, [SpecialityKey.computer]: { name: 'Informática', emoji: '💻', icon: 'laptop', keywords: [ 'hardware', 'software', 'hacking', 'redes', 'seguridadInformática', 'baseDeDatos', 'sistemasOperativos' ] }, [SpecialityKey.sales]: { name: 'Ventas', emoji: '💰', icon: 'money', keywords: ['ventas', 'negocios', 'marketing', 'publicidad'] }, [SpecialityKey.oratory]: { name: 'Oratoria', emoji: '🎙️', icon: 'microphone', keywords: [ 'oratoria', 'canto', 'pronunciación', 'speech', 'entrevistas', 'pitch' ] }, [SpecialityKey.frontend]: { name: 'Frontend', emoji: '📱', icon: 'web', keywords: [ 'html', 'mobile', 'react-native', 'css', 'javascript', 'react', 'angular' ] }, [SpecialityKey.backend]: { name: 'Backend', emoji: '📟', icon: 'computer', keywords: [ 'node.js', 'python', 'java', 'php', 'infraestructura', 'sql', 'aws', 'azure', 'docker' ] }, [SpecialityKey.techSupport]: { name: 'Sop. Técnico', emoji: '🔧', icon: 'wrench', keywords: ['soporte', 'técnico', 'cableado', 'infraestructura'] }, [SpecialityKey.sustainability]: { name: 'Sostenibilidad', emoji: '♻️', icon: 'eco', keywords: ['sostenibilidad', 'innovación', 'footprint', 'reciclaje'] }, [SpecialityKey.travel]: { name: 'Viajes', emoji: '🌍️', icon: 'earth', keywords: [ 'destinos', 'mochilero', 'ahorro', 'gastronómicos', 'cultura', 'aventura', 'guiados', 'recomendaciones' ] }, [SpecialityKey.spirituality]: { name: 'Espiritualidad', emoji: '💫', icon: 'religious-christian', keywords: [ 'tarot', 'floresDeBach', 'judaismo', 'buddhismo', 'cristianismo', 'paganismo', 'crisisDeFe' ] }, [SpecialityKey.eventPlanning]: { name: 'Eventos', emoji: '📅', icon: 'party-popper', keywords: [ 'wedding', 'birthday', 'anniversary', 'party', 'company', 'team building' ] }, [SpecialityKey.musicProduction]: { name: 'Música', emoji: '🎵', icon: 'music-note', keywords: [ 'instrumentos', 'canto', 'producciónMusical', 'composición', 'teoríaMusical', 'guitarra', 'piano', 'batería', 'producción', 'mezclaDJ', 'grabación', 'composición', 'instrumentos' ] }, [SpecialityKey.film]: { name: 'Cine', emoji: '🎥', icon: 'film', keywords: [ 'producción', 'dirección', 'guion', 'edición', 'sonido', 'cámara', 'iluminación' ] }, /*[SpecialityKey.parenting]: { name: 'Maternidad', emoji: '👨‍👩‍👧', icon: 'family', keywords: ['maternidad', 'infancia', 'adolescencia'] },*/ [SpecialityKey.design]: { name: 'Diseño', emoji: '📐', icon: 'palette', keywords: [ 'UX', 'UI', 'gráfico', 'copywriter', 'Product', 'Animaciones', 'editorial', 'web', 'interior', 'moda' ] }, [SpecialityKey.personalImage]: { name: 'Estilismo', emoji: '💅', icon: 'emoticon-glamour' }, [SpecialityKey.financialAdvisor]: { name: 'Finanzas', emoji: '💰', icon: 'currency-usd', keywords: [ 'inversión', 'ahorro', 'criptomonedas', 'impuestos', 'planificaciónFinanciera', 'asesoríaFiscal', 'inversiones', 'finanzasPersonales', 'créditos', 'bolsa', 'planificación', 'macroeconomía', 'microeconomía', 'bolsa' ] }, [SpecialityKey.influencer]: { name: 'Influencer', emoji: '📸', icon: 'camera' }, [SpecialityKey.theatre]: { name: 'Teatro', emoji: '🎭', icon: 'drama-masks' }, /*[SpecialityKey.dreamInterpret]: { name: 'Sueños', emoji: '😴', icon: 'power-sleep' },*/ [SpecialityKey.onlineTutor]: { name: 'Clases Particulares', emoji: '📚', icon: 'book-open-variant', keywords: [ 'matemáticas', 'física', 'química', 'idiomas', 'ingles', 'español' ] }, [SpecialityKey.careerPath]: { name: 'Plan de carrera ', emoji: '🎓', icon: 'book-open-variant', keywords: [ 'carrera', 'universidad', 'escuela', 'formación', 'estudios', 'becas' ] }, [SpecialityKey.marketing]: { name: 'Marketing', emoji: '🔍', icon: 'book-open-variant', keywords: [ 'publicidad', 'SEO', 'SEM', 'socialMedia', 'emailMarketing', 'contentMarketing' ] }, [SpecialityKey.artAndCraft]: { name: 'Arte y Manualidades', emoji: '🎨', icon: 'art-palette', keywords: ['pintura', 'escultura', 'cerámica', 'dibujo', 'manualidades'] }, [SpecialityKey.architecture]: { name: 'Arquitectura', emoji: '🏛️', icon: 'column', keywords: [ 'construcción', 'diseñoInteriores', 'urbanismo', 'restauración', 'paisajismo' ] }, [SpecialityKey.science]: { name: 'Ciencias', emoji: '🔬', icon: 'microscope', keywords: ['biología', 'química', 'física', 'astronomía', 'biotecnología'] } }; export type SpecialityCategoryKey = Record< string, { name: string; emoji: string; services: SpecialityKey[]; } >; export const specialityCategories: SpecialityCategoryKey = { healthAndWellness: { name: 'Bienestar', emoji: '💪', services: [ SpecialityKey.nutrition, SpecialityKey.personalTrainer, SpecialityKey.physiotherapist, SpecialityKey.psycho, // Incluye parenting y listener SpecialityKey.spirituality ] }, personalDevelopment: { name: 'Desarrollo Personal', emoji: '🌟', services: [ SpecialityKey.oratory, SpecialityKey.personalImage, SpecialityKey.travel, SpecialityKey.sustainability, SpecialityKey.productivity, SpecialityKey.influencer ] }, businessAndSustainability: { name: 'Negocios', emoji: '💼', services: [ SpecialityKey.legalAdvisor, SpecialityKey.realState, SpecialityKey.financialAdvisor, SpecialityKey.startupAdvisor, SpecialityKey.marketing, SpecialityKey.sales ] }, technology: { name: 'Tecnología', emoji: '👨🏻‍💻', services: [ SpecialityKey.computer, SpecialityKey.frontend, SpecialityKey.backend, SpecialityKey.techSupport ] }, learningAndEducation: { name: 'Aprendizaje', emoji: '🎓', services: [ SpecialityKey.careerPath, SpecialityKey.interviewPractice, SpecialityKey.onlineTutor, SpecialityKey.language, SpecialityKey.science ] }, lifestyleAndArts: { name: 'Artes', emoji: '👨‍🎨', services: [ SpecialityKey.design, SpecialityKey.musicProduction, SpecialityKey.film, SpecialityKey.theatre, SpecialityKey.artAndCraft, SpecialityKey.architecture, SpecialityKey.dance ] } }; export const ideaMap = { ideas: { name: 'Ideas', emoji: '💡' }, problemas: { name: 'Problemas', emoji: '😡' }, pensamientos: { name: 'Pensamientos', emoji: '💭' }, dudas: { name: 'Dudas', emoji: '🤔' }, emociones: { name: 'Emociones', emoji: '🥹' }, goals: { name: 'Metas', emoji: '🎯' }, motivation: { name: 'motivación', emoji: '💪' }, logros: { name: 'Logros', emoji: '🏆' } }; export const solutionsMap = [ { emoji: '💼', name: 'Preparar entrevistas', subtitle: 'Práctica, consejos', speciality: SpecialityKey.interviewPractice, img: 'https://www.gdgoenkauniversity.com/site/img/placementcell-img.jpg' }, { emoji: '💬', name: 'Practicar idiomas', speciality: SpecialityKey.language, subtitle: 'Conversación, aprendizaje', //img: // 'https://img.freepik.com/free-vector/language-learning-camp-abstract-concept-illustration_335657-2494.jpg?w=826&t=st=1683398854~exp=1683399454~hmac=66f42dd6e1dd10816d869cba2e648b194c9d5d7beb797613715f9d42a853e372', img: 'https://img.freepik.com/free-photo/virtual-classroom-study-space_23-2149178645.jpg?size=626&ext=jpg&ga=GA1.1.301189620.1682070100&semt=ais' }, { emoji: '⚖️', name: 'Dudas legales', speciality: SpecialityKey.legalAdvisor, subtitle: 'Consultas, orientación', img: 'https://img.freepik.com/foto-gratis/empresario-masculino-feliz-que-tiene-videollamada-computadora-portatil-mientras-trabaja-oficina_637285-6768.jpg' }, { emoji: '📚', name: 'Clases particulares', speciality: SpecialityKey.onlineTutor, subtitle: 'Tutorías, apoyo académico', img: 'https://eduww.net/wp-content/uploads/2022/02/Online-School-is-better-alternative-768x512.webp' }, { emoji: '🚀', name: 'Asesoría de empresas', speciality: SpecialityKey.startupAdvisor, subtitle: 'Startups, negocios, finalización...', img: 'https://img.freepik.com/free-photo/group-workers-using-remote-video-call-talk-man-about-business-growth-computer-team-people-meeting-discuss-marketing-collaboration-online-internet-teleconference_482257-40554.jpg?w=1060&t=st=1683487722~exp=1683488322~hmac=7dcf6618cdf3c37af3bc455e7ad6607ae88eee763c25bda1c7f8694448b3bb54' }, { emoji: '🎯', name: 'Productividad', speciality: SpecialityKey.productivity, img: 'https://sanjeevdatta.com/wp-content/uploads/2022/01/clarity.jpg', subtitle: 'Herramientas, técnicas' } ];