diff --git a/src/components/Header/DesktopHeader.tsx b/src/components/Header/DesktopHeader.tsx index 49fe0e7..e9b7508 100644 --- a/src/components/Header/DesktopHeader.tsx +++ b/src/components/Header/DesktopHeader.tsx @@ -35,6 +35,9 @@ const DesktopHeader: FC = () => { {t('header.team')} + + {t('header.job')} + {t('header.codeOfConduct')} diff --git a/src/components/JobCard/JobCard.tsx b/src/components/JobCard/JobCard.tsx index c95204c..6f475ac 100644 --- a/src/components/JobCard/JobCard.tsx +++ b/src/components/JobCard/JobCard.tsx @@ -4,26 +4,16 @@ import BusinessIcon from '@mui/icons-material/Business' import LocationOnIcon from '@mui/icons-material/LocationOn' import AccountBalanceWalletIcon from '@mui/icons-material/AccountBalanceWallet' import AccessTimeIcon from '@mui/icons-material/AccessTime' +import JobData from '@/types/JobListing' interface JobCardProps { - title: string; - company: string; - logoUrl: string; - jobPostingUrl: string; - location:string, - salary: string; - publicationDate:string; - tags: string[]; + job: JobData } -const JobCard: FC = ({ title, company, logoUrl, jobPostingUrl, location, salary, publicationDate, tags }) => { +const JobCard: FC = ({ job }) => { const handleReadMoreClick = () => { - if (jobPostingUrl) { - window.open(jobPostingUrl, '_blank', 'noopener,noreferrer') - } else { - console.error('No URL provided') - } + window.open(job.jobPostingUrl, '_blank', 'noopener,noreferrer') } return ( @@ -34,30 +24,30 @@ const JobCard: FC = ({ title, company, logoUrl, jobPostingUrl, loc - {title} + {job.title} - {company} + {job.company} - {location} + {job.location} - {salary} + {job.salary} - {tags.map((tag, index) => ( + {job.tags.map((tag, index) => ( @@ -71,7 +61,7 @@ const JobCard: FC = ({ title, company, logoUrl, jobPostingUrl, loc - { publicationDate } + { job.publicationDate } diff --git a/src/i18n/en/translation.json b/src/i18n/en/translation.json index fd0eaa1..bdbb6f7 100644 --- a/src/i18n/en/translation.json +++ b/src/i18n/en/translation.json @@ -2,7 +2,8 @@ "header": { "codeOfConduct": "Code of Conduct", "subtitle": "Women in Software Engineering Japan", - "team": "Team" + "team": "Team", + "job": "Jobs" }, "home": { "helloWorld": "✨ Hello World ✨", @@ -18,4 +19,8 @@ "team": { "title": "✨ Leadership Team ✨" } + , + "job": { + "title": "✨ Job Board ✨" + } } diff --git a/src/i18n/ja/translation.json b/src/i18n/ja/translation.json index f3cad98..47190ae 100644 --- a/src/i18n/ja/translation.json +++ b/src/i18n/ja/translation.json @@ -2,7 +2,8 @@ "header": { "codeOfConduct": "行動規範", "subtitle": "ウーマン・イン・ソフトウェアエンジニアリング", - "team": "チーム" + "team": "チーム", + "job": "求人掲示板" }, "home": { "helloWorld": "✨ Hello 世界 ✨", @@ -17,5 +18,8 @@ }, "team": { "title": "✨ リーダーシップ・チーム ✨" + }, + "job": { + "title": "✨ 求人掲示板 ✨" } } diff --git a/src/routes/JobBoard/JobBoard.tsx b/src/routes/JobBoard/JobBoard.tsx index 8092dbb..d869b59 100644 --- a/src/routes/JobBoard/JobBoard.tsx +++ b/src/routes/JobBoard/JobBoard.tsx @@ -1,26 +1,24 @@ -import { FC } from 'react' +import { FC, ReactNode } from 'react' import JobCard from '@/components/JobCard/JobCard' -import { Container } from '@mui/material' -import { jobData } from '@/utils/jobData' +import { Container, Stack, Typography } from '@mui/material' +import { useTranslation } from 'react-i18next' +import job from '@/routes/JobBoard/jobs.json' +import JobData from '@/types/JobListing' const JobBoard:FC = () => { - return ( - - {jobData.map((job, index) => ( - - ))} - - ) + const { t } = useTranslation() + + const jobGrid: ReactNode[] = [] + job.forEach((jobDescription: JobData) => { + jobGrid.push() + }) + + return + + {t('job.title')} + {jobGrid} + + } export default JobBoard diff --git a/src/routes/JobBoard/jobs.json b/src/routes/JobBoard/jobs.json new file mode 100644 index 0000000..b500e36 --- /dev/null +++ b/src/routes/JobBoard/jobs.json @@ -0,0 +1,12 @@ +[ + { + "title": "Software Engineer", + "company": "Amazon Web Services (AWS)", + "logoUrl": "/", + "location": "Tokyo, Japan", + "jobPostingUrl": "http://example.com", + "salary": "¥9M ~ ¥11M annually", + "publicationDate": "2024/07/27", + "tags": ["Full Time", "Senior Level", "Remote", "English"] + } +] diff --git a/src/routes/Router.tsx b/src/routes/Router.tsx index a31159c..69f2d6d 100644 --- a/src/routes/Router.tsx +++ b/src/routes/Router.tsx @@ -8,11 +8,8 @@ import Home from './Home/Home' import BaseLayout from './BaseLayout' import NotFound from './NotFound/NotFound' import CodeOfConduct from './CodeOfConduct/CodeOfConduct' -<<<<<<< HEAD -import JobBoard from './JobBoard/JobBoard' -======= import Team from './Team/Team' ->>>>>>> main +import JobBoard from './JobBoard/JobBoard' const browserRouter = createHashRouter([{ element: , @@ -26,13 +23,12 @@ const browserRouter = createHashRouter([{ element: }, { -<<<<<<< HEAD - path: 'jobboard', - element: -======= path: 'team', element: ->>>>>>> main + }, + { + path: 'jobs', + element: }, { path: 'theme', diff --git a/src/types/JobListing.ts b/src/types/JobListing.ts new file mode 100644 index 0000000..e71dba1 --- /dev/null +++ b/src/types/JobListing.ts @@ -0,0 +1,12 @@ +type JobListing = { + title:string, + company: string, + logoUrl: string, + location: string, + jobPostingUrl: string, + salary: string, + publicationDate: string, + tags: string [] +} + +export default JobListing diff --git a/src/utils/jobData.ts b/src/utils/jobData.ts deleted file mode 100644 index fc8bf02..0000000 --- a/src/utils/jobData.ts +++ /dev/null @@ -1,15 +0,0 @@ -// TODO: Add real job data -const jobData = [ - { - title: 'Software Engineer', - company: 'Amazon Web Services (AWS)', - logoUrl: '/', - location: 'Tokyo, Japan', - jobPostingUrl: '#', - salary: '¥9M ~ ¥11M annually', - publicationDate: '2024/07/27', - tags: ['Full Time', 'Senior Level', 'Remote', 'English'] - } -] - -export { jobData }