components([ Schemas\Components\Section::make('Identificare') ->columns(2) ->schema([ Forms\Components\TextInput::make('name')->label('Nume template')->required()->maxLength(120), Forms\Components\Select::make('channel') ->options(MessageTemplate::CHANNELS) ->default('telegram') ->required(), Forms\Components\TextInput::make('subject')->label('Subiect (email)')->maxLength(160)->columnSpanFull(), Forms\Components\Toggle::make('is_active')->label('Activ')->default(true), ]), Schemas\Components\Section::make('Conținut') ->columns(1) ->schema([ Forms\Components\Textarea::make('body') ->label('Mesaj') ->required() ->rows(6) ->helperText('Variabile disponibile: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}'), ]), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('name')->searchable()->sortable(), Tables\Columns\TextColumn::make('channel') ->formatStateUsing(fn ($s) => MessageTemplate::CHANNELS[$s] ?? $s) ->badge(), Tables\Columns\TextColumn::make('body')->label('Preview')->limit(60), Tables\Columns\IconColumn::make('is_active')->boolean(), ]) ->filters([ Tables\Filters\SelectFilter::make('channel')->options(MessageTemplate::CHANNELS), ]) ->actions([ Actions\EditAction::make(), Actions\DeleteAction::make(), ]) ->defaultSort('channel'); } public static function getPages(): array { return [ 'index' => Pages\ListMessageTemplates::route('/'), 'create' => Pages\CreateMessageTemplate::route('/create'), 'edit' => Pages\EditMessageTemplate::route('/{record}/edit'), ]; } }