refactor(theme): 优化主题配色方案并统一设计语言

- 更新 CLAUDE.md 中的技能系统执行逻辑,简化任务处理流程
- 重构 app_color_scheme.dart 中的颜色定义,将深色主题主色从专业蓝改为真金色,浅色主题主色从专业蓝改为深灰色
- 统一盈利颜色为绿色调色板,更新渐变和容器颜色以保持一致性
- 调整 app_theme_extension.dart 中的强调色引用,确保深色主题使用金色作为主强调色
- 优化颜色命名和注释,使设计意图更清晰
This commit is contained in:
2026-04-06 02:50:48 +08:00
parent 7ed2435a4c
commit 63668fcf63
3 changed files with 52 additions and 52 deletions

View File

@@ -9,7 +9,7 @@
## 技能系统 ## 技能系统
当处理任务时,先扫描 `.agents/skills/` 目录下是否有相关技能。如果技能可能适用,先用 Read 工具读取对应的 `SKILL.md`,然后严格遵循其指引执行。技能优先级高于默认行为,但低于用户的显式指令。 执行任务前先判定复杂度简单任务改样式、调主题、修小bug、清理冗余不读 brainstorming。复杂任务主动启用适用技能扫描 .agents/skills/ 目录Read 对应 SKILL.md 后严格遵循执行。技能优先级高于默认行为,但低于用户的显式指令。
## 构建与运行命令 ## 构建与运行命令

View File

@@ -1,15 +1,15 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:shadcn_ui/shadcn_ui.dart'; import 'package:shadcn_ui/shadcn_ui.dart';
/// Material Design 3 颜色系统 - "黑金传奇" & "白金殿堂" /// Material Design 3 颜色系统 - Pencil Design Theme
/// ///
/// 深色主题: "黑金传奇" (Black & Gold) /// 深色主题: "黑金传奇" (Black & Gold)
/// 深邃黑底 + 专业蓝主色 + 真金强调 → 赛博朋克科技感 × 金融奢华感 /// 深邃黑底 + 真金主色 + 翠绿盈利 → 金融奢华感
/// 背景 #0A0E14 | 主色 #1E3A8A | 强调 #D4AF37 /// 背景 #0B1120 | 主色 #D4AF37 | 盈利 #4ADE80
/// ///
/// 浅色主题: "白金殿堂" (White & Gold) /// 浅色主题: "白金殿堂" (White & Gold)
/// 纯净白底 + 专业蓝主色 + 亮金强调 → 高端金融科技 × 尊贵品质感 /// 纯净白底 + 深灰主色 + 琥珀强调 → 高端金融科技
/// 背景 #FAFAFA | 主色 #1E40AF | 强调 #FFD700 /// 背景 #F8FAFC | 主色 #1F2937 | 强调 #F59E0B
/// ///
/// 设计原则: /// 设计原则:
/// - Material Design 3 配色方案 /// - Material Design 3 配色方案
@@ -48,16 +48,16 @@ class AppColorScheme {
static const Color darkOutline = Color(0xFF64748B); static const Color darkOutline = Color(0xFF64748B);
static const Color darkOutlineVariant = Color(0xFF334155); static const Color darkOutlineVariant = Color(0xFF334155);
/// Primary - 专业蓝 #1E3A8A (主要交互) /// Primary - 真金 #D4AF37 (accent-primary)
static const Color darkPrimary = Color(0xFF1E3A8A); static const Color darkPrimary = Color(0xFFD4AF37);
static const Color darkPrimaryDim = Color(0xFF1E40AF); static const Color darkPrimaryDim = Color(0xFFB8960E);
static const Color darkPrimaryContainer = Color(0xFF3B82F6); static const Color darkPrimaryContainer = Color(0xFFE8C84A);
static const Color darkPrimaryFixed = Color(0xFF3B82F6); static const Color darkPrimaryFixed = Color(0xFFE8C84A);
static const Color darkPrimaryFixedDim = Color(0xFF2563EB); static const Color darkPrimaryFixedDim = Color(0xFFD4AF37);
static const Color darkOnPrimary = Color(0xFFFFFFFF); static const Color darkOnPrimary = Color(0xFF1F2937);
static const Color darkOnPrimaryContainer = Color(0xFFBFDBFE); static const Color darkOnPrimaryContainer = Color(0xFF1F2937);
static const Color darkOnPrimaryFixed = Color(0xFFFFFFFF); static const Color darkOnPrimaryFixed = Color(0xFF1F2937);
static const Color darkOnPrimaryFixedVariant = Color(0xFFE0E7FF); static const Color darkOnPrimaryFixedVariant = Color(0xFF374151);
/// Secondary - 真金 #D4AF37 (黑金强调色) /// Secondary - 真金 #D4AF37 (黑金强调色)
static const Color darkSecondary = Color(0xFFD4AF37); static const Color darkSecondary = Color(0xFFD4AF37);
@@ -70,16 +70,16 @@ class AppColorScheme {
static const Color darkOnSecondaryFixed = Color(0xFF1F2937); static const Color darkOnSecondaryFixed = Color(0xFF1F2937);
static const Color darkOnSecondaryFixedVariant = Color(0xFF374151); static const Color darkOnSecondaryFixedVariant = Color(0xFF374151);
/// Tertiary - Neon Green (绿色 - 仅用于成功/盈利/买入) /// Tertiary - Profit Green #4ADE80 (profit-green)
static const Color darkTertiary = Color(0xFFafffd1); static const Color darkTertiary = Color(0xFF4ADE80);
static const Color darkTertiaryDim = Color(0xFF00efa0); static const Color darkTertiaryDim = Color(0xFF22C55E);
static const Color darkTertiaryContainer = Color(0xFF00ffab); static const Color darkTertiaryContainer = Color(0xFF86EFAC);
static const Color darkTertiaryFixed = Color(0xFF00ffab); static const Color darkTertiaryFixed = Color(0xFF86EFAC);
static const Color darkTertiaryFixedDim = Color(0xFF00efa0); static const Color darkTertiaryFixedDim = Color(0xFF4ADE80);
static const Color darkOnTertiary = Color(0xFF006642); static const Color darkOnTertiary = Color(0xFF052E16);
static const Color darkOnTertiaryContainer = Color(0xFF005c3b); static const Color darkOnTertiaryContainer = Color(0xFF052E16);
static const Color darkOnTertiaryFixed = Color(0xFF00472d); static const Color darkOnTertiaryFixed = Color(0xFF052E16);
static const Color darkOnTertiaryFixedVariant = Color(0xFF006742); static const Color darkOnTertiaryFixedVariant = Color(0xFF14532D);
/// Error - Neon Red (红色 - 错误/卖出) /// Error - Neon Red (红色 - 错误/卖出)
static const Color darkError = Color(0xFFff716c); static const Color darkError = Color(0xFFff716c);
@@ -113,20 +113,20 @@ class AppColorScheme {
static const Color lightSurfaceHigh = Color(0xFFE2E8F0); static const Color lightSurfaceHigh = Color(0xFFE2E8F0);
static const Color lightSurfaceHighest = Color(0xFFCBD5E1); static const Color lightSurfaceHighest = Color(0xFFCBD5E1);
/// Ghost Border - Slate 300 /// Ghost Border - Pencil border-default
static const Color lightOutlineVariant = Color(0xFFCBD5E1); static const Color lightOutlineVariant = Color(0xFFE2E8F0);
/// Primary - 专业蓝 #1E40AF (主要交互) /// Primary - Dark Slate #1F2937 (accent-primary)
static const Color lightPrimary = Color(0xFF1E40AF); static const Color lightPrimary = Color(0xFF1F2937);
static const Color lightPrimaryContainer = Color(0xFF3B82F6); static const Color lightPrimaryContainer = Color(0xFFF3F4F6);
/// Secondary - 亮金 #D4AF37 (白金强调色) /// Secondary - Amber #F59E0B (gold-accent)
static const Color lightSecondary = Color(0xFFD4AF37); static const Color lightSecondary = Color(0xFFF59E0B);
static const Color lightSecondaryContainer = Color(0xFFFFE44D); static const Color lightSecondaryContainer = Color(0xFFFDE68A);
/// Tertiary - Success (买入/盈利) /// Tertiary - Profit Green #16A34A (profit-green)
static const Color lightTertiary = Color(0xFF00875A); static const Color lightTertiary = Color(0xFF16A34A);
static const Color lightTertiaryContainer = Color(0xFFd4f5e9); static const Color lightTertiaryContainer = Color(0xFFDCFCE7);
/// 文本色 - Slate /// 文本色 - Slate
static const Color lightOnSurface = Color(0xFF0F172A); static const Color lightOnSurface = Color(0xFF0F172A);
@@ -221,9 +221,9 @@ class AppColorScheme {
end: Alignment(0.7, 0.7), end: Alignment(0.7, 0.7),
); );
/// 资产卡片渐变 - 蓝→ /// 资产卡片渐变 - 金色层次
static const LinearGradient assetCardGradient = LinearGradient( static const LinearGradient assetCardGradient = LinearGradient(
colors: [darkPrimary, darkSecondary], colors: [darkPrimaryContainer, darkPrimary],
begin: Alignment.topLeft, begin: Alignment.topLeft,
end: Alignment.bottomRight, end: Alignment.bottomRight,
); );
@@ -242,17 +242,17 @@ class AppColorScheme {
primary: darkPrimary, primary: darkPrimary,
primaryForeground: darkOnPrimary, primaryForeground: darkOnPrimary,
secondary: darkSecondary, secondary: darkSecondary,
secondaryForeground: darkOnSurface, secondaryForeground: darkOnSecondary,
muted: darkSurfaceContainerHigh, muted: darkSurfaceContainerHigh,
mutedForeground: darkOnSurfaceVariant, mutedForeground: darkOnSurfaceVariant,
accent: darkSecondary.withValues(alpha: 0.15), accent: darkPrimary.withValues(alpha: 0.15),
accentForeground: darkSecondary, accentForeground: darkPrimary,
destructive: error, destructive: error,
destructiveForeground: darkOnSurface, destructiveForeground: darkOnSurface,
border: darkOutlineVariant.withValues(alpha: 0.15), border: darkOutlineVariant.withValues(alpha: 0.15),
input: darkOutlineVariant.withValues(alpha: 0.15), input: darkOutlineVariant.withValues(alpha: 0.15),
ring: darkSecondary, ring: darkPrimary,
selection: darkSecondary.withValues(alpha: 0.3), selection: darkPrimary.withValues(alpha: 0.3),
); );
// ============================================ // ============================================
@@ -269,7 +269,7 @@ class AppColorScheme {
primary: lightPrimary, primary: lightPrimary,
primaryForeground: const Color(0xFFFFFFFF), primaryForeground: const Color(0xFFFFFFFF),
secondary: lightSecondary, secondary: lightSecondary,
secondaryForeground: lightOnSurface, secondaryForeground: const Color(0xFFFFFFFF),
muted: lightSurfaceHigh, muted: lightSurfaceHigh,
mutedForeground: lightOnSurfaceVariant, mutedForeground: lightOnSurfaceVariant,
accent: lightSecondary.withValues(alpha: 0.1), accent: lightSecondary.withValues(alpha: 0.1),
@@ -344,15 +344,15 @@ class AppColorScheme {
primary: lightPrimary, primary: lightPrimary,
onPrimary: const Color(0xFFFFFFFF), onPrimary: const Color(0xFFFFFFFF),
primaryContainer: lightPrimaryContainer, primaryContainer: lightPrimaryContainer,
onPrimaryContainer: lightOnSurface, onPrimaryContainer: lightPrimary,
secondary: lightSecondary, secondary: lightSecondary,
onSecondary: const Color(0xFFFFFFFF), onSecondary: const Color(0xFFFFFFFF),
secondaryContainer: lightSecondaryContainer, secondaryContainer: lightSecondaryContainer,
onSecondaryContainer: lightOnSurface, onSecondaryContainer: const Color(0xFF78350F),
tertiary: lightTertiary, tertiary: lightTertiary,
onTertiary: const Color(0xFFFFFFFF), onTertiary: const Color(0xFFFFFFFF),
tertiaryContainer: lightTertiaryContainer, tertiaryContainer: lightTertiaryContainer,
onTertiaryContainer: lightOnSurface, onTertiaryContainer: const Color(0xFF052E16),
error: lightError, error: lightError,
onError: lightOnError, onError: lightOnError,
errorContainer: const Color(0xFFffeaea), errorContainer: const Color(0xFFffeaea),

View File

@@ -31,7 +31,7 @@ class AppThemeColors extends ThemeExtension<AppThemeColors> {
final Color downBackground; final Color downBackground;
// ---- 强调色 ---- // ---- 强调色 ----
/// 主强调色dark: secondary 金色, light: primary 蓝色 /// 主强调色dark: primary 金色, light: primary 深灰
final Color accentPrimary; final Color accentPrimary;
// ---- 光效 ---- // ---- 光效 ----
@@ -76,7 +76,7 @@ class AppThemeColors extends ThemeExtension<AppThemeColors> {
upBackground: AppColorScheme.darkTertiary.withValues(alpha: 0.15), upBackground: AppColorScheme.darkTertiary.withValues(alpha: 0.15),
down: AppColorScheme.darkError, down: AppColorScheme.darkError,
downBackground: AppColorScheme.darkError.withValues(alpha: 0.15), downBackground: AppColorScheme.darkError.withValues(alpha: 0.15),
accentPrimary: AppColorScheme.darkSecondary, accentPrimary: AppColorScheme.darkPrimary,
glowOpacity: 0.15, glowOpacity: 0.15,
ghostBorder: AppColorScheme.darkOutlineVariant.withValues(alpha: 0.15), ghostBorder: AppColorScheme.darkOutlineVariant.withValues(alpha: 0.15),
ctaGradient: AppColorScheme.darkCtaGradient, ctaGradient: AppColorScheme.darkCtaGradient,
@@ -84,7 +84,7 @@ class AppThemeColors extends ThemeExtension<AppThemeColors> {
sellGradient: AppColorScheme.sellGradient, sellGradient: AppColorScheme.sellGradient,
assetGradient: AppColorScheme.assetCardGradient, assetGradient: AppColorScheme.assetCardGradient,
emeraldGradient: const LinearGradient( emeraldGradient: const LinearGradient(
colors: [AppColorScheme.darkTertiary, Color(0xFF7de8b8)], colors: [AppColorScheme.darkTertiary, AppColorScheme.darkTertiaryContainer],
begin: Alignment.topLeft, begin: Alignment.topLeft,
end: Alignment.bottomRight, end: Alignment.bottomRight,
), ),
@@ -115,7 +115,7 @@ class AppThemeColors extends ThemeExtension<AppThemeColors> {
end: Alignment.bottomRight, end: Alignment.bottomRight,
), ),
emeraldGradient: const LinearGradient( emeraldGradient: const LinearGradient(
colors: [AppColorScheme.lightTertiary, Color(0xFF00c987)], colors: [AppColorScheme.lightTertiary, AppColorScheme.lightTertiaryContainer],
begin: Alignment.topLeft, begin: Alignment.topLeft,
end: Alignment.bottomRight, end: Alignment.bottomRight,
), ),