diff --git a/app/globals.css b/app/globals.css index e225e3d..b14318c 100644 --- a/app/globals.css +++ b/app/globals.css @@ -463,6 +463,12 @@ h4{font-size:18px;line-height:1.3} .student-meta{font-size:11px;color:var(--ink-3)} .student-desc{font-size:11.5px;color:var(--ink-3);line-height:1.35} .student-count{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);font-family:var(--mono);font-size:11px;color:var(--ink-4);letter-spacing:.04em;display:flex;justify-content:space-between;align-items:center} +.devteam-card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);padding:28px 28px 20px;margin-top:24px} +.devteam-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin-top:4px} +.devteam-bubble{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:20px 10px} +.devteam-av{width:62px;height:62px;border-radius:50%;background:rgba(167,199,255,.28);border:2px solid rgba(167,199,255,.5);display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;color:var(--brand-on);margin-bottom:6px;flex-shrink:0;overflow:hidden}.devteam-av img{width:100%;height:100%;object-fit:cover;border-radius:50%} +.devteam-name{font-size:13px;font-weight:500;color:var(--ink);line-height:1.3} +.devteam-role{font-size:11.5px;color:var(--ink-3);line-height:1.35} .hist-inst-list{display:flex;flex-direction:column;gap:0;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;margin-top:8px} .hist-inst-item{display:flex;align-items:center;gap:16px;padding:18px 22px;border-bottom:1px solid var(--line)} .hist-inst-item:last-child{border-bottom:none} @@ -524,6 +530,7 @@ h4{font-size:18px;line-height:1.3} .comm-stats{grid-template-columns:1fr 1fr} .student-grid{grid-template-columns:repeat(4,1fr)} .students-card{padding:22px 20px 16px} + .devteam-card{padding:22px 20px 16px} .mock-chrome{padding:10px 14px}.mock-url{font-size:10.5px} .mock-carousel{--slide-w:90%;--slide-gap:14px} .mock-arrow{width:36px;height:36px}.mock-arrow svg{width:15px;height:15px} @@ -552,6 +559,8 @@ h4{font-size:18px;line-height:1.3} .inst-grid{grid-template-columns:1fr}.foot-grid{grid-template-columns:1fr} .student-grid{grid-template-columns:repeat(3,1fr)} .students-card{padding:18px 16px 14px} + .devteam-grid{grid-template-columns:repeat(2,1fr)} + .devteam-card{padding:18px 16px 14px} .mock-sidebar{grid-template-columns:1fr}.mock-fname{font-size:12px} .req-grid{grid-template-columns:1fr}.dl-buttons a{padding:12px 14px;font-size:13.5px} .lang-trigger{padding:6px 8px;gap:5px} @@ -565,6 +574,7 @@ h4{font-size:18px;line-height:1.3} .hero-cta{flex-direction:column;align-items:stretch}.hero-cta .btn{justify-content:center} .student-grid{grid-template-columns:repeat(2,1fr)} .student-av{width:52px;height:52px;font-size:14px} + .devteam-av{width:52px;height:52px;font-size:14px} } /* ── Mock image zoom hint + lightbox ── */ diff --git a/components/community/TeamGrid.tsx b/components/community/TeamGrid.tsx new file mode 100644 index 0000000..ebc5acc --- /dev/null +++ b/components/community/TeamGrid.tsx @@ -0,0 +1,27 @@ +'use client' + +import { useTranslation } from 'react-i18next' +import '@/app/i18n' +import { TEAM } from '@/data/team' + +export function TeamGrid() { + const { t } = useTranslation('about') + + return ( +
+
+ {TEAM.map((m, i) => ( +
+
+ {m.avatar + ? {m.name} + : m.initials} +
+ {m.name} + {t(m.roleKey)} +
+ ))} +
+
+ ) +} diff --git a/components/community/routes/AboutRoute.tsx b/components/community/routes/AboutRoute.tsx index 330194f..c83e1ee 100644 --- a/components/community/routes/AboutRoute.tsx +++ b/components/community/routes/AboutRoute.tsx @@ -4,6 +4,7 @@ import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { InstitutionsGrid } from '../InstitutionsGrid' import { StudentsGrid } from '../StudentsGrid' +import { TeamGrid } from '../TeamGrid' import { getAcknowledgmentsText } from '@/lib/institutions' import { getLatestRelease } from '@/lib/github' import '@/app/i18n' @@ -79,6 +80,19 @@ export function AboutRoute() { + {/* Sub-section: Team */} +
+
+ [ /about/team ] + {' '} {' '} + {t('abt.team.ey')} +
+

+

{t('abt.team.lead')}

+ + +

+ {/* Sub-section: History */}
diff --git a/data/students.ts b/data/students.ts index a234317..0791cd6 100644 --- a/data/students.ts +++ b/data/students.ts @@ -63,7 +63,7 @@ export const STUDENTS: Student[] = [ initials: 'FC', name: 'Felipe Cárdenas', year: 2024, descKey: 'abt.students.felipe-cardenas.desc', fullDesc: 'Módulo de predicción', - avatar: '/images/students/felipe_cardenas.jpg', + avatar: '/images/team/felipe_cardenas.jpg', }, { initials: 'FV', name: 'Florencia Valladares', year: 2024, @@ -103,7 +103,7 @@ export const STUDENTS: Student[] = [ initials: 'CR', name: 'Camila Reyes', year: 2025, descKey: 'abt.students.camila-reyes.desc', fullDesc: 'Integración de Modelos LLM en DashAI', - avatar: '/images/students/camila_reyes.jpg', + avatar: '/images/team/camila_reyes.jpg', }, { initials: 'CH', name: 'Carla Hayler', year: 2025, @@ -115,7 +115,7 @@ export const STUDENTS: Student[] = [ initials: 'ED', name: 'Emilio Díaz', year: 2025, descKey: 'abt.students.emilio-diaz.desc', fullDesc: 'Generación de Imágenes para DashAI', - avatar: '/images/students/emilio_diaz.png', + avatar: '/images/team/emilio_diaz.jpg', }, { initials: 'IV', name: 'Isaias Venegas', year: 2025, diff --git a/data/team.ts b/data/team.ts new file mode 100644 index 0000000..82f8bf8 --- /dev/null +++ b/data/team.ts @@ -0,0 +1,55 @@ +export interface TeamMember { + initials: string + name: string + roleKey: string + avatar?: string + imgStyle?: { transform?: string; objectPosition?: string; scale?: string } +} + +export const TEAM: TeamMember[] = [ + { + initials: 'FB', name: 'Felipe Bravo', + roleKey: 'abt.team.felipe-bravo-marquez.role', + avatar: '/images/team/felipe_bravo.jpg', + }, + { + initials: 'CL', name: 'Claudia López', + roleKey: 'abt.team.claudia-lopez.role', + avatar: '/images/team/claudia_lopez.jpg', + }, + { + initials: 'CT', name: 'Cristián Tamblay', + roleKey: 'abt.team.cristian-tamblay.role', + avatar: '/images/team/cristian_tamblay.jpg', + }, + { + initials: 'CR', name: 'Camila Reyes', + roleKey: 'abt.team.camila-reyes.role', + avatar: '/images/team/camila_reyes.jpg', + }, + { + initials: 'ED', name: 'Emilio Díaz', + roleKey: 'abt.team.emilio-diaz.role', + avatar: '/images/team/emilio_diaz.jpg', + }, + { + initials: 'FC', name: 'Felipe Cárdenas', + roleKey: 'abt.team.felipe-cardenas.role', + avatar: '/images/team/felipe_cardenas.jpg', + }, + { + initials: 'NN', name: 'Nicolás Nast', + roleKey: 'abt.team.nicolas-nast.role', + avatar: '/images/team/nicolas_nast.jpg', + }, + { + initials: 'AC', name: 'Andrés Carvallo', + roleKey: 'abt.team.andres-carvallo.role', + avatar: '/images/team/andres_carvallo.jpg', + }, + { + initials: 'YH', name: 'Yelena Hernandez', + roleKey: 'abt.team.yelena-hernandez.role', + avatar: '/images/team/yelena_hernandez.jpg', + }, +] diff --git a/public/images/students/emilio_diaz.png b/public/images/students/emilio_diaz.png deleted file mode 100644 index 6ebaa03..0000000 Binary files a/public/images/students/emilio_diaz.png and /dev/null differ diff --git a/public/images/team/andres_carvallo.jpg b/public/images/team/andres_carvallo.jpg new file mode 100644 index 0000000..d6b0651 Binary files /dev/null and b/public/images/team/andres_carvallo.jpg differ diff --git a/public/images/students/camila_reyes.jpg b/public/images/team/camila_reyes.jpg similarity index 100% rename from public/images/students/camila_reyes.jpg rename to public/images/team/camila_reyes.jpg diff --git a/public/images/team/claudia_lopez.jpg b/public/images/team/claudia_lopez.jpg new file mode 100644 index 0000000..f341132 Binary files /dev/null and b/public/images/team/claudia_lopez.jpg differ diff --git a/public/images/team/cristian_tamblay.jpg b/public/images/team/cristian_tamblay.jpg new file mode 100644 index 0000000..9d32aba Binary files /dev/null and b/public/images/team/cristian_tamblay.jpg differ diff --git a/public/images/team/emilio_diaz.jpg b/public/images/team/emilio_diaz.jpg new file mode 100644 index 0000000..5f05bef Binary files /dev/null and b/public/images/team/emilio_diaz.jpg differ diff --git a/public/images/team/felipe_bravo.jpg b/public/images/team/felipe_bravo.jpg new file mode 100644 index 0000000..5099df8 Binary files /dev/null and b/public/images/team/felipe_bravo.jpg differ diff --git a/public/images/students/felipe_cardenas.jpg b/public/images/team/felipe_cardenas.jpg similarity index 100% rename from public/images/students/felipe_cardenas.jpg rename to public/images/team/felipe_cardenas.jpg diff --git a/public/images/team/nicolas_nast.jpg b/public/images/team/nicolas_nast.jpg new file mode 100644 index 0000000..f29788c Binary files /dev/null and b/public/images/team/nicolas_nast.jpg differ diff --git a/public/images/team/yelena_hernandez.jpg b/public/images/team/yelena_hernandez.jpg new file mode 100644 index 0000000..fdaf69c Binary files /dev/null and b/public/images/team/yelena_hernandez.jpg differ diff --git a/public/locales/de/about.json b/public/locales/de/about.json index 157857f..e857c32 100644 --- a/public/locales/de/about.json +++ b/public/locales/de/about.json @@ -68,5 +68,17 @@ "abt.students.isaias-venegas.desc": "Converter-Modul", "abt.students.sofia-chavez.desc": "No-Code-RAG-Systeme", "abt.students.carla-hayler.desc": "Visuelles Pipeline-System", - "abt.students.ivan-salas.desc": "Forecasting-Modul" + "abt.students.ivan-salas.desc": "Forecasting-Modul", + "abt.team.andres-carvallo.role": "Forscher", + "abt.team.camila-reyes.role": "Software-Ingenieurin", + "abt.team.claudia-lopez.role": "Stellvertretende Direktorin", + "abt.team.cristian-tamblay.role": "Leitender Software-Ingenieur", + "abt.team.emilio-diaz.role": "Software-Ingenieur", + "abt.team.ey": "Entwicklungsteam", + "abt.team.felipe-bravo-marquez.role": "Direktor", + "abt.team.felipe-cardenas.role": "Technisches Personal", + "abt.team.h": "Entwicklungsteam.", + "abt.team.lead": "Die Menschen, die dashAI Tag für Tag entwerfen, entwickeln und pflegen.", + "abt.team.nicolas-nast.role": "UX-Ingenieur & Produktentwicklung", + "abt.team.yelena-hernandez.role": "HCI-Forschungsassistentin" } diff --git a/public/locales/en/about.json b/public/locales/en/about.json index 5cd1f14..72a7f04 100644 --- a/public/locales/en/about.json +++ b/public/locales/en/about.json @@ -68,5 +68,17 @@ "abt.students.isaias-venegas.desc": "Converters module", "abt.students.sofia-chavez.desc": "No-code RAG systems", "abt.students.carla-hayler.desc": "Visual pipeline system", - "abt.students.ivan-salas.desc": "Forecasting module" + "abt.students.ivan-salas.desc": "Forecasting module", + "abt.team.andres-carvallo.role": "Researcher", + "abt.team.camila-reyes.role": "Software Engineer", + "abt.team.claudia-lopez.role": "Alternate Director", + "abt.team.cristian-tamblay.role": "Lead Software Engineer", + "abt.team.emilio-diaz.role": "Software Engineer", + "abt.team.ey": "development team", + "abt.team.felipe-bravo-marquez.role": "Director", + "abt.team.felipe-cardenas.role": "Technical Staff", + "abt.team.h": "Development team.", + "abt.team.lead": "The people who design, build and maintain dashAI day to day.", + "abt.team.nicolas-nast.role": "UX Engineer & Product Development", + "abt.team.yelena-hernandez.role": "HCI Research Assistant" } \ No newline at end of file diff --git a/public/locales/es/about.json b/public/locales/es/about.json index 4aed652..fb92bfd 100644 --- a/public/locales/es/about.json +++ b/public/locales/es/about.json @@ -68,5 +68,17 @@ "abt.students.isaias-venegas.desc": "Módulo de converters", "abt.students.sofia-chavez.desc": "Sistemas RAG no-code", "abt.students.carla-hayler.desc": "Sistema visual de pipelines", - "abt.students.ivan-salas.desc": "Módulo de forecasting" + "abt.students.ivan-salas.desc": "Módulo de forecasting", + "abt.team.andres-carvallo.role": "Investigador", + "abt.team.camila-reyes.role": "Ingeniero de software", + "abt.team.claudia-lopez.role": "Directora Alterna", + "abt.team.cristian-tamblay.role": "Ingeniero de software líder", + "abt.team.emilio-diaz.role": "Ingeniero de software", + "abt.team.ey": "equipo de desarrollo", + "abt.team.felipe-bravo-marquez.role": "Director", + "abt.team.felipe-cardenas.role": "Personal Técnico", + "abt.team.h": "Equipo de Desarrollo.", + "abt.team.lead": "Las personas que día a día diseñan, construyen y mantienen dashAI.", + "abt.team.nicolas-nast.role": "Ingeniero UX y desarrollo de producto", + "abt.team.yelena-hernandez.role": "Asistente de investigación HCI" } \ No newline at end of file diff --git a/public/locales/pt/about.json b/public/locales/pt/about.json index 78b57f2..8a92096 100644 --- a/public/locales/pt/about.json +++ b/public/locales/pt/about.json @@ -68,5 +68,17 @@ "abt.students.isaias-venegas.desc": "Módulo de conversores", "abt.students.sofia-chavez.desc": "Sistemas RAG no-code", "abt.students.carla-hayler.desc": "Sistema visual de pipelines", - "abt.students.ivan-salas.desc": "Módulo de forecasting" + "abt.students.ivan-salas.desc": "Módulo de forecasting", + "abt.team.andres-carvallo.role": "Pesquisador", + "abt.team.camila-reyes.role": "Engenheira de Software", + "abt.team.claudia-lopez.role": "Diretora Alterna", + "abt.team.cristian-tamblay.role": "Engenheiro de Software Líder", + "abt.team.emilio-diaz.role": "Engenheiro de Software", + "abt.team.ey": "equipe de desenvolvimento", + "abt.team.felipe-bravo-marquez.role": "Diretor", + "abt.team.felipe-cardenas.role": "Equipe Técnica", + "abt.team.h": "Equipe de Desenvolvimento.", + "abt.team.lead": "As pessoas que, dia a dia, projetam, constroem e mantêm o dashAI.", + "abt.team.nicolas-nast.role": "Engenheiro de UX e desenvolvimento de produto", + "abt.team.yelena-hernandez.role": "Assistente de Pesquisa em IHC" } \ No newline at end of file diff --git a/public/locales/zh/about.json b/public/locales/zh/about.json index c858a8e..08740c2 100644 --- a/public/locales/zh/about.json +++ b/public/locales/zh/about.json @@ -68,5 +68,17 @@ "abt.students.isaias-venegas.desc": "Converters 模块", "abt.students.sofia-chavez.desc": "无代码 RAG 系统", "abt.students.carla-hayler.desc": "可视化 Pipeline 系统", - "abt.students.ivan-salas.desc": "Forecasting 模块" + "abt.students.ivan-salas.desc": "Forecasting 模块", + "abt.team.andres-carvallo.role": "研究员", + "abt.team.camila-reyes.role": "软件工程师", + "abt.team.claudia-lopez.role": "副主任", + "abt.team.cristian-tamblay.role": "首席软件工程师", + "abt.team.emilio-diaz.role": "软件工程师", + "abt.team.ey": "开发团队", + "abt.team.felipe-bravo-marquez.role": "主任", + "abt.team.felipe-cardenas.role": "技术人员", + "abt.team.h": "开发团队。", + "abt.team.lead": "每天设计、构建和维护 dashAI 的人们。", + "abt.team.nicolas-nast.role": "UX工程师兼产品开发", + "abt.team.yelena-hernandez.role": "人机交互研究助理" }