@economist/web-apple-pay 1.7.10 → 1.8.1

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.
package/dist/index.js CHANGED
@@ -66,12 +66,13 @@ 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"));
69
70
  function ensureApplePayLogoSymbol() {
70
71
  if (document.getElementById(LOGO_DEFS_ID)) {
71
72
  return;
72
73
  }
73
74
  const tmp = document.createElement("div");
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>`;
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>`;
75
76
  document.body.prepend(tmp.firstElementChild);
76
77
  }
77
78
 
@@ -605,13 +606,8 @@ var getRecaptchaToken = async (action) => {
605
606
  });
606
607
  });
607
608
  };
608
- var getPurchaseRecaptchaTokens = async () => {
609
- const [checkEligibility, newBasket, registerUser] = await Promise.all([
610
- getRecaptchaToken("checkEligibility"),
611
- getRecaptchaToken("newBasket"),
612
- getRecaptchaToken("registerUser")
613
- ]);
614
- return { checkEligibility, newBasket, registerUser };
609
+ var getPurchaseRecaptchaToken = () => {
610
+ return getRecaptchaToken("walletPurchase");
615
611
  };
616
612
 
617
613
  // src/apple-pay-modal.ts
@@ -839,7 +835,7 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
839
835
  #isClosed = false;
840
836
  /**
841
837
  * Callback invoked synchronously from the CTA click handler.
842
- * Receives a Promise of reCAPTCHA tokens — the promise is already in-flight
838
+ * Receives a Promise of a reCAPTCHA token — the promise is already in-flight
843
839
  * by the time this is called. The caller (ApplePayButton) must call
844
840
  * new ApplePaySession() synchronously inside this callback to stay within
845
841
  * Safari's user-gesture window. The token promise resolves before
@@ -951,12 +947,12 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
951
947
  this.querySelector('[role="alert"]:not(#apple-pay-modal-error)')?.remove();
952
948
  cta.disabled = true;
953
949
  cta.setAttribute("aria-busy", "true");
954
- const recaptchaTokensPromise = getPurchaseRecaptchaTokens();
950
+ const recaptchaTokenPromise = getPurchaseRecaptchaToken();
955
951
  if (!this.#isClosed && this.onConfirm) {
956
- this.onConfirm(recaptchaTokensPromise);
952
+ this.onConfirm(recaptchaTokenPromise);
957
953
  this.close();
958
954
  }
959
- recaptchaTokensPromise.catch(() => {
955
+ recaptchaTokenPromise.catch(() => {
960
956
  if (this.#isClosed) return;
961
957
  cta.disabled = false;
962
958
  cta.removeAttribute("aria-busy");
@@ -1011,8 +1007,27 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
1011
1007
 
1012
1008
  // src/templates/apple-pay-button.template.html
1013
1009
  var apple_pay_button_template_default = `<style>
1014
- /* Use CSS variables for layout so parent walls can easily override placement and sizing */
1010
+ /*
1011
+ * Entry CTA only: \u201CSubscribe with [apple logo] Apple Pay\u201D.
1012
+ * Uses OS SF Pro via local() (no Marber). Modal styling is unchanged.
1013
+ */
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
+
1015
1029
  teg-apple-pay-button {
1030
+ --wap-apple-pay-scale: 1.375; /* default height 44px / 32 */
1016
1031
  display: block;
1017
1032
  margin: var(--apple-pay-margin, 0);
1018
1033
  width: 100%;
@@ -1028,27 +1043,43 @@ var apple_pay_button_template_default = `<style>
1028
1043
  }
1029
1044
 
1030
1045
  teg-apple-pay-button .apple-pay-btn {
1031
- display: flex;
1046
+ display: inline-flex;
1032
1047
  align-items: center;
1033
1048
  justify-content: center;
1034
- gap: 0.375rem;
1035
1049
  width: 100%;
1036
1050
  min-width: 0;
1037
1051
  height: 100%;
1038
1052
  min-height: var(--apple-pay-height, 2.75rem);
1053
+ padding: 0 calc(8px * var(--wap-apple-pay-scale));
1054
+ box-sizing: border-box;
1039
1055
  background-color: var(--apple-pay-background-color, #000);
1040
1056
  color: var(--apple-pay-foreground-color, #fff);
1041
1057
  border: none;
1042
- border-radius: var(--apple-pay-border-radius, 1.375rem);
1058
+ border-radius: var(--apple-pay-border-radius, 5px);
1043
1059
  cursor: pointer;
1044
- font-family: var(--mb-typeface-sans, var(--wall-type-system-sans));
1045
- font-size: 1.0625rem;
1046
- font-weight: 500;
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;
1065
+ line-height: 1;
1066
+ letter-spacing: -0.01em;
1067
+ -webkit-font-smoothing: antialiased;
1068
+ -moz-osx-font-smoothing: grayscale;
1047
1069
  }
1048
1070
 
1049
- teg-apple-pay-button .apple-pay-btn svg {
1071
+ teg-apple-pay-button .apple-pay-btn__label {
1072
+ display: inline-flex;
1073
+ align-items: center;
1074
+ gap: calc(4px * var(--wap-apple-pay-scale));
1075
+ white-space: nowrap;
1076
+ }
1077
+
1078
+ teg-apple-pay-button .apple-pay-btn__apple-logo {
1050
1079
  flex-shrink: 0;
1051
1080
  display: block;
1081
+ width: calc(12px * var(--wap-apple-pay-scale));
1082
+ height: calc(14px * var(--wap-apple-pay-scale));
1052
1083
  color: currentColor;
1053
1084
  }
1054
1085
 
@@ -1057,6 +1088,10 @@ var apple_pay_button_template_default = `<style>
1057
1088
  cursor: default;
1058
1089
  }
1059
1090
 
1091
+ teg-apple-pay-button .apple-pay-btn.wap-loading .apple-pay-btn__label {
1092
+ visibility: hidden;
1093
+ }
1094
+
1060
1095
  teg-apple-pay-button .apple-pay-btn.wap-loading::before {
1061
1096
  content: '';
1062
1097
  position: absolute;
@@ -1070,11 +1105,6 @@ var apple_pay_button_template_default = `<style>
1070
1105
  animation: wap-button-spinner 0.8s linear infinite;
1071
1106
  }
1072
1107
 
1073
- teg-apple-pay-button .apple-pay-btn__logo {
1074
- display: inline-flex;
1075
- align-items: center;
1076
- }
1077
-
1078
1108
  teg-apple-pay-button .apple-pay-btn__loading {
1079
1109
  display: none;
1080
1110
  }
@@ -1089,17 +1119,26 @@ var apple_pay_button_template_default = `<style>
1089
1119
  }
1090
1120
  </style>
1091
1121
 
1092
- <div class="apple-pay-container" aria-label="Express checkout with Apple Pay">
1122
+ <div class="apple-pay-container" aria-label="Subscribe with Apple Pay">
1093
1123
  <button
1094
1124
  class="apple-pay-btn"
1095
1125
  type="button"
1096
- aria-label="Pay with Apple Pay"
1126
+ aria-label="Subscribe with Apple Pay"
1097
1127
  data-analytics="paywall:apple-pay-checkout"
1098
1128
  >
1099
- <span class="apple-pay-btn__logo">
1100
- <svg width="51" height="22" aria-label="Apple Pay" role="img">
1101
- <use href="#apple-pay-logo" />
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"
1136
+ aria-hidden="true"
1137
+ role="img"
1138
+ >
1139
+ <use href="#apple-logo" />
1102
1140
  </svg>
1141
+ Apple Pay
1103
1142
  </span>
1104
1143
  <span class="apple-pay-btn__loading" aria-hidden="true">Loading...</span>
1105
1144
  </button>
@@ -1616,7 +1655,7 @@ async function handlePaymentAuthorized(event, session, sessionData, config) {
1616
1655
  ...event.payment.shippingContact && {
1617
1656
  shippingContact: event.payment.shippingContact
1618
1657
  },
1619
- recaptchaTokens: config.recaptchaTokens
1658
+ recaptchaToken: config.recaptchaToken
1620
1659
  });
1621
1660
  trackWalletPaymentSuccess(skuId, result.basketId);
1622
1661
  session.completePayment({ status: ApplePaySession.STATUS_SUCCESS });
@@ -2166,8 +2205,8 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2166
2205
  }
2167
2206
  const skuId = this.#offer.sku_id;
2168
2207
  const country = this.#country;
2169
- modal.onConfirm = (recaptchaTokensPromise) => {
2170
- this.#initiateApplePay(skuId, country, recaptchaTokensPromise);
2208
+ modal.onConfirm = (recaptchaTokenPromise) => {
2209
+ this.#initiateApplePay(skuId, country, recaptchaTokenPromise);
2171
2210
  };
2172
2211
  modal.open();
2173
2212
  }
@@ -2190,7 +2229,7 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2190
2229
  return null;
2191
2230
  }
2192
2231
  }
2193
- #buildSessionParams(skuId, country, sessionData, paymentOptions, recaptchaTokensPromise) {
2232
+ #buildSessionParams(skuId, country, sessionData, paymentOptions, recaptchaTokenPromise) {
2194
2233
  const offer = this.#offer;
2195
2234
  const totalAmount = offer.price?.purchase ? `${offer.price.purchase}` : DEFAULT_TOTAL;
2196
2235
  return {
@@ -2203,19 +2242,19 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2203
2242
  returnUrl: this.#returnUrl,
2204
2243
  userLoggedIn: sessionData.loggedIn,
2205
2244
  onPaymentAuthorized: async (event, session) => {
2206
- const recaptchaTokens = await recaptchaTokensPromise;
2245
+ const recaptchaToken = await recaptchaTokenPromise;
2207
2246
  return handlePaymentAuthorized(event, session, sessionData, {
2208
2247
  skuId,
2209
2248
  country,
2210
2249
  currency: offer.price?.currency_code ?? DEFAULT_CURRENCY,
2211
2250
  returnUrl: this.#returnUrl,
2212
2251
  supportedBillingCountries: this.#supportedBillingCountries,
2213
- recaptchaTokens
2252
+ recaptchaToken
2214
2253
  });
2215
2254
  }
2216
2255
  };
2217
2256
  }
2218
- #initiateApplePay(skuId, country, recaptchaTokensPromise) {
2257
+ #initiateApplePay(skuId, country, recaptchaTokenPromise) {
2219
2258
  try {
2220
2259
  const sessionData = this.#sessionData ?? _ApplePayButton.#ANONYMOUS_SESSION;
2221
2260
  const paymentOptions = this.#paymentOptions;
@@ -2228,7 +2267,7 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2228
2267
  country,
2229
2268
  sessionData,
2230
2269
  paymentOptions,
2231
- recaptchaTokensPromise
2270
+ recaptchaTokenPromise
2232
2271
  )
2233
2272
  );
2234
2273
  } catch {
@@ -66,12 +66,13 @@ 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"));
69
70
  function ensureApplePayLogoSymbol() {
70
71
  if (document.getElementById(LOGO_DEFS_ID)) {
71
72
  return;
72
73
  }
73
74
  const tmp = document.createElement("div");
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>`;
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>`;
75
76
  document.body.prepend(tmp.firstElementChild);
76
77
  }
77
78
 
@@ -600,13 +601,8 @@ var getRecaptchaToken = async (action) => {
600
601
  });
601
602
  });
602
603
  };
603
- var getPurchaseRecaptchaTokens = async () => {
604
- const [checkEligibility, newBasket, registerUser] = await Promise.all([
605
- getRecaptchaToken("checkEligibility"),
606
- getRecaptchaToken("newBasket"),
607
- getRecaptchaToken("registerUser")
608
- ]);
609
- return { checkEligibility, newBasket, registerUser };
604
+ var getPurchaseRecaptchaToken = () => {
605
+ return getRecaptchaToken("walletPurchase");
610
606
  };
611
607
 
612
608
  // src/apple-pay-modal.ts
@@ -834,7 +830,7 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
834
830
  #isClosed = false;
835
831
  /**
836
832
  * Callback invoked synchronously from the CTA click handler.
837
- * Receives a Promise of reCAPTCHA tokens — the promise is already in-flight
833
+ * Receives a Promise of a reCAPTCHA token — the promise is already in-flight
838
834
  * by the time this is called. The caller (ApplePayButton) must call
839
835
  * new ApplePaySession() synchronously inside this callback to stay within
840
836
  * Safari's user-gesture window. The token promise resolves before
@@ -946,12 +942,12 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
946
942
  this.querySelector('[role="alert"]:not(#apple-pay-modal-error)')?.remove();
947
943
  cta.disabled = true;
948
944
  cta.setAttribute("aria-busy", "true");
949
- const recaptchaTokensPromise = getPurchaseRecaptchaTokens();
945
+ const recaptchaTokenPromise = getPurchaseRecaptchaToken();
950
946
  if (!this.#isClosed && this.onConfirm) {
951
- this.onConfirm(recaptchaTokensPromise);
947
+ this.onConfirm(recaptchaTokenPromise);
952
948
  this.close();
953
949
  }
954
- recaptchaTokensPromise.catch(() => {
950
+ recaptchaTokenPromise.catch(() => {
955
951
  if (this.#isClosed) return;
956
952
  cta.disabled = false;
957
953
  cta.removeAttribute("aria-busy");
@@ -1006,8 +1002,27 @@ var ApplePayModal = class _ApplePayModal extends HTMLElement {
1006
1002
 
1007
1003
  // src/templates/apple-pay-button.template.html
1008
1004
  var apple_pay_button_template_default = `<style>
1009
- /* Use CSS variables for layout so parent walls can easily override placement and sizing */
1005
+ /*
1006
+ * Entry CTA only: \u201CSubscribe with [apple logo] Apple Pay\u201D.
1007
+ * Uses OS SF Pro via local() (no Marber). Modal styling is unchanged.
1008
+ */
1009
+ @font-face {
1010
+ font-family: 'WAP Apple Pay Text';
1011
+ src:
1012
+ local('SF Pro Text Light'),
1013
+ local('SFProText-Light'),
1014
+ local('SF Pro Text'),
1015
+ local('SFProText-Regular'),
1016
+ local('-apple-system'),
1017
+ local('BlinkMacSystemFont'),
1018
+ local('Helvetica Neue');
1019
+ font-weight: 300;
1020
+ font-style: normal;
1021
+ font-display: swap;
1022
+ }
1023
+
1010
1024
  teg-apple-pay-button {
1025
+ --wap-apple-pay-scale: 1.375; /* default height 44px / 32 */
1011
1026
  display: block;
1012
1027
  margin: var(--apple-pay-margin, 0);
1013
1028
  width: 100%;
@@ -1023,27 +1038,43 @@ var apple_pay_button_template_default = `<style>
1023
1038
  }
1024
1039
 
1025
1040
  teg-apple-pay-button .apple-pay-btn {
1026
- display: flex;
1041
+ display: inline-flex;
1027
1042
  align-items: center;
1028
1043
  justify-content: center;
1029
- gap: 0.375rem;
1030
1044
  width: 100%;
1031
1045
  min-width: 0;
1032
1046
  height: 100%;
1033
1047
  min-height: var(--apple-pay-height, 2.75rem);
1048
+ padding: 0 calc(8px * var(--wap-apple-pay-scale));
1049
+ box-sizing: border-box;
1034
1050
  background-color: var(--apple-pay-background-color, #000);
1035
1051
  color: var(--apple-pay-foreground-color, #fff);
1036
1052
  border: none;
1037
- border-radius: var(--apple-pay-border-radius, 1.375rem);
1053
+ border-radius: var(--apple-pay-border-radius, 5px);
1038
1054
  cursor: pointer;
1039
- font-family: var(--mb-typeface-sans, var(--wall-type-system-sans));
1040
- font-size: 1.0625rem;
1041
- font-weight: 500;
1055
+ font-family: 'WAP Apple Pay Text', -apple-system, BlinkMacSystemFont,
1056
+ 'SF Pro Text', 'Helvetica Neue', Helvetica, Arial, sans-serif;
1057
+ font-size: calc(12px * var(--wap-apple-pay-scale));
1058
+ font-weight: 300;
1059
+ font-style: normal;
1060
+ line-height: 1;
1061
+ letter-spacing: -0.01em;
1062
+ -webkit-font-smoothing: antialiased;
1063
+ -moz-osx-font-smoothing: grayscale;
1042
1064
  }
1043
1065
 
1044
- teg-apple-pay-button .apple-pay-btn svg {
1066
+ teg-apple-pay-button .apple-pay-btn__label {
1067
+ display: inline-flex;
1068
+ align-items: center;
1069
+ gap: calc(4px * var(--wap-apple-pay-scale));
1070
+ white-space: nowrap;
1071
+ }
1072
+
1073
+ teg-apple-pay-button .apple-pay-btn__apple-logo {
1045
1074
  flex-shrink: 0;
1046
1075
  display: block;
1076
+ width: calc(12px * var(--wap-apple-pay-scale));
1077
+ height: calc(14px * var(--wap-apple-pay-scale));
1047
1078
  color: currentColor;
1048
1079
  }
1049
1080
 
@@ -1052,6 +1083,10 @@ var apple_pay_button_template_default = `<style>
1052
1083
  cursor: default;
1053
1084
  }
1054
1085
 
1086
+ teg-apple-pay-button .apple-pay-btn.wap-loading .apple-pay-btn__label {
1087
+ visibility: hidden;
1088
+ }
1089
+
1055
1090
  teg-apple-pay-button .apple-pay-btn.wap-loading::before {
1056
1091
  content: '';
1057
1092
  position: absolute;
@@ -1065,11 +1100,6 @@ var apple_pay_button_template_default = `<style>
1065
1100
  animation: wap-button-spinner 0.8s linear infinite;
1066
1101
  }
1067
1102
 
1068
- teg-apple-pay-button .apple-pay-btn__logo {
1069
- display: inline-flex;
1070
- align-items: center;
1071
- }
1072
-
1073
1103
  teg-apple-pay-button .apple-pay-btn__loading {
1074
1104
  display: none;
1075
1105
  }
@@ -1084,17 +1114,26 @@ var apple_pay_button_template_default = `<style>
1084
1114
  }
1085
1115
  </style>
1086
1116
 
1087
- <div class="apple-pay-container" aria-label="Express checkout with Apple Pay">
1117
+ <div class="apple-pay-container" aria-label="Subscribe with Apple Pay">
1088
1118
  <button
1089
1119
  class="apple-pay-btn"
1090
1120
  type="button"
1091
- aria-label="Pay with Apple Pay"
1121
+ aria-label="Subscribe with Apple Pay"
1092
1122
  data-analytics="paywall:apple-pay-checkout"
1093
1123
  >
1094
- <span class="apple-pay-btn__logo">
1095
- <svg width="51" height="22" aria-label="Apple Pay" role="img">
1096
- <use href="#apple-pay-logo" />
1124
+ <span class="apple-pay-btn__label">
1125
+ Subscribe with
1126
+ <svg
1127
+ class="apple-pay-btn__apple-logo"
1128
+ width="17"
1129
+ height="19"
1130
+ viewBox="0 0 15 18"
1131
+ aria-hidden="true"
1132
+ role="img"
1133
+ >
1134
+ <use href="#apple-logo" />
1097
1135
  </svg>
1136
+ Apple Pay
1098
1137
  </span>
1099
1138
  <span class="apple-pay-btn__loading" aria-hidden="true">Loading...</span>
1100
1139
  </button>
@@ -1611,7 +1650,7 @@ async function handlePaymentAuthorized(event, session, sessionData, config) {
1611
1650
  ...event.payment.shippingContact && {
1612
1651
  shippingContact: event.payment.shippingContact
1613
1652
  },
1614
- recaptchaTokens: config.recaptchaTokens
1653
+ recaptchaToken: config.recaptchaToken
1615
1654
  });
1616
1655
  trackWalletPaymentSuccess(skuId, result.basketId);
1617
1656
  session.completePayment({ status: ApplePaySession.STATUS_SUCCESS });
@@ -2161,8 +2200,8 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2161
2200
  }
2162
2201
  const skuId = this.#offer.sku_id;
2163
2202
  const country = this.#country;
2164
- modal.onConfirm = (recaptchaTokensPromise) => {
2165
- this.#initiateApplePay(skuId, country, recaptchaTokensPromise);
2203
+ modal.onConfirm = (recaptchaTokenPromise) => {
2204
+ this.#initiateApplePay(skuId, country, recaptchaTokenPromise);
2166
2205
  };
2167
2206
  modal.open();
2168
2207
  }
@@ -2185,7 +2224,7 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2185
2224
  return null;
2186
2225
  }
2187
2226
  }
2188
- #buildSessionParams(skuId, country, sessionData, paymentOptions, recaptchaTokensPromise) {
2227
+ #buildSessionParams(skuId, country, sessionData, paymentOptions, recaptchaTokenPromise) {
2189
2228
  const offer = this.#offer;
2190
2229
  const totalAmount = offer.price?.purchase ? `${offer.price.purchase}` : DEFAULT_TOTAL;
2191
2230
  return {
@@ -2198,19 +2237,19 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2198
2237
  returnUrl: this.#returnUrl,
2199
2238
  userLoggedIn: sessionData.loggedIn,
2200
2239
  onPaymentAuthorized: async (event, session) => {
2201
- const recaptchaTokens = await recaptchaTokensPromise;
2240
+ const recaptchaToken = await recaptchaTokenPromise;
2202
2241
  return handlePaymentAuthorized(event, session, sessionData, {
2203
2242
  skuId,
2204
2243
  country,
2205
2244
  currency: offer.price?.currency_code ?? DEFAULT_CURRENCY,
2206
2245
  returnUrl: this.#returnUrl,
2207
2246
  supportedBillingCountries: this.#supportedBillingCountries,
2208
- recaptchaTokens
2247
+ recaptchaToken
2209
2248
  });
2210
2249
  }
2211
2250
  };
2212
2251
  }
2213
- #initiateApplePay(skuId, country, recaptchaTokensPromise) {
2252
+ #initiateApplePay(skuId, country, recaptchaTokenPromise) {
2214
2253
  try {
2215
2254
  const sessionData = this.#sessionData ?? _ApplePayButton.#ANONYMOUS_SESSION;
2216
2255
  const paymentOptions = this.#paymentOptions;
@@ -2223,7 +2262,7 @@ var ApplePayButton = class _ApplePayButton extends HTMLElement {
2223
2262
  country,
2224
2263
  sessionData,
2225
2264
  paymentOptions,
2226
- recaptchaTokensPromise
2265
+ recaptchaTokenPromise
2227
2266
  )
2228
2267
  );
2229
2268
  } catch {