@skbkontur/colors 1.1.2-d1791.0 → 2.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/cjs/constants/abney-correction.js +1102 -1102
  2. package/dist/cjs/constants/chroma-settings.js +102 -102
  3. package/dist/cjs/constants/default-swatch.d.ts +97 -95
  4. package/dist/cjs/constants/default-swatch.js +99 -97
  5. package/dist/cjs/constants/interaction-settings.d.ts +8 -0
  6. package/dist/cjs/constants/interaction-settings.js +19 -0
  7. package/dist/cjs/constants/logo-lightness.js +2 -2
  8. package/dist/cjs/constants/promo-hue-shift.d.ts +1 -1
  9. package/dist/cjs/constants/promo-hue-shift.js +11 -11
  10. package/dist/cjs/constants/warning-hue-patch.d.ts +1 -1
  11. package/dist/cjs/constants/warning-hue-patch.js +22 -22
  12. package/dist/cjs/get-base-tokens.d.ts +11 -9
  13. package/dist/cjs/get-base-tokens.js +178 -202
  14. package/dist/cjs/get-colors.d.ts +19 -0
  15. package/dist/cjs/get-colors.js +16 -0
  16. package/dist/cjs/get-default-tokens.d.ts +642 -1275
  17. package/dist/cjs/get-default-tokens.js +993 -1280
  18. package/dist/cjs/helpers/get-interactions.d.ts +7 -0
  19. package/dist/cjs/helpers/get-interactions.js +61 -0
  20. package/dist/cjs/helpers/get-logo.d.ts +2 -2
  21. package/dist/cjs/helpers/get-logo.js +28 -25
  22. package/dist/cjs/helpers/get-palette.d.ts +69 -42
  23. package/dist/cjs/helpers/get-palette.js +249 -204
  24. package/dist/cjs/helpers/get-promo.d.ts +10 -4
  25. package/dist/cjs/helpers/get-promo.js +48 -50
  26. package/dist/cjs/types/base-tokens.d.ts +115 -43
  27. package/dist/cjs/types/base-tokens.js +2 -2
  28. package/dist/cjs/types/generator-tokens.d.ts +30 -30
  29. package/dist/cjs/types/generator-tokens.js +2 -2
  30. package/dist/cjs/utils/format-variable.d.ts +2 -0
  31. package/dist/cjs/utils/format-variable.js +15 -0
  32. package/dist/colors.default-dark.js +325 -0
  33. package/dist/colors.default-light.js +326 -0
  34. package/dist/colors.js +319 -0
  35. package/dist/colors.less +319 -0
  36. package/dist/colors.scss +319 -0
  37. package/dist/esm/constants/abney-correction.js +1100 -1100
  38. package/dist/esm/constants/chroma-settings.js +100 -100
  39. package/dist/esm/constants/default-swatch.d.ts +97 -95
  40. package/dist/esm/constants/default-swatch.js +97 -95
  41. package/dist/esm/constants/interaction-settings.d.ts +8 -0
  42. package/dist/esm/constants/interaction-settings.js +8 -0
  43. package/dist/esm/constants/promo-hue-shift.d.ts +1 -1
  44. package/dist/esm/constants/promo-hue-shift.js +9 -9
  45. package/dist/esm/constants/warning-hue-patch.d.ts +1 -1
  46. package/dist/esm/constants/warning-hue-patch.js +20 -20
  47. package/dist/esm/get-base-tokens.d.ts +11 -9
  48. package/dist/esm/get-base-tokens.js +130 -172
  49. package/dist/esm/get-colors.d.ts +19 -0
  50. package/dist/esm/get-colors.js +12 -0
  51. package/dist/esm/get-default-tokens.d.ts +642 -1275
  52. package/dist/esm/get-default-tokens.js +991 -1278
  53. package/dist/esm/helpers/get-interactions.d.ts +7 -0
  54. package/dist/esm/helpers/get-interactions.js +49 -0
  55. package/dist/esm/helpers/get-logo.d.ts +2 -2
  56. package/dist/esm/helpers/get-logo.js +24 -21
  57. package/dist/esm/helpers/get-palette.d.ts +69 -42
  58. package/dist/esm/helpers/get-palette.js +197 -175
  59. package/dist/esm/helpers/get-promo.d.ts +10 -4
  60. package/dist/esm/helpers/get-promo.js +44 -46
  61. package/dist/esm/types/base-tokens.d.ts +115 -43
  62. package/dist/esm/types/generator-tokens.d.ts +30 -30
  63. package/dist/esm/utils/format-variable.d.ts +2 -0
  64. package/dist/esm/utils/format-variable.js +10 -0
  65. package/dist/tokens/brand-blue-deep_accent-brand.css +643 -0
  66. package/dist/tokens/brand-blue-deep_accent-gray.css +643 -0
  67. package/dist/tokens/brand-blue_accent-brand.css +643 -0
  68. package/dist/tokens/brand-blue_accent-gray.css +643 -0
  69. package/dist/tokens/brand-green_accent-brand.css +643 -0
  70. package/dist/tokens/brand-green_accent-gray.css +643 -0
  71. package/dist/tokens/brand-mint_accent-brand.css +643 -0
  72. package/dist/tokens/brand-mint_accent-gray.css +643 -0
  73. package/dist/tokens/brand-orange_accent-gray.css +643 -0
  74. package/dist/tokens/brand-purple_accent-brand.css +643 -0
  75. package/dist/tokens/brand-purple_accent-gray.css +643 -0
  76. package/dist/tokens/brand-red_accent-gray.css +643 -0
  77. package/dist/tokens/brand-violet_accent-brand.css +643 -0
  78. package/dist/tokens/brand-violet_accent-gray.css +643 -0
  79. package/dist/tokens-js/brand-blue-deep_accent-brand.js +644 -0
  80. package/dist/tokens-js/brand-blue-deep_accent-gray.js +644 -0
  81. package/dist/tokens-js/brand-blue_accent-brand.js +644 -0
  82. package/dist/tokens-js/brand-blue_accent-gray.js +644 -0
  83. package/dist/tokens-js/brand-green_accent-brand.js +644 -0
  84. package/dist/tokens-js/brand-green_accent-gray.js +644 -0
  85. package/dist/tokens-js/brand-mint_accent-brand.js +644 -0
  86. package/dist/tokens-js/brand-mint_accent-gray.js +644 -0
  87. package/dist/tokens-js/brand-orange_accent-gray.js +644 -0
  88. package/dist/tokens-js/brand-purple_accent-brand.js +644 -0
  89. package/dist/tokens-js/brand-purple_accent-gray.js +644 -0
  90. package/dist/tokens-js/brand-red_accent-gray.js +644 -0
  91. package/dist/tokens-js/brand-violet_accent-brand.js +644 -0
  92. package/dist/tokens-js/brand-violet_accent-gray.js +644 -0
  93. package/dist/tokens-mobile/brand-blue-deep_accent-brand.json +718 -0
  94. package/dist/tokens-mobile/brand-blue-deep_accent-gray.json +718 -0
  95. package/dist/tokens-mobile/brand-blue_accent-brand.json +718 -0
  96. package/dist/tokens-mobile/brand-blue_accent-gray.json +718 -0
  97. package/dist/tokens-mobile/brand-green_accent-brand.json +718 -0
  98. package/dist/tokens-mobile/brand-green_accent-gray.json +718 -0
  99. package/dist/tokens-mobile/brand-mint_accent-brand.json +718 -0
  100. package/dist/tokens-mobile/brand-mint_accent-gray.json +718 -0
  101. package/dist/tokens-mobile/brand-orange_accent-gray.json +718 -0
  102. package/dist/tokens-mobile/brand-purple_accent-brand.json +718 -0
  103. package/dist/tokens-mobile/brand-purple_accent-gray.json +718 -0
  104. package/dist/tokens-mobile/brand-red_accent-gray.json +718 -0
  105. package/dist/tokens-mobile/brand-violet_accent-brand.json +718 -0
  106. package/dist/tokens-mobile/brand-violet_accent-gray.json +718 -0
  107. package/package.json +7 -6
  108. package/dist/cjs/get-tokens.d.ts +0 -15
  109. package/dist/cjs/get-tokens.js +0 -13
  110. package/dist/esm/get-tokens.d.ts +0 -15
  111. package/dist/esm/get-tokens.js +0 -9
@@ -0,0 +1,7 @@
1
+ interface InteractionColors {
2
+ light: string;
3
+ dark: string;
4
+ }
5
+ export declare function getHover(hex: string): InteractionColors;
6
+ export declare function getPressed(hex: string): InteractionColors;
7
+ export {};
@@ -0,0 +1,49 @@
1
+ import { converter } from 'culori';
2
+ import {
3
+ HOVER_LIGHT_L,
4
+ HOVER_LIGHT_C,
5
+ HOVER_DARK_L,
6
+ HOVER_DARK_C,
7
+ PRESSED_LIGHT_L,
8
+ PRESSED_LIGHT_C,
9
+ PRESSED_DARK_L,
10
+ PRESSED_DARK_C,
11
+ } from '../constants/interaction-settings';
12
+ function applyOklchDelta(oklchColor, dL, dC) {
13
+ var _a = oklchColor.l,
14
+ l = _a === void 0 ? 0 : _a,
15
+ _b = oklchColor.c,
16
+ c = _b === void 0 ? 0 : _b,
17
+ _c = oklchColor.h,
18
+ h = _c === void 0 ? 0 : _c;
19
+ var safeH = h === undefined || isNaN(h) ? 0 : h;
20
+ var newL = Math.max(0, Math.min(1, l + dL / 100));
21
+ var newC = Math.max(0, c + dC);
22
+ return 'oklch('.concat(newL.toFixed(3), ' ').concat(newC.toFixed(3), ' ').concat(safeH.toFixed(0), ')');
23
+ }
24
+ export function getHover(hex) {
25
+ var toOklch = converter('oklch');
26
+ var oklchColor = toOklch(hex);
27
+ if (!oklchColor) {
28
+ return { light: hex, dark: hex };
29
+ }
30
+ var lightHoverColor = applyOklchDelta(oklchColor, HOVER_LIGHT_L, HOVER_LIGHT_C);
31
+ var darkHoverColor = applyOklchDelta(oklchColor, HOVER_DARK_L, HOVER_DARK_C);
32
+ return {
33
+ light: lightHoverColor,
34
+ dark: darkHoverColor,
35
+ };
36
+ }
37
+ export function getPressed(hex) {
38
+ var toOklch = converter('oklch');
39
+ var oklchColor = toOklch(hex);
40
+ if (!oklchColor) {
41
+ return { light: hex, dark: hex };
42
+ }
43
+ var lightPressedColor = applyOklchDelta(oklchColor, PRESSED_LIGHT_L, PRESSED_LIGHT_C);
44
+ var darkPressedColor = applyOklchDelta(oklchColor, PRESSED_DARK_L, PRESSED_DARK_C);
45
+ return {
46
+ light: lightPressedColor,
47
+ dark: darkPressedColor,
48
+ };
49
+ }
@@ -1,6 +1,6 @@
1
1
  interface LogoColors {
2
- light: string;
3
- dark: string;
2
+ light: string;
3
+ dark: string;
4
4
  }
5
5
  export declare function getLogo(hex: string): LogoColors;
6
6
  export {};
@@ -1,25 +1,28 @@
1
1
  import { converter } from 'culori';
2
2
  import { MIN_LOGO_LIGHTNESS } from '../constants/logo-lightness';
3
3
  export function getLogo(hex) {
4
- var toOklch = converter('oklch');
5
- var oklchColor = toOklch(hex);
6
- var lightThemeLogoColor = hex;
7
- if (!oklchColor) {
8
- var fallbackColor = "oklch(".concat(MIN_LOGO_LIGHTNESS, "% 0 0)");
9
- return { light: hex, dark: fallbackColor };
10
- }
11
- var _a = oklchColor.l, l = _a === void 0 ? 0 : _a, _b = oklchColor.c, c = _b === void 0 ? 0 : _b;
12
- var h = oklchColor.h;
13
- var safeH = h === undefined || isNaN(h) ? 0 : h;
14
- l = l || 0;
15
- c = c || 0;
16
- var percentL = l * 100;
17
- if (percentL < MIN_LOGO_LIGHTNESS) {
18
- l = MIN_LOGO_LIGHTNESS / 100;
19
- }
20
- var darkThemeLogoColor = "oklch(".concat(l.toFixed(3), " ").concat(c.toFixed(3), " ").concat(safeH.toFixed(0), ")");
21
- return {
22
- light: lightThemeLogoColor,
23
- dark: darkThemeLogoColor,
24
- };
4
+ var toOklch = converter('oklch');
5
+ var oklchColor = toOklch(hex);
6
+ var lightThemeLogoColor = hex;
7
+ if (!oklchColor) {
8
+ var fallbackColor = 'oklch('.concat(MIN_LOGO_LIGHTNESS, '% 0 0)');
9
+ return { light: hex, dark: fallbackColor };
10
+ }
11
+ var _a = oklchColor.l,
12
+ l = _a === void 0 ? 0 : _a,
13
+ _b = oklchColor.c,
14
+ c = _b === void 0 ? 0 : _b;
15
+ var h = oklchColor.h;
16
+ var safeH = h === undefined || isNaN(h) ? 0 : h;
17
+ l = l || 0;
18
+ c = c || 0;
19
+ var percentL = l * 100;
20
+ if (percentL < MIN_LOGO_LIGHTNESS) {
21
+ l = MIN_LOGO_LIGHTNESS / 100;
22
+ }
23
+ var darkThemeLogoColor = 'oklch('.concat(l.toFixed(3), ' ').concat(c.toFixed(3), ' ').concat(safeH.toFixed(0), ')');
24
+ return {
25
+ light: lightThemeLogoColor,
26
+ dark: darkThemeLogoColor,
27
+ };
25
28
  }
@@ -1,49 +1,76 @@
1
- import type { GeneratorColorAbneyCorrection, GeneratorColorChromaSettingsGroup, GeneratorColorPalette, GeneratorColorWarningHuePatch } from '../types/generator-tokens';
1
+ import type {
2
+ GeneratorColorAbneyCorrection,
3
+ GeneratorColorChromaSettingsGroup,
4
+ GeneratorColorPalette,
5
+ GeneratorColorWarningHuePatch,
6
+ } from '../types/generator-tokens';
2
7
  interface GeneratePaletteParams {
3
- color: string;
4
- type?: 'default' | 'warning';
5
- settings?: {
6
- chromaSettings?: GeneratorColorChromaSettingsGroup;
7
- abneyCorrection?: GeneratorColorAbneyCorrection;
8
- promoHueShifts?: {
9
- [hueRange: number]: number;
10
- };
11
- warningHuePatch?: GeneratorColorWarningHuePatch;
8
+ color: string;
9
+ type?: 'default' | 'warning';
10
+ settings?: {
11
+ chromaSettings?: GeneratorColorChromaSettingsGroup;
12
+ abneyCorrection?: GeneratorColorAbneyCorrection;
13
+ promoHueShifts?: {
14
+ [hueRange: number]: number;
12
15
  };
16
+ warningHuePatch?: GeneratorColorWarningHuePatch;
17
+ };
13
18
  }
14
- export declare function getPalette({ color, type, settings: customSettings, }: GeneratePaletteParams): GeneratorColorPalette;
15
- export declare function getAbneyHueShift(lightness: number, currentHue: number, abneyData: GeneratorColorAbneyCorrection): number;
16
- export declare function applyAbneyShift(lightness: number, currentHue: number, abneyData: GeneratorColorAbneyCorrection): number;
17
- export declare function applyWarningHuePatch(currentHue: number, lightness: number, warningHuePatchData: GeneratorColorWarningHuePatch, isWarningMode: boolean): number;
18
- export declare function calculateBaseHueAndCorrectionRange(inputColorString: string, abneyData: GeneratorColorAbneyCorrection): {
19
- baseHue: number;
20
- correctionLightness: number;
21
- correctionHueRange: number;
19
+ export declare function getPalette({
20
+ color,
21
+ type,
22
+ settings: customSettings,
23
+ }: GeneratePaletteParams): GeneratorColorPalette;
24
+ export declare function getAbneyHueShift(
25
+ lightness: number,
26
+ currentHue: number,
27
+ abneyData: GeneratorColorAbneyCorrection
28
+ ): number;
29
+ export declare function applyAbneyShift(
30
+ lightness: number,
31
+ currentHue: number,
32
+ abneyData: GeneratorColorAbneyCorrection
33
+ ): number;
34
+ export declare function applyWarningHuePatch(
35
+ currentHue: number,
36
+ lightness: number,
37
+ warningHuePatchData: GeneratorColorWarningHuePatch,
38
+ isWarningMode: boolean
39
+ ): number;
40
+ export declare function calculateBaseHueAndCorrectionRange(
41
+ inputColorString: string,
42
+ abneyData: GeneratorColorAbneyCorrection
43
+ ): {
44
+ baseHue: number;
45
+ correctionLightness: number;
46
+ correctionHueRange: number;
22
47
  } | null;
23
48
  export declare function calcOnBrand(hex: string): {
24
- 4: string;
25
- 8: string;
26
- 12: string;
27
- 16: string;
28
- 20: string;
29
- 24: string;
30
- 28: string;
31
- 32: string;
32
- 36: string;
33
- 40: string;
34
- 44: string;
35
- 48: string;
36
- 52: string;
37
- 56: string;
38
- 60: string;
39
- 64: string;
40
- 68: string;
41
- 72: string;
42
- 76: string;
43
- 80: string;
44
- 84: string;
45
- 88: string;
46
- 92: string;
47
- 96: string;
49
+ 4: string;
50
+ 6: string;
51
+ 8: string;
52
+ 12: string;
53
+ 16: string;
54
+ 20: string;
55
+ 24: string;
56
+ 28: string;
57
+ 32: string;
58
+ 36: string;
59
+ 40: string;
60
+ 44: string;
61
+ 48: string;
62
+ 52: string;
63
+ 56: string;
64
+ 60: string;
65
+ 64: string;
66
+ 68: string;
67
+ 72: string;
68
+ 76: string;
69
+ 80: string;
70
+ 84: string;
71
+ 88: string;
72
+ 92: string;
73
+ 96: string;
74
+ 100: string;
48
75
  };
49
76
  export {};
@@ -1,23 +1,29 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
1
+ var __assign =
2
+ (this && this.__assign) ||
3
+ function () {
4
+ __assign =
5
+ Object.assign ||
6
+ function (t) {
3
7
  for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
7
10
  }
8
11
  return t;
9
- };
12
+ };
10
13
  return __assign.apply(this, arguments);
11
- };
12
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ };
15
+ var __spreadArray =
16
+ (this && this.__spreadArray) ||
17
+ function (to, from, pack) {
18
+ if (pack || arguments.length === 2)
19
+ for (var i = 0, l = from.length, ar; i < l; i++) {
14
20
  if (ar || !(i in from)) {
15
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
- ar[i] = from[i];
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
17
23
  }
18
- }
24
+ }
19
25
  return to.concat(ar || Array.prototype.slice.call(from));
20
- };
26
+ };
21
27
  import { clampChroma, converter } from 'culori';
22
28
  import { calcAPCA } from 'apca-w3';
23
29
  import * as DefaultSwatch from '../constants/default-swatch';
@@ -26,185 +32,201 @@ import { ABNEY_CORRECTION } from '../constants/abney-correction';
26
32
  import { PROMO_HUE_SHIFTS } from '../constants/promo-hue-shift';
27
33
  import { WARNING_HUE_PATCH } from '../constants/warning-hue-patch';
28
34
  export function getPalette(_a) {
29
- var color = _a.color, _b = _a.type, type = _b === void 0 ? 'default' : _b, customSettings = _a.settings;
30
- var defaultSettings = {
31
- chromaSettings: CHROMA_SETTINGS,
32
- abneyCorrection: ABNEY_CORRECTION,
33
- promoHueShifts: PROMO_HUE_SHIFTS,
34
- warningHuePatch: WARNING_HUE_PATCH,
35
- };
36
- var settings = __assign(__assign({}, defaultSettings), customSettings);
37
- var toOklch = converter('oklch');
38
- var oklchColor = toOklch(color);
39
- var currentHue = (oklchColor === null || oklchColor === void 0 ? void 0 : oklchColor.h) || 0;
40
- var toNorm = function (x) { return x / 100; };
41
- var calculateChromaValue = function (rel, min, max, baseChromaMax) {
42
- var raw = (baseChromaMax * rel) / 100;
43
- var value = raw;
44
- if (min !== undefined) {
45
- value = Math.max(toNorm(min), value);
46
- }
47
- if (max !== undefined) {
48
- value = Math.min(toNorm(max), value);
49
- }
50
- return Math.min(value, baseChromaMax);
51
- };
52
- var result = {
53
- vivid: {},
54
- normal: {},
55
- dim: {},
56
- };
57
- var isWarning = type === 'warning';
58
- for (var Lstr in settings.chromaSettings) {
59
- var L = +Lstr;
60
- if (L === 100) {
61
- result.vivid[L] = "oklch(100% 0 0)";
62
- result.normal[L] = "oklch(100% 0 0)";
63
- result.dim[L] = "oklch(100% 0 0)";
64
- continue;
65
- }
66
- var hueAfterWarningPatch = applyWarningHuePatch(currentHue, L, settings.warningHuePatch, isWarning);
67
- var appliedHueShift = applyAbneyShift(L, hueAfterWarningPatch, settings.abneyCorrection);
68
- var chromaMax = clampChroma({ mode: 'oklch', l: L / 100, c: 1, h: appliedHueShift }, 'oklch').c;
69
- var currentParams = settings.chromaSettings[L];
70
- var vividN = calculateChromaValue(currentParams.vivid.rel, currentParams.vivid.min, currentParams.vivid.max, chromaMax);
71
- var normN = calculateChromaValue(currentParams.normal.rel, currentParams.normal.min, currentParams.normal.max, chromaMax);
72
- var dimN = calculateChromaValue(currentParams.dim.rel, currentParams.dim.min, currentParams.dim.max, chromaMax);
73
- result.vivid[L] = "oklch(".concat(L, "% ").concat(vividN.toFixed(3), " ").concat(appliedHueShift.toFixed(0), ")");
74
- result.normal[L] = "oklch(".concat(L, "% ").concat(normN.toFixed(3), " ").concat(appliedHueShift.toFixed(0), ")");
75
- result.dim[L] = "oklch(".concat(L, "% ").concat(dimN.toFixed(3), " ").concat(appliedHueShift.toFixed(0), ")");
35
+ var color = _a.color,
36
+ _b = _a.type,
37
+ type = _b === void 0 ? 'default' : _b,
38
+ customSettings = _a.settings;
39
+ var defaultSettings = {
40
+ chromaSettings: CHROMA_SETTINGS,
41
+ abneyCorrection: ABNEY_CORRECTION,
42
+ promoHueShifts: PROMO_HUE_SHIFTS,
43
+ warningHuePatch: WARNING_HUE_PATCH,
44
+ };
45
+ var settings = __assign(__assign({}, defaultSettings), customSettings);
46
+ var toOklch = converter('oklch');
47
+ var oklchColor = toOklch(color);
48
+ var currentHue = (oklchColor === null || oklchColor === void 0 ? void 0 : oklchColor.h) || 0;
49
+ var toNorm = function (x) {
50
+ return x / 100;
51
+ };
52
+ var calculateChromaValue = function (rel, min, max, baseChromaMax) {
53
+ var raw = (baseChromaMax * rel) / 100;
54
+ var value = raw;
55
+ if (min !== undefined) {
56
+ value = Math.max(toNorm(min), value);
57
+ }
58
+ if (max !== undefined) {
59
+ value = Math.min(toNorm(max), value);
76
60
  }
77
- return result;
61
+ return Math.min(value, baseChromaMax);
62
+ };
63
+ var result = {
64
+ vivid: {},
65
+ normal: {},
66
+ dim: {},
67
+ };
68
+ var isWarning = type === 'warning';
69
+ for (var Lstr in settings.chromaSettings) {
70
+ var L = +Lstr;
71
+ if (L === 100) {
72
+ result.vivid[L] = 'oklch(100% 0 0)';
73
+ result.normal[L] = 'oklch(100% 0 0)';
74
+ result.dim[L] = 'oklch(100% 0 0)';
75
+ continue;
76
+ }
77
+ var hueAfterWarningPatch = applyWarningHuePatch(currentHue, L, settings.warningHuePatch, isWarning);
78
+ var appliedHueShift = applyAbneyShift(L, hueAfterWarningPatch, settings.abneyCorrection);
79
+ var chromaMax = clampChroma({ mode: 'oklch', l: L / 100, c: 1, h: appliedHueShift }, 'oklch').c;
80
+ var currentParams = settings.chromaSettings[L];
81
+ var vividN = calculateChromaValue(
82
+ currentParams.vivid.rel,
83
+ currentParams.vivid.min,
84
+ currentParams.vivid.max,
85
+ chromaMax
86
+ );
87
+ var normN = calculateChromaValue(
88
+ currentParams.normal.rel,
89
+ currentParams.normal.min,
90
+ currentParams.normal.max,
91
+ chromaMax
92
+ );
93
+ var dimN = calculateChromaValue(currentParams.dim.rel, currentParams.dim.min, currentParams.dim.max, chromaMax);
94
+ result.vivid[L] = 'oklch('.concat(L, '% ').concat(vividN.toFixed(3), ' ').concat(appliedHueShift.toFixed(0), ')');
95
+ result.normal[L] = 'oklch('.concat(L, '% ').concat(normN.toFixed(3), ' ').concat(appliedHueShift.toFixed(0), ')');
96
+ result.dim[L] = 'oklch('.concat(L, '% ').concat(dimN.toFixed(3), ' ').concat(appliedHueShift.toFixed(0), ')');
97
+ }
98
+ return result;
78
99
  }
79
100
  export function getAbneyHueShift(lightness, currentHue, abneyData) {
80
- var lightnessData = abneyData[lightness];
81
- if (!lightnessData) {
82
- return 0;
101
+ var lightnessData = abneyData[lightness];
102
+ if (!lightnessData) {
103
+ return 0;
104
+ }
105
+ var hueRanges = Object.keys(lightnessData)
106
+ .map(Number)
107
+ .sort(function (a, b) {
108
+ return a - b;
109
+ });
110
+ var selectedHueRange = hueRanges[0];
111
+ for (var i = 0; i < hueRanges.length; i++) {
112
+ var startRange = hueRanges[i];
113
+ var endRange = hueRanges[i + 1] !== undefined ? hueRanges[i + 1] : 360;
114
+ if (currentHue >= startRange && currentHue < endRange) {
115
+ selectedHueRange = startRange;
116
+ break;
83
117
  }
84
- var hueRanges = Object.keys(lightnessData)
85
- .map(Number)
86
- .sort(function (a, b) { return a - b; });
87
- var selectedHueRange = hueRanges[0];
88
- for (var i = 0; i < hueRanges.length; i++) {
89
- var startRange = hueRanges[i];
90
- var endRange = hueRanges[i + 1] !== undefined ? hueRanges[i + 1] : 360;
91
- if (currentHue >= startRange && currentHue < endRange) {
92
- selectedHueRange = startRange;
93
- break;
94
- }
95
- if (i === hueRanges.length - 1 && currentHue >= startRange && currentHue < 360) {
96
- selectedHueRange = startRange;
97
- break;
98
- }
118
+ if (i === hueRanges.length - 1 && currentHue >= startRange && currentHue < 360) {
119
+ selectedHueRange = startRange;
120
+ break;
99
121
  }
100
- return lightnessData[selectedHueRange] !== undefined ? lightnessData[selectedHueRange] : 0;
122
+ }
123
+ return lightnessData[selectedHueRange] !== undefined ? lightnessData[selectedHueRange] : 0;
101
124
  }
102
125
  export function applyAbneyShift(lightness, currentHue, abneyData) {
103
- var abneyShift = getAbneyHueShift(lightness, currentHue, abneyData);
104
- return (currentHue + abneyShift + 360) % 360;
126
+ var abneyShift = getAbneyHueShift(lightness, currentHue, abneyData);
127
+ return (currentHue + abneyShift + 360) % 360;
105
128
  }
106
129
  export function applyWarningHuePatch(currentHue, lightness, warningHuePatchData, isWarningMode) {
107
- if (isWarningMode) {
108
- var patch = warningHuePatchData[lightness];
109
- if (patch !== undefined) {
110
- return (currentHue + patch + 360) % 360;
111
- }
130
+ if (isWarningMode) {
131
+ var patch = warningHuePatchData[lightness];
132
+ if (patch !== undefined) {
133
+ return (currentHue + patch + 360) % 360;
112
134
  }
113
- return currentHue;
135
+ }
136
+ return currentHue;
114
137
  }
115
138
  function findClosestLightnessStep(targetL, availableLightnessSteps) {
116
- if (availableLightnessSteps.length === 0) {
117
- return targetL;
118
- }
119
- var sortedSteps = __spreadArray([], availableLightnessSteps, true).sort(function (a, b) { return a - b; });
120
- var closestStep = sortedSteps[0];
121
- var minDiff = Math.abs(targetL - closestStep);
122
- for (var i = 1; i < sortedSteps.length; i++) {
123
- var currentStep = sortedSteps[i];
124
- var diff = Math.abs(targetL - currentStep);
125
- if (diff < minDiff || (diff === minDiff && currentStep > closestStep)) {
126
- minDiff = diff;
127
- closestStep = currentStep;
128
- }
139
+ if (availableLightnessSteps.length === 0) {
140
+ return targetL;
141
+ }
142
+ var sortedSteps = __spreadArray([], availableLightnessSteps, true).sort(function (a, b) {
143
+ return a - b;
144
+ });
145
+ var closestStep = sortedSteps[0];
146
+ var minDiff = Math.abs(targetL - closestStep);
147
+ for (var i = 1; i < sortedSteps.length; i++) {
148
+ var currentStep = sortedSteps[i];
149
+ var diff = Math.abs(targetL - currentStep);
150
+ if (diff < minDiff || (diff === minDiff && currentStep > closestStep)) {
151
+ minDiff = diff;
152
+ closestStep = currentStep;
129
153
  }
130
- return closestStep;
154
+ }
155
+ return closestStep;
131
156
  }
132
157
  export function calculateBaseHueAndCorrectionRange(inputColorString, abneyData) {
133
- try {
134
- var toOklch = converter('oklch');
135
- var oklch = toOklch(inputColorString);
136
- if (!oklch) {
137
- console.warn("Could not parse color string: ".concat(inputColorString));
138
- return null;
139
- }
140
- var targetLightness = Math.round(oklch.l * 100);
141
- var targetHue_1 = oklch.h;
142
- if (isNaN(targetHue_1)) {
143
- console.warn("Achromatic color detected (".concat(inputColorString, "). Defaulting hue to 0."));
144
- targetHue_1 = 0;
145
- }
146
- var availableLightnessSteps = Object.keys(abneyData).map(Number);
147
- if (availableLightnessSteps.length === 0) {
148
- console.warn('Abney correction data is empty, cannot calculate base hue.');
149
- return null;
150
- }
151
- var closestLightness = findClosestLightnessStep(targetLightness, availableLightnessSteps);
152
- var lightnessCorrectionData = abneyData[closestLightness];
153
- if (!lightnessCorrectionData) {
154
- console.warn("No Abney correction data for lightness ".concat(closestLightness, "."));
155
- return null;
156
- }
157
- var correctedHueMap_1 = Object.entries(lightnessCorrectionData).map(function (_a) {
158
- var rawHueStr = _a[0], shift = _a[1];
159
- var rawHue = Number(rawHueStr);
160
- return {
161
- rawHue: rawHue,
162
- shift: shift,
163
- correctedHue: (rawHue + shift + 360) % 360,
164
- };
165
- });
166
- correctedHueMap_1.sort(function (a, b) {
167
- if (a.correctedHue !== b.correctedHue) {
168
- return a.correctedHue - b.correctedHue;
169
- }
170
- return a.rawHue - b.rawHue;
171
- });
172
- if (correctedHueMap_1.length === 0) {
173
- console.warn("No hue ranges defined for lightness ".concat(closestLightness, "."));
174
- return null;
175
- }
176
- var findCorrectRange = function () {
177
- var nextRangeIndex = correctedHueMap_1.findIndex(function (range) { return range.correctedHue > targetHue_1; });
178
- if (nextRangeIndex === 0) {
179
- return correctedHueMap_1[correctedHueMap_1.length - 1];
180
- }
181
- if (nextRangeIndex > 0) {
182
- return correctedHueMap_1[nextRangeIndex - 1];
183
- }
184
- return correctedHueMap_1[correctedHueMap_1.length - 1];
185
- };
186
- var selectedRange = findCorrectRange();
187
- if (!selectedRange) {
188
- console.error('Could not determine the correct hue range.');
189
- return null;
190
- }
191
- var baseHue = (targetHue_1 - selectedRange.shift + 360) % 360;
192
- return {
193
- baseHue: baseHue,
194
- correctionLightness: closestLightness,
195
- correctionHueRange: selectedRange.rawHue,
196
- };
158
+ var toOklch = converter('oklch');
159
+ var oklch = toOklch(inputColorString);
160
+ if (!oklch) {
161
+ console.warn('Could not parse color string: '.concat(inputColorString));
162
+ return null;
163
+ }
164
+ var targetLightness = Math.round(oklch.l * 100);
165
+ var targetHue = oklch.h;
166
+ if (isNaN(targetHue)) {
167
+ console.warn('Achromatic color detected ('.concat(inputColorString, '). Defaulting hue to 0.'));
168
+ targetHue = 0;
169
+ }
170
+ var availableLightnessSteps = Object.keys(abneyData).map(Number);
171
+ if (availableLightnessSteps.length === 0) {
172
+ console.warn('Abney correction data is empty, cannot calculate base hue.');
173
+ return null;
174
+ }
175
+ var closestLightness = findClosestLightnessStep(targetLightness, availableLightnessSteps);
176
+ var lightnessCorrectionData = abneyData[closestLightness];
177
+ if (!lightnessCorrectionData) {
178
+ console.warn('No Abney correction data for lightness '.concat(closestLightness, '.'));
179
+ return null;
180
+ }
181
+ var correctedHueMap = Object.entries(lightnessCorrectionData).map(function (_a) {
182
+ var rawHueStr = _a[0],
183
+ shift = _a[1];
184
+ var rawHue = Number(rawHueStr);
185
+ return {
186
+ rawHue: rawHue,
187
+ shift: shift,
188
+ correctedHue: (rawHue + shift + 360) % 360,
189
+ };
190
+ });
191
+ correctedHueMap.sort(function (a, b) {
192
+ if (a.correctedHue !== b.correctedHue) {
193
+ return a.correctedHue - b.correctedHue;
194
+ }
195
+ return a.rawHue - b.rawHue;
196
+ });
197
+ if (correctedHueMap.length === 0) {
198
+ console.warn('No hue ranges defined for lightness '.concat(closestLightness, '.'));
199
+ return null;
200
+ }
201
+ var findCorrectRange = function () {
202
+ var nextRangeIndex = correctedHueMap.findIndex(function (range) {
203
+ return range.correctedHue > targetHue;
204
+ });
205
+ if (nextRangeIndex === 0) {
206
+ return correctedHueMap[correctedHueMap.length - 1];
197
207
  }
198
- catch (error) {
199
- console.error('Error calculating base hue:', error);
200
- return null;
208
+ if (nextRangeIndex > 0) {
209
+ return correctedHueMap[nextRangeIndex - 1];
201
210
  }
211
+ return correctedHueMap[correctedHueMap.length - 1];
212
+ };
213
+ var selectedRange = findCorrectRange();
214
+ if (!selectedRange) {
215
+ console.error('Could not determine the correct hue range.');
216
+ return null;
217
+ }
218
+ var baseHue = (targetHue - selectedRange.shift + 360) % 360;
219
+ return {
220
+ baseHue: baseHue,
221
+ correctionLightness: closestLightness,
222
+ correctionHueRange: selectedRange.rawHue,
223
+ };
202
224
  }
203
225
  export function calcOnBrand(hex) {
204
- var whiteContrast = Number(calcAPCA('#fff', hex));
205
- var blackContrast = Number(calcAPCA('#000', hex));
206
- if (whiteContrast - 10 > blackContrast) {
207
- return DefaultSwatch.whiteAlpha;
208
- }
209
- return DefaultSwatch.blackAlpha;
226
+ var whiteContrast = Number(calcAPCA('#fff', hex));
227
+ var blackContrast = Number(calcAPCA('#000', hex));
228
+ if (whiteContrast - 10 <= blackContrast) {
229
+ return DefaultSwatch.whiteAlpha;
230
+ }
231
+ return DefaultSwatch.blackAlpha;
210
232
  }