/**
* 全局毛玻璃效果统一配置
* 整合 FUI + GlassTheme 的设计风格
*
* 使用方式:
* import { GLASS_BLUR, GLASS_BG, GLASS_BORDER, GLASS_PRESET } from '@/constants/glassConfig';
*
*
* 或使用预设:
*
*/
// blur 模糊值
export const GLASS_BLUR = {
xs: 'blur(4px)',
sm: 'blur(8px)',
md: 'blur(16px)', // 默认
lg: 'blur(24px)',
xl: 'blur(40px)',
} as const;
// 玻璃背景色
export const GLASS_BG = {
// 白色系
light: 'rgba(255, 255, 255, 0.02)',
medium: 'rgba(255, 255, 255, 0.03)',
strong: 'rgba(255, 255, 255, 0.05)',
// 金色系
gold: 'rgba(212, 175, 55, 0.05)',
goldLight: 'rgba(212, 175, 55, 0.03)',
goldStrong: 'rgba(212, 175, 55, 0.08)',
// 深色系
dark: 'rgba(10, 10, 20, 0.8)',
darkLight: 'rgba(15, 15, 26, 0.6)',
overlay: 'rgba(20, 20, 30, 0.9)',
} as const;
// 边框
export const GLASS_BORDER = {
subtle: '1px solid rgba(255, 255, 255, 0.05)',
light: '1px solid rgba(255, 255, 255, 0.08)',
default: '1px solid rgba(212, 175, 55, 0.15)',
emphasis: '1px solid rgba(212, 175, 55, 0.3)',
gold: '1px solid rgba(212, 175, 55, 0.2)',
} as const;
// 阴影发光
export const GLASS_SHADOW = {
sm: '0 4px 16px rgba(0, 0, 0, 0.2)',
md: '0 8px 32px rgba(0, 0, 0, 0.3)',
lg: '0 25px 50px -12px rgba(0, 0, 0, 0.5)',
goldSm: '0 0 8px rgba(212, 175, 55, 0.3)',
goldMd: '0 0 16px rgba(212, 175, 55, 0.4)',
goldLg: '0 0 32px rgba(212, 175, 55, 0.5)',
inset: 'inset 0 1px 0 rgba(255, 255, 255, 0.05)',
} as const;
// 预设组合 - 常用场景
export const GLASS_PRESET = {
// 卡片
card: {
bg: GLASS_BG.medium,
backdropFilter: GLASS_BLUR.md,
border: GLASS_BORDER.default,
borderRadius: '16px',
},
// 卡片轻量版
cardLight: {
bg: GLASS_BG.light,
backdropFilter: GLASS_BLUR.sm,
border: GLASS_BORDER.subtle,
borderRadius: '12px',
},
// 导航栏
navbar: {
bg: GLASS_BG.darkLight,
backdropFilter: GLASS_BLUR.lg,
border: GLASS_BORDER.gold,
},
// 模态框
modal: {
bg: GLASS_BG.overlay,
backdropFilter: GLASS_BLUR.lg,
border: GLASS_BORDER.light,
borderRadius: '20px',
},
// 悬浮层
floating: {
bg: GLASS_BG.dark,
backdropFilter: `${GLASS_BLUR.lg} saturate(180%)`,
border: GLASS_BORDER.light,
boxShadow: GLASS_SHADOW.lg,
},
// 页面加载
pageLoader: {
bg: GLASS_BG.dark,
backdropFilter: GLASS_BLUR.md,
},
// 侧边栏
sidebar: {
bg: GLASS_BG.dark,
backdropFilter: GLASS_BLUR.lg,
border: GLASS_BORDER.subtle,
},
// 输入框/搜索框
input: {
bg: GLASS_BG.light,
backdropFilter: GLASS_BLUR.sm,
border: GLASS_BORDER.subtle,
borderRadius: '8px',
},
} as const;
// 导出类型
export type GlassBlurKey = keyof typeof GLASS_BLUR;
export type GlassBgKey = keyof typeof GLASS_BG;
export type GlassBorderKey = keyof typeof GLASS_BORDER;
export type GlassShadowKey = keyof typeof GLASS_SHADOW;
export type GlassPresetKey = keyof typeof GLASS_PRESET;