@landtrustinc/design-system 1.2.21 → 1.2.25

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.js CHANGED
@@ -65,6 +65,8 @@ __export(src_exports, {
65
65
  ReviewCard: () => ReviewCard_default,
66
66
  Reviews: () => Reviews_default,
67
67
  ReviewsShowcase: () => ReviewsShowcase_default,
68
+ ScrollingCarousel: () => ScrollingCarousel,
69
+ ScrollingCarouselStep: () => ScrollingCarouselStep,
68
70
  Select: () => Select,
69
71
  Spinner: () => Spinner_default2,
70
72
  StarRating: () => StarRating_default,
@@ -3716,12 +3718,12 @@ var Button = import_react6.default.forwardRef(
3716
3718
  isLoading = false,
3717
3719
  className = "",
3718
3720
  labelStyleOverrides = import_react5.css``,
3719
- icon,
3721
+ icon: icon2,
3720
3722
  ...props
3721
3723
  }, ref) => {
3722
3724
  const componentType = Component === "button" ? type : void 0;
3723
3725
  const sizeKey = `size${(0, import_lodash.upperFirst)(size)}`;
3724
- const isIconOnly = icon && !children;
3726
+ const isIconOnly = icon2 && !children;
3725
3727
  return /* @__PURE__ */ (0, import_jsx_runtime208.jsxs)(
3726
3728
  Component,
3727
3729
  {
@@ -3736,7 +3738,7 @@ var Button = import_react6.default.forwardRef(
3736
3738
  isIconOnly && size === "lg" && styles.iconOnlyLg,
3737
3739
  isIconOnly && size !== "lg" && styles.iconOnly,
3738
3740
  (isLoading || disabled) && styles.disabled,
3739
- icon && children && styles.withIcon
3741
+ icon2 && children && styles.withIcon
3740
3742
  ],
3741
3743
  ...props,
3742
3744
  onClick: (e) => {
@@ -3748,7 +3750,7 @@ var Button = import_react6.default.forwardRef(
3748
3750
  (_a = props.onClick) == null ? void 0 : _a.call(props, e);
3749
3751
  },
3750
3752
  children: [
3751
- icon,
3753
+ icon2,
3752
3754
  children && /* @__PURE__ */ (0, import_jsx_runtime208.jsx)("span", { css: [labelStyles(!isLoading), labelStyleOverrides], children }),
3753
3755
  isLoading && /* @__PURE__ */ (0, import_jsx_runtime208.jsx)(Spinner_default2, { css: spinnerStyles2(variant) })
3754
3756
  ]
@@ -5028,12 +5030,10 @@ var avatarSizeStyles = {
5028
5030
  var avatarBaseStyles = import_react16.css`
5029
5031
  border-radius: 50%;
5030
5032
  object-fit: cover;
5031
- border: 1px solid var(--color-neutral-200);
5032
5033
  display: block;
5033
5034
  `;
5034
5035
  var avatarTextStyles = import_react16.css`
5035
5036
  border-radius: 50%;
5036
- border: 1px solid var(--color-neutral-200);
5037
5037
  background-color: var(--surface-action);
5038
5038
  color: white;
5039
5039
  display: flex;
@@ -5044,7 +5044,6 @@ var avatarTextStyles = import_react16.css`
5044
5044
  `;
5045
5045
  var avatarFallbackStyles = import_react16.css`
5046
5046
  border-radius: 50%;
5047
- border: 1px solid var(--color-neutral-200);
5048
5047
  background-color: var(--color-neutral-100);
5049
5048
  color: var(--color-neutral-500);
5050
5049
  display: flex;
@@ -5542,8 +5541,8 @@ var useWidgetContext = () => {
5542
5541
  return ctx;
5543
5542
  };
5544
5543
  var WidgetTrigger = () => {
5545
- const { expanded, toggle, triggerRef, icon, expandedIcon } = useWidgetContext();
5546
- const currentIcon = expanded ? expandedIcon : icon;
5544
+ const { expanded, toggle, triggerRef, icon: icon2, expandedIcon } = useWidgetContext();
5545
+ const currentIcon = expanded ? expandedIcon : icon2;
5547
5546
  return /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(import_jsx_runtime223.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(
5548
5547
  Button_default,
5549
5548
  {
@@ -5574,7 +5573,7 @@ var WidgetPanel = ({ className, style, children }) => {
5574
5573
  };
5575
5574
  var WidgetRoot = ({
5576
5575
  ariaLabel,
5577
- icon = "Plus",
5576
+ icon: icon2 = "Plus",
5578
5577
  expandedIcon = "Xmark",
5579
5578
  defaultExpanded = false,
5580
5579
  expanded,
@@ -5637,11 +5636,11 @@ var WidgetRoot = ({
5637
5636
  expanded: isExpanded,
5638
5637
  toggle,
5639
5638
  triggerRef,
5640
- icon,
5639
+ icon: icon2,
5641
5640
  expandedIcon,
5642
5641
  panelWidth: panelWidth != null ? panelWidth : 480
5643
5642
  }),
5644
- [expandedIcon, icon, isExpanded, panelWidth, toggle]
5643
+ [expandedIcon, icon2, isExpanded, panelWidth, toggle]
5645
5644
  );
5646
5645
  return /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(
5647
5646
  Box_default,
@@ -6084,6 +6083,7 @@ var ChatWidget = ({
6084
6083
  var ChatWidget_default = ChatWidget;
6085
6084
 
6086
6085
  // src/FeatureList/components/FeatureListItem.tsx
6086
+ var import_react31 = require("@emotion/react");
6087
6087
  var import_react_loading_skeleton = __toESM(require("react-loading-skeleton"));
6088
6088
  var import_jsx_runtime226 = require("@emotion/react/jsx-runtime");
6089
6089
  var FeatureListItem = ({
@@ -6146,7 +6146,17 @@ var FeatureListItem = ({
6146
6146
  className,
6147
6147
  ...rest,
6148
6148
  children: [
6149
- iconVariant && /* @__PURE__ */ (0, import_jsx_runtime226.jsx)(Icon_default, { variant: iconVariant, size: iconSize, fill: iconColor }),
6149
+ iconVariant && /* @__PURE__ */ (0, import_jsx_runtime226.jsx)(
6150
+ Icon_default,
6151
+ {
6152
+ variant: iconVariant,
6153
+ size: iconSize,
6154
+ fill: iconColor,
6155
+ css: import_react31.css`
6156
+ flex-shrink: 0;
6157
+ `
6158
+ }
6159
+ ),
6150
6160
  /* @__PURE__ */ (0, import_jsx_runtime226.jsx)(Text_default, { fontWeight: "semibold", size: labelSize, children: label })
6151
6161
  ]
6152
6162
  }
@@ -6179,8 +6189,8 @@ var FeatureList = ({ heading, items, className }) => {
6179
6189
  var FeatureList_default = FeatureList;
6180
6190
 
6181
6191
  // src/FieldNoteCard/FieldNoteCard.styles.ts
6182
- var import_react31 = require("@emotion/react");
6183
- var cardContainerStyles = import_react31.css`
6192
+ var import_react32 = require("@emotion/react");
6193
+ var cardContainerStyles = import_react32.css`
6184
6194
  position: relative;
6185
6195
  height: 335px;
6186
6196
 
@@ -6188,12 +6198,12 @@ var cardContainerStyles = import_react31.css`
6188
6198
  height: 480px;
6189
6199
  }
6190
6200
  `;
6191
- var cardContentStyles = import_react31.css`
6201
+ var cardContentStyles = import_react32.css`
6192
6202
  position: relative;
6193
6203
  border-radius: var(--spacing-4);
6194
6204
  overflow: hidden;
6195
6205
  `;
6196
- var getBackgroundWithGradient = (imageUrl) => import_react31.css`
6206
+ var getBackgroundWithGradient = (imageUrl) => import_react32.css`
6197
6207
  background-image: linear-gradient(
6198
6208
  180deg,
6199
6209
  rgba(0, 0, 0, 0) 48.36%,
@@ -6243,14 +6253,14 @@ var FieldNoteCard = ({
6243
6253
  var FieldNoteCard_default = FieldNoteCard;
6244
6254
 
6245
6255
  // src/Form/FormField.tsx
6246
- var import_react32 = require("@emotion/react");
6256
+ var import_react33 = require("@emotion/react");
6247
6257
  var import_jsx_runtime229 = require("@emotion/react/jsx-runtime");
6248
- var fieldContainerStyles = import_react32.css`
6258
+ var fieldContainerStyles = import_react33.css`
6249
6259
  display: flex;
6250
6260
  flex-direction: column;
6251
6261
  gap: ${space["2"]};
6252
6262
  `;
6253
- var labelStyles2 = import_react32.css`
6263
+ var labelStyles2 = import_react33.css`
6254
6264
  font-family: ${fonts.base};
6255
6265
  font-size: ${fontSizes.sm};
6256
6266
  font-weight: ${fontWeights.medium};
@@ -6258,17 +6268,17 @@ var labelStyles2 = import_react32.css`
6258
6268
  color: ${colors.gray["900"]};
6259
6269
  margin-bottom: ${space["1"]};
6260
6270
  `;
6261
- var requiredIndicatorStyles = import_react32.css`
6271
+ var requiredIndicatorStyles = import_react33.css`
6262
6272
  color: ${colors.red["500"]};
6263
6273
  margin-left: ${space["1"]};
6264
6274
  `;
6265
- var helpTextStyles = import_react32.css`
6275
+ var helpTextStyles = import_react33.css`
6266
6276
  font-family: ${fonts.base};
6267
6277
  font-size: ${fontSizes.sm};
6268
6278
  line-height: ${lineHeights.tight};
6269
6279
  color: ${colors.gray["600"]};
6270
6280
  `;
6271
- var errorTextStyles = import_react32.css`
6281
+ var errorTextStyles = import_react33.css`
6272
6282
  font-family: ${fonts.base};
6273
6283
  font-size: ${fontSizes.sm};
6274
6284
  line-height: ${lineHeights.tight};
@@ -6277,7 +6287,7 @@ var errorTextStyles = import_react32.css`
6277
6287
  align-items: center;
6278
6288
  gap: ${space["1"]};
6279
6289
  `;
6280
- var successTextStyles = import_react32.css`
6290
+ var successTextStyles = import_react33.css`
6281
6291
  font-family: ${fonts.base};
6282
6292
  font-size: ${fontSizes.sm};
6283
6293
  line-height: ${lineHeights.tight};
@@ -6286,7 +6296,7 @@ var successTextStyles = import_react32.css`
6286
6296
  align-items: center;
6287
6297
  gap: ${space["1"]};
6288
6298
  `;
6289
- var visuallyHiddenStyles = import_react32.css`
6299
+ var visuallyHiddenStyles = import_react33.css`
6290
6300
  position: absolute;
6291
6301
  width: 1px;
6292
6302
  height: 1px;
@@ -6351,10 +6361,10 @@ var FormField = ({
6351
6361
  };
6352
6362
 
6353
6363
  // src/Form/Input.tsx
6354
- var import_react33 = require("@emotion/react");
6355
- var import_react34 = require("react");
6364
+ var import_react34 = require("@emotion/react");
6365
+ var import_react35 = require("react");
6356
6366
  var import_jsx_runtime230 = require("@emotion/react/jsx-runtime");
6357
- var inputStyles = import_react33.css`
6367
+ var inputStyles = import_react34.css`
6358
6368
  position: relative;
6359
6369
  width: 100%;
6360
6370
  font-family: ${fonts.base};
@@ -6391,19 +6401,19 @@ var inputStyles = import_react33.css`
6391
6401
  }
6392
6402
  `;
6393
6403
  var sizeStyles = {
6394
- sm: import_react33.css`
6404
+ sm: import_react34.css`
6395
6405
  padding: ${space["2"]} ${space["3"]};
6396
6406
  font-size: ${fontSizes.sm};
6397
6407
  line-height: ${lineHeights.tight};
6398
6408
  height: ${space["8"]};
6399
6409
  `,
6400
- md: import_react33.css`
6410
+ md: import_react34.css`
6401
6411
  padding: ${space["3"]} ${space["4"]};
6402
6412
  font-size: ${fontSizes.base};
6403
6413
  line-height: ${lineHeights.normal};
6404
6414
  height: ${space["10"]};
6405
6415
  `,
6406
- lg: import_react33.css`
6416
+ lg: import_react34.css`
6407
6417
  padding: ${space["4"]} ${space["5"]};
6408
6418
  font-size: ${fontSizes.lg};
6409
6419
  line-height: ${lineHeights.normal};
@@ -6411,8 +6421,8 @@ var sizeStyles = {
6411
6421
  `
6412
6422
  };
6413
6423
  var variantStyles = {
6414
- default: import_react33.css``,
6415
- error: import_react33.css`
6424
+ default: import_react34.css``,
6425
+ error: import_react34.css`
6416
6426
  border-color: ${colors.red["500"]};
6417
6427
 
6418
6428
  &:focus {
@@ -6420,7 +6430,7 @@ var variantStyles = {
6420
6430
  box-shadow: 0 0 0 3px ${colors.red["100"]};
6421
6431
  }
6422
6432
  `,
6423
- success: import_react33.css`
6433
+ success: import_react34.css`
6424
6434
  border-color: ${colors.accent.green};
6425
6435
 
6426
6436
  &:focus {
@@ -6429,7 +6439,7 @@ var variantStyles = {
6429
6439
  }
6430
6440
  `
6431
6441
  };
6432
- var inputWithIconStyles = import_react33.css`
6442
+ var inputWithIconStyles = import_react34.css`
6433
6443
  padding-left: ${space["10"]};
6434
6444
 
6435
6445
  &.has-end-icon {
@@ -6440,7 +6450,7 @@ var inputWithIconStyles = import_react33.css`
6440
6450
  padding-left: ${space["10"]};
6441
6451
  }
6442
6452
  `;
6443
- var iconContainerStyles = import_react33.css`
6453
+ var iconContainerStyles = import_react34.css`
6444
6454
  position: absolute;
6445
6455
  top: 50%;
6446
6456
  transform: translateY(-50%);
@@ -6451,20 +6461,20 @@ var iconContainerStyles = import_react33.css`
6451
6461
  pointer-events: none;
6452
6462
  z-index: 1;
6453
6463
  `;
6454
- var startIconStyles = import_react33.css`
6464
+ var startIconStyles = import_react34.css`
6455
6465
  ${iconContainerStyles}
6456
6466
  left: ${space["3"]};
6457
6467
  `;
6458
- var endIconStyles = import_react33.css`
6468
+ var endIconStyles = import_react34.css`
6459
6469
  ${iconContainerStyles}
6460
6470
  right: ${space["3"]};
6461
6471
  `;
6462
- var inputWrapperStyles = import_react33.css`
6472
+ var inputWrapperStyles = import_react34.css`
6463
6473
  position: relative;
6464
6474
  display: inline-block;
6465
6475
  width: 100%;
6466
6476
  `;
6467
- var Input = (0, import_react34.forwardRef)(
6477
+ var Input = (0, import_react35.forwardRef)(
6468
6478
  ({
6469
6479
  size = "md",
6470
6480
  variant = "default",
@@ -6509,10 +6519,10 @@ var Input = (0, import_react34.forwardRef)(
6509
6519
  Input.displayName = "Input";
6510
6520
 
6511
6521
  // src/Form/Select.tsx
6512
- var import_react35 = require("@emotion/react");
6513
- var import_react36 = require("react");
6522
+ var import_react36 = require("@emotion/react");
6523
+ var import_react37 = require("react");
6514
6524
  var import_jsx_runtime231 = require("@emotion/react/jsx-runtime");
6515
- var selectStyles = import_react35.css`
6525
+ var selectStyles = import_react36.css`
6516
6526
  position: relative;
6517
6527
  width: 100%;
6518
6528
  font-family: ${fonts.base};
@@ -6551,19 +6561,19 @@ var selectStyles = import_react35.css`
6551
6561
  }
6552
6562
  `;
6553
6563
  var sizeStyles2 = {
6554
- sm: import_react35.css`
6564
+ sm: import_react36.css`
6555
6565
  padding: ${space["2"]} ${space["3"]};
6556
6566
  font-size: ${fontSizes.sm};
6557
6567
  line-height: ${lineHeights.tight};
6558
6568
  height: ${space["8"]};
6559
6569
  `,
6560
- md: import_react35.css`
6570
+ md: import_react36.css`
6561
6571
  padding: ${space["3"]} ${space["4"]};
6562
6572
  font-size: ${fontSizes.base};
6563
6573
  line-height: ${lineHeights.normal};
6564
6574
  height: ${space["10"]};
6565
6575
  `,
6566
- lg: import_react35.css`
6576
+ lg: import_react36.css`
6567
6577
  padding: ${space["4"]} ${space["5"]};
6568
6578
  font-size: ${fontSizes.lg};
6569
6579
  line-height: ${lineHeights.normal};
@@ -6571,8 +6581,8 @@ var sizeStyles2 = {
6571
6581
  `
6572
6582
  };
6573
6583
  var variantStyles2 = {
6574
- default: import_react35.css``,
6575
- error: import_react35.css`
6584
+ default: import_react36.css``,
6585
+ error: import_react36.css`
6576
6586
  border-color: ${colors.red["500"]};
6577
6587
 
6578
6588
  &:focus {
@@ -6580,7 +6590,7 @@ var variantStyles2 = {
6580
6590
  box-shadow: 0 0 0 3px ${colors.red["100"]};
6581
6591
  }
6582
6592
  `,
6583
- success: import_react35.css`
6593
+ success: import_react36.css`
6584
6594
  border-color: ${colors.accent.green};
6585
6595
 
6586
6596
  &:focus {
@@ -6589,7 +6599,7 @@ var variantStyles2 = {
6589
6599
  }
6590
6600
  `
6591
6601
  };
6592
- var optionStyles = import_react35.css`
6602
+ var optionStyles = import_react36.css`
6593
6603
  background-color: ${colors.light["100"]};
6594
6604
  color: ${colors.gray["900"]};
6595
6605
 
@@ -6598,7 +6608,7 @@ var optionStyles = import_react35.css`
6598
6608
  background-color: ${colors.gray["100"]};
6599
6609
  }
6600
6610
  `;
6601
- var Select = (0, import_react36.forwardRef)(
6611
+ var Select = (0, import_react37.forwardRef)(
6602
6612
  ({
6603
6613
  size = "md",
6604
6614
  variant = "default",
@@ -6636,10 +6646,10 @@ var Select = (0, import_react36.forwardRef)(
6636
6646
  Select.displayName = "Select";
6637
6647
 
6638
6648
  // src/Grid/Column.tsx
6639
- var import_react38 = require("@emotion/react");
6649
+ var import_react39 = require("@emotion/react");
6640
6650
 
6641
6651
  // src/Grid/utils.ts
6642
- var import_react37 = require("@emotion/react");
6652
+ var import_react38 = require("@emotion/react");
6643
6653
  var LayoutTokens = {
6644
6654
  containers: {
6645
6655
  sm: screens.sm,
@@ -6679,11 +6689,11 @@ var getResponsiveValue = (value) => {
6679
6689
  var generateGridColumns = (columns) => {
6680
6690
  const baseColumns = getResponsiveValue(columns);
6681
6691
  if (typeof columns === "number") {
6682
- return import_react37.css`
6692
+ return import_react38.css`
6683
6693
  grid-template-columns: repeat(${columns}, 1fr);
6684
6694
  `;
6685
6695
  }
6686
- return import_react37.css`
6696
+ return import_react38.css`
6687
6697
  grid-template-columns: repeat(${baseColumns}, 1fr);
6688
6698
 
6689
6699
  ${media.sm} {
@@ -6715,11 +6725,11 @@ var generateGridColumns = (columns) => {
6715
6725
  var generateGapStyles = (gap2) => {
6716
6726
  const baseGap = getResponsiveValue(gap2);
6717
6727
  if (typeof gap2 === "string" || typeof gap2 === "number") {
6718
- return import_react37.css`
6728
+ return import_react38.css`
6719
6729
  gap: ${space[gap2]};
6720
6730
  `;
6721
6731
  }
6722
- return import_react37.css`
6732
+ return import_react38.css`
6723
6733
  gap: ${space[baseGap]};
6724
6734
 
6725
6735
  ${media.sm} {
@@ -6742,11 +6752,11 @@ var generateGapStyles = (gap2) => {
6742
6752
  var generateRowGapStyles = (rowGap) => {
6743
6753
  const baseRowGap = getResponsiveValue(rowGap);
6744
6754
  if (typeof rowGap === "string" || typeof rowGap === "number") {
6745
- return import_react37.css`
6755
+ return import_react38.css`
6746
6756
  row-gap: ${space[rowGap]};
6747
6757
  `;
6748
6758
  }
6749
- return import_react37.css`
6759
+ return import_react38.css`
6750
6760
  row-gap: ${space[baseRowGap]};
6751
6761
 
6752
6762
  ${media.sm} {
@@ -6769,11 +6779,11 @@ var generateRowGapStyles = (rowGap) => {
6769
6779
  var generateColumnGapStyles = (columnGap) => {
6770
6780
  const baseColumnGap = getResponsiveValue(columnGap);
6771
6781
  if (typeof columnGap === "string" || typeof columnGap === "number") {
6772
- return import_react37.css`
6782
+ return import_react38.css`
6773
6783
  column-gap: ${space[columnGap]};
6774
6784
  `;
6775
6785
  }
6776
- return import_react37.css`
6786
+ return import_react38.css`
6777
6787
  column-gap: ${space[baseColumnGap]};
6778
6788
 
6779
6789
  ${media.sm} {
@@ -6796,11 +6806,11 @@ var generateColumnGapStyles = (columnGap) => {
6796
6806
  var generateColumnSpan = (span) => {
6797
6807
  const baseSpan = getResponsiveValue(span);
6798
6808
  if (typeof span === "string" || typeof span === "number") {
6799
- return import_react37.css`
6809
+ return import_react38.css`
6800
6810
  grid-column: ${span === "auto" ? "auto" : `span ${span}`};
6801
6811
  `;
6802
6812
  }
6803
- return import_react37.css`
6813
+ return import_react38.css`
6804
6814
  grid-column: ${baseSpan === "auto" ? "auto" : `span ${baseSpan}`};
6805
6815
 
6806
6816
  ${media.sm} {
@@ -6823,11 +6833,11 @@ var generateColumnSpan = (span) => {
6823
6833
  var generateAlignItems = (alignItems) => {
6824
6834
  const baseAlign = getResponsiveValue(alignItems);
6825
6835
  if (typeof alignItems === "string") {
6826
- return import_react37.css`
6836
+ return import_react38.css`
6827
6837
  align-items: ${alignItems};
6828
6838
  `;
6829
6839
  }
6830
- return import_react37.css`
6840
+ return import_react38.css`
6831
6841
  align-items: ${baseAlign};
6832
6842
 
6833
6843
  ${media.sm} {
@@ -6850,11 +6860,11 @@ var generateAlignItems = (alignItems) => {
6850
6860
  var generateJustifyItems = (justifyItems) => {
6851
6861
  const baseJustify = getResponsiveValue(justifyItems);
6852
6862
  if (typeof justifyItems === "string") {
6853
- return import_react37.css`
6863
+ return import_react38.css`
6854
6864
  justify-items: ${justifyItems};
6855
6865
  `;
6856
6866
  }
6857
- return import_react37.css`
6867
+ return import_react38.css`
6858
6868
  justify-items: ${baseJustify};
6859
6869
 
6860
6870
  ${media.sm} {
@@ -6889,19 +6899,19 @@ var Column = ({
6889
6899
  }) => {
6890
6900
  const columnStyles = [
6891
6901
  span && generateColumnSpan(span),
6892
- start && import_react38.css`
6902
+ start && import_react39.css`
6893
6903
  grid-column-start: ${start};
6894
6904
  `,
6895
- end && import_react38.css`
6905
+ end && import_react39.css`
6896
6906
  grid-column-end: ${end};
6897
6907
  `,
6898
- row && import_react38.css`
6908
+ row && import_react39.css`
6899
6909
  grid-row: ${row};
6900
6910
  `,
6901
- rowSpan && import_react38.css`
6911
+ rowSpan && import_react39.css`
6902
6912
  grid-row: span ${rowSpan};
6903
6913
  `,
6904
- area && import_react38.css`
6914
+ area && import_react39.css`
6905
6915
  grid-area: ${area};
6906
6916
  `
6907
6917
  ].filter(Boolean);
@@ -6910,9 +6920,9 @@ var Column = ({
6910
6920
  var Column_default = Column;
6911
6921
 
6912
6922
  // src/Grid/Grid.tsx
6913
- var import_react39 = require("@emotion/react");
6923
+ var import_react40 = require("@emotion/react");
6914
6924
  var import_jsx_runtime233 = require("@emotion/react/jsx-runtime");
6915
- var baseGridStyles = import_react39.css`
6925
+ var baseGridStyles = import_react40.css`
6916
6926
  display: grid;
6917
6927
  `;
6918
6928
  var Grid = ({
@@ -6937,16 +6947,16 @@ var Grid = ({
6937
6947
  columnGap && generateColumnGapStyles(columnGap),
6938
6948
  alignItems && generateAlignItems(alignItems),
6939
6949
  justifyItems && generateJustifyItems(justifyItems),
6940
- autoRows && import_react39.css`
6950
+ autoRows && import_react40.css`
6941
6951
  grid-auto-rows: ${autoRows};
6942
6952
  `,
6943
- autoColumns && import_react39.css`
6953
+ autoColumns && import_react40.css`
6944
6954
  grid-auto-columns: ${autoColumns};
6945
6955
  `,
6946
- templateAreas && import_react39.css`
6956
+ templateAreas && import_react40.css`
6947
6957
  grid-template-areas: ${typeof templateAreas === "string" ? templateAreas : templateAreas._};
6948
6958
  `,
6949
- justifyContent && import_react39.css`
6959
+ justifyContent && import_react40.css`
6950
6960
  justify-content: ${typeof justifyContent === "string" ? justifyContent : justifyContent._};
6951
6961
  `
6952
6962
  ].filter(Boolean);
@@ -6955,9 +6965,9 @@ var Grid = ({
6955
6965
  var Grid_default = Grid;
6956
6966
 
6957
6967
  // src/Grid/GridContainer.tsx
6958
- var import_react40 = require("@emotion/react");
6968
+ var import_react41 = require("@emotion/react");
6959
6969
  var import_jsx_runtime234 = require("@emotion/react/jsx-runtime");
6960
- var baseContainerStyles = import_react40.css`
6970
+ var baseContainerStyles = import_react41.css`
6961
6971
  width: 100%;
6962
6972
  margin: 0 auto;
6963
6973
  padding-left: 1rem;
@@ -6965,14 +6975,14 @@ var baseContainerStyles = import_react40.css`
6965
6975
  `;
6966
6976
  var generateMaxWidthStyles = (maxWidth) => {
6967
6977
  if (maxWidth === "full") {
6968
- return import_react40.css`
6978
+ return import_react41.css`
6969
6979
  max-width: 100%;
6970
6980
  padding-left: 0;
6971
6981
  padding-right: 0;
6972
6982
  `;
6973
6983
  }
6974
6984
  const width2 = LayoutTokens.containers[maxWidth] || maxWidth;
6975
- return import_react40.css`
6985
+ return import_react41.css`
6976
6986
  max-width: ${width2};
6977
6987
 
6978
6988
  ${media.sm} {
@@ -7006,8 +7016,8 @@ var GridContainer = ({
7006
7016
  var GridContainer_default = GridContainer;
7007
7017
 
7008
7018
  // src/HuntCard/HuntCard.styles.ts
7009
- var import_react41 = require("@emotion/react");
7010
- var cardContainerStyles2 = import_react41.css`
7019
+ var import_react42 = require("@emotion/react");
7020
+ var cardContainerStyles2 = import_react42.css`
7011
7021
  position: relative;
7012
7022
  height: 335px;
7013
7023
 
@@ -7015,12 +7025,12 @@ var cardContainerStyles2 = import_react41.css`
7015
7025
  height: 480px;
7016
7026
  }
7017
7027
  `;
7018
- var cardContentStyles2 = import_react41.css`
7028
+ var cardContentStyles2 = import_react42.css`
7019
7029
  position: relative;
7020
7030
  border-radius: var(--spacing-4);
7021
7031
  overflow: hidden;
7022
7032
  `;
7023
- var getBackgroundWithGradient2 = (imageUrl) => import_react41.css`
7033
+ var getBackgroundWithGradient2 = (imageUrl) => import_react42.css`
7024
7034
  background-image: linear-gradient(
7025
7035
  180deg,
7026
7036
  rgba(0, 0, 0, 0) 48.36%,
@@ -7333,11 +7343,11 @@ var LandownerProfile = ({
7333
7343
  var LandownerProfile_default = LandownerProfile;
7334
7344
 
7335
7345
  // src/ListingChat/ListingChat.tsx
7336
- var import_react43 = require("react");
7346
+ var import_react44 = require("react");
7337
7347
 
7338
7348
  // src/ListingChat/ListingChat.styles.ts
7339
- var import_react42 = require("@emotion/react");
7340
- var containerStyles2 = import_react42.css`
7349
+ var import_react43 = require("@emotion/react");
7350
+ var containerStyles2 = import_react43.css`
7341
7351
  display: flex;
7342
7352
  flex-direction: column;
7343
7353
  gap: var(--spacing-4);
@@ -7345,13 +7355,13 @@ var containerStyles2 = import_react42.css`
7345
7355
  border-radius: var(--radius-lg);
7346
7356
  background: var(--surface-success);
7347
7357
  `;
7348
- var headerStyles = import_react42.css`
7358
+ var headerStyles = import_react43.css`
7349
7359
  display: flex;
7350
7360
  align-items: flex-start;
7351
7361
  justify-content: space-between;
7352
7362
  gap: var(--spacing-2);
7353
7363
  `;
7354
- var chipsContainerStyles = import_react42.css`
7364
+ var chipsContainerStyles = import_react43.css`
7355
7365
  display: flex;
7356
7366
  flex-wrap: wrap;
7357
7367
  gap: var(--spacing-4);
@@ -7364,10 +7374,10 @@ var chipsContainerStyles = import_react42.css`
7364
7374
  cursor: pointer;
7365
7375
  }
7366
7376
  `;
7367
- var textAreaStyles = import_react42.css`
7377
+ var textAreaStyles = import_react43.css`
7368
7378
  min-height: 62px;
7369
7379
  `;
7370
- var inputWrapperStyles2 = import_react42.css`
7380
+ var inputWrapperStyles2 = import_react43.css`
7371
7381
  position: relative;
7372
7382
  `;
7373
7383
 
@@ -7382,15 +7392,15 @@ var ListingChat = ({
7382
7392
  disabled = false,
7383
7393
  ...rest
7384
7394
  }) => {
7385
- const [value, setValue] = (0, import_react43.useState)("");
7386
- const handleSubmit = (0, import_react43.useCallback)(() => {
7395
+ const [value, setValue] = (0, import_react44.useState)("");
7396
+ const handleSubmit = (0, import_react44.useCallback)(() => {
7387
7397
  const trimmed = value.trim();
7388
7398
  if (!trimmed)
7389
7399
  return;
7390
7400
  onSubmit(trimmed);
7391
7401
  setValue("");
7392
7402
  }, [onSubmit, value]);
7393
- const handleTagClick = (0, import_react43.useCallback)(
7403
+ const handleTagClick = (0, import_react44.useCallback)(
7394
7404
  (tag) => () => {
7395
7405
  const trimmed = tag.trim();
7396
7406
  if (!trimmed)
@@ -7442,7 +7452,7 @@ var ListingChat = ({
7442
7452
  var ListingChat_default = ListingChat;
7443
7453
 
7444
7454
  // src/Logo/Logo.tsx
7445
- var import_react44 = require("@emotion/react");
7455
+ var import_react45 = require("@emotion/react");
7446
7456
 
7447
7457
  // src/Logo/components/LandtrustPlusDark.tsx
7448
7458
  var import_jsx_runtime242 = require("@emotion/react/jsx-runtime");
@@ -7664,7 +7674,7 @@ var LandtrustStandardLight_default = SvgLandtrustStandardLight;
7664
7674
 
7665
7675
  // src/Logo/Logo.tsx
7666
7676
  var import_jsx_runtime246 = require("@emotion/react/jsx-runtime");
7667
- var logoStyles = (size) => import_react44.css`
7677
+ var logoStyles = (size) => import_react45.css`
7668
7678
  width: ${space[size]};
7669
7679
  height: auto;
7670
7680
  display: block;
@@ -7697,13 +7707,13 @@ var Logo = ({
7697
7707
  var Logo_default = Logo;
7698
7708
 
7699
7709
  // src/Navigation/Navigation.styles.ts
7700
- var import_react45 = require("@emotion/react");
7701
- var navigationStyles = import_react45.css`
7710
+ var import_react46 = require("@emotion/react");
7711
+ var navigationStyles = import_react46.css`
7702
7712
  width: 100%;
7703
7713
  background-color: white;
7704
7714
  border-bottom: 1px solid #e5e5e5;
7705
7715
  `;
7706
- var hamburgerButtonStyles = import_react45.css`
7716
+ var hamburgerButtonStyles = import_react46.css`
7707
7717
  cursor: pointer;
7708
7718
  &:focus {
7709
7719
  outline: 2px solid #4f46e5;
@@ -7714,7 +7724,7 @@ var hamburgerButtonStyles = import_react45.css`
7714
7724
  display: none;
7715
7725
  }
7716
7726
  `;
7717
- var centeredLogoStyles = import_react45.css`
7727
+ var centeredLogoStyles = import_react46.css`
7718
7728
  transform: translate(-50%, -50%);
7719
7729
  max-width: 150px;
7720
7730
 
@@ -7722,27 +7732,27 @@ var centeredLogoStyles = import_react45.css`
7722
7732
  display: none;
7723
7733
  }
7724
7734
  `;
7725
- var desktopLogoStyles = import_react45.css`
7735
+ var desktopLogoStyles = import_react46.css`
7726
7736
  display: none;
7727
7737
 
7728
7738
  @media (min-width: 768px) {
7729
7739
  display: block;
7730
7740
  }
7731
7741
  `;
7732
- var containerStyles3 = import_react45.css`
7742
+ var containerStyles3 = import_react46.css`
7733
7743
  @media (min-width: 768px) {
7734
7744
  justify-content: space-between;
7735
7745
  position: static;
7736
7746
  }
7737
7747
  `;
7738
- var logoStyles2 = import_react45.css`
7748
+ var logoStyles2 = import_react46.css`
7739
7749
  width: 100%;
7740
7750
 
7741
7751
  @media (min-width: 768px) {
7742
7752
  width: initial;
7743
7753
  }
7744
7754
  `;
7745
- var desktopNavStyles = import_react45.css`
7755
+ var desktopNavStyles = import_react46.css`
7746
7756
  display: none;
7747
7757
 
7748
7758
  @media (min-width: 768px) {
@@ -7751,7 +7761,7 @@ var desktopNavStyles = import_react45.css`
7751
7761
  gap: 32px;
7752
7762
  }
7753
7763
  `;
7754
- var navLinksStyles = import_react45.css`
7764
+ var navLinksStyles = import_react46.css`
7755
7765
  display: flex;
7756
7766
  align-items: center;
7757
7767
  gap: 24px;
@@ -7759,7 +7769,7 @@ var navLinksStyles = import_react45.css`
7759
7769
  margin: 0;
7760
7770
  padding: 0;
7761
7771
  `;
7762
- var navLinkStyles = import_react45.css`
7772
+ var navLinkStyles = import_react46.css`
7763
7773
  text-decoration: none;
7764
7774
  color: #374151;
7765
7775
  font-weight: 500;
@@ -7775,7 +7785,7 @@ var navLinkStyles = import_react45.css`
7775
7785
  outline-offset: 2px;
7776
7786
  }
7777
7787
  `;
7778
- var avatarPlaceholderStyles = import_react45.css`
7788
+ var avatarPlaceholderStyles = import_react46.css`
7779
7789
  width: 32px;
7780
7790
  height: 32px;
7781
7791
  border-radius: 50%;
@@ -7876,55 +7886,686 @@ var Navigation = ({
7876
7886
  };
7877
7887
  var Navigation_default = Navigation;
7878
7888
 
7889
+ // src/ScrollingCarousel/components/ScrollingCarouselStep.tsx
7890
+ var import_react49 = require("react");
7891
+ var import_react_intersection_observer = require("react-intersection-observer");
7892
+
7893
+ // src/ScrollingCarousel/context/CarouselContext.tsx
7894
+ var import_react47 = __toESM(require("react"));
7895
+ var CarouselContext = import_react47.default.createContext(
7896
+ null
7897
+ );
7898
+
7899
+ // src/ScrollingCarousel/ScrollingCarousel.styles.ts
7900
+ var import_react48 = require("@emotion/react");
7901
+ var carouselRoot = import_react48.css`
7902
+ position: relative;
7903
+ `;
7904
+ var carousel = import_react48.css`
7905
+ display: flex;
7906
+ overflow-y: hidden;
7907
+ overflow-x: scroll;
7908
+ scroll-snap-type: x mandatory;
7909
+ -ms-overflow-style: none;
7910
+ scrollbar-width: none;
7911
+
7912
+ &::-webkit-scrollbar {
7913
+ display: none;
7914
+ }
7915
+ `;
7916
+ var step = import_react48.css`
7917
+ scroll-snap-align: center;
7918
+ flex-basis: 100%;
7919
+ flex-shrink: 0;
7920
+
7921
+ &:last-child {
7922
+ margin-right: 0;
7923
+ }
7924
+
7925
+ @media (min-width: 768px) {
7926
+ flex-basis: 100%;
7927
+ }
7928
+ `;
7929
+ var controls = (position2) => import_react48.css`
7930
+ ${(position2 === "left-right" || position2 === "top-right") && `
7931
+ display: none;
7932
+
7933
+ @media (min-width: 768px) {
7934
+ display: block;
7935
+ }
7936
+ `}
7937
+ `;
7938
+ var iconWrapper = import_react48.css`
7939
+ display: flex;
7940
+ width: var(--spacing-7);
7941
+ height: var(--spacing-7);
7942
+ border-radius: 50%;
7943
+ background: var(--color-base-white);
7944
+ align-items: center;
7945
+ justify-content: center;
7946
+ box-shadow: var(--shadow-md);
7947
+ `;
7948
+ var button = (position2) => import_react48.css`
7949
+ background: transparent;
7950
+ border-color: transparent;
7951
+ outline: none;
7952
+ cursor: pointer;
7953
+ z-index: 15;
7954
+ position: absolute;
7955
+ opacity: 0.9;
7956
+ transition: transform 0.3s ease, opacity 0.3s ease;
7957
+
7958
+ ${position2 === "left-right" && `
7959
+ top: calc(50% - (var(--spacing-12) / 2));
7960
+ `}
7961
+
7962
+ ${position2 === "bottom" && `
7963
+ top: calc(100% + var(--spacing-4));
7964
+
7965
+ @media (min-width: 768px) {
7966
+ top: calc(100% + var(--spacing-8));
7967
+ }
7968
+ `}
7969
+
7970
+ ${position2 === "top-right" && `
7971
+ top: calc(-1 * var(--spacing-24));
7972
+ `}
7973
+
7974
+ ${position2 === "inner-bottom" && `
7975
+ bottom: calc(-1 * var(--spacing-1));
7976
+ `}
7977
+ `;
7978
+ var buttonLeft = (position2) => import_react48.css`
7979
+ ${button(position2)}
7980
+
7981
+ ${position2 === "left-right" && `
7982
+ left: 0;
7983
+ `}
7984
+
7985
+ ${position2 === "bottom" && `
7986
+ left: calc(50% - var(--spacing-14));
7987
+ `}
7988
+
7989
+ ${position2 === "top-right" && `
7990
+ right: 60px;
7991
+ padding: 0;
7992
+ `}
7993
+
7994
+ ${position2 === "inner-bottom" && `
7995
+ left: calc(50% - var(--spacing-16));
7996
+ `}
7997
+ `;
7998
+ var customButtonLeft = (position2) => import_react48.css`
7999
+ ${button(position2)}
8000
+
8001
+ ${position2 === "left-right" && `
8002
+ left: 0;
8003
+ `}
8004
+
8005
+ ${position2 === "bottom" && `
8006
+ left: calc(50% - var(--spacing-14));
8007
+ `}
8008
+
8009
+ ${position2 === "top-right" && `
8010
+ right: var(--spacing-10);
8011
+ padding: 0;
8012
+ `}
8013
+
8014
+ ${position2 === "inner-bottom" && `
8015
+ left: calc(50% - var(--spacing-16));
8016
+ `}
8017
+ `;
8018
+ var buttonRight = (position2) => import_react48.css`
8019
+ ${button(position2)}
8020
+
8021
+ ${position2 === "left-right" && `
8022
+ right: 0;
8023
+ `}
8024
+
8025
+ ${position2 === "bottom" && `
8026
+ right: calc(50% - var(--spacing-14));
8027
+ `}
8028
+
8029
+ ${position2 === "top-right" && `
8030
+ right: 0;
8031
+ padding: 0;
8032
+ `}
8033
+
8034
+ ${position2 === "inner-bottom" && `
8035
+ right: calc(50% - var(--spacing-16));
8036
+ `}
8037
+ `;
8038
+ var icon = import_react48.css`
8039
+ width: var(--spacing-3);
8040
+ height: var(--spacing-3);
8041
+ color: var(--color-base-black);
8042
+ `;
8043
+ var dots = import_react48.css`
8044
+ position: absolute;
8045
+ bottom: var(--spacing-2);
8046
+ left: 0;
8047
+ right: 0;
8048
+ z-index: 10;
8049
+ display: flex;
8050
+ align-items: center;
8051
+ justify-content: center;
8052
+ `;
8053
+ var dotsInner = import_react48.css`
8054
+ display: flex;
8055
+ overflow: hidden;
8056
+ `;
8057
+ var dot = (dotsColor) => import_react48.css`
8058
+ position: relative;
8059
+ flex-shrink: 0;
8060
+ flex-grow: 0;
8061
+ transition: transform 500ms;
8062
+ background-color: transparent;
8063
+ border: 0;
8064
+ display: flex;
8065
+ align-items: center;
8066
+ justify-content: center;
8067
+ padding: 0;
8068
+ cursor: pointer;
8069
+
8070
+ &::after {
8071
+ content: '';
8072
+ display: block;
8073
+ position: absolute;
8074
+ top: 50%;
8075
+ left: 50%;
8076
+ height: 8px;
8077
+ width: 8px;
8078
+ border-radius: 50%;
8079
+ transition: opacity 500ms, transform 500ms;
8080
+ opacity: 0.75;
8081
+ transform: translate(-50%, -50%);
8082
+
8083
+ ${dotsColor === "light" && `
8084
+ background-color: var(--color-base-white);
8085
+ `}
8086
+
8087
+ ${dotsColor === "dark" && `
8088
+ background-color: var(--color-base-black);
8089
+ `}
8090
+
8091
+ ${dotsColor === "neutral" && `
8092
+ background-color: var(--color-neutral-500);
8093
+ `}
8094
+ }
8095
+ `;
8096
+ var dotDistance2 = import_react48.css`
8097
+ &::after {
8098
+ transform: translate(-50%, -50%) scale(0.9);
8099
+ }
8100
+ `;
8101
+ var dotDistance3 = import_react48.css`
8102
+ &::after {
8103
+ transform: translate(-50%, -50%) scale(0.8);
8104
+ }
8105
+ `;
8106
+ var dotDistanceGreaterThan3 = import_react48.css`
8107
+ &::after {
8108
+ transform: translate(-50%, -50%) scale(0.7);
8109
+ }
8110
+ `;
8111
+ var dotVisible = import_react48.css`
8112
+ &::after {
8113
+ opacity: 1;
8114
+ transform: translate(-50%, -50%) scale(1.2);
8115
+ }
8116
+ `;
8117
+
8118
+ // src/ScrollingCarousel/components/ScrollingCarouselStep.tsx
8119
+ var import_jsx_runtime248 = require("@emotion/react/jsx-runtime");
8120
+ var ScrollingCarouselStep = ({
8121
+ children,
8122
+ index,
8123
+ className,
8124
+ parentId,
8125
+ onClick
8126
+ }) => {
8127
+ const context = (0, import_react49.useContext)(CarouselContext);
8128
+ if (!context) {
8129
+ throw new Error(
8130
+ "ScrollingCarouselStep must be used within ScrollingCarousel"
8131
+ );
8132
+ }
8133
+ const { carousel: carousel2, dispatch } = context;
8134
+ const [ref, inView] = (0, import_react_intersection_observer.useInView)({
8135
+ threshold: 0.75,
8136
+ root: carousel2.current
8137
+ });
8138
+ (0, import_react49.useEffect)(() => {
8139
+ if (typeof index !== "undefined") {
8140
+ dispatch({
8141
+ type: "set_child_visibility",
8142
+ payload: { index, visible: inView }
8143
+ });
8144
+ }
8145
+ }, [inView, index, dispatch]);
8146
+ const dataStep = { [`data-step-${parentId}`]: index };
8147
+ return /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(
8148
+ "div",
8149
+ {
8150
+ ref,
8151
+ css: step,
8152
+ className,
8153
+ ...dataStep,
8154
+ onClick,
8155
+ role: "group",
8156
+ "aria-roledescription": "slide",
8157
+ children
8158
+ }
8159
+ );
8160
+ };
8161
+ ScrollingCarouselStep.displayName = "ScrollingCarouselStep";
8162
+
8163
+ // src/ScrollingCarousel/ScrollingCarousel.tsx
8164
+ var import_react53 = __toESM(require("react"));
8165
+
8166
+ // src/ScrollingCarousel/hooks/useCarouselDots.ts
8167
+ var import_react50 = require("react");
8168
+
8169
+ // src/ScrollingCarousel/ScrollingCarousel.helpers.ts
8170
+ var childVisibilityReducer = (state, action) => {
8171
+ switch (action.type) {
8172
+ case "set_child_visibility": {
8173
+ const newChildVisibility = [...state.childVisibility];
8174
+ newChildVisibility[action.payload.index] = action.payload.visible;
8175
+ return {
8176
+ childVisibility: newChildVisibility
8177
+ };
8178
+ }
8179
+ default:
8180
+ return state;
8181
+ }
8182
+ };
8183
+ var calculateDotOffset = (dotIndex, visualPositionIndex, dotWidth, dotMovementNeeded) => {
8184
+ return (dotIndex + visualPositionIndex) * dotWidth - dotMovementNeeded * dotWidth;
8185
+ };
8186
+ var calculateDotDistances = (childVisibility, centerDotIndex) => {
8187
+ return childVisibility.map((_, i) => Math.abs(centerDotIndex - i));
8188
+ };
8189
+
8190
+ // src/ScrollingCarousel/hooks/useCarouselDots.ts
8191
+ var useCarouselDots = ({
8192
+ childVisibility,
8193
+ firstVisibleIndex,
8194
+ lastVisibleIndex,
8195
+ anyItemsVisible,
8196
+ numberOfDots
8197
+ }) => {
8198
+ const dotOffset = (0, import_react50.useRef)(0);
8199
+ const dotWidth = 12;
8200
+ const totalDots = childVisibility.length;
8201
+ const dotToCenterIndex = Math.round(
8202
+ (firstVisibleIndex + lastVisibleIndex) / 2
8203
+ );
8204
+ const dotMovementNeeded = Math.round(numberOfDots / 2) + 1;
8205
+ const centerDotNearStart = dotToCenterIndex < dotMovementNeeded - 1;
8206
+ const centerDotNearEnd = dotToCenterIndex > totalDots - dotMovementNeeded;
8207
+ if (anyItemsVisible) {
8208
+ if (centerDotNearStart) {
8209
+ dotOffset.current = 0;
8210
+ } else if (centerDotNearEnd) {
8211
+ dotOffset.current = dotWidth * (totalDots - numberOfDots);
8212
+ } else {
8213
+ dotOffset.current = calculateDotOffset(
8214
+ dotToCenterIndex,
8215
+ 2,
8216
+ dotWidth,
8217
+ dotMovementNeeded
8218
+ );
8219
+ }
8220
+ }
8221
+ const dotDistances = calculateDotDistances(childVisibility, dotToCenterIndex);
8222
+ return {
8223
+ dotOffset,
8224
+ dotDistances,
8225
+ dotWidth
8226
+ };
8227
+ };
8228
+
8229
+ // src/ScrollingCarousel/hooks/useCarouselNavigation.ts
8230
+ var import_react51 = require("react");
8231
+
8232
+ // src/shared/helpers.ts
8233
+ var import_seamless_scroll_polyfill = require("seamless-scroll-polyfill");
8234
+ var isSafari = () => {
8235
+ if (typeof window === "undefined")
8236
+ return false;
8237
+ return /^((?!chrome|android).)*safari/i.test(window.navigator.userAgent);
8238
+ };
8239
+ var scrollTo = (el, config, parent) => {
8240
+ setTimeout(() => {
8241
+ if (isSafari()) {
8242
+ (0, import_seamless_scroll_polyfill.elementScrollIntoView)(el, config);
8243
+ } else {
8244
+ if (parent) {
8245
+ parent.scroll({ left: el.offsetLeft, behavior: "smooth" });
8246
+ } else {
8247
+ el.scrollIntoView(config);
8248
+ }
8249
+ }
8250
+ });
8251
+ };
8252
+
8253
+ // src/ScrollingCarousel/hooks/useCarouselNavigation.ts
8254
+ var useCarouselNavigation = ({
8255
+ carousel: carousel2,
8256
+ id,
8257
+ firstItemIsVisible,
8258
+ lastItemIsVisible,
8259
+ firstVisibleIndex,
8260
+ lastVisibleIndex,
8261
+ infiniteScroll,
8262
+ childVisibilityLength
8263
+ }) => {
8264
+ const getStepEl = (0, import_react51.useCallback)(
8265
+ (index) => {
8266
+ if (carousel2.current) {
8267
+ return carousel2.current.querySelectorAll(`[data-step-${id}]`)[index] || null;
8268
+ }
8269
+ return null;
8270
+ },
8271
+ [carousel2, id]
8272
+ );
8273
+ const next = (0, import_react51.useCallback)(
8274
+ (e) => {
8275
+ e.preventDefault();
8276
+ if (lastItemIsVisible && !infiniteScroll)
8277
+ return;
8278
+ const scrollToIndex = infiniteScroll && lastVisibleIndex === childVisibilityLength - 1 ? 0 : lastVisibleIndex + 1;
8279
+ const el = getStepEl(scrollToIndex);
8280
+ if (el) {
8281
+ scrollTo(
8282
+ el,
8283
+ {
8284
+ behavior: "smooth",
8285
+ inline: "start",
8286
+ block: "nearest"
8287
+ },
8288
+ carousel2.current
8289
+ );
8290
+ }
8291
+ },
8292
+ [
8293
+ lastItemIsVisible,
8294
+ lastVisibleIndex,
8295
+ infiniteScroll,
8296
+ childVisibilityLength,
8297
+ getStepEl,
8298
+ carousel2
8299
+ ]
8300
+ );
8301
+ const back = (0, import_react51.useCallback)(
8302
+ (e) => {
8303
+ e.preventDefault();
8304
+ if (firstItemIsVisible && !infiniteScroll)
8305
+ return;
8306
+ const scrollToIndex = firstVisibleIndex === 0 && infiniteScroll ? childVisibilityLength - 1 : firstVisibleIndex - 1;
8307
+ const el = getStepEl(scrollToIndex);
8308
+ if (el) {
8309
+ scrollTo(
8310
+ el,
8311
+ {
8312
+ behavior: "smooth",
8313
+ inline: "end",
8314
+ block: "nearest"
8315
+ },
8316
+ carousel2.current
8317
+ );
8318
+ }
8319
+ },
8320
+ [
8321
+ firstItemIsVisible,
8322
+ firstVisibleIndex,
8323
+ infiniteScroll,
8324
+ childVisibilityLength,
8325
+ getStepEl,
8326
+ carousel2
8327
+ ]
8328
+ );
8329
+ const goTo = (0, import_react51.useCallback)(
8330
+ (e, i) => {
8331
+ e.preventDefault();
8332
+ const el = getStepEl(i);
8333
+ if (el) {
8334
+ scrollTo(el, {
8335
+ behavior: "smooth",
8336
+ inline: "center",
8337
+ block: "center"
8338
+ });
8339
+ }
8340
+ },
8341
+ [getStepEl]
8342
+ );
8343
+ return { next, back, goTo };
8344
+ };
8345
+
8346
+ // src/ScrollingCarousel/hooks/useCarouselVisibility.ts
8347
+ var import_react52 = require("react");
8348
+ var useCarouselVisibility = (carousel2) => {
8349
+ const [state, dispatch] = (0, import_react52.useReducer)(childVisibilityReducer, {
8350
+ childVisibility: []
8351
+ });
8352
+ const carouselContextApi = (0, import_react52.useMemo)(
8353
+ () => ({ carousel: carousel2, dispatch }),
8354
+ [carousel2]
8355
+ );
8356
+ const firstVisibleIndex = state.childVisibility.indexOf(true);
8357
+ const firstItemIsVisible = firstVisibleIndex === 0;
8358
+ const lastVisibleIndex = state.childVisibility.lastIndexOf(true);
8359
+ const lastItemIsVisible = lastVisibleIndex === state.childVisibility.length - 1;
8360
+ const anyItemsVisible = !!(firstVisibleIndex >= 0 && lastVisibleIndex >= 0);
8361
+ return {
8362
+ state,
8363
+ carouselContextApi,
8364
+ firstVisibleIndex,
8365
+ lastVisibleIndex,
8366
+ firstItemIsVisible,
8367
+ lastItemIsVisible,
8368
+ anyItemsVisible
8369
+ };
8370
+ };
8371
+
8372
+ // src/ScrollingCarousel/ScrollingCarousel.tsx
8373
+ var import_jsx_runtime249 = require("@emotion/react/jsx-runtime");
8374
+ var ScrollingCarousel = ({
8375
+ className,
8376
+ children,
8377
+ showButtons = true,
8378
+ showDots = false,
8379
+ dotsColor = "light",
8380
+ numberOfDots = 5,
8381
+ buttonsPosition = "left-right",
8382
+ customLeftButton,
8383
+ infiniteScroll = false,
8384
+ customBackIcon = null,
8385
+ customNextIcon = null,
8386
+ showNavigationOnHover = false,
8387
+ id,
8388
+ current
8389
+ }) => {
8390
+ const carousel2 = (0, import_react53.useRef)(null);
8391
+ const [isHovering, setIsHovering] = (0, import_react53.useState)(false);
8392
+ const {
8393
+ state,
8394
+ carouselContextApi,
8395
+ firstVisibleIndex,
8396
+ lastVisibleIndex,
8397
+ firstItemIsVisible,
8398
+ lastItemIsVisible,
8399
+ anyItemsVisible
8400
+ } = useCarouselVisibility(carousel2);
8401
+ const { next, back, goTo } = useCarouselNavigation({
8402
+ carousel: carousel2,
8403
+ id,
8404
+ firstItemIsVisible,
8405
+ lastItemIsVisible,
8406
+ firstVisibleIndex,
8407
+ lastVisibleIndex,
8408
+ infiniteScroll,
8409
+ childVisibilityLength: state.childVisibility.length
8410
+ });
8411
+ (0, import_react53.useEffect)(() => {
8412
+ if (carousel2.current && typeof current === "number" && current >= 0) {
8413
+ const childrenArray = Array.from(carousel2.current.children);
8414
+ const selectedItem = childrenArray[current];
8415
+ if (selectedItem) {
8416
+ const selectedItemOffset = selectedItem.offsetLeft + selectedItem.offsetWidth / 2;
8417
+ const carouselCenter = carousel2.current.offsetWidth / 2;
8418
+ const scrollLeft = selectedItemOffset - carouselCenter;
8419
+ carousel2.current.scroll({
8420
+ left: scrollLeft,
8421
+ behavior: "smooth"
8422
+ });
8423
+ }
8424
+ }
8425
+ }, [current]);
8426
+ const childrenWithIndex = import_react53.default.Children.map(
8427
+ children,
8428
+ (child, index) => import_react53.default.cloneElement(child, { index })
8429
+ );
8430
+ const { dotOffset, dotDistances, dotWidth } = useCarouselDots({
8431
+ childVisibility: state.childVisibility,
8432
+ firstVisibleIndex,
8433
+ lastVisibleIndex,
8434
+ anyItemsVisible,
8435
+ numberOfDots
8436
+ });
8437
+ const hasMultipleChildren = state.childVisibility.length > 1;
8438
+ const shouldShowNavigation = showNavigationOnHover ? isHovering : true;
8439
+ return /* @__PURE__ */ (0, import_jsx_runtime249.jsxs)(
8440
+ "div",
8441
+ {
8442
+ css: carouselRoot,
8443
+ className,
8444
+ onMouseEnter: () => setIsHovering(true),
8445
+ onMouseLeave: () => setIsHovering(false),
8446
+ children: [
8447
+ /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(
8448
+ "div",
8449
+ {
8450
+ css: carousel,
8451
+ ref: carousel2,
8452
+ "data-testid": "scrolling-carousel-carousel",
8453
+ role: "region",
8454
+ "aria-roledescription": "carousel",
8455
+ "aria-label": "Scrolling carousel",
8456
+ children: /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(CarouselContext.Provider, { value: carouselContextApi, children: childrenWithIndex })
8457
+ }
8458
+ ),
8459
+ hasMultipleChildren && shouldShowNavigation && /* @__PURE__ */ (0, import_jsx_runtime249.jsxs)("div", { css: controls(buttonsPosition), children: [
8460
+ showButtons && (!firstItemIsVisible || infiniteScroll) && /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(
8461
+ "button",
8462
+ {
8463
+ "aria-label": "Previous",
8464
+ type: "button",
8465
+ onClick: back,
8466
+ css: customLeftButton ? customButtonLeft(buttonsPosition) : buttonLeft(buttonsPosition),
8467
+ "data-testid": `scrolling-carousel-button-back-${id}`,
8468
+ children: customBackIcon ? customBackIcon : /* @__PURE__ */ (0, import_jsx_runtime249.jsx)("span", { css: iconWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(Icon_default, { variant: "AngleLeft", css: icon }) })
8469
+ }
8470
+ ),
8471
+ showButtons && (!lastItemIsVisible || infiniteScroll) && /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(
8472
+ "button",
8473
+ {
8474
+ "aria-label": "Next",
8475
+ type: "button",
8476
+ onClick: next,
8477
+ css: buttonRight(buttonsPosition),
8478
+ "data-testid": `scrolling-carousel-button-next-${id}`,
8479
+ children: customNextIcon ? customNextIcon : /* @__PURE__ */ (0, import_jsx_runtime249.jsx)("span", { css: iconWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(Icon_default, { variant: "AngleRight", css: icon }) })
8480
+ }
8481
+ )
8482
+ ] }),
8483
+ showDots && /* @__PURE__ */ (0, import_jsx_runtime249.jsx)("div", { css: dots, children: /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(
8484
+ "div",
8485
+ {
8486
+ css: dotsInner,
8487
+ style: { maxWidth: `${dotWidth * numberOfDots}px` },
8488
+ children: state.childVisibility.map((childVisibility, i) => {
8489
+ var _a;
8490
+ const distance = (_a = dotDistances[i]) != null ? _a : 0;
8491
+ return /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(
8492
+ "button",
8493
+ {
8494
+ type: "button",
8495
+ onClick: (e) => goTo(e, i),
8496
+ css: [
8497
+ dot(dotsColor),
8498
+ distance === 2 && dotDistance2,
8499
+ distance === 3 && dotDistance3,
8500
+ distance > 3 && dotDistanceGreaterThan3,
8501
+ childVisibility && dotVisible
8502
+ ],
8503
+ style: {
8504
+ width: `${dotWidth}px`,
8505
+ height: `${dotWidth}px`,
8506
+ transform: `translateX(-${dotOffset.current}px)`
8507
+ },
8508
+ "aria-label": `Go to slide ${i + 1}`
8509
+ },
8510
+ `step-${i + 1}`
8511
+ );
8512
+ })
8513
+ }
8514
+ ) })
8515
+ ]
8516
+ }
8517
+ );
8518
+ };
8519
+ ScrollingCarousel.displayName = "ScrollingCarousel";
8520
+
7879
8521
  // src/PackageCard/PackageCard.styles.ts
7880
- var import_react46 = require("@emotion/react");
7881
- var cardContainerStyles3 = import_react46.css`
8522
+ var import_react54 = require("@emotion/react");
8523
+ var cardContainerStyles3 = import_react54.css`
7882
8524
  color: var(--text-primary);
7883
8525
  position: relative;
7884
8526
  width: 100%;
7885
- max-width: 300px;
8527
+ height: 100%;
7886
8528
  background: white;
7887
- border-radius: var(--spacing-4);
7888
8529
  overflow: hidden;
7889
- cursor: pointer;
7890
8530
  transition: all 0.2s ease;
7891
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
7892
-
7893
- &:hover {
7894
- transform: translateY(-2px);
7895
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
7896
- }
7897
8531
  `;
7898
- var imageContainerStyles = import_react46.css`
8532
+ var imageContainerStyles = import_react54.css`
7899
8533
  position: relative;
7900
8534
  width: 100%;
7901
- height: 200px;
8535
+ height: 260px;
7902
8536
  overflow: hidden;
7903
8537
  border-radius: var(--spacing-4);
7904
8538
  `;
7905
- var imageStyles2 = import_react46.css`
8539
+ var imageStyles2 = import_react54.css`
7906
8540
  width: 100%;
7907
- height: 100%;
8541
+ height: 260px;
7908
8542
  background-size: cover;
7909
8543
  background-position: center;
7910
8544
  background-repeat: no-repeat;
7911
- border-radius: var(--spacing-4) var(--spacing-4) 0 0;
8545
+ position: relative;
8546
+ background-color: lightgray;
7912
8547
  `;
7913
- var badgeStyles2 = import_react46.css`
8548
+ var badgeTopLeftStyles = import_react54.css`
7914
8549
  position: absolute;
7915
8550
  top: var(--spacing-3);
7916
8551
  left: var(--spacing-3);
7917
8552
  z-index: 2;
7918
8553
  `;
7919
- var heartIconStyles = import_react46.css`
8554
+ var badgeBottomRightStyles = import_react54.css`
8555
+ position: absolute;
8556
+ bottom: var(--spacing-3);
8557
+ right: var(--spacing-3);
8558
+ z-index: 2;
8559
+ `;
8560
+ var heartIconStyles = import_react54.css`
7920
8561
  position: absolute;
7921
8562
  top: var(--spacing-3);
7922
8563
  right: var(--spacing-3);
7923
8564
  width: 32px;
7924
8565
  height: 32px;
7925
- background: rgba(255, 255, 255, 0.2);
7926
- backdrop-filter: blur(8px);
8566
+ background: rgba(255, 255, 255, 0.4);
7927
8567
  border-radius: 50%;
8568
+ border: 1px solid var(--border-primary);
7928
8569
  display: flex;
7929
8570
  align-items: center;
7930
8571
  justify-content: center;
@@ -7938,103 +8579,180 @@ var heartIconStyles = import_react46.css`
7938
8579
  transform: scale(1.1);
7939
8580
  }
7940
8581
  `;
7941
- var contentStyles2 = import_react46.css`
7942
- padding: var(--spacing-3);
8582
+ var contentWithBackgroundStyles = import_react54.css`
8583
+ padding: var(--spacing-2) var(--spacing-3) var(--spacing-4) var(--spacing-3);
8584
+ background-color: var(--surface-page);
8585
+ `;
8586
+ var contentWithoutBackgroundStyles = import_react54.css`
8587
+ padding-top: var(--spacing-2);
8588
+ `;
8589
+ var overlayStyles = import_react54.css`
8590
+ position: absolute;
8591
+ top: 0;
8592
+ left: 0;
8593
+ width: 100%;
8594
+ height: 100%;
8595
+ background-color: rgba(0, 0, 0, 0.6);
8596
+ z-index: 1;
8597
+ border-radius: var(--spacing-4);
8598
+ display: block;
8599
+ pointer-events: none;
7943
8600
  `;
7944
8601
 
7945
8602
  // src/PackageCard/PackageCard.tsx
7946
- var import_jsx_runtime248 = require("@emotion/react/jsx-runtime");
8603
+ var import_jsx_runtime250 = require("@emotion/react/jsx-runtime");
7947
8604
  var PackageCard = ({
7948
8605
  images,
7949
8606
  title,
7950
8607
  subtitle,
7951
8608
  startingPrice,
7952
- tripsLeft,
7953
8609
  isFavorited = false,
7954
8610
  onFavoriteClick,
7955
8611
  onClick,
7956
8612
  className,
7957
- days,
7958
- guests,
7959
- hasLodging,
8613
+ badges,
8614
+ availabilityBadges,
8615
+ id,
8616
+ hasContentBackground = false,
7960
8617
  ...rest
7961
8618
  }) => {
7962
- const mainImage = images[0] || "";
7963
- return /* @__PURE__ */ (0, import_jsx_runtime248.jsxs)(Box_default, { css: cardContainerStyles3, className, ...rest, children: [
7964
- /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(Box_default, { css: imageContainerStyles, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime248.jsxs)(Box_default, { css: [imageStyles2, { backgroundImage: `url(${mainImage})` }], children: [
7965
- tripsLeft && /* @__PURE__ */ (0, import_jsx_runtime248.jsxs)(AvailabilityBadge_default, { variant: "warning", css: badgeStyles2, children: [
7966
- tripsLeft,
7967
- " Trips Left"
7968
- ] }),
7969
- /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(
7970
- Box_default,
7971
- {
7972
- css: heartIconStyles,
7973
- onClick: (e) => {
7974
- e.stopPropagation();
7975
- onFavoriteClick == null ? void 0 : onFavoriteClick();
7976
- },
7977
- children: /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(
7978
- Icon_default,
8619
+ const carouselId = id || `package-card-${title.replace(/\s+/g, "-")}`;
8620
+ const shouldShowOverlay = availabilityBadges == null ? void 0 : availabilityBadges.some(
8621
+ (badge2) => badge2.showOverlay
8622
+ );
8623
+ return /* @__PURE__ */ (0, import_jsx_runtime250.jsxs)(
8624
+ Box_default,
8625
+ {
8626
+ css: cardContainerStyles3,
8627
+ className,
8628
+ ...rest,
8629
+ borderRadius: hasContentBackground ? "var(--spacing-4)" : "var(--spacing-4) var(--spacing-4) 0 0",
8630
+ children: [
8631
+ /* @__PURE__ */ (0, import_jsx_runtime250.jsxs)(Box_default, { css: imageContainerStyles, children: [
8632
+ availabilityBadges == null ? void 0 : availabilityBadges.map((badge2, index) => /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
8633
+ AvailabilityBadge_default,
8634
+ {
8635
+ variant: badge2.variant,
8636
+ css: badge2.position === "bottom-right" ? badgeBottomRightStyles : badgeTopLeftStyles,
8637
+ children: badge2.text
8638
+ },
8639
+ `availability-${index}`
8640
+ )),
8641
+ shouldShowOverlay && /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(Box_default, { css: overlayStyles }),
8642
+ /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
8643
+ ScrollingCarousel,
7979
8644
  {
7980
- variant: isFavorited ? "HeartSolid" : "Heart",
7981
- size: "medium"
8645
+ showDots: images.length > 1,
8646
+ showNavigationOnHover: true,
8647
+ id: carouselId,
8648
+ children: images.filter((image) => !!image).map((image, index) => /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
8649
+ ScrollingCarouselStep,
8650
+ {
8651
+ parentId: carouselId,
8652
+ onClick,
8653
+ children: /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
8654
+ Box_default,
8655
+ {
8656
+ css: [
8657
+ imageStyles2,
8658
+ {
8659
+ backgroundImage: `linear-gradient(181deg, rgba(0, 0, 0, 0.00) 75.32%, rgba(0, 0, 0, 0.40) 99.41%), url(${image})`
8660
+ }
8661
+ ]
8662
+ }
8663
+ )
8664
+ },
8665
+ `image-${index}`
8666
+ ))
8667
+ }
8668
+ ),
8669
+ onFavoriteClick && /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
8670
+ Box_default,
8671
+ {
8672
+ css: heartIconStyles,
8673
+ onClick: (e) => {
8674
+ e.preventDefault();
8675
+ e.stopPropagation();
8676
+ onFavoriteClick == null ? void 0 : onFavoriteClick();
8677
+ },
8678
+ children: isFavorited ? /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
8679
+ Icon_default,
8680
+ {
8681
+ variant: "HeartSolid",
8682
+ size: "small",
8683
+ fill: "var(--color-error-500)"
8684
+ }
8685
+ ) : /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
8686
+ Icon_default,
8687
+ {
8688
+ variant: "Heart",
8689
+ size: "small",
8690
+ fill: "var(--color-base-black)"
8691
+ }
8692
+ )
7982
8693
  }
7983
8694
  )
7984
- }
7985
- )
7986
- ] }) }),
7987
- /* @__PURE__ */ (0, import_jsx_runtime248.jsxs)(Box_default, { css: contentStyles2, children: [
7988
- /* @__PURE__ */ (0, import_jsx_runtime248.jsxs)(
7989
- Box_default,
7990
- {
7991
- onClick,
7992
- display: "flex",
7993
- flexDirection: "column",
7994
- gap: "var(--spacing-1)",
7995
- mb: "var(--spacing-4)",
7996
- children: [
7997
- /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(Text_default, { size: "md", fontWeight: "bold", children: title }) }),
7998
- /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(Text_default, { size: "xs", fontWeight: "bold", children: subtitle }) }),
7999
- /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime248.jsxs)(Text_default, { size: "xs", fontWeight: "normal", children: [
8000
- "Starting Price ",
8001
- startingPrice,
8002
- " / Guest"
8003
- ] }) })
8004
- ]
8005
- }
8006
- ),
8007
- /* @__PURE__ */ (0, import_jsx_runtime248.jsxs)(Box_default, { display: "flex", gap: "var(--spacing-3)", alignItems: "center", children: [
8008
- days && /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(
8009
- IconLabel_default,
8010
- {
8011
- variant: "Calendar",
8012
- label: `${days} Day${days !== 1 ? "s" : ""}`
8013
- }
8014
- ),
8015
- guests && /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(
8016
- IconLabel_default,
8695
+ ] }),
8696
+ /* @__PURE__ */ (0, import_jsx_runtime250.jsxs)(
8697
+ Box_default,
8017
8698
  {
8018
- variant: "User",
8019
- label: `${guests} Guest${guests !== 1 ? "s" : ""}`
8699
+ css: hasContentBackground ? contentWithBackgroundStyles : contentWithoutBackgroundStyles,
8700
+ children: [
8701
+ /* @__PURE__ */ (0, import_jsx_runtime250.jsxs)(
8702
+ Box_default,
8703
+ {
8704
+ onClick,
8705
+ display: "flex",
8706
+ flexDirection: "column",
8707
+ gap: "var(--spacing-1)",
8708
+ mb: "var(--spacing-1)",
8709
+ children: [
8710
+ /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(Text_default, { size: "md", fontWeight: "bold", children: title }) }),
8711
+ /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(Text_default, { size: "sm", fontWeight: "bold", children: subtitle }) }),
8712
+ /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime250.jsxs)(Text_default, { size: "sm", fontWeight: "normal", children: [
8713
+ "Starting Price ",
8714
+ startingPrice,
8715
+ " / Guest"
8716
+ ] }) })
8717
+ ]
8718
+ }
8719
+ ),
8720
+ badges && badges.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
8721
+ Box_default,
8722
+ {
8723
+ display: "flex",
8724
+ gap: "var(--spacing-2) var(--spacing-4)",
8725
+ alignItems: "center",
8726
+ flexWrap: "wrap",
8727
+ children: badges.map((badge2, index) => /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
8728
+ IconLabel_default,
8729
+ {
8730
+ iconSize: badge2.iconSize || "medium",
8731
+ label: badge2.label,
8732
+ variant: badge2.variant
8733
+ },
8734
+ `badge-${badge2.variant}-${index}`
8735
+ ))
8736
+ }
8737
+ )
8738
+ ]
8020
8739
  }
8021
- ),
8022
- hasLodging && /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(IconLabel_default, { variant: "House", label: "Lodging" })
8023
- ] })
8024
- ] })
8025
- ] });
8740
+ )
8741
+ ]
8742
+ }
8743
+ );
8026
8744
  };
8027
8745
  var PackageCard_default = PackageCard;
8028
8746
 
8029
8747
  // src/PackageHeader/PackageHeader.tsx
8030
- var import_jsx_runtime249 = require("@emotion/react/jsx-runtime");
8748
+ var import_jsx_runtime251 = require("@emotion/react/jsx-runtime");
8031
8749
  var PackageHeader = ({
8032
8750
  header,
8033
8751
  subheader,
8034
8752
  features,
8035
8753
  className
8036
8754
  }) => {
8037
- return /* @__PURE__ */ (0, import_jsx_runtime249.jsxs)(
8755
+ return /* @__PURE__ */ (0, import_jsx_runtime251.jsxs)(
8038
8756
  Box_default,
8039
8757
  {
8040
8758
  display: "flex",
@@ -8043,9 +8761,9 @@ var PackageHeader = ({
8043
8761
  color: "var(--text-primary)",
8044
8762
  className,
8045
8763
  children: [
8046
- /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(Heading_default, { size: "xs", fontWeight: "bold", children: header }),
8047
- subheader && /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(Text_default, { children: subheader }),
8048
- features && /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(FeatureList_default, { items: features })
8764
+ /* @__PURE__ */ (0, import_jsx_runtime251.jsx)(Heading_default, { size: "xs", fontWeight: "bold", children: header }),
8765
+ subheader && /* @__PURE__ */ (0, import_jsx_runtime251.jsx)(Text_default, { children: subheader }),
8766
+ features && /* @__PURE__ */ (0, import_jsx_runtime251.jsx)(FeatureList_default, { items: features })
8049
8767
  ]
8050
8768
  }
8051
8769
  );
@@ -8053,8 +8771,8 @@ var PackageHeader = ({
8053
8771
  var PackageHeader_default = PackageHeader;
8054
8772
 
8055
8773
  // src/ReviewCard/components/ReviewImages.styles.ts
8056
- var import_react47 = require("@emotion/react");
8057
- var imageStyles3 = import_react47.css`
8774
+ var import_react55 = require("@emotion/react");
8775
+ var imageStyles3 = import_react55.css`
8058
8776
  flex: 1;
8059
8777
  min-width: 0;
8060
8778
  max-width: 100%;
@@ -8065,13 +8783,13 @@ var imageStyles3 = import_react47.css`
8065
8783
  `;
8066
8784
 
8067
8785
  // src/ReviewCard/components/ReviewImages.tsx
8068
- var import_jsx_runtime250 = require("@emotion/react/jsx-runtime");
8786
+ var import_jsx_runtime252 = require("@emotion/react/jsx-runtime");
8069
8787
  var ReviewImages = ({ images, maxImages = 3 }) => {
8070
8788
  const displayImages = images.slice(0, maxImages);
8071
8789
  if (displayImages.length === 0) {
8072
8790
  return null;
8073
8791
  }
8074
- return /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(Box_default, { display: "flex", gap: "var(--spacing-2)", flexWrap: "wrap", children: displayImages.map((image, index) => /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
8792
+ return /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(Box_default, { display: "flex", gap: "var(--spacing-2)", flexWrap: "wrap", children: displayImages.map((image, index) => /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(
8075
8793
  "img",
8076
8794
  {
8077
8795
  src: image,
@@ -8084,7 +8802,7 @@ var ReviewImages = ({ images, maxImages = 3 }) => {
8084
8802
  var ReviewImages_default = ReviewImages;
8085
8803
 
8086
8804
  // src/ReviewCard/components/ReviewReply.tsx
8087
- var import_jsx_runtime251 = require("@emotion/react/jsx-runtime");
8805
+ var import_jsx_runtime253 = require("@emotion/react/jsx-runtime");
8088
8806
  var ReviewReply = ({
8089
8807
  avatarSrc,
8090
8808
  name,
@@ -8093,7 +8811,7 @@ var ReviewReply = ({
8093
8811
  label,
8094
8812
  rating
8095
8813
  }) => {
8096
- return /* @__PURE__ */ (0, import_jsx_runtime251.jsxs)(
8814
+ return /* @__PURE__ */ (0, import_jsx_runtime253.jsxs)(
8097
8815
  Box_default,
8098
8816
  {
8099
8817
  backgroundColor: "var(--surface-neutral)",
@@ -8103,7 +8821,7 @@ var ReviewReply = ({
8103
8821
  flexDirection: "column",
8104
8822
  gap: "var(--spacing-3)",
8105
8823
  children: [
8106
- /* @__PURE__ */ (0, import_jsx_runtime251.jsxs)(
8824
+ /* @__PURE__ */ (0, import_jsx_runtime253.jsxs)(
8107
8825
  Box_default,
8108
8826
  {
8109
8827
  display: "flex",
@@ -8111,7 +8829,7 @@ var ReviewReply = ({
8111
8829
  justifyContent: "space-between",
8112
8830
  gap: "var(--spacing-2)",
8113
8831
  children: [
8114
- /* @__PURE__ */ (0, import_jsx_runtime251.jsx)(
8832
+ /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(
8115
8833
  UserCard_default,
8116
8834
  {
8117
8835
  avatarSrc,
@@ -8120,11 +8838,11 @@ var ReviewReply = ({
8120
8838
  rating
8121
8839
  }
8122
8840
  ),
8123
- /* @__PURE__ */ (0, import_jsx_runtime251.jsx)(AvailabilityBadge_default, { variant: "neutral", children: label })
8841
+ /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(AvailabilityBadge_default, { variant: "neutral", children: label })
8124
8842
  ]
8125
8843
  }
8126
8844
  ),
8127
- /* @__PURE__ */ (0, import_jsx_runtime251.jsx)(Text_default, { children: content })
8845
+ /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(Text_default, { children: content })
8128
8846
  ]
8129
8847
  }
8130
8848
  );
@@ -8132,7 +8850,7 @@ var ReviewReply = ({
8132
8850
  var ReviewReply_default = ReviewReply;
8133
8851
 
8134
8852
  // src/ReviewCard/ReviewCard.tsx
8135
- var import_jsx_runtime252 = require("@emotion/react/jsx-runtime");
8853
+ var import_jsx_runtime254 = require("@emotion/react/jsx-runtime");
8136
8854
  var ReviewCard = ({
8137
8855
  avatarSrc,
8138
8856
  name,
@@ -8144,7 +8862,7 @@ var ReviewCard = ({
8144
8862
  replies = [],
8145
8863
  className
8146
8864
  }) => {
8147
- return /* @__PURE__ */ (0, import_jsx_runtime252.jsxs)(
8865
+ return /* @__PURE__ */ (0, import_jsx_runtime254.jsxs)(
8148
8866
  Box_default,
8149
8867
  {
8150
8868
  backgroundColor: "white",
@@ -8155,7 +8873,7 @@ var ReviewCard = ({
8155
8873
  gap: "var(--spacing-4)",
8156
8874
  className,
8157
8875
  children: [
8158
- /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(
8876
+ /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(
8159
8877
  UserCard_default,
8160
8878
  {
8161
8879
  avatarSrc,
@@ -8164,10 +8882,10 @@ var ReviewCard = ({
8164
8882
  rating
8165
8883
  }
8166
8884
  ),
8167
- availabilityBadge && /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(AvailabilityBadge_default, { variant: availabilityBadge.variant, children: availabilityBadge.text }) }),
8168
- /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(Text_default, { size: "md", children: content }),
8169
- images.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(ReviewImages_default, { images }),
8170
- replies.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(Box_default, { display: "flex", flexDirection: "column", gap: "var(--spacing-3)", children: replies.map((reply, index) => /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(
8885
+ availabilityBadge && /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(AvailabilityBadge_default, { variant: availabilityBadge.variant, children: availabilityBadge.text }) }),
8886
+ /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(Text_default, { size: "md", children: content }),
8887
+ images.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(ReviewImages_default, { images }),
8888
+ replies.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(Box_default, { display: "flex", flexDirection: "column", gap: "var(--spacing-3)", children: replies.map((reply, index) => /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(
8171
8889
  ReviewReply_default,
8172
8890
  {
8173
8891
  avatarSrc: reply.avatarSrc,
@@ -8186,12 +8904,12 @@ var ReviewCard = ({
8186
8904
  var ReviewCard_default = ReviewCard;
8187
8905
 
8188
8906
  // src/Reviews/Reviews.tsx
8189
- var import_react48 = require("@emotion/react");
8907
+ var import_react56 = require("@emotion/react");
8190
8908
 
8191
8909
  // src/Reviews/components/ReviewItem.tsx
8192
- var import_jsx_runtime253 = require("@emotion/react/jsx-runtime");
8910
+ var import_jsx_runtime255 = require("@emotion/react/jsx-runtime");
8193
8911
  var ReviewItem = ({ label, rating }) => {
8194
- return /* @__PURE__ */ (0, import_jsx_runtime253.jsxs)(
8912
+ return /* @__PURE__ */ (0, import_jsx_runtime255.jsxs)(
8195
8913
  Box_default,
8196
8914
  {
8197
8915
  display: "flex",
@@ -8199,10 +8917,10 @@ var ReviewItem = ({ label, rating }) => {
8199
8917
  alignItems: "center",
8200
8918
  width: "100%",
8201
8919
  children: [
8202
- /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(Text_default, { fontWeight: "semibold", children: label }),
8203
- /* @__PURE__ */ (0, import_jsx_runtime253.jsxs)(Box_default, { display: "flex", alignItems: "center", gap: "var(--spacing-2)", children: [
8204
- /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(Icon_default, { variant: "StarSolid", size: "large", fill: "var(--surface-action-2)" }),
8205
- /* @__PURE__ */ (0, import_jsx_runtime253.jsxs)(Text_default, { fontWeight: "semibold", children: [
8920
+ /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Text_default, { fontWeight: "semibold", children: label }),
8921
+ /* @__PURE__ */ (0, import_jsx_runtime255.jsxs)(Box_default, { display: "flex", alignItems: "center", gap: "var(--spacing-2)", children: [
8922
+ /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Icon_default, { variant: "StarSolid", size: "large", fill: "var(--surface-action-2)" }),
8923
+ /* @__PURE__ */ (0, import_jsx_runtime255.jsxs)(Text_default, { fontWeight: "semibold", children: [
8206
8924
  rating,
8207
8925
  "/5"
8208
8926
  ] })
@@ -8214,14 +8932,14 @@ var ReviewItem = ({ label, rating }) => {
8214
8932
  var ReviewItem_default = ReviewItem;
8215
8933
 
8216
8934
  // src/Reviews/Reviews.tsx
8217
- var import_jsx_runtime254 = require("@emotion/react/jsx-runtime");
8935
+ var import_jsx_runtime256 = require("@emotion/react/jsx-runtime");
8218
8936
  var Reviews = ({
8219
8937
  averageRating,
8220
8938
  totalReviews,
8221
8939
  items,
8222
8940
  className
8223
8941
  }) => {
8224
- return /* @__PURE__ */ (0, import_jsx_runtime254.jsxs)(
8942
+ return /* @__PURE__ */ (0, import_jsx_runtime256.jsxs)(
8225
8943
  Box_default,
8226
8944
  {
8227
8945
  width: "100%",
@@ -8234,7 +8952,7 @@ var Reviews = ({
8234
8952
  p: "var(--spacing-4)",
8235
8953
  className,
8236
8954
  children: [
8237
- /* @__PURE__ */ (0, import_jsx_runtime254.jsxs)(
8955
+ /* @__PURE__ */ (0, import_jsx_runtime256.jsxs)(
8238
8956
  Box_default,
8239
8957
  {
8240
8958
  display: "flex",
@@ -8242,12 +8960,12 @@ var Reviews = ({
8242
8960
  alignItems: "center",
8243
8961
  gap: "var(--spacing-2)",
8244
8962
  children: [
8245
- /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(Heading_default, { size: "sm", fontWeight: "bold", color: "text-primary", children: averageRating.toFixed(1) }),
8246
- /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(
8963
+ /* @__PURE__ */ (0, import_jsx_runtime256.jsx)(Heading_default, { size: "sm", fontWeight: "bold", color: "text-primary", children: averageRating.toFixed(1) }),
8964
+ /* @__PURE__ */ (0, import_jsx_runtime256.jsx)(
8247
8965
  StarRating_default,
8248
8966
  {
8249
8967
  rating: Math.floor(averageRating),
8250
- css: import_react48.css`
8968
+ css: import_react56.css`
8251
8969
  > svg {
8252
8970
  height: 40px;
8253
8971
  width: 40px;
@@ -8255,7 +8973,7 @@ var Reviews = ({
8255
8973
  `
8256
8974
  }
8257
8975
  ),
8258
- /* @__PURE__ */ (0, import_jsx_runtime254.jsxs)(Text_default, { size: "sm", color: "text-secondary", children: [
8976
+ /* @__PURE__ */ (0, import_jsx_runtime256.jsxs)(Text_default, { size: "sm", color: "text-secondary", children: [
8259
8977
  "Overall Rating \u2022 ",
8260
8978
  totalReviews,
8261
8979
  " Review",
@@ -8264,14 +8982,14 @@ var Reviews = ({
8264
8982
  ]
8265
8983
  }
8266
8984
  ),
8267
- /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(
8985
+ /* @__PURE__ */ (0, import_jsx_runtime256.jsx)(
8268
8986
  Box_default,
8269
8987
  {
8270
8988
  display: "flex",
8271
8989
  flexDirection: "column",
8272
8990
  gap: "var(--spacing-2)",
8273
8991
  width: "100%",
8274
- children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(ReviewItem_default, { label: item.label, rating: item.rating }, index))
8992
+ children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime256.jsx)(ReviewItem_default, { label: item.label, rating: item.rating }, index))
8275
8993
  }
8276
8994
  )
8277
8995
  ]
@@ -8281,7 +8999,7 @@ var Reviews = ({
8281
8999
  var Reviews_default = Reviews;
8282
9000
 
8283
9001
  // src/Reviews/ReviewsShowcase.tsx
8284
- var import_jsx_runtime255 = require("@emotion/react/jsx-runtime");
9002
+ var import_jsx_runtime257 = require("@emotion/react/jsx-runtime");
8285
9003
  var ReviewsShowcase = () => {
8286
9004
  const sampleData = {
8287
9005
  averageRating: 4,
@@ -8303,7 +9021,7 @@ var ReviewsShowcase = () => {
8303
9021
  { label: "Game Abundance", rating: 5 }
8304
9022
  ]
8305
9023
  };
8306
- return /* @__PURE__ */ (0, import_jsx_runtime255.jsxs)(
9024
+ return /* @__PURE__ */ (0, import_jsx_runtime257.jsxs)(
8307
9025
  Box_default,
8308
9026
  {
8309
9027
  display: "flex",
@@ -8311,24 +9029,24 @@ var ReviewsShowcase = () => {
8311
9029
  gap: "var(--spacing-8)",
8312
9030
  p: "var(--spacing-6)",
8313
9031
  children: [
8314
- /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Heading_default, { size: "lg", children: "Reviews Component Showcase" }),
8315
- /* @__PURE__ */ (0, import_jsx_runtime255.jsxs)(Box_default, { display: "flex", flexDirection: "column", gap: "var(--spacing-4)", children: [
8316
- /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Heading_default, { size: "md", children: "Default Reviews" }),
8317
- /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Box_default, { maxWidth: "400px", children: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Reviews_default, { ...sampleData }) })
9032
+ /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(Heading_default, { size: "lg", children: "Reviews Component Showcase" }),
9033
+ /* @__PURE__ */ (0, import_jsx_runtime257.jsxs)(Box_default, { display: "flex", flexDirection: "column", gap: "var(--spacing-4)", children: [
9034
+ /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(Heading_default, { size: "md", children: "Default Reviews" }),
9035
+ /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(Box_default, { maxWidth: "400px", children: /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(Reviews_default, { ...sampleData }) })
8318
9036
  ] }),
8319
- /* @__PURE__ */ (0, import_jsx_runtime255.jsxs)(Box_default, { display: "flex", flexDirection: "column", gap: "var(--spacing-4)", children: [
8320
- /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Heading_default, { size: "md", children: "High Rating Reviews" }),
8321
- /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Box_default, { maxWidth: "400px", children: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Reviews_default, { ...highRatingData }) })
9037
+ /* @__PURE__ */ (0, import_jsx_runtime257.jsxs)(Box_default, { display: "flex", flexDirection: "column", gap: "var(--spacing-4)", children: [
9038
+ /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(Heading_default, { size: "md", children: "High Rating Reviews" }),
9039
+ /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(Box_default, { maxWidth: "400px", children: /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(Reviews_default, { ...highRatingData }) })
8322
9040
  ] }),
8323
- /* @__PURE__ */ (0, import_jsx_runtime255.jsxs)(Box_default, { display: "flex", flexDirection: "column", gap: "var(--spacing-4)", children: [
8324
- /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Heading_default, { size: "md", children: "Mobile Layout (320px width)" }),
8325
- /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(
9041
+ /* @__PURE__ */ (0, import_jsx_runtime257.jsxs)(Box_default, { display: "flex", flexDirection: "column", gap: "var(--spacing-4)", children: [
9042
+ /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(Heading_default, { size: "md", children: "Mobile Layout (320px width)" }),
9043
+ /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(
8326
9044
  Box_default,
8327
9045
  {
8328
9046
  maxWidth: "320px",
8329
9047
  border: "1px solid var(--color-neutral-200)",
8330
9048
  p: "var(--spacing-4)",
8331
- children: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Reviews_default, { ...sampleData })
9049
+ children: /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(Reviews_default, { ...sampleData })
8332
9050
  }
8333
9051
  )
8334
9052
  ] })
@@ -8374,6 +9092,8 @@ var ReviewsShowcase_default = ReviewsShowcase;
8374
9092
  ReviewCard,
8375
9093
  Reviews,
8376
9094
  ReviewsShowcase,
9095
+ ScrollingCarousel,
9096
+ ScrollingCarouselStep,
8377
9097
  Select,
8378
9098
  Spinner,
8379
9099
  StarRating,