components([ Forms\Components\Select::make('zone') ->label(__('Zonă')) ->options(\App\Support\I18n::opts(array_combine(DamagePoint::ZONES, DamagePoint::ZONES))) ->searchable() ->required(), Forms\Components\Select::make('kind') ->label(__('Tip daună')) ->options(\App\Support\I18n::opts(array_combine(DamagePoint::KINDS, DamagePoint::KINDS))) ->required(), Forms\Components\Select::make('severity') ->label(__('Gravitate')) ->options(\App\Support\I18n::opts(DamagePoint::SEVERITIES)) ->default('minor') ->required(), Forms\Components\Textarea::make('notes')->label(__('Observații'))->rows(2)->columnSpanFull(), ]); } public function table(Table $table): Table { return $table ->recordTitleAttribute('zone') ->columns([ Tables\Columns\TextColumn::make('zone')->label(__('Zonă'))->badge()->color('gray'), Tables\Columns\TextColumn::make('kind')->label(__('Tip')), Tables\Columns\TextColumn::make('severity') ->label(__('Gravitate')) ->formatStateUsing(fn ($s) => DamagePoint::SEVERITIES[$s] ?? $s) ->badge() ->colors(['gray' => ['minor'], 'warning' => ['medium'], 'danger' => ['severe']]), Tables\Columns\TextColumn::make('notes')->limit(40)->placeholder('—'), ]) ->headerActions([Actions\CreateAction::make()]) ->actions([Actions\EditAction::make(), Actions\DeleteAction::make()]) ->emptyStateHeading(__('Nicio daună marcată')) ->emptyStateDescription(__('Adaugă punctele de daună pe zone (capotă, ușă, aripă) cu tip și gravitate — formează harta de daune a mașinii.')); } }