Merge remote-tracking branch 'origin/parthners-area-fix-tracker-modal' into candidate-area
# Conflicts: # src/App.js # src/pages/Tracker/Tracker.js
This commit is contained in:
@@ -14,6 +14,7 @@ import ModalErrorLogin from "../../components/UI/ModalErrorLogin/ModalErrorLogin
|
||||
import { apiRequest } from "../../api/request";
|
||||
|
||||
import ellipse from "../../images/ellipse.png";
|
||||
import ModalRegistration from "../UI/ModalRegistration/ModalRegistration";
|
||||
|
||||
import "./authBox.scss";
|
||||
|
||||
@@ -27,6 +28,7 @@ export const AuthBox = ({ title }) => {
|
||||
|
||||
const [error, setError] = useState(null);
|
||||
const [modalError, setModalError] = useState(false);
|
||||
const [modalReg, setModalReg] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (!localStorage.getItem("auth_token")) {
|
||||
@@ -112,11 +114,12 @@ export const AuthBox = ({ title }) => {
|
||||
{isLoading ? <Loader /> : "Войти"}
|
||||
</button>
|
||||
|
||||
{/* TODO: при клике отправлять на форму/модалку/страницу регистрации */}
|
||||
<ModalRegistration active={modalReg} setActive={setModalReg} />
|
||||
<button
|
||||
className="auth-box__form-btn--role auth-box__auth-link"
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
setModalReg(true);
|
||||
}}
|
||||
>
|
||||
Регистрация
|
||||
|
@@ -6,6 +6,13 @@ import userIcon from "../../images/userIcon.png";
|
||||
import "./authHeader.scss";
|
||||
|
||||
export const AuthHeader = ({}) => {
|
||||
function scrollToForm() {
|
||||
window.scrollTo({
|
||||
top: 850,
|
||||
behavior: "smooth",
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="auth-header">
|
||||
<div className="auth-header__logo">
|
||||
@@ -39,7 +46,12 @@ export const AuthHeader = ({}) => {
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<a href="#">
|
||||
<a
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
scrollToForm();
|
||||
}}
|
||||
>
|
||||
<img src={userIcon}></img>
|
||||
</a>
|
||||
</div>
|
||||
|
@@ -57,6 +57,10 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -67,7 +71,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
@media (max-width: 1375px) {
|
||||
.auth-header {
|
||||
display: none;
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
import React, { useState } from "react";
|
||||
|
||||
import arrow from "../../images/sideBarArrow.svg";
|
||||
import LogoITguild from "../../images/LogoITguild.svg";
|
||||
|
||||
import "./sidebar.scss";
|
||||
|
||||
@@ -41,9 +42,7 @@ export const SideBar = () => {
|
||||
|
||||
<div className={active ? "auth-body active" : "auth-body"}>
|
||||
<div className="auth-body__title">
|
||||
<h3>IT</h3>
|
||||
<p>guild</p>
|
||||
<span>Аутстафинговая компания</span>
|
||||
<img src={LogoITguild}></img>
|
||||
</div>
|
||||
<ul className="auth-body__navigation">
|
||||
<li>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
height: 100%;
|
||||
background: #e1fccf;
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
@media (max-width: 1375px) {
|
||||
position: fixed;
|
||||
width: 100% !important;
|
||||
height: 80px;
|
||||
@@ -75,7 +75,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
@media (max-width: 1375px) {
|
||||
flex-direction: row;
|
||||
height: 100%;
|
||||
|
||||
@@ -121,25 +121,7 @@
|
||||
|
||||
&__title {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
h3 {
|
||||
color: #52b709;
|
||||
font-size: 35px;
|
||||
line-height: 32px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
p {
|
||||
width: 70%;
|
||||
font-size: 30px;
|
||||
line-height: 32px;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
span {
|
||||
font-size: 12px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
margin-top: 24px;
|
||||
}
|
||||
|
||||
&__navigation {
|
||||
@@ -175,7 +157,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
@media (max-width: 1375px) {
|
||||
&__title {
|
||||
margin-top: 35px;
|
||||
}
|
||||
@@ -199,7 +181,7 @@
|
||||
left: 79px;
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
@media (max-width: 1375px) {
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 535px;
|
||||
|
@@ -6,8 +6,9 @@ import mockWorker from "../../images/mokPerson.png";
|
||||
import "./sliderWorkers.scss";
|
||||
import "slick-carousel/slick/slick.css";
|
||||
import "slick-carousel/slick/slick-theme.css";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
export const SliderWorkers = ({title, titleInfo, subTitle}) => {
|
||||
export const SliderWorkers = ({ title, titleInfo, subTitle }) => {
|
||||
const [workers] = useState([
|
||||
{
|
||||
avatar: mockWorker,
|
||||
@@ -15,7 +16,11 @@ export const SliderWorkers = ({title, titleInfo, subTitle}) => {
|
||||
},
|
||||
{
|
||||
avatar: mockWorker,
|
||||
skils: "React / Vue Front end, Middle разработчик",
|
||||
skils: "Vue / React Front end, Senior разработчик",
|
||||
},
|
||||
{
|
||||
avatar: mockWorker,
|
||||
skils: "NodeJs Fullstack, Middle разработчик",
|
||||
},
|
||||
{
|
||||
avatar: mockWorker,
|
||||
@@ -23,11 +28,7 @@ export const SliderWorkers = ({title, titleInfo, subTitle}) => {
|
||||
},
|
||||
{
|
||||
avatar: mockWorker,
|
||||
skils: "React / Vue Front end, Middle разработчик",
|
||||
},
|
||||
{
|
||||
avatar: mockWorker,
|
||||
skils: "React / Vue Front end, Middle разработчик",
|
||||
skils: "React / PHP Fullstack, Middle разработчик",
|
||||
},
|
||||
]);
|
||||
|
||||
@@ -49,13 +50,14 @@ export const SliderWorkers = ({title, titleInfo, subTitle}) => {
|
||||
return (
|
||||
<div className="slider-workers">
|
||||
<div className="container">
|
||||
{Boolean(title) ?
|
||||
{Boolean(title) ? (
|
||||
<div className="slider-workers__title">
|
||||
<h2>{title}</h2>
|
||||
<h3>{titleInfo}</h3>
|
||||
</div>
|
||||
: ""
|
||||
}
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
<Slider {...settings}>
|
||||
{workers.map((worker, index) => {
|
||||
return (
|
||||
@@ -63,23 +65,26 @@ export const SliderWorkers = ({title, titleInfo, subTitle}) => {
|
||||
<img src={worker.avatar}></img>
|
||||
<div className="worker-description">
|
||||
<p>{worker.skils}</p>
|
||||
<button className="worker__resume">Подробное резюме</button>
|
||||
<Link to={`/worker/${index}`} className="worker__resume">
|
||||
Подробное резюме
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</Slider>
|
||||
{Boolean(subTitle) ?
|
||||
{Boolean(subTitle) ? (
|
||||
<div className="slider-workers__description">
|
||||
<h2>Дополните свою команду опытными ИТ-специалистами</h2>
|
||||
<p>
|
||||
Даём финансовые, юридические и кадровые гарантии, предоставляем SLA
|
||||
и отвечаем за работу команды. Вам не нужно искать, оформлять или
|
||||
увольнять сотрудника — все хлопоты мы берем на себя.
|
||||
Даём финансовые, юридические и кадровые гарантии, предоставляем
|
||||
SLA и отвечаем за работу команды. Вам не нужно искать, оформлять
|
||||
или увольнять сотрудника — все хлопоты мы берем на себя.
|
||||
</p>
|
||||
</div>
|
||||
: ""
|
||||
}
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
@@ -59,6 +59,9 @@
|
||||
}
|
||||
|
||||
&__resume {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-top: 5px;
|
||||
width: 177px;
|
||||
height: 40px;
|
||||
@@ -73,6 +76,7 @@
|
||||
&:hover {
|
||||
transition: 0.5s;
|
||||
background-color: #52b709a8;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -121,7 +125,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1375px) {
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
margin-top: 0;
|
||||
|
||||
&__title {
|
||||
flex-direction: column;
|
||||
padding: 120px 0 56px 0;
|
||||
|
97
src/components/UI/FreeDevelopers/FreeDevelopers.js
Normal file
97
src/components/UI/FreeDevelopers/FreeDevelopers.js
Normal file
@@ -0,0 +1,97 @@
|
||||
import React from "react";
|
||||
|
||||
import AuthHeader from "../../AuthHeader/AuthHeader";
|
||||
import SideBar from "../../SideBar/SideBar";
|
||||
import { Footer } from "../../Footer/Footer";
|
||||
import { ProfileBreadcrumbs } from "../../ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
|
||||
import mockWorker from "../../../images/mokPerson.png";
|
||||
import arrow from "../../../images/arrow_left.png";
|
||||
|
||||
import "./freeDevelopers.scss";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
export const FreeDevelopers = ({}) => {
|
||||
return (
|
||||
<section className="free-dev">
|
||||
<AuthHeader />
|
||||
<SideBar />
|
||||
<div className="container free-dev_page">
|
||||
<ProfileBreadcrumbs
|
||||
links={[
|
||||
{ name: "Главная", link: "/auth" },
|
||||
{ name: "Свободные разработчики", link: "/worker" },
|
||||
]}
|
||||
/>
|
||||
|
||||
<h2>
|
||||
Свободные разработчики <span>для Вашей команды</span>
|
||||
</h2>
|
||||
|
||||
<Link to={"/auth"} className="link">
|
||||
<img src={arrow}></img>Вернуться
|
||||
</Link>
|
||||
|
||||
<div className="free-dev__title">
|
||||
<div className="free-dev__title-box">
|
||||
<img src={mockWorker}></img>
|
||||
<div className="free-dev__title-name">
|
||||
<h3>Дмитрий, PHP Back end - разработчик, Middle</h3>
|
||||
<div></div>
|
||||
</div>
|
||||
</div>
|
||||
<button className="button-green">Код разработчика</button>
|
||||
</div>
|
||||
|
||||
<div className="free-dev__body">
|
||||
<div className="free-dev__body-title">
|
||||
<p>Описание опыта работы</p>
|
||||
</div>
|
||||
|
||||
<div className="free-dev__body-text">
|
||||
<h5>
|
||||
Godesigner - сервис для фриланс дизайнеров, копирайтеров и их
|
||||
заказчиков
|
||||
</h5>
|
||||
<p>Стек – PHP (li3), HTML, CSS, JavaScript, MYSQL, Nginx.</p>
|
||||
<ul>
|
||||
<li> Расширение функционала старых модулей проекта</li>
|
||||
<li>создание и проектирование новых модулей сайта</li>
|
||||
<li>написание backend части проекта</li>
|
||||
<li>усовершенствование и расширение функционала админ-панели</li>
|
||||
<li>работа с визуальной составляющей</li>
|
||||
<li>создание алгоритма рассылки писем по электронной почте</li>
|
||||
<li>
|
||||
использование API сторонних сервисов, мессенджеров (WhatsApp)
|
||||
</li>
|
||||
</ul>
|
||||
<p>Время разработки: 2 года.</p>
|
||||
|
||||
<div className="free-dev__body-text-bottom">
|
||||
<h5>
|
||||
Godesigner - сервис для фриланс дизайнеров, копирайтеров и их
|
||||
заказчиков
|
||||
</h5>
|
||||
<p>Стек – PHP (li3), HTML, CSS, JavaScript, MYSQL, Nginx.</p>
|
||||
<ul>
|
||||
<li> Расширение функционала старых модулей проекта</li>
|
||||
<li>создание и проектирование новых модулей сайта</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="logIn">
|
||||
<h3>Для просмотра полного резюме разработчика авторизуйтесь</h3>
|
||||
<Link to={"/auth"} className="button-green">
|
||||
Войти
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Footer />
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default FreeDevelopers;
|
246
src/components/UI/FreeDevelopers/freeDevelopers.scss
Normal file
246
src/components/UI/FreeDevelopers/freeDevelopers.scss
Normal file
@@ -0,0 +1,246 @@
|
||||
.free-dev {
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
background-color: #f1f1f1;
|
||||
|
||||
.link {
|
||||
font-size: 12px;
|
||||
line-height: 16px;
|
||||
color: #5b6871;
|
||||
|
||||
img {
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-size: 30px;
|
||||
line-height: 32px;
|
||||
color: #000000;
|
||||
margin: 32px 0 36px 0;
|
||||
|
||||
span {
|
||||
color: #52b709;
|
||||
font-size: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
&_page {
|
||||
margin: 24px 0 30px 0;
|
||||
}
|
||||
|
||||
&__title {
|
||||
background: #ffffff;
|
||||
border-radius: 12px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 20px 63px 20px 45px;
|
||||
margin: 40px 0 23px 0;
|
||||
|
||||
&-box {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
&-name {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-evenly;
|
||||
margin-left: 47px;
|
||||
|
||||
div {
|
||||
width: 239px;
|
||||
height: 8px;
|
||||
background: #52b709;
|
||||
border-radius: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 720px) {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
@media (max-width: 450px) {
|
||||
flex-direction: column;
|
||||
|
||||
&-box {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
img {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
&-name {
|
||||
margin: 10px 0 10px 0;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__body {
|
||||
position: relative;
|
||||
background: #ffffff;
|
||||
border-radius: 12px;
|
||||
margin-bottom: 160px;
|
||||
|
||||
&-title {
|
||||
background: #e1fccf;
|
||||
border-radius: 12px 12px 0px 0px;
|
||||
font-weight: 400;
|
||||
font-size: 18px;
|
||||
line-height: 32px;
|
||||
color: #000000;
|
||||
padding: 20px 0 17px 51px;
|
||||
}
|
||||
|
||||
&-text {
|
||||
font-weight: 700;
|
||||
font-size: 16px;
|
||||
line-height: 32px;
|
||||
color: #000000;
|
||||
padding: 26px 0 30px 52px;
|
||||
|
||||
h5 {
|
||||
font-size: 16px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
&-bottom {
|
||||
margin-top: 50px;
|
||||
opacity: 0.25;
|
||||
}
|
||||
}
|
||||
|
||||
.logIn {
|
||||
position: absolute;
|
||||
bottom: 75px;
|
||||
border: 3px solid #52b709;
|
||||
border-radius: 12px;
|
||||
background: rgba(255, 255, 255, 0.76);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 97px;
|
||||
cursor: pointer;
|
||||
|
||||
h3 {
|
||||
font-weight: 500;
|
||||
font-size: 22px;
|
||||
line-height: 18px;
|
||||
color: #000000;
|
||||
margin-right: 50px;
|
||||
}
|
||||
|
||||
a {
|
||||
width: 140px;
|
||||
height: 50px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@media (max-width: 920px) {
|
||||
flex-direction: column;
|
||||
padding: 15px;
|
||||
height: 20%;
|
||||
|
||||
h3 {
|
||||
margin: 0 0 0 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
a {
|
||||
margin-top: 15px;
|
||||
height: 25px;
|
||||
height: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1333px) {
|
||||
.auth-menu {
|
||||
position: fixed;
|
||||
width: 100% !important;
|
||||
height: 80px;
|
||||
margin-bottom: 50px;
|
||||
|
||||
.auth-body.active {
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 535px;
|
||||
}
|
||||
|
||||
.auth-body {
|
||||
&__title,
|
||||
&__politic {
|
||||
margin-top: 35px;
|
||||
}
|
||||
|
||||
&__contacts {
|
||||
margin: 50px 0 25px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.free-dev_page {
|
||||
margin-top: 110px;
|
||||
}
|
||||
|
||||
.auth-header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.auth-title {
|
||||
flex-direction: row;
|
||||
height: 100%;
|
||||
|
||||
.text {
|
||||
margin: 0;
|
||||
flex-direction: row;
|
||||
|
||||
.burger {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.outstaffing {
|
||||
margin: 0;
|
||||
width: 150px;
|
||||
font-size: 12px;
|
||||
transform: none;
|
||||
|
||||
img {
|
||||
margin-right: 5px;
|
||||
width: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.button-green {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
display: flex;
|
||||
background: #52b709;
|
||||
border-radius: 44px;
|
||||
width: 202px;
|
||||
height: 50px;
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
line-height: 32px;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
}
|
@@ -4,7 +4,7 @@ import { setProject } from "../../../redux/projectsTrackerSlice";
|
||||
|
||||
import "./ModalCreate.scss";
|
||||
|
||||
export const ModalCreate = ({ active, setActive, title }) => {
|
||||
export const ModalCreate = ({ active, setActive, title, desc }) => {
|
||||
const [inputValue, setInputValue] = useState("");
|
||||
const dispatch = useDispatch();
|
||||
|
||||
@@ -33,6 +33,7 @@ export const ModalCreate = ({ active, setActive, title }) => {
|
||||
>
|
||||
<div className="title-project">
|
||||
<h4>{title}</h4>
|
||||
<p>{desc}</p>
|
||||
<div className="input-container">
|
||||
<input
|
||||
className="name-project"
|
||||
@@ -40,10 +41,11 @@ export const ModalCreate = ({ active, setActive, title }) => {
|
||||
onChange={(e) => setInputValue(e.target.value)}
|
||||
></input>
|
||||
</div>
|
||||
<button className="create-project" onClick={createName}>
|
||||
Создать
|
||||
</button>
|
||||
</div>
|
||||
<button className="create-project" onClick={createName}>
|
||||
Создать
|
||||
</button>
|
||||
<span className="exit" onClick={() => setActive(false)}></span>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
@@ -12,30 +12,36 @@
|
||||
transform: scale(0);
|
||||
|
||||
&__content {
|
||||
position: relative;
|
||||
width: 424px;
|
||||
height: 248px;
|
||||
background: linear-gradient(180deg, #ffffff 0%, #ebebeb 100%);
|
||||
border-radius: 40px;
|
||||
|
||||
padding: 15px;
|
||||
background: #ffffff;
|
||||
border: 1px solid #dde2e4;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.title-project {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
|
||||
.input-container {
|
||||
width: 220px;
|
||||
height: 25px;
|
||||
border-radius: 44px;
|
||||
border: 1px solid #d1d1d1;
|
||||
width: 287px;
|
||||
height: 35px;
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
color: #111112;
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px !important;
|
||||
font-weight: 500;
|
||||
font-size: 22px;
|
||||
line-height: 26px;
|
||||
color: #263238;
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,9 +55,9 @@
|
||||
}
|
||||
|
||||
.create-project {
|
||||
margin: 15px 0 0 0;
|
||||
width: 188px;
|
||||
height: 40px;
|
||||
margin: 30px 0 0 0;
|
||||
width: 130px;
|
||||
height: 37px;
|
||||
background: #52b709;
|
||||
border-radius: 44px;
|
||||
border: none;
|
||||
@@ -63,6 +69,29 @@
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.exit {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 35px;
|
||||
right: 40px;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 16px;
|
||||
height: 2px;
|
||||
background: #263238;
|
||||
}
|
||||
|
||||
&:before {
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
&:after {
|
||||
transform: rotate(-45deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
79
src/components/UI/ModalRegistration/ModalRegistration.js
Normal file
79
src/components/UI/ModalRegistration/ModalRegistration.js
Normal file
@@ -0,0 +1,79 @@
|
||||
import React from "react";
|
||||
|
||||
import tgLogo from "../../../images/TgLogo.svg";
|
||||
import doc from "../../../images/doc.svg";
|
||||
import anyMoment from "../../../images/anyMoment.svg";
|
||||
|
||||
import "./modalRegistration.scss";
|
||||
|
||||
export const ModalRegistration = ({ active, setActive }) => {
|
||||
return (
|
||||
<div
|
||||
className={active ? "modal-registration active" : "modal-registration"}
|
||||
onClick={() => setActive(false)}
|
||||
>
|
||||
<div
|
||||
className="modal-registration__content"
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
<div className="body-reg__left">
|
||||
<h2>
|
||||
Подключайтесь к <p>itguild.</p>
|
||||
</h2>
|
||||
<p className="body-reg__left-desc">
|
||||
Зарегистрируйтесь и назначайте собеседования любым специалистам без
|
||||
задержек
|
||||
</p>
|
||||
|
||||
<div className="input-body">
|
||||
<div className="input-body__box">
|
||||
<h5>Ваше имя</h5>
|
||||
<input></input>
|
||||
<h5>E-mail</h5>
|
||||
<input></input>
|
||||
</div>
|
||||
|
||||
<div className="input-body__box">
|
||||
<h5>Название компании</h5>
|
||||
<input></input>
|
||||
<h5>Пароль</h5>
|
||||
<input></input>
|
||||
</div>
|
||||
</div>
|
||||
<div className="button-box">
|
||||
<button onClick={(e) => e.preventDefault()}>Отправить</button>
|
||||
<h5>
|
||||
У вас уже есть аккаунт? <p>Войти</p>
|
||||
</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div className="body-reg__right">
|
||||
<h4>Отказ от специалиста в любой момент</h4>
|
||||
<div className="body-reg__right-text">
|
||||
<img src={anyMoment}></img>
|
||||
<p>
|
||||
Поменяйте, откажитесь или возьмите еще специалиста в любой момент
|
||||
работы.
|
||||
</p>
|
||||
</div>
|
||||
<h4>100% постоплата</h4>
|
||||
<div className="body-reg__right-text">
|
||||
<img src={doc}></img>
|
||||
<p>
|
||||
Договор не подразумевает какую‑либо оплату до того, как вы
|
||||
арендовали специалиста
|
||||
</p>
|
||||
</div>
|
||||
<h4>Есть вопросы?</h4>
|
||||
<div className="body-reg__right-text">
|
||||
<img src={tgLogo}></img>
|
||||
<p>Напишите нам в Телеграм. Мы с удовольствием ответим!</p>
|
||||
</div>
|
||||
</div>
|
||||
<span onClick={() => setActive(false)}></span>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default ModalRegistration;
|
174
src/components/UI/ModalRegistration/modalRegistration.scss
Normal file
174
src/components/UI/ModalRegistration/modalRegistration.scss
Normal file
@@ -0,0 +1,174 @@
|
||||
.modal-registration {
|
||||
z-index: 9;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.11);
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transform: scale(0);
|
||||
|
||||
&__content {
|
||||
position: relative;
|
||||
background: white;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
justify-content: space-between;
|
||||
border: 1px solid #dde2e4;
|
||||
border-radius: 8px;
|
||||
width: 1088px;
|
||||
height: 529px;
|
||||
|
||||
.body-reg {
|
||||
&__left {
|
||||
padding: 60px 0 30px 77px;
|
||||
|
||||
h2 {
|
||||
font-weight: 500;
|
||||
font-size: 35px;
|
||||
line-height: 32px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
width: 405px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
h2 > p {
|
||||
font-size: 35px;
|
||||
color: #52b709;
|
||||
}
|
||||
|
||||
&-desc {
|
||||
text-align: center;
|
||||
width: 500px;
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
line-height: 28px;
|
||||
margin: 20px auto 0 auto;
|
||||
}
|
||||
|
||||
.input-body {
|
||||
margin-top: 44px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
&__box {
|
||||
margin-right: 25px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
h5 {
|
||||
font-weight: 400;
|
||||
font-size: 15px;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 294px;
|
||||
height: 35px;
|
||||
background: #eff2f7;
|
||||
border-radius: 8px;
|
||||
border: none;
|
||||
margin-bottom: 35px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.button-box {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-top: 10px;
|
||||
|
||||
button {
|
||||
width: 174px;
|
||||
height: 46px;
|
||||
background: #52b709;
|
||||
border-radius: 44px;
|
||||
border: none;
|
||||
font-size: 18px;
|
||||
line-height: 32px;
|
||||
color: white;
|
||||
margin-right: 55px;
|
||||
}
|
||||
|
||||
h5 {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
font-size: 16px;
|
||||
line-height: 28px;
|
||||
|
||||
p {
|
||||
color: #406128;
|
||||
text-decoration: underline;
|
||||
margin: 0 0 0 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__right {
|
||||
border-left: 1px solid #f1f1f1;
|
||||
padding: 80px 32px 46px 25px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
|
||||
h4 {
|
||||
font-weight: 900;
|
||||
font-size: 14px;
|
||||
line-height: 24px;
|
||||
color: #52b709;
|
||||
margin-right: 100px;
|
||||
width: 180px;
|
||||
}
|
||||
|
||||
&-text {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
p {
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 22px;
|
||||
width: 205px;
|
||||
}
|
||||
|
||||
img {
|
||||
margin: 0 18px 20px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
span {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
right: 36px;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 16px;
|
||||
height: 2px;
|
||||
background: #263238;
|
||||
}
|
||||
|
||||
&:before {
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
&:after {
|
||||
transform: rotate(-45deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.modal-registration.active {
|
||||
transform: scale(1);
|
||||
}
|
@@ -1,15 +1,20 @@
|
||||
import React, { useState } from "react";
|
||||
import "./ModalTiket.scss";
|
||||
|
||||
import creatorMock from "../../../images/avatarMoсkCreator.png";
|
||||
import avatarMock1 from "../../../images/avatarMoсk1.png";
|
||||
import avatarMock2 from "../../../images/avatarMoсk2.png";
|
||||
import category from "../../../images/category.png";
|
||||
import comments from "../../../images/commentsBoard.svg";
|
||||
import watch from "../../../images/watch.png";
|
||||
import files from "../../../images/filesBoard.svg";
|
||||
import file from "../../../images/fileModal.svg";
|
||||
import task from "../../../images/tasksMock.png";
|
||||
import arrow from "../../../images/arrowStart.png";
|
||||
import link from "../../../images/link.svg";
|
||||
import archive from "../../../images/archive.svg";
|
||||
import del from "../../../images/delete.svg";
|
||||
import edit from "../../../images/edit.svg";
|
||||
import send from "../../../images/send.svg";
|
||||
import plus from "../../../images/plus.svg";
|
||||
|
||||
import "./ModalTiket.scss";
|
||||
|
||||
export const ModalTiket = ({ active, setActive }) => {
|
||||
const [tiket] = useState({
|
||||
@@ -44,13 +49,10 @@ export const ModalTiket = ({ active, setActive }) => {
|
||||
<h3 className="title-project">
|
||||
<img src={category} className="title-project__category"></img>
|
||||
Проект: {tiket.name}
|
||||
<div className="title-project__menu">
|
||||
<p>Редактировать</p>
|
||||
<p>Удалить</p>
|
||||
</div>
|
||||
</h3>
|
||||
|
||||
<div className="content__task">
|
||||
<span>Задача</span>
|
||||
<h5>{tiket.code}</h5>
|
||||
<div className="content__description">
|
||||
<p>{tiket.descriptions}</p>
|
||||
@@ -58,48 +60,79 @@ export const ModalTiket = ({ active, setActive }) => {
|
||||
<p>{tiket.descriptions}</p>
|
||||
</div>
|
||||
<div className="content__communication">
|
||||
<p className="comment">
|
||||
<img src={comments}></img>
|
||||
<span>{0}</span>
|
||||
Коментариев
|
||||
<p className="tasks">
|
||||
<button>
|
||||
<img src={plus}></img>
|
||||
Добавить под задачу
|
||||
</button>
|
||||
</p>
|
||||
<p className="file">
|
||||
<img src={files}></img>
|
||||
<button>
|
||||
<img src={file}></img>
|
||||
Загрузить файл
|
||||
</button>
|
||||
<span>{0}</span>
|
||||
Файлов
|
||||
</p>
|
||||
</div>
|
||||
<div className="content__input">
|
||||
<input placeholder="Оставить комментарий"></input>
|
||||
<img src={send}></img>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="workers">
|
||||
<span className="exit" onClick={() => setActive(false)}></span>
|
||||
<span>{tiket.code}</span>
|
||||
<p className="workers__creator">Создатель : {tiket.creator}</p>
|
||||
<div>
|
||||
{workers.map((worker, index) => {
|
||||
return (
|
||||
<div className="worker" key={index}>
|
||||
<img src={worker.avatar}></img>
|
||||
<p>{worker.name}</p>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
<div className="workers_box">
|
||||
<span className="exit" onClick={() => setActive(false)}></span>
|
||||
<span>{tiket.code}</span>
|
||||
<p className="workers__creator">Создатель : {tiket.creator}</p>
|
||||
<div>
|
||||
{workers.map((worker, index) => {
|
||||
return (
|
||||
<div className="worker" key={index}>
|
||||
<img src={worker.avatar}></img>
|
||||
<p>{worker.name}</p>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
|
||||
<div className="add-worker moreItems">
|
||||
<button>+</button>
|
||||
<span>Добавить участников</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="add-worker moreItems">
|
||||
<button>+</button>
|
||||
<span>Добавить участников</span>
|
||||
<div className="workers_box-middle">
|
||||
<div className="time">
|
||||
<img src={watch}></img>
|
||||
<span>Длительность : </span>
|
||||
<p>{"8:30:22"}</p>
|
||||
</div>
|
||||
|
||||
<button className="start">
|
||||
Начать делать <img src={arrow}></img>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div className="time">
|
||||
<img src={watch}></img>
|
||||
<span>Длительность : </span>
|
||||
<p>{"8:30:22"}</p>
|
||||
<div className="workers_box-bottom">
|
||||
<div>
|
||||
<img src={edit}></img>
|
||||
<p>редактировать</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={link}></img>
|
||||
<p>ссылка на проект</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={archive}></img>
|
||||
<p>в архив</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={del}></img>
|
||||
<p>удалить</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button className="start">
|
||||
Начать делать <img src={arrow}></img>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -30,46 +30,35 @@
|
||||
margin: 26px 0 0 21px;
|
||||
|
||||
.title-project {
|
||||
color: #1458dd;
|
||||
font-family: "LabGrotesque", sans-serif;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 700;
|
||||
font-size: 16px;
|
||||
font-size: 22px;
|
||||
line-height: 32px;
|
||||
|
||||
&__category {
|
||||
margin-right: 17px;
|
||||
}
|
||||
|
||||
&__menu {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 110px;
|
||||
|
||||
p {
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
color: #252c32;
|
||||
margin: 0 30px 0 0;
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__task {
|
||||
margin-top: 22px;
|
||||
margin-top: -5px;
|
||||
padding: 18px;
|
||||
|
||||
button {
|
||||
img {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-family: "Inter", sans-serif;
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
line-height: 24px;
|
||||
|
||||
color: #1a1919;
|
||||
}
|
||||
}
|
||||
@@ -93,12 +82,23 @@
|
||||
flex-direction: row;
|
||||
margin: 29px 0 0 -5px;
|
||||
|
||||
.comment {
|
||||
width: 100px;
|
||||
.tasks {
|
||||
justify-content: space-evenly;
|
||||
|
||||
button {
|
||||
width: 180px;
|
||||
height: 40px;
|
||||
background: #52b709;
|
||||
border-radius: 44px;
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 32px;
|
||||
border: none;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.comment,
|
||||
.tasks,
|
||||
.file {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -107,7 +107,61 @@
|
||||
.file {
|
||||
justify-content: space-between;
|
||||
margin-left: 20px;
|
||||
width: 70px;
|
||||
|
||||
button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: white;
|
||||
width: 166px;
|
||||
height: 40px;
|
||||
border: 0.5px solid #1458dd;
|
||||
border-radius: 44px;
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 32px;
|
||||
color: #1458dd;
|
||||
|
||||
img {
|
||||
margin-right: 9px;
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
margin: 0 3px 0 11px;
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
line-height: 15px;
|
||||
color: #6e7c87;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__input {
|
||||
margin: 20px 0 20px 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
width: 438px;
|
||||
height: 40px;
|
||||
background: #f1f1f1;
|
||||
border-radius: 44px;
|
||||
|
||||
input {
|
||||
width: 80%;
|
||||
background: inherit;
|
||||
border: none;
|
||||
outline: none;
|
||||
padding-left: 30px;
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 32px;
|
||||
border-radius: 44px;
|
||||
}
|
||||
|
||||
img {
|
||||
cursor: pointer;
|
||||
margin-right: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -115,14 +169,12 @@
|
||||
.workers {
|
||||
position: relative;
|
||||
border-left: 1px solid #f1f1f1;
|
||||
width: 300px;
|
||||
padding: 40px;
|
||||
|
||||
.exit {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 22px;
|
||||
right: 31px;
|
||||
top: 35px;
|
||||
right: 40px;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
@@ -224,5 +276,31 @@
|
||||
color: #807777;
|
||||
}
|
||||
}
|
||||
|
||||
&_box {
|
||||
padding: 25px 85px 40px 40px;
|
||||
border-bottom: 1px solid #f1f1f1;
|
||||
|
||||
&-middle {
|
||||
padding: 0px 40px 25px 40px;
|
||||
border-bottom: 1px solid #f1f1f1;
|
||||
}
|
||||
|
||||
&-bottom {
|
||||
padding: 40px 0 75px 56px;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 38px;
|
||||
|
||||
div {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
p {
|
||||
margin: 0 0 0 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user