Refactor file structure

This commit is contained in:
MaxOvs19 2024-02-09 15:49:39 +03:00
parent 2ab994b439
commit 6d4eebfbd4
15 changed files with 532 additions and 510 deletions

12
package-lock.json generated
View File

@ -49,7 +49,7 @@
"semver": "7.3.2", "semver": "7.3.2",
"slick-carousel": "^1.8.1", "slick-carousel": "^1.8.1",
"sweetalert2": "^11.4.8", "sweetalert2": "^11.4.8",
"ts-loader": "^9.4.2" "ts-loader": "^9.5.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.20.12", "@babel/core": "^7.20.12",
@ -23194,7 +23194,6 @@
"version": "0.7.4", "version": "0.7.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
"integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
"dev": true,
"engines": { "engines": {
"node": ">= 8" "node": ">= 8"
} }
@ -24250,14 +24249,15 @@
"integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA=="
}, },
"node_modules/ts-loader": { "node_modules/ts-loader": {
"version": "9.4.2", "version": "9.5.1",
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz",
"integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==",
"dependencies": { "dependencies": {
"chalk": "^4.1.0", "chalk": "^4.1.0",
"enhanced-resolve": "^5.0.0", "enhanced-resolve": "^5.0.0",
"micromatch": "^4.0.0", "micromatch": "^4.0.0",
"semver": "^7.3.4" "semver": "^7.3.4",
"source-map": "^0.7.4"
}, },
"engines": { "engines": {
"node": ">=12.0.0" "node": ">=12.0.0"

View File

@ -45,7 +45,7 @@
"semver": "7.3.2", "semver": "7.3.2",
"slick-carousel": "^1.8.1", "slick-carousel": "^1.8.1",
"sweetalert2": "^11.4.8", "sweetalert2": "^11.4.8",
"ts-loader": "^9.4.2" "ts-loader": "^9.5.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.20.12", "@babel/core": "^7.20.12",

View File

@ -138,8 +138,6 @@ const App = () => {
element={<PartnerEmployees />} element={<PartnerEmployees />}
/> />
</Route> </Route>
<Route exact path="profile-candidate/:id"> <Route exact path="profile-candidate/:id">
<Route index element={<ProfileCandidate />} /> <Route index element={<ProfileCandidate />} />
</Route> </Route>

View File

@ -25,7 +25,7 @@ import { useNotification } from "@hooks/useNotification";
import FileTracker from "@components/FileTracker/FileTracker"; import FileTracker from "@components/FileTracker/FileTracker";
import AcceptModal from "@components/Modal/AcceptModal/AcceptModal"; import AcceptModal from "@components/Modal/AcceptModal/AcceptModal";
import TrackerModal from "@components/Modal/Tracker/TrackerModal/TrackerModal"; import TrackerModal from "@components/Modal/Tracker/TrackerModal/TrackerModal";
import TrackerTaskComment from "@components/TrackerTaskComment/TrackerTaskComment"; import TrackerTaskComment from "@components/TrackerComponents/TrackerTaskComment/TrackerTaskComment";
import archive from "assets/icons/archive.svg"; import archive from "assets/icons/archive.svg";
import arrow from "assets/icons/arrows/arrowStart.png"; import arrow from "assets/icons/arrows/arrowStart.png";

View File

@ -29,7 +29,7 @@ import AcceptModal from "@components/Modal/AcceptModal/AcceptModal";
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";
import TrackerTaskComment from "@components/TrackerTaskComment/TrackerTaskComment"; import TrackerTaskComment from "@components/TrackerComponents/TrackerTaskComment/TrackerTaskComment";
import arrow from "assets/icons/arrows/arrowCalendar.png"; import arrow from "assets/icons/arrows/arrowCalendar.png";
import arrowStart from "assets/icons/arrows/arrowStart.png"; import arrowStart from "assets/icons/arrows/arrowStart.png";

View File

@ -0,0 +1,130 @@
import React, { useEffect, useState } from "react";
import { useSelector } from "react-redux";
import { getProjects } from "@redux/projectsTrackerSlice";
import { caseOfNum } from "@utils/helper";
import { Loader } from "@components/Common/Loader/Loader";
import archiveTrackerProjects from "assets/icons/archiveTrackerProjects.svg";
import arrowViewReport from "assets/icons/arrows/arrowViewReport.svg";
import search from "assets/icons/serchIcon.png";
import mockAvatar from "assets/images/avatarMok.png";
import ArchiveTableTracker from "../ArchiveTableTracker/ArchiveTableTracker";
import "./archive.scss";
const Archive = ({
loader,
allCompletedTasks,
projects,
filterCompleteTasks,
setFilterCompleteTasks
}) => {
function filterArchiveTasks(e) {
setFilterCompleteTasks(
allCompletedTasks.filter((item) => {
if (!e.target.value) {
return item;
}
if (
item?.title.toLowerCase().startsWith(e.target.value.toLowerCase()) ||
item?.description
.toLowerCase()
.startsWith(e.target.value.toLowerCase())
) {
return item;
}
})
);
}
return (
<>
<div className="archive__tasks">
<div className="archive__title">
<h3>Архив задач:</h3>
<p>
{`${filterCompleteTasks.length}
${caseOfNum(filterCompleteTasks.length, "tasks")}`}
</p>
<div className="archive__tasks-period">
<div className="buttons-month">
<button>
<img src={arrowViewReport} alt="<"></img>
</button>
<button>
<img src={arrowViewReport} alt=">"></img>
</button>
</div>
<div className="month-period">
<h2>Сентябрь,</h2>
<h3>2023</h3>
</div>
</div>
<div className="archive__tasks__search">
<img src={search} alt="search" />
<input
type="text"
placeholder="Найти задачу"
onChange={(event) => filterArchiveTasks(event)}
/>
</div>
</div>
{loader && <Loader style="green" />}
<ArchiveTableTracker
loader={loader}
filterCompleteTasks={filterCompleteTasks}
/>
</div>
<div className="archive__projects">
<div className="archive__projects-title">
<h3>Архив проектов:</h3>
<p>
{`${projects?.filter((project) => project.status === 10).length}
${caseOfNum(
projects?.filter((project) => project.status === 10).length,
"projects"
)}`}
</p>
</div>
<div className="archive__tasksWrapper">
{Boolean(
projects?.filter((project) => project.status === 10).length
) ? (
projects?.map((project, index) => {
return project.status === 10 ? (
<div className="archive__completeTask-project" key={index}>
<div className="archive__completeTask__description">
<p className="project-title-archive">{project.name}</p>
<p className="date">{project.date}</p>
</div>
<div className="archive__completeTask__creator">
<img src={mockAvatar} alt="#" />
<div className="creator-title">
<h4>Создатель проекта:</h4>
<p>{"Василий Тарасов"}</p>
</div>
</div>
</div>
) : (
""
);
})
) : (
<div className="archive__noItem-project">
<img src={archiveTrackerProjects} alt="#" />
<p>В архиве проектов нет</p>
</div>
)}
</div>
</div>
</>
);
};
export default Archive;

View File

@ -0,0 +1,382 @@
.archive {
&__title {
padding-bottom: 8px;
display: flex;
align-items: center;
color: #000;
min-height: 48px;
h3 {
font-weight: 700;
font-size: 18px;
line-height: 32px;
margin-bottom: 0;
@media (max-width: 590px) {
font-size: 15px;
}
}
p {
margin: 0 0 0 10px;
font-weight: 300;
font-size: 18px;
@media (max-width: 590px) {
font-size: 15px;
}
}
@media (max-width: 450px) {
flex-wrap: wrap;
}
}
&__tasksWrapper {
margin-top: 20px;
display: flex;
flex-direction: column;
row-gap: 15px;
overflow-y: auto;
margin-right: -16px;
padding-right: 10px;
&::-webkit-scrollbar {
width: 4px;
background: 0 0;
box-shadow: 0 0 14px rgba(0, 0, 0, 0.04);
border-radius: 20px;
}
&::-webkit-scrollbar {
width: 4px;
border-radius: 20px;
}
&::-webkit-scrollbar-thumb {
background: #cbd9f9;
border-radius: 20px;
}
&::-webkit-scrollbar-track {
background: #c5c0c6;
border-radius: 20px;
}
}
&__completeTask {
display: flex;
justify-content: space-between;
align-items: center;
cursor: pointer;
background: #f1f1f1;
border-radius: 12px;
padding: 12px 15px 7px 16px;
p {
max-width: 420px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin-bottom: 0;
color: #111112;
}
.completeTask__title {
font-weight: 700;
font-size: 18px;
line-height: 32px;
}
&__time {
p {
color: #000;
font-size: 14px;
font-style: normal;
}
}
&__info {
display: flex;
align-items: center;
img {
width: 32px;
height: 32px;
}
&__project {
margin-left: 17px;
span {
color: #807777;
font-weight: 500;
font-size: 10px;
}
p {
color: #1a1919;
font-weight: 500;
font-size: 14px;
line-height: 24px;
text-decoration: line-through;
}
}
}
&-project {
background: #f1f1f1;
width: 328px;
max-width: 328px;
border-radius: 8px;
display: flex;
flex-direction: column;
padding: 23px 23px 23px 33px;
transition: 0.4s;
margin-bottom: 15px;
.project-title-archive {
width: 274px;
max-width: 274px;
color: #111112;
font-size: 16px;
font-style: normal;
font-weight: 700;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
&:hover {
cursor: pointer;
transform: scale(0.99);
box-shadow: 4px 4px 8px 0px rgba(34, 60, 80, 0.11);
transition: 0.4s;
}
}
&__description {
width: 270px;
max-width: 270px;
font-size: 14px;
font-weight: 500;
.date {
font-weight: 500;
font-size: 14px;
line-height: 24px;
color: #6f6f6f;
p {
overflow: hidden;
max-width: 260px;
max-height: 120px;
text-overflow: ellipsis;
}
}
}
&__creator {
display: flex;
align-items: center;
gap: 13px;
img {
width: 31.366px;
height: 29px;
}
h4 {
color: #5b6871;
font-size: 10px;
font-style: normal;
font-weight: 400;
}
p {
color: #2d4a17;
font-size: 13px;
font-style: normal;
font-weight: 500;
}
}
@media (max-width: 740px) {
flex-direction: column;
padding: 10px 20px;
}
@media (max-width: 650px) {
background-color: white;
}
}
&__tasks {
padding-right: 15px;
@media (max-width: 1100px) {
width: 100%;
}
&-period {
display: flex;
align-items: center;
margin-left: 73px;
.buttons-month {
display: flex;
gap: 34px;
button {
width: 30px;
height: 30px;
background-color: #8dc63f;
border-radius: 15px;
border: none;
img {
width: 14px;
height: 14px;
}
&:first-child {
transform: rotate(-180deg);
}
}
}
.month-period {
display: flex;
flex-direction: row;
align-items: center;
margin-left: 62px;
h2 {
color: #1458dd;
}
h3 {
color: #252c32;
font-size: 18px;
font-weight: 700;
margin-left: 5px;
}
}
}
&__search {
margin-left: auto;
padding: 6px 12px;
display: flex;
align-items: center;
background: #ffffff;
border: 1px solid #dde2e4;
box-shadow: 0px 1px 2px rgba(16, 24, 40, 0.05);
border-radius: 6px;
max-width: 300px;
width: 100%;
&:focus-within {
border: 1px solid #0000004d;
}
@media (max-width: 590px) {
max-width: 230px;
}
@media (max-width: 500px) {
max-width: 150px;
}
@media (max-width: 450px) {
margin-left: 0;
max-width: none;
}
input {
width: 100%;
padding-left: 10px;
outline: none;
border: none;
font-weight: 400;
font-size: 14px;
line-height: 24px;
}
img {
width: 14px;
height: 14px;
}
}
}
&__projects {
display: flex;
flex-direction: column;
@media (max-width: 1100px) {
width: 100%;
min-height: auto;
}
&-title {
background: #e1fccf;
display: flex;
align-items: center;
height: 66px;
border-radius: 12px;
margin: 25px 0 0 0;
padding-left: 15px;
color: #000;
font-style: normal;
h3 {
font-size: 16px;
font-weight: 700;
margin: 0 5px 0 0;
}
p {
font-size: 16px;
font-weight: 300;
}
}
}
&__noItem {
padding: 23px 0 19px;
color: #6f6f6f;
p {
font-size: 17px;
font-style: normal;
font-weight: 700;
padding-left: 15px;
}
@media (max-width: 650px) {
background-color: white;
}
&-project {
background: #f1f1f1;
width: 328px;
height: 108px;
border-radius: 8px;
display: flex;
gap: 21px;
padding: 23px;
align-items: center;
p {
width: 105px;
color: #6f6f6f;
font-size: 16px;
font-style: normal;
font-weight: 700;
}
img {
margin-left: 10px;
}
}
}
}

View File

@ -7,7 +7,7 @@ import { urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { getCorrectDate } from "@components/Calendar/calendarHelper"; import { getCorrectDate } from "@components/Calendar/calendarHelper";
import TrackerTaskSubComment from "@components/TrackerTaskComment/TrackerTaskComment"; import TrackerTaskSubComment from "@components/TrackerComponents/TrackerTaskComment/TrackerTaskComment";
import del from "assets/icons/delete.svg"; import del from "assets/icons/delete.svg";
import edit from "assets/icons/edit.svg"; import edit from "assets/icons/edit.svg";

View File

@ -23,7 +23,6 @@ import {
} from "@redux/projectsTrackerSlice"; } from "@redux/projectsTrackerSlice";
import { urlForLocal } from "@utils/helper"; import { urlForLocal } from "@utils/helper";
import { caseOfNum } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
@ -39,7 +38,7 @@ import TrackerModal from "@components/Modal/Tracker/TrackerModal/TrackerModal";
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";
import TrackerSelectColumn from "@components/TrackerSelectColumn/TrackerSelectColumn"; import TrackerSelectColumn from "@components/TrackerComponents/TrackerSelectColumn/TrackerSelectColumn";
import arrow from "assets/icons/arrows/arrowCalendar.png"; import arrow from "assets/icons/arrows/arrowCalendar.png";
import arrowDown from "assets/icons/arrows/selectArrow.png"; import arrowDown from "assets/icons/arrows/selectArrow.png";

View File

@ -9,8 +9,6 @@ import {
setToggleTab setToggleTab
} from "@redux/projectsTrackerSlice"; } from "@redux/projectsTrackerSlice";
import { caseOfNum } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import BaseButton from "@components/Common/BaseButton/BaseButton"; import BaseButton from "@components/Common/BaseButton/BaseButton";
@ -20,19 +18,17 @@ import TrackerModal from "@components/Modal/Tracker/TrackerModal/TrackerModal";
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";
import ProjectTicket from "@components/ProjectTicket/ProjectTicket";
import AllTaskTableTracker from "@components/TrackerComponents/AllTaskTableTracker/AllTaskTableTracker"; import AllTaskTableTracker from "@components/TrackerComponents/AllTaskTableTracker/AllTaskTableTracker";
import ArchiveTableTracker from "@components/TrackerComponents/ArchiveTableTracker/ArchiveTableTracker"; import Archive from "@components/TrackerComponents/Archive/Archive";
import ProjectTicket from "@components/TrackerComponents/ProjectTicket/ProjectTicket";
import addProjectImg from "assets/icons/addProjectImg.svg"; import addProjectImg from "assets/icons/addProjectImg.svg";
import archiveTrackerProjects from "assets/icons/archiveTrackerProjects.svg";
import arrowViewReport from "assets/icons/arrows/arrowViewReport.svg"; import arrowViewReport from "assets/icons/arrows/arrowViewReport.svg";
import filterIcon from "assets/icons/filterIcon.svg"; import filterIcon from "assets/icons/filterIcon.svg";
import search from "assets/icons/serchIcon.png"; import search from "assets/icons/serchIcon.png";
import project from "assets/icons/trackerProject.svg"; import project from "assets/icons/trackerProject.svg";
import tasks from "assets/icons/trackerTasks.svg"; import tasks from "assets/icons/trackerTasks.svg";
import archive from "assets/images/archiveIcon.png"; import archive from "assets/images/archiveIcon.png";
import mockAvatar from "assets/images/avatarMok.png";
import downloadExcel from "assets/images/downloadExcel.svg"; import downloadExcel from "assets/images/downloadExcel.svg";
import noProjects from "assets/images/noProjects.png"; import noProjects from "assets/images/noProjects.png";
import statusTimeTask from "assets/images/statusTimeTask.svg"; import statusTimeTask from "assets/images/statusTimeTask.svg";
@ -106,24 +102,6 @@ export const Tracker = () => {
); );
} }
function filterArchiveTasks(e) {
setFilterCompleteTasks(
allCompletedTasks.filter((item) => {
if (!e.target.value) {
return item;
}
if (
item.title.toLowerCase().startsWith(e.target.value.toLowerCase()) ||
item.description
.toLowerCase()
.startsWith(e.target.value.toLowerCase())
) {
return item;
}
})
);
}
return ( return (
<div className="tracker"> <div className="tracker">
<ProfileHeader /> <ProfileHeader />
@ -328,95 +306,13 @@ export const Tracker = () => {
: "tracker__tabs__content__projects" : "tracker__tabs__content__projects"
} }
> >
<div className="archive__tasks"> <Archive
<div className="archive__title"> projects={projects}
<h3>Архив задач:</h3> loader={loader}
<p> filterCompleteTasks={filterCompleteTasks}
{`${filterCompleteTasks.length} allCompletedTasks={allCompletedTasks}
${caseOfNum(filterCompleteTasks.length, "tasks")}`} setFilterCompleteTasks={setFilterCompleteTasks}
</p> />
<div className="archive__tasks-period">
<div className="buttons-month">
<button>
<img src={arrowViewReport} alt="<"></img>
</button>
<button>
<img src={arrowViewReport} alt=">"></img>
</button>
</div>
<div className="month-period">
<h2>Сентябрь,</h2>
<h3>2023</h3>
</div>
</div>
<div className="archive__tasks__search">
<img src={search} alt="search" />
<input
type="text"
placeholder="Найти задачу"
onChange={(event) => filterArchiveTasks(event)}
/>
</div>
</div>
{loader && <Loader style="green" />}
<ArchiveTableTracker
loader={loader}
filterCompleteTasks={filterCompleteTasks}
/>
</div>
<div className="archive__projects">
<div className="archive__projects-title">
<h3>Архив проектов:</h3>
<p>
{`${
projects?.filter((project) => project.status === 10).length
}
${caseOfNum(
projects?.filter((project) => project.status === 10)
.length,
"projects"
)}`}
</p>
</div>
<div className="archive__tasksWrapper">
{Boolean(
projects?.filter((project) => project.status === 10).length
) ? (
projects?.map((project, index) => {
return project.status === 10 ? (
<div
className="archive__completeTask-project"
key={index}
>
<div className="archive__completeTask__description">
<p className="project-title-archive">
{project.name}
</p>
<p className="date">{project.date}</p>
</div>
<div className="archive__completeTask__creator">
<img src={mockAvatar} alt="#" />
<div className="creator-title">
<h4>Создатель проекта:</h4>
<p>{"Василий Тарасов"}</p>
</div>
</div>
</div>
) : (
""
);
})
) : (
<div className="archive__noItem-project">
<img src={archiveTrackerProjects} alt="#" />
<p>В архиве проектов нет</p>
</div>
)}
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1513,389 +1513,6 @@
margin: 0 auto; margin: 0 auto;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.archive {
&__title {
padding-bottom: 8px;
display: flex;
align-items: center;
color: #000;
min-height: 48px;
h3 {
font-weight: 700;
font-size: 18px;
line-height: 32px;
margin-bottom: 0;
@media (max-width: 590px) {
font-size: 15px;
}
}
p {
margin: 0 0 0 10px;
font-weight: 300;
font-size: 18px;
@media (max-width: 590px) {
font-size: 15px;
}
}
@media (max-width: 450px) {
flex-wrap: wrap;
}
}
&__tasksWrapper {
margin-top: 20px;
display: flex;
flex-direction: column;
row-gap: 15px;
overflow-y: auto;
margin-right: -16px;
padding-right: 10px;
&::-webkit-scrollbar {
width: 4px;
background: 0 0;
box-shadow: 0 0 14px rgba(0, 0, 0, 0.04);
border-radius: 20px;
}
&::-webkit-scrollbar {
width: 4px;
border-radius: 20px;
}
&::-webkit-scrollbar-thumb {
background: #cbd9f9;
border-radius: 20px;
}
&::-webkit-scrollbar-track {
background: #c5c0c6;
border-radius: 20px;
}
}
&__completeTask {
display: flex;
justify-content: space-between;
align-items: center;
cursor: pointer;
background: #f1f1f1;
border-radius: 12px;
padding: 12px 15px 7px 16px;
p {
max-width: 420px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin-bottom: 0;
color: #111112;
}
.completeTask__title {
font-weight: 700;
font-size: 18px;
line-height: 32px;
}
&__time {
p {
color: #000;
font-size: 14px;
font-style: normal;
}
}
&__info {
display: flex;
align-items: center;
img {
width: 32px;
height: 32px;
}
&__project {
margin-left: 17px;
span {
color: #807777;
font-weight: 500;
font-size: 10px;
}
p {
color: #1a1919;
font-weight: 500;
font-size: 14px;
line-height: 24px;
text-decoration: line-through;
}
}
}
&-project {
background: #f1f1f1;
width: 328px;
max-width: 328px;
border-radius: 8px;
display: flex;
flex-direction: column;
padding: 23px 23px 23px 33px;
transition: 0.4s;
margin-bottom: 15px;
.project-title-archive {
width: 274px;
max-width: 274px;
color: #111112;
font-size: 16px;
font-style: normal;
font-weight: 700;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
&:hover {
cursor: pointer;
transform: scale(0.99);
box-shadow: 4px 4px 8px 0px rgba(34, 60, 80, 0.11);
transition: 0.4s;
}
}
&__description {
width: 270px;
max-width: 270px;
font-size: 14px;
font-weight: 500;
.date {
font-weight: 500;
font-size: 14px;
line-height: 24px;
color: #6f6f6f;
p {
overflow: hidden;
max-width: 260px;
max-height: 120px;
text-overflow: ellipsis;
}
}
}
&__creator {
display: flex;
align-items: center;
gap: 13px;
img {
width: 31.366px;
height: 29px;
}
h4 {
color: #5b6871;
font-size: 10px;
font-style: normal;
font-weight: 400;
}
p {
color: #2d4a17;
font-size: 13px;
font-style: normal;
font-weight: 500;
}
}
@media (max-width: 740px) {
flex-direction: column;
padding: 10px 20px;
}
@media (max-width: 650px) {
background-color: white;
}
}
&__tasks {
padding-right: 15px;
@media (max-width: 1100px) {
width: 100%;
}
&-period {
display: flex;
align-items: center;
margin-left: 73px;
.buttons-month {
display: flex;
gap: 34px;
button {
width: 30px;
height: 30px;
background-color: #8dc63f;
border-radius: 15px;
border: none;
img {
width: 14px;
height: 14px;
}
&:first-child {
transform: rotate(-180deg);
}
}
}
.month-period {
display: flex;
flex-direction: row;
align-items: center;
margin-left: 62px;
h2 {
color: #1458dd;
}
h3 {
color: #252c32;
font-size: 18px;
font-weight: 700;
margin-left: 5px;
}
}
}
&__search {
margin-left: auto;
padding: 6px 12px;
display: flex;
align-items: center;
background: #ffffff;
border: 1px solid #dde2e4;
box-shadow: 0px 1px 2px rgba(16, 24, 40, 0.05);
border-radius: 6px;
max-width: 300px;
width: 100%;
&:focus-within {
border: 1px solid #0000004d;
}
@media (max-width: 590px) {
max-width: 230px;
}
@media (max-width: 500px) {
max-width: 150px;
}
@media (max-width: 450px) {
margin-left: 0;
max-width: none;
}
input {
width: 100%;
padding-left: 10px;
outline: none;
border: none;
font-weight: 400;
font-size: 14px;
line-height: 24px;
}
img {
width: 14px;
height: 14px;
}
}
}
&__projects {
display: flex;
flex-direction: column;
@media (max-width: 1100px) {
width: 100%;
min-height: auto;
}
&-title {
background: #e1fccf;
display: flex;
align-items: center;
height: 66px;
border-radius: 12px;
margin: 25px 0 0 0;
padding-left: 15px;
color: #000;
font-style: normal;
h3 {
font-size: 16px;
font-weight: 700;
margin: 0 5px 0 0;
}
p {
font-size: 16px;
font-weight: 300;
}
}
}
&__noItem {
padding: 23px 0 19px;
color: #6f6f6f;
p {
font-size: 17px;
font-style: normal;
font-weight: 700;
padding-left: 15px;
}
@media (max-width: 650px) {
background-color: white;
}
&-project {
background: #f1f1f1;
width: 328px;
height: 108px;
border-radius: 8px;
display: flex;
gap: 21px;
padding: 23px;
align-items: center;
p {
width: 105px;
color: #6f6f6f;
font-size: 16px;
font-style: normal;
font-weight: 700;
}
img {
margin-left: 10px;
}
}
}
}
} }
} }