@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 +400 -162
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +34 -1
- package/dist/index.d.ts +34 -1
- package/dist/index.js +334 -99
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
2373
|
-
(0,
|
|
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
|
-
|
|
2397
|
+
handler();
|
|
2380
2398
|
}
|
|
2381
2399
|
};
|
|
2382
2400
|
window.addEventListener("keydown", handleKeyDown);
|
|
2383
|
-
return () =>
|
|
2384
|
-
|
|
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
|
|
2406
|
+
var import_react12 = require("react");
|
|
2391
2407
|
function useCombinedRef(...refs) {
|
|
2392
|
-
return (0,
|
|
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-
|
|
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,
|
|
2624
|
-
(0,
|
|
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
|
|
2833
|
+
var import_react23 = require("react");
|
|
2632
2834
|
var useTimer = ({ seconds }) => {
|
|
2633
|
-
const [timeLeft, setTimeLeft] = (0,
|
|
2634
|
-
const [isTimerRunning, setIsTimerRunning] = (0,
|
|
2635
|
-
(0,
|
|
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
|
|
2863
|
+
var import_react24 = require("react");
|
|
2662
2864
|
function useTimeout() {
|
|
2663
|
-
const timeoutRef = (0,
|
|
2664
|
-
const clearTimeoutRef = (0,
|
|
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,
|
|
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,
|
|
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
|
|
2882
|
+
var import_react25 = require("react");
|
|
2681
2883
|
function useHover() {
|
|
2682
|
-
const [isHovering, setIsHovering] = (0,
|
|
2683
|
-
const handleMouseEnter = (0,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
3347
|
-
const iframeRef = (0,
|
|
3348
|
-
const containerRef = (0,
|
|
3349
|
-
const [isPlaying, setIsPlaying] = (0,
|
|
3350
|
-
const [isMuted, setIsMuted] = (0,
|
|
3351
|
-
const [currentTime, setCurrentTime] = (0,
|
|
3352
|
-
const [duration, setDuration] = (0,
|
|
3353
|
-
const [isFullScreenMode, setIsFullScreenMode] = (0,
|
|
3354
|
-
const [isLoading, setIsLoading] = (0,
|
|
3355
|
-
const [videoSource, setVideoSource] = (0,
|
|
3356
|
-
const [youtubeEmbedUrl, setYoutubeEmbedUrl] = (0,
|
|
3357
|
-
const [vimeoEmbedUrl, setVimeoEmbedUrl] = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
3819
|
-
const [internalValue, setInternalValue] = (0,
|
|
3820
|
-
const [isFocused, setIsFocused] = (0,
|
|
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
|
|
4145
|
+
var import_react31 = require("react");
|
|
3944
4146
|
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
3945
|
-
var GridItems = (0,
|
|
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
|
|
4224
|
+
var import_react32 = require("react");
|
|
4023
4225
|
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
4024
|
-
var MissingIcon = (0,
|
|
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,
|
|
4054
|
-
(0,
|
|
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
|
|
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,
|
|
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
|
|
4206
|
-
var InputOTPContext = (0,
|
|
4407
|
+
var import_react34 = require("react");
|
|
4408
|
+
var InputOTPContext = (0, import_react34.createContext)(null);
|
|
4207
4409
|
function useInputOTPContext() {
|
|
4208
|
-
const ctx = (0,
|
|
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
|
|
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,
|
|
4230
|
-
const inputRefs = (0,
|
|
4231
|
-
const containerRef = (0,
|
|
4232
|
-
const blurTimeoutRef = (0,
|
|
4233
|
-
const slotsRef = (0,
|
|
4234
|
-
const slots = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
4288
|
-
const handleDigitInput = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
5341
|
+
var import_react38 = require("react");
|
|
5140
5342
|
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
5141
|
-
var LinkInternal = (0,
|
|
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,
|
|
5362
|
+
var Link = (0, import_react38.memo)(LinkInternal);
|
|
5161
5363
|
|
|
5162
5364
|
// src/image-full-screen-view/ImageFullScreenView.tsx
|
|
5163
|
-
var
|
|
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,
|
|
5170
|
-
const [rotation, setRotation] = (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
|
|
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,
|
|
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,
|
|
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
|
|
5659
|
+
var import_react41 = require("react");
|
|
5458
5660
|
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
5459
|
-
var ModalLoader = (0,
|
|
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
|
|
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
|
|
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,
|
|
5884
|
-
const handleValueChange = (0,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
6457
|
-
return (0,
|
|
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,
|
|
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,
|
|
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
|
|
6706
|
-
var SidebarContext = (0,
|
|
6907
|
+
var import_react46 = require("react");
|
|
6908
|
+
var SidebarContext = (0, import_react46.createContext)(null);
|
|
6707
6909
|
|
|
6708
6910
|
// src/sidebar/useSidebarMenuButton.ts
|
|
6709
|
-
var
|
|
6911
|
+
var import_react48 = require("react");
|
|
6710
6912
|
|
|
6711
6913
|
// src/sidebar/SidebarMenuButtonContext.ts
|
|
6712
|
-
var
|
|
6713
|
-
var SidebarMenuButtonContext = (0,
|
|
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,
|
|
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
|
|
6960
|
+
var import_react49 = require("react");
|
|
6759
6961
|
function useSidebar() {
|
|
6760
|
-
const context = (0,
|
|
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,
|
|
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
|
|
7542
|
+
var import_react50 = __toESM(require("react"), 1);
|
|
7341
7543
|
var import_jsx_runtime97 = require("react/jsx-runtime");
|
|
7342
|
-
var CircularLoader =
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
7905
|
+
var import_react53 = require("react");
|
|
7704
7906
|
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
7705
|
-
var SwitchBlocksInternal = (0,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
8182
|
+
var import_react55 = require("react");
|
|
7981
8183
|
var import_sonner = require("sonner");
|
|
7982
8184
|
function useUpdateToast({ id }) {
|
|
7983
|
-
const toastIdRef = (0,
|
|
7984
|
-
const getToastOptions = (0,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
8625
|
+
var Textarea = (0, import_react57.forwardRef)(
|
|
8424
8626
|
({ className, textareaClassName, label, disabled, name, invalid, ...textareaProps }, ref) => {
|
|
8425
|
-
const inputId = (0,
|
|
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
|
|
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,
|
|
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,
|