From c18ba8e0c7441a55001113514b43514fef64051d Mon Sep 17 00:00:00 2001 From: Oleg Urin Date: Mon, 27 Oct 2025 20:11:54 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=B4?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D0=B9=D0=BD=20=D1=85=D1=8D=D0=B4=D0=B5=D1=80?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/partners_dark theme_1_partner.png | Bin 0 -> 15544 bytes front/src/index.css | 12 +- front/src/pages/Layout/Layout.css | 4 + front/src/pages/Layout/Layout.tsx | 5 +- front/src/pages/LoginPage/LoginPage.tsx | 4 +- front/src/widgets/Header/Header.css | 143 ++++++++++++++++++ front/src/widgets/Header/Header.tsx | 15 +- 7 files changed, 172 insertions(+), 11 deletions(-) create mode 100644 front/src/assets/partners_dark theme_1_partner.png diff --git a/front/src/assets/partners_dark theme_1_partner.png b/front/src/assets/partners_dark theme_1_partner.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b823c485614ebd2ec1e27716ed3b7d05f59a54 GIT binary patch literal 15544 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 const { token } = useAppSelector((state: RootState) => state.auth) return( - token ?
+ /*token ?*/
-
: +
/*: */ ); }; diff --git a/front/src/pages/LoginPage/LoginPage.tsx b/front/src/pages/LoginPage/LoginPage.tsx index 54d4500..f9c70ab 100644 --- a/front/src/pages/LoginPage/LoginPage.tsx +++ b/front/src/pages/LoginPage/LoginPage.tsx @@ -38,7 +38,7 @@ const LoginPage: React.FC = () => { // Редирект если пользователь уже авторизован useEffect(() => { if (token) { - navigate('/data-collection'); + navigate('/'); } }, [token, navigate]); @@ -132,7 +132,7 @@ const LoginPage: React.FC = () => { const result = await dispatch(loginThunk(formData)).unwrap(); if (result.token) { - navigate('/data-collection'); + navigate('/'); } } catch (error) { console.error('Login error:', error); diff --git a/front/src/widgets/Header/Header.css b/front/src/widgets/Header/Header.css index e69de29..f80b3b2 100644 --- a/front/src/widgets/Header/Header.css +++ b/front/src/widgets/Header/Header.css @@ -0,0 +1,143 @@ +.header { + /*background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);*/ + background-color: var(--purple); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); + padding: 0; + position: sticky; + top: 0; + z-index: 1000; + backdrop-filter: blur(10px); +} + +.header-menu { + display: flex; + justify-content: space-between; + align-items: center; + margin: 0 auto; + padding: 0 20px; +} + +.header-menu a { + position: relative; + color: white; + text-decoration: none; + padding: 1.8rem 2rem; + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + font-weight: 500; + font-size: 1.1rem; + transition: all 0.3s ease; + overflow: hidden; +} + +.header-menu a::before { + content: ''; + position: absolute; + bottom: 0; + left: 50%; + width: 0; + height: 3px; + background: linear-gradient(90deg, var(--lavander), var(--light-blue)); + transition: all 0.3s ease; + transform: translateX(-50%); +} + +.header-menu a::after { + content: ''; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); + transition: left 0.5s ease; +} + +.header-logo { + display: flex; + align-items: center; + gap: 12px; + color: white; + text-decoration: none; + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + font-weight: 700; + font-size: 1.4rem; + transition: all 0.3s ease; +} + +.logo-image { + width: 340px; + height: 80px; + border-radius: 8px; + object-fit: contain; + transition: all 0.3s ease; + /*filter: brightness(0) invert(1);*/ +} + +.header-menu a:hover { + background: rgba(255, 255, 255, 0.1); + transform: translateY(-2px); +} + +.header-menu a:hover::before { + width: 80%; +} + +.header-menu a:hover::after { + left: 100%; +} + +.header-menu a.active { + background: rgba(255, 255, 255, 0.15); + font-weight: 600; +} + +.header-menu a.active::before { + width: 100%; + background: linear-gradient(90deg, var(--lavander), var(--light-blue)); +} + +/* Анимация при загрузке */ +.header-menu a { + animation: slideIn 0.6s ease forwards; + opacity: 0; + transform: translateY(-20px); +} + +.header-menu a:nth-child(1) { animation-delay: 0.1s; } +.header-menu a:nth-child(2) { animation-delay: 0.2s; } +.header-menu a:nth-child(3) { animation-delay: 0.3s; } + +@keyframes slideIn { + to { + opacity: 1; + transform: translateY(0); + } +} + +/* Адаптивность */ +@media (max-width: 768px) { + .header-menu { + flex-direction: column; + padding: 0; + } + + .header-menu a { + width: 100%; + text-align: center; + padding: 1rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); + } + + .header-menu a:last-child { + border-bottom: none; + } +} + +/* Эффект пульсации при наведении на кнопку выхода */ +.header-menu a[onclick]:hover { + background: linear-gradient(135deg, #ff6b6b, #ee5a52); +} + +.header-menu a[onclick]:hover::before { + background: linear-gradient(90deg, #ffd89b, #ff6b6b); +} + diff --git a/front/src/widgets/Header/Header.tsx b/front/src/widgets/Header/Header.tsx index 369ec21..4fe88c3 100644 --- a/front/src/widgets/Header/Header.tsx +++ b/front/src/widgets/Header/Header.tsx @@ -1,6 +1,8 @@ import { NavLink } from "react-router"; import { useAppDispatch } from '../../app/hooks'; import { logout } from "../../features/auth/authSlice"; +import './Header.css' +import logo from '../../assets/partners_dark theme_1_partner.png' const Header = () =>{ @@ -8,10 +10,15 @@ const Header = () =>{ return( )