diff --git a/styles/core.color.ts b/styles/core.color.ts new file mode 100644 index 0000000000..004e7209a2 --- /dev/null +++ b/styles/core.color.ts @@ -0,0 +1,93 @@ +import chroma from "chroma-js"; + +export type Color = string; + +function returnTokens( + colorName: string, + ramp: Array, // help, have no clue on type here +) { + let tokens = {}; + let token = {}; + let colorNumber = 0; + let increment = 0; + + for (let i = 0; i < ramp.len; i++) { + if (i > 11 ) { + increment = 50; + } else { + increment = 100; + } + + if (i !== 0) { + colorNumber = i * increment; + } + + token = { + [`${colorName}_${colorNumber}`]: { + value: ramp[i].value, + step: i, + type: "color", + }, + }; + + Object.assign(token, tokens); + } + return tokens; +} + +function oneColorRamp( + colorName: string, + baseColor: string, + steps: number = 10 +) { + let hsl = chroma(baseColor).hsl(); + let h = Math.round(hsl[0]); + let lightColor = chroma.hsl(h, 0.88, 0.96).hex(); + let darkColor = chroma.hsl(h, 0.68, 0.32).hex(); + + let ramp = chroma + .scale([lightColor, baseColor, darkColor]) + .domain([0, 0.5, 1]) + .mode("hsl") + .gamma(1) + .correctLightness(true) + .padding([0, 0.15]) + .colors(steps) + .hex(); + + return returnTokens(colorName, ramp); +} + +function colorRamp( + colorName: string, + startColor: string, + endColor: string, + steps: number +) { + let ramp = chroma.scale([startColor, endColor]).mode("hsl").colors(steps).hex(); + + return returnTokens(colorName, ramp); +} + +export default { + color: { + neutral: colorRamp("neutral", "black", "white", 21), // colorName, startColor, endColor, steps + rose: oneColorRamp("rose", "#F43F5EFF"), // colorName, baseColor, steps(optional) + red: oneColorRamp("red", "#EF4444FF"), + orange: oneColorRamp("orange", "#F97316FF"), + amber: oneColorRamp("amber", "#F59E0BFF"), + yellow: oneColorRamp("yellow", "#EAB308FF"), + lime: oneColorRamp("lime", "#84CC16FF"), + green: oneColorRamp("green", "#22C55EFF"), + emerald: oneColorRamp("emerald", "#10B981FF"), + teal: oneColorRamp("teal", "#14B8A6FF"), + cyan: oneColorRamp("cyan", "#06BBD4FF"), + sky: oneColorRamp("sky", "#0EA5E9FF"), + blue: oneColorRamp("blue", "#3B82F6FF"), + indigo: oneColorRamp("indigo", "#6366F1FF"), + violet: oneColorRamp("violet", "#8B5CF6FF"), + purple: oneColorRamp("purple", "#A855F7FF"), + fuschia: oneColorRamp("fuschia", "#D946E4FF"), + pink: oneColorRamp("pink", "#EC4899FF"), + }, +}; diff --git a/styles/core.ts b/styles/core.ts index 164b6dba00..6444ef9a1c 100644 --- a/styles/core.ts +++ b/styles/core.ts @@ -1,50 +1,9 @@ -import chroma from "chroma-js"; +import color from "./core.color"; export type Color = string; -function getColorRamp(colorName, baseColor, steps = 10) { - let hsl = chroma(baseColor).hsl(); - let h = Math.round(hsl[0]); - let lightColor = chroma.hsl(h, 0.88, 0.96).hex(); - let darkColor = chroma.hsl(h, 0.68, 0.32).hex(); - - let ramp = chroma - .scale([lightColor, baseColor, darkColor]) - .domain([0, 0.5, 1]) - .mode("hsl") - .gamma(1) - .correctLightness(true) - .padding([0, 0.15]) - .colors(steps); - - let tokens = {}; - let token = {}; - let colorNumber = 0; - - for (let i = 0; i < steps; i++) { - if (i !== 0) { - colorNumber = i * 100; - } - - token = { - [`${colorName}_${colorNumber}`]: { - value: ramp[i].value, - rootValue: baseColor, - step: i, - type: "color", - }, - }; - - Object.assign(token, tokens); - } - - return tokens; -} - export default { - color: { - rose: getColorRamp("rose", "#F43F5E", 10), - }, + color: color, fontFamily: { sans: "Zed Sans",