From f58ab62300b94f4411480604beb06e8e2d6d4c63 Mon Sep 17 00:00:00 2001 From: Zep Fietje Date: Fri, 1 Sep 2023 12:05:54 +0200 Subject: [PATCH] wip --- .../views/components/badge.blade.php | 5 +- packages/support/src/Colors/ColorManager.php | 59 +++++++++++++++++-- .../support/src/Facades/FilamentColor.php | 7 +++ packages/support/src/helpers.php | 12 +++- 4 files changed, 73 insertions(+), 10 deletions(-) diff --git a/packages/support/resources/views/components/badge.blade.php b/packages/support/resources/views/components/badge.blade.php index f3479219b6..ff1056bb3c 100644 --- a/packages/support/resources/views/components/badge.blade.php +++ b/packages/support/resources/views/components/badge.blade.php @@ -41,11 +41,10 @@ $color, shades: [ 50, - 300, 400, - ...$icon ? [500] : [], 600, - ...$isDeletable ? [700] : [], + ...$icon ? [500] : [], + ...$isDeletable ? [300, 700] : [], ], alias: 'badge', ) => $color !== 'gray', diff --git a/packages/support/src/Colors/ColorManager.php b/packages/support/src/Colors/ColorManager.php index 6217e7b9ce..628ff4e3d4 100644 --- a/packages/support/src/Colors/ColorManager.php +++ b/packages/support/src/Colors/ColorManager.php @@ -11,11 +11,20 @@ class ColorManager */ protected array $colors = []; - protected array $shades = []; + /** + * @var array + */ + protected array $overridingShades = []; - protected array $shadesToRemove = []; + /** + * @var array + */ + protected array $addedShades = []; - protected array $shadesToAdd = []; + /** + * @var array + */ + protected array $removedShades = []; /** * @param array $colors @@ -80,13 +89,51 @@ class ColorManager ]; } + /** + * @param array $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 | null + */ + public function getOverridingShades(string $alias): ?array { - return $this->shades[$alias] ?? []; + return $this->overridingShades[$alias] ?? null; + } + + /** + * @param array $shades + */ + public function addShades(string $alias, array $shades): void + { + $this->addedShades[$alias] = $shades; + } + + /** + * @return array | null + */ + public function getAddedShades(string $alias): ?array + { + return $this->addedShades[$alias] ?? null; + } + + /** + * @param array $shades + */ + public function removeShades(string $alias, array $shades): void + { + $this->removedShades[$alias] = $shades; + } + + /** + * @return array | null + */ + public function getRemovedShades(string $alias): ?array + { + return $this->removedShades[$alias] ?? null; } } diff --git a/packages/support/src/Facades/FilamentColor.php b/packages/support/src/Facades/FilamentColor.php index d745a31db1..9197847e04 100644 --- a/packages/support/src/Facades/FilamentColor.php +++ b/packages/support/src/Facades/FilamentColor.php @@ -6,7 +6,14 @@ use Filament\Support\Colors\ColorManager; use Illuminate\Support\Facades\Facade; /** + * @method static array addShades(string $alias, array $shades) + * @method static array | null getAddedShades(string $alias) * @method static array getColors() + * @method static array | null getOverridingShades(string $alias) + * @method static array | null getRemovedShades(string $alias) + * @method static array overrideShades(string $alias, array $shades) + * @method static array | 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 removeShades(string $alias, array $shades) * * @see ColorManager */ diff --git a/packages/support/src/helpers.php b/packages/support/src/helpers.php index 49e0102cad..b3a233156d 100644 --- a/packages/support/src/helpers.php +++ b/packages/support/src/helpers.php @@ -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 = [];