mirror of
https://github.com/soybeanjs/soybean-admin.git
synced 2025-09-22 19:46:38 +08:00
57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
import { getColorPaletteFamily } from './palette';
|
|
import { getColorName } from './name';
|
|
import type { ColorPalette, ColorPaletteFamily, ColorPaletteItem, ColorPaletteNumber } from './type';
|
|
import defaultPalettes from './json/palette.json';
|
|
|
|
/**
|
|
* Get color palette by provided color and color name
|
|
*
|
|
* @param color The provided color
|
|
* @param colorName Color name
|
|
*/
|
|
export function getColorPalette(color: string, colorName: string) {
|
|
const colorPaletteFamily = getColorPaletteFamily(color, colorName);
|
|
|
|
const colorMap = new Map<ColorPaletteNumber, ColorPaletteItem>();
|
|
|
|
colorPaletteFamily.palettes.forEach(palette => {
|
|
colorMap.set(palette.number, palette);
|
|
});
|
|
|
|
const mainColor = colorMap.get(500) as ColorPaletteItem;
|
|
const matchColor = colorPaletteFamily.palettes.find(palette => palette.hexcode === color) as ColorPaletteItem;
|
|
|
|
const colorPalette: ColorPalette = {
|
|
...colorPaletteFamily,
|
|
colorMap,
|
|
main: mainColor,
|
|
match: matchColor
|
|
};
|
|
|
|
return colorPalette;
|
|
}
|
|
|
|
/**
|
|
* Get color by color palette number
|
|
*
|
|
* @param color Color
|
|
* @param num Color palette number
|
|
* @returns Color hexcode
|
|
*/
|
|
export function getColorByColorPaletteNumber(color: string, num: ColorPaletteNumber) {
|
|
const colorPalette = getColorPalette(color, color);
|
|
|
|
const colorItem = colorPalette.colorMap.get(num) as ColorPaletteItem;
|
|
|
|
return colorItem.hexcode;
|
|
}
|
|
|
|
export default getColorPalette;
|
|
|
|
/** The builtin color palettes */
|
|
const colorPalettes = defaultPalettes as ColorPaletteFamily[];
|
|
|
|
export { getColorName, colorPalettes };
|
|
|
|
export type { ColorPalette, ColorPaletteNumber, ColorPaletteItem, ColorPaletteFamily };
|