Dejvino's Curriculum Vitae
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

53 lines
1.9 KiB

  1. import React from 'react';
  2. import Card from 'react-bootstrap/Card';
  3. import { Col, Container, Placeholder, Row } from 'react-bootstrap';
  4. import JobTags from './JobTags';
  5. import { Job } from '@/PersonalDataTypes';
  6. import md from '../Markdown';
  7. export type Props = Job & {
  8. heading?: string
  9. };
  10. export function JobCardPlaceholder() {
  11. return <Card className='job-card'>
  12. <Card.Body>
  13. <Placeholder as={Card.Title} animation="glow">
  14. <Placeholder xs={6} />
  15. </Placeholder>
  16. <Placeholder as={Card.Text} animation="glow">
  17. <Placeholder xs={7} /> <Placeholder xs={4} /> <Placeholder xs={5} />{' '}
  18. <Placeholder xs={4} /> <Placeholder xs={3} />
  19. </Placeholder>
  20. </Card.Body>
  21. </Card>
  22. }
  23. export default function JobCard(props: Props) {
  24. return (
  25. <Card className='job-card'>
  26. {props.heading && (
  27. <Card.Header>{props.heading}</Card.Header>
  28. )}
  29. <Card.Body>
  30. <Container fluid>
  31. <Row>
  32. <Col>
  33. <Card.Title>{props.position}</Card.Title>
  34. <Card.Subtitle>
  35. {props.company && <span className='company-name'>{props.company}</span>}
  36. {props.company && props.timerange && <span>, </span>}
  37. {props.timerange && <span className='timerange'>{props.timerange}</span>}
  38. </Card.Subtitle>
  39. <div className='multiline job-description'>{md(props.description)}</div>
  40. </Col>
  41. <Col xs={3}>
  42. {props.tags && <JobTags tags={props.tags} />}
  43. </Col>
  44. </Row>
  45. </Container>
  46. </Card.Body>
  47. </Card>
  48. );
  49. }