components([ Schemas\Components\Section::make()->columns(2)->schema([ Forms\Components\TextInput::make('code')->label('Cod')->required()->maxLength(32), Forms\Components\TextInput::make('name')->label('Denumire')->required()->maxLength(120), Forms\Components\TextInput::make('address')->label('Adresă')->columnSpanFull()->maxLength(200), Forms\Components\Toggle::make('is_default')->label('Depozit implicit'), Forms\Components\Toggle::make('is_active')->label('Activ')->default(true), ]), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('code')->searchable()->sortable(), Tables\Columns\TextColumn::make('name')->searchable()->sortable(), Tables\Columns\TextColumn::make('address')->placeholder('—')->toggleable(), Tables\Columns\IconColumn::make('is_default')->label('Implicit')->boolean(), Tables\Columns\IconColumn::make('is_active')->label('Activ')->boolean(), Tables\Columns\TextColumn::make('batches_count') ->counts('batches') ->label('Loturi') ->alignRight(), ]) ->actions([ Actions\EditAction::make(), Actions\DeleteAction::make(), ]) ->emptyStateHeading('Niciun depozit') ->emptyStateDescription('Un depozit implicit a fost creat la migrare. Adaugă altele dacă ai locații fizice separate (sucursală, hală, mobil).') ->emptyStateIcon('heroicon-o-building-storefront') ->defaultSort('code'); } public static function getPages(): array { return [ 'index' => Pages\ListWarehouses::route('/'), 'create' => Pages\CreateWarehouse::route('/create'), 'edit' => Pages\EditWarehouse::route('/{record}/edit'), ]; } }