@chekinapp/ui 0.0.91 → 0.0.93

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
@@ -1707,6 +1707,25 @@ function toCssSize(size) {
1707
1707
  return size;
1708
1708
  }
1709
1709
  }
1710
+ function getCanvasBlob(canvas) {
1711
+ return new Promise((resolve) => {
1712
+ canvas.toBlob((blob) => {
1713
+ resolve(blob);
1714
+ });
1715
+ });
1716
+ }
1717
+ function toBase64(file) {
1718
+ return new Promise((resolve, reject) => {
1719
+ const reader = new FileReader();
1720
+ reader.readAsDataURL(file);
1721
+ reader.onload = () => resolve(String(reader.result));
1722
+ reader.onerror = () => reject(new Error("Failed to read file as base64"));
1723
+ });
1724
+ }
1725
+ function getFileSizeMB(file) {
1726
+ if (!file) return;
1727
+ return file.size / Math.pow(1024, 2);
1728
+ }
1710
1729
 
1711
1730
  // src/tooltip/Tooltip.tsx
1712
1731
  import { jsx as jsx25, jsxs as jsxs17 } from "react/jsx-runtime";
@@ -2643,7 +2662,7 @@ function useCombinedRef(...refs) {
2643
2662
  import { useEffect as useEffect6, useState as useState6 } from "react";
2644
2663
  var MOBILE_BREAKPOINT = 768;
2645
2664
  function useIsMobile({ breakpoint = MOBILE_BREAKPOINT } = {}) {
2646
- const [isMobile2, setIsMobile] = useState6(void 0);
2665
+ const [isMobile3, setIsMobile] = useState6(void 0);
2647
2666
  useEffect6(() => {
2648
2667
  const mediaQuery = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
2649
2668
  const onChange = () => {
@@ -2655,7 +2674,7 @@ function useIsMobile({ breakpoint = MOBILE_BREAKPOINT } = {}) {
2655
2674
  mediaQuery.removeEventListener("change", onChange);
2656
2675
  };
2657
2676
  }, [breakpoint]);
2658
- return !!isMobile2;
2677
+ return !!isMobile3;
2659
2678
  }
2660
2679
 
2661
2680
  // src/hooks/use-is-mounted.ts
@@ -2803,7 +2822,11 @@ function useModalWithHistoryControls({
2803
2822
  }, [resetHash]);
2804
2823
  const toggleModal = useCallback7(() => {
2805
2824
  setIsOpen(!isOpen);
2806
- !isOpen ? addHash() : resetHash();
2825
+ if (isOpen) {
2826
+ resetHash();
2827
+ } else {
2828
+ addHash();
2829
+ }
2807
2830
  }, [addHash, isOpen, resetHash]);
2808
2831
  useEffect10(() => {
2809
2832
  const targetWindow = getWindow();
@@ -3004,7 +3027,7 @@ function useScrollFrameIntoView(active, options = {}) {
3004
3027
  }
3005
3028
 
3006
3029
  // src/hooks/use-scrollable-area.ts
3007
- import { useCallback as useCallback10, useEffect as useEffect13, useRef as useRef9, useState as useState9 } from "react";
3030
+ import { useEffect as useEffect13, useRef as useRef9, useState as useState9 } from "react";
3008
3031
  var SCROLL_THRESHOLD = 1;
3009
3032
  function getScrollableAreaState(element) {
3010
3033
  const { scrollTop, scrollHeight, clientHeight } = element;
@@ -3016,17 +3039,15 @@ function useScrollableArea(options = {}) {
3016
3039
  const internalRef = useRef9(null);
3017
3040
  const ref = options.ref ?? internalRef;
3018
3041
  const [state, setState] = useState9({ canScrollUp: false, canScrollDown: false });
3019
- const updateState = useCallback10(() => {
3020
- const element = ref.current;
3021
- if (!element) return;
3022
- const newState = getScrollableAreaState(element);
3023
- setState(
3024
- (prev) => prev.canScrollUp !== newState.canScrollUp || prev.canScrollDown !== newState.canScrollDown ? newState : prev
3025
- );
3026
- }, [ref]);
3027
3042
  useEffect13(() => {
3028
3043
  const element = ref.current;
3029
3044
  if (!element) return;
3045
+ const updateState = () => {
3046
+ const newState = getScrollableAreaState(element);
3047
+ setState(
3048
+ (prev) => prev.canScrollUp !== newState.canScrollUp || prev.canScrollDown !== newState.canScrollDown ? newState : prev
3049
+ );
3050
+ };
3030
3051
  updateState();
3031
3052
  const resizeObserver = new ResizeObserver(updateState);
3032
3053
  resizeObserver.observe(element);
@@ -3035,7 +3056,7 @@ function useScrollableArea(options = {}) {
3035
3056
  resizeObserver.disconnect();
3036
3057
  element.removeEventListener("scroll", updateState);
3037
3058
  };
3038
- }, [ref, updateState]);
3059
+ }, [ref]);
3039
3060
  return {
3040
3061
  ref,
3041
3062
  ...state
@@ -3062,12 +3083,12 @@ function useDebounce(value, delayMs = 1e3, handleChange) {
3062
3083
  }
3063
3084
 
3064
3085
  // src/hooks/use-debounced-function.ts
3065
- import { useCallback as useCallback11, useRef as useRef10 } from "react";
3086
+ import { useCallback as useCallback10, useRef as useRef10 } from "react";
3066
3087
  function useDebouncedFunction(callback, delay) {
3067
3088
  const timerRef = useRef10();
3068
3089
  const immediateCalling = useRef10(false);
3069
3090
  const callbackFn = useEvent(callback);
3070
- const throttled = useCallback11(
3091
+ const throttled = useCallback10(
3071
3092
  (...args) => {
3072
3093
  clearTimeout(timerRef.current);
3073
3094
  if (immediateCalling.current) {
@@ -3082,7 +3103,7 @@ function useDebouncedFunction(callback, delay) {
3082
3103
  },
3083
3104
  [callbackFn, delay]
3084
3105
  );
3085
- const immediate = useCallback11(() => {
3106
+ const immediate = useCallback10(() => {
3086
3107
  immediateCalling.current = true;
3087
3108
  }, []);
3088
3109
  return { throttled, immediate };
@@ -3099,7 +3120,7 @@ function usePrevious(value, defaultValue) {
3099
3120
  }
3100
3121
 
3101
3122
  // src/hooks/use-pagination.ts
3102
- import { useCallback as useCallback12, useEffect as useEffect16, useMemo, useState as useState11 } from "react";
3123
+ import { useCallback as useCallback11, useEffect as useEffect16, useMemo, useState as useState11 } from "react";
3103
3124
 
3104
3125
  // src/storage/AbstractStorage.ts
3105
3126
  var AbstractStorage = class {
@@ -3202,14 +3223,14 @@ function usePagination(config) {
3202
3223
  return Math.min(state.page * state.pageSize, state.totalItems);
3203
3224
  }, [state.page, state.pageSize, state.totalItems]);
3204
3225
  const isEmpty = useMemo(() => state.totalItems === 0, [state.totalItems]);
3205
- const setPage = useCallback12(
3226
+ const setPage = useCallback11(
3206
3227
  (page) => {
3207
3228
  const clampedPage = Math.max(1, Math.min(page, pages || 1));
3208
3229
  setState((prev) => ({ ...prev, page: clampedPage }));
3209
3230
  },
3210
3231
  [pages]
3211
3232
  );
3212
- const setPageSize = useCallback12((pageSize) => {
3233
+ const setPageSize = useCallback11((pageSize) => {
3213
3234
  const validPageSize = Math.max(1, pageSize);
3214
3235
  setState((prev) => {
3215
3236
  const currentFirstItem = (prev.page - 1) * prev.pageSize + 1;
@@ -3221,7 +3242,7 @@ function usePagination(config) {
3221
3242
  };
3222
3243
  });
3223
3244
  }, []);
3224
- const setTotalItems = useCallback12((totalItems) => {
3245
+ const setTotalItems = useCallback11((totalItems) => {
3225
3246
  const validTotalItems = Math.max(0, totalItems);
3226
3247
  setState((prev) => {
3227
3248
  const newPages = validTotalItems > 0 ? Math.ceil(validTotalItems / prev.pageSize) : 0;
@@ -3233,19 +3254,19 @@ function usePagination(config) {
3233
3254
  };
3234
3255
  });
3235
3256
  }, []);
3236
- const nextPage = useCallback12(() => {
3257
+ const nextPage = useCallback11(() => {
3237
3258
  setPage(state.page + 1);
3238
3259
  }, [setPage, state.page]);
3239
- const previousPage = useCallback12(() => {
3260
+ const previousPage = useCallback11(() => {
3240
3261
  setPage(state.page - 1);
3241
3262
  }, [setPage, state.page]);
3242
- const goToFirstPage = useCallback12(() => {
3263
+ const goToFirstPage = useCallback11(() => {
3243
3264
  setPage(1);
3244
3265
  }, [setPage]);
3245
- const goToLastPage = useCallback12(() => {
3266
+ const goToLastPage = useCallback11(() => {
3246
3267
  setPage(pages);
3247
3268
  }, [setPage, pages]);
3248
- const reset = useCallback12(() => {
3269
+ const reset = useCallback11(() => {
3249
3270
  setState({
3250
3271
  page: defaultPage,
3251
3272
  pageSize: defaultPageSize,
@@ -3274,11 +3295,11 @@ function usePagination(config) {
3274
3295
  }
3275
3296
 
3276
3297
  // src/hooks/use-search-input.ts
3277
- import { useCallback as useCallback13, useState as useState12 } from "react";
3298
+ import { useCallback as useCallback12, useState as useState12 } from "react";
3278
3299
  function useSearchInput({ value, onChange }) {
3279
3300
  const [innerValue, setInnerValue] = useState12(value || "");
3280
3301
  const [, setDebouncedValue] = useDebounce(innerValue, 600, onChange);
3281
- const handleChange = useCallback13(
3302
+ const handleChange = useCallback12(
3282
3303
  (event) => {
3283
3304
  if (event.target.value === "") {
3284
3305
  setDebouncedValue("");
@@ -3328,7 +3349,7 @@ function useStickyStuck(ref) {
3328
3349
  }
3329
3350
 
3330
3351
  // src/hooks/use-switch-section-active.ts
3331
- import { useCallback as useCallback14, useEffect as useEffect18, useLayoutEffect as useLayoutEffect3, useState as useState14 } from "react";
3352
+ import { useCallback as useCallback13, useEffect as useEffect18, useLayoutEffect as useLayoutEffect3, useState as useState14 } from "react";
3332
3353
  function useSwitchSectionActive(preloadedSectionActive, { canToggle, onToggle, onSectionActiveChange, onTouched } = {}) {
3333
3354
  const [isSectionActive, setIsSectionActive] = useState14(false);
3334
3355
  const [preloadedIsSendingEnabled, setPreloadedIsSendingEnabled] = useState14(null);
@@ -3346,7 +3367,7 @@ function useSwitchSectionActive(preloadedSectionActive, { canToggle, onToggle, o
3346
3367
  },
3347
3368
  [preloadedSectionActive]
3348
3369
  );
3349
- const toggleIsSectionActive = useCallback14(() => {
3370
+ const toggleIsSectionActive = useCallback13(() => {
3350
3371
  const isTogglingDisabled = canToggle && !canToggle(isSectionActive);
3351
3372
  if (isTogglingDisabled) {
3352
3373
  return;
@@ -3433,13 +3454,13 @@ function useTimeout(callback, ms = 0) {
3433
3454
  }
3434
3455
 
3435
3456
  // src/hooks/use-hover.ts
3436
- import { useCallback as useCallback15, useState as useState16 } from "react";
3457
+ import { useCallback as useCallback14, useState as useState16 } from "react";
3437
3458
  function useHover() {
3438
3459
  const [isHovering, setIsHovering] = useState16(false);
3439
- const handleMouseEnter = useCallback15(() => {
3460
+ const handleMouseEnter = useCallback14(() => {
3440
3461
  setIsHovering(true);
3441
3462
  }, []);
3442
- const handleMouseLeave = useCallback15(() => {
3463
+ const handleMouseLeave = useCallback14(() => {
3443
3464
  setIsHovering(false);
3444
3465
  }, []);
3445
3466
  return {
@@ -3450,7 +3471,7 @@ function useHover() {
3450
3471
  }
3451
3472
 
3452
3473
  // src/hooks/use-key-down.ts
3453
- import { useCallback as useCallback16, useEffect as useEffect21 } from "react";
3474
+ import { useCallback as useCallback15, useEffect as useEffect21 } from "react";
3454
3475
  function useKeyDown({
3455
3476
  key,
3456
3477
  cb,
@@ -3464,7 +3485,7 @@ function useKeyDown({
3464
3485
  altKey = false
3465
3486
  } = options ?? {};
3466
3487
  const handleCallback = useEvent(cb);
3467
- const handleKeyDown = useCallback16(
3488
+ const handleKeyDown = useCallback15(
3468
3489
  (event) => {
3469
3490
  const keys = Array.isArray(key) ? key : [key];
3470
3491
  const isKeyMatch = keys.includes(event.key);
@@ -4518,7 +4539,7 @@ ExternalLink.displayName = "ExternalLink";
4518
4539
 
4519
4540
  // src/expandable-content/ExpandableContent.tsx
4520
4541
  import {
4521
- useCallback as useCallback18,
4542
+ useCallback as useCallback17,
4522
4543
  useEffect as useEffect24,
4523
4544
  useRef as useRef16,
4524
4545
  useState as useState19
@@ -4555,7 +4576,7 @@ function ExpandableContent({
4555
4576
  const [internalOpen, setInternalOpen] = useState19(defaultOpen);
4556
4577
  const isOpen = open ?? internalOpen;
4557
4578
  const isOverflowing = contentHeight > heightLimit;
4558
- const measureContent = useCallback18(() => {
4579
+ const measureContent = useCallback17(() => {
4559
4580
  const nextHeight = contentRef.current?.getBoundingClientRect().height ?? 0;
4560
4581
  setContentHeight(nextHeight);
4561
4582
  }, []);
@@ -4614,7 +4635,7 @@ function ExpandableContent({
4614
4635
  // src/file-input-button/FileInputButton.tsx
4615
4636
  import {
4616
4637
  forwardRef as forwardRef24,
4617
- useCallback as useCallback19
4638
+ useCallback as useCallback18
4618
4639
  } from "react";
4619
4640
  import { Upload } from "lucide-react";
4620
4641
  import { jsx as jsx54, jsxs as jsxs37 } from "react/jsx-runtime";
@@ -4630,7 +4651,7 @@ var FileInputButton = forwardRef24(
4630
4651
  size = "default",
4631
4652
  ...props
4632
4653
  }, ref) => {
4633
- const handleChange = useCallback19(
4654
+ const handleChange = useCallback18(
4634
4655
  (event) => {
4635
4656
  onChange?.(event);
4636
4657
  event.target.value = "";
@@ -5049,7 +5070,7 @@ function extractDigits(str) {
5049
5070
  }
5050
5071
 
5051
5072
  // src/input-otp/useInputOTP.ts
5052
- import { useCallback as useCallback20, useEffect as useEffect25, useMemo as useMemo3, useRef as useRef17, useState as useState22 } from "react";
5073
+ import { useCallback as useCallback19, useEffect as useEffect25, useMemo as useMemo3, useRef as useRef17, useState as useState22 } from "react";
5053
5074
  function useInputOTP({
5054
5075
  maxLength,
5055
5076
  value,
@@ -5074,7 +5095,7 @@ function useInputOTP({
5074
5095
  return nextSlots;
5075
5096
  }, [value, maxLength]);
5076
5097
  slotsRef.current = slots;
5077
- const emitValue = useCallback20(
5098
+ const emitValue = useCallback19(
5078
5099
  (newSlots) => {
5079
5100
  let lastFilledIndex = -1;
5080
5101
  for (let index = newSlots.length - 1; index >= 0; index -= 1) {
@@ -5100,7 +5121,7 @@ function useInputOTP({
5100
5121
  inputRefs.current[0].focus();
5101
5122
  }
5102
5123
  }, [autoFocus]);
5103
- const handleContainerFocusIn = useCallback20((event) => {
5124
+ const handleContainerFocusIn = useCallback19((event) => {
5104
5125
  clearTimeout(blurTimeoutRef.current);
5105
5126
  const target = event.target;
5106
5127
  const slotIndex = inputRefs.current.indexOf(target);
@@ -5108,7 +5129,7 @@ function useInputOTP({
5108
5129
  setActiveIndex(slotIndex);
5109
5130
  }
5110
5131
  }, []);
5111
- const handleContainerFocusOut = useCallback20(() => {
5132
+ const handleContainerFocusOut = useCallback19(() => {
5112
5133
  clearTimeout(blurTimeoutRef.current);
5113
5134
  blurTimeoutRef.current = setTimeout(() => {
5114
5135
  if (!containerRef.current?.contains(document.activeElement)) {
@@ -5117,7 +5138,7 @@ function useInputOTP({
5117
5138
  }, 0);
5118
5139
  }, []);
5119
5140
  useEffect25(() => () => clearTimeout(blurTimeoutRef.current), []);
5120
- const handleDigitInput = useCallback20(
5141
+ const handleDigitInput = useCallback19(
5121
5142
  (index, digit) => {
5122
5143
  if (!DIGIT_REGEX.test(digit)) return;
5123
5144
  const newSlots = [...slotsRef.current];
@@ -5131,7 +5152,7 @@ function useInputOTP({
5131
5152
  },
5132
5153
  [maxLength, emitValue]
5133
5154
  );
5134
- const handleDelete = useCallback20(
5155
+ const handleDelete = useCallback19(
5135
5156
  (index) => {
5136
5157
  const newSlots = [...slotsRef.current];
5137
5158
  if (newSlots[index]) {
@@ -5146,7 +5167,7 @@ function useInputOTP({
5146
5167
  },
5147
5168
  [emitValue]
5148
5169
  );
5149
- const handlePaste = useCallback20(
5170
+ const handlePaste = useCallback19(
5150
5171
  (text) => {
5151
5172
  const digits = extractDigits(text).slice(0, maxLength);
5152
5173
  if (digits.length > 0) {
@@ -5196,7 +5217,7 @@ function useInputOTP({
5196
5217
 
5197
5218
  // src/input-otp/useInputOTPSlot.ts
5198
5219
  import {
5199
- useCallback as useCallback21
5220
+ useCallback as useCallback20
5200
5221
  } from "react";
5201
5222
  function useInputOTPSlot(index) {
5202
5223
  const {
@@ -5267,13 +5288,13 @@ function useInputOTPSlot(index) {
5267
5288
  event.preventDefault();
5268
5289
  handlePaste(event.clipboardData.getData("text/plain"));
5269
5290
  };
5270
- const setInputRef = useCallback21(
5291
+ const setInputRef = useCallback20(
5271
5292
  (element) => {
5272
5293
  inputRefs.current[index] = element;
5273
5294
  },
5274
5295
  [index, inputRefs]
5275
5296
  );
5276
- const focusSlot = useCallback21(() => {
5297
+ const focusSlot = useCallback20(() => {
5277
5298
  inputRefs.current[index]?.focus();
5278
5299
  }, [index, inputRefs]);
5279
5300
  return {
@@ -5598,7 +5619,23 @@ var translation_default2 = {
5598
5619
  past_dates: "Date cannot be before {{minDate}}",
5599
5620
  future_dates: "Date cannot be after {{maxDate}}",
5600
5621
  signature_placeholder_text: "Sign inside this box.<br/> Use your finger.<br/> Tap to start.",
5622
+ open_devices_camera: "Open device's camera",
5623
+ place_document_inside_frame: "Place your document inside the frame",
5624
+ close_other_application_that_may_be_using_your_camera: "Close other applications that may be using your camera",
5625
+ if_you_use_external_camera_disconnect_and_reconnect: "If you use an external camera, disconnect and reconnect it",
5626
+ close_the_browser_re_open_it: "Close the browser and reopen it",
5601
5627
  camera_permissions_denied: "The camera doesn't open? Make sure to allow the browser permission to use the camera.",
5628
+ camera_errors: {
5629
+ experiencing_camera_issues: "Experiencing camera issues?",
5630
+ chekin_cant_use_your_camera: "Chekin can't use your camera",
5631
+ please_try_a_different_browser: "Your camera doesn't work in this browser. Please, try to open the link in a different browser.",
5632
+ permissions_denied: "Permission denied",
5633
+ camera_permissions_denied: "The camera doesn't open? Make sure to allow the browser permission to use the camera.",
5634
+ no_camera_device_found: "No camera device found. Please connect a camera.",
5635
+ constraints_camera_error: "Constraints cannot be satisfied by available devices.",
5636
+ safari_camera_error: "Safari could not satisfy the camera requirements",
5637
+ try_chrome_or_firefox: "Please try Chrome or Firefox"
5638
+ },
5602
5639
  clear: "Clear",
5603
5640
  show_less: "Show less",
5604
5641
  show_more: "Show more"
@@ -6721,7 +6758,7 @@ var LegacyMultiSelect = forwardRef33(LegacyMultiSelectInner);
6721
6758
 
6722
6759
  // src/legacy-fields/select/InfinitySelect.tsx
6723
6760
  import { useVirtualizer } from "@tanstack/react-virtual";
6724
- import { useCallback as useCallback22, useEffect as useEffect26, useId as useId7, useRef as useRef19, useState as useState27 } from "react";
6761
+ import { useCallback as useCallback21, useEffect as useEffect26, useId as useId7, useRef as useRef19, useState as useState27 } from "react";
6725
6762
  import { jsx as jsx79, jsxs as jsxs50 } from "react/jsx-runtime";
6726
6763
  function LegacyInfinitySelect({
6727
6764
  label,
@@ -6745,7 +6782,7 @@ function LegacyInfinitySelect({
6745
6782
  estimateSize: () => itemHeight,
6746
6783
  overscan: 5
6747
6784
  });
6748
- const loadMore = useCallback22(() => {
6785
+ const loadMore = useCallback21(() => {
6749
6786
  if (hasNextPage && !isFetchingNextPage) {
6750
6787
  fetchNextPage();
6751
6788
  }
@@ -7113,11 +7150,11 @@ var RadioGroupItem = React25.forwardRef(({ className, size = "default", ...props
7113
7150
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
7114
7151
 
7115
7152
  // src/radio/useRadioOptions.ts
7116
- import { useCallback as useCallback23, useState as useState28 } from "react";
7153
+ import { useCallback as useCallback22, useState as useState28 } from "react";
7117
7154
  function useRadioOptions({ options, defaultValue, onChange }) {
7118
7155
  const initialValue = (typeof defaultValue === "string" ? options.find((option) => option.value === defaultValue) : defaultValue) || "";
7119
7156
  const [selectedValue, setSelectedValue] = useState28(initialValue);
7120
- const handleValueChange = useCallback23(
7157
+ const handleValueChange = useCallback22(
7121
7158
  (value) => {
7122
7159
  setSelectedValue(value);
7123
7160
  const selectedOption = options.find((option) => option.value === value) || "";
@@ -8208,7 +8245,7 @@ var SidebarProvider = React28.forwardRef(
8208
8245
  stateName = SIDEBAR_COOKIE_NAME_DEFAULT,
8209
8246
  ...props
8210
8247
  }, ref) => {
8211
- const isMobile2 = useIsMobile({ breakpoint: 641 });
8248
+ const isMobile3 = useIsMobile({ breakpoint: 641 });
8212
8249
  const [openMobile, setOpenMobile] = React28.useState(false);
8213
8250
  const [_open, _setOpen] = React28.useState(defaultOpen);
8214
8251
  const open = openProp ?? _open;
@@ -8225,8 +8262,8 @@ var SidebarProvider = React28.forwardRef(
8225
8262
  [setOpenProp, open, stateName]
8226
8263
  );
8227
8264
  const toggleSidebar = React28.useCallback(() => {
8228
- return isMobile2 ? setOpenMobile((value) => !value) : setOpen((value) => !value);
8229
- }, [isMobile2, setOpen]);
8265
+ return isMobile3 ? setOpenMobile((value) => !value) : setOpen((value) => !value);
8266
+ }, [isMobile3, setOpen]);
8230
8267
  React28.useEffect(() => {
8231
8268
  const handleKeyDown = (event) => {
8232
8269
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
@@ -8243,12 +8280,12 @@ var SidebarProvider = React28.forwardRef(
8243
8280
  state,
8244
8281
  open,
8245
8282
  setOpen,
8246
- isMobile: isMobile2,
8283
+ isMobile: isMobile3,
8247
8284
  openMobile,
8248
8285
  setOpenMobile,
8249
8286
  toggleSidebar
8250
8287
  }),
8251
- [state, open, setOpen, isMobile2, openMobile, setOpenMobile, toggleSidebar]
8288
+ [state, open, setOpen, isMobile3, openMobile, setOpenMobile, toggleSidebar]
8252
8289
  );
8253
8290
  return /* @__PURE__ */ jsx105(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx105(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx105(
8254
8291
  "div",
@@ -8275,7 +8312,7 @@ var Sidebar = React28.forwardRef(
8275
8312
  children,
8276
8313
  ...props
8277
8314
  }, ref) => {
8278
- const { isMobile: isMobile2, state, openMobile, setOpenMobile } = useSidebar();
8315
+ const { isMobile: isMobile3, state, openMobile, setOpenMobile } = useSidebar();
8279
8316
  if (collapsible === "none") {
8280
8317
  return /* @__PURE__ */ jsx105(
8281
8318
  "div",
@@ -8290,7 +8327,7 @@ var Sidebar = React28.forwardRef(
8290
8327
  }
8291
8328
  );
8292
8329
  }
8293
- if (isMobile2) {
8330
+ if (isMobile3) {
8294
8331
  return /* @__PURE__ */ jsx105(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs64(
8295
8332
  SheetContent,
8296
8333
  {
@@ -8361,7 +8398,7 @@ var Sidebar = React28.forwardRef(
8361
8398
  );
8362
8399
  Sidebar.displayName = "Sidebar";
8363
8400
  var SidebarTrigger = React28.forwardRef(({ className, onClick, icon, ...props }, ref) => {
8364
- const { toggleSidebar, open, isMobile: isMobile2, openMobile } = useSidebar();
8401
+ const { toggleSidebar, open, isMobile: isMobile3, openMobile } = useSidebar();
8365
8402
  return /* @__PURE__ */ jsxs64(
8366
8403
  Button,
8367
8404
  {
@@ -8380,7 +8417,7 @@ var SidebarTrigger = React28.forwardRef(({ className, onClick, icon, ...props },
8380
8417
  },
8381
8418
  ...props,
8382
8419
  children: [
8383
- icon || (isMobile2 ? openMobile : open) ? icon || /* @__PURE__ */ jsx105(ArrowLeftFromLineIcon, {}) : /* @__PURE__ */ jsx105(ArrowRightFromLineIcon, {}),
8420
+ icon || (isMobile3 ? openMobile : open) ? icon || /* @__PURE__ */ jsx105(ArrowLeftFromLineIcon, {}) : /* @__PURE__ */ jsx105(ArrowRightFromLineIcon, {}),
8384
8421
  /* @__PURE__ */ jsx105("span", { className: "sr-only", children: "Toggle Sidebar" })
8385
8422
  ]
8386
8423
  }
@@ -8600,7 +8637,7 @@ var SidebarMenuButton = React28.forwardRef(
8600
8637
  ...props
8601
8638
  }, ref) => {
8602
8639
  const Comp = asChild ? Slot4 : "button";
8603
- const { isMobile: isMobile2, state } = useSidebar();
8640
+ const { isMobile: isMobile3, state } = useSidebar();
8604
8641
  const button = /* @__PURE__ */ jsx105(
8605
8642
  Comp,
8606
8643
  {
@@ -8624,7 +8661,7 @@ var SidebarMenuButton = React28.forwardRef(
8624
8661
  {
8625
8662
  side: "right",
8626
8663
  align: "center",
8627
- hidden: state !== "collapsed" || isMobile2,
8664
+ hidden: state !== "collapsed" || isMobile3,
8628
8665
  className: "capitalize",
8629
8666
  variant: "dark",
8630
8667
  ...tooltipProps
@@ -8653,8 +8690,8 @@ var SidebarMenuAction = React28.forwardRef(({ className, asChild = false, showOn
8653
8690
  SidebarMenuAction.displayName = "SidebarMenuAction";
8654
8691
  var SidebarMenuBadge = React28.forwardRef(
8655
8692
  ({ className, ...props }, ref) => {
8656
- const { open, isMobile: isMobile2, openMobile } = useSidebar();
8657
- const isOpen = isMobile2 ? openMobile : open;
8693
+ const { open, isMobile: isMobile3, openMobile } = useSidebar();
8694
+ const isOpen = isMobile3 ? openMobile : open;
8658
8695
  return /* @__PURE__ */ jsx105(
8659
8696
  "div",
8660
8697
  {
@@ -9895,11 +9932,11 @@ function TimelineDescription({ className, asChild, ...props }) {
9895
9932
  import { Toaster, toast as toast2 } from "sonner";
9896
9933
 
9897
9934
  // src/toaster/useUpdateToast.ts
9898
- import { useCallback as useCallback26, useRef as useRef22 } from "react";
9935
+ import { useCallback as useCallback25, useRef as useRef22 } from "react";
9899
9936
  import { toast } from "sonner";
9900
9937
  function useUpdateToast({ id }) {
9901
9938
  const toastIdRef = useRef22("");
9902
- const getToastOptions = useCallback26(
9939
+ const getToastOptions = useCallback25(
9903
9940
  (options) => ({
9904
9941
  id: toastIdRef.current,
9905
9942
  dismissible: false,
@@ -10141,7 +10178,7 @@ function TogglesInternal({
10141
10178
  var Toggles = forwardRef53(TogglesInternal);
10142
10179
 
10143
10180
  // src/three-dots-loader/ThreeDotsLoader.tsx
10144
- import { Fragment as Fragment12, jsx as jsx131, jsxs as jsxs79 } from "react/jsx-runtime";
10181
+ import { Fragment as Fragment11, jsx as jsx131, jsxs as jsxs79 } from "react/jsx-runtime";
10145
10182
  function Dots({
10146
10183
  height,
10147
10184
  width,
@@ -10197,10 +10234,10 @@ function ThreeDotsLoader({
10197
10234
  className
10198
10235
  ),
10199
10236
  role: "progressbar",
10200
- children: labelPlacement === "right" ? /* @__PURE__ */ jsxs79(Fragment12, { children: [
10237
+ children: labelPlacement === "right" ? /* @__PURE__ */ jsxs79(Fragment11, { children: [
10201
10238
  dots,
10202
10239
  /* @__PURE__ */ jsx131("div", { children: label })
10203
- ] }) : /* @__PURE__ */ jsxs79(Fragment12, { children: [
10240
+ ] }) : /* @__PURE__ */ jsxs79(Fragment11, { children: [
10204
10241
  /* @__PURE__ */ jsx131("div", { children: label }),
10205
10242
  dots
10206
10243
  ] })
@@ -10429,7 +10466,7 @@ import {
10429
10466
  VolumeX,
10430
10467
  X as X8
10431
10468
  } from "lucide-react";
10432
- import { Fragment as Fragment13, jsx as jsx135, jsxs as jsxs83 } from "react/jsx-runtime";
10469
+ import { Fragment as Fragment12, jsx as jsx135, jsxs as jsxs83 } from "react/jsx-runtime";
10433
10470
  function VideoPlayer({
10434
10471
  src,
10435
10472
  poster,
@@ -10625,7 +10662,7 @@ function VideoPlayer({
10625
10662
  onLoad: () => setIsLoading(false),
10626
10663
  title: title || "Vimeo video player"
10627
10664
  }
10628
- ) : /* @__PURE__ */ jsxs83(Fragment13, { children: [
10665
+ ) : /* @__PURE__ */ jsxs83(Fragment12, { children: [
10629
10666
  /* @__PURE__ */ jsxs83(
10630
10667
  "video",
10631
10668
  {
@@ -10731,147 +10768,619 @@ function VideoPlayer({
10731
10768
  }
10732
10769
 
10733
10770
  // src/webcam/Webcam.tsx
10734
- import { forwardRef as forwardRef54, useCallback as useCallback27, useEffect as useEffect34, useMemo as useMemo7, useState as useState35 } from "react";
10735
- import { useTranslation as useTranslation23 } from "react-i18next";
10736
- import { isMobile, isTablet } from "react-device-detect";
10771
+ import {
10772
+ forwardRef as forwardRef54,
10773
+ memo as memo7,
10774
+ useCallback as useCallback27,
10775
+ useImperativeHandle,
10776
+ useMemo as useMemo7,
10777
+ useRef as useRef25,
10778
+ useState as useState35
10779
+ } from "react";
10780
+ import { isFirefox, isMobile as isMobile2 } from "react-device-detect";
10737
10781
  import ReactWebcam from "react-webcam";
10738
10782
 
10739
- // src/webcam/utils.ts
10740
- function isDOMException(error) {
10741
- return error instanceof DOMException && Boolean(error?.name);
10783
+ // src/lib/compression.ts
10784
+ var IDENTITY_VERIFICATION_PHOTOS_MAX_SIZE_MB = 6;
10785
+ var IDENTITY_VERIFICATION_PHOTOS_QUALITY = 0.8;
10786
+ async function compressFile(file, { convertSize }) {
10787
+ const { default: Compressor } = await import("compressorjs");
10788
+ return new Promise((resolve, reject) => {
10789
+ new Compressor(file, {
10790
+ convertSize: convertSize ? convertSize * 1e6 : void 0,
10791
+ quality: 1,
10792
+ success: (result) => resolve(result),
10793
+ error: reject
10794
+ });
10795
+ });
10796
+ }
10797
+ async function compressImage(image) {
10798
+ const { default: Compressor } = await import("compressorjs");
10799
+ const parsedImage = new File([image], image.name, { type: image.type });
10800
+ return new Promise((resolve, reject) => {
10801
+ new Compressor(parsedImage, {
10802
+ convertSize: IDENTITY_VERIFICATION_PHOTOS_MAX_SIZE_MB * 1e6,
10803
+ quality: IDENTITY_VERIFICATION_PHOTOS_QUALITY,
10804
+ success: (compressedResult) => {
10805
+ toBase64(compressedResult).then((result) => {
10806
+ console.log(
10807
+ "Before: ",
10808
+ getFileSizeMB(image)?.toFixed(2),
10809
+ "MB",
10810
+ "After: ",
10811
+ getFileSizeMB(compressedResult)?.toFixed(2),
10812
+ "MB"
10813
+ );
10814
+ resolve(result);
10815
+ }, reject);
10816
+ },
10817
+ error: (error) => {
10818
+ if (error.message.includes("Failed to load the image")) {
10819
+ reject(new Error("Unable to process the selected image. Please try a different image."));
10820
+ return;
10821
+ }
10822
+ reject(error);
10823
+ }
10824
+ });
10825
+ });
10742
10826
  }
10743
10827
 
10744
- // src/webcam/Webcam.tsx
10745
- import { Fragment as Fragment14, jsx as jsx136, jsxs as jsxs84 } from "react/jsx-runtime";
10746
- var SCREENSHOT_FORMAT = "image/jpeg";
10747
- var MEDIA_CONSTRAINTS = {
10748
- audio: false,
10749
- video: {
10750
- width: { ideal: 4096 },
10751
- height: { ideal: 2160 }
10752
- }
10753
- };
10828
+ // src/webcam/useErrorHandler.ts
10829
+ import { useCallback as useCallback26 } from "react";
10830
+ import { useTranslation as useTranslation23 } from "react-i18next";
10831
+ import { isSafari as isSafari2 } from "react-device-detect";
10832
+
10833
+ // src/webcam/utils.ts
10834
+ import { isMobile, isSafari, isTablet } from "react-device-detect";
10754
10835
  var isMobileOrTablet = () => isMobile || isTablet;
10755
- function getMobileOrDesktopVideoConstraints() {
10836
+ var getLivenessOptimizedConstraints = (deviceId, additional) => {
10837
+ const additionalConstraints = typeof additional === "object" && additional !== null ? additional : {};
10838
+ const baseConstraints = {
10839
+ deviceId: deviceId ? { exact: deviceId } : void 0,
10840
+ facingMode: { ideal: "user" },
10841
+ width: { min: 320, ideal: 800 },
10842
+ height: { min: 240, ideal: 600 },
10843
+ frameRate: { ideal: 24 },
10844
+ resizeMode: "crop-and-scale",
10845
+ aspectRatio: { ideal: 1.333 },
10846
+ ...additionalConstraints
10847
+ };
10756
10848
  if (isMobileOrTablet()) {
10757
10849
  return {
10758
- width: { min: 576, ideal: 1080, max: 2160 },
10759
- height: { min: 1024, ideal: 1920, max: 4096 },
10760
- facingMode: {
10761
- exact: "environment"
10762
- }
10850
+ ...baseConstraints,
10851
+ width: { min: 320, ideal: 640 },
10852
+ height: { min: 240, ideal: 480 },
10853
+ aspectRatio: { ideal: 1 },
10854
+ facingMode: { ideal: "environment" },
10855
+ ...additionalConstraints
10763
10856
  };
10764
10857
  }
10858
+ return baseConstraints;
10859
+ };
10860
+ function getReducedVideoConstraints({
10861
+ deviceId,
10862
+ facingMode,
10863
+ additional
10864
+ }) {
10865
+ const additionalConstraints = typeof additional === "object" ? additional : {};
10765
10866
  return {
10766
- facingMode: "user"
10867
+ deviceId: deviceId ? { exact: deviceId } : void 0,
10868
+ facingMode: { ideal: facingMode || "user" },
10869
+ width: { min: 320, ideal: 640 },
10870
+ height: { min: 240, ideal: 480 },
10871
+ ...additionalConstraints
10767
10872
  };
10768
10873
  }
10769
- var Webcam = forwardRef54(
10770
- ({
10771
- onUserMedia,
10772
- onUserMediaError,
10773
- onException,
10774
- audio = false,
10775
- imageSmoothing = false,
10776
- screenshotQuality = 1,
10777
- videoConstraints,
10778
- className,
10779
- mirrored
10780
- }, ref) => {
10781
- const { t } = useTranslation23();
10782
- const isMounted = useIsMounted();
10783
- const [minScreenshotHeight, setMinScreenshotHeight] = useState35(
10784
- void 0
10785
- );
10786
- const [minScreenshotWidth, setMinScreenshotWidth] = useState35(
10787
- void 0
10874
+ function getMobileOrDesktopVideoConstraints({
10875
+ deviceId,
10876
+ facingMode,
10877
+ additional,
10878
+ optimizedForLiveness = false
10879
+ }) {
10880
+ const additionalConstraints = typeof additional === "object" ? additional : {};
10881
+ if (optimizedForLiveness) {
10882
+ return getLivenessOptimizedConstraints(deviceId, additionalConstraints);
10883
+ }
10884
+ const initialConstraints = {
10885
+ deviceId: deviceId ? { exact: deviceId } : void 0,
10886
+ facingMode: { ideal: facingMode || "user" },
10887
+ width: isSafari ? { min: 320, ideal: 1920 } : { min: 320, ideal: 4096, max: 4096 },
10888
+ height: isSafari ? { min: 240, ideal: 1080 } : { min: 240, ideal: 2160, max: 2160 },
10889
+ frameRate: { ideal: 30 },
10890
+ resizeMode: "none",
10891
+ aspectRatio: { ideal: 1.777 },
10892
+ ...additionalConstraints
10893
+ };
10894
+ if (isMobileOrTablet()) {
10895
+ return {
10896
+ ...initialConstraints,
10897
+ aspectRatio: { ideal: 1 },
10898
+ facingMode: { ideal: "environment" },
10899
+ ...additionalConstraints
10900
+ };
10901
+ }
10902
+ if (isSafari && !isMobile) {
10903
+ return {
10904
+ deviceId: deviceId ? { ideal: deviceId } : void 0,
10905
+ width: { min: 320, ideal: 1920 },
10906
+ height: { min: 240, ideal: 1080 },
10907
+ ...additionalConstraints
10908
+ };
10909
+ }
10910
+ return initialConstraints;
10911
+ }
10912
+ function isDOMException(error) {
10913
+ return error instanceof DOMException && Boolean(error?.name);
10914
+ }
10915
+ function getPhotoCanvas({
10916
+ player,
10917
+ container,
10918
+ scanArea,
10919
+ canvas,
10920
+ cropToScanArea
10921
+ }) {
10922
+ if (!canvas) return;
10923
+ const playerWidth = player?.videoWidth ?? 1280;
10924
+ const playerHeight = player?.videoHeight ?? 720;
10925
+ const playerAR = playerWidth / playerHeight;
10926
+ const canvasWidth = container?.offsetWidth ?? 1280;
10927
+ const canvasHeight = container?.offsetHeight ?? 1280;
10928
+ const canvasAR = canvasWidth / canvasHeight;
10929
+ let sourceX;
10930
+ let sourceY;
10931
+ let sourceWidth;
10932
+ let sourceHeight;
10933
+ if (playerAR > canvasAR) {
10934
+ sourceHeight = playerHeight;
10935
+ sourceWidth = playerHeight * canvasAR;
10936
+ sourceX = (playerWidth - sourceWidth) / 2;
10937
+ sourceY = 0;
10938
+ } else {
10939
+ sourceWidth = playerWidth;
10940
+ sourceHeight = playerWidth / canvasAR;
10941
+ sourceX = 0;
10942
+ sourceY = (playerHeight - sourceHeight) / 2;
10943
+ }
10944
+ if (cropToScanArea && scanArea && player) {
10945
+ const scanAreaRect = scanArea.getBoundingClientRect();
10946
+ const scaleY = playerHeight / player.clientHeight;
10947
+ const offsetX = (playerWidth - player.clientWidth * scaleY) / 2;
10948
+ const offsetY = (playerHeight - player.clientHeight * scaleY) / 2;
10949
+ const cropX = offsetX + (player.clientWidth - scanAreaRect.width) / 2 * scaleY;
10950
+ const cropY = offsetY + (player.clientHeight - scanAreaRect.height) / 2 * scaleY;
10951
+ const cropWidth = scanAreaRect.width * scaleY;
10952
+ const cropHeight = scanAreaRect.height * scaleY;
10953
+ canvas.width = cropWidth;
10954
+ canvas.height = cropHeight;
10955
+ const context2 = canvas.getContext("2d");
10956
+ if (context2) {
10957
+ context2.drawImage(
10958
+ player,
10959
+ cropX,
10960
+ cropY,
10961
+ cropWidth,
10962
+ cropHeight,
10963
+ 0,
10964
+ 0,
10965
+ cropWidth,
10966
+ cropHeight
10967
+ );
10968
+ }
10969
+ return canvas;
10970
+ }
10971
+ canvas.width = sourceWidth;
10972
+ canvas.height = sourceHeight;
10973
+ const context = canvas.getContext("2d");
10974
+ if (context && player) {
10975
+ context.drawImage(
10976
+ player,
10977
+ sourceX,
10978
+ sourceY,
10979
+ sourceWidth,
10980
+ sourceHeight,
10981
+ 0,
10982
+ 0,
10983
+ sourceWidth,
10984
+ sourceHeight
10788
10985
  );
10789
- const [isCameraPermissionsDenied, setIsCameraPermissionsDenied] = useState35(false);
10790
- const constraints = videoConstraints || getMobileOrDesktopVideoConstraints();
10791
- const isDisplayingMirrored = useMemo7(() => {
10792
- if (mirrored !== void 0) {
10793
- return mirrored;
10794
- }
10795
- if (isCameraPermissionsDenied) {
10796
- return false;
10797
- }
10798
- const facingMode = typeof constraints === "object" && constraints !== null ? constraints.facingMode : void 0;
10799
- if (typeof facingMode === "string") {
10800
- return facingMode === "user";
10801
- }
10802
- if (typeof facingMode === "object" && facingMode !== null && ("exact" in facingMode || "ideal" in facingMode)) {
10803
- const { exact, ideal } = facingMode;
10804
- return (exact ?? ideal) === "user";
10805
- }
10806
- return !isMobileOrTablet();
10807
- }, [mirrored, isCameraPermissionsDenied, constraints]);
10808
- useEffect34(() => {
10809
- if (!isMobile) {
10810
- try {
10811
- window.navigator?.mediaDevices?.getUserMedia(MEDIA_CONSTRAINTS)?.then((stream) => {
10812
- const track = stream.getVideoTracks()[0];
10813
- const capabilities = track.getCapabilities();
10814
- if (capabilities && isMounted.current) {
10815
- setMinScreenshotHeight(capabilities?.height?.max);
10816
- setMinScreenshotWidth(capabilities?.width?.max);
10986
+ }
10987
+ return canvas;
10988
+ }
10989
+
10990
+ // src/webcam/useErrorHandler.ts
10991
+ var GET_USER_MEDIA_ERROR = "getUserMedia is not implemented in this browser";
10992
+ function useErrorHandler({ onError }) {
10993
+ const { t } = useTranslation23();
10994
+ const handleError = useEvent(onError);
10995
+ const handleUserMediaError = useCallback26(
10996
+ (error) => {
10997
+ console.error(error);
10998
+ let errorText = "";
10999
+ if (error?.message === GET_USER_MEDIA_ERROR) {
11000
+ errorText = t("camera_errors.chekin_cant_use_your_camera");
11001
+ handleError({
11002
+ title: errorText,
11003
+ message: t("camera_errors.please_try_a_different_browser")
11004
+ });
11005
+ } else if (isDOMException(error)) {
11006
+ switch (error.name) {
11007
+ case "PermissionDeniedError":
11008
+ case "NotAllowedError":
11009
+ errorText = `${t("camera_errors.permissions_denied")}. ${t(
11010
+ "camera_errors.camera_permissions_denied"
11011
+ )}`;
11012
+ toast2.error(errorText);
11013
+ break;
11014
+ case "NotFoundError":
11015
+ errorText = t("camera_errors.no_camera_device_found");
11016
+ toast2.error(errorText);
11017
+ break;
11018
+ case "NotReadableError":
11019
+ case "AbortError":
11020
+ errorText = t("camera_errors.chekin_cant_use_your_camera");
11021
+ handleError({
11022
+ title: errorText,
11023
+ message: `${t("close_other_application_that_may_be_using_your_camera")}.
11024
+ ${t("if_you_use_external_camera_disconnect_and_reconnect")}.
11025
+ ${t("close_the_browser_re_open_it")}.`
11026
+ });
11027
+ break;
11028
+ case "OverconstrainedError":
11029
+ errorText = t("camera_errors.constraints_camera_error");
11030
+ if (isSafari2) {
11031
+ handleError({
11032
+ title: errorText,
11033
+ message: `${t("camera_errors.safari_camera_error")}. ${t(
11034
+ "camera_errors.try_chrome_or_firefox"
11035
+ )}.`
11036
+ });
11037
+ } else {
11038
+ toast2.error(errorText);
10817
11039
  }
10818
- track.stop();
10819
- });
10820
- } catch (err) {
10821
- onException?.(err instanceof Error ? err : String(err));
11040
+ break;
11041
+ default:
11042
+ errorText = t("camera_errors.chekin_cant_use_your_camera");
11043
+ handleError({
11044
+ title: errorText,
11045
+ message: `${t("camera_errors.please_try_a_different_browser")} ${error}`
11046
+ });
10822
11047
  }
11048
+ } else {
11049
+ errorText = t("camera_errors.chekin_cant_use_your_camera");
11050
+ handleError({
11051
+ title: errorText,
11052
+ message: `${t("camera_errors.please_try_a_different_browser")} ${error}`
11053
+ });
10823
11054
  }
10824
- }, [constraints, isMounted, onException]);
10825
- const handleUserMediaError = useCallback27(
10826
- (error) => {
10827
- if (isDOMException(error) && ["PermissionDeniedError", "NotAllowedError"].includes(error.name)) {
10828
- setIsCameraPermissionsDenied(true);
10829
- } else {
10830
- onException?.(error);
11055
+ },
11056
+ [handleError, t]
11057
+ );
11058
+ return { handleUserMediaError };
11059
+ }
11060
+
11061
+ // src/webcam/Webcam.tsx
11062
+ import { Fragment as Fragment13, jsx as jsx136, jsxs as jsxs84 } from "react/jsx-runtime";
11063
+ var SCREENSHOT_FORMAT = "image/jpeg";
11064
+ var mirroredTransformStyle = { transform: "rotateY(180deg)" };
11065
+ var Webcam = memo7(
11066
+ forwardRef54(
11067
+ ({
11068
+ onUserMedia,
11069
+ onDisabled,
11070
+ imageSmoothing,
11071
+ videoConstraints,
11072
+ additionalConstraints,
11073
+ hideScanArea,
11074
+ roundedScanArea,
11075
+ cropToScanArea,
11076
+ className,
11077
+ mirrored,
11078
+ children,
11079
+ isLoading,
11080
+ placeholderImage,
11081
+ screenshotMaxSize,
11082
+ minScreenshotH,
11083
+ minScreenshotW,
11084
+ videoSourceDeviceId,
11085
+ screenshotQuality = 1,
11086
+ compression,
11087
+ onError,
11088
+ ...props
11089
+ }, ref) => {
11090
+ const [minScreenshotHeight, setMinScreenshotHeight] = useState35();
11091
+ const [minScreenshotWidth, setMinScreenshotWidth] = useState35();
11092
+ const [useReducedConstraints, setUseReducedConstraints] = useState35(false);
11093
+ const [numberOfCameras, setNumberOfCameras] = useState35(0);
11094
+ const constraints = useMemo7(() => {
11095
+ if (videoConstraints) {
11096
+ return videoConstraints;
10831
11097
  }
10832
- onUserMediaError?.();
10833
- },
10834
- [onUserMediaError, onException]
10835
- );
10836
- return /* @__PURE__ */ jsxs84(Fragment14, { children: [
10837
- /* @__PURE__ */ jsx136(
11098
+ if (useReducedConstraints) {
11099
+ return getReducedVideoConstraints({
11100
+ deviceId: videoSourceDeviceId,
11101
+ additional: additionalConstraints
11102
+ });
11103
+ }
11104
+ return getMobileOrDesktopVideoConstraints({
11105
+ deviceId: videoSourceDeviceId,
11106
+ additional: additionalConstraints
11107
+ });
11108
+ }, [
11109
+ additionalConstraints,
11110
+ useReducedConstraints,
11111
+ videoConstraints,
11112
+ videoSourceDeviceId
11113
+ ]);
11114
+ const isMirroredInCSS = mirrored === void 0 && !isMobileOrTablet();
11115
+ const webcamRef = useRef25(null);
11116
+ const scanAreaRef = useRef25(null);
11117
+ const canvasRef = useRef25(null);
11118
+ const containerRef = useRef25(null);
11119
+ const { handleUserMediaError } = useErrorHandler({
11120
+ onError: (errorDetails) => {
11121
+ onDisabled?.(true);
11122
+ onError(errorDetails);
11123
+ }
11124
+ });
11125
+ const handleUserMediaErrorWithFallback = useCallback27(
11126
+ (error) => {
11127
+ if (error instanceof DOMException && error.name === "OverconstrainedError" && !useReducedConstraints && !videoConstraints) {
11128
+ console.warn("Camera constraints failed, trying reduced constraints:", error);
11129
+ setUseReducedConstraints(true);
11130
+ return;
11131
+ }
11132
+ handleUserMediaError(error);
11133
+ },
11134
+ [handleUserMediaError, useReducedConstraints, videoConstraints]
11135
+ );
11136
+ const compressImage2 = async (canvas) => {
11137
+ if (!canvas) return;
11138
+ const blobImage = await getCanvasBlob(canvas);
11139
+ if (!blobImage) return;
11140
+ const compressedFile = await compressFile(blobImage, {
11141
+ convertSize: screenshotMaxSize
11142
+ });
11143
+ console.log(
11144
+ "Before: ",
11145
+ getFileSizeMB(blobImage)?.toFixed(2),
11146
+ "MB",
11147
+ "After: ",
11148
+ getFileSizeMB(compressedFile)?.toFixed(2),
11149
+ "MB"
11150
+ );
11151
+ return toBase64(compressedFile);
11152
+ };
11153
+ const handleTakePhoto = () => {
11154
+ const takenPhotoCanvas = getPhotoCanvas({
11155
+ player: webcamRef.current?.video,
11156
+ container: containerRef.current,
11157
+ canvas: canvasRef.current,
11158
+ scanArea: scanAreaRef.current,
11159
+ cropToScanArea
11160
+ });
11161
+ if (!takenPhotoCanvas) return;
11162
+ if (compression) return compressImage2(takenPhotoCanvas);
11163
+ return Promise.resolve(
11164
+ takenPhotoCanvas.toDataURL(SCREENSHOT_FORMAT, screenshotQuality)
11165
+ );
11166
+ };
11167
+ useImperativeHandle(
11168
+ ref,
11169
+ () => ({
11170
+ takePhoto: handleTakePhoto,
11171
+ numberOfCameras,
11172
+ ...webcamRef.current
11173
+ })
11174
+ );
11175
+ const handleUserMediaSuccess = useCallback27(
11176
+ (stream) => {
11177
+ if (!isMobile2) {
11178
+ const track = stream.getVideoTracks()[0];
11179
+ const capabilities = !isFirefox && track?.getCapabilities();
11180
+ if (capabilities) {
11181
+ setMinScreenshotHeight(capabilities.height?.max);
11182
+ setMinScreenshotWidth(capabilities.width?.max);
11183
+ }
11184
+ } else {
11185
+ setMinScreenshotWidth(minScreenshotW);
11186
+ setMinScreenshotHeight(minScreenshotH);
11187
+ }
11188
+ navigator.mediaDevices.enumerateDevices().then((devices) => {
11189
+ setNumberOfCameras(
11190
+ devices.filter((device) => device.kind === "videoinput").length
11191
+ );
11192
+ }).catch((error) => {
11193
+ console.warn("Failed to enumerate devices:", error);
11194
+ setNumberOfCameras(1);
11195
+ });
11196
+ onUserMedia?.();
11197
+ },
11198
+ [minScreenshotH, minScreenshotW, onUserMedia]
11199
+ );
11200
+ return /* @__PURE__ */ jsxs84(
10838
11201
  "div",
10839
11202
  {
11203
+ ref: containerRef,
10840
11204
  className: cn(
10841
- "relative z-[1] mx-auto flex h-[191px] w-[283px] justify-center overflow-hidden rounded-md text-center",
10842
- isDisplayingMirrored && "[&_video]:scale-x-[-1]",
10843
- className
11205
+ className,
11206
+ "webcam relative z-[1] mx-auto flex h-[222px] w-[332px] items-center justify-center overflow-hidden rounded-[6px] text-center",
11207
+ "kiosko:h-[620px] kiosko:max-h-[620px] kiosko:w-[890px] kiosko:max-w-[890px]"
10844
11208
  ),
10845
- children: /* @__PURE__ */ jsx136(
10846
- ReactWebcam,
11209
+ style: isMirroredInCSS ? mirroredTransformStyle : void 0,
11210
+ children: [
11211
+ !hideScanArea && /* @__PURE__ */ jsxs84(
11212
+ "div",
11213
+ {
11214
+ ref: scanAreaRef,
11215
+ className: cn(
11216
+ "webcam__scan-area absolute inset-0 z-[2] m-auto flex w-[calc(100%-32px)] items-center justify-center shadow-[0_0_0_9999em_rgb(0_0_0_/_60%)]",
11217
+ "h-[200px] rounded-[15px] min-[479px]:h-[calc(100%-32px)]",
11218
+ roundedScanArea && "h-[197px] w-[165px] rounded-[45%] border-[3px] border-white shadow-[0_0_8px_#fff,inset_0_0_0_#fff,0_0_0_9999em_rgb(0_0_0_/_60%)]",
11219
+ "kiosko:h-[calc(100%-170px)] kiosko:w-[345px]"
11220
+ ),
11221
+ style: isMirroredInCSS ? mirroredTransformStyle : void 0,
11222
+ children: [
11223
+ !roundedScanArea && /* @__PURE__ */ jsxs84(Fragment13, { children: [
11224
+ /* @__PURE__ */ jsx136("div", { className: "absolute left-[-2px] top-[-2px] h-[45px] w-[45px] rounded-tl-[15px] border-[4px] border-b-0 border-r-0 border-white" }),
11225
+ /* @__PURE__ */ jsx136("div", { className: "absolute right-[-2px] top-[-2px] h-[45px] w-[45px] rounded-tr-[15px] border-[4px] border-b-0 border-l-0 border-white" }),
11226
+ /* @__PURE__ */ jsx136("div", { className: "absolute bottom-[-2px] right-[-2px] h-[45px] w-[45px] rounded-br-[15px] border-[4px] border-l-0 border-t-0 border-white" }),
11227
+ /* @__PURE__ */ jsx136("div", { className: "absolute bottom-[-2px] left-[-2px] h-[45px] w-[45px] rounded-bl-[15px] border-[4px] border-r-0 border-t-0 border-white" })
11228
+ ] }),
11229
+ placeholderImage
11230
+ ]
11231
+ }
11232
+ ),
11233
+ /* @__PURE__ */ jsx136("canvas", { ref: canvasRef, className: "hidden" }),
11234
+ isLoading ? /* @__PURE__ */ jsx136("div", { className: "absolute inset-0 z-10 flex items-center justify-center bg-black/50", children: /* @__PURE__ */ jsx136("div", { className: "h-10 w-10 animate-spin rounded-full border-4 border-white/30 border-t-white" }) }) : /* @__PURE__ */ jsx136(
11235
+ ReactWebcam,
11236
+ {
11237
+ ref: webcamRef,
11238
+ mirrored: !!mirrored,
11239
+ width: props.width,
11240
+ height: props.height,
11241
+ videoConstraints: constraints,
11242
+ imageSmoothing: !!imageSmoothing,
11243
+ screenshotFormat: SCREENSHOT_FORMAT,
11244
+ onUserMedia: handleUserMediaSuccess,
11245
+ screenshotQuality,
11246
+ onUserMediaError: handleUserMediaErrorWithFallback,
11247
+ minScreenshotWidth,
11248
+ minScreenshotHeight,
11249
+ className: "webcam__video z-[1] h-full w-full bg-[#e2e2e2] object-cover",
11250
+ audio: false,
11251
+ disablePictureInPicture: false,
11252
+ forceScreenshotSourceSize: false
11253
+ }
11254
+ ),
11255
+ children
11256
+ ]
11257
+ }
11258
+ );
11259
+ }
11260
+ )
11261
+ );
11262
+ Webcam.displayName = "Webcam";
11263
+
11264
+ // src/mobile-webcam/MobileWebcam.tsx
11265
+ import { Camera, ChevronLeft as ChevronLeft4 } from "lucide-react";
11266
+ import { forwardRef as forwardRef55, useCallback as useCallback29 } from "react";
11267
+ import { createPortal } from "react-dom";
11268
+ import { useTranslation as useTranslation25 } from "react-i18next";
11269
+
11270
+ // src/mobile-webcam/DeviceCamera/DeviceCamera.tsx
11271
+ import { useCallback as useCallback28 } from "react";
11272
+ import { useTranslation as useTranslation24 } from "react-i18next";
11273
+ import { jsx as jsx137, jsxs as jsxs85 } from "react/jsx-runtime";
11274
+ function DeviceCamera({ onChange, facingMode, className }) {
11275
+ const { t } = useTranslation24();
11276
+ const handleNativeScreenshot = useCallback28(
11277
+ (event) => {
11278
+ const file = event.target.files?.[0];
11279
+ onChange(file ? compressImage(file) : void 0);
11280
+ },
11281
+ [onChange]
11282
+ );
11283
+ return /* @__PURE__ */ jsxs85(
11284
+ "div",
11285
+ {
11286
+ className: cn(
11287
+ "mobile-webcam-device-camera flex flex-col items-center gap-3 rounded-xl bg-[#1c1b1f] p-4 text-sm text-white",
11288
+ className
11289
+ ),
11290
+ children: [
11291
+ /* @__PURE__ */ jsx137("div", { children: t("camera_errors.experiencing_camera_issues") }),
11292
+ /* @__PURE__ */ jsxs85("label", { className: "text-[16px] font-semibold uppercase leading-6 text-[var(--text-button-color)]", children: [
11293
+ t("open_devices_camera"),
11294
+ /* @__PURE__ */ jsx137(
11295
+ "input",
10847
11296
  {
10848
- ref,
10849
- className: "z-[1] h-[260px] flex-1 self-center bg-[var(--webcam-bg)] max-md:min-h-[200%]",
10850
- onUserMedia,
10851
- onUserMediaError: handleUserMediaError,
10852
- audio,
10853
- imageSmoothing,
10854
- mirrored,
10855
- screenshotQuality,
10856
- videoConstraints: constraints,
10857
- screenshotFormat: SCREENSHOT_FORMAT,
10858
- minScreenshotHeight,
10859
- minScreenshotWidth
11297
+ className: "sr-only",
11298
+ type: "file",
11299
+ accept: "image/*",
11300
+ capture: facingMode || "environment",
11301
+ onChange: handleNativeScreenshot
10860
11302
  }
10861
11303
  )
10862
- }
10863
- ),
10864
- /* @__PURE__ */ jsx136("div", { className: "mx-auto box-border w-[306px] p-4 text-center text-base text-[var(--webcam-permission-text)]", children: t("camera_permissions_denied") })
10865
- ] });
11304
+ ] })
11305
+ ]
11306
+ }
11307
+ );
11308
+ }
11309
+
11310
+ // src/mobile-webcam/MobileWebcam.tsx
11311
+ import { jsx as jsx138, jsxs as jsxs86 } from "react/jsx-runtime";
11312
+ var webcamClasses = "fixed left-0 top-0 z-[6] h-full w-full rounded-none";
11313
+ var scanAreaClasses = String.raw`[&_.webcam\_\_scan-area]:h-full [&_.webcam\_\_scan-area]:max-h-[209px] landscape:[&_.webcam\_\_scan-area]:h-[80%] landscape:[&_.webcam\_\_scan-area]:max-h-full md:[&_.webcam\_\_scan-area]:h-auto md:[&_.webcam\_\_scan-area]:max-h-none md:[&_.webcam\_\_scan-area]:aspect-[2/1]`;
11314
+ var roundedWebcamClasses = String.raw`[&_.webcam\_\_scan-area]:top-[-60px] [&_.webcam\_\_scan-area]:h-full [&_.webcam\_\_scan-area]:w-full [&_.webcam\_\_scan-area]:max-h-[55%] [&_.webcam\_\_scan-area]:max-w-[80%] max-[375px]:[&_.webcam\_\_scan-area]:max-h-[369px] max-[375px]:[&_.webcam\_\_scan-area]:max-w-[261px] max-[320px]:[&_.webcam\_\_scan-area]:max-h-[318px] max-[320px]:[&_.webcam\_\_scan-area]:max-w-[220px] landscape:[&_.webcam\_\_scan-area]:h-full landscape:[&_.webcam\_\_scan-area]:w-full landscape:[&_.webcam\_\_scan-area]:max-h-[90%] landscape:[&_.webcam\_\_scan-area]:max-w-[261px] md:[&_.webcam\_\_scan-area]:aspect-square`;
11315
+ function getAndMapFacingMode(constraints) {
11316
+ if (typeof constraints === "boolean" || !constraints) return;
11317
+ if (constraints.facingMode === "user") return "user";
11318
+ if (constraints.facingMode === "environment") return "environment";
11319
+ }
11320
+ var MobileWebcam = forwardRef55(
11321
+ ({ onScreenshot, onBack, title, text, disabled, className, ...props }, ref) => {
11322
+ const rootElement = getDocument()?.body;
11323
+ const { t } = useTranslation25();
11324
+ const handleNativeScreenshot = useCallback29(
11325
+ (photo) => onScreenshot({ isNative: true, photo }),
11326
+ [onScreenshot]
11327
+ );
11328
+ return createPortal(
11329
+ /* @__PURE__ */ jsxs86("div", { className: "mobile-camera flex justify-center", children: [
11330
+ /* @__PURE__ */ jsx138(
11331
+ "button",
11332
+ {
11333
+ type: "button",
11334
+ onClick: onBack,
11335
+ className: "mobile-camera__back-btn fixed left-7 top-9 z-[7] flex border-0 bg-transparent p-0 landscape:left-[50px] landscape:top-[70px]",
11336
+ children: /* @__PURE__ */ jsx138(ChevronLeft4, { size: 32, strokeWidth: 3, className: "text-white" })
11337
+ }
11338
+ ),
11339
+ title && /* @__PURE__ */ jsx138("div", { className: "mobile-camera__title fixed left-1/2 top-8 z-[7] -translate-x-1/2 whitespace-nowrap text-[18px] font-bold text-white landscape:top-[5px]", children: title }),
11340
+ text ? /* @__PURE__ */ jsx138("p", { className: "mobile-camera__subtitle fixed top-[76px] z-[7] mx-auto my-0 px-6 text-center text-white landscape:hidden [@media(min-height:838px)]:top-28", children: text }) : /* @__PURE__ */ jsx138("p", { className: "mobile-camera__helper fixed top-[88px] z-[7] mx-auto my-0 px-6 text-center text-xs text-white landscape:hidden [@media(min-height:700px)]:[font-size:inherit]", children: t("place_document_inside_frame") }),
11341
+ /* @__PURE__ */ jsx138(
11342
+ Webcam,
11343
+ {
11344
+ ref,
11345
+ ...props,
11346
+ className: cn(
11347
+ className,
11348
+ webcamClasses,
11349
+ props.roundedScanArea ? roundedWebcamClasses : scanAreaClasses
11350
+ )
11351
+ }
11352
+ ),
11353
+ /* @__PURE__ */ jsxs86("div", { className: "fixed bottom-5 z-[7] flex w-[calc(100%-32px)] flex-col justify-between gap-5 self-center landscape:inset-y-0 landscape:right-10 landscape:my-auto landscape:h-auto landscape:w-auto landscape:justify-normal landscape:[&_.mobile-webcam-device-camera]:hidden", children: [
11354
+ /* @__PURE__ */ jsx138(
11355
+ "button",
11356
+ {
11357
+ type: "button",
11358
+ disabled,
11359
+ onClick: () => onScreenshot({ isNative: false }),
11360
+ className: "mobile-camera__take-btn relative flex h-[75px] w-[75px] items-center justify-center self-center rounded-full border-0 bg-white p-[10px] shadow-[0_0_10px_#ffffff] hover:opacity-80 disabled:cursor-default disabled:opacity-60 disabled:hover:opacity-60",
11361
+ children: /* @__PURE__ */ jsx138(Camera, { size: 26, className: "text-[var(--primary)]" })
11362
+ }
11363
+ ),
11364
+ /* @__PURE__ */ jsx138(
11365
+ DeviceCamera,
11366
+ {
11367
+ onChange: handleNativeScreenshot,
11368
+ facingMode: getAndMapFacingMode(props.additionalConstraints)
11369
+ }
11370
+ )
11371
+ ] })
11372
+ ] }),
11373
+ rootElement
11374
+ );
10866
11375
  }
10867
11376
  );
10868
- Webcam.displayName = "Webcam";
11377
+ MobileWebcam.displayName = "MobileWebcam";
10869
11378
 
10870
11379
  // src/wide-button/WideButton.tsx
10871
- import { forwardRef as forwardRef55 } from "react";
10872
- import { jsx as jsx137 } from "react/jsx-runtime";
10873
- var WideButton = forwardRef55(
10874
- ({ className, disabled, ...props }, ref) => /* @__PURE__ */ jsx137(
11380
+ import { forwardRef as forwardRef56 } from "react";
11381
+ import { jsx as jsx139 } from "react/jsx-runtime";
11382
+ var WideButton = forwardRef56(
11383
+ ({ className, disabled, ...props }, ref) => /* @__PURE__ */ jsx139(
10875
11384
  Button,
10876
11385
  {
10877
11386
  ref,
@@ -10893,22 +11402,22 @@ WideButton.displayName = "WideButton";
10893
11402
  import * as React42 from "react";
10894
11403
  import * as DialogPrimitive2 from "@radix-ui/react-dialog";
10895
11404
  import Draggable from "react-draggable";
10896
- import { jsx as jsx138, jsxs as jsxs85 } from "react/jsx-runtime";
11405
+ import { jsx as jsx140, jsxs as jsxs87 } from "react/jsx-runtime";
10897
11406
  var DRAWER_CLOSE_THRESHOLD = 72;
10898
11407
  var DRAWER_MIN_OVERLAY_OPACITY = 0.1;
10899
11408
  function Drawer({ ...props }) {
10900
- return /* @__PURE__ */ jsx138(DialogPrimitive2.Root, { "data-slot": "drawer", ...props });
11409
+ return /* @__PURE__ */ jsx140(DialogPrimitive2.Root, { "data-slot": "drawer", ...props });
10901
11410
  }
10902
11411
  function DrawerTrigger({ ...props }) {
10903
- return /* @__PURE__ */ jsx138(DialogPrimitive2.Trigger, { "data-slot": "drawer-trigger", ...props });
11412
+ return /* @__PURE__ */ jsx140(DialogPrimitive2.Trigger, { "data-slot": "drawer-trigger", ...props });
10904
11413
  }
10905
11414
  function DrawerPortal({ ...props }) {
10906
- return /* @__PURE__ */ jsx138(DialogPrimitive2.Portal, { "data-slot": "drawer-portal", ...props });
11415
+ return /* @__PURE__ */ jsx140(DialogPrimitive2.Portal, { "data-slot": "drawer-portal", ...props });
10907
11416
  }
10908
11417
  function DrawerClose({ ...props }) {
10909
- return /* @__PURE__ */ jsx138(DialogPrimitive2.Close, { "data-slot": "drawer-close", ...props });
11418
+ return /* @__PURE__ */ jsx140(DialogPrimitive2.Close, { "data-slot": "drawer-close", ...props });
10910
11419
  }
10911
- var DrawerOverlay = React42.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx138(
11420
+ var DrawerOverlay = React42.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx140(
10912
11421
  DialogPrimitive2.Overlay,
10913
11422
  {
10914
11423
  ref,
@@ -10958,14 +11467,14 @@ var DrawerContent = React42.forwardRef(
10958
11467
  },
10959
11468
  [onClose]
10960
11469
  );
10961
- return /* @__PURE__ */ jsxs85(DrawerPortal, { container: finalContainer, children: [
10962
- lockScroll ? /* @__PURE__ */ jsx138(
11470
+ return /* @__PURE__ */ jsxs87(DrawerPortal, { container: finalContainer, children: [
11471
+ lockScroll ? /* @__PURE__ */ jsx140(
10963
11472
  DrawerOverlay,
10964
11473
  {
10965
11474
  style: { opacity: overlayOpacity },
10966
11475
  onClick: closeOnOverlayClick ? onClose : void 0
10967
11476
  }
10968
- ) : /* @__PURE__ */ jsx138(
11477
+ ) : /* @__PURE__ */ jsx140(
10969
11478
  "div",
10970
11479
  {
10971
11480
  className: cn(DrawerOverlayClasses),
@@ -10973,7 +11482,7 @@ var DrawerContent = React42.forwardRef(
10973
11482
  onClick: closeOnOverlayClick ? onClose : void 0
10974
11483
  }
10975
11484
  ),
10976
- /* @__PURE__ */ jsx138(
11485
+ /* @__PURE__ */ jsx140(
10977
11486
  DialogPrimitive2.Content,
10978
11487
  {
10979
11488
  asChild: true,
@@ -10989,7 +11498,7 @@ var DrawerContent = React42.forwardRef(
10989
11498
  }
10990
11499
  },
10991
11500
  ...props,
10992
- children: /* @__PURE__ */ jsx138("div", { className: "fixed inset-x-0 bottom-0 top-auto z-50 outline-none", children: /* @__PURE__ */ jsx138(
11501
+ children: /* @__PURE__ */ jsx140("div", { className: "fixed inset-x-0 bottom-0 top-auto z-50 outline-none", children: /* @__PURE__ */ jsx140(
10993
11502
  Draggable,
10994
11503
  {
10995
11504
  axis: "y",
@@ -11000,7 +11509,7 @@ var DrawerContent = React42.forwardRef(
11000
11509
  onDrag: handleDrag,
11001
11510
  onStop: handleStop,
11002
11511
  position: { x: 0, y: dragOffsetY },
11003
- children: /* @__PURE__ */ jsxs85(
11512
+ children: /* @__PURE__ */ jsxs87(
11004
11513
  "div",
11005
11514
  {
11006
11515
  ref: nodeRef,
@@ -11009,7 +11518,7 @@ var DrawerContent = React42.forwardRef(
11009
11518
  className
11010
11519
  ),
11011
11520
  children: [
11012
- showHandle && /* @__PURE__ */ jsx138(
11521
+ showHandle && /* @__PURE__ */ jsx140(
11013
11522
  "div",
11014
11523
  {
11015
11524
  "data-drawer-handle": true,
@@ -11017,10 +11526,10 @@ var DrawerContent = React42.forwardRef(
11017
11526
  "mx-auto flex h-8 w-24 touch-none items-center justify-center",
11018
11527
  disableDrag ? "cursor-default" : "cursor-grab active:cursor-grabbing"
11019
11528
  ),
11020
- children: /* @__PURE__ */ jsx138("span", { className: "block h-1.5 w-12 rounded-full bg-[#D9D7D3]" })
11529
+ children: /* @__PURE__ */ jsx140("span", { className: "block h-1.5 w-12 rounded-full bg-[#D9D7D3]" })
11021
11530
  }
11022
11531
  ),
11023
- /* @__PURE__ */ jsx138("div", { className: "min-h-0 flex-1 overflow-y-auto", children })
11532
+ /* @__PURE__ */ jsx140("div", { className: "min-h-0 flex-1 overflow-y-auto", children })
11024
11533
  ]
11025
11534
  }
11026
11535
  )
@@ -11032,7 +11541,7 @@ var DrawerContent = React42.forwardRef(
11032
11541
  }
11033
11542
  );
11034
11543
  DrawerContent.displayName = DialogPrimitive2.Content.displayName;
11035
- var DrawerHeader = ({ className, ...props }) => /* @__PURE__ */ jsx138(
11544
+ var DrawerHeader = ({ className, ...props }) => /* @__PURE__ */ jsx140(
11036
11545
  "div",
11037
11546
  {
11038
11547
  className: cn("flex flex-col gap-2 px-5 pt-2 text-center", className),
@@ -11040,9 +11549,9 @@ var DrawerHeader = ({ className, ...props }) => /* @__PURE__ */ jsx138(
11040
11549
  }
11041
11550
  );
11042
11551
  DrawerHeader.displayName = "DrawerHeader";
11043
- var DrawerFooter = ({ className, ...props }) => /* @__PURE__ */ jsx138("div", { className: cn("flex flex-col gap-2 p-5", className), ...props });
11552
+ var DrawerFooter = ({ className, ...props }) => /* @__PURE__ */ jsx140("div", { className: cn("flex flex-col gap-2 p-5", className), ...props });
11044
11553
  DrawerFooter.displayName = "DrawerFooter";
11045
- var DrawerTitle = React42.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx138(
11554
+ var DrawerTitle = React42.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx140(
11046
11555
  DialogPrimitive2.Title,
11047
11556
  {
11048
11557
  ref,
@@ -11052,7 +11561,7 @@ var DrawerTitle = React42.forwardRef(({ className, ...props }, ref) => /* @__PUR
11052
11561
  }
11053
11562
  ));
11054
11563
  DrawerTitle.displayName = DialogPrimitive2.Title.displayName;
11055
- var DrawerDescription = React42.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx138(
11564
+ var DrawerDescription = React42.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx140(
11056
11565
  DialogPrimitive2.Description,
11057
11566
  {
11058
11567
  ref,
@@ -11079,7 +11588,7 @@ var DEVICE = {
11079
11588
  };
11080
11589
 
11081
11590
  // src/responsive-sheet/ResponsiveSheet.tsx
11082
- import { jsx as jsx139, jsxs as jsxs86 } from "react/jsx-runtime";
11591
+ import { jsx as jsx141, jsxs as jsxs88 } from "react/jsx-runtime";
11083
11592
  function ResponsiveSheet({
11084
11593
  open,
11085
11594
  onClose,
@@ -11098,8 +11607,8 @@ function ResponsiveSheet({
11098
11607
  closeOnEscape = true,
11099
11608
  disableDrag = false
11100
11609
  }) {
11101
- const { isMatch: isMobile2 } = useScreenResize(DEVICE.tablet);
11102
- const isMobileMode = isMobile2 && isMobileModalModeAvailable();
11610
+ const { isMatch: isMobile3 } = useScreenResize(DEVICE.tablet);
11611
+ const isMobileMode = isMobile3 && isMobileModalModeAvailable();
11103
11612
  const handleOpenChange = (nextOpen) => {
11104
11613
  if (!nextOpen) {
11105
11614
  onClose();
@@ -11115,7 +11624,7 @@ function ResponsiveSheet({
11115
11624
  event.preventDefault();
11116
11625
  }
11117
11626
  };
11118
- const content = /* @__PURE__ */ jsxs86(
11627
+ const content = /* @__PURE__ */ jsxs88(
11119
11628
  "div",
11120
11629
  {
11121
11630
  className: cn(
@@ -11123,7 +11632,7 @@ function ResponsiveSheet({
11123
11632
  contentClassName
11124
11633
  ),
11125
11634
  children: [
11126
- title ? /* @__PURE__ */ jsx139(
11635
+ title ? /* @__PURE__ */ jsx141(
11127
11636
  "div",
11128
11637
  {
11129
11638
  "aria-hidden": "true",
@@ -11134,7 +11643,7 @@ function ResponsiveSheet({
11134
11643
  children: title
11135
11644
  }
11136
11645
  ) : null,
11137
- description ? /* @__PURE__ */ jsx139(
11646
+ description ? /* @__PURE__ */ jsx141(
11138
11647
  "p",
11139
11648
  {
11140
11649
  "aria-hidden": "true",
@@ -11150,7 +11659,7 @@ function ResponsiveSheet({
11150
11659
  }
11151
11660
  );
11152
11661
  if (isMobileMode) {
11153
- return /* @__PURE__ */ jsx139(Drawer, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs86(
11662
+ return /* @__PURE__ */ jsx141(Drawer, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs88(
11154
11663
  DrawerContent,
11155
11664
  {
11156
11665
  onClose,
@@ -11161,14 +11670,14 @@ function ResponsiveSheet({
11161
11670
  onEscapeKeyDown: handleEscapeKeyDown,
11162
11671
  className: cn(className, drawerClassName),
11163
11672
  children: [
11164
- title ? /* @__PURE__ */ jsx139(DrawerTitle, { className: "sr-only", children: title }) : null,
11165
- description ? /* @__PURE__ */ jsx139(DrawerDescription, { className: "sr-only", children: description }) : null,
11673
+ title ? /* @__PURE__ */ jsx141(DrawerTitle, { className: "sr-only", children: title }) : null,
11674
+ description ? /* @__PURE__ */ jsx141(DrawerDescription, { className: "sr-only", children: description }) : null,
11166
11675
  content
11167
11676
  ]
11168
11677
  }
11169
11678
  ) });
11170
11679
  }
11171
- return /* @__PURE__ */ jsx139(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs86(
11680
+ return /* @__PURE__ */ jsx141(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs88(
11172
11681
  DialogContent,
11173
11682
  {
11174
11683
  showCloseButton,
@@ -11178,8 +11687,8 @@ function ResponsiveSheet({
11178
11687
  className: cn("max-w-[560px] border-0 p-0 shadow-xl", className, dialogClassName),
11179
11688
  lockScroll: false,
11180
11689
  children: [
11181
- title ? /* @__PURE__ */ jsx139(DialogTitle, { className: "sr-only", children: title }) : null,
11182
- description ? /* @__PURE__ */ jsx139(DialogDescription, { className: "sr-only", children: description }) : null,
11690
+ title ? /* @__PURE__ */ jsx141(DialogTitle, { className: "sr-only", children: title }) : null,
11691
+ description ? /* @__PURE__ */ jsx141(DialogDescription, { className: "sr-only", children: description }) : null,
11183
11692
  content
11184
11693
  ]
11185
11694
  }
@@ -11188,7 +11697,7 @@ function ResponsiveSheet({
11188
11697
 
11189
11698
  // src/responsive-dropdown/ResponsiveDropdown.tsx
11190
11699
  import * as React43 from "react";
11191
- import { Fragment as Fragment15, jsx as jsx140, jsxs as jsxs87 } from "react/jsx-runtime";
11700
+ import { Fragment as Fragment14, jsx as jsx142, jsxs as jsxs89 } from "react/jsx-runtime";
11192
11701
  function ResponsiveDropdown({
11193
11702
  trigger,
11194
11703
  options,
@@ -11201,8 +11710,8 @@ function ResponsiveDropdown({
11201
11710
  dropdownClassName,
11202
11711
  drawerClassName
11203
11712
  }) {
11204
- const { isMatch: isMobile2 } = useScreenResize(DEVICE.mobileXL);
11205
- const isMobileMode = isMobile2 && isMobileModalModeAvailable();
11713
+ const { isMatch: isMobile3 } = useScreenResize(DEVICE.mobileXL);
11714
+ const isMobileMode = isMobile3 && isMobileModalModeAvailable();
11206
11715
  const [open, setOpen] = React43.useState(false);
11207
11716
  const visibleOptions = options?.filter((option) => !option.hidden) ?? [];
11208
11717
  const renderTrigger = (isOpen) => typeof trigger === "function" ? trigger(isOpen) : trigger;
@@ -11220,8 +11729,8 @@ function ResponsiveDropdown({
11220
11729
  setOpen(false);
11221
11730
  };
11222
11731
  if (isMobileMode) {
11223
- return /* @__PURE__ */ jsxs87(Fragment15, { children: [
11224
- /* @__PURE__ */ jsx140(
11732
+ return /* @__PURE__ */ jsxs89(Fragment14, { children: [
11733
+ /* @__PURE__ */ jsx142(
11225
11734
  "div",
11226
11735
  {
11227
11736
  className: "responsive-dropdown__mobile-trigger",
@@ -11229,16 +11738,16 @@ function ResponsiveDropdown({
11229
11738
  children: renderTrigger(open)
11230
11739
  }
11231
11740
  ),
11232
- /* @__PURE__ */ jsx140(Drawer, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs87(
11741
+ /* @__PURE__ */ jsx142(Drawer, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs89(
11233
11742
  DrawerContent,
11234
11743
  {
11235
11744
  onClose: () => setOpen(false),
11236
11745
  lockScroll: false,
11237
11746
  className: cn("px-0 pb-2", className, drawerClassName),
11238
11747
  children: [
11239
- title ? /* @__PURE__ */ jsx140(DrawerTitle, { className: "sr-only", children: title }) : null,
11240
- /* @__PURE__ */ jsxs87("div", { className: "flex flex-col", children: [
11241
- visibleOptions.map((option) => /* @__PURE__ */ jsx140(
11748
+ title ? /* @__PURE__ */ jsx142(DrawerTitle, { className: "sr-only", children: title }) : null,
11749
+ /* @__PURE__ */ jsxs89("div", { className: "flex flex-col", children: [
11750
+ visibleOptions.map((option) => /* @__PURE__ */ jsx142(
11242
11751
  "div",
11243
11752
  {
11244
11753
  role: "button",
@@ -11260,16 +11769,16 @@ function ResponsiveDropdown({
11260
11769
  ) })
11261
11770
  ] });
11262
11771
  }
11263
- return /* @__PURE__ */ jsxs87(DropdownMenu, { open, onOpenChange: handleOpenChange, children: [
11264
- /* @__PURE__ */ jsx140(DropdownMenuTrigger, { asChild: true, disabled, children: renderTrigger(open) }),
11265
- /* @__PURE__ */ jsxs87(
11772
+ return /* @__PURE__ */ jsxs89(DropdownMenu, { open, onOpenChange: handleOpenChange, children: [
11773
+ /* @__PURE__ */ jsx142(DropdownMenuTrigger, { asChild: true, disabled, children: renderTrigger(open) }),
11774
+ /* @__PURE__ */ jsxs89(
11266
11775
  DropdownMenuContent,
11267
11776
  {
11268
11777
  side,
11269
11778
  align,
11270
11779
  className: cn("min-w-[295px]", className, dropdownClassName),
11271
11780
  children: [
11272
- visibleOptions.map((option) => /* @__PURE__ */ jsx140(
11781
+ visibleOptions.map((option) => /* @__PURE__ */ jsx142(
11273
11782
  DropdownMenuItem,
11274
11783
  {
11275
11784
  disabled: option.disabled,
@@ -11288,10 +11797,10 @@ function ResponsiveDropdown({
11288
11797
  // src/dashboard/input/Input.tsx
11289
11798
  import * as React44 from "react";
11290
11799
  import { Eye, Minus as Minus4, Plus as Plus3, X as X9 } from "lucide-react";
11291
- import { useTranslation as useTranslation24 } from "react-i18next";
11800
+ import { useTranslation as useTranslation26 } from "react-i18next";
11292
11801
 
11293
11802
  // src/dashboard/_fieldset/Fieldset.tsx
11294
- import { Fragment as Fragment16, jsx as jsx141, jsxs as jsxs88 } from "react/jsx-runtime";
11803
+ import { Fragment as Fragment15, jsx as jsx143, jsxs as jsxs90 } from "react/jsx-runtime";
11295
11804
  function Fieldset({
11296
11805
  isActivated,
11297
11806
  isFocused,
@@ -11311,8 +11820,8 @@ function Fieldset({
11311
11820
  }) {
11312
11821
  const showLegendText = Boolean(legend || typeof label === "string");
11313
11822
  const raised = !isEmpty || isFocused;
11314
- return /* @__PURE__ */ jsxs88(Fragment16, { children: [
11315
- /* @__PURE__ */ jsxs88(
11823
+ return /* @__PURE__ */ jsxs90(Fragment15, { children: [
11824
+ /* @__PURE__ */ jsxs90(
11316
11825
  "div",
11317
11826
  {
11318
11827
  onClick,
@@ -11328,7 +11837,7 @@ function Fieldset({
11328
11837
  labelClassName
11329
11838
  ),
11330
11839
  children: [
11331
- /* @__PURE__ */ jsx141(
11840
+ /* @__PURE__ */ jsx143(
11332
11841
  "label",
11333
11842
  {
11334
11843
  id: labelId,
@@ -11340,7 +11849,7 @@ function Fieldset({
11340
11849
  children: label
11341
11850
  }
11342
11851
  ),
11343
- tooltip && /* @__PURE__ */ jsx141("span", { className: "ml-1 inline-flex", children: /* @__PURE__ */ jsx141(
11852
+ tooltip && /* @__PURE__ */ jsx143("span", { className: "ml-1 inline-flex", children: /* @__PURE__ */ jsx143(
11344
11853
  HelpTooltip,
11345
11854
  {
11346
11855
  content: tooltip,
@@ -11351,7 +11860,7 @@ function Fieldset({
11351
11860
  ]
11352
11861
  }
11353
11862
  ),
11354
- /* @__PURE__ */ jsx141(
11863
+ /* @__PURE__ */ jsx143(
11355
11864
  "fieldset",
11356
11865
  {
11357
11866
  "aria-hidden": "true",
@@ -11363,7 +11872,7 @@ function Fieldset({
11363
11872
  invalid && "border-[var(--error-message-color)]",
11364
11873
  className
11365
11874
  ),
11366
- children: /* @__PURE__ */ jsxs88(
11875
+ children: /* @__PURE__ */ jsxs90(
11367
11876
  "legend",
11368
11877
  {
11369
11878
  className: cn(
@@ -11373,8 +11882,8 @@ function Fieldset({
11373
11882
  !label && "w-0"
11374
11883
  ),
11375
11884
  children: [
11376
- showLegendText && /* @__PURE__ */ jsx141("span", { className: "visible inline-block pr-[6px] text-[14px] font-medium opacity-0", children: legend || label }),
11377
- tooltip && /* @__PURE__ */ jsx141("span", { className: "visible inline-block w-[20px] opacity-0", children: /* @__PURE__ */ jsx141("span", { className: "inline-block h-4 w-4" }) })
11885
+ showLegendText && /* @__PURE__ */ jsx143("span", { className: "visible inline-block pr-[6px] text-[14px] font-medium opacity-0", children: legend || label }),
11886
+ tooltip && /* @__PURE__ */ jsx143("span", { className: "visible inline-block w-[20px] opacity-0", children: /* @__PURE__ */ jsx143("span", { className: "inline-block h-4 w-4" }) })
11378
11887
  ]
11379
11888
  }
11380
11889
  )
@@ -11384,7 +11893,7 @@ function Fieldset({
11384
11893
  }
11385
11894
 
11386
11895
  // src/dashboard/input/Input.tsx
11387
- import { jsx as jsx142, jsxs as jsxs89 } from "react/jsx-runtime";
11896
+ import { jsx as jsx144, jsxs as jsxs91 } from "react/jsx-runtime";
11388
11897
  var checkIfEmpty = ({
11389
11898
  empty,
11390
11899
  defaultValue,
@@ -11435,7 +11944,7 @@ var DashboardInput = React44.forwardRef(
11435
11944
  const generatedId = React44.useId();
11436
11945
  const inputId = id ?? name ?? generatedId;
11437
11946
  const errorId = `${inputId}-error`;
11438
- const { t } = useTranslation24();
11947
+ const { t } = useTranslation26();
11439
11948
  const isEmpty = checkIfEmpty({ empty, value, defaultValue });
11440
11949
  const [inputType, setInputType] = React44.useState(type);
11441
11950
  const [isPasswordRevealed, setIsPasswordRevealed] = React44.useState(false);
@@ -11475,18 +11984,18 @@ var DashboardInput = React44.forwardRef(
11475
11984
  };
11476
11985
  const showRightPaddingForReset = Boolean(onReset);
11477
11986
  const showRightPaddingForReveal = isPasswordReveal;
11478
- return /* @__PURE__ */ jsxs89(
11987
+ return /* @__PURE__ */ jsxs91(
11479
11988
  "div",
11480
11989
  {
11481
11990
  className: cn(
11482
- "relative block min-h-[68px] max-w-[var(--dashboard-input-max-width,none)]",
11991
+ "relative block w-full min-h-[68px] max-w-[var(--dashboard-input-max-width,none)]",
11483
11992
  disabled && "cursor-not-allowed opacity-50",
11484
11993
  loading && "cursor-progress opacity-50",
11485
11994
  wrapperClassName,
11486
11995
  className
11487
11996
  ),
11488
11997
  children: [
11489
- topLabel && /* @__PURE__ */ jsx142(
11998
+ topLabel && /* @__PURE__ */ jsx144(
11490
11999
  "label",
11491
12000
  {
11492
12001
  htmlFor: inputId,
@@ -11494,7 +12003,7 @@ var DashboardInput = React44.forwardRef(
11494
12003
  children: topLabel
11495
12004
  }
11496
12005
  ),
11497
- /* @__PURE__ */ jsxs89(
12006
+ /* @__PURE__ */ jsxs91(
11498
12007
  "div",
11499
12008
  {
11500
12009
  className: cn(
@@ -11503,8 +12012,8 @@ var DashboardInput = React44.forwardRef(
11503
12012
  fieldClassName
11504
12013
  ),
11505
12014
  children: [
11506
- /* @__PURE__ */ jsxs89("div", { className: cn("relative w-full cursor-text", contentClassName), children: [
11507
- /* @__PURE__ */ jsx142(
12015
+ /* @__PURE__ */ jsxs91("div", { className: cn("relative w-full cursor-text", contentClassName), children: [
12016
+ /* @__PURE__ */ jsx144(
11508
12017
  Fieldset,
11509
12018
  {
11510
12019
  isFocused: isFocused && !readOnly,
@@ -11525,8 +12034,8 @@ var DashboardInput = React44.forwardRef(
11525
12034
  })
11526
12035
  }
11527
12036
  ),
11528
- leftIcon && /* @__PURE__ */ jsx142("span", { className: "pointer-events-none absolute left-0 top-0 flex h-full max-w-10 items-center justify-center text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ jsx142("span", { className: "flex h-full w-10 items-center justify-center", children: leftIcon }) }),
11529
- /* @__PURE__ */ jsx142(
12037
+ leftIcon && /* @__PURE__ */ jsx144("span", { className: "pointer-events-none absolute left-0 top-0 flex h-full max-w-10 items-center justify-center text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ jsx144("span", { className: "flex h-full w-10 items-center justify-center", children: leftIcon }) }),
12038
+ /* @__PURE__ */ jsx144(
11530
12039
  "input",
11531
12040
  {
11532
12041
  ...props,
@@ -11563,9 +12072,9 @@ var DashboardInput = React44.forwardRef(
11563
12072
  )
11564
12073
  }
11565
12074
  ),
11566
- sign && /* @__PURE__ */ jsx142("span", { className: "pointer-events-none absolute right-[14px] top-0 flex h-full items-center text-[18px] font-medium leading-6 text-[var(--chekin-color-brand-navy)]", children: sign }),
11567
- trailingAdornment && /* @__PURE__ */ jsx142("span", { className: "pointer-events-none absolute right-[14px] top-0 flex h-full items-center", children: trailingAdornment }),
11568
- onReset && !isEmpty && /* @__PURE__ */ jsx142(
12075
+ sign && /* @__PURE__ */ jsx144("span", { className: "pointer-events-none absolute right-[14px] top-0 flex h-full items-center text-[18px] font-medium leading-6 text-[var(--chekin-color-brand-navy)]", children: sign }),
12076
+ trailingAdornment && /* @__PURE__ */ jsx144("span", { className: "pointer-events-none absolute right-[14px] top-0 flex h-full items-center", children: trailingAdornment }),
12077
+ onReset && !isEmpty && /* @__PURE__ */ jsx144(
11569
12078
  "button",
11570
12079
  {
11571
12080
  type: "button",
@@ -11573,17 +12082,17 @@ var DashboardInput = React44.forwardRef(
11573
12082
  disabled,
11574
12083
  className: "absolute right-0 top-0 flex h-full w-10 items-center justify-center border-0 bg-transparent p-0 text-[#9696b9] hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50",
11575
12084
  "aria-label": "Reset",
11576
- children: /* @__PURE__ */ jsx142(X9, { size: 14 })
12085
+ children: /* @__PURE__ */ jsx144(X9, { size: 14 })
11577
12086
  }
11578
12087
  ),
11579
- isPasswordReveal && /* @__PURE__ */ jsx142(
12088
+ isPasswordReveal && /* @__PURE__ */ jsx144(
11580
12089
  "button",
11581
12090
  {
11582
12091
  type: "button",
11583
12092
  onClick: togglePasswordReveal,
11584
12093
  className: "absolute right-[14px] top-[18px] flex h-[13px] w-[21px] cursor-pointer items-center justify-center border-0 bg-transparent p-0 hover:opacity-85",
11585
12094
  "aria-label": isPasswordRevealed ? "Hide password" : "Show password",
11586
- children: /* @__PURE__ */ jsx142(
12095
+ children: /* @__PURE__ */ jsx144(
11587
12096
  Eye,
11588
12097
  {
11589
12098
  size: 20,
@@ -11595,32 +12104,32 @@ var DashboardInput = React44.forwardRef(
11595
12104
  }
11596
12105
  )
11597
12106
  ] }),
11598
- type === "number" && showNumberButtons && /* @__PURE__ */ jsxs89("div", { className: "absolute right-[18px] top-[13px] inline-flex items-center text-right", children: [
11599
- /* @__PURE__ */ jsx142(
12107
+ type === "number" && showNumberButtons && /* @__PURE__ */ jsxs91("div", { className: "absolute right-[18px] top-[13px] inline-flex items-center text-right", children: [
12108
+ /* @__PURE__ */ jsx144(
11600
12109
  "button",
11601
12110
  {
11602
12111
  type: "button",
11603
12112
  onClick: onDecrement,
11604
12113
  className: "mr-2 inline-flex h-[23px] w-8 cursor-pointer items-center justify-center rounded-[3px] border-0 bg-[var(--chekin-color-brand-blue)] p-0 text-[20px] font-bold text-white outline-none hover:opacity-90 active:opacity-100",
11605
12114
  "aria-label": "Decrement",
11606
- children: /* @__PURE__ */ jsx142(Minus4, { size: 16, strokeWidth: 3, "aria-hidden": true })
12115
+ children: /* @__PURE__ */ jsx144(Minus4, { size: 16, strokeWidth: 3, "aria-hidden": true })
11607
12116
  }
11608
12117
  ),
11609
- /* @__PURE__ */ jsx142(
12118
+ /* @__PURE__ */ jsx144(
11610
12119
  "button",
11611
12120
  {
11612
12121
  type: "button",
11613
12122
  onClick: onIncrement,
11614
12123
  className: "inline-flex h-[23px] w-8 cursor-pointer items-center justify-center rounded-[3px] border-0 bg-[var(--chekin-color-brand-blue)] p-0 text-[20px] font-bold text-white outline-none hover:opacity-90 active:opacity-100",
11615
12124
  "aria-label": "Increment",
11616
- children: /* @__PURE__ */ jsx142(Plus3, { size: 16, strokeWidth: 3, "aria-hidden": true })
12125
+ children: /* @__PURE__ */ jsx144(Plus3, { size: 16, strokeWidth: 3, "aria-hidden": true })
11617
12126
  }
11618
12127
  )
11619
12128
  ] })
11620
12129
  ]
11621
12130
  }
11622
12131
  ),
11623
- !errorMessage && optional && /* @__PURE__ */ jsx142(
12132
+ !errorMessage && optional && /* @__PURE__ */ jsx144(
11624
12133
  "span",
11625
12134
  {
11626
12135
  "data-testid": `${name}-optional`,
@@ -11628,8 +12137,8 @@ var DashboardInput = React44.forwardRef(
11628
12137
  children: typeof optional === "string" ? optional : t("optional")
11629
12138
  }
11630
12139
  ),
11631
- !errorMessage && helperText && /* @__PURE__ */ jsx142("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText }),
11632
- errorMessage && renderErrorMessage && /* @__PURE__ */ jsx142(
12140
+ !errorMessage && helperText && /* @__PURE__ */ jsx144("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText }),
12141
+ errorMessage && renderErrorMessage && /* @__PURE__ */ jsx144(
11633
12142
  FieldErrorMessage,
11634
12143
  {
11635
12144
  id: errorId,
@@ -11648,11 +12157,11 @@ DashboardInput.displayName = "DashboardInput";
11648
12157
 
11649
12158
  // src/dashboard/select/Select.tsx
11650
12159
  import * as React48 from "react";
11651
- import { useTranslation as useTranslation28 } from "react-i18next";
12160
+ import { useTranslation as useTranslation30 } from "react-i18next";
11652
12161
 
11653
12162
  // src/dashboard/_select-internals/SelectFieldShell.tsx
11654
- import { useTranslation as useTranslation25 } from "react-i18next";
11655
- import { jsx as jsx143, jsxs as jsxs90 } from "react/jsx-runtime";
12163
+ import { useTranslation as useTranslation27 } from "react-i18next";
12164
+ import { jsx as jsx145, jsxs as jsxs92 } from "react/jsx-runtime";
11656
12165
  function SelectFieldShell({
11657
12166
  containerRef,
11658
12167
  className,
@@ -11671,9 +12180,9 @@ function SelectFieldShell({
11671
12180
  onBlur,
11672
12181
  children
11673
12182
  }) {
11674
- const { t } = useTranslation25();
12183
+ const { t } = useTranslation27();
11675
12184
  const wrapperWidth = toCssSize(width);
11676
- return /* @__PURE__ */ jsxs90(
12185
+ return /* @__PURE__ */ jsxs92(
11677
12186
  "div",
11678
12187
  {
11679
12188
  ref: containerRef,
@@ -11686,9 +12195,9 @@ function SelectFieldShell({
11686
12195
  ),
11687
12196
  style: wrapperWidth ? { width: wrapperWidth } : void 0,
11688
12197
  children: [
11689
- name && /* @__PURE__ */ jsx143("input", { type: "hidden", name, value: hiddenValue ?? "" }),
11690
- /* @__PURE__ */ jsxs90("div", { className: "relative min-h-[68px] w-full", children: [
11691
- topLabel && /* @__PURE__ */ jsx143(
12198
+ name && /* @__PURE__ */ jsx145("input", { type: "hidden", name, value: hiddenValue ?? "" }),
12199
+ /* @__PURE__ */ jsxs92("div", { className: "relative min-h-[68px] w-full", children: [
12200
+ topLabel && /* @__PURE__ */ jsx145(
11692
12201
  "label",
11693
12202
  {
11694
12203
  htmlFor: triggerId,
@@ -11696,10 +12205,10 @@ function SelectFieldShell({
11696
12205
  children: topLabel
11697
12206
  }
11698
12207
  ),
11699
- /* @__PURE__ */ jsx143("div", { className: "relative w-full", children }),
11700
- !errorMessage && optional && /* @__PURE__ */ jsx143("span", { className: "mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: typeof optional === "string" ? optional : t("optional") }),
11701
- !errorMessage && helperText && /* @__PURE__ */ jsx143("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText }),
11702
- errorMessage && !hideErrorMessage && /* @__PURE__ */ jsx143(
12208
+ /* @__PURE__ */ jsx145("div", { className: "relative w-full", children }),
12209
+ !errorMessage && optional && /* @__PURE__ */ jsx145("span", { className: "mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: typeof optional === "string" ? optional : t("optional") }),
12210
+ !errorMessage && helperText && /* @__PURE__ */ jsx145("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText }),
12211
+ errorMessage && !hideErrorMessage && /* @__PURE__ */ jsx145(
11703
12212
  FieldErrorMessage,
11704
12213
  {
11705
12214
  id: errorId,
@@ -11714,7 +12223,7 @@ function SelectFieldShell({
11714
12223
  }
11715
12224
 
11716
12225
  // src/dashboard/_select-internals/SelectMenu.tsx
11717
- import { useTranslation as useTranslation26 } from "react-i18next";
12226
+ import { useTranslation as useTranslation28 } from "react-i18next";
11718
12227
 
11719
12228
  // src/dashboard/_select-internals/utils.ts
11720
12229
  function getOptionIndex(options, option) {
@@ -11745,7 +12254,7 @@ function isOptionSelected(option, selectedValue, selectedValues) {
11745
12254
  }
11746
12255
 
11747
12256
  // src/dashboard/_select-internals/SelectMenu.tsx
11748
- import { jsx as jsx144, jsxs as jsxs91 } from "react/jsx-runtime";
12257
+ import { jsx as jsx146, jsxs as jsxs93 } from "react/jsx-runtime";
11749
12258
  function SelectMenu({
11750
12259
  id,
11751
12260
  options,
@@ -11767,10 +12276,10 @@ function SelectMenu({
11767
12276
  emptyContent,
11768
12277
  footer
11769
12278
  }) {
11770
- const { t } = useTranslation26();
12279
+ const { t } = useTranslation28();
11771
12280
  const emptyMessage = noOptionsMessage?.() ?? t("no_options");
11772
12281
  const hasOptions = options.length > 0;
11773
- return /* @__PURE__ */ jsxs91(
12282
+ return /* @__PURE__ */ jsxs93(
11774
12283
  "div",
11775
12284
  {
11776
12285
  id,
@@ -11787,13 +12296,13 @@ function SelectMenu({
11787
12296
  menuClassName
11788
12297
  ),
11789
12298
  children: [
11790
- !hasOptions && (emptyContent ?? /* @__PURE__ */ jsx144("div", { className: "mt-[10px] text-left text-[16px] text-[var(--chekin-color-brand-navy)]", children: emptyMessage })),
12299
+ !hasOptions && (emptyContent ?? /* @__PURE__ */ jsx146("div", { className: "mt-[10px] text-left text-[16px] text-[var(--chekin-color-brand-navy)]", children: emptyMessage })),
11791
12300
  options.map((option, index) => {
11792
12301
  const isSelected = isOptionSelected(option, selectedValue, selectedValues);
11793
12302
  const isHighlighted = index === highlightedIndex;
11794
12303
  const optionKey = `${String(option.value)}-${index}`;
11795
12304
  const isOptionDisabled = Boolean(disabled || option.isDisabled);
11796
- return /* @__PURE__ */ jsxs91(
12305
+ return /* @__PURE__ */ jsxs93(
11797
12306
  "button",
11798
12307
  {
11799
12308
  id: getOptionId2(index),
@@ -11816,8 +12325,8 @@ function SelectMenu({
11816
12325
  isOptionDisabled && "cursor-default opacity-30"
11817
12326
  ),
11818
12327
  children: [
11819
- /* @__PURE__ */ jsx144("span", { className: "block break-words", children: option.label }),
11820
- option.description && /* @__PURE__ */ jsx144("span", { className: "ml-2 mt-[3px] shrink-0 text-[12px] font-bold italic text-[#777e91]", children: option.description })
12328
+ /* @__PURE__ */ jsx146("span", { className: "block break-words", children: option.label }),
12329
+ option.description && /* @__PURE__ */ jsx146("span", { className: "ml-2 mt-[3px] shrink-0 text-[12px] font-bold italic text-[#777e91]", children: option.description })
11821
12330
  ]
11822
12331
  },
11823
12332
  optionKey
@@ -11830,11 +12339,11 @@ function SelectMenu({
11830
12339
  }
11831
12340
 
11832
12341
  // src/dashboard/_select-internals/SelectMenuPanel.tsx
11833
- import { useTranslation as useTranslation27 } from "react-i18next";
11834
- import { jsx as jsx145, jsxs as jsxs92 } from "react/jsx-runtime";
12342
+ import { useTranslation as useTranslation29 } from "react-i18next";
12343
+ import { jsx as jsx147, jsxs as jsxs94 } from "react/jsx-runtime";
11835
12344
  function SelectMenuPanel({
11836
12345
  isOpen,
11837
- isMobile: isMobile2,
12346
+ isMobile: isMobile3,
11838
12347
  onClose,
11839
12348
  title,
11840
12349
  description,
@@ -11843,29 +12352,29 @@ function SelectMenuPanel({
11843
12352
  drawerContentClassName,
11844
12353
  children
11845
12354
  }) {
11846
- const { t } = useTranslation27();
12355
+ const { t } = useTranslation29();
11847
12356
  if (!isOpen) return null;
11848
- if (isMobile2) {
12357
+ if (isMobile3) {
11849
12358
  const fallbackTitle = t("select_option");
11850
12359
  const titleText = typeof title === "string" || typeof title === "number" ? String(title) : fallbackTitle;
11851
12360
  const descriptionText = typeof description === "string" || typeof description === "number" ? String(description) : titleText;
11852
- return /* @__PURE__ */ jsx145(
12361
+ return /* @__PURE__ */ jsx147(
11853
12362
  Drawer,
11854
12363
  {
11855
12364
  open: isOpen,
11856
12365
  onOpenChange: (next) => {
11857
12366
  if (!next) onClose();
11858
12367
  },
11859
- children: /* @__PURE__ */ jsxs92(
12368
+ children: /* @__PURE__ */ jsxs94(
11860
12369
  DrawerContent,
11861
12370
  {
11862
12371
  onClose,
11863
12372
  lockScroll: false,
11864
12373
  className: cn("max-h-[calc(100vh-1rem)]", drawerClassName),
11865
12374
  children: [
11866
- /* @__PURE__ */ jsx145(DrawerTitle, { className: "sr-only", children: titleText }),
11867
- /* @__PURE__ */ jsx145(DrawerDescription, { className: "sr-only", children: descriptionText }),
11868
- /* @__PURE__ */ jsx145(
12375
+ /* @__PURE__ */ jsx147(DrawerTitle, { className: "sr-only", children: titleText }),
12376
+ /* @__PURE__ */ jsx147(DrawerDescription, { className: "sr-only", children: descriptionText }),
12377
+ /* @__PURE__ */ jsx147(
11869
12378
  "div",
11870
12379
  {
11871
12380
  className: cn(
@@ -11881,7 +12390,7 @@ function SelectMenuPanel({
11881
12390
  }
11882
12391
  );
11883
12392
  }
11884
- return /* @__PURE__ */ jsx145(
12393
+ return /* @__PURE__ */ jsx147(
11885
12394
  "div",
11886
12395
  {
11887
12396
  className: cn(
@@ -11894,7 +12403,7 @@ function SelectMenuPanel({
11894
12403
  }
11895
12404
 
11896
12405
  // src/dashboard/_select-internals/SelectSearchInput.tsx
11897
- import { jsx as jsx146 } from "react/jsx-runtime";
12406
+ import { jsx as jsx148 } from "react/jsx-runtime";
11898
12407
  function SelectSearchInput({
11899
12408
  inputRef,
11900
12409
  value,
@@ -11904,7 +12413,7 @@ function SelectSearchInput({
11904
12413
  onChange,
11905
12414
  onKeyDown
11906
12415
  }) {
11907
- return /* @__PURE__ */ jsx146("div", { className: "border-b border-[#f2f4f8] px-4 pb-2 pt-3", children: /* @__PURE__ */ jsx146(
12416
+ return /* @__PURE__ */ jsx148("div", { className: "border-b border-[#f2f4f8] px-4 pb-2 pt-3", children: /* @__PURE__ */ jsx148(
11908
12417
  "input",
11909
12418
  {
11910
12419
  ref: inputRef,
@@ -11923,7 +12432,7 @@ function SelectSearchInput({
11923
12432
 
11924
12433
  // src/dashboard/_select-internals/SelectTrigger.tsx
11925
12434
  import { ChevronDown as ChevronDown2 } from "lucide-react";
11926
- import { jsx as jsx147, jsxs as jsxs93 } from "react/jsx-runtime";
12435
+ import { jsx as jsx149, jsxs as jsxs95 } from "react/jsx-runtime";
11927
12436
  function SelectTrigger({
11928
12437
  triggerRef,
11929
12438
  triggerId,
@@ -11944,7 +12453,7 @@ function SelectTrigger({
11944
12453
  onBlur
11945
12454
  }) {
11946
12455
  const isEmpty = !hasValue;
11947
- return /* @__PURE__ */ jsxs93(
12456
+ return /* @__PURE__ */ jsxs95(
11948
12457
  "button",
11949
12458
  {
11950
12459
  id: triggerId,
@@ -11968,10 +12477,10 @@ function SelectTrigger({
11968
12477
  loading && "cursor-progress"
11969
12478
  ),
11970
12479
  children: [
11971
- /* @__PURE__ */ jsx147("span", { id: valueId, className: "block min-w-0 flex-1 truncate text-left", children: valueLabel ?? (isOpen ? placeholder : null) }),
11972
- /* @__PURE__ */ jsxs93("span", { className: "pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: [
11973
- loading && /* @__PURE__ */ jsx147(ThreeDotsLoader, { height: 18, width: 18 }),
11974
- /* @__PURE__ */ jsx147(
12480
+ /* @__PURE__ */ jsx149("span", { id: valueId, className: "block min-w-0 flex-1 truncate text-left", children: valueLabel ?? (isOpen ? placeholder : null) }),
12481
+ /* @__PURE__ */ jsxs95("span", { className: "pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: [
12482
+ loading && /* @__PURE__ */ jsx149(ThreeDotsLoader, { height: 18, width: 18 }),
12483
+ /* @__PURE__ */ jsx149(
11975
12484
  ChevronDown2,
11976
12485
  {
11977
12486
  size: 16,
@@ -12026,7 +12535,7 @@ function useSelectIds({
12026
12535
  import * as React46 from "react";
12027
12536
  function useSelectMenuState({
12028
12537
  isBlocked,
12029
- isMobile: isMobile2,
12538
+ isMobile: isMobile3,
12030
12539
  onOutsideClick
12031
12540
  }) {
12032
12541
  const containerRef = React46.useRef(null);
@@ -12047,7 +12556,7 @@ function useSelectMenuState({
12047
12556
  setIsOpen(false);
12048
12557
  onOutsideClick?.();
12049
12558
  },
12050
- isDisabled: !isOpen || isMobile2
12559
+ isDisabled: !isOpen || isMobile3
12051
12560
  });
12052
12561
  React46.useEffect(() => {
12053
12562
  if (isBlocked) setIsOpen(false);
@@ -12072,7 +12581,7 @@ function useSelectSearch({
12072
12581
  }
12073
12582
 
12074
12583
  // src/dashboard/select/Select.tsx
12075
- import { jsx as jsx148, jsxs as jsxs94 } from "react/jsx-runtime";
12584
+ import { jsx as jsx150, jsxs as jsxs96 } from "react/jsx-runtime";
12076
12585
  function DashboardSelectInternal({
12077
12586
  options = [],
12078
12587
  value,
@@ -12106,8 +12615,8 @@ function DashboardSelectInternal({
12106
12615
  const listRef = React48.useRef(null);
12107
12616
  const optionRefs = React48.useRef([]);
12108
12617
  const [highlightedIndex, setHighlightedIndex] = React48.useState(-1);
12109
- const isMobile2 = useIsMobile();
12110
- const { t } = useTranslation28();
12618
+ const isMobile3 = useIsMobile();
12619
+ const { t } = useTranslation30();
12111
12620
  const resolvedSearchPlaceholder = searchPlaceholder ?? t("search_placeholder");
12112
12621
  const hasValue = Boolean(value);
12113
12622
  const isBlocked = Boolean(disabled) || Boolean(loading);
@@ -12117,7 +12626,7 @@ function DashboardSelectInternal({
12117
12626
  const valueLabel = value ? getValueLabel?.(value) ?? String(value.label) : void 0;
12118
12627
  const { containerRef, isOpen, closeMenu, toggleMenu, setIsOpen } = useSelectMenuState({
12119
12628
  isBlocked,
12120
- isMobile: isMobile2
12629
+ isMobile: isMobile3
12121
12630
  });
12122
12631
  const { triggerId, labelId, valueId, listboxId, describedErrorId, errorId, getOptionId: getOptionId2 } = useSelectIds({ name, hasValue, error, hideErrorMessage });
12123
12632
  const { searchValue, setSearchValue, filteredOptions } = useSelectSearch({
@@ -12196,7 +12705,7 @@ function DashboardSelectInternal({
12196
12705
  setIsOpen(false);
12197
12706
  }
12198
12707
  };
12199
- return /* @__PURE__ */ jsxs94(
12708
+ return /* @__PURE__ */ jsxs96(
12200
12709
  SelectFieldShell,
12201
12710
  {
12202
12711
  containerRef,
@@ -12214,7 +12723,7 @@ function DashboardSelectInternal({
12214
12723
  name,
12215
12724
  hiddenValue: value ? String(value.value) : "",
12216
12725
  children: [
12217
- /* @__PURE__ */ jsx148(
12726
+ /* @__PURE__ */ jsx150(
12218
12727
  SelectTrigger,
12219
12728
  {
12220
12729
  triggerRef,
@@ -12236,7 +12745,7 @@ function DashboardSelectInternal({
12236
12745
  onBlur
12237
12746
  }
12238
12747
  ),
12239
- /* @__PURE__ */ jsx148(
12748
+ /* @__PURE__ */ jsx150(
12240
12749
  Fieldset,
12241
12750
  {
12242
12751
  isFocused: isOpen,
@@ -12253,17 +12762,17 @@ function DashboardSelectInternal({
12253
12762
  onClick: !isBlocked ? toggleMenu : void 0
12254
12763
  }
12255
12764
  ),
12256
- /* @__PURE__ */ jsxs94(
12765
+ /* @__PURE__ */ jsxs96(
12257
12766
  SelectMenuPanel,
12258
12767
  {
12259
12768
  isOpen,
12260
- isMobile: isMobile2,
12769
+ isMobile: isMobile3,
12261
12770
  onClose: closeMenu,
12262
12771
  title: typeof label === "string" ? label : void 0,
12263
12772
  className: dropdownClassName,
12264
12773
  drawerClassName,
12265
12774
  children: [
12266
- searchable && /* @__PURE__ */ jsx148(
12775
+ searchable && /* @__PURE__ */ jsx150(
12267
12776
  SelectSearchInput,
12268
12777
  {
12269
12778
  inputRef: searchInputRef,
@@ -12275,7 +12784,7 @@ function DashboardSelectInternal({
12275
12784
  onKeyDown: handleSearchKeyDown
12276
12785
  }
12277
12786
  ),
12278
- /* @__PURE__ */ jsx148(
12787
+ /* @__PURE__ */ jsx150(
12279
12788
  SelectMenu,
12280
12789
  {
12281
12790
  id: listboxId,
@@ -12310,22 +12819,22 @@ var DashboardSelect = React48.forwardRef(
12310
12819
  // src/dashboard/multi-select/MultiSelect.tsx
12311
12820
  import * as React49 from "react";
12312
12821
  import { SquareX as SquareX3 } from "lucide-react";
12313
- import { useTranslation as useTranslation30 } from "react-i18next";
12822
+ import { useTranslation as useTranslation32 } from "react-i18next";
12314
12823
 
12315
12824
  // src/dashboard/multi-select/MultiSelectChip.tsx
12316
12825
  import { SquareX as SquareX2 } from "lucide-react";
12317
- import { useTranslation as useTranslation29 } from "react-i18next";
12318
- import { jsx as jsx149, jsxs as jsxs95 } from "react/jsx-runtime";
12826
+ import { useTranslation as useTranslation31 } from "react-i18next";
12827
+ import { jsx as jsx151, jsxs as jsxs97 } from "react/jsx-runtime";
12319
12828
  function MultiSelectChip({
12320
12829
  option,
12321
12830
  readOnly,
12322
12831
  onRemove
12323
12832
  }) {
12324
- const { t } = useTranslation29();
12833
+ const { t } = useTranslation31();
12325
12834
  const labelText = typeof option.label === "string" ? option.label : String(option.value);
12326
- return /* @__PURE__ */ jsxs95("span", { className: "inline-flex items-center gap-2 rounded-[4px] border border-[#acacd5] bg-[#f0f0f8] py-[2px] pl-[10px] pr-1 text-[12px] font-medium text-[var(--chekin-color-brand-navy)]", children: [
12327
- /* @__PURE__ */ jsx149("span", { className: "whitespace-nowrap", children: option.label }),
12328
- !readOnly && /* @__PURE__ */ jsx149(
12835
+ return /* @__PURE__ */ jsxs97("span", { className: "inline-flex items-center gap-2 rounded-[4px] border border-[#acacd5] bg-[#f0f0f8] py-[2px] pl-[10px] pr-1 text-[12px] font-medium text-[var(--chekin-color-brand-navy)]", children: [
12836
+ /* @__PURE__ */ jsx151("span", { className: "whitespace-nowrap", children: option.label }),
12837
+ !readOnly && /* @__PURE__ */ jsx151(
12329
12838
  "button",
12330
12839
  {
12331
12840
  type: "button",
@@ -12335,14 +12844,14 @@ function MultiSelectChip({
12335
12844
  },
12336
12845
  className: "flex h-[15px] w-[15px] items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] hover:shadow-[0_3px_3px_#0f477734]",
12337
12846
  "aria-label": t("remove_item", { label: labelText }),
12338
- children: /* @__PURE__ */ jsx149(SquareX2, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
12847
+ children: /* @__PURE__ */ jsx151(SquareX2, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
12339
12848
  }
12340
12849
  )
12341
12850
  ] });
12342
12851
  }
12343
12852
 
12344
12853
  // src/dashboard/multi-select/MultiSelect.tsx
12345
- import { jsx as jsx150, jsxs as jsxs96 } from "react/jsx-runtime";
12854
+ import { jsx as jsx152, jsxs as jsxs98 } from "react/jsx-runtime";
12346
12855
  var isValueSelected = (selected, option) => selected.some((item) => item.value === option.value);
12347
12856
  function DashboardMultiSelectInternal({
12348
12857
  options = [],
@@ -12382,8 +12891,8 @@ function DashboardMultiSelectInternal({
12382
12891
  const optionRefs = React49.useRef([]);
12383
12892
  const [isFocused, setIsFocused] = React49.useState(false);
12384
12893
  const [highlightedIndex, setHighlightedIndex] = React49.useState(-1);
12385
- const isMobile2 = useIsMobile();
12386
- const { t } = useTranslation30();
12894
+ const isMobile3 = useIsMobile();
12895
+ const { t } = useTranslation32();
12387
12896
  const selectedValues = React49.useMemo(() => value ?? [], [value]);
12388
12897
  const hasValue = selectedValues.length > 0;
12389
12898
  const isEmpty = !hasValue;
@@ -12393,7 +12902,7 @@ function DashboardMultiSelectInternal({
12393
12902
  const errorMessage = typeof error === "string" ? error : void 0;
12394
12903
  const { containerRef, isOpen, closeMenu, setIsOpen } = useSelectMenuState({
12395
12904
  isBlocked,
12396
- isMobile: isMobile2,
12905
+ isMobile: isMobile3,
12397
12906
  onOutsideClick: () => setIsFocused(false)
12398
12907
  });
12399
12908
  const { triggerId, labelId, valueId, listboxId, describedErrorId, errorId, getOptionId: getOptionId2 } = useSelectIds({ name, hasValue, error, hideErrorMessage });
@@ -12435,12 +12944,12 @@ function DashboardMultiSelectInternal({
12435
12944
  });
12436
12945
  }, [isOpen, filteredOptions]);
12437
12946
  React49.useEffect(() => {
12438
- if (!isOpen || !isMobile2) return;
12947
+ if (!isOpen || !isMobile3) return;
12439
12948
  const frame = window.requestAnimationFrame(
12440
12949
  () => mobileSearchInputRef.current?.focus()
12441
12950
  );
12442
12951
  return () => window.cancelAnimationFrame(frame);
12443
- }, [isOpen, isMobile2]);
12952
+ }, [isOpen, isMobile3]);
12444
12953
  const openMenu = () => {
12445
12954
  if (isBlocked) return;
12446
12955
  setIsOpen(true);
@@ -12537,7 +13046,7 @@ function DashboardMultiSelectInternal({
12537
13046
  setIsFocused(false);
12538
13047
  onBlur?.(event);
12539
13048
  };
12540
- return /* @__PURE__ */ jsxs96(
13049
+ return /* @__PURE__ */ jsxs98(
12541
13050
  SelectFieldShell,
12542
13051
  {
12543
13052
  containerRef,
@@ -12556,7 +13065,7 @@ function DashboardMultiSelectInternal({
12556
13065
  hiddenValue: selectedValues.map((item) => String(item.value)).join(","),
12557
13066
  onBlur: handleInputBlur,
12558
13067
  children: [
12559
- /* @__PURE__ */ jsxs96(
13068
+ /* @__PURE__ */ jsxs98(
12560
13069
  "div",
12561
13070
  {
12562
13071
  id: triggerId,
@@ -12579,7 +13088,7 @@ function DashboardMultiSelectInternal({
12579
13088
  ),
12580
13089
  children: [
12581
13090
  selectedValues.map(
12582
- (option) => renderChip ? /* @__PURE__ */ jsx150(React49.Fragment, { children: renderChip(option, () => removeOption(option)) }, String(option.value)) : /* @__PURE__ */ jsx150(
13091
+ (option) => renderChip ? /* @__PURE__ */ jsx152(React49.Fragment, { children: renderChip(option, () => removeOption(option)) }, String(option.value)) : /* @__PURE__ */ jsx152(
12583
13092
  MultiSelectChip,
12584
13093
  {
12585
13094
  option,
@@ -12589,7 +13098,7 @@ function DashboardMultiSelectInternal({
12589
13098
  String(option.value)
12590
13099
  )
12591
13100
  ),
12592
- /* @__PURE__ */ jsx150(
13101
+ /* @__PURE__ */ jsx152(
12593
13102
  "input",
12594
13103
  {
12595
13104
  ref: inputRef,
@@ -12618,9 +13127,9 @@ function DashboardMultiSelectInternal({
12618
13127
  "aria-activedescendant": isOpen && highlightedIndex >= 0 ? getOptionId2(highlightedIndex) : void 0
12619
13128
  }
12620
13129
  ),
12621
- /* @__PURE__ */ jsxs96("span", { className: "ml-auto flex items-center gap-2 pl-2 text-[var(--chekin-color-gray-2)]", children: [
12622
- loading && /* @__PURE__ */ jsx150(ThreeDotsLoader, { height: 18, width: 18 }),
12623
- hasValue && !readOnly && /* @__PURE__ */ jsx150(
13130
+ /* @__PURE__ */ jsxs98("span", { className: "ml-auto flex items-center gap-2 pl-2 text-[var(--chekin-color-gray-2)]", children: [
13131
+ loading && /* @__PURE__ */ jsx152(ThreeDotsLoader, { height: 18, width: 18 }),
13132
+ hasValue && !readOnly && /* @__PURE__ */ jsx152(
12624
13133
  "button",
12625
13134
  {
12626
13135
  type: "button",
@@ -12630,10 +13139,10 @@ function DashboardMultiSelectInternal({
12630
13139
  },
12631
13140
  className: "flex h-5 w-5 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] hover:shadow-[0_3px_3px_#0f477734]",
12632
13141
  "aria-label": t("clear_all"),
12633
- children: /* @__PURE__ */ jsx150(SquareX3, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
13142
+ children: /* @__PURE__ */ jsx152(SquareX3, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
12634
13143
  }
12635
13144
  ),
12636
- /* @__PURE__ */ jsx150(
13145
+ /* @__PURE__ */ jsx152(
12637
13146
  RotateArrow,
12638
13147
  {
12639
13148
  shouldRotate: isOpen,
@@ -12646,7 +13155,7 @@ function DashboardMultiSelectInternal({
12646
13155
  ]
12647
13156
  }
12648
13157
  ),
12649
- /* @__PURE__ */ jsx150(
13158
+ /* @__PURE__ */ jsx152(
12650
13159
  Fieldset,
12651
13160
  {
12652
13161
  isFocused: isFocused || isOpen,
@@ -12664,11 +13173,11 @@ function DashboardMultiSelectInternal({
12664
13173
  onClick: handleContainerClick
12665
13174
  }
12666
13175
  ),
12667
- /* @__PURE__ */ jsxs96(
13176
+ /* @__PURE__ */ jsxs98(
12668
13177
  SelectMenuPanel,
12669
13178
  {
12670
13179
  isOpen,
12671
- isMobile: isMobile2,
13180
+ isMobile: isMobile3,
12672
13181
  onClose: () => {
12673
13182
  closeMenu();
12674
13183
  setIsFocused(false);
@@ -12677,7 +13186,7 @@ function DashboardMultiSelectInternal({
12677
13186
  className: dropdownClassName,
12678
13187
  drawerClassName,
12679
13188
  children: [
12680
- isMobile2 && /* @__PURE__ */ jsx150("div", { className: "border-b border-[#f2f4f8] px-4 pb-2 pt-3", children: /* @__PURE__ */ jsx150(
13189
+ isMobile3 && /* @__PURE__ */ jsx152("div", { className: "border-b border-[#f2f4f8] px-4 pb-2 pt-3", children: /* @__PURE__ */ jsx152(
12681
13190
  "input",
12682
13191
  {
12683
13192
  ref: mobileSearchInputRef,
@@ -12692,7 +13201,7 @@ function DashboardMultiSelectInternal({
12692
13201
  className: "m-0 box-border h-9 w-full rounded-md border border-[var(--chekin-color-gray-3)] bg-white px-3 text-[16px] font-medium text-[var(--chekin-color-brand-navy)] outline-none transition-colors placeholder:text-[var(--chekin-color-gray-1)] focus:border-[var(--chekin-color-brand-blue)]"
12693
13202
  }
12694
13203
  ) }),
12695
- /* @__PURE__ */ jsx150(
13204
+ /* @__PURE__ */ jsx152(
12696
13205
  SelectMenu,
12697
13206
  {
12698
13207
  id: listboxId,
@@ -12714,7 +13223,7 @@ function DashboardMultiSelectInternal({
12714
13223
  isMulti: true
12715
13224
  }
12716
13225
  ),
12717
- canCreateNewOption && /* @__PURE__ */ jsx150(
13226
+ canCreateNewOption && /* @__PURE__ */ jsx152(
12718
13227
  "button",
12719
13228
  {
12720
13229
  type: "button",
@@ -12736,20 +13245,20 @@ var DashboardMultiSelect = React49.forwardRef(
12736
13245
 
12737
13246
  // src/dashboard/creatable-multi-select/CreatableMultiSelect.tsx
12738
13247
  import * as React50 from "react";
12739
- import { jsx as jsx151 } from "react/jsx-runtime";
13248
+ import { jsx as jsx153 } from "react/jsx-runtime";
12740
13249
  var DashboardCreatableMultiSelect = React50.forwardRef(
12741
13250
  function DashboardCreatableMultiSelect2(props, ref) {
12742
- return /* @__PURE__ */ jsx151(DashboardMultiSelect, { ref, ...props, isCreatable: true });
13251
+ return /* @__PURE__ */ jsx153(DashboardMultiSelect, { ref, ...props, isCreatable: true });
12743
13252
  }
12744
13253
  );
12745
13254
 
12746
13255
  // src/dashboard/infinite-scroll-select/InfiniteScrollSelect.tsx
12747
13256
  import * as React51 from "react";
12748
13257
  import { useVirtualizer as useVirtualizer2 } from "@tanstack/react-virtual";
12749
- import { useTranslation as useTranslation31 } from "react-i18next";
13258
+ import { useTranslation as useTranslation33 } from "react-i18next";
12750
13259
 
12751
13260
  // src/dashboard/infinite-scroll-select/InfiniteScrollList.tsx
12752
- import { jsx as jsx152, jsxs as jsxs97 } from "react/jsx-runtime";
13261
+ import { jsx as jsx154, jsxs as jsxs99 } from "react/jsx-runtime";
12753
13262
  function InfiniteScrollList({
12754
13263
  scrollRef,
12755
13264
  listboxId,
@@ -12770,13 +13279,13 @@ function InfiniteScrollList({
12770
13279
  onHighlight
12771
13280
  }) {
12772
13281
  const virtualItems = virtualizer.getVirtualItems();
12773
- return /* @__PURE__ */ jsx152(
13282
+ return /* @__PURE__ */ jsx154(
12774
13283
  "div",
12775
13284
  {
12776
13285
  ref: scrollRef,
12777
13286
  className: cn("overflow-y-auto", menuClassName),
12778
13287
  style: { height: `${height}px` },
12779
- children: /* @__PURE__ */ jsx152(
13288
+ children: /* @__PURE__ */ jsx154(
12780
13289
  "div",
12781
13290
  {
12782
13291
  id: listboxId,
@@ -12793,7 +13302,7 @@ function InfiniteScrollList({
12793
13302
  const isSelected = !isLoaderRow && option ? option.value === value?.value : false;
12794
13303
  const isHighlighted = virtualItem.index === highlightedIndex;
12795
13304
  const isOptionDisabled = Boolean(isBlocked || option?.isDisabled);
12796
- return /* @__PURE__ */ jsx152(
13305
+ return /* @__PURE__ */ jsx154(
12797
13306
  "div",
12798
13307
  {
12799
13308
  "data-index": virtualItem.index,
@@ -12802,10 +13311,10 @@ function InfiniteScrollList({
12802
13311
  height: `${virtualItem.size}px`,
12803
13312
  transform: `translateY(${virtualItem.start}px)`
12804
13313
  },
12805
- children: isLoaderRow ? /* @__PURE__ */ jsxs97("div", { className: "flex h-full items-center justify-center gap-2 px-4 text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: [
12806
- /* @__PURE__ */ jsx152(ThreeDotsLoader, { height: 36, width: 36 }),
12807
- /* @__PURE__ */ jsx152("span", { children: loadingMoreText })
12808
- ] }) : /* @__PURE__ */ jsxs97(
13314
+ children: isLoaderRow ? /* @__PURE__ */ jsxs99("div", { className: "flex h-full items-center justify-center gap-2 px-4 text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: [
13315
+ /* @__PURE__ */ jsx154(ThreeDotsLoader, { height: 36, width: 36 }),
13316
+ /* @__PURE__ */ jsx154("span", { children: loadingMoreText })
13317
+ ] }) : /* @__PURE__ */ jsxs99(
12809
13318
  "button",
12810
13319
  {
12811
13320
  id: getOptionId2(virtualItem.index),
@@ -12824,8 +13333,8 @@ function InfiniteScrollList({
12824
13333
  isOptionDisabled && "cursor-default opacity-30"
12825
13334
  ),
12826
13335
  children: [
12827
- /* @__PURE__ */ jsx152("span", { className: "block break-words", children: option?.label }),
12828
- option?.description && /* @__PURE__ */ jsx152("span", { className: "ml-2 mt-[3px] shrink-0 text-[12px] font-bold italic text-[#777e91]", children: option.description })
13336
+ /* @__PURE__ */ jsx154("span", { className: "block break-words", children: option?.label }),
13337
+ option?.description && /* @__PURE__ */ jsx154("span", { className: "ml-2 mt-[3px] shrink-0 text-[12px] font-bold italic text-[#777e91]", children: option.description })
12829
13338
  ]
12830
13339
  }
12831
13340
  )
@@ -12840,7 +13349,7 @@ function InfiniteScrollList({
12840
13349
  }
12841
13350
 
12842
13351
  // src/dashboard/infinite-scroll-select/InfiniteScrollSelect.tsx
12843
- import { jsx as jsx153, jsxs as jsxs98 } from "react/jsx-runtime";
13352
+ import { jsx as jsx155, jsxs as jsxs100 } from "react/jsx-runtime";
12844
13353
  var DEFAULT_ITEM_HEIGHT = 60;
12845
13354
  var DEFAULT_LIST_HEIGHT = 322;
12846
13355
  var DEFAULT_OVERSCAN = 5;
@@ -12888,8 +13397,8 @@ function DashboardInfiniteScrollSelectInternal({
12888
13397
  const previousHighlightedIndexRef = React51.useRef(-1);
12889
13398
  const lastLoadMoreOptionsLengthRef = React51.useRef(null);
12890
13399
  const [highlightedIndex, setHighlightedIndex] = React51.useState(-1);
12891
- const isMobile2 = useIsMobile();
12892
- const { t } = useTranslation31();
13400
+ const isMobile3 = useIsMobile();
13401
+ const { t } = useTranslation33();
12893
13402
  const resolvedSearchPlaceholder = searchPlaceholder ?? t("search_placeholder");
12894
13403
  const resolvedLoadingMoreText = loadingMoreText ?? t("loading_more");
12895
13404
  const hasValue = Boolean(value);
@@ -12900,7 +13409,7 @@ function DashboardInfiniteScrollSelectInternal({
12900
13409
  const valueLabel = value ? getValueLabel?.(value) ?? String(value.label) : void 0;
12901
13410
  const { containerRef, isOpen, closeMenu, toggleMenu, setIsOpen } = useSelectMenuState({
12902
13411
  isBlocked,
12903
- isMobile: isMobile2
13412
+ isMobile: isMobile3
12904
13413
  });
12905
13414
  const { triggerId, labelId, valueId, listboxId, describedErrorId, errorId, getOptionId: getOptionId2 } = useSelectIds({ name, hasValue, error, hideErrorMessage });
12906
13415
  const { searchValue, setSearchValue, filteredOptions } = useSelectSearch({
@@ -13013,7 +13522,7 @@ function DashboardInfiniteScrollSelectInternal({
13013
13522
  const totalSize = virtualizer.getTotalSize();
13014
13523
  const measuredListHeight = Math.min(listHeight, Math.max(totalSize, itemHeight));
13015
13524
  const activeOptionId = highlightedIndex >= 0 ? getOptionId2(highlightedIndex) : void 0;
13016
- return /* @__PURE__ */ jsxs98(
13525
+ return /* @__PURE__ */ jsxs100(
13017
13526
  SelectFieldShell,
13018
13527
  {
13019
13528
  containerRef,
@@ -13031,7 +13540,7 @@ function DashboardInfiniteScrollSelectInternal({
13031
13540
  name,
13032
13541
  hiddenValue: value ? String(value.value) : "",
13033
13542
  children: [
13034
- /* @__PURE__ */ jsx153(
13543
+ /* @__PURE__ */ jsx155(
13035
13544
  SelectTrigger,
13036
13545
  {
13037
13546
  triggerRef,
@@ -13053,7 +13562,7 @@ function DashboardInfiniteScrollSelectInternal({
13053
13562
  onBlur
13054
13563
  }
13055
13564
  ),
13056
- /* @__PURE__ */ jsx153(
13565
+ /* @__PURE__ */ jsx155(
13057
13566
  Fieldset,
13058
13567
  {
13059
13568
  isFocused: isOpen,
@@ -13070,17 +13579,17 @@ function DashboardInfiniteScrollSelectInternal({
13070
13579
  onClick: !isBlocked ? toggleMenu : void 0
13071
13580
  }
13072
13581
  ),
13073
- /* @__PURE__ */ jsxs98(
13582
+ /* @__PURE__ */ jsxs100(
13074
13583
  SelectMenuPanel,
13075
13584
  {
13076
13585
  isOpen,
13077
- isMobile: isMobile2,
13586
+ isMobile: isMobile3,
13078
13587
  onClose: closeMenu,
13079
13588
  title: typeof label === "string" ? label : void 0,
13080
13589
  className: dropdownClassName,
13081
13590
  drawerClassName,
13082
13591
  children: [
13083
- searchable && /* @__PURE__ */ jsx153(
13592
+ searchable && /* @__PURE__ */ jsx155(
13084
13593
  SelectSearchInput,
13085
13594
  {
13086
13595
  inputRef: searchInputRef,
@@ -13092,10 +13601,10 @@ function DashboardInfiniteScrollSelectInternal({
13092
13601
  onKeyDown: handleSearchKeyDown
13093
13602
  }
13094
13603
  ),
13095
- filteredOptions.length === 0 && isLoadingMore ? /* @__PURE__ */ jsxs98("div", { className: "flex items-center justify-center gap-2 px-4 py-[20px] text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: [
13096
- /* @__PURE__ */ jsx153(ThreeDotsLoader, { height: 18, width: 18 }),
13097
- /* @__PURE__ */ jsx153("span", { children: resolvedLoadingMoreText })
13098
- ] }) : filteredOptions.length === 0 ? /* @__PURE__ */ jsx153("div", { className: "px-4 py-[20px] text-left text-[16px] text-[var(--chekin-color-brand-navy)]", children: emptyMessage ?? t("no_options") }) : /* @__PURE__ */ jsx153(
13604
+ filteredOptions.length === 0 && isLoadingMore ? /* @__PURE__ */ jsxs100("div", { className: "flex items-center justify-center gap-2 px-4 py-[20px] text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: [
13605
+ /* @__PURE__ */ jsx155(ThreeDotsLoader, { height: 18, width: 18 }),
13606
+ /* @__PURE__ */ jsx155("span", { children: resolvedLoadingMoreText })
13607
+ ] }) : filteredOptions.length === 0 ? /* @__PURE__ */ jsx155("div", { className: "px-4 py-[20px] text-left text-[16px] text-[var(--chekin-color-brand-navy)]", children: emptyMessage ?? t("no_options") }) : /* @__PURE__ */ jsx155(
13099
13608
  InfiniteScrollList,
13100
13609
  {
13101
13610
  scrollRef,
@@ -13130,8 +13639,8 @@ var DashboardInfiniteScrollSelect = React51.forwardRef(
13130
13639
 
13131
13640
  // src/dashboard/textarea/Textarea.tsx
13132
13641
  import * as React52 from "react";
13133
- import { useTranslation as useTranslation32 } from "react-i18next";
13134
- import { jsx as jsx154, jsxs as jsxs99 } from "react/jsx-runtime";
13642
+ import { useTranslation as useTranslation34 } from "react-i18next";
13643
+ import { jsx as jsx156, jsxs as jsxs101 } from "react/jsx-runtime";
13135
13644
  var LINE_HEIGHT = 20;
13136
13645
  var VERTICAL_PADDING = 32;
13137
13646
  function getEmptyState(empty, value, defaultValue) {
@@ -13167,7 +13676,7 @@ var DashboardTextarea = React52.forwardRef(
13167
13676
  const combinedRef = useCombinedRef(ref, innerRef);
13168
13677
  const reactId = React52.useId();
13169
13678
  const textareaId = id ?? name ?? `dash-textarea-${reactId}`;
13170
- const { t } = useTranslation32();
13679
+ const { t } = useTranslation34();
13171
13680
  const isInvalid = Boolean(invalid || error);
13172
13681
  const isEmpty = getEmptyState(empty, value, defaultValue);
13173
13682
  const isBlocked = Boolean(disabled);
@@ -13188,7 +13697,7 @@ var DashboardTextarea = React52.forwardRef(
13188
13697
  resize();
13189
13698
  onInput?.(event);
13190
13699
  };
13191
- return /* @__PURE__ */ jsxs99(
13700
+ return /* @__PURE__ */ jsxs101(
13192
13701
  "div",
13193
13702
  {
13194
13703
  className: cn(
@@ -13198,18 +13707,18 @@ var DashboardTextarea = React52.forwardRef(
13198
13707
  className
13199
13708
  ),
13200
13709
  children: [
13201
- label && /* @__PURE__ */ jsxs99(
13710
+ label && /* @__PURE__ */ jsxs101(
13202
13711
  "label",
13203
13712
  {
13204
13713
  htmlFor: textareaId,
13205
13714
  className: "mb-2 flex select-none items-center text-[16px] font-medium text-[var(--chekin-color-brand-navy)]",
13206
13715
  children: [
13207
13716
  label,
13208
- tooltip && /* @__PURE__ */ jsx154("span", { className: "ml-1 inline-flex", children: /* @__PURE__ */ jsx154(HelpTooltip, { content: tooltip, size: 16 }) })
13717
+ tooltip && /* @__PURE__ */ jsx156("span", { className: "ml-1 inline-flex", children: /* @__PURE__ */ jsx156(HelpTooltip, { content: tooltip, size: 16 }) })
13209
13718
  ]
13210
13719
  }
13211
13720
  ),
13212
- /* @__PURE__ */ jsx154(
13721
+ /* @__PURE__ */ jsx156(
13213
13722
  "textarea",
13214
13723
  {
13215
13724
  ref: combinedRef,
@@ -13238,7 +13747,7 @@ var DashboardTextarea = React52.forwardRef(
13238
13747
  ...textareaProps
13239
13748
  }
13240
13749
  ),
13241
- error && /* @__PURE__ */ jsx154(
13750
+ error && /* @__PURE__ */ jsx156(
13242
13751
  FieldErrorMessage,
13243
13752
  {
13244
13753
  id: `${textareaId}-error`,
@@ -13246,8 +13755,8 @@ var DashboardTextarea = React52.forwardRef(
13246
13755
  className: "mt-[1px] text-[14px]"
13247
13756
  }
13248
13757
  ),
13249
- !error && optional && /* @__PURE__ */ jsx154("span", { className: "mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: typeof optional === "string" ? optional : t("optional") }),
13250
- !error && helperText && /* @__PURE__ */ jsx154("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText })
13758
+ !error && optional && /* @__PURE__ */ jsx156("span", { className: "mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: typeof optional === "string" ? optional : t("optional") }),
13759
+ !error && helperText && /* @__PURE__ */ jsx156("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText })
13251
13760
  ]
13252
13761
  }
13253
13762
  );
@@ -13257,7 +13766,7 @@ var DashboardTextarea = React52.forwardRef(
13257
13766
  // src/dashboard/datepicker/Datepicker.tsx
13258
13767
  import * as React54 from "react";
13259
13768
  import { ChevronDown as ChevronDown3 } from "lucide-react";
13260
- import { useTranslation as useTranslation33 } from "react-i18next";
13769
+ import { useTranslation as useTranslation35 } from "react-i18next";
13261
13770
 
13262
13771
  // src/airbnb-fields/datepicker/useDatePickerWheel.ts
13263
13772
  import * as React53 from "react";
@@ -13681,7 +14190,7 @@ function useDatePickerWheel({
13681
14190
  }
13682
14191
 
13683
14192
  // src/airbnb-fields/datepicker/DatePickerWheelColumn.tsx
13684
- import { jsx as jsx155, jsxs as jsxs100 } from "react/jsx-runtime";
14193
+ import { jsx as jsx157, jsxs as jsxs102 } from "react/jsx-runtime";
13685
14194
  var spacerHeight = DATE_PICKER_OPTION_HEIGHT * DATE_PICKER_WHEEL_BUFFER_OPTIONS;
13686
14195
  function AirbnbDatePickerWheelColumn({
13687
14196
  id,
@@ -13695,7 +14204,7 @@ function AirbnbDatePickerWheelColumn({
13695
14204
  onOptionSelect,
13696
14205
  column
13697
14206
  }) {
13698
- return /* @__PURE__ */ jsx155("div", { className: "relative z-10 min-w-0", children: /* @__PURE__ */ jsxs100(
14207
+ return /* @__PURE__ */ jsx157("div", { className: "relative z-10 min-w-0", children: /* @__PURE__ */ jsxs102(
13699
14208
  "div",
13700
14209
  {
13701
14210
  id,
@@ -13712,14 +14221,14 @@ function AirbnbDatePickerWheelColumn({
13712
14221
  WebkitOverflowScrolling: "touch"
13713
14222
  },
13714
14223
  children: [
13715
- /* @__PURE__ */ jsx155("div", { style: { height: `${spacerHeight}px` } }),
14224
+ /* @__PURE__ */ jsx157("div", { style: { height: `${spacerHeight}px` } }),
13716
14225
  items.map((item, index) => {
13717
14226
  const { style } = getWheelOptionStyles(
13718
14227
  index,
13719
14228
  scrollTop,
13720
14229
  DATE_PICKER_OPTION_HEIGHT
13721
14230
  );
13722
- return /* @__PURE__ */ jsx155(
14231
+ return /* @__PURE__ */ jsx157(
13723
14232
  "button",
13724
14233
  {
13725
14234
  id: `${id}-option-${index}`,
@@ -13735,14 +14244,14 @@ function AirbnbDatePickerWheelColumn({
13735
14244
  `${column}-${item}-${index}`
13736
14245
  );
13737
14246
  }),
13738
- /* @__PURE__ */ jsx155("div", { style: { height: `${spacerHeight}px` } })
14247
+ /* @__PURE__ */ jsx157("div", { style: { height: `${spacerHeight}px` } })
13739
14248
  ]
13740
14249
  }
13741
14250
  ) });
13742
14251
  }
13743
14252
 
13744
14253
  // src/airbnb-fields/datepicker/DatePickerContent.tsx
13745
- import { jsx as jsx156, jsxs as jsxs101 } from "react/jsx-runtime";
14254
+ import { jsx as jsx158, jsxs as jsxs103 } from "react/jsx-runtime";
13746
14255
  function AirbnbDatePickerBody({
13747
14256
  baseId,
13748
14257
  label,
@@ -13764,19 +14273,19 @@ function AirbnbDatePickerBody({
13764
14273
  onOptionSelect,
13765
14274
  onDone
13766
14275
  }) {
13767
- return /* @__PURE__ */ jsxs101("div", { className: "px-6 pb-4 pt-1 bg-white", children: [
13768
- /* @__PURE__ */ jsxs101("div", { className: "relative overflow-hidden rounded-[24px]", children: [
13769
- /* @__PURE__ */ jsx156("div", { className: "pointer-events-none absolute inset-x-0 top-0 z-20 h-16 bg-gradient-to-b from-white via-white/80 to-transparent" }),
13770
- /* @__PURE__ */ jsx156("div", { className: "pointer-events-none absolute inset-x-0 bottom-0 z-20 h-16 bg-gradient-to-t from-white via-white/80 to-transparent" }),
13771
- /* @__PURE__ */ jsx156(
14276
+ return /* @__PURE__ */ jsxs103("div", { className: "px-6 pb-4 pt-1 bg-white", children: [
14277
+ /* @__PURE__ */ jsxs103("div", { className: "relative overflow-hidden rounded-[24px]", children: [
14278
+ /* @__PURE__ */ jsx158("div", { className: "pointer-events-none absolute inset-x-0 top-0 z-20 h-16 bg-gradient-to-b from-white via-white/80 to-transparent" }),
14279
+ /* @__PURE__ */ jsx158("div", { className: "pointer-events-none absolute inset-x-0 bottom-0 z-20 h-16 bg-gradient-to-t from-white via-white/80 to-transparent" }),
14280
+ /* @__PURE__ */ jsx158(
13772
14281
  "div",
13773
14282
  {
13774
14283
  "aria-hidden": true,
13775
14284
  className: "pointer-events-none absolute inset-x-0 top-1/2 z-0 h-8 -translate-y-1/2 rounded-[12px] bg-black/[0.04]"
13776
14285
  }
13777
14286
  ),
13778
- /* @__PURE__ */ jsxs101("div", { className: "relative grid grid-cols-[1.35fr_0.7fr_1fr] gap-1", children: [
13779
- /* @__PURE__ */ jsx156(
14287
+ /* @__PURE__ */ jsxs103("div", { className: "relative grid grid-cols-[1.35fr_0.7fr_1fr] gap-1", children: [
14288
+ /* @__PURE__ */ jsx158(
13780
14289
  AirbnbDatePickerWheelColumn,
13781
14290
  {
13782
14291
  id: `${baseId}-month`,
@@ -13791,7 +14300,7 @@ function AirbnbDatePickerBody({
13791
14300
  onOptionSelect
13792
14301
  }
13793
14302
  ),
13794
- /* @__PURE__ */ jsx156(
14303
+ /* @__PURE__ */ jsx158(
13795
14304
  AirbnbDatePickerWheelColumn,
13796
14305
  {
13797
14306
  id: `${baseId}-day`,
@@ -13806,7 +14315,7 @@ function AirbnbDatePickerBody({
13806
14315
  onOptionSelect
13807
14316
  }
13808
14317
  ),
13809
- /* @__PURE__ */ jsx156(
14318
+ /* @__PURE__ */ jsx158(
13810
14319
  AirbnbDatePickerWheelColumn,
13811
14320
  {
13812
14321
  id: `${baseId}-year`,
@@ -13823,13 +14332,13 @@ function AirbnbDatePickerBody({
13823
14332
  )
13824
14333
  ] })
13825
14334
  ] }),
13826
- /* @__PURE__ */ jsx156(Button, { type: "button", onClick: onDone, className: "mt-4 h-12 mb-8 w-full", children: doneLabel })
14335
+ /* @__PURE__ */ jsx158(Button, { type: "button", onClick: onDone, className: "mt-4 h-12 mb-8 w-full", children: doneLabel })
13827
14336
  ] });
13828
14337
  }
13829
14338
  function AirbnbDatePickerContent({
13830
14339
  baseId,
13831
14340
  open,
13832
- isMobile: isMobile2,
14341
+ isMobile: isMobile3,
13833
14342
  label,
13834
14343
  title,
13835
14344
  doneLabel,
@@ -13851,7 +14360,7 @@ function AirbnbDatePickerContent({
13851
14360
  onColumnKeyDown,
13852
14361
  onOptionSelect
13853
14362
  }) {
13854
- const body = /* @__PURE__ */ jsx156(
14363
+ const body = /* @__PURE__ */ jsx158(
13855
14364
  AirbnbDatePickerBody,
13856
14365
  {
13857
14366
  baseId,
@@ -13875,28 +14384,28 @@ function AirbnbDatePickerContent({
13875
14384
  onDone
13876
14385
  }
13877
14386
  );
13878
- if (isMobile2) {
13879
- return /* @__PURE__ */ jsx156(Drawer, { open, onOpenChange, children: /* @__PURE__ */ jsxs101(
14387
+ if (isMobile3) {
14388
+ return /* @__PURE__ */ jsx158(Drawer, { open, onOpenChange, children: /* @__PURE__ */ jsxs103(
13880
14389
  DrawerContent,
13881
14390
  {
13882
14391
  onClose: () => onOpenChange(false),
13883
14392
  className: "rounded-none rounded-t-[32px] border-0 p-0",
13884
14393
  children: [
13885
- /* @__PURE__ */ jsx156(DrawerTitle, { className: "sr-only", children: title }),
13886
- /* @__PURE__ */ jsx156(DrawerDescription, { className: "sr-only", children: label }),
14394
+ /* @__PURE__ */ jsx158(DrawerTitle, { className: "sr-only", children: title }),
14395
+ /* @__PURE__ */ jsx158(DrawerDescription, { className: "sr-only", children: label }),
13887
14396
  body
13888
14397
  ]
13889
14398
  }
13890
14399
  ) });
13891
14400
  }
13892
- return /* @__PURE__ */ jsx156(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs101(
14401
+ return /* @__PURE__ */ jsx158(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs103(
13893
14402
  DialogContent,
13894
14403
  {
13895
14404
  className: "max-w-[520px] rounded-[28px] border-0 p-0 shadow-xl",
13896
14405
  showCloseButton: false,
13897
14406
  children: [
13898
- /* @__PURE__ */ jsx156(DialogTitle, { className: "sr-only", children: title }),
13899
- /* @__PURE__ */ jsx156(DialogDescription, { className: "sr-only", children: label }),
14407
+ /* @__PURE__ */ jsx158(DialogTitle, { className: "sr-only", children: title }),
14408
+ /* @__PURE__ */ jsx158(DialogDescription, { className: "sr-only", children: label }),
13900
14409
  body
13901
14410
  ]
13902
14411
  }
@@ -13904,7 +14413,7 @@ function AirbnbDatePickerContent({
13904
14413
  }
13905
14414
 
13906
14415
  // src/dashboard/datepicker/Datepicker.tsx
13907
- import { jsx as jsx157, jsxs as jsxs102 } from "react/jsx-runtime";
14416
+ import { jsx as jsx159, jsxs as jsxs104 } from "react/jsx-runtime";
13908
14417
  var MONTHS_IN_YEAR2 = 12;
13909
14418
  function getMonthLabels2(locale) {
13910
14419
  const formatter = new Intl.DateTimeFormat(locale, { month: "long" });
@@ -13981,7 +14490,7 @@ var DashboardDatepicker = React54.forwardRef(
13981
14490
  const yearId = `${baseId}-year`;
13982
14491
  const labelId = `${baseId}-label`;
13983
14492
  const errorId = `${baseId}-error`;
13984
- const { t } = useTranslation33();
14493
+ const { t } = useTranslation35();
13985
14494
  const resolvedMonthLabels = React54.useMemo(
13986
14495
  () => monthLabels ?? getMonthLabels2(locale),
13987
14496
  [locale, monthLabels]
@@ -14004,7 +14513,7 @@ var DashboardDatepicker = React54.forwardRef(
14004
14513
  const [focusedField, setFocusedField] = React54.useState(null);
14005
14514
  const [monthInputValue, setMonthInputValue] = React54.useState("");
14006
14515
  const [monthHighlightIndex, setMonthHighlightIndex] = React54.useState(-1);
14007
- const isMobile2 = useIsMobile();
14516
+ const isMobile3 = useIsMobile();
14008
14517
  React54.useImperativeHandle(ref, () => dayInputRef.current, []);
14009
14518
  React54.useEffect(() => {
14010
14519
  if (!isControlled) return;
@@ -14054,7 +14563,7 @@ var DashboardDatepicker = React54.forwardRef(
14054
14563
  useOutsideClick({
14055
14564
  elementRef: containerRef,
14056
14565
  onOutsideClick: () => setIsMonthOpen(false),
14057
- isDisabled: !isMonthOpen || isMobile2
14566
+ isDisabled: !isMonthOpen || isMobile3
14058
14567
  });
14059
14568
  const emitChange = React54.useCallback(
14060
14569
  (nextDay, nextMonth, nextYear) => {
@@ -14163,8 +14672,7 @@ var DashboardDatepicker = React54.forwardRef(
14163
14672
  setIsWheelOpen(false);
14164
14673
  mobileTriggerRef.current?.focus();
14165
14674
  }, []);
14166
- const closeMonth = () => setIsMonthOpen(false);
14167
- const showCoverage = isEmpty && !isFocused && !isMobile2;
14675
+ const showCoverage = isEmpty && !isFocused && !isMobile3;
14168
14676
  const wheel = useDatePickerWheel({
14169
14677
  isOpen: isWheelOpen,
14170
14678
  value: currentDate,
@@ -14188,7 +14696,7 @@ var DashboardDatepicker = React54.forwardRef(
14188
14696
  const triggerText = currentDate ? (formatValue ?? defaultFormatValue)(currentDate) : void 0;
14189
14697
  const monthListboxId = `${monthId}-listbox`;
14190
14698
  const getMonthOptionId = (index) => `${monthId}-option-${index}`;
14191
- const monthPanelContent = filteredMonths.length === 0 ? /* @__PURE__ */ jsx157("div", { className: "px-4 py-3 text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: t("no_options") }) : /* @__PURE__ */ jsx157(
14699
+ const monthPanelContent = filteredMonths.length === 0 ? /* @__PURE__ */ jsx159("div", { className: "px-4 py-3 text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: t("no_options") }) : /* @__PURE__ */ jsx159(
14192
14700
  "ul",
14193
14701
  {
14194
14702
  ref: monthListRef,
@@ -14199,7 +14707,7 @@ var DashboardDatepicker = React54.forwardRef(
14199
14707
  children: filteredMonths.map((option, position) => {
14200
14708
  const isSelected = option.index === monthIndex;
14201
14709
  const isHighlighted = position === monthHighlightIndex;
14202
- return /* @__PURE__ */ jsx157("li", { role: "presentation", children: /* @__PURE__ */ jsx157(
14710
+ return /* @__PURE__ */ jsx159("li", { role: "presentation", children: /* @__PURE__ */ jsx159(
14203
14711
  "button",
14204
14712
  {
14205
14713
  id: getMonthOptionId(option.index),
@@ -14226,7 +14734,7 @@ var DashboardDatepicker = React54.forwardRef(
14226
14734
  isBlocked && "cursor-not-allowed",
14227
14735
  loading && "cursor-progress"
14228
14736
  );
14229
- return /* @__PURE__ */ jsx157(
14737
+ return /* @__PURE__ */ jsx159(
14230
14738
  "div",
14231
14739
  {
14232
14740
  ref: containerRef,
@@ -14237,9 +14745,9 @@ var DashboardDatepicker = React54.forwardRef(
14237
14745
  className
14238
14746
  ),
14239
14747
  style: wrapperWidth ? { width: wrapperWidth } : void 0,
14240
- children: /* @__PURE__ */ jsxs102("div", { className: "relative min-h-[68px] w-full", children: [
14241
- /* @__PURE__ */ jsxs102("div", { className: "relative w-full", children: [
14242
- isMobile2 ? /* @__PURE__ */ jsxs102(
14748
+ children: /* @__PURE__ */ jsxs104("div", { className: "relative min-h-[68px] w-full", children: [
14749
+ /* @__PURE__ */ jsxs104("div", { className: "relative w-full", children: [
14750
+ isMobile3 ? /* @__PURE__ */ jsxs104(
14243
14751
  "button",
14244
14752
  {
14245
14753
  ref: mobileTriggerRef,
@@ -14258,10 +14766,10 @@ var DashboardDatepicker = React54.forwardRef(
14258
14766
  (isBlocked || readOnly) && "cursor-not-allowed"
14259
14767
  ),
14260
14768
  children: [
14261
- /* @__PURE__ */ jsx157("span", { className: "block min-w-0 flex-1 truncate text-left", children: triggerText ?? (isWheelOpen ? mobilePlaceholder : null) }),
14262
- /* @__PURE__ */ jsxs102("span", { className: "pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: [
14263
- loading && /* @__PURE__ */ jsx157(ThreeDotsLoader, { height: 18, width: 18 }),
14264
- /* @__PURE__ */ jsx157(
14769
+ /* @__PURE__ */ jsx159("span", { className: "block min-w-0 flex-1 truncate text-left", children: triggerText ?? (isWheelOpen ? mobilePlaceholder : null) }),
14770
+ /* @__PURE__ */ jsxs104("span", { className: "pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: [
14771
+ loading && /* @__PURE__ */ jsx159(ThreeDotsLoader, { height: 18, width: 18 }),
14772
+ /* @__PURE__ */ jsx159(
14265
14773
  ChevronDown3,
14266
14774
  {
14267
14775
  size: 16,
@@ -14274,14 +14782,14 @@ var DashboardDatepicker = React54.forwardRef(
14274
14782
  ] })
14275
14783
  ]
14276
14784
  }
14277
- ) : /* @__PURE__ */ jsxs102(
14785
+ ) : /* @__PURE__ */ jsxs104(
14278
14786
  "div",
14279
14787
  {
14280
14788
  className: cn(
14281
14789
  "relative box-border grid h-12 w-full grid-cols-[minmax(0,1fr)_minmax(96px,140px)_minmax(0,1fr)] items-center rounded-[6px] text-[16px] font-medium text-[var(--chekin-color-brand-navy)]"
14282
14790
  ),
14283
14791
  children: [
14284
- /* @__PURE__ */ jsx157("div", { className: "flex h-full min-w-0 items-center px-2 sm:px-4", children: /* @__PURE__ */ jsx157(
14792
+ /* @__PURE__ */ jsx159("div", { className: "flex h-full min-w-0 items-center px-2 sm:px-4", children: /* @__PURE__ */ jsx159(
14285
14793
  "input",
14286
14794
  {
14287
14795
  ref: dayInputRef,
@@ -14303,8 +14811,8 @@ var DashboardDatepicker = React54.forwardRef(
14303
14811
  className: subInputClass
14304
14812
  }
14305
14813
  ) }),
14306
- /* @__PURE__ */ jsxs102("div", { className: "relative flex h-full min-w-0 items-center gap-1 border-x border-[var(--chekin-color-gray-3)] px-2 sm:px-3", children: [
14307
- /* @__PURE__ */ jsx157(
14814
+ /* @__PURE__ */ jsxs104("div", { className: "relative flex h-full min-w-0 items-center gap-1 border-x border-[var(--chekin-color-gray-3)] px-2 sm:px-3", children: [
14815
+ /* @__PURE__ */ jsx159(
14308
14816
  "input",
14309
14817
  {
14310
14818
  ref: monthInputRef,
@@ -14347,7 +14855,7 @@ var DashboardDatepicker = React54.forwardRef(
14347
14855
  )
14348
14856
  }
14349
14857
  ),
14350
- /* @__PURE__ */ jsx157(
14858
+ /* @__PURE__ */ jsx159(
14351
14859
  ChevronDown3,
14352
14860
  {
14353
14861
  size: 14,
@@ -14364,8 +14872,8 @@ var DashboardDatepicker = React54.forwardRef(
14364
14872
  }
14365
14873
  )
14366
14874
  ] }),
14367
- /* @__PURE__ */ jsxs102("div", { className: "flex h-full min-w-0 items-center px-2 sm:px-4", children: [
14368
- /* @__PURE__ */ jsx157(
14875
+ /* @__PURE__ */ jsxs104("div", { className: "flex h-full min-w-0 items-center px-2 sm:px-4", children: [
14876
+ /* @__PURE__ */ jsx159(
14369
14877
  "input",
14370
14878
  {
14371
14879
  ref: yearInputRef,
@@ -14387,7 +14895,7 @@ var DashboardDatepicker = React54.forwardRef(
14387
14895
  className: subInputClass
14388
14896
  }
14389
14897
  ),
14390
- loading && /* @__PURE__ */ jsx157(
14898
+ loading && /* @__PURE__ */ jsx159(
14391
14899
  ThreeDotsLoader,
14392
14900
  {
14393
14901
  height: 18,
@@ -14399,7 +14907,7 @@ var DashboardDatepicker = React54.forwardRef(
14399
14907
  ]
14400
14908
  }
14401
14909
  ),
14402
- showCoverage && /* @__PURE__ */ jsx157(
14910
+ showCoverage && /* @__PURE__ */ jsx159(
14403
14911
  "div",
14404
14912
  {
14405
14913
  className: "absolute inset-0 cursor-text rounded-[6px] bg-[var(--chekin-color-surface-input-empty)]",
@@ -14407,7 +14915,7 @@ var DashboardDatepicker = React54.forwardRef(
14407
14915
  "aria-hidden": "true"
14408
14916
  }
14409
14917
  ),
14410
- /* @__PURE__ */ jsx157(
14918
+ /* @__PURE__ */ jsx159(
14411
14919
  Fieldset,
14412
14920
  {
14413
14921
  isFocused,
@@ -14422,12 +14930,12 @@ var DashboardDatepicker = React54.forwardRef(
14422
14930
  legend: label,
14423
14931
  label,
14424
14932
  tooltip,
14425
- onClick: isMobile2 ? openWheel : showCoverage ? focusDayInput : void 0
14933
+ onClick: isMobile3 ? openWheel : showCoverage ? focusDayInput : void 0
14426
14934
  }
14427
14935
  ),
14428
- isMonthOpen && !isMobile2 && /* @__PURE__ */ jsx157("div", { className: "absolute left-0 right-0 top-full z-30 mx-auto mt-1 w-full max-w-[260px] overflow-hidden rounded-md bg-white shadow-[0_30px_30px_0_rgba(33,72,255,0.2)] sm:left-1/2 sm:right-auto sm:-translate-x-1/2", children: monthPanelContent })
14936
+ isMonthOpen && !isMobile3 && /* @__PURE__ */ jsx159("div", { className: "absolute left-0 right-0 top-full z-30 mx-auto mt-1 w-full max-w-[260px] overflow-hidden rounded-md bg-white shadow-[0_30px_30px_0_rgba(33,72,255,0.2)] sm:left-1/2 sm:right-auto sm:-translate-x-1/2", children: monthPanelContent })
14429
14937
  ] }),
14430
- isMobile2 && /* @__PURE__ */ jsx157(
14938
+ isMobile3 && /* @__PURE__ */ jsx159(
14431
14939
  AirbnbDatePickerContent,
14432
14940
  {
14433
14941
  baseId: wheelBaseId,
@@ -14455,9 +14963,9 @@ var DashboardDatepicker = React54.forwardRef(
14455
14963
  onOptionSelect: wheel.handleOptionSelect
14456
14964
  }
14457
14965
  ),
14458
- !error && optional && /* @__PURE__ */ jsx157("span", { className: "mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: typeof optional === "string" ? optional : t("optional") }),
14459
- !error && helperText && /* @__PURE__ */ jsx157("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText }),
14460
- error && !hideErrorMessage && /* @__PURE__ */ jsx157(
14966
+ !error && optional && /* @__PURE__ */ jsx159("span", { className: "mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: typeof optional === "string" ? optional : t("optional") }),
14967
+ !error && helperText && /* @__PURE__ */ jsx159("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText }),
14968
+ error && !hideErrorMessage && /* @__PURE__ */ jsx159(
14461
14969
  FieldErrorMessage,
14462
14970
  {
14463
14971
  id: errorId,
@@ -14473,7 +14981,7 @@ var DashboardDatepicker = React54.forwardRef(
14473
14981
 
14474
14982
  // src/dashboard/date-range-picker/DateRangePicker.tsx
14475
14983
  import * as React58 from "react";
14476
- import { useTranslation as useTranslation34 } from "react-i18next";
14984
+ import { useTranslation as useTranslation36 } from "react-i18next";
14477
14985
 
14478
14986
  // src/dashboard/date-range-picker/isDayBlocked.ts
14479
14987
  import { differenceInDays, isAfter, isBefore, isSameDay } from "date-fns";
@@ -14616,7 +15124,7 @@ function useRangeTextInputs({
14616
15124
  }
14617
15125
  setFromText(value?.from ? format2(value.from) : "");
14618
15126
  return void 0;
14619
- }, [format2, fromText, onBlur, onCommit, parse3, value?.from, value?.to]);
15127
+ }, [format2, fromText, onBlur, onCommit, parse3, value]);
14620
15128
  const handleToBlur = React56.useCallback(() => {
14621
15129
  if (!toText) {
14622
15130
  const next = { from: value?.from, to: void 0 };
@@ -14632,7 +15140,7 @@ function useRangeTextInputs({
14632
15140
  return;
14633
15141
  }
14634
15142
  setToText(value?.to ? format2(value.to) : "");
14635
- }, [format2, onBlur, onCommit, parse3, toText, value?.from, value?.to]);
15143
+ }, [format2, onBlur, onCommit, parse3, toText, value]);
14636
15144
  return {
14637
15145
  fromText,
14638
15146
  toText,
@@ -14684,7 +15192,7 @@ function resolveRangeSelection({
14684
15192
 
14685
15193
  // src/dashboard/date-range-picker/components/DateRangeInputs.tsx
14686
15194
  import { CalendarDays, SquareX as SquareX4 } from "lucide-react";
14687
- import { jsx as jsx158, jsxs as jsxs103 } from "react/jsx-runtime";
15195
+ import { jsx as jsx160, jsxs as jsxs105 } from "react/jsx-runtime";
14688
15196
  var DEFAULT_PLACEHOLDER = "00-00-0000";
14689
15197
  var inputBaseClass = "m-0 box-border h-full w-full min-w-0 border-0 bg-transparent text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none placeholder:text-[var(--chekin-color-gray-1)]";
14690
15198
  var iconButtonClass = "flex h-5 w-5 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] outline-none hover:shadow-[0_3px_3px_#0f477734] disabled:cursor-not-allowed";
@@ -14726,7 +15234,7 @@ function DateRangeInputs({
14726
15234
  isBlocked && "cursor-not-allowed",
14727
15235
  loading && "cursor-progress"
14728
15236
  );
14729
- return /* @__PURE__ */ jsxs103(
15237
+ return /* @__PURE__ */ jsxs105(
14730
15238
  "div",
14731
15239
  {
14732
15240
  className: cn(
@@ -14735,7 +15243,7 @@ function DateRangeInputs({
14735
15243
  ),
14736
15244
  onClick: onRowClick,
14737
15245
  children: [
14738
- /* @__PURE__ */ jsx158(
15246
+ /* @__PURE__ */ jsx160(
14739
15247
  "input",
14740
15248
  {
14741
15249
  ref: fromInputRef,
@@ -14759,7 +15267,7 @@ function DateRangeInputs({
14759
15267
  )
14760
15268
  }
14761
15269
  ),
14762
- /* @__PURE__ */ jsx158(
15270
+ /* @__PURE__ */ jsx160(
14763
15271
  "span",
14764
15272
  {
14765
15273
  "aria-hidden": "true",
@@ -14770,7 +15278,7 @@ function DateRangeInputs({
14770
15278
  children: "\u2192"
14771
15279
  }
14772
15280
  ),
14773
- /* @__PURE__ */ jsx158(
15281
+ /* @__PURE__ */ jsx160(
14774
15282
  "input",
14775
15283
  {
14776
15284
  ref: toInputRef,
@@ -14794,9 +15302,9 @@ function DateRangeInputs({
14794
15302
  )
14795
15303
  }
14796
15304
  ),
14797
- /* @__PURE__ */ jsxs103("span", { className: "ml-auto flex shrink-0 items-center gap-2 pl-2 text-[var(--chekin-color-gray-2)]", children: [
14798
- loading && /* @__PURE__ */ jsx158(ThreeDotsLoader, { height: 18, width: 18 }),
14799
- !readOnly && !hideClearDates && !isEmpty && /* @__PURE__ */ jsx158(
15305
+ /* @__PURE__ */ jsxs105("span", { className: "ml-auto flex shrink-0 items-center gap-2 pl-2 text-[var(--chekin-color-gray-2)]", children: [
15306
+ loading && /* @__PURE__ */ jsx160(ThreeDotsLoader, { height: 18, width: 18 }),
15307
+ !readOnly && !hideClearDates && !isEmpty && /* @__PURE__ */ jsx160(
14800
15308
  "button",
14801
15309
  {
14802
15310
  type: "button",
@@ -14804,10 +15312,10 @@ function DateRangeInputs({
14804
15312
  onClick: onReset,
14805
15313
  className: iconButtonClass,
14806
15314
  "aria-label": clearLabel,
14807
- children: /* @__PURE__ */ jsx158(SquareX4, { size: 16, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
15315
+ children: /* @__PURE__ */ jsx160(SquareX4, { size: 16, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
14808
15316
  }
14809
15317
  ),
14810
- !readOnly && !hideCalendarIcon && /* @__PURE__ */ jsx158(
15318
+ !readOnly && !hideCalendarIcon && /* @__PURE__ */ jsx160(
14811
15319
  "button",
14812
15320
  {
14813
15321
  type: "button",
@@ -14819,7 +15327,7 @@ function DateRangeInputs({
14819
15327
  focusedInput !== null || isOpen ? "text-[var(--chekin-color-brand-blue)]" : "text-[var(--chekin-color-gray-2)]"
14820
15328
  ),
14821
15329
  "aria-label": openCalendarLabel,
14822
- children: /* @__PURE__ */ jsx158(CalendarDays, { size: 18 })
15330
+ children: /* @__PURE__ */ jsx160(CalendarDays, { size: 18 })
14823
15331
  }
14824
15332
  )
14825
15333
  ] })
@@ -14829,7 +15337,7 @@ function DateRangeInputs({
14829
15337
  }
14830
15338
 
14831
15339
  // src/dashboard/date-range-picker/components/DateRangeCalendar.tsx
14832
- import { jsx as jsx159 } from "react/jsx-runtime";
15340
+ import { jsx as jsx161 } from "react/jsx-runtime";
14833
15341
  function DateRangeCalendar({
14834
15342
  value,
14835
15343
  month,
@@ -14845,7 +15353,7 @@ function DateRangeCalendar({
14845
15353
  components,
14846
15354
  ...dayPickerProps
14847
15355
  }) {
14848
- return /* @__PURE__ */ jsx159(
15356
+ return /* @__PURE__ */ jsx161(
14849
15357
  Calendar,
14850
15358
  {
14851
15359
  mode: "range",
@@ -14868,10 +15376,10 @@ function DateRangeCalendar({
14868
15376
  }
14869
15377
 
14870
15378
  // src/dashboard/date-range-picker/components/DateRangePopover.tsx
14871
- import { jsx as jsx160, jsxs as jsxs104 } from "react/jsx-runtime";
15379
+ import { jsx as jsx162, jsxs as jsxs106 } from "react/jsx-runtime";
14872
15380
  function DateRangePopover({
14873
15381
  isOpen,
14874
- isMobile: isMobile2,
15382
+ isMobile: isMobile3,
14875
15383
  openDirection,
14876
15384
  drawerTitle,
14877
15385
  drawerDescription,
@@ -14879,31 +15387,31 @@ function DateRangePopover({
14879
15387
  children
14880
15388
  }) {
14881
15389
  if (!isOpen) return null;
14882
- if (isMobile2) {
14883
- return /* @__PURE__ */ jsx160(
15390
+ if (isMobile3) {
15391
+ return /* @__PURE__ */ jsx162(
14884
15392
  Drawer,
14885
15393
  {
14886
15394
  open: isOpen,
14887
15395
  onOpenChange: (next) => {
14888
15396
  if (!next) onClose();
14889
15397
  },
14890
- children: /* @__PURE__ */ jsxs104(
15398
+ children: /* @__PURE__ */ jsxs106(
14891
15399
  DrawerContent,
14892
15400
  {
14893
15401
  onClose,
14894
15402
  lockScroll: false,
14895
15403
  className: "max-h-[calc(100vh-1rem)]",
14896
15404
  children: [
14897
- /* @__PURE__ */ jsx160(DrawerTitle, { className: "sr-only", children: drawerTitle }),
14898
- /* @__PURE__ */ jsx160(DrawerDescription, { className: "sr-only", children: drawerDescription }),
14899
- /* @__PURE__ */ jsx160("div", { className: "flex items-start justify-center overflow-x-auto px-2 pb-4 pt-1", children })
15405
+ /* @__PURE__ */ jsx162(DrawerTitle, { className: "sr-only", children: drawerTitle }),
15406
+ /* @__PURE__ */ jsx162(DrawerDescription, { className: "sr-only", children: drawerDescription }),
15407
+ /* @__PURE__ */ jsx162("div", { className: "flex items-start justify-center overflow-x-auto px-2 pb-4 pt-1", children })
14900
15408
  ]
14901
15409
  }
14902
15410
  )
14903
15411
  }
14904
15412
  );
14905
15413
  }
14906
- return /* @__PURE__ */ jsx160(
15414
+ return /* @__PURE__ */ jsx162(
14907
15415
  "div",
14908
15416
  {
14909
15417
  className: cn(
@@ -14916,7 +15424,7 @@ function DateRangePopover({
14916
15424
  }
14917
15425
 
14918
15426
  // src/dashboard/date-range-picker/DateRangePicker.tsx
14919
- import { jsx as jsx161, jsxs as jsxs105 } from "react/jsx-runtime";
15427
+ import { jsx as jsx163, jsxs as jsxs107 } from "react/jsx-runtime";
14920
15428
  var DashboardDateRangePicker = React58.forwardRef(function DashboardDateRangePicker2({
14921
15429
  label,
14922
15430
  value: externalValue,
@@ -14989,8 +15497,8 @@ var DashboardDateRangePicker = React58.forwardRef(function DashboardDateRangePic
14989
15497
  const [isOpen, setIsOpen] = React58.useState(false);
14990
15498
  const [focusedInput, setFocusedInput] = React58.useState(null);
14991
15499
  const [autoFocus, setAutoFocus] = React58.useState(false);
14992
- const isMobile2 = useIsMobile();
14993
- const { t } = useTranslation34();
15500
+ const isMobile3 = useIsMobile();
15501
+ const { t } = useTranslation36();
14994
15502
  const drawerTitle = label ?? t("select_dates");
14995
15503
  const drawerDescription = label ?? t("pick_date_range");
14996
15504
  const isEmpty = !value?.from && !value?.to;
@@ -14998,7 +15506,7 @@ var DashboardDateRangePicker = React58.forwardRef(function DashboardDateRangePic
14998
15506
  const isInvalid = Boolean(invalid || error);
14999
15507
  const isFocused = focusedInput !== null || isOpen;
15000
15508
  const wrapperWidth = toCssSize(width);
15001
- const monthsToShow = numberOfMonths ?? (isMobile2 ? 1 : 2);
15509
+ const monthsToShow = numberOfMonths ?? (isMobile3 ? 1 : 2);
15002
15510
  const closeCalendar = React58.useCallback(() => {
15003
15511
  setIsOpen(false);
15004
15512
  setFocusedInput(null);
@@ -15012,7 +15520,7 @@ var DashboardDateRangePicker = React58.forwardRef(function DashboardDateRangePic
15012
15520
  useOutsideClick({
15013
15521
  elementRef: containerRef,
15014
15522
  onOutsideClick: closeCalendar,
15015
- isDisabled: !isOpen || isMobile2
15523
+ isDisabled: !isOpen || isMobile3
15016
15524
  });
15017
15525
  const handlePickerChange = React58.useCallback(
15018
15526
  (range, pickedDate) => {
@@ -15077,7 +15585,7 @@ var DashboardDateRangePicker = React58.forwardRef(function DashboardDateRangePic
15077
15585
  syncMonthToValue
15078
15586
  ]
15079
15587
  );
15080
- return /* @__PURE__ */ jsx161(
15588
+ return /* @__PURE__ */ jsx163(
15081
15589
  "div",
15082
15590
  {
15083
15591
  ref: containerRef,
@@ -15088,9 +15596,9 @@ var DashboardDateRangePicker = React58.forwardRef(function DashboardDateRangePic
15088
15596
  className
15089
15597
  ),
15090
15598
  style: wrapperWidth ? { width: wrapperWidth } : void 0,
15091
- children: /* @__PURE__ */ jsxs105("div", { className: "relative min-h-[68px] w-full", children: [
15092
- /* @__PURE__ */ jsxs105("div", { className: "relative w-full", children: [
15093
- /* @__PURE__ */ jsx161(
15599
+ children: /* @__PURE__ */ jsxs107("div", { className: "relative min-h-[68px] w-full", children: [
15600
+ /* @__PURE__ */ jsxs107("div", { className: "relative w-full", children: [
15601
+ /* @__PURE__ */ jsx163(
15094
15602
  DateRangeInputs,
15095
15603
  {
15096
15604
  fromId,
@@ -15141,7 +15649,7 @@ var DashboardDateRangePicker = React58.forwardRef(function DashboardDateRangePic
15141
15649
  onToggleCalendar: toggleCalendar
15142
15650
  }
15143
15651
  ),
15144
- /* @__PURE__ */ jsx161(
15652
+ /* @__PURE__ */ jsx163(
15145
15653
  Fieldset,
15146
15654
  {
15147
15655
  isFocused,
@@ -15158,16 +15666,16 @@ var DashboardDateRangePicker = React58.forwardRef(function DashboardDateRangePic
15158
15666
  tooltip
15159
15667
  }
15160
15668
  ),
15161
- /* @__PURE__ */ jsx161(
15669
+ /* @__PURE__ */ jsx163(
15162
15670
  DateRangePopover,
15163
15671
  {
15164
- isOpen: isOpen && !isMobile2,
15672
+ isOpen: isOpen && !isMobile3,
15165
15673
  isMobile: false,
15166
15674
  openDirection,
15167
15675
  drawerTitle,
15168
15676
  drawerDescription,
15169
15677
  onClose: closeCalendar,
15170
- children: /* @__PURE__ */ jsx161(
15678
+ children: /* @__PURE__ */ jsx163(
15171
15679
  DateRangeCalendar,
15172
15680
  {
15173
15681
  value,
@@ -15188,16 +15696,16 @@ var DashboardDateRangePicker = React58.forwardRef(function DashboardDateRangePic
15188
15696
  }
15189
15697
  )
15190
15698
  ] }),
15191
- /* @__PURE__ */ jsx161(
15699
+ /* @__PURE__ */ jsx163(
15192
15700
  DateRangePopover,
15193
15701
  {
15194
- isOpen: isOpen && isMobile2,
15702
+ isOpen: isOpen && isMobile3,
15195
15703
  isMobile: true,
15196
15704
  openDirection,
15197
15705
  drawerTitle,
15198
15706
  drawerDescription,
15199
15707
  onClose: closeCalendar,
15200
- children: /* @__PURE__ */ jsx161(
15708
+ children: /* @__PURE__ */ jsx163(
15201
15709
  DateRangeCalendar,
15202
15710
  {
15203
15711
  value,
@@ -15217,9 +15725,9 @@ var DashboardDateRangePicker = React58.forwardRef(function DashboardDateRangePic
15217
15725
  )
15218
15726
  }
15219
15727
  ),
15220
- !error && optional && /* @__PURE__ */ jsx161("span", { className: "mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: typeof optional === "string" ? optional : t("optional") }),
15221
- !error && helperText && /* @__PURE__ */ jsx161("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText }),
15222
- error && !hideErrorMessage && /* @__PURE__ */ jsx161(
15728
+ !error && optional && /* @__PURE__ */ jsx163("span", { className: "mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: typeof optional === "string" ? optional : t("optional") }),
15729
+ !error && helperText && /* @__PURE__ */ jsx163("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText }),
15730
+ error && !hideErrorMessage && /* @__PURE__ */ jsx163(
15223
15731
  FieldErrorMessage,
15224
15732
  {
15225
15733
  id: errorId,
@@ -15234,7 +15742,7 @@ var DashboardDateRangePicker = React58.forwardRef(function DashboardDateRangePic
15234
15742
 
15235
15743
  // src/dashboard/date-range-picker/useValidateDates.ts
15236
15744
  import * as React59 from "react";
15237
- import { useTranslation as useTranslation35 } from "react-i18next";
15745
+ import { useTranslation as useTranslation37 } from "react-i18next";
15238
15746
  import { differenceInDays as differenceInDays2, isAfter as isAfter2, isBefore as isBefore3 } from "date-fns";
15239
15747
  import {
15240
15748
  dateMatchModifiers,
@@ -15256,7 +15764,7 @@ function useValidateDates({
15256
15764
  onSuccess,
15257
15765
  displayFormat
15258
15766
  }) {
15259
- const { t } = useTranslation35();
15767
+ const { t } = useTranslation37();
15260
15768
  const handleError = useEvent(onError);
15261
15769
  const handleSuccess = useEvent(onSuccess);
15262
15770
  const errorFormatter = React59.useMemo(
@@ -15315,7 +15823,7 @@ function useValidateDates({
15315
15823
  // src/dashboard/time-picker/TimePicker.tsx
15316
15824
  import * as React60 from "react";
15317
15825
  import { addDays, addHours, addMinutes, format, parse as parse2 } from "date-fns";
15318
- import { jsx as jsx162 } from "react/jsx-runtime";
15826
+ import { jsx as jsx164 } from "react/jsx-runtime";
15319
15827
  var SHORT_TIME_FORMAT = "HH:mm";
15320
15828
  function parseTime(value) {
15321
15829
  return parse2(value, SHORT_TIME_FORMAT, /* @__PURE__ */ new Date());
@@ -15364,24 +15872,15 @@ var DashboardTimePicker = React60.forwardRef(
15364
15872
  const settings = timeSettings ?? FORMAT_SETTINGS[formatName];
15365
15873
  return buildOptions(settings);
15366
15874
  }, [formatName, options, timeSettings]);
15367
- return /* @__PURE__ */ jsx162(DashboardSelect, { ref, ...selectProps, options: resolvedOptions });
15875
+ return /* @__PURE__ */ jsx164(DashboardSelect, { ref, ...selectProps, options: resolvedOptions });
15368
15876
  }
15369
15877
  );
15370
15878
 
15371
15879
  // src/dashboard/file-input/FileInput.tsx
15372
15880
  import * as React61 from "react";
15373
15881
  import { Download, Paperclip, SquareX as SquareX5 } from "lucide-react";
15374
- import { useTranslation as useTranslation36 } from "react-i18next";
15375
- import { jsx as jsx163, jsxs as jsxs106 } from "react/jsx-runtime";
15376
- function defaultFileNameFromUrl(url) {
15377
- try {
15378
- const parsed = new URL(url);
15379
- const segments = parsed.pathname.split("/");
15380
- return decodeURIComponent(segments[segments.length - 1] ?? url);
15381
- } catch {
15382
- return url;
15383
- }
15384
- }
15882
+ import { useTranslation as useTranslation38 } from "react-i18next";
15883
+ import { jsx as jsx165, jsxs as jsxs108 } from "react/jsx-runtime";
15385
15884
  function defaultDownload(url) {
15386
15885
  window.open(url, "_blank", "noopener,noreferrer");
15387
15886
  }
@@ -15406,12 +15905,11 @@ var DashboardFileInput = React61.forwardRef(
15406
15905
  hideErrorMessage,
15407
15906
  className,
15408
15907
  width,
15409
- downloadLabel,
15410
- fileNameFromUrl = defaultFileNameFromUrl
15908
+ downloadLabel
15411
15909
  }, ref) {
15412
15910
  const internalRef = React61.useRef(null);
15413
15911
  const inputRef = useCombinedRef(ref, internalRef);
15414
- const { t } = useTranslation36();
15912
+ const { t } = useTranslation38();
15415
15913
  const resolvedLabel = label ?? t("upload_file");
15416
15914
  const resolvedDownloadLabel = downloadLabel ?? t("download_attachment");
15417
15915
  const reactId = React61.useId();
@@ -15440,7 +15938,7 @@ var DashboardFileInput = React61.forwardRef(
15440
15938
  event.stopPropagation();
15441
15939
  if (isUrl) onDownload(value);
15442
15940
  };
15443
- return /* @__PURE__ */ jsxs106(
15941
+ return /* @__PURE__ */ jsxs108(
15444
15942
  "label",
15445
15943
  {
15446
15944
  htmlFor: inputId,
@@ -15453,7 +15951,7 @@ var DashboardFileInput = React61.forwardRef(
15453
15951
  ),
15454
15952
  style: wrapperWidth ? { width: wrapperWidth } : void 0,
15455
15953
  children: [
15456
- /* @__PURE__ */ jsx163(
15954
+ /* @__PURE__ */ jsx165(
15457
15955
  "input",
15458
15956
  {
15459
15957
  ref: inputRef,
@@ -15469,9 +15967,9 @@ var DashboardFileInput = React61.forwardRef(
15469
15967
  "aria-invalid": isInvalid
15470
15968
  }
15471
15969
  ),
15472
- /* @__PURE__ */ jsxs106("div", { className: "relative min-h-[68px] w-full", children: [
15473
- /* @__PURE__ */ jsxs106("div", { className: "relative w-full", children: [
15474
- /* @__PURE__ */ jsxs106(
15970
+ /* @__PURE__ */ jsxs108("div", { className: "relative min-h-[68px] w-full", children: [
15971
+ /* @__PURE__ */ jsxs108("div", { className: "relative w-full", children: [
15972
+ /* @__PURE__ */ jsxs108(
15475
15973
  "div",
15476
15974
  {
15477
15975
  className: cn(
@@ -15479,25 +15977,25 @@ var DashboardFileInput = React61.forwardRef(
15479
15977
  isEmpty && "bg-[var(--chekin-color-surface-input-empty)]"
15480
15978
  ),
15481
15979
  children: [
15482
- hasFileChip ? /* @__PURE__ */ jsxs106(
15980
+ hasFileChip ? /* @__PURE__ */ jsxs108(
15483
15981
  "div",
15484
15982
  {
15485
15983
  className: "inline-flex h-6 max-w-[85%] items-center rounded-[4px] border border-[#acacd5] bg-[#f0f0f8] pl-[10px] pr-1",
15486
15984
  onClick: (event) => event.preventDefault(),
15487
15985
  children: [
15488
- isUrl ? /* @__PURE__ */ jsxs106(
15986
+ isUrl ? /* @__PURE__ */ jsxs108(
15489
15987
  "button",
15490
15988
  {
15491
15989
  type: "button",
15492
15990
  onClick: handleDownload,
15493
15991
  className: "inline-flex items-center gap-[7px] truncate border-0 bg-transparent p-0 text-[14px] font-medium text-[var(--chekin-color-brand-navy)] outline-none",
15494
15992
  children: [
15495
- /* @__PURE__ */ jsx163("span", { className: "truncate", children: resolvedDownloadLabel }),
15496
- /* @__PURE__ */ jsx163(Download, { size: 15 })
15993
+ /* @__PURE__ */ jsx165("span", { className: "truncate", children: resolvedDownloadLabel }),
15994
+ /* @__PURE__ */ jsx165(Download, { size: 15 })
15497
15995
  ]
15498
15996
  }
15499
- ) : /* @__PURE__ */ jsx163("span", { className: "truncate text-[14px] font-medium text-[var(--chekin-color-brand-navy)]", children: value.name }),
15500
- /* @__PURE__ */ jsx163(
15997
+ ) : /* @__PURE__ */ jsx165("span", { className: "truncate text-[14px] font-medium text-[var(--chekin-color-brand-navy)]", children: value.name }),
15998
+ /* @__PURE__ */ jsx165(
15501
15999
  "button",
15502
16000
  {
15503
16001
  type: "button",
@@ -15505,20 +16003,20 @@ var DashboardFileInput = React61.forwardRef(
15505
16003
  onClick: handleClear,
15506
16004
  className: "ml-2 flex h-[15px] w-[15px] items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] outline-none hover:shadow-[0_3px_3px_#0f477734]",
15507
16005
  "aria-label": t("remove_file"),
15508
- children: /* @__PURE__ */ jsx163(SquareX5, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
16006
+ children: /* @__PURE__ */ jsx165(SquareX5, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
15509
16007
  }
15510
16008
  )
15511
16009
  ]
15512
16010
  }
15513
- ) : /* @__PURE__ */ jsx163("span", { className: "block min-w-0 flex-1 truncate text-left text-[var(--chekin-color-gray-1)]", children: placeholder ?? "" }),
15514
- /* @__PURE__ */ jsxs106("span", { className: "ml-auto flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: [
15515
- loading && /* @__PURE__ */ jsx163(ThreeDotsLoader, { height: 18, width: 18 }),
15516
- /* @__PURE__ */ jsx163(Paperclip, { size: 20 })
16011
+ ) : /* @__PURE__ */ jsx165("span", { className: "block min-w-0 flex-1 truncate text-left text-[var(--chekin-color-gray-1)]", children: placeholder ?? "" }),
16012
+ /* @__PURE__ */ jsxs108("span", { className: "ml-auto flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: [
16013
+ loading && /* @__PURE__ */ jsx165(ThreeDotsLoader, { height: 18, width: 18 }),
16014
+ /* @__PURE__ */ jsx165(Paperclip, { size: 20 })
15517
16015
  ] })
15518
16016
  ]
15519
16017
  }
15520
16018
  ),
15521
- /* @__PURE__ */ jsx163(
16019
+ /* @__PURE__ */ jsx165(
15522
16020
  Fieldset,
15523
16021
  {
15524
16022
  isFocused: false,
@@ -15536,9 +16034,9 @@ var DashboardFileInput = React61.forwardRef(
15536
16034
  }
15537
16035
  )
15538
16036
  ] }),
15539
- !error && optional && /* @__PURE__ */ jsx163("span", { className: "mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: typeof optional === "string" ? optional : t("optional") }),
15540
- !error && helperText && /* @__PURE__ */ jsx163("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText }),
15541
- error && !hideErrorMessage && /* @__PURE__ */ jsx163(
16037
+ !error && optional && /* @__PURE__ */ jsx165("span", { className: "mt-[1px] block text-left text-[14px] font-medium text-[var(--chekin-color-gray-1)]", children: typeof optional === "string" ? optional : t("optional") }),
16038
+ !error && helperText && /* @__PURE__ */ jsx165("span", { className: "mt-[1px] block text-[12px] font-normal text-[var(--chekin-color-gray-1)]", children: helperText }),
16039
+ error && !hideErrorMessage && /* @__PURE__ */ jsx165(
15542
16040
  FieldErrorMessage,
15543
16041
  {
15544
16042
  id: errorId,
@@ -15555,7 +16053,7 @@ var DashboardFileInput = React61.forwardRef(
15555
16053
 
15556
16054
  // src/dashboard/select-icons-box/SelectIconsBox.tsx
15557
16055
  import * as React62 from "react";
15558
- import { jsx as jsx164, jsxs as jsxs107 } from "react/jsx-runtime";
16056
+ import { jsx as jsx166, jsxs as jsxs109 } from "react/jsx-runtime";
15559
16057
  function DashboardSelectIconsBox({
15560
16058
  children,
15561
16059
  icons,
@@ -15591,7 +16089,7 @@ function DashboardSelectIconsBox({
15591
16089
  onSelect(iconName);
15592
16090
  setOpen(false);
15593
16091
  };
15594
- return /* @__PURE__ */ jsxs107(
16092
+ return /* @__PURE__ */ jsxs109(
15595
16093
  "div",
15596
16094
  {
15597
16095
  ref: containerRef,
@@ -15599,7 +16097,7 @@ function DashboardSelectIconsBox({
15599
16097
  className: cn("relative inline-block", className),
15600
16098
  children: [
15601
16099
  children,
15602
- isOpen && /* @__PURE__ */ jsx164(
16100
+ isOpen && /* @__PURE__ */ jsx166(
15603
16101
  "div",
15604
16102
  {
15605
16103
  className: cn(
@@ -15610,7 +16108,7 @@ function DashboardSelectIconsBox({
15610
16108
  boxClassName
15611
16109
  ),
15612
16110
  style: { gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` },
15613
- children: icons.map((iconName) => /* @__PURE__ */ jsx164(
16111
+ children: icons.map((iconName) => /* @__PURE__ */ jsx166(
15614
16112
  "button",
15615
16113
  {
15616
16114
  type: "button",
@@ -15691,14 +16189,14 @@ function getErrorMessage(error) {
15691
16189
 
15692
16190
  // src/lib/toastResponseError.tsx
15693
16191
  import i18next from "i18next";
15694
- import { jsx as jsx165, jsxs as jsxs108 } from "react/jsx-runtime";
16192
+ import { jsx as jsx167, jsxs as jsxs110 } from "react/jsx-runtime";
15695
16193
  function addSupportEmailToMessage(message, prefixText) {
15696
16194
  if (typeof message !== "string") {
15697
16195
  return message;
15698
16196
  }
15699
16197
  const builtMessage = `${prefixText ? `${prefixText} ` : ""}${message}`;
15700
- return /* @__PURE__ */ jsxs108("div", { children: [
15701
- /* @__PURE__ */ jsx165("div", { children: builtMessage }),
16198
+ return /* @__PURE__ */ jsxs110("div", { children: [
16199
+ /* @__PURE__ */ jsx167("div", { children: builtMessage }),
15702
16200
  i18next.t("reach_us_at_email")
15703
16201
  ] });
15704
16202
  }
@@ -15713,13 +16211,13 @@ function toastResponseError(error, options = {}) {
15713
16211
  }
15714
16212
 
15715
16213
  // src/legacy-fields/textarea/Textarea.tsx
15716
- import { forwardRef as forwardRef67, useId as useId15 } from "react";
15717
- import { jsx as jsx166, jsxs as jsxs109 } from "react/jsx-runtime";
15718
- var LegacyTextarea = forwardRef67(
16214
+ import { forwardRef as forwardRef68, useId as useId15 } from "react";
16215
+ import { jsx as jsx168, jsxs as jsxs111 } from "react/jsx-runtime";
16216
+ var LegacyTextarea = forwardRef68(
15719
16217
  ({ className, textareaClassName, label, disabled, name, invalid, ...textareaProps }, ref) => {
15720
16218
  const inputId = useId15();
15721
- return /* @__PURE__ */ jsxs109("div", { className: cn("relative", className), children: [
15722
- /* @__PURE__ */ jsx166(
16219
+ return /* @__PURE__ */ jsxs111("div", { className: cn("relative", className), children: [
16220
+ /* @__PURE__ */ jsx168(
15723
16221
  "textarea",
15724
16222
  {
15725
16223
  ref,
@@ -15735,7 +16233,7 @@ var LegacyTextarea = forwardRef67(
15735
16233
  ...textareaProps
15736
16234
  }
15737
16235
  ),
15738
- label && /* @__PURE__ */ jsx166(
16236
+ label && /* @__PURE__ */ jsx168(
15739
16237
  "label",
15740
16238
  {
15741
16239
  htmlFor: inputId,
@@ -15759,8 +16257,8 @@ import { Calendar as Calendar2 } from "lucide-react";
15759
16257
  // src/airbnb-fields/field-trigger/FieldTrigger.tsx
15760
16258
  import * as React63 from "react";
15761
16259
  import { Loader2 as Loader24 } from "lucide-react";
15762
- import { useTranslation as useTranslation37 } from "react-i18next";
15763
- import { Fragment as Fragment18, jsx as jsx167, jsxs as jsxs110 } from "react/jsx-runtime";
16260
+ import { useTranslation as useTranslation39 } from "react-i18next";
16261
+ import { Fragment as Fragment17, jsx as jsx169, jsxs as jsxs112 } from "react/jsx-runtime";
15764
16262
  var AirbnbFieldTrigger = React63.forwardRef(
15765
16263
  ({
15766
16264
  as = "button",
@@ -15792,20 +16290,20 @@ var AirbnbFieldTrigger = React63.forwardRef(
15792
16290
  onKeyDown,
15793
16291
  ...props
15794
16292
  }, ref) => {
15795
- const { t } = useTranslation37();
16293
+ const { t } = useTranslation39();
15796
16294
  const hasValue = Boolean(valueText);
15797
16295
  const isRaised = hasValue || forceFloatingLabel;
15798
16296
  const optionalLabel = optional ? typeof optional === "string" ? optional : t("optional") : void 0;
15799
16297
  const visibleLabelText = labelText ?? label;
15800
16298
  const hasLabelMeta = Boolean(optionalLabel) || Boolean(tooltip);
15801
- const resolvedLabelText = visibleLabelText && hasLabelMeta ? /* @__PURE__ */ jsxs110("span", { className: "inline-flex max-w-full items-center gap-1.5 align-middle", children: [
15802
- /* @__PURE__ */ jsx167("span", { className: "min-w-0 truncate", children: visibleLabelText }),
15803
- optionalLabel && /* @__PURE__ */ jsxs110("span", { className: "shrink-0 text-[12px] relative top-[1px] font-normal leading-4 text-current opacity-70", children: [
16299
+ const resolvedLabelText = visibleLabelText && hasLabelMeta ? /* @__PURE__ */ jsxs112("span", { className: "inline-flex max-w-full items-center gap-1.5 align-middle", children: [
16300
+ /* @__PURE__ */ jsx169("span", { className: "min-w-0 truncate", children: visibleLabelText }),
16301
+ optionalLabel && /* @__PURE__ */ jsxs112("span", { className: "shrink-0 text-[12px] relative top-[1px] font-normal leading-4 text-current opacity-70", children: [
15804
16302
  "(",
15805
16303
  optionalLabel,
15806
16304
  ")"
15807
16305
  ] }),
15808
- tooltip && /* @__PURE__ */ jsx167(
16306
+ tooltip && /* @__PURE__ */ jsx169(
15809
16307
  HelpTooltip,
15810
16308
  {
15811
16309
  content: tooltip,
@@ -15821,9 +16319,9 @@ var AirbnbFieldTrigger = React63.forwardRef(
15821
16319
  const hasInvalidState = Boolean(error);
15822
16320
  const errorMessage = typeof error === "string" ? error : void 0;
15823
16321
  const isBlocked = Boolean(disabled) || Boolean(loading);
15824
- const resolvedTrailingAdornment = loading || trailingAdornment ? /* @__PURE__ */ jsxs110("span", { className: "flex items-center gap-2", children: [
16322
+ const resolvedTrailingAdornment = loading || trailingAdornment ? /* @__PURE__ */ jsxs112("span", { className: "flex items-center gap-2", children: [
15825
16323
  trailingAdornment,
15826
- loading && /* @__PURE__ */ jsx167(
16324
+ loading && /* @__PURE__ */ jsx169(
15827
16325
  Loader24,
15828
16326
  {
15829
16327
  "aria-hidden": "true",
@@ -15839,8 +16337,8 @@ var AirbnbFieldTrigger = React63.forwardRef(
15839
16337
  disabled ? "cursor-not-allowed opacity-50" : loading ? "cursor-progress" : isAirbnbVariant ? "cursor-pointer" : "cursor-text",
15840
16338
  className
15841
16339
  );
15842
- const sharedContent = /* @__PURE__ */ jsxs110(Fragment18, { children: [
15843
- /* @__PURE__ */ jsxs110(
16340
+ const sharedContent = /* @__PURE__ */ jsxs112(Fragment17, { children: [
16341
+ /* @__PURE__ */ jsxs112(
15844
16342
  "span",
15845
16343
  {
15846
16344
  className: cn(
@@ -15849,7 +16347,7 @@ var AirbnbFieldTrigger = React63.forwardRef(
15849
16347
  contentClassName
15850
16348
  ),
15851
16349
  children: [
15852
- /* @__PURE__ */ jsx167(
16350
+ /* @__PURE__ */ jsx169(
15853
16351
  "span",
15854
16352
  {
15855
16353
  id: labelId,
@@ -15862,7 +16360,7 @@ var AirbnbFieldTrigger = React63.forwardRef(
15862
16360
  children: animatedLabel
15863
16361
  }
15864
16362
  ),
15865
- children ? children : hasValue ? /* @__PURE__ */ jsx167(
16363
+ children ? children : hasValue ? /* @__PURE__ */ jsx169(
15866
16364
  "span",
15867
16365
  {
15868
16366
  id: valueId,
@@ -15873,11 +16371,11 @@ var AirbnbFieldTrigger = React63.forwardRef(
15873
16371
  ),
15874
16372
  children: valueText
15875
16373
  }
15876
- ) : /* @__PURE__ */ jsx167("span", { id: helperTextId, className: "sr-only", children: placeholder ?? label })
16374
+ ) : /* @__PURE__ */ jsx169("span", { id: helperTextId, className: "sr-only", children: placeholder ?? label })
15877
16375
  ]
15878
16376
  }
15879
16377
  ),
15880
- resolvedTrailingAdornment && /* @__PURE__ */ jsx167(
16378
+ resolvedTrailingAdornment && /* @__PURE__ */ jsx169(
15881
16379
  "span",
15882
16380
  {
15883
16381
  "aria-hidden": "true",
@@ -15889,9 +16387,9 @@ var AirbnbFieldTrigger = React63.forwardRef(
15889
16387
  }
15890
16388
  )
15891
16389
  ] });
15892
- return /* @__PURE__ */ jsxs110("div", { className: "w-full", children: [
15893
- topLabel && /* @__PURE__ */ jsx167("p", { className: "mb-3 text-[16px] font-semibold leading-5 text-[#222222]", children: topLabel }),
15894
- as === "button" ? /* @__PURE__ */ jsx167(
16390
+ return /* @__PURE__ */ jsxs112("div", { className: "w-full", children: [
16391
+ topLabel && /* @__PURE__ */ jsx169("p", { className: "mb-3 text-[16px] font-semibold leading-5 text-[#222222]", children: topLabel }),
16392
+ as === "button" ? /* @__PURE__ */ jsx169(
15895
16393
  "button",
15896
16394
  {
15897
16395
  id,
@@ -15908,7 +16406,7 @@ var AirbnbFieldTrigger = React63.forwardRef(
15908
16406
  ...props,
15909
16407
  children: sharedContent
15910
16408
  }
15911
- ) : /* @__PURE__ */ jsx167(
16409
+ ) : /* @__PURE__ */ jsx169(
15912
16410
  "div",
15913
16411
  {
15914
16412
  id,
@@ -15925,14 +16423,14 @@ var AirbnbFieldTrigger = React63.forwardRef(
15925
16423
  children: sharedContent
15926
16424
  }
15927
16425
  ),
15928
- errorMessage && !hideErrorMessage && /* @__PURE__ */ jsx167(FieldErrorMessage, { id: errorId, message: errorMessage })
16426
+ errorMessage && !hideErrorMessage && /* @__PURE__ */ jsx169(FieldErrorMessage, { id: errorId, message: errorMessage })
15929
16427
  ] });
15930
16428
  }
15931
16429
  );
15932
16430
  AirbnbFieldTrigger.displayName = "AirbnbFieldTrigger";
15933
16431
 
15934
16432
  // src/airbnb-fields/datepicker/DatePicker.tsx
15935
- import { jsx as jsx168, jsxs as jsxs111 } from "react/jsx-runtime";
16433
+ import { jsx as jsx170, jsxs as jsxs113 } from "react/jsx-runtime";
15936
16434
  var DEFAULT_MIN_DATE = new Date(1920, 0, 1);
15937
16435
  var AirbnbDatePicker = React64.forwardRef(
15938
16436
  ({
@@ -15959,7 +16457,7 @@ var AirbnbDatePicker = React64.forwardRef(
15959
16457
  doneLabel = "Done",
15960
16458
  formatValue = formatDateValue
15961
16459
  }, ref) => {
15962
- const { isMatch: isMobile2 } = useScreenResize(DEVICE.mobileXL);
16460
+ const { isMatch: isMobile3 } = useScreenResize(DEVICE.mobileXL);
15963
16461
  const [isOpen, setIsOpen] = React64.useState(false);
15964
16462
  const triggerId = React64.useId();
15965
16463
  const pickerId = React64.useId();
@@ -16049,8 +16547,8 @@ var AirbnbDatePicker = React64.forwardRef(
16049
16547
  setIsOpen(false);
16050
16548
  }
16051
16549
  }, [isBlocked]);
16052
- return /* @__PURE__ */ jsxs111("div", { className: cn("relative w-full max-w-[var(--max-field-width)]", className), children: [
16053
- name && /* @__PURE__ */ jsx168(
16550
+ return /* @__PURE__ */ jsxs113("div", { className: cn("relative w-full max-w-[var(--max-field-width)]", className), children: [
16551
+ name && /* @__PURE__ */ jsx170(
16054
16552
  "input",
16055
16553
  {
16056
16554
  type: "hidden",
@@ -16058,7 +16556,7 @@ var AirbnbDatePicker = React64.forwardRef(
16058
16556
  value: resolvedValue ? formatDateInputValue(resolvedValue) : ""
16059
16557
  }
16060
16558
  ),
16061
- /* @__PURE__ */ jsx168(
16559
+ /* @__PURE__ */ jsx170(
16062
16560
  AirbnbFieldTrigger,
16063
16561
  {
16064
16562
  id: triggerId,
@@ -16085,15 +16583,15 @@ var AirbnbDatePicker = React64.forwardRef(
16085
16583
  onClick: handleTriggerClick,
16086
16584
  onKeyDown: handleTriggerKeyDown,
16087
16585
  onBlur,
16088
- trailingAdornment: /* @__PURE__ */ jsx168(Calendar2, { className: "h-5 w-5 text-[#1F1F1B]", strokeWidth: 2 })
16586
+ trailingAdornment: /* @__PURE__ */ jsx170(Calendar2, { className: "h-5 w-5 text-[#1F1F1B]", strokeWidth: 2 })
16089
16587
  }
16090
16588
  ),
16091
- /* @__PURE__ */ jsx168(
16589
+ /* @__PURE__ */ jsx170(
16092
16590
  AirbnbDatePickerContent,
16093
16591
  {
16094
16592
  baseId: pickerId,
16095
16593
  open: isOpen,
16096
- isMobile: isMobile2,
16594
+ isMobile: isMobile3,
16097
16595
  label,
16098
16596
  title: mobileTitle ?? label,
16099
16597
  doneLabel,
@@ -16123,7 +16621,7 @@ AirbnbDatePicker.displayName = "AirbnbDatePicker";
16123
16621
 
16124
16622
  // src/airbnb-fields/input/Input.tsx
16125
16623
  import * as React65 from "react";
16126
- import { jsx as jsx169 } from "react/jsx-runtime";
16624
+ import { jsx as jsx171 } from "react/jsx-runtime";
16127
16625
  var getInputValue = (value) => value != null ? String(value) : "";
16128
16626
  var AirbnbInput = React65.forwardRef(
16129
16627
  ({
@@ -16206,7 +16704,7 @@ var AirbnbInput = React65.forwardRef(
16206
16704
  setIsFocused(false);
16207
16705
  onBlur?.(event);
16208
16706
  };
16209
- return /* @__PURE__ */ jsx169("div", { className: cn("w-full max-w-[var(--max-field-width)]", wrapperClassName), children: /* @__PURE__ */ jsx169(
16707
+ return /* @__PURE__ */ jsx171("div", { className: cn("w-full max-w-[var(--max-field-width)]", wrapperClassName), children: /* @__PURE__ */ jsx171(
16210
16708
  AirbnbFieldTrigger,
16211
16709
  {
16212
16710
  as: "div",
@@ -16238,7 +16736,7 @@ var AirbnbInput = React65.forwardRef(
16238
16736
  forceFloatingLabel: shouldShowLabel,
16239
16737
  forceLabelText: hasLabelMeta,
16240
16738
  hideErrorMessage: !renderErrorMessage,
16241
- children: /* @__PURE__ */ jsx169(
16739
+ children: /* @__PURE__ */ jsx171(
16242
16740
  "input",
16243
16741
  {
16244
16742
  ...props,
@@ -16281,7 +16779,7 @@ import { ChevronDown as ChevronDown5 } from "lucide-react";
16281
16779
  import * as React70 from "react";
16282
16780
 
16283
16781
  // src/airbnb-fields/select/SelectDesktopMenu.tsx
16284
- import { jsx as jsx170, jsxs as jsxs112 } from "react/jsx-runtime";
16782
+ import { jsx as jsx172, jsxs as jsxs114 } from "react/jsx-runtime";
16285
16783
  function AirbnbSelectDesktopMenu({
16286
16784
  id,
16287
16785
  options,
@@ -16300,7 +16798,7 @@ function AirbnbSelectDesktopMenu({
16300
16798
  noOptionsMessage
16301
16799
  }) {
16302
16800
  const emptyMessage = noOptionsMessage?.();
16303
- return /* @__PURE__ */ jsxs112(
16801
+ return /* @__PURE__ */ jsxs114(
16304
16802
  "div",
16305
16803
  {
16306
16804
  id,
@@ -16313,12 +16811,12 @@ function AirbnbSelectDesktopMenu({
16313
16811
  onKeyDown,
16314
16812
  className: cn("max-h-[280px] overflow-y-auto p-2 outline-none", menuClassName),
16315
16813
  children: [
16316
- options.length === 0 && emptyMessage ? /* @__PURE__ */ jsx170("div", { className: "px-4 py-3 text-base leading-6 text-[#6C6C6C]", children: emptyMessage }) : null,
16814
+ options.length === 0 && emptyMessage ? /* @__PURE__ */ jsx172("div", { className: "px-4 py-3 text-base leading-6 text-[#6C6C6C]", children: emptyMessage }) : null,
16317
16815
  options.map((option, index) => {
16318
16816
  const isSelected = selectedValue?.value === option.value;
16319
16817
  const isHighlighted = index === highlightedIndex;
16320
16818
  const optionKey = `${String(option.value)}-${index}`;
16321
- return /* @__PURE__ */ jsx170(
16819
+ return /* @__PURE__ */ jsx172(
16322
16820
  "button",
16323
16821
  {
16324
16822
  id: getOptionId2(index),
@@ -16350,7 +16848,7 @@ function AirbnbSelectDesktopMenu({
16350
16848
  }
16351
16849
 
16352
16850
  // src/airbnb-fields/select/SelectDesktopContent.tsx
16353
- import { jsx as jsx171 } from "react/jsx-runtime";
16851
+ import { jsx as jsx173 } from "react/jsx-runtime";
16354
16852
  function AirbnbSelectDesktopContent({
16355
16853
  isOpen,
16356
16854
  listboxId,
@@ -16371,14 +16869,14 @@ function AirbnbSelectDesktopContent({
16371
16869
  noOptionsMessage
16372
16870
  }) {
16373
16871
  if (!isOpen) return null;
16374
- return /* @__PURE__ */ jsx171(
16872
+ return /* @__PURE__ */ jsx173(
16375
16873
  "div",
16376
16874
  {
16377
16875
  className: cn(
16378
16876
  "absolute left-0 right-0 top-[calc(100%+8px)] z-20 overflow-hidden rounded-[20px] border border-[#DEDAD2] bg-white shadow-[0_14px_30px_rgba(18,18,18,0.08)]",
16379
16877
  dropdownClassName
16380
16878
  ),
16381
- children: /* @__PURE__ */ jsx171(
16879
+ children: /* @__PURE__ */ jsx173(
16382
16880
  AirbnbSelectDesktopMenu,
16383
16881
  {
16384
16882
  id: listboxId,
@@ -16476,7 +16974,7 @@ function getMobileOptionStyles(index, scrollTop) {
16476
16974
  }
16477
16975
 
16478
16976
  // src/airbnb-fields/select/SelectMobileWheel.tsx
16479
- import { jsx as jsx172, jsxs as jsxs113 } from "react/jsx-runtime";
16977
+ import { jsx as jsx174, jsxs as jsxs115 } from "react/jsx-runtime";
16480
16978
  function AirbnbSelectMobileWheel({
16481
16979
  id,
16482
16980
  options,
@@ -16495,7 +16993,7 @@ function AirbnbSelectMobileWheel({
16495
16993
  }) {
16496
16994
  const spacerHeight2 = getWheelSpacerHeight();
16497
16995
  const emptyMessage = noOptionsMessage?.();
16498
- return /* @__PURE__ */ jsxs113(
16996
+ return /* @__PURE__ */ jsxs115(
16499
16997
  "div",
16500
16998
  {
16501
16999
  id,
@@ -16507,10 +17005,10 @@ function AirbnbSelectMobileWheel({
16507
17005
  onKeyDown,
16508
17006
  className: cn("relative overflow-hidden outline-none", menuClassName),
16509
17007
  children: [
16510
- options.length === 0 && emptyMessage ? /* @__PURE__ */ jsx172("div", { className: "flex min-h-[160px] items-center justify-center px-4 text-center text-base leading-6 text-[#6C6C6C]", children: emptyMessage }) : null,
16511
- /* @__PURE__ */ jsx172("div", { className: "pointer-events-none absolute inset-x-0 top-0 h-16 bg-gradient-to-b from-white via-white/80 to-transparent" }),
16512
- /* @__PURE__ */ jsx172("div", { className: "pointer-events-none absolute inset-x-0 bottom-0 h-16 bg-gradient-to-t from-white via-white/80 to-transparent" }),
16513
- /* @__PURE__ */ jsx172(
17008
+ options.length === 0 && emptyMessage ? /* @__PURE__ */ jsx174("div", { className: "flex min-h-[160px] items-center justify-center px-4 text-center text-base leading-6 text-[#6C6C6C]", children: emptyMessage }) : null,
17009
+ /* @__PURE__ */ jsx174("div", { className: "pointer-events-none absolute inset-x-0 top-0 h-16 bg-gradient-to-b from-white via-white/80 to-transparent" }),
17010
+ /* @__PURE__ */ jsx174("div", { className: "pointer-events-none absolute inset-x-0 bottom-0 h-16 bg-gradient-to-t from-white via-white/80 to-transparent" }),
17011
+ /* @__PURE__ */ jsx174(
16514
17012
  "div",
16515
17013
  {
16516
17014
  "aria-hidden": true,
@@ -16520,7 +17018,7 @@ function AirbnbSelectMobileWheel({
16520
17018
  )
16521
17019
  }
16522
17020
  ),
16523
- /* @__PURE__ */ jsxs113(
17021
+ /* @__PURE__ */ jsxs115(
16524
17022
  "div",
16525
17023
  {
16526
17024
  ref: listRef,
@@ -16535,11 +17033,11 @@ function AirbnbSelectMobileWheel({
16535
17033
  WebkitOverflowScrolling: "touch"
16536
17034
  },
16537
17035
  children: [
16538
- /* @__PURE__ */ jsx172("div", { style: { height: `${spacerHeight2}px` } }),
17036
+ /* @__PURE__ */ jsx174("div", { style: { height: `${spacerHeight2}px` } }),
16539
17037
  options.map((option, index) => {
16540
17038
  const { distance, style } = getMobileOptionStyles(index, scrollTop);
16541
17039
  const optionKey = `${String(option.value)}-${index}`;
16542
- return /* @__PURE__ */ jsx172(
17040
+ return /* @__PURE__ */ jsx174(
16543
17041
  "button",
16544
17042
  {
16545
17043
  id: getOptionId2(index),
@@ -16560,7 +17058,7 @@ function AirbnbSelectMobileWheel({
16560
17058
  optionKey
16561
17059
  );
16562
17060
  }),
16563
- /* @__PURE__ */ jsx172("div", { style: { height: `${spacerHeight2}px` } })
17061
+ /* @__PURE__ */ jsx174("div", { style: { height: `${spacerHeight2}px` } })
16564
17062
  ]
16565
17063
  }
16566
17064
  )
@@ -16570,7 +17068,7 @@ function AirbnbSelectMobileWheel({
16570
17068
  }
16571
17069
 
16572
17070
  // src/airbnb-fields/select/SelectMobileContent.tsx
16573
- import { jsx as jsx173, jsxs as jsxs114 } from "react/jsx-runtime";
17071
+ import { jsx as jsx175, jsxs as jsxs116 } from "react/jsx-runtime";
16574
17072
  function AirbnbSelectMobileContent({
16575
17073
  open,
16576
17074
  onOpenChange,
@@ -16594,11 +17092,11 @@ function AirbnbSelectMobileContent({
16594
17092
  getOptionId: getOptionId2,
16595
17093
  noOptionsMessage
16596
17094
  }) {
16597
- return /* @__PURE__ */ jsx173(Drawer, { open, onOpenChange, children: /* @__PURE__ */ jsxs114(DrawerContent, { onClose, lockScroll: false, children: [
16598
- /* @__PURE__ */ jsx173(DrawerTitle, { className: "sr-only", children: mobileTitle ?? label }),
16599
- /* @__PURE__ */ jsx173(DrawerDescription, { className: "sr-only", children: label }),
16600
- /* @__PURE__ */ jsxs114("div", { className: "px-6 pb-4 pt-1", children: [
16601
- /* @__PURE__ */ jsx173(
17095
+ return /* @__PURE__ */ jsx175(Drawer, { open, onOpenChange, children: /* @__PURE__ */ jsxs116(DrawerContent, { onClose, lockScroll: false, children: [
17096
+ /* @__PURE__ */ jsx175(DrawerTitle, { className: "sr-only", children: mobileTitle ?? label }),
17097
+ /* @__PURE__ */ jsx175(DrawerDescription, { className: "sr-only", children: label }),
17098
+ /* @__PURE__ */ jsxs116("div", { className: "px-6 pb-4 pt-1", children: [
17099
+ /* @__PURE__ */ jsx175(
16602
17100
  AirbnbSelectMobileWheel,
16603
17101
  {
16604
17102
  id: listboxId,
@@ -16617,7 +17115,7 @@ function AirbnbSelectMobileContent({
16617
17115
  noOptionsMessage
16618
17116
  }
16619
17117
  ),
16620
- /* @__PURE__ */ jsx173(Button, { type: "button", onClick: onDone, className: "mt-4 h-12 mb-8 w-full", children: doneLabel })
17118
+ /* @__PURE__ */ jsx175(Button, { type: "button", onClick: onDone, className: "mt-4 h-12 mb-8 w-full", children: doneLabel })
16621
17119
  ] })
16622
17120
  ] }) });
16623
17121
  }
@@ -16625,7 +17123,7 @@ function AirbnbSelectMobileContent({
16625
17123
  // src/airbnb-fields/select/SelectTrigger.tsx
16626
17124
  import * as React66 from "react";
16627
17125
  import { ChevronDown as ChevronDown4 } from "lucide-react";
16628
- import { jsx as jsx174 } from "react/jsx-runtime";
17126
+ import { jsx as jsx176 } from "react/jsx-runtime";
16629
17127
  var AirbnbSelectTrigger = React66.forwardRef(
16630
17128
  ({
16631
17129
  id,
@@ -16651,7 +17149,7 @@ var AirbnbSelectTrigger = React66.forwardRef(
16651
17149
  onKeyDown,
16652
17150
  onBlur
16653
17151
  }, ref) => {
16654
- return /* @__PURE__ */ jsx174(
17152
+ return /* @__PURE__ */ jsx176(
16655
17153
  AirbnbFieldTrigger,
16656
17154
  {
16657
17155
  id,
@@ -16680,7 +17178,7 @@ var AirbnbSelectTrigger = React66.forwardRef(
16680
17178
  onClick,
16681
17179
  onKeyDown,
16682
17180
  onBlur,
16683
- trailingAdornment: /* @__PURE__ */ jsx174(
17181
+ trailingAdornment: /* @__PURE__ */ jsx176(
16684
17182
  ChevronDown4,
16685
17183
  {
16686
17184
  className: open ? "h-6 w-6 rotate-180 text-[#1F1F1B] transition-transform" : "h-6 w-6 text-[#1F1F1B] transition-transform"
@@ -16695,7 +17193,7 @@ AirbnbSelectTrigger.displayName = "AirbnbSelectTrigger";
16695
17193
  // src/airbnb-fields/select/useDesktopSelect.ts
16696
17194
  import * as React67 from "react";
16697
17195
  function useDesktopSelect({
16698
- isMobile: isMobile2,
17196
+ isMobile: isMobile3,
16699
17197
  isOpen,
16700
17198
  options,
16701
17199
  value,
@@ -16708,7 +17206,7 @@ function useDesktopSelect({
16708
17206
  const optionRefs = React67.useRef([]);
16709
17207
  const selectedIndex = getOptionIndex2(options, value);
16710
17208
  React67.useEffect(() => {
16711
- if (!isOpen || isMobile2) return;
17209
+ if (!isOpen || isMobile3) return;
16712
17210
  setHighlightedIndex((currentIndex) => {
16713
17211
  if (currentIndex >= 0) {
16714
17212
  return currentIndex;
@@ -16721,13 +17219,13 @@ function useDesktopSelect({
16721
17219
  return () => {
16722
17220
  window.cancelAnimationFrame(frameId);
16723
17221
  };
16724
- }, [isMobile2, isOpen, options, selectedIndex]);
17222
+ }, [isMobile3, isOpen, options, selectedIndex]);
16725
17223
  React67.useEffect(() => {
16726
- if (!isOpen || isMobile2 || highlightedIndex < 0) return;
17224
+ if (!isOpen || isMobile3 || highlightedIndex < 0) return;
16727
17225
  optionRefs.current[highlightedIndex]?.scrollIntoView({
16728
17226
  block: "nearest"
16729
17227
  });
16730
- }, [highlightedIndex, isMobile2, isOpen]);
17228
+ }, [highlightedIndex, isMobile3, isOpen]);
16731
17229
  React67.useEffect(() => {
16732
17230
  if (isOpen) return;
16733
17231
  setHighlightedIndex(-1);
@@ -16845,7 +17343,7 @@ function useDesktopSelect({
16845
17343
 
16846
17344
  // src/airbnb-fields/select/useMobileSelectWheel.ts
16847
17345
  import * as React68 from "react";
16848
- function useMobileSelectWheel({ isMobile: isMobile2, isOpen, options, value, disabled }) {
17346
+ function useMobileSelectWheel({ isMobile: isMobile3, isOpen, options, value, disabled }) {
16849
17347
  const [pendingValue, setPendingValue] = React68.useState(
16850
17348
  value ?? null
16851
17349
  );
@@ -16900,14 +17398,14 @@ function useMobileSelectWheel({ isMobile: isMobile2, isOpen, options, value, dis
16900
17398
  setPendingValue(value ?? null);
16901
17399
  }, [value]);
16902
17400
  React68.useLayoutEffect(() => {
16903
- if (!isMobile2 || !isOpen) return;
17401
+ if (!isMobile3 || !isOpen) return;
16904
17402
  const frameId = window.requestAnimationFrame(() => {
16905
17403
  syncScrollPosition(value ?? null, "instant");
16906
17404
  });
16907
17405
  return () => {
16908
17406
  window.cancelAnimationFrame(frameId);
16909
17407
  };
16910
- }, [isMobile2, isOpen, syncScrollPosition, value]);
17408
+ }, [isMobile3, isOpen, syncScrollPosition, value]);
16911
17409
  const settleScroll = React68.useCallback(() => {
16912
17410
  if (!mobileListRef.current) return;
16913
17411
  const nextIndex = Math.round(mobileListRef.current.scrollTop / MOBILE_OPTION_HEIGHT);
@@ -17042,7 +17540,7 @@ function useSelectIds2({ name, hasValue, error, hideErrorMessage }) {
17042
17540
  }
17043
17541
 
17044
17542
  // src/airbnb-fields/select/Select.tsx
17045
- import { jsx as jsx175, jsxs as jsxs115 } from "react/jsx-runtime";
17543
+ import { jsx as jsx177, jsxs as jsxs117 } from "react/jsx-runtime";
17046
17544
  var AirbnbSelect = React70.forwardRef(function AirbnbSelect2({
17047
17545
  options = [],
17048
17546
  value,
@@ -17069,7 +17567,7 @@ var AirbnbSelect = React70.forwardRef(function AirbnbSelect2({
17069
17567
  name,
17070
17568
  noOptionsMessage
17071
17569
  }, ref) {
17072
- const { isMatch: isMobile2 } = useScreenResize(DEVICE.mobileXL);
17570
+ const { isMatch: isMobile3 } = useScreenResize(DEVICE.mobileXL);
17073
17571
  const [isOpen, setIsOpen] = React70.useState(false);
17074
17572
  const containerRef = React70.useRef(null);
17075
17573
  const hasValue = Boolean(value);
@@ -17100,7 +17598,7 @@ var AirbnbSelect = React70.forwardRef(function AirbnbSelect2({
17100
17598
  moveByStep,
17101
17599
  moveToBoundary
17102
17600
  } = useMobileSelectWheel({
17103
- isMobile: isMobile2,
17601
+ isMobile: isMobile3,
17104
17602
  isOpen,
17105
17603
  options,
17106
17604
  value,
@@ -17117,7 +17615,7 @@ var AirbnbSelect = React70.forwardRef(function AirbnbSelect2({
17117
17615
  handleMenuKeyDown,
17118
17616
  handleTriggerKeyDown
17119
17617
  } = useDesktopSelect({
17120
- isMobile: isMobile2,
17618
+ isMobile: isMobile3,
17121
17619
  isOpen,
17122
17620
  options,
17123
17621
  value,
@@ -17130,7 +17628,7 @@ var AirbnbSelect = React70.forwardRef(function AirbnbSelect2({
17130
17628
  useOutsideClick({
17131
17629
  elementRef: containerRef,
17132
17630
  onOutsideClick: () => setIsOpen(false),
17133
- isDisabled: !isOpen || isMobile2
17631
+ isDisabled: !isOpen || isMobile3
17134
17632
  });
17135
17633
  React70.useEffect(() => {
17136
17634
  if (isBlocked) {
@@ -17173,14 +17671,14 @@ var AirbnbSelect = React70.forwardRef(function AirbnbSelect2({
17173
17671
  if (isBlocked) return;
17174
17672
  setIsOpen((prev) => {
17175
17673
  const nextOpen = !prev;
17176
- if (isMobile2) {
17674
+ if (isMobile3) {
17177
17675
  syncPendingValue(value ?? null);
17178
17676
  }
17179
17677
  return nextOpen;
17180
17678
  });
17181
- }, [isBlocked, isMobile2, syncPendingValue, value]);
17679
+ }, [isBlocked, isMobile3, syncPendingValue, value]);
17182
17680
  const handleRootTriggerKeyDown = (event) => {
17183
- if (isMobile2) {
17681
+ if (isMobile3) {
17184
17682
  if (isBlocked) return;
17185
17683
  if (event.key === "ArrowDown" || event.key === "ArrowUp" || event.key === "Enter" || event.key === " ") {
17186
17684
  event.preventDefault();
@@ -17222,13 +17720,13 @@ var AirbnbSelect = React70.forwardRef(function AirbnbSelect2({
17222
17720
  handleMobileOpenChange(false);
17223
17721
  }
17224
17722
  };
17225
- return /* @__PURE__ */ jsxs115(
17723
+ return /* @__PURE__ */ jsxs117(
17226
17724
  "div",
17227
17725
  {
17228
17726
  ref: containerRef,
17229
17727
  className: cn("relative w-full max-w-[var(--max-field-width)]", className),
17230
17728
  children: [
17231
- name && /* @__PURE__ */ jsx175("input", { type: "hidden", name, value: value ? String(value.value) : "" }),
17729
+ name && /* @__PURE__ */ jsx177("input", { type: "hidden", name, value: value ? String(value.value) : "" }),
17232
17730
  renderTrigger ? renderTrigger({
17233
17731
  id: triggerId,
17234
17732
  open: isOpen,
@@ -17250,7 +17748,7 @@ var AirbnbSelect = React70.forwardRef(function AirbnbSelect2({
17250
17748
  onClick: handleTriggerClick,
17251
17749
  onKeyDown: handleRootTriggerKeyDown,
17252
17750
  onBlur
17253
- }) : /* @__PURE__ */ jsx175(
17751
+ }) : /* @__PURE__ */ jsx177(
17254
17752
  AirbnbSelectTrigger,
17255
17753
  {
17256
17754
  id: triggerId,
@@ -17278,7 +17776,7 @@ var AirbnbSelect = React70.forwardRef(function AirbnbSelect2({
17278
17776
  onBlur
17279
17777
  }
17280
17778
  ),
17281
- isMobile2 ? /* @__PURE__ */ jsx175(
17779
+ isMobile3 ? /* @__PURE__ */ jsx177(
17282
17780
  AirbnbSelectMobileContent,
17283
17781
  {
17284
17782
  open: isOpen,
@@ -17303,7 +17801,7 @@ var AirbnbSelect = React70.forwardRef(function AirbnbSelect2({
17303
17801
  getOptionId: getOptionId2,
17304
17802
  noOptionsMessage
17305
17803
  }
17306
- ) : /* @__PURE__ */ jsx175(
17804
+ ) : /* @__PURE__ */ jsx177(
17307
17805
  AirbnbSelectDesktopContent,
17308
17806
  {
17309
17807
  isOpen,
@@ -17337,7 +17835,7 @@ var AirbnbSelect = React70.forwardRef(function AirbnbSelect2({
17337
17835
  });
17338
17836
 
17339
17837
  // src/airbnb-fields/phone-field/PhoneField.tsx
17340
- import { jsx as jsx176, jsxs as jsxs116 } from "react/jsx-runtime";
17838
+ import { jsx as jsx178, jsxs as jsxs118 } from "react/jsx-runtime";
17341
17839
  function formatPhoneCodeOptionLabel(option) {
17342
17840
  const label = String(option.label);
17343
17841
  const value = String(option.value);
@@ -17384,9 +17882,9 @@ var AirbnbPhoneField = React71.forwardRef(
17384
17882
  const hasInvalidState = Boolean(error) || Boolean(invalid);
17385
17883
  const isBlocked = Boolean(disabled) || Boolean(loading);
17386
17884
  const isCodeBlocked = isBlocked || Boolean(codeReadOnly);
17387
- return /* @__PURE__ */ jsxs116("div", { className: cn("w-full max-w-[var(--max-field-width)]", className), children: [
17388
- name && /* @__PURE__ */ jsx176("input", { type: "hidden", name, value: combinedValue, disabled }),
17389
- codeName && /* @__PURE__ */ jsx176(
17885
+ return /* @__PURE__ */ jsxs118("div", { className: cn("w-full max-w-[var(--max-field-width)]", className), children: [
17886
+ name && /* @__PURE__ */ jsx178("input", { type: "hidden", name, value: combinedValue, disabled }),
17887
+ codeName && /* @__PURE__ */ jsx178(
17390
17888
  "input",
17391
17889
  {
17392
17890
  type: "hidden",
@@ -17395,7 +17893,7 @@ var AirbnbPhoneField = React71.forwardRef(
17395
17893
  disabled
17396
17894
  }
17397
17895
  ),
17398
- numberName && /* @__PURE__ */ jsx176(
17896
+ numberName && /* @__PURE__ */ jsx178(
17399
17897
  "input",
17400
17898
  {
17401
17899
  type: "hidden",
@@ -17404,7 +17902,7 @@ var AirbnbPhoneField = React71.forwardRef(
17404
17902
  disabled
17405
17903
  }
17406
17904
  ),
17407
- topLabel && /* @__PURE__ */ jsx176(
17905
+ topLabel && /* @__PURE__ */ jsx178(
17408
17906
  "label",
17409
17907
  {
17410
17908
  htmlFor: inputId,
@@ -17412,8 +17910,8 @@ var AirbnbPhoneField = React71.forwardRef(
17412
17910
  children: topLabel
17413
17911
  }
17414
17912
  ),
17415
- /* @__PURE__ */ jsxs116("div", { className: "flex items-stretch", children: [
17416
- /* @__PURE__ */ jsx176(
17913
+ /* @__PURE__ */ jsxs118("div", { className: "flex items-stretch", children: [
17914
+ /* @__PURE__ */ jsx178(
17417
17915
  AirbnbSelect,
17418
17916
  {
17419
17917
  ref,
@@ -17444,7 +17942,7 @@ var AirbnbPhoneField = React71.forwardRef(
17444
17942
  onClick,
17445
17943
  onKeyDown,
17446
17944
  valueLabel
17447
- }) => /* @__PURE__ */ jsxs116(
17945
+ }) => /* @__PURE__ */ jsxs118(
17448
17946
  "button",
17449
17947
  {
17450
17948
  id,
@@ -17466,8 +17964,8 @@ var AirbnbPhoneField = React71.forwardRef(
17466
17964
  triggerDisabled ? "cursor-not-allowed opacity-50" : triggerLoading ? "cursor-progress" : "cursor-pointer"
17467
17965
  ),
17468
17966
  children: [
17469
- /* @__PURE__ */ jsx176("span", { children: valueLabel ?? codePlaceholder }),
17470
- /* @__PURE__ */ jsx176(
17967
+ /* @__PURE__ */ jsx178("span", { children: valueLabel ?? codePlaceholder }),
17968
+ /* @__PURE__ */ jsx178(
17471
17969
  ChevronDown5,
17472
17970
  {
17473
17971
  className: cn("h-5 w-5 transition-transform", open ? "rotate-180" : ""),
@@ -17479,7 +17977,7 @@ var AirbnbPhoneField = React71.forwardRef(
17479
17977
  )
17480
17978
  }
17481
17979
  ),
17482
- /* @__PURE__ */ jsx176(
17980
+ /* @__PURE__ */ jsx178(
17483
17981
  AirbnbInput,
17484
17982
  {
17485
17983
  id: inputId,
@@ -17511,7 +18009,7 @@ var AirbnbPhoneField = React71.forwardRef(
17511
18009
  }
17512
18010
  )
17513
18011
  ] }),
17514
- error && /* @__PURE__ */ jsx176(FieldErrorMessage, { message: error })
18012
+ error && /* @__PURE__ */ jsx178(FieldErrorMessage, { message: error })
17515
18013
  ] });
17516
18014
  }
17517
18015
  );
@@ -17521,8 +18019,8 @@ AirbnbPhoneField.displayName = "AirbnbPhoneField";
17521
18019
  import * as React72 from "react";
17522
18020
  import { ChevronDown as ChevronDown6, Search as Search3 } from "lucide-react";
17523
18021
  import { useVirtualizer as useVirtualizer3 } from "@tanstack/react-virtual";
17524
- import { useCallback as useCallback47 } from "react";
17525
- import { jsx as jsx177, jsxs as jsxs117 } from "react/jsx-runtime";
18022
+ import { useCallback as useCallback49 } from "react";
18023
+ import { jsx as jsx179, jsxs as jsxs119 } from "react/jsx-runtime";
17526
18024
  var ROW_HEIGHT = 48;
17527
18025
  var DESKTOP_LIST_HEIGHT = 280;
17528
18026
  var MOBILE_LIST_HEIGHT = 420;
@@ -17562,7 +18060,7 @@ var AirbnbSearchableSelectInternal = ({
17562
18060
  noOptionsMessage,
17563
18061
  loadingMessage
17564
18062
  }, ref) => {
17565
- const { isMatch: isMobile2 } = useScreenResize(DEVICE.mobileXL);
18063
+ const { isMatch: isMobile3 } = useScreenResize(DEVICE.mobileXL);
17566
18064
  const reactId = React72.useId();
17567
18065
  const [open, setOpen] = React72.useState(false);
17568
18066
  const [internalSearchValue, setInternalSearchValue] = React72.useState("");
@@ -17597,10 +18095,10 @@ var AirbnbSearchableSelectInternal = ({
17597
18095
  useOutsideClick({
17598
18096
  elementRef: containerRef,
17599
18097
  onOutsideClick: () => closeSelect(),
17600
- isDisabled: !open || isMobile2
18098
+ isDisabled: !open || isMobile3
17601
18099
  });
17602
18100
  const handleOnOpenChange = useEvent(onOpenChange);
17603
- const setSelectOpen = useCallback47(
18101
+ const setSelectOpen = useCallback49(
17604
18102
  (nextOpen, options2) => {
17605
18103
  setOpen(nextOpen);
17606
18104
  handleOnOpenChange?.(nextOpen);
@@ -17691,7 +18189,7 @@ var AirbnbSearchableSelectInternal = ({
17691
18189
  }
17692
18190
  }
17693
18191
  }
17694
- const content = /* @__PURE__ */ jsx177(
18192
+ const content = /* @__PURE__ */ jsx179(
17695
18193
  AirbnbSearchableSelectContent,
17696
18194
  {
17697
18195
  inputId: searchInputId,
@@ -17710,7 +18208,7 @@ var AirbnbSearchableSelectInternal = ({
17710
18208
  menuClassName,
17711
18209
  noOptionsMessage,
17712
18210
  loadingMessage,
17713
- height: isMobile2 ? MOBILE_LIST_HEIGHT : DESKTOP_LIST_HEIGHT,
18211
+ height: isMobile3 ? MOBILE_LIST_HEIGHT : DESKTOP_LIST_HEIGHT,
17714
18212
  idPrefix: reactId,
17715
18213
  onSearchChange: handleSearchChange,
17716
18214
  onSearchKeyDown: handleSearchKeyDown,
@@ -17719,9 +18217,9 @@ var AirbnbSearchableSelectInternal = ({
17719
18217
  }
17720
18218
  );
17721
18219
  React72.useImperativeHandle(ref, () => triggerRef.current, []);
17722
- return /* @__PURE__ */ jsxs117("div", { ref: containerRef, className: cn("relative w-full max-w-[425px]", className), children: [
17723
- name && /* @__PURE__ */ jsx177("input", { type: "hidden", name, value: value ? String(value.value) : "" }),
17724
- /* @__PURE__ */ jsx177(
18220
+ return /* @__PURE__ */ jsxs119("div", { ref: containerRef, className: cn("relative w-full max-w-[425px]", className), children: [
18221
+ name && /* @__PURE__ */ jsx179("input", { type: "hidden", name, value: value ? String(value.value) : "" }),
18222
+ /* @__PURE__ */ jsx179(
17725
18223
  AirbnbFieldTrigger,
17726
18224
  {
17727
18225
  id: `${reactId}-trigger`,
@@ -17756,7 +18254,7 @@ var AirbnbSearchableSelectInternal = ({
17756
18254
  },
17757
18255
  onKeyDown: handleTriggerKeyDown,
17758
18256
  onBlur,
17759
- trailingAdornment: /* @__PURE__ */ jsx177(
18257
+ trailingAdornment: /* @__PURE__ */ jsx179(
17760
18258
  ChevronDown6,
17761
18259
  {
17762
18260
  className: cn(
@@ -17767,7 +18265,7 @@ var AirbnbSearchableSelectInternal = ({
17767
18265
  )
17768
18266
  }
17769
18267
  ),
17770
- isMobile2 ? /* @__PURE__ */ jsx177(
18268
+ isMobile3 ? /* @__PURE__ */ jsx179(
17771
18269
  Drawer,
17772
18270
  {
17773
18271
  open,
@@ -17779,13 +18277,13 @@ var AirbnbSearchableSelectInternal = ({
17779
18277
  }
17780
18278
  closeSelect();
17781
18279
  },
17782
- children: /* @__PURE__ */ jsxs117(DrawerContent, { onClose: closeSelect, lockScroll: false, children: [
17783
- /* @__PURE__ */ jsx177(DrawerTitle, { className: "sr-only", children: mobileTitle ?? label }),
17784
- /* @__PURE__ */ jsx177(DrawerDescription, { className: "sr-only", children: label }),
17785
- /* @__PURE__ */ jsx177("div", { className: "px-5 pb-5 pt-1", children: content })
18280
+ children: /* @__PURE__ */ jsxs119(DrawerContent, { onClose: closeSelect, lockScroll: false, children: [
18281
+ /* @__PURE__ */ jsx179(DrawerTitle, { className: "sr-only", children: mobileTitle ?? label }),
18282
+ /* @__PURE__ */ jsx179(DrawerDescription, { className: "sr-only", children: label }),
18283
+ /* @__PURE__ */ jsx179("div", { className: "px-5 pb-5 pt-1", children: content })
17786
18284
  ] })
17787
18285
  }
17788
- ) : open ? /* @__PURE__ */ jsx177(
18286
+ ) : open ? /* @__PURE__ */ jsx179(
17789
18287
  "div",
17790
18288
  {
17791
18289
  className: cn(
@@ -17852,16 +18350,16 @@ function AirbnbSearchableSelectContent({
17852
18350
  virtualizer.scrollToIndex(highlightedIndex, { align: "auto" });
17853
18351
  }
17854
18352
  }, [highlightedIndex, virtualizer]);
17855
- return /* @__PURE__ */ jsxs117("div", { className: "p-2", children: [
17856
- /* @__PURE__ */ jsxs117("div", { className: "relative mb-2", children: [
17857
- /* @__PURE__ */ jsx177(
18353
+ return /* @__PURE__ */ jsxs119("div", { className: "p-2", children: [
18354
+ /* @__PURE__ */ jsxs119("div", { className: "relative mb-2", children: [
18355
+ /* @__PURE__ */ jsx179(
17858
18356
  Search3,
17859
18357
  {
17860
18358
  "aria-hidden": "true",
17861
18359
  className: "absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 text-[#9696B9]"
17862
18360
  }
17863
18361
  ),
17864
- /* @__PURE__ */ jsx177(
18362
+ /* @__PURE__ */ jsx179(
17865
18363
  "input",
17866
18364
  {
17867
18365
  id: inputId,
@@ -17880,7 +18378,7 @@ function AirbnbSearchableSelectContent({
17880
18378
  }
17881
18379
  )
17882
18380
  ] }),
17883
- loading && options.length === 0 ? /* @__PURE__ */ jsx177("div", { className: "px-4 py-5 text-center text-base leading-6 text-[#6C6C6C]", children: loadingText }) : options.length === 0 ? /* @__PURE__ */ jsx177("div", { className: "px-4 py-5 text-center text-base leading-6 text-[#6C6C6C]", children: emptyMessage }) : /* @__PURE__ */ jsx177(
18381
+ loading && options.length === 0 ? /* @__PURE__ */ jsx179("div", { className: "px-4 py-5 text-center text-base leading-6 text-[#6C6C6C]", children: loadingText }) : options.length === 0 ? /* @__PURE__ */ jsx179("div", { className: "px-4 py-5 text-center text-base leading-6 text-[#6C6C6C]", children: emptyMessage }) : /* @__PURE__ */ jsx179(
17884
18382
  "div",
17885
18383
  {
17886
18384
  id: listboxId,
@@ -17889,7 +18387,7 @@ function AirbnbSearchableSelectContent({
17889
18387
  "aria-labelledby": labelId,
17890
18388
  className: cn("overflow-y-auto outline-none", menuClassName),
17891
18389
  style: { height: Math.min(height, rowCount * ROW_HEIGHT) },
17892
- children: /* @__PURE__ */ jsx177(
18390
+ children: /* @__PURE__ */ jsx179(
17893
18391
  "div",
17894
18392
  {
17895
18393
  className: "relative w-full",
@@ -17897,7 +18395,7 @@ function AirbnbSearchableSelectContent({
17897
18395
  children: virtualItems.map((virtualItem) => {
17898
18396
  const option = options[virtualItem.index];
17899
18397
  if (!option) {
17900
- return /* @__PURE__ */ jsx177(
18398
+ return /* @__PURE__ */ jsx179(
17901
18399
  "div",
17902
18400
  {
17903
18401
  className: "absolute left-0 top-0 flex w-full items-center px-4 text-base leading-6 text-[#6C6C6C]",
@@ -17912,7 +18410,7 @@ function AirbnbSearchableSelectContent({
17912
18410
  }
17913
18411
  const isSelected = value?.value === option.value;
17914
18412
  const isHighlighted = virtualItem.index === highlightedIndex;
17915
- return /* @__PURE__ */ jsx177(
18413
+ return /* @__PURE__ */ jsx179(
17916
18414
  "button",
17917
18415
  {
17918
18416
  id: getOptionId(idPrefix, virtualItem.index),
@@ -17934,7 +18432,7 @@ function AirbnbSearchableSelectContent({
17934
18432
  height: `${virtualItem.size}px`,
17935
18433
  transform: `translateY(${virtualItem.start}px)`
17936
18434
  },
17937
- children: /* @__PURE__ */ jsx177("span", { className: "truncate text-center", children: String(option.label) })
18435
+ children: /* @__PURE__ */ jsx179("span", { className: "truncate text-center", children: String(option.label) })
17938
18436
  },
17939
18437
  `${String(option.value)}-${virtualItem.index}`
17940
18438
  );
@@ -17964,15 +18462,15 @@ function getNextEnabledIndex(options, startIndex, step) {
17964
18462
 
17965
18463
  // src/airbnb-fields/search-input/SearchInput.tsx
17966
18464
  import * as React73 from "react";
17967
- import { useTranslation as useTranslation38 } from "react-i18next";
18465
+ import { useTranslation as useTranslation40 } from "react-i18next";
17968
18466
  import { Search as Search4, X as X10 } from "lucide-react";
17969
- import { jsx as jsx178, jsxs as jsxs118 } from "react/jsx-runtime";
18467
+ import { jsx as jsx180, jsxs as jsxs120 } from "react/jsx-runtime";
17970
18468
  var AirbnbSearchInput = React73.forwardRef(({ onReset, placeholder, wrapperClassName, ...props }, ref) => {
17971
- const { t } = useTranslation38();
18469
+ const { t } = useTranslation40();
17972
18470
  const placeholderText = placeholder || t("search_property") + "...";
17973
- return /* @__PURE__ */ jsxs118("div", { className: cn("input-wrapper relative", wrapperClassName), children: [
17974
- /* @__PURE__ */ jsx178(Search4, { className: "absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 transform text-[#9696B9]" }),
17975
- /* @__PURE__ */ jsx178(
18471
+ return /* @__PURE__ */ jsxs120("div", { className: cn("input-wrapper relative", wrapperClassName), children: [
18472
+ /* @__PURE__ */ jsx180(Search4, { className: "absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 transform text-[#9696B9]" }),
18473
+ /* @__PURE__ */ jsx180(
17976
18474
  "input",
17977
18475
  {
17978
18476
  ...props,
@@ -17991,13 +18489,13 @@ var AirbnbSearchInput = React73.forwardRef(({ onReset, placeholder, wrapperClass
17991
18489
  )
17992
18490
  }
17993
18491
  ),
17994
- onReset && /* @__PURE__ */ jsx178(
18492
+ onReset && /* @__PURE__ */ jsx180(
17995
18493
  Button,
17996
18494
  {
17997
18495
  variant: "ghost",
17998
18496
  onClick: onReset,
17999
18497
  className: "absolute right-0 top-1/2 h-5 w-5 -translate-y-1/2 transform text-[#9696B9]",
18000
- children: /* @__PURE__ */ jsx178(X10, { className: "h-5 w-5" })
18498
+ children: /* @__PURE__ */ jsx180(X10, { className: "h-5 w-5" })
18001
18499
  }
18002
18500
  )
18003
18501
  ] });
@@ -18177,6 +18675,7 @@ export {
18177
18675
  LegacyTextarea,
18178
18676
  Link,
18179
18677
  LoadingBar,
18678
+ MobileWebcam,
18180
18679
  Modal,
18181
18680
  ModalButton,
18182
18681
  ModalLoader,