From 8c3de302e70929bf4b2c9a788124de52c327538a Mon Sep 17 00:00:00 2001 From: pavel444-byte Date: Tue, 13 Oct 2026 14:22:12 +0500 Subject: [PATCH] Add live account appeal updates and restricted status settings --- app/account.css | 49 ++++++- app/admin/page.tsx | 4 +- app/ban/appeal/page.module.css | 11 +- app/moderation/page.tsx | 4 +- app/polish.css | 6 + app/settings/page.tsx | 65 +++++++-- components/AccountAppeal.tsx | 48 ++++++- components/AccountControls.tsx | 70 +++++++--- components/useAppealRealtime.ts | 128 ++++++++++++++++++ docs/account-controls.md | 4 +- docs/vercel-deployment.md | 3 + lib/profile.ts | 2 +- lib/realtime-refresh.ts | 34 +++++ scripts/test-account-controls-sql.mjs | 4 +- scripts/test-appeal-realtime-sql.mjs | 38 ++++++ shared/account-controls.ts | 1 + shared/locales/ru.json | 11 +- shared/player-docs.json | 2 +- ...0261013074208_account_appeals_realtime.sql | 23 ++++ tests/account-controls.test.ts | 1 + tests/realtime-refresh.test.ts | 52 +++++++ 21 files changed, 508 insertions(+), 52 deletions(-) create mode 100644 components/useAppealRealtime.ts create mode 100644 lib/realtime-refresh.ts create mode 100644 scripts/test-appeal-realtime-sql.mjs create mode 100644 supabase/migrations/20261013074208_account_appeals_realtime.sql create mode 100644 tests/realtime-refresh.test.ts diff --git a/app/account.css b/app/account.css index 92de7ce..290465f 100644 --- a/app/account.css +++ b/app/account.css @@ -1,4 +1,15 @@ /* Shared account and authentication surfaces, layered after the Minecraft theme. */ +.account-status-card { + margin-bottom: 32px; + gap: 18px; +} +.account-status-card h2 { + margin: 0; +} +.account-status-reason { + white-space: pre-wrap; + overflow-wrap: anywhere; +} .auth-page { padding-top: 48px; padding-bottom: 72px; @@ -284,10 +295,34 @@ gap: 8px; } } -.legacy-password-dialog { width: min(540px, calc(100vw - 24px)); } -.legacy-password-dialog > svg { color: var(--green); } -.legacy-password-dialog h2 { margin-top: 16px; } -.legacy-password-dialog .field input { width: 100%; font: 14px monospace; padding: 12px; background: var(--bg); color: var(--text); border: 1px solid var(--line); } -.legacy-password-dialog > .text-link { margin-top: 18px; } -.password-saved { display: flex; gap: 10px; align-items: flex-start; margin: 20px 0; } -.password-saved input { flex-shrink: 0; margin-top: 5px; accent-color: var(--green); } +.legacy-password-dialog { + width: min(540px, calc(100vw - 24px)); +} +.legacy-password-dialog > svg { + color: var(--green); +} +.legacy-password-dialog h2 { + margin-top: 16px; +} +.legacy-password-dialog .field input { + width: 100%; + font: 14px monospace; + padding: 12px; + background: var(--bg); + color: var(--text); + border: 1px solid var(--line); +} +.legacy-password-dialog > .text-link { + margin-top: 18px; +} +.password-saved { + display: flex; + gap: 10px; + align-items: flex-start; + margin: 20px 0; +} +.password-saved input { + flex-shrink: 0; + margin-top: 5px; + accent-color: var(--green); +} diff --git a/app/admin/page.tsx b/app/admin/page.tsx index f55365d..3adf174 100644 --- a/app/admin/page.tsx +++ b/app/admin/page.tsx @@ -17,11 +17,11 @@ export default async function AdminPage() { "Manage accounts, site settings, integrations and community reports.", )}

-

+

{t("Open Moderation Tools")} -

+