diff --git "a/public/images/organizingTeam/\352\266\214\355\230\201\353\257\274.jpg" "b/public/images/organizingTeam/\352\266\214\355\230\201\353\257\274.jpg" new file mode 100644 index 0000000..8a4ee70 Binary files /dev/null and "b/public/images/organizingTeam/\352\266\214\355\230\201\353\257\274.jpg" differ diff --git "a/public/images/organizingTeam/\352\271\200\354\210\230\353\271\210S.png" "b/public/images/organizingTeam/\352\271\200\354\210\230\353\271\210S.png" new file mode 100644 index 0000000..7e24b6b Binary files /dev/null and "b/public/images/organizingTeam/\352\271\200\354\210\230\353\271\210S.png" differ diff --git "a/public/images/organizingTeam/\353\260\225\354\241\260\354\235\200.png" "b/public/images/organizingTeam/\353\260\225\354\241\260\354\235\200.png" new file mode 100644 index 0000000..f242e27 Binary files /dev/null and "b/public/images/organizingTeam/\353\260\225\354\241\260\354\235\200.png" differ diff --git "a/public/images/organizingTeam/\354\202\220\354\225\274\352\270\260.jpg" "b/public/images/organizingTeam/\354\202\220\354\225\274\352\270\260.jpg" new file mode 100644 index 0000000..3e87f7d Binary files /dev/null and "b/public/images/organizingTeam/\354\202\220\354\225\274\352\270\260.jpg" differ diff --git "a/public/images/organizingTeam/\354\206\241\354\247\200\355\227\214.png" "b/public/images/organizingTeam/\354\206\241\354\247\200\355\227\214.png" new file mode 100644 index 0000000..064cd0d Binary files /dev/null and "b/public/images/organizingTeam/\354\206\241\354\247\200\355\227\214.png" differ diff --git "a/public/images/organizingTeam/\354\235\264\354\232\260\354\204\255.png" "b/public/images/organizingTeam/\354\235\264\354\232\260\354\204\255.png" new file mode 100644 index 0000000..1dee56e Binary files /dev/null and "b/public/images/organizingTeam/\354\235\264\354\232\260\354\204\255.png" differ diff --git "a/public/images/organizingTeam/\354\235\264\354\244\200\354\230\201.png" "b/public/images/organizingTeam/\354\235\264\354\244\200\354\230\201.png" new file mode 100644 index 0000000..835c9ee Binary files /dev/null and "b/public/images/organizingTeam/\354\235\264\354\244\200\354\230\201.png" differ diff --git "a/public/images/organizingTeam/\354\235\264\354\244\200\354\233\220.jpeg" "b/public/images/organizingTeam/\354\235\264\354\244\200\354\233\220.jpeg" new file mode 100644 index 0000000..239cdfe Binary files /dev/null and "b/public/images/organizingTeam/\354\235\264\354\244\200\354\233\220.jpeg" differ diff --git a/src/components/Nav/menus.ts b/src/components/Nav/menus.ts index 5aac818..8d30b21 100644 --- a/src/components/Nav/menus.ts +++ b/src/components/Nav/menus.ts @@ -1,6 +1,6 @@ -import { useDispatch } from "react-redux" +import { useDispatch } from "react-redux"; -import { setLanguage } from "store/Core" +import { setLanguage } from "store/Core"; export type MenuElementOnClickArgType = { setOpenMenu: React.Dispatch>; @@ -10,7 +10,6 @@ export type MenuElementOnClickArgType = { export type MenuElementType = { name: string; - style?: React.CSSProperties; path?: string; onClick?: (_: MenuElementOnClickArgType) => void; }; @@ -35,6 +34,10 @@ const Menus: MenuType = { ); }, }, + { + name: "파이콘 한국 준비위원회", + path: "/about/organizing-team", + }, { name: "건강 관련 안내", path: "/about/health", @@ -43,29 +46,8 @@ const Menus: MenuType = { name: "장소 안내", path: "/about/place", }, - // { - // name: "파이콘 한국 준비위원회", - // path: "/about/organizing-team", - // }, - // { - // name: "지난 파이콘 한국", - // path: "/about/previous-pyconkr", - // }, ], }, - // keynote: { - // name: "키노트", - // sub: [ - // { - // name: "키노트", - // path: "/keynote/keynote", - // }, - // { - // name: "발표", - // path: "/keynote/session", - // }, - // ], - // }, // FYI 0929 충분히 안내가 되어서 제거 // program: { // name: "프로그램", @@ -102,7 +84,11 @@ const Menus: MenuType = { }, poster: { name: "포스터 세션", - path: "/poster-session" + path: "/poster-session", + }, + fa: { + name: "재정 지원", + path: "/fa", }, sponsoring: { name: "후원하기", @@ -115,22 +101,6 @@ const Menus: MenuType = { name: "개인 후원자", path: "/sponsoring/patron", }, - // { - // name: "후원사 혜택 안내", - // path: "/sponsoring/sponsor/benefit", - // }, - // { - // name: "후원사로 참여하기", - // path: "/sponsoring/sponsor/join", - // }, - // { - // name: "후원사 FAQ", - // path: "/sponsoring/sponsor/faq", - // }, - // { - // name: "후원사 약관", - // path: "/sponsoring/sponsor/terms", - // }, ], }, language: { diff --git a/src/pages/About/organizingTeam.tsx b/src/pages/About/organizingTeam.tsx new file mode 100644 index 0000000..79a3da9 --- /dev/null +++ b/src/pages/About/organizingTeam.tsx @@ -0,0 +1,189 @@ +import Page from "components/common/Page"; +import React, { useMemo } from "react"; +import styled from "styled-components"; +import { sortByKey } from "utils"; +import useTranslation from "utils/hooks/useTranslation"; +import { FallbackImg } from "components/common/FallbackImg"; +import { SloganShort } from "assets/icons"; + +const OrganizingTeam = () => { + const t = useTranslation(); + type Member = { + name: string; + displayName?: string; + comment?: React.ReactNode; + imageFileName?: string; + }; + const members = useMemo( + () => + sortByKey( + [ + { name: "배권한", comment: "우리모두 파이썬으로 같이 합시다." }, + { name: "권혁민", comment: "asdfasdfasdfasdf", imageFileName: "권혁민.jpg" }, + { name: "박성흠" }, + { name: "김순태" }, + { name: "김강민" }, + { + name: "이우섭", + displayName: "WooSub Lee", + comment: ( + <> + LoveFrom,{" "} + + https://www.linkedin.com/in/woosublee + + + ), + imageFileName: "이우섭.png", + }, + { name: "이영은" }, + { name: "심명진" }, + { name: "이한결" }, + { + name: "이준원", + comment: ( + <> + 아직 파이썬 실력이 이븐하지 않습니다.{" "} + + https://github.com/cpprhtn + + + ), + imageFileName: "이준원.jpeg", + }, + { name: "노하은" }, + { name: "이해용", comment: "파이썬을 좋아하는 개발자입니다." }, + { + name: "김수빈", + displayName: "김수빈 (sudosubin)", + comment: "내려갈 때 보았네 올라갈 때 보지 못한 그 꽃", + imageFileName: "김수빈S.png", + }, + { name: "정미르", comment: "if import this and hire(me): can_do_anything()" }, + { + name: "이준영", + displayName: "이준영 / MUsoftware", + comment: "개미는 (뚠뚠) 오늘도 (뚠뚠) 열심히 일을 하네", + imageFileName: "이준영.png", + }, + { name: "김민정" }, + { name: "강나영" }, + { name: "윤준기" }, + { + name: "송지헌", + displayName: "송지헌 / Honey", + comment: "Everything for Python!c Moments", + imageFileName: "송지헌.png", + }, + { name: "김지희" }, + { + name: "삐야기", + comment: "파이썬 나라의 개발자들이 먹을 치킨을 튀기고 있는 삐야기입니다.", + imageFileName: "삐야기.jpg", + }, + { name: "박조은", comment: "Now is better than never.", imageFileName: "박조은.png" }, + ], + "name" + ), + [] + ); + + return ( + +

{t("파이콘 한국 준비위원회")}

+

+ {t( + "파이콘 한국 준비위원회는 2014년 조직되어, 올해 열한 번째 한국에서의 파이콘 행사를 준비하고 있습니다. " + )} +
+ {t( + "준비위원회는 매년 신규 멤버를 모집하는 파이콘을 사랑하는 사람들의 열린 모임입니다." + )}{" "} + {t("(가나다순)")} +

+ + {members.map((m, idx) => ( + +
+ {m.imageFileName ? ( + } + /> + ) : ( + + )} +
+
+

{m.displayName ?? m.name}

+
{m.comment ?? "Pythonic Moments"}
+
+
+ ))} +
+ ); +}; + +export default OrganizingTeam; + +const MemberContainer = styled.div` + width: 50%; + margin: 0 auto; + padding: 0.5rem 0; + + display: flex; + + & > section.left { + width: 5rem; + height: 5rem; + margin: 0.5rem; + + border-radius: 50%; + border: 1px solid var(--pico-muted-border-color); + + * { + width: 100%; + height: 100%; + min-width: 100%; + min-height: 100%; + max-width: 100%; + max-height: 100%; + border-radius: 50%; + } + + @media only screen and (max-width: 809px) { + width: 5rem; + height: 5rem; + margin: 0.25rem; + } + } + + & > section.right { + display: flex; + flex-direction: column; + justify-content: center; + + h4 { + color: #febd99; + margin-bottom: 0.2rem; + } + + & > div { + margin-bottom: 0.3rem; + color: var(--pico-h3-color); + font-size: 0.8rem; + font-weight: bold; + min-height: 1rem; + } + } + + @media only screen and (max-width: 809px) { + width: 75%; + + p { + font-size: 0.8rem; + font-weight: bold; + } + } +`; diff --git a/src/pages/FinancialAid/index.tsx b/src/pages/FinancialAid/index.tsx new file mode 100644 index 0000000..52162dc --- /dev/null +++ b/src/pages/FinancialAid/index.tsx @@ -0,0 +1,194 @@ +import Page from "components/common/Page"; +import React from "react"; +import { useSelector } from "react-redux"; +import { RootState } from "store"; +import styled from "styled-components"; +import useTranslation from "utils/hooks/useTranslation"; + +const FinancialAid = () => { + const language = useSelector( + (state) => state.core.language + ); + const t = useTranslation(); + + // 참가자용 재정 지원에 대한 내용만 담음 + return ( + + {language === "KOR" ? ( + <> +

개요

+

+ 파이콘 한국은 참가하는 "모든" 사람(준비위원회, 자원봉사자, 발표자까지도)이 + 티켓을 구매하는 것을 원칙으로 합니다. 그렇게 하여 모든 참가자들이 정당한 가격을 지불하고 + 동등한 자격으로 행사의 일부가 되도록 하는 것이 파이콘 한국의 중요한 철학 중 하나입니다. +

+

+ 하지만 현실적으로, Everybody Pays라는 파이콘 한국의 철학이 금전적인 장애물이 되어 티켓을 + 지불할 수 있는 여유가 있는 사람으로만 참가 대상을 한정하는 것 역시 또다른 차별이 될 수 + 있습니다. +

+

+ 이런 모순을 해결하기 위해 파이콘 한국에서는 재정 지원 프로그램을 운영하여 금전적인 + 이유로 파이콘 한국에 참석하기 힘든 분들에게 제한적이나마 도움을 드리고 있으며, + 준비위원회에서 준비한 예산에 추가로 후원 티켓 판매 차액 전액을 재정 지원 예산으로 + 사용하고 있습니다. +

+ +

재정 지원 대상

+

+ 재정 지원 프로그램은 파이콘 한국 참가에 대한 재정적인 장벽을 최소화하고 파이썬 + 커뮤니티가 얻을 수 있는 장점을 최대화하기 위해 운영됩니다. +

+

+ 행사 당일에 아래와 같은 서류를 지참하셔서 지원 대상인지 증빙하시면 카드 결제 금액의 + 일부를 환불해드리는 방식으로 지원합니다. +

+
    +
  1. 초등학생, 중학생, 고등학생
  2. +
      +
    • + 사진이 포함된 청소년증, 학생증, 여권, 주민등록초본(등본) 등 나이를 확인할 수 있는 + 서류 +
    • +
    +
  3. 대학생, 대학원생
  4. +
      +
    • 학생증, 재학증명서 등 현재 재학 중임을 확인할 수 있는 서류
    • +
    +
  5. 군인, 공무원
  6. +
      +
    • 공무원증, 병적증명서
    • +
    +
+ +

재정 지원 범위

+

컨퍼런스 티켓 가격을 지원합니다.

+
    +
  1. 초등학생, 중학생, 고등학생: 80% 지원
  2. +
  3. 대학생, 대학원생: 50% 지원
  4. +
  5. 군인, 공무원: 50% 지원
  6. +
+

+ * 티셔츠 구매 금액은 지원 대상이 아닙니다. +
+ * 개인 후원 티켓 구매자는 지원 대상이 아닙니다. +
* 뭉치면 할인! 적용된 티켓은 지원 대상이 아닙니다. +

+ +

재정 지원 일정

+

+ - 재정 지원 신청 : 2024년 10월 26일 (토) 23시 59분까지 (KST) +
- 재정 지원 금액 지급 (결제금 환불 처리) : 컨퍼런스 종료 후 +

+ + + + + + ) : ( + <> +

Introduction

+

+ The principle in PyCon Korea is "Every" attendee(including organizers, + volunteers, and even speakers) purchases the ticket. That way, it is one of the + important philosophies of PyCon Korea to ensure that all participants pay a fair price + and are part of the event with equal qualifications. +

+

+ However, this principle, "Everybody Pays", can be another discrimination to + limit the participants as people who can pay their tickets. +

+

+ In order to solve this contradiction, PyCon Korea operates the [Financial Aid] program + to help those who are unable to attend the PyCon Korea for financial reasons. In + addition to the budget prepared by the Organizing Team, we fund all sales from Patron + tickets. +

+ +

Principles and Targets

+

+ Financial aid program is designed to minimize the financial barriers to participation in + PyCon Korea and maximize the benefits of the Python community. +

+

+ Please bring the following documents with you on the conference day to verify your + eligibility for the support. Upon verification, a portion of your card payment will be + refunded. +

+
    +
  1. Elementary, middle, and high school students
  2. +
      +
    • + Documents that can verify your age, such as a youth ID card with a photo, student ID + card, passport +
    • +
    +
  3. Undergraduate and graduate college students
  4. +
      +
    • + Documents that can prove that you are currently enrolled, such as a student ID +
    • +
    +
  5. Military, civil servants
  6. +
      +
    • Civil Servant ID, Certificate of Military Service
    • +
    +
+ +

Coverage

+

Support conference ticket pricing.

+
    +
  1. Elementary, middle, and high school students: 80% support
  2. +
  3. Undergraduate and graduate college students: 50% support
  4. +
  5. Military, civil servants: 50% support
  6. +
+

+ * The purchase amount of T-shirts is not eligible for support. +
+ * Patron ticket purchasers are not eligible for support. +
* Group discount ticket purchasers are not eligible for support. +

+ +

Schedule

+

+ - Financial aid application period : Until 2024.10.26. (Sat) 23:59 (KST) +
- Payment of financial aid amount (refund of payment) : After the conference ends +

+ + + + + + )} +
+ ); +}; + +export default FinancialAid; + +const ApplyContainer = styled.div` + display: flex; + justify-content: center; + align-items: center; +`; + +const Button = styled.button` + width: 17rem; + margin: 0.5rem; + border-radius: 0.5rem; + background-color: #b0a8fe; + color: #141414; + font-size: 0.75rem; +`; diff --git a/src/routes.tsx b/src/routes.tsx index 7655a3f..b263a82 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -1,5 +1,5 @@ -import React from "react" -import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom" +import React from "react"; +import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom"; import Footer from "components/Footer"; import Nav from "components/Nav"; @@ -20,6 +20,8 @@ import SponsorDetailPage from "pages/Sponsor/SponsorDetail"; import PatronList from "pages/Sponsor/patron"; import PosterSession from "pages/PosterSession"; import { HowToGetThere } from "pages/About/howToGetThere"; +import OrganizingTeam from "pages/About/organizingTeam"; +import FinancialAid from "pages/FinancialAid"; const Router = () => { return ( @@ -30,8 +32,10 @@ const Router = () => { } /> } /> } /> - } /> } /> + } /> + } /> + } /> } /> } /> } />