diff --git a/src/Twig/Component/Badge.php b/src/Twig/Component/Badge.php index 13107e4..eae4f1d 100644 --- a/src/Twig/Component/Badge.php +++ b/src/Twig/Component/Badge.php @@ -31,6 +31,18 @@ final class Badge */ public function mount(?BadgeableInterface $obj = null, ?string $class = null, ?string $colour = null, ?string $label = null, bool $outline = false, ?string $icon = null): void { + + if (!$icon) { + $this->icon = null; + } else if ("1" === $icon) { + $this->icon = $obj->getBadgeIcon(); + if (null === $this->icon) { + throw new \RuntimeException("Missing an icon name."); + } + } else { + $this->icon = $icon; + } + $this->label = $label; if (!$obj && !$colour) { @@ -45,8 +57,6 @@ final class Badge $palette = $obj->getBadgeColour()->getPalette(); } - dump($icon); - if ($colour) { $cases = array_map(fn (BadgeColour $b) => strtolower($b->name), BadgeColour::cases()); @@ -62,11 +72,15 @@ final class Badge $merger = TailwindMerge::instance(); if (true === $outline) { - $classes = sprintf('bg-white %s %s %s %s', $palette->borderColourClass, $palette->textColourClass, $this->baseClasses, $class); + $classes = sprintf('bg-white %s/30 %s %s %s', $palette->borderColourClass, $palette->textColourClass, $this->baseClasses, $class); } else { $classes = sprintf('text-white %s %s %s %s', $palette->borderColourClass, $palette->backgroundColourClass, $this->baseClasses, $class); } + if ($this->icon !== null) { + $classes = sprintf("flex gap-1 items-center %s", $classes); + } + $this->finalClasses = $merger->merge(trim($classes)); } }