@justifi/webcomponents 6.7.0 → 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 (167) hide show
  1. package/dist/cjs/{check-pkg-version-nSgWWvdw.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 +10 -8
  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-B8gOzTFM.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/google-pay.service.js +2 -1
  29. package/dist/collection/api/services/void.service.js +9 -0
  30. package/dist/collection/components/modular-checkout/modular-checkout.js +3 -2
  31. package/dist/collection/components/modular-checkout/sub-components/bank-account.js +6 -3
  32. package/dist/collection/components/modular-checkout/sub-components/card-form.js +6 -3
  33. package/dist/collection/components/modular-checkout/sub-components/google-pay.js +3 -3
  34. package/dist/collection/components/refund-payment/refund-payment.js +66 -10
  35. package/dist/docs.json +15 -10
  36. package/dist/esm/{check-pkg-version-CmkUoEAo.js → check-pkg-version-c_8fDHCB.js} +1 -1
  37. package/dist/esm/hidden-input_2.entry.js +1 -1
  38. package/dist/esm/internal-tokenize-payment-method_7.entry.js +9 -7
  39. package/dist/esm/justifi-apple-pay_8.entry.js +10 -8
  40. package/dist/esm/justifi-business-details.entry.js +2 -2
  41. package/dist/esm/justifi-business-form.entry.js +2 -2
  42. package/dist/esm/justifi-checkout.entry.js +2 -2
  43. package/dist/esm/justifi-checkouts-list.entry.js +2 -2
  44. package/dist/esm/justifi-dispute-management.entry.js +2 -2
  45. package/dist/esm/justifi-dispute-notification_3.entry.js +2 -2
  46. package/dist/esm/justifi-gross-payment-chart.entry.js +2 -2
  47. package/dist/esm/justifi-order-terminals.entry.js +2 -2
  48. package/dist/esm/justifi-payment-details.entry.js +2 -2
  49. package/dist/esm/justifi-payment-provisioning.entry.js +2 -2
  50. package/dist/esm/justifi-payment-transactions-list.entry.js +2 -2
  51. package/dist/esm/justifi-payments-list.entry.js +2 -2
  52. package/dist/esm/justifi-payout-details.entry.js +2 -2
  53. package/dist/esm/justifi-payout-transactions-list.entry.js +2 -2
  54. package/dist/esm/justifi-payouts-list.entry.js +2 -2
  55. package/dist/esm/justifi-refund-payment.entry.js +98 -6
  56. package/dist/esm/justifi-season-interruption-insurance.entry.js +2 -2
  57. package/dist/esm/justifi-terminal-orders-list.entry.js +2 -2
  58. package/dist/esm/justifi-terminals-list.entry.js +2 -2
  59. package/dist/esm/loader.js +1 -1
  60. package/dist/esm/{package-CsRppqXL.js → package-BzT9OxlN.js} +1 -1
  61. package/dist/esm/webcomponents.js +1 -1
  62. package/dist/module/bank-account-form.js +1 -1
  63. package/dist/module/bank-account.js +5 -2
  64. package/dist/module/card-form.js +1 -1
  65. package/dist/module/card-form2.js +5 -2
  66. package/dist/module/google-pay.js +5 -4
  67. package/dist/module/justifi-checkouts-list-filters.js +1 -1
  68. package/dist/module/justifi-payment-transactions-list.js +1 -1
  69. package/dist/module/justifi-payments-list-filters.js +1 -1
  70. package/dist/module/justifi-payout-transactions-list.js +1 -1
  71. package/dist/module/justifi-payouts-list-filters.js +1 -1
  72. package/dist/module/justifi-refund-payment.js +97 -4
  73. package/dist/module/justifi-terminal-orders-list-filters.js +1 -1
  74. package/dist/module/modular-checkout.js +3 -2
  75. package/dist/module/package.js +1 -1
  76. package/dist/module/payments-list-core2.js +1 -1
  77. package/dist/module/payout-details-core2.js +1 -1
  78. package/dist/module/payouts-list-core2.js +1 -1
  79. package/dist/module/terminal-orders-list-core2.js +1 -1
  80. package/dist/module/utils2.js +1 -1
  81. package/dist/types/actions/void/void-actions.d.ts +10 -0
  82. package/dist/types/api/services/google-pay.service.d.ts +1 -1
  83. package/dist/types/api/services/void.service.d.ts +7 -0
  84. package/dist/types/components/modular-checkout/sub-components/bank-account.d.ts +1 -0
  85. package/dist/types/components/modular-checkout/sub-components/card-form.d.ts +1 -0
  86. package/dist/types/components/refund-payment/refund-payment.d.ts +6 -2
  87. package/dist/types/components.d.ts +3 -3
  88. package/dist/webcomponents/{p-c0bd4e9a.entry.js → p-035a4adc.entry.js} +1 -1
  89. package/dist/webcomponents/{p-c4585b68.entry.js → p-0935600b.entry.js} +1 -1
  90. package/dist/webcomponents/{p-fc8f55d7.entry.js → p-0ab9a3ae.entry.js} +1 -1
  91. package/dist/webcomponents/{p-DISrhs4v.js → p-11wdbrqX.js} +1 -1
  92. package/dist/webcomponents/{p-fe73b09b.entry.js → p-138ada4a.entry.js} +1 -1
  93. package/dist/webcomponents/p-148d3327.entry.js +1 -0
  94. package/dist/webcomponents/p-2cb9edad.entry.js +1 -0
  95. package/dist/webcomponents/{p-04ec17bb.entry.js → p-2d4a2d26.entry.js} +1 -1
  96. package/dist/webcomponents/p-3f14d0c4.entry.js +1 -0
  97. package/dist/webcomponents/{p-d2981754.entry.js → p-5c6727ae.entry.js} +1 -1
  98. package/dist/webcomponents/{p-eada0422.entry.js → p-622af881.entry.js} +1 -1
  99. package/dist/webcomponents/{p-50400c5e.entry.js → p-64ebff16.entry.js} +1 -1
  100. package/dist/webcomponents/p-71577fa1.entry.js +1 -0
  101. package/dist/webcomponents/p-7ec4838f.entry.js +1 -0
  102. package/dist/webcomponents/p-BzT9OxlN.js +1 -0
  103. package/dist/webcomponents/p-af7c219d.entry.js +1 -0
  104. package/dist/webcomponents/{p-74fea39c.entry.js → p-b752c5bc.entry.js} +1 -1
  105. package/dist/webcomponents/{p-f23428da.entry.js → p-bbff6196.entry.js} +1 -1
  106. package/dist/webcomponents/p-c0c36187.entry.js +1 -0
  107. package/dist/webcomponents/{p-ff5981fb.entry.js → p-d077569e.entry.js} +1 -1
  108. package/dist/webcomponents/{p-87988b4d.entry.js → p-d7b1b7b5.entry.js} +1 -1
  109. package/dist/webcomponents/{p-095cedc5.entry.js → p-dc6c9c79.entry.js} +1 -1
  110. package/dist/webcomponents/p-ecbc83bf.entry.js +1 -0
  111. package/dist/webcomponents/{p-b2a0cbad.entry.js → p-f56d7b4c.entry.js} +1 -1
  112. package/dist/webcomponents/webcomponents.esm.js +1 -1
  113. package/docs/.eslintrc.cjs +17 -0
  114. package/docs/changelog/index.mdx +17 -0
  115. package/docs/entities/businessdetails/index.mdx +143 -0
  116. package/docs/entities/businessform/index.mdx +241 -0
  117. package/docs/entities/index.mdx +19 -0
  118. package/docs/entities/payment-provisioning/index.mdx +128 -0
  119. package/docs/frameworks/angular/index.mdx +112 -0
  120. package/docs/frameworks/index.mdx +18 -0
  121. package/docs/frameworks/react/index.mdx +125 -0
  122. package/docs/frameworks/vue/index.mdx +102 -0
  123. package/docs/helpers/PartsTable.js +50 -0
  124. package/docs/helpers/PropsTable.js +56 -0
  125. package/docs/helpers/index.ts +3 -0
  126. package/docs/helpers/version.js +32 -0
  127. package/docs/introduction/index.mdx +125 -0
  128. package/docs/merchant-tools/checkouts-list/index.mdx +97 -0
  129. package/docs/merchant-tools/gross-payments-chart/index.mdx +83 -0
  130. package/docs/merchant-tools/index.mdx +25 -0
  131. package/docs/merchant-tools/order-terminals/index.mdx +84 -0
  132. package/docs/merchant-tools/payment-details/index.mdx +132 -0
  133. package/docs/merchant-tools/payment-transactions-list/index.mdx +85 -0
  134. package/docs/merchant-tools/payments-list/index.mdx +109 -0
  135. package/docs/merchant-tools/payout-details/index.mdx +84 -0
  136. package/docs/merchant-tools/payout-transactions-list/index.mdx +84 -0
  137. package/docs/merchant-tools/payouts-list/index.mdx +92 -0
  138. package/docs/merchant-tools/terminal-orders-list/index.mdx +85 -0
  139. package/docs/merchant-tools/terminals-list/index.mdx +93 -0
  140. package/docs/modular-checkout/complete-examples/index.mdx +20 -0
  141. package/docs/modular-checkout/index.mdx +20 -0
  142. package/docs/modular-checkout/introduction/index.mdx +102 -0
  143. package/docs/modular-checkout/sub-components/apple-pay.mdx +106 -0
  144. package/docs/modular-checkout/sub-components/bank-account-form.mdx +167 -0
  145. package/docs/modular-checkout/sub-components/card-form.mdx +178 -0
  146. package/docs/modular-checkout/sub-components/index.mdx +23 -0
  147. package/docs/modular-checkout/sub-components/payment-method-options.mdx +87 -0
  148. package/docs/modular-checkout/sub-components/plaid-payment-method.mdx +158 -0
  149. package/docs/modular-checkout/sub-components/saved-payment-methods.mdx +183 -0
  150. package/docs/modular-checkout/sub-components/season-interruption-insurance.mdx +221 -0
  151. package/docs/modular-checkout/sub-components/sezzle-payment-method.mdx +183 -0
  152. package/docs/modular-checkout/sub-components/summary.mdx +111 -0
  153. package/docs/payment-facilitation/dispute-management/index.mdx +99 -0
  154. package/docs/payment-facilitation/index.mdx +21 -0
  155. package/docs/payment-facilitation/refund-payment/index.mdx +241 -0
  156. package/docs/payment-facilitation/tokenize-payment-method/index.mdx +350 -0
  157. package/docs/payment-facilitation/unified-fintech-checkout/342/204/242/index.mdx +150 -0
  158. package/package.json +21 -6
  159. package/dist/webcomponents/p-0e981c28.entry.js +0 -1
  160. package/dist/webcomponents/p-15ceeea7.entry.js +0 -1
  161. package/dist/webcomponents/p-9c1aa22d.entry.js +0 -1
  162. package/dist/webcomponents/p-CsRppqXL.js +0 -1
  163. package/dist/webcomponents/p-aa145996.entry.js +0 -1
  164. package/dist/webcomponents/p-b5b49e86.entry.js +0 -1
  165. package/dist/webcomponents/p-d9cdd873.entry.js +0 -1
  166. package/dist/webcomponents/p-ef04f334.entry.js +0 -1
  167. package/dist/webcomponents/p-f5dd3fa4.entry.js +0 -1
@@ -0,0 +1,85 @@
1
+ ---
2
+ id: merchant-tools/terminal-orders-list/index
3
+ title: Terminal Orders List
4
+ description: Reporting table of hardware orders with fulfillment status and tracking info.
5
+ sidebar_position: 51
6
+ ---
7
+
8
+ import { PropsTable, PartsTable } from '@justifi/webcomponents/docs/helpers';
9
+
10
+ ## Overview
11
+
12
+ Component to render a formated list of terminal device orders for the requested account.
13
+
14
+ ## Usage
15
+
16
+ <pre>
17
+ <code className="language-html">{`<justifi-terminal-orders-list
18
+ account-id="acc_123"
19
+ auth-token="wct_terminals"
20
+ />`}</code>
21
+ </pre>
22
+
23
+ ## Props, Events & Methods
24
+
25
+ <div
26
+ dangerouslySetInnerHTML={{
27
+ __html: PropsTable([
28
+ {
29
+ name: 'account-id',
30
+ type: 'string',
31
+ required: true,
32
+ description: 'Restricts orders to a merchant/platform.',
33
+ },
34
+ {
35
+ name: 'auth-token',
36
+ type: 'string',
37
+ required: true,
38
+ description: 'Token with `read:terminals` scope.',
39
+ },
40
+ {
41
+ name: 'columns',
42
+ type: 'string',
43
+ defaultValue: 'created_at,order_number,items,status,tracking_number',
44
+ description: 'Customize visible columns.',
45
+ },
46
+ ]),
47
+ }}
48
+ />
49
+
50
+ ### Events
51
+
52
+ - `click-event`: Surfaces the order ID for navigation.
53
+
54
+ ### Public methods
55
+
56
+ 1. `refresh()` – Reload order data.
57
+
58
+ ## Theming & Layout
59
+
60
+ <div
61
+ dangerouslySetInnerHTML={{
62
+ __html: PartsTable([
63
+ {
64
+ name: 'font-family',
65
+ description: 'Controls the font family for the component.',
66
+ },
67
+ {
68
+ name: 'color',
69
+ description: 'Controls the text color.',
70
+ },
71
+ {
72
+ name: 'background-color',
73
+ description: 'Controls the background color.',
74
+ },
75
+ {
76
+ name: 'button',
77
+ description: 'Button styles.',
78
+ },
79
+ {
80
+ name: 'button-disabled',
81
+ description: 'Disabled button styles.',
82
+ },
83
+ ]),
84
+ }}
85
+ />
@@ -0,0 +1,93 @@
1
+ ---
2
+ id: merchant-tools/terminals-list/index
3
+ title: Terminals List
4
+ description: Inventory table showing active, inactive, and assigned terminals in the field.
5
+ sidebar_position: 52
6
+ ---
7
+
8
+ import { PropsTable, PartsTable } from '@justifi/webcomponents/docs/helpers';
9
+
10
+ ## Overview
11
+
12
+ Component to render a formated list of terminals for the requested account.
13
+
14
+ ## Usage
15
+
16
+ <pre>
17
+ <code className="language-html">{`<justifi-terminals-list
18
+ account-id="acc_123"
19
+ auth-token="wct_terminals"
20
+ filters='{"status":"online"}'
21
+ />`}</code>
22
+ </pre>
23
+
24
+ ## Props, Events & Methods
25
+
26
+ <div
27
+ dangerouslySetInnerHTML={{
28
+ __html: PropsTable([
29
+ {
30
+ name: 'account-id',
31
+ type: 'string',
32
+ required: true,
33
+ description: 'Scope inventory to a merchant/platform.',
34
+ },
35
+ {
36
+ name: 'auth-token',
37
+ type: 'string',
38
+ required: true,
39
+ description: 'Token with `read:terminals` scope.',
40
+ },
41
+ {
42
+ name: 'filters',
43
+ type: 'string | Record<string, unknown>',
44
+ description:
45
+ 'Optional JSON to preset status, location, or software filters.',
46
+ },
47
+ {
48
+ name: 'columns',
49
+ type: 'string',
50
+ defaultValue: 'name,status,location,last_check_in',
51
+ description: 'Customize visible columns.',
52
+ },
53
+ ]),
54
+ }}
55
+ />
56
+
57
+ ### Events
58
+
59
+ - `click-event`: Row click event that surfaces `terminal_id`.
60
+ - `filter-changed`: Emits when the built-in filters change.
61
+
62
+ ### Public methods
63
+
64
+ 1. `refresh()` – Reloads terminal data.
65
+
66
+ ## Theming & Layout
67
+
68
+ <div
69
+ dangerouslySetInnerHTML={{
70
+ __html: PartsTable([
71
+ {
72
+ name: 'font-family',
73
+ description: 'Controls the font family for the component.',
74
+ },
75
+ {
76
+ name: 'color',
77
+ description: 'Controls the text color.',
78
+ },
79
+ {
80
+ name: 'background-color',
81
+ description: 'Controls the background color.',
82
+ },
83
+ {
84
+ name: 'button',
85
+ description: 'Button styles.',
86
+ },
87
+ {
88
+ name: 'button-disabled',
89
+ description: 'Disabled button styles.',
90
+ },
91
+ ]),
92
+ }}
93
+ />
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: modular-checkout/complete-examples/index
3
+ title: Modular Checkout Complete Examples
4
+ sidebar_label: Complete Examples
5
+ description: Storybook-driven layouts that demonstrate real-world checkout flows.
6
+ ---
7
+
8
+ Reference these Storybook stories when you need production-ready layout
9
+ patterns or want to hand designers a live sandbox.
10
+
11
+ - [Layout 1](https://storybook.justifi.ai/?path=/docs/modular-checkout-complete-examples-layout-1--docs):
12
+ responsive two-column layout with summary pinned on desktop.
13
+ - [Layout 2](https://storybook.justifi.ai/?path=/docs/modular-checkout-complete-examples-layout-2--docs):
14
+ hero-style payment rail picker plus collapsible summaries.
15
+ - [Layout 3](https://storybook.justifi.ai/?path=/docs/modular-checkout-complete-examples-layout-3--docs):
16
+ condensed layout optimized for embedded partner portals.
17
+
18
+ > These examples map 1:1 with production code, so you can inspect the DOM,
19
+ > props, and CSS custom properties without digging through story sources.
20
+
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: modular-checkout/index
3
+ title: Modular Checkout
4
+ description: Orientation hub for the JustiFi modular checkout experience.
5
+ ---
6
+
7
+ Modular Checkout stitches every payment surface, summary view, and auxiliary
8
+ experience into one cohesive flow. Use this hub to jump into the right phase of
9
+ the journey:
10
+
11
+ - [Introduction](./introduction/index) for architecture, props, events, and
12
+ theming guidance.
13
+ - [Complete Examples](./complete-examples/index) for Storybook layouts that
14
+ demonstrate multi-step funnels.
15
+ - [Sub-components](./sub-components/index) for deep dives on each child element
16
+ (card form, bank form, payment method picker, etc.).
17
+
18
+ > Ship custom layouts fast: combine `[sub-components](./sub-components/index)`
19
+ > with the patterns in `[Example](./example/index)` so you can validate UX
20
+ > decisions before plumbing real data.
@@ -0,0 +1,102 @@
1
+ ---
2
+ id: modular-checkout/introduction/index
3
+ title: Modular Checkout
4
+ sidebar_label: Introduction
5
+ description: Layout manager that composes payment, summary, and confirmation subcomponents into a cohesive flow.
6
+ sidebar_position: 21
7
+ ---
8
+
9
+ import { PropsTable, PartsTable } from '@justifi/webcomponents/docs/helpers';
10
+
11
+ ## Overview
12
+
13
+ The `justifi-modular-checkout` wrapper component serves as a container for checkout-related sub components. It manages the tokenization of payment methods, billing information, insurance, and overall form submission to complete the checkout. It also supports saving a payment method to a payment method group for future use.
14
+
15
+ ## Usage
16
+
17
+ <pre>
18
+ <code className="language-html">{`<justifi-modular-checkout
19
+ account-id="acc_123"
20
+ auth-token="wct_checkout"
21
+ checkout-id="chk_456"
22
+ >
23
+ <justifi-modular-checkout-card-form slot="payment-methods" />
24
+ <justifi-modular-checkout-summary slot="summary" />
25
+ </justifi-modular-checkout>`}</code>
26
+ </pre>
27
+
28
+ ## Props, Events & Methods
29
+
30
+ <div
31
+ dangerouslySetInnerHTML={{
32
+ __html: PropsTable([
33
+ {
34
+ name: 'account-id',
35
+ type: 'string',
36
+ required: true,
37
+ description: 'Platform or merchant account for the checkout session.',
38
+ },
39
+ {
40
+ name: 'auth-token',
41
+ type: 'string',
42
+ required: true,
43
+ description:
44
+ 'Token with scopes for reading checkout data and tokenizing payment methods.',
45
+ },
46
+ {
47
+ name: 'checkout-id',
48
+ type: 'string',
49
+ required: true,
50
+ description:
51
+ 'Server-side checkout object controlling totals and allowed rails.',
52
+ },
53
+ {
54
+ name: 'submit-label',
55
+ type: 'string',
56
+ defaultValue: 'Pay now',
57
+ description: 'Override the CTA copy.',
58
+ },
59
+ {
60
+ name: 'locale',
61
+ type: 'string',
62
+ defaultValue: 'en-US',
63
+ description: 'Controls currency format + copy.',
64
+ },
65
+ ]),
66
+ }}
67
+ />
68
+
69
+ ### Events
70
+
71
+ - `completed`: Fired when all nested components finish and a payment succeeds.
72
+ - `error`: Emitted when nested components report a failure (validation, network, etc.).
73
+ - `step-changed`: Surfaces stepper transitions for analytics.
74
+
75
+ ### Public methods
76
+
77
+ 1. `submit()` – Programmatically trigger the checkout CTA.
78
+ 2. `reset()` – Reset the flow back to the first step and clear transient state.
79
+
80
+ ## Theming & Layout
81
+
82
+ - Slots expose `::part(summary)` and `::part(payment-methods)` so you can adjust spacing for each region.
83
+
84
+ <div
85
+ dangerouslySetInnerHTML={{
86
+ __html: PartsTable([
87
+ {
88
+ name: 'shell',
89
+ description: 'Outer wrapper that surrounds the full modular checkout.',
90
+ },
91
+ {
92
+ name: 'payment-methods',
93
+ description: 'Region that houses card/bank/alternative rails.',
94
+ },
95
+ {
96
+ name: 'summary',
97
+ description: 'Order summary slot, typically on the right on desktop.',
98
+ },
99
+ { name: 'cta', description: 'Primary submit button container.' },
100
+ ]),
101
+ }}
102
+ />
@@ -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
+ />