@rebilly/instruments 3.13.2-beta.0 → 3.13.4-beta.0

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 (84) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +66 -43
  3. package/dist/index.min.js +66 -43
  4. package/package.json +6 -3
  5. package/src/functions/destroy.js +2 -8
  6. package/src/functions/mount/fetch-data.js +2 -9
  7. package/src/functions/mount/index.js +10 -15
  8. package/src/functions/mount/mount.spec.js +11 -10
  9. package/src/functions/mount/setup-framepay-theme.js +72 -30
  10. package/src/functions/mount/setup-options.js +2 -2
  11. package/src/functions/mount/{setup-styles-vars.js → setup-styles.js} +7 -9
  12. package/src/functions/purchase.js +5 -2
  13. package/src/functions/setup.js +6 -3
  14. package/src/functions/show.js +2 -2
  15. package/src/functions/show.spec.js +4 -4
  16. package/src/functions/update.spec.js +3 -4
  17. package/src/instance.js +1 -4
  18. package/src/loader/index.js +33 -57
  19. package/src/storefront/index.js +5 -2
  20. package/src/storefront/payment-instruments.js +0 -7
  21. package/src/style/base/__snapshots__/theme.spec.js.snap +220 -136
  22. package/src/style/base/default-theme.js +14 -187
  23. package/src/style/base/index.js +79 -487
  24. package/src/style/base/theme.js +4 -3
  25. package/src/style/base/theme.spec.js +3 -2
  26. package/src/style/browserslist.js +1 -0
  27. package/src/style/components/accordion.js +140 -0
  28. package/src/style/components/address.js +55 -0
  29. package/src/style/components/button.js +117 -0
  30. package/src/style/components/divider.js +39 -0
  31. package/src/style/components/forms/checkbox.js +75 -0
  32. package/src/style/components/forms/field.js +56 -0
  33. package/src/style/components/forms/form.js +18 -0
  34. package/src/style/components/forms/input.js +77 -0
  35. package/src/style/components/forms/label.js +55 -0
  36. package/src/style/components/forms/radio.js +80 -0
  37. package/src/style/components/forms/select.js +86 -0
  38. package/src/style/components/forms/validation.js +72 -0
  39. package/src/style/components/icons.js +13 -0
  40. package/src/style/components/index.js +39 -0
  41. package/src/style/components/loader.js +41 -0
  42. package/src/style/components/methods.js +97 -0
  43. package/src/style/components/overlay.js +24 -0
  44. package/src/style/helpers/index.js +54 -0
  45. package/src/style/index.js +24 -4
  46. package/src/style/payment-instruments/content.js +8 -0
  47. package/src/style/payment-instruments/index.js +14 -0
  48. package/src/style/payment-instruments/payment-card.js +27 -0
  49. package/src/style/payment-instruments/payment-instrument-list.js +44 -0
  50. package/src/style/payment-instruments/payment-instrument.js +55 -0
  51. package/src/style/utils/color-values.js +1 -1
  52. package/src/style/utils/remove-empty-null.js +10 -0
  53. package/src/style/vendor/framepay.js +28 -0
  54. package/src/style/vendor/postmate.js +18 -0
  55. package/src/style/views/confirmation.js +26 -0
  56. package/src/style/views/index.js +16 -0
  57. package/src/style/views/method-selector.js +11 -0
  58. package/src/style/views/modal.js +91 -0
  59. package/src/style/views/result.js +52 -0
  60. package/src/style/views/summary.js +118 -0
  61. package/src/views/__snapshots__/summary.spec.js.snap +246 -0
  62. package/src/views/common/iframe/base-iframe.js +2 -3
  63. package/src/views/common/iframe/event-listeners.js +9 -12
  64. package/src/views/common/iframe/method-iframe.js +1 -3
  65. package/src/views/common/iframe/modal-iframe.js +2 -4
  66. package/src/views/common/iframe/view-iframe.js +1 -3
  67. package/src/views/confirmation.js +7 -12
  68. package/src/views/method-selector/express-methods/apple-pay.js +92 -0
  69. package/src/views/method-selector/express-methods/index.js +25 -0
  70. package/src/views/method-selector/get-payment-methods.js +1 -0
  71. package/src/views/method-selector/index.js +58 -45
  72. package/src/views/method-selector/method-selector.spec.js +1 -1
  73. package/src/views/method-selector/mount-express-methods.js +26 -66
  74. package/src/views/method-selector/mount-methods.js +178 -0
  75. package/src/views/modal.js +1 -1
  76. package/src/views/result.js +3 -3
  77. package/src/views/summary.js +190 -24
  78. package/src/views/summary.spec.js +145 -0
  79. package/tests/mocks/storefront-api-mock.js +27 -48
  80. package/src/style/utils/minifyCss.js +0 -14
  81. package/src/views/errors.js +0 -95
  82. package/src/views/method-selector/express-methods.js +0 -51
  83. package/src/views/method-selector/generate-framepay-config.js +0 -54
  84. package/src/views/method-selector/generate-framepay-config.spec.js +0 -195
@@ -0,0 +1,55 @@
1
+ // -----------------------------------------------------------------------------
2
+ // This file contains all styles related to the payment instrument component.
3
+ // -----------------------------------------------------------------------------
4
+ export const paymentInstrument = () => `
5
+ .rebilly-instruments-payment-instrument {
6
+ display: inline-flex;
7
+ align-items: center;
8
+ justify-content: space-between;
9
+ height: 26px;
10
+ margin: 0 0 var(--rebilly-spacings-l);
11
+ }
12
+
13
+ .rebilly-instruments-payment-instrument figure {
14
+ margin: 0 var(--rebilly-spacings-2xs) 0 0;
15
+ height: 26px;
16
+ padding: 0;
17
+ }
18
+
19
+ .rebilly-instruments-payment-instrument figure img {
20
+ width: auto;
21
+ height: 100%;
22
+ border-radius: 4px;
23
+ }
24
+
25
+ .rebilly-instruments-payment-instrument-brand,
26
+ .rebilly-instruments-payment-instrument-exp,
27
+ .rebilly-instruments-payment-instrument-last4 {
28
+ display: inline-block;
29
+ white-space: nowrap;
30
+ }
31
+
32
+ .rebilly-instruments-payment-instrument-brand {
33
+ margin: 0 0 0 var(--rebilly-spacings-xs);
34
+ }
35
+
36
+ .rebilly-instruments-payment-instrument-last4 {
37
+ margin: 0 var(--rebilly-spacings-s);
38
+ }
39
+
40
+ .rebilly-instruments-payment-instrument-exp {
41
+ color: var(--rebilly-colorMutedText);
42
+ }
43
+
44
+ @media screen and (max-width: 480px) {
45
+ .rebilly-instruments-payment-instrument-exp {
46
+ display: none;
47
+ }
48
+ }
49
+
50
+ @media screen and (max-width: 320px) {
51
+ .rebilly-instruments-payment-instrument-brand {
52
+ display: none;
53
+ }
54
+ }
55
+ `;
@@ -12,7 +12,7 @@ export function alphaColor(color, alphaValue = 1) {
12
12
  return _alphaColor.rgbString();
13
13
  }
14
14
 
15
- export const mutedTextColor = (color) => alphaColor(color, 0.5);
15
+ export const mutedTextColor = (color) => alphaColor(color, 0.6);
16
16
 
17
17
  export const mutedBorderColor = (color) => alphaColor(color, 0.25);
18
18
 
@@ -0,0 +1,10 @@
1
+ export default () => ({
2
+ postcssPlugin: 'postcss-remove-empty-null',
3
+ Once (root) {
4
+ root.walkAtRules(decl => {
5
+ if ((decl.value === '\'\'' || decl.value === '""' || decl.value.includes('null')) && decl.prop !== 'content') {
6
+ decl.remove();
7
+ }
8
+ });
9
+ }
10
+ })
@@ -0,0 +1,28 @@
1
+ export const framepayStyle = () => `
2
+ .rebilly-instruments-framepay .rebilly-framepay {
3
+ min-height: var(--rebilly-spacings-form-element-min-height);
4
+ border: var(--rebilly-inputBorder);
5
+ margin-bottom: 0;
6
+ background: var(--rebilly-inputColorBackground);
7
+ border-radius: var(--rebilly-inputBorderRadius);
8
+ box-shadow: var(--rebilly-inputBoxShadow);
9
+ }
10
+
11
+ .rebilly-instruments-framepay .rebilly-framepay.rebilly-framepay-focus {
12
+ background: var(--rebilly-inputFocusColorBackground);
13
+ border: var(--rebilly-inputFocusBorder);
14
+ border-radius: var(--rebilly-inputFocusBorderRadius);
15
+ box-shadow: var(--rebilly-inputFocusBoxShadow);
16
+ }
17
+
18
+ .rebilly-instruments-framepay .rebilly-framepay.rebilly-framepay-invalid {
19
+ border-color: var(--rebilly-colorDanger);
20
+ box-shadow: none;
21
+ }
22
+
23
+ .rebilly-instruments-framepay .rebilly-framepay.rebilly-framepay-google-pay {
24
+ min-height: auto;
25
+ border: none;
26
+ margin: 0;
27
+ }
28
+ `;
@@ -0,0 +1,18 @@
1
+ export const postmateStyle = () => `
2
+ .rebilly-instruments-iframe {
3
+ border: none;
4
+ width: 100%;
5
+ padding: 0;
6
+ min-height: var(--rebilly-spacings-form-element-min-height);
7
+ }
8
+
9
+ .rebilly-instruments-iframe-overlay {
10
+ top: -2px;
11
+ left: -2px;
12
+ width: calc(100vw + 2px);
13
+ height: 100vh;
14
+ min-height: calc(100vh + 4px);
15
+ position: fixed;
16
+ z-index: 99999999999999;
17
+ }
18
+ `;
@@ -0,0 +1,26 @@
1
+ // -----------------------------------------------------------------------------
2
+ // This file contains all styles related to the confirmation view.
3
+ // -----------------------------------------------------------------------------
4
+ export const confirmation = () => `
5
+ /**
6
+ * Confirmation
7
+ */
8
+ .rebilly-instruments-confirmation {
9
+ padding: 2px;
10
+ }
11
+
12
+ .rebilly-instruments-confirmation-go-back-link {
13
+ display: inline-block;
14
+ margin-bottom: var(--rebilly-spacings-base);
15
+ margin-left: calc(var(--rebilly-spacings-xs) * -1);
16
+ }
17
+
18
+ .rebilly-instruments-confirmation-address-title {
19
+ display: flex;
20
+ justify-content: flex-start;
21
+ }
22
+
23
+ .rebilly-instruments-confirmation-address-title .rebilly-instruments-link {
24
+ margin-left: var(--rebilly-spacings-s);
25
+ }
26
+ `;
@@ -0,0 +1,16 @@
1
+ import { summary } from './summary';
2
+ import { methodSelector } from './method-selector';
3
+ import { confirmation } from './confirmation';
4
+ import { result } from './result';
5
+ import { modal } from './modal';
6
+
7
+ // Order of components matters for style cascade
8
+ export const views = (theme) => `
9
+ /* Views
10
+ ------------------------------------------------------------ */
11
+ ${summary(theme)}
12
+ ${methodSelector(theme)}
13
+ ${confirmation(theme)}
14
+ ${result(theme)}
15
+ ${modal(theme)}
16
+ `;
@@ -0,0 +1,11 @@
1
+ // -----------------------------------------------------------------------------
2
+ // This file contains all styles related to the selector view.
3
+ // -----------------------------------------------------------------------------
4
+ export const methodSelector = () => `
5
+ /**
6
+ * Method selector
7
+ */
8
+ .rebilly-instruments-method-selector.has-express-compact {
9
+ padding-top: var(--rebilly-spacings-s);
10
+ }
11
+ `;
@@ -0,0 +1,91 @@
1
+ // -----------------------------------------------------------------------------
2
+ // This file contains all styles related to the modal view.
3
+ // -----------------------------------------------------------------------------
4
+ export const modal = () => `
5
+ /**
6
+ * Modal
7
+ */
8
+
9
+ .rebilly-instruments-modal-overlay {
10
+ position: fixed;
11
+ top: 0;
12
+ left: 0;
13
+ overflow-x: hidden;
14
+ overflow-y: auto;
15
+ z-index: 1055;
16
+ padding: 30px;
17
+ width: 100%;
18
+ height: 100%;
19
+ margin: 0;
20
+ padding: 0;
21
+ transition: all 0.12s ease-in-out;
22
+ background-color: rgba(0,0,0,0.7);
23
+ opacity: 0
24
+ }
25
+
26
+ .rebilly-instruments-modal-overlay.is-visible {
27
+ opacity: 1;
28
+ }
29
+
30
+ .rebilly-instruments-modal-container {
31
+ transition: all .24s ease-in-out;
32
+ position: relative;
33
+ max-width: 800px;
34
+ background: var(--rebilly-colorBackground);
35
+ margin: 50px auto 20px;
36
+ box-shadow: 0 19px 38px rgba(0,0,0,0.20), 0 15px 12px rgba(0,0,0,0.12);
37
+ border-radius: 4px;
38
+ transform: translateY(-50px);
39
+ opacity: 0;
40
+ }
41
+
42
+ .rebilly-instruments-modal-container.is-visible {
43
+ transform: translateY(0);
44
+ opacity: 1;
45
+ }
46
+
47
+ .rebilly-instruments-modal-container.is-redirect {
48
+ max-width: 60vw;
49
+ width: auto;
50
+ }
51
+
52
+ .rebilly-instruments-modal-content {
53
+ transition: all .15s;
54
+ padding: 20px;
55
+ overflow: hidden;
56
+ background-color: var(--rebilly-colorBackground);
57
+ text-align: center;
58
+ border-radius: 4px;
59
+ }
60
+
61
+ .rebilly-instruments-modal-content .rebilly-instruments-iframe {
62
+ transition: all .15s;
63
+ height: auto;
64
+ min-height: 360px;
65
+ }
66
+
67
+ .rebilly-instruments-modal-container.is-redirect .rebilly-instruments-modal-content {
68
+ padding: 0;
69
+ }
70
+
71
+ .rebilly-instruments-modal-close {
72
+ position: absolute;
73
+ width: 30px;
74
+ height: 30px;
75
+ top: -40px;
76
+ right: 0;
77
+ fill: #FFF;
78
+ cursor: pointer;
79
+ }
80
+
81
+ .rebilly-instruments-modal-close:hover{
82
+ color: #000;
83
+ }
84
+
85
+ @media screen and (max-width: 480px) {
86
+ .rebilly-instruments-modal-container.is-redirect {
87
+ max-width: 96vw;
88
+ margin: 20px auto 20px;
89
+ }
90
+ }
91
+ `;
@@ -0,0 +1,52 @@
1
+ // -----------------------------------------------------------------------------
2
+ // This file contains all styles related to the result view.
3
+ // -----------------------------------------------------------------------------
4
+ export const result = () => `
5
+ /**
6
+ * Result
7
+ */
8
+ .rebilly-instruments-results .rebilly-instruments-h1 {
9
+ text-align: center;
10
+ margin: 0;
11
+ }
12
+
13
+ .rebilly-instruments-results-icon {
14
+ width: 160px;
15
+ margin: 0 auto var(--rebilly-spacings-base) auto;
16
+ display: block;
17
+ }
18
+
19
+ .rebilly-instruments-results-icon g {
20
+ stroke: var(--rebilly-colorPrimary);
21
+ }
22
+
23
+ .rebilly-instruments-results-icon.is-error g {
24
+ stroke: var(--rebilly-colorDanger);
25
+ }
26
+
27
+ .rebilly-instruments-results-icon path {
28
+ stroke-linecap: round;
29
+ stroke-linejoin: round;
30
+ }
31
+
32
+ .rebilly-instruments-results-icon path.circle {
33
+ stroke-dasharray: 350;
34
+ stroke-dashoffset: 0;
35
+ animation: 0.6s cubic-bezier(1.0, 0.5, 0.8, 1.0) 1 rebillyDashResultIcon;
36
+ }
37
+
38
+ .rebilly-instruments-results-icon path.mark {
39
+ stroke-dasharray: 350;
40
+ stroke-dashoffset: 0;
41
+ animation: 1s cubic-bezier(1.0, 0.5, 0.8, 1.0) 1 rebillyDashResultIcon;
42
+ }
43
+
44
+ @keyframes rebillyDashResultIcon {
45
+ from {
46
+ stroke-dashoffset: 350;
47
+ }
48
+ to {
49
+ stroke-dashoffset: 0;
50
+ }
51
+ }
52
+ `;
@@ -0,0 +1,118 @@
1
+ // -----------------------------------------------------------------------------
2
+ // This file contains all styles related to the summary view.
3
+ // -----------------------------------------------------------------------------
4
+ export const summary = () => `
5
+ /**
6
+ * Summary
7
+ */
8
+ .rebilly-instruments-summary-line-item {
9
+ border-bottom: 1px solid var(--rebilly-colorMutedBorder);
10
+ padding: var(--rebilly-spacings-s) 0;
11
+ display: flex;
12
+ align-items: center;
13
+ position: relative;
14
+ }
15
+
16
+ .rebilly-instruments-summary-line-item:first-child {
17
+ padding-top: 0;
18
+ }
19
+
20
+ .rebilly-instruments-summary-line-item-figure {
21
+ margin: 0 var(--rebilly-spacings-s) 0 0;
22
+ flex: 0 0 auto;
23
+ width: 48px;
24
+ height: 48px;
25
+ border-radius: var(--rebilly-borderRadius);
26
+ border: 1px solid var(--rebilly-colorMutedBorder);
27
+ overflow: hidden;
28
+ }
29
+
30
+ .rebilly-instruments-summary-line-item-figure img {
31
+ width: 100%;
32
+ }
33
+
34
+ .rebilly-instruments-summary-line-item-synopsis {
35
+ flex: 1 2 auto;
36
+ }
37
+
38
+ .rebilly-instruments-summary-line-item-synopsis-title {
39
+ margin: 0;
40
+ font-weight: 500;
41
+ }
42
+
43
+ .rebilly-instruments-summary-line-item-synopsis-description {
44
+ color: var(--rebilly-colorMutedText);
45
+ margin: 0;
46
+ font-size: calc(var(--rebilly-fontSizeBase) * 0.875);
47
+ line-height: 1;
48
+ }
49
+
50
+ .rebilly-instruments-summary-line-item-price-breakdown {
51
+ display: flex;
52
+ justify-content: center;
53
+ align-items: center;
54
+ color: var(--rebilly-colorMutedText);
55
+ margin: 0 0 0 var(--rebilly-spacings-s);
56
+ }
57
+
58
+ .rebilly-instruments-summary-line-item-price-breakdown .rebilly-instruments-icon {
59
+ fill: var(--rebilly-colorMutedText);
60
+ }
61
+
62
+ .rebilly-instruments-summary-line-item-price-breakdown-unit-price {
63
+ color: var(--rebilly-colorText);
64
+ }
65
+
66
+ .rebilly-instruments-summary-breakdown table {
67
+ width: 100%;
68
+ margin: var(--rebilly-spacings-xs) 0;
69
+ color: inherit;
70
+ }
71
+
72
+ .rebilly-instruments-summary-breakdown table colgroup col:first-child {
73
+ width: 85%;
74
+ }
75
+
76
+ .rebilly-instruments-summary-breakdown table colgroup col {
77
+ width: 15%;
78
+ }
79
+
80
+ .rebilly-instruments-summary-breakdown table tr td {
81
+ text-align: right;
82
+ }
83
+
84
+ .rebilly-instruments-summary-breakdown table tr td:first-child {
85
+ padding-right: var(--rebilly-spacings-s);
86
+ font-weight: 500;
87
+ }
88
+
89
+ .rebilly-instruments-summary-breakdown table {
90
+ border-bottom: 1px solid var(--rebilly-colorMutedBorder);
91
+ padding-bottom: var(--rebilly-spacings-xs);
92
+ }
93
+
94
+ .rebilly-instruments-summary-breakdown-total {
95
+ padding-top: var(--rebilly-spacings-xs);
96
+ display: flex;
97
+ align-items: center;
98
+ }
99
+
100
+ .rebilly-instruments-summary-breakdown-total p {
101
+ margin: var(--rebilly-spacings-s) 0;
102
+ }
103
+
104
+ .rebilly-instruments-summary-breakdown-total-amount {
105
+ flex: 1 2 80%;
106
+ font-size: calc(var(--rebilly-fontSizeBase) * 1.5);
107
+ font-weight: 500;
108
+ text-align: right;
109
+ font-weight: bold;
110
+ }
111
+
112
+ .rebilly-instruments-summary-breakdown-total-amount-currency {
113
+ font-size: var(--rebilly-fontSizeBase);
114
+ font-weight: normal;
115
+ color: var(--rebilly-colorMutedText);
116
+ margin-right: var(--rebilly-spacings-s);
117
+ }
118
+ `;
@@ -0,0 +1,246 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Summary component should render the summary correctly 1`] = `
4
+ <div
5
+ class="rebilly-instruments-summary-line-items"
6
+ >
7
+
8
+
9
+ <div
10
+ class="rebilly-instruments-summary-line-item"
11
+ >
12
+
13
+
14
+
15
+ <div
16
+ class="rebilly-instruments-summary-line-item-synopsis"
17
+ >
18
+
19
+
20
+ <p
21
+ class="rebilly-instruments-summary-line-item-synopsis-title"
22
+ >
23
+ My Awesome Product
24
+ </p>
25
+
26
+
27
+
28
+ <p
29
+ class="rebilly-instruments-summary-line-item-synopsis-description"
30
+ >
31
+ My Awesome Product
32
+ </p>
33
+
34
+
35
+
36
+ </div>
37
+
38
+
39
+ <div
40
+ class="rebilly-instruments-summary-line-item-price-breakdown"
41
+ >
42
+
43
+
44
+ <p
45
+ class="rebilly-instruments-summary-line-item-price-breakdown-quantity"
46
+ >
47
+ 1
48
+ </p>
49
+
50
+
51
+ <svg
52
+ class="rebilly-instruments-icon"
53
+ viewBox="0 0 24 24"
54
+ xmlns="http://www.w3.org/2000/svg"
55
+ >
56
+
57
+
58
+ <path
59
+ d="M12 10.5858l2.8284-2.8284c.3906-.3906 1.0237-.3906 1.4142 0 .3906.3905.3906 1.0236 0 1.4142L13.4142 12l2.8284 2.8284c.3906.3906.3906 1.0237 0 1.4142-.3905.3906-1.0236.3906-1.4142 0L12 13.4142l-2.8284 2.8284c-.3906.3906-1.0237.3906-1.4142 0-.3906-.3905-.3906-1.0236 0-1.4142L10.5858 12 7.7574 9.1716c-.3906-.3906-.3906-1.0237 0-1.4142.3905-.3906 1.0236-.3906 1.4142 0L12 10.5858z"
60
+ fill-rule="nonzero"
61
+ />
62
+
63
+
64
+ </svg>
65
+
66
+
67
+ <p
68
+ class="rebilly-instruments-summary-line-item-price-breakdown-unit-price"
69
+ >
70
+ $30.00
71
+ </p>
72
+
73
+
74
+ </div>
75
+
76
+
77
+ </div>
78
+
79
+
80
+
81
+
82
+ <div
83
+ class="rebilly-instruments-summary-line-item"
84
+ >
85
+
86
+
87
+
88
+ <div
89
+ class="rebilly-instruments-summary-line-item-synopsis"
90
+ >
91
+
92
+
93
+ <p
94
+ class="rebilly-instruments-summary-line-item-synopsis-title"
95
+ >
96
+ My Awesome T-Shirt
97
+ </p>
98
+
99
+
100
+
101
+ <p
102
+ class="rebilly-instruments-summary-line-item-synopsis-description"
103
+ >
104
+ Awesome T-Shirt
105
+ </p>
106
+
107
+
108
+
109
+ </div>
110
+
111
+
112
+ <div
113
+ class="rebilly-instruments-summary-line-item-price-breakdown"
114
+ >
115
+
116
+
117
+ <p
118
+ class="rebilly-instruments-summary-line-item-price-breakdown-quantity"
119
+ >
120
+ 2
121
+ </p>
122
+
123
+
124
+ <svg
125
+ class="rebilly-instruments-icon"
126
+ viewBox="0 0 24 24"
127
+ xmlns="http://www.w3.org/2000/svg"
128
+ >
129
+
130
+
131
+ <path
132
+ d="M12 10.5858l2.8284-2.8284c.3906-.3906 1.0237-.3906 1.4142 0 .3906.3905.3906 1.0236 0 1.4142L13.4142 12l2.8284 2.8284c.3906.3906.3906 1.0237 0 1.4142-.3905.3906-1.0236.3906-1.4142 0L12 13.4142l-2.8284 2.8284c-.3906.3906-1.0237.3906-1.4142 0-.3906-.3905-.3906-1.0236 0-1.4142L10.5858 12 7.7574 9.1716c-.3906-.3906-.3906-1.0237 0-1.4142.3905-.3906 1.0236-.3906 1.4142 0L12 10.5858z"
133
+ fill-rule="nonzero"
134
+ />
135
+
136
+
137
+ </svg>
138
+
139
+
140
+ <p
141
+ class="rebilly-instruments-summary-line-item-price-breakdown-unit-price"
142
+ >
143
+ $20.00
144
+ </p>
145
+
146
+
147
+ </div>
148
+
149
+
150
+ </div>
151
+
152
+
153
+ </div>
154
+ `;
155
+
156
+ exports[`Summary component should render the summary correctly 2`] = `
157
+ <div
158
+ class="rebilly-instruments-summary-breakdown"
159
+ >
160
+ <table>
161
+
162
+
163
+ <colgroup>
164
+
165
+
166
+ <col />
167
+
168
+
169
+ <col />
170
+
171
+
172
+ </colgroup>
173
+
174
+
175
+ <tr
176
+ class="rebilly-instruments-summary-breakdown-sub-total"
177
+ >
178
+
179
+
180
+ <td
181
+ data-rebilly-i18n="summary.subTotal"
182
+ >
183
+ Sub Total
184
+ </td>
185
+
186
+
187
+ <td>
188
+ $70.00
189
+ </td>
190
+
191
+
192
+ </tr>
193
+ <tr
194
+ class="rebilly-instruments-summary-breakdown-taxes"
195
+ >
196
+
197
+
198
+ <td
199
+ data-rebilly-i18n="summary.taxes"
200
+ >
201
+ Taxes
202
+ </td>
203
+
204
+
205
+ <td>
206
+ $0.00
207
+ </td>
208
+
209
+
210
+ </tr>
211
+ </table>
212
+ <div
213
+ class="rebilly-instruments-summary-breakdown-total"
214
+ >
215
+
216
+
217
+ <p
218
+ data-rebilly-i18n="summary.total"
219
+ >
220
+ Total
221
+ </p>
222
+
223
+
224
+ <p
225
+ class="rebilly-instruments-summary-breakdown-total-amount"
226
+ >
227
+
228
+
229
+ <span
230
+ class="rebilly-instruments-summary-breakdown-total-amount-currency"
231
+ >
232
+
233
+ USD
234
+
235
+ </span>
236
+
237
+ $70.00
238
+
239
+ </p>
240
+ <p>
241
+
242
+
243
+ </p>
244
+ </div>
245
+ </div>
246
+ `;