@nok-integration/storefront-react 0.19.48 → 0.19.50

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.
@@ -4647,7 +4647,7 @@ function requireOrderTracking() {
4647
4647
  Object.defineProperty(exports, "__esModule", {
4648
4648
  value: true
4649
4649
  });
4650
- exports.ReturnDetail = exports.ReturnItem = exports.ReturnProgressEntry = exports.CreateReturnRequest = exports.ReturnRequestItem = exports.FanReturnReason = exports.RequestCancellationRequest = exports.FanCancelReason = exports.OrderDetail = exports.ReturnSummary = exports.OrderList = exports.OrderSummaryItem = exports.ReturnOutcome = exports.ReturnStatus = exports.OrderItem = exports.OrderTracking = exports.OrderProgressEntry = exports.OrderProgressStep = void 0;
4650
+ exports.ReturnDetail = exports.ReturnItem = exports.ReturnProgressEntry = exports.CreateReturnRequest = exports.ReturnRequestItem = exports.FanReturnReason = exports.RequestCancellationRequest = exports.FanCancelReason = exports.OrderDetail = exports.ReturnSummary = exports.OrderList = exports.ReturnSummaryItem = exports.OrderSummaryItem = exports.ReturnOutcome = exports.ReturnStatus = exports.OrderItem = exports.OrderTracking = exports.OrderProgressEntry = exports.OrderProgressStep = void 0;
4651
4651
  const zod_1 = requireZod();
4652
4652
  const money_1 = requireMoney();
4653
4653
  const ids_1 = requireIds();
@@ -4693,8 +4693,20 @@ function requireOrderTracking() {
4693
4693
  images: zod_1.z.array(common_1.Url).max(3).optional(),
4694
4694
  return_status: exports.ReturnStatus.optional()
4695
4695
  });
4696
+ exports.ReturnSummaryItem = zod_1.z.object({
4697
+ return_ref: zod_1.z.string().min(1),
4698
+ order_ref: ids_1.OrderRef,
4699
+ status: exports.ReturnStatus,
4700
+ reported_at: common_1.Timestamp,
4701
+ currency: money_1.Currency,
4702
+ headline: zod_1.z.string().min(1),
4703
+ value: money_1.Money,
4704
+ item_count: zod_1.z.number().int().nonnegative(),
4705
+ images: zod_1.z.array(common_1.Url).max(3).optional()
4706
+ });
4696
4707
  exports.OrderList = zod_1.z.object({
4697
- orders: zod_1.z.array(exports.OrderSummaryItem)
4708
+ orders: zod_1.z.array(exports.OrderSummaryItem),
4709
+ returns: zod_1.z.array(exports.ReturnSummaryItem).optional()
4698
4710
  });
4699
4711
  exports.ReturnSummary = zod_1.z.object({
4700
4712
  return_ref: zod_1.z.string().min(1),
@@ -5830,7 +5842,13 @@ const ES = {
5830
5842
  Delivered: "Entregado",
5831
5843
  Cancelled: "Cancelado",
5832
5844
  Refunded: "Reembolsado",
5833
- "In progress": "En curso"
5845
+ "In progress": "En curso",
5846
+ Return: "Devolución",
5847
+ Initiated: "Iniciada",
5848
+ Received: "Recibida",
5849
+ Completed: "Completada",
5850
+ item: "artículo",
5851
+ items: "artículos"
5834
5852
  };
5835
5853
  const CATALOGUES = {
5836
5854
  es: ES
@@ -7040,7 +7058,7 @@ const line$1 = "_line_1pjby_6";
7040
7058
  const thumb$1 = "_thumb_1pjby_12";
7041
7059
  const img$1 = "_img_1pjby_22";
7042
7060
  const placeholder$7 = "_placeholder_1pjby_29";
7043
- const meta$2 = "_meta_1pjby_34";
7061
+ const meta$3 = "_meta_1pjby_34";
7044
7062
  const name$2 = "_name_1pjby_43";
7045
7063
  const attrs$1 = "_attrs_1pjby_55";
7046
7064
  const price$3 = "_price_1pjby_63";
@@ -7051,7 +7069,7 @@ const styles$C = {
7051
7069
  thumb: thumb$1,
7052
7070
  img: img$1,
7053
7071
  placeholder: placeholder$7,
7054
- meta: meta$2,
7072
+ meta: meta$3,
7055
7073
  name: name$2,
7056
7074
  attrs: attrs$1,
7057
7075
  price: price$3,
@@ -7423,7 +7441,7 @@ const item$1 = "_item_1l21t_38";
7423
7441
  const thumb = "_thumb_1l21t_53";
7424
7442
  const img = "_img_1l21t_63";
7425
7443
  const placeholder$6 = "_placeholder_1l21t_70";
7426
- const meta$1 = "_meta_1l21t_75";
7444
+ const meta$2 = "_meta_1l21t_75";
7427
7445
  const name$1 = "_name_1l21t_83";
7428
7446
  const attrs = "_attrs_1l21t_103";
7429
7447
  const price$2 = "_price_1l21t_118";
@@ -7439,7 +7457,7 @@ const styles$z = {
7439
7457
  thumb,
7440
7458
  img,
7441
7459
  placeholder: placeholder$6,
7442
- meta: meta$1,
7460
+ meta: meta$2,
7443
7461
  name: name$1,
7444
7462
  attrs,
7445
7463
  price: price$2,
@@ -8131,14 +8149,8 @@ const TONE = {
8131
8149
  delivered: "delivered",
8132
8150
  cancelled: "critical"
8133
8151
  };
8134
- function OrderStatusBadge({ status, returnStatus }) {
8152
+ function OrderStatusBadge({ status }) {
8135
8153
  const t = useT();
8136
- if (returnStatus) {
8137
- return jsx("span", {
8138
- className: [styles$w.badge, styles$w.critical].join(" "),
8139
- children: t("Return started")
8140
- });
8141
- }
8142
8154
  const label2 = LABEL[status] ?? status.replace(/_/g, " ");
8143
8155
  const tone = TONE[status] ?? "progress";
8144
8156
  return jsx("span", {
@@ -8146,22 +8158,42 @@ function OrderStatusBadge({ status, returnStatus }) {
8146
8158
  children: t(label2)
8147
8159
  });
8148
8160
  }
8149
- const page$1 = "_page_1bhfq_2";
8150
- const empty = "_empty_1bhfq_22";
8151
- const cta$1 = "_cta_1bhfq_32";
8152
- const card$1 = "_card_1bhfq_55";
8153
- const tappable = "_tappable_1bhfq_70";
8154
- const head$1 = "_head_1bhfq_79";
8155
- const heading = "_heading_1bhfq_87";
8156
- const title$g = "_title_1bhfq_96";
8157
- const date = "_date_1bhfq_115";
8158
- const bottom$1 = "_bottom_1bhfq_120";
8159
- const strip = "_strip_1bhfq_128";
8160
- const tile$2 = "_tile_1bhfq_133";
8161
- const image$8 = "_image_1bhfq_143";
8162
- const placeholder$5 = "_placeholder_1bhfq_150";
8163
- const more = "_more_1bhfq_157";
8164
- const chevron$2 = "_chevron_1bhfq_170";
8161
+ const RETURN_LABEL = {
8162
+ reported: "Initiated",
8163
+ package_received: "Received",
8164
+ completed: "Completed"
8165
+ };
8166
+ const RETURN_TONE = {
8167
+ reported: "progress",
8168
+ package_received: "progress",
8169
+ completed: "delivered"
8170
+ };
8171
+ function ReturnStatusBadge({ status }) {
8172
+ const t = useT();
8173
+ const label2 = RETURN_LABEL[status] ?? status.replace(/_/g, " ");
8174
+ const tone = RETURN_TONE[status] ?? "progress";
8175
+ return jsx("span", {
8176
+ className: [styles$w.badge, styles$w[tone]].join(" "),
8177
+ children: t(label2)
8178
+ });
8179
+ }
8180
+ const page$1 = "_page_qj11j_2";
8181
+ const empty = "_empty_qj11j_22";
8182
+ const cta$1 = "_cta_qj11j_32";
8183
+ const card$1 = "_card_qj11j_55";
8184
+ const tappable = "_tappable_qj11j_70";
8185
+ const head$1 = "_head_qj11j_79";
8186
+ const heading = "_heading_qj11j_87";
8187
+ const title$g = "_title_qj11j_96";
8188
+ const date = "_date_qj11j_115";
8189
+ const bottom$1 = "_bottom_qj11j_120";
8190
+ const strip = "_strip_qj11j_128";
8191
+ const meta$1 = "_meta_qj11j_141";
8192
+ const tile$2 = "_tile_qj11j_150";
8193
+ const image$8 = "_image_qj11j_160";
8194
+ const placeholder$5 = "_placeholder_qj11j_167";
8195
+ const more = "_more_qj11j_174";
8196
+ const chevron$2 = "_chevron_qj11j_187";
8165
8197
  const styles$v = {
8166
8198
  page: page$1,
8167
8199
  empty,
@@ -8174,6 +8206,7 @@ const styles$v = {
8174
8206
  date,
8175
8207
  bottom: bottom$1,
8176
8208
  strip,
8209
+ meta: meta$1,
8177
8210
  tile: tile$2,
8178
8211
  image: image$8,
8179
8212
  placeholder: placeholder$5,
@@ -8206,18 +8239,20 @@ function OrderListView(props) {
8206
8239
  })
8207
8240
  });
8208
8241
  }
8209
- function OrderListContent({ onOpenOrder, onStartShopping, locale: localeProp }) {
8242
+ function OrderListContent({ onOpenOrder, onOpenReturn, onStartShopping, locale: localeProp }) {
8210
8243
  const t = useT();
8211
8244
  const { api } = useShop();
8212
8245
  const locale = useLocale(localeProp);
8213
8246
  const [orders2, setOrders] = useState([]);
8247
+ const [returns, setReturns] = useState([]);
8214
8248
  const [state, setState] = useState("loading");
8215
8249
  const [errorCode, setErrorCode] = useState(void 0);
8216
8250
  const load = useCallback(async () => {
8217
8251
  setState("loading");
8218
8252
  try {
8219
- const { orders: rows } = await api.orders.list();
8220
- setOrders(rows);
8253
+ const { orders: rows2, returns: returned } = await api.orders.list();
8254
+ setOrders(rows2);
8255
+ setReturns(returned ?? []);
8221
8256
  setState("ready");
8222
8257
  } catch (err) {
8223
8258
  setErrorCode(codeOf(err));
@@ -8248,7 +8283,7 @@ function OrderListContent({ onOpenOrder, onStartShopping, locale: localeProp })
8248
8283
  onRetry: () => void load()
8249
8284
  });
8250
8285
  }
8251
- if (orders2.length === 0) {
8286
+ if (orders2.length === 0 && returns.length === 0) {
8252
8287
  return jsx("div", {
8253
8288
  className: styles$v.empty,
8254
8289
  children: jsx(EmptyState, {
@@ -8265,17 +8300,115 @@ function OrderListContent({ onOpenOrder, onStartShopping, locale: localeProp })
8265
8300
  })
8266
8301
  });
8267
8302
  }
8303
+ const rows = [...orders2.map((order) => ({
8304
+ at: order.placed_at,
8305
+ key: `o:${order.order_ref}`,
8306
+ order
8307
+ })), ...returns.map((ret) => ({
8308
+ at: ret.reported_at,
8309
+ key: `r:${ret.return_ref}`,
8310
+ ret
8311
+ }))].sort((a, b) => Date.parse(b.at) - Date.parse(a.at));
8268
8312
  return jsx("ul", {
8269
8313
  className: styles$v.page,
8270
- children: orders2.map((order) => jsx("li", {
8271
- children: jsx(OrderCard, {
8272
- order,
8314
+ children: rows.map((row2) => jsx("li", {
8315
+ children: "order" in row2 ? jsx(OrderCard, {
8316
+ order: row2.order,
8273
8317
  locale,
8274
8318
  ...onOpenOrder ? {
8275
- onOpen: () => onOpenOrder(order.order_ref)
8319
+ onOpen: () => onOpenOrder(row2.order.order_ref)
8320
+ } : {}
8321
+ }) : jsx(ReturnCard, {
8322
+ ret: row2.ret,
8323
+ locale,
8324
+ ...onOpenReturn ? {
8325
+ onOpen: () => onOpenReturn(row2.ret.return_ref)
8276
8326
  } : {}
8277
8327
  })
8278
- }, order.order_ref))
8328
+ }, row2.key))
8329
+ });
8330
+ }
8331
+ function ReturnCard({ ret, locale, onOpen }) {
8332
+ const t = useT();
8333
+ const { format: money2 } = useMoney(locale);
8334
+ const items2 = `${ret.item_count} ${ret.item_count === 1 ? t("item") : t("items")}`;
8335
+ const body3 = jsxs(Fragment, {
8336
+ children: [jsxs("div", {
8337
+ className: styles$v.head,
8338
+ children: [jsxs("div", {
8339
+ className: styles$v.heading,
8340
+ children: [jsx("span", {
8341
+ className: styles$v.title,
8342
+ children: `${t("Return")} #${shortRef(ret.return_ref)}`
8343
+ }), jsx("span", {
8344
+ className: styles$v.date,
8345
+ children: formatPlaced(ret.reported_at, locale)
8346
+ })]
8347
+ }), jsx(ReturnStatusBadge, {
8348
+ status: ret.status
8349
+ })]
8350
+ }), jsxs("div", {
8351
+ className: styles$v.bottom,
8352
+ children: [jsx(ReturnThumbnails, {
8353
+ ret
8354
+ }), jsx("span", {
8355
+ className: styles$v.meta,
8356
+ children: `${items2} · ${money2(ret.value)}`
8357
+ }), onOpen && jsx("span", {
8358
+ className: styles$v.chevron,
8359
+ children: jsx(Chevron, {})
8360
+ })]
8361
+ })]
8362
+ });
8363
+ if (!onOpen) return jsx("div", {
8364
+ className: styles$v.card,
8365
+ children: body3
8366
+ });
8367
+ return jsx("button", {
8368
+ type: "button",
8369
+ className: [styles$v.card, styles$v.tappable].join(" "),
8370
+ onClick: onOpen,
8371
+ "aria-label": `${t("Return")} ${shortRef(ret.return_ref)}, ${ret.headline}`,
8372
+ children: body3
8373
+ });
8374
+ }
8375
+ function ReturnThumbnails({ ret }) {
8376
+ const images = ret.images ?? [];
8377
+ const hidden = ret.item_count - TILES + 1;
8378
+ const overflow = images.length >= TILES && hidden > 1 ? hidden : 0;
8379
+ if (images.length === 0) {
8380
+ return jsx("div", {
8381
+ className: styles$v.strip,
8382
+ children: jsx("div", {
8383
+ className: [styles$v.tile, styles$v.placeholder].join(" "),
8384
+ "aria-hidden": "true"
8385
+ })
8386
+ });
8387
+ }
8388
+ return jsx("div", {
8389
+ className: styles$v.strip,
8390
+ children: images.map((src, i) => {
8391
+ const last = i === images.length - 1;
8392
+ return jsxs("div", {
8393
+ className: styles$v.tile,
8394
+ children: [jsx(ShopImage, {
8395
+ src,
8396
+ alt: "",
8397
+ fill: true,
8398
+ sizes: "56px",
8399
+ className: styles$v.image
8400
+ }), overflow > 0 && last && jsxs("span", {
8401
+ className: styles$v.more,
8402
+ children: [jsxs("span", {
8403
+ "aria-hidden": "true",
8404
+ children: ["+", overflow]
8405
+ }), jsx("span", {
8406
+ className: "visually-hidden",
8407
+ children: `and ${overflow} more items`
8408
+ })]
8409
+ })]
8410
+ }, `${src}-${i}`);
8411
+ })
8279
8412
  });
8280
8413
  }
8281
8414
  function OrderCard({ order, locale, onOpen }) {
@@ -8292,8 +8425,7 @@ function OrderCard({ order, locale, onOpen }) {
8292
8425
  children: formatPlaced(order.placed_at, locale)
8293
8426
  })]
8294
8427
  }), jsx(OrderStatusBadge, {
8295
- status: order.status,
8296
- returnStatus: order.return_status
8428
+ status: order.status
8297
8429
  })]
8298
8430
  }), jsxs("div", {
8299
8431
  className: styles$v.bottom,
@@ -10969,24 +11101,24 @@ function ProductView({ sku, initialData, showRecommendations = true, onNotFound
10969
11101
  })
10970
11102
  });
10971
11103
  }
10972
- const showcase = "_showcase_12gts_14";
10973
- const panel = "_panel_12gts_19";
10974
- const image = "_image_12gts_65";
10975
- const hero = "_hero_12gts_105";
10976
- const heroContent = "_heroContent_12gts_190";
10977
- const heroText = "_heroText_12gts_214";
10978
- const logo = "_logo_12gts_223";
10979
- const heroTitle = "_heroTitle_12gts_243";
10980
- const heroSub = "_heroSub_12gts_267";
10981
- const swipe = "_swipe_12gts_286";
10982
- const swipeLabel = "_swipeLabel_12gts_293";
10983
- const chevron$1 = "_chevron_12gts_299";
10984
- const overlay$1 = "_overlay_12gts_11";
10985
- const copy = "_copy_12gts_334";
10986
- const title$2 = "_title_12gts_339";
10987
- const subtitle$1 = "_subtitle_12gts_346";
10988
- const cta = "_cta_12gts_352";
10989
- const mosaic = "_mosaic_12gts_396";
11104
+ const showcase = "_showcase_jukpz_14";
11105
+ const panel = "_panel_jukpz_19";
11106
+ const image = "_image_jukpz_80";
11107
+ const hero = "_hero_jukpz_120";
11108
+ const heroContent = "_heroContent_jukpz_205";
11109
+ const heroText = "_heroText_jukpz_229";
11110
+ const logo = "_logo_jukpz_238";
11111
+ const heroTitle = "_heroTitle_jukpz_258";
11112
+ const heroSub = "_heroSub_jukpz_282";
11113
+ const swipe = "_swipe_jukpz_301";
11114
+ const swipeLabel = "_swipeLabel_jukpz_308";
11115
+ const chevron$1 = "_chevron_jukpz_314";
11116
+ const overlay$1 = "_overlay_jukpz_11";
11117
+ const copy = "_copy_jukpz_349";
11118
+ const title$2 = "_title_jukpz_354";
11119
+ const subtitle$1 = "_subtitle_jukpz_361";
11120
+ const cta = "_cta_jukpz_367";
11121
+ const mosaic = "_mosaic_jukpz_411";
10990
11122
  const styles$2 = {
10991
11123
  showcase,
10992
11124
  panel,
@@ -11710,6 +11842,7 @@ export {
11710
11842
  ReturnFlowView,
11711
11843
  ReturnItemsView,
11712
11844
  ReturnLabelView,
11845
+ ReturnStatusBadge,
11713
11846
  ReturnTrackingView,
11714
11847
  ReviewCarousel,
11715
11848
  SaleBadge,
@@ -1645,7 +1645,7 @@
1645
1645
  background: var(--color-state-surface-critical-soft);
1646
1646
  color: var(--color-state-text-critical);
1647
1647
  }
1648
- ._page_1bhfq_2 {
1648
+ ._page_qj11j_2 {
1649
1649
  list-style: none;
1650
1650
  margin: 0;
1651
1651
  display: flex;
@@ -1653,14 +1653,14 @@
1653
1653
  gap: var(--space-12);
1654
1654
  padding: var(--space-16) var(--space-16) var(--space-24);
1655
1655
  }
1656
- ._empty_1bhfq_22 {
1656
+ ._empty_qj11j_22 {
1657
1657
  display: flex;
1658
1658
  align-items: center;
1659
1659
  justify-content: center;
1660
1660
  min-height: calc(100dvh - var(--header-height) - var(--space-32));
1661
1661
  padding-bottom: var(--space-32);
1662
1662
  }
1663
- ._cta_1bhfq_32 {
1663
+ ._cta_qj11j_32 {
1664
1664
  display: inline-flex;
1665
1665
  align-items: center;
1666
1666
  justify-content: center;
@@ -1677,11 +1677,11 @@
1677
1677
  line-height: 1;
1678
1678
  cursor: pointer;
1679
1679
  }
1680
- ._cta_1bhfq_32:focus-visible {
1680
+ ._cta_qj11j_32:focus-visible {
1681
1681
  outline: none;
1682
1682
  box-shadow: var(--focus-ring);
1683
1683
  }
1684
- ._card_1bhfq_55 {
1684
+ ._card_qj11j_55 {
1685
1685
  display: flex;
1686
1686
  flex-direction: column;
1687
1687
  gap: var(--space-24);
@@ -1695,21 +1695,21 @@
1695
1695
  text-align: left;
1696
1696
  overflow: hidden;
1697
1697
  }
1698
- ._tappable_1bhfq_70 {
1698
+ ._tappable_qj11j_70 {
1699
1699
  cursor: pointer;
1700
1700
  }
1701
- ._tappable_1bhfq_70:focus-visible {
1701
+ ._tappable_qj11j_70:focus-visible {
1702
1702
  outline: none;
1703
1703
  box-shadow: var(--focus-ring);
1704
1704
  }
1705
- ._head_1bhfq_79 {
1705
+ ._head_qj11j_79 {
1706
1706
  display: flex;
1707
1707
  align-items: flex-start;
1708
1708
  justify-content: space-between;
1709
1709
  gap: var(--space-8);
1710
1710
  width: 100%;
1711
1711
  }
1712
- ._heading_1bhfq_87 {
1712
+ ._heading_qj11j_87 {
1713
1713
  display: flex;
1714
1714
  flex: 1 1 auto;
1715
1715
  flex-direction: column;
@@ -1717,7 +1717,7 @@
1717
1717
  min-width: 0;
1718
1718
  color: var(--color-text-default);
1719
1719
  }
1720
- ._title_1bhfq_96 {
1720
+ ._title_qj11j_96 {
1721
1721
  font-size: var(--type-heading-md-size);
1722
1722
  font-weight: var(--font-weight-bold);
1723
1723
  line-height: 1.32;
@@ -1725,22 +1725,30 @@
1725
1725
  text-overflow: ellipsis;
1726
1726
  white-space: nowrap;
1727
1727
  }
1728
- ._date_1bhfq_115 {
1728
+ ._date_qj11j_115 {
1729
1729
  font-size: var(--type-trimmed-sm-size);
1730
1730
  line-height: 10px;
1731
1731
  }
1732
- ._bottom_1bhfq_120 {
1732
+ ._bottom_qj11j_120 {
1733
1733
  display: flex;
1734
1734
  align-items: center;
1735
1735
  justify-content: space-between;
1736
1736
  gap: var(--space-8);
1737
1737
  width: 100%;
1738
1738
  }
1739
- ._strip_1bhfq_128 {
1739
+ ._strip_qj11j_128 {
1740
1740
  display: flex;
1741
1741
  gap: var(--space-6);
1742
1742
  }
1743
- ._tile_1bhfq_133 {
1743
+ ._meta_qj11j_141 {
1744
+ flex: 1 1 auto;
1745
+ text-align: right;
1746
+ font-size: var(--type-trimmed-sm-size);
1747
+ color: var(--color-text-subtle);
1748
+ font-variant-numeric: tabular-nums;
1749
+ white-space: nowrap;
1750
+ }
1751
+ ._tile_qj11j_150 {
1744
1752
  position: relative;
1745
1753
  flex: 0 0 56px;
1746
1754
  width: 56px;
@@ -1749,14 +1757,14 @@
1749
1757
  overflow: hidden;
1750
1758
  background: var(--color-surface-subtle);
1751
1759
  }
1752
- ._image_1bhfq_143 {
1760
+ ._image_qj11j_160 {
1753
1761
  object-fit: cover;
1754
1762
  object-position: top;
1755
1763
  }
1756
- ._placeholder_1bhfq_150 {
1764
+ ._placeholder_qj11j_167 {
1757
1765
  background: var(--color-surface-subtle);
1758
1766
  }
1759
- ._more_1bhfq_157 {
1767
+ ._more_qj11j_174 {
1760
1768
  position: absolute;
1761
1769
  inset: 0;
1762
1770
  display: flex;
@@ -1768,7 +1776,7 @@
1768
1776
  font-weight: var(--font-weight-bold);
1769
1777
  line-height: 1;
1770
1778
  }
1771
- ._chevron_1bhfq_170 {
1779
+ ._chevron_qj11j_187 {
1772
1780
  display: inline-flex;
1773
1781
  flex: 0 0 24px;
1774
1782
  width: 24px;
@@ -3487,27 +3495,29 @@
3487
3495
  column-gap: var(--space-12);
3488
3496
  row-gap: var(--space-12);
3489
3497
  }
3490
- ._showcase_12gts_14 {
3498
+ ._showcase_jukpz_14 {
3491
3499
  --chrome-bleed: calc(3 * (100lvh - 100svh));
3492
3500
  background: #080e12;
3493
3501
  }
3494
- ._panel_12gts_19 {
3502
+ ._panel_jukpz_19 {
3495
3503
  position: relative;
3496
3504
  height: 100lvh;
3497
3505
  height: calc(100lvh + var(--chrome-bleed, 0px));
3498
3506
  scroll-snap-align: start;
3499
3507
  scroll-snap-stop: always;
3508
+ scroll-margin-bottom: calc(-1 * var(--chrome-bleed, 0px));
3500
3509
  overflow: hidden;
3501
3510
  background: #080e12;
3502
3511
  }
3503
- ._panel_12gts_19:last-child {
3512
+ ._panel_jukpz_19:last-child {
3504
3513
  height: 100dvh;
3514
+ scroll-margin-bottom: 0;
3505
3515
  }
3506
- ._image_12gts_65 {
3516
+ ._image_jukpz_80 {
3507
3517
  object-fit: cover;
3508
3518
  object-position: 50% var(--slide-focal-y, 50%);
3509
3519
  }
3510
- ._hero_12gts_105::after {
3520
+ ._hero_jukpz_120::after {
3511
3521
  content: "";
3512
3522
  position: absolute;
3513
3523
  inset: 0;
@@ -3522,7 +3532,7 @@
3522
3532
  rgba(8, 14, 18, 0) calc(520px + var(--chrome-bleed, 0px)));
3523
3533
  pointer-events: none;
3524
3534
  }
3525
- ._hero_12gts_105 ._heroContent_12gts_190 {
3535
+ ._hero_jukpz_120 ._heroContent_jukpz_205 {
3526
3536
  position: absolute;
3527
3537
  bottom: 32px;
3528
3538
  bottom: calc(32px + var(--chrome-bleed, 0px) + 100lvh - 100dvh);
@@ -3534,7 +3544,7 @@
3534
3544
  gap: 24px;
3535
3545
  align-items: stretch;
3536
3546
  }
3537
- ._heroText_12gts_214 {
3547
+ ._heroText_jukpz_229 {
3538
3548
  display: flex;
3539
3549
  flex-direction: column;
3540
3550
  gap: 8px;
@@ -3542,11 +3552,11 @@
3542
3552
  padding: 0 24px;
3543
3553
  text-align: center;
3544
3554
  }
3545
- ._heroText_12gts_214 ._logo_12gts_223 {
3555
+ ._heroText_jukpz_229 ._logo_jukpz_238 {
3546
3556
  width: 48px;
3547
3557
  height: 48px;
3548
3558
  }
3549
- ._heroTitle_12gts_243 {
3559
+ ._heroTitle_jukpz_258 {
3550
3560
  width: 100%;
3551
3561
  margin: 0;
3552
3562
  font-family:
@@ -3561,33 +3571,33 @@
3561
3571
  letter-spacing: -1.12px;
3562
3572
  color: #f9fafa;
3563
3573
  }
3564
- ._heroSub_12gts_267 {
3574
+ ._heroSub_jukpz_282 {
3565
3575
  margin: 0;
3566
3576
  font-size: 16px;
3567
3577
  line-height: 1.55;
3568
3578
  color: #f9fafa;
3569
3579
  max-width: 327px;
3570
3580
  }
3571
- ._swipe_12gts_286 {
3581
+ ._swipe_jukpz_301 {
3572
3582
  display: flex;
3573
3583
  flex-direction: column;
3574
3584
  align-items: center;
3575
3585
  gap: 6px;
3576
3586
  padding: 8px 0;
3577
3587
  }
3578
- ._swipeLabel_12gts_293 {
3588
+ ._swipeLabel_jukpz_308 {
3579
3589
  margin: 0;
3580
3590
  font-size: 14px;
3581
3591
  line-height: 1;
3582
3592
  color: rgba(255, 255, 255, 0.54);
3583
3593
  }
3584
- ._chevron_12gts_299 {
3594
+ ._chevron_jukpz_314 {
3585
3595
  width: 24px;
3586
3596
  height: 24px;
3587
3597
  color: rgba(255, 255, 255, 0.54);
3588
- animation: _bob_12gts_1 1.8s ease-in-out infinite;
3598
+ animation: _bob_jukpz_1 1.8s ease-in-out infinite;
3589
3599
  }
3590
- @keyframes _bob_12gts_1 {
3600
+ @keyframes _bob_jukpz_1 {
3591
3601
  0%, 100% {
3592
3602
  transform: translateY(0);
3593
3603
  }
@@ -3595,7 +3605,7 @@
3595
3605
  transform: translateY(4px);
3596
3606
  }
3597
3607
  }
3598
- ._overlay_12gts_11 {
3608
+ ._overlay_jukpz_11 {
3599
3609
  position: absolute;
3600
3610
  inset: 0;
3601
3611
  z-index: 1;
@@ -3612,25 +3622,25 @@
3612
3622
  padding: 0 24px 24px;
3613
3623
  padding-bottom: calc(24px + var(--chrome-bleed, 0px) + 100lvh - 100dvh);
3614
3624
  }
3615
- ._copy_12gts_334 {
3625
+ ._copy_jukpz_349 {
3616
3626
  display: flex;
3617
3627
  flex-direction: column;
3618
3628
  gap: 8px;
3619
3629
  }
3620
- ._title_12gts_339 {
3630
+ ._title_jukpz_354 {
3621
3631
  margin: 0;
3622
3632
  font-size: 32px;
3623
3633
  line-height: 1.2;
3624
3634
  font-weight: 700;
3625
3635
  color: #f9fafa;
3626
3636
  }
3627
- ._subtitle_12gts_346 {
3637
+ ._subtitle_jukpz_361 {
3628
3638
  margin: 0;
3629
3639
  font-size: 16px;
3630
3640
  line-height: 1.55;
3631
3641
  color: #f9fafa;
3632
3642
  }
3633
- ._cta_12gts_352 {
3643
+ ._cta_jukpz_367 {
3634
3644
  display: inline-flex;
3635
3645
  align-items: center;
3636
3646
  justify-content: center;
@@ -3644,19 +3654,19 @@
3644
3654
  font-weight: 700;
3645
3655
  text-decoration: none;
3646
3656
  }
3647
- ._cta_12gts_352::after {
3657
+ ._cta_jukpz_367::after {
3648
3658
  content: "";
3649
3659
  position: absolute;
3650
3660
  inset: 0;
3651
3661
  }
3652
- ._cta_12gts_352:active {
3662
+ ._cta_jukpz_367:active {
3653
3663
  background: rgba(249, 250, 250, 0.12);
3654
3664
  }
3655
- ._cta_12gts_352:focus-visible {
3665
+ ._cta_jukpz_367:focus-visible {
3656
3666
  outline: none;
3657
3667
  box-shadow: var(--focus-ring);
3658
3668
  }
3659
- ._mosaic_12gts_396 {
3669
+ ._mosaic_jukpz_411 {
3660
3670
  background: #080e12;
3661
3671
  }
3662
3672
  ._header_r9jjq_14 {