@asteby/storefront-react 0.11.1 → 0.13.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.
package/dist/payments.cjs CHANGED
@@ -171,7 +171,8 @@ function mercadoPagoBricksAdapter(options = {}) {
171
171
  // fila de método de pago y se veía cortado (p. ej. AMEX partido). hideFormTitle oculta
172
172
  // la línea del título y las banderas.
173
173
  hideFormTitle: true,
174
- style: { theme: "default", ...opts.theme && Object.keys(opts.theme).length ? { customVariables: opts.theme } : {} }
174
+ // Dark page: the Brick's `dark` base theme, so it does not draw a white card; the shop tokens refine it.
175
+ style: { theme: opts.colorScheme === "dark" ? "dark" : "default", ...opts.theme && Object.keys(opts.theme).length ? { customVariables: opts.theme } : {} }
175
176
  }
176
177
  },
177
178
  callbacks: {
@@ -221,7 +222,13 @@ var PAYMENT_THEME_TOKENS = {
221
222
  "--sf-pay-error": "errorColor",
222
223
  "--sf-pay-success": "successColor",
223
224
  "--sf-pay-outline": "outlinePrimaryColor",
224
- "--sf-pay-radius": "borderRadiusMedium"
225
+ "--sf-pay-radius": "borderRadiusMedium",
226
+ "--sf-pay-radius-small": "borderRadiusSmall",
227
+ "--sf-pay-radius-large": "borderRadiusLarge",
228
+ "--sf-pay-outline-secondary": "outlineSecondaryColor",
229
+ "--sf-pay-primary-variant": "baseColorFirstVariant",
230
+ "--sf-pay-input-border-width": "inputBorderWidth",
231
+ "--sf-pay-form-padding": "formPadding"
225
232
  };
226
233
  function readPaymentTheme(el, tokens = PAYMENT_THEME_TOKENS) {
227
234
  const out = {};
@@ -233,6 +240,19 @@ function readPaymentTheme(el, tokens = PAYMENT_THEME_TOKENS) {
233
240
  }
234
241
  return out;
235
242
  }
243
+ function readPaymentScheme(el) {
244
+ if (!el || typeof getComputedStyle !== "function") return null;
245
+ const style = getComputedStyle(el);
246
+ const token = style.getPropertyValue("--sf-pay-scheme").trim();
247
+ if (token === "dark" || token === "light") return token;
248
+ const cs = (style.getPropertyValue("color-scheme") || style.colorScheme || "").toLowerCase();
249
+ const dark = /\bdark\b/.test(cs);
250
+ const light = /\blight\b/.test(cs);
251
+ if (dark && !light) return "dark";
252
+ if (light && !dark) return "light";
253
+ if (dark && light && typeof matchMedia === "function") return matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
254
+ return null;
255
+ }
236
256
 
237
257
  // src/payments/use-embedded-payment.ts
238
258
  var DEFAULT_ADAPTERS = {};
@@ -358,6 +378,7 @@ function useEmbeddedPayment(options) {
358
378
  await adapter.load(client, { ...live.current.nonce ? { nonce: live.current.nonce } : {}, timeoutMs: sdkTimeoutMs });
359
379
  if (stale()) return;
360
380
  const theme = live.current.theme ?? readPaymentTheme(container);
381
+ const colorScheme = live.current.colorScheme ?? readPaymentScheme(container);
361
382
  const m = await adapter.mount({
362
383
  container,
363
384
  client,
@@ -365,6 +386,7 @@ function useEmbeddedPayment(options) {
365
386
  ...live.current.email ? { email: live.current.email } : {},
366
387
  ...live.current.locale ? { locale: live.current.locale } : {},
367
388
  theme,
389
+ ...colorScheme ? { colorScheme } : {},
368
390
  onReady: () => {
369
391
  if (stale()) return;
370
392
  clearTimeout(timer);
@@ -777,6 +799,8 @@ var ES = {
777
799
  legend: "M\xE9todo de pago",
778
800
  pay: "Pagar",
779
801
  placeOrder: "Realizar el pedido",
802
+ placeOrderCash: "Generar ficha de pago",
803
+ chooseDelivery: "Elige la entrega para continuar",
780
804
  payRedirect: "Continuar al pago",
781
805
  continue: "Continuar",
782
806
  retryAddress: "Guardar direcci\xF3n y continuar",
@@ -805,6 +829,8 @@ var EN = {
805
829
  legend: "Payment method",
806
830
  pay: "Pay",
807
831
  placeOrder: "Place order",
832
+ placeOrderCash: "Get payment slip",
833
+ chooseDelivery: "Choose delivery to continue",
808
834
  payRedirect: "Continue to payment",
809
835
  continue: "Continue",
810
836
  retryAddress: "Save address and continue",
@@ -858,6 +884,7 @@ var LOGOS = {
858
884
  "mastercard": { src: "data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1000 618%22%3E%3Cpath fill=%22%23EB001B%22 d=%22M308 0a309 309 0 1 0 2 0z%22/%3E%3Cpath fill=%22%23F79E1B%22 d=%22M690 0a309 309 0 1 0 2 0z%22/%3E%3Cpath fill=%22%23FF5F00%22 d=%22M500 66a309 309 0 0 0 0 486 309 309 0 0 0 0-486%22/%3E%3C/svg%3E", ar: 1.618, mono: false },
859
885
  "mercadopago": { src: "data:image/png;base64,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", ar: 3.838, mono: false },
860
886
  "oxxo": { src: "data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 version=%221.0%22 viewBox=%2235.43 35.45 885.83 448.9%22%3E%3Cpath d=%22M-792.46-878.05c0-29.6 23.78-53.62 53.13-53.62H40.12c29.33 0 53.13 24.02 53.13 53.62v339.17c0 29.6-23.8 53.6-53.13 53.6h-779.45c-29.35 0-53.13-24-53.13-53.6z%22 style=%22fill:%23fff;fill-opacity:1;fill-rule:nonzero;stroke:none%22 transform=%22translate(827.89 968.22)%22/%3E%3Cpath d=%22M-791.84-883.46c0-27.22 21.88-49.3 48.86-49.3h787.5c26.99 0 48.85 22.08 48.85 49.3v1.57h-885.21zM93.37-534.4v1.22c0 27.23-21.86 49.31-48.84 49.31h-787.5c-26.99 0-48.87-22.08-48.87-49.3v-1.23z%22 style=%22fill:%23fbb110;fill-opacity:1;fill-rule:nonzero;stroke:none%22 transform=%22translate(827.89 968.22)%22/%3E%3Cpath d=%22M-179.2-708.84c0 68.92 55.35 124.79 123.66 124.79 68.29 0 123.67-55.87 123.67-124.8s-55.38-124.8-123.67-124.8c-68.3 0-123.66 55.87-123.66 124.82m-589.6 0c0 68.92 55.37 124.79 123.68 124.79 68.29 0 123.67-55.87 123.67-124.8s-55.38-124.81-123.67-124.81c-68.3 0-123.69 55.87-123.69 124.82m862.17 150.8h-609.75c10.99-7.78 21.22-18.43 32.39-32.8l62.11-80 27.13 34.6 30.19-40.52-26.4-33.9 63.22-81.44c20.07-25.83-18.31-56.19-38.4-30.36L-422-750.47l-56.8-72.93c-20.1-25.76-58.42 4.67-38.32 30.46l64.2 82.3-69.46 89.44c-24.68 31.78-49.31 60.92-98.2 63.17h-171.26v-300.24h606.54c-10.43 7.7-20.27 18-30.94 31.76l-62.1 79.96-27.15-34.57-30.16 40.52 26.4 33.89-63.25 81.43c-20.05 25.83 18.34 56.19 38.4 30.36l55.89-71.96 56.8 72.91c20.1 25.78 58.42-4.65 38.32-30.43l-64.2-82.34 69.46-89.41c22.67-29.23 45.32-56.22 86.8-62.12h184.4zm-222.94-150.81c0-41.28 33.15-74.73 74.03-74.73s74.02 33.45 74.02 74.73c0 41.25-33.13 74.7-74.02 74.7s-74.03-33.45-74.03-74.7m-589.58 0c0-41.28 33.15-74.73 74.03-74.73 40.87 0 74.02 33.45 74.02 74.73 0 41.25-33.15 74.7-74.02 74.7-40.88 0-74.03-33.45-74.03-74.7%22 style=%22fill:%23e70020;fill-opacity:1;fill-rule:nonzero;stroke:none%22 transform=%22translate(827.89 968.22)%22/%3E%3C/svg%3E", ar: 1.973, mono: false },
887
+ "paquetexpress": { src: "data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2217 27 155 34%22%3E%3Crect x=%2217%22 y=%2227%22 width=%22155%22 height=%2234%22 rx=%223%22 fill=%22%23002a52%22/%3E%3Cg fill=%22%23FFF%22 fill-rule=%22evenodd%22%3E%3Cpath d=%22M35.6 46.8V30.3h3.3c1.7 0 3 .4 3.9 1.2.8.8 1.3 2 1.3 3.6s-.4 2.8-1.3 3.6c-.8.9-1.9 1.3-3.4 1.3h-.7l-.1 6.8h-3zm3-9.3h.4c.7 0 1.2-.2 1.5-.6.4-.4.6-1 .6-1.7 0-.8-.2-1.4-.5-1.8-.4-.4-.9-.5-1.6-.5h-.4v4.6zm26.6 9L63.5 48 62 46.3c-.3.2-.7.4-1.1.5-.4.1-.9.2-1.4.2-1.8 0-3.2-.8-4.2-2.3-.9-1.5-1.4-3.6-1.4-6.4 0-2.5.5-4.5 1.5-6s2.3-2.2 4.1-2.2c1.8 0 3.1.7 4.1 2.3 1 1.5 1.5 3.6 1.5 6.4 0 1.3-.1 2.5-.4 3.5-.2.9-.6 1.7-1.1 2.3l1.6 1.9zm-5.2-6l1.5 1.7c.1-.4.2-1 .3-1.5.1-.6.1-1.3.1-2.1 0-1.8-.2-3.1-.6-4-.4-.9-1-1.4-1.8-1.4-.9 0-1.5.5-1.9 1.4-.4.9-.6 2.4-.6 4.3 0 1.6.2 2.9.6 3.8.5.8 1.1 1.3 1.8 1.3.1 0 .2 0 .3-.1h.2L58.3 42l1.7-1.5zm16.5-10.2v10.4c0 1.3 0 2.2-.1 2.7s-.2 1-.4 1.3c-.4.8-.9 1.4-1.7 1.8-.7.3-1.6.5-2.8.5-1.1 0-2.1-.2-2.8-.5-.8-.4-1.3-1-1.7-1.8-.2-.4-.3-.8-.4-1.3 0-.6-.1-1.5-.1-2.7V30.3h3.2v10.6c0 1.4.1 2.3.4 2.7.3.3.7.5 1.4.5s1.2-.2 1.4-.6c.3-.4.4-1.2.4-2.6V30.3h3.2zM78.6 46.8V30.3h6.7v3.1h-3.7v3.3h3.3v3h-3.3v3.9h3.7v3.2zM89.4 46.8V33.4H87v-3.1h8.1v3.1h-2.5v13.4zM96.5 46.8V30.3h6.7v3.1h-3.7v3.3h3.3v3h-3.3v3.9h3.7v3.2zM111.5 46.8l-1.3-3.3-.3-1.2c-.1-.4-.2-.8-.3-1.3-.1.5-.2.9-.3 1.3-.1.5-.2.8-.3 1.2l-1.1 3.3h-3.6l3.7-8.3-3.4-8.2h3.4l1.2 3.5c0 .2.1.4.2.7.1.4.2.8.3 1.3.1-.5.1-.8.2-1.2.1-.3.2-.6.3-.8l1.2-3.5h3.3l-3.4 8.2 3.6 8.3h-3.4zm4.4 0V30.3h3.3c1.8 0 3.1.4 3.9 1.2.9.8 1.3 2 1.3 3.6s-.4 2.8-1.2 3.6c-.9.9-2 1.3-3.5 1.3h-.7v6.8h-3.1zm3.1-9.3H119.3c.7 0 1.2-.2 1.6-.6.3-.4.5-1 .5-1.7 0-.8-.2-1.4-.5-1.8-.3-.4-.9-.5-1.6-.5h-.2-.1v4.6zm6.6 9.3V30.3h3.3c1.8 0 3.1.4 4 1.1.8.8 1.2 1.9 1.2 3.6 0 1.1-.2 2.1-.6 2.8-.5.7-1.1 1.2-1.9 1.5l3 7.5h-3.3l-2.6-6.8v6.8h-3.1zm3.1-9.3H129c.7 0 1.2-.2 1.6-.6.3-.4.5-1 .5-1.8s-.1-1.3-.5-1.7c-.3-.4-.8-.5-1.5-.5h-.3-.1v4.6zM136 46.8V30.3h6.7v3.1h-3.6v3.3h3.3v3h-3.3v3.9h3.6v3.2zM144.6 46.3v-3.5c.4.4.8.7 1.2.8.4.2.8.3 1.2.3.5 0 1-.1 1.3-.4.3-.3.4-.7.4-1.2 0-.7-.4-1.3-1.2-2.1-.3-.2-.4-.3-.5-.4-1-1-1.7-1.8-2.1-2.5-.3-.7-.5-1.5-.5-2.4 0-1.5.4-2.6 1.2-3.5.7-.9 1.8-1.3 3-1.3.5 0 .9.1 1.3.2.5.1.9.3 1.4.6v2.9c-.6-.3-1-.4-1.3-.6-.3-.1-.6-.1-.8-.1-.5 0-.9.1-1.2.4-.3.3-.4.7-.4 1.2 0 .4.1.8.3 1.2.3.4.8.9 1.6 1.6 1 1 1.7 1.8 2 2.4.3.6.5 1.4.5 2.3 0 1.5-.4 2.7-1.2 3.5-.9.9-2 1.3-3.4 1.3-.5 0-1 0-1.5-.2-.4-.1-.9-.3-1.3-.5m8.4 0v-3.5c.4.4.8.7 1.2.8.4.2.8.3 1.2.3.5 0 1-.1 1.3-.4.3-.3.4-.7.4-1.2 0-.7-.4-1.3-1.2-2.1-.3-.2-.4-.3-.5-.4-1-1-1.7-1.8-2.1-2.5-.3-.7-.5-1.5-.5-2.4 0-1.5.4-2.6 1.2-3.5.7-.9 1.8-1.3 3-1.3.5 0 .9.1 1.3.2.5.1.9.3 1.4.6v2.9c-.6-.3-1-.4-1.3-.6-.3-.1-.6-.1-.8-.1-.5 0-.9.1-1.2.4-.3.3-.4.7-.4 1.2 0 .4.1.8.3 1.2.3.4.8.9 1.6 1.6 1 1 1.7 1.8 2 2.4.3.6.5 1.4.5 2.3 0 1.5-.4 2.7-1.2 3.5-.9.9-2 1.3-3.4 1.3-.5 0-1 0-1.5-.2-.4-.1-.9-.3-1.3-.5M163.6 46.8v-2.6h.8l.4 1.8.5-1.8h.8v2.6h-.5v-2l-.5 2h-.5l-.5-2v2z%22%3E%3C/path%3E %3Cpath d=%22M26 27h-8v26.7c0 3.5 2.7 6.3 6.1 6.3h146.5v-3.3H31.5c-3.1 0-5.5-2.5-5.5-5.6V27zm3.2 21.6c0 2.7 2.1 4.8 4.7 4.8h136.7v-3.3h-137c-.7 0-1.2-.5-1.2-1.2V27h-3.2v21.6zm19.4-11.5l-.4-2.5-.3 2.5-.7 4.4h2.2l-.8-4.4zm1.4-6.8l3.8 16.5h-3.3l-.6-2.8h-3.2l-.6 2.8H43l3.7-16.5H50zM166.6 46.8h.5v-.5h-.5zM168.1 45.3h.8c.1 0 .2-.1.2-.1V45v-.2c-.1-.1-.1-.1-.2-.1-.1-.1-.2-.1-.4-.1h-.4v.7zm-.5 1.5v-2.6h1.1c.2 0 .4 0 .6.1.1 0 .2.1.3.2 0 .1.1.3.1.4 0 .2-.1.4-.2.5-.1.2-.3.2-.5.3.1 0 .2.1.3.2 0 .1.1.2.3.4l.3.5h-.6l-.4-.5c-.1-.2-.2-.4-.3-.4 0-.1-.1-.1-.1-.1-.1-.1-.2-.1-.3-.1h-.1v1.1h-.5zM170.2 46.8h.4v-.5h-.4z%22%3E%3C/path%3E%3C/g%3E%3C/svg%3E", ar: 4.559, mono: false },
861
888
  "paypal": { src: "data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 1310 439.6%22%3E%3Cpath d=%22M1310 0v328.3h-74.7V0zm-102.2 110.8v218.1h-66.4v-18.8c-8.4 8.2-18 14.4-28.6 18.8a87 87 0 0 1-34.7 7c-15.6 0-30.1-2.9-43.4-8.7-13.3-6.1-24.9-14.4-34.7-24.8-9.9-10.5-17.7-22.7-23.5-36.6-5.5-14.2-8.2-29.5-8.2-45.8s2.7-31.4 8.2-45.3c5.8-14.2 13.6-26.6 23.5-37.1a104.5 104.5 0 0 1 34.7-24.4c13.3-6.1 27.8-9.2 43.4-9.2 12.4 0 24 2.3 34.7 7a88 88 0 0 1 28.6 18.8V111h66.4zm-117.7 158.7c13.6 0 24.7-4.6 33.4-14q13.5-13.95 13.5-35.7c0-21.75-4.5-26.5-13.5-35.7-8.7-9.3-19.9-14-33.4-14s-24.9 4.6-33.9 14c-8.7 9.3-13 21.2-13 35.7s4.4 26.5 13 35.7c9 9.3 20.3 14 33.9 14M861.7 0c19.7 0 36.5 2.8 50.4 8.3s25.6 13.2 35.2 23.1c9.8 10.2 17.5 21.8 23 34.9s8.2 27.2 8.2 42.3-2.7 29.2-8.2 42.3a112 112 0 0 1-23 34.9c-9.5 9.9-21.3 17.6-35.2 23.1s-30.7 8.3-50.4 8.3h-36v111.6h-76V0zm-10.9 149.6c10.2 0 17.9-1 23.5-3.1 5.8-2.3 10.6-5.3 14.3-8.7 7.8-7.3 11.7-17 11.7-29.2s-3.9-21.9-11.7-29.2c-3.8-3.5-8.5-6.3-14.3-8.3-5.5-2.3-13.3-3.5-23.5-3.5h-25.2v82zm-381.1-38.8h82.5l56 104.6h.9L659 110.8h76.4L571.7 439.6h-76l74.7-150.4zm-14.7 0v218.1h-66.4v-18.8c-8.4 8.2-18 14.4-28.6 18.8a87 87 0 0 1-34.7 7c-15.6 0-30.1-2.9-43.4-8.7-13.3-6.1-24.9-14.4-34.7-24.8-9.8-10.5-17.7-22.7-23.5-36.6-5.5-14.2-8.2-29.5-8.2-45.8s2.7-31.4 8.2-45.3c5.8-14.2 13.6-26.6 23.5-37.1a103.5 103.5 0 0 1 34.7-24.4c13.3-6.1 27.8-9.2 43.4-9.2 12.4 0 24 2.3 34.7 7a88 88 0 0 1 28.6 18.8V111H455zM337.3 269.5c13.6 0 24.7-4.6 33.5-14q13.5-13.95 13.5-35.7c0-21.75-4.5-26.5-13.5-35.7-8.7-9.3-19.9-14-33.5-14s-24.9 4.6-33.9 14c-8.7 9.3-13 21.2-13 35.7s4.4 26.5 13 35.7c9 9.3 20.3 14 33.9 14M112 0c19.7 0 36.5 2.8 50.4 8.3s25.6 13.2 35.2 23.1c9.8 10.2 17.5 21.8 23 34.9s8.2 27.2 8.2 42.3-2.7 29.2-8.2 42.3a112 112 0 0 1-23 34.9c-9.5 9.9-21.3 17.6-35.2 23.1s-30.7 8.3-50.4 8.3H76v111.6H0V0zm-10.8 149.6c10.2 0 17.9-1 23.5-3.1 5.8-2.3 10.6-5.3 14.3-8.7 7.8-7.3 11.7-17 11.7-29.2s-3.9-21.9-11.7-29.2c-3.8-3.5-8.5-6.3-14.3-8.3-5.5-2.3-13.3-3.5-23.5-3.5H76v82z%22/%3E%3C/svg%3E", ar: 2.98, mono: true },
862
889
  "santander": { src: "data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 version=%221.0%22 viewBox=%224 3.75 391.5 79%22%3E%3Cpath d=%22M-137.26 287.82a17.5 17.5 0 0 0 .55 7.23c.95 2.87 2.27 4.94 7.12 11.25 5.12 6.66 6.76 9.08 7.98 12.53 1 2.83 1.02 4.46.59 7.02 4.49.86 11.84 3.24 16.77 6.2 4.57 2.81 7.9 6.46 9.11 10 .72 2.09.7 5.33-.07 7.36a16 16 0 0 1-3.22 5.2c-5.9 6.46-17.6 11.1-31.67 12.59-3.11.32-10.74.56-13.36.4-18.8-1.1-33.92-7.59-38.22-16.42-1.8-3.67-1.75-6.83.14-10.46 1.55-3 5.82-6.7 10.83-9.4a85 85 0 0 1 14.2-5.43c.24 3.17 6.4 10.74 8.45 13.42 4.46 5.84 6.22 8.62 7.48 10.85.76 1.33 1.18 2.19.97 4.74 0 0 1.72-1.56 2.36-2.87.84-1.71 1.14-3.44.98-5.67-.2-2.68-.65-4.32-1.93-6.94-1.25-2.55-3.03-5.13-6.43-9.3-4.79-5.88-6.56-9.1-7.3-13.3-.8-4.66.5-9.6 3.18-12.02a10 10 0 0 1 1.53-1.04s-.08 1.2-.08 2.57c0 2.88.33 4.38 1.43 6.58 1.38 2.73 3.28 5.28 9.11 12.22 5.16 6.14 6.76 9.26 6.76 13.16v1.88s1.37-1.04 2-2c2-3.01 2.32-7.72.8-11.9-1.05-2.86-2.74-5.46-7.74-11.75-5.1-6.4-7.23-11.53-7.23-15.8s.92-8.35 4.91-10.9%22 style=%22fill:%23fe001e;fill-opacity:1;display:inline%22 transform=%22translate(184.65 -280.17)scale(.98661)%22/%3E%3Cg style=%22fill:%23fe001e;fill-opacity:1%22%3E%3Cpath d=%22M-41.6 350.75c.12-1.43.02-2.84-.14-3.59-.61-2.94-2.79-5.9-5.93-8.08a64 64 0 0 0-6.79-3.51c-5.94-2.75-7.6-3.74-9.09-5.4a7.2 7.2 0 0 1-2-5.38c0-1.55.08-2.01.58-3.1 1.62-3.52 5.65-5.4 10.35-4.8 2.76.35 4.21.97 5.84 2.5 1.7 1.59 2.57 3.43 3.04 6.46l.14 1.71h2.57l-.22-11.75-.85-.21c-.65-.16-4.9-.97-7.16-1.26-3.37-.42-4.73-.47-6.71-.24-3.84.44-7.01 1.9-9.4 4.31a12.2 12.2 0 0 0-3.81 8.4c-.2 3.42.9 6.25 3.34 8.67 2.04 2.03 2.92 2.56 9.24 5.57 8.1 3.85 9.93 4.99 11.16 7.88 1.06 2.51 1.14 5.33.04 7.59-2.82 5.76-11.7 7.26-17.22 2.92a11.4 11.4 0 0 1-4.06-6.61l-.26-1.34h-2.19l.39 11.26s4.2 1.13 6.17 1.33c1.48.16 2.95.45 4.44.45 3 0 4.38.39 7.48-.64 3.2-1.07 10.26-3.2 11.06-13.14m19.71-18.49c3.42 0 6.4 1.5 7.83 3.7a8.6 8.6 0 0 1 1.36 5.06v16.24c0 1.93 1.39 2.55 3.4 1.87l1.51-.58v2.13l-7.48 3.27c-.87.39-1.46-.5-1.88-2.13l-.47-1.57-1.24.98a11.7 11.7 0 0 1-7.52 2.66c-3.23.01-5.34-.43-7.44-3.78a8 8 0 0 1-.26-6.4c.96-2.18 2.86-3.3 10.85-6.39l5.4-2.02v-1.5c0-5.55-1.5-7.26-3.42-8.33-1.55-.86-3.6-.64-5.56.64-1.61 1.06-2.1 2.84-1.27 4.67.64 1.41.42.97.42 1.02l-4.39 2.31s-.76-1.3-.97-2c-1.01-3.3.28-5.17 5.24-7.9 2.59-1.42 4.11-1.95 5.89-1.95m4.06 15.39s-7.03 2.97-8.38 3.65c-1.08.55-2.32 1.53-2.73 2.33a5 5 0 0 0 .21 4.06 5.4 5.4 0 0 0 2.35 2.35c.35.15 1.53.42 2.35.43q2.52.02 5.22-2.18l.98-.81zm22.01-15.39v5.75l1.46-1.39c3.19-3 6.23-4.36 8.58-4.36 5.34 0 10.25 4.7 10.04 11.33v15.38c0 1.71.43 2.78 2.14 2.78h2.77v2.14H14.44v-2.14h2.14c1.7 0 2.35-1.07 2.35-2.78V343.6c0-3.2-1.18-4.8-2.14-5.77-1.28-1.28-2.84-1.64-5.13-1.5-1.77.12-3.6 1.06-5.68 2.75l-1.37 1.1v19.87c0 1.07.43 1.71 1.5 1.71h2.78v2.14H-5.64v-2.14h1.92c1.7 0 3-1.07 3-2.78v-16.45c0-4.27-1.3-5.55-4.92-3.63v-2.29c2.35-.7 6.62-2.84 8.97-4.34zm41.23 31.63c1.93 0 2.38-.22 4.17-1.73l3.52-2.97-.85-1.5-1.57.84c-2.35 1.25-4.2 1.51-6.55.44-2-.9-3.2-4.06-3.2-5.77v-17.3h9.82l1.07-3h-10.9v-9.82h-1.06c-2.57 4.7-6.41 9.18-11.11 11.96v.86h6.83v17.3c0 4.06 1.5 7.05 3.85 8.76a8.6 8.6 0 0 0 5.98 1.93m22.65-31.63c3.42 0 6.41 1.5 7.83 3.7a8.6 8.6 0 0 1 1.36 5.06v16.24c0 1.93 1.4 2.55 3.4 1.87l1.51-.58v2.13l-7.48 3.27c-.87.39-1.46-.5-1.87-2.13l-.48-1.57-1.24.98a11.7 11.7 0 0 1-7.52 2.66c-3.22.01-5.34-.43-7.44-3.78a8 8 0 0 1-.26-6.4c.96-2.18 2.87-3.3 10.85-6.39l5.4-2.02v-1.5c0-5.55-1.5-7.26-3.42-8.33-1.54-.86-3.6-.64-5.55.64-1.62 1.06-2.11 2.84-1.28 4.67.64 1.41.42.97.42 1.02l-4.39 2.31s-.75-1.3-.97-2c-1-3.3.28-5.17 5.24-7.9 2.6-1.42 4.11-1.95 5.9-1.95m4.06 15.39s-7.03 2.97-8.38 3.65c-1.08.55-2.32 1.53-2.73 2.33a5 5 0 0 0 .21 4.06 5.4 5.4 0 0 0 2.35 2.35c.36.15 1.53.42 2.35.43q2.52.02 5.22-2.18l.98-.81zm22-15.39v5.75l1.47-1.39c3.18-3 6.22-4.36 8.57-4.36 5.34 0 10.26 4.7 10.04 11.33v15.38c0 1.71.43 2.78 2.14 2.78h2.78v2.14h-14.75v-2.14h2.14c1.7 0 2.35-1.07 2.35-2.78V343.6c0-3.2-1.18-4.8-2.14-5.77-1.28-1.28-2.84-1.64-5.12-1.5-1.78.12-3.6 1.06-5.7 2.75l-1.36 1.1v19.87c0 1.07.43 1.71 1.5 1.71h2.78v2.14H84.3v-2.14h1.92c1.71 0 3-1.07 3-2.78v-16.45c0-4.27-1.29-5.55-4.92-3.63v-2.29c2.35-.7 6.62-2.84 8.97-4.34zm63.46 27.99v-2.13c-2.35 1.07-3.42 1.07-4.23.52-1.15-.78-1.12-2.23-1.12-2.23v-47h-.64a49 49 0 0 1-10.04 4.9v2.36c1.71-.64 2.99-.98 4.06-.43.7.39 1.07.85 1.07 1.92v15.98l-1.26-.5c-2.51-1.03-3.81-1.26-6.86-1.26-2.55 0-3.08.08-4.6.58-7.02 2.35-11.52 9.21-11.15 17.03.21 4.47 1.5 7.98 4.43 10.48 2.99 2.56 5.55 3.42 8.54 3.42 4.06 0 6.41-.81 9.36-2.81.9-.61 1.75-1.25 1.75-1.25a8.7 8.7 0 0 0 1.5 4.48zm-22.15-.38c-4-1.42-6.9-6.35-7.27-12.33-.47-7.48 3.67-12.71 10.06-12.71 2.69 0 4.75.73 7.23 2.58l1.23.91-.1 19.2-1.38.83a10.4 10.4 0 0 1-6.21 1.83c-2 .07-2.67.01-3.56-.3m45.11 3.69a26 26 0 0 0 6.95-3.1v-2.14c-2.35 1.71-6.08 2.77-9.4 2.78q-5.43 0-8.34-3.2c-2.83-3.16-3.63-5.77-4.12-12.18h22.5s0-3.21-1.28-6.2c-.88-2.05-1.71-3.63-4.06-5.13-2.2-1.4-5.17-2-7.7-2-2.62-.03-3.02.02-4.45.54-6.65 2.43-11.17 9.32-10.62 16.17.54 6.63 4.4 11.94 10.25 14.07 2.59.95 7.47 1.13 10.27.39m-12.28-26.4c1.5-1.49 3.2-2.34 5.98-2.34 2.56 0 4.27.64 5.98 2.35 1.29 1.28 1.93 2.35 2.2 5.98h-16.78c.27-2.56 1.12-4.49 2.62-5.98m32.48-4.92v7.06a23 23 0 0 1 4.05-5.13 7 7 0 0 1 4.92-1.93c1.07 0 3.84.86 3.84.86v6.4h-1.06c-.43-1.7-1.93-2.55-4.06-2.55-2.78 0-4.6 1.12-5.72 2.8s-1.55 2.54-1.55 6.17v14.1c0 1.07.43 1.71 1.5 1.71h2.78v2.14h-14.53v-2.14h1.92c1.7 0 3-1.07 3-2.78v-16.45c0-4.7-1.72-4.49-4.71-3.2v-2.14c2.78-1.07 6.2-2.57 8.76-4.92z%22 style=%22fill:%23fe001e;fill-opacity:1;display:inline%22 transform=%22translate(184.65 -280.17)scale(.98661)%22/%3E%3C/g%3E%3C/svg%3E", ar: 4.956, mono: false },
863
890
  "scotiabank": { src: "data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220.14 0.09 71.91 10.28%22%3E%3Cpath d=%22M6.73 8.37q.24-.6.23-1.25c.02-.63-.2-1.24-.6-1.72a5 5 0 0 0-2.31-1.23q-.3-.09-.6-.22-.27-.13-.46-.33a.8.8 0 0 1-.2-.55c.01-.3.18-.57.44-.7a2 2 0 0 1 1.68 0q.36.12.69.32l.9-1.8A5 5 0 0 0 3.77.13q-.7 0-1.36.23A3 3 0 0 0 .7 2.06q-.24.6-.23 1.25c.02.68.31 1.32.8 1.8q.7.6 1.6.9l.8.27q.3.12.57.3a1 1 0 0 1 .31.36q.1.2.07.43a1 1 0 0 1-.3.58q-.44.31-.98.27-.61 0-1.18-.28a9 9 0 0 1-.95-.53L.13 9.27a4.8 4.8 0 0 0 4.62.84q.66-.23 1.21-.68.5-.46.77-1.06m5.82-.58a1.57 1.57 0 1 1 0-1.96l1.4-1.41a3.5 3.5 0 0 0-2.62-1.17c-1.96 0-3.65 1.4-3.65 3.55 0 2.16 1.7 3.56 3.66 3.56 1 0 1.96-.42 2.63-1.16zm0 0%22 style=%22fill:%23eb0f19;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.352778%22/%3E%3Cpath d=%22M17.6 3.25a3.56 3.56 0 1 0-.01 7.11 3.56 3.56 0 0 0 0-7.11m0 5.12a1.57 1.57 0 1 1 .02-3.14 1.57 1.57 0 0 1-.02 3.14m8.09-4.95h-.97v-2.1h-2.13v2.1h-.97v1.92h.97v4.85h2.13V5.34h.97zM27.72.13a1.19 1.19 0 1 0 0 2.38 1.19 1.19 0 0 0 0-2.38m-1.06 3.29h2.12v6.77h-2.12zM37.1 10.2V3.42h-2.08v.71l-.2-.16a2.6 2.6 0 0 0-1.79-.72c-1.83 0-3.37 1.63-3.37 3.55 0 1.93 1.55 3.56 3.37 3.56.67 0 1.31-.25 1.8-.72l.2-.17v.72Zm-3.72-1.8a1.6 1.6 0 1 1 .02-3.2 1.6 1.6 0 0 1-.02 3.2m6.88 1.8v-.72l.2.17a2.6 2.6 0 0 0 1.8.72c1.82 0 3.37-1.63 3.37-3.56s-1.55-3.56-3.38-3.56c-.67 0-1.31.26-1.8.72l-.19.17V.3H38.2v9.9Zm.05-3.39a1.6 1.6 0 1 1 1.6 1.6 1.6 1.6 0 0 1-1.6-1.6m13.47 3.39V3.42h-2.07v.71l-.2-.16a2.6 2.6 0 0 0-1.79-.72c-1.83 0-3.37 1.63-3.37 3.55 0 1.93 1.55 3.56 3.37 3.56.67 0 1.32-.25 1.8-.72l.2-.17v.72Zm-3.7-1.8a1.6 1.6 0 1 1 0-3.2 1.6 1.6 0 0 1 0 3.2m8.12-3.16c.69 0 1.26.57 1.26 1.27v3.7h2.12V6.24c0-1.8-1.04-2.97-2.68-2.97-.68 0-1.39.3-1.97 1.24V3.44H54.8v6.76h2.11V6.5a1.27 1.27 0 0 1 1.28-1.26m11.13 4.96-2.6-3.4 2.42-3.38h-2.48L64.7 6.16V.3h-2.13v9.9h2.13V7.4l2.14 2.8zm1.5-2.37a1.19 1.19 0 1 0-.01 2.37 1.19 1.19 0 0 0 .01-2.37m0 2.13a.95.95 0 1 1 0-1.9.95.95 0 0 1 0 1.9m0 0%22 style=%22fill:%23eb0f19;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.352778%22/%3E%3Cpath d=%22M70.82 9.2h-.19v.46h-.23v-1.3h.5c.23 0 .42.2.42.43q-.02.27-.24.38l.27.49h-.28Zm-.19-.2h.27q.18-.02.2-.2a.2.2 0 0 0-.2-.2h-.27zm0 0%22 style=%22fill:%23eb0f19;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:.352778%22/%3E%3C/svg%3E", ar: 6.995, mono: false },
@@ -910,8 +937,8 @@ var LIST = [
910
937
  B("googlepay", "Google Pay", "wallet", "#FFFFFF", "#3C4043", "G Pay"),
911
938
  // Cash points and transfers (Mexico).
912
939
  B("oxxo", "OXXO", "cash", "#E21E26", "#FFE600"),
913
- B("spei", "SPEI", "bank", "#14365F", "#FFFFFF"),
914
- B("stp", "STP", "bank", "#14365F", "#FFFFFF", "SPEI"),
940
+ B("spei", "SPEI", "bank", "#14365F", "#FFFFFF", void 0, "transfer"),
941
+ B("stp", "STP", "bank", "#14365F", "#FFFFFF", "SPEI", "transfer"),
915
942
  B("7eleven", "7-Eleven", "cash", "#00704A", "#FFFFFF", "7-11"),
916
943
  B("circlek", "Circle K", "cash", "#DA291C", "#FFFFFF", "K"),
917
944
  B("soriana", "Soriana", "cash", "#C8102E", "#FFFFFF"),
@@ -1072,6 +1099,14 @@ function BrandMark({ brand, logoUrl, size = 24, title, className }) {
1072
1099
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M24 8.52a9 9 0 0 1 0 14.96a9 9 0 0 1 0-14.96z", fill: "#FF5F00" })
1073
1100
  ] });
1074
1101
  }
1102
+ if (found?.shape === "transfer") {
1103
+ const label = (found.mark ?? found.name).split("\n")[0];
1104
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 48 32", width, height, className, style, "data-sf-brand-mark": key, "data-sf-brand-source": "badge", focusable: "false", ...a11y, children: [
1105
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0.5", y: "0.5", width: "47", height: "31", rx: "5", fill: found.bg, stroke: ring }),
1106
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M6 12h11m0 0-3-3m3 3-3 3M17 20H6m0 0 3-3m-3 3 3 3", fill: "none", stroke: found.fg, strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round" }),
1107
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: "33", y: "16.5", dominantBaseline: "central", textAnchor: "middle", fill: found.fg, fontFamily: "system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif", fontWeight: 800, fontSize: 11, textLength: 22, lengthAdjust: "spacingAndGlyphs", children: label })
1108
+ ] });
1109
+ }
1075
1110
  const text = found ? found.mark ?? found.name : monogram(brand ?? "");
1076
1111
  const bg = found?.bg ?? "var(--sf-brand-mark-bg, #E7E9EE)";
1077
1112
  const fg = found?.fg ?? "var(--sf-brand-mark-fg, #2B2F38)";
@@ -1101,6 +1136,26 @@ function formFields(form) {
1101
1136
  for (const [k, v] of new FormData(form).entries()) if (typeof v === "string") out[k] = v;
1102
1137
  return out;
1103
1138
  }
1139
+ var CHOICE_STORAGE_PREFIX = "sf:pay-choice:";
1140
+ function readStoredChoice(scope) {
1141
+ if (!scope || typeof window === "undefined") return null;
1142
+ try {
1143
+ const raw = window.sessionStorage.getItem(CHOICE_STORAGE_PREFIX + scope);
1144
+ if (!raw) return null;
1145
+ const v = JSON.parse(raw);
1146
+ return typeof v?.choice === "string" ? v : null;
1147
+ } catch {
1148
+ return null;
1149
+ }
1150
+ }
1151
+ function writeStoredChoice(scope, value) {
1152
+ if (!scope || typeof window === "undefined") return;
1153
+ try {
1154
+ window.sessionStorage.setItem(CHOICE_STORAGE_PREFIX + scope, JSON.stringify(value));
1155
+ } catch {
1156
+ }
1157
+ }
1158
+ var EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
1104
1159
  var useHydrated = () => react.useSyncExternalStore(
1105
1160
  () => () => {
1106
1161
  },
@@ -1137,12 +1192,37 @@ function PaymentMethodSection(props) {
1137
1192
  classNames: cx = {},
1138
1193
  testIds = {},
1139
1194
  hideSubmit,
1140
- brickProps
1195
+ brickProps,
1196
+ rememberChoice = true,
1197
+ cashPointsVisible,
1198
+ payerEmailField = "email"
1141
1199
  } = props;
1142
1200
  const locale = useResolvedLocale(props.locale);
1143
1201
  const m = react.useMemo(() => paymentMethodMessages(locale, props.messages), [locale, props.messages]);
1144
1202
  const hydrated = useHydrated();
1145
- const [choiceValue2, setChoiceValue] = react.useState(props.defaultChoice ?? choices.defaultValue);
1203
+ const [choiceValue2, setChoiceValueState] = react.useState(props.defaultChoice ?? choices.defaultValue);
1204
+ const remember = rememberChoice && Boolean(scope);
1205
+ const rootRef = react.useRef(null);
1206
+ const [storedPoint, setStoredPoint] = react.useState(null);
1207
+ const setChoiceValue = (v) => {
1208
+ setChoiceValueState(v);
1209
+ if (remember) writeStoredChoice(scope, { choice: v, point: readCheckedPoint(rootRef.current) });
1210
+ };
1211
+ react.useEffect(() => {
1212
+ if (!remember) return;
1213
+ const stored = readStoredChoice(scope);
1214
+ if (!stored) return;
1215
+ if (choices.choices.some((c) => c.value === stored.choice)) setChoiceValueState(stored.choice);
1216
+ if (stored.point) setStoredPoint(stored.point);
1217
+ }, [remember, scope]);
1218
+ react.useEffect(() => {
1219
+ if (!storedPoint || !rootRef.current) return;
1220
+ const input = Array.from(rootRef.current.querySelectorAll(`input[name="${CASH_POINT_FIELD}"]`)).find((i) => i.value === storedPoint);
1221
+ if (input) input.checked = true;
1222
+ }, [storedPoint, choiceValue2]);
1223
+ const onPointChange = (point) => {
1224
+ if (remember && choiceValue2) writeStoredChoice(scope, { choice: choiceValue2, point });
1225
+ };
1146
1226
  const selected = choices.choices.find((c) => c.value === choiceValue2) ?? null;
1147
1227
  const noPayment = choices.choices.length === 0;
1148
1228
  const tid = (k) => testIds[k] ? { "data-testid": testIds[k] } : {};
@@ -1193,8 +1273,33 @@ function PaymentMethodSection(props) {
1193
1273
  }
1194
1274
  onEvent?.(e);
1195
1275
  };
1276
+ const [payerEmail, setPayerEmail] = react.useState(void 0);
1277
+ react.useEffect(() => {
1278
+ const form = formRef.current;
1279
+ if (!payerEmailField || !form) return;
1280
+ const selector = `[name="${typeof CSS !== "undefined" && CSS.escape ? CSS.escape(payerEmailField) : payerEmailField}"]`;
1281
+ const read = () => {
1282
+ const v = String(form.querySelector(selector)?.value ?? "").trim();
1283
+ setPayerEmail(EMAIL_RE.test(v) ? v : void 0);
1284
+ };
1285
+ read();
1286
+ const onChange = (e) => {
1287
+ if (e.target?.name === payerEmailField) read();
1288
+ };
1289
+ form.addEventListener("change", onChange);
1290
+ return () => form.removeEventListener("change", onChange);
1291
+ }, [formRef, payerEmailField]);
1196
1292
  const total = wantSync && (!settled || requote) ? null : renderAmount ? renderAmount(amount) : storefront.formatMoney(amount, locale);
1197
- const label = retryAddress ? m.retryAddress : addressFirst ? m.continue : selected?.mode === "plain" || !selected ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1293
+ const label = retryAddress ? m.retryAddress : addressFirst ? m.continue : !deliveryReady && selected ? (
1294
+ // Says what is missing instead of a button that silently does nothing.
1295
+ m.chooseDelivery
1296
+ ) : selected?.mode === "cash" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1297
+ m.placeOrderCash,
1298
+ total ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1299
+ " ",
1300
+ total
1301
+ ] }) : null
1302
+ ] }) : selected?.mode === "plain" || !selected ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1198
1303
  m.pay,
1199
1304
  total ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1200
1305
  " ",
@@ -1208,6 +1313,11 @@ function PaymentMethodSection(props) {
1208
1313
  ] }) : null
1209
1314
  ] });
1210
1315
  function onPayClick(event) {
1316
+ if (!addressFirst && !retryAddress && !deliveryReady && selected) {
1317
+ event.preventDefault();
1318
+ formRef.current?.reportValidity();
1319
+ return;
1320
+ }
1211
1321
  if (!cardActive || syncFailed) return;
1212
1322
  event.preventDefault();
1213
1323
  const form = formRef.current;
@@ -1216,7 +1326,7 @@ function PaymentMethodSection(props) {
1216
1326
  }
1217
1327
  const cardNotice = (k, node) => k === "syncFailed" ? /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: cx.alert, "data-sf-pay-notice": "sync-failed", ...tid("syncFailed"), children: node }) : /* @__PURE__ */ jsxRuntime.jsx("p", { role: "status", className: cx.status, "data-sf-pay-notice": k, ...k === "syncing" ? tid("syncing") : {}, children: node });
1218
1328
  const Link = renderLink ?? (({ href, className, children, testId }) => /* @__PURE__ */ jsxRuntime.jsx("a", { href, className, ...testId ? { "data-testid": testId } : {}, children }));
1219
- return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { id: "pago", className: cx.root, "data-sf-pay-method": true, children: [
1329
+ return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { id: "pago", ref: rootRef, className: cx.root, "data-sf-pay-method": true, children: [
1220
1330
  /* @__PURE__ */ jsxRuntime.jsx("legend", { className: cx.legend, children: m.legend }),
1221
1331
  choices.choices.map((choice) => {
1222
1332
  const { label: rowLabel, hint } = rowText(choice, m, methodLabel);
@@ -1256,38 +1366,40 @@ function PaymentMethodSection(props) {
1256
1366
  ] }),
1257
1367
  marks.length ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cx.brands, "data-sf-pay-brands": choice.option ?? "plain", "aria-hidden": "true", children: marks.map((mk) => /* @__PURE__ */ jsxRuntime.jsx(BrandMark, { brand: mk.key, logoUrl: mk.logoUrl ?? null, size: 20 }, mk.key)) }) : null
1258
1368
  ] }),
1259
- /* @__PURE__ */ jsxRuntime.jsx(ChoicePanel, { choice, m, invalid, cx, tid, hidden: hydrated && !checked, marks: brandMarks })
1369
+ /* @__PURE__ */ jsxRuntime.jsx(ChoicePanel, { choice, m, invalid, cx, tid, hidden: hydrated && !checked, marks: brandMarks, visible: cashPointsVisible, openMore: storedPoint, onPointChange }),
1370
+ choice.mode === "card" && checked && cardChosen && hydrated && choices.cardClient ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cx.brickWrap, "data-sf-pay-card": true, ...tid("card"), children: [
1371
+ fallback ? null : !deliveryReady ? cardNotice("pickDelivery", m.pickDeliveryFirst) : syncFailed ? cardNotice("syncFailed", m.syncFailed) : requote ? cardNotice("requote", m.quoteChanged) : !synced ? cardNotice("syncing", m.updatingTotal) : null,
1372
+ brickReady || fallback ? /* @__PURE__ */ jsxRuntime.jsx(
1373
+ PaymentBrick,
1374
+ {
1375
+ ...brickProps,
1376
+ ref: brick,
1377
+ client: choices.cardClient,
1378
+ amount,
1379
+ transport,
1380
+ ...nonce ? { nonce } : {},
1381
+ locale,
1382
+ ...scope ? { scope } : {},
1383
+ ...payerEmail && !brickProps?.email ? { email: payerEmail } : {},
1384
+ enabled: brickReady,
1385
+ ...cx.brick ? { className: cx.brick } : {},
1386
+ onEvent: handleEvent,
1387
+ onFallback: () => setFallback(true),
1388
+ onResult: (o) => {
1389
+ if (o.kind === "approved" || o.kind === "in_review" || o.kind === "voucher") onDone(o);
1390
+ }
1391
+ },
1392
+ payerEmail || brickProps?.email ? "with-email" : "without-email"
1393
+ ) : null,
1394
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: cx.note, children: m.secureCard }),
1395
+ expired && rebuildHref ? Link({ href: rebuildHref, ...cx.rebuild ? { className: cx.rebuild } : {}, children: m.rebuildCart, ...testIds.rebuild ? { testId: testIds.rebuild } : {} }) : null
1396
+ ] }) : null
1260
1397
  ] }, choice.value);
1261
1398
  }),
1262
1399
  noPayment ? /* @__PURE__ */ jsxRuntime.jsxs("div", { role: "alert", className: cx.alert, "data-sf-pay-notice": "no-payment", ...tid("noPayment"), children: [
1263
1400
  /* @__PURE__ */ jsxRuntime.jsx("p", { children: /* @__PURE__ */ jsxRuntime.jsx("strong", { children: m.noPaymentTitle }) }),
1264
1401
  /* @__PURE__ */ jsxRuntime.jsx("p", { children: m.noPayment })
1265
1402
  ] }) : null,
1266
- cardChosen && hydrated && choices.cardClient ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cx.brickWrap, "data-sf-pay-card": true, ...tid("card"), children: [
1267
- fallback ? null : !deliveryReady ? cardNotice("pickDelivery", m.pickDeliveryFirst) : syncFailed ? cardNotice("syncFailed", m.syncFailed) : requote ? cardNotice("requote", m.quoteChanged) : !synced ? cardNotice("syncing", m.updatingTotal) : null,
1268
- brickReady || fallback ? /* @__PURE__ */ jsxRuntime.jsx(
1269
- PaymentBrick,
1270
- {
1271
- ...brickProps,
1272
- ref: brick,
1273
- client: choices.cardClient,
1274
- amount,
1275
- transport,
1276
- ...nonce ? { nonce } : {},
1277
- locale,
1278
- ...scope ? { scope } : {},
1279
- enabled: brickReady,
1280
- ...cx.brick ? { className: cx.brick } : {},
1281
- onEvent: handleEvent,
1282
- onFallback: () => setFallback(true),
1283
- onResult: (o) => {
1284
- if (o.kind === "approved" || o.kind === "in_review" || o.kind === "voucher") onDone(o);
1285
- }
1286
- }
1287
- ) : null,
1288
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: cx.note, children: m.secureCard }),
1289
- expired && rebuildHref ? Link({ href: rebuildHref, ...cx.rebuild ? { className: cx.rebuild } : {}, children: m.rebuildCart, ...testIds.rebuild ? { testId: testIds.rebuild } : {} }) : null
1290
- ] }) : null,
1291
1403
  noPayment || choices.choices.some((c) => c.option) ? null : /* @__PURE__ */ jsxRuntime.jsx("p", { className: cx.note, children: m.paymentNote }),
1292
1404
  hideSubmit ? null : /* @__PURE__ */ jsxRuntime.jsx(
1293
1405
  "button",
@@ -1316,16 +1428,33 @@ function ChoicePanel({
1316
1428
  cx,
1317
1429
  tid,
1318
1430
  hidden,
1319
- marks = true
1431
+ marks = true,
1432
+ visible,
1433
+ openMore,
1434
+ onPointChange
1320
1435
  }) {
1321
1436
  if (choice.mode === "redirect") {
1322
1437
  return /* @__PURE__ */ jsxRuntime.jsx("p", { className: cx.panel, hidden, "data-sf-pay-panel": "redirect", ...tid("redirectNote"), children: m.redirectNote });
1323
1438
  }
1324
1439
  if (choice.mode !== "cash") return null;
1325
- const main = choice.points.filter((p) => p.group === "main");
1326
- const more = choice.points.filter((p) => p.group !== "main");
1440
+ const allMain = choice.points.filter((p) => p.group === "main");
1441
+ const cut = typeof visible === "number" && visible > 0 ? visible : allMain.length;
1442
+ const main = allMain.slice(0, cut);
1443
+ const more = [...allMain.slice(cut), ...choice.points.filter((p) => p.group !== "main")];
1444
+ const moreOpen = Boolean(openMore && more.some((p) => p.id === openMore));
1327
1445
  const row = (p, i, first) => /* @__PURE__ */ jsxRuntime.jsxs("label", { className: cx.cashPoint, "data-sf-pay-point": true, children: [
1328
- /* @__PURE__ */ jsxRuntime.jsx("input", { type: "radio", name: CASH_POINT_FIELD, value: p.id, defaultChecked: first && i === 0, className: cx.cashPointInput, "aria-invalid": invalid?.has("cash_point") || void 0 }),
1446
+ /* @__PURE__ */ jsxRuntime.jsx(
1447
+ "input",
1448
+ {
1449
+ type: "radio",
1450
+ name: CASH_POINT_FIELD,
1451
+ value: p.id,
1452
+ defaultChecked: first && i === 0,
1453
+ className: cx.cashPointInput,
1454
+ "aria-invalid": invalid?.has("cash_point") || void 0,
1455
+ ...onPointChange ? { onChange: () => onPointChange(p.id) } : {}
1456
+ }
1457
+ ),
1329
1458
  marks ? /* @__PURE__ */ jsxRuntime.jsx(BrandMark, { brand: p.payment_point || p.id, logoUrl: p.logo_url ?? null, size: 22 }) : null,
1330
1459
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: p.label })
1331
1460
  ] }, p.id);
@@ -1333,7 +1462,7 @@ function ChoicePanel({
1333
1462
  /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
1334
1463
  /* @__PURE__ */ jsxRuntime.jsx("legend", { children: m.cashPoints }),
1335
1464
  /* @__PURE__ */ jsxRuntime.jsx("div", { "data-sf-pay-points": true, children: main.map((p, i) => row(p, i, true)) }),
1336
- more.length ? /* @__PURE__ */ jsxRuntime.jsxs("details", { children: [
1465
+ more.length ? /* @__PURE__ */ jsxRuntime.jsxs("details", { ...moreOpen ? { open: true } : {}, children: [
1337
1466
  /* @__PURE__ */ jsxRuntime.jsx("summary", { className: cx.cashMore, style: { minHeight: 44 }, children: m.cashMore }),
1338
1467
  /* @__PURE__ */ jsxRuntime.jsx("div", { "data-sf-pay-points": true, children: more.map((p, i) => row(p, i, false)) })
1339
1468
  ] }) : null
@@ -1349,6 +1478,10 @@ function defaultIcon(choice) {
1349
1478
  if (choice.option === "cash") return glyph(CASH_GLYPH);
1350
1479
  return findBrand(choice.methodKey) ? /* @__PURE__ */ jsxRuntime.jsx(BrandMark, { brand: choice.methodKey, size: 24 }) : null;
1351
1480
  }
1481
+ function readCheckedPoint(root) {
1482
+ const el = root?.querySelector(`input[name="${CASH_POINT_FIELD}"]:checked`);
1483
+ return el?.value ?? null;
1484
+ }
1352
1485
  function rowMarks(choice, cardBrands) {
1353
1486
  if (choice.option === "card") return cardBrands.map((key) => ({ key }));
1354
1487
  if (choice.option === "cash") {
@@ -1490,6 +1623,7 @@ exports.paymentCspMode = paymentCspMode;
1490
1623
  exports.paymentMethodMessages = paymentMethodMessages;
1491
1624
  exports.paymentNonce = paymentNonce;
1492
1625
  exports.paymentNonceFromHeaders = paymentNonceFromHeaders;
1626
+ exports.readPaymentScheme = readPaymentScheme;
1493
1627
  exports.readPaymentTheme = readPaymentTheme;
1494
1628
  exports.resetPaymentSdkCache = resetPaymentSdkCache;
1495
1629
  exports.sanitizeMercadoPagoFormData = sanitizeMercadoPagoFormData;