@prijsvrijtechsupport/ui 0.0.48 → 0.0.49

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
@@ -31,6 +31,7 @@ const tailwind_merge = __toESM(require("tailwind-merge"));
31
31
  const react_intersection_observer = __toESM(require("react-intersection-observer"));
32
32
  const moment = __toESM(require("moment"));
33
33
  const embla_carousel_react = __toESM(require("embla-carousel-react"));
34
+ const embla_carousel_auto_height = __toESM(require("embla-carousel-auto-height"));
34
35
  const date_fns = __toESM(require("date-fns"));
35
36
  const date_fns_locale = __toESM(require("date-fns/locale"));
36
37
 
@@ -49,118 +50,126 @@ var variables_default = {};
49
50
 
50
51
  //#endregion
51
52
  //#region src/components/topMenu/styles.css
52
- var styles_default$28 = {};
53
+ var styles_default$30 = {};
53
54
 
54
55
  //#endregion
55
56
  //#region src/components/button/styles.css
56
- var styles_default$27 = {};
57
+ var styles_default$29 = {};
57
58
 
58
59
  //#endregion
59
60
  //#region src/components/priceCheck/styles.css
60
- var styles_default$26 = {};
61
+ var styles_default$28 = {};
61
62
 
62
63
  //#endregion
63
64
  //#region src/components/toggle/styles.css
64
- var styles_default$25 = {};
65
+ var styles_default$27 = {};
65
66
 
66
67
  //#endregion
67
68
  //#region src/components/topHeaderMenu/styles.css
68
- var styles_default$24 = {};
69
+ var styles_default$26 = {};
69
70
 
70
71
  //#endregion
71
72
  //#region src/components/filterButton/styles.css
72
- var styles_default$23 = {};
73
+ var styles_default$25 = {};
73
74
 
74
75
  //#endregion
75
76
  //#region src/components/searchBox/styles.css
76
- var styles_default$22 = {};
77
+ var styles_default$24 = {};
77
78
 
78
79
  //#endregion
79
80
  //#region src/components/dropdown/styles.css
80
- var styles_default$21 = {};
81
+ var styles_default$23 = {};
81
82
 
82
83
  //#endregion
83
84
  //#region src/components/counterIcon/styles.css
84
- var styles_default$20 = {};
85
+ var styles_default$22 = {};
85
86
 
86
87
  //#endregion
87
88
  //#region src/components/usp/styles.css
88
- var styles_default$19 = {};
89
+ var styles_default$21 = {};
89
90
 
90
91
  //#endregion
91
92
  //#region src/components/middleNavigation/styles.css
92
- var styles_default$18 = {};
93
+ var styles_default$20 = {};
93
94
 
94
95
  //#endregion
95
96
  //#region src/components/menu/styles.css
96
- var styles_default$17 = {};
97
+ var styles_default$19 = {};
97
98
 
98
99
  //#endregion
99
100
  //#region src/components/footer/styles.css
100
- var styles_default$16 = {};
101
+ var styles_default$18 = {};
101
102
 
102
103
  //#endregion
103
104
  //#region src/components/blogWidget/styles.css
104
- var styles_default$15 = {};
105
+ var styles_default$17 = {};
105
106
 
106
107
  //#endregion
107
108
  //#region src/components/searchBlock/styles.css
108
- var styles_default$14 = {};
109
+ var styles_default$16 = {};
109
110
 
110
111
  //#endregion
111
112
  //#region src/components/categoryFilter/styles.css
112
- var styles_default$13 = {};
113
+ var styles_default$15 = {};
113
114
 
114
115
  //#endregion
115
116
  //#region src/components/collection/styles.css
116
- var styles_default$12 = {};
117
+ var styles_default$14 = {};
117
118
 
118
119
  //#endregion
119
120
  //#region src/components/review/styles.css
120
- var styles_default$11 = {};
121
+ var styles_default$13 = {};
121
122
 
122
123
  //#endregion
123
124
  //#region src/components/hotelAccomodationResults/styles.css
124
- var styles_default$10 = {};
125
+ var styles_default$12 = {};
125
126
 
126
127
  //#endregion
127
128
  //#region src/components/coupon/styles.css
128
- var styles_default$9 = {};
129
+ var styles_default$11 = {};
129
130
 
130
131
  //#endregion
131
132
  //#region src/components/giftCard/styles.css
132
- var styles_default$8 = {};
133
+ var styles_default$10 = {};
133
134
 
134
135
  //#endregion
135
136
  //#region src/components/pvPopup/styles.css
136
- var styles_default$7 = {};
137
+ var styles_default$9 = {};
137
138
 
138
139
  //#endregion
139
140
  //#region src/components/photoCardsRotated/styles.css
140
- var styles_default$6 = {};
141
+ var styles_default$8 = {};
141
142
 
142
143
  //#endregion
143
144
  //#region src/components/spotlights/styles.css
144
- var styles_default$5 = {};
145
+ var styles_default$7 = {};
145
146
 
146
147
  //#endregion
147
148
  //#region src/components/viewedAccomodations/styles.css
148
- var styles_default$4 = {};
149
+ var styles_default$6 = {};
149
150
 
150
151
  //#endregion
151
152
  //#region src/components/quantityButtons/styles.css
152
- var styles_default$3 = {};
153
+ var styles_default$5 = {};
153
154
 
154
155
  //#endregion
155
156
  //#region src/components/matrixTable/styles.css
156
- var styles_default$2 = {};
157
+ var styles_default$4 = {};
157
158
 
158
159
  //#endregion
159
160
  //#region src/components/pageNavigation/styles.css
160
- var styles_default$1 = {};
161
+ var styles_default$3 = {};
161
162
 
162
163
  //#endregion
163
164
  //#region src/components/calendar/styles.css
165
+ var styles_default$2 = {};
166
+
167
+ //#endregion
168
+ //#region src/components/slider/styles.css
169
+ var styles_default$1 = {};
170
+
171
+ //#endregion
172
+ //#region src/components/priceBox/styles.css
164
173
  var styles_default = {};
165
174
 
166
175
  //#endregion
@@ -1773,6 +1782,27 @@ const IconCocktail = ({ className,...props }) => /* @__PURE__ */ (0, react_jsx_r
1773
1782
  })
1774
1783
  });
1775
1784
 
1785
+ //#endregion
1786
+ //#region src/icons/IconImage.tsx
1787
+ const IconImage = ({ className,...props }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
1788
+ xmlns: "http://www.w3.org/2000/svg",
1789
+ className,
1790
+ width: "24",
1791
+ height: "24",
1792
+ viewBox: "0 0 24 24",
1793
+ fill: "none",
1794
+ ...props,
1795
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
1796
+ d: "M18 10C19.1046 10 20 9.10457 20 8C20 6.89543 19.1046 6 18 6C16.8954 6 16 6.89543 16 8C16 9.10457 16.8954 10 18 10Z",
1797
+ fill: "currentColor"
1798
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
1799
+ "fill-rule": "evenodd",
1800
+ "clip-rule": "evenodd",
1801
+ d: "M3 3H21C22.6569 3 24 4.34315 24 6V18C24 19.6569 22.6569 21 21 21H3C1.34315 21 0 19.6569 0 18V6C0 4.34315 1.34314 3 3 3ZM3 5C2.44772 5 2 5.44772 2 6V14.1922L7.48523 8.70694C7.87585 8.31644 8.50891 8.31644 8.89954 8.70694L15.1924 14.9999L17.4852 12.7069C17.8759 12.3164 18.5089 12.3164 18.8995 12.7069L22 15.8075V6C22 5.44772 21.5523 5 21 5H3Z",
1802
+ fill: "currentColor"
1803
+ })]
1804
+ });
1805
+
1776
1806
  //#endregion
1777
1807
  //#region src/theme/variables.ts
1778
1808
  const CSS_VARIABLE_KEYS = [
@@ -4217,7 +4247,7 @@ const PriceCheck = ({ className, price, text, disabled = false, "data-testid": t
4217
4247
  children: text
4218
4248
  }),
4219
4249
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4220
- className: `price-check-price-padding${price && price > 999 ? "-large" : ""} text-start price-check-color-price price-check-fontFamily-price font-bold text-2xl whitespace-nowrap price-check-price-margin-top`,
4250
+ className: `price-check-price-padding${price && price > 999 ? "-large" : ""} text-start price-check-color-price price-check-fontFamily-price font-bold price-check-font-size-price whitespace-nowrap price-check-price-margin-top`,
4221
4251
  children: [
4222
4252
  price,
4223
4253
  ",",
@@ -5157,11 +5187,12 @@ const QuantityButtons = ({ className, value, setValue, minValue = 0, maxValue =
5157
5187
  //#endregion
5158
5188
  //#region src/components/slider/index.tsx
5159
5189
  const LAZY_LOAD_PLACEHOLDER_SRC = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D";
5160
- function Slider({ slides, options, plugins, lazyLoad = false, showArrows = true, showDots = true, dotsPlacement = "outside", overlay, overlayClassName, className, viewportClassName, containerClassName, slideClassName,...props }) {
5190
+ function Slider({ slides = [], options, plugins, lazyLoad = false, showArrows = true, showDots = true, roundedFull = false, showLike = true, dotsPlacement = "outside", overlay, overlayClassName, className, viewportClassName, containerClassName, slideClassName, square = true,...props }) {
5161
5191
  const [emblaRef, emblaApi] = (0, embla_carousel_react.default)(options, plugins);
5162
5192
  const [selectedIndex, setSelectedIndex] = (0, react.useState)(0);
5163
5193
  const [scrollSnaps, setScrollSnaps] = (0, react.useState)([]);
5164
5194
  const [slidesInView, setSlidesInView] = (0, react.useState)([]);
5195
+ const [loadedImages, setLoadedImages] = (0, react.useState)(new Set());
5165
5196
  const canScrollPrev = (0, react.useMemo)(() => emblaApi?.canScrollPrev() ?? false, [emblaApi, selectedIndex]);
5166
5197
  const canScrollNext = (0, react.useMemo)(() => emblaApi?.canScrollNext() ?? false, [emblaApi, selectedIndex]);
5167
5198
  const scrollPrev = (0, react.useCallback)(() => {
@@ -5216,6 +5247,17 @@ function Slider({ slides, options, plugins, lazyLoad = false, showArrows = true,
5216
5247
  lazyLoad,
5217
5248
  updateSlidesInView
5218
5249
  ]);
5250
+ (0, react.useEffect)(() => {
5251
+ if (!emblaApi) return;
5252
+ const imageSlides = slides.filter((slide) => (0, react.isValidElement)(slide) && slide.type === "img");
5253
+ if (imageSlides.length > 0 && loadedImages.size === imageSlides.length) {
5254
+ emblaApi.reInit();
5255
+ }
5256
+ }, [
5257
+ emblaApi,
5258
+ loadedImages,
5259
+ slides
5260
+ ]);
5219
5261
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5220
5262
  "data-component": "slider",
5221
5263
  className: cn("relative", className),
@@ -5225,9 +5267,9 @@ function Slider({ slides, options, plugins, lazyLoad = false, showArrows = true,
5225
5267
  ref: emblaRef,
5226
5268
  className: cn("overflow-hidden", viewportClassName),
5227
5269
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5228
- className: cn("flex touch-pan-y", containerClassName),
5270
+ className: cn("flex touch-pan-y items-start", containerClassName),
5229
5271
  children: slides.map((slide, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5230
- className: cn("min-w-0 shrink-0 grow-0 basis-full", slideClassName),
5272
+ className: cn("min-w-0 shrink-0 grow-0 basis-full h-auto", square && "aspect-square", slideClassName),
5231
5273
  children: lazyLoad && (0, react.isValidElement)(slide) && slide.type === "img" ? (() => {
5232
5274
  const hasBeenInView = slidesInView.includes(index);
5233
5275
  const originalSrc = slide.props.src;
@@ -5235,16 +5277,20 @@ function Slider({ slides, options, plugins, lazyLoad = false, showArrows = true,
5235
5277
  return (0, react.cloneElement)(slide, {
5236
5278
  src,
5237
5279
  "data-src": originalSrc,
5238
- className: cn(slide.props.className, "h-auto")
5280
+ className: cn(slide.props.className, "h-auto"),
5281
+ onLoad: () => setLoadedImages((prev) => new Set(prev).add(index))
5239
5282
  });
5240
- })() : (0, react.isValidElement)(slide) ? (0, react.cloneElement)(slide, { className: cn(slide.props.className, "h-auto") }) : slide
5283
+ })() : (0, react.isValidElement)(slide) && slide.type === "img" ? (0, react.cloneElement)(slide, {
5284
+ className: cn(slide.props.className, "h-auto"),
5285
+ onLoad: () => setLoadedImages((prev) => new Set(prev).add(index))
5286
+ }) : (0, react.isValidElement)(slide) ? (0, react.cloneElement)(slide, { className: cn(slide.props.className, "h-auto") }) : slide
5241
5287
  }, index))
5242
5288
  }), showDots && dotsPlacement === "inside" && scrollSnaps.length > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5243
5289
  className: "pointer-events-none absolute inset-x-0 bottom-3 z-20 flex items-center justify-center gap-2 rounded-2xl bg-black/40 w-fit mx-auto p-1.5",
5244
5290
  children: scrollSnaps.map((_, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5245
5291
  type: "button",
5246
5292
  "aria-label": `Go to slide ${index + 1}`,
5247
- className: cn("pointer-events-auto cursor-pointer h-2 w-2 rounded-full bg-transparent border-2 border-white", index === selectedIndex && "bg-white"),
5293
+ className: cn("pointer-events-auto cursor-pointer h-2 w-2 bg-transparent rounded-full border-2 border-white", index === selectedIndex && "selectedIndexBg"),
5248
5294
  onClick: () => scrollTo(index)
5249
5295
  }, index))
5250
5296
  })]
@@ -5256,12 +5302,25 @@ function Slider({ slides, options, plugins, lazyLoad = false, showArrows = true,
5256
5302
  children: overlay
5257
5303
  })
5258
5304
  }),
5305
+ showLike && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5306
+ className: "pointer-events-none absolute top-4 right-4 z-20",
5307
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5308
+ type: "button",
5309
+ "aria-label": "Like",
5310
+ onClick: () => console.log("Like clicked"),
5311
+ className: cn("pointer-events-auto cursor-pointer inline-flex size-5 items-center justify-center"),
5312
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5313
+ "aria-hidden": "true",
5314
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconHeart, { className: "size-6 text-white hover:text-red-500" })
5315
+ })
5316
+ })
5317
+ }),
5259
5318
  showArrows && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5260
5319
  className: "pointer-events-none absolute inset-y-0 left-0 right-0 z-20 flex items-center justify-between",
5261
5320
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5262
5321
  type: "button",
5263
5322
  "aria-label": "Previous slide",
5264
- className: cn("pointer-events-auto cursor-pointer ml-2 inline-flex size-9 items-center justify-center rounded-full bg-black/40 text-white shadow", !canScrollPrev && "opacity-50"),
5323
+ className: cn("pointer-events-auto cursor-pointer ml-2 inline-flex size-9 items-center justify-center bg-primary-dark-50/50 text-white shadow", roundedFull === true ? "rounded-full" : "rounded-sm", !canScrollPrev && "opacity-50"),
5265
5324
  onClick: scrollPrev,
5266
5325
  disabled: !canScrollPrev,
5267
5326
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -5271,7 +5330,7 @@ function Slider({ slides, options, plugins, lazyLoad = false, showArrows = true,
5271
5330
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5272
5331
  type: "button",
5273
5332
  "aria-label": "Next slide",
5274
- className: cn("pointer-events-auto cursor-pointer mr-2 inline-flex size-9 items-center justify-center rounded-full bg-black/40 text-white shadow", !canScrollNext && "opacity-50"),
5333
+ className: cn("pointer-events-auto cursor-pointer mr-2 inline-flex size-9 items-center justify-center bg-primary-dark-50/50 text-white shadow", roundedFull === true ? "rounded-full" : "rounded-sm", !canScrollNext && "opacity-50"),
5275
5334
  onClick: scrollNext,
5276
5335
  disabled: !canScrollNext,
5277
5336
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -6978,7 +7037,7 @@ const Chatbot = ({ className,...props }) => /* @__PURE__ */ (0, react_jsx_runtim
6978
7037
 
6979
7038
  //#endregion
6980
7039
  //#region src/components/priceBox/index.tsx
6981
- const PriceBox = ({ className, hotel, brand, noBorder = false, noHover = false, hidePrice = false, onClick, "data-testid": dataTestId }) => {
7040
+ const PriceBox = ({ className, hotel, brand, noBorder = false, noHover = false, hidePrice = false, warnText, buttonText = "Bekijk vakantie", showButtonIcon, onClick, "data-testid": dataTestId }) => {
6982
7041
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6983
7042
  "data-testid": dataTestId,
6984
7043
  "data-component": "price-box",
@@ -6992,6 +7051,10 @@ const PriceBox = ({ className, hotel, brand, noBorder = false, noHover = false,
6992
7051
  text: hotel.PriceInfo
6993
7052
  })
6994
7053
  }),
7054
+ warnText && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
7055
+ className: "text-[9px] mb-2 order-4 md:order-2 priceBox-warnText",
7056
+ children: warnText
7057
+ }),
6995
7058
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
6996
7059
  className: "text-sm flex flex-col gap-3 order-2",
6997
7060
  children: [
@@ -7005,7 +7068,11 @@ const PriceBox = ({ className, hotel, brand, noBorder = false, noHover = false,
7005
7068
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: hotel.DepartureDate.split(",")[0] }),
7006
7069
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
7007
7070
  className: "text-gray-400 ml-2",
7008
- children: [hotel.Duration, " dagen"]
7071
+ children: [
7072
+ "(",
7073
+ hotel.Duration,
7074
+ " dagen)"
7075
+ ]
7009
7076
  })
7010
7077
  ]
7011
7078
  }),
@@ -7035,10 +7102,11 @@ const PriceBox = ({ className, hotel, brand, noBorder = false, noHover = false,
7035
7102
  className: "w-4/12 md:w-full order-3",
7036
7103
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
7037
7104
  variant: brand === "prijsvrij" ? "primaryGlow" : "secondary",
7038
- className: "whitespace-nowrap w-full md:w-auto",
7105
+ className: "whitespace-nowrap w-full",
7039
7106
  iconRight: true,
7040
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconArrowRight, { className: "w-4 h-4" }),
7041
- children: "Bekijk vakantie"
7107
+ onClick,
7108
+ icon: showButtonIcon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconArrowRight, { className: "w-4 h-4" }) : undefined,
7109
+ children: buttonText
7042
7110
  })
7043
7111
  })
7044
7112
  ]
@@ -8866,7 +8934,7 @@ const Loading = ({ className, plane = true, size = "small",...props }) => {
8866
8934
  let cloud3Height = 45;
8867
8935
  let cloud3Position = "bottom-32";
8868
8936
  if (size === "small") {
8869
- dollarSize = "size-[30px]";
8937
+ dollarSize = "size-[30px] p-1";
8870
8938
  planeSize = "w-16 h-16";
8871
8939
  cloud1Width = 60;
8872
8940
  cloud1Height = 27;
@@ -8878,7 +8946,7 @@ const Loading = ({ className, plane = true, size = "small",...props }) => {
8878
8946
  cloud3Height = 16;
8879
8947
  cloud3Position = "bottom-4";
8880
8948
  } else if (size === "medium") {
8881
- dollarSize = "size-[45px]";
8949
+ dollarSize = "size-[45px] p-2";
8882
8950
  planeSize = "w-24 h-24";
8883
8951
  cloud1Width = 140;
8884
8952
  cloud1Height = 63;
@@ -8890,7 +8958,7 @@ const Loading = ({ className, plane = true, size = "small",...props }) => {
8890
8958
  cloud3Height = 32;
8891
8959
  cloud3Position = "bottom-10";
8892
8960
  } else if (size === "large") {
8893
- dollarSize = "size-[75px]";
8961
+ dollarSize = "size-[75px] p-2";
8894
8962
  }
8895
8963
  const brand = useBrand();
8896
8964
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -8921,7 +8989,7 @@ const Loading = ({ className, plane = true, size = "small",...props }) => {
8921
8989
  className: "relative overflow-hidden w-full h-full",
8922
8990
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8923
8991
  className: `${brand === "prijsvrij" ? "bg-primary" : "bg-secondary"} rounded-full ${dollarSize} flex items-center justify-center`,
8924
- children: brand === "prijsvrij" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Dollar, { className: "animate-spin-slow w-full h-full p-2" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DReizenSign, { className: " w-full h-full p-2 animate-spin-slow" })
8992
+ children: brand === "prijsvrij" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Dollar, { className: "animate-spin-slow w-full h-full" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DReizenSign, { className: " w-full h-full animate-spin-slow" })
8925
8993
  })
8926
8994
  })
8927
8995
  });
@@ -8988,74 +9056,81 @@ const ReviewSmall = ({ className, rating, showArrow = true, "data-testid": dataT
8988
9056
 
8989
9057
  //#endregion
8990
9058
  //#region src/components/hero/index.tsx
8991
- const Hero = ({ className, sliderImages, topRightImage, bottomLeftImage, bottomRightImage, bottomRightOverlay, hotel, priceBoxPosition = "end",...props }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8992
- "data-component": "hero",
8993
- className: (0, clsx.default)(className, "bg-white p-1 rounded-lg hero-shadow"),
8994
- ...props,
8995
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8996
- className: "flex flex-col md:flex-row",
8997
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8998
- className: (0, clsx.default)("grid gap-1 md:aspect-[16/6] md:grid-cols-3 md:grid-rows-[2fr_1fr]", priceBoxPosition === "start" ? "order-2 md:order-2" : "order-1 md:order-1"),
8999
- children: [
9000
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9001
- className: "md:col-span-2 md:row-span-2 overflow-hidden rounded-l-lg relative",
9002
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ReviewSmall, {
9003
- className: "absolute right-4 top-4 z-50",
9004
- rating: 9.3
9005
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Slider, {
9006
- className: "h-full max-h-[340px] md:h-full rounded-l-lg",
9007
- slides: sliderImages.map((src, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
9008
- src,
9009
- alt: `Hero slide ${index + 1}`,
9010
- className: "h-full w-full object-cover rounded-l-lg"
9011
- }, index)),
9012
- showArrows: false,
9013
- dotsPlacement: "inside",
9014
- options: { loop: true },
9015
- lazyLoad: true
9016
- })]
9017
- }),
9018
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9019
- className: "hidden md:flex col-span-1 row-span-1 overflow-hidden",
9020
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
9021
- src: topRightImage,
9022
- alt: "Hero image 1",
9023
- className: "h-full w-full object-cover"
9024
- })
9025
- }),
9026
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9027
- className: "hidden md:grid col-span-1 row-span-1 grid-cols-2 gap-1",
9028
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9029
- className: "overflow-hidden",
9059
+ const Hero = ({ className, sliderImages, topRightImage, bottomLeftImage, bottomRightImage, bottomRightOverlay, warnText, hotel, buttonText = "Bekijk vakantie", priceBoxPosition = "end",...props }) => {
9060
+ const brand = useBrand("prijsvrij");
9061
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9062
+ "data-component": "hero",
9063
+ className: (0, clsx.default)(className, "bg-white p-1 rounded-sm hero-shadow"),
9064
+ ...props,
9065
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9066
+ className: "flex flex-col md:flex-row",
9067
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9068
+ className: (0, clsx.default)("grid gap-1 md:aspect-[16/6] md:grid-cols-3 md:grid-rows-[2fr_1fr]", priceBoxPosition === "start" ? "order-2 md:order-2" : "order-1 md:order-1"),
9069
+ children: [
9070
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9071
+ className: "md:col-span-2 md:row-span-2 overflow-hidden rounded-l-sm relative",
9072
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ReviewSmall, {
9073
+ className: "absolute right-4 top-4 z-50",
9074
+ rating: 9.3
9075
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Slider, {
9076
+ className: "rounded-l-sm",
9077
+ slides: sliderImages.map((src, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
9078
+ src,
9079
+ alt: `Hero slide ${index + 1}`,
9080
+ className: "h-full w-full object-cover rounded-l-sm"
9081
+ }, index)),
9082
+ showArrows: false,
9083
+ dotsPlacement: "inside",
9084
+ showDots: false,
9085
+ options: { loop: true },
9086
+ plugins: [(0, embla_carousel_auto_height.default)()],
9087
+ lazyLoad: true
9088
+ })]
9089
+ }),
9090
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9091
+ className: "hidden md:flex col-span-1 row-span-1 overflow-hidden",
9030
9092
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
9031
- src: bottomLeftImage,
9032
- alt: "Hero image 2",
9033
- className: "h-full w-full object-cover"
9093
+ src: topRightImage,
9094
+ alt: "Hero image 1",
9095
+ className: "h-full w-full object-cover rounded-tr-sm"
9034
9096
  })
9035
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9036
- className: "relative overflow-hidden ",
9037
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
9038
- src: bottomRightImage,
9039
- alt: "Hero image 3",
9040
- className: "h-full w-full object-cover"
9041
- }), bottomRightOverlay && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9042
- className: "absolute inset-0",
9043
- children: bottomRightOverlay
9097
+ }),
9098
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9099
+ className: "hidden md:grid col-span-1 row-span-1 grid-cols-2 gap-1",
9100
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9101
+ className: "overflow-hidden",
9102
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
9103
+ src: bottomLeftImage,
9104
+ alt: "Hero image 2",
9105
+ className: "h-full w-full object-cover"
9106
+ })
9107
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9108
+ className: "relative overflow-hidden ",
9109
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
9110
+ src: bottomRightImage,
9111
+ alt: "Hero image 3",
9112
+ className: "h-full w-full object-cover"
9113
+ }), bottomRightOverlay && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9114
+ className: "absolute inset-0",
9115
+ children: bottomRightOverlay
9116
+ })]
9044
9117
  })]
9045
- })]
9118
+ })
9119
+ ]
9120
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9121
+ className: (0, clsx.default)(priceBoxPosition === "start" ? "order-1 md:order-1" : "order-2 md:order-2"),
9122
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PriceBox, {
9123
+ noHover: true,
9124
+ noBorder: true,
9125
+ hotel,
9126
+ brand,
9127
+ warnText: warnText || "",
9128
+ buttonText
9046
9129
  })
9047
- ]
9048
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9049
- className: (0, clsx.default)(priceBoxPosition === "start" ? "order-1 md:order-1" : "order-2 md:order-2"),
9050
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PriceBox, {
9051
- noHover: true,
9052
- noBorder: true,
9053
- hotel,
9054
- brand: "prijsvrij"
9055
- })
9056
- })]
9057
- })
9058
- });
9130
+ })]
9131
+ })
9132
+ });
9133
+ };
9059
9134
 
9060
9135
  //#endregion
9061
9136
  //#region src/components/review/index.tsx
@@ -10584,6 +10659,7 @@ exports.IconHot = IconHot;
10584
10659
  exports.IconHotel = IconHotel;
10585
10660
  exports.IconHouse = IconHouse;
10586
10661
  exports.IconIce = IconIce;
10662
+ exports.IconImage = IconImage;
10587
10663
  exports.IconInfo = IconInfo;
10588
10664
  exports.IconInstagram = IconInstagram;
10589
10665
  exports.IconLuggage = IconLuggage;