tf-checkout-react-native 2.0.0-beta.7 → 2.0.0-beta.9

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
@@ -157,8 +157,8 @@ var messageFrom = (payload, fallback) => {
157
157
  var _a, _b, _c, _d;
158
158
  if (typeof payload === "string" && payload.trim()) return payload;
159
159
  if (payload && typeof payload === "object") {
160
- const record = payload;
161
- const candidate = (_d = (_b = (_a = record.message) != null ? _a : record.error) != null ? _b : record.error_description) != null ? _d : Array.isArray(record.errors) ? (_c = record.errors[0]) == null ? void 0 : _c.message : void 0;
160
+ const record2 = payload;
161
+ const candidate = (_d = (_b = (_a = record2.message) != null ? _a : record2.error) != null ? _b : record2.error_description) != null ? _d : Array.isArray(record2.errors) ? (_c = record2.errors[0]) == null ? void 0 : _c.message : void 0;
162
162
  if (typeof candidate === "string" && candidate.trim()) return candidate;
163
163
  const messages = flattenMessages(candidate);
164
164
  if (messages.length > 0) return messages.join("\n");
@@ -174,8 +174,8 @@ var codeFrom = (payload) => {
174
174
  };
175
175
  var retryAfterFrom = (value6) => {
176
176
  if (typeof value6 !== "string" && typeof value6 !== "number") return void 0;
177
- const text3 = String(value6).trim();
178
- const seconds = /^\d+$/.test(text3) ? Number(text3) : (Date.parse(text3) - Date.now()) / 1e3;
177
+ const text4 = String(value6).trim();
178
+ const seconds = /^\d+$/.test(text4) ? Number(text4) : (Date.parse(text4) - Date.now()) / 1e3;
179
179
  return Number.isFinite(seconds) && seconds > 0 ? Math.ceil(seconds) : void 0;
180
180
  };
181
181
  var toTtfError = (error, fallback = "Something went wrong") => {
@@ -330,8 +330,8 @@ var confirmedBuyerId = null;
330
330
  var getSessionEpoch = () => sessionEpoch;
331
331
  var getSessionCacheScope = () => sessionCacheScope;
332
332
  var getConfirmedBuyerId = () => confirmedBuyerId;
333
- var confirmSessionBuyer = (id) => {
334
- const buyer2 = String(id);
333
+ var confirmSessionBuyer = (id2) => {
334
+ const buyer2 = String(id2);
335
335
  const pending2 = getConfig().storage.getItem(TWO_FACTOR_PENDING) === "true";
336
336
  if (!buyer2 || confirmedBuyerId === buyer2 && !pending2) return;
337
337
  confirmedBuyerId = buyer2;
@@ -688,8 +688,8 @@ var capturePost = (url2) => {
688
688
  signal: controller.signal,
689
689
  ...body === void 0 ? {} : { body: JSON.stringify(body) }
690
690
  });
691
- const text3 = await response.text();
692
- const data = text3 ? JSON.parse(text3) : void 0;
691
+ const text4 = await response.text();
692
+ const data = text4 ? JSON.parse(text4) : void 0;
693
693
  if (!response.ok)
694
694
  throw new TtfError(
695
695
  typeof (data == null ? void 0 : data.message) === "string" ? data.message : "Unable to finish your order.",
@@ -799,6 +799,7 @@ var ENDPOINTS = {
799
799
  },
800
800
  /** Event catalog + engagement — everything keyed by an event id. */
801
801
  events: {
802
+ featured: "v1/home/featured",
802
803
  /** `GET v1/event/:id` — event details (seated detection, slug, name). */
803
804
  info: (eventId) => `v1/event/${eventId}`,
804
805
  /** Purchasable ticket types (+ promo/waiting-list metadata). */
@@ -1065,7 +1066,7 @@ var resolvePaymentConfig = (cartAttributes) => {
1065
1066
  }
1066
1067
  return payment;
1067
1068
  };
1068
- var priceBreakdownAddOnsQuery = (addOns) => Object.entries(addOns || {}).filter(([id, qty]) => Number(id) > 0 && Number(qty) > 0).map(([id, qty]) => `add_ons[${Number(id)}]=${Number(qty)}`).join("&");
1069
+ var priceBreakdownAddOnsQuery = (addOns) => Object.entries(addOns || {}).filter(([id2, qty]) => Number(id2) > 0 && Number(qty) > 0).map(([id2, qty]) => `add_ons[${Number(id2)}]=${Number(qty)}`).join("&");
1069
1070
  var resolvePriceBreakdown = (cartAttributes) => {
1070
1071
  const breakdown = cartAttributes && cartAttributes.price_breakdown;
1071
1072
  if (!breakdown || typeof breakdown !== "object") return null;
@@ -1720,33 +1721,33 @@ var computeRadialTreeLayout = (nodes, rootId, options = {}) => {
1720
1721
  const byId = /* @__PURE__ */ new Map();
1721
1722
  nodes.forEach((node) => {
1722
1723
  if (!node || node.id == null) return;
1723
- const id = String(node.id);
1724
- if (!byId.has(id)) byId.set(id, node);
1724
+ const id2 = String(node.id);
1725
+ if (!byId.has(id2)) byId.set(id2, node);
1725
1726
  });
1726
1727
  const childrenOf = /* @__PURE__ */ new Map();
1727
- byId.forEach((node, id) => {
1728
+ byId.forEach((node, id2) => {
1728
1729
  const parentId = node.parent_id == null ? null : String(node.parent_id);
1729
- if (parentId == null || parentId === id || !byId.has(parentId)) return;
1730
+ if (parentId == null || parentId === id2 || !byId.has(parentId)) return;
1730
1731
  const siblings = childrenOf.get(parentId);
1731
- if (siblings) siblings.push(id);
1732
- else childrenOf.set(parentId, [id]);
1732
+ if (siblings) siblings.push(id2);
1733
+ else childrenOf.set(parentId, [id2]);
1733
1734
  });
1734
1735
  const visited = /* @__PURE__ */ new Set();
1735
- const build2 = (id, depth) => {
1736
+ const build2 = (id2, depth) => {
1736
1737
  var _a;
1737
- visited.add(id);
1738
+ visited.add(id2);
1738
1739
  const children = [];
1739
- ((_a = childrenOf.get(id)) != null ? _a : []).forEach((childId) => {
1740
+ ((_a = childrenOf.get(id2)) != null ? _a : []).forEach((childId) => {
1740
1741
  if (visited.has(childId)) return;
1741
1742
  children.push(build2(childId, depth + 1));
1742
1743
  });
1743
1744
  const leaves = children.reduce((sum, child) => sum + child.leaves, 0) || 1;
1744
- return { id, depth, children, leaves };
1745
+ return { id: id2, depth, children, leaves };
1745
1746
  };
1746
1747
  const root = byId.has(rootId) ? build2(rootId, 0) : { id: "", depth: 0, children: [], leaves: 1 };
1747
- byId.forEach((_node, id) => {
1748
- if (visited.has(id)) return;
1749
- root.children.push(build2(id, 1));
1748
+ byId.forEach((_node, id2) => {
1749
+ if (visited.has(id2)) return;
1750
+ root.children.push(build2(id2, 1));
1750
1751
  });
1751
1752
  root.leaves = root.children.reduce((sum, child) => sum + child.leaves, 0) || 1;
1752
1753
  let maxDepth = 0;
@@ -1778,13 +1779,13 @@ var radialTreeEdges = (nodes, layout) => {
1778
1779
  const edges = [];
1779
1780
  (nodes != null ? nodes : []).forEach((node) => {
1780
1781
  if (!node || node.id == null || node.parent_id == null) return;
1781
- const id = String(node.id);
1782
+ const id2 = String(node.id);
1782
1783
  const parentId = String(node.parent_id);
1783
- if (parentId === id) return;
1784
+ if (parentId === id2) return;
1784
1785
  const from = layout[parentId];
1785
- const to = layout[id];
1786
+ const to = layout[id2];
1786
1787
  if (!from || !to) return;
1787
- edges.push({ fromId: parentId, toId: id, from, to });
1788
+ edges.push({ fromId: parentId, toId: id2, from, to });
1788
1789
  });
1789
1790
  return edges;
1790
1791
  };
@@ -2137,7 +2138,7 @@ var changeTicketQuantity = (previous, tickets, ticket, requested, allowMultiple)
2137
2138
  const range = ticketQuantityRange(ticket);
2138
2139
  const bounded = Math.min(range.max, Math.max(range.min, requested));
2139
2140
  const quantity = requested <= 0 ? 0 : range.min + Math.floor((bounded - range.min) / range.step) * range.step;
2140
- const activeId = Object.keys(previous).find((id) => previous[id] > 0);
2141
+ const activeId = Object.keys(previous).find((id2) => previous[id2] > 0);
2141
2142
  const previousIsTable = activeId ? Boolean((_a = tickets.find((item) => item.id === activeId)) == null ? void 0 : _a.isTable) : ticket.isTable;
2142
2143
  if (quantity > 0 && (!allowMultiple || activeId && previousIsTable !== ticket.isTable))
2143
2144
  return { [ticket.id]: quantity };
@@ -2158,11 +2159,11 @@ var BADGE_PRESETS = {
2158
2159
  };
2159
2160
  var PERCENT_LEFT = /^(\d{1,3})% left$/i;
2160
2161
  var ticketBadgeTranslation = (badgeText) => {
2161
- const text3 = (badgeText != null ? badgeText : "").trim();
2162
- if (!text3) return null;
2163
- const preset = BADGE_PRESETS[text3.toLowerCase()];
2162
+ const text4 = (badgeText != null ? badgeText : "").trim();
2163
+ if (!text4) return null;
2164
+ const preset = BADGE_PRESETS[text4.toLowerCase()];
2164
2165
  if (preset) return { key: preset };
2165
- const percent = PERCENT_LEFT.exec(text3);
2166
+ const percent = PERCENT_LEFT.exec(text4);
2166
2167
  return percent ? { key: "tickets.badge.percentLeft", vars: { percent: percent[1] } } : null;
2167
2168
  };
2168
2169
  var orderTicketsBeforeTables = (tickets) => [
@@ -2654,7 +2655,7 @@ var pick = (o, ...keys) => {
2654
2655
  var asList = (value6) => {
2655
2656
  if (Array.isArray(value6)) return value6.filter((v) => v && typeof v === "object");
2656
2657
  if (value6 && typeof value6 === "object") {
2657
- return Object.entries(value6).filter(([, v]) => v && typeof v === "object").map(([id, v]) => ({ id, ...v }));
2658
+ return Object.entries(value6).filter(([, v]) => v && typeof v === "object").map(([id2, v]) => ({ id: id2, ...v }));
2658
2659
  }
2659
2660
  return [];
2660
2661
  };
@@ -2744,7 +2745,7 @@ var bundleAvailabilityCopy = (bundle) => {
2744
2745
  };
2745
2746
  var bundleContentsLine = (bundle) => bundle.components.map((c) => c.quantity > 1 ? `${c.quantity} \xD7 ${c.name}` : c.name).join(", ");
2746
2747
  var bundleSelectionAttribute = (selection) => Object.fromEntries(
2747
- Object.entries(selection != null ? selection : {}).map(([id, qty]) => [id, Math.floor(Number(qty) || 0)]).filter(([, qty]) => qty > 0)
2748
+ Object.entries(selection != null ? selection : {}).map(([id2, qty]) => [id2, Math.floor(Number(qty) || 0)]).filter(([, qty]) => qty > 0)
2748
2749
  );
2749
2750
  var bundleSelectionTotal = (bundles, selection) => {
2750
2751
  const cents = bundles.reduce((total, bundle) => {
@@ -2811,18 +2812,18 @@ var bundlePurchaseFromResponse = (body) => {
2811
2812
  const a = (_c = (_b = (_a = root.data) == null ? void 0 : _a.attributes) != null ? _b : root.data) != null ? _c : root;
2812
2813
  const orderHash = pick(a, "order_hash", "orderHash");
2813
2814
  if (orderHash === void 0 || orderHash === "") return null;
2814
- const text3 = (value6) => value6 === void 0 || value6 === null || value6 === "" ? null : String(value6);
2815
+ const text4 = (value6) => value6 === void 0 || value6 === null || value6 === "" ? null : String(value6);
2815
2816
  return {
2816
2817
  orderHash: String(orderHash),
2817
2818
  status: String((_d = pick(a, "status")) != null ? _d : ""),
2818
2819
  amount: toNumber(pick(a, "amount"), 0),
2819
2820
  currency: String((_e = pick(a, "currency")) != null ? _e : ""),
2820
- clientSecret: text3(pick(a, "client_secret", "clientSecret")),
2821
- publishableKey: text3(pick(a, "publishable_key", "publishableKey")),
2822
- stripeAccount: text3(pick(a, "stripe_account", "stripeAccount")),
2823
- gateway: text3(pick(a, "gateway")),
2821
+ clientSecret: text4(pick(a, "client_secret", "clientSecret")),
2822
+ publishableKey: text4(pick(a, "publishable_key", "publishableKey")),
2823
+ stripeAccount: text4(pick(a, "stripe_account", "stripeAccount")),
2824
+ gateway: text4(pick(a, "gateway")),
2824
2825
  signedIn: Boolean(pick(a, "signed_in", "signedIn")),
2825
- email: text3(pick(a, "email"))
2826
+ email: text4(pick(a, "email"))
2826
2827
  };
2827
2828
  };
2828
2829
  var bundleAttemptFor = (attempts, scope, fingerprint, newKey = newBundleIdempotencyKey) => {
@@ -3532,7 +3533,7 @@ var bundleAwaitingCardFor = (entry, fingerprint) => {
3532
3533
  var _a;
3533
3534
  return (entry.status === "awaitingCard" || entry.status === "paying") && Boolean(entry.order) && ((_a = entry.attempt) == null ? void 0 : _a.fingerprint) === fingerprint;
3534
3535
  };
3535
- var decodeHtmlEntities = (text3) => decodeHTML(text3);
3536
+ var decodeHtmlEntities = (text4) => decodeHTML(text4);
3536
3537
  var BLOCK_ELEMENTS = /* @__PURE__ */ new Set([
3537
3538
  "address",
3538
3539
  "article",
@@ -3582,11 +3583,11 @@ var hidesContents = (name, attribs) => {
3582
3583
  return HIDDEN_ELEMENTS.has(name) || "hidden" in attribs || HIDING_STYLE.test((_a = attribs.style) != null ? _a : "");
3583
3584
  };
3584
3585
  var htmlToPlainText = (html) => {
3585
- let text3 = "";
3586
+ let text4 = "";
3586
3587
  let hidden = 0;
3587
3588
  const hiding = [];
3588
3589
  const endLine = () => {
3589
- if (text3 !== "" && !text3.endsWith("\n")) text3 += "\n";
3590
+ if (text4 !== "" && !text4.endsWith("\n")) text4 += "\n";
3590
3591
  };
3591
3592
  const parser = new Parser(
3592
3593
  {
@@ -3595,10 +3596,10 @@ var htmlToPlainText = (html) => {
3595
3596
  hiding.push(hides);
3596
3597
  if (hides) hidden += 1;
3597
3598
  else if (hidden > 0) return;
3598
- else if (name === "br") text3 += "\n";
3599
+ else if (name === "br") text4 += "\n";
3599
3600
  else if (BLOCK_ELEMENTS.has(name)) endLine();
3600
- else if (CELL_ELEMENTS.has(name) && text3 !== "" && !text3.endsWith("\n")) {
3601
- text3 += " ";
3601
+ else if (CELL_ELEMENTS.has(name) && text4 !== "" && !text4.endsWith("\n")) {
3602
+ text4 += " ";
3602
3603
  }
3603
3604
  },
3604
3605
  onclosetag: (name) => {
@@ -3606,14 +3607,14 @@ var htmlToPlainText = (html) => {
3606
3607
  else if (hidden === 0 && BLOCK_ELEMENTS.has(name)) endLine();
3607
3608
  },
3608
3609
  ontext: (chunk2) => {
3609
- if (hidden === 0) text3 += chunk2;
3610
+ if (hidden === 0) text4 += chunk2;
3610
3611
  }
3611
3612
  },
3612
3613
  { decodeEntities: true }
3613
3614
  );
3614
3615
  parser.write(html);
3615
3616
  parser.end();
3616
- return text3.replace(/\u00a0/g, " ").replace(/[ \t]+\n/g, "\n").replace(/\t{2,}/g, " ").replace(/\n{3,}/g, "\n\n").trim();
3617
+ return text4.replace(/\u00a0/g, " ").replace(/[ \t]+\n/g, "\n").replace(/\t{2,}/g, " ").replace(/\n{3,}/g, "\n\n").trim();
3617
3618
  };
3618
3619
  var attributesOf = (body) => {
3619
3620
  var _a, _b, _c;
@@ -4025,7 +4026,7 @@ var waiverFrom = (w) => {
4025
4026
  title: String((_c = pick2(w, "title")) != null ? _c : ""),
4026
4027
  bodyHtml,
4027
4028
  bodySha256,
4028
- appliesToTicketTypeIds: Array.isArray(ids) && ids.length ? ids.map((id) => String(id)) : null,
4029
+ appliesToTicketTypeIds: Array.isArray(ids) && ids.length ? ids.map((id2) => String(id2)) : null,
4029
4030
  // Anything but an explicit `required` is optional: an unsigned guest is
4030
4031
  // never blocked unless the organiser chose that.
4031
4032
  checkoutMode: mode === "required" ? "required" : "optional",
@@ -4528,17 +4529,17 @@ var confirmedStripeIntentStatus = (intent) => {
4528
4529
  var applyVerifiedPhone = (current4, verified) => {
4529
4530
  var _a, _b, _c;
4530
4531
  const p = verified.prefill;
4531
- const text3 = (key4, fallback) => {
4532
+ const text4 = (key4, fallback) => {
4532
4533
  var _a2;
4533
4534
  const value6 = (_a2 = p[key4]) != null ? _a2 : p[key4 === "firstName" ? "first_name" : key4 === "lastName" ? "last_name" : key4];
4534
4535
  return typeof value6 === "string" && value6 ? value6 : fallback;
4535
4536
  };
4536
4537
  return {
4537
4538
  ...current4,
4538
- firstName: (_a = text3("firstName", current4.firstName)) != null ? _a : "",
4539
- lastName: (_b = text3("lastName", current4.lastName)) != null ? _b : "",
4540
- email: (_c = text3("email", current4.email)) != null ? _c : "",
4541
- phone: text3("phone", current4.phone),
4539
+ firstName: (_a = text4("firstName", current4.firstName)) != null ? _a : "",
4540
+ lastName: (_b = text4("lastName", current4.lastName)) != null ? _b : "",
4541
+ email: (_c = text4("email", current4.email)) != null ? _c : "",
4542
+ phone: text4("phone", current4.phone),
4542
4543
  phoneVerificationToken: verified.phoneVerificationToken,
4543
4544
  phoneFirstUseKnownEmail: false
4544
4545
  };
@@ -4561,15 +4562,15 @@ var accommodationSelection = (draft) => {
4561
4562
  if (Object.keys(draft).length > 20)
4562
4563
  throw new TtfError("Choose up to 20 room types.", 400);
4563
4564
  const selection = {};
4564
- for (const [id, stay] of Object.entries(draft)) {
4565
- if (!/^[1-9]\d*$/.test(id) || !Number.isInteger(stay.rooms) || stay.rooms < 0 || stay.rooms > 4)
4565
+ for (const [id2, stay] of Object.entries(draft)) {
4566
+ if (!/^[1-9]\d*$/.test(id2) || !Number.isInteger(stay.rooms) || stay.rooms < 0 || stay.rooms > 4)
4566
4567
  throw new TtfError("Choose between 0 and 4 rooms of each type.", 400);
4567
4568
  if (stay.rooms === 0) continue;
4568
4569
  if (!calendarDay(stay.check_in) || !calendarDay(stay.check_out) || stay.check_out <= stay.check_in)
4569
4570
  throw new TtfError("Choose valid check-in and check-out dates.", 400);
4570
4571
  if (!Number.isInteger(stay.num_guests) || stay.num_guests < 1 || stay.num_guests > 100)
4571
4572
  throw new TtfError("Choose between 1 and 100 guests.", 400);
4572
- selection[id] = {
4573
+ selection[id2] = {
4573
4574
  ...stay,
4574
4575
  occupants: (_a = stay.occupants) == null ? void 0 : _a.filter((person) => person.name.trim()).map((person) => ({ ...person, name: person.name.trim() }))
4575
4576
  };
@@ -4579,15 +4580,15 @@ var accommodationSelection = (draft) => {
4579
4580
  var acceptedAccommodationSelection = (selection, result2) => ({
4580
4581
  accommodation: Object.fromEntries(
4581
4582
  Object.entries(selection.accommodation).filter(
4582
- ([id]) => !result2.rejected[id] || result2.rejected[id].status_code === 400
4583
+ ([id2]) => !result2.rejected[id2] || result2.rejected[id2].status_code === 400
4583
4584
  )
4584
4585
  )
4585
4586
  });
4586
4587
  var accommodationTotal = (items, quotes, currency) => {
4587
4588
  var _a, _b;
4588
4589
  let total = 0;
4589
- for (const id of Object.keys((_a = items == null ? void 0 : items.accommodation) != null ? _a : {})) {
4590
- const quote = quotes == null ? void 0 : quotes[id];
4590
+ for (const id2 of Object.keys((_a = items == null ? void 0 : items.accommodation) != null ? _a : {})) {
4591
+ const quote = quotes == null ? void 0 : quotes[id2];
4591
4592
  const amount = (_b = quote == null ? void 0 : quote.total) != null ? _b : quote == null ? void 0 : quote.total_price;
4592
4593
  if (!quote || quote.currency !== currency || !Number.isFinite(amount) || Number(amount) < 0)
4593
4594
  throw new TtfError("Refresh your accommodation quote before paying.", 409);
@@ -4621,15 +4622,15 @@ var checkoutDisplayPriceBreakdown = (snapshot) => {
4621
4622
  }).format(amount);
4622
4623
  return {
4623
4624
  ...base,
4624
- add_ons: [...base.add_ons, ...Object.entries(snapshot.extraItems.accommodation).map(([id, stay]) => {
4625
+ add_ons: [...base.add_ons, ...Object.entries(snapshot.extraItems.accommodation).map(([id2, stay]) => {
4625
4626
  var _a2, _b2, _c;
4626
4627
  return {
4627
4628
  name: `Accommodation \xB7 ${stay.check_in} \u2013 ${stay.check_out}`,
4628
4629
  quantity: stay.rooms,
4629
4630
  show_price: false,
4630
4631
  unit_price: "",
4631
- line_total: (_c = (_b2 = (_a2 = snapshot.extraQuotes) == null ? void 0 : _a2[id]) == null ? void 0 : _b2.total_formatted) != null ? _c : money5(accommodationTotal(
4632
- { accommodation: { [id]: stay } },
4632
+ line_total: (_c = (_b2 = (_a2 = snapshot.extraQuotes) == null ? void 0 : _a2[id2]) == null ? void 0 : _b2.total_formatted) != null ? _c : money5(accommodationTotal(
4633
+ { accommodation: { [id2]: stay } },
4633
4634
  snapshot.extraQuotes,
4634
4635
  total.currencyCode
4635
4636
  ))
@@ -4801,36 +4802,36 @@ var interestSelectionError = (selection, catalog) => {
4801
4802
  if (!Array.isArray(ids) || ids.length > catalog.length || new Set(ids).size !== ids.length)
4802
4803
  return "Choose each category once.";
4803
4804
  if (ids.length > 0 && ids.length < 3) return "Choose 3 or more categories you like.";
4804
- for (const id of ids)
4805
- if (!catalog.some((category) => category.id === id))
4805
+ for (const id2 of ids)
4806
+ if (!catalog.some((category) => category.id === id2))
4806
4807
  return "Choose a category from the list.";
4807
- for (const [id, selected] of Object.entries(selection.subcategories)) {
4808
- const category = catalog.find((item) => item.id === id);
4809
- if (!ids.includes(id) || !category || !Array.isArray(selected) || new Set(selected).size !== selected.length || selected.some(
4808
+ for (const [id2, selected] of Object.entries(selection.subcategories)) {
4809
+ const category = catalog.find((item) => item.id === id2);
4810
+ if (!ids.includes(id2) || !category || !Array.isArray(selected) || new Set(selected).size !== selected.length || selected.some(
4810
4811
  (child) => !category.subcategories.some((option) => option.id === child)
4811
4812
  ))
4812
4813
  return "Choose interests from their selected category.";
4813
4814
  }
4814
4815
  return null;
4815
4816
  };
4816
- var toggleInterestCategory = (selection, id) => {
4817
- if (!selection.categoryIds.includes(id))
4818
- return { ...selection, categoryIds: [...selection.categoryIds, id] };
4817
+ var toggleInterestCategory = (selection, id2) => {
4818
+ if (!selection.categoryIds.includes(id2))
4819
+ return { ...selection, categoryIds: [...selection.categoryIds, id2] };
4819
4820
  const subcategories = { ...selection.subcategories };
4820
- delete subcategories[id];
4821
+ delete subcategories[id2];
4821
4822
  return {
4822
- categoryIds: selection.categoryIds.filter((item) => item !== id),
4823
+ categoryIds: selection.categoryIds.filter((item) => item !== id2),
4823
4824
  subcategories
4824
4825
  };
4825
4826
  };
4826
- var toggleInterestSubcategory = (selection, categoryId, id) => {
4827
+ var toggleInterestSubcategory = (selection, categoryId, id2) => {
4827
4828
  var _a;
4828
4829
  const current4 = (_a = selection.subcategories[categoryId]) != null ? _a : [];
4829
4830
  return {
4830
4831
  ...selection,
4831
4832
  subcategories: {
4832
4833
  ...selection.subcategories,
4833
- [categoryId]: current4.includes(id) ? current4.filter((item) => item !== id) : [...current4, id]
4834
+ [categoryId]: current4.includes(id2) ? current4.filter((item) => item !== id2) : [...current4, id2]
4834
4835
  }
4835
4836
  };
4836
4837
  };
@@ -4859,7 +4860,7 @@ var rankEventsByInterests = (events, preferences, metadata) => {
4859
4860
  return events.map((event, index) => {
4860
4861
  var _a2, _b;
4861
4862
  const publicData = metadata(event);
4862
- const text3 = " " + words([
4863
+ const text4 = " " + words([
4863
4864
  (_a2 = publicData.title) == null ? void 0 : _a2.slice(0, 1024),
4864
4865
  (_b = publicData.description) == null ? void 0 : _b.replace(/<[^>]*>/g, " ").slice(0, 4096),
4865
4866
  ...values(publicData.categories),
@@ -4868,7 +4869,7 @@ var rankEventsByInterests = (events, preferences, metadata) => {
4868
4869
  ...values(publicData.genres)
4869
4870
  ].filter(Boolean).join(" ").slice(0, 8192)) + " ";
4870
4871
  let score = 0;
4871
- for (const [term, weight] of terms) if (text3.includes(" " + term + " ")) score += weight;
4872
+ for (const [term, weight] of terms) if (text4.includes(" " + term + " ")) score += weight;
4872
4873
  return { event, index, score };
4873
4874
  }).sort((a, b) => b.score - a.score || a.index - b.index).map((result2) => result2.event);
4874
4875
  };
@@ -4889,27 +4890,27 @@ var previewFriendProfile = (profile, settings) => {
4889
4890
  };
4890
4891
  var accountEventPresentation = (item, locale) => {
4891
4892
  const event = item.event;
4892
- const text3 = (value6) => typeof value6 === "string" ? value6 : "";
4893
+ const text4 = (value6) => typeof value6 === "string" ? value6 : "";
4893
4894
  const venue = event.venue && typeof event.venue === "object" ? event.venue : {};
4894
4895
  let date = "";
4895
4896
  if (event.hideDate === true || event.hide_date === true) date = "Date TBC";
4896
- else if (text3(event.event_date)) date = text3(event.event_date);
4897
- else if (text3(event.startDate)) {
4897
+ else if (text4(event.event_date)) date = text4(event.event_date);
4898
+ else if (text4(event.startDate)) {
4898
4899
  try {
4899
4900
  date = new Intl.DateTimeFormat(locale, {
4900
4901
  dateStyle: "medium",
4901
- timeZone: text3(event.timezone) || void 0
4902
- }).format(new Date(text3(event.startDate)));
4902
+ timeZone: text4(event.timezone) || void 0
4903
+ }).format(new Date(text4(event.startDate)));
4903
4904
  } catch (e) {
4904
4905
  }
4905
4906
  }
4906
4907
  return {
4907
4908
  id: item.id,
4908
- name: text3(event.displayName) || text3(event.name) || text3(event.title),
4909
- imageUrl: text3(event.imageURL) || text3(event.image_url) || text3(event.image),
4910
- url: text3(event.url),
4909
+ name: text4(event.displayName) || text4(event.name) || text4(event.title),
4910
+ imageUrl: text4(event.imageURL) || text4(event.image_url) || text4(event.image),
4911
+ url: text4(event.url),
4911
4912
  date,
4912
- venue: venue.hidden ? "" : [text3(venue.name), text3(venue.city)].filter(Boolean).join(", ")
4913
+ venue: venue.hidden ? "" : [text4(venue.name), text4(venue.city)].filter(Boolean).join(", ")
4913
4914
  };
4914
4915
  };
4915
4916
  var profileGenderOptions = [
@@ -4975,7 +4976,7 @@ var normalizeTicketGiftIntent = (input) => {
4975
4976
  fail();
4976
4977
  if (input.confirm_terms !== true)
4977
4978
  throw new TtfError("Confirm that this ticket will belong to the recipient.", 422);
4978
- if (!Array.isArray(input.add_on_ids) || input.add_on_ids.length > 100 || input.add_on_ids.some((id) => !Number.isSafeInteger(id) || id <= 0))
4979
+ if (!Array.isArray(input.add_on_ids) || input.add_on_ids.length > 100 || input.add_on_ids.some((id2) => !Number.isSafeInteger(id2) || id2 <= 0))
4979
4980
  throw new TtfError("Review the add-ons to include with your gift.", 422);
4980
4981
  return {
4981
4982
  request_key: input.request_key,
@@ -5012,6 +5013,75 @@ var normalizeTicketResale = (input, requireNames = false) => {
5012
5013
  throw new TtfError("Enter matching email addresses for your friend.", 422);
5013
5014
  return result2;
5014
5015
  };
5016
+ var record = (value6) => value6 !== null && typeof value6 === "object" && !Array.isArray(value6) ? value6 : null;
5017
+ var text3 = (value6) => typeof value6 === "string" ? value6 : "";
5018
+ var id = (value6) => typeof value6 === "string" || typeof value6 === "number" && Number.isFinite(value6) ? String(value6) : "";
5019
+ var flag2 = (value6) => value6 === true || value6 === 1 || value6 === "1" || value6 === "yes";
5020
+ var featuredQueryParams = (query) => {
5021
+ const { latitude, longitude, country } = query;
5022
+ if ((latitude !== void 0 || longitude !== void 0) && (typeof latitude !== "number" || typeof longitude !== "number" || !Number.isFinite(latitude) || !Number.isFinite(longitude) || Math.abs(latitude) > 90 || Math.abs(longitude) > 180))
5023
+ throw new TtfError("Provide a valid latitude and longitude.", 422, "INVALID_LOCATION");
5024
+ return {
5025
+ ...latitude !== void 0 ? { latitude, longitude } : {},
5026
+ ...country ? { c: country } : {}
5027
+ };
5028
+ };
5029
+ var featuredEventsFromResponse = (body) => {
5030
+ var _a, _b;
5031
+ const events = (_b = record((_a = record(body)) == null ? void 0 : _a.data)) == null ? void 0 : _b.events;
5032
+ const invalid2 = () => new TtfError(
5033
+ "Events could not be loaded. Please try again.",
5034
+ 502,
5035
+ "INVALID_FEATURED_EVENTS"
5036
+ );
5037
+ if (!Array.isArray(events)) throw invalid2();
5038
+ return events.map((value6) => {
5039
+ var _a2;
5040
+ const row = record(value6);
5041
+ if (!row || !id(row.objectID).trim() || !text3(row.title).trim() || !id(row.brand_id))
5042
+ throw invalid2();
5043
+ const geoloc = record(row._geoloc);
5044
+ const lat = geoloc == null ? void 0 : geoloc.lat;
5045
+ const lng = geoloc == null ? void 0 : geoloc.lng;
5046
+ const coordinates = typeof lat === "number" && typeof lng === "number" && Number.isFinite(lat) && Number.isFinite(lng) && Math.abs(lat) <= 90 && Math.abs(lng) <= 180 ? { lat, lng } : void 0;
5047
+ return {
5048
+ objectID: id(row.objectID),
5049
+ title: text3(row.title),
5050
+ brand_id: id(row.brand_id),
5051
+ brand_name: text3(row.brand_name),
5052
+ url: text3(row.url),
5053
+ event_date: text3(row.event_date),
5054
+ event_date_3_letter_month: text3(row.event_date_3_letter_month),
5055
+ event_date_day: text3(row.event_date_day),
5056
+ event_date_day_month: text3(row.event_date_day_month),
5057
+ event_date_month: text3(row.event_date_month),
5058
+ event_date_time: text3(row.event_date_time),
5059
+ event_date_week: text3(row.event_date_week),
5060
+ date: text3(row.date),
5061
+ end_date: text3(row.end_date),
5062
+ venue_id: id(row.venue_id),
5063
+ venue_name: text3(row.venue_name),
5064
+ venue_slug: text3(row.venue_slug),
5065
+ event_city: text3(row.event_city),
5066
+ city_slug: text3(row.city_slug),
5067
+ hide_date: flag2(row.hide_date),
5068
+ image_url: text3(row.image_url),
5069
+ image_blurred_url: text3(row.image_blurred_url),
5070
+ short_description: text3(row.short_description),
5071
+ ticket_url: text3(row.ticket_url),
5072
+ total_in_stock: id(row.total_in_stock),
5073
+ x_featured_event: flag2(row.x_featured_event),
5074
+ is_online_event: flag2(row.is_online_event),
5075
+ event_types: Object.fromEntries(
5076
+ Object.entries((_a2 = record(row.event_types)) != null ? _a2 : {}).map(([key4, value7]) => [
5077
+ key4,
5078
+ flag2(value7)
5079
+ ])
5080
+ ),
5081
+ ...coordinates ? { _geoloc: coordinates } : {}
5082
+ };
5083
+ });
5084
+ };
5015
5085
  var initialSnapshot = () => ({
5016
5086
  status: "idle",
5017
5087
  selections: [],
@@ -5100,7 +5170,7 @@ var CONFIRMED_INTENT_STATUSES = [
5100
5170
  "RequiresCapture",
5101
5171
  "Processing"
5102
5172
  ];
5103
- var cleanAccountId = (id) => id && id.trim() ? id : void 0;
5173
+ var cleanAccountId = (id2) => id2 && id2.trim() ? id2 : void 0;
5104
5174
  var unsupportedGatewayError = (message) => {
5105
5175
  const err = new Error(
5106
5176
  message != null ? message : "This payment method isn't available in the app. Please finish buying on the event page."
@@ -5423,6 +5493,7 @@ __export(api_exports, {
5423
5493
  getEventTickets: () => getEventTickets,
5424
5494
  getEventTicketsWithMeta: () => getEventTicketsWithMeta,
5425
5495
  getEventTimeSlotTickets: () => getEventTimeSlotTickets,
5496
+ getFeaturedEvents: () => getFeaturedEvents,
5426
5497
  getFriendProfile: () => getFriendProfile,
5427
5498
  getFriends: () => getFriends,
5428
5499
  getIdVerificationStatus: () => getIdVerificationStatus,
@@ -5909,7 +5980,7 @@ var getCountries = async () => {
5909
5980
  var getStates = async (countryId) => {
5910
5981
  var _a;
5911
5982
  const res = await get(ENDPOINTS.geo.states(countryId));
5912
- return Object.entries((_a = res.data) != null ? _a : {}).map(([id, name]) => ({ id, name }));
5983
+ return Object.entries((_a = res.data) != null ? _a : {}).map(([id2, name]) => ({ id: id2, name }));
5913
5984
  };
5914
5985
  var sessionEpoch2 = -1;
5915
5986
  var sessionConfig = null;
@@ -6285,8 +6356,8 @@ var removeReservedSeats = async (eventId, tierId, seatIds) => del(ENDPOINTS.seat
6285
6356
  });
6286
6357
  var refreshReservation = async (eventId, orderId) => patch(ENDPOINTS.seatmap.refreshReservation(eventId), { order_id: orderId });
6287
6358
  var badgeOf = (raw) => {
6288
- const text3 = typeof raw === "string" ? raw.trim() : "";
6289
- return text3 || null;
6359
+ const text4 = typeof raw === "string" ? raw.trim() : "";
6360
+ return text4 || null;
6290
6361
  };
6291
6362
  var mapTicket = (t) => {
6292
6363
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
@@ -6325,7 +6396,7 @@ var getEventDetails = async (eventId) => {
6325
6396
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
6326
6397
  const body = await get(ENDPOINTS.events.info(eventId));
6327
6398
  const a = (_b = (_a = body == null ? void 0 : body.data) == null ? void 0 : _a.attributes) != null ? _b : {};
6328
- const text3 = (value6) => typeof value6 === "string" && value6.trim() ? value6 : null;
6399
+ const text4 = (value6) => typeof value6 === "string" && value6.trim() ? value6 : null;
6329
6400
  const coordinate = (value6) => value6 !== null && value6 !== void 0 && value6 !== "" && Number.isFinite(Number(value6)) ? Number(value6) : null;
6330
6401
  const hidden = a.hideVenue === true || a.hideVenue === 1 || a.hideVenue === "yes";
6331
6402
  const hideDate = a.hideDate === true || a.hideDate === 1 || a.hideDate === "yes" || a.hideDate === "1";
@@ -6335,25 +6406,25 @@ var getEventDetails = async (eventId) => {
6335
6406
  slug: String((_g = a.slug) != null ? _g : ""),
6336
6407
  description: String((_h = a.description) != null ? _h : ""),
6337
6408
  shortDescription: String((_i = a.shortDescription) != null ? _i : ""),
6338
- imageUrl: (_k = (_j = text3(a.imageUrlHd)) != null ? _j : text3(a.productImage)) != null ? _k : text3(a.imageUrl),
6409
+ imageUrl: (_k = (_j = text4(a.imageUrlHd)) != null ? _j : text4(a.productImage)) != null ? _k : text4(a.imageUrl),
6339
6410
  hideDate,
6340
- startDate: hideDate ? null : (_l = text3(a.startDate)) != null ? _l : text3(a.date),
6341
- endDate: hideDate ? null : text3(a.endDate),
6411
+ startDate: hideDate ? null : (_l = text4(a.startDate)) != null ? _l : text4(a.date),
6412
+ endDate: hideDate ? null : text4(a.endDate),
6342
6413
  formattedDate: hideDate ? "Date TBC" : String((_m = a.formattedDate) != null ? _m : ""),
6343
- timezone: text3(a.timezone),
6414
+ timezone: text4(a.timezone),
6344
6415
  currency: String((_n = a.currency) != null ? _n : ""),
6345
- salesStart: text3(a.salesStart),
6346
- salesEnd: text3(a.salesEnd),
6416
+ salesStart: text4(a.salesStart),
6417
+ salesEnd: text4(a.salesEnd),
6347
6418
  salesStarted: Boolean(a.salesStarted),
6348
6419
  salesEnded: Boolean(a.salesEnded),
6349
6420
  // A hidden venue must not leak through a map link even when an older
6350
6421
  // backend response happens to include its coordinates.
6351
6422
  venue: {
6352
6423
  hidden,
6353
- name: hidden ? null : text3(a.venueName),
6424
+ name: hidden ? null : text4(a.venueName),
6354
6425
  address: hidden ? null : [a.venueStreetNumber, a.venueStreet, a.venuePostalCode].filter(Boolean).join(" ") || null,
6355
- city: text3(a.venueCity),
6356
- country: text3(a.venueCountry),
6426
+ city: text4(a.venueCity),
6427
+ country: text4(a.venueCountry),
6357
6428
  latitude: hidden ? null : coordinate(a.venueLatitude),
6358
6429
  longitude: hidden ? null : coordinate(a.venueLongitude)
6359
6430
  }
@@ -6567,7 +6638,7 @@ var filterAddonsForTickets = (addons, ticketTypeIds) => {
6567
6638
  return addons.filter((a) => {
6568
6639
  const prereq = a.prerequisiteTicketTypeIds;
6569
6640
  if (!prereq || prereq.length === 0) return true;
6570
- return prereq.some((id) => selected.has(String(id)));
6641
+ return prereq.some((id2) => selected.has(String(id2)));
6571
6642
  });
6572
6643
  };
6573
6644
  var getEventTicketsWithMeta = async (eventId) => {
@@ -6902,7 +6973,7 @@ var createOrder = async (input) => {
6902
6973
  ...addOnDataCapture ? {
6903
6974
  addOnDataCapture: Object.fromEntries(
6904
6975
  Object.entries(addOnDataCapture).filter(
6905
- ([id, values2]) => Number(addOns[id]) > 0 && values2 && Object.keys(values2).length > 0
6976
+ ([id2, values2]) => Number(addOns[id2]) > 0 && values2 && Object.keys(values2).length > 0
6906
6977
  )
6907
6978
  )
6908
6979
  } : {}
@@ -7355,7 +7426,7 @@ var completeAccount = (challenge, input, termsAccepted) => {
7355
7426
  })
7356
7427
  );
7357
7428
  };
7358
- var path = (eventId, id) => `/event/${encodeURIComponent(eventId)}/comments${id ? `/${encodeURIComponent(id)}` : ""}`;
7429
+ var path = (eventId, id2) => `/event/${encodeURIComponent(eventId)}/comments${id2 ? `/${encodeURIComponent(id2)}` : ""}`;
7359
7430
  var value2 = (response) => {
7360
7431
  if (response.success === false || response.error === true)
7361
7432
  throw new TtfError(
@@ -7402,13 +7473,13 @@ var getEventComments = async (eventId, options = {}) => {
7402
7473
  );
7403
7474
  return { ...page2, items: page2.items.map(normalizeEventComment) };
7404
7475
  };
7405
- var getEventCommentImage = async (eventId, id, previewKey, index = 0) => {
7476
+ var getEventCommentImage = async (eventId, id2, previewKey, index = 0) => {
7406
7477
  if (!Number.isInteger(index) || index < 0 || index > 4)
7407
7478
  throw new TtfError("Choose a valid image position.", 422, "VALIDATION_ERROR");
7408
7479
  const epoch = getSessionEpoch();
7409
7480
  const bytes = new Uint8Array(
7410
7481
  await get(
7411
- `${path(eventId, id)}/${index === 0 ? "image" : `images/${index}`}`,
7482
+ `${path(eventId, id2)}/${index === 0 ? "image" : `images/${index}`}`,
7412
7483
  {
7413
7484
  responseType: "arraybuffer",
7414
7485
  params: previewKey ? { pk: previewKey } : void 0
@@ -7444,7 +7515,7 @@ var createEventComment = async (eventId, draft, previewKey) => {
7444
7515
  value2(await post(target, draft, config))
7445
7516
  );
7446
7517
  };
7447
- var updateEventComment = async (eventId, id, body, revision, previewKey) => {
7518
+ var updateEventComment = async (eventId, id2, body, revision, previewKey) => {
7448
7519
  if (typeof body !== "string" || [...body].length > 2e3)
7449
7520
  throw new TtfError(
7450
7521
  "Use up to 2000 characters of plain text.",
@@ -7456,43 +7527,43 @@ var updateEventComment = async (eventId, id, body, revision, previewKey) => {
7456
7527
  assertSessionEpoch(epoch);
7457
7528
  return normalizeEventComment(
7458
7529
  value2(
7459
- await patch(path(eventId, id), { body, revision }, config)
7530
+ await patch(path(eventId, id2), { body, revision }, config)
7460
7531
  )
7461
7532
  );
7462
7533
  };
7463
- var removeEventComment = async (eventId, id, revision, previewKey) => {
7534
+ var removeEventComment = async (eventId, id2, revision, previewKey) => {
7464
7535
  const epoch = getSessionEpoch();
7465
7536
  const config = await security(epoch, previewKey);
7466
7537
  assertSessionEpoch(epoch);
7467
7538
  return normalizeEventComment(
7468
7539
  value2(
7469
- await del(path(eventId, id), {
7540
+ await del(path(eventId, id2), {
7470
7541
  ...config,
7471
7542
  data: { revision }
7472
7543
  })
7473
7544
  )
7474
7545
  );
7475
7546
  };
7476
- var reactToEventComment = async (eventId, id, reaction, previewKey) => {
7547
+ var reactToEventComment = async (eventId, id2, reaction, previewKey) => {
7477
7548
  const epoch = getSessionEpoch();
7478
7549
  const config = await security(epoch, previewKey);
7479
7550
  assertSessionEpoch(epoch);
7480
7551
  return normalizeEventComment(
7481
7552
  value2(
7482
7553
  await post(
7483
- `${path(eventId, id)}/reaction`,
7554
+ `${path(eventId, id2)}/reaction`,
7484
7555
  { reaction },
7485
7556
  config
7486
7557
  )
7487
7558
  )
7488
7559
  );
7489
7560
  };
7490
- var reportEventComment = async (eventId, id, reason, previewKey) => {
7561
+ var reportEventComment = async (eventId, id2, reason, previewKey) => {
7491
7562
  const epoch = getSessionEpoch();
7492
7563
  const config = await security(epoch, previewKey);
7493
7564
  assertSessionEpoch(epoch);
7494
7565
  value2(
7495
- await post(`${path(eventId, id)}/report`, { reason }, config)
7566
+ await post(`${path(eventId, id2)}/report`, { reason }, config)
7496
7567
  );
7497
7568
  };
7498
7569
  var blockEventCommentAuthor = async (eventId, authorId, blocked, previewKey) => {
@@ -7507,14 +7578,14 @@ var blockEventCommentAuthor = async (eventId, authorId, blocked, previewKey) =>
7507
7578
  )
7508
7579
  );
7509
7580
  };
7510
- var moderateEventComment = async (eventId, id, status, revision, reason, previewKey) => {
7581
+ var moderateEventComment = async (eventId, id2, status, revision, reason, previewKey) => {
7511
7582
  const epoch = getSessionEpoch();
7512
7583
  const config = await security(epoch, previewKey);
7513
7584
  assertSessionEpoch(epoch);
7514
7585
  return normalizeEventComment(
7515
7586
  value2(
7516
7587
  await post(
7517
- `${path(eventId, id)}/moderate`,
7588
+ `${path(eventId, id2)}/moderate`,
7518
7589
  { status, revision, reason },
7519
7590
  config
7520
7591
  )
@@ -8098,9 +8169,9 @@ var matchFriendContacts = (phones, region) => write(
8098
8169
  security2
8099
8170
  )
8100
8171
  );
8101
- var getFriendProfile = async (id, section = "attending", cursor) => unwrap4(
8172
+ var getFriendProfile = async (id2, section = "attending", cursor) => unwrap4(
8102
8173
  await get(
8103
- `/customer/friends/${encodeURIComponent(id)}/profile`,
8174
+ `/customer/friends/${encodeURIComponent(id2)}/profile`,
8104
8175
  { params: { section, cursor } }
8105
8176
  )
8106
8177
  );
@@ -8130,28 +8201,28 @@ var value4 = (body) => {
8130
8201
  );
8131
8202
  return body.data.attributes;
8132
8203
  };
8133
- var passUrl = (id) => {
8134
- if (!Number.isSafeInteger(id) || id < 1)
8204
+ var passUrl = (id2) => {
8205
+ if (!Number.isSafeInteger(id2) || id2 < 1)
8135
8206
  throw new TtfError("Choose a pass to continue.", 422);
8136
- return `v1/account/multi-event-passes/${id}`;
8207
+ return `v1/account/multi-event-passes/${id2}`;
8137
8208
  };
8138
8209
  var getCustomerPasses = async (page2 = 1) => value4(
8139
8210
  await get("v1/account/multi-event-passes", {
8140
8211
  params: { page: page2, per_page: 20 }
8141
8212
  })
8142
8213
  );
8143
- var getCustomerPass = async (id) => value4(await get(passUrl(id)));
8144
- var getPassEvents = async (id, search = "", page2 = 1) => value4(
8145
- await get(`${passUrl(id)}/eligible-events`, {
8214
+ var getCustomerPass = async (id2) => value4(await get(passUrl(id2)));
8215
+ var getPassEvents = async (id2, search = "", page2 = 1) => value4(
8216
+ await get(`${passUrl(id2)}/eligible-events`, {
8146
8217
  params: { search, page: page2, per_page: 20 }
8147
8218
  })
8148
8219
  );
8149
- var getPassBookings = async (id, after) => value4(
8150
- await get(`${passUrl(id)}/redemptions`, {
8220
+ var getPassBookings = async (id2, after) => value4(
8221
+ await get(`${passUrl(id2)}/redemptions`, {
8151
8222
  params: after ? { after } : void 0
8152
8223
  })
8153
8224
  );
8154
- var redeemCustomerPass = async (id, eventId, idempotencyKey) => {
8225
+ var redeemCustomerPass = async (id2, eventId, idempotencyKey) => {
8155
8226
  const assertOwner = captureSessionAction();
8156
8227
  if (!Number.isSafeInteger(eventId) || eventId < 1 || !idempotencyKey || idempotencyKey.length > 64)
8157
8228
  throw new TtfError("Choose an event to use your pass for.", 422);
@@ -8159,13 +8230,13 @@ var redeemCustomerPass = async (id, eventId, idempotencyKey) => {
8159
8230
  assertOwner();
8160
8231
  return value4(
8161
8232
  await post(
8162
- `${passUrl(id)}/redeem`,
8233
+ `${passUrl(id2)}/redeem`,
8163
8234
  { event_id: eventId, idempotency_key: idempotencyKey },
8164
8235
  security2
8165
8236
  )
8166
8237
  );
8167
8238
  };
8168
- var cancelPassBooking = async (id, bookingId) => {
8239
+ var cancelPassBooking = async (id2, bookingId) => {
8169
8240
  const assertOwner = captureSessionAction();
8170
8241
  if (!Number.isSafeInteger(bookingId) || bookingId < 1)
8171
8242
  throw new TtfError("Choose a booking to cancel.", 422);
@@ -8173,7 +8244,7 @@ var cancelPassBooking = async (id, bookingId) => {
8173
8244
  assertOwner();
8174
8245
  value4(
8175
8246
  await post(
8176
- `${passUrl(id)}/redemptions/${bookingId}/cancel`,
8247
+ `${passUrl(id2)}/redemptions/${bookingId}/cancel`,
8177
8248
  {},
8178
8249
  security2
8179
8250
  )
@@ -8308,6 +8379,9 @@ var deleteAccount = async (proof) => {
8308
8379
  clearSession();
8309
8380
  return { deleted: true, teamsLeft: value6.teamsLeft };
8310
8381
  };
8382
+ var getFeaturedEvents = async (query = {}) => featuredEventsFromResponse(
8383
+ await get(ENDPOINTS.events.featured, { params: featuredQueryParams(query) })
8384
+ );
8311
8385
  var retiredStores = /* @__PURE__ */ new WeakSet();
8312
8386
  var retireCheckoutStore = (store) => {
8313
8387
  retiredStores.add(store);
@@ -8667,19 +8741,19 @@ var setExtraItemsWith = async (store, input) => {
8667
8741
  const accepted = acceptedAccommodationSelection(selection, result2);
8668
8742
  const quotes = { ...result2.quotes };
8669
8743
  const missing = Object.entries(accepted.accommodation).filter(
8670
- ([id]) => !quotes[id] && !result2.rejected[id]
8744
+ ([id2]) => !quotes[id2] && !result2.rejected[id2]
8671
8745
  );
8672
8746
  const fetched = await forCart(
8673
8747
  store,
8674
8748
  cart,
8675
8749
  Promise.all(
8676
8750
  missing.map(
8677
- async ([id, stay]) => [id, await quoteAccommodation(eventId, id, stay)]
8751
+ async ([id2, stay]) => [id2, await quoteAccommodation(eventId, id2, stay)]
8678
8752
  )
8679
8753
  )
8680
8754
  );
8681
- fetched.forEach(([id, quote]) => {
8682
- quotes[id] = quote;
8755
+ fetched.forEach(([id2, quote]) => {
8756
+ quotes[id2] = quote;
8683
8757
  });
8684
8758
  store.setState({
8685
8759
  extraItems: accepted,
@@ -9677,9 +9751,9 @@ var createEngine = (config) => {
9677
9751
  holdWaiverSigning: (index) => {
9678
9752
  if (orderIsFixed(store)) return null;
9679
9753
  lastHoldId += 1;
9680
- const id = lastHoldId;
9754
+ const id2 = lastHoldId;
9681
9755
  const cart = store.cartGeneration;
9682
- liveHolds.add(id);
9756
+ liveHolds.add(id2);
9683
9757
  store.setState((state) => {
9684
9758
  var _a2;
9685
9759
  return {
@@ -9687,12 +9761,12 @@ var createEngine = (config) => {
9687
9761
  };
9688
9762
  });
9689
9763
  return {
9690
- id,
9764
+ id: id2,
9691
9765
  cart,
9692
9766
  index,
9693
9767
  binding: waiverSigningBinding(store.getState(), index),
9694
9768
  release: () => {
9695
- if (!liveHolds.delete(id)) return;
9769
+ if (!liveHolds.delete(id2)) return;
9696
9770
  if (cart !== store.cartGeneration) return;
9697
9771
  store.setState((state) => {
9698
9772
  var _a2;
@@ -9762,8 +9836,8 @@ var providerPageMatchesReturn = (url2, prefix) => {
9762
9836
  var createProviderPages = (show) => {
9763
9837
  let sequence2 = 0;
9764
9838
  let pending2 = null;
9765
- const settle = (id, outcome) => {
9766
- if ((pending2 == null ? void 0 : pending2.id) !== id) return;
9839
+ const settle = (id2, outcome) => {
9840
+ if ((pending2 == null ? void 0 : pending2.id) !== id2) return;
9767
9841
  const resolve = pending2.resolve;
9768
9842
  pending2 = null;
9769
9843
  show(null);
@@ -9774,9 +9848,9 @@ var createProviderPages = (show) => {
9774
9848
  if (pending2)
9775
9849
  return Promise.reject(new Error("Another payment page is already open."));
9776
9850
  return new Promise((resolve) => {
9777
- const id = ++sequence2;
9778
- pending2 = { id, resolve };
9779
- show({ id, request: request2 });
9851
+ const id2 = ++sequence2;
9852
+ pending2 = { id: id2, resolve };
9853
+ show({ id: id2, request: request2 });
9780
9854
  });
9781
9855
  },
9782
9856
  settle,
@@ -9927,21 +10001,21 @@ var bundleFlowAvailable = (draft, catalog, catalogState) => {
9927
10001
  const removed = [];
9928
10002
  const reduced = [];
9929
10003
  const belowMinimum = [];
9930
- for (const [id, chosen] of Object.entries(draft.qty)) {
10004
+ for (const [id2, chosen] of Object.entries(draft.qty)) {
9931
10005
  if (!(chosen > 0)) continue;
9932
- const bundle = catalog.find((b) => b.id === id);
10006
+ const bundle = catalog.find((b) => b.id === id2);
9933
10007
  const { min, max } = bundle ? bundleQuantityRange(bundle) : { min: 0, max: 0 };
9934
10008
  if (!bundle || max === 0) {
9935
- delete qty[id];
9936
- removed.push(id);
10009
+ delete qty[id2];
10010
+ removed.push(id2);
9937
10011
  } else if (chosen < min) {
9938
- delete qty[id];
9939
- belowMinimum.push({ id, name: bundle.name, quantity: min });
10012
+ delete qty[id2];
10013
+ belowMinimum.push({ id: id2, name: bundle.name, quantity: min });
9940
10014
  } else if (chosen > max) {
9941
- qty[id] = max;
10015
+ qty[id2] = max;
9942
10016
  const { remaining } = bundle.availability;
9943
10017
  reduced.push({
9944
- id,
10018
+ id: id2,
9945
10019
  name: bundle.name,
9946
10020
  quantity: max,
9947
10021
  byStock: remaining !== null && remaining < bundle.maxQuantity
@@ -10118,28 +10192,28 @@ var createCardOwnership = () => {
10118
10192
  const listeners4 = /* @__PURE__ */ new Set();
10119
10193
  const emit = () => listeners4.forEach((listener) => listener());
10120
10194
  return {
10121
- register: (id) => {
10122
- if (!chosen && registered.length === 1 && registered[0] !== id)
10195
+ register: (id2) => {
10196
+ if (!chosen && registered.length === 1 && registered[0] !== id2)
10123
10197
  chosen = registered[0];
10124
- registered.push(id);
10198
+ registered.push(id2);
10125
10199
  emit();
10126
10200
  let done = false;
10127
10201
  return () => {
10128
10202
  if (done) return;
10129
10203
  done = true;
10130
- registered.splice(registered.indexOf(id), 1);
10131
- if (chosen === id || chosen && !registered.includes(chosen)) chosen = null;
10204
+ registered.splice(registered.indexOf(id2), 1);
10205
+ if (chosen === id2 || chosen && !registered.includes(chosen)) chosen = null;
10132
10206
  emit();
10133
10207
  };
10134
10208
  },
10135
- claim: (id) => {
10136
- if (!registered.includes(id) || chosen === id) return;
10137
- chosen = id;
10209
+ claim: (id2) => {
10210
+ if (!registered.includes(id2) || chosen === id2) return;
10211
+ chosen = id2;
10138
10212
  emit();
10139
10213
  },
10140
10214
  // A section not registered yet owns it when no other one is there, so a
10141
10215
  // single section never flashes "Continue paying here" while it mounts.
10142
- owns: (id) => registered.includes(id) ? chosen ? chosen === id : registered.every((other) => other === id) : registered.length === 0,
10216
+ owns: (id2) => registered.includes(id2) ? chosen ? chosen === id2 : registered.every((other) => other === id2) : registered.length === 0,
10143
10217
  subscribe: (listener) => {
10144
10218
  listeners4.add(listener);
10145
10219
  return () => listeners4.delete(listener);
@@ -10661,6 +10735,7 @@ var ttf = {
10661
10735
  },
10662
10736
  // --- checkout flow -------------------------------------------------------
10663
10737
  events: {
10738
+ featured: getFeaturedEvents,
10664
10739
  details: getEventDetails,
10665
10740
  tickets: getEventTickets,
10666
10741
  ticketsWithMeta: getEventTicketsWithMeta,
@@ -10849,6 +10924,7 @@ __export(hooks_exports, {
10849
10924
  useEventCommentImage: () => useEventCommentImage,
10850
10925
  useEventComments: () => useEventComments,
10851
10926
  useEventDiscussion: () => useEventDiscussion,
10927
+ useFeaturedEvents: () => useFeaturedEvents,
10852
10928
  useFriendProfile: () => useFriendProfile,
10853
10929
  useFriends: () => useFriends,
10854
10930
  useHeldScopes: () => useHeldScopes,
@@ -11821,7 +11897,7 @@ var selectedAddOnDraft = (quantities, capture) => {
11821
11897
  return {
11822
11898
  selection,
11823
11899
  capture: Object.fromEntries(
11824
- Object.entries(capture).filter(([id]) => selection[id] > 0)
11900
+ Object.entries(capture).filter(([id2]) => selection[id2] > 0)
11825
11901
  )
11826
11902
  };
11827
11903
  };
@@ -12019,7 +12095,7 @@ var useSeatSelection = (eventId, checkout, onContinue) => {
12019
12095
  )
12020
12096
  );
12021
12097
  setGuestCounts(
12022
- (previous) => Object.fromEntries(Object.entries(previous).filter(([id]) => own.includes(id)))
12098
+ (previous) => Object.fromEntries(Object.entries(previous).filter(([id2]) => own.includes(id2)))
12023
12099
  );
12024
12100
  }, [eventId, checkout.store]);
12025
12101
  useEffect4(() => {
@@ -12233,13 +12309,13 @@ var whenConfirmerFree = () => checkoutStartLock.whenFree(CHECKOUT_START);
12233
12309
  var storeIds = /* @__PURE__ */ new WeakMap();
12234
12310
  var storeCount = 0;
12235
12311
  var storeIdentity = (store) => {
12236
- let id = storeIds.get(store);
12237
- if (!id) {
12312
+ let id2 = storeIds.get(store);
12313
+ if (!id2) {
12238
12314
  storeCount += 1;
12239
- id = `s${storeCount}`;
12240
- storeIds.set(store, id);
12315
+ id2 = `s${storeCount}`;
12316
+ storeIds.set(store, id2);
12241
12317
  }
12242
- return id;
12318
+ return id2;
12243
12319
  };
12244
12320
  var ticketHolderFor = (store) => ({
12245
12321
  kind: "tickets",
@@ -12419,11 +12495,11 @@ var useCheckout = (config) => {
12419
12495
  [gated]
12420
12496
  );
12421
12497
  const acceptCondition = useCallback4(
12422
- (id, accepted) => {
12498
+ (id2, accepted) => {
12423
12499
  var _a2;
12424
12500
  return engine.setAcceptedConditions({
12425
12501
  ...(_a2 = snapshot.acceptedConditions) != null ? _a2 : {},
12426
- [id]: accepted
12502
+ [id2]: accepted
12427
12503
  });
12428
12504
  },
12429
12505
  [engine, snapshot.acceptedConditions]
@@ -13614,7 +13690,7 @@ var useCheckoutPhoneIdentity = (options) => {
13614
13690
  const request2 = async (delivery2 = channel) => {
13615
13691
  if (busy || retryAfter > 0 || !options.eventId || !phone.trim() || delivery2 === "whatsapp" && !options.whatsappAvailable)
13616
13692
  return false;
13617
- const id = ++operation.current, eventId = options.eventId;
13693
+ const id2 = ++operation.current, eventId = options.eventId;
13618
13694
  setBusy(true);
13619
13695
  setError("");
13620
13696
  try {
@@ -13623,19 +13699,19 @@ var useCheckoutPhoneIdentity = (options) => {
13623
13699
  phone,
13624
13700
  channel: delivery2
13625
13701
  });
13626
- if (id !== operation.current || scope.current !== eventId) return false;
13702
+ if (id2 !== operation.current || scope.current !== eventId) return false;
13627
13703
  setChannel(delivery2);
13628
13704
  setSent(true);
13629
13705
  setRetryAfter(result3.cooldownSeconds);
13630
13706
  return true;
13631
13707
  } catch (caught) {
13632
- if (id === operation.current)
13708
+ if (id2 === operation.current)
13633
13709
  setError(
13634
13710
  caught instanceof Error ? caught.message : "Unable to send a code. Try again."
13635
13711
  );
13636
13712
  return false;
13637
13713
  } finally {
13638
- if (id === operation.current) setBusy(false);
13714
+ if (id2 === operation.current) setBusy(false);
13639
13715
  }
13640
13716
  };
13641
13717
  const complete = (result3) => {
@@ -13647,7 +13723,7 @@ var useCheckoutPhoneIdentity = (options) => {
13647
13723
  };
13648
13724
  const verify = async (code) => {
13649
13725
  if (busy || !sent || !options.eventId) return false;
13650
- const id = ++operation.current, eventId = options.eventId;
13726
+ const id2 = ++operation.current, eventId = options.eventId;
13651
13727
  setBusy(true);
13652
13728
  setError("");
13653
13729
  try {
@@ -13657,21 +13733,21 @@ var useCheckoutPhoneIdentity = (options) => {
13657
13733
  code,
13658
13734
  channel
13659
13735
  });
13660
- if (id !== operation.current || scope.current !== eventId) return false;
13736
+ if (id2 !== operation.current || scope.current !== eventId) return false;
13661
13737
  pending2.current = result3;
13662
13738
  if (result3.knownCustomer && getConfig().accountAuth) {
13663
13739
  const profile = await ttf.auth.loginWithVerifiedPhone({
13664
13740
  eventId,
13665
13741
  phoneVerificationToken: result3.phoneVerificationToken
13666
13742
  });
13667
- if (id !== operation.current || scope.current !== eventId) return false;
13743
+ if (id2 !== operation.current || scope.current !== eventId) return false;
13668
13744
  queryClient.setQueryData(sessionScopedQueryKey(ttfKeys.profile), profile);
13669
13745
  } else if (result3.knownCustomer && !getConfig().clientSecret) {
13670
13746
  const admitted = await ttf.auth.loginCheckoutWithVerifiedPhone(
13671
13747
  eventId,
13672
13748
  result3.phoneVerificationToken
13673
13749
  );
13674
- if (id !== operation.current || scope.current !== eventId) return false;
13750
+ if (id2 !== operation.current || scope.current !== eventId) return false;
13675
13751
  if (admitted.twoFactorRequired && admitted.challengeId) {
13676
13752
  setChallenge({
13677
13753
  eventId,
@@ -13687,7 +13763,7 @@ var useCheckoutPhoneIdentity = (options) => {
13687
13763
  complete(result3);
13688
13764
  return true;
13689
13765
  } catch (caught) {
13690
- if (id !== operation.current) return false;
13766
+ if (id2 !== operation.current) return false;
13691
13767
  const next = readTwoFactorChallenge(caught);
13692
13768
  if (next) setChallenge(next);
13693
13769
  else
@@ -13696,18 +13772,18 @@ var useCheckoutPhoneIdentity = (options) => {
13696
13772
  );
13697
13773
  return false;
13698
13774
  } finally {
13699
- if (id === operation.current) setBusy(false);
13775
+ if (id2 === operation.current) setBusy(false);
13700
13776
  }
13701
13777
  };
13702
13778
  const verifyTwoFactor2 = async (code) => {
13703
13779
  if (busy || !challenge || !pending2.current) return;
13704
- const id = ++operation.current, result3 = pending2.current;
13780
+ const id2 = ++operation.current, result3 = pending2.current;
13705
13781
  setBusy(true);
13706
13782
  setError("");
13707
13783
  try {
13708
13784
  if ("eventId" in challenge) {
13709
13785
  const admitted = await ttf.auth.verifyCheckoutTwoFactor(challenge, code);
13710
- if (id !== operation.current) return;
13786
+ if (id2 !== operation.current) return;
13711
13787
  if (!admitted.authenticated)
13712
13788
  throw new Error("Sign-in could not confirm your checkout. Try again.");
13713
13789
  complete(result3);
@@ -13718,37 +13794,37 @@ var useCheckoutPhoneIdentity = (options) => {
13718
13794
  challenge.csrfToken,
13719
13795
  challenge.sessionEpoch
13720
13796
  );
13721
- if (id !== operation.current) return;
13797
+ if (id2 !== operation.current) return;
13722
13798
  queryClient.setQueryData(sessionScopedQueryKey(ttfKeys.profile), profile);
13723
13799
  complete(result3);
13724
13800
  } catch (caught) {
13725
- if (id === operation.current)
13801
+ if (id2 === operation.current)
13726
13802
  setError(
13727
13803
  caught instanceof Error ? caught.message : "Unable to verify this code. Try again."
13728
13804
  );
13729
13805
  } finally {
13730
- if (id === operation.current) setBusy(false);
13806
+ if (id2 === operation.current) setBusy(false);
13731
13807
  }
13732
13808
  };
13733
13809
  const sendTwoFactorSms2 = async () => {
13734
13810
  if (busy || retryAfter > 0 || !(challenge == null ? void 0 : challenge.smsAvailable)) return false;
13735
- const id = ++operation.current;
13811
+ const id2 = ++operation.current;
13736
13812
  setBusy(true);
13737
13813
  setError("");
13738
13814
  try {
13739
13815
  if ("eventId" in challenge) await ttf.auth.sendCheckoutTwoFactorSms(challenge);
13740
13816
  else await ttf.auth.sendTwoFactorSms(challenge.csrfToken, challenge.sessionEpoch);
13741
- if (id !== operation.current) return false;
13817
+ if (id2 !== operation.current) return false;
13742
13818
  setRetryAfter(60);
13743
13819
  return true;
13744
13820
  } catch (caught) {
13745
- if (id === operation.current)
13821
+ if (id2 === operation.current)
13746
13822
  setError(
13747
13823
  caught instanceof Error ? caught.message : "Unable to send a code. Try again."
13748
13824
  );
13749
13825
  return false;
13750
13826
  } finally {
13751
- if (id === operation.current) setBusy(false);
13827
+ if (id2 === operation.current) setBusy(false);
13752
13828
  }
13753
13829
  };
13754
13830
  const cancel = useCallback10(async () => {
@@ -14071,10 +14147,10 @@ var useAccommodationSelection = (eventId, checkout) => {
14071
14147
  const update = (room, patch2) => {
14072
14148
  var _a2;
14073
14149
  if (!active2() || checkout.isBusy || checkout.orderFixed) return;
14074
- const id = String(room.room_type_id);
14150
+ const id2 = String(room.room_type_id);
14075
14151
  checkout.setExtraDraft({ accommodation: {
14076
14152
  ...draft.accommodation,
14077
- [id]: { ...(_a2 = draft.accommodation[id]) != null ? _a2 : defaultAccommodationStay(room), ...patch2 }
14153
+ [id2]: { ...(_a2 = draft.accommodation[id2]) != null ? _a2 : defaultAccommodationStay(room), ...patch2 }
14078
14154
  } });
14079
14155
  setError("");
14080
14156
  };
@@ -14185,8 +14261,8 @@ var useTicketRefund = (ticketHash, onSubmitted) => {
14185
14261
  error: draft.error,
14186
14262
  commandPending: Boolean(draft.command && !draft.result),
14187
14263
  submit,
14188
- select: (id) => {
14189
- if (!draft.command && !draft.busy) update({ selected: id, confirmed: false });
14264
+ select: (id2) => {
14265
+ if (!draft.command && !draft.busy) update({ selected: id2, confirmed: false });
14190
14266
  },
14191
14267
  confirm: (confirmed) => {
14192
14268
  if (!draft.command && !draft.busy) update({ confirmed });
@@ -14428,17 +14504,17 @@ var useInterestSelection = () => {
14428
14504
  categories,
14429
14505
  activeCategory,
14430
14506
  draftError: state.error,
14431
- toggleCategory: (id) => {
14432
- if (categories.some((category) => category.id === id))
14507
+ toggleCategory: (id2) => {
14508
+ if (categories.some((category) => category.id === id2))
14433
14509
  update({
14434
- selection: toggleInterestCategory(selection, id),
14510
+ selection: toggleInterestCategory(selection, id2),
14435
14511
  error: void 0
14436
14512
  });
14437
14513
  },
14438
- toggleSubcategory: (id) => {
14439
- if (activeCategory == null ? void 0 : activeCategory.subcategories.some((child) => child.id === id))
14514
+ toggleSubcategory: (id2) => {
14515
+ if (activeCategory == null ? void 0 : activeCategory.subcategories.some((child) => child.id === id2))
14440
14516
  update({
14441
- selection: toggleInterestSubcategory(selection, activeCategory.id, id),
14517
+ selection: toggleInterestSubcategory(selection, activeCategory.id, id2),
14442
14518
  error: void 0
14443
14519
  });
14444
14520
  },
@@ -14450,8 +14526,8 @@ var useInterestSelection = () => {
14450
14526
  var useWordPostReaction = (postId, enabled = true) => {
14451
14527
  var _a, _b;
14452
14528
  const session = useAuthSession();
14453
- const id = String(postId);
14454
- const owner = `${session.sessionScope}:${id}`;
14529
+ const id2 = String(postId);
14530
+ const owner = `${session.sessionScope}:${id2}`;
14455
14531
  const current4 = useRef14(owner);
14456
14532
  current4.current = owner;
14457
14533
  const pending2 = useRef14(null);
@@ -14463,12 +14539,12 @@ var useWordPostReaction = (postId, enabled = true) => {
14463
14539
  const configuration2 = getConfig();
14464
14540
  const epoch = getSessionEpoch();
14465
14541
  const signedIn = session.isAuthenticated && session.buyerId !== null;
14466
- const key4 = ["ttf", "word-post-reaction", id];
14542
+ const key4 = ["ttf", "word-post-reaction", id2];
14467
14543
  const client = useQueryClient9();
14468
14544
  const query = useSessionQuery({
14469
14545
  queryKey: key4,
14470
- queryFn: () => getWordPostReaction(id),
14471
- enabled: enabled && signedIn && /^[1-9][0-9]*$/.test(id),
14546
+ queryFn: () => getWordPostReaction(id2),
14547
+ enabled: enabled && signedIn && /^[1-9][0-9]*$/.test(id2),
14472
14548
  retry: false
14473
14549
  });
14474
14550
  const owned = () => current4.current === owner && session.sessionScope === getSessionCacheScope() && epoch === getSessionEpoch() && configuration2 === getConfig();
@@ -14478,7 +14554,7 @@ var useWordPostReaction = (postId, enabled = true) => {
14478
14554
  pending2.current = owner;
14479
14555
  setStored({ owner, busy: true });
14480
14556
  try {
14481
- const result2 = await setWordPostReaction(id, reaction, query.data.revision);
14557
+ const result2 = await setWordPostReaction(id2, reaction, query.data.revision);
14482
14558
  if (!owned()) return;
14483
14559
  client.setQueryData(sessionScopedQueryKey(key4, session.sessionScope), result2);
14484
14560
  setStored({ owner, busy: false });
@@ -14687,17 +14763,17 @@ var useFriends = (section = "accepted") => {
14687
14763
  if (!settings) return;
14688
14764
  const result2 = await actions.perform(
14689
14765
  ["settings", settings],
14690
- (id) => saveFriendSettings(settings, id)
14766
+ (id2) => saveFriendSettings(settings, id2)
14691
14767
  );
14692
14768
  if (result2) update({ settings: result2 });
14693
14769
  return result2;
14694
14770
  }
14695
14771
  };
14696
14772
  };
14697
- var useFriendProfile = (id, section = "attending", cursor) => useSessionQuery({
14698
- queryKey: [...key3, "profile", id, section, cursor],
14699
- queryFn: () => getFriendProfile(id, section, cursor),
14700
- enabled: Boolean(id),
14773
+ var useFriendProfile = (id2, section = "attending", cursor) => useSessionQuery({
14774
+ queryKey: [...key3, "profile", id2, section, cursor],
14775
+ queryFn: () => getFriendProfile(id2, section, cursor),
14776
+ enabled: Boolean(id2),
14701
14777
  retry: false
14702
14778
  });
14703
14779
  var useSavedEvents = (cursor, enabled = true) => {
@@ -14714,7 +14790,7 @@ var useSavedEvents = (cursor, enabled = true) => {
14714
14790
  error: actions.error,
14715
14791
  save: (eventId, saved, revision) => actions.perform(
14716
14792
  ["saved", eventId, saved, revision],
14717
- (id) => setSavedEvent(eventId, saved, revision, id)
14793
+ (id2) => setSavedEvent(eventId, saved, revision, id2)
14718
14794
  )
14719
14795
  };
14720
14796
  };
@@ -14732,7 +14808,7 @@ var useSavedEvent = (eventId, enabled = true) => {
14732
14808
  error: actions.error,
14733
14809
  toggle: () => query.data ? actions.perform(
14734
14810
  ["saved", eventId, !query.data.saved, query.data.revision],
14735
- (id) => setSavedEvent(eventId, !query.data.saved, query.data.revision, id)
14811
+ (id2) => setSavedEvent(eventId, !query.data.saved, query.data.revision, id2)
14736
14812
  ) : Promise.resolve(void 0)
14737
14813
  };
14738
14814
  };
@@ -15220,11 +15296,11 @@ var useTicketGift = (ticketHash, onTicketsChanged) => {
15220
15296
  if (!state.busy && !state.submitted)
15221
15297
  update({ command: void 0, error: void 0 });
15222
15298
  },
15223
- toggleAddOn: (id) => {
15299
+ toggleAddOn: (id2) => {
15224
15300
  var _a;
15225
- if (((_a = query.data) == null ? void 0 : _a.select_add_ons) && query.data.add_ons.some((item) => item.id === id))
15301
+ if (((_a = query.data) == null ? void 0 : _a.select_add_ons) && query.data.add_ons.some((item) => item.id === id2))
15226
15302
  edit({
15227
- add_on_ids: state.draft.add_on_ids.includes(id) ? state.draft.add_on_ids.filter((item) => item !== id) : [...state.draft.add_on_ids, id]
15303
+ add_on_ids: state.draft.add_on_ids.includes(id2) ? state.draft.add_on_ids.filter((item) => item !== id2) : [...state.draft.add_on_ids, id2]
15228
15304
  });
15229
15305
  }
15230
15306
  };
@@ -15707,6 +15783,20 @@ var useAccountDeletion = () => {
15707
15783
  }
15708
15784
  };
15709
15785
  };
15786
+ var useFeaturedEvents = (query = {}, options) => {
15787
+ const { latitude, longitude, country } = query;
15788
+ return useSessionQuery({
15789
+ ...options,
15790
+ queryKey: [
15791
+ "ttf",
15792
+ "featured-events",
15793
+ latitude != null ? latitude : null,
15794
+ longitude != null ? longitude : null,
15795
+ country != null ? country : ""
15796
+ ],
15797
+ queryFn: () => ttf.events.featured({ latitude, longitude, country })
15798
+ });
15799
+ };
15710
15800
  var accountEn = {
15711
15801
  "account.loading_your_interests": "Loading your interests\u2026",
15712
15802
  "account.your_interests_could_not_load": "Your interests could not load.",
@@ -16501,6 +16591,180 @@ Object.assign(accountEs, {
16501
16591
  "account.we_re_finishing_a_change_to_your_account_wait_a_moment_then_reload_the_page": "Estamos terminando un cambio en tu cuenta. Espera un momento y vuelve a cargar la p\xE1gina.",
16502
16592
  "account.we_could_not_finish_deleting_your_account_sign_in_and_try_again_or_contact_ticket_fairy_support": "No pudimos terminar de eliminar tu cuenta. Inicia sesi\xF3n e int\xE9ntalo de nuevo, o contacta con el soporte de Ticket Fairy."
16503
16593
  });
16594
+ Object.assign(accountEn, {
16595
+ "account.you": " (you)",
16596
+ "account.edited": " \xB7 edited",
16597
+ "account.count_reports": " \xB7 {{count}} reports",
16598
+ "account.abuse_or_harassment": "Abuse or harassment",
16599
+ "account.actions_for_comment_by_name": "Actions for comment by {{name}}",
16600
+ "account.approve": "Approve",
16601
+ "account.approve_comment": "Approve comment",
16602
+ "account.awaiting_review": "Awaiting review",
16603
+ "account.be_the_first_to_leave_a_comment": "Be the first to leave a comment.",
16604
+ "account.block_author": "Block author",
16605
+ "account.block_this_person": "Block this person",
16606
+ "account.blocked_authors_count": "Blocked authors ({{count}})",
16607
+ "account.blocked_people": "Blocked people",
16608
+ "account.cancel": "Cancel",
16609
+ "account.close_menu": "Close menu",
16610
+ "account.comment_deleted": "Comment deleted.",
16611
+ "account.comment_moderation": "Comment moderation",
16612
+ "account.comment_no_longer_available": "Comment no longer available.",
16613
+ "account.comment_removed": "Comment removed",
16614
+ "account.comments_and_photos_are_reviewed_before_publication_keep_the_conversation_respectful": "Comments and photos are reviewed before publication. Keep the conversation respectful.",
16615
+ "account.contact_support_about_this_discussion": "Contact support about this discussion",
16616
+ "account.delete": "Delete",
16617
+ "account.delete_comment": "Delete comment",
16618
+ "account.delete_your_comment": "Delete your comment?",
16619
+ "account.delete_your_comment_and_its_image_this_cannot_be_undone": "Delete your comment and its image? This cannot be undone.",
16620
+ "account.discussion": "Discussion",
16621
+ "account.dislike_comment": "Dislike comment",
16622
+ "account.dislike_comment_count_dislikes": "Dislike comment, {{count}} dislikes",
16623
+ "account.earlier_comments": "Earlier comments",
16624
+ "account.edit": "Edit",
16625
+ "account.edit_your_comment": "Edit your comment",
16626
+ "account.editing_your_comment": "Editing your comment",
16627
+ "account.enter_your_comment": "Enter your comment\u2026",
16628
+ "account.event_comments": "Event comments",
16629
+ "account.harassment_or_abuse": "Harassment or abuse",
16630
+ "account.hidden": "Hidden",
16631
+ "account.hidden_by_a_moderator": "Hidden by a moderator",
16632
+ "account.hide": "Hide",
16633
+ "account.hide_comment": "Hide comment",
16634
+ "account.like_comment": "Like comment",
16635
+ "account.like_comment_count_likes": "Like comment, {{count}} likes",
16636
+ "account.load_earlier_comments": "Load earlier comments",
16637
+ "account.loading_comments": "Loading comments\u2026",
16638
+ "account.moderate_comment": "Moderate comment",
16639
+ "account.moderation_reason": "Moderation reason",
16640
+ "account.need_help_contact_support": "Need help? Contact support",
16641
+ "account.no_comments_awaiting_review": "No comments awaiting review.",
16642
+ "account.no_unresolved_reports": "No unresolved reports.",
16643
+ "account.pending": "Pending",
16644
+ "account.post_comment": "Post comment",
16645
+ "account.reason": "Reason",
16646
+ "account.report": "Report",
16647
+ "account.report_comment": "Report comment",
16648
+ "account.report_reason": "Report reason",
16649
+ "account.report_this_comment_to_event_moderators": "Report this comment to event moderators.",
16650
+ "account.reported": "Reported",
16651
+ "account.reports": "Reports",
16652
+ "account.save": "Save",
16653
+ "account.save_comment": "Save comment",
16654
+ "account.save_for_review": "Save for review",
16655
+ "account.send": "Send",
16656
+ "account.send_report": "Send report",
16657
+ "account.sign_in_to_comment": "Sign in to comment",
16658
+ "account.sign_in_to_leave_a_comment": "Sign in to leave a comment",
16659
+ "account.spam": "Spam",
16660
+ "account.start_the_conversation_comments_appear_after_review": "Start the conversation. Comments appear after review.",
16661
+ "account.unblock_name": "Unblock {{name}}",
16662
+ "account.unsafe_content": "Unsafe content",
16663
+ "account.why_should_this_comment_be_approved": "Why should this comment be approved?",
16664
+ "account.why_should_this_comment_be_hidden": "Why should this comment be hidden?",
16665
+ "account.you_won_t_see_their_comments_you_can_unblock_them_from_blocked_people": "You won\u2019t see their comments. You can unblock them from Blocked people.",
16666
+ "account.your_comment": "Your comment",
16667
+ "account.your_comment_will_be_removed_from_this_conversation": "Your comment will be removed from this conversation.",
16668
+ "account.count_replies_reply": "{{count}} replies \xB7 Reply",
16669
+ "account.count_reply_reply": "{{count}} reply \xB7 Reply",
16670
+ "account.only_an_event_administrator_can_moderate_comments": "Only an event administrator can moderate comments.",
16671
+ "account.choose_approve_or_hide_and_provide_a_moderation_reason": "Choose approve or hide and provide a moderation reason.",
16672
+ "account.deleted_comments_cannot_be_restored": "Deleted comments cannot be restored.",
16673
+ "account.you_cannot_view_that_moderation_queue": "You cannot view that moderation queue.",
16674
+ "account.this_comment_changed_refresh_before_trying_again": "This comment changed. Refresh before trying again.",
16675
+ "account.comment_not_found": "Comment not found.",
16676
+ "account.unable_to_update_comments_please_try_again": "Unable to update comments. Please try again.",
16677
+ "account.unable_to_update_comments": "Unable to update comments.",
16678
+ "account.comment_approved": "Comment approved.",
16679
+ "account.comment_hidden": "Comment hidden."
16680
+ });
16681
+ Object.assign(accountEs, {
16682
+ "account.you": " (t\xFA)",
16683
+ "account.edited": " \xB7 editado",
16684
+ "account.count_reports": " \xB7 {{count}} reportes",
16685
+ "account.abuse_or_harassment": "Abuso o acoso",
16686
+ "account.actions_for_comment_by_name": "Acciones del comentario de {{name}}",
16687
+ "account.approve": "Aprobar",
16688
+ "account.approve_comment": "Aprobar comentario",
16689
+ "account.awaiting_review": "Pendiente de revisi\xF3n",
16690
+ "account.be_the_first_to_leave_a_comment": "S\xE9 la primera persona en dejar un comentario.",
16691
+ "account.block_author": "Bloquear autor",
16692
+ "account.block_this_person": "Bloquear a esta persona",
16693
+ "account.blocked_authors_count": "Autores bloqueados ({{count}})",
16694
+ "account.blocked_people": "Personas bloqueadas",
16695
+ "account.cancel": "Cancelar",
16696
+ "account.close_menu": "Cerrar men\xFA",
16697
+ "account.comment_deleted": "Comentario eliminado.",
16698
+ "account.comment_moderation": "Moderaci\xF3n de comentarios",
16699
+ "account.comment_no_longer_available": "El comentario ya no est\xE1 disponible.",
16700
+ "account.comment_removed": "Comentario eliminado",
16701
+ "account.comments_and_photos_are_reviewed_before_publication_keep_the_conversation_respectful": "Los comentarios y las fotos se revisan antes de publicarse. Mant\xE9n una conversaci\xF3n respetuosa.",
16702
+ "account.contact_support_about_this_discussion": "Contactar a soporte sobre esta conversaci\xF3n",
16703
+ "account.delete": "Eliminar",
16704
+ "account.delete_comment": "Eliminar comentario",
16705
+ "account.delete_your_comment": "\xBFEliminar tu comentario?",
16706
+ "account.delete_your_comment_and_its_image_this_cannot_be_undone": "\xBFEliminar tu comentario y su imagen? Esta acci\xF3n no se puede deshacer.",
16707
+ "account.discussion": "Conversaci\xF3n",
16708
+ "account.dislike_comment": "No me gusta el comentario",
16709
+ "account.dislike_comment_count_dislikes": "No me gusta el comentario, {{count}} no me gusta",
16710
+ "account.earlier_comments": "Comentarios anteriores",
16711
+ "account.edit": "Editar",
16712
+ "account.edit_your_comment": "Edita tu comentario",
16713
+ "account.editing_your_comment": "Editando tu comentario",
16714
+ "account.enter_your_comment": "Introduce tu comentario\u2026",
16715
+ "account.event_comments": "Comentarios del evento",
16716
+ "account.harassment_or_abuse": "Acoso o abuso",
16717
+ "account.hidden": "Oculto",
16718
+ "account.hidden_by_a_moderator": "Oculto por un moderador",
16719
+ "account.hide": "Ocultar",
16720
+ "account.hide_comment": "Ocultar comentario",
16721
+ "account.like_comment": "Me gusta el comentario",
16722
+ "account.like_comment_count_likes": "Me gusta el comentario, {{count}} me gusta",
16723
+ "account.load_earlier_comments": "Cargar comentarios anteriores",
16724
+ "account.loading_comments": "Cargando comentarios\u2026",
16725
+ "account.moderate_comment": "Moderar comentario",
16726
+ "account.moderation_reason": "Motivo de moderaci\xF3n",
16727
+ "account.need_help_contact_support": "\xBFNecesitas ayuda? Contacta a soporte",
16728
+ "account.no_comments_awaiting_review": "No hay comentarios pendientes de revisi\xF3n.",
16729
+ "account.no_unresolved_reports": "No hay reportes sin resolver.",
16730
+ "account.pending": "Pendientes",
16731
+ "account.post_comment": "Publicar comentario",
16732
+ "account.reason": "Motivo",
16733
+ "account.report": "Reportar",
16734
+ "account.report_comment": "Reportar comentario",
16735
+ "account.report_reason": "Motivo del reporte",
16736
+ "account.report_this_comment_to_event_moderators": "Reporta este comentario a los moderadores del evento.",
16737
+ "account.reported": "Reportados",
16738
+ "account.reports": "Reportes",
16739
+ "account.save": "Guardar",
16740
+ "account.save_comment": "Guardar comentario",
16741
+ "account.save_for_review": "Guardar para revisi\xF3n",
16742
+ "account.send": "Enviar",
16743
+ "account.send_report": "Enviar reporte",
16744
+ "account.sign_in_to_comment": "Inicia sesi\xF3n para comentar",
16745
+ "account.sign_in_to_leave_a_comment": "Inicia sesi\xF3n para dejar un comentario",
16746
+ "account.spam": "Spam",
16747
+ "account.start_the_conversation_comments_appear_after_review": "Inicia la conversaci\xF3n. Los comentarios aparecen despu\xE9s de revisarse.",
16748
+ "account.unblock_name": "Desbloquear a {{name}}",
16749
+ "account.unsafe_content": "Contenido peligroso",
16750
+ "account.why_should_this_comment_be_approved": "\xBFPor qu\xE9 debe aprobarse este comentario?",
16751
+ "account.why_should_this_comment_be_hidden": "\xBFPor qu\xE9 debe ocultarse este comentario?",
16752
+ "account.you_won_t_see_their_comments_you_can_unblock_them_from_blocked_people": "No ver\xE1s sus comentarios. Puedes desbloquear a esta persona desde Personas bloqueadas.",
16753
+ "account.your_comment": "Tu comentario",
16754
+ "account.your_comment_will_be_removed_from_this_conversation": "Tu comentario se eliminar\xE1 de esta conversaci\xF3n.",
16755
+ "account.count_replies_reply": "{{count}} respuestas \xB7 Responder",
16756
+ "account.count_reply_reply": "{{count}} respuesta \xB7 Responder",
16757
+ "account.only_an_event_administrator_can_moderate_comments": "Solo un administrador del evento puede moderar comentarios.",
16758
+ "account.choose_approve_or_hide_and_provide_a_moderation_reason": "Elige aprobar u ocultar e indica un motivo de moderaci\xF3n.",
16759
+ "account.deleted_comments_cannot_be_restored": "Los comentarios eliminados no se pueden restaurar.",
16760
+ "account.you_cannot_view_that_moderation_queue": "No puedes ver esa lista de moderaci\xF3n.",
16761
+ "account.this_comment_changed_refresh_before_trying_again": "Este comentario cambi\xF3. Actualiza antes de volver a intentarlo.",
16762
+ "account.comment_not_found": "No se encontr\xF3 el comentario.",
16763
+ "account.unable_to_update_comments_please_try_again": "No se pudieron actualizar los comentarios. Int\xE9ntalo de nuevo.",
16764
+ "account.unable_to_update_comments": "No se pudieron actualizar los comentarios.",
16765
+ "account.comment_approved": "Comentario aprobado.",
16766
+ "account.comment_hidden": "Comentario oculto."
16767
+ });
16504
16768
  var en = {
16505
16769
  "auth.completionAgree": "I agree to the Terms of Service and Privacy Policy.",
16506
16770
  "auth.completionTerms": "Read Terms of Service",
@@ -18422,8 +18686,8 @@ var useCheckout2 = (opts = {}) => useCheckout({
18422
18686
 
18423
18687
  // src/storage.ts
18424
18688
  import { MMKV } from "react-native-mmkv";
18425
- var createMmkvStorage = (id = "tf-checkout") => {
18426
- const mmkv = new MMKV({ id });
18689
+ var createMmkvStorage = (id2 = "tf-checkout") => {
18690
+ const mmkv = new MMKV({ id: id2 });
18427
18691
  return {
18428
18692
  getItem: (key4) => {
18429
18693
  var _a;
@@ -18998,9 +19262,9 @@ var PaymentMethods = ({
18998
19262
  Input,
18999
19263
  {
19000
19264
  value: extraValue != null ? extraValue : "",
19001
- onChangeText: (text3) => !frozen && (onExtraChange == null ? void 0 : onExtraChange(
19265
+ onChangeText: (text4) => !frozen && (onExtraChange == null ? void 0 : onExtraChange(
19002
19266
  option.value,
19003
- option.extra === "phoneNumber" ? { phoneNumber: text3 } : { cashtag: text3 }
19267
+ option.extra === "phoneNumber" ? { phoneNumber: text4 } : { cashtag: text4 }
19004
19268
  )),
19005
19269
  placeholder: option.extra === "phoneNumber" ? "e.g. 081234567890" : "$cashtag",
19006
19270
  keyboardType: option.extra === "phoneNumber" ? "phone-pad" : "default",
@@ -21575,7 +21839,7 @@ var Accommodation = ({ eventId }) => {
21575
21839
  const checkout = useCheckoutContext();
21576
21840
  const flow = hooks_exports.useAccommodationSelection(eventId, checkout);
21577
21841
  const theme = useTheme();
21578
- const text3 = { color: theme.text, fontFamily: theme.fontFamily };
21842
+ const text4 = { color: theme.text, fontFamily: theme.fontFamily };
21579
21843
  if (flow.query.isLoading) return /* @__PURE__ */ jsx26(Loader, {});
21580
21844
  if (!flow.rooms.length && !flow.error) return null;
21581
21845
  return /* @__PURE__ */ jsxs23(Card, { children: [
@@ -21584,11 +21848,11 @@ var Accommodation = ({ eventId }) => {
21584
21848
  flow.query.isError && /* @__PURE__ */ jsx26(Button, { variant: "ghost", onPress: () => void flow.query.refetch(), children: "Try again" }),
21585
21849
  flow.rooms.map((room) => {
21586
21850
  var _a, _b, _c;
21587
- const id = String(room.room_type_id);
21851
+ const id2 = String(room.room_type_id);
21588
21852
  const stay = flow.stay(room);
21589
- const quote = flow.quotes[id];
21853
+ const quote = flow.quotes[id2];
21590
21854
  return /* @__PURE__ */ jsxs23(View22, { style: styles7.room, children: [
21591
- /* @__PURE__ */ jsxs23(Text15, { style: [text3, styles7.title], children: [
21855
+ /* @__PURE__ */ jsxs23(Text15, { style: [text4, styles7.title], children: [
21592
21856
  room.property_name,
21593
21857
  " \xB7 ",
21594
21858
  room.name
@@ -21604,7 +21868,7 @@ var Accommodation = ({ eventId }) => {
21604
21868
  /* @__PURE__ */ jsx26(Field, { label: "Guest names (optional, one per line)", children: /* @__PURE__ */ jsx26(Input, { multiline: true, accessibilityLabel: `Guest names for ${room.name}`, value: ((_a = stay.occupants) != null ? _a : []).map((person) => person.name).join("\n"), editable: !flow.busy, onChangeText: (value6) => flow.update(room, { occupants: value6.split("\n").map((name) => ({ name })) }) }) }),
21605
21869
  /* @__PURE__ */ jsx26(MutedText, { children: room.cancellation_policy ? `Free cancellation ${room.cancellation_policy.free_cancel_days} or more days before check-in. ${room.cancellation_policy.partial_refund_pct}% refund ${room.cancellation_policy.partial_refund_days} or more days before check-in; no refund after that.` : "Fully refundable under the property cancellation policy." }),
21606
21870
  !!quote && !flow.dirty && /* @__PURE__ */ jsxs23(Fragment11, { children: [
21607
- /* @__PURE__ */ jsx26(Text15, { style: text3, children: (_b = quote.total_formatted) != null ? _b : quote.total_price_formatted }),
21871
+ /* @__PURE__ */ jsx26(Text15, { style: text4, children: (_b = quote.total_formatted) != null ? _b : quote.total_price_formatted }),
21608
21872
  (_c = quote.charges) == null ? void 0 : _c.map((charge, index) => /* @__PURE__ */ jsxs23(MutedText, { children: [
21609
21873
  charge.name,
21610
21874
  ": ",
@@ -21613,8 +21877,8 @@ var Accommodation = ({ eventId }) => {
21613
21877
  ] }, index))
21614
21878
  ] })
21615
21879
  ] }),
21616
- !!flow.rejections[id] && /* @__PURE__ */ jsx26(ErrorText, { children: flow.rejections[id].message })
21617
- ] }, id);
21880
+ !!flow.rejections[id2] && /* @__PURE__ */ jsx26(ErrorText, { children: flow.rejections[id2].message })
21881
+ ] }, id2);
21618
21882
  }),
21619
21883
  flow.rooms.length > 0 && /* @__PURE__ */ jsx26(Button, { loading: checkout.isBusy, disabled: flow.busy, onPress: () => void flow.save(), children: flow.dirty ? "Save accommodation" : "Refresh accommodation" }),
21620
21884
  flow.dirty && /* @__PURE__ */ jsx26(Button, { variant: "ghost", disabled: flow.busy, onPress: flow.cancel, children: "Discard changes" })
@@ -21823,14 +22087,14 @@ var Payment = ({
21823
22087
  );
21824
22088
  }
21825
22089
  let req = { method: "auto" };
21826
- const id = selectedOption == null ? void 0 : selectedOption.id;
21827
- if (isFree || !id) req = { method: "auto" };
21828
- else if (id.kind === "xenditEWallet")
21829
- req = { method: "xenditEWallet", walletKey: id.walletKey, extra: extras[selected] };
21830
- else if (id.kind === "redirect")
21831
- req = { method: "redirect", methodType: id.methodType };
21832
- else if (id.kind === "paymentPlan") req = { method: "paymentPlan", useSavedCard: reuseSavedCard };
21833
- else req = { method: id.kind };
22090
+ const id2 = selectedOption == null ? void 0 : selectedOption.id;
22091
+ if (isFree || !id2) req = { method: "auto" };
22092
+ else if (id2.kind === "xenditEWallet")
22093
+ req = { method: "xenditEWallet", walletKey: id2.walletKey, extra: extras[selected] };
22094
+ else if (id2.kind === "redirect")
22095
+ req = { method: "redirect", methodType: id2.methodType };
22096
+ else if (id2.kind === "paymentPlan") req = { method: "paymentPlan", useSavedCard: reuseSavedCard };
22097
+ else req = { method: id2.kind };
21834
22098
  checkout.placeOrder(
21835
22099
  req,
21836
22100
  usesOwnCardField ? {
@@ -22767,12 +23031,12 @@ var RewardsView = ({
22767
23031
  const share = () => {
22768
23032
  var _a2;
22769
23033
  flow.assertCurrent();
22770
- const text3 = buildShareText(plan.primary, {
23034
+ const text4 = buildShareText(plan.primary, {
22771
23035
  shareLink: rewards.share_link,
22772
23036
  shareMessage: rewards.share_message
22773
23037
  });
22774
23038
  Share2.share({
22775
- message: text3,
23039
+ message: text4,
22776
23040
  url: (_a2 = card.imageUrl) != null ? _a2 : rewards.share_link
22777
23041
  }).catch(() => void 0);
22778
23042
  };
@@ -23698,7 +23962,7 @@ var EventDiscussionBody = ({
23698
23962
  const [imageOpen, setImageOpen] = useState44(false);
23699
23963
  const [pickerBusy, setPickerBusy] = useState44(false);
23700
23964
  const picking = useRef29(false);
23701
- const text3 = { color: theme.text, fontFamily: theme.fontFamily };
23965
+ const text4 = { color: theme.text, fontFamily: theme.fontFamily };
23702
23966
  const muted = { color: theme.muted, fontFamily: theme.fontFamily };
23703
23967
  const closeActions = (work) => {
23704
23968
  if (actions) work(actions);
@@ -23736,7 +24000,7 @@ var EventDiscussionBody = ({
23736
24000
  renderIcon: renderReplyIcon,
23737
24001
  hint: t("Swipe left to reply"),
23738
24002
  children: /* @__PURE__ */ jsxs36(View34, { style: [s3.row, own && s3.ownRow], children: [
23739
- !own && /* @__PURE__ */ jsx39(View34, { style: [s3.avatar, { backgroundColor: theme.surfaceMuted }], children: comment.author.avatarUrl ? /* @__PURE__ */ jsx39(Image4, { source: { uri: comment.author.avatarUrl }, style: s3.avatar }) : /* @__PURE__ */ jsx39(Text22, { style: text3, children: comment.author.name.slice(0, 1).toUpperCase() }) }),
24003
+ !own && /* @__PURE__ */ jsx39(View34, { style: [s3.avatar, { backgroundColor: theme.surfaceMuted }], children: comment.author.avatarUrl ? /* @__PURE__ */ jsx39(Image4, { source: { uri: comment.author.avatarUrl }, style: s3.avatar }) : /* @__PURE__ */ jsx39(Text22, { style: text4, children: comment.author.name.slice(0, 1).toUpperCase() }) }),
23740
24004
  /* @__PURE__ */ jsxs36(
23741
24005
  View34,
23742
24006
  {
@@ -23752,13 +24016,15 @@ var EventDiscussionBody = ({
23752
24016
  /* @__PURE__ */ jsxs36(View34, { style: s3.authorRow, children: [
23753
24017
  /* @__PURE__ */ jsxs36(Text22, { style: [muted, s3.author], children: [
23754
24018
  comment.author.name,
23755
- own ? " (you)" : ""
24019
+ own ? t(" (you)") : ""
23756
24020
  ] }),
23757
24021
  /* @__PURE__ */ jsx39(
23758
24022
  Pressable15,
23759
24023
  {
23760
24024
  accessibilityRole: "button",
23761
- accessibilityLabel: `Actions for comment by ${comment.author.name}`,
24025
+ accessibilityLabel: t("Actions for comment by {{name}}", {
24026
+ name: comment.author.name
24027
+ }),
23762
24028
  hitSlop: 10,
23763
24029
  onPress: () => setActions(comment),
23764
24030
  children: /* @__PURE__ */ jsx39(Text22, { style: muted, children: "\u2022\u2022\u2022" })
@@ -23789,19 +24055,19 @@ var EventDiscussionBody = ({
23789
24055
  },
23790
24056
  `${comment.id}:${comment.revision}`
23791
24057
  ),
23792
- /* @__PURE__ */ jsx39(Text22, { selectable: true, style: [text3, s3.body], children: comment.status === "deleted" ? "Comment removed" : comment.body }),
23793
- comment.status === "pending" && /* @__PURE__ */ jsx39(Text22, { accessibilityLiveRegion: "polite", style: [muted, s3.pending], children: "Awaiting review" }),
23794
- comment.status === "hidden" && /* @__PURE__ */ jsx39(Text22, { style: [muted, s3.pending], children: "Hidden" }),
24058
+ /* @__PURE__ */ jsx39(Text22, { selectable: true, style: [text4, s3.body], children: comment.status === "deleted" ? t("Comment removed") : comment.body }),
24059
+ comment.status === "pending" && /* @__PURE__ */ jsx39(Text22, { accessibilityLiveRegion: "polite", style: [muted, s3.pending], children: t("Awaiting review") }),
24060
+ comment.status === "hidden" && /* @__PURE__ */ jsx39(Text22, { style: [muted, s3.pending], children: t("Hidden") }),
23795
24061
  /* @__PURE__ */ jsxs36(View34, { style: s3.meta, children: [
23796
24062
  /* @__PURE__ */ jsxs36(Text22, { style: [muted, s3.date], children: [
23797
24063
  new Date(comment.createdAt).toLocaleString(),
23798
- comment.editedAt ? " \xB7 Edited" : ""
24064
+ comment.editedAt ? t(" \xB7 edited") : ""
23799
24065
  ] }),
23800
24066
  ["up", "down"].map((reaction) => /* @__PURE__ */ jsx39(
23801
24067
  Pressable15,
23802
24068
  {
23803
24069
  accessibilityRole: "button",
23804
- accessibilityLabel: reaction === "up" ? "Like comment" : "Dislike comment",
24070
+ accessibilityLabel: reaction === "up" ? t("Like comment") : t("Dislike comment"),
23805
24071
  accessibilityState: {
23806
24072
  selected: comment.reactions.mine === reaction,
23807
24073
  disabled: d.isSubmitting
@@ -23838,12 +24104,10 @@ var EventDiscussionBody = ({
23838
24104
  accessibilityRole: "button",
23839
24105
  disabled: !d.canReplyTo(comment),
23840
24106
  onPress: () => d.replyTo(comment),
23841
- children: /* @__PURE__ */ jsxs36(Text22, { style: [muted, s3.pending], children: [
23842
- comment.replyCount,
23843
- " ",
23844
- comment.replyCount === 1 ? "reply" : "replies",
23845
- " \xB7 Reply"
23846
- ] })
24107
+ children: /* @__PURE__ */ jsx39(Text22, { style: [muted, s3.pending], children: t(
24108
+ comment.replyCount === 1 ? "{{count}} reply \xB7 Reply" : "{{count}} replies \xB7 Reply",
24109
+ { count: comment.replyCount }
24110
+ ) })
23847
24111
  }
23848
24112
  )
23849
24113
  ]
@@ -23853,12 +24117,12 @@ var EventDiscussionBody = ({
23853
24117
  }
23854
24118
  );
23855
24119
  };
23856
- const actionButton = (label, onPress) => /* @__PURE__ */ jsx39(Pressable15, { accessibilityRole: "button", onPress, style: s3.action, children: /* @__PURE__ */ jsx39(Text22, { style: text3, children: t(label) }) }, label);
24120
+ const actionButton = (label, onPress, vars) => /* @__PURE__ */ jsx39(Pressable15, { accessibilityRole: "button", onPress, style: s3.action, children: /* @__PURE__ */ jsx39(Text22, { style: text4, children: t(label, vars) }) }, label);
23857
24121
  const sheet = (visible, close, children) => /* @__PURE__ */ jsx39(Modal5, { transparent: true, animationType: "slide", visible, onRequestClose: close, children: /* @__PURE__ */ jsxs36(View34, { style: s3.overlay, children: [
23858
24122
  /* @__PURE__ */ jsx39(
23859
24123
  Pressable15,
23860
24124
  {
23861
- accessibilityLabel: "Close menu",
24125
+ accessibilityLabel: t("Close menu"),
23862
24126
  style: StyleSheet29.absoluteFill,
23863
24127
  onPress: close
23864
24128
  }
@@ -23891,7 +24155,7 @@ var EventDiscussionBody = ({
23891
24155
  accessibilityRole: "button",
23892
24156
  onPress: () => setBlocksVisible(true),
23893
24157
  style: s3.blocked,
23894
- children: /* @__PURE__ */ jsx39(Text22, { style: muted, children: "Blocked people" })
24158
+ children: /* @__PURE__ */ jsx39(Text22, { style: muted, children: t("Blocked people") })
23895
24159
  }
23896
24160
  ),
23897
24161
  d.isLoading ? /* @__PURE__ */ jsx39(ActivityIndicator4, { style: s3.loading, color: theme.accent }) : /* @__PURE__ */ jsx39(
@@ -23912,19 +24176,19 @@ var EventDiscussionBody = ({
23912
24176
  }
23913
24177
  },
23914
24178
  ListHeaderComponent: d.hasMore ? actionButton("Earlier comments", d.loadMore) : null,
23915
- ListEmptyComponent: /* @__PURE__ */ jsx39(Text22, { style: [muted, s3.empty], children: "Be the first to leave a comment." }),
24179
+ ListEmptyComponent: /* @__PURE__ */ jsx39(Text22, { style: [muted, s3.empty], children: t("Be the first to leave a comment.") }),
23916
24180
  refreshing: d.isLoading,
23917
24181
  onRefresh: () => void d.refresh()
23918
24182
  }
23919
24183
  ),
23920
24184
  (d.error || pickerError) && /* @__PURE__ */ jsxs36(View34, { style: s3.notice, children: [
23921
24185
  /* @__PURE__ */ jsx39(Text22, { accessibilityRole: "alert", style: { color: theme.error }, children: t(d.error || pickerError) }),
23922
- /* @__PURE__ */ jsx39(Pressable15, { accessibilityRole: "button", onPress: () => void d.refresh(), children: /* @__PURE__ */ jsx39(Text22, { style: muted, children: "Try again" }) })
24186
+ /* @__PURE__ */ jsx39(Pressable15, { accessibilityRole: "button", onPress: () => void d.refresh(), children: /* @__PURE__ */ jsx39(Text22, { style: muted, children: t("Try again") }) })
23923
24187
  ] }),
23924
24188
  !!d.message && /* @__PURE__ */ jsx39(Text22, { accessibilityLiveRegion: "polite", style: [muted, s3.notice], children: t(d.message) }),
23925
24189
  (d.replyingTo || d.editing) && /* @__PURE__ */ jsxs36(View34, { style: [s3.draftContext, { borderColor: theme.border }], children: [
23926
- /* @__PURE__ */ jsx39(Text22, { style: muted, numberOfLines: 1, children: d.editing ? "Edit your comment" : t("Reply to {{name}}", { name: (_b = (_a = d.replyingTo) == null ? void 0 : _a.author.name) != null ? _b : "" }) }),
23927
- /* @__PURE__ */ jsx39(Pressable15, { accessibilityRole: "button", onPress: d.cancelDraft, children: /* @__PURE__ */ jsx39(Text22, { style: muted, children: "Cancel" }) })
24190
+ /* @__PURE__ */ jsx39(Text22, { style: muted, numberOfLines: 1, children: d.editing ? t("Edit your comment") : t("Reply to {{name}}", { name: (_b = (_a = d.replyingTo) == null ? void 0 : _a.author.name) != null ? _b : "" }) }),
24191
+ /* @__PURE__ */ jsx39(Pressable15, { accessibilityRole: "button", onPress: d.cancelDraft, children: /* @__PURE__ */ jsx39(Text22, { style: muted, children: t("Cancel") }) })
23928
24192
  ] }),
23929
24193
  /* @__PURE__ */ jsx39(
23930
24194
  CommentImageDrafts,
@@ -23957,26 +24221,26 @@ var EventDiscussionBody = ({
23957
24221
  /* @__PURE__ */ jsx39(
23958
24222
  TextInput2,
23959
24223
  {
23960
- accessibilityLabel: "Your comment",
23961
- placeholder: "Enter your comment\u2026",
24224
+ accessibilityLabel: t("Your comment"),
24225
+ placeholder: t("Enter your comment\u2026"),
23962
24226
  placeholderTextColor: theme.muted,
23963
24227
  multiline: true,
23964
24228
  maxLength: 4e3,
23965
24229
  value: d.body,
23966
24230
  onChangeText: d.setBody,
23967
24231
  editable: !d.isSubmitting,
23968
- style: [text3, s3.input]
24232
+ style: [text4, s3.input]
23969
24233
  }
23970
24234
  ),
23971
24235
  /* @__PURE__ */ jsx39(
23972
24236
  Pressable15,
23973
24237
  {
23974
24238
  accessibilityRole: "button",
23975
- accessibilityLabel: d.editing ? "Save comment" : "Post comment",
24239
+ accessibilityLabel: d.editing ? t("Save comment") : t("Post comment"),
23976
24240
  disabled: d.isSubmitting || pickerBusy || !d.body.trim() && !d.imagesBase64.length && !((_c = d.editing) == null ? void 0 : _c.images.length),
23977
24241
  onPress: () => void send(),
23978
24242
  style: s3.send,
23979
- children: d.isSubmitting ? /* @__PURE__ */ jsx39(ActivityIndicator4, { color: theme.accent }) : /* @__PURE__ */ jsx39(Text22, { style: { color: theme.accent }, children: d.editing ? "Save" : "Send" })
24243
+ children: d.isSubmitting ? /* @__PURE__ */ jsx39(ActivityIndicator4, { color: theme.accent }) : /* @__PURE__ */ jsx39(Text22, { style: { color: theme.accent }, children: d.editing ? t("Save") : t("Send") })
23980
24244
  }
23981
24245
  )
23982
24246
  ]
@@ -23990,7 +24254,7 @@ var EventDiscussionBody = ({
23990
24254
  s3.composer,
23991
24255
  { borderColor: theme.border, backgroundColor: theme.surface }
23992
24256
  ],
23993
- children: /* @__PURE__ */ jsx39(Text22, { style: text3, children: "Sign in to leave a comment" })
24257
+ children: /* @__PURE__ */ jsx39(Text22, { style: text4, children: t("Sign in to leave a comment") })
23994
24258
  }
23995
24259
  ),
23996
24260
  /* @__PURE__ */ jsx39(
@@ -23999,10 +24263,10 @@ var EventDiscussionBody = ({
23999
24263
  accessibilityRole: "link",
24000
24264
  style: s3.support,
24001
24265
  onPress: () => {
24002
- if (/^https:\/\//.test(d.supportUrl))
24266
+ if (/^(https:\/\/|mailto:)/i.test(d.supportUrl))
24003
24267
  void Linking6.openURL(d.supportUrl).catch(() => void 0);
24004
24268
  },
24005
- children: /* @__PURE__ */ jsx39(Text22, { style: [muted, s3.date], children: "Need help? Contact support" })
24269
+ children: /* @__PURE__ */ jsx39(Text22, { style: [muted, s3.date], children: t("Need help? Contact support") })
24006
24270
  }
24007
24271
  ),
24008
24272
  sheet(
@@ -24015,12 +24279,12 @@ var EventDiscussionBody = ({
24015
24279
  "Delete",
24016
24280
  () => closeActions(
24017
24281
  (comment) => Alert2.alert(
24018
- "Delete comment?",
24019
- "Your comment will be removed from this conversation.",
24282
+ t("Delete your comment?"),
24283
+ t("Your comment will be removed from this conversation."),
24020
24284
  [
24021
- { text: "Cancel", style: "cancel" },
24285
+ { text: t("Cancel"), style: "cancel" },
24022
24286
  {
24023
- text: "Delete",
24287
+ text: t("Delete"),
24024
24288
  style: "destructive",
24025
24289
  onPress: () => void d.remove(comment)
24026
24290
  }
@@ -24033,12 +24297,14 @@ var EventDiscussionBody = ({
24033
24297
  "Block this person",
24034
24298
  () => closeActions(
24035
24299
  (comment) => Alert2.alert(
24036
- `Block ${comment.author.name}?`,
24037
- "You won\u2019t see their comments. You can unblock them from Blocked people.",
24300
+ t("Block {{name}}?", { name: comment.author.name }),
24301
+ t(
24302
+ "You won\u2019t see their comments. You can unblock them from Blocked people."
24303
+ ),
24038
24304
  [
24039
- { text: "Cancel", style: "cancel" },
24305
+ { text: t("Cancel"), style: "cancel" },
24040
24306
  {
24041
- text: "Block",
24307
+ text: t("Block"),
24042
24308
  onPress: () => void d.block(comment.author.id, true)
24043
24309
  }
24044
24310
  ]
@@ -24061,7 +24327,7 @@ var EventDiscussionBody = ({
24061
24327
  Boolean(reporting),
24062
24328
  () => setReporting(null),
24063
24329
  /* @__PURE__ */ jsxs36(Fragment19, { children: [
24064
- /* @__PURE__ */ jsx39(Text22, { style: text3, children: "Report comment" }),
24330
+ /* @__PURE__ */ jsx39(Text22, { style: text4, children: t("Report comment") }),
24065
24331
  [
24066
24332
  ["spam", "Spam"],
24067
24333
  ["abuse", "Harassment or abuse"],
@@ -24079,16 +24345,16 @@ var EventDiscussionBody = ({
24079
24345
  Boolean(moderating),
24080
24346
  () => setModerating(null),
24081
24347
  /* @__PURE__ */ jsxs36(Fragment19, { children: [
24082
- /* @__PURE__ */ jsx39(Text22, { style: text3, children: (moderating == null ? void 0 : moderating.status) === "published" ? "Approve comment" : "Hide comment" }),
24348
+ /* @__PURE__ */ jsx39(Text22, { style: text4, children: (moderating == null ? void 0 : moderating.status) === "published" ? t("Approve comment") : t("Hide comment") }),
24083
24349
  /* @__PURE__ */ jsx39(
24084
24350
  TextInput2,
24085
24351
  {
24086
- accessibilityLabel: "Moderation reason",
24087
- placeholder: "Reason",
24352
+ accessibilityLabel: t("Moderation reason"),
24353
+ placeholder: t("Reason"),
24088
24354
  placeholderTextColor: theme.muted,
24089
24355
  value: reason,
24090
24356
  onChangeText: setReason,
24091
- style: [text3, s3.reason]
24357
+ style: [text4, s3.reason]
24092
24358
  }
24093
24359
  ),
24094
24360
  actionButton("Confirm", () => {
@@ -24103,13 +24369,15 @@ var EventDiscussionBody = ({
24103
24369
  blocksVisible,
24104
24370
  () => setBlocksVisible(false),
24105
24371
  /* @__PURE__ */ jsxs36(Fragment19, { children: [
24106
- /* @__PURE__ */ jsx39(Text22, { style: text3, children: "Blocked people" }),
24372
+ /* @__PURE__ */ jsx39(Text22, { style: text4, children: t("Blocked people") }),
24107
24373
  /* @__PURE__ */ jsx39(
24108
24374
  FlatList2,
24109
24375
  {
24110
24376
  data: d.blockedAuthors,
24111
24377
  keyExtractor: (person) => person.id,
24112
- renderItem: ({ item: person }) => actionButton(`Unblock ${person.name}`, () => void d.block(person.id, false))
24378
+ renderItem: ({ item: person }) => actionButton("Unblock {{name}}", () => void d.block(person.id, false), {
24379
+ name: person.name
24380
+ })
24113
24381
  }
24114
24382
  )
24115
24383
  ] })
@@ -24750,7 +25018,7 @@ var StreamingView = ({
24750
25018
  });
24751
25019
  const local = stored.scope === session.sessionScope ? stored : { scope: session.sessionScope, busy: false, error: "" };
24752
25020
  const busy = flow.busy || local.busy;
24753
- const text3 = { color: theme.text, fontFamily: theme.fontFamily };
25021
+ const text4 = { color: theme.text, fontFamily: theme.fontFamily };
24754
25022
  const muted = { color: theme.muted, fontFamily: theme.fontFamily };
24755
25023
  const connect = async (provider) => {
24756
25024
  try {
@@ -24826,13 +25094,13 @@ var StreamingView = ({
24826
25094
  disabled,
24827
25095
  onPress,
24828
25096
  style: [s4.button, { borderColor: theme.accent }, disabled && s4.disabled],
24829
- children: /* @__PURE__ */ jsx45(Text24, { style: [text3, { color: theme.accent, fontSize: theme.fontSize }], children: t(label) })
25097
+ children: /* @__PURE__ */ jsx45(Text24, { style: [text4, { color: theme.accent, fontSize: theme.fontSize }], children: t(label) })
24830
25098
  }
24831
25099
  );
24832
25100
  const music = (_a = flow.query.data) == null ? void 0 : _a.music;
24833
25101
  return /* @__PURE__ */ jsxs42(View40, { style: [s4.container, style], children: [
24834
- showHeader && /* @__PURE__ */ jsx45(Text24, { style: [s4.title, text3], children: t("Streaming") }),
24835
- /* @__PURE__ */ jsx45(Text24, { style: [s4.intro, text3], children: t("Choose which artist and genre names to use for event suggestions.") }),
25102
+ showHeader && /* @__PURE__ */ jsx45(Text24, { style: [s4.title, text4], children: t("Streaming") }),
25103
+ /* @__PURE__ */ jsx45(Text24, { style: [s4.intro, text4], children: t("Choose which artist and genre names to use for event suggestions.") }),
24836
25104
  flow.query.isPending && /* @__PURE__ */ jsx45(
24837
25105
  ActivityIndicator5,
24838
25106
  {
@@ -24852,7 +25120,7 @@ var StreamingView = ({
24852
25120
  /* @__PURE__ */ jsxs42(View40, { style: s4.identity, children: [
24853
25121
  renderProviderIcon == null ? void 0 : renderProviderIcon(key4),
24854
25122
  /* @__PURE__ */ jsxs42(View40, { style: s4.names, children: [
24855
- /* @__PURE__ */ jsx45(Text24, { style: [s4.name, text3], children: name }),
25123
+ /* @__PURE__ */ jsx45(Text24, { style: [s4.name, text4], children: name }),
24856
25124
  /* @__PURE__ */ jsx45(Text24, { style: [s4.status, muted], children: connection.connected ? t("Connected") : connection.available ? t("Not connected") : t(connection.reason || "Not available yet") })
24857
25125
  ] })
24858
25126
  ] }),
@@ -24942,7 +25210,7 @@ var AccountDeletionView = ({
24942
25210
  [inherited, override]
24943
25211
  );
24944
25212
  const assertOwner = hooks_exports.useSessionAction();
24945
- const text3 = { color: theme.text, fontFamily: theme.fontFamily };
25213
+ const text4 = { color: theme.text, fontFamily: theme.fontFamily };
24946
25214
  const muted = { color: theme.muted, fontFamily: theme.fontFamily };
24947
25215
  const action = (label, execute, danger = false, disabled = flow.busy) => /* @__PURE__ */ jsx46(
24948
25216
  Pressable19,
@@ -24962,7 +25230,7 @@ var AccountDeletionView = ({
24962
25230
  { borderColor: danger ? theme.error : theme.accent },
24963
25231
  disabled && s5.disabled
24964
25232
  ],
24965
- children: /* @__PURE__ */ jsx46(Text25, { style: [text3, { color: danger ? theme.error : theme.accent }], children: t(label) })
25233
+ children: /* @__PURE__ */ jsx46(Text25, { style: [text4, { color: danger ? theme.error : theme.accent }], children: t(label) })
24966
25234
  }
24967
25235
  );
24968
25236
  const openTeam = async (url2) => {
@@ -24982,8 +25250,8 @@ var AccountDeletionView = ({
24982
25250
  };
24983
25251
  if (flow.deleted)
24984
25252
  return /* @__PURE__ */ jsxs43(View41, { style: [s5.container, style], children: [
24985
- /* @__PURE__ */ jsx46(Text25, { style: [s5.title, text3], children: t("Account deleted") }),
24986
- /* @__PURE__ */ jsx46(Text25, { accessibilityLiveRegion: "polite", style: [s5.body, text3], children: t("Your Ticket Fairy account has been closed. You are signed out.") }),
25253
+ /* @__PURE__ */ jsx46(Text25, { style: [s5.title, text4], children: t("Account deleted") }),
25254
+ /* @__PURE__ */ jsx46(Text25, { accessibilityLiveRegion: "polite", style: [s5.body, text4], children: t("Your Ticket Fairy account has been closed. You are signed out.") }),
24987
25255
  /* @__PURE__ */ jsx46(Text25, { style: [s5.body, muted], children: t("Financial and transaction records are retained where required.") }),
24988
25256
  onDone && action("Continue browsing", onDone, false, false)
24989
25257
  ] });
@@ -25001,7 +25269,7 @@ var AccountDeletionView = ({
25001
25269
  /* @__PURE__ */ jsx46(Text25, { accessibilityRole: "alert", style: [s5.body, { color: theme.error }], children: t(flow.error) }),
25002
25270
  action("Try again", () => void flow.retry())
25003
25271
  ] }),
25004
- /* @__PURE__ */ jsx46(Text25, { style: [s5.body, text3], children: t("Sign in to review and delete your Ticket Fairy account.") }),
25272
+ /* @__PURE__ */ jsx46(Text25, { style: [s5.body, text4], children: t("Sign in to review and delete your Ticket Fairy account.") }),
25005
25273
  onSignIn && action("Sign in", onSignIn, false, false)
25006
25274
  ] });
25007
25275
  if (flow.query.isPending)
@@ -25020,16 +25288,16 @@ var AccountDeletionView = ({
25020
25288
  const status = flow.status;
25021
25289
  const password = status.verification === "password";
25022
25290
  return /* @__PURE__ */ jsxs43(View41, { style: [s5.container, style], children: [
25023
- showHeader && /* @__PURE__ */ jsx46(Text25, { style: [s5.title, text3], children: t("Delete account") }),
25291
+ showHeader && /* @__PURE__ */ jsx46(Text25, { style: [s5.title, text4], children: t("Delete account") }),
25024
25292
  showExplanation && /* @__PURE__ */ jsxs43(Fragment24, { children: [
25025
- /* @__PURE__ */ jsx46(Text25, { style: [s5.body, text3], children: t(
25293
+ /* @__PURE__ */ jsx46(Text25, { style: [s5.body, text4], children: t(
25026
25294
  "This closes your Ticket Fairy account across the app, website and organiser dashboard."
25027
25295
  ) }),
25028
- /* @__PURE__ */ jsx46(Text25, { style: [s5.heading, text3], children: t("What is removed") }),
25296
+ /* @__PURE__ */ jsx46(Text25, { style: [s5.heading, text4], children: t("What is removed") }),
25029
25297
  /* @__PURE__ */ jsx46(Text25, { style: [s5.body, muted], children: t(
25030
25298
  "Your personal profile, sign-in access, friends, saved preferences and the content you posted are removed or anonymised."
25031
25299
  ) }),
25032
- /* @__PURE__ */ jsx46(Text25, { style: [s5.heading, text3], children: t("What is kept") }),
25300
+ /* @__PURE__ */ jsx46(Text25, { style: [s5.heading, text4], children: t("What is kept") }),
25033
25301
  /* @__PURE__ */ jsx46(Text25, { style: [s5.body, muted], children: t(
25034
25302
  "Financial and transaction records are retained where required. Deleting your account does not refund or cancel orders, and does not delete other ticket holders\u2019 details."
25035
25303
  ) })
@@ -25038,11 +25306,11 @@ var AccountDeletionView = ({
25038
25306
  "If Ticket Fairy still appears in your Apple Account after deletion, remove its access there too."
25039
25307
  ) }),
25040
25308
  status.blockers.length > 0 && /* @__PURE__ */ jsxs43(View41, { style: [s5.panel, { borderColor: theme.border }], children: [
25041
- /* @__PURE__ */ jsx46(Text25, { style: [s5.heading, text3], children: t("Before you delete your account") }),
25309
+ /* @__PURE__ */ jsx46(Text25, { style: [s5.heading, text4], children: t("Before you delete your account") }),
25042
25310
  status.blockers.map((blocker) => {
25043
25311
  var _a;
25044
25312
  return /* @__PURE__ */ jsxs43(View41, { style: s5.container, children: [
25045
- /* @__PURE__ */ jsx46(Text25, { style: [s5.body, text3], children: t(blocker.message) }),
25313
+ /* @__PURE__ */ jsx46(Text25, { style: [s5.body, text4], children: t(blocker.message) }),
25046
25314
  (_a = blocker.brands) == null ? void 0 : _a.map(
25047
25315
  (brand2) => brand2.teamUrl ? /* @__PURE__ */ jsx46(
25048
25316
  Pressable19,
@@ -25069,8 +25337,8 @@ var AccountDeletionView = ({
25069
25337
  accessibilityLabel: t("Confirm account deletion"),
25070
25338
  style: [s5.panel, { borderColor: theme.border }],
25071
25339
  children: [
25072
- /* @__PURE__ */ jsx46(Text25, { style: [s5.heading, text3], children: t("Delete your account permanently?") }),
25073
- /* @__PURE__ */ jsx46(Text25, { style: [s5.body, text3], children: t("This cannot be undone. Confirm that you want to close this account.") }),
25340
+ /* @__PURE__ */ jsx46(Text25, { style: [s5.heading, text4], children: t("Delete your account permanently?") }),
25341
+ /* @__PURE__ */ jsx46(Text25, { style: [s5.body, text4], children: t("This cannot be undone. Confirm that you want to close this account.") }),
25074
25342
  !password && /* @__PURE__ */ jsxs43(Fragment24, { children: [
25075
25343
  /* @__PURE__ */ jsx46(Text25, { style: [s5.body, muted], children: t("We will email a deletion code to {{email}}.", {
25076
25344
  email: status.email
@@ -25087,7 +25355,7 @@ var AccountDeletionView = ({
25087
25355
  }) })
25088
25356
  ] }),
25089
25357
  flow.retryAfter > 0 && /* @__PURE__ */ jsx46(Text25, { accessibilityLiveRegion: "polite", style: [s5.body, muted], children: t("Try again in {{seconds}} seconds.", { seconds: flow.retryAfter }) }),
25090
- /* @__PURE__ */ jsx46(Text25, { style: [s5.heading, text3], children: t(password ? "Current password" : "Deletion code") }),
25358
+ /* @__PURE__ */ jsx46(Text25, { style: [s5.heading, text4], children: t(password ? "Current password" : "Deletion code") }),
25091
25359
  /* @__PURE__ */ jsx46(
25092
25360
  TextInput3,
25093
25361
  {
@@ -25104,7 +25372,7 @@ var AccountDeletionView = ({
25104
25372
  editable: !flow.busy,
25105
25373
  style: [
25106
25374
  s5.input,
25107
- text3,
25375
+ text4,
25108
25376
  { borderColor: theme.border, backgroundColor: theme.background }
25109
25377
  ]
25110
25378
  }
@@ -25192,8 +25460,8 @@ var ForgotPasswordForm = ({
25192
25460
  Input,
25193
25461
  {
25194
25462
  value: email,
25195
- onChangeText: (text3) => {
25196
- setEmail(text3);
25463
+ onChangeText: (text4) => {
25464
+ setEmail(text4);
25197
25465
  onFieldChange == null ? void 0 : onFieldChange();
25198
25466
  },
25199
25467
  placeholder: "Email",
@@ -25285,8 +25553,8 @@ var LoginForm = ({
25285
25553
  Input,
25286
25554
  {
25287
25555
  value: email,
25288
- onChangeText: (text3) => {
25289
- setEmail(text3);
25556
+ onChangeText: (text4) => {
25557
+ setEmail(text4);
25290
25558
  onFieldChange == null ? void 0 : onFieldChange("email");
25291
25559
  },
25292
25560
  placeholder: "Email",
@@ -25299,8 +25567,8 @@ var LoginForm = ({
25299
25567
  PasswordInput,
25300
25568
  {
25301
25569
  value: password,
25302
- onChangeText: (text3) => {
25303
- setPassword(text3);
25570
+ onChangeText: (text4) => {
25571
+ setPassword(text4);
25304
25572
  onFieldChange == null ? void 0 : onFieldChange("password");
25305
25573
  },
25306
25574
  placeholder: "Password",
@@ -25416,7 +25684,7 @@ var RegisterForm = ({
25416
25684
  Input,
25417
25685
  {
25418
25686
  value: values2.firstName,
25419
- onChangeText: (text3) => setField("firstName", text3),
25687
+ onChangeText: (text4) => setField("firstName", text4),
25420
25688
  placeholder: "First Name",
25421
25689
  autoCapitalize: "words",
25422
25690
  invalid: Boolean(errors.firstName)
@@ -25426,7 +25694,7 @@ var RegisterForm = ({
25426
25694
  Input,
25427
25695
  {
25428
25696
  value: values2.lastName,
25429
- onChangeText: (text3) => setField("lastName", text3),
25697
+ onChangeText: (text4) => setField("lastName", text4),
25430
25698
  placeholder: "Last Name",
25431
25699
  autoCapitalize: "words",
25432
25700
  invalid: Boolean(errors.lastName)
@@ -25438,7 +25706,7 @@ var RegisterForm = ({
25438
25706
  {
25439
25707
  value: values2.email,
25440
25708
  editable: !requireTerms,
25441
- onChangeText: (text3) => setField("email", text3),
25709
+ onChangeText: (text4) => setField("email", text4),
25442
25710
  placeholder: "Email",
25443
25711
  keyboardType: "email-address",
25444
25712
  autoCapitalize: "none",
@@ -25450,7 +25718,7 @@ var RegisterForm = ({
25450
25718
  Input,
25451
25719
  {
25452
25720
  value: (_a = values2.streetAddress) != null ? _a : "",
25453
- onChangeText: (text3) => setField("streetAddress", text3),
25721
+ onChangeText: (text4) => setField("streetAddress", text4),
25454
25722
  placeholder: "Street Address",
25455
25723
  invalid: Boolean(errors.streetAddress)
25456
25724
  }
@@ -25459,7 +25727,7 @@ var RegisterForm = ({
25459
25727
  Input,
25460
25728
  {
25461
25729
  value: (_b = values2.zip) != null ? _b : "",
25462
- onChangeText: (text3) => setField("zip", text3),
25730
+ onChangeText: (text4) => setField("zip", text4),
25463
25731
  placeholder: "Zip / Postal Code",
25464
25732
  invalid: Boolean(errors.zip)
25465
25733
  }
@@ -25501,7 +25769,7 @@ var RegisterForm = ({
25501
25769
  Input,
25502
25770
  {
25503
25771
  value: (_e = values2.city) != null ? _e : "",
25504
- onChangeText: (text3) => setField("city", text3),
25772
+ onChangeText: (text4) => setField("city", text4),
25505
25773
  placeholder: "City",
25506
25774
  invalid: Boolean(errors.city)
25507
25775
  }
@@ -25511,7 +25779,7 @@ var RegisterForm = ({
25511
25779
  Input,
25512
25780
  {
25513
25781
  value: (_f = values2.phone) != null ? _f : "",
25514
- onChangeText: (text3) => setField("phone", text3),
25782
+ onChangeText: (text4) => setField("phone", text4),
25515
25783
  placeholder: "Phone",
25516
25784
  keyboardType: "phone-pad",
25517
25785
  autoCapitalize: "none"
@@ -25521,7 +25789,7 @@ var RegisterForm = ({
25521
25789
  PasswordInput,
25522
25790
  {
25523
25791
  value: values2.password,
25524
- onChangeText: (text3) => setField("password", text3),
25792
+ onChangeText: (text4) => setField("password", text4),
25525
25793
  placeholder: "Password",
25526
25794
  invalid: Boolean(errors.password)
25527
25795
  }
@@ -25530,7 +25798,7 @@ var RegisterForm = ({
25530
25798
  PasswordInput,
25531
25799
  {
25532
25800
  value: values2.passwordConfirmation,
25533
- onChangeText: (text3) => setField("passwordConfirmation", text3),
25801
+ onChangeText: (text4) => setField("passwordConfirmation", text4),
25534
25802
  placeholder: "Confirm Password",
25535
25803
  invalid: Boolean(errors.passwordConfirmation)
25536
25804
  }
@@ -26484,6 +26752,8 @@ export {
26484
26752
  eventCommentAttachmentsError,
26485
26753
  eventCommentImageDataError,
26486
26754
  eventCommentImageDataUri,
26755
+ featuredEventsFromResponse,
26756
+ featuredQueryParams,
26487
26757
  fieldAppliesToTicketType,
26488
26758
  formatDateDigits,
26489
26759
  formatPlanMoney,