@chekinapp/ui 0.0.23 → 0.0.24

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
@@ -280,6 +280,7 @@ __export(index_exports, {
280
280
  buttonVariants: () => buttonVariants,
281
281
  calendarClassNames: () => calendarClassNames,
282
282
  cn: () => cn,
283
+ copyToClipboard: () => copyToClipboard2,
283
284
  emptyMediaVariants: () => emptyMediaVariants,
284
285
  getSidebarState: () => getSidebarState,
285
286
  inputVariants: () => inputVariants,
@@ -297,12 +298,14 @@ __export(index_exports, {
297
298
  useClickEscape: () => useClickEscape,
298
299
  useCombinedRef: () => useCombinedRef,
299
300
  useDebounce: () => useDebounce,
301
+ useDebouncedFunction: () => useDebouncedFunction,
300
302
  useEvent: () => useEvent,
301
303
  useHover: () => useHover,
302
304
  useIsMobile: () => useIsMobile,
303
305
  useIsMounted: () => useIsMounted,
304
306
  useModalControls: () => useModalControls,
305
307
  useOutsideClick: () => useOutsideClick,
308
+ usePagination: () => usePagination,
306
309
  usePrevious: () => usePrevious,
307
310
  useRadioOptions: () => useRadioOptions,
308
311
  useScreenResize: () => useScreenResize,
@@ -2367,29 +2370,42 @@ function useAbortController() {
2367
2370
  }
2368
2371
 
2369
2372
  // src/hooks/use-click-escape.ts
2373
+ var import_react11 = require("react");
2374
+
2375
+ // src/hooks/use-event.ts
2370
2376
  var import_react10 = require("react");
2377
+ function useEvent(fn) {
2378
+ const fnRef = (0, import_react10.useRef)(fn);
2379
+ (0, import_react10.useLayoutEffect)(() => {
2380
+ fnRef.current = fn;
2381
+ }, [fn]);
2382
+ const eventCb = (0, import_react10.useCallback)(
2383
+ (...args) => {
2384
+ return fnRef.current?.apply(null, args);
2385
+ },
2386
+ [fnRef]
2387
+ );
2388
+ return eventCb;
2389
+ }
2390
+
2391
+ // src/hooks/use-click-escape.ts
2371
2392
  function useClickEscape({ enabled = true, onClick }) {
2372
- const onClickRef = (0, import_react10.useRef)(onClick);
2373
- (0, import_react10.useEffect)(() => {
2374
- onClickRef.current = onClick;
2375
- }, [onClick]);
2376
- (0, import_react10.useEffect)(() => {
2393
+ const handler = useEvent(onClick);
2394
+ (0, import_react11.useEffect)(() => {
2377
2395
  const handleKeyDown = (event) => {
2378
2396
  if (event.key === "Escape" && enabled) {
2379
- onClickRef.current?.();
2397
+ handler();
2380
2398
  }
2381
2399
  };
2382
2400
  window.addEventListener("keydown", handleKeyDown);
2383
- return () => {
2384
- window.removeEventListener("keydown", handleKeyDown);
2385
- };
2386
- }, [enabled]);
2401
+ return () => window.removeEventListener("keydown", handleKeyDown);
2402
+ }, [handler, enabled]);
2387
2403
  }
2388
2404
 
2389
2405
  // src/hooks/use-combined-ref.ts
2390
- var import_react11 = require("react");
2406
+ var import_react12 = require("react");
2391
2407
  function useCombinedRef(...refs) {
2392
- return (0, import_react11.useCallback)(
2408
+ return (0, import_react12.useCallback)(
2393
2409
  (node) => {
2394
2410
  refs.forEach((ref) => {
2395
2411
  if (!ref) return;
@@ -2405,22 +2421,6 @@ function useCombinedRef(...refs) {
2405
2421
  );
2406
2422
  }
2407
2423
 
2408
- // src/hooks/use-event.ts
2409
- var import_react12 = require("react");
2410
- function useEvent(fn) {
2411
- const fnRef = (0, import_react12.useRef)(fn);
2412
- (0, import_react12.useLayoutEffect)(() => {
2413
- fnRef.current = fn;
2414
- }, [fn]);
2415
- const eventCb = (0, import_react12.useCallback)(
2416
- (...args) => {
2417
- return fnRef.current?.apply(null, args);
2418
- },
2419
- [fnRef]
2420
- );
2421
- return eventCb;
2422
- }
2423
-
2424
2424
  // src/hooks/use-is-mobile.ts
2425
2425
  var import_react13 = require("react");
2426
2426
  var MOBILE_BREAKPOINT = 768;
@@ -2617,22 +2617,224 @@ function useDebounce(value, delayMs = 1e3, handleChange) {
2617
2617
  return [debouncedValue, setDebouncedValue];
2618
2618
  }
2619
2619
 
2620
- // src/hooks/use-previous.ts
2620
+ // src/hooks/use-debounced-function.ts
2621
2621
  var import_react20 = require("react");
2622
+ function useDebouncedFunction(callback, delay) {
2623
+ const timerRef = (0, import_react20.useRef)();
2624
+ const immediateCalling = (0, import_react20.useRef)(false);
2625
+ const callbackFn = useEvent(callback);
2626
+ const throttled = (0, import_react20.useCallback)(
2627
+ (...args) => {
2628
+ clearTimeout(timerRef.current);
2629
+ if (immediateCalling.current) {
2630
+ immediateCalling.current = false;
2631
+ callbackFn?.(...args);
2632
+ } else {
2633
+ timerRef.current = setTimeout(() => {
2634
+ immediateCalling.current = false;
2635
+ callbackFn?.(...args);
2636
+ }, delay);
2637
+ }
2638
+ },
2639
+ [callbackFn, delay]
2640
+ );
2641
+ const immediate = (0, import_react20.useCallback)(() => {
2642
+ immediateCalling.current = true;
2643
+ }, []);
2644
+ return { throttled, immediate };
2645
+ }
2646
+
2647
+ // src/hooks/use-previous.ts
2648
+ var import_react21 = require("react");
2622
2649
  function usePrevious(value, defaultValue) {
2623
- const ref = (0, import_react20.useRef)(defaultValue);
2624
- (0, import_react20.useEffect)(() => {
2650
+ const ref = (0, import_react21.useRef)(defaultValue);
2651
+ (0, import_react21.useEffect)(() => {
2625
2652
  ref.current = isObject(value) ? { ...value } : value;
2626
2653
  }, [value]);
2627
2654
  return ref.current;
2628
2655
  }
2629
2656
 
2657
+ // src/hooks/use-pagination.ts
2658
+ var import_react22 = require("react");
2659
+
2660
+ // src/storage/AbstractStorage.ts
2661
+ var AbstractStorage = class {
2662
+ static get(key) {
2663
+ if (!key) {
2664
+ throw new Error("The key is not valid");
2665
+ }
2666
+ return null;
2667
+ }
2668
+ static set(key, value) {
2669
+ if (!key) {
2670
+ throw new Error("The key is not valid");
2671
+ }
2672
+ if (!value) {
2673
+ throw new Error("The value not passed");
2674
+ }
2675
+ }
2676
+ static remove(key) {
2677
+ if (!key) {
2678
+ throw new Error("The key is not valid");
2679
+ }
2680
+ }
2681
+ static clear() {
2682
+ }
2683
+ };
2684
+ var AbstractStorage_default = AbstractStorage;
2685
+
2686
+ // src/storage/utils.ts
2687
+ function jsonParse(data) {
2688
+ try {
2689
+ if (data) {
2690
+ return JSON.parse(data);
2691
+ }
2692
+ return null;
2693
+ } catch {
2694
+ return data;
2695
+ }
2696
+ }
2697
+
2698
+ // src/storage/SessionStorage.ts
2699
+ var SessionStorage = class _SessionStorage extends AbstractStorage_default {
2700
+ static get(key) {
2701
+ const data = sessionStorage.getItem(key);
2702
+ return jsonParse(data);
2703
+ }
2704
+ static set(key, value) {
2705
+ if (value) {
2706
+ sessionStorage.setItem(key, JSON.stringify(value));
2707
+ }
2708
+ }
2709
+ static update(key, field, value) {
2710
+ const data = _SessionStorage.get(key);
2711
+ if (data) {
2712
+ data[field] = value;
2713
+ _SessionStorage.set(key, data);
2714
+ } else {
2715
+ _SessionStorage.set(key, { [field]: value });
2716
+ }
2717
+ }
2718
+ static remove(key) {
2719
+ sessionStorage.removeItem(key);
2720
+ }
2721
+ static clear() {
2722
+ sessionStorage.clear();
2723
+ }
2724
+ };
2725
+
2726
+ // src/hooks/use-pagination.ts
2727
+ var DEFAULT_PAGE_SIZE = 20;
2728
+ var DEFAULT_PAGE = 1;
2729
+ function usePagination(config) {
2730
+ const { key, defaultPageSize = DEFAULT_PAGE_SIZE, defaultPage = DEFAULT_PAGE } = config;
2731
+ const [state, setState] = (0, import_react22.useState)(() => {
2732
+ const stored = SessionStorage.get(`pagination-${key}`);
2733
+ if (stored) {
2734
+ return {
2735
+ page: stored.page || defaultPage,
2736
+ pageSize: stored.pageSize || defaultPageSize,
2737
+ totalItems: stored.totalItems || 0
2738
+ };
2739
+ }
2740
+ return {
2741
+ page: defaultPage,
2742
+ pageSize: defaultPageSize,
2743
+ totalItems: 0
2744
+ };
2745
+ });
2746
+ (0, import_react22.useEffect)(() => {
2747
+ SessionStorage.set(`pagination-${key}`, state);
2748
+ }, [key, state]);
2749
+ const pages = (0, import_react22.useMemo)(() => {
2750
+ return state.totalItems > 0 ? Math.ceil(state.totalItems / state.pageSize) : 0;
2751
+ }, [state.totalItems, state.pageSize]);
2752
+ const hasNextPage = (0, import_react22.useMemo)(() => state.page < pages, [state.page, pages]);
2753
+ const hasPreviousPage = (0, import_react22.useMemo)(() => state.page > 1, [state.page]);
2754
+ const startItem = (0, import_react22.useMemo)(() => {
2755
+ return state.totalItems === 0 ? 0 : (state.page - 1) * state.pageSize + 1;
2756
+ }, [state.page, state.pageSize, state.totalItems]);
2757
+ const endItem = (0, import_react22.useMemo)(() => {
2758
+ return Math.min(state.page * state.pageSize, state.totalItems);
2759
+ }, [state.page, state.pageSize, state.totalItems]);
2760
+ const isEmpty = (0, import_react22.useMemo)(() => state.totalItems === 0, [state.totalItems]);
2761
+ const setPage = (0, import_react22.useCallback)(
2762
+ (page) => {
2763
+ const clampedPage = Math.max(1, Math.min(page, pages || 1));
2764
+ setState((prev) => ({ ...prev, page: clampedPage }));
2765
+ },
2766
+ [pages]
2767
+ );
2768
+ const setPageSize = (0, import_react22.useCallback)((pageSize) => {
2769
+ const validPageSize = Math.max(1, pageSize);
2770
+ setState((prev) => {
2771
+ const currentFirstItem = (prev.page - 1) * prev.pageSize + 1;
2772
+ const newPage = Math.max(1, Math.ceil(currentFirstItem / validPageSize));
2773
+ return {
2774
+ ...prev,
2775
+ pageSize: validPageSize,
2776
+ page: newPage
2777
+ };
2778
+ });
2779
+ }, []);
2780
+ const setTotalItems = (0, import_react22.useCallback)((totalItems) => {
2781
+ const validTotalItems = Math.max(0, totalItems);
2782
+ setState((prev) => {
2783
+ const newPages = validTotalItems > 0 ? Math.ceil(validTotalItems / prev.pageSize) : 0;
2784
+ const clampedPage = prev.page > newPages && newPages > 0 ? newPages : prev.page;
2785
+ return {
2786
+ ...prev,
2787
+ totalItems: validTotalItems,
2788
+ page: clampedPage
2789
+ };
2790
+ });
2791
+ }, []);
2792
+ const nextPage = (0, import_react22.useCallback)(() => {
2793
+ setPage(state.page + 1);
2794
+ }, [setPage, state.page]);
2795
+ const previousPage = (0, import_react22.useCallback)(() => {
2796
+ setPage(state.page - 1);
2797
+ }, [setPage, state.page]);
2798
+ const goToFirstPage = (0, import_react22.useCallback)(() => {
2799
+ setPage(1);
2800
+ }, [setPage]);
2801
+ const goToLastPage = (0, import_react22.useCallback)(() => {
2802
+ setPage(pages);
2803
+ }, [setPage, pages]);
2804
+ const reset = (0, import_react22.useCallback)(() => {
2805
+ setState({
2806
+ page: defaultPage,
2807
+ pageSize: defaultPageSize,
2808
+ totalItems: 0
2809
+ });
2810
+ }, [defaultPage, defaultPageSize]);
2811
+ return {
2812
+ page: state.page,
2813
+ pageSize: state.pageSize,
2814
+ totalItems: state.totalItems,
2815
+ pages,
2816
+ setPage,
2817
+ setPageSize,
2818
+ setTotalItems,
2819
+ nextPage,
2820
+ previousPage,
2821
+ goToFirstPage,
2822
+ goToLastPage,
2823
+ reset,
2824
+ hasNextPage,
2825
+ hasPreviousPage,
2826
+ startItem,
2827
+ endItem,
2828
+ isEmpty
2829
+ };
2830
+ }
2831
+
2630
2832
  // src/hooks/use-timer.ts
2631
- var import_react21 = require("react");
2833
+ var import_react23 = require("react");
2632
2834
  var useTimer = ({ seconds }) => {
2633
- const [timeLeft, setTimeLeft] = (0, import_react21.useState)(seconds);
2634
- const [isTimerRunning, setIsTimerRunning] = (0, import_react21.useState)(true);
2635
- (0, import_react21.useEffect)(() => {
2835
+ const [timeLeft, setTimeLeft] = (0, import_react23.useState)(seconds);
2836
+ const [isTimerRunning, setIsTimerRunning] = (0, import_react23.useState)(true);
2837
+ (0, import_react23.useEffect)(() => {
2636
2838
  if (!isTimerRunning) return;
2637
2839
  const timer = setInterval(() => {
2638
2840
  setTimeLeft((prev) => {
@@ -2658,32 +2860,32 @@ var useTimer = ({ seconds }) => {
2658
2860
  };
2659
2861
 
2660
2862
  // src/hooks/use-timeout.ts
2661
- var import_react22 = require("react");
2863
+ var import_react24 = require("react");
2662
2864
  function useTimeout() {
2663
- const timeoutRef = (0, import_react22.useRef)();
2664
- const clearTimeoutRef = (0, import_react22.useCallback)(() => {
2865
+ const timeoutRef = (0, import_react24.useRef)();
2866
+ const clearTimeoutRef = (0, import_react24.useCallback)(() => {
2665
2867
  clearTimeout(timeoutRef.current);
2666
2868
  timeoutRef.current = void 0;
2667
2869
  }, []);
2668
- const scheduleTimeout = (0, import_react22.useCallback)(
2870
+ const scheduleTimeout = (0, import_react24.useCallback)(
2669
2871
  (callback, delay) => {
2670
2872
  clearTimeoutRef();
2671
2873
  timeoutRef.current = setTimeout(callback, delay);
2672
2874
  },
2673
2875
  [clearTimeoutRef]
2674
2876
  );
2675
- (0, import_react22.useEffect)(() => clearTimeoutRef, [clearTimeoutRef]);
2877
+ (0, import_react24.useEffect)(() => clearTimeoutRef, [clearTimeoutRef]);
2676
2878
  return { scheduleTimeout, clearTimeoutRef };
2677
2879
  }
2678
2880
 
2679
2881
  // src/hooks/use-hover.ts
2680
- var import_react23 = require("react");
2882
+ var import_react25 = require("react");
2681
2883
  function useHover() {
2682
- const [isHovering, setIsHovering] = (0, import_react23.useState)(false);
2683
- const handleMouseEnter = (0, import_react23.useCallback)(() => {
2884
+ const [isHovering, setIsHovering] = (0, import_react25.useState)(false);
2885
+ const handleMouseEnter = (0, import_react25.useCallback)(() => {
2684
2886
  setIsHovering(true);
2685
2887
  }, []);
2686
- const handleMouseLeave = (0, import_react23.useCallback)(() => {
2888
+ const handleMouseLeave = (0, import_react25.useCallback)(() => {
2687
2889
  setIsHovering(false);
2688
2890
  }, []);
2689
2891
  return {
@@ -2928,7 +3130,7 @@ function DownloadEntryFormsButton({
2928
3130
  }
2929
3131
 
2930
3132
  // src/dropdown-button/DropdownButton.tsx
2931
- var import_react24 = require("react");
3133
+ var import_react26 = require("react");
2932
3134
 
2933
3135
  // src/dropdown-menu/DropdownMenu.tsx
2934
3136
  var React13 = __toESM(require("react"), 1);
@@ -2992,7 +3194,7 @@ function DropdownButton({
2992
3194
  modal,
2993
3195
  className
2994
3196
  }) {
2995
- const [isOpen, setIsOpen] = (0, import_react24.useState)(false);
3197
+ const [isOpen, setIsOpen] = (0, import_react26.useState)(false);
2996
3198
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(DropdownMenu, { onOpenChange: setIsOpen, modal, children: [
2997
3199
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(DropdownMenuTrigger, { asChild: true, children: typeof trigger === "function" ? trigger(isOpen) : trigger }),
2998
3200
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
@@ -3119,7 +3321,7 @@ var import_lucide_react12 = require("lucide-react");
3119
3321
  var import_react_i18next7 = require("react-i18next");
3120
3322
 
3121
3323
  // src/halo-icon/HaloIcon.tsx
3122
- var import_react25 = require("react");
3324
+ var import_react27 = require("react");
3123
3325
 
3124
3326
  // src/halo-icon/constants.ts
3125
3327
  var HALO_ICON_STATUS = {
@@ -3149,7 +3351,7 @@ var statusStyles = {
3149
3351
  color: "text-chekin-red"
3150
3352
  }
3151
3353
  };
3152
- var HaloIcon = (0, import_react25.forwardRef)(
3354
+ var HaloIcon = (0, import_react27.forwardRef)(
3153
3355
  ({
3154
3356
  children,
3155
3357
  variant = "default",
@@ -3330,7 +3532,7 @@ var Switch = React15.forwardRef(
3330
3532
  Switch.displayName = SwitchPrimitives.Root.displayName;
3331
3533
 
3332
3534
  // src/video-player/VideoPlayer.tsx
3333
- var import_react26 = require("react");
3535
+ var import_react28 = require("react");
3334
3536
  var import_react_i18next8 = require("react-i18next");
3335
3537
  var import_lucide_react13 = require("lucide-react");
3336
3538
  var import_jsx_runtime47 = require("react/jsx-runtime");
@@ -3343,20 +3545,20 @@ function VideoPlayer({
3343
3545
  autoPlay = false
3344
3546
  }) {
3345
3547
  const { t } = (0, import_react_i18next8.useTranslation)();
3346
- const videoRef = (0, import_react26.useRef)(null);
3347
- const iframeRef = (0, import_react26.useRef)(null);
3348
- const containerRef = (0, import_react26.useRef)(null);
3349
- const [isPlaying, setIsPlaying] = (0, import_react26.useState)(false);
3350
- const [isMuted, setIsMuted] = (0, import_react26.useState)(false);
3351
- const [currentTime, setCurrentTime] = (0, import_react26.useState)(0);
3352
- const [duration, setDuration] = (0, import_react26.useState)(0);
3353
- const [isFullScreenMode, setIsFullScreenMode] = (0, import_react26.useState)(isFullScreen);
3354
- const [isLoading, setIsLoading] = (0, import_react26.useState)(true);
3355
- const [videoSource, setVideoSource] = (0, import_react26.useState)("file");
3356
- const [youtubeEmbedUrl, setYoutubeEmbedUrl] = (0, import_react26.useState)("");
3357
- const [vimeoEmbedUrl, setVimeoEmbedUrl] = (0, import_react26.useState)("");
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)("");
3358
3560
  useClickEscape({ enabled: isFullScreenMode, onClick: onClose });
3359
- (0, import_react26.useEffect)(() => {
3561
+ (0, import_react28.useEffect)(() => {
3360
3562
  const youtubeRegex = /(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]{11})/;
3361
3563
  const vimeoRegex = /(?:vimeo\.com\/|vimeo\.com\/video\/)(\d+)/;
3362
3564
  const youtubeMatch = src.match(youtubeRegex);
@@ -3385,7 +3587,7 @@ function VideoPlayer({
3385
3587
  setYoutubeEmbedUrl("");
3386
3588
  setVimeoEmbedUrl("");
3387
3589
  }, [src, autoPlay]);
3388
- (0, import_react26.useEffect)(() => {
3590
+ (0, import_react28.useEffect)(() => {
3389
3591
  if (videoSource !== "file") return;
3390
3592
  const video = videoRef.current;
3391
3593
  if (!video) return;
@@ -3413,7 +3615,7 @@ function VideoPlayer({
3413
3615
  video.removeEventListener("canplay", handleCanPlay);
3414
3616
  };
3415
3617
  }, [videoSource]);
3416
- (0, import_react26.useEffect)(() => {
3618
+ (0, import_react28.useEffect)(() => {
3417
3619
  if (isFullScreenMode && videoRef.current && videoSource === "file") {
3418
3620
  void videoRef.current.play();
3419
3621
  setIsPlaying(true);
@@ -3690,10 +3892,10 @@ function FeatureCard({
3690
3892
  }
3691
3893
 
3692
3894
  // src/file-input-button/FileInputButton.tsx
3693
- var import_react27 = require("react");
3895
+ var import_react29 = require("react");
3694
3896
  var import_lucide_react15 = require("lucide-react");
3695
3897
  var import_jsx_runtime49 = require("react/jsx-runtime");
3696
- var FileInputButton = (0, import_react27.forwardRef)(
3898
+ var FileInputButton = (0, import_react29.forwardRef)(
3697
3899
  ({
3698
3900
  label,
3699
3901
  onChange,
@@ -3705,7 +3907,7 @@ var FileInputButton = (0, import_react27.forwardRef)(
3705
3907
  size = "default",
3706
3908
  ...props
3707
3909
  }, ref) => {
3708
- const handleChange = (0, import_react27.useCallback)(
3910
+ const handleChange = (0, import_react29.useCallback)(
3709
3911
  (event) => {
3710
3912
  onChange?.(event);
3711
3913
  event.target.value = "";
@@ -3785,7 +3987,7 @@ var FormBox = {
3785
3987
  };
3786
3988
 
3787
3989
  // src/free-text-field/FreeTextField.tsx
3788
- var import_react28 = require("react");
3990
+ var import_react30 = require("react");
3789
3991
  var import_react_i18next10 = require("react-i18next");
3790
3992
 
3791
3993
  // src/free-text-field/styles.module.css
@@ -3793,7 +3995,7 @@ var styles_default3 = {};
3793
3995
 
3794
3996
  // src/free-text-field/FreeTextField.tsx
3795
3997
  var import_jsx_runtime54 = require("react/jsx-runtime");
3796
- var FreeTextField = (0, import_react28.forwardRef)(
3998
+ var FreeTextField = (0, import_react30.forwardRef)(
3797
3999
  ({
3798
4000
  label,
3799
4001
  error,
@@ -3815,9 +4017,9 @@ var FreeTextField = (0, import_react28.forwardRef)(
3815
4017
  ...inputProps
3816
4018
  }, ref) => {
3817
4019
  const { t } = (0, import_react_i18next10.useTranslation)();
3818
- const inputId = (0, import_react28.useId)();
3819
- const [internalValue, setInternalValue] = (0, import_react28.useState)(defaultValue ?? "");
3820
- const [isFocused, setIsFocused] = (0, import_react28.useState)(false);
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);
3821
4023
  const currentValue = value !== void 0 ? value : internalValue;
3822
4024
  const isEmpty = !currentValue || String(currentValue).length === 0;
3823
4025
  const hasError = Boolean(error);
@@ -3940,9 +4142,9 @@ var FramedIcon = React16.forwardRef(
3940
4142
  FramedIcon.displayName = "FramedIcon";
3941
4143
 
3942
4144
  // src/grid-items/GridItems.tsx
3943
- var import_react29 = require("react");
4145
+ var import_react31 = require("react");
3944
4146
  var import_jsx_runtime56 = require("react/jsx-runtime");
3945
- var GridItems = (0, import_react29.forwardRef)(
4147
+ var GridItems = (0, import_react31.forwardRef)(
3946
4148
  ({ children, title, placeholder, className }, ref) => /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
3947
4149
  "div",
3948
4150
  {
@@ -4019,9 +4221,9 @@ function HelpTooltip({
4019
4221
  }
4020
4222
 
4021
4223
  // src/icon/Icon.tsx
4022
- var import_react30 = require("react");
4224
+ var import_react32 = require("react");
4023
4225
  var import_jsx_runtime58 = require("react/jsx-runtime");
4024
- var MissingIcon = (0, import_react30.forwardRef)(
4226
+ var MissingIcon = (0, import_react32.forwardRef)(
4025
4227
  ({ size = 24, className = "", fallback = null, color, ...props }, ref) => {
4026
4228
  if (fallback) {
4027
4229
  return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_jsx_runtime58.Fragment, { children: fallback });
@@ -4050,8 +4252,8 @@ var MissingIcon = (0, import_react30.forwardRef)(
4050
4252
  }
4051
4253
  );
4052
4254
  MissingIcon.displayName = "MissingIcon";
4053
- var Icon = (0, import_react30.memo)(
4054
- (0, import_react30.forwardRef)(
4255
+ var Icon = (0, import_react32.memo)(
4256
+ (0, import_react32.forwardRef)(
4055
4257
  ({ name: _name, size = 24, className = "", fallback = null, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
4056
4258
  MissingIcon,
4057
4259
  {
@@ -4149,7 +4351,7 @@ function InfoBox({ className, children }) {
4149
4351
  }
4150
4352
 
4151
4353
  // src/image/Image.tsx
4152
- var import_react31 = require("react");
4354
+ var import_react33 = require("react");
4153
4355
  var import_jsx_runtime61 = require("react/jsx-runtime");
4154
4356
  function Image2({
4155
4357
  src,
@@ -4158,7 +4360,7 @@ function Image2({
4158
4360
  fallbackSrc = "https://placehold.co/600x400?text=Image",
4159
4361
  ...props
4160
4362
  }) {
4161
- const [error, setError] = (0, import_react31.useState)(false);
4363
+ const [error, setError] = (0, import_react33.useState)(false);
4162
4364
  return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
4163
4365
  "img",
4164
4366
  {
@@ -4202,10 +4404,10 @@ Input.displayName = "Input";
4202
4404
  var React19 = __toESM(require("react"), 1);
4203
4405
 
4204
4406
  // src/input-otp/InputOTPContext.ts
4205
- var import_react32 = require("react");
4206
- var InputOTPContext = (0, import_react32.createContext)(null);
4407
+ var import_react34 = require("react");
4408
+ var InputOTPContext = (0, import_react34.createContext)(null);
4207
4409
  function useInputOTPContext() {
4208
- const ctx = (0, import_react32.useContext)(InputOTPContext);
4410
+ const ctx = (0, import_react34.useContext)(InputOTPContext);
4209
4411
  if (!ctx) {
4210
4412
  throw new Error("InputOTP compound components must be used within <InputOTP>");
4211
4413
  }
@@ -4217,7 +4419,7 @@ function extractDigits(str) {
4217
4419
  }
4218
4420
 
4219
4421
  // src/input-otp/useInputOTP.ts
4220
- var import_react33 = require("react");
4422
+ var import_react35 = require("react");
4221
4423
  function useInputOTP({
4222
4424
  maxLength,
4223
4425
  value,
@@ -4226,12 +4428,12 @@ function useInputOTP({
4226
4428
  autoFocus,
4227
4429
  error
4228
4430
  }) {
4229
- const [activeIndex, setActiveIndex] = (0, import_react33.useState)(-1);
4230
- const inputRefs = (0, import_react33.useRef)([]);
4231
- const containerRef = (0, import_react33.useRef)(null);
4232
- const blurTimeoutRef = (0, import_react33.useRef)();
4233
- const slotsRef = (0, import_react33.useRef)(Array.from({ length: maxLength }, () => ""));
4234
- const slots = (0, import_react33.useMemo)(() => {
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)(() => {
4235
4437
  const nextSlots = Array.from({ length: maxLength }, () => "");
4236
4438
  for (let index = 0; index < Math.min(value.length, maxLength); index += 1) {
4237
4439
  const char = value[index];
@@ -4242,7 +4444,7 @@ function useInputOTP({
4242
4444
  return nextSlots;
4243
4445
  }, [value, maxLength]);
4244
4446
  slotsRef.current = slots;
4245
- const emitValue = (0, import_react33.useCallback)(
4447
+ const emitValue = (0, import_react35.useCallback)(
4246
4448
  (newSlots) => {
4247
4449
  let lastFilledIndex = -1;
4248
4450
  for (let index = newSlots.length - 1; index >= 0; index -= 1) {
@@ -4263,12 +4465,12 @@ function useInputOTP({
4263
4465
  },
4264
4466
  [onChange]
4265
4467
  );
4266
- (0, import_react33.useEffect)(() => {
4468
+ (0, import_react35.useEffect)(() => {
4267
4469
  if (autoFocus && inputRefs.current[0]) {
4268
4470
  inputRefs.current[0].focus();
4269
4471
  }
4270
4472
  }, [autoFocus]);
4271
- const handleContainerFocusIn = (0, import_react33.useCallback)((event) => {
4473
+ const handleContainerFocusIn = (0, import_react35.useCallback)((event) => {
4272
4474
  clearTimeout(blurTimeoutRef.current);
4273
4475
  const target = event.target;
4274
4476
  const slotIndex = inputRefs.current.indexOf(target);
@@ -4276,7 +4478,7 @@ function useInputOTP({
4276
4478
  setActiveIndex(slotIndex);
4277
4479
  }
4278
4480
  }, []);
4279
- const handleContainerFocusOut = (0, import_react33.useCallback)(() => {
4481
+ const handleContainerFocusOut = (0, import_react35.useCallback)(() => {
4280
4482
  clearTimeout(blurTimeoutRef.current);
4281
4483
  blurTimeoutRef.current = setTimeout(() => {
4282
4484
  if (!containerRef.current?.contains(document.activeElement)) {
@@ -4284,8 +4486,8 @@ function useInputOTP({
4284
4486
  }
4285
4487
  }, 0);
4286
4488
  }, []);
4287
- (0, import_react33.useEffect)(() => () => clearTimeout(blurTimeoutRef.current), []);
4288
- const handleDigitInput = (0, import_react33.useCallback)(
4489
+ (0, import_react35.useEffect)(() => () => clearTimeout(blurTimeoutRef.current), []);
4490
+ const handleDigitInput = (0, import_react35.useCallback)(
4289
4491
  (index, digit) => {
4290
4492
  if (!DIGIT_REGEX.test(digit)) return;
4291
4493
  const newSlots = [...slotsRef.current];
@@ -4299,7 +4501,7 @@ function useInputOTP({
4299
4501
  },
4300
4502
  [maxLength, emitValue]
4301
4503
  );
4302
- const handleDelete = (0, import_react33.useCallback)(
4504
+ const handleDelete = (0, import_react35.useCallback)(
4303
4505
  (index) => {
4304
4506
  const newSlots = [...slotsRef.current];
4305
4507
  if (newSlots[index]) {
@@ -4314,7 +4516,7 @@ function useInputOTP({
4314
4516
  },
4315
4517
  [emitValue]
4316
4518
  );
4317
- const handlePaste = (0, import_react33.useCallback)(
4519
+ const handlePaste = (0, import_react35.useCallback)(
4318
4520
  (text) => {
4319
4521
  const digits = extractDigits(text).slice(0, maxLength);
4320
4522
  if (digits.length > 0) {
@@ -4330,7 +4532,7 @@ function useInputOTP({
4330
4532
  },
4331
4533
  [maxLength, emitValue]
4332
4534
  );
4333
- const contextValue = (0, import_react33.useMemo)(
4535
+ const contextValue = (0, import_react35.useMemo)(
4334
4536
  () => ({
4335
4537
  slots,
4336
4538
  activeIndex,
@@ -4363,7 +4565,7 @@ function useInputOTP({
4363
4565
  }
4364
4566
 
4365
4567
  // src/input-otp/useInputOTPSlot.ts
4366
- var import_react34 = require("react");
4568
+ var import_react36 = require("react");
4367
4569
  function useInputOTPSlot(index) {
4368
4570
  const {
4369
4571
  slots,
@@ -4433,13 +4635,13 @@ function useInputOTPSlot(index) {
4433
4635
  event.preventDefault();
4434
4636
  handlePaste(event.clipboardData.getData("text/plain"));
4435
4637
  };
4436
- const setInputRef = (0, import_react34.useCallback)(
4638
+ const setInputRef = (0, import_react36.useCallback)(
4437
4639
  (element) => {
4438
4640
  inputRefs.current[index] = element;
4439
4641
  },
4440
4642
  [index, inputRefs]
4441
4643
  );
4442
- const focusSlot = (0, import_react34.useCallback)(() => {
4644
+ const focusSlot = (0, import_react36.useCallback)(() => {
4443
4645
  inputRefs.current[index]?.focus();
4444
4646
  }, [index, inputRefs]);
4445
4647
  return {
@@ -4541,7 +4743,7 @@ var InputOTPSeparator = React19.forwardRef(
4541
4743
  InputOTPSeparator.displayName = "InputOTPSeparator";
4542
4744
 
4543
4745
  // src/icons-dropdown/IconsDropdown.tsx
4544
- var import_react35 = require("react");
4746
+ var import_react37 = require("react");
4545
4747
  var import_jsx_runtime64 = require("react/jsx-runtime");
4546
4748
  function IconsDropdown({
4547
4749
  icons,
@@ -4553,7 +4755,7 @@ function IconsDropdown({
4553
4755
  defaultOpen,
4554
4756
  onOpenChange: onOpenChangeProp
4555
4757
  }) {
4556
- const [open, setOpen] = (0, import_react35.useState)(defaultOpen ?? false);
4758
+ const [open, setOpen] = (0, import_react37.useState)(defaultOpen ?? false);
4557
4759
  function handleOpenChange(value) {
4558
4760
  setOpen(value);
4559
4761
  onOpenChangeProp?.(value);
@@ -5136,9 +5338,9 @@ function LearnMoreButton({ label, ...props }) {
5136
5338
  }
5137
5339
 
5138
5340
  // src/link/Link.tsx
5139
- var import_react36 = require("react");
5341
+ var import_react38 = require("react");
5140
5342
  var import_jsx_runtime68 = require("react/jsx-runtime");
5141
- var LinkInternal = (0, import_react36.forwardRef)(
5343
+ var LinkInternal = (0, import_react38.forwardRef)(
5142
5344
  ({ disabled = false, className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
5143
5345
  "a",
5144
5346
  {
@@ -5157,17 +5359,17 @@ var LinkInternal = (0, import_react36.forwardRef)(
5157
5359
  )
5158
5360
  );
5159
5361
  LinkInternal.displayName = "Link";
5160
- var Link = (0, import_react36.memo)(LinkInternal);
5362
+ var Link = (0, import_react38.memo)(LinkInternal);
5161
5363
 
5162
5364
  // src/image-full-screen-view/ImageFullScreenView.tsx
5163
- var import_react37 = require("react");
5365
+ var import_react39 = require("react");
5164
5366
  var import_lucide_react20 = require("lucide-react");
5165
5367
  var import_react_i18next13 = require("react-i18next");
5166
5368
  var import_jsx_runtime69 = require("react/jsx-runtime");
5167
5369
  function ImageFullScreenView({ src, alt, onClose }) {
5168
5370
  const { t } = (0, import_react_i18next13.useTranslation)();
5169
- const [scale, setScale] = (0, import_react37.useState)(1);
5170
- const [rotation, setRotation] = (0, import_react37.useState)(0);
5371
+ const [scale, setScale] = (0, import_react39.useState)(1);
5372
+ const [rotation, setRotation] = (0, import_react39.useState)(0);
5171
5373
  useClickEscape({ onClick: onClose });
5172
5374
  const zoomIn = () => setScale((value) => Math.min(value + 0.25, 3));
5173
5375
  const zoomOut = () => setScale((value) => Math.max(value - 0.25, 0.5));
@@ -5365,7 +5567,7 @@ var METRIC_CARD_VARIANTS = {
5365
5567
  };
5366
5568
 
5367
5569
  // src/modal/Modal.tsx
5368
- var import_react38 = require("react");
5570
+ var import_react40 = require("react");
5369
5571
  var import_lucide_react23 = require("lucide-react");
5370
5572
 
5371
5573
  // src/modal/styles.module.css
@@ -5396,7 +5598,7 @@ function Modal({
5396
5598
  container,
5397
5599
  modal
5398
5600
  }) {
5399
- const contentRef = (0, import_react38.useRef)(null);
5601
+ const contentRef = (0, import_react40.useRef)(null);
5400
5602
  useScrollFrameIntoView(open, { elementRef: contentRef });
5401
5603
  const handleClose = () => {
5402
5604
  onOpenChange?.(false);
@@ -5438,7 +5640,7 @@ function Modal({
5438
5640
  }
5439
5641
  ) });
5440
5642
  }
5441
- var ModalButton = (0, import_react38.forwardRef)(
5643
+ var ModalButton = (0, import_react40.forwardRef)(
5442
5644
  ({ children, size, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
5443
5645
  Button,
5444
5646
  {
@@ -5454,9 +5656,9 @@ ModalButton.displayName = "ModalButton";
5454
5656
  Modal.displayName = "Modal";
5455
5657
 
5456
5658
  // src/modal-loader/ModalLoader.tsx
5457
- var import_react39 = require("react");
5659
+ var import_react41 = require("react");
5458
5660
  var import_jsx_runtime73 = require("react/jsx-runtime");
5459
- var ModalLoader = (0, import_react39.memo)(({ visible, className }) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
5661
+ var ModalLoader = (0, import_react41.memo)(({ visible, className }) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
5460
5662
  "div",
5461
5663
  {
5462
5664
  className: cn(
@@ -5844,7 +6046,7 @@ var PopoverContent = React21.forwardRef(({ className, sideOffset = 8, align = "s
5844
6046
  PopoverContent.displayName = "PopoverContent";
5845
6047
 
5846
6048
  // src/radio/Radio.tsx
5847
- var import_react41 = require("react");
6049
+ var import_react43 = require("react");
5848
6050
 
5849
6051
  // src/radio-group/RadioGroup.tsx
5850
6052
  var React22 = __toESM(require("react"), 1);
@@ -5877,11 +6079,11 @@ var RadioGroupItem = React22.forwardRef(({ className, ...props }, ref) => /* @__
5877
6079
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
5878
6080
 
5879
6081
  // src/radio/useRadioOptions.ts
5880
- var import_react40 = require("react");
6082
+ var import_react42 = require("react");
5881
6083
  function useRadioOptions({ options, defaultValue, onChange }) {
5882
6084
  const initialValue = (typeof defaultValue === "string" ? options.find((option) => option.value === defaultValue) : defaultValue) || "";
5883
- const [selectedValue, setSelectedValue] = (0, import_react40.useState)(initialValue);
5884
- const handleValueChange = (0, import_react40.useCallback)(
6085
+ const [selectedValue, setSelectedValue] = (0, import_react42.useState)(initialValue);
6086
+ const handleValueChange = (0, import_react42.useCallback)(
5885
6087
  (value) => {
5886
6088
  setSelectedValue(value);
5887
6089
  const selectedOption = options.find((option) => option.value === value) || "";
@@ -5902,7 +6104,7 @@ var styles_default5 = {};
5902
6104
 
5903
6105
  // src/radio/Radio.tsx
5904
6106
  var import_jsx_runtime80 = require("react/jsx-runtime");
5905
- var Radio = (0, import_react41.forwardRef)(
6107
+ var Radio = (0, import_react43.forwardRef)(
5906
6108
  ({ options, value, onChange, error, className = "", disabled = false, renderOption }, ref) => {
5907
6109
  const { selectedValue, handleValueChange } = useRadioOptions({
5908
6110
  options,
@@ -6292,7 +6494,7 @@ var SectionTagColors = /* @__PURE__ */ ((SectionTagColors2) => {
6292
6494
  })(SectionTagColors || {});
6293
6495
 
6294
6496
  // src/section/Section.tsx
6295
- var import_react42 = require("react");
6497
+ var import_react44 = require("react");
6296
6498
  var import_lucide_react31 = require("lucide-react");
6297
6499
 
6298
6500
  // src/section/constants.ts
@@ -6319,7 +6521,7 @@ function TooltipInfo({ content, className }) {
6319
6521
  }
6320
6522
  ) });
6321
6523
  }
6322
- var Section = (0, import_react42.forwardRef)(
6524
+ var Section = (0, import_react44.forwardRef)(
6323
6525
  ({
6324
6526
  children,
6325
6527
  title,
@@ -6371,17 +6573,17 @@ var Section = (0, import_react42.forwardRef)(
6371
6573
  )
6372
6574
  );
6373
6575
  Section.displayName = "Section";
6374
- var SubSection = (0, import_react42.forwardRef)(
6576
+ var SubSection = (0, import_react44.forwardRef)(
6375
6577
  ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Section, { ref, className: cn(Section_default.section_sub, className), ...props })
6376
6578
  );
6377
6579
  SubSection.displayName = "SubSection";
6378
- var DividingSubsection = (0, import_react42.forwardRef)(
6580
+ var DividingSubsection = (0, import_react44.forwardRef)(
6379
6581
  ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(SubSection, { ref, className: cn(Section_default.section_dividing, className), ...props })
6380
6582
  );
6381
6583
  DividingSubsection.displayName = "DividingSubsection";
6382
6584
 
6383
6585
  // src/selectors/Selectors.tsx
6384
- var import_react43 = require("react");
6586
+ var import_react45 = require("react");
6385
6587
 
6386
6588
  // src/selector-button/styles.module.css
6387
6589
  var styles_default7 = {};
@@ -6453,8 +6655,8 @@ var getValueArray = (value) => {
6453
6655
  return [];
6454
6656
  };
6455
6657
  function getSelectorContent(label, disabled, readOnly, active) {
6456
- if ((0, import_react43.isValidElement)(label)) {
6457
- return (0, import_react43.cloneElement)(label, {
6658
+ if ((0, import_react45.isValidElement)(label)) {
6659
+ return (0, import_react45.cloneElement)(label, {
6458
6660
  disabled,
6459
6661
  readOnly,
6460
6662
  active
@@ -6499,7 +6701,7 @@ function SelectorsInternal({
6499
6701
  }
6500
6702
  };
6501
6703
  const isAnyActive = getValueArray(value).length > 0;
6502
- (0, import_react43.useEffect)(() => {
6704
+ (0, import_react45.useEffect)(() => {
6503
6705
  onAnySelectorActive?.(isAnyActive);
6504
6706
  }, [isAnyActive, onAnySelectorActive]);
6505
6707
  return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(import_jsx_runtime91.Fragment, { children: [
@@ -6542,7 +6744,7 @@ function SelectorsInternal({
6542
6744
  )
6543
6745
  ] });
6544
6746
  }
6545
- var Selectors = (0, import_react43.forwardRef)(SelectorsInternal);
6747
+ var Selectors = (0, import_react45.forwardRef)(SelectorsInternal);
6546
6748
 
6547
6749
  // src/separator/Separator.tsx
6548
6750
  var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
@@ -6702,19 +6904,19 @@ function Skeleton({ className, ...props }) {
6702
6904
  }
6703
6905
 
6704
6906
  // src/sidebar/SidebarContext.ts
6705
- var import_react44 = require("react");
6706
- var SidebarContext = (0, import_react44.createContext)(null);
6907
+ var import_react46 = require("react");
6908
+ var SidebarContext = (0, import_react46.createContext)(null);
6707
6909
 
6708
6910
  // src/sidebar/useSidebarMenuButton.ts
6709
- var import_react46 = require("react");
6911
+ var import_react48 = require("react");
6710
6912
 
6711
6913
  // src/sidebar/SidebarMenuButtonContext.ts
6712
- var import_react45 = require("react");
6713
- var SidebarMenuButtonContext = (0, import_react45.createContext)(null);
6914
+ var import_react47 = require("react");
6915
+ var SidebarMenuButtonContext = (0, import_react47.createContext)(null);
6714
6916
 
6715
6917
  // src/sidebar/useSidebarMenuButton.ts
6716
6918
  function useSidebarMenuButton() {
6717
- return (0, import_react46.useContext)(SidebarMenuButtonContext);
6919
+ return (0, import_react48.useContext)(SidebarMenuButtonContext);
6718
6920
  }
6719
6921
 
6720
6922
  // src/sidebar/SidebarIcon.tsx
@@ -6755,16 +6957,16 @@ var SidebarIcon = ({
6755
6957
  };
6756
6958
 
6757
6959
  // src/sidebar/useSidebar.ts
6758
- var import_react47 = require("react");
6960
+ var import_react49 = require("react");
6759
6961
  function useSidebar() {
6760
- const context = (0, import_react47.useContext)(SidebarContext);
6962
+ const context = (0, import_react49.useContext)(SidebarContext);
6761
6963
  if (!context) {
6762
6964
  throw new Error("useSidebar must be used within a SidebarProvider.");
6763
6965
  }
6764
6966
  return context;
6765
6967
  }
6766
6968
  function useSidebarSafe() {
6767
- return (0, import_react47.useContext)(SidebarContext);
6969
+ return (0, import_react49.useContext)(SidebarContext);
6768
6970
  }
6769
6971
 
6770
6972
  // src/sidebar/Sidebar.tsx
@@ -7337,9 +7539,9 @@ var VALUE_PART = 1;
7337
7539
  var getSidebarState = (stateName) => document.cookie.split("; ").find((row) => row.startsWith(`${stateName}=`))?.split("=")[VALUE_PART] === "true";
7338
7540
 
7339
7541
  // src/circular-loader/CircularLoader.tsx
7340
- var import_react48 = __toESM(require("react"), 1);
7542
+ var import_react50 = __toESM(require("react"), 1);
7341
7543
  var import_jsx_runtime97 = require("react/jsx-runtime");
7342
- var CircularLoader = import_react48.default.memo(
7544
+ var CircularLoader = import_react50.default.memo(
7343
7545
  ({ visible = true, height, width, position, label, className }) => {
7344
7546
  if (!visible) return null;
7345
7547
  return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
@@ -7433,10 +7635,10 @@ var CircularLoader = import_react48.default.memo(
7433
7635
  CircularLoader.displayName = "CircularLoader";
7434
7636
 
7435
7637
  // src/small-grid-single-item/SmallGridSingleItem.tsx
7436
- var import_react49 = require("react");
7638
+ var import_react51 = require("react");
7437
7639
  var import_lucide_react34 = require("lucide-react");
7438
7640
  var import_jsx_runtime98 = require("react/jsx-runtime");
7439
- var SmallGridSingleItem = (0, import_react49.memo)(
7641
+ var SmallGridSingleItem = (0, import_react51.memo)(
7440
7642
  ({
7441
7643
  title,
7442
7644
  subtitle,
@@ -7557,7 +7759,7 @@ function SortingAction({
7557
7759
  }
7558
7760
 
7559
7761
  // src/status-button/StatusButton.tsx
7560
- var import_react50 = require("react");
7762
+ var import_react52 = require("react");
7561
7763
  var import_react_i18next20 = require("react-i18next");
7562
7764
  var import_lucide_react36 = require("lucide-react");
7563
7765
  var import_jsx_runtime100 = require("react/jsx-runtime");
@@ -7575,7 +7777,7 @@ function StatusButton({
7575
7777
  ...props
7576
7778
  }) {
7577
7779
  const { t } = (0, import_react_i18next20.useTranslation)();
7578
- const configMap = (0, import_react50.useMemo)(() => {
7780
+ const configMap = (0, import_react52.useMemo)(() => {
7579
7781
  const defaultLoadingConfig = {
7580
7782
  text: loadingText ?? `${t("saving")}...`,
7581
7783
  icon: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react36.Loader2, { className: "h-4 w-4 animate-spin" }),
@@ -7700,9 +7902,9 @@ function Stepper({
7700
7902
  }
7701
7903
 
7702
7904
  // src/switch-blocks/SwitchBlocks.tsx
7703
- var import_react51 = require("react");
7905
+ var import_react53 = require("react");
7704
7906
  var import_jsx_runtime103 = require("react/jsx-runtime");
7705
- var SwitchBlocksInternal = (0, import_react51.forwardRef)(
7907
+ var SwitchBlocksInternal = (0, import_react53.forwardRef)(
7706
7908
  ({ options, value, onChange, disabled, className }, ref) => /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
7707
7909
  "div",
7708
7910
  {
@@ -7726,7 +7928,7 @@ var SwitchBlocksInternal = (0, import_react51.forwardRef)(
7726
7928
  )
7727
7929
  );
7728
7930
  SwitchBlocksInternal.displayName = "SwitchBlocks";
7729
- var SwitchBlocks = (0, import_react51.memo)(SwitchBlocksInternal);
7931
+ var SwitchBlocks = (0, import_react53.memo)(SwitchBlocksInternal);
7730
7932
 
7731
7933
  // src/switch-group/SwitchGroup.tsx
7732
7934
  var React26 = __toESM(require("react"), 1);
@@ -7786,7 +7988,7 @@ var SwitchGroup = React26.forwardRef(
7786
7988
  SwitchGroup.displayName = "SwitchGroup";
7787
7989
 
7788
7990
  // src/tabs/Tabs.tsx
7789
- var import_react52 = require("react");
7991
+ var import_react54 = require("react");
7790
7992
  var TabsPrimitive2 = __toESM(require("@radix-ui/react-tabs"), 1);
7791
7993
  var import_class_variance_authority12 = require("class-variance-authority");
7792
7994
  var import_jsx_runtime105 = require("react/jsx-runtime");
@@ -7802,7 +8004,7 @@ var tabsListVariants = (0, import_class_variance_authority12.cva)("inline-flex i
7802
8004
  variant: "default"
7803
8005
  }
7804
8006
  });
7805
- var TabsList = (0, import_react52.forwardRef)(
8007
+ var TabsList = (0, import_react54.forwardRef)(
7806
8008
  ({ className, variant, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
7807
8009
  TabsPrimitive2.List,
7808
8010
  {
@@ -7827,7 +8029,7 @@ var tabsTriggerVariants = (0, import_class_variance_authority12.cva)(
7827
8029
  }
7828
8030
  }
7829
8031
  );
7830
- var TabsTrigger = (0, import_react52.forwardRef)(({ className, variant, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8032
+ var TabsTrigger = (0, import_react54.forwardRef)(({ className, variant, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
7831
8033
  TabsPrimitive2.Trigger,
7832
8034
  {
7833
8035
  ref,
@@ -7836,7 +8038,7 @@ var TabsTrigger = (0, import_react52.forwardRef)(({ className, variant, ...props
7836
8038
  }
7837
8039
  ));
7838
8040
  TabsTrigger.displayName = TabsPrimitive2.Trigger.displayName;
7839
- var TabsContent = (0, import_react52.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(TabsPrimitive2.Content, { ref, className, tabIndex: -1, ...props }));
8041
+ var TabsContent = (0, import_react54.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(TabsPrimitive2.Content, { ref, className, tabIndex: -1, ...props }));
7840
8042
  TabsContent.displayName = TabsPrimitive2.Content.displayName;
7841
8043
 
7842
8044
  // src/tabbed-section/TabbedSection.tsx
@@ -7977,11 +8179,11 @@ var TASK_VARIANTS = {
7977
8179
  var import_sonner2 = require("sonner");
7978
8180
 
7979
8181
  // src/toaster/useUpdateToast.ts
7980
- var import_react53 = require("react");
8182
+ var import_react55 = require("react");
7981
8183
  var import_sonner = require("sonner");
7982
8184
  function useUpdateToast({ id }) {
7983
- const toastIdRef = (0, import_react53.useRef)("");
7984
- const getToastOptions = (0, import_react53.useCallback)(
8185
+ const toastIdRef = (0, import_react55.useRef)("");
8186
+ const getToastOptions = (0, import_react55.useCallback)(
7985
8187
  (options) => ({
7986
8188
  id: toastIdRef.current,
7987
8189
  dismissible: false,
@@ -8096,7 +8298,7 @@ var ToggleGroupItem = React27.forwardRef(({ className, children, variant, size,
8096
8298
  ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
8097
8299
 
8098
8300
  // src/toggle-group/Toggles.tsx
8099
- var import_react54 = require("react");
8301
+ var import_react56 = require("react");
8100
8302
  var import_jsx_runtime110 = require("react/jsx-runtime");
8101
8303
  var getValueArray2 = (value) => {
8102
8304
  if (value) {
@@ -8171,7 +8373,7 @@ function TogglesInternal({
8171
8373
  }
8172
8374
  };
8173
8375
  const isAnyActive = getValueArray2(value).length > 0;
8174
- (0, import_react54.useEffect)(() => {
8376
+ (0, import_react56.useEffect)(() => {
8175
8377
  onAnySelectorActive?.(isAnyActive);
8176
8378
  }, [isAnyActive, onAnySelectorActive]);
8177
8379
  const currentValue = getValueArray2(value).map((item) => String(item));
@@ -8202,7 +8404,7 @@ function TogglesInternal({
8202
8404
  }) })
8203
8405
  ] });
8204
8406
  }
8205
- var Toggles = (0, import_react54.forwardRef)(TogglesInternal);
8407
+ var Toggles = (0, import_react56.forwardRef)(TogglesInternal);
8206
8408
 
8207
8409
  // src/text-field/TextField.tsx
8208
8410
  var React28 = __toESM(require("react"), 1);
@@ -8413,16 +8615,16 @@ var TextField = React28.forwardRef(
8413
8615
  TextField.displayName = "TextField";
8414
8616
 
8415
8617
  // src/textarea/Textarea.tsx
8416
- var import_react55 = require("react");
8618
+ var import_react57 = require("react");
8417
8619
 
8418
8620
  // src/textarea/styles.module.css
8419
8621
  var styles_default9 = {};
8420
8622
 
8421
8623
  // src/textarea/Textarea.tsx
8422
8624
  var import_jsx_runtime115 = require("react/jsx-runtime");
8423
- var Textarea = (0, import_react55.forwardRef)(
8625
+ var Textarea = (0, import_react57.forwardRef)(
8424
8626
  ({ className, textareaClassName, label, disabled, name, invalid, ...textareaProps }, ref) => {
8425
- const inputId = (0, import_react55.useId)();
8627
+ const inputId = (0, import_react57.useId)();
8426
8628
  return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("div", { className: cn(styles_default9.container, className), children: [
8427
8629
  /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
8428
8630
  "textarea",
@@ -11315,7 +11517,7 @@ AirbnbSearchInput.displayName = "SearchInput";
11315
11517
  var React41 = __toESM(require("react"), 1);
11316
11518
  var import_lucide_react46 = require("lucide-react");
11317
11519
  var import_react_virtual = require("@tanstack/react-virtual");
11318
- var import_react56 = require("react");
11520
+ var import_react58 = require("react");
11319
11521
  var import_jsx_runtime135 = require("react/jsx-runtime");
11320
11522
  var ROW_HEIGHT = 48;
11321
11523
  var DESKTOP_LIST_HEIGHT = 280;
@@ -11390,7 +11592,7 @@ var SearchableSelectInternal = ({
11390
11592
  const activeOptionId = highlightedIndex >= 0 ? getOptionId(reactId, highlightedIndex) : void 0;
11391
11593
  useOutsideClick(containerRef, open && !isMobile ? () => closeSelect() : null);
11392
11594
  const handleOnOpenChange = useEvent(onOpenChange);
11393
- const setSelectOpen = (0, import_react56.useCallback)(
11595
+ const setSelectOpen = (0, import_react58.useCallback)(
11394
11596
  (nextOpen, options2) => {
11395
11597
  setOpen(nextOpen);
11396
11598
  handleOnOpenChange?.(nextOpen);
@@ -11758,6 +11960,39 @@ function getNextEnabledIndex(options, startIndex, step) {
11758
11960
  }
11759
11961
  return -1;
11760
11962
  }
11963
+
11964
+ // src/lib/copy-to-clipboard.ts
11965
+ function copyToClipboardFallback(value) {
11966
+ const targetDocument = getDocument();
11967
+ const targetBody = targetDocument.body;
11968
+ if (!targetBody) {
11969
+ return;
11970
+ }
11971
+ const el = targetDocument.createElement("textarea");
11972
+ el.value = value;
11973
+ el.setAttribute("readonly", "");
11974
+ el.style.position = "fixed";
11975
+ el.style.opacity = "0";
11976
+ el.style.pointerEvents = "none";
11977
+ el.style.left = "-9999px";
11978
+ targetBody.appendChild(el);
11979
+ el.focus();
11980
+ el.select();
11981
+ targetDocument.execCommand("copy");
11982
+ targetBody.removeChild(el);
11983
+ }
11984
+ function copyToClipboard2(value) {
11985
+ const text = typeof value === "number" ? value.toString() : value;
11986
+ const targetDocument = getDocument();
11987
+ const clipboard = targetDocument.defaultView?.navigator?.clipboard ?? globalThis.navigator?.clipboard;
11988
+ if (!clipboard?.writeText) {
11989
+ copyToClipboardFallback(text);
11990
+ return;
11991
+ }
11992
+ void clipboard.writeText(text).catch(() => {
11993
+ copyToClipboardFallback(text);
11994
+ });
11995
+ }
11761
11996
  // Annotate the CommonJS export names for ESM import in node:
11762
11997
  0 && (module.exports = {
11763
11998
  Accordion,
@@ -12010,6 +12245,7 @@ function getNextEnabledIndex(options, startIndex, step) {
12010
12245
  buttonVariants,
12011
12246
  calendarClassNames,
12012
12247
  cn,
12248
+ copyToClipboard,
12013
12249
  emptyMediaVariants,
12014
12250
  getSidebarState,
12015
12251
  inputVariants,
@@ -12027,12 +12263,14 @@ function getNextEnabledIndex(options, startIndex, step) {
12027
12263
  useClickEscape,
12028
12264
  useCombinedRef,
12029
12265
  useDebounce,
12266
+ useDebouncedFunction,
12030
12267
  useEvent,
12031
12268
  useHover,
12032
12269
  useIsMobile,
12033
12270
  useIsMounted,
12034
12271
  useModalControls,
12035
12272
  useOutsideClick,
12273
+ usePagination,
12036
12274
  usePrevious,
12037
12275
  useRadioOptions,
12038
12276
  useScreenResize,