From 3761267015ac812eb51c30f7fc94ecbff791f73f Mon Sep 17 00:00:00 2001 From: yml2213 Date: Wed, 21 Oct 2026 22:04:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E9=87=8D=E5=81=9A=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E9=A1=B5=E5=B9=B6=E6=9B=BF=E6=8D=A2=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E7=AB=99=E7=82=B9=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 登录页改为左侧品牌区 + 右侧表单卡,补字段标签、三步流程与 DCAuth 等待面板 - 新增自定义站点图标(SVG / ICO / apple-touch-icon / 192 / 512) - index.html 补齐图标、theme-color 与页面描述 - 修复 client.ts 中既有的 any 类型告警 --- web/frontend/index.html | 11 +- web/frontend/public/apple-touch-icon.png | Bin 0 -> 15232 bytes web/frontend/public/favicon.ico | Bin 0 -> 10687 bytes web/frontend/public/favicon.svg | 18 +- web/frontend/public/icon-192.png | Bin 0 -> 16181 bytes web/frontend/public/icon-512.png | Bin 0 -> 43993 bytes web/frontend/src/api/client.ts | 10 +- web/frontend/src/index.css | 446 +++++++++++++++++++++++ web/frontend/src/pages/LoginPage.tsx | 418 +++++++++++++-------- 9 files changed, 749 insertions(+), 154 deletions(-) create mode 100644 web/frontend/public/apple-touch-icon.png create mode 100644 web/frontend/public/favicon.ico create mode 100644 web/frontend/public/icon-192.png create mode 100644 web/frontend/public/icon-512.png diff --git a/web/frontend/index.html b/web/frontend/index.html index 64d1845..1fc4ee2 100644 --- a/web/frontend/index.html +++ b/web/frontend/index.html @@ -1,9 +1,16 @@ - + - + + + + + 直播运营后台 diff --git a/web/frontend/public/apple-touch-icon.png b/web/frontend/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a3737036898f0e817eaffa22c0fcfe64030df574 GIT binary patch literal 15232 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 literal 0 HcmV?d00001 diff --git a/web/frontend/public/favicon.ico b/web/frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ac9eee97a193532f3e15201d08bcc9e46e79c790 GIT binary patch literal 10687 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 \ No newline at end of file + + + + + + + + + + + + + + + + + diff --git a/web/frontend/public/icon-192.png b/web/frontend/public/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd4655f492c228ab59905ac7ac0a025750e443e GIT binary patch literal 16181 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%0DCRXo1!|xq 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%0D_NQY%--43V8 zc(S`ZM?5~gJ|sqV4jG({;d5`4{%W+X0~0cwp7o+44K5NL-FDE6$KUT3o(O6_bB>x- ziO&;(gxfp>hP;Akt9`CdQ3v|Jti68vlHP3n&{CwF)sqqs(n-&FkfvxA`#OiMwcO5U z>XozYe$%#(+{8K2P9VIu8!JV>XFGw_6_oP3spqC^bJh~0j8kv)nhfO3{qq>gk839= z?7w8Fq=V95<)Wf57|8PXkm7f$vTP39aEQt`Z|J;J-+8;?uFD7SMW!5;p;Hb?@t2vY zEzlcuQnV7@VHF87Hnhmg4#LQM%IaWqVVpR^hmh9+oz2A_7@PRCdogRTGuH4iAs;E1 z2!{vRr<6^c&(@tfDBPM`SLkA_2P4p)*jKBme=3rwSmv9oc<6z86ACOAGM-E`5UG;?JA5CO3HyD{t=$diaTt z(`$r@5#~2KATa57&n7UD0Uexx3?-($8tMP9&vYMtiw58$OnjOfrI^!qgj@Jh!$#QU`37bVKOZ6{_lrfl)!T2=I1*D_ zlCht_I*gXq({`y&hr6WfI0#aOa&I!Ey_ah^HIHj_iO8g&8a!VXu^6D6l(WqZ(FlSPsI4U}=8 z=VwAS%(eCQCfV~S1N7lqf(T(T5{IADp$zcCVG?B{>-tekY~vs?Gl`B)h*AeSb}GILRkxHPC&i|#UXJ)s6ngT z!83gUI~kQJOV$W(7SOnA2MR$+ZIclhGT9{q^Zs~=_A}+&{iCCF-jZy-=(oFg*~KdK0w`%76g7-8T-6T z7iqBIXg4$uu7KL1xOEg_hRKErs^^4>MMSy*k;<~@xit|8u!(&nT@X(`C=5ABZ2%$- zE`=#J1a+=@LS}fgrQB|XQi9VR7uB_eyzhlQ(&%rtfJFg+fEu zHe1|Kb5L1rZnJ=d)N0SPBr-6)b%Kz4VVH2RKg#2FSPwgx4+F6Y0*3eKg5Cpn6%#23 zr!|T+6bme}nJ#(#dM=|;yQ(TjtA%QY+Sm!9B}4|3e#0TLAPiy2Kp$uuAg8S)B;an#d1PLy!vrY2h+_~G$tD>( zjs$1wzGS2iK!SH%R0zD|XkgPTKq7!LC(`)b($XJ)|1Slm8T?%g9LTx#L*+(hD5Vn- z^fU#B8t;AYwm0wd6;6!2a<6>LUXDz-XC7TAfE0nU$5i_LCOkwplY>ZLG({RK-ZG7+9b*Nw*DHr*cHmnx2bIUJh+QSuFwS5B zD5!>Pn~%VeY74Y&NtVOK(nvI1Uv_t)rEV-kzI9=Z)yFpF6O zt-u0#H#bT!dBzq*mL=PYB=I*H6q7t6IC|P<>Wn5%Wi_D>Huw8Q?f>2+iB1C0j~-6l z00Y?LZzEY~5>fx{Z}Z76o%gC$E12s<%%!jiHq{0d)2O*0T%Ov;h9{>>7@nK2V$^>` z4XDgqy+>yOrRLtsV?2Msx|VG5!K>6lYHKhqJX0uq^~yZS<}#k&ZlA!wh)2=BB!fGc z``c}HdFd7t`R}w8L%QVIT-EN6;JAhgP3(_g5=|%~ojIDNM9Uu3hviIGyHLc1j6cJw zrB#XgT_C5ibUnc`ZDFj{=aOjN8B5(Kb-ZBBi3RD~&NJ$tb~hRfWxFsC@OdYzEK@0E G9Poe6* 0) { - msg = detail.map((d: any) => d?.msg || (typeof d === 'string' ? d : JSON.stringify(d))).join('; '); + msg = detail + .map((item: unknown) => { + if (typeof item === 'string') return item; + if (item && typeof item === 'object' && 'msg' in item) { + return String((item as { msg?: unknown }).msg ?? ''); + } + return JSON.stringify(item); + }) + .join('; '); } else if (detail && typeof detail === 'object') { msg = JSON.stringify(detail); } diff --git a/web/frontend/src/index.css b/web/frontend/src/index.css index 8fd9c73..11d89d0 100644 --- a/web/frontend/src/index.css +++ b/web/frontend/src/index.css @@ -34,3 +34,449 @@ html[data-theme='dark'] body { .huya-collab-home-drop .ant-upload-btn { padding: 10px 12px !important; } + +/* ---------- 登录页 ---------- */ +.login-page { + --login-card-bg: rgba(255, 255, 255, 0.92); + --login-border: rgba(15, 23, 42, 0.08); + --login-text: #0f172a; + --login-muted: #64748b; + --login-step-bg: rgba(15, 23, 42, 0.03); + position: relative; + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; + padding: 40px 20px; + overflow: hidden; + background: + radial-gradient(900px 520px at 12% 8%, rgba(99, 102, 241, 0.28), transparent 62%), + radial-gradient(820px 520px at 88% 92%, rgba(6, 182, 212, 0.24), transparent 60%), + #eef2ff; +} + +.login-page.is-dark { + --login-card-bg: rgba(15, 23, 42, 0.86); + --login-border: rgba(148, 163, 184, 0.16); + --login-text: #e2e8f0; + --login-muted: #94a3b8; + --login-step-bg: rgba(148, 163, 184, 0.06); + background: + radial-gradient(900px 520px at 12% 8%, rgba(79, 70, 229, 0.32), transparent 62%), + radial-gradient(820px 520px at 88% 92%, rgba(6, 182, 212, 0.2), transparent 60%), + #070b16; +} + +.login-backdrop { + position: absolute; + inset: 0; + pointer-events: none; + background-image: + linear-gradient(rgba(148, 163, 184, 0.12) 1px, transparent 1px), + linear-gradient(90deg, rgba(148, 163, 184, 0.12) 1px, transparent 1px); + background-size: 46px 46px; + mask-image: radial-gradient(ellipse at 50% 42%, #000 26%, transparent 74%); + -webkit-mask-image: radial-gradient(ellipse at 50% 42%, #000 26%, transparent 74%); + opacity: 0.7; +} + +.login-page.is-dark .login-backdrop { + background-image: + linear-gradient(rgba(148, 163, 184, 0.16) 1px, transparent 1px), + linear-gradient(90deg, rgba(148, 163, 184, 0.16) 1px, transparent 1px); + opacity: 0.5; +} + +.login-shell { + position: relative; + display: grid; + grid-template-columns: minmax(0, 1.05fr) 440px; + width: min(1040px, 100%); + overflow: hidden; + border-radius: 28px; + border: 1px solid var(--login-border); + background: var(--login-card-bg); + box-shadow: 0 40px 90px -40px rgba(15, 23, 42, 0.55); + backdrop-filter: blur(18px); + -webkit-backdrop-filter: blur(18px); +} + +.login-brand { + position: relative; + display: flex; + flex-direction: column; + gap: 34px; + padding: 44px 46px; + color: #fff; + background: + radial-gradient(120% 120% at 0% 0%, rgba(255, 255, 255, 0.3), transparent 56%), + linear-gradient(150deg, #4338ca 0%, #2563eb 48%, #06b6d4 100%); +} + +.login-brand::before, +.login-brand::after { + content: ''; + position: absolute; + border-radius: 50%; + pointer-events: none; +} + +.login-brand::before { + width: 320px; + height: 320px; + right: -120px; + top: -90px; + background: rgba(255, 255, 255, 0.14); +} + +.login-brand::after { + width: 240px; + height: 240px; + left: -110px; + bottom: -120px; + background: rgba(7, 11, 22, 0.18); +} + +.login-brand-head { + position: relative; + display: flex; + align-items: center; + gap: 12px; +} + +.login-brand-head strong { + display: block; + font-size: 16px; + letter-spacing: 0.3px; +} + +.login-brand-head span { + display: block; + margin-top: 2px; + font-size: 11.5px; + letter-spacing: 1.2px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.66); +} + +.login-brand-body { + position: relative; + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; +} + +.login-brand-body h1 { + margin: 0 0 14px; + font-size: 34px; + line-height: 1.28; + letter-spacing: -0.6px; + font-weight: 700; +} + +.login-brand-body p { + margin: 0 0 30px; + max-width: 340px; + font-size: 14px; + line-height: 1.8; + color: rgba(255, 255, 255, 0.78); +} + +.login-features { + list-style: none; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 16px; +} + +.login-features li { + display: flex; + align-items: center; + gap: 12px; +} + +.login-feature-icon { + display: grid; + place-items: center; + width: 38px; + height: 38px; + flex: none; + border-radius: 12px; + font-size: 17px; + color: #fff; + background: rgba(255, 255, 255, 0.16); + border: 1px solid rgba(255, 255, 255, 0.2); +} + +.login-features strong { + display: block; + font-size: 13.5px; + font-weight: 600; +} + +.login-features em { + display: block; + margin-top: 2px; + font-style: normal; + font-size: 12.5px; + color: rgba(255, 255, 255, 0.7); +} + +.login-brand-foot { + position: relative; + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding-top: 18px; + font-size: 12px; + color: rgba(255, 255, 255, 0.7); + border-top: 1px solid rgba(255, 255, 255, 0.2); +} + +.login-version { + padding: 2px 8px; + border-radius: 999px; + font-variant-numeric: tabular-nums; + color: #fff; + background: rgba(255, 255, 255, 0.16); +} + +.login-card { + display: flex; + flex-direction: column; + padding: 42px 40px 30px; + min-height: 560px; +} + +.login-card-head { + display: flex; + align-items: center; + gap: 14px; + margin-bottom: 22px; +} + +.login-card-head h2 { + margin: 0; + font-size: 23px; + line-height: 1.3; + letter-spacing: -0.3px; + color: var(--login-text); +} + +.login-card-head p { + margin: 4px 0 0; + font-size: 12.5px; + color: var(--login-muted); +} + +.login-logo { + flex: none; + border-radius: 14px; + filter: drop-shadow(0 10px 18px rgba(37, 99, 235, 0.28)); +} + +.login-steps { + list-style: none; + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 8px; + margin: 0 0 20px; + padding: 0; +} + +.login-steps li { + display: flex; + align-items: center; + gap: 6px; + padding: 9px 10px; + border-radius: 12px; + border: 1px solid var(--login-border); + background: var(--login-step-bg); + font-size: 12.5px; + color: var(--login-muted); + transition: all 0.2s ease; +} + +.login-steps li.is-active { + color: #38bdf8; + border-color: rgba(56, 189, 248, 0.45); + background: rgba(56, 189, 248, 0.12); +} + +.login-step-icon { + display: inline-flex; + font-size: 14px; +} + +.login-form .ant-form-item { + margin-bottom: 16px; +} + +.login-form .ant-form-item-label { + padding-bottom: 4px; +} + +.login-form .ant-form-item-label > label { + font-size: 12.5px; + color: var(--login-muted); +} + +.login-form .ant-input-affix-wrapper, +.login-form .ant-input { + border-radius: 11px; +} + +.login-form .ant-input-affix-wrapper .ant-input { + border-radius: 0; +} + +.login-code-btn { + height: auto !important; + padding: 0 2px !important; + font-size: 12.5px; +} + +.login-submit-item { + margin-top: 22px; + margin-bottom: 0 !important; +} + +.login-submit-item .ant-btn { + height: 46px; + border-radius: 12px; + font-weight: 600; + letter-spacing: 0.3px; +} + +.login-submit-item .ant-btn-primary { + border: none; + background: linear-gradient(135deg, #4f46e5 0%, #2563eb 55%, #06b6d4 100%); + box-shadow: 0 16px 30px -16px rgba(37, 99, 235, 0.9); +} + +.login-submit-item .ant-btn-primary:not(:disabled):hover { + background: linear-gradient(135deg, #4338ca 0%, #1d4ed8 55%, #0891b2 100%); +} + +.login-waiting { + display: flex; + gap: 12px; + margin-bottom: 16px; + padding: 14px; + border-radius: 14px; + border: 1px solid rgba(56, 189, 248, 0.35); + background: rgba(56, 189, 248, 0.1); +} + +.login-waiting-icon { + display: grid; + place-items: center; + width: 32px; + height: 32px; + flex: none; + border-radius: 50%; + font-size: 17px; + color: #38bdf8; + background: rgba(56, 189, 248, 0.16); + animation: login-pulse 1.4s ease-in-out infinite; +} + +@keyframes login-pulse { + 0%, + 100% { + transform: scale(1); + opacity: 0.85; + } + 50% { + transform: scale(1.08); + opacity: 1; + } +} + +.login-waiting-body strong { + display: block; + font-size: 13.5px; + color: var(--login-text); +} + +.login-waiting-body p { + margin: 4px 0 9px; + font-size: 12px; + line-height: 1.6; + color: var(--login-muted); +} + +.login-copy { + font-size: 12px; +} + +.login-notice { + display: flex; + align-items: flex-start; + gap: 8px; + margin-bottom: 18px; + padding: 12px 14px; + border-radius: 12px; + border: 1px solid rgba(245, 158, 11, 0.3); + background: rgba(245, 158, 11, 0.1); + color: #b45309; + font-size: 12.5px; + line-height: 1.65; +} + +.login-page.is-dark .login-notice { + color: #fbbf24; +} + +.login-switch { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + margin-top: auto; + padding-top: 16px; + border-top: 1px dashed var(--login-border); + font-size: 12.5px; + color: var(--login-muted); +} + +.login-switch-center { + justify-content: center; + border-top: none; + padding-top: 8px; +} + +@media (max-width: 980px) { + .login-shell { + grid-template-columns: 1fr; + width: min(462px, 100%); + } + + .login-brand { + display: none; + } + + .login-card { + min-height: 0; + padding: 34px 26px 26px; + } +} + +@media (max-width: 420px) { + .login-page { + padding: 16px; + } + + .login-steps li { + padding: 8px 6px; + font-size: 11.5px; + } + + .login-card-head h2 { + font-size: 21px; + } +} diff --git a/web/frontend/src/pages/LoginPage.tsx b/web/frontend/src/pages/LoginPage.tsx index 560120c..b86559c 100644 --- a/web/frontend/src/pages/LoginPage.tsx +++ b/web/frontend/src/pages/LoginPage.tsx @@ -1,11 +1,16 @@ import { useEffect, useRef, useState } from 'react'; -import { Alert, Button, Card, Divider, Form, Input, Space, Typography } from 'antd'; +import { Button, Form, Input, Space, Typography } from 'antd'; import type { InputRef } from 'antd'; import { message } from '../utils/antdMessage'; import { + ArrowLeftOutlined, + DesktopOutlined, + LoadingOutlined, LockOutlined, MobileOutlined, + ReloadOutlined, SafetyCertificateOutlined, + SafetyOutlined, UserOutlined, } from '@ant-design/icons'; import { useNavigate } from 'react-router-dom'; @@ -16,11 +21,50 @@ import { getErrorMessage } from '../utils/error'; import { useTheme } from '../store/useTheme'; import { useAppInfo } from '../hooks/useAppInfo'; -const { Title, Text } = Typography; +const { Text } = Typography; type LoginMode = 'secure' | 'legacy'; type LoginValues = { username: string; password: string; smsCode?: string }; +const FLOW_STEPS = [ + { title: '账号密码', icon: }, + { title: '短信验证码', icon: }, + { title: '本机确认', icon: }, +]; + +const BRAND_FEATURES = [ + { icon: , title: '账号密码', desc: '第一重校验,拒绝弱口令' }, + { icon: , title: '短信验证码', desc: '绑定手机接收一次性验证码' }, + { icon: , title: '本机 DCAuth', desc: 'Ed25519 设备签名,换机即失效' }, +]; + +function LogoMark({ size = 40 }: { size?: number }) { + return ( + + + + + + + + + + + + + ); +} + function errorCodeOf(error: unknown): string { return (error as { errorCode?: string } | null)?.errorCode || ''; } @@ -228,161 +272,235 @@ export default function LoginPage({ onLogin }: { onLogin?: () => void }) { } return ( -
- - - 直播运营后台 - - - 当前版本 {versionText} - +
+
); }