Добавлены компоненты для управления профилем пользователя, включая редактирование личной информации, смену пароля и настройки уведомлений. Обновлен контекст пользователя для хранения имени и фамилии. Обновлены стили для страницы аккаунта и компонентов.

This commit is contained in:
Redsandyg
2025-06-03 20:38:11 +03:00
parent 0e024b00a1
commit 582f5330c8
15 changed files with 1110 additions and 52 deletions

View File

@@ -0,0 +1,394 @@
/* Стили для страницы аккаунта и профиля */
.accountContainer {
max-width: 700px;
margin: 0 auto;
width: 100%;
}
.card {
background: #fff;
border-radius: 12px;
border: 1px solid #e5e7eb;
padding: 24px;
margin-bottom: 24px;
}
.profileHeader {
display: flex;
align-items: center;
gap: 24px;
}
.profileAvatar {
width: 64px;
height: 64px;
font-size: 28px;
background: #2563eb;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
color: #fff;
}
.profileHeaderMain {
flex: 1;
}
.profileTitle {
font-size: 24px;
font-weight: 700;
margin: 0;
}
.profileSince {
color: #9ca3af;
font-size: 14px;
}
.editButton {
background: #2563eb;
color: #fff;
border: none;
border-radius: 6px;
padding: 8px 20px;
font-weight: 500;
display: flex;
align-items: center;
gap: 8px;
cursor: pointer;
}
.sectionTitle {
font-size: 18px;
font-weight: 600;
margin-bottom: 16px;
}
.infoGrid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
}
.label {
color: #6b7280;
font-size: 14px;
}
.input,
.input[type="text"],
.input[type="email"],
.input[type="tel"] {
width: 100%;
padding: 8px;
border: 1px solid #e5e7eb;
border-radius: 6px;
margin-top: 4px;
box-sizing: border-box;
}
.value {
font-size: 16px;
}
.companyCodeRow {
display: flex;
align-items: center;
gap: 8px;
}
.companyCodeBox {
font-family: monospace;
background: #f3f4f6;
padding: 6px 12px;
border-radius: 6px;
border: 1px solid #e5e7eb;
}
.copyButton {
background: #2563eb;
color: #fff;
border: none;
border-radius: 6px;
padding: 6px 12px;
cursor: pointer;
font-size: 14px;
}
.commissionValue {
font-size: 18px;
font-weight: 600;
}
.actionRow {
display: flex;
justify-content: flex-end;
gap: 16px;
}
.cancelButton {
background: #f3f4f6;
color: #374151;
border: none;
border-radius: 6px;
padding: 8px 20px;
font-weight: 500;
cursor: pointer;
}
.saveButton {
background: #2563eb;
color: #fff;
border: none;
border-radius: 6px;
padding: 8px 20px;
font-weight: 500;
display: flex;
align-items: center;
gap: 8px;
cursor: pointer;
}
.tabsNav {
display: flex;
gap: 32px;
}
.tabsButton {
background: none;
border: none;
border-bottom: 2px solid transparent;
color: #6b7280;
font-weight: 500;
font-size: 16px;
padding: 8px 0;
cursor: pointer;
display: flex;
align-items: center;
gap: 8px;
}
.tabsButtonActive {
border-bottom: 2px solid #2563eb;
color: #2563eb;
font-weight: 600;
}
.dashboardTitle {
font-size: 32px;
font-weight: 700;
margin-bottom: 24px;
}
.copySuccessToast {
position: fixed;
top: 24px;
right: 24px;
background: #2563eb;
color: #fff;
padding: 12px 24px;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(16,30,54,0.12);
z-index: 1000;
font-weight: 500;
}
.iconInputRow {
display: flex;
align-items: center;
gap: 8px;
}
.passwordToggleBtn {
position: absolute;
right: 8px;
top: 12px;
background: none;
border: none;
cursor: pointer;
padding: 0;
display: flex;
align-items: center;
}
/* --- Стили для AccountSecurity --- */
.securityContainer {
max-width: 500px;
margin: 0 auto;
width: 100%;
}
.securityCard {
background: #fff;
border-radius: 12px;
border: 1px solid #e5e7eb;
padding: 24px;
margin-bottom: 24px;
}
.securitySectionTitle {
font-size: 18px;
font-weight: 600;
margin-bottom: 16px;
}
.securityLabel {
color: #6b7280;
font-size: 14px;
}
.securityInput {
width: 100%;
padding: 8px;
border: 1px solid #e5e7eb;
border-radius: 6px;
margin-top: 4px;
box-sizing: border-box;
}
.securitySaveButton {
background: #2563eb;
color: #fff;
border: none;
border-radius: 6px;
padding: 8px 20px;
font-weight: 500;
display: flex;
align-items: center;
gap: 8px;
cursor: pointer;
margin-top: 8px;
}
.securityPasswordToggleBtn {
position: absolute;
right: 8px;
top: 12px;
background: none;
border: none;
cursor: pointer;
padding: 0;
display: flex;
align-items: center;
}
/* --- Стили для вкладки уведомлений --- */
.notificationsContainer {
max-width: 500px;
margin: 0 auto;
width: 100%;
}
.notificationsCard {
background: #fff;
border-radius: 12px;
border: 1px solid #e5e7eb;
padding: 24px;
}
.notificationsTitle {
font-size: 18px;
font-weight: 600;
margin-bottom: 16px;
}
.notificationsList {
display: flex;
flex-direction: column;
gap: 16px;
}
.notificationsItem {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #f3f4f6;
padding: 8px 0;
}
.notificationsItemLabel {
font-weight: 500;
}
.notificationsItemDescription {
color: #9ca3af;
font-size: 14px;
}
.notificationsSwitchLabel {
display: inline-flex;
align-items: center;
cursor: pointer;
}
.notificationsSwitchInput {
width: 0;
height: 0;
opacity: 0;
position: absolute;
}
.notificationsSwitchTrack {
width: 44px;
height: 24px;
border-radius: 12px;
position: relative;
display: inline-block;
transition: background 0.2s;
background: #e5e7eb;
}
.notificationsSwitchTrackActive {
background: #2563eb;
}
.notificationsSwitchThumb {
position: absolute;
top: 2px;
width: 20px;
height: 20px;
background: #fff;
border-radius: 50%;
box-shadow: 0 1px 2px rgba(16,30,54,0.04);
transition: left 0.2s;
left: 2px;
}
.notificationsSwitchThumbActive {
left: 22px;
}
/* --- Стили для табов и навигации из page.tsx --- */
.accountTabsNav {
display: flex;
gap: 32px;
border-bottom: 1px solid #e5e7eb;
margin-bottom: 24px;
}
.accountTabsButton {
background: none;
border: none;
border-bottom: 2px solid transparent;
color: #6b7280;
font-weight: 500;
font-size: 16px;
padding: 8px 0;
cursor: pointer;
display: flex;
align-items: center;
gap: 8px;
}
.accountTabsButtonActive {
border-bottom: 2px solid #2563eb;
color: #2563eb;
font-weight: 600;
}
/* ... можно добавить другие стили по необходимости ... */