components([ Section::make('Basic Information') ->schema([ Grid::make(2) ->schema([ TextInput::make('name') ->label('Provider Name') ->required() ->unique(ignoreRecord: true) ->helperText('Internal identifier for the provider'), TextInput::make('display_name') ->label('Display Name') ->required() ->helperText('Name shown to users'), ]), Textarea::make('description') ->label('Description') ->rows(3) ->helperText('Brief description of the payment provider') ->columnSpanFull(), ]), Section::make('Capabilities') ->schema([ Grid::make(3) ->schema([ Toggle::make('is_active') ->label('Active') ->default(true) ->helperText('Enable this provider for use'), Toggle::make('supports_recurring') ->label('Supports Recurring') ->default(false) ->helperText('Can handle subscription payments'), Toggle::make('supports_one_time') ->label('Supports One-Time') ->default(true) ->helperText('Can handle single payments'), ]), Grid::make(2) ->schema([ TextInput::make('priority') ->label('Priority') ->numeric() ->default(0) ->helperText('Higher priority = shown first'), Toggle::make('is_fallback') ->label('Fallback Provider') ->default(false) ->helperText('Default provider when others fail'), ]), ]), Section::make('Configuration') ->schema([ KeyValue::make('configuration') ->label('Provider Configuration') ->addActionLabel('Add configuration') ->keyLabel('Key') ->valueLabel('Value') ->helperText('API keys and other provider-specific settings') ->columnSpanFull(), KeyValue::make('supported_currencies') ->label('Supported Currencies') ->addActionLabel('Add currency') ->keyLabel('Currency Code') ->valueLabel('Display Name') ->default(['USD' => 'US Dollar']) ->helperText('Currencies this provider supports') ->columnSpanFull(), KeyValue::make('fee_structure') ->label('Fee Structure') ->addActionLabel('Add fee setting') ->keyLabel('Fee Type') ->valueLabel('Value') ->helperText('Example: fixed_fee, percentage_fee') ->columnSpanFull(), ]), ]); } }