feat(meowpanel): 面板 MD3/MIUIx 双主题 × 明暗四套变量表 + 主题切换器(跟随系统/浏览器/明/暗)
- CSS:色值全量抽为 :root 变量,[data-style]×[data-mode] 四套主题表; MIUIx 色值对齐设备 meow_ui_theme.c(light F7F3EE/F57200、dark 181310/FF8C4A、radius 20/28、spacing 12、细描边); 根属性 data-theme 更名 data-mode - JS:默认联动设备 settings.conf(GET /api/theme 的 ui.style/display.theme); 面板覆盖存 localStorage(meowpanel.style / meowpanel.mode),不写设备; 模式 system/browser/light/dark,browser 走 prefers-color-scheme 并监听日夜切换实时生效; 旧键 meowpanel.theme 自动迁移;顶栏切换器保留原行为(本地生效 + PUT /api/theme 同步设备) - 设置页新增「主题(面板外观)」卡:风格 MD3/MIUIx(可一键回跟随设备)+ 明暗四选一 - 后端未改:/api/theme 已透传 ui.style/display.theme,无需新增
This commit is contained in:
1 parent
250c9ae8b1
commit
677c0c47ac
3 files changed
+144
-39
No files matched your search
@@ -1,12 +1,12 @@
|
||||
/* MeowPanel — 前端样式
|
||||
* 主题模型:风格族(ui.style: md3 / miuix)× 明暗(display.theme: dark / light)
|
||||
* 双层变量:
|
||||
* [data-style] 定形状(radius / spacing / outline 宽)+ 主色(--primary)——对齐 SDK §8.1.3
|
||||
* [data-theme] 定中性色 / 语义色(bg/surface/on-surface/outline/error/...)
|
||||
* 默认(:root 无覆盖)= MD3 dark;MD3 中立形状再显式声明便于对照。
|
||||
* 主题模型:风格族(ui.style: md3 / miuix)× 明暗(data-mode: dark / light),四套主题表。
|
||||
* [data-style] 定形状(radius / spacing / outline 宽)——对齐 SDK meow_ui_theme.c §8.1.3
|
||||
* [data-style][data-mode] 定完整色板(bg/surface/on-surface/outline/primary/error/...),
|
||||
* MIUIx 色值取自设备端 meow_ui_theme.c 的 MIUIx 配色(暖色基面 + 橙强调)。
|
||||
* 默认(index.html 根属性)= MD3 dark;面板内可覆盖(meowpanel.js 写 data-style/data-mode)。
|
||||
*/
|
||||
|
||||
/* ---------- 结构基线 ---------- */
|
||||
/* ---------- 结构基线(MD3 形状) ---------- */
|
||||
:root{
|
||||
--space:8px;
|
||||
--radius-s:8px; /* 小:chip/内嵌 */
|
||||
@@ -20,17 +20,17 @@
|
||||
--speed:.16s;
|
||||
}
|
||||
|
||||
/* 风格族:MIUIx 更大圆角 / 略大间距 / 细描边 / 偏品牌主色(更饱和) */
|
||||
/* 风格族:MIUIx 更大圆角(20/28,对齐设备 radius/radius_card)/ 更松间距 / 细描边 */
|
||||
:root[data-style="miuix"]{
|
||||
--space:10px;
|
||||
--radius-s:12px;
|
||||
--radius-m:18px; /* 按钮 ≈18px */
|
||||
--radius-l:24px; /* 卡片 ≈24px */
|
||||
--space:12px;
|
||||
--radius-s:14px;
|
||||
--radius-m:20px; /* 按钮 ≈20px */
|
||||
--radius-l:28px; /* 卡片 ≈28px */
|
||||
--outline-w:1px; /* 细描边 */
|
||||
}
|
||||
|
||||
/* ---------- 深色(默认主深色) ---------- */
|
||||
:root[data-theme="dark"]{
|
||||
/* ---------- MD3 × 深色 ---------- */
|
||||
:root[data-style="md3"][data-mode="dark"]{
|
||||
--bg:#0a0a0a; /* 背景底(黑)*/
|
||||
--surface:#141414;
|
||||
--surface-variant:#1e1e1e;
|
||||
@@ -39,18 +39,16 @@
|
||||
--on-surface-variant:#a3a3a3;
|
||||
--outline:#3a3a3a;
|
||||
--outline-variant:#2a2a2a;
|
||||
--primary:#4a8bf5; --on-primary:#ffffff;
|
||||
--error:#cf6679; --on-error:#0a0a0a;
|
||||
--success:#4caf50; --warning:#ffb300;
|
||||
--shadow:0 2px 10px rgba(0,0,0,.5);
|
||||
--scrim:rgba(0,0,0,.55);
|
||||
--hover:rgba(255,255,255,.06);
|
||||
}
|
||||
/* 深色 × MIUIx 主色更饱和 */
|
||||
:root[data-theme="dark"][data-style="md3"]{ --primary:#4a8bf5; --on-primary:#fff; }
|
||||
:root[data-theme="dark"][data-style="miuix"]{--primary:#ff7a00; --on-primary:#fff; }
|
||||
|
||||
/* ---------- 浅色 ---------- */
|
||||
:root[data-theme="light"]{
|
||||
/* ---------- MD3 × 浅色 ---------- */
|
||||
:root[data-style="md3"][data-mode="light"]{
|
||||
--bg:#f4f5f7;
|
||||
--surface:#ffffff;
|
||||
--surface-variant:#ececee;
|
||||
@@ -59,14 +57,49 @@
|
||||
--on-surface-variant:#5c5c60;
|
||||
--outline:#d2d2d6;
|
||||
--outline-variant:#e4e4e8;
|
||||
--primary:#2f6fe0; --on-primary:#ffffff;
|
||||
--error:#ba1a1a; --on-error:#ffffff;
|
||||
--success:#2e7d32; --warning:#ed6c02;
|
||||
--shadow:0 2px 10px rgba(0,0,0,.12);
|
||||
--scrim:rgba(0,0,0,.35);
|
||||
--hover:rgba(0,0,0,.05);
|
||||
}
|
||||
:root[data-theme="light"][data-style="md3"]{ --primary:#2f6fe0; --on-primary:#fff; }
|
||||
:root[data-theme="light"][data-style="miuix"]{--primary:#f57200; --on-primary:#fff; }
|
||||
|
||||
/* ---------- MIUIx × 深色(暖黑 181310 + 橙 FF8C4A,色值对齐 meow_ui_theme.c) ---------- */
|
||||
:root[data-style="miuix"][data-mode="dark"]{
|
||||
--bg:#181310;
|
||||
--surface:#262019; /* surfaceContainer */
|
||||
--surface-variant:#332b25;
|
||||
--surface-dim:#120e0b;
|
||||
--on-surface:#ede5dc;
|
||||
--on-surface-variant:#ab9884;
|
||||
--outline:#4a3f35;
|
||||
--outline-variant:#3a3229;
|
||||
--primary:#ff8c4a; --on-primary:#241100;
|
||||
--error:#ffb4ab; --on-error:#690005;
|
||||
--success:#4caf50; --warning:#ffb300;
|
||||
--shadow:0 2px 10px rgba(0,0,0,.55);
|
||||
--scrim:rgba(0,0,0,.55);
|
||||
--hover:rgba(255,255,255,.06);
|
||||
}
|
||||
|
||||
/* ---------- MIUIx × 浅色(暖白 F7F3EE + 橙 F57200,色值对齐 meow_ui_theme.c) ---------- */
|
||||
:root[data-style="miuix"][data-mode="light"]{
|
||||
--bg:#f7f3ee;
|
||||
--surface:#fffbf6; /* surfaceBright */
|
||||
--surface-variant:#ede2d7;
|
||||
--surface-dim:#dfd3c4;
|
||||
--on-surface:#251a10;
|
||||
--on-surface-variant:#7d6a5a;
|
||||
--outline:#cbbfb2;
|
||||
--outline-variant:#e9dfd0;
|
||||
--primary:#f57200; --on-primary:#ffffff;
|
||||
--error:#b3261e; --on-error:#ffffff;
|
||||
--success:#2e7d32; --warning:#ed6c02;
|
||||
--shadow:0 2px 10px rgba(60,40,20,.12);
|
||||
--scrim:rgba(30,20,10,.35);
|
||||
--hover:rgba(0,0,0,.05);
|
||||
}
|
||||
|
||||
/* ---------- 布局 ---------- */
|
||||
*{ box-sizing:border-box; }
|
||||
|
||||
Reference in new issue
Block a user