feat: app 端 ui 设计完成

This commit is contained in:
liqupan
2026-01-28 19:10:19 +08:00
commit a4e7898e94
149 changed files with 11302 additions and 0 deletions

124
wei-ai-demo/constants.ts Normal file
View File

@@ -0,0 +1,124 @@
import { Scenario, Message, Character } from './types';
// Palette - Updated for Lighter/Vibrant theme
export const COLORS = {
bg: '#2e1065',
card: 'rgba(255,255,255,0.1)',
primary: '#C084FC', // Lighter Purple
secondary: '#F472B6', // Lighter Pink
textMain: '#F8FAFC',
textMuted: '#CBD5E1',
};
// 使用 Bing Image Proxy 确保图片稳定加载且符合描述
// 参数: w=宽度, h=高度, c=7(Smart Crop), q=关键词
const getImg = (keyword: string) =>
`https://tse1.mm.bing.net/th?q=${encodeURIComponent(keyword)}&w=600&h=900&c=7&rs=1&p=0&dpr=2&pid=1.7&mkt=en-US&adlt=moderate`;
const getCover = (keyword: string) =>
`https://tse1.mm.bing.net/th?q=${encodeURIComponent(keyword)}&w=400&h=600&c=7&rs=1&p=0&dpr=2&pid=1.7&mkt=en-US&adlt=moderate`;
export const MOCK_CHARACTERS: Character[] = [
{
id: 'c1',
name: 'Eva-09',
tagline: '私人仿生护理专员',
// 关键词: 动漫女孩 白色比基尼 银发 温柔
avatar: getImg('anime girl white bikini silver hair gentle portrait masterpiece'),
description: '专为高压人群设计的仿生人型号,擅长通过精准的触觉反馈缓解神经紧张。',
tags: ['温顺', '医疗', '治愈'],
compatibility: 98,
status: 'online',
},
{
id: 'c2',
name: 'Commander V',
tagline: '深空舰队指挥官',
// 关键词: 动漫女孩 黑色比基尼 军帽 强势
avatar: getImg('anime girl black bikini military cap domineering expression dark hair'),
description: '性格强势,喜欢掌控一切。在连接中,你需要完全服从她的指令。',
tags: ['强势', '指令', '调教'],
compatibility: 85,
status: 'online',
},
{
id: 'c3',
name: 'Yuki (故障版)',
tagline: '觉醒的虚拟偶像',
// 关键词: 动漫女孩 粉色比基尼 赛博朋克 故障风
avatar: getImg('anime girl pink bikini cyberpunk neon colorful hair yandere'),
description: '核心代码出现异常逻辑,表现出极强的占有欲和不可预测的信号波动。',
tags: ['病娇', '不稳定', '高频'],
compatibility: 92,
status: 'busy',
},
{
id: 'c4',
name: 'Secret X',
tagline: '未知信号源',
// 关键词: 动漫女孩 紫色比基尼 神秘 暗黑
avatar: getImg('anime girl purple micro bikini mysterious dark glowing eyes sexy'),
description: '权限不足,请提升会员等级以解码该信号源。',
tags: ['神秘', '极乐'],
compatibility: 0,
status: 'offline',
isLocked: true,
},
];
export const MOCK_SCENARIOS: Scenario[] = [
{
id: '1',
title: '午夜办公室的加班',
category: '职场',
// 关键词: 动漫 办公室 夜晚
cover: getCover('anime girl office lady lingerie night city window'),
duration: '12:30',
intensity: 'Medium',
isLocked: false,
tags: ['沉浸', 'ASMR'],
},
{
id: '2',
title: '私人医生的检查',
category: '角色扮演',
// 关键词: 动漫 护士 诊疗室
cover: getCover('anime nurse girl white bikini hospital room'),
duration: '18:00',
intensity: 'High',
isLocked: true,
tags: ['强互动', '语音'],
},
{
id: '3',
title: '海边度假的偶遇',
category: '邻家',
// 关键词: 动漫 海滩 泳装
cover: getCover('anime girl blue bikini running beach ocean sunny'),
duration: '25:00',
intensity: 'Low',
isLocked: false,
tags: ['纯爱', '剧情'],
},
{
id: '4',
title: '赛博仿生人测试',
category: '科幻',
// 关键词: 动漫 科幻 实验室 机械女
cover: getCover('anime cyborg girl metallic bikini sci-fi lab wires'),
duration: '10:00',
intensity: 'Extreme',
isLocked: true,
tags: ['硬核', '指令'],
},
];
export const INITIAL_MESSAGES: Message[] = [
{
id: '1',
text: '连接已建立,正在校准生物反馈信号...',
sender: 'ai',
type: 'text',
timestamp: Date.now() - 100000,
},
];