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:
1 parent
a48873d7ce
commit
9c684076f3
18 files changed
+1720
-1720
No files matched your search
@@ -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>
|
||||
|
||||
|
||||
Reference in new issue
Block a user