Skip to content

Commit 8ac2244

Browse files
committed
fix: Se cambió la descripción del FLISOL 2026 y se añadieron dos botones para registarse al evento. Se actualizó el componente src/components/ui/calendar.tsx; enteriormente se mostraban los días en inglés, es decir, el calendario no tenía soporte multi-idioma; ahora se importa 'es' y 'en' en date-fns/locale, se usa useLanguage() para detectar el idioma activo y pasa el locale={locale} al DayPicker. Ahora el título que se muestra en la notificación se trunca a 40 caracteres (para evitar que esta tarjeta crezca demasiado si se tiene un título muy largo). Se cambió levemente el aspecto de la barra de scroll.
1 parent eb350df commit 8ac2244

5 files changed

Lines changed: 118 additions & 45 deletions

File tree

project.org

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ El archivo src/data/blogPosts.ts se sigue usando, este genera los componentes [[
361361
- Para implementar el soporte multi-idioma:
362362
- Se modificará el directorio de cada post para contener versiones por idioma, un archivo por cada idioma (en este caso solo inglés-español, por ejemplo: index.es.md, index.en.md).
363363
- Se modificará el[[file:scripts/build-blog.js][ script]] que genera el[[file:src/data/blogPosts.ts][ archito ts]] con que usan los compontes que genran el blog. Deben detectar los archivos con sufijos .es.md o en.md y generar la estructura tipo json adecuada.
364-
**** IN-PROGRESS Events y EventDetail [94%]
364+
**** IN-PROGRESS Events y EventDetail [88%]
365365
DEADLINE: <2026-04-12 Sun>
366366
- [X] Mudar el contenido "legacy" [100%]
367367
- [X] Las tecnologías de internet en los movimientos sociales
@@ -395,13 +395,18 @@ DEADLINE: <2026-04-12 Sun>
395395
Este calendario está basado en la vista de GNOME Notifications/Calendar.
396396
- [X] En el calendario de Events.tsx, se debe mostrar un punto debajo del día del evento
397397
- [ ] Hacer que la notificación tenga el mismo ancho que el calendario.
398-
- [ ] Hacer que el calendario soporte el multi-idioma
398+
- [X] Hacer que el calendario soporte el multi-idioma
399399
- [X] Hacer que el color de la notificación sea más clara que el BG general
400400
- [X] En Events.tsx, debajo del calendario, se debe mostrar un apartado de notificaciones que muestre todos los próximos eventos.
401401
- [X] En el calendario de EventDetail.tsx muestra encerrado en un círculo el día del evento
402-
- [X] Mejorar la sección de cronograma
402+
- [-] Mejorar la sección de cronograma
403403
- [X] Tener sub-items por día/hora
404-
- [X] Añadir la información faltante de FLISOL 2026
404+
- [ ] Añadir la información faltante de FLISOL 2026
405+
- [ ] Añadir los ponentes faltantes
406+
- [ ] Añadir los requermientos de los talleres
407+
- [ ] Actualizar la descripción
408+
- [ ] Añadir botón de registro al evento.
409+
- [ ] Añadir el botón de "Ayudar a los asistentes".
405410
**** IN-PROGRESS CourseDetail y CourseDetail [22%]
406411
DEADLINE: <2026-04-12 Sun>
407412
- [ ] Mudar el contenido al sitio actual [0%]
@@ -463,9 +468,10 @@ DEADLINE: <2026-03-03 Tue>
463468
- Tal vez en el futuro sea bueno añadir paginación, si crece mucho el número de miembros. Igual intentar con una base de datos... (si hay más de 50 miembros, tal vea hora de dejar el "json").
464469
*** TODO Optimización/Bugs/Testing/Corrección de vulnerabilidades
465470
DEADLINE: <2026-04-18 Sat>
471+
**** Mejorar el SEO del sitio (para posicionarlo mejor al buscar en el navegador)
466472
**** DONE Modo oscuro automático según el sistema
473+
**** Desactivar la ejecución automática de scripts y crear un por área (miembros, eventos, etc) para añadir info maś fácilmente sin la necesidad de meterte al ts
467474
**** Colocar la información correcta en la fecha de inicio de los miembros.
468-
**** Mejorar el SEO del sitio (para posicionarlo mejor al buscar en el navegador)
469475
**** Sería bueno "Normalizar" el tamaño de los títulos del Home.
470476
**** Tal vez sería bueno cambiar el texto de "Proyectos en desarrollo" del Home, pues hay algunas investigaciones que ya no están en curso.
471477
**** Añadir una "pantalla de carga" al inicio.

src/components/Events.tsx

Lines changed: 38 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -76,61 +76,66 @@ export function Events({ onEventClick }: EventsProps) {
7676
</p>
7777
</div>
7878

79-
<div className="max-w-md mx-auto mb-16">
79+
<div className="max-w-md mx-auto mb-16">
8080
<div className="bg-card rounded-3xl p-6 border border-border/40 shadow-sm">
8181
<div className="space-y-6">
8282
<h2 className="text-xl font-medium text-center">{t.calendar[language]}</h2>
8383

84-
<div className="flex justify-center">
84+
<div className="mx-auto flex flex-col items-center" style={{ width: '290px' }}>
85+
<div className="flex justify-center">
8586
<Calendar
8687
mode="single"
8788
selected={date}
8889
onSelect={setDate}
8990
className="rounded-2xl border-none"
9091
modifiers={{ hasEvent: eventDates }}
9192
/>
92-
</div>
93-
94-
<div className="w-full notification-bg rounded-2xl p-3">
95-
<div className="flex items-start gap-4">
96-
<div className="flex-1 min-w-0">
97-
<div className="text-[10px] font-bold uppercase tracking-widest mb-1 text-muted-foreground/90">
98-
{t.nextEvent[language]}
99-
</div>
93+
</div>
94+
<div className="notification-bg rounded-2xl p-3 mt-4 w-full">
95+
<div className="flex items-start gap-4">
96+
<div className="flex-1 min-w-0">
97+
<div className="text-[10px] font-bold uppercase tracking-widest mb-1 text-muted-foreground/90">
98+
{t.nextEvent[language]}
99+
</div>
100100

101-
{upcomingEvent ? (
102-
<button
103-
onClick={() => onEventClick(upcomingEvent.id)}
104-
className="text-left w-full group"
105-
>
106-
<div className="font-semibold truncate group-hover:text-primary transition-colors">
107-
{upcomingEvent.title[language]}
108-
</div>
109-
<div className="flex items-center gap-3 mt-1.5 text-sm text-muted-foreground/80">
110-
<div className="flex items-center gap-1">
111-
<CalendarIcon className="h-3.5 w-3.5" />
112-
<span>{upcomingEvent.startDate}</span>
101+
{upcomingEvent ? (
102+
<button
103+
onClick={() => onEventClick(upcomingEvent.id)}
104+
className="text-left w-full group"
105+
>
106+
<div className="font-semibold group-hover:text-primary transition-colors">
107+
{(() => {
108+
const title = upcomingEvent.title[language];
109+
return title.length > 40 ? title.slice(0, 40) + '...' : title;
110+
})()}
113111
</div>
114-
{upcomingEvent.time && (
112+
<div className="flex items-center gap-3 mt-1.5 text-sm text-muted-foreground/80">
115113
<div className="flex items-center gap-1">
116-
<Clock className="h-3.5 w-3.5" />
117-
<span>{upcomingEvent.time}</span>
114+
<CalendarIcon className="h-3.5 w-3.5" />
115+
<span>{upcomingEvent.startDate}</span>
118116
</div>
119-
)}
117+
{upcomingEvent.time && (
118+
<div className="flex items-center gap-1">
119+
<Clock className="h-3.5 w-3.5" />
120+
<span>{upcomingEvent.time}</span>
121+
</div>
122+
)}
123+
</div>
124+
</button>
125+
) : (
126+
<div className="text-sm text-muted-foreground italic">
127+
{t.noUpcoming[language]}
120128
</div>
121-
</button>
122-
) : (
123-
<div className="text-sm text-muted-foreground italic">
124-
{t.noUpcoming[language]}
125-
</div>
126-
)}
129+
)}
130+
</div>
127131
</div>
128132
</div>
129133
</div>
130134
</div>
131135
</div>
132136
</div>
133137

138+
<div className="container mx-auto px-4 sm:px-6 lg:px-8">
134139
<div className="max-w-4xl mx-auto space-y-6">
135140
{sortedEvents.map((event, index) => (
136141
<div key={event.id} className="relative">
@@ -227,6 +232,7 @@ export function Events({ onEventClick }: EventsProps) {
227232
))}
228233
</div>
229234
</div>
235+
</div>
230236
</section>
231237
);
232238
}

src/components/ui/calendar.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
import * as React from "react";
44
import { ChevronLeft, ChevronRight } from "lucide-react@0.487.0";
55
import { DayPicker } from "react-day-picker@8.10.1";
6+
import { es, enUS } from "date-fns/locale";
67

78
import { cn } from "./utils";
89
import { buttonVariants } from "./button";
10+
import { useLanguage } from "../LanguageProvider";
911

1012
function Calendar({
1113
className,
@@ -14,6 +16,10 @@ function Calendar({
1416
modifiers,
1517
...props
1618
}: React.ComponentProps<typeof DayPicker> & { modifiers?: { hasEvent?: Date[] } }) {
19+
const { language } = useLanguage();
20+
21+
const locale = language === "es" ? es : enUS;
22+
1723
const hasEventOnDate = (date: Date): boolean => {
1824
if (!modifiers?.hasEvent) return false;
1925
return modifiers.hasEvent.some(
@@ -28,6 +34,7 @@ function Calendar({
2834
<DayPicker
2935
showOutsideDays={showOutsideDays}
3036
className={cn("p-3", className)}
37+
locale={locale}
3138
classNames={{
3239
months: "flex flex-col sm:flex-row gap-2",
3340
month: "flex flex-col gap-4",

src/data/events.ts

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ export const events: Event[] = [
7373
},
7474
description: {
7575
en: "## What is FLISoL?\nThe main objective of the event is to promote the use of free software, introducing its philosophy, scope, advances, and development to the general public. It is organized by various local communities. During the event, free software is installed on attendees' computers in a completely free and legal manner. In parallel, **talks, lectures, and workshops are offered**.\n\n## 2026 Theme\n**\"Free Software, Artificial Intelligence, Open Hardware, Free Culture, and their relationship with user autonomy and privacy\"**\n\n## Where and When?\nThe event will take place on the following days:\n- **May 7th:** Conferences\n- **May 8th:** Workshops\n\nAt the Northern Complex of the Faculty of Engineering, Building I, PC-Puma Kiosk.\n\n## How do I participate?\nIf you are interested in contributing to the event, you can participate in the following ways:\n\n### Conferences and Workshops\nWould you like to give a talk or workshop on any free technology? Tell us about your proposal through [our Telegram channel](https://t.me/LIDSoL) or register it [in this form](https://cloud.lidsol.unam.mx/apps/forms/s/iniYSs2ostbLnsnnPyaBM6mm).\n\n### Installer\nIf you already have experience with Free Software and know how to install it on different platforms, we invite you to attend and help others learn!\n\n### Attendee\nEntry is open, free, and available to everyone.\nIf you want to try or install free software, bring your equipment and we will provide the necessary assistance.\n\n**Your participation makes this event possible! We are very grateful to those who wish to support us.**\n\n⚠️ *Note:* If you want to try a new operating system, remember to back up your important information beforehand.",
76-
es: "## ¿Qué es el FLISoL?\n El principal objetivo del evento es promover el uso del software libre, dando a conocer al público general su filosofía, alcances, avances y desarrollo. Es organizado por diversas comunidades locales. Durante el encuentro se realiza la instalación, de manera gratuita y totalmente legal, de software libre en las computadoras de los asistentes. De forma paralela, **se ofrecen charlas, ponencias y talleres**.\n\n## Temática 2026\n**\"Software Libre, Inteligencia Artificial, Hardware Abierto, Cultura Libre y su relación con la autonomía y la privacidad de los usuarios\"**\n\n## ¿Dónde y cuándo es?\nEl evento se llevará a cabo los días: \n- **7 de mayo:** Conferencias\n- **8 de mayo:** Talleres\n\nEn el Conjunto Norte de la Facultad de Ingeniería, Edificio I, Quiosco PC-Puma.\n\n## ¿Cómo participo?\n Si estás interesado en contribuir en el evento, puedes participar de las siguientes formas:\n\n ### Conferencias y talleres\n¿Te gustaría impartir una charla o un taller sobre alguna tecnología libre? Cuéntanos tu propuesta por [nuestro canal de Telegram](https://t.me/LIDSoL) o registra tu propuesta [en este formulario](https://cloud.lidsol.unam.mx/apps/forms/s/iniYSs2ostbLnsnnPyaBM6mm).\n\n### Instalador\nSi ya tienes experiencia con Software Libre y sabes cómo instalarlo en distintas plataformas, ¡te invitamos a asistir para ayudar a otras personas a aprender!\n\n### Asistente\nLa entrada es abierta, gratuita y está disponible para todo el público. \nSi deseas probar o instalar software libre, trae tu equipo y nosotros te brindaremos la asistencia necesaria.\n\n**¡Tu participación hace posible este evento! Estamos muy agradecidos con quienes deseen apoyar.**\n\n⚠️ *Nota:* Si deseas probar un nuevo sistema operativo, recuerda realizar previamente un respaldo de tu información importante."
76+
es: "## ¿Qué es el FLISoL?\n El principal objetivo del evento es promover el uso del software libre, dando a conocer al público general su filosofía, alcances, avances y desarrollo. Es organizado por diversas comunidades locales. Durante el encuentro se realiza la instalación, de manera gratuita y totalmente legal, de software libre en las computadoras de los asistentes. De forma paralela, **se ofrecen charlas, ponencias y talleres**.\n\n## Temática 2026\n**\"Software Libre, Inteligencia Artificial, Hardware Abierto, Cultura Libre y su relación con la autonomía y la privacidad de los usuarios\"**\n\n## ¿Dónde y cuándo es?\nEl evento se llevará a cabo los días: \n- **7 de mayo:** Conferencias\n- **8 de mayo:** Talleres\n\nEn el Anexo de la Facultad de Ingeniería, Edificio I, Quiosco PC-Puma.\n\n## ¿Cómo participo?\n Si estás interesado en contribuir en el evento, puedes participar de las siguientes formas:\n\n### Instalador\nSi ya tienes experiencia con Software Libre y sabes cómo instalarlo en distintas plataformas, ¡te invitamos a asistir para ayudar a otras personas a aprender! [Puedes llenar este formulario si deseas apoyar como instalador.](https://cloud.lidsol.unam.mx/apps/forms/s/ejoEFkozs59NzFHe6SoGyFwp) \n\n### Asistente\nLa entrada es abierta, gratuita y está disponible para todo el público. [Si deseas asistir, puedes llenar este formulario](https://cloud.lidsol.unam.mx/apps/forms/s/szsBEWQHGo4MaStGK9qMtgA7).\n Si deseas probar o instalar software libre, trae tu equipo y nosotros te brindaremos la asistencia necesaria.\n\n**¡Tu participación hace posible este evento! Estamos muy agradecidos con quienes deseen apoyar.**\n\n⚠️ *Nota:* Si deseas probar un nuevo sistema operativo, recuerda realizar previamente un respaldo de tu información importante."
7777
},
7878
contents: {
7979
en: [
@@ -102,6 +102,10 @@ export const events: Event[] = [
102102
"8 de mayo (16:00 - 17:00): Reta de SuperTuxKart"
103103
]
104104
},
105+
// requirements: {
106+
// en: ["Bring your own computer"],
107+
// es: ["Traer computadora personal"]
108+
// },
105109
speakers: [
106110
{ memberId: 2 },
107111
{ memberId: 7 },
@@ -115,18 +119,24 @@ export const events: Event[] = [
115119
locations: [
116120
{
117121
name: {
118-
en: "Northern Complex - Faculty of Engineering, Building I, PC-Puma Kiosk",
122+
en: "Engineering Faculty Annex - Building I, PC-Puma Kiosk",
119123
es: "Anexo de la Facultad de Ingeniería - Edificio I, Quiosco PC-Puma"
120124
},
121125
url: "https://www.openstreetmap.org/directions?from=&to=19.326487%2C-99.182596#map=19/19.326475/-99.183036"
122126
},
123127
],
124-
// action1: {
125-
// text: {
126-
// en: "Call for Speakers",
127-
// es: "Call for Speakers" },
128-
// url: "https://cloud.lidsol.unam.mx/apps/forms/s/iniYSs2ostbLnsnnPyaBM6mm"
129-
// },
128+
action1: {
129+
text: {
130+
en: "Help the attendees",
131+
es: "Ayuda a los asistentes" },
132+
url: "https://cloud.lidsol.unam.mx/apps/forms/s/ejoEFkozs59NzFHe6SoGyFwp"
133+
},
134+
action2: {
135+
text: {
136+
en: "Register for the event",
137+
es: "Registrate al evento" },
138+
url: "https://cloud.lidsol.unam.mx/apps/forms/s/szsBEWQHGo4MaStGK9qMtgA7"
139+
},
130140
tags: { en: ["FLISoL", "Open Source", "Free Software", "Community"], es: ["FLISoL", "Open Source", "Software Libre" ,"Comunidad"] },
131141
publishDate: "2026-04-14"
132142
},

src/styles/globals.css

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,3 +246,47 @@ html {
246246
animation: modalZoomOut 200ms ease-out forwards;
247247
}
248248

249+
/* Custom scrollbar */
250+
::-webkit-scrollbar {
251+
width: 8px;
252+
height: 8px;
253+
}
254+
255+
::-webkit-scrollbar-track {
256+
background: transparent;
257+
}
258+
259+
::-webkit-scrollbar-thumb {
260+
background: rgba(154, 153, 150, 0.4);
261+
border-radius: 999px;
262+
}
263+
264+
::-webkit-scrollbar-thumb:hover {
265+
background: rgba(154, 153, 150, 0.6);
266+
}
267+
268+
:root ::-webkit-scrollbar-thumb {
269+
background: rgba(154, 153, 150, 0.4);
270+
}
271+
272+
:root ::-webkit-scrollbar-thumb:hover {
273+
background: rgba(154, 153, 150, 0.6);
274+
}
275+
276+
.dark ::-webkit-scrollbar-thumb {
277+
background: rgba(255, 255, 255, 0.15);
278+
}
279+
280+
.dark ::-webkit-scrollbar-thumb:hover {
281+
background: rgba(255, 255, 255, 0.25);
282+
}
283+
284+
html {
285+
scrollbar-width: thin;
286+
scrollbar-color: rgba(154, 153, 150, 0.4) transparent;
287+
}
288+
289+
.dark html {
290+
scrollbar-color: rgba(255, 255, 255, 0.15) transparent;
291+
}
292+

0 commit comments

Comments
 (0)