diff --git a/src/app/components/Education.tsx b/src/app/components/Education.tsx index a5ad2db..61f4e6c 100644 --- a/src/app/components/Education.tsx +++ b/src/app/components/Education.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { usePersonContext } from '../hooks/PersonContext'; -import JobHistory from './JobHistory'; +import JobHistory from './job/JobsHistory'; export default function WorkExperience() { const person = usePersonContext() diff --git a/src/app/components/WorkExperience.tsx b/src/app/components/WorkExperience.tsx index a765906..2ecc4cb 100644 --- a/src/app/components/WorkExperience.tsx +++ b/src/app/components/WorkExperience.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { usePersonContext } from '../hooks/PersonContext'; -import JobHistory from './JobHistory'; +import JobHistory from './job/JobsHistory'; export default function WorkExperience() { const person = usePersonContext() diff --git a/src/app/components/JobCard.tsx b/src/app/components/job/JobCard.tsx similarity index 92% rename from src/app/components/JobCard.tsx rename to src/app/components/job/JobCard.tsx index 756961c..34d040e 100644 --- a/src/app/components/JobCard.tsx +++ b/src/app/components/job/JobCard.tsx @@ -1,6 +1,6 @@ import React from 'react'; import Card from 'react-bootstrap/Card'; -import { useAutoFocus, useFocusedElement } from '../hooks/FocusedElement'; +import { useAutoFocus, useFocusedElement } from '../../hooks/FocusedElement'; export type Props = { heading?: string, diff --git a/src/app/components/JobHistory.tsx b/src/app/components/job/JobsAccordion.tsx similarity index 76% rename from src/app/components/JobHistory.tsx rename to src/app/components/job/JobsAccordion.tsx index 26e8d3b..8b95060 100644 --- a/src/app/components/JobHistory.tsx +++ b/src/app/components/job/JobsAccordion.tsx @@ -4,16 +4,12 @@ import Container from 'react-bootstrap/Container'; import Col from 'react-bootstrap/Col'; import Row from 'react-bootstrap/Row'; import JobCard from './JobCard'; -import { partition } from '../utils'; +import { partition } from '../../utils'; import { Job, Jobs } from '@/PersonalDataTypes'; -import useSize from '../hooks/Size'; +import useSize from '../../hooks/Size'; import { Accordion } from 'react-bootstrap'; +import { JobListProps } from './types'; -type JobListProps = { - jobs: Jobs, - entriesPerRow?: number, - currentHeading?: string, -} export type Props = { heading: string, @@ -49,7 +45,7 @@ function FullList(props: JobListProps) { ) } -function SmallList(props: JobListProps) { +export default function JobsAccordion(props: JobListProps) { const {jobs} = props const config = {...defaultProps, ...props} function jobTitle(job: Job) { @@ -76,19 +72,3 @@ function SmallList(props: JobListProps) { ) } - -export default function JobHistory(props: Props) { - const {SizeWrapper, size} = useSize() - const jobs = props.jobs - - const jobsList = size.width < 600 ? : - - return ( - -

{props.heading}

- - {jobsList} - -
- ) -} diff --git a/src/app/components/job/JobsCards.tsx b/src/app/components/job/JobsCards.tsx new file mode 100644 index 0000000..d4d1a40 --- /dev/null +++ b/src/app/components/job/JobsCards.tsx @@ -0,0 +1,42 @@ + +import React from 'react'; +import Container from 'react-bootstrap/Container'; +import Col from 'react-bootstrap/Col'; +import Row from 'react-bootstrap/Row'; +import JobCard from './JobCard'; +import { partition } from '../../utils'; +import { JobListProps } from './types'; + +export type Props = { + heading: string, +} & JobListProps + +const defaultProps = { + entriesPerRow: 2, + currentHeading: 'Currently', +} + +export default function JobsCards(props: JobListProps) { + const {jobs} = props + const config = {...defaultProps, ...props} + return ( + + {jobs.current && ( + + + + + + )} + {partition(jobs.previous, config.entriesPerRow).map((jobs, index) => ( + + {(jobs.map((job, subindex) => ( + + + + )))} + + ))} + + ) +} diff --git a/src/app/components/job/JobsHistory.tsx b/src/app/components/job/JobsHistory.tsx new file mode 100644 index 0000000..70bf469 --- /dev/null +++ b/src/app/components/job/JobsHistory.tsx @@ -0,0 +1,31 @@ + +import React from 'react'; +import Container from 'react-bootstrap/Container'; +import useSize from '../../hooks/Size'; +import { JobListProps } from './types'; +import JobsAccordion from './JobsAccordion'; +import JobsCards from './JobsCards'; + +export type Props = { + heading: string, +} & JobListProps + +const defaultProps = { + entriesPerRow: 2, + currentHeading: 'Currently', +} + +export default function JobHistory(props: Props) { + const {SizeWrapper, size} = useSize() + + const jobsList = size.width < 600 ? : + + return ( + +

{props.heading}

+ + {jobsList} + +
+ ) +} diff --git a/src/app/components/job/types.tsx b/src/app/components/job/types.tsx new file mode 100644 index 0000000..db0581b --- /dev/null +++ b/src/app/components/job/types.tsx @@ -0,0 +1,7 @@ +import { Jobs } from "@/PersonalDataTypes"; + +export type JobListProps = { + jobs: Jobs, + entriesPerRow?: number, + currentHeading?: string, + } diff --git a/src/app/globals.css b/src/app/globals.css index d5ac303..f887aa3 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -13,9 +13,11 @@ body { } .footer { margin-top: 2rem; + filter: opacity(75%) } .tiny { font-size: 75%; + filter: opacity(75%) } .container > h2, h3, h4 {