@economist/web-apple-pay 1.8.0 → 1.8.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.
@@ -66,13 +66,12 @@ function formatPrice(price, currencyCode, shouldFixDecimalPlaces = true, roundUp
66
66
  // src/apple-pay-logo.ts
67
67
  var LOGO_DEFS_ID = "apple-pay-logo-defs";
68
68
  var LOGO_PATH = "M10.2651 4.21143C10.4299 4.21143 10.7106 4.23763 11.1074 4.29004C11.5042 4.34245 11.9385 4.49219 12.4102 4.73926C12.8893 4.97884 13.3236 5.37939 13.7129 5.94092C13.6904 5.96338 13.5819 6.04574 13.3872 6.18799C13.1925 6.32275 12.9754 6.5249 12.7358 6.79443C12.4963 7.05648 12.2866 7.39339 12.1069 7.80518C11.9272 8.20947 11.8374 8.69238 11.8374 9.25391C11.8374 9.89779 11.9497 10.4443 12.1743 10.8936C12.4064 11.3428 12.6722 11.7059 12.9717 11.9829C13.2786 12.2524 13.5482 12.4508 13.7803 12.5781C14.0199 12.7054 14.1471 12.7728 14.1621 12.7803C14.1546 12.8102 14.0573 13.076 13.8701 13.5776C13.6904 14.0793 13.391 14.637 12.9717 15.251C12.6048 15.7826 12.208 16.2729 11.7812 16.7222C11.362 17.1714 10.8566 17.396 10.2651 17.396C9.86833 17.396 9.54264 17.3398 9.28809 17.2275C9.03353 17.1077 8.77148 16.9917 8.50195 16.8794C8.23242 16.7596 7.8693 16.6997 7.4126 16.6997C6.97087 16.6997 6.60026 16.7596 6.30078 16.8794C6.00879 16.9992 5.72803 17.119 5.4585 17.2388C5.19645 17.3586 4.88574 17.4185 4.52637 17.4185C3.97982 17.4185 3.50065 17.2013 3.08887 16.7671C2.67708 16.3328 2.25407 15.8125 1.81982 15.2061C1.3182 14.4873 0.887695 13.6113 0.52832 12.5781C0.176432 11.5374 0.000488281 10.4893 0.000488281 9.43359C0.000488281 8.30306 0.213867 7.35596 0.640625 6.59229C1.06738 5.82113 1.61393 5.24089 2.28027 4.85156C2.9541 4.45475 3.65039 4.25635 4.36914 4.25635C4.75098 4.25635 5.11035 4.31999 5.44727 4.44727C5.78418 4.56706 6.09863 4.69059 6.39062 4.81787C6.6901 4.94515 6.95964 5.00879 7.19922 5.00879C7.43132 5.00879 7.70085 4.94141 8.00781 4.80664C8.31478 4.67188 8.65918 4.54085 9.04102 4.41357C9.42285 4.27881 9.83089 4.21143 10.2651 4.21143ZM9.64746 2.78516C9.35547 3.13704 8.98861 3.43278 8.54688 3.67236C8.10514 3.90446 7.68587 4.02051 7.28906 4.02051C7.20671 4.02051 7.12809 4.01302 7.05322 3.99805C7.04574 3.97559 7.03825 3.93441 7.03076 3.87451C7.02327 3.81462 7.01953 3.75098 7.01953 3.68359C7.01953 3.23438 7.11686 2.80013 7.31152 2.38086C7.50618 1.9541 7.72705 1.60221 7.97412 1.3252C8.28857 0.950846 8.68538 0.640137 9.16455 0.393066C9.64372 0.145996 10.1004 0.014974 10.5347 0C10.5571 0.0973307 10.5684 0.213379 10.5684 0.348145C10.5684 0.797363 10.4823 1.23535 10.3101 1.66211C10.1379 2.08138 9.91699 2.45573 9.64746 2.78516ZM17.6885 11.5112V9.71436H22.0459C23.2064 9.71436 24.1048 9.41488 24.7412 8.81592C25.3776 8.20947 25.6958 7.37467 25.6958 6.31152V6.28906C25.6958 5.21842 25.3776 4.38363 24.7412 3.78467C24.1048 3.18571 23.2064 2.88623 22.0459 2.88623H17.6885V1.08936H22.5625C23.5807 1.08936 24.4792 1.30648 25.2578 1.74072C26.0365 2.17497 26.6466 2.78141 27.0884 3.56006C27.5376 4.3387 27.7622 5.24089 27.7622 6.2666V6.28906C27.7622 7.31478 27.5376 8.2207 27.0884 9.00684C26.6466 9.79297 26.0365 10.4069 25.2578 10.8486C24.4792 11.2904 23.5807 11.5112 22.5625 11.5112H17.6885ZM16.6777 17.2949V1.08936H18.6992V17.2949H16.6777ZM32.6699 17.5195C31.9062 17.5195 31.2249 17.3735 30.626 17.0815C30.0345 16.7896 29.5703 16.3778 29.2334 15.8462C28.904 15.3071 28.7393 14.682 28.7393 13.9707V13.9482C28.7393 13.2594 28.9077 12.668 29.2446 12.1738C29.5815 11.6797 30.0682 11.2904 30.7046 11.0059C31.3485 10.7139 32.1234 10.5417 33.0293 10.4893L37.3979 10.2422V11.7695L33.2539 12.0278C32.4303 12.0728 31.8052 12.2599 31.3784 12.5894C30.9517 12.9188 30.7383 13.3643 30.7383 13.9258V13.9482C30.7383 14.5322 30.9554 14.9927 31.3896 15.3296C31.8239 15.659 32.3929 15.8237 33.0967 15.8237C33.7331 15.8237 34.2983 15.6927 34.7925 15.4307C35.2941 15.1686 35.6909 14.813 35.9829 14.3638C36.2749 13.9071 36.4209 13.3979 36.4209 12.8364V9.27637C36.4209 8.55762 36.1963 7.99609 35.7471 7.5918C35.2979 7.1875 34.6502 6.98535 33.8042 6.98535C33.063 6.98535 32.4603 7.13883 31.9961 7.4458C31.5394 7.74528 31.2474 8.14958 31.1201 8.65869L31.0977 8.7373H29.1885L29.1997 8.625C29.2746 7.98861 29.5067 7.41585 29.896 6.90674C30.2928 6.39762 30.8244 5.99707 31.4907 5.70508C32.1646 5.4056 32.9469 5.25586 33.8379 5.25586C34.7812 5.25586 35.5898 5.41683 36.2637 5.73877C36.945 6.05322 37.4653 6.50244 37.8247 7.08643C38.1916 7.66292 38.375 8.35173 38.375 9.15283V17.2949H36.4209V15.4307H36.3311C36.0915 15.8574 35.7845 16.228 35.4102 16.5425C35.0433 16.8569 34.6278 17.1003 34.1636 17.2725C33.6994 17.4372 33.2015 17.5195 32.6699 17.5195ZM42.1484 21.3267C41.9837 21.3267 41.8115 21.3192 41.6318 21.3042C41.4521 21.2892 41.2987 21.2705 41.1714 21.248V19.6421C41.2612 19.6646 41.366 19.6795 41.4858 19.687C41.6056 19.702 41.7292 19.7095 41.8564 19.7095C42.4554 19.7095 42.9383 19.5897 43.3052 19.3501C43.672 19.1105 43.9678 18.6576 44.1924 17.9912L44.4282 17.3062L40.0371 5.48047H42.126L45.6187 15.981L45.0796 15.2734H45.7759L45.248 15.981L48.7407 5.48047H50.7959L46.1802 18.0249C45.8807 18.826 45.555 19.4661 45.2031 19.9453C44.8512 20.432 44.432 20.7839 43.9453 21.001C43.4587 21.2181 42.8597 21.3267 42.1484 21.3267Z";
69
- var APPLE_LOGO_PATH = LOGO_PATH.slice(0, LOGO_PATH.indexOf("M17.6885"));
70
69
  function ensureApplePayLogoSymbol() {
71
70
  if (document.getElementById(LOGO_DEFS_ID)) {
72
71
  return;
73
72
  }
74
73
  const tmp = document.createElement("div");
75
- tmp.innerHTML = `<svg aria-hidden="true" style="display:none" id="${LOGO_DEFS_ID}"><defs><symbol id="apple-pay-logo" viewBox="0 0 51 22"><path d="${LOGO_PATH}" fill="currentColor"/></symbol><symbol id="apple-logo" viewBox="0 0 15 18"><path d="${APPLE_LOGO_PATH}" fill="currentColor"/></symbol></defs></svg>`;
74
+ tmp.innerHTML = `<svg aria-hidden="true" style="display:none" id="${LOGO_DEFS_ID}"><defs><symbol id="apple-pay-logo" viewBox="0 0 51 22"><path d="${LOGO_PATH}" fill="currentColor"/></symbol></defs></svg>`;
76
75
  document.body.prepend(tmp.firstElementChild);
77
76
  }
78
77
 
@@ -609,13 +608,8 @@ var getRecaptchaToken = async (action) => {
609
608
  });
610
609
  });
611
610
  };
612
- var getPurchaseRecaptchaTokens = async () => {
613
- const [checkEligibility, newBasket, registerUser] = await Promise.all([
614
- getRecaptchaToken("checkEligibility"),
615
- getRecaptchaToken("newBasket"),
616
- getRecaptchaToken("registerUser")
617
- ]);
618
- return { checkEligibility, newBasket, registerUser };
611
+ var getPurchaseRecaptchaToken = () => {
612
+ return getRecaptchaToken("walletPurchase");
619
613
  };
620
614
 
621
615
  // src/apple-pay-modal.ts
@@ -843,7 +837,7 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
843
837
  #isClosed = false;
844
838
  /**
845
839
  * Callback invoked synchronously from the CTA click handler.
846
- * Receives a Promise of reCAPTCHA tokens — the promise is already in-flight
840
+ * Receives a Promise of a reCAPTCHA token — the promise is already in-flight
847
841
  * by the time this is called. The caller (ApplePayButton) must call
848
842
  * new ApplePaySession() synchronously inside this callback to stay within
849
843
  * Safari's user-gesture window. The token promise resolves before
@@ -955,12 +949,12 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
955
949
  this.querySelector('[role="alert"]:not(#apple-pay-modal-error)')?.remove();
956
950
  cta.disabled = true;
957
951
  cta.setAttribute("aria-busy", "true");
958
- const recaptchaTokensPromise = getPurchaseRecaptchaTokens();
952
+ const recaptchaTokenPromise = getPurchaseRecaptchaToken();
959
953
  if (!this.#isClosed && this.onConfirm) {
960
- this.onConfirm(recaptchaTokensPromise);
954
+ this.onConfirm(recaptchaTokenPromise);
961
955
  this.close();
962
956
  }
963
- recaptchaTokensPromise.catch(() => {
957
+ recaptchaTokenPromise.catch(() => {
964
958
  if (this.#isClosed) return;
965
959
  cta.disabled = false;
966
960
  cta.removeAttribute("aria-busy");
@@ -1016,26 +1010,10 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
1016
1010
  // src/templates/apple-pay-button.template.html
1017
1011
  var apple_pay_button_template_default = `<style>
1018
1012
  /*
1019
- * Entry CTA only: \u201CSubscribe with [apple logo] Apple Pay\u201D.
1020
- * Uses OS SF Pro via local() (no Marber). Modal styling is unchanged.
1013
+ * Entry CTA: \u201CSubscribe with\u201D + Apple Pay wordmark (Figma 1118:14088).
1014
+ * \u201CSubscribe with\u201D matches Continue to checkout typography (EconomistSans Regular / 17 / 24 / 400).
1021
1015
  */
1022
- @font-face {
1023
- font-family: 'WAP Apple Pay Text';
1024
- src:
1025
- local('SF Pro Text Light'),
1026
- local('SFProText-Light'),
1027
- local('SF Pro Text'),
1028
- local('SFProText-Regular'),
1029
- local('-apple-system'),
1030
- local('BlinkMacSystemFont'),
1031
- local('Helvetica Neue');
1032
- font-weight: 300;
1033
- font-style: normal;
1034
- font-display: swap;
1035
- }
1036
-
1037
1016
  teg-apple-pay-button {
1038
- --wap-apple-pay-scale: 1.375; /* default height 44px / 32 */
1039
1017
  display: block;
1040
1018
  margin: var(--apple-pay-margin, 0);
1041
1019
  width: 100%;
@@ -1051,44 +1029,53 @@ var apple_pay_button_template_default = `<style>
1051
1029
  }
1052
1030
 
1053
1031
  teg-apple-pay-button .apple-pay-btn {
1054
- display: inline-flex;
1032
+ display: flex;
1055
1033
  align-items: center;
1056
1034
  justify-content: center;
1057
1035
  width: 100%;
1058
1036
  min-width: 0;
1059
1037
  height: 100%;
1060
- min-height: var(--apple-pay-height, 2.75rem);
1061
- padding: 0 calc(8px * var(--wap-apple-pay-scale));
1038
+ min-height: var(--apple-pay-height, 2.5rem);
1039
+ padding: 0;
1062
1040
  box-sizing: border-box;
1063
- background-color: var(--apple-pay-background-color, #000);
1041
+ background-color: var(--apple-pay-background-color, #1a1a1a);
1064
1042
  color: var(--apple-pay-foreground-color, #fff);
1065
1043
  border: none;
1066
- border-radius: var(--apple-pay-border-radius, 5px);
1044
+ border-radius: var(--apple-pay-border-radius, 0.25rem);
1067
1045
  cursor: pointer;
1068
- font-family: 'WAP Apple Pay Text', -apple-system, BlinkMacSystemFont,
1069
- 'SF Pro Text', 'Helvetica Neue', Helvetica, Arial, sans-serif;
1070
- font-size: calc(12px * var(--wap-apple-pay-scale));
1071
- font-weight: 300;
1072
- font-style: normal;
1046
+ /* Same as wall Continue to checkout / Marber button large */
1047
+ font-family: var(
1048
+ --mb-typeface-sans,
1049
+ var(--wall-type-system-sans, 'EconomistSans', system-ui, sans-serif)
1050
+ );
1051
+ font-size: var(--mb-button-font-size, 1.0625rem);
1052
+ font-weight: var(--mb-font-weight-regular, 400);
1073
1053
  line-height: 1;
1074
- letter-spacing: -0.01em;
1075
- -webkit-font-smoothing: antialiased;
1076
- -moz-osx-font-smoothing: grayscale;
1077
1054
  }
1078
1055
 
1079
1056
  teg-apple-pay-button .apple-pay-btn__label {
1080
1057
  display: inline-flex;
1081
1058
  align-items: center;
1082
- gap: calc(4px * var(--wap-apple-pay-scale));
1059
+ /* No flex gap \u2014 spacing after \u201Cwith\u201D uses the same word-space as \u201CSubscribe with\u201D */
1060
+ gap: 0;
1083
1061
  white-space: nowrap;
1084
1062
  }
1085
1063
 
1086
- teg-apple-pay-button .apple-pay-btn__apple-logo {
1064
+ teg-apple-pay-button .apple-pay-btn__caption {
1065
+ /* One typographic word space after \u201Cwith\u201D, matching Subscribe\u2194with */
1066
+ padding-right: 0.25em;
1067
+ }
1068
+
1069
+ teg-apple-pay-button .apple-pay-btn__logo {
1087
1070
  flex-shrink: 0;
1088
1071
  display: block;
1089
- width: calc(12px * var(--wap-apple-pay-scale));
1090
- height: calc(14px * var(--wap-apple-pay-scale));
1072
+ /* Match caption font-size so mark aligns with text metrics */
1073
+ height: 1.05em;
1074
+ width: auto;
1075
+ aspect-ratio: 51 / 22;
1091
1076
  color: currentColor;
1077
+ /* Optical nudge \u2014 SVG viewBox sits slightly high vs EconomistSans caps */
1078
+ transform: translateY(0.06em);
1092
1079
  }
1093
1080
 
1094
1081
  teg-apple-pay-button .apple-pay-btn.wap-loading {
@@ -1134,20 +1121,19 @@ var apple_pay_button_template_default = `<style>
1134
1121
  aria-label="Subscribe with Apple Pay"
1135
1122
  data-analytics="paywall:apple-pay-checkout"
1136
1123
  >
1137
- <span class="apple-pay-btn__label">
1138
- Subscribe with
1139
- <svg
1140
- class="apple-pay-btn__apple-logo"
1141
- width="17"
1142
- height="19"
1143
- viewBox="0 0 15 18"
1124
+ <span class="apple-pay-btn__label"
1125
+ ><span class="apple-pay-btn__caption">Subscribe with</span
1126
+ ><svg
1127
+ class="apple-pay-btn__logo"
1128
+ width="42"
1129
+ height="18"
1130
+ viewBox="0 0 51 22"
1144
1131
  aria-hidden="true"
1145
1132
  role="img"
1146
1133
  >
1147
- <use href="#apple-logo" />
1148
- </svg>
1149
- Apple Pay
1150
- </span>
1134
+ <use href="#apple-pay-logo" />
1135
+ </svg
1136
+ ></span>
1151
1137
  <span class="apple-pay-btn__loading" aria-hidden="true">Loading...</span>
1152
1138
  </button>
1153
1139
  </div>
@@ -1663,7 +1649,7 @@ async function handlePaymentAuthorized(event, session, sessionData, config) {
1663
1649
  ...event.payment.shippingContact && {
1664
1650
  shippingContact: event.payment.shippingContact
1665
1651
  },
1666
- recaptchaTokens: config.recaptchaTokens
1652
+ recaptchaToken: config.recaptchaToken
1667
1653
  });
1668
1654
  trackWalletPaymentSuccess(skuId, result.basketId);
1669
1655
  session.completePayment({ status: ApplePaySession.STATUS_SUCCESS });
@@ -2213,8 +2199,8 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2213
2199
  }
2214
2200
  const skuId = this.#offer.sku_id;
2215
2201
  const country = this.#country;
2216
- modal.onConfirm = (recaptchaTokensPromise) => {
2217
- this.#initiateApplePay(skuId, country, recaptchaTokensPromise);
2202
+ modal.onConfirm = (recaptchaTokenPromise) => {
2203
+ this.#initiateApplePay(skuId, country, recaptchaTokenPromise);
2218
2204
  };
2219
2205
  modal.open();
2220
2206
  }
@@ -2237,7 +2223,7 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2237
2223
  return null;
2238
2224
  }
2239
2225
  }
2240
- #buildSessionParams(skuId, country, sessionData, paymentOptions, recaptchaTokensPromise) {
2226
+ #buildSessionParams(skuId, country, sessionData, paymentOptions, recaptchaTokenPromise) {
2241
2227
  const offer = this.#offer;
2242
2228
  const totalAmount = offer.price?.purchase ? `${offer.price.purchase}` : DEFAULT_TOTAL;
2243
2229
  return {
@@ -2250,19 +2236,19 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2250
2236
  returnUrl: this.#returnUrl,
2251
2237
  userLoggedIn: sessionData.loggedIn,
2252
2238
  onPaymentAuthorized: async (event, session) => {
2253
- const recaptchaTokens = await recaptchaTokensPromise;
2239
+ const recaptchaToken = await recaptchaTokenPromise;
2254
2240
  return handlePaymentAuthorized(event, session, sessionData, {
2255
2241
  skuId,
2256
2242
  country,
2257
2243
  currency: offer.price?.currency_code ?? DEFAULT_CURRENCY,
2258
2244
  returnUrl: this.#returnUrl,
2259
2245
  supportedBillingCountries: this.#supportedBillingCountries,
2260
- recaptchaTokens
2246
+ recaptchaToken
2261
2247
  });
2262
2248
  }
2263
2249
  };
2264
2250
  }
2265
- #initiateApplePay(skuId, country, recaptchaTokensPromise) {
2251
+ #initiateApplePay(skuId, country, recaptchaTokenPromise) {
2266
2252
  try {
2267
2253
  const sessionData = this.#sessionData ?? _ApplePayButton.#ANONYMOUS_SESSION;
2268
2254
  const paymentOptions = this.#paymentOptions;
@@ -2275,7 +2261,7 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2275
2261
  country,
2276
2262
  sessionData,
2277
2263
  paymentOptions,
2278
- recaptchaTokensPromise
2264
+ recaptchaTokenPromise
2279
2265
  )
2280
2266
  );
2281
2267
  } catch {
@@ -1,13 +1,12 @@
1
1
  // src/apple-pay-logo.ts
2
2
  var LOGO_DEFS_ID = "apple-pay-logo-defs";
3
3
  var LOGO_PATH = "M10.2651 4.21143C10.4299 4.21143 10.7106 4.23763 11.1074 4.29004C11.5042 4.34245 11.9385 4.49219 12.4102 4.73926C12.8893 4.97884 13.3236 5.37939 13.7129 5.94092C13.6904 5.96338 13.5819 6.04574 13.3872 6.18799C13.1925 6.32275 12.9754 6.5249 12.7358 6.79443C12.4963 7.05648 12.2866 7.39339 12.1069 7.80518C11.9272 8.20947 11.8374 8.69238 11.8374 9.25391C11.8374 9.89779 11.9497 10.4443 12.1743 10.8936C12.4064 11.3428 12.6722 11.7059 12.9717 11.9829C13.2786 12.2524 13.5482 12.4508 13.7803 12.5781C14.0199 12.7054 14.1471 12.7728 14.1621 12.7803C14.1546 12.8102 14.0573 13.076 13.8701 13.5776C13.6904 14.0793 13.391 14.637 12.9717 15.251C12.6048 15.7826 12.208 16.2729 11.7812 16.7222C11.362 17.1714 10.8566 17.396 10.2651 17.396C9.86833 17.396 9.54264 17.3398 9.28809 17.2275C9.03353 17.1077 8.77148 16.9917 8.50195 16.8794C8.23242 16.7596 7.8693 16.6997 7.4126 16.6997C6.97087 16.6997 6.60026 16.7596 6.30078 16.8794C6.00879 16.9992 5.72803 17.119 5.4585 17.2388C5.19645 17.3586 4.88574 17.4185 4.52637 17.4185C3.97982 17.4185 3.50065 17.2013 3.08887 16.7671C2.67708 16.3328 2.25407 15.8125 1.81982 15.2061C1.3182 14.4873 0.887695 13.6113 0.52832 12.5781C0.176432 11.5374 0.000488281 10.4893 0.000488281 9.43359C0.000488281 8.30306 0.213867 7.35596 0.640625 6.59229C1.06738 5.82113 1.61393 5.24089 2.28027 4.85156C2.9541 4.45475 3.65039 4.25635 4.36914 4.25635C4.75098 4.25635 5.11035 4.31999 5.44727 4.44727C5.78418 4.56706 6.09863 4.69059 6.39062 4.81787C6.6901 4.94515 6.95964 5.00879 7.19922 5.00879C7.43132 5.00879 7.70085 4.94141 8.00781 4.80664C8.31478 4.67188 8.65918 4.54085 9.04102 4.41357C9.42285 4.27881 9.83089 4.21143 10.2651 4.21143ZM9.64746 2.78516C9.35547 3.13704 8.98861 3.43278 8.54688 3.67236C8.10514 3.90446 7.68587 4.02051 7.28906 4.02051C7.20671 4.02051 7.12809 4.01302 7.05322 3.99805C7.04574 3.97559 7.03825 3.93441 7.03076 3.87451C7.02327 3.81462 7.01953 3.75098 7.01953 3.68359C7.01953 3.23438 7.11686 2.80013 7.31152 2.38086C7.50618 1.9541 7.72705 1.60221 7.97412 1.3252C8.28857 0.950846 8.68538 0.640137 9.16455 0.393066C9.64372 0.145996 10.1004 0.014974 10.5347 0C10.5571 0.0973307 10.5684 0.213379 10.5684 0.348145C10.5684 0.797363 10.4823 1.23535 10.3101 1.66211C10.1379 2.08138 9.91699 2.45573 9.64746 2.78516ZM17.6885 11.5112V9.71436H22.0459C23.2064 9.71436 24.1048 9.41488 24.7412 8.81592C25.3776 8.20947 25.6958 7.37467 25.6958 6.31152V6.28906C25.6958 5.21842 25.3776 4.38363 24.7412 3.78467C24.1048 3.18571 23.2064 2.88623 22.0459 2.88623H17.6885V1.08936H22.5625C23.5807 1.08936 24.4792 1.30648 25.2578 1.74072C26.0365 2.17497 26.6466 2.78141 27.0884 3.56006C27.5376 4.3387 27.7622 5.24089 27.7622 6.2666V6.28906C27.7622 7.31478 27.5376 8.2207 27.0884 9.00684C26.6466 9.79297 26.0365 10.4069 25.2578 10.8486C24.4792 11.2904 23.5807 11.5112 22.5625 11.5112H17.6885ZM16.6777 17.2949V1.08936H18.6992V17.2949H16.6777ZM32.6699 17.5195C31.9062 17.5195 31.2249 17.3735 30.626 17.0815C30.0345 16.7896 29.5703 16.3778 29.2334 15.8462C28.904 15.3071 28.7393 14.682 28.7393 13.9707V13.9482C28.7393 13.2594 28.9077 12.668 29.2446 12.1738C29.5815 11.6797 30.0682 11.2904 30.7046 11.0059C31.3485 10.7139 32.1234 10.5417 33.0293 10.4893L37.3979 10.2422V11.7695L33.2539 12.0278C32.4303 12.0728 31.8052 12.2599 31.3784 12.5894C30.9517 12.9188 30.7383 13.3643 30.7383 13.9258V13.9482C30.7383 14.5322 30.9554 14.9927 31.3896 15.3296C31.8239 15.659 32.3929 15.8237 33.0967 15.8237C33.7331 15.8237 34.2983 15.6927 34.7925 15.4307C35.2941 15.1686 35.6909 14.813 35.9829 14.3638C36.2749 13.9071 36.4209 13.3979 36.4209 12.8364V9.27637C36.4209 8.55762 36.1963 7.99609 35.7471 7.5918C35.2979 7.1875 34.6502 6.98535 33.8042 6.98535C33.063 6.98535 32.4603 7.13883 31.9961 7.4458C31.5394 7.74528 31.2474 8.14958 31.1201 8.65869L31.0977 8.7373H29.1885L29.1997 8.625C29.2746 7.98861 29.5067 7.41585 29.896 6.90674C30.2928 6.39762 30.8244 5.99707 31.4907 5.70508C32.1646 5.4056 32.9469 5.25586 33.8379 5.25586C34.7812 5.25586 35.5898 5.41683 36.2637 5.73877C36.945 6.05322 37.4653 6.50244 37.8247 7.08643C38.1916 7.66292 38.375 8.35173 38.375 9.15283V17.2949H36.4209V15.4307H36.3311C36.0915 15.8574 35.7845 16.228 35.4102 16.5425C35.0433 16.8569 34.6278 17.1003 34.1636 17.2725C33.6994 17.4372 33.2015 17.5195 32.6699 17.5195ZM42.1484 21.3267C41.9837 21.3267 41.8115 21.3192 41.6318 21.3042C41.4521 21.2892 41.2987 21.2705 41.1714 21.248V19.6421C41.2612 19.6646 41.366 19.6795 41.4858 19.687C41.6056 19.702 41.7292 19.7095 41.8564 19.7095C42.4554 19.7095 42.9383 19.5897 43.3052 19.3501C43.672 19.1105 43.9678 18.6576 44.1924 17.9912L44.4282 17.3062L40.0371 5.48047H42.126L45.6187 15.981L45.0796 15.2734H45.7759L45.248 15.981L48.7407 5.48047H50.7959L46.1802 18.0249C45.8807 18.826 45.555 19.4661 45.2031 19.9453C44.8512 20.432 44.432 20.7839 43.9453 21.001C43.4587 21.2181 42.8597 21.3267 42.1484 21.3267Z";
4
- var APPLE_LOGO_PATH = LOGO_PATH.slice(0, LOGO_PATH.indexOf("M17.6885"));
5
4
  function ensureApplePayLogoSymbol() {
6
5
  if (document.getElementById(LOGO_DEFS_ID)) {
7
6
  return;
8
7
  }
9
8
  const tmp = document.createElement("div");
10
- tmp.innerHTML = `<svg aria-hidden="true" style="display:none" id="${LOGO_DEFS_ID}"><defs><symbol id="apple-pay-logo" viewBox="0 0 51 22"><path d="${LOGO_PATH}" fill="currentColor"/></symbol><symbol id="apple-logo" viewBox="0 0 15 18"><path d="${APPLE_LOGO_PATH}" fill="currentColor"/></symbol></defs></svg>`;
9
+ tmp.innerHTML = `<svg aria-hidden="true" style="display:none" id="${LOGO_DEFS_ID}"><defs><symbol id="apple-pay-logo" viewBox="0 0 51 22"><path d="${LOGO_PATH}" fill="currentColor"/></symbol></defs></svg>`;
11
10
  document.body.prepend(tmp.firstElementChild);
12
11
  }
13
12
  export {
@@ -1,18 +1,17 @@
1
1
  import type { Offer } from './types/offer.types';
2
- import { type RecaptchaTokens } from './utils/recaptcha';
3
2
  export declare class ApplePayModal extends HTMLElement {
4
3
  #private;
5
4
  static readonly tag = "teg-apple-pay-modal";
6
5
  static define(): void;
7
6
  /**
8
7
  * Callback invoked synchronously from the CTA click handler.
9
- * Receives a Promise of reCAPTCHA tokens — the promise is already in-flight
8
+ * Receives a Promise of a reCAPTCHA token — the promise is already in-flight
10
9
  * by the time this is called. The caller (ApplePayButton) must call
11
10
  * new ApplePaySession() synchronously inside this callback to stay within
12
11
  * Safari's user-gesture window. The token promise resolves before
13
12
  * onPaymentAuthorized fires (user still needs to authenticate on the sheet).
14
13
  */
15
- onConfirm: ((recaptchaTokensPromise: Promise<RecaptchaTokens>) => void) | null;
14
+ onConfirm: ((recaptchaTokenPromise: Promise<string>) => void) | null;
16
15
  set offer(value: Offer | null);
17
16
  get country(): string;
18
17
  set country(value: string);
@@ -66,13 +66,12 @@ function formatPrice(price, currencyCode, shouldFixDecimalPlaces = true, roundUp
66
66
  // src/apple-pay-logo.ts
67
67
  var LOGO_DEFS_ID = "apple-pay-logo-defs";
68
68
  var LOGO_PATH = "M10.2651 4.21143C10.4299 4.21143 10.7106 4.23763 11.1074 4.29004C11.5042 4.34245 11.9385 4.49219 12.4102 4.73926C12.8893 4.97884 13.3236 5.37939 13.7129 5.94092C13.6904 5.96338 13.5819 6.04574 13.3872 6.18799C13.1925 6.32275 12.9754 6.5249 12.7358 6.79443C12.4963 7.05648 12.2866 7.39339 12.1069 7.80518C11.9272 8.20947 11.8374 8.69238 11.8374 9.25391C11.8374 9.89779 11.9497 10.4443 12.1743 10.8936C12.4064 11.3428 12.6722 11.7059 12.9717 11.9829C13.2786 12.2524 13.5482 12.4508 13.7803 12.5781C14.0199 12.7054 14.1471 12.7728 14.1621 12.7803C14.1546 12.8102 14.0573 13.076 13.8701 13.5776C13.6904 14.0793 13.391 14.637 12.9717 15.251C12.6048 15.7826 12.208 16.2729 11.7812 16.7222C11.362 17.1714 10.8566 17.396 10.2651 17.396C9.86833 17.396 9.54264 17.3398 9.28809 17.2275C9.03353 17.1077 8.77148 16.9917 8.50195 16.8794C8.23242 16.7596 7.8693 16.6997 7.4126 16.6997C6.97087 16.6997 6.60026 16.7596 6.30078 16.8794C6.00879 16.9992 5.72803 17.119 5.4585 17.2388C5.19645 17.3586 4.88574 17.4185 4.52637 17.4185C3.97982 17.4185 3.50065 17.2013 3.08887 16.7671C2.67708 16.3328 2.25407 15.8125 1.81982 15.2061C1.3182 14.4873 0.887695 13.6113 0.52832 12.5781C0.176432 11.5374 0.000488281 10.4893 0.000488281 9.43359C0.000488281 8.30306 0.213867 7.35596 0.640625 6.59229C1.06738 5.82113 1.61393 5.24089 2.28027 4.85156C2.9541 4.45475 3.65039 4.25635 4.36914 4.25635C4.75098 4.25635 5.11035 4.31999 5.44727 4.44727C5.78418 4.56706 6.09863 4.69059 6.39062 4.81787C6.6901 4.94515 6.95964 5.00879 7.19922 5.00879C7.43132 5.00879 7.70085 4.94141 8.00781 4.80664C8.31478 4.67188 8.65918 4.54085 9.04102 4.41357C9.42285 4.27881 9.83089 4.21143 10.2651 4.21143ZM9.64746 2.78516C9.35547 3.13704 8.98861 3.43278 8.54688 3.67236C8.10514 3.90446 7.68587 4.02051 7.28906 4.02051C7.20671 4.02051 7.12809 4.01302 7.05322 3.99805C7.04574 3.97559 7.03825 3.93441 7.03076 3.87451C7.02327 3.81462 7.01953 3.75098 7.01953 3.68359C7.01953 3.23438 7.11686 2.80013 7.31152 2.38086C7.50618 1.9541 7.72705 1.60221 7.97412 1.3252C8.28857 0.950846 8.68538 0.640137 9.16455 0.393066C9.64372 0.145996 10.1004 0.014974 10.5347 0C10.5571 0.0973307 10.5684 0.213379 10.5684 0.348145C10.5684 0.797363 10.4823 1.23535 10.3101 1.66211C10.1379 2.08138 9.91699 2.45573 9.64746 2.78516ZM17.6885 11.5112V9.71436H22.0459C23.2064 9.71436 24.1048 9.41488 24.7412 8.81592C25.3776 8.20947 25.6958 7.37467 25.6958 6.31152V6.28906C25.6958 5.21842 25.3776 4.38363 24.7412 3.78467C24.1048 3.18571 23.2064 2.88623 22.0459 2.88623H17.6885V1.08936H22.5625C23.5807 1.08936 24.4792 1.30648 25.2578 1.74072C26.0365 2.17497 26.6466 2.78141 27.0884 3.56006C27.5376 4.3387 27.7622 5.24089 27.7622 6.2666V6.28906C27.7622 7.31478 27.5376 8.2207 27.0884 9.00684C26.6466 9.79297 26.0365 10.4069 25.2578 10.8486C24.4792 11.2904 23.5807 11.5112 22.5625 11.5112H17.6885ZM16.6777 17.2949V1.08936H18.6992V17.2949H16.6777ZM32.6699 17.5195C31.9062 17.5195 31.2249 17.3735 30.626 17.0815C30.0345 16.7896 29.5703 16.3778 29.2334 15.8462C28.904 15.3071 28.7393 14.682 28.7393 13.9707V13.9482C28.7393 13.2594 28.9077 12.668 29.2446 12.1738C29.5815 11.6797 30.0682 11.2904 30.7046 11.0059C31.3485 10.7139 32.1234 10.5417 33.0293 10.4893L37.3979 10.2422V11.7695L33.2539 12.0278C32.4303 12.0728 31.8052 12.2599 31.3784 12.5894C30.9517 12.9188 30.7383 13.3643 30.7383 13.9258V13.9482C30.7383 14.5322 30.9554 14.9927 31.3896 15.3296C31.8239 15.659 32.3929 15.8237 33.0967 15.8237C33.7331 15.8237 34.2983 15.6927 34.7925 15.4307C35.2941 15.1686 35.6909 14.813 35.9829 14.3638C36.2749 13.9071 36.4209 13.3979 36.4209 12.8364V9.27637C36.4209 8.55762 36.1963 7.99609 35.7471 7.5918C35.2979 7.1875 34.6502 6.98535 33.8042 6.98535C33.063 6.98535 32.4603 7.13883 31.9961 7.4458C31.5394 7.74528 31.2474 8.14958 31.1201 8.65869L31.0977 8.7373H29.1885L29.1997 8.625C29.2746 7.98861 29.5067 7.41585 29.896 6.90674C30.2928 6.39762 30.8244 5.99707 31.4907 5.70508C32.1646 5.4056 32.9469 5.25586 33.8379 5.25586C34.7812 5.25586 35.5898 5.41683 36.2637 5.73877C36.945 6.05322 37.4653 6.50244 37.8247 7.08643C38.1916 7.66292 38.375 8.35173 38.375 9.15283V17.2949H36.4209V15.4307H36.3311C36.0915 15.8574 35.7845 16.228 35.4102 16.5425C35.0433 16.8569 34.6278 17.1003 34.1636 17.2725C33.6994 17.4372 33.2015 17.5195 32.6699 17.5195ZM42.1484 21.3267C41.9837 21.3267 41.8115 21.3192 41.6318 21.3042C41.4521 21.2892 41.2987 21.2705 41.1714 21.248V19.6421C41.2612 19.6646 41.366 19.6795 41.4858 19.687C41.6056 19.702 41.7292 19.7095 41.8564 19.7095C42.4554 19.7095 42.9383 19.5897 43.3052 19.3501C43.672 19.1105 43.9678 18.6576 44.1924 17.9912L44.4282 17.3062L40.0371 5.48047H42.126L45.6187 15.981L45.0796 15.2734H45.7759L45.248 15.981L48.7407 5.48047H50.7959L46.1802 18.0249C45.8807 18.826 45.555 19.4661 45.2031 19.9453C44.8512 20.432 44.432 20.7839 43.9453 21.001C43.4587 21.2181 42.8597 21.3267 42.1484 21.3267Z";
69
- var APPLE_LOGO_PATH = LOGO_PATH.slice(0, LOGO_PATH.indexOf("M17.6885"));
70
69
  function ensureApplePayLogoSymbol() {
71
70
  if (document.getElementById(LOGO_DEFS_ID)) {
72
71
  return;
73
72
  }
74
73
  const tmp = document.createElement("div");
75
- tmp.innerHTML = `<svg aria-hidden="true" style="display:none" id="${LOGO_DEFS_ID}"><defs><symbol id="apple-pay-logo" viewBox="0 0 51 22"><path d="${LOGO_PATH}" fill="currentColor"/></symbol><symbol id="apple-logo" viewBox="0 0 15 18"><path d="${APPLE_LOGO_PATH}" fill="currentColor"/></symbol></defs></svg>`;
74
+ tmp.innerHTML = `<svg aria-hidden="true" style="display:none" id="${LOGO_DEFS_ID}"><defs><symbol id="apple-pay-logo" viewBox="0 0 51 22"><path d="${LOGO_PATH}" fill="currentColor"/></symbol></defs></svg>`;
76
75
  document.body.prepend(tmp.firstElementChild);
77
76
  }
78
77
 
@@ -601,13 +600,8 @@ var getRecaptchaToken = async (action) => {
601
600
  });
602
601
  });
603
602
  };
604
- var getPurchaseRecaptchaTokens = async () => {
605
- const [checkEligibility, newBasket, registerUser] = await Promise.all([
606
- getRecaptchaToken("checkEligibility"),
607
- getRecaptchaToken("newBasket"),
608
- getRecaptchaToken("registerUser")
609
- ]);
610
- return { checkEligibility, newBasket, registerUser };
603
+ var getPurchaseRecaptchaToken = () => {
604
+ return getRecaptchaToken("walletPurchase");
611
605
  };
612
606
 
613
607
  // src/apple-pay-modal.ts
@@ -835,7 +829,7 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
835
829
  #isClosed = false;
836
830
  /**
837
831
  * Callback invoked synchronously from the CTA click handler.
838
- * Receives a Promise of reCAPTCHA tokens — the promise is already in-flight
832
+ * Receives a Promise of a reCAPTCHA token — the promise is already in-flight
839
833
  * by the time this is called. The caller (ApplePayButton) must call
840
834
  * new ApplePaySession() synchronously inside this callback to stay within
841
835
  * Safari's user-gesture window. The token promise resolves before
@@ -947,12 +941,12 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
947
941
  this.querySelector('[role="alert"]:not(#apple-pay-modal-error)')?.remove();
948
942
  cta.disabled = true;
949
943
  cta.setAttribute("aria-busy", "true");
950
- const recaptchaTokensPromise = getPurchaseRecaptchaTokens();
944
+ const recaptchaTokenPromise = getPurchaseRecaptchaToken();
951
945
  if (!this.#isClosed && this.onConfirm) {
952
- this.onConfirm(recaptchaTokensPromise);
946
+ this.onConfirm(recaptchaTokenPromise);
953
947
  this.close();
954
948
  }
955
- recaptchaTokensPromise.catch(() => {
949
+ recaptchaTokenPromise.catch(() => {
956
950
  if (this.#isClosed) return;
957
951
  cta.disabled = false;
958
952
  cta.removeAttribute("aria-busy");
@@ -66,13 +66,12 @@ function formatPrice(price, currencyCode, shouldFixDecimalPlaces = true, roundUp
66
66
  // src/apple-pay-logo.ts
67
67
  var LOGO_DEFS_ID = "apple-pay-logo-defs";
68
68
  var LOGO_PATH = "M10.2651 4.21143C10.4299 4.21143 10.7106 4.23763 11.1074 4.29004C11.5042 4.34245 11.9385 4.49219 12.4102 4.73926C12.8893 4.97884 13.3236 5.37939 13.7129 5.94092C13.6904 5.96338 13.5819 6.04574 13.3872 6.18799C13.1925 6.32275 12.9754 6.5249 12.7358 6.79443C12.4963 7.05648 12.2866 7.39339 12.1069 7.80518C11.9272 8.20947 11.8374 8.69238 11.8374 9.25391C11.8374 9.89779 11.9497 10.4443 12.1743 10.8936C12.4064 11.3428 12.6722 11.7059 12.9717 11.9829C13.2786 12.2524 13.5482 12.4508 13.7803 12.5781C14.0199 12.7054 14.1471 12.7728 14.1621 12.7803C14.1546 12.8102 14.0573 13.076 13.8701 13.5776C13.6904 14.0793 13.391 14.637 12.9717 15.251C12.6048 15.7826 12.208 16.2729 11.7812 16.7222C11.362 17.1714 10.8566 17.396 10.2651 17.396C9.86833 17.396 9.54264 17.3398 9.28809 17.2275C9.03353 17.1077 8.77148 16.9917 8.50195 16.8794C8.23242 16.7596 7.8693 16.6997 7.4126 16.6997C6.97087 16.6997 6.60026 16.7596 6.30078 16.8794C6.00879 16.9992 5.72803 17.119 5.4585 17.2388C5.19645 17.3586 4.88574 17.4185 4.52637 17.4185C3.97982 17.4185 3.50065 17.2013 3.08887 16.7671C2.67708 16.3328 2.25407 15.8125 1.81982 15.2061C1.3182 14.4873 0.887695 13.6113 0.52832 12.5781C0.176432 11.5374 0.000488281 10.4893 0.000488281 9.43359C0.000488281 8.30306 0.213867 7.35596 0.640625 6.59229C1.06738 5.82113 1.61393 5.24089 2.28027 4.85156C2.9541 4.45475 3.65039 4.25635 4.36914 4.25635C4.75098 4.25635 5.11035 4.31999 5.44727 4.44727C5.78418 4.56706 6.09863 4.69059 6.39062 4.81787C6.6901 4.94515 6.95964 5.00879 7.19922 5.00879C7.43132 5.00879 7.70085 4.94141 8.00781 4.80664C8.31478 4.67188 8.65918 4.54085 9.04102 4.41357C9.42285 4.27881 9.83089 4.21143 10.2651 4.21143ZM9.64746 2.78516C9.35547 3.13704 8.98861 3.43278 8.54688 3.67236C8.10514 3.90446 7.68587 4.02051 7.28906 4.02051C7.20671 4.02051 7.12809 4.01302 7.05322 3.99805C7.04574 3.97559 7.03825 3.93441 7.03076 3.87451C7.02327 3.81462 7.01953 3.75098 7.01953 3.68359C7.01953 3.23438 7.11686 2.80013 7.31152 2.38086C7.50618 1.9541 7.72705 1.60221 7.97412 1.3252C8.28857 0.950846 8.68538 0.640137 9.16455 0.393066C9.64372 0.145996 10.1004 0.014974 10.5347 0C10.5571 0.0973307 10.5684 0.213379 10.5684 0.348145C10.5684 0.797363 10.4823 1.23535 10.3101 1.66211C10.1379 2.08138 9.91699 2.45573 9.64746 2.78516ZM17.6885 11.5112V9.71436H22.0459C23.2064 9.71436 24.1048 9.41488 24.7412 8.81592C25.3776 8.20947 25.6958 7.37467 25.6958 6.31152V6.28906C25.6958 5.21842 25.3776 4.38363 24.7412 3.78467C24.1048 3.18571 23.2064 2.88623 22.0459 2.88623H17.6885V1.08936H22.5625C23.5807 1.08936 24.4792 1.30648 25.2578 1.74072C26.0365 2.17497 26.6466 2.78141 27.0884 3.56006C27.5376 4.3387 27.7622 5.24089 27.7622 6.2666V6.28906C27.7622 7.31478 27.5376 8.2207 27.0884 9.00684C26.6466 9.79297 26.0365 10.4069 25.2578 10.8486C24.4792 11.2904 23.5807 11.5112 22.5625 11.5112H17.6885ZM16.6777 17.2949V1.08936H18.6992V17.2949H16.6777ZM32.6699 17.5195C31.9062 17.5195 31.2249 17.3735 30.626 17.0815C30.0345 16.7896 29.5703 16.3778 29.2334 15.8462C28.904 15.3071 28.7393 14.682 28.7393 13.9707V13.9482C28.7393 13.2594 28.9077 12.668 29.2446 12.1738C29.5815 11.6797 30.0682 11.2904 30.7046 11.0059C31.3485 10.7139 32.1234 10.5417 33.0293 10.4893L37.3979 10.2422V11.7695L33.2539 12.0278C32.4303 12.0728 31.8052 12.2599 31.3784 12.5894C30.9517 12.9188 30.7383 13.3643 30.7383 13.9258V13.9482C30.7383 14.5322 30.9554 14.9927 31.3896 15.3296C31.8239 15.659 32.3929 15.8237 33.0967 15.8237C33.7331 15.8237 34.2983 15.6927 34.7925 15.4307C35.2941 15.1686 35.6909 14.813 35.9829 14.3638C36.2749 13.9071 36.4209 13.3979 36.4209 12.8364V9.27637C36.4209 8.55762 36.1963 7.99609 35.7471 7.5918C35.2979 7.1875 34.6502 6.98535 33.8042 6.98535C33.063 6.98535 32.4603 7.13883 31.9961 7.4458C31.5394 7.74528 31.2474 8.14958 31.1201 8.65869L31.0977 8.7373H29.1885L29.1997 8.625C29.2746 7.98861 29.5067 7.41585 29.896 6.90674C30.2928 6.39762 30.8244 5.99707 31.4907 5.70508C32.1646 5.4056 32.9469 5.25586 33.8379 5.25586C34.7812 5.25586 35.5898 5.41683 36.2637 5.73877C36.945 6.05322 37.4653 6.50244 37.8247 7.08643C38.1916 7.66292 38.375 8.35173 38.375 9.15283V17.2949H36.4209V15.4307H36.3311C36.0915 15.8574 35.7845 16.228 35.4102 16.5425C35.0433 16.8569 34.6278 17.1003 34.1636 17.2725C33.6994 17.4372 33.2015 17.5195 32.6699 17.5195ZM42.1484 21.3267C41.9837 21.3267 41.8115 21.3192 41.6318 21.3042C41.4521 21.2892 41.2987 21.2705 41.1714 21.248V19.6421C41.2612 19.6646 41.366 19.6795 41.4858 19.687C41.6056 19.702 41.7292 19.7095 41.8564 19.7095C42.4554 19.7095 42.9383 19.5897 43.3052 19.3501C43.672 19.1105 43.9678 18.6576 44.1924 17.9912L44.4282 17.3062L40.0371 5.48047H42.126L45.6187 15.981L45.0796 15.2734H45.7759L45.248 15.981L48.7407 5.48047H50.7959L46.1802 18.0249C45.8807 18.826 45.555 19.4661 45.2031 19.9453C44.8512 20.432 44.432 20.7839 43.9453 21.001C43.4587 21.2181 42.8597 21.3267 42.1484 21.3267Z";
69
- var APPLE_LOGO_PATH = LOGO_PATH.slice(0, LOGO_PATH.indexOf("M17.6885"));
70
69
  function ensureApplePayLogoSymbol() {
71
70
  if (document.getElementById(LOGO_DEFS_ID)) {
72
71
  return;
73
72
  }
74
73
  const tmp = document.createElement("div");
75
- tmp.innerHTML = `<svg aria-hidden="true" style="display:none" id="${LOGO_DEFS_ID}"><defs><symbol id="apple-pay-logo" viewBox="0 0 51 22"><path d="${LOGO_PATH}" fill="currentColor"/></symbol><symbol id="apple-logo" viewBox="0 0 15 18"><path d="${APPLE_LOGO_PATH}" fill="currentColor"/></symbol></defs></svg>`;
74
+ tmp.innerHTML = `<svg aria-hidden="true" style="display:none" id="${LOGO_DEFS_ID}"><defs><symbol id="apple-pay-logo" viewBox="0 0 51 22"><path d="${LOGO_PATH}" fill="currentColor"/></symbol></defs></svg>`;
76
75
  document.body.prepend(tmp.firstElementChild);
77
76
  }
78
77
 
@@ -601,13 +600,8 @@ var getRecaptchaToken = async (action) => {
601
600
  });
602
601
  });
603
602
  };
604
- var getPurchaseRecaptchaTokens = async () => {
605
- const [checkEligibility, newBasket, registerUser] = await Promise.all([
606
- getRecaptchaToken("checkEligibility"),
607
- getRecaptchaToken("newBasket"),
608
- getRecaptchaToken("registerUser")
609
- ]);
610
- return { checkEligibility, newBasket, registerUser };
603
+ var getPurchaseRecaptchaToken = () => {
604
+ return getRecaptchaToken("walletPurchase");
611
605
  };
612
606
 
613
607
  // src/apple-pay-modal.ts
@@ -835,7 +829,7 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
835
829
  #isClosed = false;
836
830
  /**
837
831
  * Callback invoked synchronously from the CTA click handler.
838
- * Receives a Promise of reCAPTCHA tokens — the promise is already in-flight
832
+ * Receives a Promise of a reCAPTCHA token — the promise is already in-flight
839
833
  * by the time this is called. The caller (ApplePayButton) must call
840
834
  * new ApplePaySession() synchronously inside this callback to stay within
841
835
  * Safari's user-gesture window. The token promise resolves before
@@ -947,12 +941,12 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
947
941
  this.querySelector('[role="alert"]:not(#apple-pay-modal-error)')?.remove();
948
942
  cta.disabled = true;
949
943
  cta.setAttribute("aria-busy", "true");
950
- const recaptchaTokensPromise = getPurchaseRecaptchaTokens();
944
+ const recaptchaTokenPromise = getPurchaseRecaptchaToken();
951
945
  if (!this.#isClosed && this.onConfirm) {
952
- this.onConfirm(recaptchaTokensPromise);
946
+ this.onConfirm(recaptchaTokenPromise);
953
947
  this.close();
954
948
  }
955
- recaptchaTokensPromise.catch(() => {
949
+ recaptchaTokenPromise.catch(() => {
956
950
  if (this.#isClosed) return;
957
951
  cta.disabled = false;
958
952
  cta.removeAttribute("aria-busy");
@@ -1008,26 +1002,10 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
1008
1002
  // src/templates/apple-pay-button.template.html
1009
1003
  var apple_pay_button_template_default = `<style>
1010
1004
  /*
1011
- * Entry CTA only: \u201CSubscribe with [apple logo] Apple Pay\u201D.
1012
- * Uses OS SF Pro via local() (no Marber). Modal styling is unchanged.
1005
+ * Entry CTA: \u201CSubscribe with\u201D + Apple Pay wordmark (Figma 1118:14088).
1006
+ * \u201CSubscribe with\u201D matches Continue to checkout typography (EconomistSans Regular / 17 / 24 / 400).
1013
1007
  */
1014
- @font-face {
1015
- font-family: 'WAP Apple Pay Text';
1016
- src:
1017
- local('SF Pro Text Light'),
1018
- local('SFProText-Light'),
1019
- local('SF Pro Text'),
1020
- local('SFProText-Regular'),
1021
- local('-apple-system'),
1022
- local('BlinkMacSystemFont'),
1023
- local('Helvetica Neue');
1024
- font-weight: 300;
1025
- font-style: normal;
1026
- font-display: swap;
1027
- }
1028
-
1029
1008
  teg-apple-pay-button {
1030
- --wap-apple-pay-scale: 1.375; /* default height 44px / 32 */
1031
1009
  display: block;
1032
1010
  margin: var(--apple-pay-margin, 0);
1033
1011
  width: 100%;
@@ -1043,44 +1021,53 @@ var apple_pay_button_template_default = `<style>
1043
1021
  }
1044
1022
 
1045
1023
  teg-apple-pay-button .apple-pay-btn {
1046
- display: inline-flex;
1024
+ display: flex;
1047
1025
  align-items: center;
1048
1026
  justify-content: center;
1049
1027
  width: 100%;
1050
1028
  min-width: 0;
1051
1029
  height: 100%;
1052
- min-height: var(--apple-pay-height, 2.75rem);
1053
- padding: 0 calc(8px * var(--wap-apple-pay-scale));
1030
+ min-height: var(--apple-pay-height, 2.5rem);
1031
+ padding: 0;
1054
1032
  box-sizing: border-box;
1055
- background-color: var(--apple-pay-background-color, #000);
1033
+ background-color: var(--apple-pay-background-color, #1a1a1a);
1056
1034
  color: var(--apple-pay-foreground-color, #fff);
1057
1035
  border: none;
1058
- border-radius: var(--apple-pay-border-radius, 5px);
1036
+ border-radius: var(--apple-pay-border-radius, 0.25rem);
1059
1037
  cursor: pointer;
1060
- font-family: 'WAP Apple Pay Text', -apple-system, BlinkMacSystemFont,
1061
- 'SF Pro Text', 'Helvetica Neue', Helvetica, Arial, sans-serif;
1062
- font-size: calc(12px * var(--wap-apple-pay-scale));
1063
- font-weight: 300;
1064
- font-style: normal;
1038
+ /* Same as wall Continue to checkout / Marber button large */
1039
+ font-family: var(
1040
+ --mb-typeface-sans,
1041
+ var(--wall-type-system-sans, 'EconomistSans', system-ui, sans-serif)
1042
+ );
1043
+ font-size: var(--mb-button-font-size, 1.0625rem);
1044
+ font-weight: var(--mb-font-weight-regular, 400);
1065
1045
  line-height: 1;
1066
- letter-spacing: -0.01em;
1067
- -webkit-font-smoothing: antialiased;
1068
- -moz-osx-font-smoothing: grayscale;
1069
1046
  }
1070
1047
 
1071
1048
  teg-apple-pay-button .apple-pay-btn__label {
1072
1049
  display: inline-flex;
1073
1050
  align-items: center;
1074
- gap: calc(4px * var(--wap-apple-pay-scale));
1051
+ /* No flex gap \u2014 spacing after \u201Cwith\u201D uses the same word-space as \u201CSubscribe with\u201D */
1052
+ gap: 0;
1075
1053
  white-space: nowrap;
1076
1054
  }
1077
1055
 
1078
- teg-apple-pay-button .apple-pay-btn__apple-logo {
1056
+ teg-apple-pay-button .apple-pay-btn__caption {
1057
+ /* One typographic word space after \u201Cwith\u201D, matching Subscribe\u2194with */
1058
+ padding-right: 0.25em;
1059
+ }
1060
+
1061
+ teg-apple-pay-button .apple-pay-btn__logo {
1079
1062
  flex-shrink: 0;
1080
1063
  display: block;
1081
- width: calc(12px * var(--wap-apple-pay-scale));
1082
- height: calc(14px * var(--wap-apple-pay-scale));
1064
+ /* Match caption font-size so mark aligns with text metrics */
1065
+ height: 1.05em;
1066
+ width: auto;
1067
+ aspect-ratio: 51 / 22;
1083
1068
  color: currentColor;
1069
+ /* Optical nudge \u2014 SVG viewBox sits slightly high vs EconomistSans caps */
1070
+ transform: translateY(0.06em);
1084
1071
  }
1085
1072
 
1086
1073
  teg-apple-pay-button .apple-pay-btn.wap-loading {
@@ -1126,20 +1113,19 @@ var apple_pay_button_template_default = `<style>
1126
1113
  aria-label="Subscribe with Apple Pay"
1127
1114
  data-analytics="paywall:apple-pay-checkout"
1128
1115
  >
1129
- <span class="apple-pay-btn__label">
1130
- Subscribe with
1131
- <svg
1132
- class="apple-pay-btn__apple-logo"
1133
- width="17"
1134
- height="19"
1135
- viewBox="0 0 15 18"
1116
+ <span class="apple-pay-btn__label"
1117
+ ><span class="apple-pay-btn__caption">Subscribe with</span
1118
+ ><svg
1119
+ class="apple-pay-btn__logo"
1120
+ width="42"
1121
+ height="18"
1122
+ viewBox="0 0 51 22"
1136
1123
  aria-hidden="true"
1137
1124
  role="img"
1138
1125
  >
1139
- <use href="#apple-logo" />
1140
- </svg>
1141
- Apple Pay
1142
- </span>
1126
+ <use href="#apple-pay-logo" />
1127
+ </svg
1128
+ ></span>
1143
1129
  <span class="apple-pay-btn__loading" aria-hidden="true">Loading...</span>
1144
1130
  </button>
1145
1131
  </div>
@@ -1655,7 +1641,7 @@ async function handlePaymentAuthorized(event, session, sessionData, config) {
1655
1641
  ...event.payment.shippingContact && {
1656
1642
  shippingContact: event.payment.shippingContact
1657
1643
  },
1658
- recaptchaTokens: config.recaptchaTokens
1644
+ recaptchaToken: config.recaptchaToken
1659
1645
  });
1660
1646
  trackWalletPaymentSuccess(skuId, result.basketId);
1661
1647
  session.completePayment({ status: ApplePaySession.STATUS_SUCCESS });
@@ -2205,8 +2191,8 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2205
2191
  }
2206
2192
  const skuId = this.#offer.sku_id;
2207
2193
  const country = this.#country;
2208
- modal.onConfirm = (recaptchaTokensPromise) => {
2209
- this.#initiateApplePay(skuId, country, recaptchaTokensPromise);
2194
+ modal.onConfirm = (recaptchaTokenPromise) => {
2195
+ this.#initiateApplePay(skuId, country, recaptchaTokenPromise);
2210
2196
  };
2211
2197
  modal.open();
2212
2198
  }
@@ -2229,7 +2215,7 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2229
2215
  return null;
2230
2216
  }
2231
2217
  }
2232
- #buildSessionParams(skuId, country, sessionData, paymentOptions, recaptchaTokensPromise) {
2218
+ #buildSessionParams(skuId, country, sessionData, paymentOptions, recaptchaTokenPromise) {
2233
2219
  const offer = this.#offer;
2234
2220
  const totalAmount = offer.price?.purchase ? `${offer.price.purchase}` : DEFAULT_TOTAL;
2235
2221
  return {
@@ -2242,19 +2228,19 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2242
2228
  returnUrl: this.#returnUrl,
2243
2229
  userLoggedIn: sessionData.loggedIn,
2244
2230
  onPaymentAuthorized: async (event, session) => {
2245
- const recaptchaTokens = await recaptchaTokensPromise;
2231
+ const recaptchaToken = await recaptchaTokenPromise;
2246
2232
  return handlePaymentAuthorized(event, session, sessionData, {
2247
2233
  skuId,
2248
2234
  country,
2249
2235
  currency: offer.price?.currency_code ?? DEFAULT_CURRENCY,
2250
2236
  returnUrl: this.#returnUrl,
2251
2237
  supportedBillingCountries: this.#supportedBillingCountries,
2252
- recaptchaTokens
2238
+ recaptchaToken
2253
2239
  });
2254
2240
  }
2255
2241
  };
2256
2242
  }
2257
- #initiateApplePay(skuId, country, recaptchaTokensPromise) {
2243
+ #initiateApplePay(skuId, country, recaptchaTokenPromise) {
2258
2244
  try {
2259
2245
  const sessionData = this.#sessionData ?? _ApplePayButton.#ANONYMOUS_SESSION;
2260
2246
  const paymentOptions = this.#paymentOptions;
@@ -2267,7 +2253,7 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2267
2253
  country,
2268
2254
  sessionData,
2269
2255
  paymentOptions,
2270
- recaptchaTokensPromise
2256
+ recaptchaTokenPromise
2271
2257
  )
2272
2258
  );
2273
2259
  } catch {
@@ -20,10 +20,6 @@ export type PaymentHandlerConfig = {
20
20
  currency: string;
21
21
  returnUrl: string;
22
22
  supportedBillingCountries: string[];
23
- recaptchaTokens: {
24
- checkEligibility: string;
25
- newBasket: string;
26
- registerUser: string;
27
- };
23
+ recaptchaToken: string;
28
24
  };
29
25
  export declare function handlePaymentAuthorized(event: ApplePayJS.ApplePayPaymentAuthorizedEvent, session: ApplePaySession, sessionData: SessionResponse, config: PaymentHandlerConfig): Promise<void>;
@@ -359,7 +359,7 @@ async function handlePaymentAuthorized(event, session, sessionData, config) {
359
359
  ...event.payment.shippingContact && {
360
360
  shippingContact: event.payment.shippingContact
361
361
  },
362
- recaptchaTokens: config.recaptchaTokens
362
+ recaptchaToken: config.recaptchaToken
363
363
  });
364
364
  trackWalletPaymentSuccess(skuId, result.basketId);
365
365
  session.completePayment({ status: ApplePaySession.STATUS_SUCCESS });