@justifi/webcomponents 6.7.1 → 6.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/cjs/{check-pkg-version-cLAIX_H6.js → check-pkg-version-BG-Rfkh5.js} +1 -1
  2. package/dist/cjs/hidden-input_2.cjs.entry.js +1 -1
  3. package/dist/cjs/internal-tokenize-payment-method_7.cjs.entry.js +9 -7
  4. package/dist/cjs/justifi-apple-pay_8.cjs.entry.js +5 -4
  5. package/dist/cjs/justifi-business-details.cjs.entry.js +2 -2
  6. package/dist/cjs/justifi-business-form.cjs.entry.js +2 -2
  7. package/dist/cjs/justifi-checkout.cjs.entry.js +2 -2
  8. package/dist/cjs/justifi-checkouts-list.cjs.entry.js +2 -2
  9. package/dist/cjs/justifi-dispute-management.cjs.entry.js +2 -2
  10. package/dist/cjs/justifi-dispute-notification_3.cjs.entry.js +2 -2
  11. package/dist/cjs/justifi-gross-payment-chart.cjs.entry.js +2 -2
  12. package/dist/cjs/justifi-order-terminals.cjs.entry.js +2 -2
  13. package/dist/cjs/justifi-payment-details.cjs.entry.js +2 -2
  14. package/dist/cjs/justifi-payment-provisioning.cjs.entry.js +2 -2
  15. package/dist/cjs/justifi-payment-transactions-list.cjs.entry.js +2 -2
  16. package/dist/cjs/justifi-payments-list.cjs.entry.js +2 -2
  17. package/dist/cjs/justifi-payout-details.cjs.entry.js +2 -2
  18. package/dist/cjs/justifi-payout-transactions-list.cjs.entry.js +2 -2
  19. package/dist/cjs/justifi-payouts-list.cjs.entry.js +2 -2
  20. package/dist/cjs/justifi-refund-payment.cjs.entry.js +98 -6
  21. package/dist/cjs/justifi-season-interruption-insurance.cjs.entry.js +2 -2
  22. package/dist/cjs/justifi-terminal-orders-list.cjs.entry.js +2 -2
  23. package/dist/cjs/justifi-terminals-list.cjs.entry.js +2 -2
  24. package/dist/cjs/loader.cjs.js +1 -1
  25. package/dist/cjs/{package-C9E_BIbT.js → package-Df5lTFe6.js} +1 -1
  26. package/dist/cjs/webcomponents.cjs.js +1 -1
  27. package/dist/collection/actions/void/void-actions.js +31 -0
  28. package/dist/collection/api/services/void.service.js +9 -0
  29. package/dist/collection/components/modular-checkout/modular-checkout.js +3 -2
  30. package/dist/collection/components/modular-checkout/sub-components/bank-account.js +6 -3
  31. package/dist/collection/components/modular-checkout/sub-components/card-form.js +6 -3
  32. package/dist/collection/components/refund-payment/refund-payment.js +66 -10
  33. package/dist/docs.json +15 -10
  34. package/dist/esm/{check-pkg-version-o2X_8wJ4.js → check-pkg-version-c_8fDHCB.js} +1 -1
  35. package/dist/esm/hidden-input_2.entry.js +1 -1
  36. package/dist/esm/internal-tokenize-payment-method_7.entry.js +9 -7
  37. package/dist/esm/justifi-apple-pay_8.entry.js +5 -4
  38. package/dist/esm/justifi-business-details.entry.js +2 -2
  39. package/dist/esm/justifi-business-form.entry.js +2 -2
  40. package/dist/esm/justifi-checkout.entry.js +2 -2
  41. package/dist/esm/justifi-checkouts-list.entry.js +2 -2
  42. package/dist/esm/justifi-dispute-management.entry.js +2 -2
  43. package/dist/esm/justifi-dispute-notification_3.entry.js +2 -2
  44. package/dist/esm/justifi-gross-payment-chart.entry.js +2 -2
  45. package/dist/esm/justifi-order-terminals.entry.js +2 -2
  46. package/dist/esm/justifi-payment-details.entry.js +2 -2
  47. package/dist/esm/justifi-payment-provisioning.entry.js +2 -2
  48. package/dist/esm/justifi-payment-transactions-list.entry.js +2 -2
  49. package/dist/esm/justifi-payments-list.entry.js +2 -2
  50. package/dist/esm/justifi-payout-details.entry.js +2 -2
  51. package/dist/esm/justifi-payout-transactions-list.entry.js +2 -2
  52. package/dist/esm/justifi-payouts-list.entry.js +2 -2
  53. package/dist/esm/justifi-refund-payment.entry.js +98 -6
  54. package/dist/esm/justifi-season-interruption-insurance.entry.js +2 -2
  55. package/dist/esm/justifi-terminal-orders-list.entry.js +2 -2
  56. package/dist/esm/justifi-terminals-list.entry.js +2 -2
  57. package/dist/esm/loader.js +1 -1
  58. package/dist/esm/{package-Dr8Z8wfP.js → package-BzT9OxlN.js} +1 -1
  59. package/dist/esm/webcomponents.js +1 -1
  60. package/dist/module/bank-account-form.js +1 -1
  61. package/dist/module/bank-account.js +5 -2
  62. package/dist/module/card-form.js +1 -1
  63. package/dist/module/card-form2.js +5 -2
  64. package/dist/module/justifi-checkouts-list-filters.js +1 -1
  65. package/dist/module/justifi-payment-transactions-list.js +1 -1
  66. package/dist/module/justifi-payments-list-filters.js +1 -1
  67. package/dist/module/justifi-payout-transactions-list.js +1 -1
  68. package/dist/module/justifi-payouts-list-filters.js +1 -1
  69. package/dist/module/justifi-refund-payment.js +97 -4
  70. package/dist/module/justifi-terminal-orders-list-filters.js +1 -1
  71. package/dist/module/modular-checkout.js +3 -2
  72. package/dist/module/package.js +1 -1
  73. package/dist/module/payments-list-core2.js +1 -1
  74. package/dist/module/payout-details-core2.js +1 -1
  75. package/dist/module/payouts-list-core2.js +1 -1
  76. package/dist/module/terminal-orders-list-core2.js +1 -1
  77. package/dist/module/utils2.js +1 -1
  78. package/dist/types/actions/void/void-actions.d.ts +10 -0
  79. package/dist/types/api/services/void.service.d.ts +7 -0
  80. package/dist/types/components/modular-checkout/sub-components/bank-account.d.ts +1 -0
  81. package/dist/types/components/modular-checkout/sub-components/card-form.d.ts +1 -0
  82. package/dist/types/components/refund-payment/refund-payment.d.ts +6 -2
  83. package/dist/types/components.d.ts +3 -3
  84. package/dist/webcomponents/{p-4dc358aa.entry.js → p-035a4adc.entry.js} +1 -1
  85. package/dist/webcomponents/{p-e2d33311.entry.js → p-0935600b.entry.js} +1 -1
  86. package/dist/webcomponents/{p-c8a5a2a9.entry.js → p-0ab9a3ae.entry.js} +1 -1
  87. package/dist/webcomponents/{p-BEu9YFnf.js → p-11wdbrqX.js} +1 -1
  88. package/dist/webcomponents/{p-cbd52897.entry.js → p-138ada4a.entry.js} +1 -1
  89. package/dist/webcomponents/{p-d5765545.entry.js → p-148d3327.entry.js} +1 -1
  90. package/dist/webcomponents/p-2cb9edad.entry.js +1 -0
  91. package/dist/webcomponents/{p-ad3a73af.entry.js → p-2d4a2d26.entry.js} +1 -1
  92. package/dist/webcomponents/p-3f14d0c4.entry.js +1 -0
  93. package/dist/webcomponents/{p-cc2a1c7c.entry.js → p-5c6727ae.entry.js} +1 -1
  94. package/dist/webcomponents/{p-3fbe8ac3.entry.js → p-622af881.entry.js} +1 -1
  95. package/dist/webcomponents/{p-062fcfd5.entry.js → p-64ebff16.entry.js} +1 -1
  96. package/dist/webcomponents/p-71577fa1.entry.js +1 -0
  97. package/dist/webcomponents/{p-3fb1cf2b.entry.js → p-7ec4838f.entry.js} +1 -1
  98. package/dist/webcomponents/p-BzT9OxlN.js +1 -0
  99. package/dist/webcomponents/{p-5a7207c0.entry.js → p-af7c219d.entry.js} +1 -1
  100. package/dist/webcomponents/{p-5e6f2128.entry.js → p-b752c5bc.entry.js} +1 -1
  101. package/dist/webcomponents/{p-8884e000.entry.js → p-bbff6196.entry.js} +1 -1
  102. package/dist/webcomponents/p-c0c36187.entry.js +1 -0
  103. package/dist/webcomponents/{p-262e4b23.entry.js → p-d077569e.entry.js} +1 -1
  104. package/dist/webcomponents/{p-abcb4945.entry.js → p-d7b1b7b5.entry.js} +1 -1
  105. package/dist/webcomponents/{p-7bb7aaca.entry.js → p-dc6c9c79.entry.js} +1 -1
  106. package/dist/webcomponents/p-ecbc83bf.entry.js +1 -0
  107. package/dist/webcomponents/{p-cf644e46.entry.js → p-f56d7b4c.entry.js} +1 -1
  108. package/dist/webcomponents/webcomponents.esm.js +1 -1
  109. package/docs/.eslintrc.cjs +17 -0
  110. package/docs/changelog/index.mdx +17 -0
  111. package/docs/entities/businessdetails/index.mdx +143 -0
  112. package/docs/entities/businessform/index.mdx +241 -0
  113. package/docs/entities/index.mdx +19 -0
  114. package/docs/entities/payment-provisioning/index.mdx +128 -0
  115. package/docs/frameworks/angular/index.mdx +112 -0
  116. package/docs/frameworks/index.mdx +18 -0
  117. package/docs/frameworks/react/index.mdx +125 -0
  118. package/docs/frameworks/vue/index.mdx +102 -0
  119. package/docs/helpers/PartsTable.js +50 -0
  120. package/docs/helpers/PropsTable.js +56 -0
  121. package/docs/helpers/index.ts +3 -0
  122. package/docs/helpers/version.js +32 -0
  123. package/docs/introduction/index.mdx +125 -0
  124. package/docs/merchant-tools/checkouts-list/index.mdx +97 -0
  125. package/docs/merchant-tools/gross-payments-chart/index.mdx +83 -0
  126. package/docs/merchant-tools/index.mdx +25 -0
  127. package/docs/merchant-tools/order-terminals/index.mdx +84 -0
  128. package/docs/merchant-tools/payment-details/index.mdx +132 -0
  129. package/docs/merchant-tools/payment-transactions-list/index.mdx +85 -0
  130. package/docs/merchant-tools/payments-list/index.mdx +109 -0
  131. package/docs/merchant-tools/payout-details/index.mdx +84 -0
  132. package/docs/merchant-tools/payout-transactions-list/index.mdx +84 -0
  133. package/docs/merchant-tools/payouts-list/index.mdx +92 -0
  134. package/docs/merchant-tools/terminal-orders-list/index.mdx +85 -0
  135. package/docs/merchant-tools/terminals-list/index.mdx +93 -0
  136. package/docs/modular-checkout/complete-examples/index.mdx +20 -0
  137. package/docs/modular-checkout/index.mdx +20 -0
  138. package/docs/modular-checkout/introduction/index.mdx +102 -0
  139. package/docs/modular-checkout/sub-components/apple-pay.mdx +106 -0
  140. package/docs/modular-checkout/sub-components/bank-account-form.mdx +167 -0
  141. package/docs/modular-checkout/sub-components/card-form.mdx +178 -0
  142. package/docs/modular-checkout/sub-components/index.mdx +23 -0
  143. package/docs/modular-checkout/sub-components/payment-method-options.mdx +87 -0
  144. package/docs/modular-checkout/sub-components/plaid-payment-method.mdx +158 -0
  145. package/docs/modular-checkout/sub-components/saved-payment-methods.mdx +183 -0
  146. package/docs/modular-checkout/sub-components/season-interruption-insurance.mdx +221 -0
  147. package/docs/modular-checkout/sub-components/sezzle-payment-method.mdx +183 -0
  148. package/docs/modular-checkout/sub-components/summary.mdx +111 -0
  149. package/docs/payment-facilitation/dispute-management/index.mdx +99 -0
  150. package/docs/payment-facilitation/index.mdx +21 -0
  151. package/docs/payment-facilitation/refund-payment/index.mdx +241 -0
  152. package/docs/payment-facilitation/tokenize-payment-method/index.mdx +350 -0
  153. package/docs/payment-facilitation/unified-fintech-checkout/342/204/242/index.mdx +150 -0
  154. package/package.json +21 -6
  155. package/dist/webcomponents/p-1df660a9.entry.js +0 -1
  156. package/dist/webcomponents/p-296bd0b6.entry.js +0 -1
  157. package/dist/webcomponents/p-Dr8Z8wfP.js +0 -1
  158. package/dist/webcomponents/p-ca0d1c6c.entry.js +0 -1
  159. package/dist/webcomponents/p-cc0c722c.entry.js +0 -1
  160. package/dist/webcomponents/p-def84700.entry.js +0 -1
@@ -0,0 +1,106 @@
1
+ ---
2
+ id: modular-checkout/sub-components/apple-pay
3
+ title: Apple Pay
4
+ description: Apple Pay rail for Modular Checkout that exposes wallet buttons and handles tokenization.
5
+ sidebar_position: 22
6
+ ---
7
+
8
+ import {
9
+ PropsTable,
10
+ PartsTable,
11
+ getWebcomponentsVersion,
12
+ } from '@justifi/webcomponents/docs/helpers';
13
+
14
+ ## Overview
15
+
16
+ Renders an Apple Pay button for eligible devices and orchestrates the Apple Pay flow. Designed to be used within `justifi-modular-checkout`.
17
+
18
+ ## Usage
19
+
20
+ <pre><code className="language-html">{`<!DOCTYPE html>
21
+ <html dir="ltr" lang="en">
22
+
23
+ <head>
24
+ <meta charset="utf-8" />
25
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0" />
26
+ <title>justifi-apple-pay</title>
27
+
28
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@justifi/webcomponents@${getWebcomponentsVersion()}/dist/webcomponents/webcomponents.esm.js"></script>
29
+
30
+ <script
31
+ nomodule
32
+ src="https://cdn.jsdelivr.net/npm/@justifi/webcomponents@${getWebcomponentsVersion()}/dist/webcomponents/webcomponents.js"
33
+ ></script>
34
+
35
+ <style>
36
+ /** These are the available parts for styling the component. */ ::part(button){' '}
37
+ {
38
+ // button styles
39
+ }
40
+ </style>
41
+
42
+ </head>
43
+
44
+ <body>
45
+ <justifi-modular-checkout
46
+ auth-token="authToken"
47
+ checkout-id="ch_123"
48
+ >
49
+ <justifi-apple-pay slot="payment-methods" />
50
+ <justifi-modular-checkout-summary slot="summary" />
51
+ </justifi-modular-checkout>
52
+ </body>
53
+ </html>`}</code></pre>
54
+
55
+ ## Props, Events & Methods
56
+
57
+ <div
58
+ dangerouslySetInnerHTML={{
59
+ __html: PropsTable([
60
+ {
61
+ name: 'button-style',
62
+ type: '"black" | "white" | "white-outline"',
63
+ defaultValue: 'black',
64
+ description: "Matches Apple's Human Interface Guidelines.",
65
+ },
66
+ {
67
+ name: 'button-type',
68
+ type: '"buy" | "donate" | "plain"',
69
+ defaultValue: 'buy',
70
+ description: 'Set the label/icon on the wallet button.',
71
+ },
72
+ {
73
+ name: 'locale',
74
+ type: 'string',
75
+ defaultValue: 'en-US',
76
+ description:
77
+ 'Controls the region on the underlying `ApplePaySession` request.',
78
+ },
79
+ ]),
80
+ }}
81
+ />
82
+
83
+ ### Events
84
+
85
+ - `availability-changed`: Notifies the parent when Apple Pay is disabled for the current device/browser.
86
+ - `error`: Surfaces tokenization failures (network, customer cancel, etc.).
87
+
88
+ ### Public methods
89
+
90
+ 1. `begin()` – Trigger the Apple Pay sheet programmatically if you hide the built-in button.
91
+
92
+ ## Theming & Layout
93
+
94
+ - Styling is intentionally limited to keep Apple compliance.
95
+
96
+ <div
97
+ dangerouslySetInnerHTML={{
98
+ __html: PartsTable([
99
+ {
100
+ name: 'button',
101
+ description:
102
+ 'Wrapper around the native Apple Pay button for margin/padding tweaks.',
103
+ },
104
+ ]),
105
+ }}
106
+ />
@@ -0,0 +1,167 @@
1
+ ---
2
+ id: modular-checkout/sub-components/bank-account-form
3
+ title: Bank Account Form
4
+ description: Bank account rail for Modular Checkout that tokenizes ACH details with hosted inputs.
5
+ sidebar_position: 28
6
+ ---
7
+
8
+ import {
9
+ PropsTable,
10
+ PartsTable,
11
+ getWebcomponentsVersion,
12
+ } from '@justifi/webcomponents/docs/helpers';
13
+
14
+ ## Overview
15
+
16
+ Renders a form for collecting bank account details as part of a checkout flow.
17
+
18
+ This subcomponent is **designed to be used within** the `justifi-modular-checkout` and **does not accept props directly**. Instead, it relies on the shared state passed through the Stencil Store, managed by the `justifi-modular-checkout` component.
19
+
20
+ > **Note:** If you are using this sub component, you also need to provide billing information. This can be done by adding the `justifi-billing-form-full` sub component for complete billing address, the `justifi-bank-account-billing-form-simple` sub component for account owner name only, or by passing the `billingInformation` object as an argument to the `submitCheckout` method called on the `justifi-modular-checkout`. See the [modular checkout docs](../introduction/index) for more information.
21
+
22
+ **Authorization** and business context are also handled by `justifi-modular-checkout`, which manages authentication tokens and related configuration.
23
+
24
+ This component exposes **no public methods or properties** and is not intended for standalone use.
25
+
26
+ ## Usage
27
+
28
+ <pre><code className="language-html">{`<!DOCTYPE html>
29
+ <html dir="ltr" lang="en">
30
+
31
+ <head>
32
+ <meta charset="utf-8" />
33
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0" />
34
+ <title>justifi-bank-account-form</title>
35
+
36
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@justifi/webcomponents@${getWebcomponentsVersion()}/dist/webcomponents/webcomponents.esm.js"></script>
37
+
38
+ <script
39
+ nomodule
40
+ src="https://cdn.jsdelivr.net/npm/@justifi/webcomponents@${getWebcomponentsVersion()}/dist/webcomponents/webcomponents.js"
41
+ ></script>
42
+
43
+ <style>
44
+ /** These are the available parts for styling the component. */
45
+ ::part(skeleton){' '}
46
+ {
47
+ // skeleton styles
48
+ }
49
+ ::part(label){' '}
50
+ {
51
+ // label styles
52
+ }
53
+ ::part(input-invalid-and-focused){' '}
54
+ {
55
+ // input invalid and focused styles
56
+ }
57
+ ::part(input-invalid){' '}
58
+ {
59
+ // input invalid styles
60
+ }
61
+ ::part(input-focused){' '}
62
+ {
63
+ // input focused styles
64
+ }
65
+ ::part(input){' '}
66
+ {
67
+ // input styles
68
+ }
69
+ </style>
70
+
71
+ </head>
72
+
73
+ <body>
74
+ <justifi-modular-checkout auth-token="authToken" checkout-id="ch_123">
75
+ <justifi-bank-account-form />
76
+ <button id="submit-button">Submit Checkout</button>
77
+ </justifi-modular-checkout>
78
+ </body>
79
+
80
+ <script>
81
+ (function() {
82
+ const checkoutWrapper = document.querySelector('justifi-modular-checkout');
83
+ const submitButton = document.querySelector('#submit-button');
84
+
85
+ submitButton.addEventListener('click', () => {
86
+ checkoutWrapper.submitCheckout();
87
+ });
88
+
89
+ checkoutWrapper.addEventListener('error-event', (event) => {
90
+ console.error(event.detail);
91
+ });
92
+
93
+ document.addEventListener('submit-event', (event) => {
94
+ console.log('Checkout completed successfully!', event.detail);
95
+ });
96
+ })();
97
+ </script>
98
+
99
+ </html>`}</code></pre>
100
+
101
+ ## Props, Events & Methods
102
+
103
+ <div
104
+ dangerouslySetInnerHTML={{
105
+ __html: PropsTable([
106
+ {
107
+ name: 'payment-method-group-id',
108
+ type: 'string',
109
+ description:
110
+ "Match the parent checkout's group when you want to toggle which rails appear.",
111
+ },
112
+ {
113
+ name: 'show-account-type',
114
+ type: 'boolean',
115
+ defaultValue: 'true',
116
+ description: 'Hide when you only accept checking accounts.',
117
+ },
118
+ {
119
+ name: 'locale',
120
+ type: 'string',
121
+ defaultValue: 'en-US',
122
+ description: 'Controls labels + validation messages.',
123
+ },
124
+ ]),
125
+ }}
126
+ />
127
+
128
+ ### Events
129
+
130
+ - Emits the same `submit` / `error` events as other modular rails via the parent checkout; no direct listeners required.
131
+
132
+ ### Public methods
133
+
134
+ 1. `focus()` – Focuses the first hosted field (routing number).
135
+
136
+ ## Theming & Layout
137
+
138
+ <div
139
+ dangerouslySetInnerHTML={{
140
+ __html: PartsTable([
141
+ {
142
+ name: 'skeleton',
143
+ description: 'Skeleton loading state styles.',
144
+ },
145
+ {
146
+ name: 'label',
147
+ description: 'Label styles.',
148
+ },
149
+ {
150
+ name: 'input-invalid-and-focused',
151
+ description: 'Input styles when invalid and focused.',
152
+ },
153
+ {
154
+ name: 'input-invalid',
155
+ description: 'Input styles when invalid.',
156
+ },
157
+ {
158
+ name: 'input-focused',
159
+ description: 'Input styles when focused.',
160
+ },
161
+ {
162
+ name: 'input',
163
+ description: 'Input field styles.',
164
+ },
165
+ ]),
166
+ }}
167
+ />
@@ -0,0 +1,178 @@
1
+ ---
2
+ id: modular-checkout/sub-components/card-form
3
+ title: Card Form
4
+ description: Card entry sub-component for Modular Checkout layouts with shared validation and token orchestration.
5
+ sidebar_position: 2
6
+ ---
7
+
8
+ import {
9
+ PropsTable,
10
+ PartsTable,
11
+ getWebcomponentsVersion,
12
+ } from '@justifi/webcomponents/docs/helpers';
13
+
14
+ ## Overview
15
+
16
+ Renders a form for collecting credit and debit card details as part of a checkout flow.
17
+
18
+ This component is **designed to be used within** the `justifi-modular-checkout` and **does not accept props directly**. Instead, it relies on shared state passed through the Stencil Store, managed by the wrapper component.
19
+
20
+ > **Note:** If you are using the card payment method, you also need to provide billing information. This can be done by using either the `justifi-billing-form-full` component for complete billing address, the `justifi-card-billing-form-simple` component for ZIP code only, or by passing the `billingInformation` object as an argument to the `submitCheckout` method called on the wrapper. The `billingInformation` object can contain all the fields or just the `address_postal_code` field.
21
+
22
+ **Authorization** and business context are also handled by `justifi-modular-checkout`, which manages authentication tokens and related configuration.
23
+
24
+ This component exposes **no public methods or properties** and is not intended for standalone use.
25
+
26
+ ## Usage
27
+
28
+ <pre><code className="language-html">{`<!DOCTYPE html>
29
+ <html dir="ltr" lang="en">
30
+
31
+ <head>
32
+ <meta charset="utf-8" />
33
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0" />
34
+ <title>justifi-card-form</title>
35
+
36
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@justifi/webcomponents@${getWebcomponentsVersion()}/dist/webcomponents/webcomponents.esm.js"></script>
37
+
38
+ <script
39
+ nomodule
40
+ src="https://cdn.jsdelivr.net/npm/@justifi/webcomponents@${getWebcomponentsVersion()}/dist/webcomponents/webcomponents.js"
41
+ ></script>
42
+
43
+ <style>
44
+ /** These are the available parts for styling the component. */
45
+ ::part(skeleton){' '}
46
+ {
47
+ // skeleton styles
48
+ }
49
+ ::part(label){' '}
50
+ {
51
+ // label styles
52
+ }
53
+ ::part(input-invalid-and-focused){' '}
54
+ {
55
+ // input invalid and focused styles
56
+ }
57
+ ::part(input-invalid){' '}
58
+ {
59
+ // input invalid styles
60
+ }
61
+ ::part(input-focused){' '}
62
+ {
63
+ // input focused styles
64
+ }
65
+ ::part(input){' '}
66
+ {
67
+ // input styles
68
+ }
69
+ </style>
70
+
71
+ </head>
72
+
73
+ <body>
74
+ <justifi-modular-checkout auth-token="authToken" checkout-id="ch_123">
75
+ <justifi-card-form />
76
+ <button id="submit-button">Submit Checkout</button>
77
+ </justifi-modular-checkout>
78
+ </body>
79
+
80
+ <script>
81
+ (function() {
82
+ const checkoutWrapper = document.querySelector('justifi-modular-checkout');
83
+ const submitButton = document.querySelector('#submit-button');
84
+
85
+ submitButton.addEventListener('click', () => {
86
+ checkoutWrapper.submitCheckout();
87
+ });
88
+
89
+ checkoutWrapper.addEventListener('error-event', (event) => {
90
+ console.error(event.detail);
91
+ });
92
+
93
+ document.addEventListener('submit-event', (event) => {
94
+ console.log('Checkout completed successfully!', event.detail);
95
+ });
96
+ })();
97
+ </script>
98
+
99
+ </html>`}</code></pre>
100
+
101
+ ## Props, Events & Methods
102
+
103
+ <div
104
+ dangerouslySetInnerHTML={{
105
+ __html: PropsTable([
106
+ {
107
+ name: 'payment-method-group-id',
108
+ type: 'string',
109
+ description:
110
+ 'Matches the group configured in the parent checkout to toggle allowed rails.',
111
+ },
112
+ {
113
+ name: 'show-save-payment-method',
114
+ type: 'boolean',
115
+ defaultValue: 'true',
116
+ description:
117
+ 'Displays a checkbox that surfaces the modular checkout save-preference state.',
118
+ },
119
+ {
120
+ name: 'card-brand-icons',
121
+ type: '"auto" | "none"',
122
+ defaultValue: 'auto',
123
+ description: 'Controls whether brand icons display above inputs.',
124
+ },
125
+ {
126
+ name: 'locale',
127
+ type: 'string',
128
+ defaultValue: 'en-US',
129
+ description: 'Overrides localized labels if needed.',
130
+ },
131
+ ]),
132
+ }}
133
+ />
134
+
135
+ ### Events
136
+
137
+ All submit and error events bubble through the parent `<justifi-modular-checkout>`, so no additional listeners are required on the card form.
138
+
139
+ ### Public methods
140
+
141
+ - `focus()` – moves focus to the iframe representing the current active field (useful for custom UX flows).
142
+
143
+ ## Theming & Layout
144
+
145
+ - When embedded inside cards, wrap the host element in your layout container and scope typography overrides via the parts listed below.
146
+
147
+ <div
148
+ dangerouslySetInnerHTML={{
149
+ __html: PartsTable([
150
+ {
151
+ name: 'skeleton',
152
+ description: 'Skeleton loading state styles.',
153
+ },
154
+ {
155
+ name: 'label',
156
+ description: 'Label styles.',
157
+ },
158
+ {
159
+ name: 'input-invalid-and-focused',
160
+ description: 'Input styles when invalid and focused.',
161
+ },
162
+ {
163
+ name: 'input-invalid',
164
+ description: 'Input styles when invalid.',
165
+ },
166
+ {
167
+ name: 'input-focused',
168
+ description: 'Input styles when focused.',
169
+ },
170
+ {
171
+ name: 'input',
172
+ description: 'Input field styles.',
173
+ },
174
+ ]),
175
+ }}
176
+ />
177
+
178
+ - Use the `card-form` CSS part (`::part(card-form)`) to apply box shadows or wrapper padding.
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: modular-checkout/sub-components/index
3
+ title: Modular Checkout Sub-components
4
+ sidebar_label: Sub-components
5
+ description: Directory of every child element that plugs into the checkout shell.
6
+ ---
7
+
8
+ Each sub-component inherits authentication context from the parent checkout and
9
+ can be slotted wherever your layout requires. Dive into the dedicated docs for
10
+ implementation details:
11
+
12
+ - [Card form](./card-form)
13
+ - [Bank account form](./bank-account-form)
14
+ - [Plaid payment method](./plaid-payment-method)
15
+ - [Sezzle payment method](./sezzle-payment-method)
16
+ - [Apple Pay](./apple-pay)
17
+ - [Saved payment methods](./saved-payment-methods)
18
+ - [Season interruption insurance](./season-interruption-insurance)
19
+ - [Payment method options](./payment-method-options)
20
+ - [Summary](./summary)
21
+
22
+ > Looking for additional rails? Duplicate any of these MDX files, adjust the
23
+ > front matter `id`, and follow the existing documentation scaffolding.
@@ -0,0 +1,87 @@
1
+ ---
2
+ id: modular-checkout/sub-components/payment-method-options
3
+ title: Payment Method Options
4
+ description: Render-only component that lists available payment rails and lets customers switch between them.
5
+ sidebar_position: 25
6
+ ---
7
+
8
+ import { PropsTable, PartsTable } from '@justifi/webcomponents/docs/helpers';
9
+
10
+ ## Overview
11
+
12
+ `<justifi-payment-method-options>` exposes the same selector UI used inside Storybook examples. It pairs well with `<justifi-modular-checkout>` when you need more control over where the payment rail picker appears.
13
+
14
+ ## Usage
15
+
16
+ <pre>
17
+ <code className="language-html">{`<justifi-payment-method-options
18
+ selected="card"
19
+ options='[
20
+ {"id":"card","label":"Credit or debit card"},
21
+ {"id":"ach","label":"Bank account"},
22
+ {"id":"wallet","label":"Digital wallet"}
23
+ ]'
24
+ ></justifi-payment-method-options>`}</code>
25
+ </pre>
26
+
27
+ ## Props, Events & Methods
28
+
29
+ <div
30
+ dangerouslySetInnerHTML={{
31
+ __html: PropsTable([
32
+ {
33
+ name: 'options',
34
+ type: 'Array<{ id: string; label: string; description?: string; icon?: string }>',
35
+ required: true,
36
+ description: 'List of payment rails to display.',
37
+ },
38
+ {
39
+ name: 'selected',
40
+ type: 'string',
41
+ description: 'Currently selected option ID.',
42
+ },
43
+ {
44
+ name: 'display-style',
45
+ type: '"list" | "tabs" | "cards"',
46
+ defaultValue: 'list',
47
+ description: 'Controls the visual layout.',
48
+ },
49
+ {
50
+ name: 'disabled',
51
+ type: 'boolean',
52
+ defaultValue: 'false',
53
+ description:
54
+ 'Prevent users from switching rails (e.g., while submitting).',
55
+ },
56
+ ]),
57
+ }}
58
+ />
59
+
60
+ ### Events
61
+
62
+ - `selection-changed`: Emits `{ optionId }` whenever customers pick a different rail.
63
+
64
+ ### Public methods
65
+
66
+ 1. `select(optionId)` – Programmatically activate a rail.
67
+
68
+ ## Theming & Layout
69
+
70
+ <div
71
+ dangerouslySetInnerHTML={{
72
+ __html: PartsTable([
73
+ {
74
+ name: 'option',
75
+ description: 'Individual rail container (card/tab/list row).',
76
+ },
77
+ {
78
+ name: 'option-label',
79
+ description: 'Typography target for the option label.',
80
+ },
81
+ {
82
+ name: 'option-description',
83
+ description: 'Secondary text area for additional guidance.',
84
+ },
85
+ ]),
86
+ }}
87
+ />