|
|
|
@ -1,6 +1,6 @@ |
|
|
|
import { reactive, watch } from 'vue'; |
|
|
|
|
|
|
|
import { preferences } from '@vben/preferences'; |
|
|
|
import { preferences, usePreferences } from '@vben/preferences'; |
|
|
|
import { convertToRgb, updateCSSVariables } from '@vben/utils'; |
|
|
|
|
|
|
|
/** |
|
|
|
@ -160,53 +160,64 @@ export function useNaiveDesignTokens() { |
|
|
|
} |
|
|
|
|
|
|
|
export function useElementPlusDesignTokens() { |
|
|
|
const { isDark } = usePreferences(); |
|
|
|
const rootStyles = getComputedStyle(document.documentElement); |
|
|
|
|
|
|
|
const getCssVariableValueRaw = (variable: string) => { |
|
|
|
return rootStyles.getPropertyValue(variable); |
|
|
|
}; |
|
|
|
|
|
|
|
const getCssVariableValue = (variable: string, isColor: boolean = true) => { |
|
|
|
const value = rootStyles.getPropertyValue(variable); |
|
|
|
const value = getCssVariableValueRaw(variable); |
|
|
|
return isColor ? convertToRgb(`hsl(${value})`) : value; |
|
|
|
}; |
|
|
|
|
|
|
|
watch( |
|
|
|
() => preferences.theme, |
|
|
|
() => { |
|
|
|
const background = getCssVariableValue('--background'); |
|
|
|
const border = getCssVariableValue('--border'); |
|
|
|
const accent = getCssVariableValue('--accent'); |
|
|
|
|
|
|
|
const variables: Record<string, string> = { |
|
|
|
'--el-bg-color': background, |
|
|
|
'--el-bg-color-overlay': getCssVariableValue('--popover'), |
|
|
|
'--el-bg-color-page': getCssVariableValue('--background-deep'), |
|
|
|
'--el-border-color': border, |
|
|
|
'--el-border-color-dark': border, |
|
|
|
'--el-border-color-hover': accent, |
|
|
|
'--el-border-color-light': border, |
|
|
|
'--el-border-color-lighter': border, |
|
|
|
'--el-border-radius-base': getCssVariableValue('--radius', false), |
|
|
|
|
|
|
|
'--el-border-radius-base': getCssVariableValue('--radius', false), |
|
|
|
'--el-color-danger': getCssVariableValue('--destructive-500'), |
|
|
|
'--el-color-danger-dark-2': getCssVariableValue('--destructive'), |
|
|
|
'--el-color-danger-light-3': getCssVariableValue('--destructive-400'), |
|
|
|
'--el-color-danger-light-5': getCssVariableValue('--destructive-300'), |
|
|
|
'--el-color-danger-light-7': getCssVariableValue('--destructive-200'), |
|
|
|
'--el-color-danger-light-8': getCssVariableValue('--destructive-100'), |
|
|
|
'--el-color-danger-light-9': getCssVariableValue('--destructive-50'), |
|
|
|
|
|
|
|
'--el-color-danger-light-9': getCssVariableValue('--destructive-50'), |
|
|
|
'--el-color-error': getCssVariableValue('--destructive-500'), |
|
|
|
'--el-color-error-dark-2': getCssVariableValue('--destructive'), |
|
|
|
'--el-color-error-light-3': getCssVariableValue('--destructive-400'), |
|
|
|
'--el-color-error-light-5': getCssVariableValue('--destructive-300'), |
|
|
|
'--el-color-error-light-7': getCssVariableValue('--destructive-200'), |
|
|
|
'--el-color-error-light-8': getCssVariableValue('--destructive-100'), |
|
|
|
'--el-color-error-light-9': getCssVariableValue('--destructive-50'), |
|
|
|
|
|
|
|
'--el-color-error-light-9': getCssVariableValue('--destructive-50'), |
|
|
|
'--el-color-info-light-8': border, |
|
|
|
'--el-color-info-light-9': background, |
|
|
|
|
|
|
|
'--el-color-info-light-9': background, |
|
|
|
'--el-color-primary': getCssVariableValue('--primary-500'), |
|
|
|
'--el-color-primary-dark-2': getCssVariableValue('--primary'), |
|
|
|
'--el-color-primary-light-3': getCssVariableValue('--primary-400'), |
|
|
|
'--el-color-primary-light-5': getCssVariableValue('--primary-300'), |
|
|
|
'--el-color-primary-light-7': getCssVariableValue('--primary-200'), |
|
|
|
'--el-color-primary-light-8': getCssVariableValue('--primary-100'), |
|
|
|
'--el-color-primary-light-9': getCssVariableValue('--primary-50'), |
|
|
|
'--el-color-primary-light-9': isDark.value |
|
|
|
? accent |
|
|
|
: getCssVariableValue('--primary-50'), |
|
|
|
|
|
|
|
'--el-color-success': getCssVariableValue('--success-500'), |
|
|
|
'--el-color-success-dark-2': getCssVariableValue('--success'), |
|
|
|
@ -214,18 +225,20 @@ export function useElementPlusDesignTokens() { |
|
|
|
'--el-color-success-light-5': getCssVariableValue('--success-300'), |
|
|
|
'--el-color-success-light-7': getCssVariableValue('--success-200'), |
|
|
|
'--el-color-success-light-8': getCssVariableValue('--success-100'), |
|
|
|
'--el-color-success-light-9': getCssVariableValue('--success-50'), |
|
|
|
|
|
|
|
'--el-color-success-light-9': getCssVariableValue('--success-50'), |
|
|
|
'--el-color-warning': getCssVariableValue('--warning-500'), |
|
|
|
'--el-color-warning-dark-2': getCssVariableValue('--warning'), |
|
|
|
'--el-color-warning-light-3': getCssVariableValue('--warning-400'), |
|
|
|
'--el-color-warning-light-5': getCssVariableValue('--warning-300'), |
|
|
|
'--el-color-warning-light-7': getCssVariableValue('--warning-200'), |
|
|
|
'--el-color-warning-light-8': getCssVariableValue('--warning-100'), |
|
|
|
'--el-color-warning-light-9': getCssVariableValue('--warning-50'), |
|
|
|
|
|
|
|
'--el-color-warning-light-9': getCssVariableValue('--warning-50'), |
|
|
|
'--el-fill-color-blank': background, |
|
|
|
'--el-fill-color-light': getCssVariableValue('--accent'), |
|
|
|
'--el-text-color-primary': getCssVariableValue('--foreground'), |
|
|
|
|
|
|
|
'--el-text-color-regular': getCssVariableValue('--foreground'), |
|
|
|
}; |
|
|
|
updateCSSVariables(variables, `__vben_design_styles__`); |
|
|
|
|