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(\App\Support\I18n::opts(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(\App\Support\I18n::opts(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'), ]; } }