label = $label; if (!$obj && !$colour) { throw new \RuntimeException(sprintf('You must specify either a colour an instance of "%s".', BadgeableInterface::class)); } if ($obj && $colour) { throw new \RuntimeException(sprintf('You have specified both the colour "%s" and an instance of "%s". Please use one or the other.', $colour, $obj::class)); } if ($obj) { $palette = $obj->getBadgeColour()->getPalette(); } if ($colour) { $cases = array_map(fn (BadgeColour $b) => strtolower($b->name), BadgeColour::cases()); if (!in_array($colour, $cases)) { $formattedCases = implode(', ', array_map(fn (string $s) => '"'.$s.'"', $cases)); throw new \RuntimeException(sprintf('"%s" is not a valid badge colour. Available options are: %s.', $colour, $formattedCases)); } $colour = strtoupper($colour); $palette = BadgeColour::{$colour}->getPalette(); } $merger = TailwindMerge::instance(); if (true === $outline) { $classes = sprintf('bg-white %s %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); } $this->finalClasses = $merger->merge(trim($classes)); } }