vacancy
This commit is contained in:
46
src/components/VacancyItem/VacancyItem.jsx
Normal file
46
src/components/VacancyItem/VacancyItem.jsx
Normal file
@ -0,0 +1,46 @@
|
||||
import React from "react";
|
||||
|
||||
import { Link } from "react-router-dom";
|
||||
import titleImg from "assets/images/VacancyItemImg.svg";
|
||||
|
||||
import "./vacancyItem.scss";
|
||||
|
||||
export const VacancyItem= ({ vacancy: { name, description, level, price, location, count } }) => {
|
||||
return (
|
||||
<div className="vacancy__item">
|
||||
<div className="vacancy__item__head">
|
||||
<div className="vacancy__item__title">
|
||||
<span className="vacancy__item__img">
|
||||
<img src={titleImg} alt="img" />
|
||||
</span>
|
||||
<h4>{name}</h4>
|
||||
</div>
|
||||
<p className="vacancy__item__description">{description}</p>
|
||||
</div>
|
||||
<div className="vacancy__item__block">
|
||||
<div className="vacancy__item__block--left">
|
||||
<div className="vacancy__item__info">
|
||||
<span>Грейд:</span>
|
||||
<p>{level}</p>
|
||||
</div>
|
||||
<div className="vacancy__item__info">
|
||||
<span>Ставка:</span>
|
||||
<p>{price}</p>
|
||||
</div>
|
||||
<Link to={"/profile/open-requests/12"} className="vacancy__item__more">Все требования по вакансии</Link>
|
||||
</div>
|
||||
<div className="vacancy__item__block--right">
|
||||
<div className="vacancy__item__info">
|
||||
<span>Локация:</span>
|
||||
<p>{location}</p>
|
||||
</div>
|
||||
<div className="vacancy__item__info">
|
||||
<span>Кол-во человек:</span>
|
||||
<p>{count}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button className="vacancy__item__btn">Откликнуться</button>
|
||||
</div>
|
||||
);
|
||||
};
|
113
src/components/VacancyItem/vacancyItem.scss
Normal file
113
src/components/VacancyItem/vacancyItem.scss
Normal file
@ -0,0 +1,113 @@
|
||||
.vacancy__item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
max-width: 325px;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
|
||||
&__head {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: white;
|
||||
border: 1px solid #DDDFE4;
|
||||
border-radius: 8px;
|
||||
padding: 24px 20px 8px;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
&__title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 18px;
|
||||
|
||||
h4 {
|
||||
font-weight: 500;
|
||||
color: #2E3A59;
|
||||
font-size: 20px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&__img {
|
||||
background: #52B709;
|
||||
border-radius: 4px;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
&__description {
|
||||
margin-top: 10px;
|
||||
color: #2E3A59;
|
||||
font-size: 14px;
|
||||
line-height: 17.5px;
|
||||
}
|
||||
|
||||
&__block {
|
||||
display: flex;
|
||||
position: relative;
|
||||
top: -12px;
|
||||
z-index: 1;
|
||||
|
||||
&--left {
|
||||
background: #EBEBEB;
|
||||
border: 1px solid #DDDFE4;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
padding: 20px 20px 12px;
|
||||
row-gap: 14px;
|
||||
}
|
||||
|
||||
&--right {
|
||||
background: #EBEBEB;
|
||||
border: 1px solid #DDDFE4;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
padding: 20px 20px 12px;
|
||||
row-gap: 14px;
|
||||
height: 70%;
|
||||
}
|
||||
}
|
||||
|
||||
&__info {
|
||||
color: #000000;
|
||||
font-size: 14px;
|
||||
span {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
|
||||
&__more {
|
||||
font-size: 12px;
|
||||
text-decoration: underline;
|
||||
max-width: 97px;
|
||||
cursor: pointer;
|
||||
color: #000000;
|
||||
|
||||
&:hover {
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
|
||||
&__btn {
|
||||
position: absolute;
|
||||
max-width: 150px;
|
||||
width: 100%;
|
||||
border: none;
|
||||
background: #52B709;
|
||||
border-radius: 44px;
|
||||
right: 5px;
|
||||
padding: 10px 0;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
bottom: 17px;
|
||||
cursor: pointer;
|
||||
z-index: 3;
|
||||
}
|
||||
}
|
12
src/components/VacancyTab/VacancyTab.jsx
Normal file
12
src/components/VacancyTab/VacancyTab.jsx
Normal file
@ -0,0 +1,12 @@
|
||||
import React from "react";
|
||||
|
||||
import "./vacancyTab.scss";
|
||||
|
||||
export const VacancyTab = ({ title, active, count, setActive }) => {
|
||||
return (
|
||||
<div className={active === title ? "vacancy__tab vacancy__tab--active" : "vacancy__tab"} onClick={setActive}>
|
||||
<p className="vacancy__tab__title">{title}</p>
|
||||
<span className="vacancy__tabtab__count">{count}</span>
|
||||
</div>
|
||||
);
|
||||
};
|
25
src/components/VacancyTab/vacancyTab.scss
Normal file
25
src/components/VacancyTab/vacancyTab.scss
Normal file
@ -0,0 +1,25 @@
|
||||
.vacancy__tab {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
background: #FFFFFF;
|
||||
border-radius: 8px;
|
||||
padding: 10px 8px 10px 16px;
|
||||
border: 2px solid white;
|
||||
max-width: 178px;
|
||||
width: 100%;
|
||||
cursor: pointer;
|
||||
|
||||
&__title {
|
||||
color: #2E3A59;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
&__count {
|
||||
color: #1458DD;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
&--active {
|
||||
border: 2px solid #52B709;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user