feat(front): unify all front user pages to DESIGN.md brand #5B5FED; fix decimal-rgba off-brand purples missed by hex normalization (MarketPage focus shadow, LoginPage radial glow)

This commit is contained in:
QihuAI Design committed 2026-07-13 23:07:26 +08:00
1 parent a48873d7ce
commit 9c684076f3
18 files changed
+1720 -1720

No files matched your search

+18 -18
View File
@@ -30,28 +30,28 @@ const panelLabels: Record<string, string> = {
// ==================== Config ====================
const stateConfig: Record<SkillState, { label: string; color: string; bg: string; dot: string }> = {
baby: { label: '萌芽', color: '#E8922C', bg: '#FEF4E8', dot: '#F59E0B' },
main: { label: '成熟', color: '#219B5E', bg: '#E6F7EE', dot: '#10B981' },
baby: { label: '萌芽', color: '#E8922C', bg: '#FEF4E8', dot: '#E8922C' },
main: { label: '成熟', color: '#219B5E', bg: '#E6F7EE', dot: '#219B5E' },
staging: { label: '验证', color: '#8B5CF6', bg: '#F3F0FF', dot: '#8B5CF6' },
frozen: { label: '冻结', color: '#8B919E', bg: '#F1F3F7', dot: '#BFC4CE' },
};
const eventTypeConfig: Record<string, { label: string; color: string; icon: React.ReactNode }> = {
created: { label: '诞生', color: '#F59E0B', icon: <Icon size={12}><path d="M12 2L15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></Icon> },
promoted: { label: '晋升', color: '#10B981', icon: <Icon size={12}><polyline points="20 6 9 17 4 12"/></Icon> },
rejected: { label: '退回', color: '#EF4444', icon: <Icon size={12}><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></Icon> },
created: { label: '诞生', color: '#E8922C', icon: <Icon size={12}><path d="M12 2L15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></Icon> },
promoted: { label: '晋升', color: '#219B5E', icon: <Icon size={12}><polyline points="20 6 9 17 4 12"/></Icon> },
rejected: { label: '退回', color: '#D9383A', icon: <Icon size={12}><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></Icon> },
frozen: { label: '冻结', color: '#8B919E', icon: <Icon size={12}><rect x="3" y="11" width="18" height="11" rx="2"/></Icon> },
unfrozen: { label: '解冻', color: '#3B82F6', icon: <Icon size={12}><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/></Icon> },
edited: { label: '更新', color: '#5B5FED', icon: <Icon size={12}><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/></Icon> },
deleted: { label: '删除', color: '#EF4444', icon: <Icon size={12}><polyline points="3 6 5 6 21 6"/></Icon> },
deleted: { label: '删除', color: '#D9383A', icon: <Icon size={12}><polyline points="3 6 5 6 21 6"/></Icon> },
milestone: { label: '里程碑', color: '#8B5CF6', icon: <Icon size={12}><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></Icon> },
rolled_back: { label: '回滚', color: '#EF4444', icon: <Icon size={12}><polyline points="1 4 1 10 7 10"/><path d="M3.5 17A9 9 0 1 0 2 12"/></Icon> },
rolled_back: { label: '回滚', color: '#D9383A', icon: <Icon size={12}><polyline points="1 4 1 10 7 10"/><path d="M3.5 17A9 9 0 1 0 2 12"/></Icon> },
};
const shareThemes = [
{ id: 'deep', name: '深空蓝', bg: 'linear-gradient(135deg, #1A1A3E 0%, #2D2D6B 50%, #1A1A2E 100%)', accent: '#A78BFA', text: '#E8E6FF' },
{ id: 'aurora', name: '极光绿', bg: 'linear-gradient(135deg, #0A2E1F 0%, #0F4A33 50%, #0A2E1F 100%)', accent: '#10B981', text: '#D1FAE5' },
{ id: 'sunset', name: '暖阳橙', bg: 'linear-gradient(135deg, #3D1F00 0%, #5C2D0E 50%, #3D1F00 100%)', accent: '#F59E0B', text: '#FEF3C7' },
{ id: 'deep', name: '深空蓝', bg: 'linear-gradient(135deg, #1A1A3E 0%, #2D2D6B 50%, #1A1A2E 100%)', accent: '#8185F5', text: '#E8E6FF' },
{ id: 'aurora', name: '极光绿', bg: 'linear-gradient(135deg, #0A2E1F 0%, #0F4A33 50%, #0A2E1F 100%)', accent: '#219B5E', text: '#D1FAE5' },
{ id: 'sunset', name: '暖阳橙', bg: 'linear-gradient(135deg, #3D1F00 0%, #5C2D0E 50%, #3D1F00 100%)', accent: '#E8922C', text: '#FEF3C7' },
];
// ==================== Real API version history ====================
@@ -181,7 +181,7 @@ const SkillTreePanel: React.FC<{
<button className="evo-btn evo-btn-outline evo-btn-sm" onClick={() => { setShowVersionHistory(true); loadVersionHistory(selectedSkill.skill_name); }}>版本历史</button>
<button className="evo-btn evo-btn-outline evo-btn-sm">来源对话</button>
{selectedSkill.state === 'main' && (
<button className="evo-btn evo-btn-outline evo-btn-sm" style={{ color: '#F59E0B', borderColor: '#F59E0B' }} onClick={() => { setPublishDesc(selectedSkill.description); setPublishPrice(0); setShowPublishModal(true); }}>
<button className="evo-btn evo-btn-outline evo-btn-sm" style={{ color: '#E8922C', borderColor: '#E8922C' }} onClick={() => { setPublishDesc(selectedSkill.description); setPublishPrice(0); setShowPublishModal(true); }}>
发布到市场
</button>
)}
@@ -231,7 +231,7 @@ const SkillTreePanel: React.FC<{
{!isCurrent && (
<button
className="evo-btn evo-btn-outline evo-btn-sm"
style={{ color: '#EF4444', borderColor: '#EF4444' }}
style={{ color: '#D9383A', borderColor: '#D9383A' }}
onClick={() => setShowRollbackConfirm({ version: entryVersion })}
>
回滚到此版本
@@ -261,7 +261,7 @@ const SkillTreePanel: React.FC<{
<p>确认回滚到版本 <strong>v{showRollbackConfirm.version}</strong>?当前版本 <strong>v{selectedSkill.version}</strong> 的修改将被撤销。</p>
<div className="evo-confirm-actions">
<button className="evo-btn evo-btn-outline" onClick={() => setShowRollbackConfirm(null)}>取消</button>
<button className="evo-btn evo-btn-primary" style={{ background: '#EF4444' }} onClick={() => handleRollback(showRollbackConfirm.version)}>确认回滚</button>
<button className="evo-btn evo-btn-primary" style={{ background: '#D9383A' }} onClick={() => handleRollback(showRollbackConfirm.version)}>确认回滚</button>
</div>
</div>
</div>
@@ -506,7 +506,7 @@ const StatisticsPanel: React.FC<{ stats: StatisticsData; onViewSkill?: (skillNam
const maxUse = sortedByUse[0]?.use_count || 1;
const totalUse = stats.total_use_count;
const zeroUseSkills = stats.low_use_skills || [];
const catColors = ['#5B5FED', '#F59E0B', '#10B981', '#EF4444', '#8B5CF6'];
const catColors = ['#5B5FED', '#E8922C', '#219B5E', '#D9383A', '#8B5CF6'];
return (
<div className="evo-panel-content">
@@ -772,7 +772,7 @@ const ProfilePanel: React.FC<{ profile: EvolutionProfile; skills: EvolutionSkill
transform="rotate(-90 80 80)" style={{ transition: 'stroke-dashoffset 1s ease' }} />
<defs>
<linearGradient id="levelGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stopColor="#5B5FED" /><stop offset="100%" stopColor="#A78BFA" />
<stop offset="0%" stopColor="#5B5FED" /><stop offset="100%" stopColor="#8185F5" />
</linearGradient>
</defs>
</svg>
@@ -812,7 +812,7 @@ const ProfilePanel: React.FC<{ profile: EvolutionProfile; skills: EvolutionSkill
<div className="evo-tag-cloud">
{profile.tags.map((tag, i) => {
const sizes = ['evo-tag-sm', 'evo-tag-md', 'evo-tag-lg', 'evo-tag-xl'];
const tagColors = ['#5B5FED', '#F59E0B', '#10B981', '#8B5CF6', '#EF4444', '#3B82F6'];
const tagColors = ['#5B5FED', '#E8922C', '#219B5E', '#8B5CF6', '#D9383A', '#3B82F6'];
return <span key={tag} className={`evo-tag ${sizes[Math.min(i, sizes.length - 1)]}`} style={{ color: tagColors[i % 6], borderColor: tagColors[i % 6] }}>{tag}</span>;
})}
</div>
@@ -1026,8 +1026,8 @@ const EvolutionDashboard: React.FC = () => {
</div>
<div className="evo-header-stats">
<div className="evo-header-stat"><span className="evo-hs-num">{totalSkills}</span><span className="evo-hs-label">技能总数</span></div>
<div className="evo-header-stat"><span className="evo-hs-num" style={{ color: '#10B981' }}>{mainCount}</span><span className="evo-hs-label">已成熟</span></div>
<div className="evo-header-stat"><span className="evo-hs-num" style={{ color: '#F59E0B' }}>{babyCount}</span><span className="evo-hs-label">萌芽中</span></div>
<div className="evo-header-stat"><span className="evo-hs-num" style={{ color: '#219B5E' }}>{mainCount}</span><span className="evo-hs-label">已成熟</span></div>
<div className="evo-header-stat"><span className="evo-hs-num" style={{ color: '#E8922C' }}>{babyCount}</span><span className="evo-hs-label">萌芽中</span></div>
</div>
</header>