Skip to content

Commit 8254c22

Browse files
Fix achromatic colors producing incorrect hues in generatePalette (#18903)
* Fix achromatic colors producing incorrect hues in generatePalette Signed-off-by: Julian Gums <[email protected]> * fix --------- Signed-off-by: Julian Gums <[email protected]> Co-authored-by: Dan Harrin <[email protected]>
1 parent c3ad9c1 commit 8254c22

5 files changed

+48
-46
lines changed

packages/support/src/Colors/Color.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -518,10 +518,12 @@ public static function generatePalette(string $color): array
518518
{
519519
$color = static::convertToOklch($color);
520520

521-
[,, $hue] = sscanf($color, 'oklch(%f %f %f)');
521+
[, $chroma, $hue] = sscanf($color, 'oklch(%f %f %f)');
522+
523+
$isAchromatic = $chroma < 0.03;
522524

523525
return array_map(
524-
fn (array $constants): string => "oklch({$constants[0]} {$constants[1]} {$hue})",
526+
fn (array $constants): string => "oklch({$constants[0]} " . ($isAchromatic ? '0' : $constants[1]) . " {$hue})",
525527
[
526528
50 => [0.97717647058824, 0.01395454545455],
527529
100 => [0.95035294117647, 0.03272727272727],
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{
2-
"50": "oklch(0.97717647058824 0.01395454545455 0)",
3-
"100": "oklch(0.95035294117647 0.03272727272727 0)",
4-
"200": "oklch(0.90547058823529 0.06318181818182 0)",
5-
"300": "oklch(0.84047058823529 0.10604545454546 0)",
6-
"400": "oklch(0.75352941176471 0.15027272727273 0)",
7-
"500": "oklch(0.68270588235294 0.17009090909091 0)",
8-
"600": "oklch(0.59782352941176 0.16913636363636 0)",
9-
"700": "oklch(0.51494117647059 0.14940909090909 0)",
10-
"800": "oklch(0.44611764705882 0.12331818181818 0)",
11-
"900": "oklch(0.39458823529412 0.09963636363636 0)",
12-
"950": "oklch(0.27788235294118 0.07136363636364 0)"
2+
"50": "oklch(0.97717647058824 0 0)",
3+
"100": "oklch(0.95035294117647 0 0)",
4+
"200": "oklch(0.90547058823529 0 0)",
5+
"300": "oklch(0.84047058823529 0 0)",
6+
"400": "oklch(0.75352941176471 0 0)",
7+
"500": "oklch(0.68270588235294 0 0)",
8+
"600": "oklch(0.59782352941176 0 0)",
9+
"700": "oklch(0.51494117647059 0 0)",
10+
"800": "oklch(0.44611764705882 0 0)",
11+
"900": "oklch(0.39458823529412 0 0)",
12+
"950": "oklch(0.27788235294118 0 0)"
1313
}
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{
2-
"50": "oklch(0.97717647058824 0.01395454545455 89.876)",
3-
"100": "oklch(0.95035294117647 0.03272727272727 89.876)",
4-
"200": "oklch(0.90547058823529 0.06318181818182 89.876)",
5-
"300": "oklch(0.84047058823529 0.10604545454546 89.876)",
6-
"400": "oklch(0.75352941176471 0.15027272727273 89.876)",
7-
"500": "oklch(0.68270588235294 0.17009090909091 89.876)",
8-
"600": "oklch(0.59782352941176 0.16913636363636 89.876)",
9-
"700": "oklch(0.51494117647059 0.14940909090909 89.876)",
10-
"800": "oklch(0.44611764705882 0.12331818181818 89.876)",
11-
"900": "oklch(0.39458823529412 0.09963636363636 89.876)",
12-
"950": "oklch(0.27788235294118 0.07136363636364 89.876)"
2+
"50": "oklch(0.97717647058824 0 89.876)",
3+
"100": "oklch(0.95035294117647 0 89.876)",
4+
"200": "oklch(0.90547058823529 0 89.876)",
5+
"300": "oklch(0.84047058823529 0 89.876)",
6+
"400": "oklch(0.75352941176471 0 89.876)",
7+
"500": "oklch(0.68270588235294 0 89.876)",
8+
"600": "oklch(0.59782352941176 0 89.876)",
9+
"700": "oklch(0.51494117647059 0 89.876)",
10+
"800": "oklch(0.44611764705882 0 89.876)",
11+
"900": "oklch(0.39458823529412 0 89.876)",
12+
"950": "oklch(0.27788235294118 0 89.876)"
1313
}
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{
2-
"50": "oklch(0.97717647058824 0.01395454545455 0)",
3-
"100": "oklch(0.95035294117647 0.03272727272727 0)",
4-
"200": "oklch(0.90547058823529 0.06318181818182 0)",
5-
"300": "oklch(0.84047058823529 0.10604545454546 0)",
6-
"400": "oklch(0.75352941176471 0.15027272727273 0)",
7-
"500": "oklch(0.68270588235294 0.17009090909091 0)",
8-
"600": "oklch(0.59782352941176 0.16913636363636 0)",
9-
"700": "oklch(0.51494117647059 0.14940909090909 0)",
10-
"800": "oklch(0.44611764705882 0.12331818181818 0)",
11-
"900": "oklch(0.39458823529412 0.09963636363636 0)",
12-
"950": "oklch(0.27788235294118 0.07136363636364 0)"
2+
"50": "oklch(0.97717647058824 0 0)",
3+
"100": "oklch(0.95035294117647 0 0)",
4+
"200": "oklch(0.90547058823529 0 0)",
5+
"300": "oklch(0.84047058823529 0 0)",
6+
"400": "oklch(0.75352941176471 0 0)",
7+
"500": "oklch(0.68270588235294 0 0)",
8+
"600": "oklch(0.59782352941176 0 0)",
9+
"700": "oklch(0.51494117647059 0 0)",
10+
"800": "oklch(0.44611764705882 0 0)",
11+
"900": "oklch(0.39458823529412 0 0)",
12+
"950": "oklch(0.27788235294118 0 0)"
1313
}
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{
2-
"50": "oklch(0.97717647058824 0.01395454545455 89.876)",
3-
"100": "oklch(0.95035294117647 0.03272727272727 89.876)",
4-
"200": "oklch(0.90547058823529 0.06318181818182 89.876)",
5-
"300": "oklch(0.84047058823529 0.10604545454546 89.876)",
6-
"400": "oklch(0.75352941176471 0.15027272727273 89.876)",
7-
"500": "oklch(0.68270588235294 0.17009090909091 89.876)",
8-
"600": "oklch(0.59782352941176 0.16913636363636 89.876)",
9-
"700": "oklch(0.51494117647059 0.14940909090909 89.876)",
10-
"800": "oklch(0.44611764705882 0.12331818181818 89.876)",
11-
"900": "oklch(0.39458823529412 0.09963636363636 89.876)",
12-
"950": "oklch(0.27788235294118 0.07136363636364 89.876)"
2+
"50": "oklch(0.97717647058824 0 89.876)",
3+
"100": "oklch(0.95035294117647 0 89.876)",
4+
"200": "oklch(0.90547058823529 0 89.876)",
5+
"300": "oklch(0.84047058823529 0 89.876)",
6+
"400": "oklch(0.75352941176471 0 89.876)",
7+
"500": "oklch(0.68270588235294 0 89.876)",
8+
"600": "oklch(0.59782352941176 0 89.876)",
9+
"700": "oklch(0.51494117647059 0 89.876)",
10+
"800": "oklch(0.44611764705882 0 89.876)",
11+
"900": "oklch(0.39458823529412 0 89.876)",
12+
"950": "oklch(0.27788235294118 0 89.876)"
1313
}

0 commit comments

Comments
 (0)