This commit is contained in:
Zep Fietje
2023-09-01 12:05:54 +02:00
parent 020e3e5518
commit f58ab62300
4 changed files with 73 additions and 10 deletions
@@ -41,11 +41,10 @@
$color,
shades: [
50,
300,
400,
...$icon ? [500] : [],
600,
...$isDeletable ? [700] : [],
...$icon ? [500] : [],
...$isDeletable ? [300, 700] : [],
],
alias: 'badge',
) => $color !== 'gray',
+53 -6
View File
@@ -11,11 +11,20 @@ class ColorManager
*/
protected array $colors = [];
protected array $shades = [];
/**
* @var array<int>
*/
protected array $overridingShades = [];
protected array $shadesToRemove = [];
/**
* @var array<int>
*/
protected array $addedShades = [];
protected array $shadesToAdd = [];
/**
* @var array<int>
*/
protected array $removedShades = [];
/**
* @param array<string, array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | string> $colors
@@ -80,13 +89,51 @@ class ColorManager
];
}
/**
* @param array<int> $shades
*/
public function overrideShades(string $alias, array $shades): void
{
$this->shades[$alias] = $shades;
$this->overridingShades[$alias] = $shades;
}
public function resolveShades(string $alias): array
/**
* @return array<int> | null
*/
public function getOverridingShades(string $alias): ?array
{
return $this->shades[$alias] ?? [];
return $this->overridingShades[$alias] ?? null;
}
/**
* @param array<int> $shades
*/
public function addShades(string $alias, array $shades): void
{
$this->addedShades[$alias] = $shades;
}
/**
* @return array<int> | null
*/
public function getAddedShades(string $alias): ?array
{
return $this->addedShades[$alias] ?? null;
}
/**
* @param array<int> $shades
*/
public function removeShades(string $alias, array $shades): void
{
$this->removedShades[$alias] = $shades;
}
/**
* @return array<int> | null
*/
public function getRemovedShades(string $alias): ?array
{
return $this->removedShades[$alias] ?? null;
}
}
@@ -6,7 +6,14 @@ use Filament\Support\Colors\ColorManager;
use Illuminate\Support\Facades\Facade;
/**
* @method static array<int> addShades(string $alias, array<int> $shades)
* @method static array<int> | null getAddedShades(string $alias)
* @method static array<string, array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string}> getColors()
* @method static array<int> | null getOverridingShades(string $alias)
* @method static array<int> | null getRemovedShades(string $alias)
* @method static array<int> overrideShades(string $alias, array<int> $shades)
* @method static array<string, array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string}> | string processColor(array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | string $color)
* @method static array<int> removeShades(string $alias, array<int> $shades)
*
* @see ColorManager
*/
+11 -1
View File
@@ -59,7 +59,17 @@ if (! function_exists('Filament\Support\get_color_css_variables')) {
}
if ($alias !== null) {
$shades = FilamentColor::resolveShades($alias);
if (($overridingShades = FilamentColor::getOverridingShades($alias)) !== null) {
$shades = $overridingShades;
}
if ($addedShades = FilamentColor::getAddedShades($alias)) {
$shades = [...$shades, ...$addedShades];
}
if ($removedShades = FilamentColor::getRemovedShades($alias)) {
$shades = array_diff($shades, $removedShades);
}
}
$variables = [];