{"version":3,"file":"generate-colors.mjs","names":[],"sources":["../src/generate-colors.ts"],"sourcesContent":["import chroma from 'chroma-js';\n\nconst LIGHTNESS_MAP = [0.96, 0.907, 0.805, 0.697, 0.605, 0.547, 0.518, 0.445, 0.395, 0.34];\nconst SATURATION_MAP = [0.32, 0.16, 0.08, 0.04, 0, 0, 0.04, 0.08, 0.16, 0.32];\n\nfunction getClosestLightness(colorObject: chroma.Color) {\n  const lightnessGoal = colorObject.get('hsl.l');\n  return LIGHTNESS_MAP.reduce((prev, curr) =>\n    Math.abs(curr - lightnessGoal) < Math.abs(prev - lightnessGoal) ? curr : prev\n  );\n}\n\nexport function generateColorsMap(color: string) {\n  const colorObject = chroma(color);\n  const closestLightness = getClosestLightness(colorObject);\n  const baseColorIndex = LIGHTNESS_MAP.findIndex((l) => l === closestLightness);\n\n  const colors = LIGHTNESS_MAP.map((l) => colorObject.set('hsl.l', l))\n    .map((c) => chroma(c))\n    .map((c, i) => {\n      const saturationDelta = SATURATION_MAP[i] - SATURATION_MAP[baseColorIndex];\n      return saturationDelta >= 0\n        ? c.saturate(saturationDelta)\n        : c.desaturate(saturationDelta * -1);\n    });\n\n  colors[baseColorIndex] = chroma(color);\n\n  return { baseColorIndex, colors };\n}\n\nexport type MantineColorsTuple = readonly [\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  ...string[],\n];\n\nexport function generateColors(color: string) {\n  return generateColorsMap(color).colors.map((c) => c.hex()) as unknown as MantineColorsTuple;\n}\n"],"mappings":";;;AAEA,MAAM,gBAAgB;CAAC;CAAM;CAAO;CAAO;CAAO;CAAO;CAAO;CAAO;CAAO;CAAO;AAAI;AACzF,MAAM,iBAAiB;CAAC;CAAM;CAAM;CAAM;CAAM;CAAG;CAAG;CAAM;CAAM;CAAM;AAAI;AAE5E,SAAS,oBAAoB,aAA2B;CACtD,MAAM,gBAAgB,YAAY,IAAI,OAAO;CAC7C,OAAO,cAAc,QAAQ,MAAM,SACjC,KAAK,IAAI,OAAO,aAAa,IAAI,KAAK,IAAI,OAAO,aAAa,IAAI,OAAO,IAC3E;AACF;AAEA,SAAgB,kBAAkB,OAAe;CAC/C,MAAM,cAAc,OAAO,KAAK;CAChC,MAAM,mBAAmB,oBAAoB,WAAW;CACxD,MAAM,iBAAiB,cAAc,WAAW,MAAM,MAAM,gBAAgB;CAE5E,MAAM,SAAS,cAAc,KAAK,MAAM,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,CACjE,KAAK,MAAM,OAAO,CAAC,CAAC,CAAC,CACrB,KAAK,GAAG,MAAM;EACb,MAAM,kBAAkB,eAAe,KAAK,eAAe;EAC3D,OAAO,mBAAmB,IACtB,EAAE,SAAS,eAAe,IAC1B,EAAE,WAAW,kBAAkB,EAAE;CACvC,CAAC;CAEH,OAAO,kBAAkB,OAAO,KAAK;CAErC,OAAO;EAAE;EAAgB;CAAO;AAClC;AAgBA,SAAgB,eAAe,OAAe;CAC5C,OAAO,kBAAkB,KAAK,CAAC,CAAC,OAAO,KAAK,MAAM,EAAE,IAAI,CAAC;AAC3D"}