components([ Forms\Components\Select::make('zone') ->label('Zonă') ->options(array_combine(DamagePoint::ZONES, DamagePoint::ZONES)) ->searchable() ->required(), Forms\Components\Select::make('kind') ->label('Tip daună') ->options(array_combine(DamagePoint::KINDS, DamagePoint::KINDS)) ->required(), Forms\Components\Select::make('severity') ->label('Gravitate') ->options(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.'); } }