diff --git a/src/Twig/Runtime/IconRuntime.php b/src/Twig/Runtime/IconRuntime.php index 1179415..10ba367 100644 --- a/src/Twig/Runtime/IconRuntime.php +++ b/src/Twig/Runtime/IconRuntime.php @@ -10,19 +10,16 @@ use Twig\Extension\RuntimeExtensionInterface; final class IconRuntime implements RuntimeExtensionInterface { - public const DEFAULT_SIZE = 32; - public const DEFAULT_COLOUR = 'primary'; - - private const DEFAULT_OPTIONS = [ + private const OPTIONS = [ 'icon' => null, 'title' => null, - 'size' => self::DEFAULT_SIZE, - 'colour' => self::DEFAULT_COLOUR, + 'size' => null, + 'colour' => null, 'hover' => null, 'classes' => [], ]; - public function __construct(private array $directories, private array $colours) + public function __construct(private array $defaultOptions, private array $directories, private array $colours) {} /** @@ -76,13 +73,17 @@ final class IconRuntime implements RuntimeExtensionInterface private function mergeUserOptionsWithDefaults(array $userOptions): array { - return array_merge(self::DEFAULT_OPTIONS, $userOptions); + $options = self::OPTIONS; + $options['size'] = $this->defaultOptions['size']; + $options['colour'] = $this->defaultOptions['colour']; + + return array_merge($options, $userOptions); } private function throwIfUnrecognisedOptionExists(array $options): void { foreach (array_keys($options) as $key) { - if (!key_exists($key, self::DEFAULT_OPTIONS)) { + if (!key_exists($key, self::OPTIONS)) { throw new \InvalidArgumentException("Unrecognised option '{$key}'!"); } }