2024-07-29 14:11:22 +00:00
|
|
|
import { reactive, watch } from 'vue';
|
2024-07-28 09:01:19 +00:00
|
|
|
|
|
|
|
import { preferences } from '@vben/preferences';
|
|
|
|
|
2024-07-30 16:19:17 +00:00
|
|
|
/**
|
|
|
|
* 用于适配各个框架的设计系统
|
|
|
|
*/
|
|
|
|
|
|
|
|
export function useAntdDesignTokens() {
|
2024-07-28 09:01:19 +00:00
|
|
|
const rootStyles = getComputedStyle(document.documentElement);
|
|
|
|
|
2024-07-30 16:19:17 +00:00
|
|
|
const tokens = reactive({
|
2024-07-29 14:11:22 +00:00
|
|
|
borderRadius: '' as any,
|
|
|
|
colorBgBase: '',
|
|
|
|
colorBgContainer: '',
|
|
|
|
colorBgElevated: '',
|
|
|
|
colorBgLayout: '',
|
|
|
|
colorBgMask: '',
|
|
|
|
colorBorder: '',
|
|
|
|
colorError: '',
|
|
|
|
colorInfo: '',
|
|
|
|
colorPrimary: '',
|
|
|
|
colorSuccess: '',
|
|
|
|
colorTextBase: '',
|
|
|
|
colorWarning: '',
|
|
|
|
});
|
2024-07-28 09:01:19 +00:00
|
|
|
|
|
|
|
const getCssVariableValue = (variable: string, isColor: boolean = true) => {
|
|
|
|
const value = rootStyles.getPropertyValue(variable);
|
|
|
|
return isColor ? `hsl(${value})` : value;
|
|
|
|
};
|
|
|
|
|
|
|
|
watch(
|
|
|
|
() => preferences.theme,
|
|
|
|
() => {
|
2024-07-30 16:19:17 +00:00
|
|
|
tokens.colorPrimary = getCssVariableValue('--primary');
|
|
|
|
|
|
|
|
tokens.colorError = getCssVariableValue('--destructive');
|
|
|
|
|
|
|
|
tokens.colorWarning = getCssVariableValue('--warning');
|
|
|
|
|
|
|
|
tokens.colorSuccess = getCssVariableValue('--success');
|
|
|
|
|
|
|
|
tokens.colorTextBase = getCssVariableValue('--foreground');
|
|
|
|
|
|
|
|
getCssVariableValue('--primary-foreground');
|
|
|
|
|
|
|
|
tokens.colorBorder = getCssVariableValue('--border');
|
|
|
|
|
|
|
|
tokens.colorBgElevated = getCssVariableValue('--popover');
|
|
|
|
|
|
|
|
tokens.colorBgContainer = getCssVariableValue('--card');
|
|
|
|
|
|
|
|
tokens.colorBgBase = getCssVariableValue('--background');
|
|
|
|
|
|
|
|
tokens.borderRadius = getCssVariableValue('--radius', false);
|
|
|
|
|
|
|
|
tokens.colorBgLayout = getCssVariableValue('--background-deep');
|
|
|
|
tokens.colorBgMask = getCssVariableValue('--overlay');
|
|
|
|
},
|
|
|
|
{ immediate: true },
|
|
|
|
);
|
|
|
|
|
|
|
|
return {
|
|
|
|
tokens,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export function useNaiveDesignTokens() {
|
|
|
|
const rootStyles = getComputedStyle(document.documentElement);
|
|
|
|
|
|
|
|
const commonTokens = reactive({
|
|
|
|
baseColor: '',
|
|
|
|
bodyColor: '',
|
|
|
|
borderColor: '',
|
|
|
|
borderRadius: '',
|
|
|
|
cardColor: '',
|
|
|
|
dividerColor: '',
|
|
|
|
errorColor: '',
|
|
|
|
errorColorHover: '',
|
|
|
|
errorColorPressed: '',
|
|
|
|
errorColorSuppl: '',
|
|
|
|
invertedColor: '',
|
|
|
|
modalColor: '',
|
|
|
|
popoverColor: '',
|
|
|
|
primaryColor: '',
|
|
|
|
primaryColorHover: '',
|
|
|
|
primaryColorPressed: '',
|
|
|
|
primaryColorSuppl: '',
|
|
|
|
successColor: '',
|
|
|
|
successColorHover: '',
|
|
|
|
successColorPressed: '',
|
|
|
|
successColorSuppl: '',
|
|
|
|
tableColor: '',
|
|
|
|
textColorBase: '',
|
|
|
|
warningColor: '',
|
|
|
|
warningColorHover: '',
|
|
|
|
warningColorPressed: '',
|
|
|
|
warningColorSuppl: '',
|
|
|
|
});
|
|
|
|
|
|
|
|
const getCssVariableValue = (variable: string, isColor: boolean = true) => {
|
|
|
|
const value = rootStyles.getPropertyValue(variable);
|
|
|
|
return isColor ? `hsl(${value})` : value;
|
|
|
|
};
|
|
|
|
|
|
|
|
watch(
|
|
|
|
() => preferences.theme,
|
|
|
|
() => {
|
|
|
|
commonTokens.primaryColor = getCssVariableValue('--primary');
|
|
|
|
commonTokens.primaryColorHover = getCssVariableValue('--primary-600');
|
|
|
|
commonTokens.primaryColorPressed = getCssVariableValue('--primary-700');
|
|
|
|
commonTokens.primaryColorSuppl = getCssVariableValue('--primary-800');
|
|
|
|
|
|
|
|
commonTokens.errorColor = getCssVariableValue('--destructive');
|
|
|
|
commonTokens.errorColorHover = getCssVariableValue('--destructive-600');
|
|
|
|
commonTokens.errorColorPressed = getCssVariableValue('--destructive-700');
|
|
|
|
commonTokens.errorColorSuppl = getCssVariableValue('--destructive-800');
|
|
|
|
|
|
|
|
commonTokens.warningColor = getCssVariableValue('--warning');
|
|
|
|
commonTokens.warningColorHover = getCssVariableValue('--warning-600');
|
|
|
|
commonTokens.warningColorPressed = getCssVariableValue('--warning-700');
|
|
|
|
commonTokens.warningColorSuppl = getCssVariableValue('--warning-800');
|
|
|
|
|
|
|
|
commonTokens.successColor = getCssVariableValue('--success');
|
|
|
|
commonTokens.successColorHover = getCssVariableValue('--success-600');
|
|
|
|
commonTokens.successColorPressed = getCssVariableValue('--success-700');
|
|
|
|
commonTokens.successColorSuppl = getCssVariableValue('--success-800');
|
|
|
|
|
|
|
|
commonTokens.textColorBase = getCssVariableValue('--foreground');
|
|
|
|
|
|
|
|
commonTokens.baseColor = getCssVariableValue('--primary-foreground');
|
|
|
|
|
|
|
|
commonTokens.dividerColor = commonTokens.borderColor =
|
|
|
|
getCssVariableValue('--border');
|
|
|
|
|
|
|
|
commonTokens.modalColor = commonTokens.popoverColor =
|
|
|
|
getCssVariableValue('--popover');
|
|
|
|
|
|
|
|
commonTokens.tableColor = commonTokens.cardColor =
|
|
|
|
getCssVariableValue('--card');
|
|
|
|
|
|
|
|
commonTokens.bodyColor = getCssVariableValue('--background');
|
|
|
|
commonTokens.invertedColor = getCssVariableValue('--background-deep');
|
|
|
|
|
|
|
|
commonTokens.borderRadius = getCssVariableValue('--radius', false);
|
|
|
|
|
|
|
|
// antDesignTokens.colorBgMask = getCssVariableValue('--overlay');
|
2024-07-28 09:01:19 +00:00
|
|
|
},
|
|
|
|
{ immediate: true },
|
|
|
|
);
|
|
|
|
|
|
|
|
return {
|
2024-07-30 16:19:17 +00:00
|
|
|
commonTokens,
|
2024-07-28 09:01:19 +00:00
|
|
|
};
|
|
|
|
}
|