feat: 新增首页和图片资源
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
export default {
|
||||
nav: {
|
||||
home: 'Home',
|
||||
game: 'Game',
|
||||
},
|
||||
shell: {
|
||||
eyebrow: 'React SPA scaffold',
|
||||
subtitle: 'TanStack Router + Query + Auth + i18n',
|
||||
eyebrow: '36 Character Flower',
|
||||
subtitle: 'Real-time draw game frontend for mobile and desktop',
|
||||
},
|
||||
notFound: {
|
||||
eyebrow: '404',
|
||||
@@ -13,30 +14,118 @@ export default {
|
||||
home: 'Back home',
|
||||
},
|
||||
home: {
|
||||
eyebrow: 'Blank scaffold ready',
|
||||
title: 'Start building your frontend project from here.',
|
||||
eyebrow: 'Game shell in progress',
|
||||
title:
|
||||
'The 36-character-flower dual-device game framework is now being built.',
|
||||
description:
|
||||
'The template already includes routing, data fetching, session state, head metadata, and i18n. After removing the examples, this page becomes your clean starting point.',
|
||||
'The project has moved past the generic scaffold stage. It is now being structured around a shared game route, shared state, and split mobile and desktop views for the real-time betting experience.',
|
||||
cards: {
|
||||
routingMode: 'Routing mode',
|
||||
dataLayer: 'Data layer',
|
||||
transport: 'Transport',
|
||||
auth: 'Auth layer',
|
||||
metadata: 'Page metadata',
|
||||
routingMode: 'Routing',
|
||||
dataLayer: 'State model',
|
||||
transport: 'Realtime',
|
||||
auth: 'Product',
|
||||
metadata: 'Current focus',
|
||||
},
|
||||
values: {
|
||||
routingMode: 'SPA + file routes',
|
||||
dataLayer: 'TanStack Query',
|
||||
transport: 'ky',
|
||||
auth: 'Zustand session scaffold',
|
||||
metadata: 'Dynamic title / meta',
|
||||
routingMode: 'Shared URL + split device views',
|
||||
dataLayer: 'Round / Bet / User / UI / Connection',
|
||||
transport: 'HTTP + WebSocket',
|
||||
auth: '36-grid live draw gameplay',
|
||||
metadata: 'Scaffold the structure before state machine polish',
|
||||
},
|
||||
footnote:
|
||||
'A practical place to start is replacing src/routes/$lang/index.tsx, src/lib/api/api-client.ts, and src/store/auth-store.ts with your project-specific structure.',
|
||||
'Next up: the main game route, shared business model, and dedicated mobile and desktop page shells.',
|
||||
primaryAction: 'Enter game lobby',
|
||||
secondaryAction: 'View project structure',
|
||||
},
|
||||
language: {
|
||||
label: 'Language',
|
||||
zhCN: '中文',
|
||||
enUS: 'English',
|
||||
},
|
||||
game: {
|
||||
metaTitle: 'Game Lobby',
|
||||
metaDescription: '36-character-flower live game lobby.',
|
||||
lobbyTitle: '36 Character Flower Lobby',
|
||||
lobbySubtitle:
|
||||
'Under one shared business route, mobile and desktop mount different views on top of the same game data and state.',
|
||||
status: {
|
||||
roundState: 'Round state',
|
||||
currentRound: 'Current round {{id}}',
|
||||
tablePool: 'Table pool',
|
||||
onlineCount: '{{count}} online',
|
||||
activeChip: 'Active chip',
|
||||
announcementsRead: '{{read}}/{{total}} announcements read',
|
||||
connection: 'Connection',
|
||||
connectionHealthy: 'Live sync stable',
|
||||
connectionRecovering: 'Waiting to recover',
|
||||
synced: 'Synced',
|
||||
degraded: 'Degraded',
|
||||
},
|
||||
board: {
|
||||
historyTitle: 'Round history',
|
||||
historySubtitle: 'Recent draw and payout trace',
|
||||
trendTitle: 'Trend radar',
|
||||
trendSubtitle: 'Momentum and miss streak snapshot',
|
||||
stageTitle: 'Draw stage',
|
||||
stageSubtitle:
|
||||
'This stage holds the main board and control structure before the full state machine and animation pass.',
|
||||
currentPhase: 'Current phase',
|
||||
selectedBet: 'Bet {{amount}}',
|
||||
hitCount: '{{count}} hits',
|
||||
hitBadge: '{{count}}x',
|
||||
badgeWin: 'Win',
|
||||
badgeBet: 'Bet',
|
||||
cellLabel: 'Cell {{id}}',
|
||||
winningCell: 'Winning cell {{id}}',
|
||||
missedRounds: 'Missed {{count}} rounds',
|
||||
rising: 'Rising',
|
||||
falling: 'Falling',
|
||||
steady: 'Steady',
|
||||
hitTotal: '{{count}} hits',
|
||||
},
|
||||
phases: {
|
||||
betting: 'Betting',
|
||||
locked: 'Locked',
|
||||
revealing: 'Revealing',
|
||||
settled: 'Settled',
|
||||
},
|
||||
actions: {
|
||||
unifiedBetHint: 'Unified bet',
|
||||
totalBet: 'Total bet',
|
||||
canBet: 'Can bet',
|
||||
yes: 'Yes',
|
||||
no: 'No',
|
||||
quickBet: 'Quick bet 08',
|
||||
clearPending: 'Clear pending',
|
||||
autoModeDemo: 'Auto mode demo',
|
||||
stopAuto: 'Stop auto',
|
||||
},
|
||||
modal: {
|
||||
eyebrow: 'Announcement',
|
||||
acknowledge: 'Acknowledge',
|
||||
later: 'Later',
|
||||
line1:
|
||||
'This will later connect to the real announcement body, confirmation checkbox, and persistence flow.',
|
||||
line2: 'For now it validates the shared modal structure.',
|
||||
},
|
||||
autoSpin: {
|
||||
eyebrow: 'Auto spin',
|
||||
title: 'Auto spin running',
|
||||
description:
|
||||
'Auto mode will cover the board while preserving target cell focus and progress.',
|
||||
trailingLabel: 'Manual input locked',
|
||||
},
|
||||
footer: {
|
||||
implementationTitle: 'Current implementation',
|
||||
implementationSubtitle:
|
||||
'This iteration prioritizes the dual-device shell, shared model, and business wiring.',
|
||||
implementationBody:
|
||||
'Next steps are the real API, WebSocket, full UI store, and round lifecycle state machine.',
|
||||
limitsTitle: 'Table limits',
|
||||
limitsSubtitle: 'Derived from dashboard mock data',
|
||||
minBet: 'Min bet',
|
||||
maxBet: 'Max bet',
|
||||
},
|
||||
},
|
||||
} as const
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
export default {
|
||||
nav: {
|
||||
home: '首页',
|
||||
game: '游戏大厅',
|
||||
},
|
||||
shell: {
|
||||
eyebrow: 'React SPA 脚手架',
|
||||
subtitle: 'TanStack Router + Query + Auth + i18n',
|
||||
eyebrow: '36字花',
|
||||
subtitle: '实时开奖 · 双端适配 · 多语言游戏前端',
|
||||
},
|
||||
notFound: {
|
||||
eyebrow: '404',
|
||||
@@ -13,30 +14,114 @@ export default {
|
||||
home: '返回首页',
|
||||
},
|
||||
home: {
|
||||
eyebrow: '空白脚手架已就绪',
|
||||
title: '从这里开始搭建你的前端项目。',
|
||||
eyebrow: '游戏前台骨架已启动',
|
||||
title: '36 字花双端游戏框架正在落地。',
|
||||
description:
|
||||
'模板已经接好路由、请求层、会话状态、head metadata 和多语言。删除示例后,这一页就是你的干净起点。',
|
||||
'当前版本已经切入真实业务方向:统一路由、共享状态、移动端与桌面端分视图,后续会在这个基础上继续接入实时状态机、下注流程和开奖动画。',
|
||||
cards: {
|
||||
routingMode: '路由模式',
|
||||
dataLayer: '数据层',
|
||||
transport: '请求层',
|
||||
auth: '认证层',
|
||||
metadata: '页面元信息',
|
||||
routingMode: '路由策略',
|
||||
dataLayer: '状态规划',
|
||||
transport: '联机能力',
|
||||
auth: '业务目标',
|
||||
metadata: '当前重点',
|
||||
},
|
||||
values: {
|
||||
routingMode: 'SPA + 文件路由',
|
||||
dataLayer: 'TanStack Query',
|
||||
transport: 'ky',
|
||||
auth: 'Zustand 会话基座',
|
||||
metadata: '动态 title / meta',
|
||||
routingMode: '统一 URL + 双端分视图',
|
||||
dataLayer: 'Round / Bet / User / UI / Connection',
|
||||
transport: 'HTTP + WebSocket',
|
||||
auth: '36 宫格实时开奖玩法',
|
||||
metadata: '先落结构,再接状态机与动效',
|
||||
},
|
||||
footnote:
|
||||
'建议先从 src/routes/$lang/index.tsx、src/lib/api/api-client.ts 和 src/store/auth-store.ts 开始替换成你的项目结构。',
|
||||
'下一步会优先完成游戏主路由、共享业务模型和移动端 / 桌面端页面骨架。',
|
||||
primaryAction: '进入游戏大厅',
|
||||
secondaryAction: '查看项目结构',
|
||||
},
|
||||
language: {
|
||||
label: '语言',
|
||||
zhCN: '中文',
|
||||
enUS: 'English',
|
||||
},
|
||||
game: {
|
||||
metaTitle: '游戏大厅',
|
||||
metaDescription: '36字花实时开奖游戏大厅。',
|
||||
lobbyTitle: '36字花游戏大厅',
|
||||
lobbySubtitle:
|
||||
'统一业务路由下,移动端与桌面端分别挂载不同视图,但共用一套游戏数据和状态。',
|
||||
status: {
|
||||
roundState: '回合状态',
|
||||
currentRound: '当前期号 {{id}}',
|
||||
tablePool: '桌面资金池',
|
||||
onlineCount: '{{count}} 在线',
|
||||
activeChip: '当前筹码',
|
||||
announcementsRead: '已读公告 {{read}}/{{total}}',
|
||||
connection: '连接质量',
|
||||
connectionHealthy: '连接稳定',
|
||||
connectionRecovering: '等待重连',
|
||||
synced: '已同步',
|
||||
degraded: '异常',
|
||||
},
|
||||
board: {
|
||||
historyTitle: '开奖历史',
|
||||
historySubtitle: '最近开奖与派奖记录',
|
||||
trendTitle: '冷热走势',
|
||||
trendSubtitle: '热度与遗漏参考',
|
||||
stageTitle: '开奖舞台',
|
||||
stageSubtitle: '这一层先挂载主盘面与中控结构,后续再接真实状态机和动画。',
|
||||
currentPhase: '当前阶段',
|
||||
selectedBet: '下注 {{amount}}',
|
||||
hitCount: '命中 {{count}} 次',
|
||||
hitBadge: '{{count}}x',
|
||||
badgeWin: '中奖',
|
||||
badgeBet: '下注',
|
||||
cellLabel: '字花 {{id}}',
|
||||
winningCell: '中奖格 {{id}}',
|
||||
missedRounds: '遗漏 {{count}} 局',
|
||||
rising: '热度上升',
|
||||
falling: '热度回落',
|
||||
steady: '稳定',
|
||||
hitTotal: '{{count}} 命中',
|
||||
},
|
||||
phases: {
|
||||
betting: '下注中',
|
||||
locked: '已封盘',
|
||||
revealing: '开奖中',
|
||||
settled: '已结算',
|
||||
},
|
||||
actions: {
|
||||
unifiedBetHint: '统一下注额',
|
||||
totalBet: '总下注',
|
||||
canBet: '可下注',
|
||||
yes: '是',
|
||||
no: '否',
|
||||
quickBet: '快速选中 08',
|
||||
clearPending: '清空未确认',
|
||||
autoModeDemo: '自动托管演示',
|
||||
stopAuto: '停止托管',
|
||||
},
|
||||
modal: {
|
||||
eyebrow: '强制公告',
|
||||
acknowledge: '已读并进入',
|
||||
later: '稍后查看',
|
||||
line1: '这里后续会接真实公告图文、勾选确认和已读状态。',
|
||||
line2: '当前先用共享弹窗骨架验证结构。',
|
||||
},
|
||||
autoSpin: {
|
||||
eyebrow: '自动托管',
|
||||
title: '自动托管运行中',
|
||||
description: '托管态会覆盖主盘面,但目标格子和进度信息仍然保留可见。',
|
||||
trailingLabel: '手动输入已锁定',
|
||||
},
|
||||
footer: {
|
||||
implementationTitle: '当前实现说明',
|
||||
implementationSubtitle:
|
||||
'这一版优先把双端壳层、共享模型和业务接线落到代码里。',
|
||||
implementationBody:
|
||||
'下一步会继续接入真实 API、WebSocket、完整 UI Store 和回合状态机。',
|
||||
limitsTitle: '桌限信息',
|
||||
limitsSubtitle: '来自 dashboard mock 数据',
|
||||
minBet: '最低下注',
|
||||
maxBet: '最高下注',
|
||||
},
|
||||
},
|
||||
} as const
|
||||
|
||||
Reference in New Issue
Block a user