@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/LICENSE +21 -21
- package/README.md +154 -154
- package/dist/index.cjs +205 -198
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +205 -198
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +25 -22
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) =>
|
|
282
|
-
|
|
283
|
-
{
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
"
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
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:
|
|
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
|
-
"
|
|
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
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
]
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
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
|
-
"
|
|
1516
|
-
{
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
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-
|
|
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-
|
|
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
|
|
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
|
-
"
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
)
|
|
2747
|
-
|
|
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
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
}
|
|
2775
|
-
)
|
|
2776
|
-
|
|
2777
|
-
|
|
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
|
-
|
|
2780
|
-
|
|
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
|
|
2862
|
+
"flex flex-col items-center gap-lg bg-surface",
|
|
2854
2863
|
// Tablet
|
|
2855
|
-
"md:gap-xl
|
|
2856
|
-
// Desktop
|
|
2857
|
-
"lg:px-[80px]",
|
|
2864
|
+
"md:gap-xl",
|
|
2858
2865
|
className
|
|
2859
2866
|
),
|
|
2860
2867
|
...rest,
|