components([ Schemas\Components\Section::make()->columns(2)->schema([ Forms\Components\TextInput::make('name')->label(__('Nume'))->required()->maxLength(160), Forms\Components\Select::make('specialty') ->label(__('Specialitate')) ->options(array_combine(Subcontractor::SPECIALTIES, Subcontractor::SPECIALTIES)) ->searchable(), Forms\Components\TextInput::make('phone')->label(__('Telefon'))->tel()->maxLength(40), Forms\Components\TextInput::make('email')->email()->maxLength(120), Forms\Components\Select::make('rating') ->label(__('Rating')) ->options([1 => '★', 2 => '★★', 3 => '★★★', 4 => '★★★★', 5 => '★★★★★']) ->default(3), Forms\Components\Toggle::make('is_active')->label(__('Activ'))->default(true), Forms\Components\Textarea::make('notes')->label(__('Observații'))->columnSpanFull()->rows(2), ]), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('name')->searchable()->sortable(), Tables\Columns\TextColumn::make('specialty')->badge()->placeholder('—'), Tables\Columns\TextColumn::make('phone')->copyable()->placeholder('—'), Tables\Columns\TextColumn::make('rating')->formatStateUsing(fn ($s) => str_repeat('★', (int) $s)), Tables\Columns\TextColumn::make('jobs_count')->counts('jobs')->label(__('Lucrări'))->alignRight(), Tables\Columns\IconColumn::make('is_active')->boolean(), ]) ->filters([ Tables\Filters\TernaryFilter::make('is_active')->label(__('Activi')), ]) ->actions([ Actions\EditAction::make(), Actions\DeleteAction::make(), ]) ->emptyStateHeading(__('Niciun subcontractor')) ->emptyStateDescription(__('Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.')) ->emptyStateIcon('heroicon-o-user-group') ->defaultSort('name'); } public static function getModelLabel(): string { return __('subcontractor'); } public static function getPluralModelLabel(): string { return __('subcontractori'); } public static function getPages(): array { return [ 'index' => Pages\ListSubcontractors::route('/'), 'create' => Pages\CreateSubcontractor::route('/create'), 'edit' => Pages\EditSubcontractor::route('/{record}/edit'), ]; } }