@@ -1,175 +0,0 @@
-// Adapted from @k-vyn/coloralgorithm
-
-export interface Curve {
- name: string;
- formatted_name: string;
- value: number[];
-}
-
-export interface Curves {
- lightness: Curve;
- saturation: Curve;
- linear: Curve;
- easeInCubic: Curve;
- easeOutCubic: Curve;
- easeInOutCubic: Curve;
- easeInSine: Curve;
- easeOutSine: Curve;
- easeInOutSine: Curve;
- easeInQuad: Curve;
- easeOutQuad: Curve;
- easeInOutQuad: Curve;
- easeInQuart: Curve;
- easeOutQuart: Curve;
- easeInOutQuart: Curve;
- easeInQuint: Curve;
- easeOutQuint: Curve;
- easeInOutQuint: Curve;
- easeInExpo: Curve;
- easeOutExpo: Curve;
- easeInOutExpo: Curve;
- easeInCirc: Curve;
- easeOutCirc: Curve;
- easeInOutCirc: Curve;
- easeInBack: Curve;
- easeOutBack: Curve;
- easeInOutBack: Curve;
-}
-
-export const curve: Curves = {
- lightness: {
- name: "nate",
- formatted_name: "Nate",
- value: [0.2, 0, 0.85, 1.1],
- },
- saturation: {
- name: "nate",
- formatted_name: "Nate",
- value: [0.67, 0.6, 0.55, 1.0],
- },
- linear: {
- name: "linear",
- formatted_name: "Linear",
- value: [0.5, 0.5, 0.5, 0.5],
- },
- easeInCubic: {
- name: "easeInCubic",
- formatted_name: "Cubic - EaseIn",
- value: [0.55, 0.055, 0.675, 0.19],
- },
- easeOutCubic: {
- name: "easeOutCubic",
- formatted_name: "Cubic - EaseOut",
- value: [0.215, 0.61, 0.355, 1],
- },
- easeInOutCubic: {
- name: "easeInOutCubic",
- formatted_name: "Cubic - EaseInOut",
- value: [0.645, 0.045, 0.355, 1],
- },
- easeInSine: {
- name: "easeInSine",
- formatted_name: "Sine - EaseIn",
- value: [0.47, 0, 0.745, 0.715],
- },
- easeOutSine: {
- name: "easeOutSine",
- formatted_name: "Sine - EaseOut",
- value: [0.39, 0.575, 0.565, 1],
- },
- easeInOutSine: {
- name: "easeInOutSine",
- formatted_name: "Sine - EaseInOut",
- value: [0.445, 0.05, 0.55, 0.95],
- },
- easeInQuad: {
- name: "easeInQuad",
- formatted_name: "Quad - EaseIn",
- value: [0.55, 0.085, 0.68, 0.53],
- },
- easeOutQuad: {
- name: "easeOutQuad",
- formatted_name: "Quad - EaseOut",
- value: [0.25, 0.46, 0.45, 0.94],
- },
- easeInOutQuad: {
- name: "easeInOutQuad",
- formatted_name: "Quad - EaseInOut",
- value: [0.455, 0.03, 0.515, 0.955],
- },
- easeInQuart: {
- name: "easeInQuart",
- formatted_name: "Quart - EaseIn",
- value: [0.895, 0.03, 0.685, 0.22],
- },
- easeOutQuart: {
- name: "easeOutQuart",
- formatted_name: "Quart - EaseOut",
- value: [0.165, 0.84, 0.44, 1],
- },
- easeInOutQuart: {
- name: "easeInOutQuart",
- formatted_name: "Quart - EaseInOut",
- value: [0.77, 0, 0.175, 1],
- },
- easeInQuint: {
- name: "easeInQuint",
- formatted_name: "Quint - EaseIn",
- value: [0.755, 0.05, 0.855, 0.06],
- },
- easeOutQuint: {
- name: "easeOutQuint",
- formatted_name: "Quint - EaseOut",
- value: [0.23, 1, 0.32, 1],
- },
- easeInOutQuint: {
- name: "easeInOutQuint",
- formatted_name: "Quint - EaseInOut",
- value: [0.86, 0, 0.07, 1],
- },
- easeInCirc: {
- name: "easeInCirc",
- formatted_name: "Circ - EaseIn",
- value: [0.6, 0.04, 0.98, 0.335],
- },
- easeOutCirc: {
- name: "easeOutCirc",
- formatted_name: "Circ - EaseOut",
- value: [0.075, 0.82, 0.165, 1],
- },
- easeInOutCirc: {
- name: "easeInOutCirc",
- formatted_name: "Circ - EaseInOut",
- value: [0.785, 0.135, 0.15, 0.86],
- },
- easeInExpo: {
- name: "easeInExpo",
- formatted_name: "Expo - EaseIn",
- value: [0.95, 0.05, 0.795, 0.035],
- },
- easeOutExpo: {
- name: "easeOutExpo",
- formatted_name: "Expo - EaseOut",
- value: [0.19, 1, 0.22, 1],
- },
- easeInOutExpo: {
- name: "easeInOutExpo",
- formatted_name: "Expo - EaseInOut",
- value: [1, 0, 0, 1],
- },
- easeInBack: {
- name: "easeInBack",
- formatted_name: "Back - EaseIn",
- value: [0.6, -0.28, 0.735, 0.045],
- },
- easeOutBack: {
- name: "easeOutBack",
- formatted_name: "Back - EaseOut",
- value: [0.175, 0.885, 0.32, 1.275],
- },
- easeInOutBack: {
- name: "easeInOutBack",
- formatted_name: "Back - EaseInOut",
- value: [0.68, -0.55, 0.265, 1.55],
- },
-};
@@ -1,336 +1,376 @@
-import chroma from "chroma-js";
-import {
- generateColors2,
- generateColorSet,
- generateColorsUsingCurve,
-} from "../algorithm";
-import { curve } from "../curves";
-import { ColorFamily } from "../types";
+import { generateColorFamily } from "../lib/generate";
+import { curve } from "./curves";
// These are the source colors for the color scales in the system.
-// This should never directly be used in the system, or exported to be used in a component or theme
-// As it will generate thousands of lines of code.
+// These should never directly be used directly in components or themes as they generate thousands of lines of code.
// Instead, use the outputs from the reference palette which exports a smaller subset of colors.
-// Token or user-facing colors should use short, clear names
-// and a 100-900 scale to match the font weight scale.
+// Token or user-facing colors should use short, clear names and a 100-900 scale to match the font weight scale.
// Red ======================================== //
-export const red = generateColors2(
- {
- start: 0,
- end: 0,
- curve: curve.linear,
- },
- {
- start: 95,
- end: 75,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 25,
- curve: curve.lightness,
- }
-);
+export const red = generateColorFamily({
+ name: "red",
+ color: {
+ hue: {
+ start: 0,
+ end: 0,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 95,
+ end: 75,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 25,
+ curve: curve.lightness,
+ },
+ },
+});
// Sunset ======================================== //
-export const sunset = generateColors2(
- {
- start: 12,
- end: 12,
- curve: curve.linear,
- },
- {
- start: 100,
- end: 80,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 25,
- curve: curve.lightness,
- }
-);
+export const sunset = generateColorFamily({
+ name: "sunset",
+ color: {
+ hue: {
+ start: 12,
+ end: 12,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 100,
+ end: 80,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 25,
+ curve: curve.lightness,
+ },
+ },
+});
// Orange ======================================== //
-export const orange = generateColors2(
- {
- start: 25,
- end: 25,
- curve: curve.linear,
- },
- {
- start: 100,
- end: 100,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 25,
- curve: curve.lightness,
- }
-);
+export const orange = generateColorFamily({
+ name: "orange",
+ color: {
+ hue: {
+ start: 25,
+ end: 25,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 100,
+ end: 100,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 25,
+ curve: curve.lightness,
+ },
+ },
+});
// Amber ======================================== //
-export const amber = generateColors2(
- {
- start: 34,
- end: 34,
- curve: curve.linear,
- },
- {
- start: 100,
- end: 100,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 25,
- curve: curve.lightness,
- }
-);
+export const amber = generateColorFamily({
+ name: "amber",
+ color: {
+ hue: {
+ start: 34,
+ end: 34,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 100,
+ end: 100,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 25,
+ curve: curve.lightness,
+ },
+ },
+});
// Yellow ======================================== //
-export const yellow = generateColors2(
- {
- start: 48,
- end: 48,
- curve: curve.linear,
- },
- {
- start: 90,
- end: 100,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 32,
- curve: curve.lightness,
- }
-);
+export const yellow = generateColorFamily({
+ name: "yellow",
+ color: {
+ hue: {
+ start: 48,
+ end: 48,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 90,
+ end: 100,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 28,
+ curve: curve.lightness,
+ },
+ },
+});
// Citron ======================================== //
-export const citron = generateColors2(
- {
- start: 65,
- end: 65,
- curve: curve.linear,
- },
- {
- start: 85,
- end: 70,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 25,
- curve: curve.lightness,
- }
-);
+export const citron = generateColorFamily({
+ name: "citron",
+ color: {
+ hue: {
+ start: 65,
+ end: 65,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 85,
+ end: 70,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 25,
+ curve: curve.lightness,
+ },
+ },
+});
// Lime ======================================== //
-export const lime = generateColors2(
- {
- start: 85,
- end: 85,
- curve: curve.linear,
- },
- {
- start: 85,
- end: 70,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 25,
- curve: curve.lightness,
- }
-);
+export const lime = generateColorFamily({
+ name: "lime",
+ color: {
+ hue: {
+ start: 85,
+ end: 85,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 85,
+ end: 70,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 25,
+ curve: curve.lightness,
+ },
+ },
+});
// Green ======================================== //
-export const green = generateColors2(
- {
- start: 108,
- end: 108,
- curve: curve.linear,
- },
- {
- start: 60,
- end: 50,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 25,
- curve: curve.lightness,
- }
-);
+export const green = generateColorFamily({
+ name: "green",
+ color: {
+ hue: {
+ start: 108,
+ end: 108,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 60,
+ end: 50,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 25,
+ curve: curve.lightness,
+ },
+ },
+});
// Mint ======================================== //
-export const mint = generateColors2(
- {
- start: 142,
- end: 142,
- curve: curve.linear,
- },
- {
- start: 60,
- end: 50,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 20,
- curve: curve.lightness,
- }
-);
+export const mint = generateColorFamily({
+ name: "mint",
+ color: {
+ hue: {
+ start: 142,
+ end: 142,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 60,
+ end: 50,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 20,
+ curve: curve.lightness,
+ },
+ },
+});
// Cyan ======================================== //
-export const cyan = generateColors2(
- {
- start: 179,
- end: 179,
- curve: curve.linear,
- },
- {
- start: 70,
- end: 60,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 20,
- curve: curve.lightness,
- }
-);
+export const cyan = generateColorFamily({
+ name: "cyan",
+ color: {
+ hue: {
+ start: 179,
+ end: 179,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 70,
+ end: 60,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 20,
+ curve: curve.lightness,
+ },
+ },
+});
// Sky ======================================== //
-export const sky = generateColors2(
- {
- start: 190,
- end: 190,
- curve: curve.linear,
- },
- {
- start: 85,
- end: 75,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 20,
- curve: curve.lightness,
- }
-);
+export const sky = generateColorFamily({
+ name: "sky",
+ color: {
+ hue: {
+ start: 195,
+ end: 195,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 85,
+ end: 75,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 20,
+ curve: curve.lightness,
+ },
+ },
+});
// Blue ======================================== //
-export const blue = generateColors2(
- {
- start: 210,
- end: 210,
- curve: curve.linear,
- },
- {
- start: 90,
- end: 60,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 20,
- curve: curve.lightness,
- }
-);
+export const blue = generateColorFamily({
+ name: "blue",
+ color: {
+ hue: {
+ start: 210,
+ end: 210,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 90,
+ end: 75,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 20,
+ curve: curve.lightness,
+ },
+ },
+});
// Indigo ======================================== //
-export const indigo = generateColors2(
- {
- start: 240,
- end: 240,
- curve: curve.linear,
- },
- {
- start: 80,
- end: 40,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 20,
- curve: curve.lightness,
- }
-);
+export const indigo = generateColorFamily({
+ name: "indigo",
+ color: {
+ hue: {
+ start: 230,
+ end: 230,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 80,
+ end: 50,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 20,
+ curve: curve.lightness,
+ },
+ },
+});
// Purple ======================================== //
-export const purple = generateColors2(
- {
- start: 260,
- end: 265,
- curve: curve.linear,
- },
- {
- start: 80,
- end: 50,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 20,
- curve: curve.lightness,
- }
-);
+export const purple = generateColorFamily({
+ name: "purple",
+ color: {
+ hue: {
+ start: 260,
+ end: 265,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 80,
+ end: 50,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 20,
+ curve: curve.lightness,
+ },
+ },
+});
// Pink ======================================== //
-export const pink = generateColors2(
- {
- start: 310,
- end: 310,
- curve: curve.linear,
- },
- {
- start: 80,
- end: 70,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 20,
- curve: curve.lightness,
- }
-);
+export const pink = generateColorFamily({
+ name: "pink",
+ color: {
+ hue: {
+ start: 310,
+ end: 310,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 80,
+ end: 75,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 20,
+ curve: curve.lightness,
+ },
+ },
+});
// Rose ======================================== //
-export const rose = generateColors2(
- {
- start: 345,
- end: 345,
- curve: curve.linear,
- },
- {
- start: 90,
- end: 65,
- curve: curve.saturation,
- },
- {
- start: 97,
- end: 20,
- curve: curve.lightness,
- }
-);
+export const rose = generateColorFamily({
+ name: "rose",
+ color: {
+ hue: {
+ start: 345,
+ end: 345,
+ curve: curve.linear,
+ },
+ saturation: {
+ start: 90,
+ end: 65,
+ curve: curve.saturation,
+ },
+ lightness: {
+ start: 97,
+ end: 20,
+ curve: curve.lightness,
+ },
+ },
+});