@chekinapp/ui 0.0.125 → 0.0.127

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -345,6 +345,7 @@ __export(index_exports, {
345
345
  compressFile: () => compressFile,
346
346
  compressImage: () => compressImage,
347
347
  copyToClipboard: () => copyToClipboard,
348
+ countriesFilter: () => countriesFilter,
348
349
  createDisabledMatchers: () => createDisabledMatchers,
349
350
  emptyMediaVariants: () => emptyMediaVariants,
350
351
  findPhoneCode: () => findPhoneCode,
@@ -12482,7 +12483,7 @@ function Fieldset({
12482
12483
  {
12483
12484
  "aria-hidden": "true",
12484
12485
  className: cn(
12485
- "pointer-events-none absolute -top-[5px] bottom-0 left-0 right-0 m-0 min-w-0 rounded-[6px] border px-[13px] transition-colors duration-75",
12486
+ "pointer-events-none absolute -top-[5px] bottom-0 left-0 right-0 m-0 min-w-0 rounded-[6px] border px-[13px] text-left transition-colors duration-75",
12486
12487
  "border-[var(--chekin-color-gray-3)]",
12487
12488
  isActivated && "border-[var(--chekin-color-gray-2)]",
12488
12489
  isFocused && "border-[var(--chekin-color-brand-blue)]",
@@ -12786,10 +12787,6 @@ Input.displayName = "Input";
12786
12787
  var React50 = __toESM(require("react"), 1);
12787
12788
  var import_react_i18next34 = require("react-i18next");
12788
12789
 
12789
- // src/dashboard/select/Select.tsx
12790
- var React49 = __toESM(require("react"), 1);
12791
- var import_react_i18next33 = require("react-i18next");
12792
-
12793
12790
  // src/dashboard/_select-internals/SelectFieldShell.tsx
12794
12791
  var import_react_i18next27 = require("react-i18next");
12795
12792
  var import_jsx_runtime146 = require("react/jsx-runtime");
@@ -12917,6 +12914,46 @@ function isOptionSelected(option, selectedValue, selectedValues) {
12917
12914
  function defaultIsOptionSelected(option, selectValue) {
12918
12915
  return selectValue.some((item) => item.value === option.value);
12919
12916
  }
12917
+ var COUNTRY_ALIASES = [["T\xFCrkiye", ["Turkey", "Turkiye"]]];
12918
+ function normalizeSearchText(value) {
12919
+ return value.normalize("NFD").replace(/[̀-ͯ]/g, "").toLowerCase();
12920
+ }
12921
+ var ALIAS_LOOKUP = COUNTRY_ALIASES.reduce(
12922
+ (acc, [officialName, aliases]) => {
12923
+ const officialLower = normalizeSearchText(officialName);
12924
+ aliases.forEach((alias) => {
12925
+ acc[normalizeSearchText(alias)] = officialLower;
12926
+ });
12927
+ return acc;
12928
+ },
12929
+ {}
12930
+ );
12931
+ function getOptionSearchText(option) {
12932
+ if (typeof option.label === "string" || typeof option.label === "number") {
12933
+ return String(option.label);
12934
+ }
12935
+ return String(option.value);
12936
+ }
12937
+ function countriesFilter(option, inputValue) {
12938
+ const input = normalizeSearchText(inputValue.trim());
12939
+ if (!input) {
12940
+ return true;
12941
+ }
12942
+ const label = normalizeSearchText(getOptionSearchText(option));
12943
+ if (label.includes(input)) {
12944
+ return true;
12945
+ }
12946
+ const officialName = ALIAS_LOOKUP[input];
12947
+ if (officialName && label.includes(officialName)) {
12948
+ return true;
12949
+ }
12950
+ for (const [alias, official] of Object.entries(ALIAS_LOOKUP)) {
12951
+ if (alias.includes(input) && label.includes(official)) {
12952
+ return true;
12953
+ }
12954
+ }
12955
+ return false;
12956
+ }
12920
12957
 
12921
12958
  // src/dashboard/_select-internals/slots/DefaultOption.tsx
12922
12959
  var import_lucide_react43 = require("lucide-react");
@@ -13266,15 +13303,19 @@ function SelectTrigger({
13266
13303
  labelId,
13267
13304
  valueId,
13268
13305
  describedErrorId,
13306
+ accessibleLabel,
13269
13307
  hasValue,
13270
13308
  isOpen,
13271
13309
  isBlocked,
13272
13310
  disabled,
13311
+ readOnly,
13273
13312
  loading,
13274
13313
  invalid,
13275
13314
  placeholder,
13315
+ showPlaceholderWhenIdle,
13276
13316
  valueLabel,
13277
13317
  leftIcon,
13318
+ hideIndicator,
13278
13319
  onClick,
13279
13320
  onKeyDown,
13280
13321
  onBlur
@@ -13289,7 +13330,8 @@ function SelectTrigger({
13289
13330
  "aria-haspopup": "listbox",
13290
13331
  "aria-expanded": isOpen,
13291
13332
  "aria-controls": listboxId,
13292
- "aria-labelledby": hasValue && valueId ? `${labelId} ${valueId}` : labelId,
13333
+ "aria-label": accessibleLabel,
13334
+ "aria-labelledby": accessibleLabel ? void 0 : hasValue && valueId ? `${labelId} ${valueId}` : labelId,
13293
13335
  "aria-describedby": describedErrorId,
13294
13336
  "aria-invalid": invalid,
13295
13337
  "aria-busy": loading,
@@ -13301,18 +13343,19 @@ function SelectTrigger({
13301
13343
  "relative m-0 box-border flex h-12 w-full cursor-pointer items-center justify-between gap-2 rounded-[6px] border-0 pr-4 text-left text-[16px] font-medium leading-5 outline-none transition-colors duration-200",
13302
13344
  leftIcon ? "pl-10" : "pl-4",
13303
13345
  isEmpty ? "bg-[var(--empty-field-background)] text-[var(--chekin-color-gray-1)]" : "bg-transparent text-[var(--chekin-color-brand-navy)]",
13346
+ readOnly && !disabled && !loading && "cursor-default",
13304
13347
  disabled && !loading && "cursor-not-allowed opacity-50",
13305
13348
  loading && "!cursor-progress"
13306
13349
  ),
13307
13350
  children: [
13308
13351
  leftIcon && /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("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__ */ (0, import_jsx_runtime151.jsx)("span", { className: "flex h-full w-10 items-center justify-center", children: leftIcon }) }),
13309
- /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("span", { id: valueId, className: "block min-w-0 flex-1 truncate text-left", children: valueLabel ?? (isOpen ? placeholder : null) }),
13310
- /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("span", { className: "pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
13352
+ /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("span", { id: valueId, className: "block min-w-0 flex-1 truncate text-left", children: hasValue ? valueLabel : showPlaceholderWhenIdle || isOpen ? placeholder : null }),
13353
+ /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("span", { className: "flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: !hideIndicator && /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
13311
13354
  import_lucide_react45.ChevronDown,
13312
13355
  {
13313
13356
  size: 16,
13314
13357
  className: cn(
13315
- "transition-transform duration-200",
13358
+ "pointer-events-none transition-transform duration-200",
13316
13359
  isOpen && "rotate-180 text-[var(--chekin-color-brand-blue)]"
13317
13360
  )
13318
13361
  }
@@ -13332,6 +13375,7 @@ function ComboboxTrigger({
13332
13375
  labelId,
13333
13376
  valueId,
13334
13377
  describedErrorId,
13378
+ accessibleLabel,
13335
13379
  isOpen,
13336
13380
  isFocused,
13337
13381
  isBlocked,
@@ -13345,6 +13389,7 @@ function ComboboxTrigger({
13345
13389
  inputRef,
13346
13390
  inputValue,
13347
13391
  placeholder,
13392
+ showPlaceholderWhenIdle,
13348
13393
  highlightedIndex,
13349
13394
  getOptionId: getOptionId2,
13350
13395
  onInputChange,
@@ -13359,7 +13404,8 @@ function ComboboxTrigger({
13359
13404
  containerClassName,
13360
13405
  inputClassName,
13361
13406
  hideIndicator,
13362
- autoFocus
13407
+ autoFocus,
13408
+ searchable = true
13363
13409
  }) {
13364
13410
  const { t } = (0, import_react_i18next30.useTranslation)();
13365
13411
  const resolvedPlaceholder = placeholder ?? t("type_to_search");
@@ -13371,7 +13417,8 @@ function ComboboxTrigger({
13371
13417
  "aria-haspopup": "listbox",
13372
13418
  "aria-expanded": isOpen,
13373
13419
  "aria-controls": listboxId,
13374
- "aria-labelledby": hasValue && valueId ? `${labelId} ${valueId}` : labelId,
13420
+ "aria-label": accessibleLabel,
13421
+ "aria-labelledby": accessibleLabel ? void 0 : hasValue && valueId ? `${labelId} ${valueId}` : labelId,
13375
13422
  "aria-describedby": describedErrorId,
13376
13423
  "aria-invalid": invalid,
13377
13424
  "aria-busy": loading,
@@ -13381,6 +13428,7 @@ function ComboboxTrigger({
13381
13428
  "relative box-border flex w-full cursor-text rounded-[6px] border-0 text-left text-[16px] font-medium leading-5 outline-none transition-colors duration-200",
13382
13429
  "min-h-12",
13383
13430
  isEmpty && !isFocused ? "bg-[var(--empty-field-background)]" : "bg-transparent",
13431
+ readOnly && !disabled && !loading && "cursor-default",
13384
13432
  disabled && !loading && "cursor-not-allowed",
13385
13433
  loading && "!cursor-progress",
13386
13434
  containerClassName
@@ -13408,8 +13456,8 @@ function ComboboxTrigger({
13408
13456
  onFocus: onInputFocus,
13409
13457
  onKeyDown: onInputKeyDown,
13410
13458
  disabled: isBlocked,
13411
- readOnly,
13412
- placeholder: isFocused || isOpen ? resolvedPlaceholder : "",
13459
+ readOnly: readOnly || !searchable,
13460
+ placeholder: searchable && (showPlaceholderWhenIdle || isFocused || isOpen) ? resolvedPlaceholder : "",
13413
13461
  autoComplete: "off",
13414
13462
  autoFocus,
13415
13463
  "aria-autocomplete": "list",
@@ -13418,7 +13466,9 @@ function ComboboxTrigger({
13418
13466
  className: cn(
13419
13467
  "m-0 box-border min-w-0 flex-1 border-0 bg-transparent p-0 text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none placeholder:text-[var(--chekin-color-gray-1)]",
13420
13468
  isMulti && "min-w-[40px]",
13421
- isBlocked && !loading && "cursor-not-allowed",
13469
+ !searchable && "sr-only",
13470
+ readOnly && !disabled && !loading && "cursor-default",
13471
+ disabled && !loading && "cursor-not-allowed",
13422
13472
  loading && "!cursor-progress",
13423
13473
  inputClassName
13424
13474
  )
@@ -13565,7 +13615,9 @@ function useSelectState(params) {
13565
13615
  onKeyDown,
13566
13616
  onFocus,
13567
13617
  onBlur,
13568
- isSearchInDropdown
13618
+ onInputChange,
13619
+ isSearchInDropdown,
13620
+ searchable = true
13569
13621
  } = params;
13570
13622
  const inputRef = React48.useRef(null);
13571
13623
  const mobileSearchInputRef = React48.useRef(null);
@@ -13579,8 +13631,10 @@ function useSelectState(params) {
13579
13631
  () => resolveValueLabel(singleSelected, getValueLabel),
13580
13632
  [singleSelected, getValueLabel]
13581
13633
  );
13582
- const isSearchOnlyInput = isMulti || Boolean(isSearchInDropdown);
13583
- const [inputValue, setInputValue] = React48.useState(isSearchOnlyInput ? "" : valueLabel);
13634
+ const isSearchOnlyInput = searchable && (isMulti || Boolean(isSearchInDropdown));
13635
+ const [inputValue, setInputValue] = React48.useState(
13636
+ searchable && !isSearchOnlyInput ? valueLabel : ""
13637
+ );
13584
13638
  const hasValue = selectedOptions.length > 0;
13585
13639
  const isBlocked = Boolean(disabled) || Boolean(loading) || Boolean(readOnly);
13586
13640
  const hasInvalidState = Boolean(error);
@@ -13595,9 +13649,10 @@ function useSelectState(params) {
13595
13649
  const ids = useSelectIds({ name, hasValue, error, hideErrorMessage });
13596
13650
  const { listboxId, getOptionId: getOptionId2 } = ids;
13597
13651
  React48.useEffect(() => {
13652
+ if (!searchable) return;
13598
13653
  if (isSearchOnlyInput) return;
13599
13654
  if (!isFocused) setInputValue(valueLabel);
13600
- }, [valueLabel, isFocused, isSearchOnlyInput]);
13655
+ }, [valueLabel, isFocused, isSearchOnlyInput, searchable]);
13601
13656
  React48.useEffect(() => {
13602
13657
  if (!isSearchOnlyInput) return;
13603
13658
  if (!isOpen) {
@@ -13606,7 +13661,7 @@ function useSelectState(params) {
13606
13661
  }
13607
13662
  }, [isOpen, isSearchOnlyInput]);
13608
13663
  const trimmedInput = inputValue.trim();
13609
- const isFiltering = isSearchOnlyInput ? trimmedInput.length > 0 : trimmedInput.length > 0 && trimmedInput.toLowerCase() !== valueLabel.toLowerCase();
13664
+ const isFiltering = searchable && (isSearchOnlyInput ? trimmedInput.length > 0 : trimmedInput.length > 0 && trimmedInput.toLowerCase() !== valueLabel.toLowerCase());
13610
13665
  const filteredOptions = React48.useMemo(() => {
13611
13666
  if (!isFiltering) return options;
13612
13667
  return options.filter((option) => filterOption(option, trimmedInput));
@@ -13637,9 +13692,9 @@ function useSelectState(params) {
13637
13692
  }, [isOpen, filteredOptions, isOptionDisabled]);
13638
13693
  React48.useEffect(() => {
13639
13694
  if (!isOpen || highlightedIndex < 0) return;
13640
- optionRefs.current[highlightedIndex]?.scrollIntoView({ block: "nearest" });
13695
+ optionRefs.current[highlightedIndex]?.scrollIntoView?.({ block: "nearest" });
13641
13696
  }, [highlightedIndex, isOpen]);
13642
- const inMenuSearchVisible = isMobile3 || Boolean(isSearchInDropdown);
13697
+ const inMenuSearchVisible = searchable && (isMobile3 || Boolean(isSearchInDropdown));
13643
13698
  React48.useEffect(() => {
13644
13699
  if (!isOpen || !inMenuSearchVisible) return;
13645
13700
  const frame = window.requestAnimationFrame(
@@ -13667,7 +13722,9 @@ function useSelectState(params) {
13667
13722
  return;
13668
13723
  }
13669
13724
  onSelectionChange([option], { action: "select" });
13670
- setInputValue(isSearchInDropdown ? "" : resolveValueLabel(option, getValueLabel));
13725
+ setInputValue(
13726
+ searchable && !isSearchInDropdown ? resolveValueLabel(option, getValueLabel) : ""
13727
+ );
13671
13728
  setIsOpen(false);
13672
13729
  setIsFocused(false);
13673
13730
  inputRef.current?.blur();
@@ -13681,7 +13738,8 @@ function useSelectState(params) {
13681
13738
  closeMenuOnSelect,
13682
13739
  setIsOpen,
13683
13740
  getValueLabel,
13684
- isSearchInDropdown
13741
+ isSearchInDropdown,
13742
+ searchable
13685
13743
  ]
13686
13744
  );
13687
13745
  const removeOption = React48.useCallback(
@@ -13716,7 +13774,9 @@ function useSelectState(params) {
13716
13774
  return;
13717
13775
  }
13718
13776
  onSelectionChange([newOption], { action: "create" });
13719
- setInputValue(isSearchInDropdown ? "" : resolveValueLabel(newOption, getValueLabel));
13777
+ setInputValue(
13778
+ searchable && !isSearchInDropdown ? resolveValueLabel(newOption, getValueLabel) : ""
13779
+ );
13720
13780
  setIsOpen(false);
13721
13781
  setIsFocused(false);
13722
13782
  inputRef.current?.blur();
@@ -13730,14 +13790,18 @@ function useSelectState(params) {
13730
13790
  closeMenuOnSelect,
13731
13791
  setIsOpen,
13732
13792
  getValueLabel,
13733
- isSearchInDropdown
13793
+ isSearchInDropdown,
13794
+ searchable
13734
13795
  ]);
13735
13796
  const handleInputChange = React48.useCallback(
13736
13797
  (event) => {
13737
- setInputValue(event.target.value);
13798
+ if (!searchable) return;
13799
+ const nextValue = event.target.value;
13800
+ setInputValue(nextValue);
13801
+ onInputChange?.(nextValue);
13738
13802
  if (!isOpen) setIsOpen(true);
13739
13803
  },
13740
- [isOpen, setIsOpen]
13804
+ [isOpen, onInputChange, searchable, setIsOpen]
13741
13805
  );
13742
13806
  const handleInputFocus = React48.useCallback(
13743
13807
  (event) => {
@@ -13745,11 +13809,11 @@ function useSelectState(params) {
13745
13809
  onFocus?.(event);
13746
13810
  setIsFocused(true);
13747
13811
  if (openMenuOnFocus) setIsOpen(true);
13748
- if (!isMulti) {
13812
+ if (searchable && !isMulti) {
13749
13813
  requestAnimationFrame(() => inputRef.current?.select());
13750
13814
  }
13751
13815
  },
13752
- [isBlocked, onFocus, openMenuOnFocus, setIsOpen, isMulti]
13816
+ [isBlocked, onFocus, openMenuOnFocus, setIsOpen, searchable, isMulti]
13753
13817
  );
13754
13818
  const handleContainerClick = React48.useCallback(() => {
13755
13819
  if (isBlocked) return;
@@ -13760,10 +13824,10 @@ function useSelectState(params) {
13760
13824
  (event) => {
13761
13825
  if (containerRef.current?.contains(event.relatedTarget)) return;
13762
13826
  setIsFocused(false);
13763
- if (!isSearchOnlyInput) setInputValue(valueLabel);
13827
+ if (searchable && !isSearchOnlyInput) setInputValue(valueLabel);
13764
13828
  onBlur?.(event);
13765
13829
  },
13766
- [containerRef, isSearchOnlyInput, valueLabel, onBlur]
13830
+ [containerRef, isSearchOnlyInput, searchable, valueLabel, onBlur]
13767
13831
  );
13768
13832
  const handleInputKeyDown = React48.useCallback(
13769
13833
  (event) => {
@@ -13817,7 +13881,7 @@ function useSelectState(params) {
13817
13881
  }
13818
13882
  if (event.key === "Escape") {
13819
13883
  event.preventDefault();
13820
- if (!isSearchOnlyInput) setInputValue(valueLabel);
13884
+ if (searchable && !isSearchOnlyInput) setInputValue(valueLabel);
13821
13885
  setIsOpen(false);
13822
13886
  inputRef.current?.blur();
13823
13887
  }
@@ -13837,7 +13901,8 @@ function useSelectState(params) {
13837
13901
  selectOption,
13838
13902
  canCreateNewOption,
13839
13903
  createOption,
13840
- valueLabel
13904
+ valueLabel,
13905
+ searchable
13841
13906
  ]
13842
13907
  );
13843
13908
  const isEmpty = !hasValue && !inputValue;
@@ -13937,10 +14002,12 @@ function DefaultControl(props) {
13937
14002
  labelId,
13938
14003
  valueId,
13939
14004
  describedErrorId,
14005
+ accessibleLabel,
13940
14006
  getOptionId: getOptionId2,
13941
14007
  inputRef,
13942
14008
  inputValue,
13943
14009
  placeholder,
14010
+ showPlaceholderWhenIdle,
13944
14011
  isMulti,
13945
14012
  isOpen,
13946
14013
  isFocused,
@@ -13964,6 +14031,7 @@ function DefaultControl(props) {
13964
14031
  hideIndicator,
13965
14032
  autoFocus,
13966
14033
  leftIcon,
14034
+ searchable,
13967
14035
  components
13968
14036
  } = props;
13969
14037
  const Chip = components.MultiValueChip ?? DefaultMultiValueChip;
@@ -13977,6 +14045,7 @@ function DefaultControl(props) {
13977
14045
  labelId,
13978
14046
  valueId,
13979
14047
  describedErrorId,
14048
+ accessibleLabel,
13980
14049
  isOpen,
13981
14050
  isFocused,
13982
14051
  isBlocked,
@@ -13990,6 +14059,7 @@ function DefaultControl(props) {
13990
14059
  inputRef,
13991
14060
  inputValue,
13992
14061
  placeholder: placeholderText,
14062
+ showPlaceholderWhenIdle,
13993
14063
  highlightedIndex,
13994
14064
  getOptionId: getOptionId2,
13995
14065
  onInputChange,
@@ -14002,6 +14072,7 @@ function DefaultControl(props) {
14002
14072
  hideIndicator,
14003
14073
  autoFocus,
14004
14074
  leftIcon,
14075
+ searchable,
14005
14076
  leadingContent: isMulti ? selectedOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
14006
14077
  Chip,
14007
14078
  {
@@ -14016,6 +14087,7 @@ function DefaultControl(props) {
14016
14087
  }
14017
14088
 
14018
14089
  // src/dashboard/_select-internals/slots/StaticControl.tsx
14090
+ var import_lucide_react48 = require("lucide-react");
14019
14091
  var import_jsx_runtime155 = require("react/jsx-runtime");
14020
14092
  function StaticControl(props) {
14021
14093
  const {
@@ -14024,6 +14096,7 @@ function StaticControl(props) {
14024
14096
  labelId,
14025
14097
  valueId,
14026
14098
  describedErrorId,
14099
+ accessibleLabel,
14027
14100
  isOpen,
14028
14101
  isBlocked,
14029
14102
  hasValue,
@@ -14032,30 +14105,53 @@ function StaticControl(props) {
14032
14105
  disabled,
14033
14106
  valueLabel,
14034
14107
  placeholder,
14108
+ showPlaceholderWhenIdle,
14035
14109
  onContainerClick,
14110
+ onClear,
14111
+ clearable,
14112
+ clearLabel,
14113
+ hideIndicator,
14114
+ readOnly,
14036
14115
  leftIcon
14037
14116
  } = props;
14038
- return /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(
14039
- SelectTrigger,
14040
- {
14041
- triggerId,
14042
- listboxId,
14043
- labelId,
14044
- valueId,
14045
- describedErrorId,
14046
- hasValue,
14047
- isOpen,
14048
- isBlocked,
14049
- disabled,
14050
- loading,
14051
- invalid,
14052
- placeholder,
14053
- valueLabel,
14054
- leftIcon,
14055
- onClick: onContainerClick,
14056
- onKeyDown: () => void 0
14057
- }
14058
- );
14117
+ const showClear = Boolean(clearable) && hasValue && !readOnly && !disabled;
14118
+ return /* @__PURE__ */ (0, import_jsx_runtime155.jsxs)("div", { className: "relative", children: [
14119
+ /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(
14120
+ SelectTrigger,
14121
+ {
14122
+ triggerId,
14123
+ listboxId,
14124
+ labelId,
14125
+ valueId,
14126
+ describedErrorId,
14127
+ accessibleLabel,
14128
+ hasValue,
14129
+ isOpen,
14130
+ isBlocked,
14131
+ disabled,
14132
+ readOnly,
14133
+ loading,
14134
+ invalid,
14135
+ placeholder,
14136
+ showPlaceholderWhenIdle,
14137
+ valueLabel,
14138
+ leftIcon,
14139
+ hideIndicator,
14140
+ onClick: onContainerClick,
14141
+ onKeyDown: () => void 0
14142
+ }
14143
+ ),
14144
+ showClear && /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(
14145
+ "button",
14146
+ {
14147
+ type: "button",
14148
+ onClick: onClear,
14149
+ className: "absolute right-9 top-1/2 flex h-5 w-5 -translate-y-1/2 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] hover:shadow-[0_3px_3px_#0f477734]",
14150
+ "aria-label": clearLabel,
14151
+ children: /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(import_lucide_react48.SquareX, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
14152
+ }
14153
+ )
14154
+ ] });
14059
14155
  }
14060
14156
 
14061
14157
  // src/dashboard/_select-internals/slots/DefaultMenuList.tsx
@@ -14163,6 +14259,10 @@ function mergeComponents(overrides) {
14163
14259
  };
14164
14260
  }
14165
14261
 
14262
+ // src/dashboard/select/Select.tsx
14263
+ var React49 = __toESM(require("react"), 1);
14264
+ var import_react_i18next33 = require("react-i18next");
14265
+
14166
14266
  // src/dashboard/select/useSetCorrectOptionIfThereIsOnlyValue.ts
14167
14267
  var import_react89 = require("react");
14168
14268
  function useSetCorrectOptionIfThereIsOnlyValue({ value, options, onChange, enabled = true }) {
@@ -14201,6 +14301,7 @@ function SelectInternal(props, ref) {
14201
14301
  menuClassName,
14202
14302
  dropdownClassName,
14203
14303
  drawerClassName,
14304
+ fieldsetClassName,
14204
14305
  name,
14205
14306
  width,
14206
14307
  noOptionsMessage,
@@ -14221,6 +14322,7 @@ function SelectInternal(props, ref) {
14221
14322
  openMenuOnFocus,
14222
14323
  components: userComponents,
14223
14324
  onInputChange,
14325
+ searchable = true,
14224
14326
  searchPosition = "trigger",
14225
14327
  menuHeader,
14226
14328
  onMenuScrollToBottom,
@@ -14228,8 +14330,8 @@ function SelectInternal(props, ref) {
14228
14330
  formatGroupLabel,
14229
14331
  onReset
14230
14332
  } = props;
14231
- const isSearchInDropdown = searchPosition === "dropdown";
14232
14333
  const isMulti = props.isMulti === true;
14334
+ const isSearchInDropdown = searchable && searchPosition === "dropdown";
14233
14335
  const clearable = !isMulti ? props.clearable ?? true : true;
14234
14336
  const closeMenuOnSelect = isMulti ? props.closeMenuOnSelect ?? false : void 0;
14235
14337
  const { t } = (0, import_react_i18next33.useTranslation)();
@@ -14288,25 +14390,24 @@ function SelectInternal(props, ref) {
14288
14390
  onKeyDown,
14289
14391
  onFocus,
14290
14392
  onBlur,
14291
- isSearchInDropdown
14393
+ onInputChange,
14394
+ isSearchInDropdown,
14395
+ searchable
14292
14396
  });
14293
14397
  const components = React49.useMemo(() => {
14294
14398
  const merged = mergeComponents(userComponents);
14295
- if (isSearchInDropdown && !userComponents?.Control) {
14399
+ if ((isSearchInDropdown || !searchable && !isMulti) && !userComponents?.Control) {
14296
14400
  return { ...merged, Control: StaticControl };
14297
14401
  }
14298
14402
  return merged;
14299
- }, [userComponents, isSearchInDropdown]);
14403
+ }, [userComponents, isSearchInDropdown, searchable, isMulti]);
14300
14404
  React49.useImperativeHandle(
14301
14405
  ref,
14302
14406
  () => state.containerRef.current
14303
14407
  );
14304
- const onInputChangeRef = React49.useRef(onInputChange);
14305
- onInputChangeRef.current = onInputChange;
14306
- React49.useEffect(() => {
14307
- onInputChangeRef.current?.(state.inputValue);
14308
- }, [state.inputValue]);
14309
- const resolvedLabel = label ?? placeholder;
14408
+ const hasLabel = Boolean(label);
14409
+ const resolvedTitle = label ?? placeholder;
14410
+ const accessibleLabel = !hasLabel && typeof placeholder === "string" ? placeholder : void 0;
14310
14411
  const hasInvalidState = state.hasInvalidState || Boolean(invalid);
14311
14412
  const hiddenValue = isMulti ? selectedOptions.map((item) => String(item.value)).join(",") : selectedOptions[0] ? String(selectedOptions[0].value) : "";
14312
14413
  const handleClear = (event) => {
@@ -14341,10 +14442,12 @@ function SelectInternal(props, ref) {
14341
14442
  labelId: state.ids.labelId,
14342
14443
  valueId: state.ids.valueId,
14343
14444
  describedErrorId: state.ids.describedErrorId,
14445
+ accessibleLabel,
14344
14446
  getOptionId: state.ids.getOptionId,
14345
14447
  inputRef: state.inputRef,
14346
14448
  inputValue: state.inputValue,
14347
14449
  placeholder,
14450
+ showPlaceholderWhenIdle: !hasLabel,
14348
14451
  isMulti,
14349
14452
  isOpen: state.isOpen,
14350
14453
  isFocused: state.isFocused,
@@ -14369,6 +14472,7 @@ function SelectInternal(props, ref) {
14369
14472
  hideIndicator,
14370
14473
  autoFocus,
14371
14474
  leftIcon,
14475
+ searchable,
14372
14476
  components
14373
14477
  }
14374
14478
  ),
@@ -14384,11 +14488,12 @@ function SelectInternal(props, ref) {
14384
14488
  readOnly,
14385
14489
  htmlFor: state.ids.triggerId,
14386
14490
  labelId: state.ids.labelId,
14387
- legend: resolvedLabel,
14388
- label: resolvedLabel,
14491
+ legend: label,
14492
+ label,
14389
14493
  tooltip,
14390
14494
  onClick: state.handleContainerClick,
14391
- labelClassName: leftIcon ? "pl-[28px]" : void 0
14495
+ labelClassName: leftIcon ? "pl-[28px]" : void 0,
14496
+ className: fieldsetClassName
14392
14497
  }
14393
14498
  ),
14394
14499
  /* @__PURE__ */ (0, import_jsx_runtime158.jsxs)(
@@ -14400,7 +14505,7 @@ function SelectInternal(props, ref) {
14400
14505
  state.closeMenu();
14401
14506
  state.setIsFocused(false);
14402
14507
  },
14403
- title: resolvedLabel,
14508
+ title: resolvedTitle,
14404
14509
  className: dropdownClassName,
14405
14510
  drawerClassName,
14406
14511
  children: [
@@ -14540,9 +14645,6 @@ var PhoneInput = React50.forwardRef(
14540
14645
  const safeValue = value ?? EMPTY_VALUE;
14541
14646
  const effectiveCode = safeValue.code || defaultCode || "";
14542
14647
  const resolvedLabel = label ?? "";
14543
- const resolvedPrefixLabel = prefixLabel ?? t("prefix");
14544
- const isBlocked = Boolean(disabled) || Boolean(loading);
14545
- const isCodeBlocked = isBlocked || Boolean(readOnly) || Boolean(codeReadOnly);
14546
14648
  const hasExternalError = Boolean(error);
14547
14649
  const isPrefixRequired = autoDetectCode && Boolean(safeValue.number) && !effectiveCode;
14548
14650
  const hasInvalidState = hasExternalError || Boolean(invalid) || isPrefixRequired;
@@ -14624,13 +14726,17 @@ var PhoneInput = React50.forwardRef(
14624
14726
  options: codeOptions,
14625
14727
  value: selectedCodeOption,
14626
14728
  onChange: handleCodeChange,
14627
- label: resolvedPrefixLabel,
14729
+ label: prefixLabel,
14628
14730
  placeholder: codePlaceholder,
14629
- disabled: isCodeBlocked,
14731
+ disabled,
14732
+ readOnly: Boolean(readOnly) || Boolean(codeReadOnly),
14630
14733
  loading,
14631
14734
  invalid: hasInvalidState,
14632
14735
  hideErrorMessage: true,
14633
14736
  searchPosition: searchable ? "dropdown" : "trigger",
14737
+ searchable,
14738
+ filterOption: countriesFilter,
14739
+ clearable: false,
14634
14740
  getValueLabel: (option) => option.value,
14635
14741
  className: "!max-w-none",
14636
14742
  dropdownClassName: "right-auto w-[280px]"
@@ -14656,7 +14762,9 @@ var PhoneInput = React50.forwardRef(
14656
14762
  onFocus,
14657
14763
  onBlur,
14658
14764
  renderErrorMessage: false,
14659
- wrapperClassName: "!max-w-none"
14765
+ wrapperClassName: "!max-w-none",
14766
+ contentClassName: readOnly ? "!cursor-default" : void 0,
14767
+ inputClassName: readOnly ? "!cursor-default" : void 0
14660
14768
  }
14661
14769
  )
14662
14770
  ] }),
@@ -14935,13 +15043,14 @@ function InfiniteScrollSelectInternal(props, ref) {
14935
15043
  listHeight = DEFAULT_LIST_HEIGHT,
14936
15044
  overscan = DEFAULT_OVERSCAN,
14937
15045
  loadMoreThreshold = DEFAULT_LOAD_MORE_THRESHOLD,
14938
- getFullSearchOption,
15046
+ getFullSearchOption: getFullSearchOptionProp,
14939
15047
  filterOption: userFilterOption,
14940
15048
  components: userComponents,
14941
15049
  onInputChange: userOnInputChange,
14942
15050
  isMulti = false,
14943
15051
  ...rest
14944
15052
  } = props;
15053
+ const getFullSearchOption = isMulti ? void 0 : getFullSearchOptionProp;
14945
15054
  const isPaginated = canLoadMore !== void 0 || isLoadingMore !== void 0 || loadMoreItems !== void 0 || onSearchChange !== void 0 || getFullSearchOption !== void 0;
14946
15055
  const filterOption = userFilterOption ?? (isPaginated ? passthroughFilter : defaultFilterOption);
14947
15056
  const [inputValue, setInputValue] = React56.useState("");
@@ -15093,7 +15202,7 @@ function SelectCheckboxOption(props) {
15093
15202
  }
15094
15203
 
15095
15204
  // src/dashboard/select-checkboxes/CountTrigger.tsx
15096
- var import_lucide_react48 = require("lucide-react");
15205
+ var import_lucide_react49 = require("lucide-react");
15097
15206
  var import_react_i18next36 = require("react-i18next");
15098
15207
  var import_jsx_runtime167 = require("react/jsx-runtime");
15099
15208
  function createCountTrigger(opts) {
@@ -15147,7 +15256,7 @@ function createCountTrigger(opts) {
15147
15256
  leftIcon && /* @__PURE__ */ (0, import_jsx_runtime167.jsx)("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__ */ (0, import_jsx_runtime167.jsx)("span", { className: "flex h-full w-10 items-center justify-center", children: leftIcon }) }),
15148
15257
  /* @__PURE__ */ (0, import_jsx_runtime167.jsx)("span", { id: valueId, className: "block min-w-0 flex-1 truncate text-left", children: display }),
15149
15258
  /* @__PURE__ */ (0, import_jsx_runtime167.jsx)("span", { className: "pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(
15150
- import_lucide_react48.ChevronDown,
15259
+ import_lucide_react49.ChevronDown,
15151
15260
  {
15152
15261
  size: 16,
15153
15262
  className: cn(
@@ -15196,7 +15305,7 @@ function SelectAllRow({ label, checked, disabled, onToggle }) {
15196
15305
  // src/dashboard/select-checkboxes/SelectCheckboxes.tsx
15197
15306
  var import_jsx_runtime169 = require("react/jsx-runtime");
15198
15307
  function hasPaginationProps(props) {
15199
- return props.canLoadMore !== void 0 || props.isLoadingMore !== void 0 || props.loadMoreItems !== void 0 || props.onSearchChange !== void 0 || props.getFullSearchOption !== void 0;
15308
+ return props.canLoadMore !== void 0 || props.isLoadingMore !== void 0 || props.loadMoreItems !== void 0 || props.onSearchChange !== void 0;
15200
15309
  }
15201
15310
  function makeTriggerSlot(render) {
15202
15311
  function CustomTrigger(props) {
@@ -15316,6 +15425,7 @@ function SelectCheckboxesInternal(props, ref) {
15316
15425
  components,
15317
15426
  closeMenuOnSelect,
15318
15427
  searchPosition: searchable ? "dropdown" : "trigger",
15428
+ searchable,
15319
15429
  menuHeader,
15320
15430
  onInputChange: handleInputChange,
15321
15431
  isMulti: true
@@ -15556,7 +15666,7 @@ var Textarea = React60.forwardRef(function Textarea2({
15556
15666
 
15557
15667
  // src/dashboard/datepicker/Datepicker.tsx
15558
15668
  var React62 = __toESM(require("react"), 1);
15559
- var import_lucide_react49 = require("lucide-react");
15669
+ var import_lucide_react50 = require("lucide-react");
15560
15670
  var import_react_i18next39 = require("react-i18next");
15561
15671
 
15562
15672
  // src/airbnb-fields/datepicker/useDatePickerWheel.ts
@@ -16590,7 +16700,7 @@ var Datepicker = React62.forwardRef(
16590
16700
  children: [
16591
16701
  /* @__PURE__ */ (0, import_jsx_runtime173.jsx)("span", { className: "block min-w-0 flex-1 truncate text-left", children: triggerText ?? (isWheelOpen ? mobilePlaceholder : null) }),
16592
16702
  /* @__PURE__ */ (0, import_jsx_runtime173.jsx)("span", { className: "pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(
16593
- import_lucide_react49.ChevronDown,
16703
+ import_lucide_react50.ChevronDown,
16594
16704
  {
16595
16705
  size: 16,
16596
16706
  className: cn(
@@ -16685,7 +16795,7 @@ var Datepicker = React62.forwardRef(
16685
16795
  }
16686
16796
  ),
16687
16797
  /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(
16688
- import_lucide_react49.ChevronDown,
16798
+ import_lucide_react50.ChevronDown,
16689
16799
  {
16690
16800
  size: 14,
16691
16801
  onMouseDown: (event) => {
@@ -17017,7 +17127,7 @@ function resolveRangeSelection({
17017
17127
  }
17018
17128
 
17019
17129
  // src/dashboard/date-range-picker/components/DateRangeInputs.tsx
17020
- var import_lucide_react50 = require("lucide-react");
17130
+ var import_lucide_react51 = require("lucide-react");
17021
17131
  var import_jsx_runtime174 = require("react/jsx-runtime");
17022
17132
  var DEFAULT_PLACEHOLDER = "00-00-0000";
17023
17133
  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)]";
@@ -17137,7 +17247,7 @@ function DateRangeInputs({
17137
17247
  onClick: onReset,
17138
17248
  className: iconButtonClass,
17139
17249
  "aria-label": clearLabel,
17140
- children: /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(import_lucide_react50.SquareX, { size: 16, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
17250
+ children: /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(import_lucide_react51.SquareX, { size: 16, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
17141
17251
  }
17142
17252
  ),
17143
17253
  !readOnly && !hideCalendarIcon && /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
@@ -17152,7 +17262,7 @@ function DateRangeInputs({
17152
17262
  focusedInput !== null || isOpen ? "text-[var(--chekin-color-brand-blue)]" : "text-[var(--chekin-color-gray-2)]"
17153
17263
  ),
17154
17264
  "aria-label": openCalendarLabel,
17155
- children: /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(import_lucide_react50.CalendarDays, { size: 18 })
17265
+ children: /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(import_lucide_react51.CalendarDays, { size: 18 })
17156
17266
  }
17157
17267
  )
17158
17268
  ] })
@@ -17701,7 +17811,7 @@ var TimePicker = React68.forwardRef(function TimePicker2({ format: formatName =
17701
17811
 
17702
17812
  // src/dashboard/file-input/FileInput.tsx
17703
17813
  var React69 = __toESM(require("react"), 1);
17704
- var import_lucide_react51 = require("lucide-react");
17814
+ var import_lucide_react52 = require("lucide-react");
17705
17815
  var import_react_i18next42 = require("react-i18next");
17706
17816
  var import_jsx_runtime179 = require("react/jsx-runtime");
17707
17817
  function defaultDownload(url) {
@@ -17815,7 +17925,7 @@ var FileInput = React69.forwardRef(function FileInput2({
17815
17925
  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",
17816
17926
  children: [
17817
17927
  /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("span", { className: "truncate", children: resolvedDownloadLabel }),
17818
- /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(import_lucide_react51.Download, { size: 15 })
17928
+ /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(import_lucide_react52.Download, { size: 15 })
17819
17929
  ]
17820
17930
  }
17821
17931
  ) : /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("span", { className: "truncate text-[14px] font-medium text-[var(--chekin-color-brand-navy)]", children: value.name }),
@@ -17827,13 +17937,13 @@ var FileInput = React69.forwardRef(function FileInput2({
17827
17937
  onClick: handleClear,
17828
17938
  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]",
17829
17939
  "aria-label": t("remove_file"),
17830
- children: /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(import_lucide_react51.SquareX, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
17940
+ children: /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(import_lucide_react52.SquareX, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
17831
17941
  }
17832
17942
  )
17833
17943
  ]
17834
17944
  }
17835
17945
  ) : /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("span", { className: "block min-w-0 flex-1 truncate text-left text-[var(--chekin-color-gray-1)]", children: placeholder ?? "" }),
17836
- /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("span", { className: "ml-auto flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(import_lucide_react51.Paperclip, { size: 20 }) })
17946
+ /* @__PURE__ */ (0, import_jsx_runtime179.jsx)("span", { className: "ml-auto flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(import_lucide_react52.Paperclip, { size: 20 }) })
17837
17947
  ]
17838
17948
  }
17839
17949
  ),
@@ -18088,11 +18198,11 @@ LegacyTextarea.displayName = "LegacyTextarea";
18088
18198
 
18089
18199
  // src/airbnb-fields/datepicker/DatePicker.tsx
18090
18200
  var React72 = __toESM(require("react"), 1);
18091
- var import_lucide_react53 = require("lucide-react");
18201
+ var import_lucide_react54 = require("lucide-react");
18092
18202
 
18093
18203
  // src/airbnb-fields/field-trigger/FieldTrigger.tsx
18094
18204
  var React71 = __toESM(require("react"), 1);
18095
- var import_lucide_react52 = require("lucide-react");
18205
+ var import_lucide_react53 = require("lucide-react");
18096
18206
  var import_react_i18next43 = require("react-i18next");
18097
18207
  var import_jsx_runtime183 = require("react/jsx-runtime");
18098
18208
  var AirbnbFieldTrigger = React71.forwardRef(
@@ -18156,7 +18266,7 @@ var AirbnbFieldTrigger = React71.forwardRef(
18156
18266
  const resolvedTrailingAdornment = loading || trailingAdornment ? /* @__PURE__ */ (0, import_jsx_runtime183.jsxs)("span", { className: "flex items-center gap-2", children: [
18157
18267
  trailingAdornment,
18158
18268
  loading && /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(
18159
- import_lucide_react52.Loader2,
18269
+ import_lucide_react53.Loader2,
18160
18270
  {
18161
18271
  "aria-hidden": "true",
18162
18272
  className: "h-5 w-5 animate-spin text-[var(--chekin-color-gray-1)]"
@@ -18412,7 +18522,7 @@ var AirbnbDatePicker = React72.forwardRef(
18412
18522
  onClick: handleTriggerClick,
18413
18523
  onKeyDown: handleTriggerKeyDown,
18414
18524
  onBlur,
18415
- trailingAdornment: /* @__PURE__ */ (0, import_jsx_runtime184.jsx)(import_lucide_react53.Calendar, { className: "h-5 w-5 text-[#1F1F1B]", strokeWidth: 2 })
18525
+ trailingAdornment: /* @__PURE__ */ (0, import_jsx_runtime184.jsx)(import_lucide_react54.Calendar, { className: "h-5 w-5 text-[#1F1F1B]", strokeWidth: 2 })
18416
18526
  }
18417
18527
  ),
18418
18528
  /* @__PURE__ */ (0, import_jsx_runtime184.jsx)(
@@ -18450,7 +18560,7 @@ AirbnbDatePicker.displayName = "AirbnbDatePicker";
18450
18560
 
18451
18561
  // src/airbnb-fields/input/Input.tsx
18452
18562
  var React73 = __toESM(require("react"), 1);
18453
- var import_lucide_react54 = require("lucide-react");
18563
+ var import_lucide_react55 = require("lucide-react");
18454
18564
  var import_react_i18next44 = require("react-i18next");
18455
18565
  var import_jsx_runtime185 = require("react/jsx-runtime");
18456
18566
  var getInputValue = (value) => value != null ? String(value) : "";
@@ -18615,7 +18725,7 @@ var AirbnbInput = React73.forwardRef(
18615
18725
  className: "absolute bottom-0 right-0 flex h-6 w-6 items-center justify-center border-0 bg-transparent p-0 text-[#7A8399] hover:text-[#1F1F1B] hover:opacity-85 disabled:cursor-not-allowed disabled:opacity-50",
18616
18726
  "aria-label": isPasswordRevealed ? t("hide_password") : t("show_password"),
18617
18727
  children: /* @__PURE__ */ (0, import_jsx_runtime185.jsx)(
18618
- import_lucide_react54.Eye,
18728
+ import_lucide_react55.Eye,
18619
18729
  {
18620
18730
  size: 18,
18621
18731
  "aria-hidden": "true",
@@ -18633,7 +18743,7 @@ AirbnbInput.displayName = "AirbnbInput";
18633
18743
 
18634
18744
  // src/airbnb-fields/phone-field/PhoneField.tsx
18635
18745
  var React79 = __toESM(require("react"), 1);
18636
- var import_lucide_react56 = require("lucide-react");
18746
+ var import_lucide_react57 = require("lucide-react");
18637
18747
 
18638
18748
  // src/airbnb-fields/select/Select.tsx
18639
18749
  var React78 = __toESM(require("react"), 1);
@@ -18982,7 +19092,7 @@ function AirbnbSelectMobileContent({
18982
19092
 
18983
19093
  // src/airbnb-fields/select/SelectTrigger.tsx
18984
19094
  var React74 = __toESM(require("react"), 1);
18985
- var import_lucide_react55 = require("lucide-react");
19095
+ var import_lucide_react56 = require("lucide-react");
18986
19096
  var import_jsx_runtime190 = require("react/jsx-runtime");
18987
19097
  var AirbnbSelectTrigger = React74.forwardRef(
18988
19098
  ({
@@ -19037,7 +19147,7 @@ var AirbnbSelectTrigger = React74.forwardRef(
19037
19147
  onKeyDown,
19038
19148
  onBlur,
19039
19149
  trailingAdornment: /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(
19040
- import_lucide_react55.ChevronDown,
19150
+ import_lucide_react56.ChevronDown,
19041
19151
  {
19042
19152
  className: open ? "h-6 w-6 rotate-180 text-[#1F1F1B] transition-transform" : "h-6 w-6 text-[#1F1F1B] transition-transform"
19043
19153
  }
@@ -19821,7 +19931,7 @@ var AirbnbPhoneField = React79.forwardRef(
19821
19931
  children: [
19822
19932
  /* @__PURE__ */ (0, import_jsx_runtime192.jsx)("span", { children: valueLabel ?? codePlaceholder }),
19823
19933
  /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
19824
- import_lucide_react56.ChevronDown,
19934
+ import_lucide_react57.ChevronDown,
19825
19935
  {
19826
19936
  className: cn("h-5 w-5 transition-transform", open ? "rotate-180" : ""),
19827
19937
  strokeWidth: 2
@@ -19869,7 +19979,7 @@ AirbnbPhoneField.displayName = "AirbnbPhoneField";
19869
19979
 
19870
19980
  // src/airbnb-fields/searchable-select/SearchableSelect.tsx
19871
19981
  var React80 = __toESM(require("react"), 1);
19872
- var import_lucide_react57 = require("lucide-react");
19982
+ var import_lucide_react58 = require("lucide-react");
19873
19983
  var import_react_virtual3 = require("@tanstack/react-virtual");
19874
19984
  var import_react91 = require("react");
19875
19985
  var import_jsx_runtime193 = require("react/jsx-runtime");
@@ -20105,7 +20215,7 @@ var AirbnbSearchableSelectInternal = ({
20105
20215
  onKeyDown: handleTriggerKeyDown,
20106
20216
  onBlur,
20107
20217
  trailingAdornment: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(
20108
- import_lucide_react57.ChevronDown,
20218
+ import_lucide_react58.ChevronDown,
20109
20219
  {
20110
20220
  className: cn(
20111
20221
  "h-6 w-6 text-[#1F1F1B] transition-transform",
@@ -20203,7 +20313,7 @@ function AirbnbSearchableSelectContent({
20203
20313
  return /* @__PURE__ */ (0, import_jsx_runtime193.jsxs)("div", { className: "p-2", children: [
20204
20314
  /* @__PURE__ */ (0, import_jsx_runtime193.jsxs)("div", { className: "relative mb-2", children: [
20205
20315
  /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(
20206
- import_lucide_react57.Search,
20316
+ import_lucide_react58.Search,
20207
20317
  {
20208
20318
  "aria-hidden": "true",
20209
20319
  className: "absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 text-[#9696B9]"
@@ -20313,13 +20423,13 @@ function getNextEnabledIndex(options, startIndex, step) {
20313
20423
  // src/airbnb-fields/search-input/SearchInput.tsx
20314
20424
  var React81 = __toESM(require("react"), 1);
20315
20425
  var import_react_i18next45 = require("react-i18next");
20316
- var import_lucide_react58 = require("lucide-react");
20426
+ var import_lucide_react59 = require("lucide-react");
20317
20427
  var import_jsx_runtime194 = require("react/jsx-runtime");
20318
20428
  var AirbnbSearchInput = React81.forwardRef(({ onReset, placeholder, wrapperClassName, ...props }, ref) => {
20319
20429
  const { t } = (0, import_react_i18next45.useTranslation)();
20320
20430
  const placeholderText = placeholder || t("search_property") + "...";
20321
20431
  return /* @__PURE__ */ (0, import_jsx_runtime194.jsxs)("div", { className: cn("input-wrapper relative", wrapperClassName), children: [
20322
- /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(import_lucide_react58.Search, { className: "absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 transform text-[#9696B9]" }),
20432
+ /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(import_lucide_react59.Search, { className: "absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 transform text-[#9696B9]" }),
20323
20433
  /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(
20324
20434
  "input",
20325
20435
  {
@@ -20345,7 +20455,7 @@ var AirbnbSearchInput = React81.forwardRef(({ onReset, placeholder, wrapperClass
20345
20455
  variant: "ghost",
20346
20456
  onClick: onReset,
20347
20457
  className: "absolute right-0 top-1/2 h-5 w-5 -translate-y-1/2 transform text-[#9696B9]",
20348
- children: /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(import_lucide_react58.X, { className: "h-5 w-5" })
20458
+ children: /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(import_lucide_react59.X, { className: "h-5 w-5" })
20349
20459
  }
20350
20460
  )
20351
20461
  ] });
@@ -20355,7 +20465,7 @@ AirbnbSearchInput.displayName = "AirbnbSearchInput";
20355
20465
  // src/airbnb-fields/switch/Switch.tsx
20356
20466
  var React82 = __toESM(require("react"), 1);
20357
20467
  var SwitchPrimitives2 = __toESM(require("@radix-ui/react-switch"), 1);
20358
- var import_lucide_react59 = require("lucide-react");
20468
+ var import_lucide_react60 = require("lucide-react");
20359
20469
  var import_jsx_runtime195 = require("react/jsx-runtime");
20360
20470
  var AirbnbSwitch = React82.forwardRef(
20361
20471
  ({
@@ -20401,7 +20511,7 @@ var AirbnbSwitch = React82.forwardRef(
20401
20511
  "data-[state=checked]:translate-x-[12px] data-[state=unchecked]:translate-x-0"
20402
20512
  ),
20403
20513
  children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(
20404
- import_lucide_react59.Check,
20514
+ import_lucide_react60.Check,
20405
20515
  {
20406
20516
  "aria-hidden": "true",
20407
20517
  className: "h-3 w-3 text-[#222222] opacity-0 transition-opacity duration-150 group-data-[state=checked]:opacity-100",
@@ -20752,6 +20862,7 @@ AirbnbSwitch.displayName = "AirbnbSwitch";
20752
20862
  compressFile,
20753
20863
  compressImage,
20754
20864
  copyToClipboard,
20865
+ countriesFilter,
20755
20866
  createDisabledMatchers,
20756
20867
  emptyMediaVariants,
20757
20868
  findPhoneCode,