core.ts

 1import chroma from "chroma-js";
 2
 3export type Color = string;
 4
 5function getColorRamp(colorName, baseColor, steps = 10) {
 6  let hsl = chroma(baseColor).hsl();
 7  let h = Math.round(hsl[0]);
 8  let lightColor = chroma.hsl(h, 0.88, 0.96).hex();
 9  let darkColor = chroma.hsl(h, 0.68, 0.32).hex();
10
11  let ramp = chroma
12    .scale([lightColor, baseColor, darkColor])
13    .domain([0, 0.5, 1])
14    .mode("hsl")
15    .gamma(1)
16    .correctLightness(true)
17    .padding([0, 0.15])
18    .colors(steps);
19
20  let tokens = {};
21  let token = {};
22  let colorNumber = 0;
23
24  for (let i = 0; i < steps; i++) {
25    if (i !== 0) {
26      colorNumber = i * 100;
27    }
28
29    token = {
30      [`${colorName}_${colorNumber}`]: {
31        value: ramp[i].value,
32        rootValue: baseColor,
33        step: i,
34        type: "color",
35      },
36    };
37
38    Object.assign(token, tokens);
39  }
40
41  return tokens;
42}
43
44export default {
45  color: {
46    rose: getColorRamp("rose", "#F43F5E", 10),
47  },
48
49  fontFamily: {
50    sans: "Zed Sans",
51    mono: "Zed Mono",
52  },
53  fontSize: {
54    "3xs": {
55      value: "8",
56      type: "fontSizes",
57    },
58    "2xs": {
59      value: "10",
60      type: "fontSizes",
61    },
62    xs: {
63      value: "12",
64      type: "fontSizes",
65    },
66    sm: {
67      value: "14",
68      type: "fontSizes",
69    },
70    md: {
71      value: "16",
72      type: "fontSizes",
73    },
74    lg: {
75      value: "18",
76      type: "fontSizes",
77    },
78    xl: {
79      value: "20",
80      type: "fontSizes",
81    },
82  },
83};