PaymentMethodsDefaults is a public enum (used as a namespace) providing the pre-built @ViewBuilder content that PrimerPaymentMethods renders when you omit a slot. Use these helpers inside your own slots to mix custom and default content, or as a reference for the default look and feel.
Each helper is the default value for the matching
PrimerPaymentMethods slot. The component falls back to PaymentMethodsDefaults.header($0), PaymentMethodsDefaults.method($0, onSelect: $1), and PaymentMethodsDefaults.emptyState($0) when those slots are not supplied.Builders
| Builder | Description |
|---|---|
header(_:) | Default “Choose payment method” header styled with the current theme |
method(_:onSelect:) | Payment method row with icon, name, optional surcharge, and selection action |
emptyState(_:) | Message displayed when no payment methods are available |
header
| Parameter | Type | Description |
|---|---|---|
session | PrimerSelectionSession | The active selection session. Accepted to match the slot closure signature; the default header is static. |
session parameter exists only so this helper matches the header slot’s closure signature — the default header does not read from it.
method
| Parameter | Type | Description |
|---|---|---|
method | CheckoutPaymentMethod | The payment method data to display |
onSelect | @escaping () -> Void | Callback invoked when the row is tapped. PrimerPaymentMethods wires this to session.select(method). |
emptyState
PrimerPaymentMethods when session.state.paymentMethods is empty.
| Parameter | Type | Description |
|---|---|---|
session | PrimerSelectionSession | The active selection session. Accepted to match the slot closure signature; the default empty state is static. |
Return types
Each builder returns a concrete public view type so it can serve as a@ViewBuilder default argument. You can use these types directly when composing your own layouts.
| Type | Returned by | Description |
|---|---|---|
PaymentMethodsHeaderContent | header(_:) | The default section header view |
PaymentMethodRowContent | method(_:onSelect:) | A single default payment method row |
PaymentMethodsEmptyContent | emptyState(_:) | The default empty-state view |
Using defaults inside custom slots
Reuse a default builder for one part of the list while customizing another. Here the default header and empty state are kept, but each row is replaced with a branded row:header and emptyState slots are omitted, PrimerPaymentMethods falls back to PaymentMethodsDefaults.header and PaymentMethodsDefaults.emptyState.
You can also call a default builder explicitly — for example, to render the default row while wrapping it in your own container:
See also
PrimerPaymentMethods
The slot-based payment method list these defaults power.
PrimerSelectionSession
Session that exposes the available methods and the select action.
VaultedPaymentMethods
Saved payment methods and their own default sub-components.
CardFormDefaults
The equivalent default sub-components for the card form.