Compare commits

...

20 Commits

Author SHA1 Message Date
Mikola
1576b23215 choose project 2024-02-15 15:37:15 +03:00
Mikola
0880d27aea choose project 2024-02-15 15:36:13 +03:00
adc80d4cb0 Merge pull request 'trackerTask' (#20) from trackerTask into main
Reviewed-on: #20
2024-02-15 15:24:19 +03:00
Victor Batischev
65ca1c32ff Merge branch 'main' of https://git.itguild.info/apuc/guild_front 2024-02-15 14:29:35 +03:00
Victor Batischev
26b27129fd footer layout 2024-02-15 14:29:00 +03:00
8525445e18 - 2024-02-15 13:30:44 +03:00
954f696044 Merge branch 'main' of https://git.itguild.info/apuc/guild_front
-
2024-02-15 13:30:13 +03:00
181bbc834a - 2024-02-15 13:26:44 +03:00
e2bce6fd38 add mobile burger-menu 2024-02-15 13:25:57 +03:00
Victor Batischev
42cae241f2 fix 2024-02-14 19:32:51 +03:00
Victor Batischev
140adb0051 pages rename 2024-02-14 19:32:13 +03:00
Victor Batischev
0fc8f68c79 font family 2024-02-14 18:46:53 +03:00
Victor Batischev
795f92fe61 styles 2024-02-14 18:39:47 +03:00
Victor Batischev
59a279f924 Merge branch 'main' of https://git.itguild.info/apuc/guild_front 2024-02-14 16:34:35 +03:00
Victor Batischev
2268e6e281 layout rework in progress 2024-02-14 16:34:12 +03:00
4ea80eb460 Merge pull request 'trackerTask' (#19) from trackerTask into main
Reviewed-on: #19
2024-02-14 16:27:29 +03:00
Victor Batischev
12dd238c13 start footer rework 2024-02-14 16:22:15 +03:00
Victor Batischev
ef6d8f4331 rework footer layout 2024-02-14 16:09:09 +03:00
Victor Batischev
97813c875c employee flex container 2024-02-14 15:40:58 +03:00
2e0f6d24a0 Merge pull request 'trackerTask' (#18) from trackerTask into main
Reviewed-on: #18
2024-02-14 15:00:33 +03:00
93 changed files with 971 additions and 783 deletions

View File

@ -1,63 +1,64 @@
import "bootstrap/dist/css/bootstrap.min.css";
import React from "react"; import React from "react";
import { useSelector } from "react-redux";
import { import {
BrowserRouter as Router,
Route,
Routes,
Navigate, Navigate,
Route,
BrowserRouter as Router,
Routes
} from "react-router-dom"; } from "react-router-dom";
import { getNotification } from "@redux/outstaffingSlice"; import { getNotification } from "@redux/outstaffingSlice";
import Auth from "./pages/Auth/Auth"; import { AuthForCandidate } from "@pages/AuthForCandidate/AuthForCandidate";
import CatalogSpecialists from "@pages/CatalogSpecialists/CatalogSpecialists"; import CatalogSpecialists from "@pages/CatalogSpecialists/CatalogSpecialists";
import { TrackerIntro } from "@pages/TrackerIntro/TrackerIntro"
import { CompanyInfo } from "@pages/CompanyInfo/CompanyInfo"; import { CompanyInfo } from "@pages/CompanyInfo/CompanyInfo";
import { TrackerAuth } from "@pages/TrackerAuth/TrackerAuth"; import { FrequentlyAskedQuestion } from "@pages/FrequentlyAskedQuestion/FrequentlyAskedQuestion";
import { TrackerRegistration } from "@pages/TrackerRegistration/TrackerRegistration"; import { FrequentlyAskedQuestions } from "@pages/FrequentlyAskedQuestions/FrequentlyAskedQuestions";
import Home from "./pages/Home/Home";
import Candidate from "./components/Candidate/Candidate";
import Calendar from "./components/Calendar/Calendar";
import ReportForm from "./components/ReportForm/ReportForm";
import FreeDevelopers from "./components/FreeDevelopers/FreeDevelopers";
import { TicketFullScreen } from "@components/Modal/Tracker/TicketFullScreen/TicketFullScreen";
import { ProfileCalendar } from "@components/ProfileCalendar/ProfileCalendar";
import { RegistrationSetting } from "@pages/RegistrationSetting/RegistrationSetting";
import Article from "./pages/Article/Article";
import FormPage from "./pages/FormPage/FormPage";
import SingleReportPage from "./pages/SingleReportPage/SingleReportPage";
import { QuizPage } from "@pages/Quiz/QuizPage";
import { QuizReportPage } from "@pages/Quiz/QuizReportPage";
import { Profile } from "@pages/Profile/Profile";
import { Summary } from "@pages/Summary/Summary";
import { ViewReport } from "@pages/ViewReport/ViewReport";
import { Tracker } from "@pages/Tracker/Tracker";
import { Payouts } from "@pages/Payouts/Payouts";
import { PartnerSettings } from "@pages/PartnerSettings/PartnerSettings";
import { PartnerRequests } from "@pages/PartnerRequests/PartnerRequests";
import { PartnerAddRequest } from "@pages/PartnerAddRequest/PartnerAddRequest"; import { PartnerAddRequest } from "@pages/PartnerAddRequest/PartnerAddRequest";
import { PartnerBid } from "@pages/PartnerBid/PartnerBid"; import { PartnerBid } from "@pages/PartnerBid/PartnerBid";
import { PartnerCategories } from "@pages/PartnerСategories/PartnerСategories";
import { PartnerTreaties } from "@pages/PartnerTreaties/PartnerTreaties";
import { PartnerEmployees } from "@pages/PartnerEmployees/PartnerEmployees";
import { AuthForCandidate } from "@pages/AuthForCandidate/AuthForCandidate";
import { RegistrationForCandidate } from "@pages/RegistrationForCandidate/RegistrationForCandidate";
import { ProfileCandidate } from "@pages/ProfileCandidate/ProfileCandidate";
import { PartnerEmployeeReport } from "@pages/PartnerEmployeeReport/PartnerEmployeeReport"; import { PartnerEmployeeReport } from "@pages/PartnerEmployeeReport/PartnerEmployeeReport";
import { PassingTests } from "@pages/Quiz/PassingTests"; import { PartnerEmployees } from "@pages/PartnerEmployees/PartnerEmployees";
import Blog from "./pages/Blog/Blog"; import { PartnerRequests } from "@pages/PartnerRequests/PartnerRequests";
import Statistics from "@pages/Statistics/Statistics"; import { PartnerSettings } from "@pages/PartnerSettings/PartnerSettings";
import { PartnerTreaties } from "@pages/PartnerTreaties/PartnerTreaties";
import { PartnerCategories } from "@pages/PartnerСategories/PartnerСategories";
import { Payouts } from "@pages/Payouts/Payouts";
import { Profile } from "@pages/Profile/Profile";
import { ProfileCandidate } from "@pages/ProfileCandidate/ProfileCandidate";
import { ProjectTracker } from "@pages/ProjectTracker/ProjectTracker"; import { ProjectTracker } from "@pages/ProjectTracker/ProjectTracker";
import { FrequentlyAskedQuestions } from "@pages/FrequentlyAskedQuestions/FrequentlyAskedQuestions"; import { PassingTests } from "@pages/Quiz/PassingTests";
import { FrequentlyAskedQuestion } from "@pages/FrequentlyAskedQuestion/FrequentlyAskedQuestion"; import { QuizPage } from "@pages/Quiz/QuizPage";
import Notification from "@components/Notification/Notification"; import { QuizReportPage } from "@pages/Quiz/QuizReportPage";
import { useSelector } from "react-redux"; import { RegistrationForCandidate } from "@pages/RegistrationForCandidate/RegistrationForCandidate";
import { RegistrationSetting } from "@pages/RegistrationSetting/RegistrationSetting";
import Statistics from "@pages/Statistics/Statistics";
import { Summary } from "@pages/Summary/Summary";
import { Tracker } from "@pages/Tracker/Tracker";
import { TrackerAuth } from "@pages/TrackerAuth/TrackerAuth";
import { TrackerIntro } from "@pages/TrackerIntro/TrackerIntro";
import { TrackerRegistration } from "@pages/TrackerRegistration/TrackerRegistration";
import { ViewReport } from "@pages/ViewReport/ViewReport";
import { TicketFullScreen } from "@components/Modal/Tracker/TicketFullScreen/TicketFullScreen";
import Notification from "@components/Notification/Notification";
import { ProfileCalendar } from "@components/ProfileCalendar/ProfileCalendar";
import "./assets/global.scss";
import "./assets/fonts/stylesheet.css"; import "./assets/fonts/stylesheet.css";
import "bootstrap/dist/css/bootstrap.min.css"; import "./assets/global.scss";
import Calendar from "./components/Calendar/Calendar";
import Candidate from "./components/Candidate/Candidate";
import FreeDevelopers from "./components/FreeDevelopers/FreeDevelopers";
import ReportForm from "./components/ReportForm/ReportForm";
import Article from "./pages/Article/Article";
import Auth from "./pages/Auth/Auth";
import Blog from "./pages/Blog/Blog";
import FormPage from "./pages/FormPage/FormPage";
import Home from "./pages/Home/Home";
import SingleReportPage from "./pages/SingleReportPage/SingleReportPage";
const App = () => { const App = () => {
const notification = useSelector(getNotification) const notification = useSelector(getNotification);
return ( return (
<> <>
<Router> <Router>
@ -65,10 +66,22 @@ const App = () => {
<Route exact path="/auth" element={<Auth />} /> <Route exact path="/auth" element={<Auth />} />
<Route exact path="/tracker-intro" element={<TrackerIntro />} /> <Route exact path="/tracker-intro" element={<TrackerIntro />} />
<Route exact path="/tracker-auth" element={<TrackerAuth />} /> <Route exact path="/tracker-auth" element={<TrackerAuth />} />
<Route exact path="/tracker-registration" element={<TrackerRegistration />} /> <Route
exact
path="/tracker-registration"
element={<TrackerRegistration />}
/>
<Route exact path="/company" element={<CompanyInfo />} /> <Route exact path="/company" element={<CompanyInfo />} />
<Route exact path="/registration-setting" element={<RegistrationSetting />} /> <Route
<Route exact path="/catalog-specialists" element={<CatalogSpecialists />} /> exact
path="/registration-setting"
element={<RegistrationSetting />}
/>
<Route
exact
path="/catalog-specialists"
element={<CatalogSpecialists />}
/>
<Route exact path="/worker/:id" element={<FreeDevelopers />} /> <Route exact path="/worker/:id" element={<FreeDevelopers />} />
<Route <Route
@ -113,7 +126,11 @@ const App = () => {
<Route exact path="catalog" element={<Home />} /> <Route exact path="catalog" element={<Home />} />
<Route exact path="calendar" element={<ProfileCalendar />} /> <Route exact path="calendar" element={<ProfileCalendar />} />
<Route exact path="calendar/report" element={<ReportForm />} /> <Route exact path="calendar/report" element={<ReportForm />} />
<Route exact path="calendar/view/:date/:id" element={<ViewReport />} /> <Route
exact
path="calendar/view/:date/:id"
element={<ViewReport />}
/>
<Route exact path="summary" element={<Summary />} /> <Route exact path="summary" element={<Summary />} />
<Route exact path="tracker" element={<Tracker />} /> <Route exact path="tracker" element={<Tracker />} />
<Route exact path="statistics/:id" element={<Statistics />} /> <Route exact path="statistics/:id" element={<Statistics />} />
@ -124,7 +141,11 @@ const App = () => {
<Route exact path="requests-edit" element={<PartnerAddRequest />} /> <Route exact path="requests-edit" element={<PartnerAddRequest />} />
<Route exact path="requests-bid" element={<PartnerBid />} /> <Route exact path="requests-bid" element={<PartnerBid />} />
<Route exact path="employees" element={<PartnerCategories />} /> <Route exact path="employees" element={<PartnerCategories />} />
<Route exact path="employees/report/:uuid" element={<PartnerEmployeeReport />} /> <Route
exact
path="employees/report/:uuid"
element={<PartnerEmployeeReport />}
/>
<Route exact path="treaties" element={<PartnerTreaties />} /> <Route exact path="treaties" element={<PartnerTreaties />} />
<Route exact path="quiz"> <Route exact path="quiz">
<Route index element={<QuizPage />} /> <Route index element={<QuizPage />} />
@ -139,7 +160,6 @@ const App = () => {
/> />
</Route> </Route>
<Route exact path="profile-candidate/:id"> <Route exact path="profile-candidate/:id">
<Route index element={<ProfileCandidate />} /> <Route index element={<ProfileCandidate />} />
</Route> </Route>
@ -147,9 +167,7 @@ const App = () => {
<Route path="*" element={<Navigate to="/auth" replace />} /> <Route path="*" element={<Navigate to="/auth" replace />} />
</Routes> </Routes>
</Router> </Router>
{notification.show && {notification.show && <Notification />}
<Notification />
}
</> </>
); );
}; };

View File

@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import { getCorrectDate } from "@components/Calendar/calendarHelper"; import { getCorrectDate } from "@utils/calendarHelper";
import "./archiveTasksItem.scss"; import "./archiveTasksItem.scss";

View File

@ -11,9 +11,9 @@ import { LogoutButton } from "@components/LogoutButton/LogoutButton";
import rectangle from "assets/images/rectangle_secondPage.png"; import rectangle from "assets/images/rectangle_secondPage.png";
import { currentMonth } from "../../utils/calendarHelper";
import CalendarComponent from "./CalendarComponent"; import CalendarComponent from "./CalendarComponent";
import "./calendar.scss"; import "./calendar.scss";
import { currentMonth } from "./calendarHelper";
const Calendar = () => { const Calendar = () => {
if (localStorage.getItem("role_status") !== "18") { if (localStorage.getItem("role_status") !== "18") {
@ -79,8 +79,8 @@ const Calendar = () => {
</p> </p>
</div> </div>
</div> </div>
<Footer />
</section> </section>
<Footer />
</div> </div>
); );
}; };

View File

@ -6,8 +6,8 @@ import calendarIcon from "assets/icons/calendar.svg";
import ellipse from "assets/icons/ellipse.png"; import ellipse from "assets/icons/ellipse.png";
import rectangle from "assets/images/rectangle__calendar.png"; import rectangle from "assets/images/rectangle__calendar.png";
import { calendarHelper, currentMonthAndDay } from "../../utils/calendarHelper";
import "./calendarComponent.scss"; import "./calendarComponent.scss";
import { calendarHelper, currentMonthAndDay } from "./calendarHelper";
const CalendarComponent = ({ onSelect }) => { const CalendarComponent = ({ onSelect }) => {
const [value, setValue] = useState(moment()); const [value, setValue] = useState(moment());

View File

@ -1,6 +1,5 @@
.calendar { .calendar {
margin-bottom: 40px; margin-bottom: 40px;
font-family: "LabGrotesque", sans-serif;
&__header { &__header {
display: flex; display: flex;
@ -136,10 +135,6 @@
line-height: normal; line-height: normal;
} }
} }
footer {
margin-top: 2rem !important;
}
} }
@media (max-width: 575.98px) { @media (max-width: 575.98px) {

View File

@ -3,7 +3,6 @@
margin: 10px 0; margin: 10px 0;
background-color: #f9f9f9; background-color: #f9f9f9;
padding: 20px 30px; padding: 20px 30px;
font-family: "LabGrotesque", sans-serif;
&__header { &__header {
display: flex; display: flex;

View File

@ -233,8 +233,8 @@ const Candidate = () => {
)} )}
</div> </div>
</div> </div>
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -148,12 +148,6 @@
} }
} }
} }
footer {
margin-top: 2.5rem !important;
position: relative;
z-index: -2;
}
} }
@media (max-width: 375.98px) { @media (max-width: 375.98px) {

View File

@ -6,7 +6,6 @@
border-radius: 44px; border-radius: 44px;
color: white; color: white;
font-style: normal; font-style: normal;
font-family: "LabGrotesque", sans-serif;
border: none; border: none;
transition: 0.5s; transition: 0.5s;

View File

@ -18,7 +18,6 @@
} }
&__empty { &__empty {
font-family: "LabGrotesque", sans-serif;
font-style: normal; font-style: normal;
font-weight: 700; font-weight: 700;
font-size: 16px; font-size: 16px;

View File

@ -92,8 +92,8 @@ export const FreeDevelopers = () => {
</BaseButton> </BaseButton>
</div> </div>
</div> </div>
<Footer />
</div> </div>
<Footer />
</section> </section>
); );
}; };

View File

@ -1,5 +1,4 @@
.free-dev { .free-dev {
font-family: "LabGrotesque", sans-serif;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
background-color: #f1f1f1; background-color: #f1f1f1;

View File

@ -43,7 +43,7 @@ import send from "assets/icons/send.svg";
import watch from "assets/icons/watch.svg"; import watch from "assets/icons/watch.svg";
import avatarMok from "assets/images/avatarMok.png"; import avatarMok from "assets/images/avatarMok.png";
import { getCorrectDate } from "../../../Calendar/calendarHelper"; import { getCorrectDate } from "../../../../utils/calendarHelper";
import "./modalTicket.scss"; import "./modalTicket.scss";
registerLocale("ru", ru); registerLocale("ru", ru);

View File

@ -77,7 +77,6 @@
line-height: 32px; line-height: 32px;
color: #1458dd; color: #1458dd;
margin: 0; margin: 0;
font-family: "LabGrotesque", sans-serif;
} }
h2 { h2 {
@ -780,7 +779,6 @@
.react-datepicker__current-month { .react-datepicker__current-month {
font-size: 18px; font-size: 18px;
font-family: "LabGrotesque", sans-serif;
text-transform: capitalize; text-transform: capitalize;
} }
@ -823,7 +821,6 @@
.react-datepicker__day { .react-datepicker__day {
font-size: 16px; font-size: 16px;
width: 35px; width: 35px;
font-family: "LabGrotesque", sans-serif;
border-radius: 50px; border-radius: 50px;
padding: 7px; padding: 7px;
} }
@ -832,7 +829,6 @@
font-size: 18px; font-size: 18px;
width: 35px; width: 35px;
font-weight: 500; font-weight: 500;
font-family: "LabGrotesque", sans-serif;
} }
.react-datepicker__triangle { .react-datepicker__triangle {

View File

@ -9,6 +9,7 @@ import { Link, useNavigate, useParams } from "react-router-dom";
import { getProfileInfo } from "@redux/outstaffingSlice"; import { getProfileInfo } from "@redux/outstaffingSlice";
import { getBoarderLoader, setToggleTab } from "@redux/projectsTrackerSlice"; import { getBoarderLoader, setToggleTab } from "@redux/projectsTrackerSlice";
import { getCorrectDate } from "@utils/calendarHelper";
import { import {
backendImg, backendImg,
caseOfNum, caseOfNum,
@ -21,7 +22,6 @@ import { apiRequest } from "@api/request";
import { useNotification } from "@hooks/useNotification"; import { useNotification } from "@hooks/useNotification";
import { getCorrectDate } from "@components/Calendar/calendarHelper";
import { Footer } from "@components/Common/Footer/Footer"; import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import FileTracker from "@components/FileTracker/FileTracker"; import FileTracker from "@components/FileTracker/FileTracker";

View File

@ -22,13 +22,13 @@ import {
setProjectBoardFetch setProjectBoardFetch
} from "@redux/projectsTrackerSlice"; } from "@redux/projectsTrackerSlice";
import { getCorrectDate } from "@utils/calendarHelper";
import { getCorrectRequestDate, urlForLocal } from "@utils/helper"; import { getCorrectRequestDate, urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { useNotification } from "@hooks/useNotification"; import { useNotification } from "@hooks/useNotification";
import { getCorrectDate } from "@components/Calendar/calendarHelper";
import BaseButton from "@components/Common/BaseButton/BaseButton"; import BaseButton from "@components/Common/BaseButton/BaseButton";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import ModalLayout from "@components/Common/ModalLayout/ModalLayout"; import ModalLayout from "@components/Common/ModalLayout/ModalLayout";

View File

@ -172,7 +172,8 @@
.executor { .executor {
display: flex; display: flex;
justify-content: space-between; column-gap: 5px;
align-items: center;
&:hover { &:hover {
font-weight: 600; font-weight: 600;
} }
@ -650,7 +651,6 @@
.react-datepicker__current-month { .react-datepicker__current-month {
font-size: 18px; font-size: 18px;
font-family: "LabGrotesque", sans-serif;
text-transform: capitalize; text-transform: capitalize;
padding-bottom: 8px; padding-bottom: 8px;
} }
@ -694,7 +694,6 @@
.react-datepicker__day { .react-datepicker__day {
font-size: 16px; font-size: 16px;
width: 35px; width: 35px;
font-family: "LabGrotesque", sans-serif;
border-radius: 50px; border-radius: 50px;
padding: 7px; padding: 7px;
} }
@ -703,7 +702,6 @@
font-size: 18px; font-size: 18px;
width: 35px; width: 35px;
font-weight: 500; font-weight: 500;
font-family: "LabGrotesque", sans-serif;
} }
.react-datepicker__triangle { .react-datepicker__triangle {

View File

@ -1,7 +1,3 @@
body {
font-family: "LabGrotesque", sans-serif !important;
}
.container { .container {
max-width: 1160px !important; max-width: 1160px !important;
} }
@ -9,7 +5,6 @@ body {
background: #f1f1f1; background: #f1f1f1;
height: 100%; height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
padding-top: 23px; padding-top: 23px;
&__title { &__title {

View File

@ -12,11 +12,11 @@ import {
setRequestDate setRequestDate
} from "@redux/reportSlice"; } from "@redux/reportSlice";
import { getReports } from "@utils/calendarHelper";
import { urlForLocal } from "@utils/helper"; import { urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { getReports } from "@components/Calendar/calendarHelper";
import { Footer } from "@components/Common/Footer/Footer"; import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import { Navigation } from "@components/Navigation/Navigation"; import { Navigation } from "@components/Navigation/Navigation";

View File

@ -11,11 +11,6 @@ import {
setSendRequest setSendRequest
} from "@redux/reportSlice"; } from "@redux/reportSlice";
import { getCorrectYYMMDD } from "@utils/helper";
import { apiRequest } from "@api/request";
import "@components/Calendar/calendarComponent.scss";
import { import {
calendarHelper, calendarHelper,
correctDay, correctDay,
@ -23,7 +18,12 @@ import {
getCorrectDate, getCorrectDate,
getReports, getReports,
hourOfNum hourOfNum
} from "@components/Calendar/calendarHelper"; } from "@utils/calendarHelper";
import { getCorrectYYMMDD } from "@utils/helper";
import { apiRequest } from "@api/request";
import "@components/Calendar/calendarComponent.scss";
import BaseButton from "@components/Common/BaseButton/BaseButton"; import BaseButton from "@components/Common/BaseButton/BaseButton";
import arrow from "assets/icons/arrows/arrowCalendar.png"; import arrow from "assets/icons/arrows/arrowCalendar.png";

View File

@ -1,12 +1,15 @@
.profile__calendar { .profile__calendar {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px; max-width: 1160px;
margin-top: 23px; margin-top: 23px;
display: flex;
flex-direction: column;
flex: 1;
@media (max-width: 570px) { @media (max-width: 570px) {
margin-top: 0; margin-top: 0;

View File

@ -4,22 +4,82 @@ import { NavLink, useNavigate } from "react-router-dom";
import { auth, getProfileInfo, setProfileInfo } from "@redux/outstaffingSlice"; import { auth, getProfileInfo, setProfileInfo } from "@redux/outstaffingSlice";
import { urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import avatarMok from "assets/images/avatarMok.png";
import "./profileHeader.scss"; import "./profileHeader.scss";
export const ProfileHeader = () => { export const ProfileHeader = () => {
const navigate = useNavigate(); const navigate = useNavigate();
const dispatch = useDispatch(); const dispatch = useDispatch();
const profileInfo = useSelector(getProfileInfo); const profileInfo = useSelector(getProfileInfo);
const currentPath = window.location.pathname;
const [user] = useState( const [user] = useState(
localStorage.getItem("role_status") === "18" ? "partner" : "developer" localStorage.getItem("role_status") === "18" ? "partner" : "developer"
); );
const [isLoggingOut, setIsLoggingOut] = useState(false); const [isLoggingOut, setIsLoggingOut] = useState(false);
const [navInfo] = useState({
developer: [
{
path: "/summary",
name: "Резюме"
},
{
path: "/calendar",
name: "Отчеты"
},
{
path: "/tracker",
name: "Трекер"
},
{
path: "/payouts",
name: "Выплаты"
},
{
path: "/quiz",
name: "Тесты"
},
{
path: "/settings",
name: "Настройки"
}
],
partner: [
{
path: "/catalog",
name: "Каталог"
},
{
path: "/requests",
name: "Запросы"
},
{
path: "/employees",
name: "Персонал"
},
{
path: "/tracker",
name: "Трекер"
},
{
path: "/treaties",
name: "Договоры"
},
{
path: "/settings",
name: "Настройки"
}
]
});
useEffect(() => { useEffect(() => {
if (!Object.keys(profileInfo).length) if (!Object.keys(profileInfo).length)
apiRequest(`/user/me`).then((profileInfo) => { apiRequest(`/user/me`).then((profileInfo) => {
@ -40,21 +100,85 @@ export const ProfileHeader = () => {
dispatch(setProfileInfo({})); dispatch(setProfileInfo({}));
}; };
const [active, setActive] = useState(false);
const toggleBar = () => {
if (active) {
setActive(false);
} else {
setActive(true);
}
};
return ( return (
<header className="profile-header"> <header className="profile-header">
<div className="profile-header__head"> <div className="auth-title">
<div className="profile-header__container"> <div className="text">
<NavLink to={"/profile"} className="profile-header__title"> <NavLink to={"/profile"} className="profile-header__title">
itguild. itguild.
<span> <span>
{user === "developer" ? "для разработчиков" : "для партнеров"} {user === "developer" ? "для разработчиков" : "для партнеров"}
</span> </span>
</NavLink> </NavLink>
<button onClick={handler} className="profile-header__logout"> <button onClick={handler} className="profile-header__logout">
{isLoggingOut ? <Loader /> : "Выйти"} {isLoggingOut ? <Loader /> : "Выйти"}
</button> </button>
<div className="burger" onClick={() => toggleBar()}>
<div
className={active ? "burger__line l1 change" : "burger__line"}
></div>
<div
className={active ? "burger__line l2 change" : "burger__line"}
></div>
<div
className={active ? "burger__line l3 change" : "burger__line"}
></div>
</div> </div>
</div> </div>
</div>
<div className={active ? "auth-body active" : "auth-body"}>
{/* <div className="auth-body__title">
<img src={ITguild}></img>
</div> */}
<nav className="auth-body__navigation">
<div className="profile-header__personal-info">
<h3 className="profile-header__personal-info-name">
{profileInfo?.fio ? profileInfo?.fio : profileInfo?.username}
</h3>
<NavLink end to={"/profile"}>
<img
src={
profileInfo?.photo
? urlForLocal(profileInfo.photo)
: avatarMok
}
className="profile-header__personal-info-avatar"
alt="avatar"
/>
</NavLink>
</div>
{navInfo[user].map((link, index) => {
return (
<NavLink
key={index}
end
to={link.path === "/Quiz" ? link.path : `/profile${link.path}`}
className={currentPath.includes(link.path) ? "active" : ""}
>
{link.name}
</NavLink>
);
})}
<button onClick={handler} className="profile-header__logout-burger">
{isLoggingOut ? <Loader /> : "Выйти"}
</button>
</nav>
</div>
</header> </header>
); );
}; };

View File

@ -1,13 +1,146 @@
.profile-header { .profile-header {
width: 100%; width: 100%;
height: 66px;
background: #e1fccf;
padding: 20px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
font-family: "LabGrotesque", sans-serif;
&__head { &__head {
background: #e1fccf; background: #e1fccf;
} }
.auth-title {
position: relative;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
height: 100%;
z-index: 9999;
max-width: 1160px;
width: 100%;
margin: 0 auto;
padding: 0 15px;
.text {
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
.burger {
display: none;
cursor: pointer;
@media (max-width: 414px) {
display: block;
}
&__line {
width: 32px;
border-radius: 33px;
height: 5px;
background-color: #333;
margin: 5px 0 0 27px;
transition: 0.4s;
}
.l1.change {
transform: rotate(-45deg) translate(-7px, 6px);
}
.l2.change {
opacity: 0;
}
.l3.change {
transform: rotate(45deg) translate(-8px, -8px);
}
}
}
}
&__info {
background: white;
}
.auth-body {
opacity: 0;
z-index: 99;
position: absolute;
top: 0;
right: 0;
height: 0;
width: 0;
overflow: hidden;
background: #e1fccf;
transition: 0.3s;
// @media (max-width: 414px) {
// display: block;
// }
&__title {
display: flex;
margin-top: 24px;
img {
width: 160px;
}
}
&__navigation {
margin-top: 28px;
padding: 0;
list-style: none;
font-size: 14px;
line-height: 20px;
display: flex;
flex-direction: column;
a {
padding: 10px 0 0 0;
}
a,
a:hover,
a:active {
color: #000000;
}
}
&__politic {
margin-top: 42px;
font-size: 14px;
line-height: 22px;
color: #000000;
}
&__contacts {
margin-top: 127px;
color: #000000;
h4 {
font-size: 20px;
line-height: 33px;
}
p {
font-size: 14px;
}
}
}
.auth-body.active {
padding: 40px 10px;
opacity: 1;
display: flex;
overflow: visible;
width: calc(100vw / 3);
transition: width 0.3s;
height: 100%;
flex-direction: column;
align-items: stretch;
}
&__container { &__container {
max-width: 1160px; max-width: 1160px;
padding: 0 15px; padding: 0 15px;
@ -15,7 +148,11 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
min-height: 50px; min-height: 66px;
@media (max-width: 414px) {
display: none;
}
} }
&__title { &__title {
@ -42,10 +179,19 @@
font-size: 16px; font-size: 16px;
line-height: 32px; line-height: 32px;
color: #000000; color: #000000;
@media (max-width: 414px) {
display: none;
}
} }
&__info { &__logout-burger {
background: #ffffff; background: none;
border: none;
font-weight: 500;
font-size: 16px;
line-height: 32px;
color: #000000;
} }
&__nav { &__nav {
@ -69,6 +215,7 @@
a.active { a.active {
color: #000000; color: #000000;
padding: 0;
} }
@media (max-width: 800px) { @media (max-width: 800px) {
@ -87,7 +234,10 @@
&__personal-info { &__personal-info {
display: flex; display: flex;
column-gap: 20px; column-gap: 20px;
flex-direction: row-reverse;
align-items: center; align-items: center;
justify-content: flex-end;
padding: 10px;
&-name { &-name {
margin-bottom: 0; margin-bottom: 0;
@ -103,6 +253,10 @@
} }
} }
a.active {
padding: 0;
}
&-avatar { &-avatar {
width: 37px; width: 37px;
height: 37px; height: 37px;

View File

@ -135,7 +135,7 @@ export const ProjectTicket = ({ project, index }) => {
<img src={edit}></img> <img src={edit}></img>
<p>редактировать</p> <p>редактировать</p>
</div> </div>
<div onClick={copyProjectLink(project.id)}> <div onClick={() => copyProjectLink(project.id)}>
<img src={link}></img> <img src={link}></img>
<p>скопировать ссылку</p> <p>скопировать ссылку</p>
</div> </div>

View File

@ -27,7 +27,7 @@ import {
getCorrectDate, getCorrectDate,
getCreatedDate, getCreatedDate,
hourOfNum hourOfNum
} from "../Calendar/calendarHelper"; } from "../../utils/calendarHelper";
import "./reportForm.scss"; import "./reportForm.scss";
registerLocale("ru", ru); registerLocale("ru", ru);

View File

@ -1,10 +1,13 @@
.report-form { .report-form {
background: #f1f1f1; background: #f1f1f1;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif; display: flex;
flex-direction: column;
.container { .container {
display: flex;
flex-direction: column;
flex: 1;
max-width: 1160px; max-width: 1160px;
margin-top: 23px; margin-top: 23px;
@ -486,7 +489,6 @@
.react-datepicker__current-month { .react-datepicker__current-month {
font-size: 14px; font-size: 14px;
font-family: "LabGrotesque", sans-serif;
text-transform: capitalize; text-transform: capitalize;
} }
@ -498,13 +500,11 @@
.react-datepicker__day { .react-datepicker__day {
font-size: 14px; font-size: 14px;
width: 35px; width: 35px;
font-family: "LabGrotesque", sans-serif;
} }
.react-datepicker__day-name { .react-datepicker__day-name {
font-size: 14px; font-size: 14px;
width: 35px; width: 35px;
font-family: "LabGrotesque", sans-serif;
} }
.react-datepicker__triangle { .react-datepicker__triangle {

View File

@ -8,13 +8,14 @@ import {
setSendRequest setSendRequest
} from "@redux/reportSlice"; } from "@redux/reportSlice";
import { apiRequest } from "@api/request";
import { import {
getCorrectDate, getCorrectDate,
getCreatedDate, getCreatedDate,
hourOfNum hourOfNum
} from "@components/Calendar/calendarHelper"; } from "@utils/calendarHelper";
import { apiRequest } from "@api/request";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import "./shortReport.scss"; import "./shortReport.scss";

View File

@ -16,7 +16,6 @@
@media (max-width: 1440px) { @media (max-width: 1440px) {
width: 80px; width: 80px;
} }
}
.auth-title { .auth-title {
position: relative; position: relative;
@ -197,3 +196,4 @@
height: 705px; height: 705px;
} }
} }
}

View File

@ -2,11 +2,11 @@ import ClassicEditor from "@ckeditor/ckeditor5-build-classic";
import { CKEditor } from "@ckeditor/ckeditor5-react"; import { CKEditor } from "@ckeditor/ckeditor5-react";
import React, { useState } from "react"; import React, { useState } from "react";
import { getCorrectDate } from "@utils/calendarHelper";
import { urlForLocal } from "@utils/helper"; import { urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { getCorrectDate } from "@components/Calendar/calendarHelper";
import TrackerTaskSubComment from "@components/TrackerTaskComment/TrackerTaskComment"; import TrackerTaskSubComment from "@components/TrackerTaskComment/TrackerTaskComment";
import del from "assets/icons/delete.svg"; import del from "assets/icons/delete.svg";

View File

@ -6,15 +6,13 @@ body {
margin: 0; margin: 0;
padding: 0; padding: 0;
box-sizing: border-box; box-sizing: border-box;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', font-family: "LabGrotesque", sans-serif !important;
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
code { code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
monospace; monospace;
} }

View File

@ -91,10 +91,10 @@ const Auth = () => {
</div> </div>
</div> </div>
</div> </div>
<Footer />
</div> </div>
</div> </div>
<SideBar /> <SideBar />
<Footer />
</section> </section>
); );
}; };

View File

@ -1,10 +1,10 @@
.auth-partners { .auth-partners {
font-family: "LabGrotesque", sans-serif; background-color: #f1f1f1;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
&__background { &__background {
background-color: #f1f1f1;
position: relative; position: relative;
} }

View File

@ -115,7 +115,7 @@ export const AuthForCandidate = () => {
resetModal={setModalReset} resetModal={setModalReset}
title="Войти, если есть доступ" title="Войти, если есть доступ"
description="Если вы получили доступ, пройдя description="Если вы получили доступ, пройдя
2 шага для входа или хотите узнать 2 шага для входа, или хотите узнать
свои результаты в кабинете" свои результаты в кабинете"
/> />
<div className="auth-candidate__start"> <div className="auth-candidate__start">

View File

@ -1,5 +1,4 @@
.auth-candidate { .auth-candidate {
font-family: "LabGrotesque", sans-serif;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
background-color: #f1f1f1; background-color: #f1f1f1;
@ -62,8 +61,4 @@
} }
} }
} }
footer {
margin-top: 10px;
}
} }

View File

@ -90,12 +90,10 @@ export const Blog = () => {
); );
})} })}
</div> </div>
<div className="blog__load-more"> <div className="blog__load-more">
<button>Загрузить еще</button> <button>Загрузить еще</button>
</div> </div>
</div> </div>
<Footer /> <Footer />
</div> </div>
); );

View File

@ -200,9 +200,9 @@ const CatalogSpecialists = () => {
); );
})} })}
</div> </div>
<Footer />
</div> </div>
<SideBar /> <SideBar />
<Footer />
</section> </section>
); );
}; };

View File

@ -1,8 +1,8 @@
.catalog-specialists { .catalog-specialists {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__wrapper { &__wrapper {
padding-top: 24px; padding-top: 24px;

View File

@ -103,8 +103,8 @@ export const CompanyInfo = () => {
</div> </div>
</div> </div>
</div> </div>
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,6 +1,5 @@
.company-info { .company-info {
&__content { &__content {
font-family: "LabGrotesque", sans-serif;
background-color: #f1f1f1; background-color: #f1f1f1;
padding-top: 60px; padding-top: 60px;

View File

@ -96,8 +96,8 @@ const FormPage = () => {
</div> </div>
</div> </div>
</div> </div>
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -124,10 +124,6 @@
right: 2.5rem; right: 2.5rem;
} }
.form-page footer {
margin-top: 6rem !important;
}
@media (max-width: 991px) { @media (max-width: 991px) {
.form-page { .form-page {
&__separator { &__separator {

View File

@ -2,9 +2,7 @@
.frequently-asked-question { .frequently-asked-question {
background: #f5f5f5; background: #f5f5f5;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@ -1,8 +1,6 @@
.frequently-asked-questions { .frequently-asked-questions {
background: #f5f5f5; background: #f5f5f5;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@ -69,9 +69,9 @@ const Home = () => {
<h2 className="catalog__title">Каталог специалистов</h2> <h2 className="catalog__title">Каталог специалистов</h2>
<Outstaffing /> <Outstaffing />
<Description onLoadMore={loadMore} isLoadingMore={isLoadingMore} /> <Description onLoadMore={loadMore} isLoadingMore={isLoadingMore} />
</div>
</div>
<Footer /> <Footer />
</div>
</div>
</> </>
); );
}; };

View File

@ -1,8 +1,8 @@
.partner-add-request { .partner-add-request {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px; max-width: 1160px;
@ -314,10 +314,6 @@
} }
} }
footer {
margin-top: 70px;
}
&__info { &__info {
background: #ffffff; background: #ffffff;
border-radius: 12px; border-radius: 12px;

View File

@ -9,11 +9,11 @@ import {
setPartnerRequestInfo setPartnerRequestInfo
} from "@redux/outstaffingSlice"; } from "@redux/outstaffingSlice";
import { getCorrectDate } from "@utils/calendarHelper";
import { urlForLocal } from "@utils/helper"; import { urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { getCorrectDate } from "@components/Calendar/calendarHelper";
import { Footer } from "@components/Common/Footer/Footer"; import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import ModalLayout from "@components/Common/ModalLayout/ModalLayout"; import ModalLayout from "@components/Common/ModalLayout/ModalLayout";

View File

@ -1,11 +1,14 @@
.partner-bid { .partner-bid {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
@ -536,8 +539,4 @@
background: #52b709; background: #52b709;
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -5,9 +5,10 @@ import { Navigate, useParams } from "react-router-dom";
import { getRequestDates, setRequestDate } from "@redux/reportSlice"; import { getRequestDates, setRequestDate } from "@redux/reportSlice";
import { getReports } from "@utils/calendarHelper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { getReports } from "@components/Calendar/calendarHelper";
import { Footer } from "@components/Common/Footer/Footer"; import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import { Navigation } from "@components/Navigation/Navigation"; import { Navigation } from "@components/Navigation/Navigation";

View File

@ -1,10 +1,14 @@
.employee-report { .employee-report {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
} }

View File

@ -1,8 +1,8 @@
.partner-employees { .partner-employees {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__title { &__title {
color: #000000; color: #000000;
@ -168,14 +168,13 @@
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
margin-top: 0; margin-top: 0;
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -1,11 +1,14 @@
.partner-requests { .partner-requests {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
@ -352,8 +355,4 @@
} }
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -1,8 +1,8 @@
.settings { .settings {
background: #f1f1f1; display: flex;
height: 100%; flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif; background: #f1f1f1;
.info-personal__title { .info-personal__title {
color: #000000; color: #000000;
@ -12,7 +12,9 @@
} }
&__page { &__page {
min-height: 750px; display: flex;
flex-direction: column;
flex: 1;
max-width: 1160px !important; max-width: 1160px !important;
margin-top: 23px; margin-top: 23px;
} }
@ -129,7 +131,10 @@
} }
.partner-settings { .partner-settings {
margin-bottom: 110px; display: flex;
flex-direction: column;
flex: 1;
margin-bottom: 10px;
&__body { &__body {
display: flex; display: flex;

View File

@ -1,8 +1,8 @@
.treaties { .treaties {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__title { &__title {
font-weight: 700; font-weight: 700;
@ -379,14 +379,13 @@
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
margin-top: 0; margin-top: 0;
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -1,8 +1,8 @@
.partner-categories { .partner-categories {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__title { &__title {
color: #000000; color: #000000;
@ -145,14 +145,13 @@
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
margin-top: 0; margin-top: 0;
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -1,13 +1,18 @@
import React from "react"; import React from "react";
import { Footer } from "@components/Common/Footer/Footer";
import { Navigation } from "@components/Navigation/Navigation"; import { Navigation } from "@components/Navigation/Navigation";
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
import "./payouts.scss";
export const Payouts = () => { export const Payouts = () => {
return ( return (
<div className="payouts"> <div className="payouts">
<ProfileHeader /> <ProfileHeader />
<Navigation /> <Navigation />
<div className="container"></div>
<Footer />
</div> </div>
); );
}; };

View File

@ -0,0 +1,13 @@
.payouts {
display: flex;
flex-direction: column;
min-height: 100vh;
background: #f1f1f1;
.container {
max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
}
}

View File

@ -1,8 +1,8 @@
.profile { .profile {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__title { &__title {
font-weight: 700; font-weight: 700;
@ -48,92 +48,17 @@
@media (max-width: 1175px) { @media (max-width: 1175px) {
justify-content: center; justify-content: center;
} }
// .item {
// max-width: 353px;
// width: 100%;
// padding: 35px 45px 15px 30px;
// background: #FFFFFF;
// border-radius: 12px;
// text-decoration: none;
// cursor: pointer;
// transition: all 0.3s ease;
// &:hover {
// box-shadow: 6px 5px 20px rgb(87 98 80 / 21%);
// transform: scale(1.02);
// }
// @media (max-width: 1175px) {
// width: 48%;
// max-width: none;
// }
// @media (max-width: 925px) {
// width: 100%;
// padding: 15px 25px;
// }
// &__about {
// display: flex;
// column-gap: 20px;
// align-items: center;
// margin-bottom: 30px;
// @media (max-width: 925px) {
// margin-bottom: 15px;
// }
// h3 {
// color: #000000;
// font-weight: 500;
// font-size: 18px;
// line-height: 22px;
// max-width: 125px;
// margin-bottom: 0;
// }
// }
// &__info {
// display: flex;
// justify-content: space-between;
// align-items: center;
// p {
// font-weight: 700;
// font-size: 12px;
// line-height: 20px;
// color: #000000;
// margin-bottom: 0;
// span {
// color: #52B709;
// font-weight: 700;
// }
// }
// &Link {
// width: 48px;
// height: 48px;
// background: #DDEEC6;
// border-radius: 50px;
// display: flex;
// justify-content: center;
// align-items: center;
// }
// }
// }
} }
.container { .container {
max-width: 1160px; max-width: 1160px;
margin-top: 23px; margin-top: 23px;
display: flex;
flex-direction: column;
flex: 1;
@media (max-width: 570px) { @media (max-width: 570px) {
margin-top: 0; margin-top: 0;
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -1,13 +1,12 @@
.profile-candidate { .profile-candidate {
background: #F1F1F1; background: #f1f1f1;
height: 100%;
min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
//max-width: 1200px; min-height: 100vh;
&__container { &__container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
margin: 0 auto 42px auto; margin: 0 auto 42px auto;
flex: 1 1 auto; flex: 1 1 auto;
padding: 0 15px; padding: 0 15px;
@ -42,14 +41,11 @@
margin: 0 0 27px 0; margin: 0 0 27px 0;
//max-width: 1160px; //max-width: 1160px;
} }
} }
.instructions-candidate { .instructions-candidate {
flex: 1 1 auto; flex: 1 1 auto;
background: #FFFFFF; background: #ffffff;
border-radius: 12px; border-radius: 12px;
&__container { &__container {
padding: 40px 18px 32px 36px; padding: 40px 18px 32px 36px;
@ -67,14 +63,13 @@
&:not(:last-child) { &:not(:last-child) {
margin: 0 0 30px 0; margin: 0 0 30px 0;
} }
} }
&__icon { &__icon {
width: 25px; width: 25px;
height: 30px; height: 30px;
} }
&__title { &__title {
color: #52B709; color: #52b709;
font-weight: 900; font-weight: 900;
font-size: 14px; font-size: 14px;
line-height: 171%; line-height: 171%;
@ -127,7 +122,7 @@
} }
&__decor { &__decor {
background: #52B709; background: #52b709;
border-radius: 12px; border-radius: 12px;
height: 8px; height: 8px;
width: 60%; width: 60%;
@ -137,9 +132,8 @@
.bottom-head { .bottom-head {
margin: 0 0 40px 0; margin: 0 0 40px 0;
height: 66px; height: 66px;
background: #FFF; background: #fff;
&__container { &__container {
max-width: 1160px;
margin: 0 auto; margin: 0 auto;
padding: 0 15px; padding: 0 15px;
height: 100%; height: 100%;

View File

@ -58,7 +58,7 @@ import accept from "assets/images/accept.png";
import archive from "assets/images/archiveIcon.png"; import archive from "assets/images/archiveIcon.png";
import avatarMok from "assets/images/avatarMok.png"; import avatarMok from "assets/images/avatarMok.png";
import { getCorrectDate } from "../../components/Calendar/calendarHelper"; import { getCorrectDate } from "../../utils/calendarHelper";
export const ProjectTracker = () => { export const ProjectTracker = () => {
const dispatch = useDispatch(); const dispatch = useDispatch();

View File

@ -1,13 +1,13 @@
.quiz-page { .quiz-page {
background: #f1f1f1; background: #f1f1f1;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
&__container { &__container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
margin: 23px auto 42px auto; margin: 23px auto 42px auto;
flex: 1 1 auto; flex: 1 1 auto;
width: 100%; width: 100%;
@ -64,9 +64,7 @@
.interjacent-page-quiz { .interjacent-page-quiz {
background: #f1f1f1; background: #f1f1f1;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -80,6 +78,7 @@
&__container { &__container {
max-width: 1160px; max-width: 1160px;
display: flex;
margin: 23px auto 42px auto; margin: 23px auto 42px auto;
flex: 1 1 auto; flex: 1 1 auto;
width: 100%; width: 100%;
@ -96,14 +95,14 @@
.passing-tests-page { .passing-tests-page {
background: #f1f1f1; background: #f1f1f1;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
&__container { &__container {
max-width: 1160px; max-width: 1160px;
flex-direction: column;
display: flex;
margin: 23px auto 42px auto; margin: 23px auto 42px auto;
flex: 1 1 auto; flex: 1 1 auto;
width: 100%; width: 100%;
@ -136,14 +135,14 @@
.quiz-report-page { .quiz-report-page {
background: #f1f1f1; background: #f1f1f1;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
&__container { &__container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
margin: 23px auto 42px auto; margin: 23px auto 42px auto;
flex: 1 1 auto; flex: 1 1 auto;
width: 100%; width: 100%;

View File

@ -1,5 +1,4 @@
.registration-candidate { .registration-candidate {
font-family: "LabGrotesque", sans-serif;
position: relative; position: relative;
background-color: #f1f1f1; background-color: #f1f1f1;
@ -188,8 +187,4 @@
} }
} }
} }
footer {
margin-top: 80px;
}
} }

View File

@ -212,8 +212,8 @@ export const RegistrationSetting = () => {
</button> </button>
)} )}
</div> </div>
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,6 +1,5 @@
.registration-setting { .registration-setting {
&__content { &__content {
font-family: "LabGrotesque", sans-serif;
background-color: #f1f1f1; background-color: #f1f1f1;
color: #000000; color: #000000;
padding: 50px 0 0; padding: 50px 0 0;

View File

@ -6,6 +6,7 @@ import { setToggleTab } from "@redux/projectsTrackerSlice";
import { copyProjectLink } from "@utils/helper"; import { copyProjectLink } from "@utils/helper";
import { Footer } from "@components/Common/Footer/Footer";
import { Navigation } from "@components/Navigation/Navigation"; import { Navigation } from "@components/Navigation/Navigation";
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs"; import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
@ -71,7 +72,6 @@ const Statistics = () => {
/> />
<h2 className="tracker__title">Управление проектами с трекером</h2> <h2 className="tracker__title">Управление проектами с трекером</h2>
</div> </div>
</div>
<div className="tracker__tabs"> <div className="tracker__tabs">
<div className="tracker__tabs__head"> <div className="tracker__tabs__head">
<Link <Link
@ -105,7 +105,10 @@ const Statistics = () => {
<div className="statistics-header__menu"> <div className="statistics-header__menu">
<h1>Статистика проекта</h1> <h1>Статистика проекта</h1>
<img src={link} alt="#" /> <img src={link} alt="#" />
<span className="return-text" onClick={copyProjectLink("62")}> <span
className="return-text"
onClick={() => copyProjectLink("62")}
>
ссылка на проект ссылка на проект
</span> </span>
</div> </div>
@ -199,6 +202,8 @@ const Statistics = () => {
</div> </div>
</div> </div>
</div> </div>
<Footer />
</div>
); );
}; };

View File

@ -1,9 +1,15 @@
.statistics { .statistics {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
position: relative; .container {
max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
}
&-header { &-header {
display: flex; display: flex;

View File

@ -1,8 +1,8 @@
.summary { .summary {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__content { &__content {
display: flex; display: flex;
@ -509,12 +509,11 @@
} }
} }
footer {
margin-top: 10px;
}
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {

View File

@ -1,8 +1,8 @@
.tracker { .tracker {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
position: relative; position: relative;
.container { .container {
@ -18,14 +18,6 @@
margin-top: 23px; margin-top: 23px;
} }
footer {
margin-top: 70px;
.row {
margin-right: 0px;
}
}
&__title { &__title {
font-weight: 700; font-weight: 700;
font-size: 22px; font-size: 22px;
@ -34,9 +26,9 @@
} }
&__tabs { &__tabs {
min-height: 600px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex: 1;
&__head { &__head {
display: flex; display: flex;

View File

@ -38,8 +38,8 @@ export const TrackerAuth = () => {
<ModalReset setModalReset={setModalReset} /> <ModalReset setModalReset={setModalReset} />
</ModalLayout> </ModalLayout>
)} )}
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,10 +1,16 @@
.tracker-auth { .tracker-auth {
&__content { display: flex;
font-family: "LabGrotesque", sans-serif; flex-direction: column;
min-height: 100vh;
background-color: #f1f1f1; background-color: #f1f1f1;
&__content {
display: flex;
flex-direction: column;
flex: 1;
color: #000000; color: #000000;
padding: 50px 0 0; padding: 50px 0 0;
min-height: 100vh;
@media (max-width: 1375px) { @media (max-width: 1375px) {
padding-top: 100px; padding-top: 100px;
@ -25,7 +31,7 @@
margin-bottom: 46px; margin-bottom: 46px;
color: #000000; color: #000000;
span { span {
color: #52B709; color: #52b709;
position: relative; position: relative;
img { img {
position: absolute; position: absolute;

View File

@ -102,8 +102,8 @@ export const TrackerIntro = () => {
</div> </div>
</div> </div>
</div> </div>
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,7 +1,6 @@
.tracker-intro { .tracker-intro {
&__content {
font-family: "LabGrotesque", sans-serif;
background-color: #f1f1f1; background-color: #f1f1f1;
&__content {
color: #000000; color: #000000;
@media (max-width: 1375px) { @media (max-width: 1375px) {

View File

@ -149,8 +149,8 @@ export const TrackerRegistration = () => {
/> />
</ModalLayout> </ModalLayout>
)} )}
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,6 +1,5 @@
.tracker-registration { .tracker-registration {
&__content { &__content {
font-family: "LabGrotesque", sans-serif;
background-color: #f1f1f1; background-color: #f1f1f1;
color: #000000; color: #000000;
padding: 50px 0 0; padding: 50px 0 0;

View File

@ -4,13 +4,14 @@ import { Link, useParams } from "react-router-dom";
import { setEditReport } from "@redux/reportSlice"; import { setEditReport } from "@redux/reportSlice";
import { apiRequest } from "@api/request";
import { import {
getCorrectDate, getCorrectDate,
getCreatedDate, getCreatedDate,
hourOfNum hourOfNum
} from "@components/Calendar/calendarHelper"; } from "@utils/calendarHelper";
import { apiRequest } from "@api/request";
import { Footer } from "@components/Common/Footer/Footer"; import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import { Navigation } from "@components/Navigation/Navigation"; import { Navigation } from "@components/Navigation/Navigation";
@ -269,8 +270,8 @@ export const ViewReport = () => {
)} )}
</div> </div>
)} )}
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,11 +1,14 @@
.view-report { .view-report {
background: #f1f1f1; background: #f1f1f1;
height: 100%; display: flex;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
@ -424,12 +427,4 @@
} }
} }
} }
footer {
margin-top: 70px;
@media (max-width: 575px) {
margin-top: 0;
}
}
} }

View File

@ -2,34 +2,33 @@ export function createMarkup(text) {
return { __html: text.split("</p>").join("</p>") }; return { __html: text.split("</p>").join("</p>") };
} }
// export function transformHtml(text) { export function transformHtml(text) {
// let startHtml = { let startHtml = {
// __html: text.split("<h3> || <h2>").join("<br><h2>").split("<br>"), __html: text.split("<h3> || <h2>").join("<br><h2>").split("<br>")
// }; };
// startHtml = startHtml.__html.filter( startHtml = startHtml.__html.filter(
// (el) => (el !== null && el !== "") || el === 0 (el) => (el !== null && el !== "") || el === 0
// ); );
// const finalHtml = startHtml.map( const finalHtml = startHtml.map(
// (item) => (item) =>
// `<div class='experience__block'> `<div class='experience__block'>
// <div class="summary__sections__head"> <div class="summary__sections__head">
// <h3>Описание опыта работы</h3> <h3>Описание опыта работы</h3>
// <button>Редактировать</button> <button>Редактировать</button>
// </div> </div>
// <div class="experience__content">${item.split("<h3>")[0]}</div> <div class="experience__content">${item.split("<h3>")[0]}</div>
// </div>` </div>`
// ); );
// return { __html: finalHtml.join("") }; return { __html: finalHtml.join("") };
// } }
//
// export const setToken = () => { export const setToken = () => {
// const url = new URL(window.location.href); const url = new URL(window.location.href);
// const urlT = url.searchParams.get("token"); const urlT = url.searchParams.get("token");
// urlT ? sessionStorage.setItem('token', 'Bearer ' + urlT) : ''; urlT ? sessionStorage.setItem("token", "Bearer " + urlT) : "";
// const tParam = urlT || sessionStorage.getItem('token'); const tParam = urlT || sessionStorage.getItem("token");
// return tParam ? {"Authorization": tParam} : false return tParam ? { Authorization: tParam } : false;
// };
// };
export const getToken = () => { export const getToken = () => {
const tParam = `Bearer ${localStorage.getItem("auth_token")}`; const tParam = `Bearer ${localStorage.getItem("auth_token")}`;