/enum.enum-slugs. * * @mixin BackedEnum */ trait InteractsWithLabels { public function label(): string { $fqcn = static::class; if (Str::startsWith($fqcn, 'App\\Domains\\')) { $domain = Str::between($fqcn, 'App\\Domains\\', '\\Enums\\'); $domainSlug = Str::kebab($domain); $className = Str::afterLast($fqcn, '\\'); $enumSlug = Str::snake($className); $translationKey = "domains/{$domainSlug}/enum.{$enumSlug}.{$this->value}"; } elseif (Str::startsWith($fqcn, 'App\\UI\\Enums\\')) { $className = Str::afterLast($fqcn, '\\'); $enumSlug = Str::snake($className); $translationKey = "ui/enum.{$enumSlug}.{$this->value}"; } else { $className = Str::afterLast($fqcn, '\\'); $enumSlug = Str::snake($className); $translationKey = "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); } }