Skip to content

Commit e667cdd

Browse files
authored
feat: include cfp section (#348)
* feat: include cfp section * feat: include cfp section * test: include cfp section * test: include CfpTrackComponent tests * test: include Imma Valls info * feat: optimize images. reduce cumulative layout shift * feat: optimize images. reduce cumulative layout shift * feat: optimize images. reduce cumulative layout shift
1 parent 6ed2c26 commit e667cdd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+198
-145
lines changed

public/images/cfp/alberto.jpg

-194 KB
Loading

public/images/cfp/alienor.jpg

-11.4 KB
Loading

public/images/cfp/ana_carmona.jpg

44.2 KB
Loading

public/images/cfp/ara.png

-360 KB
Loading

public/images/cfp/carles_nunez.jpg

73.6 KB
Loading

public/images/cfp/celeste.png

-638 KB
Loading

public/images/cfp/elena_tajadura.jpeg

81 KB
Loading

public/images/cfp/esther.png

-511 KB
Loading

public/images/cfp/gonzalo.jpg

-366 KB
Loading

public/images/cfp/grace.png

-112 KB
Loading

public/images/cfp/iago.png

-635 KB
Loading

public/images/cfp/imma-valls.jpg

49.4 KB
Loading

public/images/cfp/ixchel.png

-116 KB
Loading
42.9 KB
Loading

public/images/cfp/julio_cesar.jpg

66 KB
Loading

public/images/cfp/laura.jpeg

-286 Bytes
Loading

public/images/cfp/maria.png

-1020 KB
Loading

public/images/cfp/mario-macias.png

-285 KB
Loading

public/images/cfp/pablo_chacin.jpeg

32.3 KB
Loading

public/images/cfp/toni.jpg

-1.41 MB
Loading

public/images/devbcn24.png

-44.1 KB
Loading

public/images/logo.png

28.5 KB
Loading

public/images/sponsors/GFT.jpg

-4 KB
Loading

public/images/sponsors/sopra.jpg

-15.8 KB
Loading

public/images/sponsors/sopra.png

19.7 KB
Loading

public/manifest.json

+6
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@
1616
"src": "logo512.png",
1717
"type": "image/png",
1818
"sizes": "512x512"
19+
},
20+
{
21+
"src": "maskable_icon_x192.png",
22+
"type": "image/png",
23+
"sizes": "192x192",
24+
"purpose": "maskable"
1925
}
2026
],
2127
"start_url": ".",

public/maskable_icon_x192.png

12.1 KB
Loading

src/App.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
ROUTE_2023_TALKS,
1616
ROUTE_2023_WORKSHOPS,
1717
ROUTE_ABOUT_US,
18+
ROUTE_CFP,
1819
ROUTE_CODE_OF_CONDUCT,
1920
ROUTE_CONDITIONS,
2021
ROUTE_COOKIES,
@@ -66,6 +67,7 @@ import Workshops2023 from "./2023/Workshops/Workshops2023";
6667
import JobOffers2023 from "./2023/JobOffers/JobOffers2023";
6768
import Sponsorship from "./views/sponsorship/Sponsorship";
6869
import Diversity2023 from "./2023/Diversity/Diversity2023";
70+
import CfpSection from "./views/Cfp/CfpSection";
6971

7072
const StyledAppWrapper = styled.div`
7173
position: relative;
@@ -123,7 +125,7 @@ const App: FC<React.PropsWithChildren<unknown>> = () => {
123125
<Route path={ROUTE_SPEAKERS} element={<Speakers />} />
124126
<Route path={ROUTE_SPEAKER_INFO} element={<SpeakerInformation />} />
125127
<Route path={ROUTE_ABOUT_US} element={<About />} />
126-
{/*<Route path={ROUTE_CFP} element={<CfpSection />} />*/}
128+
<Route path={ROUTE_CFP} element={<CfpSection />} />
127129
<Route path={ROUTE_TRAVEL} element={<Travel />} />
128130
{/*<Route path={ROUTE_COMMUNITIES} element={<Communities />} />*/}
129131
{/*<Route path={ROUTE_ATTENDEE} element={<AttendeeInformation />} />*/}

src/components/Icons/Linkedin.tsx

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1-
import { FC } from "react";
1+
import React, { FC } from "react";
22
import { StyledSocialMediaWrapper } from "./Twitter";
33

44
interface ILinkedinIconProps {
55
color: string;
66
linkedinUrl: string;
77
}
88

9-
const LinkedinIcon: FC<React.PropsWithChildren<ILinkedinIconProps>> = ({ color, linkedinUrl }) => {
9+
const LinkedinIcon: FC<React.PropsWithChildren<ILinkedinIconProps>> = ({
10+
color,
11+
linkedinUrl,
12+
}) => {
1013
return (
1114
<StyledSocialMediaWrapper href={linkedinUrl} target={"_blank"}>
1215
<svg
16+
data-icon="linkedin-icon"
1317
xmlns="http://www.w3.org/2000/svg"
1418
width="24"
1519
height="24"

src/components/Icons/Twitter.tsx

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FC } from "react";
1+
import React, { FC } from "react";
22
import styled from "styled-components";
33

44
interface ITwitterIconProps {
@@ -11,14 +11,18 @@ export const StyledSocialMediaWrapper = styled.a`
1111
max-width: 24px;
1212
margin-right: 0.5rem;
1313
`;
14-
const TwitterIcon: FC<React.PropsWithChildren<ITwitterIconProps>> = ({ color, twitterUrl }) => {
14+
const TwitterIcon: FC<React.PropsWithChildren<ITwitterIconProps>> = ({
15+
color,
16+
twitterUrl,
17+
}) => {
1518
return (
1619
<StyledSocialMediaWrapper
1720
href={twitterUrl}
1821
target="_blank"
1922
rel="noopener noreferrer"
2023
>
2124
<svg
25+
data-icon="twitter-icon"
2226
xmlns="http://www.w3.org/2000/svg"
2327
width="24"
2428
height="24"

src/components/Navigation/NavigationData.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {
22
ROUTE_ABOUT_US,
3+
ROUTE_CFP,
34
ROUTE_CODE_OF_CONDUCT,
45
ROUTE_HOME,
56
ROUTE_KCD,
@@ -32,7 +33,7 @@ export const navigationItems: NavigationItem[] = [
3233

3334
export const subMenuItems: NavigationItem[] = [
3435
//{ id: "DIVERSITY", link: ROUTE_DIVERSITY },
35-
//{ id: "Cfp Committee", link: ROUTE_CFP },
36+
{ id: "Cfp Committee", link: ROUTE_CFP },
3637
//{ id: "Attendee information", link: ROUTE_ATTENDEE },
3738
//{ id: "Speaker information", link: ROUTE_SPEAKER_INFO },
3839
//{ id: "Session feedback", link: ROUTE_SESSION_FEEDBACK },

src/views/About/components/Style.AboutCard.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export const StyledAboutCard = styled.div`
99
export const StyledAboutImage = styled.img`
1010
width: 100%;
1111
max-height: 20rem;
12+
aspect-ratio: 1/1;
1213
border-radius: 30% 70% 70% 30% / 30% 29% 71% 70%;
1314
`;
1415
export const StyledAboutName = styled.h4<{ color: string }>`

src/views/Cfp/Cfp.style.ts

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import styled from "styled-components";
2+
import { Color } from "../../styles/colors";
3+
4+
export const TrackName = styled.h2`
5+
padding-top: 1.2rem;
6+
padding-bottom: 0.8rem;
7+
font-size: 1.5rem;
8+
color: ${Color.DARK_BLUE};
9+
`;
10+
export const MemberName = styled.h5`
11+
font-size: 0.8rem;
12+
color: ${Color.DARK_BLUE};
13+
text-align: left;
14+
`;

src/views/Cfp/CfpData.ts

+62-104
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,16 @@ interface CFpTrack {
66

77
interface CfpMember {
88
name: string;
9-
photo: string;
10-
linkedIn: string;
11-
twitter: string;
9+
photo?: string;
10+
linkedIn?: string;
11+
twitter?: string;
1212
}
1313

1414
export const data: CFpTrack[] = [
1515
{
16-
id: "656fece2-9447-4dbe-8a78-8dc6aa7124f2",
1716
name: "Java & JVM",
17+
id: "656fece2-9447-4dbe-8a78-8dc6aa7124f2",
1818
members: [
19-
{
20-
name: "Alex Soto",
21-
photo:
22-
"https://cache.sessionize.com/image/fd7e-400o400o2-11-34e0-466e-a5cb-ea585688d106.4f3f7614-bc5e-4ccd-935a-1c3659eec5e8.jpg",
23-
twitter: "https://twitter.com/alexsotob",
24-
linkedIn: "https://www.linkedin.com/in/asotobu/",
25-
},
2619
{
2720
name: "Ana Maria Mihalceanu",
2821
photo:
@@ -51,44 +44,6 @@ export const data: CFpTrack[] = [
5144
},
5245
],
5346
},
54-
{
55-
name: "Native Languages",
56-
id: "1c22cd3b-73e3-4161-9124-696f3e2f1249",
57-
members: [
58-
{
59-
name: "Aliénor Latour",
60-
twitter: "",
61-
photo: "images/cfp/alienor.jpg",
62-
linkedIn: "https://www.linkedin.com/in/alienor-latour/",
63-
},
64-
{
65-
name: "Donia Chaiehloudj",
66-
twitter: "https://twitter.com/doniacld",
67-
photo:
68-
"https://pbs.twimg.com/profile_images/1590642319589609472/zObYSeID_400x400.jpg",
69-
linkedIn: "https://www.linkedin.com/in/donia-chaiehloudj",
70-
},
71-
{
72-
name: "Gonzalo Serrano",
73-
twitter: "https://twitter.com/gonzaloserrano",
74-
photo: "images/cfp/gonzalo.jpg",
75-
linkedIn: "https://www.linkedin.com/in/gonzaloserranorevuelta/",
76-
},
77-
{
78-
name: "Mario Macías",
79-
twitter: "https://twitter.com/MaciasUPC",
80-
photo: "images/cfp/mario-macias.png",
81-
linkedIn: "https://www.linkedin.com/in/mariomac/",
82-
},
83-
{
84-
name: "Mario Vázquez",
85-
twitter: "https://twitter.com/mvazce",
86-
photo:
87-
"https://pbs.twimg.com/profile_images/988297919009841152/h4eKlvUM_400x400.jpg",
88-
linkedIn: "https://www.linkedin.com/in/mariovazquezcebrian/",
89-
},
90-
],
91-
},
9247
{
9348
name: "Frontend",
9449
id: "2684b568-2836-4713-99af-643f8a4d7972",
@@ -99,49 +54,41 @@ export const data: CFpTrack[] = [
9954
twitter: "https://twitter.com/iagolast",
10055
linkedIn: "https://www.linkedin.com/in/iagolast/",
10156
},
102-
{
103-
name: "Josue David Rios Diaz",
104-
photo:
105-
"https://pbs.twimg.com/profile_images/951236352049385472/6rRKHJsE_400x400.jpg",
106-
twitter: "https://twitter.com/jdriosdiaz",
107-
linkedIn: "https://www.linkedin.com/in/jdriosd/",
108-
},
10957
{
11058
name: "Laura Rodriguez Castillo",
11159
photo: "images/cfp/laura.jpeg",
11260
twitter: "https://twitter.com/superpensando",
11361
linkedIn: "https://linkedin.com/in/laurarodriguezcastillo",
11462
},
63+
{
64+
name: "Carles Nuñez",
65+
twitter: "https://twitter.com/carlesnunez",
66+
linkedIn: "https://www.linkedin.com/in/carles-nunez-tomeo/",
67+
photo: "images/cfp/carles_nunez.jpg",
68+
},
69+
{
70+
name: "Phil Nash",
71+
linkedIn: "https://www.linkedin.com/in/philnash/",
72+
},
11573
],
11674
},
11775
{
11876
name: "AI, ML, Python",
11977
id: "c1ec728d-03c1-4d8d-9f56-637bc97f5a5b",
12078
members: [
121-
{
122-
name: "Alberto Camara",
123-
photo: "images/cfp/alberto.jpg",
124-
twitter: "https://twitter.com/b3r2s",
125-
linkedIn: "https://www.linkedin.com/in/alberto-camara/",
126-
},
12779
{
12880
name: "Carmen Herrero",
129-
photo: "",
130-
twitter: "",
131-
linkedIn: "",
81+
linkedIn: "https://www.linkedin.com/in/carherrero/",
13282
},
13383
{
134-
name: "Gema Parreño",
135-
photo: "",
136-
twitter: "",
137-
linkedIn: "",
84+
name: "Elena Tajadura",
85+
photo: "images/cfp/elena_tajadura.jpeg",
86+
linkedIn:
87+
"https://www.linkedin.com/in/elena-tajadura-jim%C3%A9nez-9300a943/",
13888
},
13989
{
140-
name: "Rubén Berenguel",
141-
photo:
142-
"https://pbs.twimg.com/profile_images/1393898544600342528/hghgDpMM_400x400.jpg",
143-
twitter: "https://twitter.com/berenguel",
144-
linkedIn: "https://www.linkedin.com/in/rberenguel/",
90+
name: "Javier Menendez",
91+
linkedIn: "https://www.linkedin.com/in/jamepa/",
14592
},
14693
],
14794
},
@@ -150,30 +97,45 @@ export const data: CFpTrack[] = [
15097
id: "504cf03b-130d-4b70-a98c-c4faeb553b5e",
15198
members: [
15299
{
153-
name: "Ara Pulido",
154-
photo: "images/cfp/ara.png",
155-
twitter: "https://twitter.com/arapulido",
156-
linkedIn: "https://www.linkedin.com/in/arapulido/",
100+
name: "Almudena Vivanco",
101+
linkedIn: "https://www.linkedin.com/in/almudenavivanco/",
157102
},
158103
{
159-
name: "Mario Macías",
160-
twitter: "https://twitter.com/MaciasUPC",
161-
photo: "images/cfp/mario-macias.png",
162-
linkedIn: "https://www.linkedin.com/in/mariomac/",
104+
name: "Ana Carmona",
105+
photo: "images/cfp/ana_carmona.jpg",
106+
twitter: "https://twitter.com/nhan_bcn",
107+
linkedIn:
108+
"https://www.linkedin.com/in/ana-carmona-ag?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=ios_app",
163109
},
164110
{
165-
name: "Mario Vázquez",
166-
twitter: "https://twitter.com/mvazce",
167-
photo:
168-
"https://pbs.twimg.com/profile_images/988297919009841152/h4eKlvUM_400x400.jpg",
169-
linkedIn: "https://www.linkedin.com/in/mariovazquezcebrian/",
111+
name: "Christian Polanco",
112+
linkedIn: "https://www.linkedin.com/in/chrsalx/",
170113
},
171114
{
172-
name: "Raquel Pau Fernández",
173-
photo:
174-
"https://pbs.twimg.com/profile_images/1253338486200909828/uBuKfSsj_400x400.jpg",
175-
twitter: "https://twitter.com/raquelpau",
176-
linkedIn: "https://www.linkedin.com/in/raquel-pau-4010069",
115+
name: "David Ricordel",
116+
linkedIn: "https://www.linkedin.com/in/davidricordel/",
117+
},
118+
{
119+
name: "Jose Adan Ortiz",
120+
photo: "images/cfp/jose-adan-ortiz-k8s-2024.JPG",
121+
twitter: "https://twitter.com/joseadanof",
122+
linkedIn: "https://www.linkedin.com/in/joseadan/",
123+
},
124+
{
125+
name: "Pablo Chacin",
126+
photo: "images/cfp/pablo_chacin.jpeg",
127+
twitter: "https://twitter.com/pablochacin",
128+
linkedIn: "https://www.linkedin.com/in/pablochacin/",
129+
},
130+
{
131+
name: "Rael Garcia",
132+
linkedIn: "https://www.linkedin.com/in/rael/",
133+
},
134+
{
135+
name: "Imma Valls",
136+
photo: "images/cfp/imma-valls.jpg",
137+
twitter: "https://twitter.com/eyeveebee",
138+
linkedIn: "https://www.linkedin.com/in/imma-valls",
177139
},
178140
],
179141
},
@@ -182,22 +144,18 @@ export const data: CFpTrack[] = [
182144
id: "1d04d5bf-4b94-4e56-b0c6-ee93b3bb8c1f",
183145
members: [
184146
{
185-
name: "Celeste Gamez",
186-
photo: "images/cfp/celeste.png",
187-
twitter: "https://images.app.goo.gl/39E8eisV8TiULPQk8",
188-
linkedIn: "https://www.linkedin.com/in/celeste-g%C3%A1mez-73640460/",
147+
name: "Elena Navarro",
148+
linkedIn: "https://www.linkedin.com/in/elena-navarro-molina",
189149
},
190150
{
191-
name: "Esther Gala",
192-
photo: "images/cfp/esther.png",
193-
twitter: "",
194-
linkedIn: "https://www.linkedin.com/in/esthergala/",
151+
name: "Jaume Jornet",
152+
linkedIn: "https://www.linkedin.com/in/jaumejornet/",
195153
},
196154
{
197-
name: "María Mira Herreros",
198-
photo: "images/cfp/maria.png",
199-
twitter: "",
200-
linkedIn: "https://www.linkedin.com/in/miramaria",
155+
name: "Julio César Pérez",
156+
photo: "images/cfp/julio_cesar.jpg",
157+
linkedIn: "https://www.linkedin.com/in/juliocesarperezarques/",
158+
twitter: "https://twitter.com/jcesarperez",
201159
},
202160
{
203161
name: "Toni Tassani",

src/views/Cfp/CfpSection.test.tsx

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import React from "react";
2+
import { render, screen } from "@testing-library/react";
3+
import "@testing-library/jest-dom";
4+
import CfpSection from "./CfpSection";
5+
import conferenceData from "../../data/2024.json";
6+
import { data } from "./CfpData";
7+
8+
describe("CfpSection", () => {
9+
it("sets document title on mount", () => {
10+
render(<CfpSection />);
11+
expect(document.title).toBe(
12+
`CFP Committee — ${conferenceData.title}${conferenceData.edition}`,
13+
);
14+
});
15+
16+
it("renders TitleSection with correct props", () => {
17+
render(<CfpSection />);
18+
expect(screen.getByText(/CFP Committee/)).toBeInTheDocument();
19+
expect(screen.getByText(/We're excited to announce/)).toBeInTheDocument();
20+
});
21+
22+
it("renders a CfpTrackComponent for each track in data", () => {
23+
render(<CfpSection />);
24+
data.forEach((track) => {
25+
expect(screen.getByText(track.name)).toBeInTheDocument();
26+
});
27+
});
28+
});

0 commit comments

Comments
 (0)