@nok-integration/storefront-react 0.20.16 → 0.21.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/index.mjs CHANGED
@@ -4491,6 +4491,80 @@ function requireIds() {
4491
4491
  ids.RequestId = prefixedId("req_");
4492
4492
  return ids;
4493
4493
  }
4494
+ var vip = {};
4495
+ var hasRequiredVip;
4496
+ function requireVip() {
4497
+ if (hasRequiredVip) return vip;
4498
+ hasRequiredVip = 1;
4499
+ (function(exports) {
4500
+ Object.defineProperty(exports, "__esModule", {
4501
+ value: true
4502
+ });
4503
+ exports.VipClaimResponse = exports.VipClaimRefusalReason = exports.VipClaimRequest = exports.VipClaimLine = exports.VipCartItemRequest = exports.VipInviteView = exports.VipHero = exports.VipInviteOffer = exports.VipInviteResolveRequest = exports.VipDeliveryRule = exports.VIP_TOKEN_PATTERN = exports.VipInviteRef = void 0;
4504
+ const zod_1 = requireZod();
4505
+ const common_1 = requireCommon();
4506
+ const ids_1 = requireIds();
4507
+ exports.VipInviteRef = (0, ids_1.prefixedId)("vip_", "VipInviteRef");
4508
+ exports.VIP_TOKEN_PATTERN = /^[A-Za-z0-9_-]{43}$/;
4509
+ exports.VipDeliveryRule = zod_1.z.enum(["both_free", "standard_free", "both_paid"]);
4510
+ exports.VipInviteResolveRequest = zod_1.z.object({
4511
+ token: zod_1.z.string().regex(exports.VIP_TOKEN_PATTERN)
4512
+ }).strict();
4513
+ exports.VipInviteOffer = zod_1.z.object({
4514
+ product_sku: common_1.Sku,
4515
+ quantity: zod_1.z.number().int().positive()
4516
+ });
4517
+ exports.VipHero = zod_1.z.object({
4518
+ image: common_1.Url.nullable(),
4519
+ headline: zod_1.z.string(),
4520
+ body: zod_1.z.string().nullable(),
4521
+ cta_label: zod_1.z.string()
4522
+ });
4523
+ exports.VipInviteView = zod_1.z.discriminatedUnion("state", [zod_1.z.object({
4524
+ state: zod_1.z.literal("active"),
4525
+ invite_ref: exports.VipInviteRef,
4526
+ recipient_name: zod_1.z.string(),
4527
+ personal_message: zod_1.z.string().nullable(),
4528
+ delivery_rule: exports.VipDeliveryRule,
4529
+ expires_at: common_1.Timestamp,
4530
+ items: zod_1.z.array(exports.VipInviteOffer).min(1),
4531
+ hero: exports.VipHero.nullable().optional()
4532
+ }), zod_1.z.object({
4533
+ state: zod_1.z.literal("scheduled"),
4534
+ opens_at: common_1.Timestamp
4535
+ }), zod_1.z.object({
4536
+ state: zod_1.z.literal("claimed")
4537
+ }), zod_1.z.object({
4538
+ state: zod_1.z.literal("expired")
4539
+ }), zod_1.z.object({
4540
+ state: zod_1.z.literal("revoked")
4541
+ })]);
4542
+ exports.VipCartItemRequest = zod_1.z.object({
4543
+ token: zod_1.z.string().regex(exports.VIP_TOKEN_PATTERN),
4544
+ sku: common_1.Sku,
4545
+ qty: zod_1.z.number().int().positive().max(99)
4546
+ }).strict();
4547
+ exports.VipClaimLine = zod_1.z.object({
4548
+ sku: common_1.Sku,
4549
+ qty: zod_1.z.number().int().positive()
4550
+ }).strict();
4551
+ exports.VipClaimRequest = zod_1.z.object({
4552
+ invite_ref: exports.VipInviteRef,
4553
+ dazn_user_id: zod_1.z.string().min(1).max(200),
4554
+ lines: zod_1.z.array(exports.VipClaimLine).min(1).max(50)
4555
+ }).strict();
4556
+ exports.VipClaimRefusalReason = zod_1.z.enum(["unknown", "revoked", "expired", "not_yet_valid", "claimed_by_another", "already_ordered", "outside_entitlement"]);
4557
+ exports.VipClaimResponse = zod_1.z.discriminatedUnion("result", [zod_1.z.object({
4558
+ result: zod_1.z.literal("claimed"),
4559
+ invite_ref: exports.VipInviteRef
4560
+ }), zod_1.z.object({
4561
+ result: zod_1.z.literal("refused"),
4562
+ invite_ref: exports.VipInviteRef,
4563
+ reason: exports.VipClaimRefusalReason
4564
+ })]);
4565
+ })(vip);
4566
+ return vip;
4567
+ }
4494
4568
  var hasRequiredCart;
4495
4569
  function requireCart() {
4496
4570
  if (hasRequiredCart) return cart;
@@ -4505,6 +4579,7 @@ function requireCart() {
4505
4579
  const ids_1 = requireIds();
4506
4580
  const money_2 = requireMoney();
4507
4581
  const common_1 = requireCommon();
4582
+ const vip_1 = requireVip();
4508
4583
  exports.CartItem = zod_1.z.object({
4509
4584
  sku: common_1.Sku,
4510
4585
  qty: zod_1.z.number().int().positive(),
@@ -4537,7 +4612,10 @@ function requireCart() {
4537
4612
  totals: exports.CartTotals,
4538
4613
  locked: exports.CartLock.optional(),
4539
4614
  hold: exports.CartHold.optional(),
4540
- hidden_lines: zod_1.z.array(exports.HiddenSummaryLine).optional()
4615
+ hidden_lines: zod_1.z.array(exports.HiddenSummaryLine).optional(),
4616
+ vip: zod_1.z.object({
4617
+ invite_ref: vip_1.VipInviteRef
4618
+ }).optional()
4541
4619
  });
4542
4620
  exports.CartMarketQuery = common_1.MarketQuery;
4543
4621
  exports.AddCartItemRequest = zod_1.z.object({
@@ -4563,7 +4641,8 @@ function requireCart() {
4563
4641
  items: zod_1.z.array(exports.CartItem),
4564
4642
  cart_items: zod_1.z.array(exports.PartnerCartItem),
4565
4643
  totals: exports.CartTotals,
4566
- locked: exports.CartLock.optional()
4644
+ locked: exports.CartLock.optional(),
4645
+ vip_invite_ref: vip_1.VipInviteRef.optional()
4567
4646
  });
4568
4647
  })(cart);
4569
4648
  return cart;
@@ -4620,6 +4699,7 @@ function requireOrders() {
4620
4699
  const money_1 = requireMoney();
4621
4700
  const ids_1 = requireIds();
4622
4701
  const common_1 = requireCommon();
4702
+ const vip_1 = requireVip();
4623
4703
  exports.OrderEventEnvelope = zod_1.z.object({
4624
4704
  event_id: ids_1.EventId,
4625
4705
  occurred_at: common_1.Timestamp
@@ -4658,7 +4738,8 @@ function requireOrders() {
4658
4738
  ship_to: common_1.Address,
4659
4739
  lines: zod_1.z.array(exports.OrderLine).min(1),
4660
4740
  totals: exports.OrderTotals,
4661
- payment: exports.OrderPaymentSummary.optional()
4741
+ payment: exports.OrderPaymentSummary.optional(),
4742
+ vip_invite_ref: vip_1.VipInviteRef.optional()
4662
4743
  }).strict();
4663
4744
  exports.CancelReason = zod_1.z.enum(["customer_request", "payment_failed", "fraud", "unfulfillable", "other"]);
4664
4745
  exports.OrderLineAction = zod_1.z.object({
@@ -4701,6 +4782,7 @@ function requireOrderTracking() {
4701
4782
  const ids_1 = requireIds();
4702
4783
  const common_1 = requireCommon();
4703
4784
  const orders_1 = requireOrders();
4785
+ const vip_1 = requireVip();
4704
4786
  exports.OrderProgressStep = zod_1.z.enum(["packing", "on_its_way", "out_for_delivery", "delivered", "cancelled"]);
4705
4787
  exports.OrderProgressEntry = zod_1.z.object({
4706
4788
  step: exports.OrderProgressStep,
@@ -4780,7 +4862,10 @@ function requireOrderTracking() {
4780
4862
  totals: orders_1.OrderTotals,
4781
4863
  can_cancel: zod_1.z.boolean().optional(),
4782
4864
  can_return: zod_1.z.boolean().optional(),
4783
- returns: zod_1.z.array(exports.ReturnSummary).optional()
4865
+ returns: zod_1.z.array(exports.ReturnSummary).optional(),
4866
+ vip: zod_1.z.object({
4867
+ invite_ref: vip_1.VipInviteRef
4868
+ }).optional()
4784
4869
  });
4785
4870
  exports.FanCancelReason = zod_1.z.enum(["changed_my_mind", "ordered_by_mistake", "delivery_too_long"]);
4786
4871
  exports.RequestCancellationRequest = zod_1.z.object({
@@ -4891,7 +4976,7 @@ function requireErrors() {
4891
4976
  });
4892
4977
  exports.ErrorResponse = exports.ApiErrorBody = exports.ERROR_CODE_STATUS = exports.ErrorCode = void 0;
4893
4978
  const zod_1 = requireZod();
4894
- exports.ErrorCode = zod_1.z.enum(["invalid_request", "unauthorized", "out_of_stock", "cart_locked", "sku_not_found", "category_not_found", "amount_mismatch", "duplicate_order", "order_not_found", "order_not_cancellable", "cart_not_found", "support_ticket_not_found", "size_chart_not_found", "forbidden", "invalid_transition", "rate_limited", "server_error"]);
4979
+ exports.ErrorCode = zod_1.z.enum(["invalid_request", "unauthorized", "out_of_stock", "cart_locked", "sku_not_found", "category_not_found", "amount_mismatch", "duplicate_order", "order_not_found", "order_not_cancellable", "cart_not_found", "support_ticket_not_found", "vip_invite_not_found", "vip_cart_conflict", "vip_invite_mismatch", "size_chart_not_found", "forbidden", "invalid_transition", "rate_limited", "server_error"]);
4895
4980
  exports.ERROR_CODE_STATUS = {
4896
4981
  invalid_request: 400,
4897
4982
  unauthorized: 401,
@@ -4905,6 +4990,9 @@ function requireErrors() {
4905
4990
  order_not_cancellable: 409,
4906
4991
  cart_not_found: 404,
4907
4992
  support_ticket_not_found: 404,
4993
+ vip_invite_not_found: 404,
4994
+ vip_cart_conflict: 409,
4995
+ vip_invite_mismatch: 409,
4908
4996
  size_chart_not_found: 404,
4909
4997
  forbidden: 403,
4910
4998
  invalid_transition: 409,
@@ -4941,6 +5029,7 @@ function requireClient() {
4941
5029
  const order_tracking_1 = requireOrderTracking();
4942
5030
  const stock_alerts_1 = requireStockAlerts();
4943
5031
  const support_1 = requireSupport();
5032
+ const vip_1 = requireVip();
4944
5033
  const errors_1 = requireErrors();
4945
5034
  class DaznApiError extends Error {
4946
5035
  status;
@@ -5170,6 +5259,24 @@ function requireClient() {
5170
5259
  schema: support_1.SupportTicket
5171
5260
  })
5172
5261
  },
5262
+ vip: {
5263
+ resolve: (token, query = {}) => request({
5264
+ method: "POST",
5265
+ path: "/vip/resolve",
5266
+ body: {
5267
+ token
5268
+ },
5269
+ query: market(query),
5270
+ schema: vip_1.VipInviteView
5271
+ }),
5272
+ addToCart: (body3, query = {}) => request({
5273
+ method: "POST",
5274
+ path: "/vip/cart/items",
5275
+ body: body3,
5276
+ query: market(query),
5277
+ schema: cart_1.Cart
5278
+ })
5279
+ },
5173
5280
  auth: {
5174
5281
  exchangeSession: (body3) => request({
5175
5282
  method: "POST",
@@ -5189,6 +5296,60 @@ function requireClient() {
5189
5296
  return client;
5190
5297
  }
5191
5298
  var clientExports = requireClient();
5299
+ const TOP = {
5300
+ doc: 0,
5301
+ pane: 0
5302
+ };
5303
+ const places = /* @__PURE__ */ new Map();
5304
+ let returnedTo = null;
5305
+ function here() {
5306
+ if (typeof window === "undefined") return "";
5307
+ const { pathname, search, hash } = window.location;
5308
+ return pathname + search + hash;
5309
+ }
5310
+ if (typeof window !== "undefined") {
5311
+ window.addEventListener("popstate", () => {
5312
+ returnedTo = here();
5313
+ }, {
5314
+ capture: true
5315
+ });
5316
+ }
5317
+ function cameBack() {
5318
+ return returnedTo !== null && returnedTo === here();
5319
+ }
5320
+ function returnOffset(key) {
5321
+ if (!cameBack() || returnedTo !== key) return null;
5322
+ return places.get(key) ?? null;
5323
+ }
5324
+ function settleReturn() {
5325
+ returnedTo = null;
5326
+ }
5327
+ function remember(key, offset) {
5328
+ places.set(key, offset);
5329
+ }
5330
+ let latestScreen = 0;
5331
+ let currentScreen = 0;
5332
+ function claimScreen() {
5333
+ latestScreen += 1;
5334
+ currentScreen = latestScreen;
5335
+ return currentScreen;
5336
+ }
5337
+ function leaveScreen() {
5338
+ currentScreen = 0;
5339
+ settleReturn();
5340
+ }
5341
+ function isCurrentScreen(screen2) {
5342
+ return screen2 === currentScreen;
5343
+ }
5344
+ function placeOf(pane) {
5345
+ return {
5346
+ doc: window.scrollY || document.documentElement.scrollTop || 0,
5347
+ pane: pane ? pane.scrollTop : 0
5348
+ };
5349
+ }
5350
+ function reached(now, at) {
5351
+ return Math.abs(now.doc - at.doc) <= 1 && Math.abs(now.pane - at.pane) <= 1;
5352
+ }
5192
5353
  const HOLD_MS = 2500;
5193
5354
  function withoutRestoration() {
5194
5355
  const history = typeof window !== "undefined" ? window.history : void 0;
@@ -5201,11 +5362,14 @@ function withoutRestoration() {
5201
5362
  };
5202
5363
  }
5203
5364
  function scrollToTop(box2) {
5365
+ scrollToOffset(0, box2);
5366
+ }
5367
+ function scrollToOffset(offset, box2) {
5204
5368
  const target = box2 ?? document.documentElement;
5205
5369
  const behaviour = target.style.scrollBehavior;
5206
5370
  target.style.scrollBehavior = "auto";
5207
- if (box2) box2.scrollTop = 0;
5208
- else window.scrollTo(0, 0);
5371
+ if (box2) box2.scrollTop = offset;
5372
+ else window.scrollTo(0, offset);
5209
5373
  target.style.scrollBehavior = behaviour;
5210
5374
  }
5211
5375
  function scrollerOf(el) {
@@ -5231,17 +5395,20 @@ const holds = /* @__PURE__ */ new Set();
5231
5395
  function releaseHolds() {
5232
5396
  for (const end2 of Array.from(holds)) end2();
5233
5397
  }
5234
- function anchorTop(onMoved = () => true, onEnd, box2 = null) {
5398
+ function anchorTop(onMoved = () => true, onEnd, box2 = null, at = TOP) {
5235
5399
  let released = false;
5236
5400
  let touching = false;
5237
5401
  const top2 = () => {
5238
5402
  if (released || touching) return;
5239
5403
  const document_ = window.scrollY || document.documentElement.scrollTop || 0;
5240
5404
  const pane = box2 ? box2.scrollTop : 0;
5241
- if (document_ <= 0 && pane <= 0) return;
5405
+ const off = (now, want) => want === 0 ? now > 0 : Math.abs(now - want) > 1;
5406
+ const documentOff = off(document_, at.doc);
5407
+ const paneOff = box2 !== null && off(pane, at.pane);
5408
+ if (!documentOff && !paneOff) return;
5242
5409
  if (!onMoved()) return;
5243
- if (document_ > 0) scrollToTop();
5244
- if (box2 && pane > 0) scrollToTop(box2);
5410
+ if (documentOff) scrollToOffset(at.doc);
5411
+ if (box2 && paneOff) scrollToOffset(at.pane, box2);
5245
5412
  };
5246
5413
  const down = (event) => {
5247
5414
  if (event.type !== "pointerdown" || event.pointerType === "touch") {
@@ -5321,6 +5488,7 @@ function onResize(el, resized) {
5321
5488
  }
5322
5489
  function anchorToTop() {
5323
5490
  if (typeof window === "undefined") return;
5491
+ leaveScreen();
5324
5492
  const top2 = () => scrollToTop();
5325
5493
  top2();
5326
5494
  if (typeof window.requestAnimationFrame === "function") window.requestAnimationFrame(top2);
@@ -5729,7 +5897,7 @@ const neutral$2 = "_neutral_1bagf_12";
5729
5897
  const success$1 = "_success_1bagf_17";
5730
5898
  const critical$2 = "_critical_1bagf_22";
5731
5899
  const promo = "_promo_1bagf_27";
5732
- const styles$S = {
5900
+ const styles$T = {
5733
5901
  badge: badge$5,
5734
5902
  neutral: neutral$2,
5735
5903
  success: success$1,
@@ -5738,7 +5906,7 @@ const styles$S = {
5738
5906
  };
5739
5907
  function Badge({ tone = "neutral", children }) {
5740
5908
  return jsx("span", {
5741
- className: [styles$S.badge, styles$S[tone]].join(" "),
5909
+ className: [styles$T.badge, styles$T[tone]].join(" "),
5742
5910
  children
5743
5911
  });
5744
5912
  }
@@ -5747,7 +5915,7 @@ const fullWidth = "_fullWidth_ci424_25";
5747
5915
  const primary = "_primary_ci424_29";
5748
5916
  const secondary = "_secondary_ci424_34";
5749
5917
  const ghost = "_ghost_ci424_40";
5750
- const styles$R = {
5918
+ const styles$S = {
5751
5919
  button: button$1,
5752
5920
  fullWidth,
5753
5921
  primary,
@@ -5755,12 +5923,12 @@ const styles$R = {
5755
5923
  ghost
5756
5924
  };
5757
5925
  const spinner = "_spinner_1rueh_5";
5758
- const styles$Q = {
5926
+ const styles$R = {
5759
5927
  spinner
5760
5928
  };
5761
5929
  function Spinner({ className }) {
5762
5930
  return jsx("span", {
5763
- className: [styles$Q.spinner, className ?? ""].filter(Boolean).join(" "),
5931
+ className: [styles$R.spinner, className ?? ""].filter(Boolean).join(" "),
5764
5932
  "aria-hidden": "true"
5765
5933
  });
5766
5934
  }
@@ -5769,7 +5937,7 @@ const Button = forwardRef(function Button2({ variant = "primary", loading = fals
5769
5937
  return jsxs("button", {
5770
5938
  ref,
5771
5939
  type,
5772
- className: [styles$R.button, styles$R[variant], fullWidth2 ? styles$R.fullWidth : "", className ?? ""].filter(Boolean).join(" "),
5940
+ className: [styles$S.button, styles$S[variant], fullWidth2 ? styles$S.fullWidth : "", className ?? ""].filter(Boolean).join(" "),
5773
5941
  disabled: isDisabled,
5774
5942
  "aria-busy": loading || void 0,
5775
5943
  ...rest,
@@ -5779,7 +5947,7 @@ const Button = forwardRef(function Button2({ variant = "primary", loading = fals
5779
5947
  });
5780
5948
  });
5781
5949
  const skeleton = "_skeleton_1nxz7_1";
5782
- const styles$P = {
5950
+ const styles$Q = {
5783
5951
  skeleton
5784
5952
  };
5785
5953
  function Skeleton({ width, height, radius, className, circle }) {
@@ -5790,13 +5958,13 @@ function Skeleton({ width, height, radius, className, circle }) {
5790
5958
  };
5791
5959
  return jsx("span", {
5792
5960
  "aria-hidden": "true",
5793
- className: [styles$P.skeleton, className ?? ""].filter(Boolean).join(" "),
5961
+ className: [styles$Q.skeleton, className ?? ""].filter(Boolean).join(" "),
5794
5962
  style
5795
5963
  });
5796
5964
  }
5797
5965
  const surface$1 = "_surface_stwld_10";
5798
5966
  const fill = "_fill_stwld_35";
5799
- const styles$O = {
5967
+ const styles$P = {
5800
5968
  surface: surface$1,
5801
5969
  fill
5802
5970
  };
@@ -5867,22 +6035,62 @@ function useScreenAnchor(ref, enabled = true) {
5867
6035
  if (!el || !enabled) return;
5868
6036
  const restore = withoutRestoration();
5869
6037
  let moved = false;
5870
- const hold = () => anchorTop(() => beginsOnTheFirstViewport(el), (end2) => {
5871
- if (end2 === "moved") moved = true;
5872
- }, scrollerOf(el));
5873
- let release = hold();
5874
- const again = () => {
6038
+ let holding = false;
6039
+ let returning = false;
6040
+ let at = TOP;
6041
+ const settle = () => {
6042
+ returning = false;
6043
+ settleReturn();
6044
+ };
6045
+ const hold = (entered) => {
6046
+ if (entered) {
6047
+ const back = returnOffset(here());
6048
+ returning = back !== null;
6049
+ at = back ?? TOP;
6050
+ }
6051
+ holding = true;
6052
+ return anchorTop(() => beginsOnTheFirstViewport(el), (end2) => {
6053
+ holding = false;
6054
+ if (end2 === "moved") moved = true;
6055
+ if (returning && end2 === "moved") settle();
6056
+ }, scrollerOf(el), at);
6057
+ };
6058
+ let screen2 = claimScreen();
6059
+ let release = hold(true);
6060
+ const again = (entered) => {
5875
6061
  release();
5876
- release = hold();
6062
+ release = hold(entered);
5877
6063
  };
5878
6064
  const unobserve = onReveal(el, () => {
5879
6065
  moved = false;
5880
- again();
6066
+ screen2 = claimScreen();
6067
+ again(true);
5881
6068
  });
5882
6069
  const settled = onResize(el, () => {
5883
- if (!moved) again();
6070
+ if (!moved) again(false);
6071
+ });
6072
+ const fan = (event) => {
6073
+ if (movesThePage(event)) moved = true;
6074
+ };
6075
+ for (const type of RELEASES) window.addEventListener(type, fan, {
6076
+ passive: true
6077
+ });
6078
+ const note2 = () => {
6079
+ if (!isCurrentScreen(screen2)) return;
6080
+ const now = placeOf(scrollerOf(el));
6081
+ if (returning && reached(now, at)) settle();
6082
+ if (holding) return;
6083
+ remember(here(), now);
6084
+ };
6085
+ document.addEventListener("scroll", note2, {
6086
+ capture: true,
6087
+ passive: true
5884
6088
  });
5885
6089
  return () => {
6090
+ for (const type of RELEASES) window.removeEventListener(type, fan);
6091
+ document.removeEventListener("scroll", note2, {
6092
+ capture: true
6093
+ });
5886
6094
  settled();
5887
6095
  unobserve();
5888
6096
  release();
@@ -5903,7 +6111,7 @@ const ShopSurface = forwardRef(function ShopSurface2({ tone, fill: fill2 = false
5903
6111
  ...rest,
5904
6112
  ref: attach,
5905
6113
  "data-shop-theme": tone,
5906
- className: [styles$O.surface, fill2 ? styles$O.fill : "", className ?? ""].filter(Boolean).join(" "),
6114
+ className: [styles$P.surface, fill2 ? styles$P.fill : "", className ?? ""].filter(Boolean).join(" "),
5907
6115
  children
5908
6116
  });
5909
6117
  });
@@ -5916,7 +6124,7 @@ const lineMid = "_lineMid_ney0g_45";
5916
6124
  const lineNarrow = "_lineNarrow_ney0g_49";
5917
6125
  const row$9 = "_row_ney0g_53";
5918
6126
  const action$2 = "_action_ney0g_57";
5919
- const styles$N = {
6127
+ const styles$O = {
5920
6128
  root: root$6,
5921
6129
  inner,
5922
6130
  media: media$3,
@@ -6179,7 +6387,13 @@ const ES = {
6179
6387
  Less: "Menos",
6180
6388
  more: "más",
6181
6389
  "Close reasons": "Cerrar motivos",
6182
- Select: "Seleccionar"
6390
+ Select: "Seleccionar",
6391
+ "Claim yours": "Consigue el tuyo",
6392
+ "Sold out": "Agotado",
6393
+ "This invitation can no longer be used.": "Esta invitación ya no se puede usar.",
6394
+ "Invitation unavailable": "Invitación no disponible",
6395
+ "Your basket has other items": "Tu cesta tiene otros artículos",
6396
+ "Empty your basket to claim this item.": "Vacía tu cesta para conseguir este artículo."
6183
6397
  };
6184
6398
  const CATALOGUES = {
6185
6399
  es: ES
@@ -6209,36 +6423,36 @@ function ScreenSkeleton({ tone, shape = "media" }) {
6209
6423
  return jsx(ShopSurface, {
6210
6424
  tone,
6211
6425
  fill: true,
6212
- className: styles$N.root,
6426
+ className: styles$O.root,
6213
6427
  children: jsx("div", {
6214
- className: styles$N.inner,
6428
+ className: styles$O.inner,
6215
6429
  role: "status",
6216
6430
  "aria-label": t("Loading"),
6217
6431
  children: shape === "media" ? jsxs(Fragment, {
6218
6432
  children: [jsx(Skeleton, {
6219
- className: styles$N.media
6433
+ className: styles$O.media
6220
6434
  }), jsxs("div", {
6221
- className: styles$N.lines,
6435
+ className: styles$O.lines,
6222
6436
  children: [jsx(Skeleton, {
6223
6437
  height: 22,
6224
- className: styles$N.lineWide
6438
+ className: styles$O.lineWide
6225
6439
  }), jsx(Skeleton, {
6226
6440
  height: 16,
6227
- className: styles$N.lineMid
6441
+ className: styles$O.lineMid
6228
6442
  }), jsx(Skeleton, {
6229
6443
  height: 16,
6230
- className: styles$N.lineNarrow
6444
+ className: styles$O.lineNarrow
6231
6445
  })]
6232
6446
  }), jsx(Skeleton, {
6233
6447
  height: 48,
6234
6448
  radius: 8,
6235
- className: styles$N.action
6449
+ className: styles$O.action
6236
6450
  })]
6237
6451
  }) : jsx("div", {
6238
- className: styles$N.lines,
6452
+ className: styles$O.lines,
6239
6453
  children: [0, 1, 2, 3].map((i) => jsx(Skeleton, {
6240
6454
  height: 72,
6241
- className: styles$N.row
6455
+ className: styles$O.row
6242
6456
  }, i))
6243
6457
  })
6244
6458
  })
@@ -6246,36 +6460,36 @@ function ScreenSkeleton({ tone, shape = "media" }) {
6246
6460
  }
6247
6461
  const root$5 = "_root_ryf3q_6";
6248
6462
  const icon$4 = "_icon_ryf3q_15";
6249
- const text$5 = "_text_ryf3q_21";
6463
+ const text$6 = "_text_ryf3q_21";
6250
6464
  const title$n = "_title_ryf3q_35";
6251
- const body$8 = "_body_ryf3q_40";
6465
+ const body$9 = "_body_ryf3q_40";
6252
6466
  const action$1 = "_action_ryf3q_48";
6253
- const styles$M = {
6467
+ const styles$N = {
6254
6468
  root: root$5,
6255
6469
  icon: icon$4,
6256
- text: text$5,
6470
+ text: text$6,
6257
6471
  title: title$n,
6258
- body: body$8,
6472
+ body: body$9,
6259
6473
  action: action$1
6260
6474
  };
6261
6475
  function EmptyState({ title: title2, body: body3, action: action2, icon: icon2 }) {
6262
6476
  return jsxs("div", {
6263
- className: styles$M.root,
6477
+ className: styles$N.root,
6264
6478
  role: "status",
6265
6479
  children: [icon2 && jsx("div", {
6266
- className: styles$M.icon,
6480
+ className: styles$N.icon,
6267
6481
  children: icon2
6268
6482
  }), jsxs("div", {
6269
- className: styles$M.text,
6483
+ className: styles$N.text,
6270
6484
  children: [jsx("h2", {
6271
- className: styles$M.title,
6485
+ className: styles$N.title,
6272
6486
  children: title2
6273
6487
  }), body3 && jsx("p", {
6274
- className: styles$M.body,
6488
+ className: styles$N.body,
6275
6489
  children: body3
6276
6490
  })]
6277
6491
  }), action2 && jsx("div", {
6278
- className: styles$M.action,
6492
+ className: styles$N.action,
6279
6493
  children: action2
6280
6494
  })]
6281
6495
  });
@@ -6332,6 +6546,16 @@ const TREATMENTS = {
6332
6546
  body: "This order was already confirmed.",
6333
6547
  retriable: false
6334
6548
  },
6549
+ vip_invite_not_found: {
6550
+ title: "Invitation unavailable",
6551
+ body: "This invitation can no longer be used.",
6552
+ retriable: false
6553
+ },
6554
+ vip_cart_conflict: {
6555
+ title: "Your basket has other items",
6556
+ body: "Empty your basket to claim this item.",
6557
+ retriable: false
6558
+ },
6335
6559
  rate_limited: {
6336
6560
  title: "One moment",
6337
6561
  body: "Too many requests. Retrying shortly.",
@@ -6357,6 +6581,11 @@ const TREATMENTS = {
6357
6581
  body: "This order has already been despatched.",
6358
6582
  retriable: false
6359
6583
  },
6584
+ vip_invite_mismatch: {
6585
+ title: "Invitation unavailable",
6586
+ body: "This invitation can no longer be used.",
6587
+ retriable: false
6588
+ },
6360
6589
  forbidden: {
6361
6590
  title: "Not available to you",
6362
6591
  body: "You do not have access to this.",
@@ -6396,24 +6625,24 @@ function isDuplicateOrder(err) {
6396
6625
  }
6397
6626
  const root$4 = "_root_1lbpx_1";
6398
6627
  const title$m = "_title_1lbpx_10";
6399
- const body$7 = "_body_1lbpx_15";
6400
- const styles$L = {
6628
+ const body$8 = "_body_1lbpx_15";
6629
+ const styles$M = {
6401
6630
  root: root$4,
6402
6631
  title: title$m,
6403
- body: body$7
6632
+ body: body$8
6404
6633
  };
6405
6634
  function ErrorState({ code, title: title2, body: body3, onRetry, retryLabel }) {
6406
6635
  const t = useT();
6407
6636
  const treatment = treatmentFor(code);
6408
6637
  const showRetry = Boolean(onRetry) && treatment.retriable;
6409
6638
  return jsxs("div", {
6410
- className: styles$L.root,
6639
+ className: styles$M.root,
6411
6640
  role: "alert",
6412
6641
  children: [jsx("h2", {
6413
- className: styles$L.title,
6642
+ className: styles$M.title,
6414
6643
  children: title2 ?? t(treatment.title)
6415
6644
  }), jsx("p", {
6416
- className: styles$L.body,
6645
+ className: styles$M.body,
6417
6646
  children: body3 ?? t(treatment.body)
6418
6647
  }), showRetry && jsx(Button, {
6419
6648
  variant: "secondary",
@@ -6451,7 +6680,7 @@ const viewport = "_viewport_oz4st_14";
6451
6680
  const anchor = "_anchor_oz4st_41";
6452
6681
  const caret = "_caret_oz4st_59";
6453
6682
  const toast = "_toast_oz4st_82";
6454
- const text$4 = "_text_oz4st_111";
6683
+ const text$5 = "_text_oz4st_111";
6455
6684
  const message$1 = "_message_oz4st_120";
6456
6685
  const action = "_action_oz4st_133";
6457
6686
  const neutral$1 = "_neutral_oz4st_158";
@@ -6461,12 +6690,12 @@ const rich = "_rich_oz4st_183";
6461
6690
  const description = "_description_oz4st_198";
6462
6691
  const thumb$3 = "_thumb_oz4st_216";
6463
6692
  const thumbImage = "_thumbImage_oz4st_227";
6464
- const styles$K = {
6693
+ const styles$L = {
6465
6694
  viewport,
6466
6695
  anchor,
6467
6696
  caret,
6468
6697
  toast,
6469
- text: text$4,
6698
+ text: text$5,
6470
6699
  message: message$1,
6471
6700
  action,
6472
6701
  neutral: neutral$1,
@@ -6584,41 +6813,41 @@ function ToastProvider({ children }) {
6584
6813
  return jsxs(ToastContext.Provider, {
6585
6814
  value: api,
6586
6815
  children: [children, jsx("div", {
6587
- className: styles$K.viewport,
6816
+ className: styles$L.viewport,
6588
6817
  ref: viewportRef,
6589
6818
  "aria-live": "polite",
6590
6819
  "aria-atomic": "false",
6591
6820
  children: toasts.map((t) => {
6592
6821
  const rich2 = Boolean(t.description || t.image);
6593
6822
  return jsxs("div", {
6594
- className: styles$K.anchor,
6823
+ className: styles$L.anchor,
6595
6824
  children: [t.anchor === "cart" && jsx("span", {
6596
- className: styles$K.caret,
6825
+ className: styles$L.caret,
6597
6826
  children: jsx(Caret, {})
6598
6827
  }), jsxs("div", {
6599
- className: [styles$K.toast, rich2 ? styles$K.rich : styles$K[t.tone]].join(" "),
6828
+ className: [styles$L.toast, rich2 ? styles$L.rich : styles$L[t.tone]].join(" "),
6600
6829
  role: "status",
6601
6830
  children: [t.image && jsx("span", {
6602
- className: styles$K.thumb,
6831
+ className: styles$L.thumb,
6603
6832
  children: jsx(ShopImage, {
6604
6833
  src: t.image,
6605
6834
  alt: "",
6606
6835
  fill: true,
6607
6836
  sizes: "40px",
6608
- className: styles$K.thumbImage
6837
+ className: styles$L.thumbImage
6609
6838
  })
6610
6839
  }), jsxs("span", {
6611
- className: styles$K.text,
6840
+ className: styles$L.text,
6612
6841
  children: [jsx("span", {
6613
- className: styles$K.message,
6842
+ className: styles$L.message,
6614
6843
  children: t.message
6615
6844
  }), t.description && jsx("span", {
6616
- className: styles$K.description,
6845
+ className: styles$L.description,
6617
6846
  children: t.description
6618
6847
  })]
6619
6848
  }), t.action && jsx("button", {
6620
6849
  type: "button",
6621
- className: styles$K.action,
6850
+ className: styles$L.action,
6622
6851
  onClick: () => {
6623
6852
  t.action?.onAction();
6624
6853
  dismiss(t.id);
@@ -6633,15 +6862,15 @@ function ToastProvider({ children }) {
6633
6862
  }
6634
6863
  const badge$4 = "_badge_156ya_2";
6635
6864
  const icon$3 = "_icon_156ya_18";
6636
- const styles$J = {
6865
+ const styles$K = {
6637
6866
  badge: badge$4,
6638
6867
  icon: icon$3
6639
6868
  };
6640
6869
  function SaleBadge({ pct }) {
6641
6870
  return jsxs("span", {
6642
- className: styles$J.badge,
6871
+ className: styles$K.badge,
6643
6872
  children: [jsxs("svg", {
6644
- className: styles$J.icon,
6873
+ className: styles$K.icon,
6645
6874
  width: "12",
6646
6875
  height: "12",
6647
6876
  viewBox: "0 0 24 24",
@@ -6671,7 +6900,7 @@ const badge$3 = "_badge_rvfx9_48";
6671
6900
  const price$4 = "_price_rvfx9_52";
6672
6901
  const compareAt = "_compareAt_rvfx9_57";
6673
6902
  const strikethrough = "_strikethrough_rvfx9_65";
6674
- const styles$I = {
6903
+ const styles$J = {
6675
6904
  root: root$3,
6676
6905
  center: center$1,
6677
6906
  end,
@@ -6689,12 +6918,12 @@ function PriceBlock({ price: price2, compareAt: compareAt2, discountPct: discoun
6689
6918
  const pct = discountPct$1 ?? discountPct(price2, compareAt2);
6690
6919
  const hasCompare = compareAt2 && compareAt2.amount > price2.amount;
6691
6920
  return jsxs("div", {
6692
- className: [styles$I.root, styles$I[size], styles$I[align], styles$I[variant]].join(" "),
6921
+ className: [styles$J.root, styles$J[size], styles$J[align], styles$J[variant]].join(" "),
6693
6922
  children: [jsx("span", {
6694
- className: styles$I.price,
6923
+ className: styles$J.price,
6695
6924
  children: format(price2)
6696
6925
  }), hasCompare && jsxs("span", {
6697
- className: styles$I.compareAt,
6926
+ className: styles$J.compareAt,
6698
6927
  children: [jsx("span", {
6699
6928
  className: "visually-hidden",
6700
6929
  children: t("Was {0}", format(compareAt2))
@@ -6758,13 +6987,13 @@ const marker = "_marker_1cum7_27";
6758
6987
  const tick = "_tick_1cum7_35";
6759
6988
  const pending$2 = "_pending_1cum7_44";
6760
6989
  const connector = "_connector_1cum7_68";
6761
- const text$3 = "_text_1cum7_84";
6990
+ const text$4 = "_text_1cum7_84";
6762
6991
  const label$2 = "_label_1cum7_101";
6763
6992
  const past = "_past_1cum7_113";
6764
6993
  const current = "_current_1cum7_118";
6765
6994
  const future = "_future_1cum7_133";
6766
6995
  const date$1 = "_date_1cum7_138";
6767
- const styles$H = {
6996
+ const styles$I = {
6768
6997
  timeline,
6769
6998
  row: row$8,
6770
6999
  line: line$3,
@@ -6772,7 +7001,7 @@ const styles$H = {
6772
7001
  tick,
6773
7002
  pending: pending$2,
6774
7003
  connector,
6775
- text: text$3,
7004
+ text: text$4,
6776
7005
  label: label$2,
6777
7006
  past,
6778
7007
  current,
@@ -6798,39 +7027,39 @@ function OrderTimeline({ progress: progress2, estimatedDelivery, locale: localeP
6798
7027
  const t = useT();
6799
7028
  const currentIndex = progress2.findIndex((e) => e.current);
6800
7029
  return jsx("ol", {
6801
- className: styles$H.timeline,
7030
+ className: styles$I.timeline,
6802
7031
  children: progress2.map((entry, i) => {
6803
7032
  const state = stateOf(entry, i, currentIndex);
6804
7033
  const estimate = !entry.at && i === progress2.length - 1 && estimatedDelivery ? formatWindow(estimatedDelivery, locale) : void 0;
6805
7034
  return jsxs("li", {
6806
- className: styles$H.row,
7035
+ className: styles$I.row,
6807
7036
  "aria-current": entry.current ? "step" : void 0,
6808
7037
  children: [jsxs("div", {
6809
- className: styles$H.line,
7038
+ className: styles$I.line,
6810
7039
  children: [jsx("span", {
6811
- className: styles$H.marker,
7040
+ className: styles$I.marker,
6812
7041
  children: state === "future" ? jsx("span", {
6813
- className: styles$H.pending,
7042
+ className: styles$I.pending,
6814
7043
  "aria-hidden": "true"
6815
7044
  }) : jsx(StepTick, {
6816
7045
  tone: state
6817
7046
  })
6818
7047
  }), jsxs("span", {
6819
- className: styles$H.text,
7048
+ className: styles$I.text,
6820
7049
  children: [jsx("span", {
6821
- className: [styles$H.label, styles$H[state]].join(" "),
7050
+ className: [styles$I.label, styles$I[state]].join(" "),
6822
7051
  children: t(labelFor(entry))
6823
7052
  }), entry.at ? jsx("time", {
6824
- className: styles$H.date,
7053
+ className: styles$I.date,
6825
7054
  dateTime: entry.at,
6826
7055
  children: formatStepDate(entry.at, locale)
6827
7056
  }) : estimate && jsx("span", {
6828
- className: styles$H.date,
7057
+ className: styles$I.date,
6829
7058
  children: estimate
6830
7059
  })]
6831
7060
  })]
6832
7061
  }), i < progress2.length - 1 && jsx("span", {
6833
- className: styles$H.connector,
7062
+ className: styles$I.connector,
6834
7063
  "aria-hidden": "true"
6835
7064
  })]
6836
7065
  }, entry.step);
@@ -6844,7 +7073,7 @@ function stateOf(entry, index, currentIndex) {
6844
7073
  }
6845
7074
  function StepTick({ tone }) {
6846
7075
  return jsxs("svg", {
6847
- className: styles$H.tick,
7076
+ className: styles$I.tick,
6848
7077
  width: "28",
6849
7078
  height: "28",
6850
7079
  viewBox: "0 0 28 28",
@@ -6989,7 +7218,7 @@ const row$7 = "_row_1hsxt_16";
6989
7218
  const free = "_free_1hsxt_53";
6990
7219
  const pending$1 = "_pending_1hsxt_59";
6991
7220
  const discount = "_discount_1hsxt_69";
6992
- const styles$G = {
7221
+ const styles$H = {
6993
7222
  summary,
6994
7223
  row: row$7,
6995
7224
  free,
@@ -7018,11 +7247,11 @@ function OrderSummary({ pricing, deferred = [], hidden = [], rows = CART_ROWS, d
7018
7247
  const isDeferred = (key) => deferred.includes(key);
7019
7248
  const visible = rows.filter((row2) => !hidden.includes(row2.key)).filter((row2) => row2.key !== "discount" || discount2 !== void 0);
7020
7249
  return jsx("dl", {
7021
- className: styles$G.summary,
7250
+ className: styles$H.summary,
7022
7251
  children: visible.map(({ label: label2, key }) => {
7023
7252
  if (key === "discount" && discount2) {
7024
7253
  return jsxs("div", {
7025
- className: [styles$G.row, styles$G.discount].join(" "),
7254
+ className: [styles$H.row, styles$H.discount].join(" "),
7026
7255
  children: [jsx("dt", {
7027
7256
  children: t(label2)
7028
7257
  }), jsx("dd", {
@@ -7032,11 +7261,11 @@ function OrderSummary({ pricing, deferred = [], hidden = [], rows = CART_ROWS, d
7032
7261
  }
7033
7262
  const pending2 = key !== "total" && isDeferred(key);
7034
7263
  return jsxs("div", {
7035
- className: styles$G.row,
7264
+ className: styles$H.row,
7036
7265
  children: [jsx("dt", {
7037
7266
  children: t(label2)
7038
7267
  }), jsx("dd", {
7039
- className: pending2 ? styles$G.pending : void 0,
7268
+ className: pending2 ? styles$H.pending : void 0,
7040
7269
  children: pending2 ? t("Calculated at checkout") : renderValue(key, pricing, format, t)
7041
7270
  })]
7042
7271
  }, key);
@@ -7046,7 +7275,7 @@ function OrderSummary({ pricing, deferred = [], hidden = [], rows = CART_ROWS, d
7046
7275
  function renderValue(key, pricing, format, t) {
7047
7276
  if (key === "shipping" && pricing.shipping.amount === 0) {
7048
7277
  return jsx("span", {
7049
- className: styles$G.free,
7278
+ className: styles$H.free,
7050
7279
  children: t("Free")
7051
7280
  });
7052
7281
  }
@@ -7055,7 +7284,7 @@ function renderValue(key, pricing, format, t) {
7055
7284
  const lines$1 = "_lines_1lx0d_19";
7056
7285
  const line$2 = "_line_1lx0d_19";
7057
7286
  const thumb$2 = "_thumb_1lx0d_34";
7058
- const image$9 = "_image_1lx0d_44";
7287
+ const image$a = "_image_1lx0d_44";
7059
7288
  const placeholder$8 = "_placeholder_1lx0d_51";
7060
7289
  const lineBody = "_lineBody_1lx0d_56";
7061
7290
  const lineText = "_lineText_1lx0d_65";
@@ -7073,11 +7302,11 @@ const itemsHeader = "_itemsHeader_1lx0d_14";
7073
7302
  const itemsTitle = "_itemsTitle_1lx0d_238";
7074
7303
  const itemsCount = "_itemsCount_1lx0d_249";
7075
7304
  const cardLines = "_cardLines_1lx0d_268";
7076
- const styles$F = {
7305
+ const styles$G = {
7077
7306
  lines: lines$1,
7078
7307
  line: line$2,
7079
7308
  thumb: thumb$2,
7080
- image: image$9,
7309
+ image: image$a,
7081
7310
  placeholder: placeholder$8,
7082
7311
  lineBody,
7083
7312
  lineText,
@@ -7116,42 +7345,42 @@ function OrderLine({ item: item2 }) {
7116
7345
  const pct = compareAt2 ? discountPct(item2.unit_price, compareAt2) : void 0;
7117
7346
  const details2 = detailsOf(item2, t);
7118
7347
  return jsxs("li", {
7119
- className: styles$F.line,
7348
+ className: styles$G.line,
7120
7349
  children: [jsx("div", {
7121
- className: styles$F.thumb,
7350
+ className: styles$G.thumb,
7122
7351
  children: item2.image ? jsx(ShopImage, {
7123
7352
  src: item2.image,
7124
7353
  alt: "",
7125
7354
  fill: true,
7126
7355
  sizes: "48px",
7127
- className: styles$F.image
7356
+ className: styles$G.image
7128
7357
  }) : jsx("div", {
7129
- className: styles$F.placeholder,
7358
+ className: styles$G.placeholder,
7130
7359
  "aria-hidden": "true"
7131
7360
  })
7132
7361
  }), jsxs("div", {
7133
- className: styles$F.lineBody,
7362
+ className: styles$G.lineBody,
7134
7363
  children: [jsxs("div", {
7135
- className: styles$F.lineText,
7364
+ className: styles$G.lineText,
7136
7365
  children: [jsx("span", {
7137
- className: styles$F.lineTitle,
7366
+ className: styles$G.lineTitle,
7138
7367
  children: item2.title ?? item2.sku
7139
7368
  }), jsxs("span", {
7140
- className: styles$F.lineMeta,
7369
+ className: styles$G.lineMeta,
7141
7370
  children: [details2.map((detail2) => jsx("span", {
7142
- className: styles$F.detail,
7371
+ className: styles$G.detail,
7143
7372
  children: detail2
7144
7373
  }, detail2)), pct !== void 0 && jsx(SaleBadge, {
7145
7374
  pct
7146
7375
  })]
7147
7376
  })]
7148
7377
  }), jsxs("span", {
7149
- className: styles$F.linePrice,
7378
+ className: styles$G.linePrice,
7150
7379
  children: [jsx("span", {
7151
- className: styles$F.paid,
7380
+ className: styles$G.paid,
7152
7381
  children: format(item2.line_total)
7153
7382
  }), compareAt2 && jsxs("span", {
7154
- className: styles$F.was,
7383
+ className: styles$G.was,
7155
7384
  children: [jsx("span", {
7156
7385
  className: "visually-hidden",
7157
7386
  children: t("Was {0}", format(compareAt2))
@@ -7167,7 +7396,7 @@ function OrderLine({ item: item2 }) {
7167
7396
  function OrderLines({ order }) {
7168
7397
  const t = useT();
7169
7398
  return jsx("ul", {
7170
- className: styles$F.lines,
7399
+ className: styles$G.lines,
7171
7400
  "aria-label": t("Items"),
7172
7401
  children: order.items.map((item2) => jsx(OrderLine, {
7173
7402
  item: item2
@@ -7178,19 +7407,19 @@ function OrderItemsCard({ order }) {
7178
7407
  const t = useT();
7179
7408
  const itemCount = order.items.reduce((n, i) => n + i.qty, 0);
7180
7409
  return jsxs("section", {
7181
- className: styles$F.card,
7410
+ className: styles$G.card,
7182
7411
  "aria-label": t("Items"),
7183
7412
  children: [jsxs("div", {
7184
- className: styles$F.itemsHeader,
7413
+ className: styles$G.itemsHeader,
7185
7414
  children: [jsx("h2", {
7186
- className: styles$F.itemsTitle,
7415
+ className: styles$G.itemsTitle,
7187
7416
  children: t("Items")
7188
7417
  }), jsx("span", {
7189
- className: styles$F.itemsCount,
7418
+ className: styles$G.itemsCount,
7190
7419
  children: itemCount
7191
7420
  })]
7192
7421
  }), jsx("ul", {
7193
- className: [styles$F.lines, styles$F.cardLines].join(" "),
7422
+ className: [styles$G.lines, styles$G.cardLines].join(" "),
7194
7423
  children: order.items.map((item2) => jsx(OrderLine, {
7195
7424
  item: item2
7196
7425
  }, item2.line_ref))
@@ -7200,13 +7429,13 @@ function OrderItemsCard({ order }) {
7200
7429
  function ShippingAddressCard({ order }) {
7201
7430
  const t = useT();
7202
7431
  return jsxs("section", {
7203
- className: styles$F.card,
7432
+ className: styles$G.card,
7204
7433
  "aria-label": t("Shipping address"),
7205
7434
  children: [jsx("h2", {
7206
- className: styles$F.cardTitle,
7435
+ className: styles$G.cardTitle,
7207
7436
  children: t("Shipping address")
7208
7437
  }), jsx("p", {
7209
- className: styles$F.cardBody,
7438
+ className: styles$G.cardBody,
7210
7439
  children: formatAddress(order.ship_to)
7211
7440
  })]
7212
7441
  });
@@ -7214,10 +7443,10 @@ function ShippingAddressCard({ order }) {
7214
7443
  function OrderSummaryCard({ order }) {
7215
7444
  const t = useT();
7216
7445
  return jsxs("section", {
7217
- className: [styles$F.card, styles$F.summaryCard].join(" "),
7446
+ className: [styles$G.card, styles$G.summaryCard].join(" "),
7218
7447
  "aria-label": t("Order summary"),
7219
7448
  children: [jsx("h2", {
7220
- className: styles$F.cardTitle,
7449
+ className: styles$G.cardTitle,
7221
7450
  children: t("Order summary")
7222
7451
  }), jsx(OrderSummary, {
7223
7452
  pricing: toPricing(order),
@@ -7254,7 +7483,7 @@ const handleSlot = "_handleSlot_1f3nh_23";
7254
7483
  const handle = "_handle_1f3nh_23";
7255
7484
  const closeSlot$1 = "_closeSlot_1f3nh_35";
7256
7485
  const close$2 = "_close_1f3nh_35";
7257
- const styles$E = {
7486
+ const styles$F = {
7258
7487
  header: header$6,
7259
7488
  slot,
7260
7489
  handleSlot,
@@ -7282,23 +7511,23 @@ function CloseIcon$1() {
7282
7511
  }
7283
7512
  function SheetHeader({ onClose, closeLabel }) {
7284
7513
  return jsxs("div", {
7285
- className: styles$E.header,
7514
+ className: styles$F.header,
7286
7515
  children: [jsx("div", {
7287
- className: styles$E.slot,
7516
+ className: styles$F.slot,
7288
7517
  "aria-hidden": "true"
7289
7518
  }), jsx("div", {
7290
- className: styles$E.handleSlot,
7519
+ className: styles$F.handleSlot,
7291
7520
  "aria-hidden": "true",
7292
7521
  children: jsx("div", {
7293
- className: styles$E.handle
7522
+ className: styles$F.handle
7294
7523
  })
7295
7524
  }), jsx("button", {
7296
7525
  type: "button",
7297
- className: styles$E.closeSlot,
7526
+ className: styles$F.closeSlot,
7298
7527
  onClick: onClose,
7299
7528
  "aria-label": closeLabel,
7300
7529
  children: jsx("span", {
7301
- className: styles$E.close,
7530
+ className: styles$F.close,
7302
7531
  children: jsx(CloseIcon$1, {})
7303
7532
  })
7304
7533
  })]
@@ -7346,7 +7575,7 @@ function useModalDialog(open, onClose, ref) {
7346
7575
  }
7347
7576
  const scrim$5 = "_scrim_1oaa3_8";
7348
7577
  const sheet$3 = "_sheet_1oaa3_20";
7349
- const body$6 = "_body_1oaa3_32";
7578
+ const body$7 = "_body_1oaa3_32";
7350
7579
  const title$l = "_title_1oaa3_53";
7351
7580
  const options$1 = "_options_1oaa3_61";
7352
7581
  const option$1 = "_option_1oaa3_61";
@@ -7354,10 +7583,10 @@ const radio = "_radio_1oaa3_95";
7354
7583
  const label$1 = "_label_1oaa3_125";
7355
7584
  const footer$1 = "_footer_1oaa3_134";
7356
7585
  const error$1 = "_error_1oaa3_142";
7357
- const styles$D = {
7586
+ const styles$E = {
7358
7587
  scrim: scrim$5,
7359
7588
  sheet: sheet$3,
7360
- body: body$6,
7589
+ body: body$7,
7361
7590
  title: title$l,
7362
7591
  options: options$1,
7363
7592
  option: option$1,
@@ -7372,12 +7601,12 @@ function ReasonSheet({ title: title2, options: options2, ctaLabel, selected: sel
7372
7601
  const t = useT();
7373
7602
  useModalDialog(true, onClose, sheetRef);
7374
7603
  return jsx("div", {
7375
- className: styles$D.scrim,
7604
+ className: styles$E.scrim,
7376
7605
  onClick: onClose,
7377
7606
  children: jsxs(ShopSurface, {
7378
7607
  tone: "light",
7379
7608
  ref: sheetRef,
7380
- className: styles$D.sheet,
7609
+ className: styles$E.sheet,
7381
7610
  role: "dialog",
7382
7611
  "aria-modal": "true",
7383
7612
  "aria-labelledby": "reason-sheet-title",
@@ -7386,23 +7615,23 @@ function ReasonSheet({ title: title2, options: options2, ctaLabel, selected: sel
7386
7615
  onClose,
7387
7616
  closeLabel
7388
7617
  }), jsxs("div", {
7389
- className: styles$D.body,
7618
+ className: styles$E.body,
7390
7619
  children: [jsx("h2", {
7391
7620
  id: "reason-sheet-title",
7392
- className: styles$D.title,
7621
+ className: styles$E.title,
7393
7622
  children: t(title2)
7394
7623
  }), jsx("div", {
7395
- className: styles$D.options,
7624
+ className: styles$E.options,
7396
7625
  role: "radiogroup",
7397
7626
  "aria-labelledby": "reason-sheet-title",
7398
7627
  children: options2.map((o) => jsxs("button", {
7399
7628
  type: "button",
7400
7629
  role: "radio",
7401
7630
  "aria-checked": o.value === choice,
7402
- className: styles$D.option,
7631
+ className: styles$E.option,
7403
7632
  onClick: () => setChoice(o.value),
7404
7633
  children: [jsx("span", {
7405
- className: styles$D.radio,
7634
+ className: styles$E.radio,
7406
7635
  "aria-hidden": "true",
7407
7636
  children: o.value === choice && jsxs("svg", {
7408
7637
  width: "20",
@@ -7423,15 +7652,15 @@ function ReasonSheet({ title: title2, options: options2, ctaLabel, selected: sel
7423
7652
  })]
7424
7653
  })
7425
7654
  }), jsx("span", {
7426
- className: styles$D.label,
7655
+ className: styles$E.label,
7427
7656
  children: t(o.label)
7428
7657
  })]
7429
7658
  }, o.value))
7430
7659
  })]
7431
7660
  }), jsxs("div", {
7432
- className: styles$D.footer,
7661
+ className: styles$E.footer,
7433
7662
  children: [error2 && jsx("p", {
7434
- className: styles$D.error,
7663
+ className: styles$E.error,
7435
7664
  role: "alert",
7436
7665
  children: error2
7437
7666
  }), jsx(Button, {
@@ -7456,7 +7685,7 @@ const attrs$1 = "_attrs_1pjby_55";
7456
7685
  const price$3 = "_price_1pjby_63";
7457
7686
  const paid$2 = "_paid_1pjby_72";
7458
7687
  const was$3 = "_was_1pjby_80";
7459
- const styles$C = {
7688
+ const styles$D = {
7460
7689
  line: line$1,
7461
7690
  thumb: thumb$1,
7462
7691
  img: img$1,
@@ -7472,35 +7701,35 @@ function ReturnItemRow({ item: item2, className }) {
7472
7701
  const { format } = useMoney();
7473
7702
  const t = useT();
7474
7703
  return jsxs("div", {
7475
- className: [styles$C.line, className ?? ""].join(" ").trim(),
7704
+ className: [styles$D.line, className ?? ""].join(" ").trim(),
7476
7705
  children: [jsx("div", {
7477
- className: styles$C.thumb,
7706
+ className: styles$D.thumb,
7478
7707
  children: item2.image ? jsx(ShopImage, {
7479
7708
  src: item2.image,
7480
7709
  alt: "",
7481
7710
  fill: true,
7482
7711
  sizes: "48px",
7483
- className: styles$C.img
7712
+ className: styles$D.img
7484
7713
  }) : jsx("div", {
7485
- className: styles$C.placeholder,
7714
+ className: styles$D.placeholder,
7486
7715
  "aria-hidden": "true"
7487
7716
  })
7488
7717
  }), jsxs("div", {
7489
- className: styles$C.meta,
7718
+ className: styles$D.meta,
7490
7719
  children: [jsx("p", {
7491
- className: styles$C.name,
7720
+ className: styles$D.name,
7492
7721
  children: item2.title ?? item2.sku
7493
7722
  }), item2.attributes?.size && jsx("p", {
7494
- className: styles$C.attrs,
7723
+ className: styles$D.attrs,
7495
7724
  children: t("Size: {0}", item2.attributes.size)
7496
7725
  })]
7497
7726
  }), jsxs("div", {
7498
- className: styles$C.price,
7727
+ className: styles$D.price,
7499
7728
  children: [jsx("span", {
7500
- className: styles$C.paid,
7729
+ className: styles$D.paid,
7501
7730
  children: format(item2.unit_price)
7502
7731
  }), item2.compare_at_unit_price && jsxs("span", {
7503
- className: styles$C.was,
7732
+ className: styles$D.was,
7504
7733
  children: [jsx("span", {
7505
7734
  className: "visually-hidden",
7506
7735
  children: t("Was {0}", format(item2.compare_at_unit_price))
@@ -7523,7 +7752,7 @@ const check = "_check_15fz5_66";
7523
7752
  const row$6 = "_row_15fz5_110";
7524
7753
  const reason = "_reason_15fz5_135";
7525
7754
  const reasonSet = "_reasonSet_15fz5_155";
7526
- const styles$B = {
7755
+ const styles$C = {
7527
7756
  page: page$6,
7528
7757
  titles: titles$2,
7529
7758
  title: title$k,
@@ -7630,55 +7859,55 @@ function ReturnItemsView({ order, onSubmit, busy = false }) {
7630
7859
  }
7631
7860
  if (returnable.length === 0) {
7632
7861
  return jsx("div", {
7633
- className: styles$B.page,
7862
+ className: styles$C.page,
7634
7863
  children: jsxs("div", {
7635
- className: styles$B.titles,
7864
+ className: styles$C.titles,
7636
7865
  children: [jsx("h1", {
7637
- className: styles$B.title,
7866
+ className: styles$C.title,
7638
7867
  children: t("Nothing left to return")
7639
7868
  }), jsx("p", {
7640
- className: styles$B.subtitle,
7869
+ className: styles$C.subtitle,
7641
7870
  children: t("Every item on this order has already been returned or cancelled.")
7642
7871
  })]
7643
7872
  })
7644
7873
  });
7645
7874
  }
7646
7875
  return jsxs("div", {
7647
- className: styles$B.page,
7876
+ className: styles$C.page,
7648
7877
  children: [jsxs("div", {
7649
- className: styles$B.titles,
7878
+ className: styles$C.titles,
7650
7879
  children: [jsx("h1", {
7651
- className: styles$B.title,
7880
+ className: styles$C.title,
7652
7881
  children: t("What do you want to return?")
7653
7882
  }), jsx("p", {
7654
- className: styles$B.subtitle,
7883
+ className: styles$C.subtitle,
7655
7884
  children: t("Select items you want to return")
7656
7885
  })]
7657
7886
  }), jsx("div", {
7658
- className: styles$B.list,
7887
+ className: styles$C.list,
7659
7888
  children: returnable.map((item2) => {
7660
7889
  const picked = item2.line_ref in chosen;
7661
7890
  const reason2 = chosen[item2.line_ref];
7662
7891
  return jsxs("div", {
7663
- className: styles$B.card,
7892
+ className: styles$C.card,
7664
7893
  children: [jsx("button", {
7665
7894
  type: "button",
7666
7895
  role: "checkbox",
7667
7896
  "aria-checked": picked,
7668
7897
  "aria-label": item2.title ?? item2.sku,
7669
- className: styles$B.checkSlot,
7898
+ className: styles$C.checkSlot,
7670
7899
  onClick: () => toggle2(item2.line_ref),
7671
7900
  children: jsx("span", {
7672
- className: styles$B.check,
7901
+ className: styles$C.check,
7673
7902
  children: picked ? jsx(Tick, {}) : null
7674
7903
  })
7675
7904
  }), jsxs("div", {
7676
- className: styles$B.row,
7905
+ className: styles$C.row,
7677
7906
  children: [jsx(ReturnItemRow, {
7678
7907
  item: item2
7679
7908
  }), jsxs("button", {
7680
7909
  type: "button",
7681
- className: `${styles$B.reason} ${reason2 ? styles$B.reasonSet : ""}`,
7910
+ className: `${styles$C.reason} ${reason2 ? styles$C.reasonSet : ""}`,
7682
7911
  onClick: () => setReasonFor(item2.line_ref),
7683
7912
  "aria-haspopup": "dialog",
7684
7913
  children: [jsx("span", {
@@ -7726,11 +7955,11 @@ const step2 = "_step2_51f4e_74";
7726
7955
  const stepHead = "_stepHead_51f4e_80";
7727
7956
  const number = "_number_51f4e_87";
7728
7957
  const stepTitle = "_stepTitle_51f4e_102";
7729
- const body$5 = "_body_51f4e_113";
7958
+ const body$6 = "_body_51f4e_113";
7730
7959
  const body2 = "_body2_51f4e_121";
7731
7960
  const download = "_download_51f4e_139";
7732
7961
  const note$1 = "_note_51f4e_161";
7733
- const styles$A = {
7962
+ const styles$B = {
7734
7963
  page: page$5,
7735
7964
  top,
7736
7965
  items: items$2,
@@ -7743,7 +7972,7 @@ const styles$A = {
7743
7972
  stepHead,
7744
7973
  number,
7745
7974
  stepTitle,
7746
- body: body$5,
7975
+ body: body$6,
7747
7976
  body2,
7748
7977
  download,
7749
7978
  note: note$1
@@ -7804,42 +8033,42 @@ function ReturnLabelView({ ret, onDone }) {
7804
8033
  const t = useT();
7805
8034
  const { preparing, unavailable, onDownload } = useLabelDownload(ret.label_url);
7806
8035
  return jsxs("div", {
7807
- className: styles$A.page,
8036
+ className: styles$B.page,
7808
8037
  children: [jsxs("div", {
7809
- className: styles$A.top,
8038
+ className: styles$B.top,
7810
8039
  children: [jsx("div", {
7811
- className: styles$A.items,
8040
+ className: styles$B.items,
7812
8041
  children: ret.items.map((item2) => jsx(ReturnItemRow, {
7813
8042
  item: item2
7814
8043
  }, item2.line_ref))
7815
8044
  }), jsxs("div", {
7816
- className: styles$A.intro,
8045
+ className: styles$B.intro,
7817
8046
  children: [jsx("h1", {
7818
- className: styles$A.title,
8047
+ className: styles$B.title,
7819
8048
  children: t("We’ve generated your return label")
7820
8049
  }), jsx("p", {
7821
- className: styles$A.subtitle,
8050
+ className: styles$B.subtitle,
7822
8051
  children: t("Follow the instructions below to complete your return")
7823
8052
  })]
7824
8053
  }), jsxs("div", {
7825
- className: styles$A.card,
8054
+ className: styles$B.card,
7826
8055
  children: [jsxs("section", {
7827
- className: styles$A.step,
8056
+ className: styles$B.step,
7828
8057
  children: [jsxs("div", {
7829
- className: styles$A.stepHead,
8058
+ className: styles$B.stepHead,
7830
8059
  children: [jsx("span", {
7831
- className: styles$A.number,
8060
+ className: styles$B.number,
7832
8061
  "aria-hidden": "true",
7833
8062
  children: "1"
7834
8063
  }), jsx("h2", {
7835
- className: styles$A.stepTitle,
8064
+ className: styles$B.stepTitle,
7836
8065
  children: t("Download your return label")
7837
8066
  })]
7838
8067
  }), jsx("p", {
7839
- className: styles$A.body,
8068
+ className: styles$B.body,
7840
8069
  children: t("Tap the button below to download your pre-paid return label")
7841
8070
  }), ret.label_url && jsxs("a", {
7842
- className: styles$A.download,
8071
+ className: styles$B.download,
7843
8072
  href: ret.label_url,
7844
8073
  target: "_blank",
7845
8074
  rel: "noopener noreferrer",
@@ -7851,27 +8080,27 @@ function ReturnLabelView({ ret, onDone }) {
7851
8080
  children: ` ${t("(opens in a new tab)")}`
7852
8081
  })]
7853
8082
  }), unavailable && jsx("p", {
7854
- className: styles$A.note,
8083
+ className: styles$B.note,
7855
8084
  role: "status",
7856
8085
  children: t("Your return label is not ready yet. Try again in a moment.")
7857
8086
  }), ret.label_email && jsxs("p", {
7858
- className: styles$A.note,
8087
+ className: styles$B.note,
7859
8088
  children: [t("You’ll receive a shipping label PDF to your email as well."), jsx("br", {}), ret.label_email]
7860
8089
  })]
7861
8090
  }), jsxs("section", {
7862
- className: styles$A.step2,
8091
+ className: styles$B.step2,
7863
8092
  children: [jsxs("div", {
7864
- className: styles$A.stepHead,
8093
+ className: styles$B.stepHead,
7865
8094
  children: [jsx("span", {
7866
- className: styles$A.number,
8095
+ className: styles$B.number,
7867
8096
  "aria-hidden": "true",
7868
8097
  children: "2"
7869
8098
  }), jsx("h2", {
7870
- className: styles$A.stepTitle,
8099
+ className: styles$B.stepTitle,
7871
8100
  children: t("Pack and ship the item")
7872
8101
  })]
7873
8102
  }), jsxs("p", {
7874
- className: styles$A.body2,
8103
+ className: styles$B.body2,
7875
8104
  children: [t("Repackage the item securely and attach the return label to the outside of the package."), jsx("br", {}), t("Drop it off at your local carrier or post office.")]
7876
8105
  })]
7877
8106
  })]
@@ -7899,7 +8128,7 @@ const attrs = "_attrs_g4vus_108";
7899
8128
  const price$2 = "_price_g4vus_123";
7900
8129
  const paid$1 = "_paid_g4vus_132";
7901
8130
  const was$2 = "_was_g4vus_140";
7902
- const styles$z = {
8131
+ const styles$A = {
7903
8132
  page: page$4,
7904
8133
  titles: titles$1,
7905
8134
  title: title$i,
@@ -7933,42 +8162,42 @@ function ReturnTrackingView({ ret, locale: localeProp }) {
7933
8162
  tone: "light",
7934
8163
  fill: true,
7935
8164
  children: jsxs("div", {
7936
- className: styles$z.page,
8165
+ className: styles$A.page,
7937
8166
  children: [jsxs("div", {
7938
- className: styles$z.titles,
8167
+ className: styles$A.titles,
7939
8168
  children: [jsx("h1", {
7940
- className: styles$z.title,
8169
+ className: styles$A.title,
7941
8170
  children: t("Return in progress")
7942
8171
  }), jsx("p", {
7943
- className: styles$z.subtitle,
8172
+ className: styles$A.subtitle,
7944
8173
  children: t("Return #{0} · Reported {1}", ret.return_ref, reported)
7945
8174
  })]
7946
8175
  }), jsx(OrderTimeline, {
7947
8176
  progress: ret.progress,
7948
8177
  locale
7949
8178
  }), jsx("ul", {
7950
- className: styles$z.items,
8179
+ className: styles$A.items,
7951
8180
  children: ret.items.map((item2) => jsxs("li", {
7952
- className: styles$z.item,
8181
+ className: styles$A.item,
7953
8182
  children: [jsx("div", {
7954
- className: styles$z.thumb,
8183
+ className: styles$A.thumb,
7955
8184
  children: item2.image ? jsx(ShopImage, {
7956
8185
  src: item2.image,
7957
8186
  alt: "",
7958
8187
  fill: true,
7959
8188
  sizes: "48px",
7960
- className: styles$z.img
8189
+ className: styles$A.img
7961
8190
  }) : jsx("div", {
7962
- className: styles$z.placeholder,
8191
+ className: styles$A.placeholder,
7963
8192
  "aria-hidden": "true"
7964
8193
  })
7965
8194
  }), jsxs("div", {
7966
- className: styles$z.meta,
8195
+ className: styles$A.meta,
7967
8196
  children: [jsx("p", {
7968
- className: styles$z.name,
8197
+ className: styles$A.name,
7969
8198
  children: item2.title ?? item2.sku
7970
8199
  }), (item2.attributes?.size || pctOff(item2)) && jsxs("p", {
7971
- className: styles$z.attrs,
8200
+ className: styles$A.attrs,
7972
8201
  children: [item2.attributes?.size && jsx("span", {
7973
8202
  children: t("Size: {0}", item2.attributes.size)
7974
8203
  }), pctOff(item2) !== void 0 && jsx(SaleBadge, {
@@ -7976,12 +8205,12 @@ function ReturnTrackingView({ ret, locale: localeProp }) {
7976
8205
  })]
7977
8206
  })]
7978
8207
  }), jsxs("div", {
7979
- className: styles$z.price,
8208
+ className: styles$A.price,
7980
8209
  children: [jsx("span", {
7981
- className: styles$z.paid,
8210
+ className: styles$A.paid,
7982
8211
  children: format(item2.unit_price)
7983
8212
  }), item2.compare_at_unit_price && jsx("span", {
7984
- className: styles$z.was,
8213
+ className: styles$A.was,
7985
8214
  children: format(item2.compare_at_unit_price)
7986
8215
  })]
7987
8216
  })]
@@ -8100,7 +8329,7 @@ function ReturnFlowContent({ orderRef, returnRef, onDone, locale }) {
8100
8329
  const page$3 = "_page_1iwin_8";
8101
8330
  const widget = "_widget_1iwin_18";
8102
8331
  const titleRow = "_titleRow_1iwin_26";
8103
- const headline$1 = "_headline_1iwin_42";
8332
+ const headline$2 = "_headline_1iwin_42";
8104
8333
  const track$5 = "_track_1iwin_74";
8105
8334
  const rule$1 = "_rule_1iwin_99";
8106
8335
  const help = "_help_1iwin_109";
@@ -8113,11 +8342,11 @@ const cancel = "_cancel_1iwin_197";
8113
8342
  const cancelledHead = "_cancelledHead_1iwin_221";
8114
8343
  const cancelledTitle = "_cancelledTitle_1iwin_227";
8115
8344
  const cancelledMeta = "_cancelledMeta_1iwin_241";
8116
- const styles$y = {
8345
+ const styles$z = {
8117
8346
  page: page$3,
8118
8347
  widget,
8119
8348
  titleRow,
8120
- headline: headline$1,
8349
+ headline: headline$2,
8121
8350
  track: track$5,
8122
8351
  rule: rule$1,
8123
8352
  help,
@@ -8220,7 +8449,7 @@ function OrderTrackingContent({ orderRef, locale: localeProp, onStartReturn, onO
8220
8449
  }, [cancelled]);
8221
8450
  if (state === "loading") {
8222
8451
  return jsxs("div", {
8223
- className: styles$y.page,
8452
+ className: styles$z.page,
8224
8453
  children: [jsx(Skeleton, {
8225
8454
  height: 206,
8226
8455
  radius: 8
@@ -8298,18 +8527,18 @@ function OrderTrackingContent({ orderRef, locale: localeProp, onStartReturn, onO
8298
8527
  }
8299
8528
  if (order.status === "cancelled") {
8300
8529
  return jsxs("div", {
8301
- className: styles$y.page,
8530
+ className: styles$z.page,
8302
8531
  ref: cancelledPage,
8303
8532
  children: [jsxs("div", {
8304
- className: styles$y.cancelledHead,
8533
+ className: styles$z.cancelledHead,
8305
8534
  children: [jsx("h1", {
8306
- className: styles$y.cancelledTitle,
8535
+ className: styles$z.cancelledTitle,
8307
8536
  children: t("Order cancelled")
8308
8537
  }), jsx("p", {
8309
- className: styles$y.cancelledMeta,
8538
+ className: styles$z.cancelledMeta,
8310
8539
  children: t("Order #{0} · Placed {1}", shortRef$1(order.order_ref), placedOn(order.placed_at, locale))
8311
8540
  })]
8312
- }), jsx(Button, {
8541
+ }), !order.vip && jsx(Button, {
8313
8542
  variant: "primary",
8314
8543
  fullWidth: true,
8315
8544
  loading: reordering,
@@ -8325,17 +8554,17 @@ function OrderTrackingContent({ orderRef, locale: localeProp, onStartReturn, onO
8325
8554
  });
8326
8555
  }
8327
8556
  return jsxs("div", {
8328
- className: styles$y.page,
8557
+ className: styles$z.page,
8329
8558
  children: [jsxs("section", {
8330
- className: styles$y.widget,
8559
+ className: styles$z.widget,
8331
8560
  "aria-label": t("Delivery status"),
8332
8561
  children: [jsxs("div", {
8333
- className: styles$y.titleRow,
8562
+ className: styles$z.titleRow,
8334
8563
  children: [jsx("h1", {
8335
- className: styles$y.headline,
8564
+ className: styles$z.headline,
8336
8565
  children: t("Order #{0}", shortRef$1(order.order_ref))
8337
8566
  }), order.tracking?.url && inTransit && jsxs("a", {
8338
- className: styles$y.track,
8567
+ className: styles$z.track,
8339
8568
  href: order.tracking.url,
8340
8569
  target: "_blank",
8341
8570
  rel: "noopener noreferrer",
@@ -8352,7 +8581,7 @@ function OrderTrackingContent({ orderRef, locale: localeProp, onStartReturn, onO
8352
8581
  locale
8353
8582
  })]
8354
8583
  }), jsx("hr", {
8355
- className: styles$y.rule
8584
+ className: styles$z.rule
8356
8585
  }), jsx(OrderLines, {
8357
8586
  order
8358
8587
  }), jsx(ShippingAddressCard, {
@@ -8361,7 +8590,7 @@ function OrderTrackingContent({ orderRef, locale: localeProp, onStartReturn, onO
8361
8590
  order
8362
8591
  }), order.can_cancel && jsx("button", {
8363
8592
  type: "button",
8364
- className: styles$y.cancel,
8593
+ className: styles$z.cancel,
8365
8594
  onClick: () => setCancelOpen(true),
8366
8595
  children: t("Cancel order")
8367
8596
  }), jsx(NeedHelp, {
@@ -8414,14 +8643,14 @@ function NeedHelp({ order, onStartReturn, onOpenReturn, onContactSupport }) {
8414
8643
  if (order.status !== "delivered") return null;
8415
8644
  const returns = order.returns ?? [];
8416
8645
  return jsxs("section", {
8417
- className: styles$y.help,
8646
+ className: styles$z.help,
8418
8647
  "aria-labelledby": "order-help",
8419
8648
  children: [jsx("h2", {
8420
- className: styles$y.helpTitle,
8649
+ className: styles$z.helpTitle,
8421
8650
  id: "order-help",
8422
8651
  children: t("Need help?")
8423
8652
  }), jsxs("div", {
8424
- className: styles$y.helpRows,
8653
+ className: styles$z.helpRows,
8425
8654
  children: [returns.map((ret) => jsx(HelpRow, {
8426
8655
  label: returns.length > 1 ? t("Track return {0}", ret.return_ref) : "Track your return",
8427
8656
  status: RETURN_STATUS[ret.status] ?? ret.status.replace(/_/g, " "),
@@ -8451,14 +8680,14 @@ function HelpRow({ label: label2, status, onClick }) {
8451
8680
  const t = useT();
8452
8681
  return jsxs("button", {
8453
8682
  type: "button",
8454
- className: styles$y.helpRow,
8683
+ className: styles$z.helpRow,
8455
8684
  onClick,
8456
8685
  children: [jsx("span", {
8457
8686
  children: t(label2)
8458
8687
  }), jsxs("span", {
8459
- className: styles$y.helpRowEnd,
8688
+ className: styles$z.helpRowEnd,
8460
8689
  children: [status && jsx("span", {
8461
- className: styles$y.helpStatus,
8690
+ className: styles$z.helpStatus,
8462
8691
  children: t(status)
8463
8692
  }), jsx(ChevronRight$1, {})]
8464
8693
  })]
@@ -8470,15 +8699,15 @@ function shortRef$1(orderRef) {
8470
8699
  const page$2 = "_page_vqbqs_6";
8471
8700
  const confirmed = "_confirmed_vqbqs_16";
8472
8701
  const title$h = "_title_vqbqs_22";
8473
- const headline = "_headline_vqbqs_47";
8702
+ const headline$1 = "_headline_vqbqs_47";
8474
8703
  const subtitle$4 = "_subtitle_vqbqs_65";
8475
8704
  const rule = "_rule_vqbqs_77";
8476
8705
  const done = "_done_vqbqs_94";
8477
- const styles$x = {
8706
+ const styles$y = {
8478
8707
  page: page$2,
8479
8708
  confirmed,
8480
8709
  title: title$h,
8481
- headline,
8710
+ headline: headline$1,
8482
8711
  subtitle: subtitle$4,
8483
8712
  rule,
8484
8713
  done
@@ -8528,7 +8757,7 @@ function OrderConfirmationContent({ orderRef, locale: localeProp, onDone }) {
8528
8757
  }, [load]);
8529
8758
  if (state === "loading") {
8530
8759
  return jsxs("div", {
8531
- className: styles$x.page,
8760
+ className: styles$y.page,
8532
8761
  children: [jsx(Skeleton, {
8533
8762
  height: 140,
8534
8763
  radius: 8
@@ -8551,17 +8780,17 @@ function OrderConfirmationContent({ orderRef, locale: localeProp, onDone }) {
8551
8780
  });
8552
8781
  }
8553
8782
  return jsxs("div", {
8554
- className: styles$x.page,
8783
+ className: styles$y.page,
8555
8784
  children: [jsxs("section", {
8556
- className: styles$x.confirmed,
8785
+ className: styles$y.confirmed,
8557
8786
  "aria-label": t("Order confirmation"),
8558
8787
  children: [jsxs("div", {
8559
- className: styles$x.title,
8788
+ className: styles$y.title,
8560
8789
  children: [jsx("h1", {
8561
- className: styles$x.headline,
8790
+ className: styles$y.headline,
8562
8791
  children: t("Your order is confirmed")
8563
8792
  }), order.email && jsx("p", {
8564
- className: styles$x.subtitle,
8793
+ className: styles$y.subtitle,
8565
8794
  children: t("We’ve sent a confirmation to {0}", order.email)
8566
8795
  })]
8567
8796
  }), jsx(OrderTimeline, {
@@ -8572,7 +8801,7 @@ function OrderConfirmationContent({ orderRef, locale: localeProp, onDone }) {
8572
8801
  locale
8573
8802
  })]
8574
8803
  }), jsx("hr", {
8575
- className: styles$x.rule
8804
+ className: styles$y.rule
8576
8805
  }), jsx(OrderLines, {
8577
8806
  order
8578
8807
  }), jsx(ShippingAddressCard, {
@@ -8582,7 +8811,7 @@ function OrderConfirmationContent({ orderRef, locale: localeProp, onDone }) {
8582
8811
  }), onDone && jsx(Button, {
8583
8812
  variant: "secondary",
8584
8813
  fullWidth: true,
8585
- className: styles$x.done,
8814
+ className: styles$y.done,
8586
8815
  onClick: onDone,
8587
8816
  children: t("Done")
8588
8817
  })]
@@ -8593,7 +8822,7 @@ const progress = "_progress_u46qd_22";
8593
8822
  const delivered = "_delivered_u46qd_27";
8594
8823
  const neutral = "_neutral_u46qd_34";
8595
8824
  const critical = "_critical_u46qd_43";
8596
- const styles$w = {
8825
+ const styles$x = {
8597
8826
  badge: badge$2,
8598
8827
  progress,
8599
8828
  delivered,
@@ -8619,7 +8848,7 @@ function OrderStatusBadge({ status }) {
8619
8848
  const label2 = LABEL[status] ?? status.replace(/_/g, " ");
8620
8849
  const tone = TONE[status] ?? "neutral";
8621
8850
  return jsx("span", {
8622
- className: [styles$w.badge, styles$w[tone]].join(" "),
8851
+ className: [styles$x.badge, styles$x[tone]].join(" "),
8623
8852
  children: t(label2)
8624
8853
  });
8625
8854
  }
@@ -8638,13 +8867,13 @@ function ReturnStatusBadge({ status }) {
8638
8867
  const label2 = RETURN_LABEL[status] ?? status.replace(/_/g, " ");
8639
8868
  const tone = RETURN_TONE[status] ?? "neutral";
8640
8869
  return jsx("span", {
8641
- className: [styles$w.badge, styles$w[tone]].join(" "),
8870
+ className: [styles$x.badge, styles$x[tone]].join(" "),
8642
8871
  children: t(label2)
8643
8872
  });
8644
8873
  }
8645
8874
  const page$1 = "_page_qj11j_2";
8646
8875
  const empty = "_empty_qj11j_22";
8647
- const cta$1 = "_cta_qj11j_32";
8876
+ const cta$2 = "_cta_qj11j_32";
8648
8877
  const card$1 = "_card_qj11j_55";
8649
8878
  const tappable = "_tappable_qj11j_70";
8650
8879
  const head$1 = "_head_qj11j_79";
@@ -8655,14 +8884,14 @@ const bottom$1 = "_bottom_qj11j_120";
8655
8884
  const strip = "_strip_qj11j_128";
8656
8885
  const meta$1 = "_meta_qj11j_141";
8657
8886
  const tile$2 = "_tile_qj11j_150";
8658
- const image$8 = "_image_qj11j_160";
8887
+ const image$9 = "_image_qj11j_160";
8659
8888
  const placeholder$5 = "_placeholder_qj11j_167";
8660
8889
  const more = "_more_qj11j_174";
8661
8890
  const chevron$2 = "_chevron_qj11j_187";
8662
- const styles$v = {
8891
+ const styles$w = {
8663
8892
  page: page$1,
8664
8893
  empty,
8665
- cta: cta$1,
8894
+ cta: cta$2,
8666
8895
  card: card$1,
8667
8896
  tappable,
8668
8897
  head: head$1,
@@ -8673,7 +8902,7 @@ const styles$v = {
8673
8902
  strip,
8674
8903
  meta: meta$1,
8675
8904
  tile: tile$2,
8676
- image: image$8,
8905
+ image: image$9,
8677
8906
  placeholder: placeholder$5,
8678
8907
  more,
8679
8908
  chevron: chevron$2
@@ -8737,7 +8966,7 @@ function OrderListContent({ onOpenOrder, onOpenReturn, onStartShopping, locale:
8737
8966
  }, [load]);
8738
8967
  if (state === "loading") {
8739
8968
  return jsxs("div", {
8740
- className: styles$v.page,
8969
+ className: styles$w.page,
8741
8970
  children: [jsx(Skeleton, {
8742
8971
  height: 148,
8743
8972
  radius: 12
@@ -8758,14 +8987,14 @@ function OrderListContent({ onOpenOrder, onOpenReturn, onStartShopping, locale:
8758
8987
  }
8759
8988
  if (orders2.length === 0 && returns.length === 0) {
8760
8989
  return jsx("div", {
8761
- className: styles$v.empty,
8990
+ className: styles$w.empty,
8762
8991
  children: jsx(EmptyState, {
8763
8992
  title: t("Nothing here yet"),
8764
8993
  body: t("Your orders will show up here once you've shopped."),
8765
8994
  ...onStartShopping ? {
8766
8995
  action: jsx("button", {
8767
8996
  type: "button",
8768
- className: styles$v.cta,
8997
+ className: styles$w.cta,
8769
8998
  onClick: onStartShopping,
8770
8999
  children: t("Continue shopping")
8771
9000
  })
@@ -8783,7 +9012,7 @@ function OrderListContent({ onOpenOrder, onOpenReturn, onStartShopping, locale:
8783
9012
  ret
8784
9013
  }))].sort((a, b) => Date.parse(b.at) - Date.parse(a.at));
8785
9014
  return jsx("ul", {
8786
- className: styles$v.page,
9015
+ className: styles$w.page,
8787
9016
  children: rows.map((row2) => jsx("li", {
8788
9017
  children: "order" in row2 ? jsx(OrderCard, {
8789
9018
  order: row2.order,
@@ -8807,39 +9036,39 @@ function ReturnCard({ ret, locale, onOpen }) {
8807
9036
  const items2 = `${ret.item_count} ${ret.item_count === 1 ? t("item") : t("items")}`;
8808
9037
  const body3 = jsxs(Fragment, {
8809
9038
  children: [jsxs("div", {
8810
- className: styles$v.head,
9039
+ className: styles$w.head,
8811
9040
  children: [jsxs("div", {
8812
- className: styles$v.heading,
9041
+ className: styles$w.heading,
8813
9042
  children: [jsx("span", {
8814
- className: styles$v.title,
9043
+ className: styles$w.title,
8815
9044
  children: `${t("Return")} #${shortRef(ret.return_ref)}`
8816
9045
  }), jsx("span", {
8817
- className: styles$v.date,
9046
+ className: styles$w.date,
8818
9047
  children: formatPlaced(ret.reported_at, locale)
8819
9048
  })]
8820
9049
  }), jsx(ReturnStatusBadge, {
8821
9050
  status: ret.status
8822
9051
  })]
8823
9052
  }), jsxs("div", {
8824
- className: styles$v.bottom,
9053
+ className: styles$w.bottom,
8825
9054
  children: [jsx(ReturnThumbnails, {
8826
9055
  ret
8827
9056
  }), jsx("span", {
8828
- className: styles$v.meta,
9057
+ className: styles$w.meta,
8829
9058
  children: `${items2} · ${money2(ret.value)}`
8830
9059
  }), onOpen && jsx("span", {
8831
- className: styles$v.chevron,
9060
+ className: styles$w.chevron,
8832
9061
  children: jsx(Chevron, {})
8833
9062
  })]
8834
9063
  })]
8835
9064
  });
8836
9065
  if (!onOpen) return jsx("div", {
8837
- className: styles$v.card,
9066
+ className: styles$w.card,
8838
9067
  children: body3
8839
9068
  });
8840
9069
  return jsx("button", {
8841
9070
  type: "button",
8842
- className: [styles$v.card, styles$v.tappable].join(" "),
9071
+ className: [styles$w.card, styles$w.tappable].join(" "),
8843
9072
  onClick: onOpen,
8844
9073
  "aria-label": `${t("Return")} ${shortRef(ret.return_ref)}, ${ret.headline}`,
8845
9074
  children: body3
@@ -8852,27 +9081,27 @@ function ReturnThumbnails({ ret }) {
8852
9081
  const overflow = images.length >= TILES && hidden > 1 ? hidden : 0;
8853
9082
  if (images.length === 0) {
8854
9083
  return jsx("div", {
8855
- className: styles$v.strip,
9084
+ className: styles$w.strip,
8856
9085
  children: jsx("div", {
8857
- className: [styles$v.tile, styles$v.placeholder].join(" "),
9086
+ className: [styles$w.tile, styles$w.placeholder].join(" "),
8858
9087
  "aria-hidden": "true"
8859
9088
  })
8860
9089
  });
8861
9090
  }
8862
9091
  return jsx("div", {
8863
- className: styles$v.strip,
9092
+ className: styles$w.strip,
8864
9093
  children: images.map((src, i) => {
8865
9094
  const last = i === images.length - 1;
8866
9095
  return jsxs("div", {
8867
- className: styles$v.tile,
9096
+ className: styles$w.tile,
8868
9097
  children: [jsx(ShopImage, {
8869
9098
  src,
8870
9099
  alt: "",
8871
9100
  fill: true,
8872
9101
  sizes: "56px",
8873
- className: styles$v.image
9102
+ className: styles$w.image
8874
9103
  }), overflow > 0 && last && jsxs("span", {
8875
- className: styles$v.more,
9104
+ className: styles$w.more,
8876
9105
  children: [jsxs("span", {
8877
9106
  "aria-hidden": "true",
8878
9107
  children: ["+", overflow]
@@ -8889,36 +9118,36 @@ function OrderCard({ order, locale, onOpen }) {
8889
9118
  const t = useT();
8890
9119
  const body3 = jsxs(Fragment, {
8891
9120
  children: [jsxs("div", {
8892
- className: styles$v.head,
9121
+ className: styles$w.head,
8893
9122
  children: [jsxs("div", {
8894
- className: styles$v.heading,
9123
+ className: styles$w.heading,
8895
9124
  children: [jsx("span", {
8896
- className: styles$v.title,
9125
+ className: styles$w.title,
8897
9126
  children: t("Order #{0}", shortRef(order.order_ref))
8898
9127
  }), jsx("span", {
8899
- className: styles$v.date,
9128
+ className: styles$w.date,
8900
9129
  children: formatPlaced(order.placed_at, locale)
8901
9130
  })]
8902
9131
  }), jsx(OrderStatusBadge, {
8903
9132
  status: order.status
8904
9133
  })]
8905
9134
  }), jsxs("div", {
8906
- className: styles$v.bottom,
9135
+ className: styles$w.bottom,
8907
9136
  children: [jsx(Thumbnails, {
8908
9137
  order
8909
9138
  }), onOpen && jsx("span", {
8910
- className: styles$v.chevron,
9139
+ className: styles$w.chevron,
8911
9140
  children: jsx(Chevron, {})
8912
9141
  })]
8913
9142
  })]
8914
9143
  });
8915
9144
  if (!onOpen) return jsx("div", {
8916
- className: styles$v.card,
9145
+ className: styles$w.card,
8917
9146
  children: body3
8918
9147
  });
8919
9148
  return jsx("button", {
8920
9149
  type: "button",
8921
- className: [styles$v.card, styles$v.tappable].join(" "),
9150
+ className: [styles$w.card, styles$w.tappable].join(" "),
8922
9151
  onClick: onOpen,
8923
9152
  "aria-label": `Order ${shortRef(order.order_ref)}, ${order.headline}`,
8924
9153
  children: body3
@@ -8931,27 +9160,27 @@ function Thumbnails({ order }) {
8931
9160
  const overflow = images.length >= TILES && hidden > 1 ? hidden : 0;
8932
9161
  if (images.length === 0) {
8933
9162
  return jsx("div", {
8934
- className: styles$v.strip,
9163
+ className: styles$w.strip,
8935
9164
  children: jsx("div", {
8936
- className: [styles$v.tile, styles$v.placeholder].join(" "),
9165
+ className: [styles$w.tile, styles$w.placeholder].join(" "),
8937
9166
  "aria-hidden": "true"
8938
9167
  })
8939
9168
  });
8940
9169
  }
8941
9170
  return jsx("div", {
8942
- className: styles$v.strip,
9171
+ className: styles$w.strip,
8943
9172
  children: images.map((src, i) => {
8944
9173
  const last = i === images.length - 1;
8945
9174
  return jsxs("div", {
8946
- className: styles$v.tile,
9175
+ className: styles$w.tile,
8947
9176
  children: [jsx(ShopImage, {
8948
9177
  src,
8949
9178
  alt: "",
8950
9179
  fill: true,
8951
9180
  sizes: "56px",
8952
- className: styles$v.image
9181
+ className: styles$w.image
8953
9182
  }), overflow > 0 && last && jsxs("span", {
8954
- className: styles$v.more,
9183
+ className: styles$w.more,
8955
9184
  children: [jsxs("span", {
8956
9185
  "aria-hidden": "true",
8957
9186
  children: ["+", overflow]
@@ -8981,7 +9210,7 @@ const swatches = "_swatches_mdi63_1";
8981
9210
  const swatch = "_swatch_mdi63_1";
8982
9211
  const swatchActive = "_swatchActive_mdi63_18";
8983
9212
  const swatchDot = "_swatchDot_mdi63_22";
8984
- const styles$u = {
9213
+ const styles$v = {
8985
9214
  swatches,
8986
9215
  swatch,
8987
9216
  swatchActive,
@@ -8991,12 +9220,12 @@ function ColourSwatches({ variants, className }) {
8991
9220
  const colours = colourOptions(variants);
8992
9221
  if (colours.length === 0) return null;
8993
9222
  return jsx("div", {
8994
- className: [styles$u.swatches, className ?? ""].join(" ").trim(),
9223
+ className: [styles$v.swatches, className ?? ""].join(" ").trim(),
8995
9224
  "aria-hidden": "true",
8996
9225
  children: colours.map((c, i) => jsx("span", {
8997
- className: [styles$u.swatch, i === 0 ? styles$u.swatchActive : ""].join(" "),
9226
+ className: [styles$v.swatch, i === 0 ? styles$v.swatchActive : ""].join(" "),
8998
9227
  children: jsx("span", {
8999
- className: styles$u.swatchDot,
9228
+ className: styles$v.swatchDot,
9000
9229
  style: {
9001
9230
  background: swatchColour(c.value)
9002
9231
  }
@@ -9006,7 +9235,7 @@ function ColourSwatches({ variants, className }) {
9006
9235
  }
9007
9236
  const tile$1 = "_tile_yg69t_7";
9008
9237
  const media$2 = "_media_yg69t_15";
9009
- const image$7 = "_image_yg69t_25";
9238
+ const image$8 = "_image_yg69t_25";
9010
9239
  const placeholder$4 = "_placeholder_yg69t_29";
9011
9240
  const topBadge = "_topBadge_yg69t_37";
9012
9241
  const saleBadge$2 = "_saleBadge_yg69t_78";
@@ -9016,10 +9245,10 @@ const titlePrice$1 = "_titlePrice_yg69t_100";
9016
9245
  const title$f = "_title_yg69t_5";
9017
9246
  const large = "_large_yg69t_185";
9018
9247
  const swatchSlot = "_swatchSlot_yg69t_223";
9019
- const styles$t = {
9248
+ const styles$u = {
9020
9249
  tile: tile$1,
9021
9250
  media: media$2,
9022
- image: image$7,
9251
+ image: image$8,
9023
9252
  placeholder: placeholder$4,
9024
9253
  topBadge,
9025
9254
  saleBadge: saleBadge$2,
@@ -9038,37 +9267,37 @@ function ProductTile({ product, priority, size = "default" }) {
9038
9267
  const t = useT();
9039
9268
  return jsxs(ShopLink, {
9040
9269
  to: `/product/${encodeURIComponent(product.sku)}`,
9041
- className: [styles$t.tile, size === "large" ? styles$t.large : ""].join(" "),
9270
+ className: [styles$u.tile, size === "large" ? styles$u.large : ""].join(" "),
9042
9271
  children: [jsxs("div", {
9043
- className: styles$t.media,
9272
+ className: styles$u.media,
9044
9273
  children: [image2 ? jsx(ShopImage, {
9045
9274
  src: image2,
9046
9275
  alt: product.title,
9047
9276
  fill: true,
9048
9277
  sizes: size === "large" ? "(max-width: 480px) 100vw, 480px" : "(max-width: 480px) 45vw, 200px",
9049
- className: styles$t.image,
9278
+ className: styles$u.image,
9050
9279
  priority
9051
9280
  }) : jsx("div", {
9052
- className: styles$t.placeholder,
9281
+ className: styles$u.placeholder,
9053
9282
  "aria-hidden": "true"
9054
9283
  }), anyInStock && topBadge2 && jsx("span", {
9055
- className: styles$t.topBadge,
9284
+ className: styles$u.topBadge,
9056
9285
  children: topBadge2
9057
9286
  }), anyInStock && pct !== void 0 && jsx("span", {
9058
- className: styles$t.saleBadge,
9287
+ className: styles$u.saleBadge,
9059
9288
  children: jsx(SaleBadge, {
9060
9289
  pct
9061
9290
  })
9062
9291
  }), !anyInStock && jsx("span", {
9063
- className: styles$t.oos,
9292
+ className: styles$u.oos,
9064
9293
  children: t("Out of stock")
9065
9294
  })]
9066
9295
  }), jsxs("div", {
9067
- className: styles$t.bottom,
9296
+ className: styles$u.bottom,
9068
9297
  children: [jsxs("div", {
9069
- className: styles$t.titlePrice,
9298
+ className: styles$u.titlePrice,
9070
9299
  children: [jsx("span", {
9071
- className: styles$t.title,
9300
+ className: styles$u.title,
9072
9301
  children: product.title
9073
9302
  }), jsx(PriceBlock, {
9074
9303
  price: product.price,
@@ -9079,7 +9308,7 @@ function ProductTile({ product, priority, size = "default" }) {
9079
9308
  })]
9080
9309
  }), jsx(ColourSwatches, {
9081
9310
  variants: product.variants,
9082
- className: styles$t.swatchSlot
9311
+ className: styles$u.swatchSlot
9083
9312
  })]
9084
9313
  })]
9085
9314
  });
@@ -9089,7 +9318,7 @@ const title$e = "_title_v48ok_21";
9089
9318
  const link = "_link_v48ok_30";
9090
9319
  const track$4 = "_track_v48ok_42";
9091
9320
  const frame = "_frame_v48ok_62";
9092
- const image$6 = "_image_v48ok_73";
9321
+ const image$7 = "_image_v48ok_73";
9093
9322
  const placeholder$3 = "_placeholder_v48ok_77";
9094
9323
  const saleBadge$1 = "_saleBadge_v48ok_89";
9095
9324
  const oos$2 = "_oos_v48ok_97";
@@ -9099,13 +9328,13 @@ const name = "_name_v48ok_142";
9099
9328
  const price$1 = "_price_v48ok_155";
9100
9329
  const paid = "_paid_v48ok_164";
9101
9330
  const was$1 = "_was_v48ok_170";
9102
- const styles$s = {
9331
+ const styles$t = {
9103
9332
  section: section$3,
9104
9333
  title: title$e,
9105
9334
  link,
9106
9335
  track: track$4,
9107
9336
  frame,
9108
- image: image$6,
9337
+ image: image$7,
9109
9338
  placeholder: placeholder$3,
9110
9339
  saleBadge: saleBadge$1,
9111
9340
  oos: oos$2,
@@ -9123,54 +9352,54 @@ function ProductGallery({ title: title2, product }) {
9123
9352
  const inStock = product.variants.some((v) => v.in_stock);
9124
9353
  const images = product.media.length > 0 ? product.media : [void 0];
9125
9354
  return jsxs("section", {
9126
- className: styles$s.section,
9355
+ className: styles$t.section,
9127
9356
  "aria-labelledby": `gallery-${product.sku}`,
9128
9357
  children: [jsx("h2", {
9129
- className: styles$s.title,
9358
+ className: styles$t.title,
9130
9359
  id: `gallery-${product.sku}`,
9131
9360
  children: title2
9132
9361
  }), jsxs(ShopLink, {
9133
9362
  to: `/product/${encodeURIComponent(product.sku)}`,
9134
- className: styles$s.link,
9363
+ className: styles$t.link,
9135
9364
  children: [jsx("ul", {
9136
- className: styles$s.track,
9365
+ className: styles$t.track,
9137
9366
  "aria-label": t("{0} photographs", product.title),
9138
9367
  children: images.map((src, i) => jsxs("li", {
9139
- className: styles$s.frame,
9368
+ className: styles$t.frame,
9140
9369
  children: [src ? jsx(ShopImage, {
9141
9370
  src,
9142
9371
  alt: "",
9143
9372
  fill: true,
9144
9373
  sizes: "165px",
9145
- className: styles$s.image,
9374
+ className: styles$t.image,
9146
9375
  ...i === 0 ? {
9147
9376
  priority: true
9148
9377
  } : {}
9149
9378
  }) : jsx("div", {
9150
- className: styles$s.placeholder,
9379
+ className: styles$t.placeholder,
9151
9380
  "aria-hidden": "true"
9152
9381
  }), i === 0 && inStock && pct !== void 0 && jsx("span", {
9153
- className: styles$s.saleBadge,
9382
+ className: styles$t.saleBadge,
9154
9383
  children: jsx(SaleBadge, {
9155
9384
  pct
9156
9385
  })
9157
9386
  }), i === 0 && !inStock && jsx("span", {
9158
- className: styles$s.oos,
9387
+ className: styles$t.oos,
9159
9388
  children: t("Out of stock")
9160
9389
  })]
9161
9390
  }, src ?? i))
9162
9391
  }), jsxs("div", {
9163
- className: styles$s.caption,
9392
+ className: styles$t.caption,
9164
9393
  children: [jsx("span", {
9165
- className: styles$s.name,
9394
+ className: styles$t.name,
9166
9395
  children: product.title
9167
9396
  }), jsxs("span", {
9168
- className: styles$s.price,
9397
+ className: styles$t.price,
9169
9398
  children: [jsx("span", {
9170
- className: styles$s.paid,
9399
+ className: styles$t.paid,
9171
9400
  children: format(product.price)
9172
9401
  }), product.compare_at && jsxs("span", {
9173
- className: styles$s.was,
9402
+ className: styles$t.was,
9174
9403
  children: [jsx("span", {
9175
9404
  className: "visually-hidden",
9176
9405
  children: t("Was {0}", format(product.compare_at))
@@ -9181,7 +9410,7 @@ function ProductGallery({ title: title2, product }) {
9181
9410
  })]
9182
9411
  }), jsx(ColourSwatches, {
9183
9412
  variants: product.variants,
9184
- className: styles$s.swatchRow
9413
+ className: styles$t.swatchRow
9185
9414
  })]
9186
9415
  })]
9187
9416
  })]
@@ -9192,7 +9421,7 @@ const chips$1 = "_chips_6p29u_8";
9192
9421
  const chip$1 = "_chip_6p29u_8";
9193
9422
  const on = "_on_6p29u_36";
9194
9423
  const clear = "_clear_6p29u_42";
9195
- const styles$r = {
9424
+ const styles$s = {
9196
9425
  bar: bar$1,
9197
9426
  chips: chips$1,
9198
9427
  chip: chip$1,
@@ -9203,24 +9432,24 @@ function FilterBar({ options: options2, active, onToggle, onClear }) {
9203
9432
  const t = useT();
9204
9433
  const hasActive = active.length > 0;
9205
9434
  return jsxs("div", {
9206
- className: styles$r.bar,
9435
+ className: styles$s.bar,
9207
9436
  role: "group",
9208
9437
  "aria-label": t("Filters"),
9209
9438
  children: [jsx("div", {
9210
- className: styles$r.chips,
9439
+ className: styles$s.chips,
9211
9440
  children: options2.map((opt) => {
9212
9441
  const on2 = active.includes(opt.value);
9213
9442
  return jsx("button", {
9214
9443
  type: "button",
9215
9444
  "aria-pressed": on2,
9216
- className: [styles$r.chip, on2 ? styles$r.on : ""].join(" "),
9445
+ className: [styles$s.chip, on2 ? styles$s.on : ""].join(" "),
9217
9446
  onClick: () => onToggle(opt.value),
9218
9447
  children: opt.label
9219
9448
  }, opt.value);
9220
9449
  })
9221
9450
  }), hasActive && onClear && jsx("button", {
9222
9451
  type: "button",
9223
- className: styles$r.clear,
9452
+ className: styles$s.clear,
9224
9453
  onClick: onClear,
9225
9454
  children: t("Clear")
9226
9455
  })]
@@ -9228,7 +9457,7 @@ function FilterBar({ options: options2, active, onToggle, onClear }) {
9228
9457
  }
9229
9458
  const wrap$2 = "_wrap_15ntf_1";
9230
9459
  const grid$1 = "_grid_15ntf_7";
9231
- const styles$q = {
9460
+ const styles$r = {
9232
9461
  wrap: wrap$2,
9233
9462
  grid: grid$1
9234
9463
  };
@@ -9274,7 +9503,7 @@ function ProductGrid({ category, initialProducts, initialCursor, filters = [] })
9274
9503
  }, [loadMore]);
9275
9504
  const visible = active.length === 0 ? products : products.filter((p) => active.includes(p.category));
9276
9505
  return jsxs("div", {
9277
- className: styles$q.wrap,
9506
+ className: styles$r.wrap,
9278
9507
  children: [filters.length > 0 && jsx(FilterBar, {
9279
9508
  options: filters,
9280
9509
  active,
@@ -9289,7 +9518,7 @@ function ProductGrid({ category, initialProducts, initialCursor, filters = [] })
9289
9518
  children: t("Clear filters")
9290
9519
  }) : void 0
9291
9520
  }) : jsx("ul", {
9292
- className: styles$q.grid,
9521
+ className: styles$r.grid,
9293
9522
  children: visible.map((product, i) => jsx("li", {
9294
9523
  children: jsx(ProductTile, {
9295
9524
  product,
@@ -9297,7 +9526,7 @@ function ProductGrid({ category, initialProducts, initialCursor, filters = [] })
9297
9526
  })
9298
9527
  }, product.sku))
9299
9528
  }), loading && jsx("div", {
9300
- className: styles$q.grid,
9529
+ className: styles$r.grid,
9301
9530
  "aria-hidden": "true",
9302
9531
  children: [0, 1].map((i) => jsx(Skeleton, {
9303
9532
  height: 200,
@@ -9316,7 +9545,7 @@ const seeAll = "_seeAll_1rll1_27";
9316
9545
  const track$3 = "_track_1rll1_33";
9317
9546
  const item = "_item_1rll1_67";
9318
9547
  const inset = "_inset_1rll1_79";
9319
- const styles$p = {
9548
+ const styles$q = {
9320
9549
  rail,
9321
9550
  header: header$5,
9322
9551
  title: title$d,
@@ -9329,22 +9558,22 @@ function RailCarousel({ title: title2, products, seeAllTo, inset: inset2 }) {
9329
9558
  const t = useT();
9330
9559
  if (products.length === 0) return null;
9331
9560
  return jsxs("section", {
9332
- className: [styles$p.rail, inset2 ? styles$p.inset : ""].join(" "),
9561
+ className: [styles$q.rail, inset2 ? styles$q.inset : ""].join(" "),
9333
9562
  "aria-label": title2,
9334
9563
  children: [jsxs("div", {
9335
- className: styles$p.header,
9564
+ className: styles$q.header,
9336
9565
  children: [jsx("h2", {
9337
- className: styles$p.title,
9566
+ className: styles$q.title,
9338
9567
  children: title2
9339
9568
  }), seeAllTo && jsx(ShopLink, {
9340
- className: styles$p.seeAll,
9569
+ className: styles$q.seeAll,
9341
9570
  to: seeAllTo,
9342
9571
  children: t("See all")
9343
9572
  })]
9344
9573
  }), jsx("ul", {
9345
- className: styles$p.track,
9574
+ className: styles$q.track,
9346
9575
  children: products.map((product, i) => jsx("li", {
9347
- className: styles$p.item,
9576
+ className: styles$q.item,
9348
9577
  children: jsx(ProductTile, {
9349
9578
  product,
9350
9579
  priority: i < 2
@@ -9361,9 +9590,9 @@ const grabber = "_grabber_uxpgl_51";
9361
9590
  const header$4 = "_header_uxpgl_59";
9362
9591
  const title$c = "_title_uxpgl_67";
9363
9592
  const close$1 = "_close_uxpgl_71";
9364
- const body$4 = "_body_uxpgl_84";
9593
+ const body$5 = "_body_uxpgl_84";
9365
9594
  const footer = "_footer_uxpgl_97";
9366
- const styles$o = {
9595
+ const styles$p = {
9367
9596
  overlay: overlay$2,
9368
9597
  scrim: scrim$4,
9369
9598
  sheet: sheet$2,
@@ -9372,7 +9601,7 @@ const styles$o = {
9372
9601
  header: header$4,
9373
9602
  title: title$c,
9374
9603
  close: close$1,
9375
- body: body$4,
9604
+ body: body$5,
9376
9605
  footer
9377
9606
  };
9378
9607
  const DISMISS_THRESHOLD_PX = 96;
@@ -9403,14 +9632,14 @@ function BottomSheet({ open, onClose, title: title2, children, footer: footer2 }
9403
9632
  useModalDialog(open, onClose, sheetRef);
9404
9633
  if (!open) return null;
9405
9634
  return jsxs("div", {
9406
- className: styles$o.overlay,
9635
+ className: styles$p.overlay,
9407
9636
  children: [jsx("div", {
9408
- className: styles$o.scrim,
9637
+ className: styles$p.scrim,
9409
9638
  onClick: onClose,
9410
9639
  "aria-hidden": "true"
9411
9640
  }), jsxs(ShopSurface, {
9412
9641
  tone: "light",
9413
- className: styles$o.sheet,
9642
+ className: styles$p.sheet,
9414
9643
  role: "dialog",
9415
9644
  "aria-modal": "true",
9416
9645
  "aria-labelledby": titleId,
@@ -9420,7 +9649,7 @@ function BottomSheet({ open, onClose, title: title2, children, footer: footer2 }
9420
9649
  transition: "none"
9421
9650
  } : void 0,
9422
9651
  children: [jsx("div", {
9423
- className: styles$o.grabArea,
9652
+ className: styles$p.grabArea,
9424
9653
  onPointerDown: (e) => {
9425
9654
  e.currentTarget.setPointerCapture(e.pointerId);
9426
9655
  onDragStart(e.clientY);
@@ -9429,18 +9658,18 @@ function BottomSheet({ open, onClose, title: title2, children, footer: footer2 }
9429
9658
  onPointerUp: onDragEnd,
9430
9659
  onPointerCancel: onDragEnd,
9431
9660
  children: jsx("div", {
9432
- className: styles$o.grabber,
9661
+ className: styles$p.grabber,
9433
9662
  "aria-hidden": "true"
9434
9663
  })
9435
9664
  }), jsxs("div", {
9436
- className: styles$o.header,
9665
+ className: styles$p.header,
9437
9666
  children: [jsx("h2", {
9438
9667
  id: titleId,
9439
- className: styles$o.title,
9668
+ className: styles$p.title,
9440
9669
  children: title2
9441
9670
  }), jsx("button", {
9442
9671
  type: "button",
9443
- className: styles$o.close,
9672
+ className: styles$p.close,
9444
9673
  onClick: onClose,
9445
9674
  "aria-label": t("Close"),
9446
9675
  children: jsx("svg", {
@@ -9458,10 +9687,10 @@ function BottomSheet({ open, onClose, title: title2, children, footer: footer2 }
9458
9687
  })
9459
9688
  })]
9460
9689
  }), jsx("div", {
9461
- className: styles$o.body,
9690
+ className: styles$p.body,
9462
9691
  children
9463
9692
  }), footer2 && jsx("div", {
9464
- className: styles$o.footer,
9693
+ className: styles$p.footer,
9465
9694
  children: footer2
9466
9695
  })]
9467
9696
  })]
@@ -9481,7 +9710,7 @@ const stepper = "_stepper_1rmip_10";
9481
9710
  const cap = "_cap_1rmip_23";
9482
9711
  const button = "_button_1rmip_31";
9483
9712
  const value$1 = "_value_1rmip_50";
9484
- const styles$n = {
9713
+ const styles$o = {
9485
9714
  wrap: wrap$1,
9486
9715
  stepper,
9487
9716
  cap,
@@ -9559,24 +9788,24 @@ function QtyStepper({ qty, max, onChange, onRemove, disabled: disabled2, capDesc
9559
9788
  if (!atMax) onChange(qty + 1);
9560
9789
  }
9561
9790
  return jsxs("div", {
9562
- className: styles$n.wrap,
9791
+ className: styles$o.wrap,
9563
9792
  children: [jsxs("div", {
9564
- className: styles$n.stepper,
9793
+ className: styles$o.stepper,
9565
9794
  children: [jsx("button", {
9566
9795
  type: "button",
9567
- className: styles$n.button,
9796
+ className: styles$o.button,
9568
9797
  onClick: decrement,
9569
9798
  disabled: disabled2,
9570
9799
  "aria-label": willDelete ? t("Remove item") : t("Decrease quantity"),
9571
9800
  children: willDelete ? jsx(TrashIcon, {}) : jsx(MinusIcon, {})
9572
9801
  }), jsx("span", {
9573
- className: styles$n.value,
9802
+ className: styles$o.value,
9574
9803
  "aria-live": "polite",
9575
9804
  "aria-label": `Quantity ${qty}`,
9576
9805
  children: qty
9577
9806
  }), jsx("button", {
9578
9807
  type: "button",
9579
- className: styles$n.button,
9808
+ className: styles$o.button,
9580
9809
  onClick: increment,
9581
9810
  disabled: disabled2 || atMax,
9582
9811
  "aria-label": t("Increase quantity"),
@@ -9585,7 +9814,7 @@ function QtyStepper({ qty, max, onChange, onRemove, disabled: disabled2, capDesc
9585
9814
  })]
9586
9815
  }), atMax && capDescribedBy === void 0 && jsx("span", {
9587
9816
  id: ownCapId,
9588
- className: styles$n.cap,
9817
+ className: styles$o.cap,
9589
9818
  role: "status",
9590
9819
  children: max === 0 ? t("Out of stock") : t("Only {0} left", max)
9591
9820
  })]
@@ -9597,7 +9826,7 @@ const pending = "_pending_1dx14_18";
9597
9826
  const labels = "_labels_1dx14_24";
9598
9827
  const lowStock$1 = "_lowStock_1dx14_39";
9599
9828
  const media$1 = "_media_1dx14_49";
9600
- const image$5 = "_image_1dx14_59";
9829
+ const image$6 = "_image_1dx14_59";
9601
9830
  const placeholder$2 = "_placeholder_1dx14_75";
9602
9831
  const saleBadge = "_saleBadge_1dx14_88";
9603
9832
  const oos$1 = "_oos_1dx14_103";
@@ -9610,14 +9839,14 @@ const detail = "_detail_1dx14_164";
9610
9839
  const price = "_price_1dx14_183";
9611
9840
  const amount = "_amount_1dx14_191";
9612
9841
  const was = "_was_1dx14_200";
9613
- const styles$m = {
9842
+ const styles$n = {
9614
9843
  line,
9615
9844
  row: row$5,
9616
9845
  pending,
9617
9846
  labels,
9618
9847
  lowStock: lowStock$1,
9619
9848
  media: media$1,
9620
- image: image$5,
9849
+ image: image$6,
9621
9850
  placeholder: placeholder$2,
9622
9851
  saleBadge,
9623
9852
  oos: oos$1,
@@ -9644,53 +9873,53 @@ function CartLineItem({ item: item2, title: title2, image: image2, compareAt: co
9644
9873
  const noticeId = useStableId("cart-line-stock");
9645
9874
  const notice = lowStock2 || soldOut ? noticeId : void 0;
9646
9875
  return jsxs("div", {
9647
- className: [styles$m.line, pending2 ? styles$m.pending : ""].join(" "),
9876
+ className: [styles$n.line, pending2 ? styles$n.pending : ""].join(" "),
9648
9877
  children: [jsxs("div", {
9649
- className: styles$m.row,
9878
+ className: styles$n.row,
9650
9879
  children: [jsxs("div", {
9651
- className: styles$m.media,
9880
+ className: styles$n.media,
9652
9881
  children: [displayImage ? jsx(ShopImage, {
9653
9882
  src: displayImage,
9654
9883
  alt: "",
9655
9884
  fill: true,
9656
9885
  sizes: "100px",
9657
- className: styles$m.image
9886
+ className: styles$n.image
9658
9887
  }) : jsx("div", {
9659
- className: styles$m.placeholder,
9888
+ className: styles$n.placeholder,
9660
9889
  "aria-hidden": "true"
9661
9890
  }), soldOut ? jsx("span", {
9662
- className: styles$m.oos,
9891
+ className: styles$n.oos,
9663
9892
  id: noticeId,
9664
9893
  children: t("Out of stock")
9665
9894
  }) : pct !== void 0 && jsx("span", {
9666
- className: styles$m.saleBadge,
9895
+ className: styles$n.saleBadge,
9667
9896
  children: jsx(SaleBadge, {
9668
9897
  pct
9669
9898
  })
9670
9899
  })]
9671
9900
  }), jsxs("div", {
9672
- className: styles$m.info,
9901
+ className: styles$n.info,
9673
9902
  children: [jsxs("div", {
9674
- className: styles$m.head,
9903
+ className: styles$n.head,
9675
9904
  children: [jsxs("div", {
9676
- className: styles$m.meta,
9905
+ className: styles$n.meta,
9677
9906
  children: [jsx("span", {
9678
- className: styles$m.title,
9907
+ className: styles$n.title,
9679
9908
  children: displayTitle
9680
9909
  }), pairs.length > 0 && jsx("div", {
9681
- className: styles$m.details,
9910
+ className: styles$n.details,
9682
9911
  children: pairs.map(({ key, label: label2, value: value2 }) => jsxs("span", {
9683
- className: styles$m.detail,
9912
+ className: styles$n.detail,
9684
9913
  children: [t(label2), ": ", value2]
9685
9914
  }, key))
9686
9915
  })]
9687
9916
  }), jsxs("div", {
9688
- className: styles$m.price,
9917
+ className: styles$n.price,
9689
9918
  children: [jsx("span", {
9690
- className: styles$m.amount,
9919
+ className: styles$n.amount,
9691
9920
  children: format(item2.line_total)
9692
9921
  }), compareAt2 && jsx("span", {
9693
- className: styles$m.was,
9922
+ className: styles$n.was,
9694
9923
  children: format(compareAt2)
9695
9924
  })]
9696
9925
  })]
@@ -9704,10 +9933,10 @@ function CartLineItem({ item: item2, title: title2, image: image2, compareAt: co
9704
9933
  })]
9705
9934
  })]
9706
9935
  }), lowStock2 && jsx("div", {
9707
- className: styles$m.labels,
9936
+ className: styles$n.labels,
9708
9937
  children: jsx("span", {
9709
9938
  id: noticeId,
9710
- className: styles$m.lowStock,
9939
+ className: styles$n.lowStock,
9711
9940
  role: "status",
9712
9941
  children: t("Only {0} left", available)
9713
9942
  })
@@ -9719,7 +9948,7 @@ const row$4 = "_row_1cf1a_10";
9719
9948
  const icon$2 = "_icon_1cf1a_16";
9720
9949
  const label = "_label_1cf1a_22";
9721
9950
  const divider$1 = "_divider_1cf1a_29";
9722
- const styles$l = {
9951
+ const styles$m = {
9723
9952
  box: box$1,
9724
9953
  row: row$4,
9725
9954
  icon: icon$2,
@@ -9729,12 +9958,12 @@ const styles$l = {
9729
9958
  function ShippingInfo() {
9730
9959
  const t = useT();
9731
9960
  return jsxs("section", {
9732
- className: styles$l.box,
9961
+ className: styles$m.box,
9733
9962
  "aria-label": t("Shipping and returns"),
9734
9963
  children: [jsxs("div", {
9735
- className: styles$l.row,
9964
+ className: styles$m.row,
9736
9965
  children: [jsxs("svg", {
9737
- className: styles$l.icon,
9966
+ className: styles$m.icon,
9738
9967
  width: "24",
9739
9968
  height: "24",
9740
9969
  viewBox: "0 0 24 24",
@@ -9759,16 +9988,16 @@ function ShippingInfo() {
9759
9988
  strokeWidth: "1.5"
9760
9989
  })]
9761
9990
  }), jsx("p", {
9762
- className: styles$l.label,
9991
+ className: styles$m.label,
9763
9992
  children: t("Standard or express delivery")
9764
9993
  })]
9765
9994
  }), jsx("div", {
9766
- className: styles$l.divider,
9995
+ className: styles$m.divider,
9767
9996
  role: "presentation"
9768
9997
  }), jsxs("div", {
9769
- className: styles$l.row,
9998
+ className: styles$m.row,
9770
9999
  children: [jsxs("svg", {
9771
- className: styles$l.icon,
10000
+ className: styles$m.icon,
9772
10001
  width: "24",
9773
10002
  height: "24",
9774
10003
  viewBox: "0 0 24 24",
@@ -9788,7 +10017,7 @@ function ShippingInfo() {
9788
10017
  strokeLinejoin: "round"
9789
10018
  })]
9790
10019
  }), jsx("p", {
9791
- className: styles$l.label,
10020
+ className: styles$m.label,
9792
10021
  children: t("14 days returns")
9793
10022
  })]
9794
10023
  })]
@@ -9799,7 +10028,7 @@ const floating$1 = "_floating_23dkv_52";
9799
10028
  const divider = "_divider_23dkv_58";
9800
10029
  const info$1 = "_info_23dkv_62";
9801
10030
  const actions = "_actions_23dkv_70";
9802
- const styles$k = {
10031
+ const styles$l = {
9803
10032
  bar,
9804
10033
  floating: floating$1,
9805
10034
  divider,
@@ -9808,28 +10037,28 @@ const styles$k = {
9808
10037
  };
9809
10038
  function StickyCtaBar({ children, info: info2, variant = "floating" }) {
9810
10039
  return jsxs("div", {
9811
- className: [styles$k.bar, styles$k[variant]].join(" "),
10040
+ className: [styles$l.bar, styles$l[variant]].join(" "),
9812
10041
  children: [info2 && jsx("div", {
9813
- className: styles$k.info,
10042
+ className: styles$l.info,
9814
10043
  children: info2
9815
10044
  }), jsx("div", {
9816
- className: styles$k.actions,
10045
+ className: styles$l.actions,
9817
10046
  children
9818
10047
  })]
9819
10048
  });
9820
10049
  }
9821
10050
  const surface = "_surface_1bdb0_15";
9822
10051
  const screen = "_screen_1bdb0_20";
9823
- const body$3 = "_body_1bdb0_12";
10052
+ const body$4 = "_body_1bdb0_12";
9824
10053
  const items = "_items_1bdb0_34";
9825
10054
  const sectionHeader = "_sectionHeader_1bdb0_40";
9826
10055
  const sectionTitle = "_sectionTitle_1bdb0_46";
9827
10056
  const count = "_count_1bdb0_67";
9828
10057
  const lines = "_lines_1bdb0_91";
9829
- const styles$j = {
10058
+ const styles$k = {
9830
10059
  surface,
9831
10060
  screen,
9832
- body: body$3,
10061
+ body: body$4,
9833
10062
  items,
9834
10063
  sectionHeader,
9835
10064
  sectionTitle,
@@ -9842,7 +10071,7 @@ function CartView(props = {}) {
9842
10071
  return jsx(ShopSurface, {
9843
10072
  tone: "light",
9844
10073
  fill: true,
9845
- className: styles$j.surface,
10074
+ className: styles$k.surface,
9846
10075
  children: jsx(CartViewContent, {
9847
10076
  ...props
9848
10077
  })
@@ -10004,22 +10233,22 @@ function CartViewContent({ onContinueShopping, checkoutLabel } = {}) {
10004
10233
  }
10005
10234
  const itemCount = cart2.items.reduce((n, i) => n + i.qty, 0);
10006
10235
  return jsxs("div", {
10007
- className: styles$j.screen,
10236
+ className: styles$k.screen,
10008
10237
  children: [jsxs("div", {
10009
- className: styles$j.body,
10238
+ className: styles$k.body,
10010
10239
  children: [jsxs("section", {
10011
- className: styles$j.items,
10240
+ className: styles$k.items,
10012
10241
  children: [jsxs("div", {
10013
- className: styles$j.sectionHeader,
10242
+ className: styles$k.sectionHeader,
10014
10243
  children: [jsx("h2", {
10015
- className: styles$j.sectionTitle,
10244
+ className: styles$k.sectionTitle,
10016
10245
  children: t("Items")
10017
10246
  }), jsx("span", {
10018
- className: styles$j.count,
10247
+ className: styles$k.count,
10019
10248
  children: itemCount
10020
10249
  })]
10021
10250
  }), jsx("ul", {
10022
- className: styles$j.lines,
10251
+ className: styles$k.lines,
10023
10252
  children: cart2.items.map((item2) => jsx("li", {
10024
10253
  children: jsx(CartLineItem, {
10025
10254
  item: item2,
@@ -10087,16 +10316,16 @@ function CartSheetProvider({ children }) {
10087
10316
  const gallery = "_gallery_1vbj7_1";
10088
10317
  const track$2 = "_track_1vbj7_5";
10089
10318
  const slide$1 = "_slide_1vbj7_20";
10090
- const image$4 = "_image_1vbj7_27";
10319
+ const image$5 = "_image_1vbj7_27";
10091
10320
  const placeholder$1 = "_placeholder_1vbj7_31";
10092
10321
  const dots$2 = "_dots_1vbj7_49";
10093
10322
  const dot$2 = "_dot_1vbj7_49";
10094
10323
  const dotActive$2 = "_dotActive_1vbj7_100";
10095
- const styles$i = {
10324
+ const styles$j = {
10096
10325
  gallery,
10097
10326
  track: track$2,
10098
10327
  slide: slide$1,
10099
- image: image$4,
10328
+ image: image$5,
10100
10329
  placeholder: placeholder$1,
10101
10330
  dots: dots$2,
10102
10331
  dot: dot$2,
@@ -10143,30 +10372,30 @@ function MediaGallery({ media: media2, alt, focus }) {
10143
10372
  }
10144
10373
  if (media2.length === 0) {
10145
10374
  return jsx("div", {
10146
- className: styles$i.placeholder,
10375
+ className: styles$j.placeholder,
10147
10376
  "aria-hidden": "true"
10148
10377
  });
10149
10378
  }
10150
10379
  return jsxs("div", {
10151
- className: styles$i.gallery,
10380
+ className: styles$j.gallery,
10152
10381
  children: [jsx("div", {
10153
- className: styles$i.track,
10382
+ className: styles$j.track,
10154
10383
  ref: trackRef,
10155
10384
  role: "group",
10156
10385
  "aria-label": `${alt} images`,
10157
10386
  children: media2.map((src, i) => jsx("div", {
10158
- className: styles$i.slide,
10387
+ className: styles$j.slide,
10159
10388
  children: jsx(ShopImage, {
10160
10389
  src,
10161
10390
  alt: `${alt} — image ${i + 1} of ${media2.length}`,
10162
10391
  fill: true,
10163
10392
  sizes: "(max-width: 480px) 100vw, 480px",
10164
- className: styles$i.image,
10393
+ className: styles$j.image,
10165
10394
  priority: i === 0
10166
10395
  })
10167
10396
  }, src))
10168
10397
  }), media2.length > 1 && jsx("div", {
10169
- className: styles$i.dots,
10398
+ className: styles$j.dots,
10170
10399
  role: "tablist",
10171
10400
  "aria-label": t("Gallery pagination"),
10172
10401
  children: media2.map((src, i) => jsx("button", {
@@ -10174,7 +10403,7 @@ function MediaGallery({ media: media2, alt, focus }) {
10174
10403
  role: "tab",
10175
10404
  "aria-selected": i === active,
10176
10405
  "aria-label": `Go to image ${i + 1}`,
10177
- className: [styles$i.dot, i === active ? styles$i.dotActive : ""].join(" "),
10406
+ className: [styles$j.dot, i === active ? styles$j.dotActive : ""].join(" "),
10178
10407
  onClick: () => goTo(i)
10179
10408
  }, src))
10180
10409
  })]
@@ -10182,7 +10411,7 @@ function MediaGallery({ media: media2, alt, focus }) {
10182
10411
  }
10183
10412
  const scrim$3 = "_scrim_r4azu_8";
10184
10413
  const sheet$1 = "_sheet_r4azu_2";
10185
- const body$2 = "_body_r4azu_40";
10414
+ const body$3 = "_body_r4azu_40";
10186
10415
  const titles = "_titles_r4azu_67";
10187
10416
  const title$a = "_title_r4azu_67";
10188
10417
  const subtitle$3 = "_subtitle_r4azu_83";
@@ -10205,10 +10434,10 @@ const fabric = "_fabric_r4azu_328";
10205
10434
  const fabricLabel = "_fabricLabel_r4azu_336";
10206
10435
  const fabricText = "_fabricText_r4azu_344";
10207
10436
  const notes = "_notes_r4azu_355";
10208
- const styles$h = {
10437
+ const styles$i = {
10209
10438
  scrim: scrim$3,
10210
10439
  sheet: sheet$1,
10211
- body: body$2,
10440
+ body: body$3,
10212
10441
  titles,
10213
10442
  title: title$a,
10214
10443
  subtitle: subtitle$3,
@@ -10259,12 +10488,12 @@ function SizeGuideSheet({ guide, onClose }) {
10259
10488
  const shown = useMemo(() => authored && unit2 && unit2 !== authored ? rows.map((row2) => row2.map((cell) => convert(cell, authored, unit2))) : rows, [rows, authored, unit2]);
10260
10489
  useModalDialog(true, onClose, sheetRef);
10261
10490
  return jsx("div", {
10262
- className: styles$h.scrim,
10491
+ className: styles$i.scrim,
10263
10492
  onClick: onClose,
10264
10493
  children: jsxs(ShopSurface, {
10265
10494
  tone: "light",
10266
10495
  ref: sheetRef,
10267
- className: styles$h.sheet,
10496
+ className: styles$i.sheet,
10268
10497
  role: "dialog",
10269
10498
  "aria-modal": "true",
10270
10499
  "aria-labelledby": "size-guide-title",
@@ -10273,36 +10502,36 @@ function SizeGuideSheet({ guide, onClose }) {
10273
10502
  onClose,
10274
10503
  closeLabel: t("Close size guide")
10275
10504
  }), jsxs("div", {
10276
- className: styles$h.body,
10505
+ className: styles$i.body,
10277
10506
  children: [jsxs("div", {
10278
- className: styles$h.titles,
10507
+ className: styles$i.titles,
10279
10508
  children: [jsx("h2", {
10280
10509
  id: "size-guide-title",
10281
- className: styles$h.title,
10510
+ className: styles$i.title,
10282
10511
  children: guide.title
10283
10512
  }), guide.subtitle && jsx("p", {
10284
- className: styles$h.subtitle,
10513
+ className: styles$i.subtitle,
10285
10514
  children: guide.subtitle
10286
10515
  })]
10287
10516
  }), hasTable && authored && unit2 && jsx("div", {
10288
- className: styles$h.units,
10517
+ className: styles$i.units,
10289
10518
  role: "radiogroup",
10290
10519
  "aria-label": t("Measurement unit"),
10291
10520
  children: [authored, otherUnit(authored)].map((u) => jsx("button", {
10292
10521
  type: "button",
10293
10522
  role: "radio",
10294
10523
  "aria-checked": u === unit2,
10295
- className: `${styles$h.unit} ${u === unit2 ? styles$h.unitOn : styles$h.unitOff}`,
10524
+ className: `${styles$i.unit} ${u === unit2 ? styles$i.unitOn : styles$i.unitOff}`,
10296
10525
  onClick: () => setUnit(u),
10297
10526
  children: UNIT_LABEL[u]
10298
10527
  }, u))
10299
10528
  }), hasTable && jsx("div", {
10300
- className: styles$h.tableWrap,
10529
+ className: styles$i.tableWrap,
10301
10530
  children: jsxs("table", {
10302
- className: styles$h.table,
10531
+ className: styles$i.table,
10303
10532
  children: [jsx("colgroup", {
10304
10533
  children: columns.map((c, i) => jsx("col", {
10305
- className: i === 0 || i === columns.length - 1 ? styles$h.colEdge : styles$h.col
10534
+ className: i === 0 || i === columns.length - 1 ? styles$i.colEdge : styles$i.col
10306
10535
  }, c))
10307
10536
  }), jsx("thead", {
10308
10537
  children: jsx("tr", {
@@ -10323,39 +10552,39 @@ function SizeGuideSheet({ guide, onClose }) {
10323
10552
  })]
10324
10553
  })
10325
10554
  }), guide.note && jsx("p", {
10326
- className: styles$h.note,
10555
+ className: styles$i.note,
10327
10556
  children: guide.note
10328
10557
  }), measurements.length > 0 && jsxs("section", {
10329
- className: styles$h.how,
10558
+ className: styles$i.how,
10330
10559
  "aria-labelledby": "size-guide-how",
10331
10560
  children: [jsx("h3", {
10332
10561
  id: "size-guide-how",
10333
- className: styles$h.howTitle,
10562
+ className: styles$i.howTitle,
10334
10563
  children: t("How to measure")
10335
10564
  }), jsx("dl", {
10336
- className: styles$h.howList,
10565
+ className: styles$i.howList,
10337
10566
  children: measurements.map((m) => jsxs("div", {
10338
- className: styles$h.howItem,
10567
+ className: styles$i.howItem,
10339
10568
  children: [jsx("dt", {
10340
- className: styles$h.howLabel,
10569
+ className: styles$i.howLabel,
10341
10570
  children: m.label
10342
10571
  }), jsx("dd", {
10343
- className: styles$h.howText,
10572
+ className: styles$i.howText,
10344
10573
  children: m.description
10345
10574
  })]
10346
10575
  }, m.label))
10347
10576
  })]
10348
10577
  }), guide.fabric && jsxs("div", {
10349
- className: styles$h.fabric,
10578
+ className: styles$i.fabric,
10350
10579
  children: [jsx("p", {
10351
- className: styles$h.fabricLabel,
10580
+ className: styles$i.fabricLabel,
10352
10581
  children: t("Fabric")
10353
10582
  }), jsx("p", {
10354
- className: styles$h.fabricText,
10583
+ className: styles$i.fabricText,
10355
10584
  children: guide.fabric
10356
10585
  })]
10357
10586
  }), notes2.length > 0 && jsx("ul", {
10358
- className: styles$h.notes,
10587
+ className: styles$i.notes,
10359
10588
  children: notes2.map((n) => jsx("li", {
10360
10589
  children: n
10361
10590
  }, n))
@@ -10375,7 +10604,7 @@ const lowStock = "_lowStock_1q3xe_74";
10375
10604
  const error = "_error_1q3xe_84";
10376
10605
  const sizeGuide = "_sizeGuide_1q3xe_91";
10377
10606
  const info = "_info_1q3xe_115";
10378
- const styles$g = {
10607
+ const styles$h = {
10379
10608
  root: root$2,
10380
10609
  header: header$3,
10381
10610
  title: title$9,
@@ -10393,22 +10622,22 @@ function SizeSelector({ sizes, selected: selected2, onSelect, error: error2 = fa
10393
10622
  const [guideOpen, setGuideOpen] = useState(false);
10394
10623
  const showGuide = useShopFeatures().sizeCharts && guide !== void 0;
10395
10624
  return jsxs("section", {
10396
- className: styles$g.root,
10625
+ className: styles$h.root,
10397
10626
  "aria-labelledby": "size-heading",
10398
10627
  children: [jsxs("div", {
10399
- className: styles$g.header,
10628
+ className: styles$h.header,
10400
10629
  children: [jsx("h2", {
10401
10630
  id: "size-heading",
10402
- className: styles$g.title,
10631
+ className: styles$h.title,
10403
10632
  children: t("Size")
10404
10633
  }), showGuide && jsxs("button", {
10405
10634
  type: "button",
10406
- className: styles$g.sizeGuide,
10635
+ className: styles$h.sizeGuide,
10407
10636
  onClick: () => setGuideOpen(true),
10408
10637
  "aria-haspopup": "dialog",
10409
10638
  "aria-expanded": guideOpen,
10410
10639
  children: [t("Size guide"), jsxs("svg", {
10411
- className: styles$g.info,
10640
+ className: styles$h.info,
10412
10641
  width: "12",
10413
10642
  height: "12",
10414
10643
  viewBox: "0 0 12 12",
@@ -10434,7 +10663,7 @@ function SizeSelector({ sizes, selected: selected2, onSelect, error: error2 = fa
10434
10663
  })]
10435
10664
  })]
10436
10665
  }), jsx("div", {
10437
- className: styles$g.chips,
10666
+ className: styles$h.chips,
10438
10667
  role: "radiogroup",
10439
10668
  "aria-label": t("Size"),
10440
10669
  "aria-required": "true",
@@ -10447,7 +10676,7 @@ function SizeSelector({ sizes, selected: selected2, onSelect, error: error2 = fa
10447
10676
  "aria-checked": isSelected,
10448
10677
  "aria-disabled": disabled2 || void 0,
10449
10678
  disabled: disabled2,
10450
- className: [styles$g.chip, isSelected ? styles$g.selected : "", disabled2 ? styles$g.disabled : ""].filter(Boolean).join(" "),
10679
+ className: [styles$h.chip, isSelected ? styles$h.selected : "", disabled2 ? styles$h.disabled : ""].filter(Boolean).join(" "),
10451
10680
  onClick: () => !disabled2 && onSelect(size.value),
10452
10681
  children: [size.value, disabled2 && jsx("span", {
10453
10682
  className: "visually-hidden",
@@ -10456,11 +10685,11 @@ function SizeSelector({ sizes, selected: selected2, onSelect, error: error2 = fa
10456
10685
  }, size.value);
10457
10686
  })
10458
10687
  }), error2 && jsx("p", {
10459
- className: styles$g.error,
10688
+ className: styles$h.error,
10460
10689
  role: "alert",
10461
10690
  children: t("Please select a size")
10462
10691
  }), lowStock2 && !error2 && jsx("p", {
10463
- className: styles$g.lowStock,
10692
+ className: styles$h.lowStock,
10464
10693
  role: "status",
10465
10694
  children: lowStock2
10466
10695
  }), showGuide && guideOpen && jsx(SizeGuideSheet, {
@@ -10477,11 +10706,11 @@ const tiles = "_tiles_1h4ny_28";
10477
10706
  const tile = "_tile_1h4ny_28";
10478
10707
  const selected$1 = "_selected_1h4ny_52";
10479
10708
  const media = "_media_1h4ny_36";
10480
- const image$3 = "_image_1h4ny_64";
10709
+ const image$4 = "_image_1h4ny_64";
10481
10710
  const placeholder = "_placeholder_1h4ny_68";
10482
10711
  const scrim$2 = "_scrim_1h4ny_76";
10483
10712
  const stockBadge = "_stockBadge_1h4ny_95";
10484
- const styles$f = {
10713
+ const styles$g = {
10485
10714
  root: root$1,
10486
10715
  header: header$2,
10487
10716
  title: title$8,
@@ -10490,7 +10719,7 @@ const styles$f = {
10490
10719
  tile,
10491
10720
  selected: selected$1,
10492
10721
  media,
10493
- image: image$3,
10722
+ image: image$4,
10494
10723
  placeholder,
10495
10724
  scrim: scrim$2,
10496
10725
  stockBadge
@@ -10498,20 +10727,20 @@ const styles$f = {
10498
10727
  function ColorSelector({ colours, selected: selected2, onSelect }) {
10499
10728
  const t = useT();
10500
10729
  return jsxs("section", {
10501
- className: styles$f.root,
10730
+ className: styles$g.root,
10502
10731
  "aria-labelledby": "colour-heading",
10503
10732
  children: [jsxs("p", {
10504
- className: styles$f.header,
10733
+ className: styles$g.header,
10505
10734
  children: [jsx("span", {
10506
10735
  id: "colour-heading",
10507
- className: styles$f.title,
10736
+ className: styles$g.title,
10508
10737
  children: "Color:"
10509
10738
  }), " ", jsx("span", {
10510
- className: styles$f.value,
10739
+ className: styles$g.value,
10511
10740
  children: selected2 ?? "Select"
10512
10741
  })]
10513
10742
  }), jsx("div", {
10514
- className: styles$f.tiles,
10743
+ className: styles$g.tiles,
10515
10744
  role: "radiogroup",
10516
10745
  "aria-label": t("Color"),
10517
10746
  "aria-required": "true",
@@ -10524,26 +10753,26 @@ function ColorSelector({ colours, selected: selected2, onSelect }) {
10524
10753
  role: "radio",
10525
10754
  "aria-checked": isSelected,
10526
10755
  "aria-label": `${c.value}${soldOut ? " (out of stock)" : ""}`,
10527
- className: [styles$f.tile, isSelected ? styles$f.selected : ""].filter(Boolean).join(" "),
10756
+ className: [styles$g.tile, isSelected ? styles$g.selected : ""].filter(Boolean).join(" "),
10528
10757
  onClick: () => onSelect(c.value),
10529
10758
  children: [jsxs("span", {
10530
- className: styles$f.media,
10759
+ className: styles$g.media,
10531
10760
  children: [c.image ? jsx(ShopImage, {
10532
10761
  src: c.image,
10533
10762
  alt: "",
10534
10763
  fill: true,
10535
10764
  sizes: "79px",
10536
- className: styles$f.image
10765
+ className: styles$g.image
10537
10766
  }) : jsx("span", {
10538
- className: styles$f.placeholder,
10767
+ className: styles$g.placeholder,
10539
10768
  "aria-hidden": "true"
10540
10769
  }), soldOut && jsx("span", {
10541
- className: styles$f.scrim,
10770
+ className: styles$g.scrim,
10542
10771
  "aria-hidden": "true",
10543
10772
  children: t("Out of stock")
10544
10773
  })]
10545
10774
  }), lowStock2 && jsx("span", {
10546
- className: styles$f.stockBadge,
10775
+ className: styles$g.stockBadge,
10547
10776
  "aria-hidden": "true",
10548
10777
  children: t("{0} left", c.remaining)
10549
10778
  })]
@@ -10558,7 +10787,7 @@ const options = "_options_1mnz1_16";
10558
10787
  const option = "_option_1mnz1_16";
10559
10788
  const selected = "_selected_1mnz1_36";
10560
10789
  const disabled = "_disabled_1mnz1_42";
10561
- const styles$e = {
10790
+ const styles$f = {
10562
10791
  fieldset,
10563
10792
  legend,
10564
10793
  options,
@@ -10576,12 +10805,12 @@ function VariantSelector({ variants, selectedSku, onSelect, labelAttribute }) {
10576
10805
  return values.length > 0 ? values.join(" · ") : variant.sku;
10577
10806
  }
10578
10807
  return jsxs("fieldset", {
10579
- className: styles$e.fieldset,
10808
+ className: styles$f.fieldset,
10580
10809
  children: [jsx("legend", {
10581
- className: styles$e.legend,
10810
+ className: styles$f.legend,
10582
10811
  children: t("Select an option")
10583
10812
  }), jsx("div", {
10584
- className: styles$e.options,
10813
+ className: styles$f.options,
10585
10814
  role: "radiogroup",
10586
10815
  "aria-label": t("Variant"),
10587
10816
  children: variants.map((variant) => {
@@ -10593,7 +10822,7 @@ function VariantSelector({ variants, selectedSku, onSelect, labelAttribute }) {
10593
10822
  "aria-checked": selected2,
10594
10823
  "aria-disabled": disabled2 || void 0,
10595
10824
  disabled: disabled2,
10596
- className: [styles$e.option, selected2 ? styles$e.selected : "", disabled2 ? styles$e.disabled : ""].filter(Boolean).join(" "),
10825
+ className: [styles$f.option, selected2 ? styles$f.selected : "", disabled2 ? styles$f.disabled : ""].filter(Boolean).join(" "),
10597
10826
  onClick: () => !disabled2 && onSelect(variant.sku),
10598
10827
  children: [labelFor2(variant), disabled2 && jsx("span", {
10599
10828
  className: "visually-hidden",
@@ -10607,15 +10836,15 @@ function VariantSelector({ variants, selectedSku, onSelect, labelAttribute }) {
10607
10836
  const root = "_root_9cj0g_2";
10608
10837
  const group = "_group_9cj0g_8";
10609
10838
  const title$7 = "_title_9cj0g_14";
10610
- const body$1 = "_body_9cj0g_22";
10839
+ const body$2 = "_body_9cj0g_22";
10611
10840
  const paragraph = "_paragraph_9cj0g_26";
10612
10841
  const clamped = "_clamped_9cj0g_46";
10613
10842
  const toggle = "_toggle_9cj0g_51";
10614
- const styles$d = {
10843
+ const styles$e = {
10615
10844
  root,
10616
10845
  group,
10617
10846
  title: title$7,
10618
- body: body$1,
10847
+ body: body$2,
10619
10848
  paragraph,
10620
10849
  clamped,
10621
10850
  toggle
@@ -10649,25 +10878,25 @@ function ProductDetails({ description: description2 }) {
10649
10878
  const t = useT();
10650
10879
  if (paragraphs.length === 0) return null;
10651
10880
  return jsxs("section", {
10652
- className: styles$d.root,
10881
+ className: styles$e.root,
10653
10882
  "aria-labelledby": "details-heading",
10654
10883
  children: [jsxs("div", {
10655
- className: styles$d.group,
10884
+ className: styles$e.group,
10656
10885
  children: [jsx("h2", {
10657
10886
  id: "details-heading",
10658
- className: styles$d.title,
10887
+ className: styles$e.title,
10659
10888
  children: t("Product details")
10660
10889
  }), jsx("div", {
10661
10890
  ref: bodyRef,
10662
- className: [styles$d.body, expanded ? "" : styles$d.clamped].join(" "),
10891
+ className: [styles$e.body, expanded ? "" : styles$e.clamped].join(" "),
10663
10892
  children: paragraphs.map((p) => jsx("p", {
10664
- className: styles$d.paragraph,
10893
+ className: styles$e.paragraph,
10665
10894
  children: p
10666
10895
  }, p))
10667
10896
  })]
10668
10897
  }), clipped ? jsx("button", {
10669
10898
  type: "button",
10670
- className: styles$d.toggle,
10899
+ className: styles$e.toggle,
10671
10900
  "aria-expanded": expanded,
10672
10901
  onClick: () => setExpanded((v) => !v),
10673
10902
  children: expanded ? t("Less") : t("more")
@@ -10676,7 +10905,7 @@ function ProductDetails({ description: description2 }) {
10676
10905
  }
10677
10906
  const row$3 = "_row_l4edh_1";
10678
10907
  const badge$1 = "_badge_l4edh_11";
10679
- const styles$c = {
10908
+ const styles$d = {
10680
10909
  row: row$3,
10681
10910
  badge: badge$1
10682
10911
  };
@@ -10684,9 +10913,9 @@ function PdpBadges({ badges }) {
10684
10913
  const flags = badges.filter((b) => b.trim().length > 0);
10685
10914
  if (flags.length === 0) return null;
10686
10915
  return jsx("ul", {
10687
- className: styles$c.row,
10916
+ className: styles$d.row,
10688
10917
  children: flags.map((flag) => jsx("li", {
10689
- className: styles$c.badge,
10918
+ className: styles$d.badge,
10690
10919
  children: flag
10691
10920
  }, flag))
10692
10921
  });
@@ -10695,7 +10924,7 @@ const banner = "_banner_1xvw4_2";
10695
10924
  const message = "_message_1xvw4_14";
10696
10925
  const icon$1 = "_icon_1xvw4_22";
10697
10926
  const timer = "_timer_1xvw4_27";
10698
- const styles$b = {
10927
+ const styles$c = {
10699
10928
  banner,
10700
10929
  message,
10701
10930
  icon: icon$1,
@@ -10719,11 +10948,11 @@ function PromoBanner({ promo: promo2 }) {
10719
10948
  const remaining = promo2.ends_at && now !== null ? new Date(promo2.ends_at).getTime() - now : null;
10720
10949
  const showTimer = remaining !== null && remaining > 0;
10721
10950
  return jsxs("div", {
10722
- className: styles$b.banner,
10951
+ className: styles$c.banner,
10723
10952
  children: [jsxs("span", {
10724
- className: styles$b.message,
10953
+ className: styles$c.message,
10725
10954
  children: [jsxs("svg", {
10726
- className: styles$b.icon,
10955
+ className: styles$c.icon,
10727
10956
  width: "24",
10728
10957
  height: "24",
10729
10958
  viewBox: "0 0 24 24",
@@ -10745,7 +10974,7 @@ function PromoBanner({ promo: promo2 }) {
10745
10974
  })]
10746
10975
  }), promo2.message]
10747
10976
  }), showTimer && jsxs("span", {
10748
- className: styles$b.timer,
10977
+ className: styles$c.timer,
10749
10978
  children: [jsxs("svg", {
10750
10979
  width: "16",
10751
10980
  height: "16",
@@ -10778,7 +11007,7 @@ const title$6 = "_title_1hv16_34";
10778
11007
  const availability = "_availability_1hv16_55";
10779
11008
  const low = "_low_1hv16_62";
10780
11009
  const oos = "_oos_1hv16_66";
10781
- const styles$a = {
11010
+ const styles$b = {
10782
11011
  page,
10783
11012
  content,
10784
11013
  intro,
@@ -10789,7 +11018,7 @@ const styles$a = {
10789
11018
  low,
10790
11019
  oos
10791
11020
  };
10792
- function ProductDetail({ product, inventory: inventory2, recommendations = [] }) {
11021
+ function ProductDetail({ product, inventory: inventory2, recommendations = [], claim }) {
10793
11022
  const t = useT();
10794
11023
  const toast2 = useToast();
10795
11024
  const { api, emit } = useShop();
@@ -10948,6 +11177,17 @@ function ProductDetail({ product, inventory: inventory2, recommendations = [] })
10948
11177
  }
10949
11178
  return selectedSku !== null;
10950
11179
  }
11180
+ async function handleClaim() {
11181
+ if (!claim || !ensureSelection()) return;
11182
+ const sku = selectedSku;
11183
+ if (!sku) return;
11184
+ setBusy("claim");
11185
+ try {
11186
+ await claim(sku);
11187
+ } finally {
11188
+ setBusy(null);
11189
+ }
11190
+ }
10951
11191
  async function handleAdd() {
10952
11192
  if (!ensureSelection()) return;
10953
11193
  const sku = selectedSku;
@@ -10974,9 +11214,19 @@ function ProductDetail({ product, inventory: inventory2, recommendations = [] })
10974
11214
  const available = selectedVariant?.available ?? inventory2?.available ?? 0;
10975
11215
  const lowStock2 = isLowStock(available);
10976
11216
  const sizeLowStock = lowStock2 && hasSizes && selectedSize ? t("Only {0} left in {1} size", available, selectedSize) : void 0;
10977
- const stockNotice = !purchasable || lowStock2 && !sizeLowStock;
11217
+ const stockNotice = claim ? purchasable && lowStock2 && !sizeLowStock : !purchasable || lowStock2 && !sizeLowStock;
10978
11218
  const availabilityLabel = !purchasable ? t("Out of stock") : lowStock2 ? t("Only {0} left", available) : "";
10979
- const cta2 = purchasable ? jsx(Button, {
11219
+ const cta2 = claim ? purchasable ? jsx(Button, {
11220
+ variant: "primary",
11221
+ onClick: handleClaim,
11222
+ loading: busy === "claim",
11223
+ disabled: busy !== null,
11224
+ children: t("Claim yours")
11225
+ }) : jsx(Button, {
11226
+ variant: "primary",
11227
+ disabled: true,
11228
+ children: t("Sold out")
11229
+ }) : purchasable ? jsx(Button, {
10980
11230
  variant: "primary",
10981
11231
  onClick: inCart ? openCart : handleAdd,
10982
11232
  loading: busy === "add",
@@ -10996,7 +11246,7 @@ function ProductDetail({ product, inventory: inventory2, recommendations = [] })
10996
11246
  return jsxs(ShopSurface, {
10997
11247
  tone: "light",
10998
11248
  fill: true,
10999
- className: styles$a.page,
11249
+ className: styles$b.page,
11000
11250
  children: [jsx(MediaGallery, {
11001
11251
  media: media2,
11002
11252
  alt: product.title,
@@ -11004,31 +11254,34 @@ function ProductDetail({ product, inventory: inventory2, recommendations = [] })
11004
11254
  focus
11005
11255
  } : {}
11006
11256
  }), jsxs("div", {
11007
- className: styles$a.content,
11257
+ className: styles$b.content,
11008
11258
  children: [jsxs("div", {
11009
- className: styles$a.intro,
11259
+ className: styles$b.intro,
11010
11260
  children: [jsx(PdpBadges, {
11011
11261
  badges: product.badges ?? []
11012
11262
  }), jsxs("div", {
11013
- className: styles$a.productInfo,
11263
+ className: styles$b.productInfo,
11014
11264
  children: [jsxs("div", {
11015
- className: styles$a.titlePrice,
11265
+ className: styles$b.titlePrice,
11016
11266
  children: [jsx("h1", {
11017
- className: styles$a.title,
11267
+ className: styles$b.title,
11018
11268
  children: product.title
11019
11269
  }), jsx(PriceBlock, {
11020
- price: product.price,
11021
- compareAt: product.compare_at,
11270
+ price: claim ? {
11271
+ amount: 0,
11272
+ currency: product.price.currency
11273
+ } : product.price,
11274
+ compareAt: claim ? product.price : product.compare_at,
11022
11275
  size: "md",
11023
11276
  variant: "badge",
11024
11277
  align: "center"
11025
11278
  })]
11026
- }), product.promo && jsx(PromoBanner, {
11279
+ }), product.promo && !claim && jsx(PromoBanner, {
11027
11280
  promo: product.promo
11028
11281
  })]
11029
11282
  })]
11030
11283
  }), stockNotice && jsx("p", {
11031
- className: [styles$a.availability, anyInStock ? styles$a.low : styles$a.oos].join(" "),
11284
+ className: [styles$b.availability, anyInStock ? styles$b.low : styles$b.oos].join(" "),
11032
11285
  role: "status",
11033
11286
  children: availabilityLabel
11034
11287
  }), hasColours && jsx("div", {
@@ -11056,7 +11309,7 @@ function ProductDetail({ product, inventory: inventory2, recommendations = [] })
11056
11309
  onSelect: setGenericSku
11057
11310
  }), jsx(ShippingInfo, {}), product.description && jsx(ProductDetails, {
11058
11311
  description: product.description
11059
- }), jsx(RailCarousel, {
11312
+ }), !claim && jsx(RailCarousel, {
11060
11313
  title: t("You may also like"),
11061
11314
  products: recommendations.filter((p) => p.sku !== product.sku),
11062
11315
  inset: true
@@ -11066,20 +11319,20 @@ function ProductDetail({ product, inventory: inventory2, recommendations = [] })
11066
11319
  })]
11067
11320
  });
11068
11321
  }
11069
- const hero$1 = "_hero_1tiqx_10";
11070
- const image$2 = "_image_1tiqx_42";
11322
+ const hero$2 = "_hero_1tiqx_10";
11323
+ const image$3 = "_image_1tiqx_42";
11071
11324
  const scrim$1 = "_scrim_1tiqx_70";
11072
11325
  const fade = "_fade_1tiqx_94";
11073
- const text$2 = "_text_1tiqx_108";
11326
+ const text$3 = "_text_1tiqx_108";
11074
11327
  const title$5 = "_title_1tiqx_157";
11075
11328
  const subtitle$2 = "_subtitle_1tiqx_168";
11076
11329
  const noImage = "_noImage_1tiqx_183";
11077
- const styles$9 = {
11078
- hero: hero$1,
11079
- image: image$2,
11330
+ const styles$a = {
11331
+ hero: hero$2,
11332
+ image: image$3,
11080
11333
  scrim: scrim$1,
11081
11334
  fade,
11082
- text: text$2,
11335
+ text: text$3,
11083
11336
  title: title$5,
11084
11337
  subtitle: subtitle$2,
11085
11338
  noImage
@@ -11090,10 +11343,10 @@ function PcpHero({ hero: hero2 }) {
11090
11343
  const t = useT();
11091
11344
  return jsxs("section", {
11092
11345
  ref: heroRef,
11093
- className: [styles$9.hero, hero2.image ? "" : styles$9.noImage].join(" "),
11346
+ className: [styles$a.hero, hero2.image ? "" : styles$a.noImage].join(" "),
11094
11347
  children: [hero2.image && jsxs(Fragment, {
11095
11348
  children: [jsx("div", {
11096
- className: styles$9.image,
11349
+ className: styles$a.image,
11097
11350
  children: jsx(ShopImage, {
11098
11351
  src: hero2.image,
11099
11352
  alt: "",
@@ -11102,35 +11355,35 @@ function PcpHero({ hero: hero2 }) {
11102
11355
  priority: true
11103
11356
  })
11104
11357
  }), jsx("div", {
11105
- className: styles$9.scrim,
11358
+ className: styles$a.scrim,
11106
11359
  "aria-hidden": "true"
11107
11360
  }), jsx("div", {
11108
- className: styles$9.fade,
11361
+ className: styles$a.fade,
11109
11362
  "aria-hidden": "true"
11110
11363
  })]
11111
11364
  }), jsxs("div", {
11112
- className: styles$9.text,
11365
+ className: styles$a.text,
11113
11366
  children: [jsx("h1", {
11114
- className: styles$9.title,
11367
+ className: styles$a.title,
11115
11368
  children: t(hero2.title)
11116
11369
  }), hero2.subtitle && jsx("p", {
11117
- className: styles$9.subtitle,
11370
+ className: styles$a.subtitle,
11118
11371
  children: t(hero2.subtitle)
11119
11372
  })]
11120
11373
  })]
11121
11374
  });
11122
11375
  }
11123
- const text$1 = "_text_1saw4_6";
11376
+ const text$2 = "_text_1saw4_6";
11124
11377
  const center = "_center_1saw4_18";
11125
11378
  const left = "_left_1saw4_23";
11126
- const styles$8 = {
11127
- text: text$1,
11379
+ const styles$9 = {
11380
+ text: text$2,
11128
11381
  center,
11129
11382
  left
11130
11383
  };
11131
11384
  function LifestyleText({ text: text2, align = "center" }) {
11132
11385
  return jsx("p", {
11133
- className: [styles$8.text, align === "left" ? styles$8.left : styles$8.center].join(" "),
11386
+ className: [styles$9.text, align === "left" ? styles$9.left : styles$9.center].join(" "),
11134
11387
  children: text2
11135
11388
  });
11136
11389
  }
@@ -11138,16 +11391,16 @@ const wrap = "_wrap_79nr3_10";
11138
11391
  const box = "_box_79nr3_14";
11139
11392
  const track$1 = "_track_79nr3_23";
11140
11393
  const slide = "_slide_79nr3_39";
11141
- const image$1 = "_image_79nr3_46";
11394
+ const image$2 = "_image_79nr3_46";
11142
11395
  const dots$1 = "_dots_79nr3_51";
11143
11396
  const dot$1 = "_dot_79nr3_51";
11144
11397
  const dotActive$1 = "_dotActive_79nr3_76";
11145
- const styles$7 = {
11398
+ const styles$8 = {
11146
11399
  wrap,
11147
11400
  box,
11148
11401
  track: track$1,
11149
11402
  slide,
11150
- image: image$1,
11403
+ image: image$2,
11151
11404
  dots: dots$1,
11152
11405
  dot: dot$1,
11153
11406
  dotActive: dotActive$1
@@ -11166,36 +11419,36 @@ function LifestyleImage({ images, videos }) {
11166
11419
  }, []);
11167
11420
  if (images.length === 0) return null;
11168
11421
  return jsx("div", {
11169
- className: styles$7.wrap,
11422
+ className: styles$8.wrap,
11170
11423
  children: jsxs("div", {
11171
- className: styles$7.box,
11424
+ className: styles$8.box,
11172
11425
  children: [jsx("ul", {
11173
- className: styles$7.track,
11426
+ className: styles$8.track,
11174
11427
  ref: trackRef,
11175
11428
  children: images.map((src, i) => {
11176
11429
  const clip = videos?.[i];
11177
11430
  return jsx("li", {
11178
- className: styles$7.slide,
11431
+ className: styles$8.slide,
11179
11432
  children: clip ? jsx(ShopVideo, {
11180
11433
  src: clip,
11181
11434
  poster: src,
11182
11435
  fill: true,
11183
- className: styles$7.image
11436
+ className: styles$8.image
11184
11437
  }) : jsx(ShopImage, {
11185
11438
  src,
11186
11439
  alt: "",
11187
11440
  fill: true,
11188
11441
  sizes: "(max-width: 480px) 100vw, 480px",
11189
- className: styles$7.image,
11442
+ className: styles$8.image,
11190
11443
  priority: i === 0
11191
11444
  })
11192
11445
  }, src);
11193
11446
  })
11194
11447
  }), images.length > 1 && jsx("div", {
11195
- className: styles$7.dots,
11448
+ className: styles$8.dots,
11196
11449
  "aria-hidden": "true",
11197
11450
  children: images.map((src, i) => jsx("span", {
11198
- className: [styles$7.dot, i === active ? styles$7.dotActive : ""].join(" ")
11451
+ className: [styles$8.dot, i === active ? styles$8.dotActive : ""].join(" ")
11199
11452
  }, src))
11200
11453
  })]
11201
11454
  })
@@ -11209,7 +11462,7 @@ const author = "_author_qsxtq_58";
11209
11462
  const dots = "_dots_qsxtq_69";
11210
11463
  const dot = "_dot_qsxtq_69";
11211
11464
  const dotActive = "_dotActive_qsxtq_85";
11212
- const styles$6 = {
11465
+ const styles$7 = {
11213
11466
  section: section$2,
11214
11467
  track,
11215
11468
  card,
@@ -11233,26 +11486,26 @@ function ReviewCarousel({ quotes }) {
11233
11486
  return () => track2.removeEventListener("scroll", onScroll);
11234
11487
  }, []);
11235
11488
  return jsxs("section", {
11236
- className: styles$6.section,
11489
+ className: styles$7.section,
11237
11490
  "aria-label": t("Reviews"),
11238
11491
  children: [jsx("ul", {
11239
- className: styles$6.track,
11492
+ className: styles$7.track,
11240
11493
  ref: trackRef,
11241
11494
  children: quotes.map((q, i) => jsxs("li", {
11242
- className: styles$6.card,
11495
+ className: styles$7.card,
11243
11496
  children: [jsxs("blockquote", {
11244
- className: styles$6.quote,
11497
+ className: styles$7.quote,
11245
11498
  children: ["“", q.quote, "”"]
11246
11499
  }), jsx("p", {
11247
- className: styles$6.author,
11500
+ className: styles$7.author,
11248
11501
  children: q.author
11249
11502
  })]
11250
11503
  }, i))
11251
11504
  }), quotes.length > 1 && jsx("div", {
11252
- className: styles$6.dots,
11505
+ className: styles$7.dots,
11253
11506
  "aria-hidden": "true",
11254
11507
  children: quotes.map((_, i) => jsx("span", {
11255
- className: [styles$6.dot, i === active ? styles$6.dotActive : ""].join(" ")
11508
+ className: [styles$7.dot, i === active ? styles$7.dotActive : ""].join(" ")
11256
11509
  }, i))
11257
11510
  })]
11258
11511
  });
@@ -11260,25 +11513,25 @@ function ReviewCarousel({ quotes }) {
11260
11513
  const section$1 = "_section_1nrsi_1";
11261
11514
  const row$2 = "_row_1nrsi_9";
11262
11515
  const title$4 = "_title_1nrsi_20";
11263
- const body = "_body_1nrsi_43";
11264
- const styles$5 = {
11516
+ const body$1 = "_body_1nrsi_43";
11517
+ const styles$6 = {
11265
11518
  section: section$1,
11266
11519
  row: row$2,
11267
11520
  title: title$4,
11268
- body
11521
+ body: body$1
11269
11522
  };
11270
11523
  function WhyUs({ items: items2 }) {
11271
11524
  const t = useT();
11272
11525
  return jsx("section", {
11273
- className: styles$5.section,
11526
+ className: styles$6.section,
11274
11527
  "aria-label": t("Why shop with us"),
11275
11528
  children: items2.map((it, i) => jsxs("div", {
11276
- className: styles$5.row,
11529
+ className: styles$6.row,
11277
11530
  children: [jsx("p", {
11278
- className: styles$5.title,
11531
+ className: styles$6.title,
11279
11532
  children: it.title
11280
11533
  }), jsx("p", {
11281
- className: styles$5.body,
11534
+ className: styles$6.body,
11282
11535
  children: it.body
11283
11536
  })]
11284
11537
  }, i))
@@ -11288,7 +11541,7 @@ const section = "_section_snuuj_1";
11288
11541
  const title$3 = "_title_snuuj_10";
11289
11542
  const list$1 = "_list_snuuj_17";
11290
11543
  const row$1 = "_row_snuuj_32";
11291
- const styles$4 = {
11544
+ const styles$5 = {
11292
11545
  section,
11293
11546
  title: title$3,
11294
11547
  list: list$1,
@@ -11297,17 +11550,17 @@ const styles$4 = {
11297
11550
  function ExploreList({ title: title2, links }) {
11298
11551
  const t = useT();
11299
11552
  return jsxs("section", {
11300
- className: styles$4.section,
11553
+ className: styles$5.section,
11301
11554
  "aria-label": title2,
11302
11555
  children: [jsx("h2", {
11303
- className: styles$4.title,
11556
+ className: styles$5.title,
11304
11557
  children: title2
11305
11558
  }), jsx("ul", {
11306
- className: styles$4.list,
11559
+ className: styles$5.list,
11307
11560
  children: links.map((l) => jsx("li", {
11308
11561
  children: jsxs(ShopLink, {
11309
11562
  to: `/category/${encodeURIComponent(l.code)}`,
11310
- className: styles$4.row,
11563
+ className: styles$5.row,
11311
11564
  children: [jsx("span", {
11312
11565
  children: t(l.label)
11313
11566
  }), jsx("svg", {
@@ -11335,7 +11588,7 @@ const featured = "_featured_1kft8_36";
11335
11588
  const gridBlock = "_gridBlock_1kft8_37";
11336
11589
  const blockTitle = "_blockTitle_1kft8_44";
11337
11590
  const grid = "_grid_1kft8_37";
11338
- const styles$3 = {
11591
+ const styles$4 = {
11339
11592
  pcp,
11340
11593
  blocks,
11341
11594
  featured,
@@ -11358,9 +11611,9 @@ function Block({ block }) {
11358
11611
  });
11359
11612
  case "featured":
11360
11613
  return jsxs("div", {
11361
- className: styles$3.featured,
11614
+ className: styles$4.featured,
11362
11615
  children: [block.title && jsx("h2", {
11363
- className: styles$3.blockTitle,
11616
+ className: styles$4.blockTitle,
11364
11617
  children: t(block.title)
11365
11618
  }), jsx(ProductTile, {
11366
11619
  product: block.product,
@@ -11380,12 +11633,12 @@ function Block({ block }) {
11380
11633
  });
11381
11634
  case "grid":
11382
11635
  return jsxs("div", {
11383
- className: styles$3.gridBlock,
11636
+ className: styles$4.gridBlock,
11384
11637
  children: [block.title && jsx("h2", {
11385
- className: styles$3.blockTitle,
11638
+ className: styles$4.blockTitle,
11386
11639
  children: t(block.title)
11387
11640
  }), jsx("ul", {
11388
- className: styles$3.grid,
11641
+ className: styles$4.grid,
11389
11642
  children: block.products.map((p) => jsx("li", {
11390
11643
  children: jsx(ProductTile, {
11391
11644
  product: p
@@ -11414,11 +11667,11 @@ function CategoryContent({ page: page2 }) {
11414
11667
  return jsxs(ShopSurface, {
11415
11668
  tone: "dark",
11416
11669
  fill: true,
11417
- className: styles$3.pcp,
11670
+ className: styles$4.pcp,
11418
11671
  children: [jsx(PcpHero, {
11419
11672
  hero: page2.hero
11420
11673
  }), jsx("div", {
11421
- className: styles$3.blocks,
11674
+ className: styles$4.blocks,
11422
11675
  children: page2.blocks.map((block, i) => jsx(Block, {
11423
11676
  block
11424
11677
  }, i))
@@ -11592,6 +11845,216 @@ function ProductView({ sku, initialData, showRecommendations = true, onNotFound
11592
11845
  })
11593
11846
  });
11594
11847
  }
11848
+ const hero$1 = "_hero_1h61y_1";
11849
+ const image$1 = "_image_1h61y_11";
11850
+ const foot = "_foot_1h61y_21";
11851
+ const text$1 = "_text_1h61y_27";
11852
+ const logo$1 = "_logo_1h61y_35";
11853
+ const copy$1 = "_copy_1h61y_40";
11854
+ const headline = "_headline_1h61y_49";
11855
+ const body = "_body_1h61y_57";
11856
+ const cta$1 = "_cta_1h61y_66";
11857
+ const styles$3 = {
11858
+ hero: hero$1,
11859
+ image: image$1,
11860
+ foot,
11861
+ text: text$1,
11862
+ logo: logo$1,
11863
+ copy: copy$1,
11864
+ headline,
11865
+ body,
11866
+ cta: cta$1
11867
+ };
11868
+ function VipHero({ hero: hero2, onContinue }) {
11869
+ const t = useT();
11870
+ const assetUrl = useAssetUrl();
11871
+ const ref = useRef(null);
11872
+ useTopOffset(ref, "--vip-hero-top");
11873
+ return jsx(ShopSurface, {
11874
+ tone: "dark",
11875
+ fill: true,
11876
+ children: jsxs("section", {
11877
+ ref,
11878
+ className: styles$3.hero,
11879
+ children: [hero2.image && jsx("div", {
11880
+ className: styles$3.image,
11881
+ children: jsx(ShopImage, {
11882
+ src: hero2.image,
11883
+ alt: "",
11884
+ fill: true,
11885
+ sizes: "(max-width: 480px) 100vw, 480px",
11886
+ priority: true
11887
+ })
11888
+ }), jsxs("div", {
11889
+ className: styles$3.foot,
11890
+ children: [jsxs("div", {
11891
+ className: styles$3.text,
11892
+ children: [jsx("img", {
11893
+ src: assetUrl("/figma/home/dazn-logo.svg"),
11894
+ alt: t("DAZN"),
11895
+ className: styles$3.logo
11896
+ }), jsxs("div", {
11897
+ className: styles$3.copy,
11898
+ children: [jsx("h1", {
11899
+ className: styles$3.headline,
11900
+ children: hero2.headline
11901
+ }), hero2.body && jsx("p", {
11902
+ className: styles$3.body,
11903
+ children: hero2.body
11904
+ })]
11905
+ })]
11906
+ }), jsx("div", {
11907
+ className: styles$3.cta,
11908
+ children: jsx(Button, {
11909
+ variant: "primary",
11910
+ fullWidth: true,
11911
+ onClick: onContinue,
11912
+ children: hero2.cta_label
11913
+ })
11914
+ })]
11915
+ })]
11916
+ })
11917
+ });
11918
+ }
11919
+ function VipLandingView({ token, onUnavailable }) {
11920
+ const t = useT();
11921
+ const { api, emit } = useShop();
11922
+ const [load, setLoad] = useState({
11923
+ status: "loading"
11924
+ });
11925
+ const emitRef = useRef(emit);
11926
+ emitRef.current = emit;
11927
+ useEffect(() => {
11928
+ let live = true;
11929
+ setLoad({
11930
+ status: "loading"
11931
+ });
11932
+ api.vip.resolve(token).then((invite2) => {
11933
+ if (live) setLoad({
11934
+ status: "done",
11935
+ invite: invite2
11936
+ });
11937
+ }).catch((err) => {
11938
+ if (!live) return;
11939
+ const code = codeOf(err);
11940
+ emitRef.current({
11941
+ type: "error",
11942
+ code,
11943
+ scope: "vip.resolve"
11944
+ });
11945
+ setLoad({
11946
+ status: "error",
11947
+ code
11948
+ });
11949
+ });
11950
+ return () => {
11951
+ live = false;
11952
+ };
11953
+ }, [api, token]);
11954
+ if (load.status === "loading") return jsx(ScreenSkeleton, {
11955
+ tone: "light"
11956
+ });
11957
+ if (load.status === "error") {
11958
+ return jsx(ShopSurface, {
11959
+ tone: "light",
11960
+ fill: true,
11961
+ children: jsx(ErrorState, {
11962
+ code: load.code
11963
+ })
11964
+ });
11965
+ }
11966
+ const { invite } = load;
11967
+ if (invite.state !== "active") {
11968
+ if (onUnavailable) return jsx(Fragment, {
11969
+ children: onUnavailable(invite.state)
11970
+ });
11971
+ return jsx(ShopSurface, {
11972
+ tone: "light",
11973
+ fill: true,
11974
+ children: jsx(EmptyState, {
11975
+ title: t("Item unavailable"),
11976
+ body: t("This invitation can no longer be used.")
11977
+ })
11978
+ });
11979
+ }
11980
+ return jsx(ActiveLanding, {
11981
+ token,
11982
+ invite
11983
+ });
11984
+ }
11985
+ function ActiveLanding({ token, invite }) {
11986
+ const t = useT();
11987
+ const toast2 = useToast();
11988
+ const { api, emit } = useShop();
11989
+ const product = useInPlaceScreen("vipProduct");
11990
+ const sku = invite.items[0]?.product_sku ?? "";
11991
+ const loaded = useProduct(sku, {
11992
+ showRecommendations: false
11993
+ });
11994
+ const claim = useCallback(async (variantSku) => {
11995
+ try {
11996
+ const current2 = await api.cart.get().catch(() => null);
11997
+ if (current2?.vip?.invite_ref === invite.invite_ref) {
11998
+ for (const line2 of current2.items) await api.cart.removeItem(line2.sku);
11999
+ }
12000
+ const cart2 = await api.vip.addToCart({
12001
+ token,
12002
+ sku: variantSku,
12003
+ qty: 1
12004
+ });
12005
+ emit({
12006
+ type: "cart_updated",
12007
+ itemCount: cart2.items.reduce((n, i) => n + i.qty, 0),
12008
+ subtotal: cart2.totals.subtotal
12009
+ });
12010
+ const { checkout_url } = await api.cart.handoff();
12011
+ emit({
12012
+ type: "checkout_handoff",
12013
+ cartId: cart2.cart_id,
12014
+ url: checkout_url
12015
+ });
12016
+ window.location.assign(checkout_url);
12017
+ } catch (err) {
12018
+ const code = codeOf(err);
12019
+ if (code === "unauthorized") {
12020
+ emit({
12021
+ type: "session_required",
12022
+ action: "vip_claim"
12023
+ });
12024
+ return;
12025
+ }
12026
+ emit({
12027
+ type: "error",
12028
+ code,
12029
+ scope: "vip.claim"
12030
+ });
12031
+ toast2.show(t(treatmentFor(code).body), "critical");
12032
+ }
12033
+ }, [api, emit, invite.invite_ref, t, toast2, token]);
12034
+ if (invite.hero && product.value === null) {
12035
+ return jsx(VipHero, {
12036
+ hero: invite.hero,
12037
+ onContinue: () => product.open("1")
12038
+ });
12039
+ }
12040
+ if (loaded.product) {
12041
+ return jsx(ProductDetail, {
12042
+ product: loaded.product,
12043
+ inventory: loaded.inventory,
12044
+ claim
12045
+ }, loaded.product.sku);
12046
+ }
12047
+ if (loaded.loading) return jsx(ScreenSkeleton, {
12048
+ tone: "light"
12049
+ });
12050
+ return jsx(ShopSurface, {
12051
+ tone: "light",
12052
+ fill: true,
12053
+ children: jsx(ErrorState, {
12054
+ code: loaded.error === "sku_not_found" ? void 0 : loaded.error
12055
+ })
12056
+ });
12057
+ }
11595
12058
  const showcase = "_showcase_9ibf6_14";
11596
12059
  const panel = "_panel_9ibf6_40";
11597
12060
  const image = "_image_9ibf6_93";
@@ -11658,15 +12121,26 @@ function useDocumentSnap(ref, enabled = true) {
11658
12121
  passive: true
11659
12122
  });
11660
12123
  };
12124
+ let at = TOP;
12125
+ let returning = false;
12126
+ let holding = false;
12127
+ const settle = () => {
12128
+ returning = false;
12129
+ settleReturn();
12130
+ };
11661
12131
  const top2 = () => {
11662
- scrollToTop();
11663
- if (pane) scrollToTop(pane);
12132
+ scrollToOffset(at.doc);
12133
+ if (pane) scrollToOffset(at.pane, pane);
11664
12134
  };
11665
12135
  let frame2 = null;
11666
12136
  let release = () => {
11667
12137
  };
11668
12138
  const anchor2 = () => {
11669
12139
  release();
12140
+ const back = returnOffset(here());
12141
+ returning = back !== null;
12142
+ at = back ?? TOP;
12143
+ holding = true;
11670
12144
  if (frame2 !== null && typeof window.cancelAnimationFrame === "function") {
11671
12145
  window.cancelAnimationFrame(frame2);
11672
12146
  }
@@ -11682,18 +12156,42 @@ function useDocumentSnap(ref, enabled = true) {
11682
12156
  snapOnAtTouch();
11683
12157
  }
11684
12158
  return true;
11685
- }, void 0, pane);
12159
+ }, (end2) => {
12160
+ holding = false;
12161
+ if (returning && end2 === "moved") settle();
12162
+ }, pane, at);
11686
12163
  };
12164
+ let screen2 = claimScreen();
11687
12165
  anchor2();
11688
12166
  const history = window.history;
11689
12167
  const previousRestoration = history && "scrollRestoration" in history ? history.scrollRestoration : null;
11690
12168
  if (previousRestoration !== null) history.scrollRestoration = "manual";
11691
12169
  const onPageShow = (event) => {
11692
- if (event.persisted) anchor2();
12170
+ if (event.persisted) {
12171
+ screen2 = claimScreen();
12172
+ anchor2();
12173
+ }
11693
12174
  };
11694
12175
  window.addEventListener("pageshow", onPageShow);
11695
- const unobserve = onReveal(el, anchor2);
12176
+ const unobserve = onReveal(el, () => {
12177
+ screen2 = claimScreen();
12178
+ anchor2();
12179
+ });
12180
+ const note2 = () => {
12181
+ if (!isCurrentScreen(screen2)) return;
12182
+ const now = placeOf(pane);
12183
+ if (returning && reached(now, at)) settle();
12184
+ if (holding) return;
12185
+ remember(here(), now);
12186
+ };
12187
+ document.addEventListener("scroll", note2, {
12188
+ capture: true,
12189
+ passive: true
12190
+ });
11696
12191
  return () => {
12192
+ document.removeEventListener("scroll", note2, {
12193
+ capture: true
12194
+ });
11697
12195
  unobserve();
11698
12196
  release();
11699
12197
  if (frame2 !== null && typeof window.cancelAnimationFrame === "function") {
@@ -12517,6 +13015,8 @@ export {
12517
13015
  StickyCtaBar,
12518
13016
  ToastProvider,
12519
13017
  VariantSelector,
13018
+ VipHero,
13019
+ VipLandingView,
12520
13020
  WhyUs,
12521
13021
  asApiError,
12522
13022
  codeOf,