UNPKG

@_lan/web-libs

Version:

<div align="center"> <img src="./public/favicon.svg" width="160" /> <h1>SoybeanAdmin AntDesign</h1> <span>中文 | <a href="./README.en_US.md">English</a></span> </div>

46 lines (38 loc) 1.48 kB
import type { AnyColor } from 'colord'; import { getHex } from '../shared'; import type { ColorPaletteNumber } from '../types'; import { getRecommendedColorPalette } from './recommend'; import { getAntDColorPalette } from './antd'; /** * get color palette by provided color * * @param color * @param recommended whether to get recommended color palette (the provided color may not be the main color) */ export function getColorPalette(color: AnyColor, recommended = false) { const colorMap = new Map<ColorPaletteNumber, string>(); if (recommended) { const colorPalette = getRecommendedColorPalette(getHex(color)); colorPalette.palettes.forEach(palette => { colorMap.set(palette.number, palette.hex); }); } else { const colors = getAntDColorPalette(color); const colorNumbers: ColorPaletteNumber[] = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950]; colorNumbers.forEach((number, index) => { colorMap.set(number, colors[index]); }); } return colorMap; } /** * get color palette color by number * * @param color the provided color * @param number the color palette number * @param recommended whether to get recommended color palette (the provided color may not be the main color) */ export function getPaletteColorByNumber(color: AnyColor, number: ColorPaletteNumber, recommended = false) { const colorMap = getColorPalette(color, recommended); return colorMap.get(number as ColorPaletteNumber)!; }