@chekinapp/ui 0.0.32 → 0.0.34
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 +259 -248
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +330 -320
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1316,20 +1316,19 @@ function ChannelSelector({
|
|
|
1316
1316
|
const newValues = selectedValues.includes(value) ? selectedValues.filter((selectedValue) => selectedValue !== value) : [...selectedValues, value];
|
|
1317
1317
|
onChange(newValues);
|
|
1318
1318
|
};
|
|
1319
|
-
return /* @__PURE__ */ jsx16("div", { className: "flex gap-
|
|
1319
|
+
return /* @__PURE__ */ jsx16("div", { className: "flex gap-3", children: /* @__PURE__ */ jsx16(TooltipProvider, { children: options.map((option) => {
|
|
1320
1320
|
const isSelected = selectedValues.includes(option.value);
|
|
1321
1321
|
const isReadOnly = readOnlyValues.includes(option.value);
|
|
1322
1322
|
return /* @__PURE__ */ jsxs12(Tooltip, { children: [
|
|
1323
1323
|
/* @__PURE__ */ jsx16(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs12(
|
|
1324
1324
|
Button,
|
|
1325
1325
|
{
|
|
1326
|
-
variant: "
|
|
1327
|
-
size: "icon",
|
|
1326
|
+
variant: "outline",
|
|
1328
1327
|
type: "button",
|
|
1329
1328
|
onClick: () => handleToggle(option.value),
|
|
1330
1329
|
disabled: isReadOnly,
|
|
1331
1330
|
className: cn(
|
|
1332
|
-
"relative h-10 w-10 rounded-lg border-2 bg-white p-0 transition-all",
|
|
1331
|
+
"relative flex h-10 w-10 items-center justify-center rounded-lg border-2 bg-white p-0 transition-all",
|
|
1333
1332
|
isSelected ? "border-chekin-blue bg-chekin-blue/10" : "border-chekin-gray-3 hover:border-chekin-blue/30",
|
|
1334
1333
|
isReadOnly ? "cursor-default opacity-100" : "cursor-pointer"
|
|
1335
1334
|
),
|
|
@@ -1354,11 +1353,11 @@ var BaseCheckbox = React6.forwardRef(({ className, loading, onCheckedChange, dis
|
|
|
1354
1353
|
{
|
|
1355
1354
|
ref,
|
|
1356
1355
|
className: cn(
|
|
1357
|
-
"peer h-5 w-5 shrink-0 rounded-sm border border-solid border-
|
|
1356
|
+
"checkbox__control peer h-5 w-5 shrink-0 rounded-sm border border-solid border-[var(--checkbox-border)] bg-[var(--checkbox-bg)]",
|
|
1358
1357
|
"focus-visible:outline-none focus-visible:shadow-chekin-focus",
|
|
1359
1358
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
1360
1359
|
"aria-busy:cursor-wait aria-busy:opacity-50 aria-readonly:cursor-default aria-readonly:opacity-100",
|
|
1361
|
-
"data-[state=checked]:bg-
|
|
1360
|
+
"data-[state=checked]:border-[var(--checkbox-checked-border)] data-[state=checked]:bg-[var(--checkbox-checked-bg)] data-[state=checked]:text-[var(--checkbox-check-color)]",
|
|
1362
1361
|
className
|
|
1363
1362
|
),
|
|
1364
1363
|
...props,
|
|
@@ -1370,7 +1369,7 @@ var BaseCheckbox = React6.forwardRef(({ className, loading, onCheckedChange, dis
|
|
|
1370
1369
|
CheckboxPrimitive.Indicator,
|
|
1371
1370
|
{
|
|
1372
1371
|
className: cn("flex items-center justify-center text-current"),
|
|
1373
|
-
children: /* @__PURE__ */ jsx17(Check3, { className: "h-5 w-5" })
|
|
1372
|
+
children: /* @__PURE__ */ jsx17(Check3, { className: "checkbox__icon h-5 w-5" })
|
|
1374
1373
|
}
|
|
1375
1374
|
)
|
|
1376
1375
|
}
|
|
@@ -1430,7 +1429,7 @@ var Checkbox = React8.forwardRef(
|
|
|
1430
1429
|
{
|
|
1431
1430
|
htmlFor: checkboxId,
|
|
1432
1431
|
className: cn(
|
|
1433
|
-
"cursor-pointer text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
1432
|
+
"cursor-pointer text-sm font-medium leading-none text-chekin-navy peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
1434
1433
|
labelClassName
|
|
1435
1434
|
),
|
|
1436
1435
|
children: label
|
|
@@ -1589,7 +1588,7 @@ var CheckboxGroup = React9.forwardRef(
|
|
|
1589
1588
|
Label,
|
|
1590
1589
|
{
|
|
1591
1590
|
htmlFor: selectAllId,
|
|
1592
|
-
className: "cursor-pointer text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
1591
|
+
className: "cursor-pointer text-sm font-medium leading-none text-chekin-navy peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
1593
1592
|
children: selectAllLabel
|
|
1594
1593
|
}
|
|
1595
1594
|
)
|
|
@@ -2028,7 +2027,7 @@ function DataTable({ columns, data }) {
|
|
|
2028
2027
|
}
|
|
2029
2028
|
|
|
2030
2029
|
// src/dialog/Dialog.tsx
|
|
2031
|
-
import * as
|
|
2030
|
+
import * as React12 from "react";
|
|
2032
2031
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
2033
2032
|
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
|
|
2034
2033
|
import { XIcon } from "lucide-react";
|
|
@@ -2237,18 +2236,28 @@ function useOutsideClick({
|
|
|
2237
2236
|
}
|
|
2238
2237
|
|
|
2239
2238
|
// src/hooks/use-screen-resize.ts
|
|
2240
|
-
import
|
|
2239
|
+
import React11 from "react";
|
|
2241
2240
|
var eventName = "resize";
|
|
2242
|
-
function
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2241
|
+
function getMediaQuery(maxWidth, matchString) {
|
|
2242
|
+
if (matchString) {
|
|
2243
|
+
return matchString;
|
|
2244
|
+
}
|
|
2245
|
+
return maxWidth ? `(max-width: ${maxWidth})` : null;
|
|
2246
|
+
}
|
|
2247
|
+
function useScreenResize(maxWidth, matchString) {
|
|
2248
|
+
const [isInitialized, setIsInitialized] = React11.useState(false);
|
|
2249
|
+
const [isMatch, setIsMatch] = React11.useState(false);
|
|
2250
|
+
const handleResizeEvent = React11.useCallback(() => {
|
|
2251
|
+
const mediaQuery = getMediaQuery(maxWidth, matchString);
|
|
2248
2252
|
setIsInitialized(true);
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2253
|
+
if (!mediaQuery) {
|
|
2254
|
+
setIsMatch(false);
|
|
2255
|
+
return;
|
|
2256
|
+
}
|
|
2257
|
+
const media = getWindow().matchMedia(mediaQuery);
|
|
2258
|
+
setIsMatch(media.matches);
|
|
2259
|
+
}, [maxWidth, matchString]);
|
|
2260
|
+
React11.useEffect(() => {
|
|
2252
2261
|
handleResizeEvent();
|
|
2253
2262
|
getWindow().addEventListener(eventName, handleResizeEvent);
|
|
2254
2263
|
return () => {
|
|
@@ -2305,10 +2314,10 @@ function useScrollFrameIntoView(active, options = {}) {
|
|
|
2305
2314
|
}
|
|
2306
2315
|
|
|
2307
2316
|
// src/hooks/use-debounce.ts
|
|
2308
|
-
import { useEffect as useEffect10, useState as
|
|
2317
|
+
import { useEffect as useEffect10, useState as useState7 } from "react";
|
|
2309
2318
|
function useDebounce(value, delayMs = 1e3, handleChange) {
|
|
2310
2319
|
const onChange = useEvent(handleChange);
|
|
2311
|
-
const [debouncedValue, setDebouncedValue] =
|
|
2320
|
+
const [debouncedValue, setDebouncedValue] = useState7(value);
|
|
2312
2321
|
useEffect10(() => {
|
|
2313
2322
|
const handler = setTimeout(() => {
|
|
2314
2323
|
setDebouncedValue(value);
|
|
@@ -2324,12 +2333,12 @@ function useDebounce(value, delayMs = 1e3, handleChange) {
|
|
|
2324
2333
|
}
|
|
2325
2334
|
|
|
2326
2335
|
// src/hooks/use-debounced-function.ts
|
|
2327
|
-
import { useCallback as
|
|
2336
|
+
import { useCallback as useCallback6, useRef as useRef6 } from "react";
|
|
2328
2337
|
function useDebouncedFunction(callback, delay) {
|
|
2329
2338
|
const timerRef = useRef6();
|
|
2330
2339
|
const immediateCalling = useRef6(false);
|
|
2331
2340
|
const callbackFn = useEvent(callback);
|
|
2332
|
-
const throttled =
|
|
2341
|
+
const throttled = useCallback6(
|
|
2333
2342
|
(...args) => {
|
|
2334
2343
|
clearTimeout(timerRef.current);
|
|
2335
2344
|
if (immediateCalling.current) {
|
|
@@ -2344,7 +2353,7 @@ function useDebouncedFunction(callback, delay) {
|
|
|
2344
2353
|
},
|
|
2345
2354
|
[callbackFn, delay]
|
|
2346
2355
|
);
|
|
2347
|
-
const immediate =
|
|
2356
|
+
const immediate = useCallback6(() => {
|
|
2348
2357
|
immediateCalling.current = true;
|
|
2349
2358
|
}, []);
|
|
2350
2359
|
return { throttled, immediate };
|
|
@@ -2361,7 +2370,7 @@ function usePrevious(value, defaultValue) {
|
|
|
2361
2370
|
}
|
|
2362
2371
|
|
|
2363
2372
|
// src/hooks/use-pagination.ts
|
|
2364
|
-
import { useCallback as
|
|
2373
|
+
import { useCallback as useCallback7, useEffect as useEffect12, useMemo, useState as useState8 } from "react";
|
|
2365
2374
|
|
|
2366
2375
|
// src/storage/AbstractStorage.ts
|
|
2367
2376
|
var AbstractStorage = class {
|
|
@@ -2434,7 +2443,7 @@ var DEFAULT_PAGE_SIZE = 20;
|
|
|
2434
2443
|
var DEFAULT_PAGE = 1;
|
|
2435
2444
|
function usePagination(config) {
|
|
2436
2445
|
const { key, defaultPageSize = DEFAULT_PAGE_SIZE, defaultPage = DEFAULT_PAGE } = config;
|
|
2437
|
-
const [state, setState] =
|
|
2446
|
+
const [state, setState] = useState8(() => {
|
|
2438
2447
|
const stored = SessionStorage.get(`pagination-${key}`);
|
|
2439
2448
|
if (stored) {
|
|
2440
2449
|
return {
|
|
@@ -2464,14 +2473,14 @@ function usePagination(config) {
|
|
|
2464
2473
|
return Math.min(state.page * state.pageSize, state.totalItems);
|
|
2465
2474
|
}, [state.page, state.pageSize, state.totalItems]);
|
|
2466
2475
|
const isEmpty = useMemo(() => state.totalItems === 0, [state.totalItems]);
|
|
2467
|
-
const setPage =
|
|
2476
|
+
const setPage = useCallback7(
|
|
2468
2477
|
(page) => {
|
|
2469
2478
|
const clampedPage = Math.max(1, Math.min(page, pages || 1));
|
|
2470
2479
|
setState((prev) => ({ ...prev, page: clampedPage }));
|
|
2471
2480
|
},
|
|
2472
2481
|
[pages]
|
|
2473
2482
|
);
|
|
2474
|
-
const setPageSize =
|
|
2483
|
+
const setPageSize = useCallback7((pageSize) => {
|
|
2475
2484
|
const validPageSize = Math.max(1, pageSize);
|
|
2476
2485
|
setState((prev) => {
|
|
2477
2486
|
const currentFirstItem = (prev.page - 1) * prev.pageSize + 1;
|
|
@@ -2483,7 +2492,7 @@ function usePagination(config) {
|
|
|
2483
2492
|
};
|
|
2484
2493
|
});
|
|
2485
2494
|
}, []);
|
|
2486
|
-
const setTotalItems =
|
|
2495
|
+
const setTotalItems = useCallback7((totalItems) => {
|
|
2487
2496
|
const validTotalItems = Math.max(0, totalItems);
|
|
2488
2497
|
setState((prev) => {
|
|
2489
2498
|
const newPages = validTotalItems > 0 ? Math.ceil(validTotalItems / prev.pageSize) : 0;
|
|
@@ -2495,19 +2504,19 @@ function usePagination(config) {
|
|
|
2495
2504
|
};
|
|
2496
2505
|
});
|
|
2497
2506
|
}, []);
|
|
2498
|
-
const nextPage =
|
|
2507
|
+
const nextPage = useCallback7(() => {
|
|
2499
2508
|
setPage(state.page + 1);
|
|
2500
2509
|
}, [setPage, state.page]);
|
|
2501
|
-
const previousPage =
|
|
2510
|
+
const previousPage = useCallback7(() => {
|
|
2502
2511
|
setPage(state.page - 1);
|
|
2503
2512
|
}, [setPage, state.page]);
|
|
2504
|
-
const goToFirstPage =
|
|
2513
|
+
const goToFirstPage = useCallback7(() => {
|
|
2505
2514
|
setPage(1);
|
|
2506
2515
|
}, [setPage]);
|
|
2507
|
-
const goToLastPage =
|
|
2516
|
+
const goToLastPage = useCallback7(() => {
|
|
2508
2517
|
setPage(pages);
|
|
2509
2518
|
}, [setPage, pages]);
|
|
2510
|
-
const reset =
|
|
2519
|
+
const reset = useCallback7(() => {
|
|
2511
2520
|
setState({
|
|
2512
2521
|
page: defaultPage,
|
|
2513
2522
|
pageSize: defaultPageSize,
|
|
@@ -2536,7 +2545,7 @@ function usePagination(config) {
|
|
|
2536
2545
|
}
|
|
2537
2546
|
|
|
2538
2547
|
// src/hooks/use-copy-to-clipboard.ts
|
|
2539
|
-
import { useEffect as useEffect13, useRef as useRef8, useState as
|
|
2548
|
+
import { useEffect as useEffect13, useRef as useRef8, useState as useState9 } from "react";
|
|
2540
2549
|
|
|
2541
2550
|
// src/lib/copy-to-clipboard.ts
|
|
2542
2551
|
function copyToClipboardFallback(value) {
|
|
@@ -2574,7 +2583,7 @@ function copyToClipboard2(value) {
|
|
|
2574
2583
|
// src/hooks/use-copy-to-clipboard.ts
|
|
2575
2584
|
var COPIED_TIMEOUT_S = 1.5;
|
|
2576
2585
|
function useCopyToClipboard({ value, onCopiedLink, onReset }) {
|
|
2577
|
-
const [isCopied, setIsLinkCopied] =
|
|
2586
|
+
const [isCopied, setIsLinkCopied] = useState9(false);
|
|
2578
2587
|
const timeoutRef = useRef8();
|
|
2579
2588
|
useEffect13(() => {
|
|
2580
2589
|
return () => {
|
|
@@ -2600,10 +2609,10 @@ function useCopyToClipboard({ value, onCopiedLink, onReset }) {
|
|
|
2600
2609
|
}
|
|
2601
2610
|
|
|
2602
2611
|
// src/hooks/use-timer.ts
|
|
2603
|
-
import { useEffect as useEffect14, useState as
|
|
2612
|
+
import { useEffect as useEffect14, useState as useState10 } from "react";
|
|
2604
2613
|
var useTimer = ({ seconds }) => {
|
|
2605
|
-
const [timeLeft, setTimeLeft] =
|
|
2606
|
-
const [isTimerRunning, setIsTimerRunning] =
|
|
2614
|
+
const [timeLeft, setTimeLeft] = useState10(seconds);
|
|
2615
|
+
const [isTimerRunning, setIsTimerRunning] = useState10(true);
|
|
2607
2616
|
useEffect14(() => {
|
|
2608
2617
|
if (!isTimerRunning) return;
|
|
2609
2618
|
const timer = setInterval(() => {
|
|
@@ -2663,13 +2672,13 @@ function useTimeout(callback, ms = 0) {
|
|
|
2663
2672
|
}
|
|
2664
2673
|
|
|
2665
2674
|
// src/hooks/use-hover.ts
|
|
2666
|
-
import { useCallback as
|
|
2675
|
+
import { useCallback as useCallback8, useState as useState11 } from "react";
|
|
2667
2676
|
function useHover() {
|
|
2668
|
-
const [isHovering, setIsHovering] =
|
|
2669
|
-
const handleMouseEnter =
|
|
2677
|
+
const [isHovering, setIsHovering] = useState11(false);
|
|
2678
|
+
const handleMouseEnter = useCallback8(() => {
|
|
2670
2679
|
setIsHovering(true);
|
|
2671
2680
|
}, []);
|
|
2672
|
-
const handleMouseLeave =
|
|
2681
|
+
const handleMouseLeave = useCallback8(() => {
|
|
2673
2682
|
setIsHovering(false);
|
|
2674
2683
|
}, []);
|
|
2675
2684
|
return {
|
|
@@ -2680,7 +2689,7 @@ function useHover() {
|
|
|
2680
2689
|
}
|
|
2681
2690
|
|
|
2682
2691
|
// src/hooks/use-key-down.ts
|
|
2683
|
-
import { useCallback as
|
|
2692
|
+
import { useCallback as useCallback9, useEffect as useEffect16 } from "react";
|
|
2684
2693
|
function useKeyDown(key, cb, options) {
|
|
2685
2694
|
const {
|
|
2686
2695
|
enabled = true,
|
|
@@ -2690,7 +2699,7 @@ function useKeyDown(key, cb, options) {
|
|
|
2690
2699
|
altKey = false
|
|
2691
2700
|
} = options ?? {};
|
|
2692
2701
|
const handleCallback = useEvent(cb);
|
|
2693
|
-
const handleKeyDown =
|
|
2702
|
+
const handleKeyDown = useCallback9(
|
|
2694
2703
|
(event) => {
|
|
2695
2704
|
const keys = Array.isArray(key) ? key : [key];
|
|
2696
2705
|
const isKeyMatch = keys.includes(event.key);
|
|
@@ -2748,14 +2757,14 @@ var usePromisedModalControls = () => {
|
|
|
2748
2757
|
};
|
|
2749
2758
|
|
|
2750
2759
|
// src/hooks/use-is-form-touched.ts
|
|
2751
|
-
import { useState as
|
|
2760
|
+
import { useState as useState12 } from "react";
|
|
2752
2761
|
function useIsFormTouched({
|
|
2753
2762
|
watch,
|
|
2754
2763
|
displayFields,
|
|
2755
2764
|
debug,
|
|
2756
2765
|
defaultValues
|
|
2757
2766
|
}) {
|
|
2758
|
-
const [untouchedValues, setUntouchedValues] =
|
|
2767
|
+
const [untouchedValues, setUntouchedValues] = useState12(defaultValues || {});
|
|
2759
2768
|
const getIsFormTouched = () => {
|
|
2760
2769
|
if (!Object.keys(untouchedValues)) {
|
|
2761
2770
|
return false;
|
|
@@ -2800,7 +2809,7 @@ function useIsFormTouched({
|
|
|
2800
2809
|
// src/dialog/Dialog.tsx
|
|
2801
2810
|
import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2802
2811
|
function useIframeTitleFix(titleRef) {
|
|
2803
|
-
|
|
2812
|
+
React12.useEffect(() => {
|
|
2804
2813
|
if (!window.chekinCustomDocument) {
|
|
2805
2814
|
return;
|
|
2806
2815
|
}
|
|
@@ -2829,7 +2838,7 @@ function DialogClose({ ...props }) {
|
|
|
2829
2838
|
}
|
|
2830
2839
|
var dialogOverlayClasses = "fixed inset-0 z-50 bg-[var(--dialog-overlay-bg)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0";
|
|
2831
2840
|
var scrollableOverlayClasses = "fixed inset-0 z-50 flex flex-col items-center overflow-y-auto overscroll-none pb-[19px] pt-[20px]";
|
|
2832
|
-
var DialogOverlay =
|
|
2841
|
+
var DialogOverlay = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
|
|
2833
2842
|
DialogPrimitive.Overlay,
|
|
2834
2843
|
{
|
|
2835
2844
|
ref,
|
|
@@ -2841,7 +2850,7 @@ var DialogOverlay = React11.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
2841
2850
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
2842
2851
|
var dialogContentClasses = "relative z-50 my-auto w-full max-w-[calc(100%-2rem)] rounded-[var(--dialog-content-radius)] border border-[var(--dialog-content-border)] bg-[var(--dialog-content-bg)] p-6 text-[var(--dialog-content-text)] shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:max-w-2xl";
|
|
2843
2852
|
var dialogCloseButtonClasses = "absolute right-4 top-4 rounded-[var(--dialog-close-radius)] opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:shadow-chekin-focus disabled:pointer-events-none [&_svg:not([class*=size-])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0";
|
|
2844
|
-
var DialogContent =
|
|
2853
|
+
var DialogContent = React12.forwardRef(
|
|
2845
2854
|
({ className, showCloseButton = true, children, container, lockScroll = true, ...props }, ref) => {
|
|
2846
2855
|
const contentElement = /* @__PURE__ */ jsxs22(
|
|
2847
2856
|
DialogPrimitive.Content,
|
|
@@ -2889,8 +2898,8 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx29(
|
|
|
2889
2898
|
}
|
|
2890
2899
|
);
|
|
2891
2900
|
DialogFooter.displayName = "DialogFooter";
|
|
2892
|
-
var DialogTitle =
|
|
2893
|
-
const titleRef =
|
|
2901
|
+
var DialogTitle = React12.forwardRef(({ className, ...props }, ref) => {
|
|
2902
|
+
const titleRef = React12.useRef(null);
|
|
2894
2903
|
const combinedRef = useCombinedRef(titleRef, ref);
|
|
2895
2904
|
useIframeTitleFix(titleRef);
|
|
2896
2905
|
return /* @__PURE__ */ jsx29(
|
|
@@ -2904,7 +2913,7 @@ var DialogTitle = React11.forwardRef(({ className, ...props }, ref) => {
|
|
|
2904
2913
|
);
|
|
2905
2914
|
});
|
|
2906
2915
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
2907
|
-
var DialogDescription =
|
|
2916
|
+
var DialogDescription = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
|
|
2908
2917
|
DialogPrimitive.Description,
|
|
2909
2918
|
{
|
|
2910
2919
|
ref,
|
|
@@ -2966,9 +2975,9 @@ function ConfirmationDialog({
|
|
|
2966
2975
|
}
|
|
2967
2976
|
|
|
2968
2977
|
// src/default-select-trigger/DefaultSelectTrigger.tsx
|
|
2969
|
-
import * as
|
|
2978
|
+
import * as React13 from "react";
|
|
2970
2979
|
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
2971
|
-
var DefaultSelectTrigger =
|
|
2980
|
+
var DefaultSelectTrigger = React13.forwardRef(
|
|
2972
2981
|
({
|
|
2973
2982
|
className,
|
|
2974
2983
|
disabled,
|
|
@@ -3032,17 +3041,17 @@ function DownloadEntryFormsButton({
|
|
|
3032
3041
|
}
|
|
3033
3042
|
|
|
3034
3043
|
// src/dropdown-button/DropdownButton.tsx
|
|
3035
|
-
import { useState as
|
|
3044
|
+
import { useState as useState13 } from "react";
|
|
3036
3045
|
|
|
3037
3046
|
// src/dropdown-menu/DropdownMenu.tsx
|
|
3038
|
-
import * as
|
|
3047
|
+
import * as React14 from "react";
|
|
3039
3048
|
import * as RadixMenu from "@radix-ui/react-dropdown-menu";
|
|
3040
3049
|
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
3041
3050
|
var DropdownMenu = RadixMenu.Root;
|
|
3042
3051
|
var DropdownMenuTrigger = RadixMenu.Trigger;
|
|
3043
3052
|
var DropdownMenuPortal = RadixMenu.Portal;
|
|
3044
3053
|
var DropdownMenuGroup = RadixMenu.Group;
|
|
3045
|
-
var DropdownMenuContent =
|
|
3054
|
+
var DropdownMenuContent = React14.forwardRef(({ className, sideOffset = 6, container, ...props }, ref) => /* @__PURE__ */ jsx33(RadixMenu.Portal, { container: container || getCustomContainer(), children: /* @__PURE__ */ jsx33(
|
|
3046
3055
|
RadixMenu.Content,
|
|
3047
3056
|
{
|
|
3048
3057
|
ref,
|
|
@@ -3063,9 +3072,9 @@ var itemClasses = [
|
|
|
3063
3072
|
"data-[highlighted]:bg-chekin-surface-pressed data-[highlighted]:text-chekin-blue",
|
|
3064
3073
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-30"
|
|
3065
3074
|
];
|
|
3066
|
-
var DropdownMenuItem =
|
|
3075
|
+
var DropdownMenuItem = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(RadixMenu.Item, { ref, className: cn(itemClasses, className), ...props }));
|
|
3067
3076
|
DropdownMenuItem.displayName = "DropdownMenuItem";
|
|
3068
|
-
var DropdownMenuLabel =
|
|
3077
|
+
var DropdownMenuLabel = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(
|
|
3069
3078
|
RadixMenu.Label,
|
|
3070
3079
|
{
|
|
3071
3080
|
ref,
|
|
@@ -3077,7 +3086,7 @@ var DropdownMenuLabel = React13.forwardRef(({ className, ...props }, ref) => /*
|
|
|
3077
3086
|
}
|
|
3078
3087
|
));
|
|
3079
3088
|
DropdownMenuLabel.displayName = "DropdownMenuLabel";
|
|
3080
|
-
var DropdownMenuSeparator =
|
|
3089
|
+
var DropdownMenuSeparator = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(
|
|
3081
3090
|
RadixMenu.Separator,
|
|
3082
3091
|
{
|
|
3083
3092
|
ref,
|
|
@@ -3096,7 +3105,7 @@ function DropdownButton({
|
|
|
3096
3105
|
modal,
|
|
3097
3106
|
className
|
|
3098
3107
|
}) {
|
|
3099
|
-
const [isOpen, setIsOpen] =
|
|
3108
|
+
const [isOpen, setIsOpen] = useState13(false);
|
|
3100
3109
|
return /* @__PURE__ */ jsxs25(DropdownMenu, { onOpenChange: setIsOpen, modal, children: [
|
|
3101
3110
|
/* @__PURE__ */ jsx34(DropdownMenuTrigger, { asChild: true, children: typeof trigger === "function" ? trigger(isOpen) : trigger }),
|
|
3102
3111
|
/* @__PURE__ */ jsx34(
|
|
@@ -3309,9 +3318,9 @@ function EmptySectionPlaceholder({
|
|
|
3309
3318
|
}
|
|
3310
3319
|
|
|
3311
3320
|
// src/external-link/ExternalLink.tsx
|
|
3312
|
-
import * as
|
|
3321
|
+
import * as React15 from "react";
|
|
3313
3322
|
import { jsx as jsx43, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3314
|
-
var ExternalLink =
|
|
3323
|
+
var ExternalLink = React15.forwardRef(
|
|
3315
3324
|
({ className, children, showIcon = true, target = "_blank", rel, ...props }, ref) => /* @__PURE__ */ jsxs27(
|
|
3316
3325
|
"a",
|
|
3317
3326
|
{
|
|
@@ -3357,7 +3366,7 @@ import { useTranslation as useTranslation9 } from "react-i18next";
|
|
|
3357
3366
|
import { Play as Play3 } from "lucide-react";
|
|
3358
3367
|
|
|
3359
3368
|
// src/switch/Switch.tsx
|
|
3360
|
-
import * as
|
|
3369
|
+
import * as React16 from "react";
|
|
3361
3370
|
import * as SwitchPrimitives from "@radix-ui/react-switch";
|
|
3362
3371
|
import { cva as cva7 } from "class-variance-authority";
|
|
3363
3372
|
import { jsx as jsx44, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
@@ -3399,9 +3408,9 @@ var switchThumbVariants = cva7(
|
|
|
3399
3408
|
}
|
|
3400
3409
|
}
|
|
3401
3410
|
);
|
|
3402
|
-
var Switch =
|
|
3411
|
+
var Switch = React16.forwardRef(
|
|
3403
3412
|
({ className, size, readOnly, loading, onChange, value, id, label, error, ...props }, ref) => {
|
|
3404
|
-
const generatedId =
|
|
3413
|
+
const generatedId = React16.useId();
|
|
3405
3414
|
const fieldId = id || generatedId;
|
|
3406
3415
|
const switchElement = /* @__PURE__ */ jsx44(
|
|
3407
3416
|
SwitchPrimitives.Root,
|
|
@@ -3434,7 +3443,7 @@ var Switch = React15.forwardRef(
|
|
|
3434
3443
|
Switch.displayName = SwitchPrimitives.Root.displayName;
|
|
3435
3444
|
|
|
3436
3445
|
// src/video-player/VideoPlayer.tsx
|
|
3437
|
-
import { useEffect as useEffect19, useRef as useRef13, useState as
|
|
3446
|
+
import { useEffect as useEffect19, useRef as useRef13, useState as useState14 } from "react";
|
|
3438
3447
|
import { useTranslation as useTranslation8 } from "react-i18next";
|
|
3439
3448
|
import {
|
|
3440
3449
|
Loader2,
|
|
@@ -3461,15 +3470,15 @@ function VideoPlayer({
|
|
|
3461
3470
|
const videoRef = useRef13(null);
|
|
3462
3471
|
const iframeRef = useRef13(null);
|
|
3463
3472
|
const containerRef = useRef13(null);
|
|
3464
|
-
const [isPlaying, setIsPlaying] =
|
|
3465
|
-
const [isMuted, setIsMuted] =
|
|
3466
|
-
const [currentTime, setCurrentTime] =
|
|
3467
|
-
const [duration, setDuration] =
|
|
3468
|
-
const [isFullScreenMode, setIsFullScreenMode] =
|
|
3469
|
-
const [isLoading, setIsLoading] =
|
|
3470
|
-
const [videoSource, setVideoSource] =
|
|
3471
|
-
const [youtubeEmbedUrl, setYoutubeEmbedUrl] =
|
|
3472
|
-
const [vimeoEmbedUrl, setVimeoEmbedUrl] =
|
|
3473
|
+
const [isPlaying, setIsPlaying] = useState14(false);
|
|
3474
|
+
const [isMuted, setIsMuted] = useState14(false);
|
|
3475
|
+
const [currentTime, setCurrentTime] = useState14(0);
|
|
3476
|
+
const [duration, setDuration] = useState14(0);
|
|
3477
|
+
const [isFullScreenMode, setIsFullScreenMode] = useState14(isFullScreen);
|
|
3478
|
+
const [isLoading, setIsLoading] = useState14(true);
|
|
3479
|
+
const [videoSource, setVideoSource] = useState14("file");
|
|
3480
|
+
const [youtubeEmbedUrl, setYoutubeEmbedUrl] = useState14("");
|
|
3481
|
+
const [vimeoEmbedUrl, setVimeoEmbedUrl] = useState14("");
|
|
3473
3482
|
useClickEscape({ enabled: isFullScreenMode, onClick: onClose });
|
|
3474
3483
|
useEffect19(() => {
|
|
3475
3484
|
const youtubeRegex = /(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]{11})/;
|
|
@@ -3807,7 +3816,7 @@ function FeatureCard({
|
|
|
3807
3816
|
// src/file-input-button/FileInputButton.tsx
|
|
3808
3817
|
import {
|
|
3809
3818
|
forwardRef as forwardRef19,
|
|
3810
|
-
useCallback as
|
|
3819
|
+
useCallback as useCallback10
|
|
3811
3820
|
} from "react";
|
|
3812
3821
|
import { Upload } from "lucide-react";
|
|
3813
3822
|
import { jsx as jsx47, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
@@ -3823,7 +3832,7 @@ var FileInputButton = forwardRef19(
|
|
|
3823
3832
|
size = "default",
|
|
3824
3833
|
...props
|
|
3825
3834
|
}, ref) => {
|
|
3826
|
-
const handleChange =
|
|
3835
|
+
const handleChange = useCallback10(
|
|
3827
3836
|
(event) => {
|
|
3828
3837
|
onChange?.(event);
|
|
3829
3838
|
event.target.value = "";
|
|
@@ -3906,7 +3915,7 @@ var FormBox = {
|
|
|
3906
3915
|
import {
|
|
3907
3916
|
forwardRef as forwardRef20,
|
|
3908
3917
|
useId as useId4,
|
|
3909
|
-
useState as
|
|
3918
|
+
useState as useState15
|
|
3910
3919
|
} from "react";
|
|
3911
3920
|
import { useTranslation as useTranslation10 } from "react-i18next";
|
|
3912
3921
|
|
|
@@ -3938,8 +3947,8 @@ var FreeTextField = forwardRef20(
|
|
|
3938
3947
|
}, ref) => {
|
|
3939
3948
|
const { t } = useTranslation10();
|
|
3940
3949
|
const inputId = useId4();
|
|
3941
|
-
const [internalValue, setInternalValue] =
|
|
3942
|
-
const [isFocused, setIsFocused] =
|
|
3950
|
+
const [internalValue, setInternalValue] = useState15(defaultValue ?? "");
|
|
3951
|
+
const [isFocused, setIsFocused] = useState15(false);
|
|
3943
3952
|
const currentValue = value !== void 0 ? value : internalValue;
|
|
3944
3953
|
const isEmpty = !currentValue || String(currentValue).length === 0;
|
|
3945
3954
|
const hasError = Boolean(error);
|
|
@@ -4023,7 +4032,7 @@ var FreeTextField = forwardRef20(
|
|
|
4023
4032
|
FreeTextField.displayName = "FreeTextField";
|
|
4024
4033
|
|
|
4025
4034
|
// src/framed-icon/FramedIcon.tsx
|
|
4026
|
-
import * as
|
|
4035
|
+
import * as React17 from "react";
|
|
4027
4036
|
import { cva as cva8 } from "class-variance-authority";
|
|
4028
4037
|
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
4029
4038
|
var framedIconVariants = cva8("inline-flex items-center justify-center shrink-0", {
|
|
@@ -4047,7 +4056,7 @@ var framedIconVariants = cva8("inline-flex items-center justify-center shrink-0"
|
|
|
4047
4056
|
},
|
|
4048
4057
|
defaultVariants: { size: "m", shape: "rounded", tone: "info" }
|
|
4049
4058
|
});
|
|
4050
|
-
var FramedIcon =
|
|
4059
|
+
var FramedIcon = React17.forwardRef(
|
|
4051
4060
|
({ className, size, shape, tone, children, ...props }, ref) => /* @__PURE__ */ jsx53(
|
|
4052
4061
|
"span",
|
|
4053
4062
|
{
|
|
@@ -4209,7 +4218,7 @@ var IconRegistry = class {
|
|
|
4209
4218
|
var RegistryIcon = Icon;
|
|
4210
4219
|
|
|
4211
4220
|
// src/icon-button/IconButton.tsx
|
|
4212
|
-
import * as
|
|
4221
|
+
import * as React18 from "react";
|
|
4213
4222
|
import { cva as cva9 } from "class-variance-authority";
|
|
4214
4223
|
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
4215
4224
|
var iconButtonVariants = cva9(
|
|
@@ -4240,7 +4249,7 @@ var iconButtonVariants = cva9(
|
|
|
4240
4249
|
defaultVariants: { size: "m", shape: "rounded", variant: "secondary" }
|
|
4241
4250
|
}
|
|
4242
4251
|
);
|
|
4243
|
-
var IconButton =
|
|
4252
|
+
var IconButton = React18.forwardRef(
|
|
4244
4253
|
({ className, size, shape, variant, label, children, type = "button", ...props }, ref) => /* @__PURE__ */ jsx57(
|
|
4245
4254
|
"button",
|
|
4246
4255
|
{
|
|
@@ -4271,7 +4280,7 @@ function InfoBox({ className, children }) {
|
|
|
4271
4280
|
}
|
|
4272
4281
|
|
|
4273
4282
|
// src/image/Image.tsx
|
|
4274
|
-
import { useState as
|
|
4283
|
+
import { useState as useState16 } from "react";
|
|
4275
4284
|
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
4276
4285
|
function Image2({
|
|
4277
4286
|
src,
|
|
@@ -4280,7 +4289,7 @@ function Image2({
|
|
|
4280
4289
|
fallbackSrc = "https://placehold.co/600x400?text=Image",
|
|
4281
4290
|
...props
|
|
4282
4291
|
}) {
|
|
4283
|
-
const [error, setError] =
|
|
4292
|
+
const [error, setError] = useState16(false);
|
|
4284
4293
|
return /* @__PURE__ */ jsx59(
|
|
4285
4294
|
"img",
|
|
4286
4295
|
{
|
|
@@ -4295,9 +4304,9 @@ function Image2({
|
|
|
4295
4304
|
}
|
|
4296
4305
|
|
|
4297
4306
|
// src/input/Input.tsx
|
|
4298
|
-
import * as
|
|
4307
|
+
import * as React19 from "react";
|
|
4299
4308
|
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
4300
|
-
var Input =
|
|
4309
|
+
var Input = React19.forwardRef(
|
|
4301
4310
|
({ className, type, readOnly, ...props }, ref) => /* @__PURE__ */ jsx60(
|
|
4302
4311
|
"input",
|
|
4303
4312
|
{
|
|
@@ -4321,7 +4330,7 @@ var Input = React18.forwardRef(
|
|
|
4321
4330
|
Input.displayName = "Input";
|
|
4322
4331
|
|
|
4323
4332
|
// src/input-otp/InputOTP.tsx
|
|
4324
|
-
import * as
|
|
4333
|
+
import * as React20 from "react";
|
|
4325
4334
|
|
|
4326
4335
|
// src/input-otp/InputOTPContext.ts
|
|
4327
4336
|
import { createContext, useContext } from "react";
|
|
@@ -4339,7 +4348,7 @@ function extractDigits(str) {
|
|
|
4339
4348
|
}
|
|
4340
4349
|
|
|
4341
4350
|
// src/input-otp/useInputOTP.ts
|
|
4342
|
-
import { useCallback as
|
|
4351
|
+
import { useCallback as useCallback11, useEffect as useEffect20, useMemo as useMemo3, useRef as useRef14, useState as useState17 } from "react";
|
|
4343
4352
|
function useInputOTP({
|
|
4344
4353
|
maxLength,
|
|
4345
4354
|
value,
|
|
@@ -4348,7 +4357,7 @@ function useInputOTP({
|
|
|
4348
4357
|
autoFocus,
|
|
4349
4358
|
error
|
|
4350
4359
|
}) {
|
|
4351
|
-
const [activeIndex, setActiveIndex] =
|
|
4360
|
+
const [activeIndex, setActiveIndex] = useState17(-1);
|
|
4352
4361
|
const inputRefs = useRef14([]);
|
|
4353
4362
|
const containerRef = useRef14(null);
|
|
4354
4363
|
const blurTimeoutRef = useRef14();
|
|
@@ -4364,7 +4373,7 @@ function useInputOTP({
|
|
|
4364
4373
|
return nextSlots;
|
|
4365
4374
|
}, [value, maxLength]);
|
|
4366
4375
|
slotsRef.current = slots;
|
|
4367
|
-
const emitValue =
|
|
4376
|
+
const emitValue = useCallback11(
|
|
4368
4377
|
(newSlots) => {
|
|
4369
4378
|
let lastFilledIndex = -1;
|
|
4370
4379
|
for (let index = newSlots.length - 1; index >= 0; index -= 1) {
|
|
@@ -4390,7 +4399,7 @@ function useInputOTP({
|
|
|
4390
4399
|
inputRefs.current[0].focus();
|
|
4391
4400
|
}
|
|
4392
4401
|
}, [autoFocus]);
|
|
4393
|
-
const handleContainerFocusIn =
|
|
4402
|
+
const handleContainerFocusIn = useCallback11((event) => {
|
|
4394
4403
|
clearTimeout(blurTimeoutRef.current);
|
|
4395
4404
|
const target = event.target;
|
|
4396
4405
|
const slotIndex = inputRefs.current.indexOf(target);
|
|
@@ -4398,7 +4407,7 @@ function useInputOTP({
|
|
|
4398
4407
|
setActiveIndex(slotIndex);
|
|
4399
4408
|
}
|
|
4400
4409
|
}, []);
|
|
4401
|
-
const handleContainerFocusOut =
|
|
4410
|
+
const handleContainerFocusOut = useCallback11(() => {
|
|
4402
4411
|
clearTimeout(blurTimeoutRef.current);
|
|
4403
4412
|
blurTimeoutRef.current = setTimeout(() => {
|
|
4404
4413
|
if (!containerRef.current?.contains(document.activeElement)) {
|
|
@@ -4407,7 +4416,7 @@ function useInputOTP({
|
|
|
4407
4416
|
}, 0);
|
|
4408
4417
|
}, []);
|
|
4409
4418
|
useEffect20(() => () => clearTimeout(blurTimeoutRef.current), []);
|
|
4410
|
-
const handleDigitInput =
|
|
4419
|
+
const handleDigitInput = useCallback11(
|
|
4411
4420
|
(index, digit) => {
|
|
4412
4421
|
if (!DIGIT_REGEX.test(digit)) return;
|
|
4413
4422
|
const newSlots = [...slotsRef.current];
|
|
@@ -4421,7 +4430,7 @@ function useInputOTP({
|
|
|
4421
4430
|
},
|
|
4422
4431
|
[maxLength, emitValue]
|
|
4423
4432
|
);
|
|
4424
|
-
const handleDelete =
|
|
4433
|
+
const handleDelete = useCallback11(
|
|
4425
4434
|
(index) => {
|
|
4426
4435
|
const newSlots = [...slotsRef.current];
|
|
4427
4436
|
if (newSlots[index]) {
|
|
@@ -4436,7 +4445,7 @@ function useInputOTP({
|
|
|
4436
4445
|
},
|
|
4437
4446
|
[emitValue]
|
|
4438
4447
|
);
|
|
4439
|
-
const handlePaste =
|
|
4448
|
+
const handlePaste = useCallback11(
|
|
4440
4449
|
(text) => {
|
|
4441
4450
|
const digits = extractDigits(text).slice(0, maxLength);
|
|
4442
4451
|
if (digits.length > 0) {
|
|
@@ -4486,7 +4495,7 @@ function useInputOTP({
|
|
|
4486
4495
|
|
|
4487
4496
|
// src/input-otp/useInputOTPSlot.ts
|
|
4488
4497
|
import {
|
|
4489
|
-
useCallback as
|
|
4498
|
+
useCallback as useCallback12
|
|
4490
4499
|
} from "react";
|
|
4491
4500
|
function useInputOTPSlot(index) {
|
|
4492
4501
|
const {
|
|
@@ -4557,13 +4566,13 @@ function useInputOTPSlot(index) {
|
|
|
4557
4566
|
event.preventDefault();
|
|
4558
4567
|
handlePaste(event.clipboardData.getData("text/plain"));
|
|
4559
4568
|
};
|
|
4560
|
-
const setInputRef =
|
|
4569
|
+
const setInputRef = useCallback12(
|
|
4561
4570
|
(element) => {
|
|
4562
4571
|
inputRefs.current[index] = element;
|
|
4563
4572
|
},
|
|
4564
4573
|
[index, inputRefs]
|
|
4565
4574
|
);
|
|
4566
|
-
const focusSlot =
|
|
4575
|
+
const focusSlot = useCallback12(() => {
|
|
4567
4576
|
inputRefs.current[index]?.focus();
|
|
4568
4577
|
}, [index, inputRefs]);
|
|
4569
4578
|
return {
|
|
@@ -4606,11 +4615,11 @@ function InputOTP({
|
|
|
4606
4615
|
}
|
|
4607
4616
|
) });
|
|
4608
4617
|
}
|
|
4609
|
-
var InputOTPGroup =
|
|
4618
|
+
var InputOTPGroup = React20.forwardRef(
|
|
4610
4619
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx61("div", { ref, className: cn("flex items-center", className), ...props })
|
|
4611
4620
|
);
|
|
4612
4621
|
InputOTPGroup.displayName = "InputOTPGroup";
|
|
4613
|
-
var InputOTPSlot =
|
|
4622
|
+
var InputOTPSlot = React20.forwardRef(
|
|
4614
4623
|
({ index, className, ...props }, ref) => {
|
|
4615
4624
|
const {
|
|
4616
4625
|
char,
|
|
@@ -4659,13 +4668,13 @@ var InputOTPSlot = React19.forwardRef(
|
|
|
4659
4668
|
}
|
|
4660
4669
|
);
|
|
4661
4670
|
InputOTPSlot.displayName = "InputOTPSlot";
|
|
4662
|
-
var InputOTPSeparator =
|
|
4671
|
+
var InputOTPSeparator = React20.forwardRef(
|
|
4663
4672
|
(props, ref) => /* @__PURE__ */ jsx61("div", { ref, role: "separator", ...props })
|
|
4664
4673
|
);
|
|
4665
4674
|
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
4666
4675
|
|
|
4667
4676
|
// src/icons-dropdown/IconsDropdown.tsx
|
|
4668
|
-
import { useState as
|
|
4677
|
+
import { useState as useState18 } from "react";
|
|
4669
4678
|
import { jsx as jsx62, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
4670
4679
|
function IconsDropdown({
|
|
4671
4680
|
icons,
|
|
@@ -4677,7 +4686,7 @@ function IconsDropdown({
|
|
|
4677
4686
|
defaultOpen,
|
|
4678
4687
|
onOpenChange: onOpenChangeProp
|
|
4679
4688
|
}) {
|
|
4680
|
-
const [open, setOpen] =
|
|
4689
|
+
const [open, setOpen] = useState18(defaultOpen ?? false);
|
|
4681
4690
|
function handleOpenChange(value) {
|
|
4682
4691
|
setOpen(value);
|
|
4683
4692
|
onOpenChangeProp?.(value);
|
|
@@ -5284,14 +5293,14 @@ LinkInternal.displayName = "Link";
|
|
|
5284
5293
|
var Link = memo3(LinkInternal);
|
|
5285
5294
|
|
|
5286
5295
|
// src/image-full-screen-view/ImageFullScreenView.tsx
|
|
5287
|
-
import { useState as
|
|
5296
|
+
import { useState as useState19 } from "react";
|
|
5288
5297
|
import { RotateCw, X as X4, ZoomIn, ZoomOut } from "lucide-react";
|
|
5289
5298
|
import { useTranslation as useTranslation13 } from "react-i18next";
|
|
5290
5299
|
import { jsx as jsx67, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
5291
5300
|
function ImageFullScreenView({ src, alt, onClose }) {
|
|
5292
5301
|
const { t } = useTranslation13();
|
|
5293
|
-
const [scale, setScale] =
|
|
5294
|
-
const [rotation, setRotation] =
|
|
5302
|
+
const [scale, setScale] = useState19(1);
|
|
5303
|
+
const [rotation, setRotation] = useState19(0);
|
|
5295
5304
|
useClickEscape({ onClick: onClose });
|
|
5296
5305
|
const zoomIn = () => setScale((value) => Math.min(value + 0.25, 3));
|
|
5297
5306
|
const zoomOut = () => setScale((value) => Math.max(value - 0.25, 0.5));
|
|
@@ -5650,14 +5659,14 @@ import { useTranslation as useTranslation16 } from "react-i18next";
|
|
|
5650
5659
|
import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight3, ChevronsLeft, ChevronsRight } from "lucide-react";
|
|
5651
5660
|
|
|
5652
5661
|
// src/select/Select.tsx
|
|
5653
|
-
import * as
|
|
5662
|
+
import * as React21 from "react";
|
|
5654
5663
|
import * as RadixSelect from "@radix-ui/react-select";
|
|
5655
5664
|
import { jsx as jsx74, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
5656
5665
|
var SelectRoot = RadixSelect.Root;
|
|
5657
5666
|
var SelectValue = RadixSelect.Value;
|
|
5658
5667
|
var SelectGroup = RadixSelect.Group;
|
|
5659
5668
|
var SelectPortal = RadixSelect.Portal;
|
|
5660
|
-
var SelectTrigger =
|
|
5669
|
+
var SelectTrigger = React21.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs46(
|
|
5661
5670
|
RadixSelect.Trigger,
|
|
5662
5671
|
{
|
|
5663
5672
|
ref,
|
|
@@ -5698,7 +5707,7 @@ var SelectTrigger = React20.forwardRef(({ className, children, ...props }, ref)
|
|
|
5698
5707
|
}
|
|
5699
5708
|
));
|
|
5700
5709
|
SelectTrigger.displayName = "SelectTrigger";
|
|
5701
|
-
var SelectContent =
|
|
5710
|
+
var SelectContent = React21.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx74(RadixSelect.Portal, { children: /* @__PURE__ */ jsx74(
|
|
5702
5711
|
RadixSelect.Content,
|
|
5703
5712
|
{
|
|
5704
5713
|
ref,
|
|
@@ -5717,7 +5726,7 @@ var SelectContent = React20.forwardRef(({ className, children, position = "poppe
|
|
|
5717
5726
|
}
|
|
5718
5727
|
) }));
|
|
5719
5728
|
SelectContent.displayName = "SelectContent";
|
|
5720
|
-
var SelectItem =
|
|
5729
|
+
var SelectItem = React21.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs46(
|
|
5721
5730
|
RadixSelect.Item,
|
|
5722
5731
|
{
|
|
5723
5732
|
ref,
|
|
@@ -5752,7 +5761,7 @@ var SelectItem = React20.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
5752
5761
|
}
|
|
5753
5762
|
));
|
|
5754
5763
|
SelectItem.displayName = "SelectItem";
|
|
5755
|
-
var SelectSeparator =
|
|
5764
|
+
var SelectSeparator = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx74(
|
|
5756
5765
|
RadixSelect.Separator,
|
|
5757
5766
|
{
|
|
5758
5767
|
ref,
|
|
@@ -5761,7 +5770,7 @@ var SelectSeparator = React20.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
5761
5770
|
}
|
|
5762
5771
|
));
|
|
5763
5772
|
SelectSeparator.displayName = "SelectSeparator";
|
|
5764
|
-
var SelectLabel =
|
|
5773
|
+
var SelectLabel = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx74(
|
|
5765
5774
|
RadixSelect.Label,
|
|
5766
5775
|
{
|
|
5767
5776
|
ref,
|
|
@@ -5773,7 +5782,7 @@ var SelectLabel = React20.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
5773
5782
|
}
|
|
5774
5783
|
));
|
|
5775
5784
|
SelectLabel.displayName = "SelectLabel";
|
|
5776
|
-
var Select =
|
|
5785
|
+
var Select = React21.forwardRef(
|
|
5777
5786
|
({
|
|
5778
5787
|
placeholder,
|
|
5779
5788
|
label,
|
|
@@ -5784,9 +5793,9 @@ var Select = React20.forwardRef(
|
|
|
5784
5793
|
children,
|
|
5785
5794
|
...props
|
|
5786
5795
|
}, ref) => {
|
|
5787
|
-
const reactId =
|
|
5796
|
+
const reactId = React21.useId();
|
|
5788
5797
|
const triggerId = props.name ?? reactId;
|
|
5789
|
-
const internalRef =
|
|
5798
|
+
const internalRef = React21.useRef(null);
|
|
5790
5799
|
const combinedRef = useCombinedRef(ref, internalRef);
|
|
5791
5800
|
return /* @__PURE__ */ jsxs46("div", { className: cn("flex flex-col gap-chekin-1 w-[300px]", containerClassName), children: [
|
|
5792
5801
|
label && /* @__PURE__ */ jsx74(
|
|
@@ -5943,7 +5952,7 @@ function Pagination({
|
|
|
5943
5952
|
}
|
|
5944
5953
|
|
|
5945
5954
|
// src/popover/Popover.tsx
|
|
5946
|
-
import * as
|
|
5955
|
+
import * as React22 from "react";
|
|
5947
5956
|
import * as RadixPopover from "@radix-ui/react-popover";
|
|
5948
5957
|
import { jsx as jsx76 } from "react/jsx-runtime";
|
|
5949
5958
|
var Popover = RadixPopover.Root;
|
|
@@ -5951,7 +5960,7 @@ var PopoverTrigger = RadixPopover.Trigger;
|
|
|
5951
5960
|
var PopoverAnchor = RadixPopover.Anchor;
|
|
5952
5961
|
var PopoverPortal = RadixPopover.Portal;
|
|
5953
5962
|
var PopoverClose = RadixPopover.Close;
|
|
5954
|
-
var PopoverContent =
|
|
5963
|
+
var PopoverContent = React22.forwardRef(({ className, sideOffset = 8, align = "start", ...props }, ref) => /* @__PURE__ */ jsx76(RadixPopover.Portal, { children: /* @__PURE__ */ jsx76(
|
|
5955
5964
|
RadixPopover.Content,
|
|
5956
5965
|
{
|
|
5957
5966
|
ref,
|
|
@@ -5971,11 +5980,11 @@ PopoverContent.displayName = "PopoverContent";
|
|
|
5971
5980
|
import { forwardRef as forwardRef32 } from "react";
|
|
5972
5981
|
|
|
5973
5982
|
// src/radio-group/RadioGroup.tsx
|
|
5974
|
-
import * as
|
|
5983
|
+
import * as React23 from "react";
|
|
5975
5984
|
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
5976
5985
|
import { Circle } from "lucide-react";
|
|
5977
5986
|
import { jsx as jsx77 } from "react/jsx-runtime";
|
|
5978
|
-
var RadioGroup =
|
|
5987
|
+
var RadioGroup = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx77(
|
|
5979
5988
|
RadioGroupPrimitive.Root,
|
|
5980
5989
|
{
|
|
5981
5990
|
ref,
|
|
@@ -5984,7 +5993,7 @@ var RadioGroup = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
5984
5993
|
}
|
|
5985
5994
|
));
|
|
5986
5995
|
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
5987
|
-
var RadioGroupItem =
|
|
5996
|
+
var RadioGroupItem = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx77(
|
|
5988
5997
|
RadioGroupPrimitive.Item,
|
|
5989
5998
|
{
|
|
5990
5999
|
ref,
|
|
@@ -6001,11 +6010,11 @@ var RadioGroupItem = React22.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
6001
6010
|
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
6002
6011
|
|
|
6003
6012
|
// src/radio/useRadioOptions.ts
|
|
6004
|
-
import { useCallback as
|
|
6013
|
+
import { useCallback as useCallback13, useState as useState20 } from "react";
|
|
6005
6014
|
function useRadioOptions({ options, defaultValue, onChange }) {
|
|
6006
6015
|
const initialValue = (typeof defaultValue === "string" ? options.find((option) => option.value === defaultValue) : defaultValue) || "";
|
|
6007
|
-
const [selectedValue, setSelectedValue] =
|
|
6008
|
-
const handleValueChange =
|
|
6016
|
+
const [selectedValue, setSelectedValue] = useState20(initialValue);
|
|
6017
|
+
const handleValueChange = useCallback13(
|
|
6009
6018
|
(value) => {
|
|
6010
6019
|
setSelectedValue(value);
|
|
6011
6020
|
const selectedOption = options.find((option) => option.value === value) || "";
|
|
@@ -6213,7 +6222,7 @@ function RatingRadioGroup({
|
|
|
6213
6222
|
}
|
|
6214
6223
|
|
|
6215
6224
|
// src/rating-stars/RatingStars.tsx
|
|
6216
|
-
import * as
|
|
6225
|
+
import * as React24 from "react";
|
|
6217
6226
|
import { Star as Star2 } from "lucide-react";
|
|
6218
6227
|
import { useTranslation as useTranslation17 } from "react-i18next";
|
|
6219
6228
|
import { jsx as jsx82, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
@@ -6233,7 +6242,7 @@ function RatingStars({
|
|
|
6233
6242
|
const { t } = useTranslation17();
|
|
6234
6243
|
const normalizedRating = Math.max(0, Math.min(maxRating, rating));
|
|
6235
6244
|
const stars = Array.from({ length: maxRating }, (_, index) => index + 1);
|
|
6236
|
-
const componentId =
|
|
6245
|
+
const componentId = React24.useId();
|
|
6237
6246
|
const decimal = normalizedRating - Math.floor(normalizedRating);
|
|
6238
6247
|
const partialStarIndex = decimal > 0 ? Math.ceil(normalizedRating) : -1;
|
|
6239
6248
|
const gradientId = `star-gradient-${componentId.replace(/:/g, "")}`;
|
|
@@ -6809,7 +6818,7 @@ function SheetDescription({
|
|
|
6809
6818
|
}
|
|
6810
6819
|
|
|
6811
6820
|
// src/sidebar/Sidebar.tsx
|
|
6812
|
-
import * as
|
|
6821
|
+
import * as React25 from "react";
|
|
6813
6822
|
import { Slot as Slot4 } from "@radix-ui/react-slot";
|
|
6814
6823
|
import { cva as cva11 } from "class-variance-authority";
|
|
6815
6824
|
import { ArrowLeftFromLineIcon, ArrowRightFromLineIcon } from "lucide-react";
|
|
@@ -6902,7 +6911,7 @@ var SIDEBAR_COOKIE_NAME_DEFAULT = "sidebar_state";
|
|
|
6902
6911
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
6903
6912
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
6904
6913
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
6905
|
-
var SidebarProvider =
|
|
6914
|
+
var SidebarProvider = React25.forwardRef(
|
|
6906
6915
|
({
|
|
6907
6916
|
defaultOpen = true,
|
|
6908
6917
|
open: openProp,
|
|
@@ -6914,10 +6923,10 @@ var SidebarProvider = React24.forwardRef(
|
|
|
6914
6923
|
...props
|
|
6915
6924
|
}, ref) => {
|
|
6916
6925
|
const isMobile = useIsMobile({ breakpoint: 641 });
|
|
6917
|
-
const [openMobile, setOpenMobile] =
|
|
6918
|
-
const [_open, _setOpen] =
|
|
6926
|
+
const [openMobile, setOpenMobile] = React25.useState(false);
|
|
6927
|
+
const [_open, _setOpen] = React25.useState(defaultOpen);
|
|
6919
6928
|
const open = openProp ?? _open;
|
|
6920
|
-
const setOpen =
|
|
6929
|
+
const setOpen = React25.useCallback(
|
|
6921
6930
|
(value) => {
|
|
6922
6931
|
const openState = typeof value === "function" ? value(open) : value;
|
|
6923
6932
|
if (setOpenProp) {
|
|
@@ -6929,10 +6938,10 @@ var SidebarProvider = React24.forwardRef(
|
|
|
6929
6938
|
},
|
|
6930
6939
|
[setOpenProp, open, stateName]
|
|
6931
6940
|
);
|
|
6932
|
-
const toggleSidebar =
|
|
6941
|
+
const toggleSidebar = React25.useCallback(() => {
|
|
6933
6942
|
return isMobile ? setOpenMobile((value) => !value) : setOpen((value) => !value);
|
|
6934
6943
|
}, [isMobile, setOpen]);
|
|
6935
|
-
|
|
6944
|
+
React25.useEffect(() => {
|
|
6936
6945
|
const handleKeyDown = (event) => {
|
|
6937
6946
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
6938
6947
|
event.preventDefault();
|
|
@@ -6943,7 +6952,7 @@ var SidebarProvider = React24.forwardRef(
|
|
|
6943
6952
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
6944
6953
|
}, [toggleSidebar]);
|
|
6945
6954
|
const state = open ? "expanded" : "collapsed";
|
|
6946
|
-
const contextValue =
|
|
6955
|
+
const contextValue = React25.useMemo(
|
|
6947
6956
|
() => ({
|
|
6948
6957
|
state,
|
|
6949
6958
|
open,
|
|
@@ -6968,7 +6977,7 @@ var SidebarProvider = React24.forwardRef(
|
|
|
6968
6977
|
}
|
|
6969
6978
|
);
|
|
6970
6979
|
SidebarProvider.displayName = "SidebarProvider";
|
|
6971
|
-
var Sidebar =
|
|
6980
|
+
var Sidebar = React25.forwardRef(
|
|
6972
6981
|
({
|
|
6973
6982
|
side = "left",
|
|
6974
6983
|
variant = "sidebar",
|
|
@@ -7062,7 +7071,7 @@ var Sidebar = React24.forwardRef(
|
|
|
7062
7071
|
}
|
|
7063
7072
|
);
|
|
7064
7073
|
Sidebar.displayName = "Sidebar";
|
|
7065
|
-
var SidebarTrigger =
|
|
7074
|
+
var SidebarTrigger = React25.forwardRef(({ className, onClick, icon, ...props }, ref) => {
|
|
7066
7075
|
const { toggleSidebar, open, isMobile, openMobile } = useSidebar();
|
|
7067
7076
|
return /* @__PURE__ */ jsxs58(
|
|
7068
7077
|
Button,
|
|
@@ -7089,7 +7098,7 @@ var SidebarTrigger = React24.forwardRef(({ className, onClick, icon, ...props },
|
|
|
7089
7098
|
);
|
|
7090
7099
|
});
|
|
7091
7100
|
SidebarTrigger.displayName = "SidebarTrigger";
|
|
7092
|
-
var SidebarRail =
|
|
7101
|
+
var SidebarRail = React25.forwardRef(
|
|
7093
7102
|
({ className, ...props }, ref) => {
|
|
7094
7103
|
const { toggleSidebar } = useSidebar();
|
|
7095
7104
|
return /* @__PURE__ */ jsx94(
|
|
@@ -7115,7 +7124,7 @@ var SidebarRail = React24.forwardRef(
|
|
|
7115
7124
|
}
|
|
7116
7125
|
);
|
|
7117
7126
|
SidebarRail.displayName = "SidebarRail";
|
|
7118
|
-
var SidebarInset =
|
|
7127
|
+
var SidebarInset = React25.forwardRef(
|
|
7119
7128
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx94(
|
|
7120
7129
|
"main",
|
|
7121
7130
|
{
|
|
@@ -7130,7 +7139,7 @@ var SidebarInset = React24.forwardRef(
|
|
|
7130
7139
|
)
|
|
7131
7140
|
);
|
|
7132
7141
|
SidebarInset.displayName = "SidebarInset";
|
|
7133
|
-
var SidebarInput =
|
|
7142
|
+
var SidebarInput = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx94(
|
|
7134
7143
|
Input,
|
|
7135
7144
|
{
|
|
7136
7145
|
ref,
|
|
@@ -7140,7 +7149,7 @@ var SidebarInput = React24.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
7140
7149
|
}
|
|
7141
7150
|
));
|
|
7142
7151
|
SidebarInput.displayName = "SidebarInput";
|
|
7143
|
-
var SidebarHeader =
|
|
7152
|
+
var SidebarHeader = React25.forwardRef(
|
|
7144
7153
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx94(
|
|
7145
7154
|
"div",
|
|
7146
7155
|
{
|
|
@@ -7152,7 +7161,7 @@ var SidebarHeader = React24.forwardRef(
|
|
|
7152
7161
|
)
|
|
7153
7162
|
);
|
|
7154
7163
|
SidebarHeader.displayName = "SidebarHeader";
|
|
7155
|
-
var SidebarFooter =
|
|
7164
|
+
var SidebarFooter = React25.forwardRef(
|
|
7156
7165
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx94(
|
|
7157
7166
|
"div",
|
|
7158
7167
|
{
|
|
@@ -7164,7 +7173,7 @@ var SidebarFooter = React24.forwardRef(
|
|
|
7164
7173
|
)
|
|
7165
7174
|
);
|
|
7166
7175
|
SidebarFooter.displayName = "SidebarFooter";
|
|
7167
|
-
var SidebarSeparator =
|
|
7176
|
+
var SidebarSeparator = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx94(
|
|
7168
7177
|
Separator3,
|
|
7169
7178
|
{
|
|
7170
7179
|
ref,
|
|
@@ -7174,7 +7183,7 @@ var SidebarSeparator = React24.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
7174
7183
|
}
|
|
7175
7184
|
));
|
|
7176
7185
|
SidebarSeparator.displayName = "SidebarSeparator";
|
|
7177
|
-
var SidebarContent =
|
|
7186
|
+
var SidebarContent = React25.forwardRef(
|
|
7178
7187
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx94(
|
|
7179
7188
|
"div",
|
|
7180
7189
|
{
|
|
@@ -7189,7 +7198,7 @@ var SidebarContent = React24.forwardRef(
|
|
|
7189
7198
|
)
|
|
7190
7199
|
);
|
|
7191
7200
|
SidebarContent.displayName = "SidebarContent";
|
|
7192
|
-
var SidebarGroup =
|
|
7201
|
+
var SidebarGroup = React25.forwardRef(
|
|
7193
7202
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx94(
|
|
7194
7203
|
"div",
|
|
7195
7204
|
{
|
|
@@ -7201,7 +7210,7 @@ var SidebarGroup = React24.forwardRef(
|
|
|
7201
7210
|
)
|
|
7202
7211
|
);
|
|
7203
7212
|
SidebarGroup.displayName = "SidebarGroup";
|
|
7204
|
-
var SidebarGroupLabel =
|
|
7213
|
+
var SidebarGroupLabel = React25.forwardRef(({ className, asChild = false, ...props }, ref) => {
|
|
7205
7214
|
const Comp = asChild ? Slot4 : "div";
|
|
7206
7215
|
return /* @__PURE__ */ jsx94(
|
|
7207
7216
|
Comp,
|
|
@@ -7218,7 +7227,7 @@ var SidebarGroupLabel = React24.forwardRef(({ className, asChild = false, ...pro
|
|
|
7218
7227
|
);
|
|
7219
7228
|
});
|
|
7220
7229
|
SidebarGroupLabel.displayName = "SidebarGroupLabel";
|
|
7221
|
-
var SidebarGroupAction =
|
|
7230
|
+
var SidebarGroupAction = React25.forwardRef(({ className, asChild = false, ...props }, ref) => {
|
|
7222
7231
|
const Comp = asChild ? Slot4 : "button";
|
|
7223
7232
|
return /* @__PURE__ */ jsx94(
|
|
7224
7233
|
Comp,
|
|
@@ -7234,7 +7243,7 @@ var SidebarGroupAction = React24.forwardRef(({ className, asChild = false, ...pr
|
|
|
7234
7243
|
);
|
|
7235
7244
|
});
|
|
7236
7245
|
SidebarGroupAction.displayName = "SidebarGroupAction";
|
|
7237
|
-
var SidebarGroupContent =
|
|
7246
|
+
var SidebarGroupContent = React25.forwardRef(
|
|
7238
7247
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx94(
|
|
7239
7248
|
"div",
|
|
7240
7249
|
{
|
|
@@ -7246,7 +7255,7 @@ var SidebarGroupContent = React24.forwardRef(
|
|
|
7246
7255
|
)
|
|
7247
7256
|
);
|
|
7248
7257
|
SidebarGroupContent.displayName = "SidebarGroupContent";
|
|
7249
|
-
var SidebarMenu =
|
|
7258
|
+
var SidebarMenu = React25.forwardRef(
|
|
7250
7259
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx94(
|
|
7251
7260
|
"ul",
|
|
7252
7261
|
{
|
|
@@ -7258,7 +7267,7 @@ var SidebarMenu = React24.forwardRef(
|
|
|
7258
7267
|
)
|
|
7259
7268
|
);
|
|
7260
7269
|
SidebarMenu.displayName = "SidebarMenu";
|
|
7261
|
-
var SidebarMenuItem =
|
|
7270
|
+
var SidebarMenuItem = React25.forwardRef(
|
|
7262
7271
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx94(
|
|
7263
7272
|
"li",
|
|
7264
7273
|
{
|
|
@@ -7290,7 +7299,7 @@ var sidebarMenuButtonVariants = cva11(
|
|
|
7290
7299
|
}
|
|
7291
7300
|
}
|
|
7292
7301
|
);
|
|
7293
|
-
var SidebarMenuButton =
|
|
7302
|
+
var SidebarMenuButton = React25.forwardRef(
|
|
7294
7303
|
({
|
|
7295
7304
|
asChild = false,
|
|
7296
7305
|
isActive = false,
|
|
@@ -7336,7 +7345,7 @@ var SidebarMenuButton = React24.forwardRef(
|
|
|
7336
7345
|
}
|
|
7337
7346
|
);
|
|
7338
7347
|
SidebarMenuButton.displayName = "SidebarMenuButton";
|
|
7339
|
-
var SidebarMenuAction =
|
|
7348
|
+
var SidebarMenuAction = React25.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
|
|
7340
7349
|
const Comp = asChild ? Slot4 : "button";
|
|
7341
7350
|
return /* @__PURE__ */ jsx94(
|
|
7342
7351
|
Comp,
|
|
@@ -7353,7 +7362,7 @@ var SidebarMenuAction = React24.forwardRef(({ className, asChild = false, showOn
|
|
|
7353
7362
|
);
|
|
7354
7363
|
});
|
|
7355
7364
|
SidebarMenuAction.displayName = "SidebarMenuAction";
|
|
7356
|
-
var SidebarMenuBadge =
|
|
7365
|
+
var SidebarMenuBadge = React25.forwardRef(
|
|
7357
7366
|
({ className, ...props }, ref) => {
|
|
7358
7367
|
const { open, isMobile, openMobile } = useSidebar();
|
|
7359
7368
|
const isOpen = isMobile ? openMobile : open;
|
|
@@ -7373,8 +7382,8 @@ var SidebarMenuBadge = React24.forwardRef(
|
|
|
7373
7382
|
}
|
|
7374
7383
|
);
|
|
7375
7384
|
SidebarMenuBadge.displayName = "SidebarMenuBadge";
|
|
7376
|
-
var SidebarMenuSkeleton =
|
|
7377
|
-
const width =
|
|
7385
|
+
var SidebarMenuSkeleton = React25.forwardRef(({ className, showIcon = false, ...props }, ref) => {
|
|
7386
|
+
const width = React25.useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []);
|
|
7378
7387
|
return /* @__PURE__ */ jsxs58(
|
|
7379
7388
|
"div",
|
|
7380
7389
|
{
|
|
@@ -7397,7 +7406,7 @@ var SidebarMenuSkeleton = React24.forwardRef(({ className, showIcon = false, ...
|
|
|
7397
7406
|
);
|
|
7398
7407
|
});
|
|
7399
7408
|
SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
|
|
7400
|
-
var SidebarMenuSub =
|
|
7409
|
+
var SidebarMenuSub = React25.forwardRef(
|
|
7401
7410
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx94(
|
|
7402
7411
|
"ul",
|
|
7403
7412
|
{
|
|
@@ -7412,7 +7421,7 @@ var SidebarMenuSub = React24.forwardRef(
|
|
|
7412
7421
|
)
|
|
7413
7422
|
);
|
|
7414
7423
|
SidebarMenuSub.displayName = "SidebarMenuSub";
|
|
7415
|
-
var SidebarMenuSubItem =
|
|
7424
|
+
var SidebarMenuSubItem = React25.forwardRef(
|
|
7416
7425
|
({ ...props }, ref) => /* @__PURE__ */ jsx94("li", { ref, ...props })
|
|
7417
7426
|
);
|
|
7418
7427
|
SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
|
|
@@ -7436,7 +7445,7 @@ var sidebarMenuSubButtonVariants = cva11(
|
|
|
7436
7445
|
}
|
|
7437
7446
|
}
|
|
7438
7447
|
);
|
|
7439
|
-
var SidebarMenuSubButton =
|
|
7448
|
+
var SidebarMenuSubButton = React25.forwardRef(
|
|
7440
7449
|
({
|
|
7441
7450
|
asChild = false,
|
|
7442
7451
|
isActive,
|
|
@@ -7466,9 +7475,9 @@ var VALUE_PART = 1;
|
|
|
7466
7475
|
var getSidebarState = (stateName) => document.cookie.split("; ").find((row) => row.startsWith(`${stateName}=`))?.split("=")[VALUE_PART] === "true";
|
|
7467
7476
|
|
|
7468
7477
|
// src/circular-loader/CircularLoader.tsx
|
|
7469
|
-
import
|
|
7478
|
+
import React26 from "react";
|
|
7470
7479
|
import { jsx as jsx95, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
7471
|
-
var CircularLoader =
|
|
7480
|
+
var CircularLoader = React26.memo(
|
|
7472
7481
|
({ visible = true, height, width, position, label, className }) => {
|
|
7473
7482
|
if (!visible) return null;
|
|
7474
7483
|
return /* @__PURE__ */ jsxs59(
|
|
@@ -7858,9 +7867,9 @@ SwitchBlocksInternal.displayName = "SwitchBlocks";
|
|
|
7858
7867
|
var SwitchBlocks = memo6(SwitchBlocksInternal);
|
|
7859
7868
|
|
|
7860
7869
|
// src/switch-group/SwitchGroup.tsx
|
|
7861
|
-
import * as
|
|
7870
|
+
import * as React27 from "react";
|
|
7862
7871
|
import { jsx as jsx102, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
7863
|
-
var SwitchGroup =
|
|
7872
|
+
var SwitchGroup = React27.forwardRef(
|
|
7864
7873
|
({ options, value = [], onChange, disabled = false, className, error, ...props }, ref) => {
|
|
7865
7874
|
const handleOptionChange = (optionValue, checked) => {
|
|
7866
7875
|
if (!onChange) return;
|
|
@@ -8106,11 +8115,11 @@ var TASK_VARIANTS = {
|
|
|
8106
8115
|
import { Toaster, toast as toast2 } from "sonner";
|
|
8107
8116
|
|
|
8108
8117
|
// src/toaster/useUpdateToast.ts
|
|
8109
|
-
import { useCallback as
|
|
8118
|
+
import { useCallback as useCallback15, useRef as useRef17 } from "react";
|
|
8110
8119
|
import { toast } from "sonner";
|
|
8111
8120
|
function useUpdateToast({ id }) {
|
|
8112
8121
|
const toastIdRef = useRef17("");
|
|
8113
|
-
const getToastOptions =
|
|
8122
|
+
const getToastOptions = useCallback15(
|
|
8114
8123
|
(options) => ({
|
|
8115
8124
|
id: toastIdRef.current,
|
|
8116
8125
|
dismissible: false,
|
|
@@ -8142,7 +8151,7 @@ function useUpdateToast({ id }) {
|
|
|
8142
8151
|
}
|
|
8143
8152
|
|
|
8144
8153
|
// src/toggle-group/ToggleGroup.tsx
|
|
8145
|
-
import * as
|
|
8154
|
+
import * as React28 from "react";
|
|
8146
8155
|
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
8147
8156
|
|
|
8148
8157
|
// src/toggle-group/style.ts
|
|
@@ -8176,12 +8185,12 @@ var toggleVariants = cva13(
|
|
|
8176
8185
|
|
|
8177
8186
|
// src/toggle-group/ToggleGroup.tsx
|
|
8178
8187
|
import { jsx as jsx107, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
8179
|
-
var ToggleGroupContext =
|
|
8188
|
+
var ToggleGroupContext = React28.createContext({
|
|
8180
8189
|
size: "default",
|
|
8181
8190
|
variant: "default",
|
|
8182
8191
|
theme: "default"
|
|
8183
8192
|
});
|
|
8184
|
-
var ToggleGroup =
|
|
8193
|
+
var ToggleGroup = React28.forwardRef(({ className, variant, size, theme, children, ...props }, ref) => {
|
|
8185
8194
|
const isTabVariant = variant === "tab";
|
|
8186
8195
|
return /* @__PURE__ */ jsx107(
|
|
8187
8196
|
ToggleGroupPrimitive.Root,
|
|
@@ -8198,8 +8207,8 @@ var ToggleGroup = React27.forwardRef(({ className, variant, size, theme, childre
|
|
|
8198
8207
|
);
|
|
8199
8208
|
});
|
|
8200
8209
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
8201
|
-
var ToggleGroupItem =
|
|
8202
|
-
const context =
|
|
8210
|
+
var ToggleGroupItem = React28.forwardRef(({ className, children, variant, size, theme, ...props }, ref) => {
|
|
8211
|
+
const context = React28.useContext(ToggleGroupContext);
|
|
8203
8212
|
const resolvedVariant = context.variant || variant;
|
|
8204
8213
|
const isTabVariant = resolvedVariant === "tab";
|
|
8205
8214
|
return /* @__PURE__ */ jsx107(
|
|
@@ -8334,7 +8343,7 @@ function TogglesInternal({
|
|
|
8334
8343
|
var Toggles = forwardRef40(TogglesInternal);
|
|
8335
8344
|
|
|
8336
8345
|
// src/text-field/TextField.tsx
|
|
8337
|
-
import * as
|
|
8346
|
+
import * as React29 from "react";
|
|
8338
8347
|
import * as LabelPrimitive2 from "@radix-ui/react-label";
|
|
8339
8348
|
import { cva as cva14 } from "class-variance-authority";
|
|
8340
8349
|
import { useTranslation as useTranslation21 } from "react-i18next";
|
|
@@ -8428,7 +8437,7 @@ var floatingLabelClasses = [
|
|
|
8428
8437
|
"peer-focus:to-[var(--text-field-bg-filled)]",
|
|
8429
8438
|
"peer-focus:to-50%"
|
|
8430
8439
|
];
|
|
8431
|
-
var TextField =
|
|
8440
|
+
var TextField = React29.forwardRef(
|
|
8432
8441
|
({
|
|
8433
8442
|
className,
|
|
8434
8443
|
wrapperClassName,
|
|
@@ -8447,7 +8456,7 @@ var TextField = React28.forwardRef(
|
|
|
8447
8456
|
}, ref) => {
|
|
8448
8457
|
const { t } = useTranslation21();
|
|
8449
8458
|
const hasError = Boolean(error);
|
|
8450
|
-
const autoId =
|
|
8459
|
+
const autoId = React29.useId();
|
|
8451
8460
|
const inputId = props.id || autoId;
|
|
8452
8461
|
const inputClasses = cn(
|
|
8453
8462
|
inputVariants({ variant, error: hasError, readOnly: Boolean(readOnly) }),
|
|
@@ -8680,11 +8689,11 @@ function WideButton({ className, disabled, ...props }) {
|
|
|
8680
8689
|
}
|
|
8681
8690
|
|
|
8682
8691
|
// src/datepicker/DatePicker.tsx
|
|
8683
|
-
import * as
|
|
8692
|
+
import * as React33 from "react";
|
|
8684
8693
|
import { Calendar as Calendar2 } from "lucide-react";
|
|
8685
8694
|
|
|
8686
8695
|
// src/drawer/Drawer.tsx
|
|
8687
|
-
import * as
|
|
8696
|
+
import * as React30 from "react";
|
|
8688
8697
|
import * as DialogPrimitive2 from "@radix-ui/react-dialog";
|
|
8689
8698
|
import Draggable from "react-draggable";
|
|
8690
8699
|
import { jsx as jsx117, jsxs as jsxs74 } from "react/jsx-runtime";
|
|
@@ -8702,7 +8711,7 @@ function DrawerPortal({ ...props }) {
|
|
|
8702
8711
|
function DrawerClose({ ...props }) {
|
|
8703
8712
|
return /* @__PURE__ */ jsx117(DialogPrimitive2.Close, { "data-slot": "drawer-close", ...props });
|
|
8704
8713
|
}
|
|
8705
|
-
var DrawerOverlay =
|
|
8714
|
+
var DrawerOverlay = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx117(
|
|
8706
8715
|
DialogPrimitive2.Overlay,
|
|
8707
8716
|
{
|
|
8708
8717
|
ref,
|
|
@@ -8716,7 +8725,7 @@ var DrawerOverlay = React29.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
8716
8725
|
));
|
|
8717
8726
|
DrawerOverlay.displayName = DialogPrimitive2.Overlay.displayName;
|
|
8718
8727
|
var DrawerOverlayClasses = "fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0";
|
|
8719
|
-
var DrawerContent =
|
|
8728
|
+
var DrawerContent = React30.forwardRef(
|
|
8720
8729
|
({
|
|
8721
8730
|
className,
|
|
8722
8731
|
children,
|
|
@@ -8728,19 +8737,19 @@ var DrawerContent = React29.forwardRef(
|
|
|
8728
8737
|
...props
|
|
8729
8738
|
}, ref) => {
|
|
8730
8739
|
const finalContainer = container || getCustomContainer() || void 0;
|
|
8731
|
-
const nodeRef =
|
|
8732
|
-
const [dragOffsetY, setDragOffsetY] =
|
|
8740
|
+
const nodeRef = React30.useRef(null);
|
|
8741
|
+
const [dragOffsetY, setDragOffsetY] = React30.useState(0);
|
|
8733
8742
|
const overlayOpacity = Math.max(
|
|
8734
8743
|
DRAWER_MIN_OVERLAY_OPACITY,
|
|
8735
8744
|
1 - dragOffsetY / (DRAWER_CLOSE_THRESHOLD * 2)
|
|
8736
8745
|
);
|
|
8737
|
-
const handleDrag =
|
|
8746
|
+
const handleDrag = React30.useCallback(
|
|
8738
8747
|
(_event, data) => {
|
|
8739
8748
|
setDragOffsetY(Math.max(0, data.y));
|
|
8740
8749
|
},
|
|
8741
8750
|
[]
|
|
8742
8751
|
);
|
|
8743
|
-
const handleStop =
|
|
8752
|
+
const handleStop = React30.useCallback(
|
|
8744
8753
|
(_event, data) => {
|
|
8745
8754
|
if (data.y > DRAWER_CLOSE_THRESHOLD) {
|
|
8746
8755
|
setDragOffsetY(0);
|
|
@@ -8831,7 +8840,7 @@ var DrawerHeader = ({ className, ...props }) => /* @__PURE__ */ jsx117(
|
|
|
8831
8840
|
DrawerHeader.displayName = "DrawerHeader";
|
|
8832
8841
|
var DrawerFooter = ({ className, ...props }) => /* @__PURE__ */ jsx117("div", { className: cn("flex flex-col gap-2 p-5", className), ...props });
|
|
8833
8842
|
DrawerFooter.displayName = "DrawerFooter";
|
|
8834
|
-
var DrawerTitle =
|
|
8843
|
+
var DrawerTitle = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx117(
|
|
8835
8844
|
DialogPrimitive2.Title,
|
|
8836
8845
|
{
|
|
8837
8846
|
ref,
|
|
@@ -8841,7 +8850,7 @@ var DrawerTitle = React29.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
8841
8850
|
}
|
|
8842
8851
|
));
|
|
8843
8852
|
DrawerTitle.displayName = DialogPrimitive2.Title.displayName;
|
|
8844
|
-
var DrawerDescription =
|
|
8853
|
+
var DrawerDescription = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx117(
|
|
8845
8854
|
DialogPrimitive2.Description,
|
|
8846
8855
|
{
|
|
8847
8856
|
ref,
|
|
@@ -8853,7 +8862,7 @@ var DrawerDescription = React29.forwardRef(({ className, ...props }, ref) => /*
|
|
|
8853
8862
|
DrawerDescription.displayName = DialogPrimitive2.Description.displayName;
|
|
8854
8863
|
|
|
8855
8864
|
// src/datepicker/useDatePickerWheel.ts
|
|
8856
|
-
import * as
|
|
8865
|
+
import * as React31 from "react";
|
|
8857
8866
|
|
|
8858
8867
|
// src/datepicker/datePicker.utils.ts
|
|
8859
8868
|
var DISPLAY_PAD_LENGTH = 2;
|
|
@@ -9004,21 +9013,21 @@ function useDatePickerWheel({
|
|
|
9004
9013
|
minDate,
|
|
9005
9014
|
maxDate
|
|
9006
9015
|
}) {
|
|
9007
|
-
const years =
|
|
9008
|
-
const [draftDate, setDraftDate] =
|
|
9016
|
+
const years = React31.useMemo(() => getYearRange(minDate, maxDate), [maxDate, minDate]);
|
|
9017
|
+
const [draftDate, setDraftDate] = React31.useState(
|
|
9009
9018
|
() => resolveInitialDate({ value, defaultValue, minDate, maxDate })
|
|
9010
9019
|
);
|
|
9011
9020
|
const draftYear = draftDate.getFullYear();
|
|
9012
9021
|
const draftMonth = draftDate.getMonth();
|
|
9013
|
-
const [monthScrollTop, setMonthScrollTop] =
|
|
9014
|
-
const [dayScrollTop, setDayScrollTop] =
|
|
9015
|
-
const [yearScrollTop, setYearScrollTop] =
|
|
9016
|
-
const monthListRef =
|
|
9017
|
-
const dayListRef =
|
|
9018
|
-
const yearListRef =
|
|
9019
|
-
const settleTimeoutsRef =
|
|
9020
|
-
const animationFramesRef =
|
|
9021
|
-
const columnRefs =
|
|
9022
|
+
const [monthScrollTop, setMonthScrollTop] = React31.useState(0);
|
|
9023
|
+
const [dayScrollTop, setDayScrollTop] = React31.useState(0);
|
|
9024
|
+
const [yearScrollTop, setYearScrollTop] = React31.useState(0);
|
|
9025
|
+
const monthListRef = React31.useRef(null);
|
|
9026
|
+
const dayListRef = React31.useRef(null);
|
|
9027
|
+
const yearListRef = React31.useRef(null);
|
|
9028
|
+
const settleTimeoutsRef = React31.useRef({});
|
|
9029
|
+
const animationFramesRef = React31.useRef({});
|
|
9030
|
+
const columnRefs = React31.useMemo(
|
|
9022
9031
|
() => ({
|
|
9023
9032
|
month: monthListRef,
|
|
9024
9033
|
day: dayListRef,
|
|
@@ -9026,7 +9035,7 @@ function useDatePickerWheel({
|
|
|
9026
9035
|
}),
|
|
9027
9036
|
[]
|
|
9028
9037
|
);
|
|
9029
|
-
const setColumnScrollTop =
|
|
9038
|
+
const setColumnScrollTop = React31.useCallback(
|
|
9030
9039
|
(column, nextScrollTop) => {
|
|
9031
9040
|
if (column === "month") {
|
|
9032
9041
|
setMonthScrollTop(nextScrollTop);
|
|
@@ -9040,19 +9049,19 @@ function useDatePickerWheel({
|
|
|
9040
9049
|
},
|
|
9041
9050
|
[]
|
|
9042
9051
|
);
|
|
9043
|
-
const clearSettleTimeout =
|
|
9052
|
+
const clearSettleTimeout = React31.useCallback((column) => {
|
|
9044
9053
|
const timeoutId = settleTimeoutsRef.current[column];
|
|
9045
9054
|
if (timeoutId === void 0) return;
|
|
9046
9055
|
window.clearTimeout(timeoutId);
|
|
9047
9056
|
delete settleTimeoutsRef.current[column];
|
|
9048
9057
|
}, []);
|
|
9049
|
-
const clearAnimationFrame =
|
|
9058
|
+
const clearAnimationFrame = React31.useCallback((column) => {
|
|
9050
9059
|
const frameId = animationFramesRef.current[column];
|
|
9051
9060
|
if (frameId === void 0) return;
|
|
9052
9061
|
window.cancelAnimationFrame(frameId);
|
|
9053
9062
|
delete animationFramesRef.current[column];
|
|
9054
9063
|
}, []);
|
|
9055
|
-
|
|
9064
|
+
React31.useEffect(
|
|
9056
9065
|
() => () => {
|
|
9057
9066
|
["month", "day", "year"].forEach((column) => {
|
|
9058
9067
|
clearSettleTimeout(column);
|
|
@@ -9061,22 +9070,22 @@ function useDatePickerWheel({
|
|
|
9061
9070
|
},
|
|
9062
9071
|
[clearAnimationFrame, clearSettleTimeout]
|
|
9063
9072
|
);
|
|
9064
|
-
|
|
9073
|
+
React31.useEffect(() => {
|
|
9065
9074
|
if (isOpen) return;
|
|
9066
9075
|
setDraftDate(resolveInitialDate({ value, defaultValue, minDate, maxDate }));
|
|
9067
9076
|
}, [defaultValue, isOpen, maxDate, minDate, value]);
|
|
9068
|
-
const months =
|
|
9077
|
+
const months = React31.useMemo(
|
|
9069
9078
|
() => getAllowedMonths(draftYear, minDate, maxDate),
|
|
9070
9079
|
[draftYear, maxDate, minDate]
|
|
9071
9080
|
);
|
|
9072
|
-
const days =
|
|
9081
|
+
const days = React31.useMemo(
|
|
9073
9082
|
() => getAllowedDays(draftYear, draftMonth, minDate, maxDate),
|
|
9074
9083
|
[draftMonth, draftYear, maxDate, minDate]
|
|
9075
9084
|
);
|
|
9076
9085
|
const monthIndex = months.findIndex((month) => month === draftMonth);
|
|
9077
9086
|
const dayIndex = days.findIndex((day) => day === draftDate.getDate());
|
|
9078
9087
|
const yearIndex = years.findIndex((year) => year === draftYear);
|
|
9079
|
-
const syncScrollPositions =
|
|
9088
|
+
const syncScrollPositions = React31.useCallback(
|
|
9080
9089
|
(nextDate, behavior = "auto") => {
|
|
9081
9090
|
const nextMonths = getAllowedMonths(nextDate.getFullYear(), minDate, maxDate);
|
|
9082
9091
|
const nextMonthIndex = nextMonths.findIndex((month) => month === nextDate.getMonth());
|
|
@@ -9100,7 +9109,7 @@ function useDatePickerWheel({
|
|
|
9100
9109
|
},
|
|
9101
9110
|
[maxDate, minDate, years]
|
|
9102
9111
|
);
|
|
9103
|
-
|
|
9112
|
+
React31.useLayoutEffect(() => {
|
|
9104
9113
|
if (!isOpen) return;
|
|
9105
9114
|
const nextDate = resolveInitialDate({ value, defaultValue, minDate, maxDate });
|
|
9106
9115
|
setDraftDate(nextDate);
|
|
@@ -9111,7 +9120,7 @@ function useDatePickerWheel({
|
|
|
9111
9120
|
window.cancelAnimationFrame(frameId);
|
|
9112
9121
|
};
|
|
9113
9122
|
}, [defaultValue, isOpen, maxDate, minDate, syncScrollPositions, value]);
|
|
9114
|
-
const updateDraftDate =
|
|
9123
|
+
const updateDraftDate = React31.useCallback(
|
|
9115
9124
|
(column, targetIndex, behavior = "smooth") => {
|
|
9116
9125
|
const currentDate = stripTime(draftDate);
|
|
9117
9126
|
const currentYear = currentDate.getFullYear();
|
|
@@ -9156,7 +9165,7 @@ function useDatePickerWheel({
|
|
|
9156
9165
|
},
|
|
9157
9166
|
[days, draftDate, maxDate, minDate, months, syncScrollPositions, years]
|
|
9158
9167
|
);
|
|
9159
|
-
const settleColumnScroll =
|
|
9168
|
+
const settleColumnScroll = React31.useCallback(
|
|
9160
9169
|
(column) => {
|
|
9161
9170
|
const list = columnRefs[column].current;
|
|
9162
9171
|
if (!list) return;
|
|
@@ -9169,7 +9178,7 @@ function useDatePickerWheel({
|
|
|
9169
9178
|
},
|
|
9170
9179
|
[columnRefs, days.length, months.length, updateDraftDate, years.length]
|
|
9171
9180
|
);
|
|
9172
|
-
const scheduleScrollSettle =
|
|
9181
|
+
const scheduleScrollSettle = React31.useCallback(
|
|
9173
9182
|
(column) => {
|
|
9174
9183
|
clearSettleTimeout(column);
|
|
9175
9184
|
settleTimeoutsRef.current[column] = window.setTimeout(() => {
|
|
@@ -9178,7 +9187,7 @@ function useDatePickerWheel({
|
|
|
9178
9187
|
},
|
|
9179
9188
|
[clearSettleTimeout, settleColumnScroll]
|
|
9180
9189
|
);
|
|
9181
|
-
const handleColumnScroll =
|
|
9190
|
+
const handleColumnScroll = React31.useCallback(
|
|
9182
9191
|
(column) => {
|
|
9183
9192
|
const list = columnRefs[column].current;
|
|
9184
9193
|
if (!list) return;
|
|
@@ -9192,13 +9201,13 @@ function useDatePickerWheel({
|
|
|
9192
9201
|
},
|
|
9193
9202
|
[clearAnimationFrame, columnRefs, scheduleScrollSettle, setColumnScrollTop]
|
|
9194
9203
|
);
|
|
9195
|
-
const handleOptionSelect =
|
|
9204
|
+
const handleOptionSelect = React31.useCallback(
|
|
9196
9205
|
(column, targetIndex) => {
|
|
9197
9206
|
updateDraftDate(column, targetIndex, "smooth");
|
|
9198
9207
|
},
|
|
9199
9208
|
[updateDraftDate]
|
|
9200
9209
|
);
|
|
9201
|
-
const focusAdjacentColumn =
|
|
9210
|
+
const focusAdjacentColumn = React31.useCallback(
|
|
9202
9211
|
(column, direction) => {
|
|
9203
9212
|
const order = ["month", "day", "year"];
|
|
9204
9213
|
const currentIndex = order.indexOf(column);
|
|
@@ -9208,7 +9217,7 @@ function useDatePickerWheel({
|
|
|
9208
9217
|
},
|
|
9209
9218
|
[columnRefs]
|
|
9210
9219
|
);
|
|
9211
|
-
const handleColumnKeyDown =
|
|
9220
|
+
const handleColumnKeyDown = React31.useCallback(
|
|
9212
9221
|
(column, event) => {
|
|
9213
9222
|
const currentIndex = column === "month" ? monthIndex : column === "day" ? dayIndex : yearIndex;
|
|
9214
9223
|
const maxIndex = column === "month" ? months.length - 1 : column === "day" ? days.length - 1 : years.length - 1;
|
|
@@ -9512,7 +9521,7 @@ var DEVICE = {
|
|
|
9512
9521
|
};
|
|
9513
9522
|
|
|
9514
9523
|
// src/field-trigger/FieldTrigger.tsx
|
|
9515
|
-
import * as
|
|
9524
|
+
import * as React32 from "react";
|
|
9516
9525
|
import { Loader2 as Loader25 } from "lucide-react";
|
|
9517
9526
|
import { useTranslation as useTranslation22 } from "react-i18next";
|
|
9518
9527
|
|
|
@@ -9556,7 +9565,7 @@ function FieldErrorMessage({
|
|
|
9556
9565
|
|
|
9557
9566
|
// src/field-trigger/FieldTrigger.tsx
|
|
9558
9567
|
import { Fragment as Fragment10, jsx as jsx121, jsxs as jsxs78 } from "react/jsx-runtime";
|
|
9559
|
-
var FieldTrigger =
|
|
9568
|
+
var FieldTrigger = React32.forwardRef(
|
|
9560
9569
|
({
|
|
9561
9570
|
as = "button",
|
|
9562
9571
|
variant = "airbnb",
|
|
@@ -9723,7 +9732,7 @@ FieldTrigger.displayName = "FieldTrigger";
|
|
|
9723
9732
|
// src/datepicker/DatePicker.tsx
|
|
9724
9733
|
import { jsx as jsx122, jsxs as jsxs79 } from "react/jsx-runtime";
|
|
9725
9734
|
var DEFAULT_MIN_DATE = new Date(1920, 0, 1);
|
|
9726
|
-
var DatePicker =
|
|
9735
|
+
var DatePicker = React33.forwardRef(
|
|
9727
9736
|
({
|
|
9728
9737
|
variant = "default",
|
|
9729
9738
|
label,
|
|
@@ -9749,24 +9758,24 @@ var DatePicker = React32.forwardRef(
|
|
|
9749
9758
|
formatValue = formatDateValue
|
|
9750
9759
|
}, ref) => {
|
|
9751
9760
|
const { isMatch: isMobile } = useScreenResize(DEVICE.mobileXL);
|
|
9752
|
-
const [isOpen, setIsOpen] =
|
|
9753
|
-
const triggerId =
|
|
9754
|
-
const pickerId =
|
|
9755
|
-
const labelId =
|
|
9756
|
-
const valueId =
|
|
9757
|
-
const helperTextId =
|
|
9758
|
-
const errorId =
|
|
9759
|
-
const internalRef =
|
|
9761
|
+
const [isOpen, setIsOpen] = React33.useState(false);
|
|
9762
|
+
const triggerId = React33.useId();
|
|
9763
|
+
const pickerId = React33.useId();
|
|
9764
|
+
const labelId = React33.useId();
|
|
9765
|
+
const valueId = React33.useId();
|
|
9766
|
+
const helperTextId = React33.useId();
|
|
9767
|
+
const errorId = React33.useId();
|
|
9768
|
+
const internalRef = React33.useRef(null);
|
|
9760
9769
|
const combinedRef = useCombinedRef(ref, internalRef);
|
|
9761
|
-
const monthLabels =
|
|
9762
|
-
const resolvedMinDate =
|
|
9763
|
-
const resolvedMaxDate =
|
|
9764
|
-
const normalizedValue =
|
|
9765
|
-
const normalizedDefaultValue =
|
|
9770
|
+
const monthLabels = React33.useMemo(() => getMonthLabels(locale), [locale]);
|
|
9771
|
+
const resolvedMinDate = React33.useMemo(() => minDate ?? DEFAULT_MIN_DATE, [minDate]);
|
|
9772
|
+
const resolvedMaxDate = React33.useMemo(() => maxDate ?? /* @__PURE__ */ new Date(), [maxDate]);
|
|
9773
|
+
const normalizedValue = React33.useMemo(() => normalizeDateValue(value), [value]);
|
|
9774
|
+
const normalizedDefaultValue = React33.useMemo(
|
|
9766
9775
|
() => normalizeDateValue(defaultValue),
|
|
9767
9776
|
[defaultValue]
|
|
9768
9777
|
);
|
|
9769
|
-
const resolvedValue =
|
|
9778
|
+
const resolvedValue = React33.useMemo(
|
|
9770
9779
|
() => normalizedValue ? clampDate(normalizedValue, resolvedMinDate, resolvedMaxDate) : null,
|
|
9771
9780
|
[normalizedValue, resolvedMaxDate, resolvedMinDate]
|
|
9772
9781
|
);
|
|
@@ -9797,7 +9806,7 @@ var DatePicker = React32.forwardRef(
|
|
|
9797
9806
|
minDate: resolvedMinDate,
|
|
9798
9807
|
maxDate: resolvedMaxDate
|
|
9799
9808
|
});
|
|
9800
|
-
const handleOpenChange =
|
|
9809
|
+
const handleOpenChange = React33.useCallback(
|
|
9801
9810
|
(nextOpen) => {
|
|
9802
9811
|
if (isBlocked && nextOpen) return;
|
|
9803
9812
|
setIsOpen(nextOpen);
|
|
@@ -9807,7 +9816,7 @@ var DatePicker = React32.forwardRef(
|
|
|
9807
9816
|
},
|
|
9808
9817
|
[isBlocked]
|
|
9809
9818
|
);
|
|
9810
|
-
const handleDone =
|
|
9819
|
+
const handleDone = React33.useCallback(() => {
|
|
9811
9820
|
if (isBlocked) return;
|
|
9812
9821
|
onChange(clampDate(draftDate, resolvedMinDate, resolvedMaxDate));
|
|
9813
9822
|
handleOpenChange(false);
|
|
@@ -9819,11 +9828,11 @@ var DatePicker = React32.forwardRef(
|
|
|
9819
9828
|
resolvedMaxDate,
|
|
9820
9829
|
resolvedMinDate
|
|
9821
9830
|
]);
|
|
9822
|
-
const handleTriggerClick =
|
|
9831
|
+
const handleTriggerClick = React33.useCallback(() => {
|
|
9823
9832
|
if (isBlocked) return;
|
|
9824
9833
|
setIsOpen(true);
|
|
9825
9834
|
}, [isBlocked]);
|
|
9826
|
-
const handleTriggerKeyDown =
|
|
9835
|
+
const handleTriggerKeyDown = React33.useCallback(
|
|
9827
9836
|
(event) => {
|
|
9828
9837
|
if (isBlocked) return;
|
|
9829
9838
|
if (event.key === "ArrowDown" || event.key === "ArrowUp" || event.key === "Enter" || event.key === " ") {
|
|
@@ -9833,7 +9842,7 @@ var DatePicker = React32.forwardRef(
|
|
|
9833
9842
|
},
|
|
9834
9843
|
[isBlocked]
|
|
9835
9844
|
);
|
|
9836
|
-
|
|
9845
|
+
React33.useEffect(() => {
|
|
9837
9846
|
if (isBlocked) {
|
|
9838
9847
|
setIsOpen(false);
|
|
9839
9848
|
}
|
|
@@ -10015,10 +10024,10 @@ function ResponsiveSheet({
|
|
|
10015
10024
|
}
|
|
10016
10025
|
|
|
10017
10026
|
// src/airbnb/input/Input.tsx
|
|
10018
|
-
import * as
|
|
10027
|
+
import * as React34 from "react";
|
|
10019
10028
|
import { jsx as jsx124 } from "react/jsx-runtime";
|
|
10020
10029
|
var getInputValue = (value) => value != null ? String(value) : "";
|
|
10021
|
-
var AirbnbInput =
|
|
10030
|
+
var AirbnbInput = React34.forwardRef(
|
|
10022
10031
|
({
|
|
10023
10032
|
variant = "default",
|
|
10024
10033
|
label,
|
|
@@ -10047,15 +10056,15 @@ var AirbnbInput = React33.forwardRef(
|
|
|
10047
10056
|
placeholder,
|
|
10048
10057
|
...props
|
|
10049
10058
|
}, ref) => {
|
|
10050
|
-
const generatedId =
|
|
10051
|
-
const inputRef =
|
|
10059
|
+
const generatedId = React34.useId();
|
|
10060
|
+
const inputRef = React34.useRef(null);
|
|
10052
10061
|
const inputId = id ?? generatedId;
|
|
10053
10062
|
const fieldId = `${inputId}-field`;
|
|
10054
10063
|
const labelId = `${inputId}-label`;
|
|
10055
10064
|
const errorId = `${inputId}-error`;
|
|
10056
10065
|
const accessibleLabel = placeholder ?? label;
|
|
10057
|
-
const [isFocused, setIsFocused] =
|
|
10058
|
-
const [currentValue, setCurrentValue] =
|
|
10066
|
+
const [isFocused, setIsFocused] = React34.useState(false);
|
|
10067
|
+
const [currentValue, setCurrentValue] = React34.useState(
|
|
10059
10068
|
() => value != null ? getInputValue(value) : getInputValue(defaultValue)
|
|
10060
10069
|
);
|
|
10061
10070
|
const resolvedValue = value != null ? getInputValue(value) : currentValue;
|
|
@@ -10065,11 +10074,11 @@ var AirbnbInput = React33.forwardRef(
|
|
|
10065
10074
|
const triggerError = error ?? invalid;
|
|
10066
10075
|
const hasLabelMeta = Boolean(optional) || Boolean(tooltip);
|
|
10067
10076
|
const isBlocked = Boolean(disabled) || Boolean(loading);
|
|
10068
|
-
|
|
10077
|
+
React34.useLayoutEffect(() => {
|
|
10069
10078
|
const nextValue = value != null ? getInputValue(value) : getInputValue(inputRef.current?.value);
|
|
10070
10079
|
setCurrentValue((prevValue) => prevValue === nextValue ? prevValue : nextValue);
|
|
10071
10080
|
}, [value]);
|
|
10072
|
-
const setRefs =
|
|
10081
|
+
const setRefs = React34.useCallback(
|
|
10073
10082
|
(node) => {
|
|
10074
10083
|
inputRef.current = node;
|
|
10075
10084
|
if (node && value == null) {
|
|
@@ -10167,11 +10176,11 @@ var AirbnbInput = React33.forwardRef(
|
|
|
10167
10176
|
AirbnbInput.displayName = "Input";
|
|
10168
10177
|
|
|
10169
10178
|
// src/airbnb/phone-field/PhoneField.tsx
|
|
10170
|
-
import * as
|
|
10179
|
+
import * as React40 from "react";
|
|
10171
10180
|
import { ChevronDown as ChevronDown2 } from "lucide-react";
|
|
10172
10181
|
|
|
10173
10182
|
// src/airbnb/select/Select.tsx
|
|
10174
|
-
import * as
|
|
10183
|
+
import * as React39 from "react";
|
|
10175
10184
|
|
|
10176
10185
|
// src/airbnb/select/SelectDesktopMenu.tsx
|
|
10177
10186
|
import { jsx as jsx125, jsxs as jsxs81 } from "react/jsx-runtime";
|
|
@@ -10516,10 +10525,10 @@ function SelectMobileContent({
|
|
|
10516
10525
|
}
|
|
10517
10526
|
|
|
10518
10527
|
// src/airbnb/select/SelectTrigger.tsx
|
|
10519
|
-
import * as
|
|
10528
|
+
import * as React35 from "react";
|
|
10520
10529
|
import { ChevronDown } from "lucide-react";
|
|
10521
10530
|
import { jsx as jsx129 } from "react/jsx-runtime";
|
|
10522
|
-
var SelectTrigger2 =
|
|
10531
|
+
var SelectTrigger2 = React35.forwardRef(
|
|
10523
10532
|
({
|
|
10524
10533
|
id,
|
|
10525
10534
|
open,
|
|
@@ -10586,7 +10595,7 @@ var SelectTrigger2 = React34.forwardRef(
|
|
|
10586
10595
|
SelectTrigger2.displayName = "SelectTrigger";
|
|
10587
10596
|
|
|
10588
10597
|
// src/airbnb/select/useDesktopSelect.ts
|
|
10589
|
-
import * as
|
|
10598
|
+
import * as React36 from "react";
|
|
10590
10599
|
function useDesktopSelect({
|
|
10591
10600
|
isMobile,
|
|
10592
10601
|
isOpen,
|
|
@@ -10595,12 +10604,12 @@ function useDesktopSelect({
|
|
|
10595
10604
|
disabled,
|
|
10596
10605
|
onChange
|
|
10597
10606
|
}) {
|
|
10598
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
10599
|
-
const triggerRef =
|
|
10600
|
-
const listRef =
|
|
10601
|
-
const optionRefs =
|
|
10607
|
+
const [highlightedIndex, setHighlightedIndex] = React36.useState(-1);
|
|
10608
|
+
const triggerRef = React36.useRef(null);
|
|
10609
|
+
const listRef = React36.useRef(null);
|
|
10610
|
+
const optionRefs = React36.useRef([]);
|
|
10602
10611
|
const selectedIndex = getOptionIndex(options, value);
|
|
10603
|
-
|
|
10612
|
+
React36.useEffect(() => {
|
|
10604
10613
|
if (!isOpen || isMobile) return;
|
|
10605
10614
|
setHighlightedIndex((currentIndex) => {
|
|
10606
10615
|
if (currentIndex >= 0) {
|
|
@@ -10615,34 +10624,34 @@ function useDesktopSelect({
|
|
|
10615
10624
|
window.cancelAnimationFrame(frameId);
|
|
10616
10625
|
};
|
|
10617
10626
|
}, [isMobile, isOpen, options, selectedIndex]);
|
|
10618
|
-
|
|
10627
|
+
React36.useEffect(() => {
|
|
10619
10628
|
if (!isOpen || isMobile || highlightedIndex < 0) return;
|
|
10620
10629
|
optionRefs.current[highlightedIndex]?.scrollIntoView({
|
|
10621
10630
|
block: "nearest"
|
|
10622
10631
|
});
|
|
10623
10632
|
}, [highlightedIndex, isMobile, isOpen]);
|
|
10624
|
-
|
|
10633
|
+
React36.useEffect(() => {
|
|
10625
10634
|
if (isOpen) return;
|
|
10626
10635
|
setHighlightedIndex(-1);
|
|
10627
10636
|
}, [isOpen]);
|
|
10628
|
-
const focusTrigger =
|
|
10637
|
+
const focusTrigger = React36.useCallback(() => {
|
|
10629
10638
|
triggerRef.current?.focus();
|
|
10630
10639
|
}, []);
|
|
10631
|
-
const handleSelect =
|
|
10640
|
+
const handleSelect = React36.useCallback(
|
|
10632
10641
|
(option) => {
|
|
10633
10642
|
if (option.isDisabled || disabled) return;
|
|
10634
10643
|
onChange(option);
|
|
10635
10644
|
},
|
|
10636
10645
|
[disabled, onChange]
|
|
10637
10646
|
);
|
|
10638
|
-
const openMenu =
|
|
10647
|
+
const openMenu = React36.useCallback(
|
|
10639
10648
|
(targetIndex) => {
|
|
10640
10649
|
const fallbackIndex = selectedIndex >= 0 ? selectedIndex : getFirstEnabledOptionIndex(options);
|
|
10641
10650
|
setHighlightedIndex(targetIndex ?? fallbackIndex);
|
|
10642
10651
|
},
|
|
10643
10652
|
[options, selectedIndex]
|
|
10644
10653
|
);
|
|
10645
|
-
const handleTriggerKeyDown =
|
|
10654
|
+
const handleTriggerKeyDown = React36.useCallback(
|
|
10646
10655
|
(event, onOpen) => {
|
|
10647
10656
|
if (disabled) return;
|
|
10648
10657
|
if (event.key === "ArrowDown") {
|
|
@@ -10667,7 +10676,7 @@ function useDesktopSelect({
|
|
|
10667
10676
|
},
|
|
10668
10677
|
[disabled, openMenu, options, selectedIndex]
|
|
10669
10678
|
);
|
|
10670
|
-
const handleMenuKeyDown =
|
|
10679
|
+
const handleMenuKeyDown = React36.useCallback(
|
|
10671
10680
|
(event, onClose) => {
|
|
10672
10681
|
if (event.key === "Escape") {
|
|
10673
10682
|
event.preventDefault();
|
|
@@ -10717,7 +10726,7 @@ function useDesktopSelect({
|
|
|
10717
10726
|
},
|
|
10718
10727
|
[focusTrigger, highlightedIndex, onChange, options]
|
|
10719
10728
|
);
|
|
10720
|
-
const setOptionRef =
|
|
10729
|
+
const setOptionRef = React36.useCallback(
|
|
10721
10730
|
(index, node) => {
|
|
10722
10731
|
optionRefs.current[index] = node;
|
|
10723
10732
|
},
|
|
@@ -10737,23 +10746,23 @@ function useDesktopSelect({
|
|
|
10737
10746
|
}
|
|
10738
10747
|
|
|
10739
10748
|
// src/airbnb/select/useMobileSelectWheel.ts
|
|
10740
|
-
import * as
|
|
10749
|
+
import * as React37 from "react";
|
|
10741
10750
|
function useMobileSelectWheel({ isMobile, isOpen, options, value, disabled }) {
|
|
10742
|
-
const [pendingValue, setPendingValue] =
|
|
10751
|
+
const [pendingValue, setPendingValue] = React37.useState(
|
|
10743
10752
|
value ?? null
|
|
10744
10753
|
);
|
|
10745
|
-
const [mobileScrollTop, setMobileScrollTop] =
|
|
10746
|
-
const mobileListRef =
|
|
10747
|
-
const scrollSettleTimeoutRef =
|
|
10748
|
-
const scrollAnimationFrameRef =
|
|
10749
|
-
const getTargetIndex =
|
|
10754
|
+
const [mobileScrollTop, setMobileScrollTop] = React37.useState(0);
|
|
10755
|
+
const mobileListRef = React37.useRef(null);
|
|
10756
|
+
const scrollSettleTimeoutRef = React37.useRef(null);
|
|
10757
|
+
const scrollAnimationFrameRef = React37.useRef(null);
|
|
10758
|
+
const getTargetIndex = React37.useCallback(
|
|
10750
10759
|
(targetValue) => {
|
|
10751
10760
|
const selectedIndex = getOptionIndex(options, targetValue);
|
|
10752
10761
|
return selectedIndex >= 0 ? selectedIndex : getFirstEnabledOptionIndex(options);
|
|
10753
10762
|
},
|
|
10754
10763
|
[options]
|
|
10755
10764
|
);
|
|
10756
|
-
const syncScrollPosition =
|
|
10765
|
+
const syncScrollPosition = React37.useCallback(
|
|
10757
10766
|
(targetValue, behavior = "instant") => {
|
|
10758
10767
|
const targetIndex = getTargetIndex(targetValue);
|
|
10759
10768
|
if (targetIndex < 0) return;
|
|
@@ -10772,27 +10781,27 @@ function useMobileSelectWheel({ isMobile, isOpen, options, value, disabled }) {
|
|
|
10772
10781
|
},
|
|
10773
10782
|
[getTargetIndex, options]
|
|
10774
10783
|
);
|
|
10775
|
-
const clearScrollSettleTimeout =
|
|
10784
|
+
const clearScrollSettleTimeout = React37.useCallback(() => {
|
|
10776
10785
|
if (scrollSettleTimeoutRef.current === null) return;
|
|
10777
10786
|
window.clearTimeout(scrollSettleTimeoutRef.current);
|
|
10778
10787
|
scrollSettleTimeoutRef.current = null;
|
|
10779
10788
|
}, []);
|
|
10780
|
-
const clearScrollAnimationFrame =
|
|
10789
|
+
const clearScrollAnimationFrame = React37.useCallback(() => {
|
|
10781
10790
|
if (scrollAnimationFrameRef.current === null) return;
|
|
10782
10791
|
window.cancelAnimationFrame(scrollAnimationFrameRef.current);
|
|
10783
10792
|
scrollAnimationFrameRef.current = null;
|
|
10784
10793
|
}, []);
|
|
10785
|
-
|
|
10794
|
+
React37.useEffect(
|
|
10786
10795
|
() => () => {
|
|
10787
10796
|
clearScrollSettleTimeout();
|
|
10788
10797
|
clearScrollAnimationFrame();
|
|
10789
10798
|
},
|
|
10790
10799
|
[clearScrollAnimationFrame, clearScrollSettleTimeout]
|
|
10791
10800
|
);
|
|
10792
|
-
|
|
10801
|
+
React37.useEffect(() => {
|
|
10793
10802
|
setPendingValue(value ?? null);
|
|
10794
10803
|
}, [value]);
|
|
10795
|
-
|
|
10804
|
+
React37.useLayoutEffect(() => {
|
|
10796
10805
|
if (!isMobile || !isOpen) return;
|
|
10797
10806
|
const frameId = window.requestAnimationFrame(() => {
|
|
10798
10807
|
syncScrollPosition(value ?? null, "instant");
|
|
@@ -10801,7 +10810,7 @@ function useMobileSelectWheel({ isMobile, isOpen, options, value, disabled }) {
|
|
|
10801
10810
|
window.cancelAnimationFrame(frameId);
|
|
10802
10811
|
};
|
|
10803
10812
|
}, [isMobile, isOpen, syncScrollPosition, value]);
|
|
10804
|
-
const settleScroll =
|
|
10813
|
+
const settleScroll = React37.useCallback(() => {
|
|
10805
10814
|
if (!mobileListRef.current) return;
|
|
10806
10815
|
const nextIndex = Math.round(mobileListRef.current.scrollTop / MOBILE_OPTION_HEIGHT);
|
|
10807
10816
|
const nextOption = options[nextIndex];
|
|
@@ -10813,13 +10822,13 @@ function useMobileSelectWheel({ isMobile, isOpen, options, value, disabled }) {
|
|
|
10813
10822
|
}
|
|
10814
10823
|
setPendingValue(nextOption);
|
|
10815
10824
|
}, [options, pendingValue]);
|
|
10816
|
-
const scheduleScrollSettle =
|
|
10825
|
+
const scheduleScrollSettle = React37.useCallback(() => {
|
|
10817
10826
|
clearScrollSettleTimeout();
|
|
10818
10827
|
scrollSettleTimeoutRef.current = window.setTimeout(() => {
|
|
10819
10828
|
settleScroll();
|
|
10820
10829
|
}, MOBILE_SCROLL_SETTLE_DELAY);
|
|
10821
10830
|
}, [clearScrollSettleTimeout, settleScroll]);
|
|
10822
|
-
const handleScroll =
|
|
10831
|
+
const handleScroll = React37.useCallback(() => {
|
|
10823
10832
|
if (!mobileListRef.current) return;
|
|
10824
10833
|
const nextScrollTop = mobileListRef.current.scrollTop;
|
|
10825
10834
|
clearScrollAnimationFrame();
|
|
@@ -10829,7 +10838,7 @@ function useMobileSelectWheel({ isMobile, isOpen, options, value, disabled }) {
|
|
|
10829
10838
|
});
|
|
10830
10839
|
scheduleScrollSettle();
|
|
10831
10840
|
}, [clearScrollAnimationFrame, scheduleScrollSettle]);
|
|
10832
|
-
const focusOptionByIndex =
|
|
10841
|
+
const focusOptionByIndex = React37.useCallback(
|
|
10833
10842
|
(index, behavior = "instant", updatePendingImmediately = behavior === "instant") => {
|
|
10834
10843
|
if (!mobileListRef.current || index < 0 || index >= options.length) return;
|
|
10835
10844
|
const option = options[index];
|
|
@@ -10847,7 +10856,7 @@ function useMobileSelectWheel({ isMobile, isOpen, options, value, disabled }) {
|
|
|
10847
10856
|
},
|
|
10848
10857
|
[options, scheduleScrollSettle]
|
|
10849
10858
|
);
|
|
10850
|
-
const handleOptionClick =
|
|
10859
|
+
const handleOptionClick = React37.useCallback(
|
|
10851
10860
|
(option) => {
|
|
10852
10861
|
if (!mobileListRef.current || disabled || option.isDisabled) return;
|
|
10853
10862
|
const optionIndex = getOptionIndex(options, option);
|
|
@@ -10856,7 +10865,7 @@ function useMobileSelectWheel({ isMobile, isOpen, options, value, disabled }) {
|
|
|
10856
10865
|
},
|
|
10857
10866
|
[disabled, focusOptionByIndex, options]
|
|
10858
10867
|
);
|
|
10859
|
-
const moveByStep =
|
|
10868
|
+
const moveByStep = React37.useCallback(
|
|
10860
10869
|
(step) => {
|
|
10861
10870
|
const currentIndex = getOptionIndex(options, pendingValue);
|
|
10862
10871
|
const fallbackIndex = step === 1 ? getFirstEnabledOptionIndex(options) : getLastEnabledOptionIndex(options);
|
|
@@ -10868,7 +10877,7 @@ function useMobileSelectWheel({ isMobile, isOpen, options, value, disabled }) {
|
|
|
10868
10877
|
},
|
|
10869
10878
|
[focusOptionByIndex, options, pendingValue]
|
|
10870
10879
|
);
|
|
10871
|
-
const moveToBoundary =
|
|
10880
|
+
const moveToBoundary = React37.useCallback(
|
|
10872
10881
|
(boundary) => {
|
|
10873
10882
|
const targetIndex = boundary === "start" ? getFirstEnabledOptionIndex(options) : getLastEnabledOptionIndex(options);
|
|
10874
10883
|
if (targetIndex >= 0) {
|
|
@@ -10877,7 +10886,7 @@ function useMobileSelectWheel({ isMobile, isOpen, options, value, disabled }) {
|
|
|
10877
10886
|
},
|
|
10878
10887
|
[focusOptionByIndex, options]
|
|
10879
10888
|
);
|
|
10880
|
-
const syncPendingValue =
|
|
10889
|
+
const syncPendingValue = React37.useCallback(
|
|
10881
10890
|
(nextValue) => {
|
|
10882
10891
|
const normalizedValue = nextValue ?? null;
|
|
10883
10892
|
const matchedIndex = getOptionIndex(options, normalizedValue);
|
|
@@ -10905,9 +10914,9 @@ function useMobileSelectWheel({ isMobile, isOpen, options, value, disabled }) {
|
|
|
10905
10914
|
}
|
|
10906
10915
|
|
|
10907
10916
|
// src/airbnb/select/useSelectIds.ts
|
|
10908
|
-
import * as
|
|
10917
|
+
import * as React38 from "react";
|
|
10909
10918
|
function useSelectIds({ name, hasValue, error, hideErrorMessage }) {
|
|
10910
|
-
const reactId =
|
|
10919
|
+
const reactId = React38.useId().replace(/:/g, "");
|
|
10911
10920
|
const baseId = name ? `select-${name}` : `select-${reactId}`;
|
|
10912
10921
|
const triggerId = `${baseId}-trigger`;
|
|
10913
10922
|
const labelId = `${baseId}-label`;
|
|
@@ -10917,7 +10926,7 @@ function useSelectIds({ name, hasValue, error, hideErrorMessage }) {
|
|
|
10917
10926
|
const listboxId = `${baseId}-listbox`;
|
|
10918
10927
|
const describedErrorId = error && !hideErrorMessage ? errorId : void 0;
|
|
10919
10928
|
const describedBy = [!hasValue ? helperTextId : null, describedErrorId].filter(Boolean).join(" ") || void 0;
|
|
10920
|
-
const getOptionId2 =
|
|
10929
|
+
const getOptionId2 = React38.useCallback(
|
|
10921
10930
|
(index) => `${baseId}-option-${index}`,
|
|
10922
10931
|
[baseId]
|
|
10923
10932
|
);
|
|
@@ -10936,7 +10945,7 @@ function useSelectIds({ name, hasValue, error, hideErrorMessage }) {
|
|
|
10936
10945
|
|
|
10937
10946
|
// src/airbnb/select/Select.tsx
|
|
10938
10947
|
import { jsx as jsx130, jsxs as jsxs84 } from "react/jsx-runtime";
|
|
10939
|
-
var AirbnbSelect =
|
|
10948
|
+
var AirbnbSelect = React39.forwardRef(function AirbnbSelect2({
|
|
10940
10949
|
options = [],
|
|
10941
10950
|
value,
|
|
10942
10951
|
onChange,
|
|
@@ -10963,8 +10972,8 @@ var AirbnbSelect = React38.forwardRef(function AirbnbSelect2({
|
|
|
10963
10972
|
noOptionsMessage
|
|
10964
10973
|
}, ref) {
|
|
10965
10974
|
const { isMatch: isMobile } = useScreenResize(DEVICE.mobileXL);
|
|
10966
|
-
const [isOpen, setIsOpen] =
|
|
10967
|
-
const containerRef =
|
|
10975
|
+
const [isOpen, setIsOpen] = React39.useState(false);
|
|
10976
|
+
const containerRef = React39.useRef(null);
|
|
10968
10977
|
const hasValue = Boolean(value);
|
|
10969
10978
|
const helperText = placeholder ?? label;
|
|
10970
10979
|
const isBlocked = Boolean(disabled) || Boolean(loading);
|
|
@@ -11022,12 +11031,12 @@ var AirbnbSelect = React38.forwardRef(function AirbnbSelect2({
|
|
|
11022
11031
|
onOutsideClick: () => setIsOpen(false),
|
|
11023
11032
|
isDisabled: !isOpen || isMobile
|
|
11024
11033
|
});
|
|
11025
|
-
|
|
11034
|
+
React39.useEffect(() => {
|
|
11026
11035
|
if (isBlocked) {
|
|
11027
11036
|
setIsOpen(false);
|
|
11028
11037
|
}
|
|
11029
11038
|
}, [isBlocked]);
|
|
11030
|
-
|
|
11039
|
+
React39.useEffect(
|
|
11031
11040
|
function setCorrectOptionIfThereIsOnlyValue() {
|
|
11032
11041
|
if (value?.value === void 0 || value.value === null || value.label !== "") {
|
|
11033
11042
|
return;
|
|
@@ -11039,7 +11048,7 @@ var AirbnbSelect = React38.forwardRef(function AirbnbSelect2({
|
|
|
11039
11048
|
},
|
|
11040
11049
|
[onChange, options, value]
|
|
11041
11050
|
);
|
|
11042
|
-
const handleMobileOpenChange =
|
|
11051
|
+
const handleMobileOpenChange = React39.useCallback(
|
|
11043
11052
|
(nextOpen) => {
|
|
11044
11053
|
if (isBlocked && nextOpen) return;
|
|
11045
11054
|
setIsOpen(nextOpen);
|
|
@@ -11050,7 +11059,7 @@ var AirbnbSelect = React38.forwardRef(function AirbnbSelect2({
|
|
|
11050
11059
|
},
|
|
11051
11060
|
[focusTrigger, isBlocked, syncPendingValue, value]
|
|
11052
11061
|
);
|
|
11053
|
-
const handleMobileDone =
|
|
11062
|
+
const handleMobileDone = React39.useCallback(() => {
|
|
11054
11063
|
if (isBlocked) return;
|
|
11055
11064
|
const finalOption = pendingValue;
|
|
11056
11065
|
if (finalOption && finalOption.value !== value?.value) {
|
|
@@ -11059,7 +11068,7 @@ var AirbnbSelect = React38.forwardRef(function AirbnbSelect2({
|
|
|
11059
11068
|
setIsOpen(false);
|
|
11060
11069
|
focusTrigger();
|
|
11061
11070
|
}, [focusTrigger, isBlocked, onChange, pendingValue, value]);
|
|
11062
|
-
const handleTriggerClick =
|
|
11071
|
+
const handleTriggerClick = React39.useCallback(() => {
|
|
11063
11072
|
if (isBlocked) return;
|
|
11064
11073
|
setIsOpen((prev) => {
|
|
11065
11074
|
const nextOpen = !prev;
|
|
@@ -11228,7 +11237,7 @@ var AirbnbSelect = React38.forwardRef(function AirbnbSelect2({
|
|
|
11228
11237
|
|
|
11229
11238
|
// src/airbnb/phone-field/PhoneField.tsx
|
|
11230
11239
|
import { jsx as jsx131, jsxs as jsxs85 } from "react/jsx-runtime";
|
|
11231
|
-
var PhoneField =
|
|
11240
|
+
var PhoneField = React40.forwardRef(
|
|
11232
11241
|
({
|
|
11233
11242
|
variant = "default",
|
|
11234
11243
|
label,
|
|
@@ -11252,8 +11261,8 @@ var PhoneField = React39.forwardRef(
|
|
|
11252
11261
|
mobileTitle,
|
|
11253
11262
|
codePlaceholder = "+00"
|
|
11254
11263
|
}, ref) => {
|
|
11255
|
-
const inputId =
|
|
11256
|
-
const codeOptions =
|
|
11264
|
+
const inputId = React40.useId();
|
|
11265
|
+
const codeOptions = React40.useMemo(
|
|
11257
11266
|
() => options.map((option) => ({
|
|
11258
11267
|
value: option.value,
|
|
11259
11268
|
label: `${option.label} (${option.value})`,
|
|
@@ -11261,7 +11270,7 @@ var PhoneField = React39.forwardRef(
|
|
|
11261
11270
|
})),
|
|
11262
11271
|
[options]
|
|
11263
11272
|
);
|
|
11264
|
-
const selectedCodeOption =
|
|
11273
|
+
const selectedCodeOption = React40.useMemo(
|
|
11265
11274
|
() => codeOptions.find((option) => option.value === value?.code) ?? null,
|
|
11266
11275
|
[codeOptions, value?.code]
|
|
11267
11276
|
);
|
|
@@ -11403,11 +11412,11 @@ var PhoneField = React39.forwardRef(
|
|
|
11403
11412
|
PhoneField.displayName = "PhoneField";
|
|
11404
11413
|
|
|
11405
11414
|
// src/airbnb/search-input/SearchInput.tsx
|
|
11406
|
-
import * as
|
|
11415
|
+
import * as React41 from "react";
|
|
11407
11416
|
import { useTranslation as useTranslation23 } from "react-i18next";
|
|
11408
11417
|
import { Search as Search3, X as X8 } from "lucide-react";
|
|
11409
11418
|
import { jsx as jsx132, jsxs as jsxs86 } from "react/jsx-runtime";
|
|
11410
|
-
var AirbnbSearchInput =
|
|
11419
|
+
var AirbnbSearchInput = React41.forwardRef(({ onReset, placeholder, wrapperClassName, ...props }, ref) => {
|
|
11411
11420
|
const { t } = useTranslation23();
|
|
11412
11421
|
const placeholderText = placeholder || t("search_property") + "...";
|
|
11413
11422
|
return /* @__PURE__ */ jsxs86("div", { className: cn("input-wrapper relative", wrapperClassName), children: [
|
|
@@ -11445,10 +11454,10 @@ var AirbnbSearchInput = React40.forwardRef(({ onReset, placeholder, wrapperClass
|
|
|
11445
11454
|
AirbnbSearchInput.displayName = "SearchInput";
|
|
11446
11455
|
|
|
11447
11456
|
// src/searchable-select/SearchableSelect.tsx
|
|
11448
|
-
import * as
|
|
11457
|
+
import * as React42 from "react";
|
|
11449
11458
|
import { ChevronDown as ChevronDown3, Search as Search4 } from "lucide-react";
|
|
11450
11459
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
11451
|
-
import { useCallback as
|
|
11460
|
+
import { useCallback as useCallback24 } from "react";
|
|
11452
11461
|
import { jsx as jsx133, jsxs as jsxs87 } from "react/jsx-runtime";
|
|
11453
11462
|
var ROW_HEIGHT = 48;
|
|
11454
11463
|
var DESKTOP_LIST_HEIGHT = 280;
|
|
@@ -11490,13 +11499,13 @@ var SearchableSelectInternal = ({
|
|
|
11490
11499
|
loadingMessage
|
|
11491
11500
|
}, ref) => {
|
|
11492
11501
|
const { isMatch: isMobile } = useScreenResize(DEVICE.mobileXL);
|
|
11493
|
-
const reactId =
|
|
11494
|
-
const [open, setOpen] =
|
|
11495
|
-
const [internalSearchValue, setInternalSearchValue] =
|
|
11496
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
11497
|
-
const containerRef =
|
|
11498
|
-
const triggerRef =
|
|
11499
|
-
const inputRef =
|
|
11502
|
+
const reactId = React42.useId();
|
|
11503
|
+
const [open, setOpen] = React42.useState(false);
|
|
11504
|
+
const [internalSearchValue, setInternalSearchValue] = React42.useState("");
|
|
11505
|
+
const [highlightedIndex, setHighlightedIndex] = React42.useState(-1);
|
|
11506
|
+
const containerRef = React42.useRef(null);
|
|
11507
|
+
const triggerRef = React42.useRef(null);
|
|
11508
|
+
const inputRef = React42.useRef(null);
|
|
11500
11509
|
const listboxId = `${reactId}-listbox`;
|
|
11501
11510
|
const labelId = `${reactId}-label`;
|
|
11502
11511
|
const valueId = `${reactId}-value`;
|
|
@@ -11505,13 +11514,13 @@ var SearchableSelectInternal = ({
|
|
|
11505
11514
|
const searchInputId = `${reactId}-search`;
|
|
11506
11515
|
const effectiveSearchValue = searchValue ?? internalSearchValue;
|
|
11507
11516
|
const shouldFilterLocally = !onSearchChange && filterOption !== null;
|
|
11508
|
-
const visibleOptions =
|
|
11517
|
+
const visibleOptions = React42.useMemo(() => {
|
|
11509
11518
|
if (!shouldFilterLocally || !effectiveSearchValue) {
|
|
11510
11519
|
return options;
|
|
11511
11520
|
}
|
|
11512
11521
|
return options.filter((option) => filterOption(option, effectiveSearchValue));
|
|
11513
11522
|
}, [effectiveSearchValue, filterOption, options, shouldFilterLocally]);
|
|
11514
|
-
const selectedIndex =
|
|
11523
|
+
const selectedIndex = React42.useMemo(
|
|
11515
11524
|
() => visibleOptions.findIndex((option) => option.value === value?.value),
|
|
11516
11525
|
[value?.value, visibleOptions]
|
|
11517
11526
|
);
|
|
@@ -11527,7 +11536,7 @@ var SearchableSelectInternal = ({
|
|
|
11527
11536
|
isDisabled: !open || isMobile
|
|
11528
11537
|
});
|
|
11529
11538
|
const handleOnOpenChange = useEvent(onOpenChange);
|
|
11530
|
-
const setSelectOpen =
|
|
11539
|
+
const setSelectOpen = useCallback24(
|
|
11531
11540
|
(nextOpen, options2) => {
|
|
11532
11541
|
setOpen(nextOpen);
|
|
11533
11542
|
handleOnOpenChange?.(nextOpen);
|
|
@@ -11537,7 +11546,7 @@ var SearchableSelectInternal = ({
|
|
|
11537
11546
|
},
|
|
11538
11547
|
[handleOnOpenChange]
|
|
11539
11548
|
);
|
|
11540
|
-
|
|
11549
|
+
React42.useEffect(() => {
|
|
11541
11550
|
if (isBlocked) {
|
|
11542
11551
|
setSelectOpen(false);
|
|
11543
11552
|
return;
|
|
@@ -11550,7 +11559,7 @@ var SearchableSelectInternal = ({
|
|
|
11550
11559
|
window.cancelAnimationFrame(frameId);
|
|
11551
11560
|
};
|
|
11552
11561
|
}, [isBlocked, open, setSelectOpen]);
|
|
11553
|
-
|
|
11562
|
+
React42.useEffect(() => {
|
|
11554
11563
|
if (!open) {
|
|
11555
11564
|
setHighlightedIndex(-1);
|
|
11556
11565
|
return;
|
|
@@ -11645,7 +11654,7 @@ var SearchableSelectInternal = ({
|
|
|
11645
11654
|
onOptionHover: setHighlightedIndex
|
|
11646
11655
|
}
|
|
11647
11656
|
);
|
|
11648
|
-
|
|
11657
|
+
React42.useImperativeHandle(ref, () => triggerRef.current, []);
|
|
11649
11658
|
return /* @__PURE__ */ jsxs87(
|
|
11650
11659
|
"div",
|
|
11651
11660
|
{
|
|
@@ -11731,7 +11740,7 @@ var SearchableSelectInternal = ({
|
|
|
11731
11740
|
}
|
|
11732
11741
|
);
|
|
11733
11742
|
};
|
|
11734
|
-
var SearchableSelect =
|
|
11743
|
+
var SearchableSelect = React42.forwardRef(
|
|
11735
11744
|
SearchableSelectInternal
|
|
11736
11745
|
);
|
|
11737
11746
|
function SearchableSelectContent({
|
|
@@ -11758,9 +11767,9 @@ function SearchableSelectContent({
|
|
|
11758
11767
|
onOptionClick,
|
|
11759
11768
|
onOptionHover
|
|
11760
11769
|
}) {
|
|
11761
|
-
const listRef =
|
|
11762
|
-
const lastLoadMoreOptionsLengthRef =
|
|
11763
|
-
const previousHighlightedIndexRef =
|
|
11770
|
+
const listRef = React42.useRef(null);
|
|
11771
|
+
const lastLoadMoreOptionsLengthRef = React42.useRef(null);
|
|
11772
|
+
const previousHighlightedIndexRef = React42.useRef(highlightedIndex);
|
|
11764
11773
|
const rowCount = options.length + (loading && options.length > 0 ? 1 : 0);
|
|
11765
11774
|
const virtualizer = useVirtualizer({
|
|
11766
11775
|
count: rowCount,
|
|
@@ -11771,7 +11780,7 @@ function SearchableSelectContent({
|
|
|
11771
11780
|
const virtualItems = virtualizer.getVirtualItems();
|
|
11772
11781
|
const emptyMessage = noOptionsMessage?.() ?? "No matches found";
|
|
11773
11782
|
const loadingText = loadingMessage?.() ?? "Loading...";
|
|
11774
|
-
|
|
11783
|
+
React42.useEffect(() => {
|
|
11775
11784
|
const lastItem = virtualItems[virtualItems.length - 1];
|
|
11776
11785
|
const shouldLoadMore = !!lastItem && hasNextPage && !loading && lastItem.index >= options.length - LOAD_MORE_THRESHOLD;
|
|
11777
11786
|
if (shouldLoadMore && lastLoadMoreOptionsLengthRef.current !== options.length) {
|
|
@@ -11779,7 +11788,7 @@ function SearchableSelectContent({
|
|
|
11779
11788
|
onLoadMore?.();
|
|
11780
11789
|
}
|
|
11781
11790
|
}, [hasNextPage, loading, onLoadMore, options.length, virtualItems]);
|
|
11782
|
-
|
|
11791
|
+
React42.useEffect(() => {
|
|
11783
11792
|
const hasHighlightedIndexChanged = previousHighlightedIndexRef.current !== highlightedIndex;
|
|
11784
11793
|
previousHighlightedIndexRef.current = highlightedIndex;
|
|
11785
11794
|
if (highlightedIndex >= 0 && hasHighlightedIndexChanged) {
|
|
@@ -12152,6 +12161,7 @@ export {
|
|
|
12152
12161
|
inputVariants,
|
|
12153
12162
|
isNumeric,
|
|
12154
12163
|
labelVariants,
|
|
12164
|
+
scrollToTop,
|
|
12155
12165
|
sectionTagVariants,
|
|
12156
12166
|
switchThumbVariants,
|
|
12157
12167
|
switchVariants,
|