partner catalog and no requests block
This commit is contained in:
parent
d07b9473c4
commit
5f4dc3a5f2
@ -62,7 +62,7 @@ const App = () => {
|
|||||||
|
|
||||||
<Route exact path='profile'>
|
<Route exact path='profile'>
|
||||||
<Route index element={<Profile/>}/>
|
<Route index element={<Profile/>}/>
|
||||||
<Route exact path='personals' element={<Home/>}/>
|
<Route exact path='catalog' element={<Home/>}/>
|
||||||
<Route exact path='calendar' element={<ProfileCalendar/>}/>
|
<Route exact path='calendar' element={<ProfileCalendar/>}/>
|
||||||
<Route exact path='summary' element={<Summary/>}/>
|
<Route exact path='summary' element={<Summary/>}/>
|
||||||
<Route exact path='view' element={<ViewReport/>}/>
|
<Route exact path='view' element={<ViewReport/>}/>
|
||||||
|
@ -1,10 +1,26 @@
|
|||||||
|
.container {
|
||||||
|
max-width: 1160px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.catalog {
|
||||||
|
background: #F1F1F1;
|
||||||
|
height: 100%;
|
||||||
|
min-height: 100vh;
|
||||||
|
font-family: 'LabGrotesque', sans-serif;
|
||||||
|
padding-top: 24px;
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 22px;
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.outstaffing-block__selected .outstaffing-block__img {
|
.outstaffing-block__selected .outstaffing-block__img {
|
||||||
background-color: #52b70999;
|
background-color: #52b70999;
|
||||||
color: #f9f9f9;
|
color: #f9f9f9;
|
||||||
}
|
}
|
||||||
.outstaffing-block {
|
.outstaffing-block {
|
||||||
|
|
||||||
margin-top: 60px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
&__container {
|
&__container {
|
||||||
max-width: 1160px;
|
max-width: 1160px;
|
||||||
padding: 0 10px;
|
padding: 0 15px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
@ -7,7 +7,7 @@ import "./sliderWorkers.scss";
|
|||||||
import "slick-carousel/slick/slick.css";
|
import "slick-carousel/slick/slick.css";
|
||||||
import "slick-carousel/slick/slick-theme.css";
|
import "slick-carousel/slick/slick-theme.css";
|
||||||
|
|
||||||
export const SliderWorkers = ({}) => {
|
export const SliderWorkers = ({title, titleInfo, subTitle}) => {
|
||||||
const [workers] = useState([
|
const [workers] = useState([
|
||||||
{
|
{
|
||||||
avatar: mockWorker,
|
avatar: mockWorker,
|
||||||
@ -46,11 +46,13 @@ export const SliderWorkers = ({}) => {
|
|||||||
return (
|
return (
|
||||||
<div className="slider-workers">
|
<div className="slider-workers">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
<div className="slider-workers__title">
|
{Boolean(title) ?
|
||||||
<h2>Свободные разработчики </h2>
|
<div className="slider-workers__title">
|
||||||
<h3> для Вашей команды</h3>
|
<h2>{title}</h2>
|
||||||
</div>
|
<h3>{titleInfo}</h3>
|
||||||
|
</div>
|
||||||
|
: ""
|
||||||
|
}
|
||||||
<Slider {...settings}>
|
<Slider {...settings}>
|
||||||
{workers.map((worker) => {
|
{workers.map((worker) => {
|
||||||
return (
|
return (
|
||||||
@ -64,15 +66,17 @@ export const SliderWorkers = ({}) => {
|
|||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
</Slider>
|
</Slider>
|
||||||
|
{Boolean(subTitle) ?
|
||||||
<div className="slider-workers__description">
|
<div className="slider-workers__description">
|
||||||
<h2>Дополните свою команду опытными ИТ-специалистами</h2>
|
<h2>Дополните свою команду опытными ИТ-специалистами</h2>
|
||||||
<p>
|
<p>
|
||||||
Даём финансовые, юридические и кадровые гарантии, предоставляем SLA
|
Даём финансовые, юридические и кадровые гарантии, предоставляем SLA
|
||||||
и отвечаем за работу команды. Вам не нужно искать, оформлять или
|
и отвечаем за работу команды. Вам не нужно искать, оформлять или
|
||||||
увольнять сотрудника — все хлопоты мы берем на себя.
|
увольнять сотрудника — все хлопоты мы берем на себя.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
: ""
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
BIN
src/images/cursorImg.png
Normal file
BIN
src/images/cursorImg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 645 B |
@ -34,7 +34,7 @@ const AuthForDevelopers = () => {
|
|||||||
return (
|
return (
|
||||||
<section className="auth-developers">
|
<section className="auth-developers">
|
||||||
<AuthHeader />
|
<AuthHeader />
|
||||||
<SliderWorkers />
|
<SliderWorkers title={"Свободные разработчики"} titleInfo={"для Вашей команды"} subTitle={true} />
|
||||||
<div className="auth-developers__background">
|
<div className="auth-developers__background">
|
||||||
<img className="auth-developers__vector" src={vector} alt="" />
|
<img className="auth-developers__vector" src={vector} alt="" />
|
||||||
<img
|
<img
|
||||||
|
@ -33,7 +33,7 @@ const AuthForPartners = () => {
|
|||||||
return (
|
return (
|
||||||
<section className="auth-partners">
|
<section className="auth-partners">
|
||||||
<AuthHeader />
|
<AuthHeader />
|
||||||
<SliderWorkers />
|
<SliderWorkers title={"Свободные разработчики"} titleInfo={"для Вашей команды"} subTitle={true} />
|
||||||
<div className="auth-partners__background">
|
<div className="auth-partners__background">
|
||||||
<img className="auth-partners__vector" src={vector} alt="" />
|
<img className="auth-partners__vector" src={vector} alt="" />
|
||||||
<img className="auth-partners__vector-black" src={vectorBlack} alt="" />
|
<img className="auth-partners__vector-black" src={vectorBlack} alt="" />
|
||||||
|
@ -7,7 +7,8 @@ import {Footer} from '../../components/Footer/Footer'
|
|||||||
|
|
||||||
import {profiles, tags} from '../../redux/outstaffingSlice'
|
import {profiles, tags} from '../../redux/outstaffingSlice'
|
||||||
|
|
||||||
import {Header} from "../../components/Header/Header";
|
import {ProfileHeader} from "../../components/ProfileHeader/ProfileHeader";
|
||||||
|
import {ProfileBreadcrumbs} from "../../components/ProfileBreadcrumbs/ProfileBreadcrumbs"
|
||||||
import {apiRequest} from "../../api/request";
|
import {apiRequest} from "../../api/request";
|
||||||
import {Navigate} from "react-router-dom";
|
import {Navigate} from "react-router-dom";
|
||||||
|
|
||||||
@ -56,11 +57,20 @@ const Home = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Header/>
|
<ProfileHeader/>
|
||||||
<div className='container'>
|
<div className="catalog">
|
||||||
<Outstaffing/>
|
<div className='container'>
|
||||||
<Description onLoadMore={loadMore} isLoadingMore={isLoadingMore}/>
|
<ProfileBreadcrumbs links={[
|
||||||
<Footer/>
|
{name: 'Главная', link: '/profile'},
|
||||||
|
{name: 'Запросы и открытые позиции', link: '/profile/requests'},
|
||||||
|
{name: 'Каталог', link: '/profile/catalog'}
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
<h2 className="catalog__title">Каталог специалистов</h2>
|
||||||
|
<Outstaffing/>
|
||||||
|
<Description onLoadMore={loadMore} isLoadingMore={isLoadingMore}/>
|
||||||
|
<Footer/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
@ -3,8 +3,11 @@ import {Link, Navigate} from "react-router-dom";
|
|||||||
|
|
||||||
import {ProfileHeader} from "../../components/ProfileHeader/ProfileHeader";
|
import {ProfileHeader} from "../../components/ProfileHeader/ProfileHeader";
|
||||||
import {ProfileBreadcrumbs} from "../../components/ProfileBreadcrumbs/ProfileBreadcrumbs"
|
import {ProfileBreadcrumbs} from "../../components/ProfileBreadcrumbs/ProfileBreadcrumbs"
|
||||||
|
import {SliderWorkers} from "../../components/SliderWorkers/SliderWorkers"
|
||||||
import {Footer} from "../../components/Footer/Footer";
|
import {Footer} from "../../components/Footer/Footer";
|
||||||
|
|
||||||
|
import cursorImg from "../../images/cursorImg.png"
|
||||||
|
|
||||||
import './partnerRequests.scss'
|
import './partnerRequests.scss'
|
||||||
|
|
||||||
export const PartnerRequests = () => {
|
export const PartnerRequests = () => {
|
||||||
@ -39,33 +42,59 @@ export const PartnerRequests = () => {
|
|||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<h2 className='partnerRequests__title'>Запросы</h2>
|
<h2 className='partnerRequests__title'>Запросы</h2>
|
||||||
<div className='partnerRequests__section'>
|
{Boolean(items.length) ?
|
||||||
<div className='partnerRequests__section__items'>
|
<div className='partnerRequests__section'>
|
||||||
{
|
<div className='partnerRequests__section__items'>
|
||||||
items.map((item, index) => {
|
{
|
||||||
return <Link key={index} to={'/profile/bid'} className='partnerRequests__section__item'>
|
items.map((item, index) => {
|
||||||
<p className='partnerRequests__section__item__name'>
|
return <Link key={index} to={'/profile/bid'} className='partnerRequests__section__item'>
|
||||||
{item.name}
|
<p className='partnerRequests__section__item__name'>
|
||||||
</p>
|
{item.name}
|
||||||
<p className='partnerRequests__section__item__count'>
|
</p>
|
||||||
Подходящие кандидаты<span>{item.count}</span>
|
<p className='partnerRequests__section__item__count'>
|
||||||
</p>
|
Подходящие кандидаты<span>{item.count}</span>
|
||||||
</Link>
|
</p>
|
||||||
})
|
</Link>
|
||||||
}
|
})
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
<div className='partnerRequests__section__info'>
|
||||||
|
<h3>Инструкция: подачи заявки</h3>
|
||||||
|
<p>
|
||||||
|
Оператор компании заводит заявку и указывает необходимые параметры —
|
||||||
|
количество сотрудников, стек, уровень специалиста
|
||||||
|
</p>
|
||||||
|
<Link to={'/profile/add-request'}>
|
||||||
|
<span>+</span>
|
||||||
|
Создать запрос
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className='partnerRequests__section__info'>
|
:
|
||||||
<h3>Инструкция: подачи заявки</h3>
|
<div className="partnerRequests__noItems">
|
||||||
<p>
|
<div className="partnerRequests__noItems__create">
|
||||||
Оператор компании заводит заявку и указывает необходимые параметры —
|
<div className="partnerRequests__noItems__create__link">
|
||||||
количество сотрудников, стек, уровень специалиста
|
<img src={cursorImg} alt="cursor" />
|
||||||
</p>
|
<p>У вас еще нет запросов на сотрудников</p>
|
||||||
<Link to={'/profile/add-request'}>
|
<Link to={'/profile/add-request'}>
|
||||||
<span>+</span>
|
<span>+</span>
|
||||||
Создать запрос
|
Создать запрос
|
||||||
</Link>
|
</Link>
|
||||||
|
</div>
|
||||||
|
<div className="partnerRequests__noItems__create__instruction">
|
||||||
|
<h3>Инструкция: подачи заявки</h3>
|
||||||
|
<p>
|
||||||
|
Оператор компании заводит заявку и указывает необходимые параметры —
|
||||||
|
количество сотрудников, стек, уровень специалиста
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="partnerRequests__noItems__freeEmployees">
|
||||||
|
<SliderWorkers title={"Свободные разработчики"} titleInfo={"в нашей базе"} />
|
||||||
|
<p>Перейти в полный <Link to={'/profile/catalog'}>КАТАЛОГ</Link> сотрудников</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
}
|
||||||
</div>
|
</div>
|
||||||
<Footer/>
|
<Footer/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -193,6 +193,171 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&__noItems {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
&__create {
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 29px 33px 23px 36px;
|
||||||
|
display: flex;
|
||||||
|
margin-top: 40px;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
@media (max-width: 1140px) {
|
||||||
|
flex-direction: column;
|
||||||
|
row-gap: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 670px) {
|
||||||
|
padding: 15px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__link {
|
||||||
|
display: flex;
|
||||||
|
background: #F1F1F1;
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 11px 25px 12px 30px;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
min-width: 650px;
|
||||||
|
justify-content: space-between;
|
||||||
|
max-height: 70px;
|
||||||
|
|
||||||
|
@media (max-width: 720px) {
|
||||||
|
min-width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 670px) {
|
||||||
|
max-height: inherit;
|
||||||
|
flex-direction: column;
|
||||||
|
row-gap: 8px;
|
||||||
|
width: auto;
|
||||||
|
|
||||||
|
img {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding: 10px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 32px;
|
||||||
|
color: #111112;
|
||||||
|
margin-bottom: 0;
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 380px) {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
background: #52B709;
|
||||||
|
max-width: 174px;
|
||||||
|
border-radius: 44px;
|
||||||
|
width: 100%;
|
||||||
|
height: 46px;
|
||||||
|
border: none;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 32px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
transition: 0.3s all ease;
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: white;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: 6px 5px 20px rgb(87 98 80 / 21%);
|
||||||
|
transform: scale(1.02);
|
||||||
|
text-decoration: none;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__instruction {
|
||||||
|
margin-left: 45px;
|
||||||
|
|
||||||
|
@media (max-width: 1140px) {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
color: #52B709;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 15px;
|
||||||
|
margin-bottom: 7px;
|
||||||
|
|
||||||
|
@media (max-width: 1140px) {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 22px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 530px) {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 24px;
|
||||||
|
color: #000000;
|
||||||
|
margin-bottom: 0;
|
||||||
|
|
||||||
|
@media (max-width: 1140px) {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 530px) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__freeEmployees {
|
||||||
|
h2 {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 30px;
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-top: 70px;
|
||||||
|
width: 100%;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 32px;
|
||||||
|
color: #111112;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #0C7636;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
margin-top: 70px;
|
margin-top: 70px;
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
.container {
|
.container {
|
||||||
max-width: 1160px;
|
max-width: 1160px;
|
||||||
padding: 0 10px;
|
padding: 0 15px;
|
||||||
|
|
||||||
@media (max-width: 570px) {
|
@media (max-width: 570px) {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
@ -15,7 +15,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&__content {
|
&__content {
|
||||||
margin-top: 20px;
|
margin-top: 23px;
|
||||||
}
|
}
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
|
Loading…
Reference in New Issue
Block a user