This commit is contained in:
2024-07-21 16:37:39 +03:00
parent 268ff58ccd
commit a561ed83c4
10 changed files with 733 additions and 2 deletions

View 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>
);
};

View 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;
}
}

View 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>
);
};

View 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;
}
}