@@ -25,7 +25,7 @@ export const personalData: PersonalData = { | |||||
company: 'Oracle|NetSuite', | company: 'Oracle|NetSuite', | ||||
timerange: '2022 - present', | timerange: '2022 - present', | ||||
description: `Engineering lead for multiple UI Platform teams who designed, developed and released a UI framework and tooling used by the rest of the organization. | description: `Engineering lead for multiple UI Platform teams who designed, developed and released a UI framework and tooling used by the rest of the organization. | ||||
Leader of a UI testing architecture group responsible for advising on a testing strategy across the UI Platform.`, | |||||
Leader of a UI testing architecture group responsible for defining a testing strategy across the UI Platform.`, | |||||
tags: ['TypeScript', 'Preact', 'NodeJs', 'Oracle JET', 'Java', 'Git'] | tags: ['TypeScript', 'Preact', 'NodeJs', 'Oracle JET', 'Java', 'Git'] | ||||
}], | }], | ||||
previous: [ | previous: [ | ||||
@@ -80,7 +80,7 @@ export const personalData: PersonalData = { | |||||
position: `Personal projects`, | position: `Personal projects`, | ||||
description: `Various hardware and software projects. Usually open sourced and published on [projects.dejvino.com](https://projects.dejvino.com) and [git.dejvino.cz](https://git.dejvino.cz/dejvino). | description: `Various hardware and software projects. Usually open sourced and published on [projects.dejvino.com](https://projects.dejvino.com) and [git.dejvino.cz](https://git.dejvino.cz/dejvino). | ||||
These include video games, utilities, 3D models, retrofitting devices with embedded microcontrollers etc.`, | These include video games, utilities, 3D models, retrofitting devices with embedded microcontrollers etc.`, | ||||
tags: ['Java', 'Python', 'C/C++', 'Embedded Software', 'OpenSCAD', 'TypeScript', 'Linux', 'Open Source', 'Git', 'Self-hosting'] | |||||
tags: ['Java', 'Python', 'TypeScript', 'Embedded', 'OpenSCAD', 'Linux', 'Open Source', 'Self-hosting'] | |||||
}, | }, | ||||
] | ] | ||||
}, | }, | ||||
@@ -18,8 +18,7 @@ export type Jobs = { | |||||
export type Education = Jobs; | export type Education = Jobs; | ||||
export type Project = Job | |||||
export type Projects = Jobs | |||||
export type Skills = { | export type Skills = { | ||||
primary: string[], | primary: string[], | ||||
@@ -13,9 +13,9 @@ export default function Skills() { | |||||
<Container className='skills' fluid> | <Container className='skills' fluid> | ||||
<h2>Skills</h2> | <h2>Skills</h2> | ||||
<Row> | <Row> | ||||
<SkillsCol><TagCloud title='Primary' icon='bookmark-star' style='primary' tags={person.skills.primary} /></SkillsCol> | |||||
<SkillsCol><TagCloud title='Main' icon='bookmark-star' style='primary' tags={person.skills.primary} /></SkillsCol> | |||||
{person.skills.secondary && ( | {person.skills.secondary && ( | ||||
<SkillsCol><TagCloud title='Secondary' icon='bookmark-plus' tags={person.skills.secondary} /></SkillsCol> | |||||
<SkillsCol><TagCloud title='Support' icon='bookmark-plus' tags={person.skills.secondary} /></SkillsCol> | |||||
)} | )} | ||||
{person.skills.languages && ( | {person.skills.languages && ( | ||||
<SkillsCol><TagCloud title='Languages' icon='bookmarks' tags={person.skills.languages} /></SkillsCol> | <SkillsCol><TagCloud title='Languages' icon='bookmarks' tags={person.skills.languages} /></SkillsCol> | ||||
@@ -1,6 +1,6 @@ | |||||
import React from 'react'; | import React from 'react'; | ||||
import Card from 'react-bootstrap/Card'; | import Card from 'react-bootstrap/Card'; | ||||
import { Placeholder } from 'react-bootstrap'; | |||||
import { Col, Container, Placeholder, Row } from 'react-bootstrap'; | |||||
import JobTags from './JobTags'; | import JobTags from './JobTags'; | ||||
import { Job } from '@/PersonalDataTypes'; | import { Job } from '@/PersonalDataTypes'; | ||||
import md from '../Markdown'; | import md from '../Markdown'; | ||||
@@ -30,14 +30,22 @@ export default function JobCard(props: Props) { | |||||
<Card.Header>{props.heading}</Card.Header> | <Card.Header>{props.heading}</Card.Header> | ||||
)} | )} | ||||
<Card.Body> | <Card.Body> | ||||
<Card.Title>{props.position}</Card.Title> | |||||
<Card.Subtitle> | |||||
{props.company && <span className='company-name'>{props.company}</span>} | |||||
{props.company && props.timerange && <span>, </span>} | |||||
{props.timerange && <span className='timerange'>{props.timerange}</span>} | |||||
</Card.Subtitle> | |||||
<div className='multiline job-description'>{md(props.description)}</div> | |||||
{props.tags && <JobTags tags={props.tags} />} | |||||
<Container fluid> | |||||
<Row> | |||||
<Col> | |||||
<Card.Title>{props.position}</Card.Title> | |||||
<Card.Subtitle> | |||||
{props.company && <span className='company-name'>{props.company}</span>} | |||||
{props.company && props.timerange && <span>, </span>} | |||||
{props.timerange && <span className='timerange'>{props.timerange}</span>} | |||||
</Card.Subtitle> | |||||
<div className='multiline job-description'>{md(props.description)}</div> | |||||
</Col> | |||||
<Col xs={3}> | |||||
{props.tags && <JobTags tags={props.tags} />} | |||||
</Col> | |||||
</Row> | |||||
</Container> | |||||
</Card.Body> | </Card.Body> | ||||
</Card> | </Card> | ||||
); | ); | ||||
@@ -13,8 +13,11 @@ export type Props = { | |||||
export default function JobHistory(props: Props) { | export default function JobHistory(props: Props) { | ||||
const {SizeWrapper, inRange} = useInWidthRange(600) | const {SizeWrapper, inRange} = useInWidthRange(600) | ||||
const jobsList = inRange === undefined ? <JobsCardsPlaceholder /> : ( | |||||
inRange ? <JobsAccordion {...props} /> : <JobsCards {...props} />) | |||||
const jobsList = inRange === undefined | |||||
? <JobsCardsPlaceholder /> | |||||
: (inRange | |||||
? <JobsAccordion {...props} /> | |||||
: <JobsCards {...props} />) | |||||
return ( | return ( | ||||
<Container fluid> | <Container fluid> | ||||
@@ -82,6 +82,9 @@ | |||||
.main-container .job-card .card-subtitle { | .main-container .job-card .card-subtitle { | ||||
margin-bottom: 0.5rem; | margin-bottom: 0.5rem; | ||||
} | } | ||||
.main-container .job-card .card-body p:last-child { | |||||
margin-bottom: 0; | |||||
} | |||||
.main-container .job-tags > span { | .main-container .job-tags > span { | ||||
margin: 0.2em; | margin: 0.2em; | ||||
} | } | ||||
@@ -159,9 +162,12 @@ | |||||
} | } | ||||
.main-container .job-card { | .main-container .job-card { | ||||
margin-top: 0.2em; | margin-top: 0.2em; | ||||
margin-bottom: 0.2em; | |||||
} | } | ||||
.main-container .job-card .card-body { | .main-container .job-card .card-body { | ||||
padding: 0.4rem; | padding: 0.4rem; | ||||
padding-bottom: 0.1rem; | |||||
margin: 0; | |||||
} | } | ||||
.main-container .cloud-light .tag-badges { | .main-container .cloud-light .tag-badges { | ||||
filter: opacity(80%); | filter: opacity(80%); | ||||
@@ -169,4 +175,9 @@ | |||||
.main-container .tag-badges > span { | .main-container .tag-badges > span { | ||||
margin: 0.1em; | margin: 0.1em; | ||||
} | } | ||||
/* Fiddle Hacks */ | |||||
.main-container div.skills { | |||||
margin-top: 2rem; | |||||
} | |||||
} | } |