feat(app-iced): 强调色接线落地(M250 ACCENTWIRE)
appearance.accent_color 此前是死线:配置键、presenter 往返、预设色板都在,但造 tokens 的 唯一入口恒走 DesignTokens::brand(board),用户填了色界面不变。 - theme.rs:Ui::with_accent + accent_scheme(唯一调用 DesignTokens::with_accent 的地方) - app/state/theme.rs:rebuild_ui 三选一(显式强调色 > D38 取色方案 > 出厂板),diag 一行说清是谁生效 - pages/appearance:新增 accent 状态(原文/解析结果/方案/结构化错误)+ 设置页输入行与预设色块; 非法值保持上一次合法值并给出 Short/Long/Digit 三档原因,不静默回退出厂色 - presenter::prefs:AccentChoice::parse 成为唯一解析点,set_accent_checked 交回结构化原因 - app/appearance.rs:persist_appearance 带上 accent_color(此前写不进去),只写上一次合法值 - pages/harness/app.rs:gallery 也能吃 ULL_APPEARANCE_ACCENT,供出图矩阵 - core keys.rs:订正「空 = 出厂 #0078D4;accent 令牌全域生效」这句半真半假的说明 - i18n:强调色 7 条文案(链尾新域,金表只追加) 判据:同一组件(进度条 Primary)在空配置与 #006A5C 下色值不同(App 级 + 令牌级两条); 非法值拿到结构化错误、生效色不回退、不写盘、tokens 仍可构造。
This commit is contained in:
1 parent
4cdb46d2e0
commit
e6b2200360
18 files changed
+787
-38
No files matched your search
@@ -98,7 +98,12 @@ pub fn run(request: Request) -> Result<(), String> {
|
||||
|
||||
// 外观**真状态**(`--appearance=real`):工厂态 + `ULL_APPEARANCE_*` 覆盖。
|
||||
// 这不是给设置页塞常量:状态从 `State::new` / `apply_env` 来,打日志的是它算出来的生效值。
|
||||
let appearance = request.real_appearance.then(|| {
|
||||
//
|
||||
// M250:**gallery 也要这一份** —— 强调色出图矩阵拍的是组件库(buttons + progress),
|
||||
// 而 `--appearance=real` 按设计只对设置页生效(`request.rs` 的守卫,别绕过它)。所以判据加
|
||||
// 一条:设了 `ULL_APPEARANCE_ACCENT` 就造状态,让 `Ui` 按强调色求值(设置页的语义不变)。
|
||||
let wants_accent = std::env::var_os(appearance::accent::ENV_ACCENT).is_some();
|
||||
let appearance = (request.real_appearance || wants_accent).then(|| {
|
||||
let mut state = appearance::State::new(
|
||||
&AppearancePrefs::factory(),
|
||||
&AppearanceBase::factory(),
|
||||
@@ -116,7 +121,7 @@ pub fn run(request: Request) -> Result<(), String> {
|
||||
}
|
||||
eprintln!(
|
||||
"[harness] 外观真状态:window={:.2} panel={:.2}(生效 {:.2})bg={} fill={:?} dim={:.2} \
|
||||
配色来源={:?} 选中分组={}",
|
||||
配色来源={:?} accent={} 选中分组={}",
|
||||
state.window_opacity,
|
||||
state.panel_alpha,
|
||||
state.effective_panel_alpha(),
|
||||
@@ -124,6 +129,7 @@ pub fn run(request: Request) -> Result<(), String> {
|
||||
state.bg_fill,
|
||||
state.bg_dim,
|
||||
state.palette_source,
|
||||
state.accent.log_token(),
|
||||
state.selected_group,
|
||||
);
|
||||
state
|
||||
@@ -149,7 +155,12 @@ pub fn run(request: Request) -> Result<(), String> {
|
||||
}
|
||||
(
|
||||
Harness {
|
||||
ui: Ui::new(boot.flavor, families),
|
||||
// M250:gallery 出图也要能看见强调色 —— 与产品路径同一条规则(显式强调色 >
|
||||
// 出厂板),来源是 `ULL_APPEARANCE_ACCENT`(`State::apply_env` 灌进来的)。
|
||||
ui: match appearance.as_ref().and_then(|state| state.accent.color()) {
|
||||
Some(accent) => Ui::with_accent(boot.flavor, accent, families),
|
||||
None => Ui::new(boot.flavor, families),
|
||||
},
|
||||
model,
|
||||
appearance: appearance.clone(),
|
||||
form: crate::pages::demo_launch_form(),
|
||||
|
||||
Reference in new issue
Block a user