@svadmin/core 0.27.1 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/i18n.svelte.ts +386 -0
- package/src/theme.svelte.ts +9 -0
package/package.json
CHANGED
package/src/i18n.svelte.ts
CHANGED
|
@@ -144,6 +144,19 @@ const baseLocales: Record<string, Record<string, string>> = {
|
|
|
144
144
|
'devtools.title': '开发者工具 (Ctrl+Shift+D)',
|
|
145
145
|
// Validation
|
|
146
146
|
// Chat
|
|
147
|
+
'chat.title': 'AI 助手',
|
|
148
|
+
'chat.typing': '输入中...',
|
|
149
|
+
'chat.clear': '清空',
|
|
150
|
+
'chat.welcome': '我可以帮你做什么?',
|
|
151
|
+
'chat.welcomeDesc': '可以询问当前后台、资源和库存运营数据。',
|
|
152
|
+
'chat.thinking': '思考中...',
|
|
153
|
+
'chat.placeholder': '输入消息...',
|
|
154
|
+
'chat.shortcutHint': '切换',
|
|
155
|
+
'chat.error': '抱歉,处理时出现问题,请重试。',
|
|
156
|
+
'chat.approvalRequired': '需要确认',
|
|
157
|
+
'chat.suggestion1': '如何新建一条资源记录?',
|
|
158
|
+
'chat.suggestion2': '解释当前数据模型',
|
|
159
|
+
'chat.suggestion3': '帮我写一个筛选条件',
|
|
147
160
|
'chat.contextInfo': '当前上下文:{resource}',
|
|
148
161
|
'chat.actionButton': '执行',
|
|
149
162
|
'chat.historyRestored': '已恢复聊天记录',
|
|
@@ -159,9 +172,68 @@ const baseLocales: Record<string, Record<string, string>> = {
|
|
|
159
172
|
// Settings
|
|
160
173
|
'settings.title': '设置',
|
|
161
174
|
'settings.profile': '个人资料',
|
|
175
|
+
'settings.accountPreferences': '账户偏好',
|
|
162
176
|
'settings.appearance': '外观设置',
|
|
163
177
|
'settings.about': '关于',
|
|
164
178
|
'settings.general': '通用',
|
|
179
|
+
'settings.security': '安全设置',
|
|
180
|
+
'settings.accessSecurity': '安全与权限',
|
|
181
|
+
'settings.integrations': '第三方集成',
|
|
182
|
+
'settings.integrationApi': '集成与 API',
|
|
183
|
+
'settings.notifications': '通知设置',
|
|
184
|
+
'settings.api': 'API 设置',
|
|
185
|
+
'settings.developer': '开发者',
|
|
186
|
+
'settings.workspace': '工作区',
|
|
187
|
+
'settings.securityDescription': '管理您的密码、活跃会话和双重身份验证偏好。',
|
|
188
|
+
'settings.integrationsDescription': '连接和管理工作区的第三方服务扩展。',
|
|
189
|
+
'settings.notificationsDescription': '配置系统警报的接收方式和时机。',
|
|
190
|
+
'settings.apiDescription': '生成并管理安全 API 密钥,以便集成外部程序脚本。',
|
|
191
|
+
'security.twoFactorAuth': '双重身份验证 (2FA)',
|
|
192
|
+
'security.twoFactorDescription': '启用后,在输入密码后还需要输入手机验证码,为账户增加额外安全保障。',
|
|
193
|
+
'security.enable2fa': '启用双重身份验证',
|
|
194
|
+
'security.twoFactorActive': '双重身份验证已启用。新登录时将需要验证码。',
|
|
195
|
+
'security.twoFactorInactive': '双重身份验证已禁用。建议开启以保护账户安全。',
|
|
196
|
+
'security.passwordLastChanged': '上次修改:{time}',
|
|
197
|
+
'security.activeSessions': '活跃会话',
|
|
198
|
+
'security.sessionsDescription': '以下是已登录您账户的设备。您可以撤销任何不识别的设备。',
|
|
199
|
+
'security.revokeOthers': '注销其他所有设备',
|
|
200
|
+
'security.currentSession': '当前设备',
|
|
201
|
+
'security.revokeSession': '注销此设备',
|
|
202
|
+
'security.noSessions': '无活跃会话。',
|
|
203
|
+
'integrations.statusConnected': '已连接',
|
|
204
|
+
'integrations.statusDisconnected': '未连接',
|
|
205
|
+
'integrations.enabled': '已启用',
|
|
206
|
+
'integrations.disabled': '已禁用',
|
|
207
|
+
'integrations.addMoreHint': '需要自定义集成?请联系管理员注册新的应用程序。',
|
|
208
|
+
'notifications.emailTitle': '邮件通知',
|
|
209
|
+
'notifications.emailDescription': '将系统自动发送的通知推送到您的电子邮箱。',
|
|
210
|
+
'notifications.securityAlerts': '安全警报',
|
|
211
|
+
'notifications.securityAlertsDesc': '在密码修改、新登录尝试或生成 API 密钥时收到通知。',
|
|
212
|
+
'notifications.activityLogs': '活动报告',
|
|
213
|
+
'notifications.activityLogsDesc': '每周获取关于系统审计、资源修改和后台任务的摘要。',
|
|
214
|
+
'notifications.systemAlerts': '系统报告',
|
|
215
|
+
'notifications.systemAlertsDesc': '在服务器实例或数据流水线发生故障时接收实时通知。',
|
|
216
|
+
'notifications.pushTitle': '应用内与浏览器推送',
|
|
217
|
+
'notifications.pushDescription': '在当前打开的浏览器标签页上接收推送通知。',
|
|
218
|
+
'notifications.securityPushDesc': '在检测到未经授权的登录时立即在浏览器发出警报。',
|
|
219
|
+
'notifications.activityPushDesc': '当同事编辑资源时,即时接收操作日志推送。',
|
|
220
|
+
'notifications.systemPushDesc': '针对任务队列和内存异常的严重警报。',
|
|
221
|
+
'notifications.smsTitle': '短信紧急警报',
|
|
222
|
+
'notifications.smsDescription': '可能产生标准资费。仅在需要管理员手动干预的紧急事件时使用。',
|
|
223
|
+
'notifications.criticalSecurity': '关键安全事件',
|
|
224
|
+
'notifications.criticalSecurityDesc': '在发生 Root 密码重置或双重身份验证绕过时发送短信警报。',
|
|
225
|
+
'api.generateTitle': '创建新 API 密钥',
|
|
226
|
+
'api.generateDesc': '配置权限范围并生成访问令牌。',
|
|
227
|
+
'api.keyName': '密钥名称',
|
|
228
|
+
'api.permissions': '权限范围',
|
|
229
|
+
'api.generateButton': '生成令牌',
|
|
230
|
+
'api.activeKeysTitle': '活跃 API 密钥',
|
|
231
|
+
'api.activeKeysDesc': '请妥善保管这些密钥。切勿在公共仓库中分享。',
|
|
232
|
+
'api.successTitle': 'API 密钥已生成',
|
|
233
|
+
'api.successHint': '请立即复制此令牌。关闭此提示后,您将无法再次查看它。',
|
|
234
|
+
'api.noKeys': '尚未生成活跃的 API 密钥。',
|
|
235
|
+
'error.pageNotFoundDescription': '抱歉,您访问的页面不存在或已被移除。',
|
|
236
|
+
'error.internalServerErrorDescription': '系统发生了一些问题,请稍后再试或联系支持人员。',
|
|
165
237
|
'settings.system': '系统',
|
|
166
238
|
'settings.themeMode': '主题模式',
|
|
167
239
|
'settings.light': '浅色',
|
|
@@ -316,6 +388,127 @@ const baseLocales: Record<string, Record<string, string>> = {
|
|
|
316
388
|
'task.status.dead_lettered': '死信',
|
|
317
389
|
'task.status.retry_scheduled': '等待重试',
|
|
318
390
|
'task.status.leased': '已领取',
|
|
391
|
+
// Public Profile
|
|
392
|
+
'publicProfile.title': '公开资料',
|
|
393
|
+
'publicProfile.projects': '项目',
|
|
394
|
+
'publicProfile.activity': '动态',
|
|
395
|
+
'publicProfile.teams': '团队',
|
|
396
|
+
'publicProfile.profile': '资料',
|
|
397
|
+
'publicProfile.viewProfile': '查看资料',
|
|
398
|
+
'publicProfile.followers': '关注者',
|
|
399
|
+
'publicProfile.following': '关注中',
|
|
400
|
+
'publicProfile.editProfile': '编辑资料',
|
|
401
|
+
'publicProfile.sendMessage': '发消息',
|
|
402
|
+
'publicProfile.addFriend': '添加好友',
|
|
403
|
+
'publicProfile.projects2Col': '项目 (两列)',
|
|
404
|
+
'publicProfile.projects3Col': '项目 (三列)',
|
|
405
|
+
'publicProfile.noProjects': '暂无项目',
|
|
406
|
+
'publicProfile.noActivity': '暂无动态',
|
|
407
|
+
'publicProfile.noTeams': '暂无团队',
|
|
408
|
+
'publicProfile.joinedDate': '加入于 {date}',
|
|
409
|
+
'publicProfile.projectMembers': '{count} 名成员',
|
|
410
|
+
'publicProfile.projectTasks': '{count} 个任务',
|
|
411
|
+
'publicProfile.activityPosted': '发布了内容',
|
|
412
|
+
'publicProfile.activityCommented': '评论了',
|
|
413
|
+
'publicProfile.activityJoined': '加入了',
|
|
414
|
+
'publicProfile.activityCreated': '创建了',
|
|
415
|
+
// Profile variants
|
|
416
|
+
'profile.company': '公司资料',
|
|
417
|
+
'profile.companyDescription': '公司简介和统计信息',
|
|
418
|
+
'profile.gamer': '玩家资料',
|
|
419
|
+
'profile.gamerDescription': '游戏成就和统计',
|
|
420
|
+
'profile.default': '个人资料',
|
|
421
|
+
'profile.defaultDescription': '个人简介和活动',
|
|
422
|
+
'profile.companyName': '公司名称',
|
|
423
|
+
'profile.industry': '行业',
|
|
424
|
+
'profile.employees': '员工数',
|
|
425
|
+
'profile.founded': '成立时间',
|
|
426
|
+
'profile.website': '网站',
|
|
427
|
+
'profile.gamerTag': '玩家标签',
|
|
428
|
+
'profile.level': '等级',
|
|
429
|
+
'profile.rank': '排名',
|
|
430
|
+
'profile.gamesPlayed': '游戏场次',
|
|
431
|
+
'profile.winRate': '胜率',
|
|
432
|
+
// Account extensions
|
|
433
|
+
'account.getStarted': '入门指南',
|
|
434
|
+
'account.getStartedDescription': '按照步骤完成初始设置,快速上手平台功能。',
|
|
435
|
+
'account.companyProfile': '公司信息',
|
|
436
|
+
'account.companyProfileDescription': '管理公司基本信息和品牌设置。',
|
|
437
|
+
'account.settingsPlain': '基本设置',
|
|
438
|
+
'account.settingsPlainDescription': '管理基本账户设置。',
|
|
439
|
+
'account.settingsSidebar': '侧栏设置',
|
|
440
|
+
'account.settingsSidebarDescription': '配置侧边栏布局和行为。',
|
|
441
|
+
'account.settingsEnterprise': '企业设置',
|
|
442
|
+
'account.settingsEnterpriseDescription': '管理企业级配置和策略。',
|
|
443
|
+
'account.importMembers': '导入成员',
|
|
444
|
+
'account.importMembersDescription': '从 CSV 文件批量导入团队成员。',
|
|
445
|
+
'account.membersStarter': '成员概览',
|
|
446
|
+
'account.membersStarterDescription': '查看和管理工作区成员。',
|
|
447
|
+
'account.securityLog': '安全日志',
|
|
448
|
+
'account.securityLogDescription': '查看账户安全相关的操作记录。',
|
|
449
|
+
'account.step': '第 {current} 步(共 {total} 步)',
|
|
450
|
+
'account.completeSetup': '完成设置',
|
|
451
|
+
'account.uploadAvatar': '上传头像',
|
|
452
|
+
'account.connectProvider': '连接服务',
|
|
453
|
+
'account.setupProfile': '完善资料',
|
|
454
|
+
'account.setupTeam': '邀请团队',
|
|
455
|
+
'account.skipSetup': '跳过设置',
|
|
456
|
+
'account.nextStep': '下一步',
|
|
457
|
+
'account.prevStep': '上一步',
|
|
458
|
+
'account.finishSetup': '完成设置',
|
|
459
|
+
'account.dragOrClick': '拖拽文件或点击上传',
|
|
460
|
+
'account.supportedFormats': '支持 CSV、XLSX 格式',
|
|
461
|
+
'account.downloadTemplate': '下载模板',
|
|
462
|
+
'account.startImport': '开始导入',
|
|
463
|
+
'account.importProgress': '导入进度',
|
|
464
|
+
'account.importComplete': '导入完成',
|
|
465
|
+
'account.imported': '已导入 {count} 条记录',
|
|
466
|
+
'account.member': '成员',
|
|
467
|
+
'account.role': '角色',
|
|
468
|
+
'account.status': '状态',
|
|
469
|
+
'account.joined': '加入时间',
|
|
470
|
+
'account.active': '活跃',
|
|
471
|
+
'account.invited': '已邀请',
|
|
472
|
+
'account.inactive': '未激活',
|
|
473
|
+
'account.inviteMember': '邀请成员',
|
|
474
|
+
'account.removeMember': '移除成员',
|
|
475
|
+
// Network
|
|
476
|
+
'network.userCards': '用户卡片',
|
|
477
|
+
'network.userCardsDescription': '以卡片形式浏览用户列表。',
|
|
478
|
+
'network.teamCrew': '团队花名册',
|
|
479
|
+
'network.teamCrewDescription': '以表格形式查看团队成员信息。',
|
|
480
|
+
'network.connect': '关注',
|
|
481
|
+
'network.connected': '已关注',
|
|
482
|
+
'network.nftCollection': 'NFT 收藏',
|
|
483
|
+
'network.nftCount': '{count} 件藏品',
|
|
484
|
+
'network.floorPrice': '地板价',
|
|
485
|
+
'network.volume': '交易量',
|
|
486
|
+
'network.viewCollection': '查看收藏',
|
|
487
|
+
// Auth
|
|
488
|
+
'auth.twoFactorSetup': '设置双重验证',
|
|
489
|
+
'auth.twoFactorVerify': '验证身份',
|
|
490
|
+
'auth.twoFactorRecovery': '恢复代码',
|
|
491
|
+
'auth.twoFactorScanQR': '使用验证器应用扫描二维码',
|
|
492
|
+
'auth.twoFactorEnterCode': '输入 6 位验证码',
|
|
493
|
+
'auth.twoFactorVerifySuccess': '双重验证已成功启用',
|
|
494
|
+
'auth.twoFactorSaveRecovery': '请妥善保存以下恢复代码',
|
|
495
|
+
'auth.twoFactorRecoveryHint': '当您无法使用验证器时,可使用恢复代码登录。每个代码只能使用一次。',
|
|
496
|
+
'auth.twoFactorDisable': '关闭双重验证',
|
|
497
|
+
'auth.twoFactorDisableConfirm': '确认要关闭双重验证吗?这将降低账户安全性。',
|
|
498
|
+
// Security Log
|
|
499
|
+
'securityLog.event': '事件',
|
|
500
|
+
'securityLog.ip': 'IP 地址',
|
|
501
|
+
'securityLog.device': '设备',
|
|
502
|
+
'securityLog.location': '位置',
|
|
503
|
+
'securityLog.time': '时间',
|
|
504
|
+
'securityLog.loginSuccess': '登录成功',
|
|
505
|
+
'securityLog.loginFailed': '登录失败',
|
|
506
|
+
'securityLog.passwordChanged': '密码已修改',
|
|
507
|
+
'securityLog.twoFactorEnabled': '已启用双重验证',
|
|
508
|
+
'securityLog.twoFactorDisabled': '已关闭双重验证',
|
|
509
|
+
'securityLog.apiKeyCreated': 'API 密钥已创建',
|
|
510
|
+
'securityLog.apiKeyRevoked': 'API 密钥已吊销',
|
|
511
|
+
'securityLog.sessionRevoked': '会话已注销',
|
|
319
512
|
},
|
|
320
513
|
'en': {
|
|
321
514
|
'common.list': 'List',
|
|
@@ -458,6 +651,19 @@ const baseLocales: Record<string, Record<string, string>> = {
|
|
|
458
651
|
'devtools.title': 'DevTools (Ctrl+Shift+D)',
|
|
459
652
|
// Validation
|
|
460
653
|
// Chat
|
|
654
|
+
'chat.title': 'AI Assistant',
|
|
655
|
+
'chat.typing': 'Typing...',
|
|
656
|
+
'chat.clear': 'Clear',
|
|
657
|
+
'chat.welcome': 'How can I help?',
|
|
658
|
+
'chat.welcomeDesc': 'Ask me anything about your admin panel, resources, and inventory operations.',
|
|
659
|
+
'chat.thinking': 'Thinking...',
|
|
660
|
+
'chat.placeholder': 'Type a message...',
|
|
661
|
+
'chat.shortcutHint': 'to toggle',
|
|
662
|
+
'chat.error': 'Sorry, something went wrong. Please try again.',
|
|
663
|
+
'chat.approvalRequired': 'Approval required',
|
|
664
|
+
'chat.suggestion1': 'How do I create a new resource?',
|
|
665
|
+
'chat.suggestion2': 'Explain the data model',
|
|
666
|
+
'chat.suggestion3': 'Help me write a filter query',
|
|
461
667
|
'chat.contextInfo': 'Current context: {resource}',
|
|
462
668
|
'chat.actionButton': 'Execute',
|
|
463
669
|
'chat.historyRestored': 'Chat history restored',
|
|
@@ -473,9 +679,68 @@ const baseLocales: Record<string, Record<string, string>> = {
|
|
|
473
679
|
// Settings
|
|
474
680
|
'settings.title': 'Settings',
|
|
475
681
|
'settings.profile': 'Profile',
|
|
682
|
+
'settings.accountPreferences': 'Account preferences',
|
|
476
683
|
'settings.appearance': 'Appearance',
|
|
477
684
|
'settings.about': 'About',
|
|
478
685
|
'settings.general': 'General',
|
|
686
|
+
'settings.security': 'Security',
|
|
687
|
+
'settings.accessSecurity': 'Security and roles',
|
|
688
|
+
'settings.integrations': 'Integrations',
|
|
689
|
+
'settings.integrationApi': 'Integrations and API',
|
|
690
|
+
'settings.notifications': 'Notifications',
|
|
691
|
+
'settings.api': 'API Settings',
|
|
692
|
+
'settings.developer': 'Developer',
|
|
693
|
+
'settings.workspace': 'Workspace',
|
|
694
|
+
'settings.securityDescription': 'Manage your password, active sessions, and multi-factor authentication preferences.',
|
|
695
|
+
'settings.integrationsDescription': 'Connect and manage third-party service extensions for your workspace.',
|
|
696
|
+
'settings.notificationsDescription': 'Configure how and when you receive system alerts.',
|
|
697
|
+
'settings.apiDescription': 'Generate and manage secure API keys to integrate external programmatic scripts.',
|
|
698
|
+
'security.twoFactorAuth': 'Two-Factor Authentication (2FA)',
|
|
699
|
+
'security.twoFactorDescription': 'Add an extra layer of security to your account by requiring a verification code in addition to your password.',
|
|
700
|
+
'security.enable2fa': 'Enable 2FA Verification',
|
|
701
|
+
'security.twoFactorActive': '2FA is currently active. Verification codes will be required on new logins.',
|
|
702
|
+
'security.twoFactorInactive': '2FA is currently disabled. Protect your account by turning it on.',
|
|
703
|
+
'security.passwordLastChanged': 'Last changed: {time}',
|
|
704
|
+
'security.activeSessions': 'Active Sessions',
|
|
705
|
+
'security.sessionsDescription': 'These are the devices that have logged into your account. Revoke any you do not recognize.',
|
|
706
|
+
'security.revokeOthers': 'Sign Out Other Devices',
|
|
707
|
+
'security.currentSession': 'Current Device',
|
|
708
|
+
'security.revokeSession': 'Sign out device',
|
|
709
|
+
'security.noSessions': 'No active sessions.',
|
|
710
|
+
'integrations.statusConnected': 'Connected',
|
|
711
|
+
'integrations.statusDisconnected': 'Disconnected',
|
|
712
|
+
'integrations.enabled': 'Enabled',
|
|
713
|
+
'integrations.disabled': 'Disabled',
|
|
714
|
+
'integrations.addMoreHint': 'Need custom integrations? Contact your administrator to register new application manifests.',
|
|
715
|
+
'notifications.emailTitle': 'Email Notifications',
|
|
716
|
+
'notifications.emailDescription': 'Get automated system messages delivered directly to your mailbox.',
|
|
717
|
+
'notifications.securityAlerts': 'Security Alerts',
|
|
718
|
+
'notifications.securityAlertsDesc': 'Get notified of password changes, login attempts, and key generations.',
|
|
719
|
+
'notifications.activityLogs': 'Activity Reports',
|
|
720
|
+
'notifications.activityLogsDesc': 'Weekly summaries of system audits, modifications, and background tasks.',
|
|
721
|
+
'notifications.systemAlerts': 'System Reports',
|
|
722
|
+
'notifications.systemAlertsDesc': 'Real-time alerts when server instances or data pipelines fail.',
|
|
723
|
+
'notifications.pushTitle': 'In-App & Push Notifications',
|
|
724
|
+
'notifications.pushDescription': 'Receive push notifications on your active browser tab.',
|
|
725
|
+
'notifications.securityPushDesc': 'Immediate browser alerts on unauthorized login detection.',
|
|
726
|
+
'notifications.activityPushDesc': 'Instant notifications on CRUD logs when colleagues edit resources.',
|
|
727
|
+
'notifications.systemPushDesc': 'Critical alerts for task queues and memory anomalies.',
|
|
728
|
+
'notifications.smsTitle': 'SMS Emergency Alerts',
|
|
729
|
+
'notifications.smsDescription': 'Standard rates apply. Used only for urgent events requiring manual administrator intervention.',
|
|
730
|
+
'notifications.criticalSecurity': 'Critical Security Events',
|
|
731
|
+
'notifications.criticalSecurityDesc': 'SMS alert sent when root password resets or 2FA bypass occurs.',
|
|
732
|
+
'api.generateTitle': 'Create New API Key',
|
|
733
|
+
'api.generateDesc': 'Configure scopes and generate a token.',
|
|
734
|
+
'api.keyName': 'Key Name',
|
|
735
|
+
'api.permissions': 'Permissions',
|
|
736
|
+
'api.generateButton': 'Generate Token',
|
|
737
|
+
'api.activeKeysTitle': 'Active API Keys',
|
|
738
|
+
'api.activeKeysDesc': 'Keep these keys secure. Do not share them in public repositories.',
|
|
739
|
+
'api.successTitle': 'API Key Generated',
|
|
740
|
+
'api.successHint': 'Copy this token now. It will not be shown again.',
|
|
741
|
+
'api.noKeys': 'No active API keys generated yet.',
|
|
742
|
+
'error.pageNotFoundDescription': 'Sorry, the page you are looking for does not exist or has been moved.',
|
|
743
|
+
'error.internalServerErrorDescription': 'Something went wrong on our end. Please try again later or contact support.',
|
|
479
744
|
'settings.system': 'System',
|
|
480
745
|
'settings.themeMode': 'Theme Mode',
|
|
481
746
|
'settings.light': 'Light',
|
|
@@ -630,6 +895,127 @@ const baseLocales: Record<string, Record<string, string>> = {
|
|
|
630
895
|
'task.status.dead_lettered': 'Dead lettered',
|
|
631
896
|
'task.status.retry_scheduled': 'Retry scheduled',
|
|
632
897
|
'task.status.leased': 'Leased',
|
|
898
|
+
// Public Profile
|
|
899
|
+
'publicProfile.title': 'Public Profile',
|
|
900
|
+
'publicProfile.projects': 'Projects',
|
|
901
|
+
'publicProfile.activity': 'Activity',
|
|
902
|
+
'publicProfile.teams': 'Teams',
|
|
903
|
+
'publicProfile.profile': 'Profile',
|
|
904
|
+
'publicProfile.viewProfile': 'View Profile',
|
|
905
|
+
'publicProfile.followers': 'Followers',
|
|
906
|
+
'publicProfile.following': 'Following',
|
|
907
|
+
'publicProfile.editProfile': 'Edit Profile',
|
|
908
|
+
'publicProfile.sendMessage': 'Send Message',
|
|
909
|
+
'publicProfile.addFriend': 'Add Friend',
|
|
910
|
+
'publicProfile.projects2Col': 'Projects (2 Columns)',
|
|
911
|
+
'publicProfile.projects3Col': 'Projects (3 Columns)',
|
|
912
|
+
'publicProfile.noProjects': 'No projects yet',
|
|
913
|
+
'publicProfile.noActivity': 'No activity yet',
|
|
914
|
+
'publicProfile.noTeams': 'No teams yet',
|
|
915
|
+
'publicProfile.joinedDate': 'Joined {date}',
|
|
916
|
+
'publicProfile.projectMembers': '{count} members',
|
|
917
|
+
'publicProfile.projectTasks': '{count} tasks',
|
|
918
|
+
'publicProfile.activityPosted': 'posted',
|
|
919
|
+
'publicProfile.activityCommented': 'commented on',
|
|
920
|
+
'publicProfile.activityJoined': 'joined',
|
|
921
|
+
'publicProfile.activityCreated': 'created',
|
|
922
|
+
// Profile variants
|
|
923
|
+
'profile.company': 'Company Profile',
|
|
924
|
+
'profile.companyDescription': 'Company overview and statistics',
|
|
925
|
+
'profile.gamer': 'Gamer Profile',
|
|
926
|
+
'profile.gamerDescription': 'Gaming achievements and stats',
|
|
927
|
+
'profile.default': 'Default Profile',
|
|
928
|
+
'profile.defaultDescription': 'Personal overview and activity',
|
|
929
|
+
'profile.companyName': 'Company Name',
|
|
930
|
+
'profile.industry': 'Industry',
|
|
931
|
+
'profile.employees': 'Employees',
|
|
932
|
+
'profile.founded': 'Founded',
|
|
933
|
+
'profile.website': 'Website',
|
|
934
|
+
'profile.gamerTag': 'Gamer Tag',
|
|
935
|
+
'profile.level': 'Level',
|
|
936
|
+
'profile.rank': 'Rank',
|
|
937
|
+
'profile.gamesPlayed': 'Games Played',
|
|
938
|
+
'profile.winRate': 'Win Rate',
|
|
939
|
+
// Account extensions
|
|
940
|
+
'account.getStarted': 'Get Started',
|
|
941
|
+
'account.getStartedDescription': 'Follow the steps to complete your initial setup and get up to speed quickly.',
|
|
942
|
+
'account.companyProfile': 'Company Profile',
|
|
943
|
+
'account.companyProfileDescription': 'Manage company information and branding.',
|
|
944
|
+
'account.settingsPlain': 'Basic Settings',
|
|
945
|
+
'account.settingsPlainDescription': 'Manage basic account settings.',
|
|
946
|
+
'account.settingsSidebar': 'Sidebar Settings',
|
|
947
|
+
'account.settingsSidebarDescription': 'Configure sidebar layout and behavior.',
|
|
948
|
+
'account.settingsEnterprise': 'Enterprise Settings',
|
|
949
|
+
'account.settingsEnterpriseDescription': 'Manage enterprise-level configuration and policies.',
|
|
950
|
+
'account.importMembers': 'Import Members',
|
|
951
|
+
'account.importMembersDescription': 'Bulk import team members from a CSV file.',
|
|
952
|
+
'account.membersStarter': 'Members Overview',
|
|
953
|
+
'account.membersStarterDescription': 'View and manage workspace members.',
|
|
954
|
+
'account.securityLog': 'Security Log',
|
|
955
|
+
'account.securityLogDescription': 'View security-related activity logs for your account.',
|
|
956
|
+
'account.step': 'Step {current} of {total}',
|
|
957
|
+
'account.completeSetup': 'Complete Setup',
|
|
958
|
+
'account.uploadAvatar': 'Upload Avatar',
|
|
959
|
+
'account.connectProvider': 'Connect Provider',
|
|
960
|
+
'account.setupProfile': 'Set Up Profile',
|
|
961
|
+
'account.setupTeam': 'Invite Team',
|
|
962
|
+
'account.skipSetup': 'Skip Setup',
|
|
963
|
+
'account.nextStep': 'Next Step',
|
|
964
|
+
'account.prevStep': 'Previous Step',
|
|
965
|
+
'account.finishSetup': 'Finish Setup',
|
|
966
|
+
'account.dragOrClick': 'Drag file or click to upload',
|
|
967
|
+
'account.supportedFormats': 'Supports CSV, XLSX formats',
|
|
968
|
+
'account.downloadTemplate': 'Download Template',
|
|
969
|
+
'account.startImport': 'Start Import',
|
|
970
|
+
'account.importProgress': 'Import Progress',
|
|
971
|
+
'account.importComplete': 'Import Complete',
|
|
972
|
+
'account.imported': 'Imported {count} records',
|
|
973
|
+
'account.member': 'Member',
|
|
974
|
+
'account.role': 'Role',
|
|
975
|
+
'account.status': 'Status',
|
|
976
|
+
'account.joined': 'Joined',
|
|
977
|
+
'account.active': 'Active',
|
|
978
|
+
'account.invited': 'Invited',
|
|
979
|
+
'account.inactive': 'Inactive',
|
|
980
|
+
'account.inviteMember': 'Invite Member',
|
|
981
|
+
'account.removeMember': 'Remove Member',
|
|
982
|
+
// Network
|
|
983
|
+
'network.userCards': 'User Cards',
|
|
984
|
+
'network.userCardsDescription': 'Browse users in card layout.',
|
|
985
|
+
'network.teamCrew': 'Team Crew',
|
|
986
|
+
'network.teamCrewDescription': 'View team members in table layout.',
|
|
987
|
+
'network.connect': 'Follow',
|
|
988
|
+
'network.connected': 'Following',
|
|
989
|
+
'network.nftCollection': 'NFT Collection',
|
|
990
|
+
'network.nftCount': '{count} items',
|
|
991
|
+
'network.floorPrice': 'Floor Price',
|
|
992
|
+
'network.volume': 'Volume',
|
|
993
|
+
'network.viewCollection': 'View Collection',
|
|
994
|
+
// Auth
|
|
995
|
+
'auth.twoFactorSetup': 'Set Up Two-Factor Auth',
|
|
996
|
+
'auth.twoFactorVerify': 'Verify Identity',
|
|
997
|
+
'auth.twoFactorRecovery': 'Recovery Codes',
|
|
998
|
+
'auth.twoFactorScanQR': 'Scan the QR code with your authenticator app',
|
|
999
|
+
'auth.twoFactorEnterCode': 'Enter 6-digit verification code',
|
|
1000
|
+
'auth.twoFactorVerifySuccess': 'Two-factor authentication enabled successfully',
|
|
1001
|
+
'auth.twoFactorSaveRecovery': 'Save these recovery codes in a safe place',
|
|
1002
|
+
'auth.twoFactorRecoveryHint': 'You can use recovery codes to log in when you cannot access your authenticator. Each code can only be used once.',
|
|
1003
|
+
'auth.twoFactorDisable': 'Disable Two-Factor Auth',
|
|
1004
|
+
'auth.twoFactorDisableConfirm': 'Are you sure you want to disable two-factor authentication? This will reduce your account security.',
|
|
1005
|
+
// Security Log
|
|
1006
|
+
'securityLog.event': 'Event',
|
|
1007
|
+
'securityLog.ip': 'IP Address',
|
|
1008
|
+
'securityLog.device': 'Device',
|
|
1009
|
+
'securityLog.location': 'Location',
|
|
1010
|
+
'securityLog.time': 'Time',
|
|
1011
|
+
'securityLog.loginSuccess': 'Login Successful',
|
|
1012
|
+
'securityLog.loginFailed': 'Login Failed',
|
|
1013
|
+
'securityLog.passwordChanged': 'Password Changed',
|
|
1014
|
+
'securityLog.twoFactorEnabled': '2FA Enabled',
|
|
1015
|
+
'securityLog.twoFactorDisabled': '2FA Disabled',
|
|
1016
|
+
'securityLog.apiKeyCreated': 'API Key Created',
|
|
1017
|
+
'securityLog.apiKeyRevoked': 'API Key Revoked',
|
|
1018
|
+
'securityLog.sessionRevoked': 'Session Revoked',
|
|
633
1019
|
},
|
|
634
1020
|
};
|
|
635
1021
|
|
package/src/theme.svelte.ts
CHANGED
|
@@ -235,6 +235,8 @@ export interface ThemeConfig {
|
|
|
235
235
|
disableColorScheme?: boolean;
|
|
236
236
|
/** Built-in color preset name (e.g. 'indigo', 'blue') or a custom ColorPreset object */
|
|
237
237
|
colorPreset?: ColorPreset | string;
|
|
238
|
+
/** Layout style option: 'default' or 'clean-flat' for high-contrast flat panel design */
|
|
239
|
+
layoutPreset?: 'default' | 'clean-flat';
|
|
238
240
|
}
|
|
239
241
|
|
|
240
242
|
const STORAGE_KEY = 'svadmin-theme';
|
|
@@ -328,6 +330,13 @@ function applyTheme(m: ThemeMode): void {
|
|
|
328
330
|
|
|
329
331
|
const strategy = themeConfig.strategy ?? 'standard';
|
|
330
332
|
const el = document.documentElement;
|
|
333
|
+
|
|
334
|
+
// Apply clean-flat layout preset class to html
|
|
335
|
+
if (themeConfig.layoutPreset === 'clean-flat') {
|
|
336
|
+
el.classList.add('layout-clean-flat');
|
|
337
|
+
} else {
|
|
338
|
+
el.classList.remove('layout-clean-flat');
|
|
339
|
+
}
|
|
331
340
|
|
|
332
341
|
if (strategy === 'dark-first') {
|
|
333
342
|
// Dark-first: default is dark, add 'light' class for light mode
|