-
+
diff --git a/src/components/AddUseful/addUseful.module.scss b/src/components/AddUseful/addUseful.module.scss
index a1d737c..4d23da6 100644
--- a/src/components/AddUseful/addUseful.module.scss
+++ b/src/components/AddUseful/addUseful.module.scss
@@ -7,6 +7,7 @@
width: 680px;
height: 826px;
padding: 24px;
+ padding-top: 16px;
border-radius: 20px;
border: 0.33px solid var(--color-button-secondary, #EBEBEB);
background: var(--unnamed, #FFF);
@@ -14,6 +15,7 @@
}
.add_article {
+ font-family: Montserrat;
color: var(--light-text-text-primary, #000);
font-size: 20px;
font-style: normal;
@@ -41,10 +43,38 @@
outline: none
}
+.upload_container {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+
+}
+
+.upload {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ margin-left: 4px;
+ vertical-align: center;
+ padding: 9px 12px 11px 12px;
+ color: var(--color-black, #2C2D2E);
+ font: var(--font-body);
+ border-radius: 12px;
+ border: 1px solid var(--color-button-secondary, #EBEBEB);
+}
+
.preview_image {
- border: 0.5px solid var(--color-button-secondary, #EBEBEB);
- background: var(--color-background, #EBF1F4);
+ height: 36px;
+ width: 48px;
+ padding: 0px 15px;
+ gap: 4px;
+ border-radius: 12px;
+ border: 0.5px solid var(--color-accent-purple, #EBEBEB);
+ background: var(--unnamed, #FFF);
+ color: var(--color-accent-purple, #8A32E0);
outline: none;
+ font-size: 26px;
+ vertical-align: center;
}
.title {
@@ -70,8 +100,11 @@
outline: none
}
-.category {
-
+.delete_picture {
+ padding: 0 0 0 8px;
+ border-style: none;
+ background: none;
+ outline: none;
}
.url {
@@ -170,7 +203,7 @@
border-style: none;
background: none;
outline: none;
- margin-left: 284px;
+ margin-left: 241px;
padding: 0;
padding-top: 1px;
}
diff --git a/src/components/App/App.tsx b/src/components/App/App.tsx
index 864b793..35bc817 100644
--- a/src/components/App/App.tsx
+++ b/src/components/App/App.tsx
@@ -50,6 +50,7 @@ export const App = () => {
const [events, setEvents] = useState([]);
const currentUserInfo = useAppSelector(selectUserInfo);
+
const buttonCondition = useAppSelector(selectButtonConditions);
const role = useAppSelector(
(state) => state.currentUserSlice.currentUser.role
@@ -103,7 +104,7 @@ export const App = () => {
if (response.status === 200) {
setLoggedIn(true);
["/login", "/register"].includes(pathname)
- ? navigate("/")
+ ? navigate("/main")
: navigate(pathname);
}
await getUserInfo();
@@ -294,7 +295,6 @@ export const App = () => {
useEffect(() => {
handleEmployees();
}, [role]);
- //
function openTestAlertPopup() {
dispatch(
@@ -304,12 +304,11 @@ export const App = () => {
);
}
- //запрос мероприятий для вкладки мероприятия
+ // запрос мероприятий
async function fetchEvents() {
try {
if (role === "hr" || role === "chief" || role === "employee") {
const response = await Api.getEvents();
- // console.log(response)
setEvents(response.data.results);
}
} catch (err: any) {
@@ -319,7 +318,7 @@ export const App = () => {
useEffect(() => {
fetchEvents();
}, [role]);
- //
+
// отпрвка мероприятия
// async function postEvent() {
// try {
@@ -378,8 +377,9 @@ export const App = () => {
// получение уведомлений о тестах и мероприятиях с помощью WebSocket
useEffect(() => {
- const socket = new WebSocket(`${BASE_URL_WSS}/notifications?2`);
-
+ const socket = new WebSocket(
+ `${BASE_URL_WSS}/notifications?${String(currentUserInfo.id)}`
+ );
socket.onmessage = (event) => {
const newEvent = JSON.parse(event.data) as WebSocketMessage;
dispatch(addNotifications(newEvent));
@@ -389,7 +389,7 @@ export const App = () => {
socket.close();
}
};
- }, []);
+ }, [currentUserInfo]);
useEffect(() => {
if (currentUserInfo.id !== 0) {
diff --git a/src/components/Articles/Article/Article.tsx b/src/components/Articles/Article/Article.tsx
new file mode 100644
index 0000000..50bca3d
--- /dev/null
+++ b/src/components/Articles/Article/Article.tsx
@@ -0,0 +1,30 @@
+import styles from "./article.module.css";
+import {Card} from "@/types.ts";
+import {ReactElement} from "react";
+import {useNavigate} from "react-router-dom";
+import play from "../../../../public/play.svg";
+
+interface ArticleProps {
+ article: Card;
+}
+
+
+export const Article = ({article}: ArticleProps): ReactElement => {
+ const navigate = useNavigate();
+
+ return (
+
navigate(`/entries/${article.id}`)}>
+

+ {article.category.some((temp) => temp.id === 3)
+ ?
+
+ :
+ ""
+ }
+
{article.title}
+
+ {/*
{article.category[0].name}
*/}
+
+
+ );
+};
diff --git a/src/components/RightScreenMain/Articles/Article/article.module.css b/src/components/Articles/Article/article.module.css
similarity index 51%
rename from src/components/RightScreenMain/Articles/Article/article.module.css
rename to src/components/Articles/Article/article.module.css
index d30d9cc..8926f4c 100644
--- a/src/components/RightScreenMain/Articles/Article/article.module.css
+++ b/src/components/Articles/Article/article.module.css
@@ -1,10 +1,11 @@
.article {
position: relative;
display: flex;
+ box-sizing: border-box;
/* width: 47%; */
- max-width: 156px;
- height: 210px;
+ width: 156px;
+ height: 234px;
flex-direction: column;
align-items: flex-start;
justify-content: flex-start;
@@ -43,36 +44,6 @@
font: var(--font-caption);
}
-.article:last-of-type {
- flex-direction: column-reverse;
- justify-content: flex-end;
- padding: 9px;
- border: white 12px solid;
- border-radius: 24px;
- margin: 0;
- background: linear-gradient(90deg, rgb(85 69 168 / 80%) 0%, rgb(231 129 195 / 80%) 94.4%),
- linear-gradient(0deg, rgb(255 255 255 / 20%), rgb(255 255 255 / 20%));
- background-clip: border-box;
-}
-
-.article:last-of-type > .image {
- width: 45px;
- height: 35px;
- align-self: self-end;
- margin-top: 13px;
- margin-right: 14px;
-}
-
-.article:last-of-type > .title {
- margin: 34px 0 0;
- color: var(--color-white);
- font: var(--font-more);
-}
-
-.article:last-of-type > .container {
- display: none;
-}
-
.play {
position: absolute;
top: 44px;
@@ -83,7 +54,3 @@
color: #0c4128;
opacity: 0.8;
}
-
-.article:last-of-type > .play {
- display: none;
-}
diff --git a/src/components/Articles/Articles.tsx b/src/components/Articles/Articles.tsx
new file mode 100644
index 0000000..f77d7af
--- /dev/null
+++ b/src/components/Articles/Articles.tsx
@@ -0,0 +1,30 @@
+import {ReactElement} from "react";
+import styles from "./articles.module.css";
+import {Article} from "./Article/Article.tsx";
+import {Card} from "@/types.ts";
+import {useNavigate} from "react-router";
+
+interface ArticlesListProps {
+ articles: Card[];
+ title: string;
+}
+
+export const Articles = ({articles, title}: ArticlesListProps): ReactElement | null => {
+ const navigate = useNavigate();
+
+ if(articles && articles.length !== 0) {
+ return (
+
+
{title}
+
+ {articles.slice(0, 3).map((article, index) => (
+
+ ))}
+
+
+
+ );
+ } else {
+ return null;
+ }
+};
diff --git a/src/components/Articles/articles.module.css b/src/components/Articles/articles.module.css
new file mode 100644
index 0000000..651e90b
--- /dev/null
+++ b/src/components/Articles/articles.module.css
@@ -0,0 +1,34 @@
+.articles {
+ display: grid;
+
+ /* display: flex; */
+
+ /* flex-wrap: wrap; */
+ align-items: center;
+ margin: 16px 0 0;
+ gap: 17.33px;
+ grid-template-columns: repeat(4, 1fr);
+}
+
+.title {
+ margin: 0;
+ color: var(--color-black);
+ font: var(--font-h3);
+}
+
+.button {
+ width: 156px;
+ height: 234px;
+ padding-bottom: 68px;
+ border: 12px solid #fff;
+ border-radius: 20px;
+ background-image: url('./assets/articles-arrow-bg.svg'), url('./assets/articles-btn.jpg');
+ background-position: top 92px right 10px, center;
+ background-repeat: no-repeat no-repeat;
+ background-size: auto, cover;
+ color: #fff;
+ cursor: pointer;
+ font: var(--font-h4-alert);
+ text-align: left;
+}
+
diff --git a/src/components/Articles/assets/articles-arrow-bg.svg b/src/components/Articles/assets/articles-arrow-bg.svg
new file mode 100644
index 0000000..fc9c950
--- /dev/null
+++ b/src/components/Articles/assets/articles-arrow-bg.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/components/Articles/assets/articles-btn.jpg b/src/components/Articles/assets/articles-btn.jpg
new file mode 100644
index 0000000..82645ac
Binary files /dev/null and b/src/components/Articles/assets/articles-btn.jpg differ
diff --git a/src/components/CenterScreenMain/BurnoutLevel/BurnoutLevel.module.css b/src/components/BurnoutLevel/BurnoutLevel.module.css
similarity index 92%
rename from src/components/CenterScreenMain/BurnoutLevel/BurnoutLevel.module.css
rename to src/components/BurnoutLevel/BurnoutLevel.module.css
index bc133db..cd41073 100644
--- a/src/components/CenterScreenMain/BurnoutLevel/BurnoutLevel.module.css
+++ b/src/components/BurnoutLevel/BurnoutLevel.module.css
@@ -1,10 +1,11 @@
.container {
position: relative;
- max-width: 676px;
+ width: 676px;
+ /* max-width: 676px;
+ width: 100%; */
height: 188px;
padding: 16px 20px;
border-radius: 20px;
- margin-top: 32px;
background-color: white;
/* background-image: url("./burnoutLevel-TO_BE_DELETED.png");
diff --git a/src/components/CenterScreenMain/BurnoutLevel/BurnoutLevel.tsx b/src/components/BurnoutLevel/BurnoutLevel.tsx
similarity index 93%
rename from src/components/CenterScreenMain/BurnoutLevel/BurnoutLevel.tsx
rename to src/components/BurnoutLevel/BurnoutLevel.tsx
index 2d3e71b..bc0ecfa 100644
--- a/src/components/CenterScreenMain/BurnoutLevel/BurnoutLevel.tsx
+++ b/src/components/BurnoutLevel/BurnoutLevel.tsx
@@ -1,8 +1,8 @@
import styles from "./BurnoutLevel.module.css";
import { ResponsiveBar } from "@nivo/bar";
import { useState, useEffect } from "react";
-import { useAppSelector } from "@/store/hooks";
-import { selectBurnoutLevel } from "@/store/reducers/conditionsBurnout/conditionsBurnoutReducer";
+import { useAppSelector } from "@/store/hooks.ts";
+import { selectBurnoutLevel } from "@/store/reducers/conditionsBurnout/conditionsBurnoutReducer.ts";
import { DataBurnOutInterface, UserBurnoutLevel } from "@/types.ts";
import { useLocation } from "react-router";
@@ -30,7 +30,7 @@ export const BurnoutLevel = ({ burnOutData }: Props) => {
useEffect(() => {
if (burnOutData) {
setBurnoutValues(burnOutData.slice(0));
- } else if (pathname === "/" && burnoutLevel) {
+ } else if (pathname === "/main" && burnoutLevel) {
setBurnoutValues(burnoutLevel.slice(0));
}
}, [pathname, burnOutData, burnoutLevel]);
diff --git a/src/components/BurnoutTestBanner/BurnoutTestBanner.module.css b/src/components/BurnoutTestBanner/BurnoutTestBanner.module.css
index 9ab6a16..9d6335e 100644
--- a/src/components/BurnoutTestBanner/BurnoutTestBanner.module.css
+++ b/src/components/BurnoutTestBanner/BurnoutTestBanner.module.css
@@ -1,8 +1,10 @@
.container {
display: flex;
- max-width: 676px;
+ /*width: 65.7%;*/
+ width: 676px;
+ /* max-width: 676px; */
height: 148px;
- padding: 16px 16px 16px 20px;
+ padding: 0 0 0 20px;
border-radius: 20px;
background-color: var(--color-white);
gap: 20px;
@@ -10,33 +12,35 @@
.text-container {
display: flex;
- min-width: 500px;
+ max-width: 500px;
flex-direction: column;
- gap: 20px;
+ margin: 12px 0;
}
.text-top {
display: flex;
align-items: flex-end;
justify-content: space-between;
- margin-top: 8px;
+ margin-bottom: 12px;
}
.text-bottom {
display: flex;
- align-items: center;
+ flex-direction: column;
+ align-items: flex-start;
justify-content: space-between;
}
.text-heading {
margin: 0;
- font: var(--font-h1);
+ font: var(--font-h2);
}
.text-description {
- max-width: 290px;
+ /*max-width: 290px;*/
margin: 0;
font: var(--font-body);
+ margin-bottom: 12px;
}
.date-till {
@@ -50,16 +54,19 @@
}
.image {
- width: 100%;
+ width: 140px;
+ height: 140px;
+ margin-top: 6px;
+ padding-right: 4px;
}
.button {
display: flex;
- width: 161px;
- height: 36px;
+ width: 284px;
+ height: 40px;
align-items: center;
justify-content: center;
- padding: 10px 16px;
+ padding: 12px 18px;
border: 0;
border-radius: 16px;
background: var(--color-accent-purple);
diff --git a/src/components/BurnoutTestBanner/BurnoutTestBanner.module.scss b/src/components/BurnoutTestBanner/BurnoutTestBanner.module.scss
new file mode 100644
index 0000000..911aafb
--- /dev/null
+++ b/src/components/BurnoutTestBanner/BurnoutTestBanner.module.scss
@@ -0,0 +1,50 @@
+@import "@/shared/styles/mixins";
+
+.container {
+ display: flex;
+ justify-content: space-between;
+ @include size (676px, 148px);
+ padding: 14px 12px 16px 20px;
+ border-radius: 20px;
+ background-color: var(--color-white);
+ gap: 20px;
+}
+
+.text {
+ &-container {
+ @include flex-column;
+ width: 500px;
+ gap: 12px;
+ }
+ &-top {
+ display: flex;
+ align-items: flex-end;
+ justify-content: space-between;
+ }
+ &-bottom {
+ display: flex;
+ flex-direction: column;
+ }
+ &-heading {
+ margin: 0;
+ font: var(--font-h2);
+ color: var(--color-black);
+ }
+ &-description {
+ margin: 0 0 8px 0;
+ font: var(--font-body);
+ color: var(--color-black);
+ }
+}
+
+.image {
+ width: 100%;
+ &-container {
+ @include size (116px, 116px);
+ border-radius: 12px;
+ }
+}
+
+.link {
+ text-decoration: none;
+}
diff --git a/src/components/BurnoutTestBanner/BurnoutTestBanner.tsx b/src/components/BurnoutTestBanner/BurnoutTestBanner.tsx
index 5e905ac..eefe035 100644
--- a/src/components/BurnoutTestBanner/BurnoutTestBanner.tsx
+++ b/src/components/BurnoutTestBanner/BurnoutTestBanner.tsx
@@ -1,19 +1,19 @@
-import styles from "./BurnoutTestBanner.module.css";
-import image from "./burnout-image.png";
+import styles from "./BurnoutTestBanner.module.scss";
+import image from "./assets/banner-background.png";
import { Link } from "react-router-dom";
import {JSX} from "react";
+import {Button} from "@/shared/ui/Button/Button.tsx";
interface BurnoutTestProps {
id?: string;
}
-export const BurnoutTestBanner = ({ id }: BurnoutTestProps): JSX.Element=> {
+export const BurnoutTestBanner = ({id}: BurnoutTestProps): JSX.Element => {
return (
Пройдите тест о выгорании
- {/* до 20 мая 2023 */}
@@ -21,14 +21,12 @@ export const BurnoutTestBanner = ({ id }: BurnoutTestProps): JSX.Element=> {
подорвать здоровье и привести к депрессии.
-
+
-

+
);
diff --git a/src/components/BurnoutTestBanner/assets/banner-background.png b/src/components/BurnoutTestBanner/assets/banner-background.png
new file mode 100644
index 0000000..f95fb1e
Binary files /dev/null and b/src/components/BurnoutTestBanner/assets/banner-background.png differ
diff --git a/src/components/BurnoutTestBanner/burnout-image.png b/src/components/BurnoutTestBanner/burnout-image.png
deleted file mode 100644
index 6dc1ba5..0000000
Binary files a/src/components/BurnoutTestBanner/burnout-image.png and /dev/null differ
diff --git a/src/components/ButtonTelegramm/ButtonTelegramm.tsx b/src/components/ButtonTelegramm/ButtonTelegramm.tsx
index a2d0224..aad06a5 100644
--- a/src/components/ButtonTelegramm/ButtonTelegramm.tsx
+++ b/src/components/ButtonTelegramm/ButtonTelegramm.tsx
@@ -5,7 +5,7 @@ import iconTelegramm from "./icon-telegramm.svg";
export const ButtonTelegramm = () => {
return (
-

+

)
}
diff --git a/src/components/ButtonTelegramm/buttonTelegramm.module.css b/src/components/ButtonTelegramm/buttonTelegramm.module.css
index 6dd1811..266896a 100644
--- a/src/components/ButtonTelegramm/buttonTelegramm.module.css
+++ b/src/components/ButtonTelegramm/buttonTelegramm.module.css
@@ -3,3 +3,8 @@
right: 35px;
bottom: 50px;
}
+
+.buttonTelegramm__icon {
+ background-color: var(--color-background);
+ border-radius: 50%;
+}
diff --git a/src/components/CenterScreenMain/MoodButton/MoodButton.module.css b/src/components/CenterScreenMain/MoodButton/MoodButton.module.css
deleted file mode 100644
index 7777e1c..0000000
--- a/src/components/CenterScreenMain/MoodButton/MoodButton.module.css
+++ /dev/null
@@ -1,43 +0,0 @@
-.container {
- display: flex;
- width: 122px;
- height: 58px;
- align-items: center;
- justify-content: center;
- border: none;
- border-radius: 0 0 12px 12px;
- filter: drop-shadow(0 0 2px rgb(0 0 0 / 6%))
- drop-shadow(0 4px 2px rgb(0 0 0 / 3%));
- font: var(--font-button);
- gap: 12px;
- scale: 1;
-}
-
-.container:hover {
- cursor: pointer;
- scale: 1.02
-}
-
-.container:active {
- scale: 0.98;
-}
-
-.mood-button-red {
- border-top: 6px solid #fa3d33;
-}
-
-.mood-button-orange {
- border-top: 6px solid #ff6941;
-}
-
-.mood-button-yellow {
- border-top: 6px solid #feab23;
-}
-
-.mood-button-green {
- border-top: 6px solid #99ca65;
-}
-
-.mood-button-supergreen {
- border-top: 6px solid #00b750;
-}
diff --git a/src/components/CenterScreenMain/centerScreenMain.module.css b/src/components/CenterScreenMain/centerScreenMain.module.css
deleted file mode 100644
index cfcc672..0000000
--- a/src/components/CenterScreenMain/centerScreenMain.module.css
+++ /dev/null
@@ -1,19 +0,0 @@
-.container {
- /* test */
-}
-
-.mood-tracker {
- margin: 32px 0 0;
-}
-
-.mood-tracker-heading {
- margin: 0;
- color: var(--color-black);
- font: var(--font-h2);
-}
-
-.mood-buttons {
- display: flex;
- justify-content: space-between;
- margin: 24px 0 0;
-}
diff --git a/src/components/CenterScreenMain/centerScreenMain.tsx b/src/components/CenterScreenMain/centerScreenMain.tsx
deleted file mode 100644
index 238aac4..0000000
--- a/src/components/CenterScreenMain/centerScreenMain.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import styles from "./centerScreenMain.module.css";
-import { BurnoutTestBanner } from "../BurnoutTestBanner/BurnoutTestBanner";
-import { MoodButton } from "./MoodButton/MoodButton";
-import { MoodGraph } from "./MoodGraph/MoodGraph";
-import { BurnoutLevel } from "./BurnoutLevel/BurnoutLevel";
-
-export const CenterScreenMain = () => {
- return (
-
-
-
- Оцените свое настроение
-
-
-
-
-
-
-
-
-
-
-
- );
-};
diff --git a/src/components/Employees/employees.module.css b/src/components/Employees/employees.module.css
index 36d4a57..30e3d54 100644
--- a/src/components/Employees/employees.module.css
+++ b/src/components/Employees/employees.module.css
@@ -88,6 +88,7 @@
align-items: center;
justify-content: center;
border-radius: 50%;
+ margin: 0;
margin-right: 12px;
background-color: var(--color-background-accent);
}
diff --git a/src/components/RightScreenMain/Events/Events.tsx b/src/components/Events/Events.tsx
similarity index 69%
rename from src/components/RightScreenMain/Events/Events.tsx
rename to src/components/Events/Events.tsx
index fd33cbb..2f4398b 100644
--- a/src/components/RightScreenMain/Events/Events.tsx
+++ b/src/components/Events/Events.tsx
@@ -9,7 +9,7 @@ export const EventsMain = () => {
Тимбилдинг
-
+
@@ -19,6 +19,13 @@ export const EventsMain = () => {
+