refactor(game): 优化游戏组件并实现国际化支持

- 在AppBootResourceGate组件中集成react-i18next实现资源加载文本的国际化
- 修改DesktopAnimal组件中的loading dots key以提高渲染性能
- 在DesktopControl组件中添加useRef和useEffect钩子管理定时器清理逻辑
- 将DesktopTitle组件重构为MessageBroadcast组件并增强其响应式设计
- 更新DesktopSupportModal组件中的客户服务文本为国际化格式
- 在AuthSession模块中实现本地存储数据清理时保留关键偏好设置
- 调整多个游戏组件的样式类以改进移动端适配效果
- 移除未使用的桌面提取功能相关代码文件
- 更新GitNexus索引统计数据反映最新的代码变更
This commit is contained in:
JiaJun
2026-06-04 18:01:40 +08:00
parent bfb4b76611
commit a6b34660ad
48 changed files with 3185 additions and 1216 deletions

View File

@@ -77,6 +77,8 @@ export function AppNotificationAlert() {
const tone = TONE_CLASS_BY_TYPE[activeDialog.type]
const isClosing = closingDialogId === activeDialog.id
const isMobileViewport =
typeof window !== 'undefined' ? window.innerWidth <= 768 : false
const motionState = isClosing ? 'closing' : 'visible'
const motionVariants = {
@@ -111,17 +113,31 @@ export function AppNotificationAlert() {
} as const
return createPortal(
<div className="pointer-events-none fixed inset-x-0 top-[calc(var(--design-unit)*52)] z-50 flex justify-center px-4">
<div
className={cn(
'pointer-events-none fixed inset-x-0 z-50 flex justify-center',
isMobileViewport
? 'top-[calc(var(--design-unit)*38)] px-design-8'
: 'top-[calc(var(--design-unit)*52)] px-4',
)}
>
<motion.div
key={activeDialog.id}
initial="hidden"
animate={motionState}
variants={motionVariants}
className="w-[min(92vw,calc(var(--design-unit)*468))] will-change-transform"
className={cn(
'will-change-transform',
isMobileViewport
? 'w-[min(94vw,calc(var(--design-unit)*280))]'
: 'w-[min(92vw,calc(var(--design-unit)*468))]',
)}
>
<Alert
className={cn(
'relative origin-top flex w-full max-w-none items-center gap-design-12 overflow-hidden rounded-[calc(var(--design-unit)*14)] border px-design-14 py-design-12 text-left backdrop-blur-xl',
isMobileViewport
? 'relative origin-top flex w-full max-w-none items-center gap-design-8 overflow-hidden rounded-[calc(var(--design-unit)*10)] border px-design-10 py-design-8 text-left backdrop-blur-xl'
: 'relative origin-top flex w-full max-w-none items-center gap-design-12 overflow-hidden rounded-[calc(var(--design-unit)*14)] border px-design-14 py-design-12 text-left backdrop-blur-xl',
tone.alert,
)}
>
@@ -134,7 +150,9 @@ export function AppNotificationAlert() {
<div
aria-hidden="true"
className={cn(
'absolute top-design-10 bottom-design-10 left-design-10 w-[calc(var(--design-unit)*3)] rounded-full opacity-90 shadow-[0_0_calc(var(--design-unit)*14)_currentColor]',
isMobileViewport
? 'absolute top-design-8 bottom-design-8 left-design-7 w-[calc(var(--design-unit)*2.5)] rounded-full opacity-90 shadow-[0_0_calc(var(--design-unit)*10)_currentColor]'
: 'absolute top-design-10 bottom-design-10 left-design-10 w-[calc(var(--design-unit)*3)] rounded-full opacity-90 shadow-[0_0_calc(var(--design-unit)*14)_currentColor]',
tone.line,
)}
/>
@@ -148,24 +166,42 @@ export function AppNotificationAlert() {
<div
className={cn(
'relative z-10 flex h-design-38 w-design-38 shrink-0 items-center justify-center rounded-[calc(var(--design-unit)*11)] border',
isMobileViewport
? 'relative z-10 flex h-design-28 w-design-28 shrink-0 items-center justify-center rounded-[calc(var(--design-unit)*8)] border'
: 'relative z-10 flex h-design-38 w-design-38 shrink-0 items-center justify-center rounded-[calc(var(--design-unit)*11)] border',
tone.iconShell,
)}
>
{tone.icon}
</div>
<div className="relative z-10 flex min-h-design-38 min-w-0 flex-1 flex-col justify-center">
<div
className={cn(
'relative z-10 min-w-0 flex-1 flex-col justify-center',
isMobileViewport
? 'flex min-h-design-28'
: 'flex min-h-design-38',
)}
>
<AlertTitle
className={cn(
'text-design-15 font-semibold leading-[1.25] text-shadow-[0_1px_0_rgba(0,0,0,0.18)]',
isMobileViewport
? 'text-design-11 font-semibold leading-[1.25] text-shadow-[0_1px_0_rgba(0,0,0,0.18)]'
: 'text-design-15 font-semibold leading-[1.25] text-shadow-[0_1px_0_rgba(0,0,0,0.18)]',
tone.title,
)}
>
{activeDialog.message}
</AlertTitle>
{activeDialog.description ? (
<AlertDescription className="pt-design-3 whitespace-pre-line text-design-12 leading-[1.45] text-white/62">
<AlertDescription
className={cn(
'whitespace-pre-line text-white/62',
isMobileViewport
? 'pt-design-2 text-design-9 leading-[1.35]'
: 'pt-design-3 text-design-12 leading-[1.45]',
)}
>
{activeDialog.description}
</AlertDescription>
) : null}