All files / color-name/src index.tsx

100% Statements 8/8
100% Branches 0/0
100% Functions 3/3
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47                      1x 148x 148x     1x                                           1x 16x 16x       148x    
import named from 'colors-named';
import hex from 'colors-named-hex';
 
export type ColorKeywords = {
  [key in (typeof named)[number]]: (typeof hex)[number];
};
 
/**
 * Extended color keywords
 * https://www.w3.org/TR/css-color-3/#svg-color
 */
export const colorKeywords = named.reduce((obj, key, index) => {
  obj[key] = hex[index];
  return obj;
}, {} as ColorKeywords);
 
export const baseNamed = [
  'aqua',
  'black',
  'blue',
  'fuchsia',
  'gray',
  'green',
  'lime',
  'maroon',
  'navy',
  'olive',
  'purple',
  'red',
  'silver',
  'teal',
  'white',
  'yellow',
] as const;
export type ColorKeywordsBase = {
  [key in (typeof baseNamed)[number]]: ColorKeywords[key];
};
 
export const colorKeywordsBase = baseNamed.reduce((obj, key) => {
  obj[key] = colorKeywords[key];
  return obj;
}, {} as ColorKeywordsBase);
 
export default function colorNameToHex(name: keyof ColorKeywords) {
  return colorKeywords[name];
}