diff --git a/FrontEnd/public/svg/arrow-down.svg b/FrontEnd/public/svg/arrow-down.svg new file mode 100644 index 000000000..96d156440 --- /dev/null +++ b/FrontEnd/public/svg/arrow-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/FrontEnd/public/svg/arrow-up.svg b/FrontEnd/public/svg/arrow-up.svg new file mode 100644 index 000000000..224c57140 --- /dev/null +++ b/FrontEnd/public/svg/arrow-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/FrontEnd/src/App.css b/FrontEnd/src/App.css index e5d392976..4066ac164 100644 --- a/FrontEnd/src/App.css +++ b/FrontEnd/src/App.css @@ -7,4 +7,4 @@ body { width: 100vw; -} \ No newline at end of file +} diff --git a/FrontEnd/src/components/CompanyCard/CompanyCard.module.css b/FrontEnd/src/components/CompanyCard/CompanyCard.module.css index 51ecc41ff..0cb137dfd 100644 --- a/FrontEnd/src/components/CompanyCard/CompanyCard.module.css +++ b/FrontEnd/src/components/CompanyCard/CompanyCard.module.css @@ -2,11 +2,11 @@ width: 345px; height: 365px; display: block; - align-items: center; - border-radius: 6px; + border-radius: 11px; position: relative; margin: auto; background: var(--company-card-color); + box-shadow: 0px 0px 2px 0px #41404533; } .company-card:hover { @@ -46,8 +46,8 @@ .company-card__image { width: 345px; height: 188px; - border-top-left-radius: 6px; - border-top-right-radius: 6px; + border-top-left-radius: 11px; + border-top-right-radius: 11px; flex-shrink: 0; object-fit: cover; } @@ -80,7 +80,8 @@ text-align: left; padding-left: 16px; padding-top: 6px; - max-width: 300px; + max-width: 262px; + height: 35px; } .company-card__name-text { @@ -115,7 +116,7 @@ display: flex; flex-direction: row; justify-content: space-between; - width: 345px; + width: 302px; padding-left: 13px; padding-bottom: 2px; } @@ -140,24 +141,24 @@ } .company-card__logo { - width: 42.2px; - height: 42.2px; + width: 50px; + height: 50px; position: absolute; - right: 16px; - bottom: 153.9px; + right: 20px; + bottom: 152px; } .company-card__logo-ellipse { - width: 42.2px; - height: 42.2px; + width: 50px; + height: 50px; background: var(--company-card-color); border-radius: 9999px; - border: 1px solid #232424; + border: 1px solid var(--grey-border-color); } .company-card__logo-image { - width: 42.2px; - height: 42.2px; + width: 50px; + height: 50px; border-radius: 9999px; background: var(--company-card-color); object-fit: cover; @@ -165,30 +166,10 @@ .company-card__star { position: absolute; - left: 292px; + left: 296px; bottom: 13px; } -@media only screen and (min-width: 768px) { - - .company-card, - .company-card__image-frame, - .company-card__image, - .company-card__text-block { - width: 344px; - } - - .company-card__star { - left: 296px; - } - - .company-card__category-text { - max-width: 250px; - } - -} - - @media only screen and (min-width: 1512px) { .company-card, @@ -203,6 +184,6 @@ } .company-card__category-text { - max-width: 250px; + max-width: 220px; } -} \ No newline at end of file +} diff --git a/FrontEnd/src/components/Header/Navbar/BurgerMenu.jsx b/FrontEnd/src/components/Header/Navbar/BurgerMenu.jsx index 01c6938ac..57efaa299 100644 --- a/FrontEnd/src/components/Header/Navbar/BurgerMenu.jsx +++ b/FrontEnd/src/components/Header/Navbar/BurgerMenu.jsx @@ -1,26 +1,24 @@ -import React, { useState } from 'react'; +import React from 'react'; import Hamburger from 'hamburger-react'; import Menu from './Menu'; import SearchBox from './SearchBox'; +import { useBurgerMenu } from '../../../context/BurgerMenuContext'; import css from './BurgerMenu.module.css'; const BurgerMenu = () => { - const [isOpen, setOpen] = useState(false); + const { isOpen, toggleMenu } = useBurgerMenu(); return (
- - {isOpen && ( -
- - -
- )} + +
+ {isOpen && ( + <> + + + + )} +
); }; diff --git a/FrontEnd/src/components/Header/Navbar/BurgerMenu.module.css b/FrontEnd/src/components/Header/Navbar/BurgerMenu.module.css index 1dd3bf522..1af406e9d 100644 --- a/FrontEnd/src/components/Header/Navbar/BurgerMenu.module.css +++ b/FrontEnd/src/components/Header/Navbar/BurgerMenu.module.css @@ -1,17 +1,23 @@ -.burgerMenuContainer { - position: relative; - top: -4px; +.menu { + position: absolute; + top: 61px; + left: -100vw; + width: 100vw; + background-color: white; + overflow: hidden; + max-height: 0; + display: flex; + flex-direction: column; + gap: 20px; + transition: max-height 0.3s ease, left 0.3s ease, padding 0.3s ease; } -.menu { - position: absolute; - top: 61px; - left: calc(-100vw + 80px); - width: calc(100vw - 40px); - background-color: white; - padding: 30px 20px; - display: flex; - flex-direction: column; - gap: 20px; - z-index: 1000; +.menu.open { + left: 0; + max-height: 180px; + padding: 20px; } + + + + diff --git a/FrontEnd/src/components/Header/Navbar/Navbar.module.css b/FrontEnd/src/components/Header/Navbar/Navbar.module.css index a613b5d3d..ca5d02389 100644 --- a/FrontEnd/src/components/Header/Navbar/Navbar.module.css +++ b/FrontEnd/src/components/Header/Navbar/Navbar.module.css @@ -8,7 +8,7 @@ display: flex; max-width: calc(1512px - 208px); width: 100%; - padding: 16px 104px; + padding: 16px 23px; align-items: center; justify-content: space-between; height: var(--navbar-content-height); @@ -17,12 +17,13 @@ .navbar-logo__text { display: flex; + align-items: center; + flex-shrink: 0; } .navbar-main-logo { display: flex; align-items: center; - justify-content: space-between; gap: 10px; color: var(--header-bunner-text-color); width: 208px; @@ -34,9 +35,11 @@ .navbar-utility-bar { display: flex; gap: 24px; - height: 40px; + align-items: center; } + + .burger-menu-wrapper { display: none; } @@ -53,15 +56,58 @@ .burger-menu-wrapper { display: block; + margin-left: auto; } } @media (max-width: 630px) { + .navbar-content { + padding: 8px 16px; + justify-content: space-between; + } + .navbar-main-logo { - width: 30px; + order: 2; + margin: 0 auto; + width: auto; + font-size: 20px; + } + + .burger-menu-wrapper { + order: 1; + margin: 0; + } + + .navbar-utility-bar { + order: 3; + gap: 12px; } .navbar-main-logo span { display: none; } } + +@media (max-width: 380px) { + .navbar-content { + padding: 8px 12px; + } + + .navbar-utility-bar { + gap: 8px; + justify-content: flex-end; + } + + .navbar-utility-bar button { + padding: 6px 12px; + font-size: 12px; + } + + .navbar-main-logo { + margin: 0 auto; + } + + .burger-menu-wrapper { + margin-right: 0; + } +} diff --git a/FrontEnd/src/components/Header/Navbar/Profile.jsx b/FrontEnd/src/components/Header/Navbar/Profile.jsx index a2fd3369a..97c9b35fc 100644 --- a/FrontEnd/src/components/Header/Navbar/Profile.jsx +++ b/FrontEnd/src/components/Header/Navbar/Profile.jsx @@ -35,7 +35,7 @@ function Profile() { />
- + Мій профіль {!isStaff && Мої збережені} diff --git a/FrontEnd/src/components/Header/Navbar/SearchBox.jsx b/FrontEnd/src/components/Header/Navbar/SearchBox.jsx index 7d32f6c23..6dee898e3 100644 --- a/FrontEnd/src/components/Header/Navbar/SearchBox.jsx +++ b/FrontEnd/src/components/Header/Navbar/SearchBox.jsx @@ -1,8 +1,6 @@ import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import {Button, Input} from 'antd'; -import {CloseOutlined, SearchOutlined} from '@ant-design/icons'; -import css from './SearchBox.module.scss'; +import css from './SearchBox.module.css'; function SearchBox() { const navigate = useNavigate(); @@ -10,47 +8,50 @@ function SearchBox() { const [searchTerm, setSearchTerm] = useState(''); const searchPage = 'search'; - const handleSearch = () => { + const handleSearch = (searchTerm, searchPage) => { if (searchTerm.trim() !== '') { navigate(`/${searchPage}/?name=${searchTerm}`); setSearchTerm(''); } }; - const keyDownFunction = (e) => { - if (e.key === 'Enter' ) { - handleSearch(); - } - }; - const handleClear = () => { setSearchTerm(''); }; + return ( -
-
- setSearchTerm(e.target.value)} - onKeyDown={keyDownFunction} - /> - {searchTerm && ( -
+
+
+ setSearchTerm(e.target.value)} + onKeyDown={(e) => { + if (e.key === 'Enter') { + handleSearch(searchTerm, searchPage); + } + }} + /> + {searchTerm && ( + + )}
- + +
); } diff --git a/FrontEnd/src/components/Header/Navbar/SearchBox.module.css b/FrontEnd/src/components/Header/Navbar/SearchBox.module.css new file mode 100644 index 000000000..59f6bc32d --- /dev/null +++ b/FrontEnd/src/components/Header/Navbar/SearchBox.module.css @@ -0,0 +1,77 @@ +.header-search-box { + display: flex; + align-items: center; + flex-shrink: 0; + width: 264px; + + border-radius: 4px; + border: 1px solid #d9d9d9; + background: #fff; +} + +.header-search-form { + display: flex; + padding: 4px 12px; + align-items: flex-start; + gap: 10px; + flex: 1 0 0; + position: relative; +} + +.header-search-form::after { + content: ""; + position: absolute; + border-right: 1px solid #d9d9d9; + height: 32px; + top: -3.5px; + right: 0; +} + +.header-search-form__input { + display: flex; + padding: 1px 0px; + align-items: flex-start; + gap: 10px; + flex: 1 0 0; + border: none; +} + +.header-search-form__addon { + display: flex; + padding: 6px; + justify-content: center; + align-items: center; + gap: 8px; + align-self: stretch; + background-color: transparent; + cursor: pointer; + border: none; +} + +.header-search-form__addon img { + width: 20px; + height: 20px; +} + +.header-search-form__input::placeholder { + color: rgba(0, 0, 0, 0.25); + font-feature-settings: 'calt' off; + font-family: var(--font-main); + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 20px; + letter-spacing: -0.14px; +} + +textarea:focus, +.header-search-form__input:focus { + border: none; + outline: none; +} + +@media (max-width: 1200px) { + .header-search-box { + width: 90%; + } +} diff --git a/FrontEnd/src/components/MiniComponents/CategoryBadges.jsx b/FrontEnd/src/components/MiniComponents/CategoryBadges.jsx index eacb7298b..be2cc7805 100644 --- a/FrontEnd/src/components/MiniComponents/CategoryBadges.jsx +++ b/FrontEnd/src/components/MiniComponents/CategoryBadges.jsx @@ -8,6 +8,7 @@ export default function CategoryBadges({ categories }) { fontFamily: 'Geologica', fontSize: 10, margin: 5, + boxShadow: 'none', }; return (
diff --git a/FrontEnd/src/components/PageWrapper/PageWrapper.jsx b/FrontEnd/src/components/PageWrapper/PageWrapper.jsx new file mode 100644 index 000000000..88b052d23 --- /dev/null +++ b/FrontEnd/src/components/PageWrapper/PageWrapper.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useBurgerMenu } from '../../context/BurgerMenuContext'; +import css from './PageWrapper.module.css'; + +const PageWrapper = ({ children }) => { + const { isOpen } = useBurgerMenu(); + + return ( +
+ {children} +
+ ); +}; + +PageWrapper.propTypes = { + children: PropTypes.node.isRequired, +}; + +export default PageWrapper; diff --git a/FrontEnd/src/components/PageWrapper/PageWrapper.module.css b/FrontEnd/src/components/PageWrapper/PageWrapper.module.css new file mode 100644 index 000000000..b91cb49f1 --- /dev/null +++ b/FrontEnd/src/components/PageWrapper/PageWrapper.module.css @@ -0,0 +1,9 @@ +.pageContent { + transition: margin-top 0.3s ease; + margin-top: 0; + } + + .pageContent.menuOpen { + margin-top: 180px; + } + \ No newline at end of file diff --git a/FrontEnd/src/context/BurgerMenuContext.js b/FrontEnd/src/context/BurgerMenuContext.js new file mode 100644 index 000000000..06041132a --- /dev/null +++ b/FrontEnd/src/context/BurgerMenuContext.js @@ -0,0 +1,22 @@ +import React, { createContext, useState, useContext } from 'react'; +import PropTypes from 'prop-types'; + +const BurgerMenuContext = createContext(); + +export const BurgerMenuProvider = ({ children }) => { + const [isOpen, setIsOpen] = useState(false); + + const toggleMenu = () => setIsOpen((prev) => !prev); + + return ( + + {children} + + ); +}; + +BurgerMenuProvider.propTypes = { + children: PropTypes.node.isRequired, +}; + +export const useBurgerMenu = () => useContext(BurgerMenuContext); diff --git a/FrontEnd/src/global.css b/FrontEnd/src/global.css index f22b52ed6..f230199c4 100644 --- a/FrontEnd/src/global.css +++ b/FrontEnd/src/global.css @@ -28,6 +28,7 @@ /*border color*/ --border-color: #EEEFF1; + --grey-border-color: #AAAAAA; /* background color*/ --main-header-color: #1F9A7C; @@ -52,6 +53,8 @@ --error-text-color: #F15831; --hint-text-color: #25292C; --placeholder-text-color: #ADB3B9; + --edit-page-head-color: #000000D9; + --input-text-color: #000000D9; @@ -59,11 +62,13 @@ --main-button-color: #000000; --button-color-hover: #0b6c61; --light-button-color: #FFFFFF; + --dark-border-button: #232424; + --disabled-link: #8D959C; /* fonts */ --font-main: 'Geologica', sans-serif; --font-messages: 'Roboto', sans-serif; - --font-error: 'Roboto', sans-serif; + --font-error: 'Geologica', sans-serif; --font-logo: 'Geologica', sans-serif; --toastify-color-error: #FFF1F0; diff --git a/FrontEnd/src/pages/CustomThemes/customTheme.js b/FrontEnd/src/pages/CustomThemes/customTheme.js index dd1a1c416..66f10d9f5 100644 --- a/FrontEnd/src/pages/CustomThemes/customTheme.js +++ b/FrontEnd/src/pages/CustomThemes/customTheme.js @@ -42,8 +42,8 @@ const customTheme = { multipleItemBg: '#F8F8F8', }, Checkbox: { - colorPrimary: '#1f9a7c', - colorPrimaryHover: '#1f9a7c', + colorPrimary: '#000000', + colorPrimaryHover: '#000000', }, Spin: { colorPrimary: '#ffffff', diff --git a/FrontEnd/src/pages/LandingPage/Companies/Companies.jsx b/FrontEnd/src/pages/LandingPage/Companies/Companies.jsx index f9d28c1c9..f1bb1b94e 100644 --- a/FrontEnd/src/pages/LandingPage/Companies/Companies.jsx +++ b/FrontEnd/src/pages/LandingPage/Companies/Companies.jsx @@ -59,7 +59,7 @@ const MainCompanies = ({ isAuthorized }) => {
- + {companyDataList.map((result, resultIndex) => ( { setFormIsDirty(isDirty); }, [mainProfile, profile]); - useEffect(() => { - props.currentFormNameHandler(props.curForm); - }, []); - const onUpdateFoundationYearField = (e) => { const currentYear = new Date().getFullYear(); const year = Number(e.target.value); @@ -92,6 +89,8 @@ const AdditionalInfo = (props) => { return (
+

Додаткова інформація

+
{user && profile && mainProfile ? (
{ { />
+
+ ) : ( diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/BanerModeration.css b/FrontEnd/src/pages/ProfilePage/FormComponents/BanerModeration.css index 5f437e077..a360d26c1 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/BanerModeration.css +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/BanerModeration.css @@ -2,7 +2,7 @@ display: flex; align-items: flex-start; color: black; - margin-bottom: 20px; + padding: 16px } .warning-icon { @@ -19,7 +19,7 @@ } .moderation-text { - font-family: 'Inter', sans-serif; + font-family: var(--font-main), sans-serif; font-weight: 400; font-size: 14px; line-height: 22px; diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.jsx index d466d07bf..94aaedf30 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.jsx @@ -11,7 +11,6 @@ import css from './ChangePassword.module.css'; export default function ChangePassword(props) { const { setFormIsDirty } = useContext(DirtyFormContext); - const { currentFormNameHandler, curForm } = props; const { register, handleSubmit, @@ -28,9 +27,6 @@ export default function ChangePassword(props) { }, }); - useEffect(() => { - currentFormNameHandler(curForm); - }, [currentFormNameHandler, curForm]); useEffect(() => { setFormIsDirty(isDirty); @@ -63,6 +59,8 @@ export default function ChangePassword(props) { return (
+

Змінити пароль

+
{props.user ? (
+
+
+ +
) : ( @@ -121,6 +128,4 @@ ChangePassword.propTypes = { profile_id: PropTypes.number.isRequired, is_staff: PropTypes.bool.isRequired, }).isRequired, - currentFormNameHandler: PropTypes.func.isRequired, - curForm: PropTypes.string.isRequired, }; diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.module.css b/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.module.css index 776533af1..a718e2476 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.module.css +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/ChangePassword.module.css @@ -1,5 +1,83 @@ .form__container { word-wrap: break-word; - width: 530px; - margin-left: 10px; + background-color: var(--main-white); + border-radius: 6px; + height: fit-content; + +} + +.form__container form { + display: flex; + flex-direction: column; + gap: 20px; + margin-top: 20px; +} + +.form__head { + display: none; +} + +.divider { + display: none; +} + +.bottom-divider { + width: 100%; + height: 1px; + background-color: var(--light-seashell-background); +} + +.submit-button__conteiner { + display: flex; + align-items: flex-start; + padding: 11px 17px; + background-color: var(--main-white); +} + +.submit-button { + border-radius: 4px; + background: var(--main-button-color); + color: var(--main-white); + padding: 10px 16px; + font-family: var(--font-main); + font-size: 16px; + font-weight: 600; + line-height: 20px; + cursor: pointer; +} + +@media only screen and (min-width: 768px) { + .form__container { + width: 474px; + } + + .form__head { + font-family: var(--font-main); + font-size: 16px; + font-weight: 600; + height: 52px; + display: flex; + flex-direction: row; + align-items: center; + padding-left: 24px; + } + + .divider { + width: 100%; + height: 1px; + background-color: var(--light-seashell-background); + display: inherit; + } + + .submit-button__conteiner { + padding: 11px 24px; +} + +} + +@media only screen and (min-width: 1200px) { + .form__container { + width: 636px; + margin-left: 180px; + } } \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx index 6d5f9fe88..f01887bc6 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/ContactsInfo.jsx @@ -6,9 +6,9 @@ import { useAuth, useProfile } from '../../../hooks'; import checkFormIsDirty from '../../../utils/checkFormIsDirty'; import defineChanges from '../../../utils/defineChanges'; import { formatPhoneNumber } from '../../../utils/formatPhoneNumber'; -import FullField from './FormFields/FullField'; import HalfFormField from './FormFields/HalfFormField'; import Loader from '../../../components/Loader/Loader'; +import ProfileFormButton from '../UI/ProfileFormButton/ProfileFormButton'; import css from './FormComponents.module.css'; import { useMask } from '@react-input/mask'; @@ -26,7 +26,7 @@ const ContactsInfo = (props) => { const { setFormIsDirty } = useContext(DirtyFormContext); const fields = { - phone: { defaultValue: mainProfile?.phone ?? null, type: 'phone'}, + phone: { defaultValue: mainProfile?.phone ?? null, type: 'phone' }, address: { defaultValue: mainProfile?.address ?? null }, }; @@ -37,10 +37,6 @@ const ContactsInfo = (props) => { const inputRef = useMask({ mask: '+380XX XXX XX XX', replacement: { X: /\d/ } }); - useEffect(() => { - props.currentFormNameHandler(props.curForm); - }, []); - useEffect(() => { if (mainProfile?.phone) { setProfile((prevState) => ({ @@ -116,6 +112,8 @@ const ContactsInfo = (props) => { return (
+

Контакти

+
{user && profile && mainProfile ? (
{ value={phone ?? ''} error={phoneNumberError} /> +
-
+
+ ) : ( diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.jsx index 6f3cf8658..21b71f27e 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.jsx @@ -3,10 +3,13 @@ import css from './DeleteProfileModal.module.css'; import { useAuth } from '../../../../hooks'; import { useState } from 'react'; import preventEnterSubmit from '../../../../utils/preventEnterSubmit'; +import classNames from 'classnames'; +import EyeVisible from '../../../Authorization/EyeVisible'; +import EyeInvisible from '../../../Authorization/EyeInvisible'; const DeleteProfileModal = (props) => { const { logout, user } = useAuth(); - const [typePassword, setTypePassword] = useState('password'); + const [passwordIsVisible, setPasswordIsVisible] = useState(false); const [inputEmail, setInputEmail] = useState(''); const [inputPassword, setInputPassword] = useState(''); const [isCorrectEmail, setIsCorrectEmail] = useState(true); @@ -43,73 +46,67 @@ const DeleteProfileModal = (props) => { }; const passwordVisisbilityHandler = () => { - if (typePassword === 'password') { - setTypePassword('text'); - } else setTypePassword('password'); + setPasswordIsVisible(!passwordIsVisible); }; return (
- Ви впевнені, що хочете видалити профіль? - +

Ви впевнені, що хочете видалити профіль?

-
-
- Цей профіль буде видалено. Для того, щоб підтвердити видалення, - будь-ласка, введіть вашу почту та пароль -
+
+

Це призведе до остаточного видалення всіх ваших даних про компанію чи стартап й також включно з списком сподобаних профілів.

+

Для видалення вашого профілю введіть вашу електронну пошту та пароль.

+ Ця дія не може бути відміненою!
-
- -
-
- -
- {!isCorrectEmail && ( -
Некоректна пошта
- )} -
- +
+
+ +
+
+ +
+ {!isCorrectEmail && ( +
Некоректна пошта
+ )}
-
- - - +
+ +
+
+ - + + {!passwordIsVisible ? : } + +
+ -
-
+
); }; diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.module.css b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.module.css index 8d59d822d..869f3ec36 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.module.css +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfileModal.module.css @@ -6,18 +6,21 @@ font-weight: 400; line-height: 20px; letter-spacing: -0.01em; - margin: 24px 24px 8px 24px; + margin: 14px 24px 0px 24px; + display: flex; + flex-direction: column; + gap: 13px; } .buttons__section { display: flex; - justify-content: flex-end; + justify-content: flex-start; align-items: flex-start; gap: 12px; border-top: 1px #E2E5EB solid; padding-bottom: 10px; padding-top: 10px; - padding-right: 16px; + padding-left: 25px; } .button__cancel { @@ -82,7 +85,6 @@ justify-content: space-between; align-items: center; align-self: stretch; - background: var(--main-white, #FFF); box-shadow: 0px -1px 0px 0px #F0F0F0 inset; color: var(--character-title-85, rgba(0, 0, 0, 0.85)); font-feature-settings: 'calt' off; @@ -95,14 +97,16 @@ } .form__body { - margin: 8px 24px 24px 24px; + margin: 24px; + display: flex; + flex-direction: column; + gap: 20px; } .fields__label--text { display: flex; - padding-bottom: 8px; + padding-bottom: 6px; align-items: center; - gap: 4px; font-family: var(--font-main); font-size: 14px; font-weight: 400; @@ -123,29 +127,42 @@ .fields__field--input { display: flex; - height: 22px; + height: 30px; padding: 5px 12px; align-items: center; gap: 4px; flex: 1 0 0; border-radius: 2px; - border: 1px solid var(--neutral-5, #D9D9D9); + border: none; background: var(--main-white, #FFF); } -.fields__field--input:focus { +.fields__field:focus-within { border-radius: 2px; border: 1px solid #1f9a7c; background: #fff; outline: none; } -.password__eye { - width: 23px; - padding: 5px 3px 2px 3px; +.password-visible-field { + display: flex; + align-items: center; + align-self: stretch; + border-radius: 2px; + background: var(--main-white, #FFF); + border: 1px solid #B4D27A; +} + +.password-visibility-button { + width: 25px; cursor: pointer; } +.fields__field--input:focus-visible { + outline: none; +} + + .delete__cancelButton { cursor: pointer; } diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.jsx index eef063fa3..ff0680cfd 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.jsx @@ -1,27 +1,26 @@ import css from './DeleteProfilePage.module.css'; import DeleteProfileModal from './DeleteProfileModal'; import MyModal from '../../UI/MyModal/MyModal'; -import { useState, useEffect } from 'react'; +import { useState } from 'react'; -const DeleteProfilePage = (props) => { +const DeleteProfilePage = () => { const [modal, setModal] = useState(false); - useEffect(() => { - props.currentFormNameHandler(props.curForm); - }, []); - const cancelHandler = () => { setModal(false); }; return ( -
-
Видалити акаунт
- - - - +
+

Видалити профіль

+
+
+ + + + +
); }; diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.module.css b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.module.css index 92ca3d4ba..786eb5a0e 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.module.css +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/DeleteProfileComponent/DeleteProfilePage.module.css @@ -1,33 +1,56 @@ .button__delete-main { - height: calc(var(--profile-min-height-block) + 42px); + padding: 10px; } .button__delete { - color: #F15831; - cursor: pointer; - width: 109px; - height: 32px; - padding: 5px 15px 5px 15px; - margin-top: 8px; - margin-bottom: 10px; border-radius: 4px; - gap: 10px; - background: linear-gradient(0deg, #FFFFFF, #FFFFFF), - linear-gradient(0deg, #F15831, #F15831); - border: 1px solid #F15831; + background: var(--main-button-color); + color: var(--main-white); + padding: 10px 15px; font-family: var(--font-main); font-size: 16px; font-weight: 600; line-height: 20px; - letter-spacing: -0.01em; - text-align: center; + cursor: pointer; } -.text__for__delete { - font-family: var(--font-main); - font-size: 14px; - font-weight: 400; - line-height: 20px; - letter-spacing: -0.01em; - text-align: left; +.button__delete-head { + display: none; } + +@media only screen and (min-width: 768px) { + .button__delete-container { + display: flex; + flex-direction: column; + background-color: var(--main-white); + width: 474px; + height: 112px; + border-radius: 6px; + } + .button__delete-head { + font-family: var(--font-main); + font-size: 16px; + font-weight: 600; + height: 52px; + display: flex; + flex-direction: row; + align-items: center; + padding-left: 24px; + } + + .divider { + width: 100%; + height: 1px; + background-color: var(--light-seashell-background); + } + .button__delete { + margin-left: 14px; + } +} + +@media only screen and (min-width: 1200px) { + .button__delete-container { + width: 636px; + margin-left: 180px; + } +} \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/FormComponents.module.css b/FrontEnd/src/pages/ProfilePage/FormComponents/FormComponents.module.css index 154cfd909..1bcaa4f7e 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/FormComponents.module.css +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/FormComponents.module.css @@ -10,8 +10,19 @@ .fields-groups { display: flex; + flex-direction: column; align-items: flex-start; gap: 16px; + padding-left: 9px; + padding-top: 7px; +} + +.form__head { + display: none; +} + +.divider { + display: none; } .fop-field { @@ -23,5 +34,50 @@ .form__container { word-wrap: break-word; - width: 530px; + background-color: var(--main-white); + border-radius: 6px; + height: fit-content; + +} + +.bottom-divider { + width: 100%; + height: 1px; + background-color: var(--light-seashell-background); +} + +@media only screen and (min-width: 768px) { + .form__container { + width: 474px; + } + + .fields-groups { + padding-left: 16px; + } + + .form__head { + font-family: var(--font-main); + font-size: 16px; + font-weight: 600; + height: 52px; + display: flex; + flex-direction: row; + align-items: center; + padding-left: 24px; + } + + .divider { + width: 100%; + height: 1px; + background-color: var(--light-seashell-background); + display: inherit; + } + +} + +@media only screen and (min-width: 1200px) { + .form__container { + width: 636px; + margin-left: 180px; + } } \ No newline at end of file diff --git a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/CheckBoxField.jsx b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/CheckBoxField.jsx index 19a3960cb..58026bb69 100644 --- a/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/CheckBoxField.jsx +++ b/FrontEnd/src/pages/ProfilePage/FormComponents/FormFields/CheckBoxField.jsx @@ -8,9 +8,10 @@ const CheckBoxField = (props) => {
{props.requiredField && ( - + * )}