@chekinapp/ui 0.0.24 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -307,6 +307,7 @@ __export(index_exports, {
307
307
  useOutsideClick: () => useOutsideClick,
308
308
  usePagination: () => usePagination,
309
309
  usePrevious: () => usePrevious,
310
+ usePromisedModalControls: () => usePromisedModalControls,
310
311
  useRadioOptions: () => useRadioOptions,
311
312
  useScreenResize: () => useScreenResize,
312
313
  useScrollFrameIntoView: () => useScrollFrameIntoView,
@@ -2895,6 +2896,25 @@ function useHover() {
2895
2896
  };
2896
2897
  }
2897
2898
 
2899
+ // src/hooks/use-promised-modal-controls.ts
2900
+ var import_react26 = require("react");
2901
+ var usePromisedModalControls = () => {
2902
+ const { closeModal, isOpen, openModal } = useModalControls();
2903
+ const resolveRef = (0, import_react26.useRef)();
2904
+ const openModalWithPromise = async () => {
2905
+ openModal();
2906
+ return new Promise((resolve) => {
2907
+ resolveRef.current = resolve;
2908
+ });
2909
+ };
2910
+ return {
2911
+ isOpen,
2912
+ openModal: openModalWithPromise,
2913
+ closeModal,
2914
+ resolveRef
2915
+ };
2916
+ };
2917
+
2898
2918
  // src/dialog/Dialog.tsx
2899
2919
  var import_jsx_runtime31 = require("react/jsx-runtime");
2900
2920
  function useIframeTitleFix(titleRef) {
@@ -3130,7 +3150,7 @@ function DownloadEntryFormsButton({
3130
3150
  }
3131
3151
 
3132
3152
  // src/dropdown-button/DropdownButton.tsx
3133
- var import_react26 = require("react");
3153
+ var import_react27 = require("react");
3134
3154
 
3135
3155
  // src/dropdown-menu/DropdownMenu.tsx
3136
3156
  var React13 = __toESM(require("react"), 1);
@@ -3194,7 +3214,7 @@ function DropdownButton({
3194
3214
  modal,
3195
3215
  className
3196
3216
  }) {
3197
- const [isOpen, setIsOpen] = (0, import_react26.useState)(false);
3217
+ const [isOpen, setIsOpen] = (0, import_react27.useState)(false);
3198
3218
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(DropdownMenu, { onOpenChange: setIsOpen, modal, children: [
3199
3219
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropdownMenuTrigger, { asChild: true, children: typeof trigger === "function" ? trigger(isOpen) : trigger }),
3200
3220
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
@@ -3321,7 +3341,7 @@ var import_lucide_react12 = require("lucide-react");
3321
3341
  var import_react_i18next7 = require("react-i18next");
3322
3342
 
3323
3343
  // src/halo-icon/HaloIcon.tsx
3324
- var import_react27 = require("react");
3344
+ var import_react28 = require("react");
3325
3345
 
3326
3346
  // src/halo-icon/constants.ts
3327
3347
  var HALO_ICON_STATUS = {
@@ -3351,7 +3371,7 @@ var statusStyles = {
3351
3371
  color: "text-chekin-red"
3352
3372
  }
3353
3373
  };
3354
- var HaloIcon = (0, import_react27.forwardRef)(
3374
+ var HaloIcon = (0, import_react28.forwardRef)(
3355
3375
  ({
3356
3376
  children,
3357
3377
  variant = "default",
@@ -3532,7 +3552,7 @@ var Switch = React15.forwardRef(
3532
3552
  Switch.displayName = SwitchPrimitives.Root.displayName;
3533
3553
 
3534
3554
  // src/video-player/VideoPlayer.tsx
3535
- var import_react28 = require("react");
3555
+ var import_react29 = require("react");
3536
3556
  var import_react_i18next8 = require("react-i18next");
3537
3557
  var import_lucide_react13 = require("lucide-react");
3538
3558
  var import_jsx_runtime47 = require("react/jsx-runtime");
@@ -3545,20 +3565,20 @@ function VideoPlayer({
3545
3565
  autoPlay = false
3546
3566
  }) {
3547
3567
  const { t } = (0, import_react_i18next8.useTranslation)();
3548
- const videoRef = (0, import_react28.useRef)(null);
3549
- const iframeRef = (0, import_react28.useRef)(null);
3550
- const containerRef = (0, import_react28.useRef)(null);
3551
- const [isPlaying, setIsPlaying] = (0, import_react28.useState)(false);
3552
- const [isMuted, setIsMuted] = (0, import_react28.useState)(false);
3553
- const [currentTime, setCurrentTime] = (0, import_react28.useState)(0);
3554
- const [duration, setDuration] = (0, import_react28.useState)(0);
3555
- const [isFullScreenMode, setIsFullScreenMode] = (0, import_react28.useState)(isFullScreen);
3556
- const [isLoading, setIsLoading] = (0, import_react28.useState)(true);
3557
- const [videoSource, setVideoSource] = (0, import_react28.useState)("file");
3558
- const [youtubeEmbedUrl, setYoutubeEmbedUrl] = (0, import_react28.useState)("");
3559
- const [vimeoEmbedUrl, setVimeoEmbedUrl] = (0, import_react28.useState)("");
3568
+ const videoRef = (0, import_react29.useRef)(null);
3569
+ const iframeRef = (0, import_react29.useRef)(null);
3570
+ const containerRef = (0, import_react29.useRef)(null);
3571
+ const [isPlaying, setIsPlaying] = (0, import_react29.useState)(false);
3572
+ const [isMuted, setIsMuted] = (0, import_react29.useState)(false);
3573
+ const [currentTime, setCurrentTime] = (0, import_react29.useState)(0);
3574
+ const [duration, setDuration] = (0, import_react29.useState)(0);
3575
+ const [isFullScreenMode, setIsFullScreenMode] = (0, import_react29.useState)(isFullScreen);
3576
+ const [isLoading, setIsLoading] = (0, import_react29.useState)(true);
3577
+ const [videoSource, setVideoSource] = (0, import_react29.useState)("file");
3578
+ const [youtubeEmbedUrl, setYoutubeEmbedUrl] = (0, import_react29.useState)("");
3579
+ const [vimeoEmbedUrl, setVimeoEmbedUrl] = (0, import_react29.useState)("");
3560
3580
  useClickEscape({ enabled: isFullScreenMode, onClick: onClose });
3561
- (0, import_react28.useEffect)(() => {
3581
+ (0, import_react29.useEffect)(() => {
3562
3582
  const youtubeRegex = /(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]{11})/;
3563
3583
  const vimeoRegex = /(?:vimeo\.com\/|vimeo\.com\/video\/)(\d+)/;
3564
3584
  const youtubeMatch = src.match(youtubeRegex);
@@ -3587,7 +3607,7 @@ function VideoPlayer({
3587
3607
  setYoutubeEmbedUrl("");
3588
3608
  setVimeoEmbedUrl("");
3589
3609
  }, [src, autoPlay]);
3590
- (0, import_react28.useEffect)(() => {
3610
+ (0, import_react29.useEffect)(() => {
3591
3611
  if (videoSource !== "file") return;
3592
3612
  const video = videoRef.current;
3593
3613
  if (!video) return;
@@ -3615,7 +3635,7 @@ function VideoPlayer({
3615
3635
  video.removeEventListener("canplay", handleCanPlay);
3616
3636
  };
3617
3637
  }, [videoSource]);
3618
- (0, import_react28.useEffect)(() => {
3638
+ (0, import_react29.useEffect)(() => {
3619
3639
  if (isFullScreenMode && videoRef.current && videoSource === "file") {
3620
3640
  void videoRef.current.play();
3621
3641
  setIsPlaying(true);
@@ -3892,10 +3912,10 @@ function FeatureCard({
3892
3912
  }
3893
3913
 
3894
3914
  // src/file-input-button/FileInputButton.tsx
3895
- var import_react29 = require("react");
3915
+ var import_react30 = require("react");
3896
3916
  var import_lucide_react15 = require("lucide-react");
3897
3917
  var import_jsx_runtime49 = require("react/jsx-runtime");
3898
- var FileInputButton = (0, import_react29.forwardRef)(
3918
+ var FileInputButton = (0, import_react30.forwardRef)(
3899
3919
  ({
3900
3920
  label,
3901
3921
  onChange,
@@ -3907,7 +3927,7 @@ var FileInputButton = (0, import_react29.forwardRef)(
3907
3927
  size = "default",
3908
3928
  ...props
3909
3929
  }, ref) => {
3910
- const handleChange = (0, import_react29.useCallback)(
3930
+ const handleChange = (0, import_react30.useCallback)(
3911
3931
  (event) => {
3912
3932
  onChange?.(event);
3913
3933
  event.target.value = "";
@@ -3987,7 +4007,7 @@ var FormBox = {
3987
4007
  };
3988
4008
 
3989
4009
  // src/free-text-field/FreeTextField.tsx
3990
- var import_react30 = require("react");
4010
+ var import_react31 = require("react");
3991
4011
  var import_react_i18next10 = require("react-i18next");
3992
4012
 
3993
4013
  // src/free-text-field/styles.module.css
@@ -3995,7 +4015,7 @@ var styles_default3 = {};
3995
4015
 
3996
4016
  // src/free-text-field/FreeTextField.tsx
3997
4017
  var import_jsx_runtime54 = require("react/jsx-runtime");
3998
- var FreeTextField = (0, import_react30.forwardRef)(
4018
+ var FreeTextField = (0, import_react31.forwardRef)(
3999
4019
  ({
4000
4020
  label,
4001
4021
  error,
@@ -4017,9 +4037,9 @@ var FreeTextField = (0, import_react30.forwardRef)(
4017
4037
  ...inputProps
4018
4038
  }, ref) => {
4019
4039
  const { t } = (0, import_react_i18next10.useTranslation)();
4020
- const inputId = (0, import_react30.useId)();
4021
- const [internalValue, setInternalValue] = (0, import_react30.useState)(defaultValue ?? "");
4022
- const [isFocused, setIsFocused] = (0, import_react30.useState)(false);
4040
+ const inputId = (0, import_react31.useId)();
4041
+ const [internalValue, setInternalValue] = (0, import_react31.useState)(defaultValue ?? "");
4042
+ const [isFocused, setIsFocused] = (0, import_react31.useState)(false);
4023
4043
  const currentValue = value !== void 0 ? value : internalValue;
4024
4044
  const isEmpty = !currentValue || String(currentValue).length === 0;
4025
4045
  const hasError = Boolean(error);
@@ -4142,9 +4162,9 @@ var FramedIcon = React16.forwardRef(
4142
4162
  FramedIcon.displayName = "FramedIcon";
4143
4163
 
4144
4164
  // src/grid-items/GridItems.tsx
4145
- var import_react31 = require("react");
4165
+ var import_react32 = require("react");
4146
4166
  var import_jsx_runtime56 = require("react/jsx-runtime");
4147
- var GridItems = (0, import_react31.forwardRef)(
4167
+ var GridItems = (0, import_react32.forwardRef)(
4148
4168
  ({ children, title, placeholder, className }, ref) => /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
4149
4169
  "div",
4150
4170
  {
@@ -4221,9 +4241,9 @@ function HelpTooltip({
4221
4241
  }
4222
4242
 
4223
4243
  // src/icon/Icon.tsx
4224
- var import_react32 = require("react");
4244
+ var import_react33 = require("react");
4225
4245
  var import_jsx_runtime58 = require("react/jsx-runtime");
4226
- var MissingIcon = (0, import_react32.forwardRef)(
4246
+ var MissingIcon = (0, import_react33.forwardRef)(
4227
4247
  ({ size = 24, className = "", fallback = null, color, ...props }, ref) => {
4228
4248
  if (fallback) {
4229
4249
  return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_jsx_runtime58.Fragment, { children: fallback });
@@ -4252,8 +4272,8 @@ var MissingIcon = (0, import_react32.forwardRef)(
4252
4272
  }
4253
4273
  );
4254
4274
  MissingIcon.displayName = "MissingIcon";
4255
- var Icon = (0, import_react32.memo)(
4256
- (0, import_react32.forwardRef)(
4275
+ var Icon = (0, import_react33.memo)(
4276
+ (0, import_react33.forwardRef)(
4257
4277
  ({ name: _name, size = 24, className = "", fallback = null, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
4258
4278
  MissingIcon,
4259
4279
  {
@@ -4351,7 +4371,7 @@ function InfoBox({ className, children }) {
4351
4371
  }
4352
4372
 
4353
4373
  // src/image/Image.tsx
4354
- var import_react33 = require("react");
4374
+ var import_react34 = require("react");
4355
4375
  var import_jsx_runtime61 = require("react/jsx-runtime");
4356
4376
  function Image2({
4357
4377
  src,
@@ -4360,7 +4380,7 @@ function Image2({
4360
4380
  fallbackSrc = "https://placehold.co/600x400?text=Image",
4361
4381
  ...props
4362
4382
  }) {
4363
- const [error, setError] = (0, import_react33.useState)(false);
4383
+ const [error, setError] = (0, import_react34.useState)(false);
4364
4384
  return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
4365
4385
  "img",
4366
4386
  {
@@ -4404,10 +4424,10 @@ Input.displayName = "Input";
4404
4424
  var React19 = __toESM(require("react"), 1);
4405
4425
 
4406
4426
  // src/input-otp/InputOTPContext.ts
4407
- var import_react34 = require("react");
4408
- var InputOTPContext = (0, import_react34.createContext)(null);
4427
+ var import_react35 = require("react");
4428
+ var InputOTPContext = (0, import_react35.createContext)(null);
4409
4429
  function useInputOTPContext() {
4410
- const ctx = (0, import_react34.useContext)(InputOTPContext);
4430
+ const ctx = (0, import_react35.useContext)(InputOTPContext);
4411
4431
  if (!ctx) {
4412
4432
  throw new Error("InputOTP compound components must be used within <InputOTP>");
4413
4433
  }
@@ -4419,7 +4439,7 @@ function extractDigits(str) {
4419
4439
  }
4420
4440
 
4421
4441
  // src/input-otp/useInputOTP.ts
4422
- var import_react35 = require("react");
4442
+ var import_react36 = require("react");
4423
4443
  function useInputOTP({
4424
4444
  maxLength,
4425
4445
  value,
@@ -4428,12 +4448,12 @@ function useInputOTP({
4428
4448
  autoFocus,
4429
4449
  error
4430
4450
  }) {
4431
- const [activeIndex, setActiveIndex] = (0, import_react35.useState)(-1);
4432
- const inputRefs = (0, import_react35.useRef)([]);
4433
- const containerRef = (0, import_react35.useRef)(null);
4434
- const blurTimeoutRef = (0, import_react35.useRef)();
4435
- const slotsRef = (0, import_react35.useRef)(Array.from({ length: maxLength }, () => ""));
4436
- const slots = (0, import_react35.useMemo)(() => {
4451
+ const [activeIndex, setActiveIndex] = (0, import_react36.useState)(-1);
4452
+ const inputRefs = (0, import_react36.useRef)([]);
4453
+ const containerRef = (0, import_react36.useRef)(null);
4454
+ const blurTimeoutRef = (0, import_react36.useRef)();
4455
+ const slotsRef = (0, import_react36.useRef)(Array.from({ length: maxLength }, () => ""));
4456
+ const slots = (0, import_react36.useMemo)(() => {
4437
4457
  const nextSlots = Array.from({ length: maxLength }, () => "");
4438
4458
  for (let index = 0; index < Math.min(value.length, maxLength); index += 1) {
4439
4459
  const char = value[index];
@@ -4444,7 +4464,7 @@ function useInputOTP({
4444
4464
  return nextSlots;
4445
4465
  }, [value, maxLength]);
4446
4466
  slotsRef.current = slots;
4447
- const emitValue = (0, import_react35.useCallback)(
4467
+ const emitValue = (0, import_react36.useCallback)(
4448
4468
  (newSlots) => {
4449
4469
  let lastFilledIndex = -1;
4450
4470
  for (let index = newSlots.length - 1; index >= 0; index -= 1) {
@@ -4465,12 +4485,12 @@ function useInputOTP({
4465
4485
  },
4466
4486
  [onChange]
4467
4487
  );
4468
- (0, import_react35.useEffect)(() => {
4488
+ (0, import_react36.useEffect)(() => {
4469
4489
  if (autoFocus && inputRefs.current[0]) {
4470
4490
  inputRefs.current[0].focus();
4471
4491
  }
4472
4492
  }, [autoFocus]);
4473
- const handleContainerFocusIn = (0, import_react35.useCallback)((event) => {
4493
+ const handleContainerFocusIn = (0, import_react36.useCallback)((event) => {
4474
4494
  clearTimeout(blurTimeoutRef.current);
4475
4495
  const target = event.target;
4476
4496
  const slotIndex = inputRefs.current.indexOf(target);
@@ -4478,7 +4498,7 @@ function useInputOTP({
4478
4498
  setActiveIndex(slotIndex);
4479
4499
  }
4480
4500
  }, []);
4481
- const handleContainerFocusOut = (0, import_react35.useCallback)(() => {
4501
+ const handleContainerFocusOut = (0, import_react36.useCallback)(() => {
4482
4502
  clearTimeout(blurTimeoutRef.current);
4483
4503
  blurTimeoutRef.current = setTimeout(() => {
4484
4504
  if (!containerRef.current?.contains(document.activeElement)) {
@@ -4486,8 +4506,8 @@ function useInputOTP({
4486
4506
  }
4487
4507
  }, 0);
4488
4508
  }, []);
4489
- (0, import_react35.useEffect)(() => () => clearTimeout(blurTimeoutRef.current), []);
4490
- const handleDigitInput = (0, import_react35.useCallback)(
4509
+ (0, import_react36.useEffect)(() => () => clearTimeout(blurTimeoutRef.current), []);
4510
+ const handleDigitInput = (0, import_react36.useCallback)(
4491
4511
  (index, digit) => {
4492
4512
  if (!DIGIT_REGEX.test(digit)) return;
4493
4513
  const newSlots = [...slotsRef.current];
@@ -4501,7 +4521,7 @@ function useInputOTP({
4501
4521
  },
4502
4522
  [maxLength, emitValue]
4503
4523
  );
4504
- const handleDelete = (0, import_react35.useCallback)(
4524
+ const handleDelete = (0, import_react36.useCallback)(
4505
4525
  (index) => {
4506
4526
  const newSlots = [...slotsRef.current];
4507
4527
  if (newSlots[index]) {
@@ -4516,7 +4536,7 @@ function useInputOTP({
4516
4536
  },
4517
4537
  [emitValue]
4518
4538
  );
4519
- const handlePaste = (0, import_react35.useCallback)(
4539
+ const handlePaste = (0, import_react36.useCallback)(
4520
4540
  (text) => {
4521
4541
  const digits = extractDigits(text).slice(0, maxLength);
4522
4542
  if (digits.length > 0) {
@@ -4532,7 +4552,7 @@ function useInputOTP({
4532
4552
  },
4533
4553
  [maxLength, emitValue]
4534
4554
  );
4535
- const contextValue = (0, import_react35.useMemo)(
4555
+ const contextValue = (0, import_react36.useMemo)(
4536
4556
  () => ({
4537
4557
  slots,
4538
4558
  activeIndex,
@@ -4565,7 +4585,7 @@ function useInputOTP({
4565
4585
  }
4566
4586
 
4567
4587
  // src/input-otp/useInputOTPSlot.ts
4568
- var import_react36 = require("react");
4588
+ var import_react37 = require("react");
4569
4589
  function useInputOTPSlot(index) {
4570
4590
  const {
4571
4591
  slots,
@@ -4635,13 +4655,13 @@ function useInputOTPSlot(index) {
4635
4655
  event.preventDefault();
4636
4656
  handlePaste(event.clipboardData.getData("text/plain"));
4637
4657
  };
4638
- const setInputRef = (0, import_react36.useCallback)(
4658
+ const setInputRef = (0, import_react37.useCallback)(
4639
4659
  (element) => {
4640
4660
  inputRefs.current[index] = element;
4641
4661
  },
4642
4662
  [index, inputRefs]
4643
4663
  );
4644
- const focusSlot = (0, import_react36.useCallback)(() => {
4664
+ const focusSlot = (0, import_react37.useCallback)(() => {
4645
4665
  inputRefs.current[index]?.focus();
4646
4666
  }, [index, inputRefs]);
4647
4667
  return {
@@ -4743,7 +4763,7 @@ var InputOTPSeparator = React19.forwardRef(
4743
4763
  InputOTPSeparator.displayName = "InputOTPSeparator";
4744
4764
 
4745
4765
  // src/icons-dropdown/IconsDropdown.tsx
4746
- var import_react37 = require("react");
4766
+ var import_react38 = require("react");
4747
4767
  var import_jsx_runtime64 = require("react/jsx-runtime");
4748
4768
  function IconsDropdown({
4749
4769
  icons,
@@ -4755,7 +4775,7 @@ function IconsDropdown({
4755
4775
  defaultOpen,
4756
4776
  onOpenChange: onOpenChangeProp
4757
4777
  }) {
4758
- const [open, setOpen] = (0, import_react37.useState)(defaultOpen ?? false);
4778
+ const [open, setOpen] = (0, import_react38.useState)(defaultOpen ?? false);
4759
4779
  function handleOpenChange(value) {
4760
4780
  setOpen(value);
4761
4781
  onOpenChangeProp?.(value);
@@ -5338,9 +5358,9 @@ function LearnMoreButton({ label, ...props }) {
5338
5358
  }
5339
5359
 
5340
5360
  // src/link/Link.tsx
5341
- var import_react38 = require("react");
5361
+ var import_react39 = require("react");
5342
5362
  var import_jsx_runtime68 = require("react/jsx-runtime");
5343
- var LinkInternal = (0, import_react38.forwardRef)(
5363
+ var LinkInternal = (0, import_react39.forwardRef)(
5344
5364
  ({ disabled = false, className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
5345
5365
  "a",
5346
5366
  {
@@ -5359,17 +5379,17 @@ var LinkInternal = (0, import_react38.forwardRef)(
5359
5379
  )
5360
5380
  );
5361
5381
  LinkInternal.displayName = "Link";
5362
- var Link = (0, import_react38.memo)(LinkInternal);
5382
+ var Link = (0, import_react39.memo)(LinkInternal);
5363
5383
 
5364
5384
  // src/image-full-screen-view/ImageFullScreenView.tsx
5365
- var import_react39 = require("react");
5385
+ var import_react40 = require("react");
5366
5386
  var import_lucide_react20 = require("lucide-react");
5367
5387
  var import_react_i18next13 = require("react-i18next");
5368
5388
  var import_jsx_runtime69 = require("react/jsx-runtime");
5369
5389
  function ImageFullScreenView({ src, alt, onClose }) {
5370
5390
  const { t } = (0, import_react_i18next13.useTranslation)();
5371
- const [scale, setScale] = (0, import_react39.useState)(1);
5372
- const [rotation, setRotation] = (0, import_react39.useState)(0);
5391
+ const [scale, setScale] = (0, import_react40.useState)(1);
5392
+ const [rotation, setRotation] = (0, import_react40.useState)(0);
5373
5393
  useClickEscape({ onClick: onClose });
5374
5394
  const zoomIn = () => setScale((value) => Math.min(value + 0.25, 3));
5375
5395
  const zoomOut = () => setScale((value) => Math.max(value - 0.25, 0.5));
@@ -5567,7 +5587,7 @@ var METRIC_CARD_VARIANTS = {
5567
5587
  };
5568
5588
 
5569
5589
  // src/modal/Modal.tsx
5570
- var import_react40 = require("react");
5590
+ var import_react41 = require("react");
5571
5591
  var import_lucide_react23 = require("lucide-react");
5572
5592
 
5573
5593
  // src/modal/styles.module.css
@@ -5598,7 +5618,7 @@ function Modal({
5598
5618
  container,
5599
5619
  modal
5600
5620
  }) {
5601
- const contentRef = (0, import_react40.useRef)(null);
5621
+ const contentRef = (0, import_react41.useRef)(null);
5602
5622
  useScrollFrameIntoView(open, { elementRef: contentRef });
5603
5623
  const handleClose = () => {
5604
5624
  onOpenChange?.(false);
@@ -5640,7 +5660,7 @@ function Modal({
5640
5660
  }
5641
5661
  ) });
5642
5662
  }
5643
- var ModalButton = (0, import_react40.forwardRef)(
5663
+ var ModalButton = (0, import_react41.forwardRef)(
5644
5664
  ({ children, size, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
5645
5665
  Button,
5646
5666
  {
@@ -5656,9 +5676,9 @@ ModalButton.displayName = "ModalButton";
5656
5676
  Modal.displayName = "Modal";
5657
5677
 
5658
5678
  // src/modal-loader/ModalLoader.tsx
5659
- var import_react41 = require("react");
5679
+ var import_react42 = require("react");
5660
5680
  var import_jsx_runtime73 = require("react/jsx-runtime");
5661
- var ModalLoader = (0, import_react41.memo)(({ visible, className }) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
5681
+ var ModalLoader = (0, import_react42.memo)(({ visible, className }) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
5662
5682
  "div",
5663
5683
  {
5664
5684
  className: cn(
@@ -6046,7 +6066,7 @@ var PopoverContent = React21.forwardRef(({ className, sideOffset = 8, align = "s
6046
6066
  PopoverContent.displayName = "PopoverContent";
6047
6067
 
6048
6068
  // src/radio/Radio.tsx
6049
- var import_react43 = require("react");
6069
+ var import_react44 = require("react");
6050
6070
 
6051
6071
  // src/radio-group/RadioGroup.tsx
6052
6072
  var React22 = __toESM(require("react"), 1);
@@ -6079,11 +6099,11 @@ var RadioGroupItem = React22.forwardRef(({ className, ...props }, ref) => /* @__
6079
6099
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
6080
6100
 
6081
6101
  // src/radio/useRadioOptions.ts
6082
- var import_react42 = require("react");
6102
+ var import_react43 = require("react");
6083
6103
  function useRadioOptions({ options, defaultValue, onChange }) {
6084
6104
  const initialValue = (typeof defaultValue === "string" ? options.find((option) => option.value === defaultValue) : defaultValue) || "";
6085
- const [selectedValue, setSelectedValue] = (0, import_react42.useState)(initialValue);
6086
- const handleValueChange = (0, import_react42.useCallback)(
6105
+ const [selectedValue, setSelectedValue] = (0, import_react43.useState)(initialValue);
6106
+ const handleValueChange = (0, import_react43.useCallback)(
6087
6107
  (value) => {
6088
6108
  setSelectedValue(value);
6089
6109
  const selectedOption = options.find((option) => option.value === value) || "";
@@ -6104,7 +6124,7 @@ var styles_default5 = {};
6104
6124
 
6105
6125
  // src/radio/Radio.tsx
6106
6126
  var import_jsx_runtime80 = require("react/jsx-runtime");
6107
- var Radio = (0, import_react43.forwardRef)(
6127
+ var Radio = (0, import_react44.forwardRef)(
6108
6128
  ({ options, value, onChange, error, className = "", disabled = false, renderOption }, ref) => {
6109
6129
  const { selectedValue, handleValueChange } = useRadioOptions({
6110
6130
  options,
@@ -6494,7 +6514,7 @@ var SectionTagColors = /* @__PURE__ */ ((SectionTagColors2) => {
6494
6514
  })(SectionTagColors || {});
6495
6515
 
6496
6516
  // src/section/Section.tsx
6497
- var import_react44 = require("react");
6517
+ var import_react45 = require("react");
6498
6518
  var import_lucide_react31 = require("lucide-react");
6499
6519
 
6500
6520
  // src/section/constants.ts
@@ -6521,7 +6541,7 @@ function TooltipInfo({ content, className }) {
6521
6541
  }
6522
6542
  ) });
6523
6543
  }
6524
- var Section = (0, import_react44.forwardRef)(
6544
+ var Section = (0, import_react45.forwardRef)(
6525
6545
  ({
6526
6546
  children,
6527
6547
  title,
@@ -6573,17 +6593,17 @@ var Section = (0, import_react44.forwardRef)(
6573
6593
  )
6574
6594
  );
6575
6595
  Section.displayName = "Section";
6576
- var SubSection = (0, import_react44.forwardRef)(
6596
+ var SubSection = (0, import_react45.forwardRef)(
6577
6597
  ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Section, { ref, className: cn(Section_default.section_sub, className), ...props })
6578
6598
  );
6579
6599
  SubSection.displayName = "SubSection";
6580
- var DividingSubsection = (0, import_react44.forwardRef)(
6600
+ var DividingSubsection = (0, import_react45.forwardRef)(
6581
6601
  ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(SubSection, { ref, className: cn(Section_default.section_dividing, className), ...props })
6582
6602
  );
6583
6603
  DividingSubsection.displayName = "DividingSubsection";
6584
6604
 
6585
6605
  // src/selectors/Selectors.tsx
6586
- var import_react45 = require("react");
6606
+ var import_react46 = require("react");
6587
6607
 
6588
6608
  // src/selector-button/styles.module.css
6589
6609
  var styles_default7 = {};
@@ -6655,8 +6675,8 @@ var getValueArray = (value) => {
6655
6675
  return [];
6656
6676
  };
6657
6677
  function getSelectorContent(label, disabled, readOnly, active) {
6658
- if ((0, import_react45.isValidElement)(label)) {
6659
- return (0, import_react45.cloneElement)(label, {
6678
+ if ((0, import_react46.isValidElement)(label)) {
6679
+ return (0, import_react46.cloneElement)(label, {
6660
6680
  disabled,
6661
6681
  readOnly,
6662
6682
  active
@@ -6701,7 +6721,7 @@ function SelectorsInternal({
6701
6721
  }
6702
6722
  };
6703
6723
  const isAnyActive = getValueArray(value).length > 0;
6704
- (0, import_react45.useEffect)(() => {
6724
+ (0, import_react46.useEffect)(() => {
6705
6725
  onAnySelectorActive?.(isAnyActive);
6706
6726
  }, [isAnyActive, onAnySelectorActive]);
6707
6727
  return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(import_jsx_runtime91.Fragment, { children: [
@@ -6744,7 +6764,7 @@ function SelectorsInternal({
6744
6764
  )
6745
6765
  ] });
6746
6766
  }
6747
- var Selectors = (0, import_react45.forwardRef)(SelectorsInternal);
6767
+ var Selectors = (0, import_react46.forwardRef)(SelectorsInternal);
6748
6768
 
6749
6769
  // src/separator/Separator.tsx
6750
6770
  var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
@@ -6904,19 +6924,19 @@ function Skeleton({ className, ...props }) {
6904
6924
  }
6905
6925
 
6906
6926
  // src/sidebar/SidebarContext.ts
6907
- var import_react46 = require("react");
6908
- var SidebarContext = (0, import_react46.createContext)(null);
6927
+ var import_react47 = require("react");
6928
+ var SidebarContext = (0, import_react47.createContext)(null);
6909
6929
 
6910
6930
  // src/sidebar/useSidebarMenuButton.ts
6911
- var import_react48 = require("react");
6931
+ var import_react49 = require("react");
6912
6932
 
6913
6933
  // src/sidebar/SidebarMenuButtonContext.ts
6914
- var import_react47 = require("react");
6915
- var SidebarMenuButtonContext = (0, import_react47.createContext)(null);
6934
+ var import_react48 = require("react");
6935
+ var SidebarMenuButtonContext = (0, import_react48.createContext)(null);
6916
6936
 
6917
6937
  // src/sidebar/useSidebarMenuButton.ts
6918
6938
  function useSidebarMenuButton() {
6919
- return (0, import_react48.useContext)(SidebarMenuButtonContext);
6939
+ return (0, import_react49.useContext)(SidebarMenuButtonContext);
6920
6940
  }
6921
6941
 
6922
6942
  // src/sidebar/SidebarIcon.tsx
@@ -6957,16 +6977,16 @@ var SidebarIcon = ({
6957
6977
  };
6958
6978
 
6959
6979
  // src/sidebar/useSidebar.ts
6960
- var import_react49 = require("react");
6980
+ var import_react50 = require("react");
6961
6981
  function useSidebar() {
6962
- const context = (0, import_react49.useContext)(SidebarContext);
6982
+ const context = (0, import_react50.useContext)(SidebarContext);
6963
6983
  if (!context) {
6964
6984
  throw new Error("useSidebar must be used within a SidebarProvider.");
6965
6985
  }
6966
6986
  return context;
6967
6987
  }
6968
6988
  function useSidebarSafe() {
6969
- return (0, import_react49.useContext)(SidebarContext);
6989
+ return (0, import_react50.useContext)(SidebarContext);
6970
6990
  }
6971
6991
 
6972
6992
  // src/sidebar/Sidebar.tsx
@@ -7539,9 +7559,9 @@ var VALUE_PART = 1;
7539
7559
  var getSidebarState = (stateName) => document.cookie.split("; ").find((row) => row.startsWith(`${stateName}=`))?.split("=")[VALUE_PART] === "true";
7540
7560
 
7541
7561
  // src/circular-loader/CircularLoader.tsx
7542
- var import_react50 = __toESM(require("react"), 1);
7562
+ var import_react51 = __toESM(require("react"), 1);
7543
7563
  var import_jsx_runtime97 = require("react/jsx-runtime");
7544
- var CircularLoader = import_react50.default.memo(
7564
+ var CircularLoader = import_react51.default.memo(
7545
7565
  ({ visible = true, height, width, position, label, className }) => {
7546
7566
  if (!visible) return null;
7547
7567
  return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
@@ -7635,10 +7655,10 @@ var CircularLoader = import_react50.default.memo(
7635
7655
  CircularLoader.displayName = "CircularLoader";
7636
7656
 
7637
7657
  // src/small-grid-single-item/SmallGridSingleItem.tsx
7638
- var import_react51 = require("react");
7658
+ var import_react52 = require("react");
7639
7659
  var import_lucide_react34 = require("lucide-react");
7640
7660
  var import_jsx_runtime98 = require("react/jsx-runtime");
7641
- var SmallGridSingleItem = (0, import_react51.memo)(
7661
+ var SmallGridSingleItem = (0, import_react52.memo)(
7642
7662
  ({
7643
7663
  title,
7644
7664
  subtitle,
@@ -7759,7 +7779,7 @@ function SortingAction({
7759
7779
  }
7760
7780
 
7761
7781
  // src/status-button/StatusButton.tsx
7762
- var import_react52 = require("react");
7782
+ var import_react53 = require("react");
7763
7783
  var import_react_i18next20 = require("react-i18next");
7764
7784
  var import_lucide_react36 = require("lucide-react");
7765
7785
  var import_jsx_runtime100 = require("react/jsx-runtime");
@@ -7777,7 +7797,7 @@ function StatusButton({
7777
7797
  ...props
7778
7798
  }) {
7779
7799
  const { t } = (0, import_react_i18next20.useTranslation)();
7780
- const configMap = (0, import_react52.useMemo)(() => {
7800
+ const configMap = (0, import_react53.useMemo)(() => {
7781
7801
  const defaultLoadingConfig = {
7782
7802
  text: loadingText ?? `${t("saving")}...`,
7783
7803
  icon: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react36.Loader2, { className: "h-4 w-4 animate-spin" }),
@@ -7902,9 +7922,9 @@ function Stepper({
7902
7922
  }
7903
7923
 
7904
7924
  // src/switch-blocks/SwitchBlocks.tsx
7905
- var import_react53 = require("react");
7925
+ var import_react54 = require("react");
7906
7926
  var import_jsx_runtime103 = require("react/jsx-runtime");
7907
- var SwitchBlocksInternal = (0, import_react53.forwardRef)(
7927
+ var SwitchBlocksInternal = (0, import_react54.forwardRef)(
7908
7928
  ({ options, value, onChange, disabled, className }, ref) => /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
7909
7929
  "div",
7910
7930
  {
@@ -7928,7 +7948,7 @@ var SwitchBlocksInternal = (0, import_react53.forwardRef)(
7928
7948
  )
7929
7949
  );
7930
7950
  SwitchBlocksInternal.displayName = "SwitchBlocks";
7931
- var SwitchBlocks = (0, import_react53.memo)(SwitchBlocksInternal);
7951
+ var SwitchBlocks = (0, import_react54.memo)(SwitchBlocksInternal);
7932
7952
 
7933
7953
  // src/switch-group/SwitchGroup.tsx
7934
7954
  var React26 = __toESM(require("react"), 1);
@@ -7988,7 +8008,7 @@ var SwitchGroup = React26.forwardRef(
7988
8008
  SwitchGroup.displayName = "SwitchGroup";
7989
8009
 
7990
8010
  // src/tabs/Tabs.tsx
7991
- var import_react54 = require("react");
8011
+ var import_react55 = require("react");
7992
8012
  var TabsPrimitive2 = __toESM(require("@radix-ui/react-tabs"), 1);
7993
8013
  var import_class_variance_authority12 = require("class-variance-authority");
7994
8014
  var import_jsx_runtime105 = require("react/jsx-runtime");
@@ -8004,7 +8024,7 @@ var tabsListVariants = (0, import_class_variance_authority12.cva)("inline-flex i
8004
8024
  variant: "default"
8005
8025
  }
8006
8026
  });
8007
- var TabsList = (0, import_react54.forwardRef)(
8027
+ var TabsList = (0, import_react55.forwardRef)(
8008
8028
  ({ className, variant, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8009
8029
  TabsPrimitive2.List,
8010
8030
  {
@@ -8029,7 +8049,7 @@ var tabsTriggerVariants = (0, import_class_variance_authority12.cva)(
8029
8049
  }
8030
8050
  }
8031
8051
  );
8032
- var TabsTrigger = (0, import_react54.forwardRef)(({ className, variant, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8052
+ var TabsTrigger = (0, import_react55.forwardRef)(({ className, variant, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8033
8053
  TabsPrimitive2.Trigger,
8034
8054
  {
8035
8055
  ref,
@@ -8038,7 +8058,7 @@ var TabsTrigger = (0, import_react54.forwardRef)(({ className, variant, ...props
8038
8058
  }
8039
8059
  ));
8040
8060
  TabsTrigger.displayName = TabsPrimitive2.Trigger.displayName;
8041
- var TabsContent = (0, import_react54.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(TabsPrimitive2.Content, { ref, className, tabIndex: -1, ...props }));
8061
+ var TabsContent = (0, import_react55.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(TabsPrimitive2.Content, { ref, className, tabIndex: -1, ...props }));
8042
8062
  TabsContent.displayName = TabsPrimitive2.Content.displayName;
8043
8063
 
8044
8064
  // src/tabbed-section/TabbedSection.tsx
@@ -8179,11 +8199,11 @@ var TASK_VARIANTS = {
8179
8199
  var import_sonner2 = require("sonner");
8180
8200
 
8181
8201
  // src/toaster/useUpdateToast.ts
8182
- var import_react55 = require("react");
8202
+ var import_react56 = require("react");
8183
8203
  var import_sonner = require("sonner");
8184
8204
  function useUpdateToast({ id }) {
8185
- const toastIdRef = (0, import_react55.useRef)("");
8186
- const getToastOptions = (0, import_react55.useCallback)(
8205
+ const toastIdRef = (0, import_react56.useRef)("");
8206
+ const getToastOptions = (0, import_react56.useCallback)(
8187
8207
  (options) => ({
8188
8208
  id: toastIdRef.current,
8189
8209
  dismissible: false,
@@ -8298,7 +8318,7 @@ var ToggleGroupItem = React27.forwardRef(({ className, children, variant, size,
8298
8318
  ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
8299
8319
 
8300
8320
  // src/toggle-group/Toggles.tsx
8301
- var import_react56 = require("react");
8321
+ var import_react57 = require("react");
8302
8322
  var import_jsx_runtime110 = require("react/jsx-runtime");
8303
8323
  var getValueArray2 = (value) => {
8304
8324
  if (value) {
@@ -8373,7 +8393,7 @@ function TogglesInternal({
8373
8393
  }
8374
8394
  };
8375
8395
  const isAnyActive = getValueArray2(value).length > 0;
8376
- (0, import_react56.useEffect)(() => {
8396
+ (0, import_react57.useEffect)(() => {
8377
8397
  onAnySelectorActive?.(isAnyActive);
8378
8398
  }, [isAnyActive, onAnySelectorActive]);
8379
8399
  const currentValue = getValueArray2(value).map((item) => String(item));
@@ -8404,7 +8424,7 @@ function TogglesInternal({
8404
8424
  }) })
8405
8425
  ] });
8406
8426
  }
8407
- var Toggles = (0, import_react56.forwardRef)(TogglesInternal);
8427
+ var Toggles = (0, import_react57.forwardRef)(TogglesInternal);
8408
8428
 
8409
8429
  // src/text-field/TextField.tsx
8410
8430
  var React28 = __toESM(require("react"), 1);
@@ -8615,16 +8635,16 @@ var TextField = React28.forwardRef(
8615
8635
  TextField.displayName = "TextField";
8616
8636
 
8617
8637
  // src/textarea/Textarea.tsx
8618
- var import_react57 = require("react");
8638
+ var import_react58 = require("react");
8619
8639
 
8620
8640
  // src/textarea/styles.module.css
8621
8641
  var styles_default9 = {};
8622
8642
 
8623
8643
  // src/textarea/Textarea.tsx
8624
8644
  var import_jsx_runtime115 = require("react/jsx-runtime");
8625
- var Textarea = (0, import_react57.forwardRef)(
8645
+ var Textarea = (0, import_react58.forwardRef)(
8626
8646
  ({ className, textareaClassName, label, disabled, name, invalid, ...textareaProps }, ref) => {
8627
- const inputId = (0, import_react57.useId)();
8647
+ const inputId = (0, import_react58.useId)();
8628
8648
  return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("div", { className: cn(styles_default9.container, className), children: [
8629
8649
  /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
8630
8650
  "textarea",
@@ -11517,7 +11537,7 @@ AirbnbSearchInput.displayName = "SearchInput";
11517
11537
  var React41 = __toESM(require("react"), 1);
11518
11538
  var import_lucide_react46 = require("lucide-react");
11519
11539
  var import_react_virtual = require("@tanstack/react-virtual");
11520
- var import_react58 = require("react");
11540
+ var import_react59 = require("react");
11521
11541
  var import_jsx_runtime135 = require("react/jsx-runtime");
11522
11542
  var ROW_HEIGHT = 48;
11523
11543
  var DESKTOP_LIST_HEIGHT = 280;
@@ -11592,7 +11612,7 @@ var SearchableSelectInternal = ({
11592
11612
  const activeOptionId = highlightedIndex >= 0 ? getOptionId(reactId, highlightedIndex) : void 0;
11593
11613
  useOutsideClick(containerRef, open && !isMobile ? () => closeSelect() : null);
11594
11614
  const handleOnOpenChange = useEvent(onOpenChange);
11595
- const setSelectOpen = (0, import_react58.useCallback)(
11615
+ const setSelectOpen = (0, import_react59.useCallback)(
11596
11616
  (nextOpen, options2) => {
11597
11617
  setOpen(nextOpen);
11598
11618
  handleOnOpenChange?.(nextOpen);
@@ -12272,6 +12292,7 @@ function copyToClipboard2(value) {
12272
12292
  useOutsideClick,
12273
12293
  usePagination,
12274
12294
  usePrevious,
12295
+ usePromisedModalControls,
12275
12296
  useRadioOptions,
12276
12297
  useScreenResize,
12277
12298
  useScrollFrameIntoView,