Skip to content

Commit aee43e4

Browse files
committed
Merge branch 'feature/about-organizing_team' into develop
2 parents b9bf77d + 9de9a52 commit aee43e4

File tree

9 files changed

+172
-4
lines changed

9 files changed

+172
-4
lines changed
7.17 KB
Loading
350 KB
Loading
843 KB
Loading
590 KB
Loading
41.8 KB
Loading
35.6 KB
Loading

src/components/Nav/menus.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ const Menus: MenuType = {
3535
);
3636
},
3737
},
38+
{
39+
name: "파이콘 한국 준비위원회",
40+
path: "/about/organizing-team",
41+
},
3842
{
3943
name: "건강 관련 안내",
4044
path: "/about/health",
@@ -44,10 +48,6 @@ const Menus: MenuType = {
4448
path: "/about/place",
4549
},
4650
// {
47-
// name: "파이콘 한국 준비위원회",
48-
// path: "/about/organizing-team",
49-
// },
50-
// {
5151
// name: "지난 파이콘 한국",
5252
// path: "/about/previous-pyconkr",
5353
// },

src/pages/About/organizingTeam.tsx

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
import Page from "components/common/Page";
2+
import React, { useMemo } from "react";
3+
import styled from "styled-components";
4+
import { sortByKey } from "utils";
5+
import useTranslation from "utils/hooks/useTranslation";
6+
import { FallbackImg } from "components/common/FallbackImg";
7+
import { SloganShort } from "assets/icons";
8+
9+
const OrganizingTeam = () => {
10+
const t = useTranslation();
11+
type Member = { name: string; comment?: React.ReactNode; imageFileName?: string };
12+
const members = useMemo<Member[]>(
13+
() =>
14+
sortByKey<Member>(
15+
[
16+
{ name: "배권한", comment: "우리모두 파이썬으로 같이 합시다." },
17+
{ name: "권혁민", comment: "asdfasdfasdfasdf", imageFileName: "권혁민.jpg" },
18+
{ name: "박성흠" },
19+
{ name: "김순태" },
20+
{ name: "김강민" },
21+
{ name: "이우섭" },
22+
{ name: "이영은" },
23+
{ name: "심명진" },
24+
{ name: "이한결" },
25+
{
26+
name: "이준원",
27+
comment: (
28+
<>
29+
아직 파이썬 실력이 이븐하지 않습니다.{" "}
30+
<a href="https://github.com/cpprhtn" target="_blank" rel="noreferrer">
31+
https://github.com/cpprhtn
32+
</a>
33+
</>
34+
),
35+
imageFileName: "이준원.jpeg",
36+
},
37+
{ name: "노하은" },
38+
{ name: "임혜정" },
39+
{ name: "이해용", comment: "파이썬을 좋아하는 개발자입니다." },
40+
{
41+
name: "김수빈 (sudosubin)",
42+
comment: "내려갈 때 보았네 올라갈 때 보지 못한 그 꽃",
43+
imageFileName: "김수빈S.png",
44+
},
45+
{ name: "정미르", comment: "if import this and hire(me): can_do_anything()" },
46+
{
47+
name: "이준영 / MUsoftware",
48+
comment: "개미는 (뚠뚠) 오늘도 (뚠뚠) 열심히 일을 하네",
49+
imageFileName: "이준영.png",
50+
},
51+
{ name: "김민정" },
52+
{ name: "강나영" },
53+
{ name: "윤준기" },
54+
{ name: "송지헌" },
55+
{ name: "김지희" },
56+
{
57+
name: "삐야기",
58+
comment: "파이썬 나라의 개발자들이 먹을 치킨을 튀기고 있는 삐야기입니다.",
59+
imageFileName: "삐야기.jpg",
60+
},
61+
{ name: "박조은", comment: "Now is better than never.", imageFileName: "박조은.png" },
62+
],
63+
"name"
64+
),
65+
[]
66+
);
67+
68+
return (
69+
<Page>
70+
<h1>{t("파이콘 한국 준비위원회")}</h1>
71+
<p>
72+
{t(
73+
"파이콘 한국 준비위원회는 2014년 조직되어, 올해 열한 번째 한국에서의 파이콘 행사를 준비하고 있습니다. "
74+
)}
75+
<br />
76+
{t(
77+
"준비위원회는 매년 신규 멤버를 모집하는 파이콘을 사랑하는 사람들의 열린 모임입니다."
78+
)}{" "}
79+
{t("(가나다순)")}
80+
</p>
81+
82+
{members.map((m, idx) => (
83+
<MemberContainer key={`${m.name}-${idx}`}>
84+
<section className="left">
85+
{m.imageFileName ? (
86+
<FallbackImg
87+
src={`/images/organizingTeam/${m.imageFileName}`}
88+
alt={m.name}
89+
errorFallback={<SloganShort />}
90+
/>
91+
) : (
92+
<SloganShort />
93+
)}
94+
</section>
95+
<section className="right">
96+
<h4>{m.name}</h4>
97+
<div>{m.comment ?? "Pythonic Moments"}</div>
98+
</section>
99+
</MemberContainer>
100+
))}
101+
</Page>
102+
);
103+
};
104+
105+
export default OrganizingTeam;
106+
107+
const MemberContainer = styled.div`
108+
width: 50%;
109+
margin: 0 auto;
110+
padding: 0.5rem 0;
111+
112+
display: flex;
113+
114+
& > section.left {
115+
width: 5rem;
116+
height: 5rem;
117+
margin: 0.5rem;
118+
119+
border-radius: 50%;
120+
border: 1px solid var(--pico-muted-border-color);
121+
122+
* {
123+
width: 100%;
124+
height: 100%;
125+
min-width: 100%;
126+
min-height: 100%;
127+
max-width: 100%;
128+
max-height: 100%;
129+
border-radius: 50%;
130+
}
131+
132+
@media only screen and (max-width: 809px) {
133+
width: 5rem;
134+
height: 5rem;
135+
margin: 0.25rem;
136+
}
137+
}
138+
139+
& > section.right {
140+
display: flex;
141+
flex-direction: column;
142+
justify-content: center;
143+
144+
h4 {
145+
color: #febd99;
146+
margin-bottom: 0.2rem;
147+
}
148+
149+
& > div {
150+
margin-bottom: 0.3rem;
151+
color: var(--pico-h3-color);
152+
font-size: 0.8rem;
153+
font-weight: bold;
154+
min-height: 1rem;
155+
}
156+
}
157+
158+
@media only screen and (max-width: 809px) {
159+
width: 75%;
160+
161+
p {
162+
font-size: 0.8rem;
163+
font-weight: bold;
164+
}
165+
}
166+
`;

src/routes.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import SponsorDetailPage from "pages/Sponsor/SponsorDetail";
2020
import PatronList from "pages/Sponsor/patron";
2121
import PosterSession from "pages/PosterSession";
2222
import { HowToGetThere } from "pages/About/howToGetThere";
23+
import OrganizingTeam from "pages/About/organizingTeam";
2324

2425
const Router = () => {
2526
return (
@@ -32,6 +33,7 @@ const Router = () => {
3233
<Route path="/about/health" element={<Health />} />
3334
<Route path="/poster-session" element={<PosterSession />} />
3435
<Route path="/about/place" element={<HowToGetThere />} />
36+
<Route path="/about/organizing-team" element={<OrganizingTeam />} />
3537
<Route path="/sponsoring/sponsor/prospectus" element={<SponsorPage />} />
3638
<Route path="/sponsoring/sponsor/:id" element={<SponsorDetailPage />} />
3739
<Route path="/sponsoring/patron" element={<PatronList />} />

0 commit comments

Comments
 (0)