diff --git a/src/assets/json/board.json b/src/assets/json/board.json new file mode 100644 index 0000000..45e764a --- /dev/null +++ b/src/assets/json/board.json @@ -0,0 +1,159 @@ +{ + "name_fi": "Hallitus", + "name_en": "Board", + "roles": [ + { + "name_fi": "Puheenjohtaja", + "name_en": "Chairman", + "representatives": [ + { + "name": "Johannes Ora" + } + ] + }, + { + "name_fi": "Sihteeri", + "name_en": "Secretary", + "representatives": [ + { + "name": "Salla Lyytikäinen", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "Rahastonhoitaja", + "name_en": "", + "representatives": [ + { + "name": "Santeri Huhtala", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "Fuksitoimikunnan Puheenjohtaja", + "name_en": "", + "representatives": [ + { + "name": "Toni Ojala", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "Fuksitoimikunnan puheenjohtajan adjutantti", + "name_en": "", + "representatives": [ + { + "name": "Toni Lyttinen", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "Hovimestari", + "name_en": "", + "representatives": [ + { + "name": "Eveliina Ahonen", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "Hovineuvos", + "name_en": "", + "representatives": [ + { + "name": "Melissa Dönmez", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "ISOvastaava", + "name_en": "", + "representatives": [ + { + "name": "Heidi Mäkitalo", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "Hyvinvointimestari", + "name_en": "", + "representatives": [ + { + "name": "Sauli Norja", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "Opintomestari", + "name_en": "", + "representatives": [ + { + "name": "Simo Hakanummi", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "Teknologiamestari", + "name_en": "", + "representatives": [ + { + "name": "Oskari Ponkala", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "Ulkomestari", + "name_en": "", + "representatives": [ + { + "name": "Oliver Hiekkamies", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "Yrityssuhdemestari", + "name_en": "", + "representatives": [ + { + "name": "Otto Julkunen", + "phone_number": null, + "email": null, + "image": null + } + ] + } + ] + } \ No newline at end of file diff --git a/src/assets/json/hvtmk.json b/src/assets/json/hvtmk.json new file mode 100644 index 0000000..421f9bd --- /dev/null +++ b/src/assets/json/hvtmk.json @@ -0,0 +1,55 @@ +{ + "name_fi": "Hyvinvointitoimikunta", + "name_en": "", + "roles": [ + { + "name_fi": "Hyvinvointimestari", + "name_en": "", + "representatives": [ + { "name": "Sauli Norja" } + ] + }, + { + "name_fi": "Kulttuurivastaava", + "name_en": "", + "representatives": [ + { "name": "Juha Anttila" }, + { "name": "Aino Suomi" }, + { "name": "Nestori Ylönjoki" } + ] + }, + { + "name_fi": "Liikuntavastaava", + "name_en": "", + "representatives": [ + { "name": "Elmeri Pälikkö" }, + { "name": "Joel Wickström" } + ] + }, + { + "name_fi": "Kiltahuonevastaava", + "name_en": "", + "representatives": [ + { "name": "Ilari Ojakorpi" } + ] + }, + { + "name_fi": "Kiltapäiväkerhovastaava", + "name_en": "", + "representatives": [ + { "name": "Samuel Laine" }, + { "name": "Aleksanteri Vesala" } + ] + }, + { + "name_fi": "Retkivastaava", + "name_en": "", + "representatives": [ + { "name": "Jarno Mustonen" }, + { "name": "Suvi Karanta" }, + { "name": "Jesse Räisänen" }, + { "name": "Mikko Suhonen" } + ] + } + ] +} \ No newline at end of file diff --git a/src/assets/json/mtmk.json b/src/assets/json/mtmk.json new file mode 100644 index 0000000..6261ca0 --- /dev/null +++ b/src/assets/json/mtmk.json @@ -0,0 +1,89 @@ +{ + "name_fi": "Mediatoimikunta", + "name_en": "", + "roles": [ + { + "name_fi": "Puheenjohtaja", + "name_en": "", + "representatives": [ + { + "name": "Salla Lyytikäinen", + "phone_number": null, + "email": null, + "image": null + } + ] + }, + { + "name_fi": "Päätoimittaja", + "name_en": "", + "representatives": [ + { "name": "Sasu Salasti" } + ] + }, + { + "name_fi": "Toimittaja", + "name_en": "", + "representatives": [ + { "name": "Tuukka Syrjänen" }, + { "name": "Ilmari Kasvi" }, + { "name": "Elias Hirvonen" }, + { "name": "Miika Koskela" }, + { "name": "Taneli Myllykangas" }, + { "name": "Emmaleena Ahonen" }, + { "name": "Ville-Pekka Laakkonen" }, + { "name": "Sofia Öhman" }, + { "name": "Nestori Yrjönkoski" }, + { "name": "Jami Hyytiäinen" }, + { "name": "Aleksanteri Vesala" } + ] + }, + { + "name_fi": "Toimittaja & Valokuvaaja", + "name_en": "", + "representatives": [ + { "name": "Kiia-Einola" } + ] + }, + { + "name_fi": "Taittaja", + "name_en": "", + "representatives": [ + { "name": "Aino Suomi" }, + { "name": "Olli Komulainen" }, + { "name": "Emilia Kortelainen" } + ] + }, + { + "name_fi": "Taittaja & Valokuvaaja", + "name_en": "", + "representatives": [ + { "name": "Jonna Tammikivi" } + ] + }, + { + "name_fi": "Valokuvaaja", + "name_en": "", + "representatives": [ + { "name": "Suvi Karanta" }, + { "name": "Mikko Haaparanta" }, + { "name": "Johannes Viirimäki" } + ] + }, + { + "name_fi": "Valokuvaaja & Graafikko", + "name_en": "", + "representatives": [ + { "name": "Kalle Petäjäaho" }, + { "name": "Maria Pöllä" } + ] + }, + { + "name_fi": "Videokuvaaja", + "name_en": "", + "representatives": [ + { "name": "Aaro Rasilainen" } + ] + } + ] +} \ No newline at end of file diff --git a/src/assets/json/optmk.json b/src/assets/json/optmk.json new file mode 100644 index 0000000..91fdb26 --- /dev/null +++ b/src/assets/json/optmk.json @@ -0,0 +1,31 @@ +{ + "name_fi": "Opintotoimikunta", + "name_en": "", + "roles": [ + { + "name_fi": "Opintomestari", + "name_en": "", + "representatives": [ + { "name": "Simo Hakanummi" } + ] + }, + { + "name_fi": "Opintovastaava", + "name_en": "", + "representatives": [ + { "name": "Miina-Maija Simonen" }, + { "name": "Tomi Valkonen" }, + { "name": "Leo Lahti" }, + { "name": "Ville-Pekka Laakkonen" }, + { "name": "Samu Nyman" } + ] + }, + { + "name_fi": "Abimarkkinointi Vastaava", + "name_en": "", + "representatives": [ + { "name": "Ilkka Huttu" } + ] + } + ] +} \ No newline at end of file diff --git a/src/assets/json/otmk.json b/src/assets/json/otmk.json new file mode 100644 index 0000000..99495f7 --- /dev/null +++ b/src/assets/json/otmk.json @@ -0,0 +1,63 @@ +{ + "name_fi": "Ohjelmatoimikunta", + "name_en": "", + "roles": [ + { + "name_fi": "Hovimestari", + "name_en": "", + "representatives": [ + { "name": "Eveliina Ahonen" } + ] + }, + { + "name_fi": "Hovineuvos", + "name_en": "", + "representatives": [ + { "name": "Melissa Dönmez" } + ] + }, + { + "name_fi": "Emäntä", + "name_en": "", + "representatives": [ + { "name": "Oona Karjalainen" }, + { "name": "Emilia Kortemäki" }, + { "name": "Venla Vastamäki" } + ] + }, + { + "name_fi": "Isäntä", + "name_en": "", + "representatives": [ + { "name": "Henry Jaakkola" }, + { "name": "Sakke Kangas" }, + { "name": "Otto Torkkeli" }, + { "name": "Tommi Oinen" }, + { "name": "Eero Ketonen" } + ] + }, + { + "name_fi": "Lukkari", + "name_en": "", + "representatives": [ + { "name": "Tuomo Leino" }, + { "name": "Hami Hyytinen" }, + { "name": "Tuomas Pajunpää" }, + { "name": "Samuel Laine" }, + { "name": "Toni Miilunpalo" } + ] + }, + { + "name_fi": "Lukkarikisällit", + "name_en": "", + "representatives": [ + { "name": "Jesse Räisänen" }, + { "name": "Eino Laakso" }, + { "name": "Sakari Harjunpää" }, + { "name": "Niilo Ojala" }, + { "name": "Ilkka Huttu" }, + { "name": "Akseli Järvinen" } + ] + } + ] +} \ No newline at end of file diff --git a/src/assets/json/ptmk.json b/src/assets/json/ptmk.json new file mode 100644 index 0000000..7c531c9 --- /dev/null +++ b/src/assets/json/ptmk.json @@ -0,0 +1,29 @@ +{ + "name_fi": "Pajatoimikunta", + "name_en": "", + "roles": [ + { + "name_fi": "Pajavastaava", + "name_en": "", + "representatives": [ + { "name": "Karl Lipping" } + ] + }, + { + "name_fi": "Pajakisälli", + "name_en": "", + "representatives": [ + { "name": "Tommi Sytelä" }, + { "name": "Eerikki Eskola" }, + { "name": "Arkadii Kolchin" }, + { "name": "Samu Nyman" }, + { "name": "Konsta Langi" }, + { "name": "Johannes Viirimäki" }, + { "name": "Justus Ojala" }, + { "name": "Ville Tujunen" }, + { "name": "Antti Tarkka" }, + { "name": "Pyry Vaara" } + ] + } + ] +} \ No newline at end of file diff --git a/src/assets/json/sstmk.json b/src/assets/json/sstmk.json new file mode 100644 index 0000000..51581a1 --- /dev/null +++ b/src/assets/json/sstmk.json @@ -0,0 +1,70 @@ +{ + "name_fi": "SIK100-toimikunta", + "name_en": "", + "roles": [ + { + "name_fi": "Puheenjohtaja", + "name_en": "", + "representatives": [ + { "name": "Erna Virtanen" } + ] + }, + { + "name_fi": "Webivastaava", + "name_en": "", + "representatives": [ + { "name": "Jaakko Koskela" } + ] + }, + { + "name_fi": "Markkinointivastaava", + "name_en": "", + "representatives": [ + { "name": "Sasu Salasti" } + ] + }, + { + "name_fi": "Yritysvastaava", + "name_en": "", + "representatives": [ + { "name": "Juuli Leppänen" } + ] + }, + { + "name_fi": "Seminaarivastaava", + "name_en": "", + "representatives": [ + { "name": "Sini Huhtinen" } + ] + }, + { + "name_fi": "Kevätkarnevaalimajuri", + "name_en": "", + "representatives": [ + { "name": "Olli Komulainen" } + ] + }, + { + "name_fi": "PoTa100-pääjuhlatirehtööri", + "name_en": "", + "representatives": [ + { "name": "Emmaleena Ahonen" }, + { "name": "Jonna Tammikivi" } + ] + }, + { + "name_fi": "PoTa100-jatkokuvernööri", + "name_en": "", + "representatives": [ + { "name": "Mikael Liimatainen" } + ] + }, + { + "name_fi": "PoTa100-sillistirehtööri", + "name_en": "", + "representatives": [ + { "name": "Tuomo Leino" } + ] + } + ] +} \ No newline at end of file diff --git a/src/assets/json/ttmk.json b/src/assets/json/ttmk.json new file mode 100644 index 0000000..c87b0f0 --- /dev/null +++ b/src/assets/json/ttmk.json @@ -0,0 +1,35 @@ +{ + "name_fi": "Teknologiatoimikunta", + "name_en": "", + "roles": [ + { + "name_fi": "Teknologiamestari", + "name_en": "", + "representatives": [ + { "name": "Oskari Ponkala" } + ] + }, + { + "name_fi": "Tekniikkavastaava", + "name_en": "", + "representatives": [ + { "name": "Antti Mäki" } + ] + }, + { + "name_fi": "Web-Kisälli", + "name_en": "", + "representatives": [ + { "name": "Ilari Ojakorpi" }, + { "name": "Leo Lahti" }, + { "name": "Jyri Korhonen" }, + { "name": "Tuukka Syrjänen" }, + { "name": "Emmaleena Ahonen" }, + { "name": "Mikko Suhonen" }, + { "name": "Jaakko Koskela" }, + { "name": "Justus Ojala" } + ] + } + ] +} + \ No newline at end of file diff --git a/src/assets/json/utmk.json b/src/assets/json/utmk.json new file mode 100644 index 0000000..1051174 --- /dev/null +++ b/src/assets/json/utmk.json @@ -0,0 +1,43 @@ +{ + "name_fi": "Ulkotoimikunta", + "name_en": "", + "roles": [ + { + "name_fi": "Ulkomestari", + "name_en": "", + "representatives": [ + { "name": "Oliver Hiekkamies" } + ] + }, + { + "name_fi": "Kv-ISOvastaava", + "name_en": "", + "representatives": [ + { "name": "Elias Hirvonen" } + ] + }, + { + "name_fi": "International Helper", + "name_en": "", + "representatives": [ + { "name": "Ville-Pekka Laakkonen" } + ] + }, + { + "name_fi": "Ulkosuhdevastaava", + "name_en": "", + "representatives": [ + { "name": "Leo Muller" }, + { "name": "Eino Tyrvänen" }, + { "name": "Pekka Aho" } + ] + }, + { + "name_fi": "Ulkowanhus", + "name_en": "", + "representatives": [ + { "name": "Jyri Korhonen" } + ] + } + ] +} \ No newline at end of file diff --git a/src/assets/json/ytmk.json b/src/assets/json/ytmk.json new file mode 100644 index 0000000..e173861 --- /dev/null +++ b/src/assets/json/ytmk.json @@ -0,0 +1,33 @@ +{ + "name_fi": "Yrityssuhdetoimikunta", + "name_en": "", + "roles": [ + { + "name_fi": "Yrityssuhdemestari", + "name_en": "", + "representatives": [ + { "name": "Otto Julkunen" } + ] + }, + { + "name_fi": "Excursiopäävastaava", + "name_en": "", + "representatives": [ + { "name": "Henry Gustafsson" } + ] + }, + { + "name_fi": "Yrityssuhdevastaava", + "name_en": "", + "representatives": [ + { "name": "Ilkka Huttu" }, + { "name": "Arkadii Kolchin" }, + { "name": "Oskari Luukkonen" }, + { "name": "Niilo Ojala" }, + { "name": "Emma Reinikainen" }, + { "name": "Melina Sundell" }, + { "name": "Elma Tuohimetsä" } + ] + } + ] +} \ No newline at end of file diff --git a/src/components/CommitteeContainer.tsx b/src/components/CommitteeContainer.tsx index c0dbc07..20c6421 100644 --- a/src/components/CommitteeContainer.tsx +++ b/src/components/CommitteeContainer.tsx @@ -1,18 +1,18 @@ import React from "react"; import styled from "styled-components"; -import { Occupation } from "@models/Contacts"; import ContactCard from "./ContactCard"; +import blank_profile from "@assets/img/blank_profile.png"; +import { Committee } from "@views/ContactsPage/ContactsPageView" import { colors } from "@theme/colors"; interface CommitteeContainerProps { - name_fi: string; - name_en: string; - contacts: Occupation[]; + committee: Committee; } const Container = styled.div` display: flex; flex-direction: column; + align-items: center; justify-content: flex-start; color: ${colors.darkBlue}; @@ -28,29 +28,27 @@ const Container = styled.div` & > div { display: flex; flex-flow: row wrap; - justify-content: flex-start; + justify-content: center; } `; -const CommitteeContainer: React.FC = ({ name_fi, name_en, contacts }) => ( +const CommitteeContainer: React.FC = ({ committee }) => (

- {name_fi} -

-

- {name_en} + {committee.name_fi||committee.name_en}

- {contacts.map(occupation => ( - occupation.officials.map(official => ( + {committee.roles.map(role => ( + role.representatives.map(representative => ( )) ))} @@ -58,4 +56,4 @@ const CommitteeContainer: React.FC = ({ name_fi, name_e ); -export default CommitteeContainer; +export default CommitteeContainer; \ No newline at end of file diff --git a/src/components/ContactCard.tsx b/src/components/ContactCard.tsx index d4c8c14..8f7833b 100644 --- a/src/components/ContactCard.tsx +++ b/src/components/ContactCard.tsx @@ -1,24 +1,24 @@ import React from "react"; import styled from "styled-components"; -import blank_profile from "@assets/img/blank_profile.png"; -import { Role } from "@models/Contacts"; import { colors } from "@theme/colors"; const Card = styled.article` display: flex; + align-items: flex-start; flex-flow: row nowrap; + padding: 0.5rem; color: ${colors.darkBlue}; - margin: 1rem; + width: 19rem; `; const ImageContainer = styled.div` - padding: 1rem; + padding: 0.5rem; display: flex; flex-shrink: 0; justify-content: center; align-items: center; - max-height: 100px; - max-width: 100px; + height: 5rem; + width: 5rem; & > img { width: 100%; @@ -30,41 +30,49 @@ const ImageContainer = styled.div` const Info = styled.div` display: flex; flex-direction: column; - padding: 0.5rem; - justify-content: flex-start; - font-size: 1rem; - font-weight: 300; + align-items: flex-start; + padding: 0.25rem; color: ${colors.darkBlue}; + + & > p { + font-size: 0.8rem; + margin: 0; + } + + & > h1 { + font-size: 0.9rem; + font-weight: 500; + } `; interface ContactCardProps { - first_name: string; - last_name: string; - phone: number; + name: string; + phone: string; email: string; image: string; - role: Role; + role_fi: string; + role_en: string; } -const ContactCard: React.FC = ({ first_name, last_name, phone, email, image, role }) => { - const fullName = `${first_name} ${last_name}`; +const ContactCard: React.FC = ({ name, phone, email, image, role_fi, role_en }) => { return( - - {fullName} - + {image ? + + {name} + : null + } -

{fullName}

-

{phone}

-

{email}

-

{role.name_fi}

-

{role.name_en}

+

{name}

+

{role_fi || role_en}

+ {phone ?

{phone}

: null} + {email ?

{email}

: null}
-
+ ) } -export default ContactCard; +export default ContactCard; \ No newline at end of file diff --git a/src/models/Contacts.ts b/src/models/Contacts.ts deleted file mode 100644 index 93d1840..0000000 --- a/src/models/Contacts.ts +++ /dev/null @@ -1,53 +0,0 @@ -import axios from "axios"; - -const url = `${process.env.API_URL}/contacts`; -const committeeUrl = `${process.env.API_URL}/committees`; - -export interface Committee { - name_fi: string; - name_en: string; -} - -export interface Role { - name_fi: string; - name_en: string; - description_fi: string; - description_en: string; - committee: Committee; - is_board: boolean; -} - -export interface Contact { - first_name: string; - last_name: string; - phone_number: number; - email: string; - image: string; -} - -export interface Occupation { - role: Role; - start_date: string; - end_date: string; - officials: Contact[]; -} - -export async function getContacts(year: number = new Date().getFullYear()): Promise { - try { - const resp = await axios.get(`${url}?year=${year}`); - return resp.data["results"]; - } catch (err) { - console.error(err); - throw err; - } -} - -export async function getCommittees(): Promise { - try { - const resp = await axios.get(`${committeeUrl}`); - return resp.data["results"]; - } catch (err) { - console.error(err); - throw err; - } -} diff --git a/src/pages/yhteystiedot.tsx b/src/pages/yhteystiedot.tsx index 50f7ee5..4d0bb59 100644 --- a/src/pages/yhteystiedot.tsx +++ b/src/pages/yhteystiedot.tsx @@ -1,86 +1,14 @@ import React from "react"; import { Helmet } from "react-helmet"; -import { StaticContext } from "@server/StaticContext"; -import { getContacts, Occupation, Committee, getCommittees } from "@models/Contacts"; import ContactsPageView from "@views/ContactsPage/ContactsPageView"; -interface ContactsPageProps { - staticContext: StaticContext; -} +const ContactsPage: React.FC = () => ( + <> + + + + + +); -interface ContactsPageState { - contacts: Occupation[]; - committees: Committee[]; -} - -class ContactsPage extends React.Component { - constructor(props: ContactsPageProps) { - super(props); - const { staticContext } = props; - - if (staticContext) { - /* The static context is an object that manages promises when - rendering on the server. If staticContext exists, that means - we have to store all promises in it. Otherwise, operate - normally. See server/index.ts. */ - if (staticContext.resolutions.getContacts) { - const contacts = staticContext.resolutions.getContacts as Occupation[]; - const committees = staticContext.resolutions.getCommittees as Committee[]; - this.state = { - contacts, - committees, - }; - } else { - this.state = { - contacts: [], - committees: [], - }; - const promiseContacts = this.fetchContacts(); - const promiseCommittees = this.fetchCommittees(); - staticContext.promises.getContacts = promiseContacts; - staticContext.promises.getCommittees = promiseCommittees; - } - } else { - this.state = { - contacts: [], - committees: [], - }; - this.fetchContacts(); - this.fetchCommittees(); - } - } - - fetchContacts = () => { - const getContactsPromise = getContacts(); - getContactsPromise.then(contacts => { - this.setState({ - contacts, - }); - }); - return getContactsPromise; - } - - fetchCommittees = () => { - const getCommitteesPromise = getCommittees(); - getCommitteesPromise.then(committees => { - this.setState({ - committees, - }); - }); - return getCommitteesPromise; - } - - render() { - const { contacts, committees } = this.state; - return ( - <> - - - - - - ); - } -} - -export default ContactsPage; +export default ContactsPage; \ No newline at end of file diff --git a/src/views/ContactsPage/ContactsPageView.tsx b/src/views/ContactsPage/ContactsPageView.tsx index 14b35da..e285789 100644 --- a/src/views/ContactsPage/ContactsPageView.tsx +++ b/src/views/ContactsPage/ContactsPageView.tsx @@ -1,15 +1,20 @@ import React from "react"; import styled from "styled-components"; -import { Occupation, Committee } from "@models/Contacts"; import CommitteeContainer from "@components/CommitteeContainer"; import { Divider, TextSection } from "@components/index"; import { colors } from "@theme/colors"; import { Link } from "@components/index"; -interface ContactsPageViewProps { - contacts: Occupation[]; - committees: Committee[]; -} +import BoardJson from "@assets/json/board.json"; +import HvtmkJson from "@assets/json/hvtmk.json"; +import MtmkJson from "@assets/json/mtmk.json"; +import OptmkJson from "@assets/json/optmk.json"; +import OtmkJson from "@assets/json/otmk.json"; +import PtmkJson from "@assets/json/ptmk.json"; +import SstmkJson from "@assets/json/sstmk.json"; +import TtmkJson from "@assets/json/ttmk.json"; +import UtmkJson from "@assets/json/utmk.json"; +import YtmkJson from "@assets/json/ytmk.json"; const BlueLink = styled(Link)` color: ${colors.blue1}; @@ -19,46 +24,120 @@ const BlueLink = styled(Link)` } `; - -class ContactsPageView extends React.Component { - render() { - const { contacts, committees } = this.props; - const board = contacts.filter(x => x.role.is_board); - return ( - <> - -

- Asiaa olisi, mutta kehen ottaa yhteyttä?
- Tämä sivu yrittää valottaa sen oikean ihmisen puhelinnumeroa ja sähköpostiosoitetta. -

-
- - -
- -

- {"Hallitukseen saa yhteyden lähettämällä sähköpostia "} - - sik-hallitus@list.ayy.fi - -

-
-
- - {committees.map((committee, index) => { - // const order = committee.name_fi === "Toimikunnattomat" ? 1 : 0; - return ( - <> - - x.role.committee.name_fi === committee.name_fi)} /> - - - - ) - })} - - ); - } +export interface Committee { + name_fi: string; + name_en: string; + roles: Array; } -export default ContactsPageView; +export interface Role { + name_fi: string; + name_en: string; + representatives: Array +} + +export interface Representative { + name: string; + phone_number?: string; + email?: string; + image?: string; +} + +const ContactsPageView: React.FC = () => ( + <> + +

+ Asiaa olisi, mutta kehen ottaa yhteyttä?
+ Tämä sivu yrittää valottaa sen oikean ihmisen puhelinnumeroa ja sähköpostiosoitetta. +

+
+ + +
+ +

+ {"Hallitukseen saa yhteyden lähettämällä sähköpostia "} + + sik-hallitus@list.ayy.fi + +

+
+
+ + + + +
+ +
+
+ + + + +
+ +
+
+ + + + +
+ +
+
+ + + + +
+ +
+
+ + + + +
+ +
+
+ + + + +
+ +
+
+ + + + +
+ +
+
+ + + + +
+ +
+
+ + + + +
+ +
+
+ + + +) + +export default ContactsPageView; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index f70ad2a..1012a57 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,7 @@ "outDir": "./dist/", "sourceMap": true, "noImplicitAny": false, + "resolveJsonModule": true, "esModuleInterop": true, "experimentalDecorators": true, // "emitDecoratorMetadata": true, @@ -60,4 +61,4 @@ "./src/**/*", "./types/**/*" ], -} +} \ No newline at end of file