/enum.enum-slugs. * * @mixin BackedEnum */ trait InteractsWithLabels { public function label(): string { $fqcn = static::class; $domain = Str::between($fqcn, 'App\\Domains\\', '\\Enums\\'); $domainSlug = Str::kebab($domain); $className = Str::afterLast($fqcn, '\\'); $enumSlug = Str::kebab($className); $translationKey = "domains/{$domainSlug}/enum.{$enumSlug}.{$this->value}"; return __($translationKey); } public static function options(): array { $mappedArray = array_map(fn (self $self) => [ $self->value => $self->label(), ], self::cases()); return array_merge(...$mappedArray); } }