diff --git a/src/GmRelay.Web/Components/Pages/Profile.razor b/src/GmRelay.Web/Components/Pages/Profile.razor index e77be65..7761f1b 100644 --- a/src/GmRelay.Web/Components/Pages/Profile.razor +++ b/src/GmRelay.Web/Components/Pages/Profile.razor @@ -10,18 +10,50 @@ Профиль — GM-Relay -
-

Профиль

+
+ - @if (masterProfile is not null) + + + @if (!string.IsNullOrWhiteSpace(errorMessage)) { -
+
+ @errorMessage +
+ } + + @if (!string.IsNullOrWhiteSpace(successMessage)) + { +
+ @successMessage +
+ } + + @if (masterProfile is null) + { +
+
+
+
+
+ } + else + { +
-

Публичный профиль мастера

-

Показывается в каталоге, опубликованных играх и публичных страницах клуба.

+

Публичный профиль мастера

+

Показывается в каталоге, опубликованных играх и публичных страницах клуба.

- @(masterProfile.IsPublic ? "Публичный" : "Скрыт") + + @(masterProfile.IsPublic ? "Публичный" : "Скрыт") +
@@ -40,7 +72,7 @@
-
Латиница, цифры и дефисы, например `night-city-gm`.
+
Латиница, цифры и дефисы, например "night-city-gm".
@@ -72,20 +104,28 @@
} - @if (identities is null) - { -

Загрузка...

- } - else if (identities.Count == 0) - { -
-

Связанные аккаунты не найдены.

+
+
+
+

Связанные аккаунты

+

Аккаунты Telegram и Discord, привязанные к вашему профилю.

+
- } - else - { -
-

Связанные аккаунты

+ + @if (identities is null) + { +
+
+ } + else if (identities.Count == 0) + { +
+
Аккаунты не найдены
+

Привяжите Telegram или Discord, чтобы управлять профилем.

+
+ } + else + {
    @foreach (var id in identities) { @@ -96,7 +136,7 @@
@if (id.Platform != currentPlatform || id.ExternalUserId != currentExternalUserId) { -
- } + } +
+ +
+
+
+

Добавить аккаунт

+

Привяжите дополнительные платформы для входа.

+
+
-
-

Добавить аккаунт

@if (!HasLinkedPlatform("Discord")) { - + } else { -

Discord уже привязан.

+

Discord уже привязан.

} @if (currentPlatform == "Discord" && !HasLinkedPlatform("Telegram")) @@ -138,16 +187,6 @@ } }
- - @if (!string.IsNullOrWhiteSpace(errorMessage)) - { -
@errorMessage
- } - - @if (!string.IsNullOrWhiteSpace(successMessage)) - { -
@successMessage
- }
@code { diff --git a/src/GmRelay.Web/wwwroot/app.css b/src/GmRelay.Web/wwwroot/app.css index d571421..a769634 100644 --- a/src/GmRelay.Web/wwwroot/app.css +++ b/src/GmRelay.Web/wwwroot/app.css @@ -1449,6 +1449,62 @@ body.telegram-mini-app .session-card-mobile { color: var(--accent-secondary); } +/* === Identity list (profile page) === */ +.identity-list { + display: flex; + flex-direction: column; + gap: 0.5rem; + list-style: none; + padding: 0; + margin: 0; +} + +.identity-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.75rem 1rem; + background: var(--bg-surface); + border: 1px solid var(--border-color); + border-radius: var(--radius-sm); + gap: 1rem; + transition: background var(--transition-fast); +} + +.identity-item:hover { + background: rgba(255, 255, 255, 0.05); +} + +.identity-info { + display: flex; + align-items: center; + gap: 0.75rem; + flex-wrap: wrap; + flex: 1; +} + +.identity-platform { + font-size: 0.75rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--text-muted); + background: var(--bg-primary); + padding: 0.25rem 0.5rem; + border-radius: var(--radius-sm); + border: 1px solid var(--border-color); +} + +.identity-name { + font-weight: 600; + color: var(--text-primary); + font-family: 'Jura', sans-serif; +} + +.telegram-widget-wrapper { + margin-top: 0.5rem; +} + /* === Sidebar refinements (MainLayout & NavMenu) === */ .page { display: flex;