feat(admin): 站点外观 - 支持 Tab 分类与主题渐变按钮配置

This commit is contained in:
ddCat
2026-09-18 23:28:57 +08:00
parent f77bd2bfa0
commit 3cb1423f7e
27 changed files with 869 additions and 375 deletions

View File

@@ -1,18 +1,20 @@
import type { ThemeConfig } from "antd";
import { theme as antdTheme } from "antd";
import { getSkinAntOverrides } from "@/lib/skin-themes";
/** Isolated Ant Design theme for the admin console. Does not read product skins. */
export function getIsolatedAdminAntTheme(dark: boolean): ThemeConfig {
/** 后台保留独立密度与表面,主操作颜色继承站点皮肤。 */
export function getIsolatedAdminAntTheme(dark: boolean, skinID: unknown = "classic"): ThemeConfig {
const skin = getSkinAntOverrides(skinID, dark ? "dark" : "light");
const text = dark ? "#f5f5f5" : "#111111";
const textSecondary = dark ? "#c4c4c4" : "#525252";
const canvas = dark ? "#0f0f0f" : "#f5f5f5";
const surface = dark ? "#181818" : "#ffffff";
const surfaceMuted = dark ? "#222222" : "#f6f6f6";
const border = dark ? "rgba(245, 245, 245, 0.12)" : "rgba(17, 17, 17, 0.12)";
const primary = dark ? "#f5f5f5" : "#111111";
const primaryFg = dark ? "#0f0f0f" : "#ffffff";
const hover = dark ? "#ffffff" : "#2a2a2a";
const active = dark ? "#d4d4d4" : "#404040";
const primary = skin.primary || (dark ? "#f5f5f5" : "#171717");
const primaryFg = skin.primaryForeground || (dark ? "#171717" : "#ffffff");
const hover = skin.primaryHover || (dark ? "#ffffff" : "#303030");
const active = skin.primaryActive || (dark ? "#e5e5e5" : "#404040");
const danger = dark ? "#f87171" : "#dc2626";
const success = dark ? "#4ade80" : "#15803d";
const warning = dark ? "#fbbf24" : "#b45309";
@@ -34,6 +36,7 @@ export function getIsolatedAdminAntTheme(dark: boolean): ThemeConfig {
controlHeightSM: 28,
controlHeightLG: 36,
lineWidth: 1,
controlOutlineWidth: 0,
colorPrimary: primary,
colorPrimaryHover: hover,
colorPrimaryActive: active,
@@ -65,7 +68,11 @@ export function getIsolatedAdminAntTheme(dark: boolean): ThemeConfig {
paddingInline: 12,
paddingInlineSM: 8,
primaryShadow: "none",
defaultShadow: "none",
dangerShadow: "none",
colorPrimary: primary,
colorPrimaryHover: hover,
colorPrimaryActive: active,
defaultBg: surface,
defaultColor: text,
defaultBorderColor: border,
@@ -89,10 +96,14 @@ export function getIsolatedAdminAntTheme(dark: boolean): ThemeConfig {
},
Select: {
borderRadius: 6,
activeOutlineColor: "transparent",
optionPadding: "7px 10px",
optionSelectedBg: surfaceMuted,
optionActiveBg: surfaceMuted,
},
DatePicker: {
activeShadow: "none",
},
Switch: {
colorPrimary: switchOn,
colorPrimaryHover: switchOn,

View File

@@ -195,7 +195,6 @@
top: 50%;
left: calc(var(--admin-sidebar-width) - 11px);
z-index: 4;
display: grid;
width: 22px;
height: 36px;
place-items: center;