@harshit-wander/component-lib 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -278,33 +278,50 @@ EventBanner.displayName = "EventBanner";
278
278
  var frameClass2 = "block w-full h-[300px] overflow-hidden rounded-md no-underline text-inherit focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2";
279
279
  var videoClass = "block w-full h-full object-cover";
280
280
  var EventVideoBanner = react.forwardRef(
281
- ({ posterUrl, videoUrl, alt, href, className, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("shrink-0 w-full snap-start", className), ...rest, children: href ? /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: frameClass2, children: /* @__PURE__ */ jsxRuntime.jsx(
282
- "video",
283
- {
284
- src: videoUrl,
285
- poster: posterUrl,
286
- "aria-label": alt,
287
- muted: true,
288
- autoPlay: true,
289
- loop: true,
290
- playsInline: true,
291
- preload: "metadata",
292
- className: videoClass
293
- }
294
- ) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: frameClass2, children: /* @__PURE__ */ jsxRuntime.jsx(
295
- "video",
296
- {
297
- src: videoUrl,
298
- poster: posterUrl,
299
- "aria-label": alt,
300
- muted: true,
301
- autoPlay: true,
302
- loop: true,
303
- playsInline: true,
304
- preload: "metadata",
305
- className: videoClass
306
- }
307
- ) }) })
281
+ ({ posterUrl, videoUrl, alt, href, className, ...rest }, ref) => {
282
+ const videoRef = react.useRef(null);
283
+ react.useEffect(() => {
284
+ const video = videoRef.current;
285
+ if (!video || !videoUrl) return;
286
+ if (!videoUrl.includes(".m3u8")) {
287
+ video.src = videoUrl;
288
+ return;
289
+ }
290
+ if (video.canPlayType("application/vnd.apple.mpegurl")) {
291
+ video.src = videoUrl;
292
+ return;
293
+ }
294
+ let cancelled = false;
295
+ import('hls.js').then(({ default: Hls }) => {
296
+ if (cancelled || !Hls.isSupported()) return;
297
+ const hls = new Hls({ autoStartLoad: true, startLevel: -1 });
298
+ hls.loadSource(videoUrl);
299
+ hls.attachMedia(video);
300
+ video._hls = hls;
301
+ });
302
+ return () => {
303
+ cancelled = true;
304
+ const stored = video._hls;
305
+ stored?.destroy();
306
+ };
307
+ }, [videoUrl]);
308
+ const videoEl = /* @__PURE__ */ jsxRuntime.jsx(
309
+ "video",
310
+ {
311
+ ref: videoRef,
312
+ src: videoUrl?.includes(".m3u8") ? void 0 : videoUrl,
313
+ poster: posterUrl,
314
+ "aria-label": alt,
315
+ muted: true,
316
+ autoPlay: true,
317
+ loop: true,
318
+ playsInline: true,
319
+ preload: "metadata",
320
+ className: videoClass
321
+ }
322
+ );
323
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("shrink-0 w-full snap-start", className), ...rest, children: href ? /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: frameClass2, children: videoEl }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: frameClass2, children: videoEl }) });
324
+ }
308
325
  );
309
326
  EventVideoBanner.displayName = "EventVideoBanner";
310
327
  var ExpandableValueCard = react.forwardRef(
@@ -1321,7 +1338,35 @@ var CategoryNavbar = react.forwardRef(
1321
1338
  onMouseEnter: () => openCategory(index),
1322
1339
  onMouseLeave: scheduleCloseCategory,
1323
1340
  children: [
1324
- /* @__PURE__ */ jsxRuntime.jsxs(
1341
+ category.href ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1342
+ /* @__PURE__ */ jsxRuntime.jsxs(Link, { href: category.href, className: categoryTriggerClass, children: [
1343
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: category.label }),
1344
+ category.badge ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center ml-xs", children: category.badge }) : null
1345
+ ] }),
1346
+ /* @__PURE__ */ jsxRuntime.jsx(
1347
+ "button",
1348
+ {
1349
+ type: "button",
1350
+ "aria-expanded": isOpen,
1351
+ "aria-controls": itemPanelId,
1352
+ "aria-label": `Open ${category.label} menu`,
1353
+ onClick: () => openCategory(index),
1354
+ onFocus: () => openCategory(index),
1355
+ className: "inline-flex items-center justify-center p-0 bg-transparent border-none text-inherit cursor-pointer focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2 focus-visible:rounded-sm",
1356
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1357
+ "span",
1358
+ {
1359
+ "aria-hidden": "true",
1360
+ className: cn(
1361
+ "inline-flex items-center justify-center w-4 h-4 transition-transform duration-200 ease-in",
1362
+ isOpen ? "rotate-180" : "rotate-0"
1363
+ ),
1364
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChevronSvg2, {})
1365
+ }
1366
+ )
1367
+ }
1368
+ )
1369
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(
1325
1370
  "button",
1326
1371
  {
1327
1372
  type: "button",
@@ -1431,7 +1476,7 @@ var ContactSection = react.forwardRef(
1431
1476
  ref,
1432
1477
  className: cn(
1433
1478
  "flex w-full justify-center",
1434
- "lg:items-center lg:justify-between lg:gap-xl lg:py-xl lg:px-[80px] lg:bg-primary lg:rounded-lg lg:shadow-card",
1479
+ "lg:items-center lg:justify-between lg:gap-xl lg:py-xl lg:bg-primary lg:rounded-lg lg:shadow-card",
1435
1480
  className
1436
1481
  ),
1437
1482
  ...rest,
@@ -1470,39 +1515,31 @@ var CtaBanner = react.forwardRef(
1470
1515
  }
1471
1516
  cta.onClick?.();
1472
1517
  };
1473
- return /* @__PURE__ */ jsxRuntime.jsx(
1474
- "section",
1518
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { ref, className: cn("flex justify-center bg-surface", className), ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
1519
+ "div",
1475
1520
  {
1476
- ref,
1477
- className: cn("flex justify-center px-[80px] bg-surface max-md:px-md", className),
1478
- ...rest,
1479
- children: /* @__PURE__ */ jsxRuntime.jsx(
1480
- "div",
1481
- {
1482
- className: "relative flex items-center w-full min-h-[300px] pl-[50px] rounded-md bg-cover bg-center overflow-hidden max-md:px-lg",
1483
- style: {
1484
- backgroundColor: backgroundColor ?? "var(--color-primary)",
1485
- backgroundImage: backgroundImage ? `url(${backgroundImage})` : void 0
1486
- },
1487
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-xl max-w-[550px]", children: [
1488
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-xs text-white", children: [
1489
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "m-0 text-xl font-semibold leading-button", children: title }),
1490
- subtitle ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "m-0 text-sm font-medium leading-body", children: subtitle }) : null
1491
- ] }),
1492
- /* @__PURE__ */ jsxRuntime.jsx(
1493
- "button",
1494
- {
1495
- type: "button",
1496
- onClick: handleCtaClick,
1497
- className: "inline-flex items-center justify-center self-start h-11 px-xl bg-accent text-secondary border-none rounded-md font-[inherit] text-button cursor-pointer shadow-[inset_0_0_6px_rgba(0,0,0,0.14)] transition-colors duration-150 ease-in hover:bg-accent-hover focus-visible:outline-2 focus-visible:outline-white focus-visible:outline-offset-2",
1498
- children: cta.label
1499
- }
1500
- )
1501
- ] })
1502
- }
1503
- )
1521
+ className: "relative flex items-center w-full min-h-[300px] pl-[50px] rounded-md bg-cover bg-center overflow-hidden max-md:px-lg",
1522
+ style: {
1523
+ backgroundColor: backgroundColor ?? "var(--color-primary)",
1524
+ backgroundImage: backgroundImage ? `url(${backgroundImage})` : void 0
1525
+ },
1526
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-xl max-w-[550px]", children: [
1527
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-xs text-white", children: [
1528
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "m-0 text-xl font-semibold leading-button", children: title }),
1529
+ subtitle ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "m-0 text-sm font-medium leading-body", children: subtitle }) : null
1530
+ ] }),
1531
+ /* @__PURE__ */ jsxRuntime.jsx(
1532
+ "button",
1533
+ {
1534
+ type: "button",
1535
+ onClick: handleCtaClick,
1536
+ className: "inline-flex items-center justify-center self-start h-11 px-xl bg-accent text-secondary border-none rounded-md font-[inherit] text-button cursor-pointer shadow-[inset_0_0_6px_rgba(0,0,0,0.14)] transition-colors duration-150 ease-in hover:bg-accent-hover focus-visible:outline-2 focus-visible:outline-white focus-visible:outline-offset-2",
1537
+ children: cta.label
1538
+ }
1539
+ )
1540
+ ] })
1504
1541
  }
1505
- );
1542
+ ) });
1506
1543
  }
1507
1544
  );
1508
1545
  CtaBanner.displayName = "CtaBanner";
@@ -1511,39 +1548,31 @@ var DestinationsSection = react.forwardRef(
1511
1548
  const half = Math.ceil(destinations.length / 2);
1512
1549
  const firstRow = destinations.slice(0, half);
1513
1550
  const secondRow = destinations.slice(half);
1514
- return /* @__PURE__ */ jsxRuntime.jsxs(
1515
- "section",
1516
- {
1517
- ref,
1518
- className: cn("flex flex-col gap-lg px-md bg-surface", className),
1519
- ...rest,
1520
- children: [
1521
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "m-0 text-xl font-semibold leading-heading text-secondary", children: heading2 }),
1522
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-md overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden", children: [
1523
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-md w-max", children: firstRow.map((destination) => /* @__PURE__ */ jsxRuntime.jsx(
1524
- DestinationCard,
1525
- {
1526
- image: destination.image,
1527
- alt: destination.alt,
1528
- label: destination.label,
1529
- href: destination.href
1530
- },
1531
- `r1-${destination.label}`
1532
- )) }),
1533
- secondRow.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-md w-max", children: secondRow.map((destination) => /* @__PURE__ */ jsxRuntime.jsx(
1534
- DestinationCard,
1535
- {
1536
- image: destination.image,
1537
- alt: destination.alt,
1538
- label: destination.label,
1539
- href: destination.href
1540
- },
1541
- `r2-${destination.label}`
1542
- )) }) : null
1543
- ] })
1544
- ]
1545
- }
1546
- );
1551
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { ref, className: cn("flex flex-col gap-lg bg-surface", className), ...rest, children: [
1552
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "m-0 text-xl font-semibold leading-heading text-secondary", children: heading2 }),
1553
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-md overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden", children: [
1554
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-md w-max", children: firstRow.map((destination) => /* @__PURE__ */ jsxRuntime.jsx(
1555
+ DestinationCard,
1556
+ {
1557
+ image: destination.image,
1558
+ alt: destination.alt,
1559
+ label: destination.label,
1560
+ href: destination.href
1561
+ },
1562
+ `r1-${destination.label}`
1563
+ )) }),
1564
+ secondRow.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-md w-max", children: secondRow.map((destination) => /* @__PURE__ */ jsxRuntime.jsx(
1565
+ DestinationCard,
1566
+ {
1567
+ image: destination.image,
1568
+ alt: destination.alt,
1569
+ label: destination.label,
1570
+ href: destination.href
1571
+ },
1572
+ `r2-${destination.label}`
1573
+ )) }) : null
1574
+ ] })
1575
+ ] });
1547
1576
  }
1548
1577
  );
1549
1578
  DestinationsSection.displayName = "DestinationsSection";
@@ -1627,10 +1656,7 @@ var EventCarousel = react.forwardRef(
1627
1656
  "section",
1628
1657
  {
1629
1658
  ref,
1630
- className: cn(
1631
- "relative flex flex-col items-center gap-md px-[80px] bg-surface max-md:px-md",
1632
- className
1633
- ),
1659
+ className: cn("relative flex flex-col items-center gap-md bg-surface", className),
1634
1660
  ...rest,
1635
1661
  children: [
1636
1662
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1686,7 +1712,7 @@ var EventCarousel = react.forwardRef(
1686
1712
  onClick: scrollPrev,
1687
1713
  disabled: !canPrev,
1688
1714
  "aria-label": variant === "video" ? "Previous video" : "Previous event",
1689
- className: cn(arrowBase, "left-[60px]"),
1715
+ className: cn(arrowBase, "left-2"),
1690
1716
  children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeft, {})
1691
1717
  }
1692
1718
  ),
@@ -1697,7 +1723,7 @@ var EventCarousel = react.forwardRef(
1697
1723
  onClick: scrollNext,
1698
1724
  disabled: !canNext,
1699
1725
  "aria-label": variant === "video" ? "Next video" : "Next event",
1700
- className: cn(arrowBase, "right-[60px]"),
1726
+ className: cn(arrowBase, "right-2"),
1701
1727
  children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRight, {})
1702
1728
  }
1703
1729
  )
@@ -1708,7 +1734,7 @@ var EventCarousel = react.forwardRef(
1708
1734
  );
1709
1735
  EventCarousel.displayName = "EventCarousel";
1710
1736
  var ExploreSection = react.forwardRef(
1711
- ({ heading: heading2, items, className, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs("section", { ref, className: cn("flex flex-col gap-lg px-md bg-surface", className), ...rest, children: [
1737
+ ({ heading: heading2, items, className, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs("section", { ref, className: cn("flex flex-col gap-lg bg-surface", className), ...rest, children: [
1712
1738
  /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "m-0 text-xl font-semibold leading-heading text-secondary", children: heading2 }),
1713
1739
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-md overflow-x-auto snap-x [scrollbar-width:none] [&::-webkit-scrollbar]:hidden", children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
1714
1740
  ExploreCard,
@@ -1976,10 +2002,7 @@ var GallerySection = react.forwardRef(
1976
2002
  "section",
1977
2003
  {
1978
2004
  ref,
1979
- className: cn(
1980
- "relative flex flex-col items-center gap-lg px-[80px] bg-surface max-md:px-md",
1981
- className
1982
- ),
2005
+ className: cn("relative flex flex-col items-center gap-lg bg-surface", className),
1983
2006
  ...rest,
1984
2007
  children: [
1985
2008
  /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { heading: heading2, subheading, align: "center" }),
@@ -2396,10 +2419,7 @@ var PackagesCarousel = react.forwardRef(
2396
2419
  "section",
2397
2420
  {
2398
2421
  ref,
2399
- className: cn(
2400
- "flex flex-col items-center gap-xl px-[80px] bg-surface max-md:px-md",
2401
- className
2402
- ),
2422
+ className: cn("flex flex-col items-center gap-xl bg-surface", className),
2403
2423
  ...rest,
2404
2424
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-xl w-full", children: [
2405
2425
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-lg", children: [
@@ -2581,10 +2601,7 @@ var TestimonialsCarousel = react.forwardRef(
2581
2601
  "section",
2582
2602
  {
2583
2603
  ref,
2584
- className: cn(
2585
- "flex flex-col items-center gap-[28px] px-[80px] bg-surface max-md:px-md",
2586
- className
2587
- ),
2604
+ className: cn("flex flex-col items-center gap-[28px] bg-surface", className),
2588
2605
  ...rest,
2589
2606
  children: [
2590
2607
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2709,92 +2726,84 @@ var TripsCategorySection = react.forwardRef(
2709
2726
  cta.onClick?.();
2710
2727
  };
2711
2728
  const progressWidth = Math.min(33 + scrollProgress * (120 - 33), 120);
2712
- return /* @__PURE__ */ jsxRuntime.jsxs(
2713
- "section",
2714
- {
2715
- ref,
2716
- className: cn("relative flex flex-col px-[80px] bg-surface max-md:px-md", className),
2717
- ...rest,
2718
- children: [
2719
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative h-[318px] rounded-lg overflow-hidden max-md:h-[260px]", children: [
2720
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 [&>img]:w-full [&>img]:h-full [&>img]:object-cover [&>video]:w-full [&>video]:h-full [&>video]:object-cover", children: /* @__PURE__ */ jsxRuntime.jsx("video", { autoPlay: true, muted: true, loop: true, playsInline: true, poster, src: videoSrc }) }),
2721
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 flex flex-col justify-center gap-lg p-[44px] text-on-image [text-shadow:0px_6px_24px_rgba(0,0,0,0.16)]", children: [
2722
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "m-0 text-hero-title max-w-[436px]", children: title }),
2723
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "m-0 text-xs font-bold leading-5", children: description2 }),
2724
- /* @__PURE__ */ jsxRuntime.jsx(
2725
- "button",
2726
- {
2727
- type: "button",
2728
- onClick: handleCtaClick,
2729
- className: "inline-flex items-center justify-center self-start h-11 px-xl bg-accent text-secondary border-none rounded-md font-[inherit] text-button cursor-pointer shadow-[inset_0_0_6px_rgba(0,0,0,0.14)] transition-colors duration-150 ease-in hover:bg-accent-hover focus-visible:outline-2 focus-visible:outline-white focus-visible:outline-offset-2",
2730
- children: cta.label
2731
- }
2732
- )
2733
- ] })
2734
- ] }),
2735
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative -mt-[68px] py-sm px-[25px]", children: [
2736
- /* @__PURE__ */ jsxRuntime.jsx(
2737
- "button",
2738
- {
2739
- type: "button",
2740
- onClick: scrollPrev,
2741
- disabled: !canPrev,
2742
- "aria-label": "Previous trips",
2743
- className: cn(arrowBase4, "left-2"),
2744
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeft5, {})
2745
- }
2746
- ),
2747
- /* @__PURE__ */ jsxRuntime.jsx(
2748
- "div",
2749
- {
2750
- ref: trackRef,
2751
- className: "flex gap-sm overflow-x-auto snap-x [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
2752
- children: trips.map((trip) => /* @__PURE__ */ jsxRuntime.jsx(
2753
- TripCategoryCard,
2754
- {
2755
- image: trip.image,
2756
- alt: trip.alt,
2757
- destination: trip.destination,
2758
- startingPrice: trip.startingPrice,
2759
- href: trip.href
2760
- },
2761
- `${trip.image}|${trip.destination}`
2762
- ))
2763
- }
2764
- ),
2765
- /* @__PURE__ */ jsxRuntime.jsx(
2766
- "button",
2729
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { ref, className: cn("relative flex flex-col bg-surface", className), ...rest, children: [
2730
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative h-[318px] rounded-lg overflow-hidden max-md:h-[260px]", children: [
2731
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 [&>img]:w-full [&>img]:h-full [&>img]:object-cover [&>video]:w-full [&>video]:h-full [&>video]:object-cover", children: /* @__PURE__ */ jsxRuntime.jsx("video", { autoPlay: true, muted: true, loop: true, playsInline: true, poster, src: videoSrc }) }),
2732
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 flex flex-col justify-center gap-lg p-[44px] text-on-image [text-shadow:0px_6px_24px_rgba(0,0,0,0.16)]", children: [
2733
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "m-0 text-hero-title max-w-[436px]", children: title }),
2734
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "m-0 text-xs font-bold leading-5", children: description2 }),
2735
+ /* @__PURE__ */ jsxRuntime.jsx(
2736
+ "button",
2737
+ {
2738
+ type: "button",
2739
+ onClick: handleCtaClick,
2740
+ className: "inline-flex items-center justify-center self-start h-11 px-xl bg-accent text-secondary border-none rounded-md font-[inherit] text-button cursor-pointer shadow-[inset_0_0_6px_rgba(0,0,0,0.14)] transition-colors duration-150 ease-in hover:bg-accent-hover focus-visible:outline-2 focus-visible:outline-white focus-visible:outline-offset-2",
2741
+ children: cta.label
2742
+ }
2743
+ )
2744
+ ] })
2745
+ ] }),
2746
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative -mt-[68px] py-sm px-[25px]", children: [
2747
+ /* @__PURE__ */ jsxRuntime.jsx(
2748
+ "button",
2749
+ {
2750
+ type: "button",
2751
+ onClick: scrollPrev,
2752
+ disabled: !canPrev,
2753
+ "aria-label": "Previous trips",
2754
+ className: cn(arrowBase4, "left-2"),
2755
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeft5, {})
2756
+ }
2757
+ ),
2758
+ /* @__PURE__ */ jsxRuntime.jsx(
2759
+ "div",
2760
+ {
2761
+ ref: trackRef,
2762
+ className: "flex gap-sm overflow-x-auto snap-x [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
2763
+ children: trips.map((trip) => /* @__PURE__ */ jsxRuntime.jsx(
2764
+ TripCategoryCard,
2767
2765
  {
2768
- type: "button",
2769
- onClick: scrollNext,
2770
- disabled: !canNext,
2771
- "aria-label": "Next trips",
2772
- className: cn(arrowBase4, "right-2"),
2773
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRight5, {})
2774
- }
2775
- ),
2776
- /* @__PURE__ */ jsxRuntime.jsx(
2777
- "div",
2766
+ image: trip.image,
2767
+ alt: trip.alt,
2768
+ destination: trip.destination,
2769
+ startingPrice: trip.startingPrice,
2770
+ href: trip.href
2771
+ },
2772
+ `${trip.image}|${trip.destination}`
2773
+ ))
2774
+ }
2775
+ ),
2776
+ /* @__PURE__ */ jsxRuntime.jsx(
2777
+ "button",
2778
+ {
2779
+ type: "button",
2780
+ onClick: scrollNext,
2781
+ disabled: !canNext,
2782
+ "aria-label": "Next trips",
2783
+ className: cn(arrowBase4, "right-2"),
2784
+ children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRight5, {})
2785
+ }
2786
+ ),
2787
+ /* @__PURE__ */ jsxRuntime.jsx(
2788
+ "div",
2789
+ {
2790
+ role: "progressbar",
2791
+ "aria-valuenow": Math.round(scrollProgress * 100),
2792
+ "aria-valuemin": 0,
2793
+ "aria-valuemax": 100,
2794
+ "aria-label": "Scroll position",
2795
+ className: "relative w-[120px] h-[6px] mt-md mx-auto bg-track rounded-[32px] overflow-hidden",
2796
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2797
+ "span",
2778
2798
  {
2779
- role: "progressbar",
2780
- "aria-valuenow": Math.round(scrollProgress * 100),
2781
- "aria-valuemin": 0,
2782
- "aria-valuemax": 100,
2783
- "aria-label": "Scroll position",
2784
- className: "relative w-[120px] h-[6px] mt-md mx-auto bg-track rounded-[32px] overflow-hidden",
2785
- children: /* @__PURE__ */ jsxRuntime.jsx(
2786
- "span",
2787
- {
2788
- className: "absolute top-0 left-0 h-full bg-primary rounded-[32px] transition-[width] duration-200 ease-in",
2789
- style: { width: `${progressWidth}px` }
2790
- }
2791
- )
2799
+ className: "absolute top-0 left-0 h-full bg-primary rounded-[32px] transition-[width] duration-200 ease-in",
2800
+ style: { width: `${progressWidth}px` }
2792
2801
  }
2793
2802
  )
2794
- ] })
2795
- ]
2796
- }
2797
- );
2803
+ }
2804
+ )
2805
+ ] })
2806
+ ] });
2798
2807
  }
2799
2808
  );
2800
2809
  TripsCategorySection.displayName = "TripsCategorySection";
@@ -2850,11 +2859,9 @@ var WhyChooseSection = react.forwardRef(
2850
2859
  ref,
2851
2860
  className: cn(
2852
2861
  // Mobile (default)
2853
- "flex flex-col items-center gap-lg px-md bg-surface",
2862
+ "flex flex-col items-center gap-lg bg-surface",
2854
2863
  // Tablet
2855
- "md:gap-xl md:px-lg",
2856
- // Desktop
2857
- "lg:px-[80px]",
2864
+ "md:gap-xl",
2858
2865
  className
2859
2866
  ),
2860
2867
  ...rest,