From 48fdbec37e09622832d41e9d5c3bb98021b15860 Mon Sep 17 00:00:00 2001 From: Professional Date: Fri, 23 May 2025 17:19:26 +0700 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=81=D1=82=D0=BA=D0=B8=20=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=20"=D0=BF=D1=80=D0=BE=D1=84=D0=B8=D0=BB=D1=8C"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ProfileView.vue | 666 ++++++++------------------------------ 1 file changed, 130 insertions(+), 536 deletions(-) diff --git a/src/views/ProfileView.vue b/src/views/ProfileView.vue index 56495bd..c9da615 100644 --- a/src/views/ProfileView.vue +++ b/src/views/ProfileView.vue @@ -1162,11 +1162,17 @@ onMounted(async () => { .profile-layout { display: grid; - grid-template-columns: 350px 1fr; + grid-template-columns: 1fr; gap: 2rem; align-items: start; } +@media (min-width: 992px) { + .profile-layout { + grid-template-columns: 350px 1fr; + } +} + /* Profile Card */ .profile-card { background: rgba(255, 255, 255, 0.95); @@ -1174,567 +1180,155 @@ onMounted(async () => { border-radius: 20px; padding: 2rem; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); - position: sticky; - top: 2rem; } -.avatar-section { - text-align: center; - margin-bottom: 2rem; +@media (min-width: 992px) { + .profile-card { + position: sticky; + top: 2rem; + } } -.avatar-container { - position: relative; - display: inline-block; - margin-bottom: 1rem; +/* Responsive Style Overrides */ +@media (max-width: 991px) { + .profile-card { + padding: 1.5rem; + } + + .card-content { + padding: 1.5rem; + } + + .stats-section { + margin-top: 1.5rem; + padding-top: 1.5rem; + } + + .card-header { + padding: 1rem 1.5rem; + flex-wrap: wrap; + } + + .header-actions { + margin-top: 0.5rem; + } } -.avatar-image { - width: 120px; - height: 120px; - border-radius: 50%; - object-fit: cover; - border: 4px solid white; - box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15); +@media (max-width: 576px) { + .profile-layout { + gap: 1.5rem; + } + + .profile-card { + padding: 1.25rem; + border-radius: 15px; + } + + .profile-header { + padding: 1rem 0; + } + + .profile-title h1 { + font-size: 1.8rem; + } + + .profile-title .subtitle { + font-size: 0.9rem; + } + + .avatar-image, + .avatar-placeholder { + width: 100px; + height: 100px; + } + + .card-content { + padding: 1.25rem; + } + + .card-header h3 { + font-size: 1.1rem; + margin-bottom: 0 !important; + } + + .action-btn.small { + width: 36px; + height: 36px; + } + + .stat-value { + font-size: 1.3rem; + } + + .stat-label { + font-size: 0.7rem; + } + + .user-name { + font-size: 1.3rem; + } + + .info-grid { + grid-template-columns: 1fr; + gap: 1.25rem; + } + + .photo-grid { + grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); + gap: 0.8rem; + } + + .city-dropdown { + max-height: 200px; + } } -.avatar-placeholder { - width: 120px; - height: 120px; - border-radius: 50%; - background: linear-gradient(45deg, #e9ecef, #f8f9fa); - display: flex; - align-items: center; - justify-content: center; - border: 4px solid white; - box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15); -} - -.avatar-placeholder i { - font-size: 3rem; - color: #6c757d; -} - -.avatar-overlay { - position: absolute; +/* Fix for modal on small screens */ +.modal-overlay { + position: fixed; top: 0; left: 0; - right: 0; - bottom: 0; + width: 100%; + height: 100%; background: rgba(0, 0, 0, 0.7); - border-radius: 50%; + backdrop-filter: blur(5px); display: flex; align-items: center; justify-content: center; - opacity: 1; - transition: opacity 0.3s ease; - z-index: 5; + z-index: 1000; } -.avatar-container:hover .avatar-overlay { - opacity: 1; -} - -.change-avatar-btn { - background: none; - border: none; - color: white; - font-size: 1.5rem; - cursor: pointer; -} - -.user-name { - font-size: 1.5rem; - font-weight: 700; - color: #2c3e50; - margin: 0 0 0.5rem 0; -} - -.user-email { - color: #6c757d; - margin: 0 0 1rem 0; -} - -.user-badges { - display: flex; - gap: 0.5rem; - justify-content: center; - flex-wrap: wrap; -} - -.badge { - padding: 0.25rem 0.75rem; - border-radius: 50px; - font-size: 0.75rem; - font-weight: 600; -} - -.badge.verified { - background: linear-gradient(45deg, #28a745, #20c997); - color: white; -} - -.badge.member-since { - background: #e9ecef; - color: #495057; -} - -/* Stats Section */ -.stats-section { - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 1rem; - margin-top: 2rem; - padding-top: 2rem; - border-top: 1px solid #e9ecef; -} - -.stat-item { - text-align: center; -} - -.stat-value { - display: block; - font-size: 1.5rem; - font-weight: 700; - color: #667eea; -} - -.stat-label { - font-size: 0.8rem; - color: #6c757d; - text-transform: uppercase; - letter-spacing: 0.5px; -} - -/* Details Section */ -.details-section { - display: flex; - flex-direction: column; - gap: 2rem; -} - -.info-card { - background: rgba(255, 255, 255, 0.95); - backdrop-filter: blur(10px); - border-radius: 20px; - box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); +.delete-modal { + background: white; + border-radius: 15px; + width: 90%; + max-width: 400px; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); overflow: hidden; } -.card-header { - padding: 1.5rem 2rem; - background: linear-gradient(45deg, #f8f9fa, #e9ecef); - border-bottom: 1px solid #dee2e6; +.modal-header { + padding: 1rem 1.5rem; + border-bottom: 1px solid #eee; display: flex; justify-content: space-between; align-items: center; } -.card-header h3 { +.modal-header h3 { margin: 0; - color: #495057; - margin-bottom: 1rem; - font-size: 1.2rem; + font-size: 1.25rem; +} + +.modal-content { + padding: 1.5rem; +} + +.modal-actions { + padding: 1rem 1.5rem; + border-top: 1px solid #eee; display: flex; - align-items: center; - gap: 0.5rem; -} - -.card-content { - padding: 2rem; -} - -.info-grid { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 1.5rem; -} - -.info-item { - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -.info-item.full-width { - grid-column: 1 / -1; -} - -.info-item label { - font-weight: 600; - color: #495057; - font-size: 0.9rem; - text-transform: uppercase; - letter-spacing: 0.5px; -} - -.info-item span { - color: #6c757d; - font-size: 1rem; -} - -.bio-text { - font-style: italic; - line-height: 1.6; -} - -/* Стили формы */ -.form-input { - width: 100%; - padding: 0.75rem 1rem; - border-radius: 8px; - border: 1px solid #dee2e6; - background: #f8f9fa; - font-size: 0.95rem; - transition: all 0.3s ease; - color: #495057; -} - -.form-input:focus { - outline: none; - border-color: #667eea; - box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.15); - background: white; -} - -.form-input:disabled { - opacity: 0.7; - cursor: not-allowed; - background: #e9ecef; -} - -.form-textarea { - min-height: 100px; - resize: vertical; - line-height: 1.5; -} - -/* Стили для выпадающего списка городов */ -.city-input-wrapper { - position: relative; - width: 100%; -} - -.city-dropdown { - position: absolute; - top: 100%; - left: 0; - right: 0; - max-height: 250px; - overflow-y: auto; - background: white; - border: 1px solid #dee2e6; - border-radius: 8px; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); - z-index: 100; -} - -.city-option { - padding: 0.75rem 1rem; - cursor: pointer; - color: #495057; - transition: all 0.2s ease; -} - -.city-option:hover { - background: rgba(102, 126, 234, 0.1); - color: #667eea; -} - -.city-clear-btn { - position: absolute; - right: 10px; - top: 50%; - transform: translateY(-50%); - background: none; - border: none; - color: #6c757d; - cursor: pointer; - padding: 5px; - display: flex; - align-items: center; - justify-content: center; -} - -.city-clear-btn:hover { - color: #dc3545; -} - -.card-header h3 { - margin-bottom: 0 !important; -} - -/* Фото сетка */ -.photo-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + justify-content: flex-end; gap: 1rem; } - -.photo-item { - position: relative; - border-radius: 12px; - overflow: hidden; - box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); - aspect-ratio: 1 / 1; -} - -.photo-item.main-photo { - box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4); - transform: scale(1.05); - z-index: 2; -} - -.photo-image { - width: 100%; - height: 100%; - object-fit: cover; -} - -.main-badge { - position: absolute; - top: 10px; - left: 10px; - background: rgba(102, 126, 234, 0.9); - color: white; - padding: 0.25rem 0.5rem; - border-radius: 4px; - font-size: 0.7rem; - font-weight: 700; - display: flex; - align-items: center; - gap: 0.25rem; -} - -.photo-actions { - position: absolute; - bottom: 10px; - right: 10px; - display: flex; - gap: 0.5rem; -} - -.empty-photos { - text-align: center; - padding: 3rem 0; -} - -.empty-photos i { - font-size: 3rem; - color: #dee2e6; - margin-bottom: 1rem; -} - -.empty-photos h4 { - margin: 0 0 0.5rem; - color: #495057; -} - -.empty-photos p { - color: #6c757d; - margin-bottom: 1.5rem; -} - -/* Адаптивные стили для разных устройств */ -@media (max-width: 576px) { - .profile-card { - padding: 1.5rem; - border-radius: 15px; - } - - .profile-header { - padding: 0.8rem 0; - } - - .header-title { - font-size: 1.6rem; - } - - .profile-photo { - width: 110px; - height: 110px; - } - - .profile-details { - padding: 1rem 0; - } - - .profile-name { - font-size: 1.6rem; - } - - .section-header { - padding: 0.8rem 1.2rem; - } - - .card-header h3 { - font-size: 1.2rem; - } - - .edit-btn, .save-btn { - padding: 0.5rem 1rem; - font-size: 0.9rem; - } - - .info-grid { - grid-template-columns: 1fr; - } - - .photo-grid { - grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); - gap: 0.8rem; - } - - .photo-item, .add-photo-btn { - height: 120px; - } - - .form-input, .form-textarea { - padding: 0.6rem 0.8rem; - font-size: 0.9rem; - } - - .form-label { - font-size: 0.85rem; - } -} - -/* Малые телефоны */ -@media (max-width: 375px) { - .profile-photo { - width: 100px; - height: 100px; - } - - .profile-name { - font-size: 1.4rem; - } - - .photo-grid { - grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); - } - - .photo-item, .add-photo-btn { - height: 100px; - } - - .edit-btn, .save-btn { - padding: 0.4rem 0.8rem; - font-size: 0.85rem; - } -} - -/* Большие телефоны и малые планшеты */ -@media (min-width: 577px) and (max-width: 767px) { - .profile-photo { - width: 140px; - height: 140px; - } - - .info-grid { - grid-template-columns: repeat(2, 1fr); - } - - .photo-grid { - grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); - } - - .info-item.full-width { - grid-column: 1 / 3; - } -} - -/* Планшеты */ -@media (min-width: 768px) and (max-width: 991px) { - .container { - max-width: 720px; - } - - .profile-main { - display: grid; - grid-template-columns: 180px 1fr; - gap: 2rem; - } - - .profile-photo-section { - margin-bottom: 0; - } - - .profile-details { - text-align: left; - padding-left: 0; - } -} - -/* Малые настольные */ -@media (min-width: 992px) and (max-width: 1199px) { - .container { - max-width: 960px; - } - - .profile-main { - display: grid; - grid-template-columns: 200px 1fr; - gap: 2rem; - } - - .profile-photo-section { - margin-bottom: 0; - } - - .profile-details { - text-align: left; - padding-left: 0; - } -} - -/* Большие настольные */ -@media (min-width: 1200px) { - .container { - max-width: 1140px; - } - - .profile-main { - display: grid; - grid-template-columns: 220px 1fr; - gap: 2.5rem; - } - - .profile-photo-section { - margin-bottom: 0; - } - - .profile-details { - text-align: left; - padding-left: 0; - } -} - -/* Ландшафтная ориентация на мобильных */ -@media (max-height: 500px) and (orientation: landscape) { - .modern-profile-view { - padding-bottom: 2rem; - } - - .profile-photo { - width: 90px; - height: 90px; - margin-bottom: 0.5rem; - } - - .profile-main { - display: grid; - grid-template-columns: auto 1fr; - gap: 1.5rem; - } - - .profile-details { - text-align: left; - } - - .section-content { - padding: 1rem; - } -} \ No newline at end of file