@chekinapp/ui 0.0.131 → 0.0.133
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 +437 -359
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +350 -272
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -8184,7 +8184,6 @@ var SectionTagColors = /* @__PURE__ */ ((SectionTagColors2) => {
|
|
|
8184
8184
|
|
|
8185
8185
|
// src/section/Section.tsx
|
|
8186
8186
|
var import_react68 = require("react");
|
|
8187
|
-
var import_lucide_react29 = require("lucide-react");
|
|
8188
8187
|
var import_react_i18next15 = require("react-i18next");
|
|
8189
8188
|
|
|
8190
8189
|
// src/section/constants.ts
|
|
@@ -8197,16 +8196,17 @@ var SubSectionSize = /* @__PURE__ */ ((SubSectionSize2) => {
|
|
|
8197
8196
|
// src/section/Section.tsx
|
|
8198
8197
|
var import_jsx_runtime100 = require("react/jsx-runtime");
|
|
8199
8198
|
function TooltipInfo({ content, className }) {
|
|
8200
|
-
return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
8201
|
-
|
|
8199
|
+
return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
8200
|
+
HelpTooltip,
|
|
8202
8201
|
{
|
|
8203
|
-
|
|
8204
|
-
|
|
8202
|
+
side: "right",
|
|
8203
|
+
content,
|
|
8204
|
+
contentClassName: "max-w-64",
|
|
8205
|
+
className: cn("text-[var(--chekin-color-gray-1)]", className),
|
|
8205
8206
|
onClick: (event) => event.stopPropagation(),
|
|
8206
|
-
|
|
8207
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react29.CircleHelp, { className: "h-4 w-4" })
|
|
8207
|
+
label: typeof content === "string" ? content : "More information"
|
|
8208
8208
|
}
|
|
8209
|
-
)
|
|
8209
|
+
);
|
|
8210
8210
|
}
|
|
8211
8211
|
var Section = (0, import_react68.forwardRef)(
|
|
8212
8212
|
({
|
|
@@ -8371,7 +8371,7 @@ var SectionGroup = Object.assign(SectionGroupRoot, {
|
|
|
8371
8371
|
|
|
8372
8372
|
// src/sheet/Sheet.tsx
|
|
8373
8373
|
var SheetPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
8374
|
-
var
|
|
8374
|
+
var import_lucide_react29 = require("lucide-react");
|
|
8375
8375
|
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
8376
8376
|
function Sheet({ ...props }) {
|
|
8377
8377
|
return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
|
|
@@ -8425,7 +8425,7 @@ function SheetContent({
|
|
|
8425
8425
|
children: [
|
|
8426
8426
|
children,
|
|
8427
8427
|
/* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-[var(--chekin-radius-small)] opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:shadow-[var(--chekin-shadow-focus)] disabled:pointer-events-none", children: [
|
|
8428
|
-
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
|
|
8428
|
+
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react29.XIcon, { className: "size-4" }),
|
|
8429
8429
|
/* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { className: "sr-only", children: "Close" })
|
|
8430
8430
|
] })
|
|
8431
8431
|
]
|
|
@@ -8484,7 +8484,7 @@ function SheetDescription({
|
|
|
8484
8484
|
var React28 = __toESM(require("react"), 1);
|
|
8485
8485
|
var import_react_slot4 = require("@radix-ui/react-slot");
|
|
8486
8486
|
var import_class_variance_authority13 = require("class-variance-authority");
|
|
8487
|
-
var
|
|
8487
|
+
var import_lucide_react30 = require("lucide-react");
|
|
8488
8488
|
|
|
8489
8489
|
// src/skeleton/Skeleton.tsx
|
|
8490
8490
|
var import_jsx_runtime104 = require("react/jsx-runtime");
|
|
@@ -8757,7 +8757,7 @@ var SidebarTrigger = React28.forwardRef(({ className, onClick, icon, ...props },
|
|
|
8757
8757
|
},
|
|
8758
8758
|
...props,
|
|
8759
8759
|
children: [
|
|
8760
|
-
icon || (isMobile3 ? openMobile : open) ? icon || /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
|
|
8760
|
+
icon || (isMobile3 ? openMobile : open) ? icon || /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_lucide_react30.ArrowLeftFromLineIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_lucide_react30.ArrowRightFromLineIcon, {}),
|
|
8761
8761
|
/* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
8762
8762
|
]
|
|
8763
8763
|
}
|
|
@@ -9365,7 +9365,7 @@ var React35 = __toESM(require("react"), 1);
|
|
|
9365
9365
|
|
|
9366
9366
|
// src/carousel/CarouselControls.tsx
|
|
9367
9367
|
var React30 = __toESM(require("react"), 1);
|
|
9368
|
-
var
|
|
9368
|
+
var import_lucide_react31 = require("lucide-react");
|
|
9369
9369
|
|
|
9370
9370
|
// src/carousel/CarouselContext.tsx
|
|
9371
9371
|
var React29 = __toESM(require("react"), 1);
|
|
@@ -9404,7 +9404,7 @@ var CarouselPrevious = React30.forwardRef(
|
|
|
9404
9404
|
goToPrevious();
|
|
9405
9405
|
},
|
|
9406
9406
|
...props,
|
|
9407
|
-
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
|
|
9407
|
+
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(import_lucide_react31.ChevronLeft, { className: "size-4" })
|
|
9408
9408
|
}
|
|
9409
9409
|
);
|
|
9410
9410
|
}
|
|
@@ -9434,7 +9434,7 @@ var CarouselNext = React30.forwardRef(
|
|
|
9434
9434
|
goToNext();
|
|
9435
9435
|
},
|
|
9436
9436
|
...props,
|
|
9437
|
-
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
|
|
9437
|
+
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(import_lucide_react31.ChevronRight, { className: "size-4" })
|
|
9438
9438
|
}
|
|
9439
9439
|
);
|
|
9440
9440
|
}
|
|
@@ -9611,7 +9611,7 @@ Slider.displayName = SliderPrimitive.Root.displayName;
|
|
|
9611
9611
|
|
|
9612
9612
|
// src/small-grid-single-item/SmallGridSingleItem.tsx
|
|
9613
9613
|
var import_react74 = require("react");
|
|
9614
|
-
var
|
|
9614
|
+
var import_lucide_react32 = require("lucide-react");
|
|
9615
9615
|
var import_react_i18next17 = require("react-i18next");
|
|
9616
9616
|
var import_jsx_runtime115 = require("react/jsx-runtime");
|
|
9617
9617
|
var SmallGridSingleItem = (0, import_react74.memo)(
|
|
@@ -9662,7 +9662,7 @@ var SmallGridSingleItem = (0, import_react74.memo)(
|
|
|
9662
9662
|
className: "size-8",
|
|
9663
9663
|
size: "icon",
|
|
9664
9664
|
variant: "outline",
|
|
9665
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
9665
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react32.Trash2, { className: "h-5 w-5 text-[var(--chekin-color-brand-red)]" })
|
|
9666
9666
|
}
|
|
9667
9667
|
),
|
|
9668
9668
|
onEdit && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
@@ -9673,7 +9673,7 @@ var SmallGridSingleItem = (0, import_react74.memo)(
|
|
|
9673
9673
|
disabled,
|
|
9674
9674
|
onClick: onEdit,
|
|
9675
9675
|
variant: "outline",
|
|
9676
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
9676
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_lucide_react32.Pencil, { className: "h-5 w-5 text-[var(--chekin-color-brand-blue)]" })
|
|
9677
9677
|
}
|
|
9678
9678
|
)
|
|
9679
9679
|
] })
|
|
@@ -9698,7 +9698,7 @@ SmallGridSingleItem.displayName = "SmallGridSingleItem";
|
|
|
9698
9698
|
|
|
9699
9699
|
// src/sorting-action/SortingAction.tsx
|
|
9700
9700
|
var import_react_i18next18 = require("react-i18next");
|
|
9701
|
-
var
|
|
9701
|
+
var import_lucide_react33 = require("lucide-react");
|
|
9702
9702
|
var import_jsx_runtime116 = require("react/jsx-runtime");
|
|
9703
9703
|
function SortingAction({
|
|
9704
9704
|
value,
|
|
@@ -9719,7 +9719,7 @@ function SortingAction({
|
|
|
9719
9719
|
className
|
|
9720
9720
|
),
|
|
9721
9721
|
"aria-label": "Open sorting menu",
|
|
9722
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
9722
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react33.ArrowDownUpIcon, { className: "h-4 w-4 text-[var(--chekin-color-gray-1)] group-hover/trigger:text-[var(--chekin-color-brand-navy)]" })
|
|
9723
9723
|
}
|
|
9724
9724
|
) }),
|
|
9725
9725
|
/* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(DropdownMenuContent, { className: "w-full max-w-[256px]", align: "start", children: [
|
|
@@ -9730,7 +9730,7 @@ function SortingAction({
|
|
|
9730
9730
|
className: cn(value === "asc" && "text-[var(--chekin-color-brand-blue)]"),
|
|
9731
9731
|
onClick: () => onSortChange?.("asc"),
|
|
9732
9732
|
children: [
|
|
9733
|
-
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
9733
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react33.ArrowUp, { className: "h-4 w-4" }),
|
|
9734
9734
|
variant === "by_text" ? t("sort_a_z") : t("sort_in_asc")
|
|
9735
9735
|
]
|
|
9736
9736
|
}
|
|
@@ -9742,13 +9742,13 @@ function SortingAction({
|
|
|
9742
9742
|
className: cn(value === "desc" && "text-[var(--chekin-color-brand-blue)]"),
|
|
9743
9743
|
onClick: () => onSortChange?.("desc"),
|
|
9744
9744
|
children: [
|
|
9745
|
-
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
9745
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react33.ArrowDown, { className: "h-4 w-4" }),
|
|
9746
9746
|
variant === "by_text" ? t("sort_z_a") : t("sort_in_desc")
|
|
9747
9747
|
]
|
|
9748
9748
|
}
|
|
9749
9749
|
),
|
|
9750
9750
|
value && /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(DropdownMenuItem, { onClick: () => onSortChange?.(null), children: [
|
|
9751
|
-
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
9751
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react33.Minus, { className: "h-4 w-4" }),
|
|
9752
9752
|
t("clear_sorting")
|
|
9753
9753
|
] })
|
|
9754
9754
|
] })
|
|
@@ -9758,7 +9758,7 @@ function SortingAction({
|
|
|
9758
9758
|
// src/status-button/StatusButton.tsx
|
|
9759
9759
|
var import_react75 = require("react");
|
|
9760
9760
|
var import_react_i18next19 = require("react-i18next");
|
|
9761
|
-
var
|
|
9761
|
+
var import_lucide_react34 = require("lucide-react");
|
|
9762
9762
|
var import_jsx_runtime117 = require("react/jsx-runtime");
|
|
9763
9763
|
function StatusButton({
|
|
9764
9764
|
hidden,
|
|
@@ -9777,7 +9777,7 @@ function StatusButton({
|
|
|
9777
9777
|
const configMap = (0, import_react75.useMemo)(() => {
|
|
9778
9778
|
const defaultLoadingConfig = {
|
|
9779
9779
|
text: loadingText ?? `${t("saving")}...`,
|
|
9780
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
9780
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react34.Loader2, { className: "h-4 w-4 animate-spin" }),
|
|
9781
9781
|
variant,
|
|
9782
9782
|
isLoading: true
|
|
9783
9783
|
};
|
|
@@ -9787,13 +9787,13 @@ function StatusButton({
|
|
|
9787
9787
|
validating: { ...defaultLoadingConfig, text: t("validating") },
|
|
9788
9788
|
error: {
|
|
9789
9789
|
text: t("error"),
|
|
9790
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
9790
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react34.AlertCircle, { className: "h-4 w-4" }),
|
|
9791
9791
|
variant: "destructive",
|
|
9792
9792
|
isLoading: false
|
|
9793
9793
|
},
|
|
9794
9794
|
success: {
|
|
9795
9795
|
text: successText ?? t("saved_exclamation"),
|
|
9796
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
9796
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react34.CheckCircle, { className: "h-4 w-4" }),
|
|
9797
9797
|
variant,
|
|
9798
9798
|
isLoading: false
|
|
9799
9799
|
},
|
|
@@ -9832,12 +9832,12 @@ function StatusButton({
|
|
|
9832
9832
|
}
|
|
9833
9833
|
|
|
9834
9834
|
// src/status-box/StatusBox.tsx
|
|
9835
|
-
var
|
|
9835
|
+
var import_lucide_react35 = require("lucide-react");
|
|
9836
9836
|
var import_jsx_runtime118 = require("react/jsx-runtime");
|
|
9837
9837
|
function StatusBox({ status, title, text }) {
|
|
9838
9838
|
if (status === "success") {
|
|
9839
9839
|
return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center gap-3 rounded-lg border border-green-100 bg-green-50 p-4", children: [
|
|
9840
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "rounded-full bg-green-100 p-1", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
9840
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "rounded-full bg-green-100 p-1", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react35.CheckIcon, { className: "h-5 w-5 text-green-600" }) }),
|
|
9841
9841
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { children: [
|
|
9842
9842
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("p", { className: "font-semibold text-green-800", children: title }),
|
|
9843
9843
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("p", { className: "text-sm text-green-700", children: text })
|
|
@@ -9846,7 +9846,7 @@ function StatusBox({ status, title, text }) {
|
|
|
9846
9846
|
}
|
|
9847
9847
|
if (status === "failed") {
|
|
9848
9848
|
return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center gap-3 rounded-lg border border-red-100 bg-red-50 p-4", children: [
|
|
9849
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "rounded-full bg-red-100 p-1", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
9849
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "rounded-full bg-red-100 p-1", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react35.XIcon, { className: "h-5 w-5 text-red-600" }) }),
|
|
9850
9850
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { children: [
|
|
9851
9851
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("p", { className: "font-semibold text-red-800", children: title }),
|
|
9852
9852
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("p", { className: "text-sm text-red-700", children: text })
|
|
@@ -9854,7 +9854,7 @@ function StatusBox({ status, title, text }) {
|
|
|
9854
9854
|
] });
|
|
9855
9855
|
}
|
|
9856
9856
|
return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { className: "flex items-center gap-3 rounded-lg border border-amber-100 bg-amber-50 p-4", children: [
|
|
9857
|
-
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "rounded-full bg-amber-100 p-1", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
|
|
9857
|
+
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("div", { className: "rounded-full bg-amber-100 p-1", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_lucide_react35.AlertTriangleIcon, { className: "h-5 w-5 text-amber-600" }) }),
|
|
9858
9858
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("div", { children: [
|
|
9859
9859
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("p", { className: "font-semibold text-amber-800", children: title }),
|
|
9860
9860
|
/* @__PURE__ */ (0, import_jsx_runtime118.jsx)("p", { className: "text-sm text-amber-700", children: text })
|
|
@@ -10114,7 +10114,7 @@ function TabbedSection({
|
|
|
10114
10114
|
}
|
|
10115
10115
|
|
|
10116
10116
|
// src/table-filter/TableFilter.tsx
|
|
10117
|
-
var
|
|
10117
|
+
var import_lucide_react36 = require("lucide-react");
|
|
10118
10118
|
var import_jsx_runtime124 = require("react/jsx-runtime");
|
|
10119
10119
|
function TableFilter({ onRemove, onClick, children, className }) {
|
|
10120
10120
|
return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
|
|
@@ -10130,7 +10130,7 @@ function TableFilter({ onRemove, onClick, children, className }) {
|
|
|
10130
10130
|
children: [
|
|
10131
10131
|
children,
|
|
10132
10132
|
/* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
|
|
10133
|
-
|
|
10133
|
+
import_lucide_react36.SquareX,
|
|
10134
10134
|
{
|
|
10135
10135
|
onClick: onRemove,
|
|
10136
10136
|
size: 15,
|
|
@@ -10688,7 +10688,7 @@ function ThreeDotsLoader({
|
|
|
10688
10688
|
}
|
|
10689
10689
|
|
|
10690
10690
|
// src/uploaded-files-list/UploadedFilesList.tsx
|
|
10691
|
-
var
|
|
10691
|
+
var import_lucide_react37 = require("lucide-react");
|
|
10692
10692
|
var import_jsx_runtime132 = require("react/jsx-runtime");
|
|
10693
10693
|
function UploadedFilesList({
|
|
10694
10694
|
files,
|
|
@@ -10711,7 +10711,7 @@ function UploadedFilesList({
|
|
|
10711
10711
|
onClick: () => onRemoveFile(file.name),
|
|
10712
10712
|
className: "flex h-[18px] w-[18px] shrink-0 cursor-pointer items-center justify-center rounded bg-[#6b6b95] transition-all hover:shadow-md active:opacity-95",
|
|
10713
10713
|
"aria-label": `Remove ${file.name}`,
|
|
10714
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
|
|
10714
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_lucide_react37.X, { className: "h-3.5 w-3.5 text-white", strokeWidth: 3 })
|
|
10715
10715
|
}
|
|
10716
10716
|
)
|
|
10717
10717
|
]
|
|
@@ -10816,7 +10816,7 @@ function VerticalTabs({
|
|
|
10816
10816
|
}
|
|
10817
10817
|
|
|
10818
10818
|
// src/video-modal/VideoModal.tsx
|
|
10819
|
-
var
|
|
10819
|
+
var import_lucide_react38 = require("lucide-react");
|
|
10820
10820
|
var React40 = __toESM(require("react"), 1);
|
|
10821
10821
|
var import_jsx_runtime134 = require("react/jsx-runtime");
|
|
10822
10822
|
function VideoModal({
|
|
@@ -10870,7 +10870,7 @@ function VideoModal({
|
|
|
10870
10870
|
"max-sm:right-2 max-sm:top-2"
|
|
10871
10871
|
),
|
|
10872
10872
|
"aria-label": "Close",
|
|
10873
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
|
|
10873
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_lucide_react38.X, { className: "h-5 w-5", "aria-hidden": true })
|
|
10874
10874
|
}
|
|
10875
10875
|
),
|
|
10876
10876
|
/* @__PURE__ */ (0, import_jsx_runtime134.jsx)("div", { className: "relative w-full overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
|
|
@@ -10894,7 +10894,7 @@ function VideoModal({
|
|
|
10894
10894
|
// src/video-player/VideoPlayer.tsx
|
|
10895
10895
|
var import_react82 = require("react");
|
|
10896
10896
|
var import_react_i18next21 = require("react-i18next");
|
|
10897
|
-
var
|
|
10897
|
+
var import_lucide_react39 = require("lucide-react");
|
|
10898
10898
|
var import_jsx_runtime135 = require("react/jsx-runtime");
|
|
10899
10899
|
function VideoPlayer({
|
|
10900
10900
|
src,
|
|
@@ -11061,12 +11061,12 @@ function VideoPlayer({
|
|
|
11061
11061
|
onClick: onClose,
|
|
11062
11062
|
className: "absolute right-4 top-4 z-10 rounded-full text-white transition-all duration-300 hover:scale-110 hover:bg-white/20 active:scale-95",
|
|
11063
11063
|
"aria-label": t("close"),
|
|
11064
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
11064
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_lucide_react39.X, { className: "h-6 w-6" })
|
|
11065
11065
|
}
|
|
11066
11066
|
),
|
|
11067
11067
|
title && isFullScreenMode && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: "absolute left-4 top-4 z-10 animate-in slide-in-from-left-4 text-white delay-200 duration-500", children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("h3", { className: "text-lg font-medium drop-shadow-lg", children: title }) }),
|
|
11068
11068
|
isLoading && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: "absolute inset-0 z-20 flex items-center justify-center bg-black/50", children: /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "flex items-center gap-3 text-white", children: [
|
|
11069
|
-
/* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
11069
|
+
/* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_lucide_react39.Loader2, { className: "h-8 w-8 animate-spin" }),
|
|
11070
11070
|
/* @__PURE__ */ (0, import_jsx_runtime135.jsx)("span", { className: "text-lg font-medium", children: t("loading_video") })
|
|
11071
11071
|
] }) }),
|
|
11072
11072
|
/* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: videoContainerClasses, onClick: (event) => event.stopPropagation(), children: videoSource === "youtube" ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
@@ -11133,7 +11133,7 @@ function VideoPlayer({
|
|
|
11133
11133
|
onClick: togglePlay,
|
|
11134
11134
|
className: "h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95",
|
|
11135
11135
|
"aria-label": isPlaying ? t("pause") : t("play"),
|
|
11136
|
-
children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
11136
|
+
children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_lucide_react39.Pause, { className: "h-5 w-5" }) : /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_lucide_react39.Play, { className: "h-5 w-5" })
|
|
11137
11137
|
}
|
|
11138
11138
|
),
|
|
11139
11139
|
/* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
@@ -11144,7 +11144,7 @@ function VideoPlayer({
|
|
|
11144
11144
|
onClick: skipBackward,
|
|
11145
11145
|
className: "h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95",
|
|
11146
11146
|
"aria-label": t("skip_backward"),
|
|
11147
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
11147
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_lucide_react39.SkipBack, { className: "h-5 w-5" })
|
|
11148
11148
|
}
|
|
11149
11149
|
),
|
|
11150
11150
|
/* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
@@ -11155,7 +11155,7 @@ function VideoPlayer({
|
|
|
11155
11155
|
onClick: skipForward,
|
|
11156
11156
|
className: "h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95",
|
|
11157
11157
|
"aria-label": t("skip_forward"),
|
|
11158
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
11158
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_lucide_react39.SkipForward, { className: "h-5 w-5" })
|
|
11159
11159
|
}
|
|
11160
11160
|
),
|
|
11161
11161
|
/* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
@@ -11166,7 +11166,7 @@ function VideoPlayer({
|
|
|
11166
11166
|
onClick: toggleMute,
|
|
11167
11167
|
className: "h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95",
|
|
11168
11168
|
"aria-label": isMuted ? t("unmute") : t("mute"),
|
|
11169
|
-
children: isMuted ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
11169
|
+
children: isMuted ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_lucide_react39.VolumeX, { className: "h-5 w-5" }) : /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_lucide_react39.Volume2, { className: "h-5 w-5" })
|
|
11170
11170
|
}
|
|
11171
11171
|
),
|
|
11172
11172
|
/* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("span", { className: "text-sm font-medium text-white/90", children: [
|
|
@@ -11183,7 +11183,7 @@ function VideoPlayer({
|
|
|
11183
11183
|
onClick: toggleFullScreen,
|
|
11184
11184
|
className: "h-10 w-10 rounded-full text-white transition-all duration-200 hover:scale-110 hover:bg-white/20 active:scale-95",
|
|
11185
11185
|
"aria-label": isFullScreenMode ? t("exit_full_screen") : t("enter_full_screen"),
|
|
11186
|
-
children: isFullScreenMode ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
|
|
11186
|
+
children: isFullScreenMode ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_lucide_react39.Minimize, { className: "h-5 w-5" }) : /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_lucide_react39.Maximize, { className: "h-5 w-5" })
|
|
11187
11187
|
}
|
|
11188
11188
|
)
|
|
11189
11189
|
] })
|
|
@@ -11687,7 +11687,7 @@ var Webcam = (0, import_react84.memo)(
|
|
|
11687
11687
|
Webcam.displayName = "Webcam";
|
|
11688
11688
|
|
|
11689
11689
|
// src/mobile-webcam/MobileWebcam.tsx
|
|
11690
|
-
var
|
|
11690
|
+
var import_lucide_react40 = require("lucide-react");
|
|
11691
11691
|
var import_react86 = require("react");
|
|
11692
11692
|
var import_react_dom = require("react-dom");
|
|
11693
11693
|
var import_react_i18next24 = require("react-i18next");
|
|
@@ -11758,7 +11758,7 @@ var MobileWebcam = (0, import_react86.forwardRef)(
|
|
|
11758
11758
|
type: "button",
|
|
11759
11759
|
onClick: onBack,
|
|
11760
11760
|
className: "mobile-camera__back-btn fixed left-7 top-9 z-[7] flex border-0 bg-transparent p-0 landscape:left-[50px] landscape:top-[70px]",
|
|
11761
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
|
|
11761
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_lucide_react40.ChevronLeft, { size: 32, strokeWidth: 3, className: "text-white" })
|
|
11762
11762
|
}
|
|
11763
11763
|
),
|
|
11764
11764
|
title && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "mobile-camera__title fixed left-1/2 top-8 z-[7] -translate-x-1/2 whitespace-nowrap text-[18px] font-bold text-white landscape:top-[5px]", children: title }),
|
|
@@ -11783,7 +11783,7 @@ var MobileWebcam = (0, import_react86.forwardRef)(
|
|
|
11783
11783
|
disabled,
|
|
11784
11784
|
onClick: () => onScreenshot({ isNative: false }),
|
|
11785
11785
|
className: "mobile-camera__take-btn relative flex h-[75px] w-[75px] items-center justify-center self-center rounded-full border-0 bg-white p-[10px] shadow-[0_0_10px_#ffffff] hover:opacity-80 disabled:cursor-default disabled:opacity-60 disabled:hover:opacity-60",
|
|
11786
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
|
|
11786
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_lucide_react40.Camera, { size: 26, className: "text-[var(--primary)]" })
|
|
11787
11787
|
}
|
|
11788
11788
|
),
|
|
11789
11789
|
/* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
|
|
@@ -12221,7 +12221,7 @@ function ResponsiveDropdown({
|
|
|
12221
12221
|
|
|
12222
12222
|
// src/dashboard/input/Input.tsx
|
|
12223
12223
|
var React44 = __toESM(require("react"), 1);
|
|
12224
|
-
var
|
|
12224
|
+
var import_lucide_react41 = require("lucide-react");
|
|
12225
12225
|
var import_react_i18next25 = require("react-i18next");
|
|
12226
12226
|
|
|
12227
12227
|
// src/dashboard/input/useInputValueState.ts
|
|
@@ -12514,7 +12514,11 @@ var Input = React44.forwardRef(
|
|
|
12514
12514
|
/* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(
|
|
12515
12515
|
"div",
|
|
12516
12516
|
{
|
|
12517
|
-
className: cn(
|
|
12517
|
+
className: cn(
|
|
12518
|
+
"input__content relative w-full cursor-text",
|
|
12519
|
+
readOnly && !disabled && !loading && "cursor-default",
|
|
12520
|
+
contentClassName
|
|
12521
|
+
),
|
|
12518
12522
|
children: [
|
|
12519
12523
|
/* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
|
|
12520
12524
|
Fieldset,
|
|
@@ -12569,7 +12573,8 @@ var Input = React44.forwardRef(
|
|
|
12569
12573
|
isEmpty && !isFocused ? "bg-[var(--empty-field-background)]" : "bg-transparent",
|
|
12570
12574
|
isEmpty && "text-[var(--chekin-color-gray-1)]",
|
|
12571
12575
|
inputType === "password" && "[&:not(:placeholder-shown)]:font-bold [&:not(:placeholder-shown)]:tracking-[2px]",
|
|
12572
|
-
|
|
12576
|
+
disabled && "cursor-not-allowed",
|
|
12577
|
+
readOnly && !disabled && !loading && "cursor-default",
|
|
12573
12578
|
loading && "cursor-progress",
|
|
12574
12579
|
leftIcon && "pl-10",
|
|
12575
12580
|
(showRightPaddingForReset || showRightPaddingForReveal) && "pr-10",
|
|
@@ -12588,7 +12593,7 @@ var Input = React44.forwardRef(
|
|
|
12588
12593
|
disabled,
|
|
12589
12594
|
className: "input__reset-button absolute right-0 top-0 flex h-full w-10 items-center justify-center border-0 bg-transparent p-0 text-[#9696b9] hover:opacity-80 disabled:cursor-not-allowed disabled:opacity-50",
|
|
12590
12595
|
"aria-label": t("reset"),
|
|
12591
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
|
|
12596
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(import_lucide_react41.X, { size: 14 })
|
|
12592
12597
|
}
|
|
12593
12598
|
),
|
|
12594
12599
|
isPasswordReveal && /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
|
|
@@ -12599,7 +12604,7 @@ var Input = React44.forwardRef(
|
|
|
12599
12604
|
className: "input__password-button absolute right-[14px] top-[18px] flex h-[13px] w-[21px] cursor-pointer items-center justify-center border-0 bg-transparent p-0 hover:opacity-85",
|
|
12600
12605
|
"aria-label": isPasswordRevealed ? t("hide_password") : t("show_password"),
|
|
12601
12606
|
children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
|
|
12602
|
-
|
|
12607
|
+
import_lucide_react41.Eye,
|
|
12603
12608
|
{
|
|
12604
12609
|
size: 20,
|
|
12605
12610
|
className: cn(
|
|
@@ -12621,7 +12626,7 @@ var Input = React44.forwardRef(
|
|
|
12621
12626
|
onClick: onDecrement,
|
|
12622
12627
|
className: "input__decrement-button mr-2 inline-flex h-[23px] w-8 cursor-pointer items-center justify-center rounded-[3px] border-0 bg-[var(--chekin-color-brand-blue)] p-0 text-[20px] font-bold text-white outline-none hover:opacity-90 active:opacity-100",
|
|
12623
12628
|
"aria-label": t("decrement"),
|
|
12624
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
|
|
12629
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(import_lucide_react41.Minus, { size: 16, strokeWidth: 3, "aria-hidden": true })
|
|
12625
12630
|
}
|
|
12626
12631
|
),
|
|
12627
12632
|
/* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
|
|
@@ -12631,7 +12636,7 @@ var Input = React44.forwardRef(
|
|
|
12631
12636
|
onClick: onIncrement,
|
|
12632
12637
|
className: "input__increment-button inline-flex h-[23px] w-8 cursor-pointer items-center justify-center rounded-[3px] border-0 bg-[var(--chekin-color-brand-blue)] p-0 text-[20px] font-bold text-white outline-none hover:opacity-90 active:opacity-100",
|
|
12633
12638
|
"aria-label": t("increment"),
|
|
12634
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
|
|
12639
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(import_lucide_react41.Plus, { size: 16, strokeWidth: 3, "aria-hidden": true })
|
|
12635
12640
|
}
|
|
12636
12641
|
)
|
|
12637
12642
|
] })
|
|
@@ -12835,7 +12840,7 @@ function countriesFilter(option, inputValue) {
|
|
|
12835
12840
|
}
|
|
12836
12841
|
|
|
12837
12842
|
// src/dashboard/_select-internals/slots/DefaultOption.tsx
|
|
12838
|
-
var
|
|
12843
|
+
var import_lucide_react42 = require("lucide-react");
|
|
12839
12844
|
var import_jsx_runtime146 = require("react/jsx-runtime");
|
|
12840
12845
|
function DefaultOption(props) {
|
|
12841
12846
|
const {
|
|
@@ -12882,7 +12887,7 @@ function DefaultOption(props) {
|
|
|
12882
12887
|
/* @__PURE__ */ (0, import_jsx_runtime146.jsx)("span", { className: "block min-w-0 break-words", children: labelContent }),
|
|
12883
12888
|
option.description && /* @__PURE__ */ (0, import_jsx_runtime146.jsx)("span", { className: "ml-auto shrink-0 self-center text-[12px] font-medium italic text-[var(--chekin-color-gray-1)]", children: option.description }),
|
|
12884
12889
|
isSelected && /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(
|
|
12885
|
-
|
|
12890
|
+
import_lucide_react42.Check,
|
|
12886
12891
|
{
|
|
12887
12892
|
"aria-hidden": "true",
|
|
12888
12893
|
className: cn(
|
|
@@ -13135,7 +13140,7 @@ function SelectMenuPanel({
|
|
|
13135
13140
|
}
|
|
13136
13141
|
|
|
13137
13142
|
// src/dashboard/_select-internals/SelectSearchInput.tsx
|
|
13138
|
-
var
|
|
13143
|
+
var import_lucide_react43 = require("lucide-react");
|
|
13139
13144
|
var import_jsx_runtime149 = require("react/jsx-runtime");
|
|
13140
13145
|
function SelectSearchInput({
|
|
13141
13146
|
inputRef,
|
|
@@ -13148,7 +13153,7 @@ function SelectSearchInput({
|
|
|
13148
13153
|
}) {
|
|
13149
13154
|
return /* @__PURE__ */ (0, import_jsx_runtime149.jsx)("div", { className: "border-b border-[var(--chekin-color-gray-3)] bg-white p-2", children: /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)("div", { className: "relative", children: [
|
|
13150
13155
|
/* @__PURE__ */ (0, import_jsx_runtime149.jsx)(
|
|
13151
|
-
|
|
13156
|
+
import_lucide_react43.Search,
|
|
13152
13157
|
{
|
|
13153
13158
|
"aria-hidden": "true",
|
|
13154
13159
|
className: "pointer-events-none absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--chekin-color-gray-2)]"
|
|
@@ -13173,7 +13178,7 @@ function SelectSearchInput({
|
|
|
13173
13178
|
}
|
|
13174
13179
|
|
|
13175
13180
|
// src/dashboard/_select-internals/SelectTrigger.tsx
|
|
13176
|
-
var
|
|
13181
|
+
var import_lucide_react44 = require("lucide-react");
|
|
13177
13182
|
var import_jsx_runtime150 = require("react/jsx-runtime");
|
|
13178
13183
|
function SelectTrigger({
|
|
13179
13184
|
triggerRef,
|
|
@@ -13232,7 +13237,7 @@ function SelectTrigger({
|
|
|
13232
13237
|
leftIcon && /* @__PURE__ */ (0, import_jsx_runtime150.jsx)("span", { className: "pointer-events-none absolute left-0 top-0 flex h-full max-w-10 items-center justify-center text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ (0, import_jsx_runtime150.jsx)("span", { className: "flex h-full w-10 items-center justify-center", children: leftIcon }) }),
|
|
13233
13238
|
/* @__PURE__ */ (0, import_jsx_runtime150.jsx)("span", { id: valueId, className: "block min-w-0 flex-1 truncate text-left", children: hasValue ? valueLabel : showPlaceholderWhenIdle || isOpen ? placeholder : null }),
|
|
13234
13239
|
/* @__PURE__ */ (0, import_jsx_runtime150.jsx)("span", { className: "flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: !hideIndicator && /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(
|
|
13235
|
-
|
|
13240
|
+
import_lucide_react44.ChevronDown,
|
|
13236
13241
|
{
|
|
13237
13242
|
size: 16,
|
|
13238
13243
|
className: cn(
|
|
@@ -13247,7 +13252,7 @@ function SelectTrigger({
|
|
|
13247
13252
|
}
|
|
13248
13253
|
|
|
13249
13254
|
// src/dashboard/_select-internals/ComboboxTrigger.tsx
|
|
13250
|
-
var
|
|
13255
|
+
var import_lucide_react45 = require("lucide-react");
|
|
13251
13256
|
var import_react_i18next29 = require("react-i18next");
|
|
13252
13257
|
var import_jsx_runtime151 = require("react/jsx-runtime");
|
|
13253
13258
|
function ComboboxTrigger({
|
|
@@ -13387,7 +13392,7 @@ function ComboboxTrigger({
|
|
|
13387
13392
|
onClick: onClear,
|
|
13388
13393
|
className: "flex h-5 w-5 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] hover:shadow-[0_3px_3px_#0f477734]",
|
|
13389
13394
|
"aria-label": clearLabel,
|
|
13390
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
|
|
13395
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(import_lucide_react45.SquareX, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
|
|
13391
13396
|
}
|
|
13392
13397
|
),
|
|
13393
13398
|
!hideIndicator && /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
|
|
@@ -13586,7 +13591,21 @@ function useSelectState(params) {
|
|
|
13586
13591
|
);
|
|
13587
13592
|
return !existsInOptions && !existsInSelected;
|
|
13588
13593
|
}, [isCreatable, trimmedInput, isValidNewOption, options, selectedOptions]);
|
|
13594
|
+
const sssDebugHighlightCount = React48.useRef(0);
|
|
13589
13595
|
React48.useEffect(() => {
|
|
13596
|
+
sssDebugHighlightCount.current += 1;
|
|
13597
|
+
console.log(
|
|
13598
|
+
`[SC-debug] highlight effect run #${sssDebugHighlightCount.current}`,
|
|
13599
|
+
{
|
|
13600
|
+
isOpen,
|
|
13601
|
+
filteredOptionsLength: filteredOptions.length,
|
|
13602
|
+
isOptionDisabledStable: typeof isOptionDisabled
|
|
13603
|
+
}
|
|
13604
|
+
);
|
|
13605
|
+
if (sssDebugHighlightCount.current === 30) {
|
|
13606
|
+
console.warn("[SC-debug] highlight effect ran 30x \u2014 opening debugger");
|
|
13607
|
+
debugger;
|
|
13608
|
+
}
|
|
13590
13609
|
if (!isOpen || filteredOptions.length === 0) {
|
|
13591
13610
|
setHighlightedIndex(-1);
|
|
13592
13611
|
return;
|
|
@@ -13614,6 +13633,11 @@ function useSelectState(params) {
|
|
|
13614
13633
|
);
|
|
13615
13634
|
const selectOption = React48.useCallback(
|
|
13616
13635
|
(option) => {
|
|
13636
|
+
console.log("[SC-debug] selectOption called", {
|
|
13637
|
+
value: option.value,
|
|
13638
|
+
isMulti,
|
|
13639
|
+
currentSelectedCount: selectedOptions.length
|
|
13640
|
+
});
|
|
13617
13641
|
if (!isOptionEnabled(option, isOptionDisabled)) return;
|
|
13618
13642
|
if (isMulti) {
|
|
13619
13643
|
const exists = isValueSelected(option);
|
|
@@ -13877,7 +13901,7 @@ function useSelectState(params) {
|
|
|
13877
13901
|
}
|
|
13878
13902
|
|
|
13879
13903
|
// src/dashboard/_select-internals/slots/DefaultMultiValueChip.tsx
|
|
13880
|
-
var
|
|
13904
|
+
var import_lucide_react46 = require("lucide-react");
|
|
13881
13905
|
var import_react_i18next30 = require("react-i18next");
|
|
13882
13906
|
var import_jsx_runtime152 = require("react/jsx-runtime");
|
|
13883
13907
|
function DefaultMultiValueChip({
|
|
@@ -13899,7 +13923,7 @@ function DefaultMultiValueChip({
|
|
|
13899
13923
|
},
|
|
13900
13924
|
className: "flex h-4 w-4 items-center justify-center rounded-sm border-0 bg-transparent p-0 text-[var(--chekin-color-gray-1)] outline-none transition-colors hover:bg-white/70 hover:text-[var(--chekin-color-brand-navy)] focus-visible:ring-2 focus-visible:ring-[var(--chekin-color-brand-blue)]/30",
|
|
13901
13925
|
"aria-label": t("remove_item", { label: labelText }),
|
|
13902
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(
|
|
13926
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_lucide_react46.X, { size: 12, strokeWidth: 2.5 })
|
|
13903
13927
|
}
|
|
13904
13928
|
)
|
|
13905
13929
|
] });
|
|
@@ -13999,7 +14023,7 @@ function DefaultControl(props) {
|
|
|
13999
14023
|
}
|
|
14000
14024
|
|
|
14001
14025
|
// src/dashboard/_select-internals/slots/StaticControl.tsx
|
|
14002
|
-
var
|
|
14026
|
+
var import_lucide_react47 = require("lucide-react");
|
|
14003
14027
|
var import_jsx_runtime154 = require("react/jsx-runtime");
|
|
14004
14028
|
function StaticControl(props) {
|
|
14005
14029
|
const {
|
|
@@ -14062,7 +14086,7 @@ function StaticControl(props) {
|
|
|
14062
14086
|
onClick: onClear,
|
|
14063
14087
|
className: "absolute right-9 top-1/2 flex h-5 w-5 -translate-y-1/2 items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] hover:shadow-[0_3px_3px_#0f477734]",
|
|
14064
14088
|
"aria-label": clearLabel,
|
|
14065
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
|
|
14089
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(import_lucide_react47.SquareX, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
|
|
14066
14090
|
}
|
|
14067
14091
|
)
|
|
14068
14092
|
] });
|
|
@@ -15073,7 +15097,7 @@ var InfiniteScrollMultiSelect = React57.forwardRef(function InfiniteScrollMultiS
|
|
|
15073
15097
|
});
|
|
15074
15098
|
|
|
15075
15099
|
// src/dashboard/select-checkboxes/SelectCheckboxes.tsx
|
|
15076
|
-
var
|
|
15100
|
+
var React59 = __toESM(require("react"), 1);
|
|
15077
15101
|
var import_react_i18next36 = require("react-i18next");
|
|
15078
15102
|
|
|
15079
15103
|
// src/dashboard/select-checkboxes/SelectCheckboxOption.tsx
|
|
@@ -15131,12 +15155,22 @@ function SelectCheckboxOption(props) {
|
|
|
15131
15155
|
}
|
|
15132
15156
|
|
|
15133
15157
|
// src/dashboard/select-checkboxes/CountTrigger.tsx
|
|
15134
|
-
var
|
|
15158
|
+
var React58 = __toESM(require("react"), 1);
|
|
15159
|
+
var import_lucide_react48 = require("lucide-react");
|
|
15135
15160
|
var import_react_i18next35 = require("react-i18next");
|
|
15136
15161
|
var import_jsx_runtime166 = require("react/jsx-runtime");
|
|
15137
15162
|
function createCountTrigger(opts) {
|
|
15138
|
-
const {
|
|
15163
|
+
const { getValueText, getTotalCount } = opts;
|
|
15139
15164
|
function CountTrigger(props) {
|
|
15165
|
+
const ctDebugRenderCount = React58.useRef(0);
|
|
15166
|
+
ctDebugRenderCount.current += 1;
|
|
15167
|
+
React58.useEffect(() => {
|
|
15168
|
+
console.log("[SC-debug] CountTrigger MOUNTED");
|
|
15169
|
+
return () => {
|
|
15170
|
+
console.log("[SC-debug] CountTrigger UNMOUNTED");
|
|
15171
|
+
};
|
|
15172
|
+
}, []);
|
|
15173
|
+
console.log(`[SC-debug] CountTrigger render #${ctDebugRenderCount.current}`);
|
|
15140
15174
|
const { t } = (0, import_react_i18next35.useTranslation)();
|
|
15141
15175
|
const {
|
|
15142
15176
|
triggerId,
|
|
@@ -15156,6 +15190,8 @@ function createCountTrigger(opts) {
|
|
|
15156
15190
|
onTriggerFocus,
|
|
15157
15191
|
leftIcon
|
|
15158
15192
|
} = props;
|
|
15193
|
+
const valueText = getValueText();
|
|
15194
|
+
const totalCount = getTotalCount();
|
|
15159
15195
|
const count = selectedOptions.length;
|
|
15160
15196
|
const total = totalCount ?? count;
|
|
15161
15197
|
const computedText = typeof valueText === "function" ? valueText(count, total) : valueText ?? (count > 0 ? t("n_selected", { count, defaultValue: `${count} selected` }) : "");
|
|
@@ -15187,7 +15223,7 @@ function createCountTrigger(opts) {
|
|
|
15187
15223
|
leftIcon && /* @__PURE__ */ (0, import_jsx_runtime166.jsx)("span", { className: "pointer-events-none absolute left-0 top-0 flex h-full max-w-10 items-center justify-center text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ (0, import_jsx_runtime166.jsx)("span", { className: "flex h-full w-10 items-center justify-center", children: leftIcon }) }),
|
|
15188
15224
|
/* @__PURE__ */ (0, import_jsx_runtime166.jsx)("span", { id: valueId, className: "block min-w-0 flex-1 truncate text-left", children: display }),
|
|
15189
15225
|
/* @__PURE__ */ (0, import_jsx_runtime166.jsx)("span", { className: "pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ (0, import_jsx_runtime166.jsx)(
|
|
15190
|
-
|
|
15226
|
+
import_lucide_react48.ChevronDown,
|
|
15191
15227
|
{
|
|
15192
15228
|
size: 16,
|
|
15193
15229
|
className: cn(
|
|
@@ -15266,25 +15302,62 @@ function SelectCheckboxesInternal(props, ref) {
|
|
|
15266
15302
|
const isPaginated = hasPaginationProps(
|
|
15267
15303
|
paginationAndRest
|
|
15268
15304
|
);
|
|
15269
|
-
const
|
|
15305
|
+
const scDebugRenderCount = React59.useRef(0);
|
|
15306
|
+
const scDebugPrevPropsRef = React59.useRef({});
|
|
15307
|
+
scDebugRenderCount.current += 1;
|
|
15308
|
+
{
|
|
15309
|
+
const current = {
|
|
15310
|
+
value,
|
|
15311
|
+
defaultValue,
|
|
15312
|
+
onChange,
|
|
15313
|
+
trigger,
|
|
15314
|
+
userComponents,
|
|
15315
|
+
valueText,
|
|
15316
|
+
filterOption,
|
|
15317
|
+
rawOptions,
|
|
15318
|
+
onSearchChange
|
|
15319
|
+
};
|
|
15320
|
+
const prev = scDebugPrevPropsRef.current;
|
|
15321
|
+
const changed = [];
|
|
15322
|
+
for (const key of Object.keys(current)) {
|
|
15323
|
+
if (prev[key] !== current[key]) changed.push(key);
|
|
15324
|
+
}
|
|
15325
|
+
console.log(
|
|
15326
|
+
`[SC-debug] SelectCheckboxes render #${scDebugRenderCount.current}`,
|
|
15327
|
+
{ changed, isPaginated, isControlled: value !== void 0 }
|
|
15328
|
+
);
|
|
15329
|
+
scDebugPrevPropsRef.current = current;
|
|
15330
|
+
if (scDebugRenderCount.current === 30) {
|
|
15331
|
+
console.warn(
|
|
15332
|
+
"[SC-debug] hit 30 renders of SelectCheckboxes \u2014 opening debugger"
|
|
15333
|
+
);
|
|
15334
|
+
debugger;
|
|
15335
|
+
}
|
|
15336
|
+
}
|
|
15337
|
+
const [inputValue, setInputValue] = React59.useState("");
|
|
15270
15338
|
const isControlled = value !== void 0;
|
|
15271
|
-
const [internalValue, setInternalValue] =
|
|
15339
|
+
const [internalValue, setInternalValue] = React59.useState(
|
|
15272
15340
|
() => defaultValue ?? []
|
|
15273
15341
|
);
|
|
15274
15342
|
const currentValue = isControlled ? value : internalValue;
|
|
15275
|
-
const selected =
|
|
15276
|
-
const handleChange =
|
|
15343
|
+
const selected = React59.useMemo(() => currentValue ?? [], [currentValue]);
|
|
15344
|
+
const handleChange = React59.useCallback(
|
|
15277
15345
|
(next, meta) => {
|
|
15346
|
+
console.log("[SC-debug] handleChange", {
|
|
15347
|
+
action: meta?.action,
|
|
15348
|
+
nextLength: next.length,
|
|
15349
|
+
isControlled
|
|
15350
|
+
});
|
|
15278
15351
|
if (!isControlled) setInternalValue(next);
|
|
15279
15352
|
onChange?.(next, meta);
|
|
15280
15353
|
},
|
|
15281
15354
|
[isControlled, onChange]
|
|
15282
15355
|
);
|
|
15283
|
-
const flatRawOptions =
|
|
15356
|
+
const flatRawOptions = React59.useMemo(
|
|
15284
15357
|
() => flattenGroupedOptions(rawOptions),
|
|
15285
15358
|
[rawOptions]
|
|
15286
15359
|
);
|
|
15287
|
-
const filteredGrouped =
|
|
15360
|
+
const filteredGrouped = React59.useMemo(() => {
|
|
15288
15361
|
const trimmed = inputValue.trim();
|
|
15289
15362
|
if (!trimmed) return rawOptions;
|
|
15290
15363
|
return rawOptions.map((item) => {
|
|
@@ -15295,7 +15368,7 @@ function SelectCheckboxesInternal(props, ref) {
|
|
|
15295
15368
|
return filterOption(item, trimmed) ? item : null;
|
|
15296
15369
|
}).filter((item) => item !== null);
|
|
15297
15370
|
}, [rawOptions, inputValue, filterOption]);
|
|
15298
|
-
const filteredFlat =
|
|
15371
|
+
const filteredFlat = React59.useMemo(
|
|
15299
15372
|
() => flattenGroupedOptions(filteredGrouped),
|
|
15300
15373
|
[filteredGrouped]
|
|
15301
15374
|
);
|
|
@@ -15303,7 +15376,7 @@ function SelectCheckboxesInternal(props, ref) {
|
|
|
15303
15376
|
return acc + (selected.some((s) => s.value === option.value) ? 1 : 0);
|
|
15304
15377
|
}, 0);
|
|
15305
15378
|
const allVisibleSelected = filteredFlat.length > 0 && visibleSelectedCount === filteredFlat.length;
|
|
15306
|
-
const handleToggleAll =
|
|
15379
|
+
const handleToggleAll = React59.useCallback(() => {
|
|
15307
15380
|
if (allVisibleSelected) {
|
|
15308
15381
|
const visibleValues = new Set(filteredFlat.map((option) => option.value));
|
|
15309
15382
|
handleChange(
|
|
@@ -15318,14 +15391,19 @@ function SelectCheckboxesInternal(props, ref) {
|
|
|
15318
15391
|
}
|
|
15319
15392
|
handleChange(merged, { action: "select" });
|
|
15320
15393
|
}, [allVisibleSelected, filteredFlat, handleChange, selected]);
|
|
15321
|
-
const
|
|
15394
|
+
const valueTextRef = React59.useRef(valueText);
|
|
15395
|
+
const totalCountRef = React59.useRef(flatRawOptions.length);
|
|
15396
|
+
valueTextRef.current = valueText;
|
|
15397
|
+
totalCountRef.current = flatRawOptions.length;
|
|
15398
|
+
const Control = React59.useMemo(() => {
|
|
15399
|
+
console.log("[SC-debug] (re)creating Control component", { hasCustomTrigger: !!trigger });
|
|
15322
15400
|
if (trigger) return makeTriggerSlot(trigger);
|
|
15323
15401
|
return createCountTrigger({
|
|
15324
|
-
|
|
15325
|
-
|
|
15402
|
+
getValueText: () => valueTextRef.current,
|
|
15403
|
+
getTotalCount: () => totalCountRef.current
|
|
15326
15404
|
});
|
|
15327
|
-
}, [trigger
|
|
15328
|
-
const components =
|
|
15405
|
+
}, [trigger]);
|
|
15406
|
+
const components = React59.useMemo(
|
|
15329
15407
|
() => ({
|
|
15330
15408
|
...userComponents,
|
|
15331
15409
|
Control,
|
|
@@ -15341,7 +15419,7 @@ function SelectCheckboxesInternal(props, ref) {
|
|
|
15341
15419
|
onToggle: handleToggleAll
|
|
15342
15420
|
}
|
|
15343
15421
|
) : void 0;
|
|
15344
|
-
const handleInputChange =
|
|
15422
|
+
const handleInputChange = React59.useCallback(
|
|
15345
15423
|
(next) => {
|
|
15346
15424
|
setInputValue(next);
|
|
15347
15425
|
onSearchChange?.(next);
|
|
@@ -15384,16 +15462,16 @@ function SelectCheckboxesInternal(props, ref) {
|
|
|
15384
15462
|
}
|
|
15385
15463
|
);
|
|
15386
15464
|
}
|
|
15387
|
-
var SelectCheckboxes =
|
|
15465
|
+
var SelectCheckboxes = React59.forwardRef(
|
|
15388
15466
|
SelectCheckboxesInternal
|
|
15389
15467
|
);
|
|
15390
15468
|
|
|
15391
15469
|
// src/dashboard/textarea/Textarea.tsx
|
|
15392
|
-
var
|
|
15470
|
+
var React61 = __toESM(require("react"), 1);
|
|
15393
15471
|
var import_react_i18next37 = require("react-i18next");
|
|
15394
15472
|
|
|
15395
15473
|
// src/dashboard/textarea/useTextareaValueState.ts
|
|
15396
|
-
var
|
|
15474
|
+
var React60 = __toESM(require("react"), 1);
|
|
15397
15475
|
var isEmptyValue2 = (value) => {
|
|
15398
15476
|
if (value === void 0 || value === null) return true;
|
|
15399
15477
|
return String(value).length === 0;
|
|
@@ -15412,12 +15490,12 @@ function useTextareaValueState({
|
|
|
15412
15490
|
value,
|
|
15413
15491
|
defaultValue
|
|
15414
15492
|
}) {
|
|
15415
|
-
const textareaRef =
|
|
15493
|
+
const textareaRef = React60.useRef(null);
|
|
15416
15494
|
const isControlled = typeof empty !== "undefined" || typeof value !== "undefined";
|
|
15417
15495
|
const propsAreEmpty = getTextareaEmptyState({ empty, value, defaultValue });
|
|
15418
|
-
const [nativeIsEmpty, setNativeIsEmpty] =
|
|
15496
|
+
const [nativeIsEmpty, setNativeIsEmpty] = React60.useState(propsAreEmpty);
|
|
15419
15497
|
const isEmpty = isControlled ? propsAreEmpty : nativeIsEmpty;
|
|
15420
|
-
const setNativeValue =
|
|
15498
|
+
const setNativeValue = React60.useCallback(
|
|
15421
15499
|
(nextValue) => {
|
|
15422
15500
|
if (isControlled) return;
|
|
15423
15501
|
const nextIsEmpty = nextValue.length === 0;
|
|
@@ -15427,14 +15505,14 @@ function useTextareaValueState({
|
|
|
15427
15505
|
},
|
|
15428
15506
|
[isControlled]
|
|
15429
15507
|
);
|
|
15430
|
-
const syncValueState =
|
|
15508
|
+
const syncValueState = React60.useCallback(() => {
|
|
15431
15509
|
if (!textareaRef.current) return;
|
|
15432
15510
|
setNativeValue(textareaRef.current.value);
|
|
15433
15511
|
}, [setNativeValue]);
|
|
15434
|
-
|
|
15512
|
+
React60.useLayoutEffect(() => {
|
|
15435
15513
|
syncValueState();
|
|
15436
15514
|
});
|
|
15437
|
-
|
|
15515
|
+
React60.useEffect(() => {
|
|
15438
15516
|
const textarea = textareaRef.current;
|
|
15439
15517
|
const form = textarea?.form;
|
|
15440
15518
|
if (isControlled || !form) return;
|
|
@@ -15461,7 +15539,7 @@ function useTextareaValueState({
|
|
|
15461
15539
|
var import_jsx_runtime169 = require("react/jsx-runtime");
|
|
15462
15540
|
var LINE_HEIGHT = 20;
|
|
15463
15541
|
var VERTICAL_PADDING = 32;
|
|
15464
|
-
var Textarea =
|
|
15542
|
+
var Textarea = React61.forwardRef(function Textarea2({
|
|
15465
15543
|
className,
|
|
15466
15544
|
textareaClassName,
|
|
15467
15545
|
label,
|
|
@@ -15489,12 +15567,12 @@ var Textarea = React60.forwardRef(function Textarea2({
|
|
|
15489
15567
|
}, ref) {
|
|
15490
15568
|
const { textareaRef, isControlled, isEmpty, setNativeValue, syncValueState } = useTextareaValueState({ empty, value, defaultValue });
|
|
15491
15569
|
const combinedRef = useCombinedRef(ref, textareaRef);
|
|
15492
|
-
const reactId =
|
|
15570
|
+
const reactId = React61.useId();
|
|
15493
15571
|
const textareaId = id ?? name ?? `dash-textarea-${reactId}`;
|
|
15494
15572
|
const { t } = (0, import_react_i18next37.useTranslation)();
|
|
15495
15573
|
const isInvalid = Boolean(invalid || error);
|
|
15496
15574
|
const isBlocked = Boolean(disabled);
|
|
15497
|
-
const resize =
|
|
15575
|
+
const resize = React61.useCallback(() => {
|
|
15498
15576
|
const el = textareaRef.current;
|
|
15499
15577
|
if (!el || !autosize) return;
|
|
15500
15578
|
el.style.height = "auto";
|
|
@@ -15504,7 +15582,7 @@ var Textarea = React60.forwardRef(function Textarea2({
|
|
|
15504
15582
|
el.style.height = `${nextHeight}px`;
|
|
15505
15583
|
el.style.overflowY = el.scrollHeight > nextHeight ? "auto" : "hidden";
|
|
15506
15584
|
}, [autosize, maxRows, minRows, textareaRef]);
|
|
15507
|
-
|
|
15585
|
+
React61.useLayoutEffect(() => {
|
|
15508
15586
|
resize();
|
|
15509
15587
|
}, [resize, value]);
|
|
15510
15588
|
const handleInput = (event) => {
|
|
@@ -15596,12 +15674,12 @@ var Textarea = React60.forwardRef(function Textarea2({
|
|
|
15596
15674
|
});
|
|
15597
15675
|
|
|
15598
15676
|
// src/dashboard/datepicker/Datepicker.tsx
|
|
15599
|
-
var
|
|
15600
|
-
var
|
|
15677
|
+
var React63 = __toESM(require("react"), 1);
|
|
15678
|
+
var import_lucide_react49 = require("lucide-react");
|
|
15601
15679
|
var import_react_i18next38 = require("react-i18next");
|
|
15602
15680
|
|
|
15603
15681
|
// src/airbnb-fields/datepicker/useDatePickerWheel.ts
|
|
15604
|
-
var
|
|
15682
|
+
var React62 = __toESM(require("react"), 1);
|
|
15605
15683
|
|
|
15606
15684
|
// src/airbnb-fields/datepicker/datePicker.utils.ts
|
|
15607
15685
|
var DISPLAY_PAD_LENGTH = 2;
|
|
@@ -15752,21 +15830,21 @@ function useDatePickerWheel({
|
|
|
15752
15830
|
minDate,
|
|
15753
15831
|
maxDate
|
|
15754
15832
|
}) {
|
|
15755
|
-
const years =
|
|
15756
|
-
const [draftDate, setDraftDate] =
|
|
15833
|
+
const years = React62.useMemo(() => getYearRange(minDate, maxDate), [maxDate, minDate]);
|
|
15834
|
+
const [draftDate, setDraftDate] = React62.useState(
|
|
15757
15835
|
() => resolveInitialDate({ value, defaultValue, minDate, maxDate })
|
|
15758
15836
|
);
|
|
15759
15837
|
const draftYear = draftDate.getFullYear();
|
|
15760
15838
|
const draftMonth = draftDate.getMonth();
|
|
15761
|
-
const [monthScrollTop, setMonthScrollTop] =
|
|
15762
|
-
const [dayScrollTop, setDayScrollTop] =
|
|
15763
|
-
const [yearScrollTop, setYearScrollTop] =
|
|
15764
|
-
const monthListRef =
|
|
15765
|
-
const dayListRef =
|
|
15766
|
-
const yearListRef =
|
|
15767
|
-
const settleTimeoutsRef =
|
|
15768
|
-
const animationFramesRef =
|
|
15769
|
-
const columnRefs =
|
|
15839
|
+
const [monthScrollTop, setMonthScrollTop] = React62.useState(0);
|
|
15840
|
+
const [dayScrollTop, setDayScrollTop] = React62.useState(0);
|
|
15841
|
+
const [yearScrollTop, setYearScrollTop] = React62.useState(0);
|
|
15842
|
+
const monthListRef = React62.useRef(null);
|
|
15843
|
+
const dayListRef = React62.useRef(null);
|
|
15844
|
+
const yearListRef = React62.useRef(null);
|
|
15845
|
+
const settleTimeoutsRef = React62.useRef({});
|
|
15846
|
+
const animationFramesRef = React62.useRef({});
|
|
15847
|
+
const columnRefs = React62.useMemo(
|
|
15770
15848
|
() => ({
|
|
15771
15849
|
month: monthListRef,
|
|
15772
15850
|
day: dayListRef,
|
|
@@ -15774,7 +15852,7 @@ function useDatePickerWheel({
|
|
|
15774
15852
|
}),
|
|
15775
15853
|
[]
|
|
15776
15854
|
);
|
|
15777
|
-
const setColumnScrollTop =
|
|
15855
|
+
const setColumnScrollTop = React62.useCallback(
|
|
15778
15856
|
(column, nextScrollTop) => {
|
|
15779
15857
|
if (column === "month") {
|
|
15780
15858
|
setMonthScrollTop(nextScrollTop);
|
|
@@ -15788,19 +15866,19 @@ function useDatePickerWheel({
|
|
|
15788
15866
|
},
|
|
15789
15867
|
[]
|
|
15790
15868
|
);
|
|
15791
|
-
const clearSettleTimeout =
|
|
15869
|
+
const clearSettleTimeout = React62.useCallback((column) => {
|
|
15792
15870
|
const timeoutId = settleTimeoutsRef.current[column];
|
|
15793
15871
|
if (timeoutId === void 0) return;
|
|
15794
15872
|
window.clearTimeout(timeoutId);
|
|
15795
15873
|
delete settleTimeoutsRef.current[column];
|
|
15796
15874
|
}, []);
|
|
15797
|
-
const clearAnimationFrame =
|
|
15875
|
+
const clearAnimationFrame = React62.useCallback((column) => {
|
|
15798
15876
|
const frameId = animationFramesRef.current[column];
|
|
15799
15877
|
if (frameId === void 0) return;
|
|
15800
15878
|
window.cancelAnimationFrame(frameId);
|
|
15801
15879
|
delete animationFramesRef.current[column];
|
|
15802
15880
|
}, []);
|
|
15803
|
-
|
|
15881
|
+
React62.useEffect(
|
|
15804
15882
|
() => () => {
|
|
15805
15883
|
["month", "day", "year"].forEach((column) => {
|
|
15806
15884
|
clearSettleTimeout(column);
|
|
@@ -15809,22 +15887,22 @@ function useDatePickerWheel({
|
|
|
15809
15887
|
},
|
|
15810
15888
|
[clearAnimationFrame, clearSettleTimeout]
|
|
15811
15889
|
);
|
|
15812
|
-
|
|
15890
|
+
React62.useEffect(() => {
|
|
15813
15891
|
if (isOpen) return;
|
|
15814
15892
|
setDraftDate(resolveInitialDate({ value, defaultValue, minDate, maxDate }));
|
|
15815
15893
|
}, [defaultValue, isOpen, maxDate, minDate, value]);
|
|
15816
|
-
const months =
|
|
15894
|
+
const months = React62.useMemo(
|
|
15817
15895
|
() => getAllowedMonths(draftYear, minDate, maxDate),
|
|
15818
15896
|
[draftYear, maxDate, minDate]
|
|
15819
15897
|
);
|
|
15820
|
-
const days =
|
|
15898
|
+
const days = React62.useMemo(
|
|
15821
15899
|
() => getAllowedDays(draftYear, draftMonth, minDate, maxDate),
|
|
15822
15900
|
[draftMonth, draftYear, maxDate, minDate]
|
|
15823
15901
|
);
|
|
15824
15902
|
const monthIndex = months.findIndex((month) => month === draftMonth);
|
|
15825
15903
|
const dayIndex = days.findIndex((day) => day === draftDate.getDate());
|
|
15826
15904
|
const yearIndex = years.findIndex((year) => year === draftYear);
|
|
15827
|
-
const syncScrollPositions =
|
|
15905
|
+
const syncScrollPositions = React62.useCallback(
|
|
15828
15906
|
(nextDate, behavior = "auto") => {
|
|
15829
15907
|
const nextMonths = getAllowedMonths(nextDate.getFullYear(), minDate, maxDate);
|
|
15830
15908
|
const nextMonthIndex = nextMonths.findIndex((month) => month === nextDate.getMonth());
|
|
@@ -15848,7 +15926,7 @@ function useDatePickerWheel({
|
|
|
15848
15926
|
},
|
|
15849
15927
|
[maxDate, minDate, years]
|
|
15850
15928
|
);
|
|
15851
|
-
|
|
15929
|
+
React62.useLayoutEffect(() => {
|
|
15852
15930
|
if (!isOpen) return;
|
|
15853
15931
|
const nextDate = resolveInitialDate({ value, defaultValue, minDate, maxDate });
|
|
15854
15932
|
setDraftDate(nextDate);
|
|
@@ -15859,7 +15937,7 @@ function useDatePickerWheel({
|
|
|
15859
15937
|
window.cancelAnimationFrame(frameId);
|
|
15860
15938
|
};
|
|
15861
15939
|
}, [defaultValue, isOpen, maxDate, minDate, syncScrollPositions, value]);
|
|
15862
|
-
const updateDraftDate =
|
|
15940
|
+
const updateDraftDate = React62.useCallback(
|
|
15863
15941
|
(column, targetIndex, behavior = "smooth") => {
|
|
15864
15942
|
const currentDate = stripTime(draftDate);
|
|
15865
15943
|
const currentYear = currentDate.getFullYear();
|
|
@@ -15904,7 +15982,7 @@ function useDatePickerWheel({
|
|
|
15904
15982
|
},
|
|
15905
15983
|
[days, draftDate, maxDate, minDate, months, syncScrollPositions, years]
|
|
15906
15984
|
);
|
|
15907
|
-
const settleColumnScroll =
|
|
15985
|
+
const settleColumnScroll = React62.useCallback(
|
|
15908
15986
|
(column) => {
|
|
15909
15987
|
const list = columnRefs[column].current;
|
|
15910
15988
|
if (!list) return;
|
|
@@ -15917,7 +15995,7 @@ function useDatePickerWheel({
|
|
|
15917
15995
|
},
|
|
15918
15996
|
[columnRefs, days.length, months.length, updateDraftDate, years.length]
|
|
15919
15997
|
);
|
|
15920
|
-
const scheduleScrollSettle =
|
|
15998
|
+
const scheduleScrollSettle = React62.useCallback(
|
|
15921
15999
|
(column) => {
|
|
15922
16000
|
clearSettleTimeout(column);
|
|
15923
16001
|
settleTimeoutsRef.current[column] = window.setTimeout(() => {
|
|
@@ -15926,7 +16004,7 @@ function useDatePickerWheel({
|
|
|
15926
16004
|
},
|
|
15927
16005
|
[clearSettleTimeout, settleColumnScroll]
|
|
15928
16006
|
);
|
|
15929
|
-
const handleColumnScroll =
|
|
16007
|
+
const handleColumnScroll = React62.useCallback(
|
|
15930
16008
|
(column) => {
|
|
15931
16009
|
const list = columnRefs[column].current;
|
|
15932
16010
|
if (!list) return;
|
|
@@ -15940,13 +16018,13 @@ function useDatePickerWheel({
|
|
|
15940
16018
|
},
|
|
15941
16019
|
[clearAnimationFrame, columnRefs, scheduleScrollSettle, setColumnScrollTop]
|
|
15942
16020
|
);
|
|
15943
|
-
const handleOptionSelect =
|
|
16021
|
+
const handleOptionSelect = React62.useCallback(
|
|
15944
16022
|
(column, targetIndex) => {
|
|
15945
16023
|
updateDraftDate(column, targetIndex, "smooth");
|
|
15946
16024
|
},
|
|
15947
16025
|
[updateDraftDate]
|
|
15948
16026
|
);
|
|
15949
|
-
const focusAdjacentColumn =
|
|
16027
|
+
const focusAdjacentColumn = React62.useCallback(
|
|
15950
16028
|
(column, direction) => {
|
|
15951
16029
|
const order = ["month", "day", "year"];
|
|
15952
16030
|
const currentIndex = order.indexOf(column);
|
|
@@ -15956,7 +16034,7 @@ function useDatePickerWheel({
|
|
|
15956
16034
|
},
|
|
15957
16035
|
[columnRefs]
|
|
15958
16036
|
);
|
|
15959
|
-
const handleColumnKeyDown =
|
|
16037
|
+
const handleColumnKeyDown = React62.useCallback(
|
|
15960
16038
|
(column, event) => {
|
|
15961
16039
|
const currentIndex = column === "month" ? monthIndex : column === "day" ? dayIndex : yearIndex;
|
|
15962
16040
|
const maxIndex = column === "month" ? months.length - 1 : column === "day" ? days.length - 1 : years.length - 1;
|
|
@@ -16278,7 +16356,7 @@ function dateFromParts(day, monthIndex, year) {
|
|
|
16278
16356
|
if (!isValidCalendarDate(yearNum, monthIndex, dayNum)) return null;
|
|
16279
16357
|
return new Date(yearNum, monthIndex, dayNum);
|
|
16280
16358
|
}
|
|
16281
|
-
var Datepicker =
|
|
16359
|
+
var Datepicker = React63.forwardRef(
|
|
16282
16360
|
function Datepicker2({
|
|
16283
16361
|
label,
|
|
16284
16362
|
value,
|
|
@@ -16311,14 +16389,14 @@ var Datepicker = React62.forwardRef(
|
|
|
16311
16389
|
maxDate,
|
|
16312
16390
|
formatValue
|
|
16313
16391
|
}, ref) {
|
|
16314
|
-
const containerRef =
|
|
16315
|
-
const dayInputRef =
|
|
16316
|
-
const monthInputRef =
|
|
16317
|
-
const monthListRef =
|
|
16318
|
-
const yearInputRef =
|
|
16319
|
-
const mobileTriggerRef =
|
|
16320
|
-
const wheelBaseId =
|
|
16321
|
-
const reactId =
|
|
16392
|
+
const containerRef = React63.useRef(null);
|
|
16393
|
+
const dayInputRef = React63.useRef(null);
|
|
16394
|
+
const monthInputRef = React63.useRef(null);
|
|
16395
|
+
const monthListRef = React63.useRef(null);
|
|
16396
|
+
const yearInputRef = React63.useRef(null);
|
|
16397
|
+
const mobileTriggerRef = React63.useRef(null);
|
|
16398
|
+
const wheelBaseId = React63.useId();
|
|
16399
|
+
const reactId = React63.useId();
|
|
16322
16400
|
const baseId = name ?? `dash-datepicker-${reactId}`;
|
|
16323
16401
|
const dayId = `${baseId}-day`;
|
|
16324
16402
|
const monthId = `${baseId}-month`;
|
|
@@ -16327,38 +16405,38 @@ var Datepicker = React62.forwardRef(
|
|
|
16327
16405
|
const errorId = `${baseId}-error`;
|
|
16328
16406
|
const { t, i18n } = (0, import_react_i18next38.useTranslation)();
|
|
16329
16407
|
const resolvedLocale = locale ?? i18n.resolvedLanguage ?? i18n.language ?? "en-US";
|
|
16330
|
-
const resolvedMonthLabels =
|
|
16408
|
+
const resolvedMonthLabels = React63.useMemo(
|
|
16331
16409
|
() => monthLabels ?? getMonthLabels2(resolvedLocale),
|
|
16332
16410
|
[resolvedLocale, monthLabels]
|
|
16333
16411
|
);
|
|
16334
16412
|
const resolvedMonthPlaceholder = monthPlaceholder ?? t("month");
|
|
16335
16413
|
const resolvedDoneLabel = doneLabel ?? t("done");
|
|
16336
16414
|
const isControlled = value !== void 0;
|
|
16337
|
-
const initialParts =
|
|
16415
|
+
const initialParts = React63.useMemo(
|
|
16338
16416
|
() => partsFromDate(value ?? defaultValue ?? null),
|
|
16339
16417
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
16340
16418
|
[]
|
|
16341
16419
|
);
|
|
16342
|
-
const [day, setDay] =
|
|
16343
|
-
const [monthIndex, setMonthIndex] =
|
|
16420
|
+
const [day, setDay] = React63.useState(initialParts.day);
|
|
16421
|
+
const [monthIndex, setMonthIndex] = React63.useState(
|
|
16344
16422
|
initialParts.monthIndex
|
|
16345
16423
|
);
|
|
16346
|
-
const [year, setYear] =
|
|
16347
|
-
const [isMonthOpen, setIsMonthOpen] =
|
|
16348
|
-
const [isWheelOpen, setIsWheelOpen] =
|
|
16349
|
-
const [focusedField, setFocusedField] =
|
|
16350
|
-
const [monthInputValue, setMonthInputValue] =
|
|
16351
|
-
const [monthHighlightIndex, setMonthHighlightIndex] =
|
|
16424
|
+
const [year, setYear] = React63.useState(initialParts.year);
|
|
16425
|
+
const [isMonthOpen, setIsMonthOpen] = React63.useState(false);
|
|
16426
|
+
const [isWheelOpen, setIsWheelOpen] = React63.useState(false);
|
|
16427
|
+
const [focusedField, setFocusedField] = React63.useState(null);
|
|
16428
|
+
const [monthInputValue, setMonthInputValue] = React63.useState("");
|
|
16429
|
+
const [monthHighlightIndex, setMonthHighlightIndex] = React63.useState(-1);
|
|
16352
16430
|
const isMobile3 = useIsMobile();
|
|
16353
|
-
const emitChangeRef =
|
|
16431
|
+
const emitChangeRef = React63.useRef(() => {
|
|
16354
16432
|
});
|
|
16355
|
-
const dayStateRef =
|
|
16356
|
-
const yearStateRef =
|
|
16357
|
-
const monthIndexRef =
|
|
16433
|
+
const dayStateRef = React63.useRef(day);
|
|
16434
|
+
const yearStateRef = React63.useRef(year);
|
|
16435
|
+
const monthIndexRef = React63.useRef(monthIndex);
|
|
16358
16436
|
dayStateRef.current = day;
|
|
16359
16437
|
yearStateRef.current = year;
|
|
16360
16438
|
monthIndexRef.current = monthIndex;
|
|
16361
|
-
|
|
16439
|
+
React63.useImperativeHandle(
|
|
16362
16440
|
ref,
|
|
16363
16441
|
() => ({
|
|
16364
16442
|
getDayValue: () => dayStateRef.current,
|
|
@@ -16376,27 +16454,27 @@ var Datepicker = React62.forwardRef(
|
|
|
16376
16454
|
}),
|
|
16377
16455
|
[]
|
|
16378
16456
|
);
|
|
16379
|
-
|
|
16457
|
+
React63.useEffect(() => {
|
|
16380
16458
|
if (!isControlled) return;
|
|
16381
16459
|
const next = partsFromDate(value ?? null);
|
|
16382
16460
|
setDay(next.day);
|
|
16383
16461
|
setMonthIndex(next.monthIndex);
|
|
16384
16462
|
setYear(next.year);
|
|
16385
16463
|
}, [isControlled, value]);
|
|
16386
|
-
|
|
16464
|
+
React63.useEffect(() => {
|
|
16387
16465
|
if (focusedField === "month") return;
|
|
16388
16466
|
setMonthInputValue(
|
|
16389
16467
|
monthIndex !== null ? resolvedMonthLabels[monthIndex] ?? "" : ""
|
|
16390
16468
|
);
|
|
16391
16469
|
}, [monthIndex, resolvedMonthLabels, focusedField]);
|
|
16392
|
-
const filteredMonths =
|
|
16470
|
+
const filteredMonths = React63.useMemo(() => {
|
|
16393
16471
|
const all = resolvedMonthLabels.map((label2, index) => ({ label: label2, index }));
|
|
16394
16472
|
const query = monthInputValue.trim().toLowerCase();
|
|
16395
16473
|
const currentLabel = monthIndex !== null ? resolvedMonthLabels[monthIndex] ?? "" : "";
|
|
16396
16474
|
if (!query || monthInputValue === currentLabel) return all;
|
|
16397
16475
|
return all.filter((opt) => opt.label.toLowerCase().includes(query));
|
|
16398
16476
|
}, [monthInputValue, monthIndex, resolvedMonthLabels]);
|
|
16399
|
-
|
|
16477
|
+
React63.useEffect(() => {
|
|
16400
16478
|
if (!isMonthOpen) {
|
|
16401
16479
|
setMonthHighlightIndex(-1);
|
|
16402
16480
|
return;
|
|
@@ -16417,7 +16495,7 @@ var Datepicker = React62.forwardRef(
|
|
|
16417
16495
|
const isFocused = focusedField !== null || isMonthOpen || isWheelOpen;
|
|
16418
16496
|
const isInvalid = Boolean(invalid || error);
|
|
16419
16497
|
const wrapperWidth = toCssSize(width);
|
|
16420
|
-
const currentDate =
|
|
16498
|
+
const currentDate = React63.useMemo(
|
|
16421
16499
|
() => dateFromParts(day, monthIndex, year),
|
|
16422
16500
|
[day, monthIndex, year]
|
|
16423
16501
|
);
|
|
@@ -16426,7 +16504,7 @@ var Datepicker = React62.forwardRef(
|
|
|
16426
16504
|
onOutsideClick: () => setIsMonthOpen(false),
|
|
16427
16505
|
isDisabled: !isMonthOpen || isMobile3
|
|
16428
16506
|
});
|
|
16429
|
-
const emitChange =
|
|
16507
|
+
const emitChange = React63.useCallback(
|
|
16430
16508
|
(nextDay, nextMonth, nextYear) => {
|
|
16431
16509
|
if (!onChange) return;
|
|
16432
16510
|
const date = dateFromParts(nextDay, nextMonth, nextYear);
|
|
@@ -16462,7 +16540,7 @@ var Datepicker = React62.forwardRef(
|
|
|
16462
16540
|
setIsMonthOpen(true);
|
|
16463
16541
|
setMonthHighlightIndex(0);
|
|
16464
16542
|
};
|
|
16465
|
-
const commitMonthInput =
|
|
16543
|
+
const commitMonthInput = React63.useCallback(() => {
|
|
16466
16544
|
const query = monthInputValue.trim().toLowerCase();
|
|
16467
16545
|
if (!query) {
|
|
16468
16546
|
if (monthIndex !== null) {
|
|
@@ -16522,15 +16600,15 @@ var Datepicker = React62.forwardRef(
|
|
|
16522
16600
|
setIsMonthOpen(false);
|
|
16523
16601
|
}
|
|
16524
16602
|
};
|
|
16525
|
-
const focusDayInput =
|
|
16603
|
+
const focusDayInput = React63.useCallback(() => {
|
|
16526
16604
|
if (isBlocked || readOnly) return;
|
|
16527
16605
|
dayInputRef.current?.focus();
|
|
16528
16606
|
}, [isBlocked, readOnly]);
|
|
16529
|
-
const openWheel =
|
|
16607
|
+
const openWheel = React63.useCallback(() => {
|
|
16530
16608
|
if (isBlocked || readOnly) return;
|
|
16531
16609
|
setIsWheelOpen(true);
|
|
16532
16610
|
}, [isBlocked, readOnly]);
|
|
16533
|
-
const closeWheel =
|
|
16611
|
+
const closeWheel = React63.useCallback(() => {
|
|
16534
16612
|
setIsWheelOpen(false);
|
|
16535
16613
|
mobileTriggerRef.current?.focus();
|
|
16536
16614
|
}, []);
|
|
@@ -16542,7 +16620,7 @@ var Datepicker = React62.forwardRef(
|
|
|
16542
16620
|
minDate,
|
|
16543
16621
|
maxDate
|
|
16544
16622
|
});
|
|
16545
|
-
const handleWheelDone =
|
|
16623
|
+
const handleWheelDone = React63.useCallback(() => {
|
|
16546
16624
|
const next = wheel.draftDate;
|
|
16547
16625
|
setDay(String(next.getDate()));
|
|
16548
16626
|
setMonthIndex(next.getMonth());
|
|
@@ -16551,7 +16629,7 @@ var Datepicker = React62.forwardRef(
|
|
|
16551
16629
|
setIsWheelOpen(false);
|
|
16552
16630
|
mobileTriggerRef.current?.focus();
|
|
16553
16631
|
}, [name, onChange, wheel.draftDate]);
|
|
16554
|
-
const defaultFormatValue =
|
|
16632
|
+
const defaultFormatValue = React63.useCallback(
|
|
16555
16633
|
(date) => `${date.getDate()} ${resolvedMonthLabels[date.getMonth()]} ${date.getFullYear()}`,
|
|
16556
16634
|
[resolvedMonthLabels]
|
|
16557
16635
|
);
|
|
@@ -16631,7 +16709,7 @@ var Datepicker = React62.forwardRef(
|
|
|
16631
16709
|
children: [
|
|
16632
16710
|
/* @__PURE__ */ (0, import_jsx_runtime172.jsx)("span", { className: "block min-w-0 flex-1 truncate text-left", children: triggerText ?? (isWheelOpen ? mobilePlaceholder : null) }),
|
|
16633
16711
|
/* @__PURE__ */ (0, import_jsx_runtime172.jsx)("span", { className: "pointer-events-none flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ (0, import_jsx_runtime172.jsx)(
|
|
16634
|
-
|
|
16712
|
+
import_lucide_react49.ChevronDown,
|
|
16635
16713
|
{
|
|
16636
16714
|
size: 16,
|
|
16637
16715
|
className: cn(
|
|
@@ -16726,7 +16804,7 @@ var Datepicker = React62.forwardRef(
|
|
|
16726
16804
|
}
|
|
16727
16805
|
),
|
|
16728
16806
|
/* @__PURE__ */ (0, import_jsx_runtime172.jsx)(
|
|
16729
|
-
|
|
16807
|
+
import_lucide_react49.ChevronDown,
|
|
16730
16808
|
{
|
|
16731
16809
|
size: 14,
|
|
16732
16810
|
onMouseDown: (event) => {
|
|
@@ -16847,7 +16925,7 @@ var Datepicker = React62.forwardRef(
|
|
|
16847
16925
|
);
|
|
16848
16926
|
|
|
16849
16927
|
// src/dashboard/date-range-picker/DateRangePicker.tsx
|
|
16850
|
-
var
|
|
16928
|
+
var React67 = __toESM(require("react"), 1);
|
|
16851
16929
|
var import_react_i18next39 = require("react-i18next");
|
|
16852
16930
|
|
|
16853
16931
|
// src/dashboard/date-range-picker/isDayBlocked.ts
|
|
@@ -16926,7 +17004,7 @@ var createDisabledMatchers = ({
|
|
|
16926
17004
|
};
|
|
16927
17005
|
|
|
16928
17006
|
// src/dashboard/date-range-picker/hooks/useRangeValue.ts
|
|
16929
|
-
var
|
|
17007
|
+
var React64 = __toESM(require("react"), 1);
|
|
16930
17008
|
var getRangeKey = (range) => `${range?.from?.getTime() ?? ""}-${range?.to?.getTime() ?? ""}`;
|
|
16931
17009
|
function useRangeValue({
|
|
16932
17010
|
value: externalValue,
|
|
@@ -16935,10 +17013,10 @@ function useRangeValue({
|
|
|
16935
17013
|
name
|
|
16936
17014
|
}) {
|
|
16937
17015
|
const isControlled = externalValue !== void 0;
|
|
16938
|
-
const [draft, setDraft] =
|
|
17016
|
+
const [draft, setDraft] = React64.useState(
|
|
16939
17017
|
isControlled ? externalValue : defaultValue
|
|
16940
17018
|
);
|
|
16941
|
-
const lastExternalKeyRef =
|
|
17019
|
+
const lastExternalKeyRef = React64.useRef(getRangeKey(externalValue));
|
|
16942
17020
|
if (isControlled) {
|
|
16943
17021
|
const externalKey = getRangeKey(externalValue);
|
|
16944
17022
|
if (externalKey !== lastExternalKeyRef.current) {
|
|
@@ -16946,7 +17024,7 @@ function useRangeValue({
|
|
|
16946
17024
|
setDraft(externalValue);
|
|
16947
17025
|
}
|
|
16948
17026
|
}
|
|
16949
|
-
const commit =
|
|
17027
|
+
const commit = React64.useCallback(
|
|
16950
17028
|
(next) => {
|
|
16951
17029
|
setDraft(next);
|
|
16952
17030
|
if (next === void 0) {
|
|
@@ -16961,7 +17039,7 @@ function useRangeValue({
|
|
|
16961
17039
|
}
|
|
16962
17040
|
|
|
16963
17041
|
// src/dashboard/date-range-picker/hooks/useRangeTextInputs.ts
|
|
16964
|
-
var
|
|
17042
|
+
var React65 = __toESM(require("react"), 1);
|
|
16965
17043
|
|
|
16966
17044
|
// src/dashboard/date-range-picker/utils/inputFormat.ts
|
|
16967
17045
|
function parseDateInputFormat(format2) {
|
|
@@ -17051,18 +17129,18 @@ function useRangeTextInputs({
|
|
|
17051
17129
|
onFromComplete,
|
|
17052
17130
|
onToComplete
|
|
17053
17131
|
}) {
|
|
17054
|
-
const tokens =
|
|
17132
|
+
const tokens = React65.useMemo(
|
|
17055
17133
|
() => parseDateInputFormat(displayFormat),
|
|
17056
17134
|
[displayFormat]
|
|
17057
17135
|
);
|
|
17058
|
-
const maxDigits =
|
|
17059
|
-
const [fromText, setFromText] =
|
|
17060
|
-
const [toText, setToText] =
|
|
17061
|
-
|
|
17136
|
+
const maxDigits = React65.useMemo(() => getMaxDigits(tokens), [tokens]);
|
|
17137
|
+
const [fromText, setFromText] = React65.useState(value?.from ? format2(value.from) : "");
|
|
17138
|
+
const [toText, setToText] = React65.useState(value?.to ? format2(value.to) : "");
|
|
17139
|
+
React65.useEffect(() => {
|
|
17062
17140
|
setFromText(value?.from ? format2(value.from) : "");
|
|
17063
17141
|
setToText(value?.to ? format2(value.to) : "");
|
|
17064
17142
|
}, [format2, value?.from, value?.to]);
|
|
17065
|
-
const handleFromChange =
|
|
17143
|
+
const handleFromChange = React65.useCallback(
|
|
17066
17144
|
(raw) => {
|
|
17067
17145
|
const formatted = autoFormatDateInput(raw, tokens);
|
|
17068
17146
|
const wasComplete = countDigits(fromText) === maxDigits;
|
|
@@ -17074,7 +17152,7 @@ function useRangeTextInputs({
|
|
|
17074
17152
|
},
|
|
17075
17153
|
[fromText, maxDigits, onFromComplete, parse3, tokens]
|
|
17076
17154
|
);
|
|
17077
|
-
const handleToChange =
|
|
17155
|
+
const handleToChange = React65.useCallback(
|
|
17078
17156
|
(raw) => {
|
|
17079
17157
|
const formatted = autoFormatDateInput(raw, tokens);
|
|
17080
17158
|
const wasComplete = countDigits(toText) === maxDigits;
|
|
@@ -17086,7 +17164,7 @@ function useRangeTextInputs({
|
|
|
17086
17164
|
},
|
|
17087
17165
|
[maxDigits, onToComplete, parse3, toText, tokens]
|
|
17088
17166
|
);
|
|
17089
|
-
const handleFromBlur =
|
|
17167
|
+
const handleFromBlur = React65.useCallback(() => {
|
|
17090
17168
|
if (!fromText) {
|
|
17091
17169
|
const next = { from: void 0, to: value?.to };
|
|
17092
17170
|
onCommit(next);
|
|
@@ -17103,7 +17181,7 @@ function useRangeTextInputs({
|
|
|
17103
17181
|
setFromText(value?.from ? format2(value.from) : "");
|
|
17104
17182
|
return void 0;
|
|
17105
17183
|
}, [format2, fromText, onBlur, onCommit, parse3, value]);
|
|
17106
|
-
const handleToBlur =
|
|
17184
|
+
const handleToBlur = React65.useCallback(() => {
|
|
17107
17185
|
if (!toText) {
|
|
17108
17186
|
const next = { from: value?.from, to: void 0 };
|
|
17109
17187
|
onCommit(next);
|
|
@@ -17132,21 +17210,21 @@ function useRangeTextInputs({
|
|
|
17132
17210
|
}
|
|
17133
17211
|
|
|
17134
17212
|
// src/dashboard/date-range-picker/hooks/useRangeMonthSync.ts
|
|
17135
|
-
var
|
|
17213
|
+
var React66 = __toESM(require("react"), 1);
|
|
17136
17214
|
function useRangeMonthSync(value) {
|
|
17137
|
-
const isPreloadedRef =
|
|
17138
|
-
const [month, setMonth] =
|
|
17139
|
-
|
|
17215
|
+
const isPreloadedRef = React66.useRef(false);
|
|
17216
|
+
const [month, setMonth] = React66.useState(value?.from ?? /* @__PURE__ */ new Date());
|
|
17217
|
+
React66.useEffect(() => {
|
|
17140
17218
|
if (value?.from && !isPreloadedRef.current) {
|
|
17141
17219
|
setMonth(value.from);
|
|
17142
17220
|
isPreloadedRef.current = true;
|
|
17143
17221
|
}
|
|
17144
17222
|
}, [value?.from]);
|
|
17145
|
-
const syncMonthToValue =
|
|
17223
|
+
const syncMonthToValue = React66.useCallback((next) => {
|
|
17146
17224
|
isPreloadedRef.current = true;
|
|
17147
17225
|
if (next?.from) setMonth(next.from);
|
|
17148
17226
|
}, []);
|
|
17149
|
-
const resetPreload =
|
|
17227
|
+
const resetPreload = React66.useCallback(() => {
|
|
17150
17228
|
isPreloadedRef.current = false;
|
|
17151
17229
|
}, []);
|
|
17152
17230
|
return { month, setMonth, syncMonthToValue, resetPreload };
|
|
@@ -17171,7 +17249,7 @@ function resolveRangeSelection({
|
|
|
17171
17249
|
}
|
|
17172
17250
|
|
|
17173
17251
|
// src/dashboard/date-range-picker/components/DateRangeInputs.tsx
|
|
17174
|
-
var
|
|
17252
|
+
var import_lucide_react50 = require("lucide-react");
|
|
17175
17253
|
var import_jsx_runtime173 = require("react/jsx-runtime");
|
|
17176
17254
|
var DEFAULT_PLACEHOLDER = "00-00-0000";
|
|
17177
17255
|
var inputBaseClass = "m-0 box-border h-full w-full min-w-0 border-0 bg-transparent text-[16px] font-medium leading-5 text-[var(--chekin-color-brand-navy)] outline-none placeholder:text-[var(--chekin-color-gray-1)]";
|
|
@@ -17293,7 +17371,7 @@ function DateRangeInputs({
|
|
|
17293
17371
|
onClick: onReset,
|
|
17294
17372
|
className: iconButtonClass,
|
|
17295
17373
|
"aria-label": clearLabel,
|
|
17296
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(
|
|
17374
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(import_lucide_react50.SquareX, { size: 16, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
|
|
17297
17375
|
}
|
|
17298
17376
|
),
|
|
17299
17377
|
!readOnly && !hideCalendarIcon && /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(
|
|
@@ -17308,7 +17386,7 @@ function DateRangeInputs({
|
|
|
17308
17386
|
focusedInput !== null || isOpen ? "text-[var(--chekin-color-brand-blue)]" : "text-[var(--chekin-color-gray-2)]"
|
|
17309
17387
|
),
|
|
17310
17388
|
"aria-label": openCalendarLabel,
|
|
17311
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(
|
|
17389
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(import_lucide_react50.CalendarDays, { size: 18 })
|
|
17312
17390
|
}
|
|
17313
17391
|
)
|
|
17314
17392
|
] })
|
|
@@ -17406,7 +17484,7 @@ function DateRangePopover({
|
|
|
17406
17484
|
|
|
17407
17485
|
// src/dashboard/date-range-picker/DateRangePicker.tsx
|
|
17408
17486
|
var import_jsx_runtime176 = require("react/jsx-runtime");
|
|
17409
|
-
var DateRangePicker =
|
|
17487
|
+
var DateRangePicker = React67.forwardRef(function DateRangePicker2({
|
|
17410
17488
|
label,
|
|
17411
17489
|
value: externalValue,
|
|
17412
17490
|
defaultValue,
|
|
@@ -17441,20 +17519,20 @@ var DateRangePicker = React66.forwardRef(function DateRangePicker2({
|
|
|
17441
17519
|
components: customComponents,
|
|
17442
17520
|
...dayPickerProps
|
|
17443
17521
|
}, ref) {
|
|
17444
|
-
const containerRef =
|
|
17445
|
-
const fromInputRef =
|
|
17446
|
-
const toInputRef =
|
|
17447
|
-
const reactId =
|
|
17522
|
+
const containerRef = React67.useRef(null);
|
|
17523
|
+
const fromInputRef = React67.useRef(null);
|
|
17524
|
+
const toInputRef = React67.useRef(null);
|
|
17525
|
+
const reactId = React67.useId();
|
|
17448
17526
|
const baseId = name ?? `dash-daterange-${reactId}`;
|
|
17449
17527
|
const fromId = `${baseId}-from`;
|
|
17450
17528
|
const toId = `${baseId}-to`;
|
|
17451
17529
|
const labelId = `${baseId}-label`;
|
|
17452
17530
|
const errorId = `${baseId}-error`;
|
|
17453
|
-
const normalizedValue =
|
|
17531
|
+
const normalizedValue = React67.useMemo(() => {
|
|
17454
17532
|
if (externalValue === void 0) return void 0;
|
|
17455
17533
|
return { from: toDate(externalValue?.from), to: toDate(externalValue?.to) };
|
|
17456
17534
|
}, [externalValue]);
|
|
17457
|
-
const normalizedDefaultValue =
|
|
17535
|
+
const normalizedDefaultValue = React67.useMemo(() => {
|
|
17458
17536
|
if (defaultValue === void 0) return void 0;
|
|
17459
17537
|
return { from: toDate(defaultValue?.from), to: toDate(defaultValue?.to) };
|
|
17460
17538
|
}, [defaultValue]);
|
|
@@ -17464,16 +17542,16 @@ var DateRangePicker = React66.forwardRef(function DateRangePicker2({
|
|
|
17464
17542
|
onChange,
|
|
17465
17543
|
name
|
|
17466
17544
|
});
|
|
17467
|
-
const normalizedMinDate =
|
|
17468
|
-
const normalizedMaxDate =
|
|
17469
|
-
const formatter =
|
|
17470
|
-
const parser =
|
|
17471
|
-
const closeCalendarRef =
|
|
17545
|
+
const normalizedMinDate = React67.useMemo(() => toDate(minDate), [minDate]);
|
|
17546
|
+
const normalizedMaxDate = React67.useMemo(() => toDate(maxDate), [maxDate]);
|
|
17547
|
+
const formatter = React67.useMemo(() => formatDate(displayFormat), [displayFormat]);
|
|
17548
|
+
const parser = React67.useMemo(() => parseDate(displayFormat), [displayFormat]);
|
|
17549
|
+
const closeCalendarRef = React67.useRef(() => {
|
|
17472
17550
|
});
|
|
17473
|
-
const handleFromComplete =
|
|
17551
|
+
const handleFromComplete = React67.useCallback(() => {
|
|
17474
17552
|
toInputRef.current?.focus();
|
|
17475
17553
|
}, []);
|
|
17476
|
-
const handleToComplete =
|
|
17554
|
+
const handleToComplete = React67.useCallback(() => {
|
|
17477
17555
|
toInputRef.current?.blur();
|
|
17478
17556
|
closeCalendarRef.current();
|
|
17479
17557
|
}, []);
|
|
@@ -17497,9 +17575,9 @@ var DateRangePicker = React66.forwardRef(function DateRangePicker2({
|
|
|
17497
17575
|
onToComplete: handleToComplete
|
|
17498
17576
|
});
|
|
17499
17577
|
const { month, setMonth, syncMonthToValue } = useRangeMonthSync(value);
|
|
17500
|
-
const [isOpen, setIsOpen] =
|
|
17501
|
-
const [focusedInput, setFocusedInput] =
|
|
17502
|
-
const [autoFocus, setAutoFocus] =
|
|
17578
|
+
const [isOpen, setIsOpen] = React67.useState(false);
|
|
17579
|
+
const [focusedInput, setFocusedInput] = React67.useState(null);
|
|
17580
|
+
const [autoFocus, setAutoFocus] = React67.useState(false);
|
|
17503
17581
|
const isMobile3 = useIsMobile();
|
|
17504
17582
|
const { t } = (0, import_react_i18next39.useTranslation)();
|
|
17505
17583
|
const drawerTitle = label ?? t("select_dates");
|
|
@@ -17510,14 +17588,14 @@ var DateRangePicker = React66.forwardRef(function DateRangePicker2({
|
|
|
17510
17588
|
const isFocused = focusedInput !== null || isOpen;
|
|
17511
17589
|
const wrapperWidth = toCssSize(width);
|
|
17512
17590
|
const monthsToShow = numberOfMonths ?? (isMobile3 ? 1 : 2);
|
|
17513
|
-
const closeCalendar =
|
|
17591
|
+
const closeCalendar = React67.useCallback(() => {
|
|
17514
17592
|
setIsOpen(false);
|
|
17515
17593
|
setFocusedInput(null);
|
|
17516
17594
|
setAutoFocus(false);
|
|
17517
17595
|
if (value?.from) setMonth(value.from);
|
|
17518
17596
|
}, [setMonth, value?.from]);
|
|
17519
17597
|
closeCalendarRef.current = closeCalendar;
|
|
17520
|
-
const openCalendar =
|
|
17598
|
+
const openCalendar = React67.useCallback(() => {
|
|
17521
17599
|
if (isBlocked || readOnly) return;
|
|
17522
17600
|
setIsOpen(true);
|
|
17523
17601
|
}, [isBlocked, readOnly]);
|
|
@@ -17526,7 +17604,7 @@ var DateRangePicker = React66.forwardRef(function DateRangePicker2({
|
|
|
17526
17604
|
onOutsideClick: closeCalendar,
|
|
17527
17605
|
isDisabled: !isOpen || isMobile3
|
|
17528
17606
|
});
|
|
17529
|
-
const handlePickerChange =
|
|
17607
|
+
const handlePickerChange = React67.useCallback(
|
|
17530
17608
|
(range, pickedDate) => {
|
|
17531
17609
|
const { next, shouldClose } = resolveRangeSelection({
|
|
17532
17610
|
previous: value,
|
|
@@ -17547,7 +17625,7 @@ var DateRangePicker = React66.forwardRef(function DateRangePicker2({
|
|
|
17547
17625
|
setToText("");
|
|
17548
17626
|
setMonth(/* @__PURE__ */ new Date());
|
|
17549
17627
|
};
|
|
17550
|
-
const disabledMatchers =
|
|
17628
|
+
const disabledMatchers = React67.useMemo(
|
|
17551
17629
|
() => createDisabledMatchers({
|
|
17552
17630
|
minDate: normalizedMinDate,
|
|
17553
17631
|
maxDate: normalizedMaxDate,
|
|
@@ -17566,7 +17644,7 @@ var DateRangePicker = React66.forwardRef(function DateRangePicker2({
|
|
|
17566
17644
|
openCalendar();
|
|
17567
17645
|
if (autoFocusOnOpen) setAutoFocus(true);
|
|
17568
17646
|
};
|
|
17569
|
-
|
|
17647
|
+
React67.useImperativeHandle(
|
|
17570
17648
|
ref,
|
|
17571
17649
|
() => ({
|
|
17572
17650
|
setDateRange: (range) => {
|
|
@@ -17747,7 +17825,7 @@ var DateRangePicker = React66.forwardRef(function DateRangePicker2({
|
|
|
17747
17825
|
});
|
|
17748
17826
|
|
|
17749
17827
|
// src/dashboard/date-range-picker/useValidateDates.ts
|
|
17750
|
-
var
|
|
17828
|
+
var React68 = __toESM(require("react"), 1);
|
|
17751
17829
|
var import_react_i18next40 = require("react-i18next");
|
|
17752
17830
|
var import_date_fns4 = require("date-fns");
|
|
17753
17831
|
var import_react_day_picker2 = require("react-day-picker");
|
|
@@ -17770,11 +17848,11 @@ function useValidateDates({
|
|
|
17770
17848
|
const { t } = (0, import_react_i18next40.useTranslation)();
|
|
17771
17849
|
const handleError = useEvent(onError);
|
|
17772
17850
|
const handleSuccess = useEvent(onSuccess);
|
|
17773
|
-
const errorFormatter =
|
|
17851
|
+
const errorFormatter = React68.useMemo(
|
|
17774
17852
|
() => formatDate(displayFormat ?? DEFAULT_DISPLAY_FORMAT),
|
|
17775
17853
|
[displayFormat]
|
|
17776
17854
|
);
|
|
17777
|
-
const validateDates =
|
|
17855
|
+
const validateDates = React68.useCallback(
|
|
17778
17856
|
(dates) => {
|
|
17779
17857
|
const startDate = dates?.from;
|
|
17780
17858
|
const endDate = dates?.to;
|
|
@@ -17824,7 +17902,7 @@ function useValidateDates({
|
|
|
17824
17902
|
}
|
|
17825
17903
|
|
|
17826
17904
|
// src/dashboard/time-picker/TimePicker.tsx
|
|
17827
|
-
var
|
|
17905
|
+
var React69 = __toESM(require("react"), 1);
|
|
17828
17906
|
var import_date_fns5 = require("date-fns");
|
|
17829
17907
|
var import_jsx_runtime177 = require("react/jsx-runtime");
|
|
17830
17908
|
var SHORT_TIME_FORMAT = "HH:mm";
|
|
@@ -17868,8 +17946,8 @@ var FORMAT_SETTINGS = {
|
|
|
17868
17946
|
},
|
|
17869
17947
|
hours: { interval_unit: "H", interval: 1, min_time: "00:00", max_time: "23:00" }
|
|
17870
17948
|
};
|
|
17871
|
-
var TimePicker =
|
|
17872
|
-
const resolvedOptions =
|
|
17949
|
+
var TimePicker = React69.forwardRef(function TimePicker2({ format: formatName = "time", timeSettings, options, ...selectProps }, ref) {
|
|
17950
|
+
const resolvedOptions = React69.useMemo(() => {
|
|
17873
17951
|
if (options) return options;
|
|
17874
17952
|
const settings = timeSettings ?? FORMAT_SETTINGS[formatName];
|
|
17875
17953
|
return buildOptions(settings);
|
|
@@ -17878,14 +17956,14 @@ var TimePicker = React68.forwardRef(function TimePicker2({ format: formatName =
|
|
|
17878
17956
|
});
|
|
17879
17957
|
|
|
17880
17958
|
// src/dashboard/file-input/FileInput.tsx
|
|
17881
|
-
var
|
|
17882
|
-
var
|
|
17959
|
+
var React70 = __toESM(require("react"), 1);
|
|
17960
|
+
var import_lucide_react51 = require("lucide-react");
|
|
17883
17961
|
var import_react_i18next41 = require("react-i18next");
|
|
17884
17962
|
var import_jsx_runtime178 = require("react/jsx-runtime");
|
|
17885
17963
|
function defaultDownload(url) {
|
|
17886
17964
|
window.open(url, "_blank", "noopener,noreferrer");
|
|
17887
17965
|
}
|
|
17888
|
-
var FileInput =
|
|
17966
|
+
var FileInput = React70.forwardRef(function FileInput2({
|
|
17889
17967
|
label,
|
|
17890
17968
|
value,
|
|
17891
17969
|
onChange,
|
|
@@ -17908,12 +17986,12 @@ var FileInput = React69.forwardRef(function FileInput2({
|
|
|
17908
17986
|
width,
|
|
17909
17987
|
downloadLabel
|
|
17910
17988
|
}, ref) {
|
|
17911
|
-
const internalRef =
|
|
17989
|
+
const internalRef = React70.useRef(null);
|
|
17912
17990
|
const inputRef = useCombinedRef(ref, internalRef);
|
|
17913
17991
|
const { t } = (0, import_react_i18next41.useTranslation)();
|
|
17914
17992
|
const resolvedLabel = label ?? t("upload_file");
|
|
17915
17993
|
const resolvedDownloadLabel = downloadLabel ?? t("download_attachment");
|
|
17916
|
-
const reactId =
|
|
17994
|
+
const reactId = React70.useId();
|
|
17917
17995
|
const inputId = `${name || "dash-file"}-${reactId}`;
|
|
17918
17996
|
const labelId = `${inputId}-label`;
|
|
17919
17997
|
const errorId = `${inputId}-error`;
|
|
@@ -17993,7 +18071,7 @@ var FileInput = React69.forwardRef(function FileInput2({
|
|
|
17993
18071
|
className: "inline-flex items-center gap-[7px] truncate border-0 bg-transparent p-0 text-[14px] font-medium text-[var(--chekin-color-brand-navy)] outline-none",
|
|
17994
18072
|
children: [
|
|
17995
18073
|
/* @__PURE__ */ (0, import_jsx_runtime178.jsx)("span", { className: "truncate", children: resolvedDownloadLabel }),
|
|
17996
|
-
/* @__PURE__ */ (0, import_jsx_runtime178.jsx)(
|
|
18074
|
+
/* @__PURE__ */ (0, import_jsx_runtime178.jsx)(import_lucide_react51.Download, { size: 15 })
|
|
17997
18075
|
]
|
|
17998
18076
|
}
|
|
17999
18077
|
) : /* @__PURE__ */ (0, import_jsx_runtime178.jsx)("span", { className: "truncate text-[14px] font-medium text-[var(--chekin-color-brand-navy)]", children: value.name }),
|
|
@@ -18005,13 +18083,13 @@ var FileInput = React69.forwardRef(function FileInput2({
|
|
|
18005
18083
|
onClick: handleClear,
|
|
18006
18084
|
className: "ml-2 flex h-[15px] w-[15px] items-center justify-center rounded-[3px] border-0 bg-transparent p-0 text-[#9696b9] outline-none hover:shadow-[0_3px_3px_#0f477734]",
|
|
18007
18085
|
"aria-label": t("remove_file"),
|
|
18008
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime178.jsx)(
|
|
18086
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime178.jsx)(import_lucide_react51.SquareX, { size: 15, fill: "#9696b9", color: "#f8f8f8", strokeWidth: 1.8 })
|
|
18009
18087
|
}
|
|
18010
18088
|
)
|
|
18011
18089
|
]
|
|
18012
18090
|
}
|
|
18013
18091
|
) : /* @__PURE__ */ (0, import_jsx_runtime178.jsx)("span", { className: "block min-w-0 flex-1 truncate text-left text-[var(--chekin-color-gray-1)]", children: placeholder ?? "" }),
|
|
18014
|
-
/* @__PURE__ */ (0, import_jsx_runtime178.jsx)("span", { className: "ml-auto flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ (0, import_jsx_runtime178.jsx)(
|
|
18092
|
+
/* @__PURE__ */ (0, import_jsx_runtime178.jsx)("span", { className: "ml-auto flex items-center gap-2 text-[var(--chekin-color-gray-2)]", children: /* @__PURE__ */ (0, import_jsx_runtime178.jsx)(import_lucide_react51.Paperclip, { size: 20 }) })
|
|
18015
18093
|
]
|
|
18016
18094
|
}
|
|
18017
18095
|
),
|
|
@@ -18050,10 +18128,10 @@ var FileInput = React69.forwardRef(function FileInput2({
|
|
|
18050
18128
|
});
|
|
18051
18129
|
|
|
18052
18130
|
// src/dashboard/select-icons-box/SelectIconsBox.tsx
|
|
18053
|
-
var
|
|
18131
|
+
var React71 = __toESM(require("react"), 1);
|
|
18054
18132
|
var import_jsx_runtime179 = require("react/jsx-runtime");
|
|
18055
18133
|
var FOCUSABLE_TRIGGER_SELECTOR2 = 'input:not([type="hidden"]):not([disabled]):not([readonly]), button:not([disabled])';
|
|
18056
|
-
var SelectIconsBox =
|
|
18134
|
+
var SelectIconsBox = React71.forwardRef(
|
|
18057
18135
|
function SelectIconsBox2({
|
|
18058
18136
|
children,
|
|
18059
18137
|
icons,
|
|
@@ -18069,10 +18147,10 @@ var SelectIconsBox = React70.forwardRef(
|
|
|
18069
18147
|
className,
|
|
18070
18148
|
boxClassName
|
|
18071
18149
|
}, ref) {
|
|
18072
|
-
const containerRef =
|
|
18150
|
+
const containerRef = React71.useRef(null);
|
|
18073
18151
|
const combinedContainerRef = useCombinedRef(containerRef, ref);
|
|
18074
18152
|
const isControlled = controlledOpen !== void 0;
|
|
18075
|
-
const [internalOpen, setInternalOpen] =
|
|
18153
|
+
const [internalOpen, setInternalOpen] = React71.useState(defaultOpen);
|
|
18076
18154
|
const isOpen = isControlled ? controlledOpen : internalOpen;
|
|
18077
18155
|
const setOpen = (next) => {
|
|
18078
18156
|
if (!isControlled) setInternalOpen(next);
|
|
@@ -18265,15 +18343,15 @@ var LegacyTextarea = (0, import_react89.forwardRef)(
|
|
|
18265
18343
|
LegacyTextarea.displayName = "LegacyTextarea";
|
|
18266
18344
|
|
|
18267
18345
|
// src/airbnb-fields/datepicker/DatePicker.tsx
|
|
18268
|
-
var
|
|
18269
|
-
var
|
|
18346
|
+
var React73 = __toESM(require("react"), 1);
|
|
18347
|
+
var import_lucide_react53 = require("lucide-react");
|
|
18270
18348
|
|
|
18271
18349
|
// src/airbnb-fields/field-trigger/FieldTrigger.tsx
|
|
18272
|
-
var
|
|
18273
|
-
var
|
|
18350
|
+
var React72 = __toESM(require("react"), 1);
|
|
18351
|
+
var import_lucide_react52 = require("lucide-react");
|
|
18274
18352
|
var import_react_i18next42 = require("react-i18next");
|
|
18275
18353
|
var import_jsx_runtime182 = require("react/jsx-runtime");
|
|
18276
|
-
var AirbnbFieldTrigger =
|
|
18354
|
+
var AirbnbFieldTrigger = React72.forwardRef(
|
|
18277
18355
|
({
|
|
18278
18356
|
as = "button",
|
|
18279
18357
|
id,
|
|
@@ -18334,7 +18412,7 @@ var AirbnbFieldTrigger = React71.forwardRef(
|
|
|
18334
18412
|
const resolvedTrailingAdornment = loading || trailingAdornment ? /* @__PURE__ */ (0, import_jsx_runtime182.jsxs)("span", { className: "flex items-center gap-2", children: [
|
|
18335
18413
|
trailingAdornment,
|
|
18336
18414
|
loading && /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(
|
|
18337
|
-
|
|
18415
|
+
import_lucide_react52.Loader2,
|
|
18338
18416
|
{
|
|
18339
18417
|
"aria-hidden": "true",
|
|
18340
18418
|
className: "h-5 w-5 animate-spin text-[var(--chekin-color-gray-1)]"
|
|
@@ -18441,7 +18519,7 @@ AirbnbFieldTrigger.displayName = "AirbnbFieldTrigger";
|
|
|
18441
18519
|
// src/airbnb-fields/datepicker/DatePicker.tsx
|
|
18442
18520
|
var import_jsx_runtime183 = require("react/jsx-runtime");
|
|
18443
18521
|
var DEFAULT_MIN_DATE = new Date(1920, 0, 1);
|
|
18444
|
-
var AirbnbDatePicker =
|
|
18522
|
+
var AirbnbDatePicker = React73.forwardRef(
|
|
18445
18523
|
({
|
|
18446
18524
|
label,
|
|
18447
18525
|
topLabel,
|
|
@@ -18466,24 +18544,24 @@ var AirbnbDatePicker = React72.forwardRef(
|
|
|
18466
18544
|
formatValue = formatDateValue
|
|
18467
18545
|
}, ref) => {
|
|
18468
18546
|
const { isMatch: isMobile3 } = useScreenResize(DEVICE.mobileXL);
|
|
18469
|
-
const [isOpen, setIsOpen] =
|
|
18470
|
-
const triggerId =
|
|
18471
|
-
const pickerId =
|
|
18472
|
-
const labelId =
|
|
18473
|
-
const valueId =
|
|
18474
|
-
const helperTextId =
|
|
18475
|
-
const errorId =
|
|
18476
|
-
const internalRef =
|
|
18547
|
+
const [isOpen, setIsOpen] = React73.useState(false);
|
|
18548
|
+
const triggerId = React73.useId();
|
|
18549
|
+
const pickerId = React73.useId();
|
|
18550
|
+
const labelId = React73.useId();
|
|
18551
|
+
const valueId = React73.useId();
|
|
18552
|
+
const helperTextId = React73.useId();
|
|
18553
|
+
const errorId = React73.useId();
|
|
18554
|
+
const internalRef = React73.useRef(null);
|
|
18477
18555
|
const combinedRef = useCombinedRef(ref, internalRef);
|
|
18478
|
-
const monthLabels =
|
|
18479
|
-
const resolvedMinDate =
|
|
18480
|
-
const resolvedMaxDate =
|
|
18481
|
-
const normalizedValue =
|
|
18482
|
-
const normalizedDefaultValue =
|
|
18556
|
+
const monthLabels = React73.useMemo(() => getMonthLabels(locale), [locale]);
|
|
18557
|
+
const resolvedMinDate = React73.useMemo(() => minDate ?? DEFAULT_MIN_DATE, [minDate]);
|
|
18558
|
+
const resolvedMaxDate = React73.useMemo(() => maxDate ?? /* @__PURE__ */ new Date(), [maxDate]);
|
|
18559
|
+
const normalizedValue = React73.useMemo(() => normalizeDateValue(value), [value]);
|
|
18560
|
+
const normalizedDefaultValue = React73.useMemo(
|
|
18483
18561
|
() => normalizeDateValue(defaultValue),
|
|
18484
18562
|
[defaultValue]
|
|
18485
18563
|
);
|
|
18486
|
-
const resolvedValue =
|
|
18564
|
+
const resolvedValue = React73.useMemo(
|
|
18487
18565
|
() => normalizedValue ? clampDate(normalizedValue, resolvedMinDate, resolvedMaxDate) : null,
|
|
18488
18566
|
[normalizedValue, resolvedMaxDate, resolvedMinDate]
|
|
18489
18567
|
);
|
|
@@ -18514,7 +18592,7 @@ var AirbnbDatePicker = React72.forwardRef(
|
|
|
18514
18592
|
minDate: resolvedMinDate,
|
|
18515
18593
|
maxDate: resolvedMaxDate
|
|
18516
18594
|
});
|
|
18517
|
-
const handleOpenChange =
|
|
18595
|
+
const handleOpenChange = React73.useCallback(
|
|
18518
18596
|
(nextOpen) => {
|
|
18519
18597
|
if (isBlocked && nextOpen) return;
|
|
18520
18598
|
setIsOpen(nextOpen);
|
|
@@ -18524,7 +18602,7 @@ var AirbnbDatePicker = React72.forwardRef(
|
|
|
18524
18602
|
},
|
|
18525
18603
|
[isBlocked]
|
|
18526
18604
|
);
|
|
18527
|
-
const handleDone =
|
|
18605
|
+
const handleDone = React73.useCallback(() => {
|
|
18528
18606
|
if (isBlocked) return;
|
|
18529
18607
|
onChange(clampDate(draftDate, resolvedMinDate, resolvedMaxDate));
|
|
18530
18608
|
handleOpenChange(false);
|
|
@@ -18536,11 +18614,11 @@ var AirbnbDatePicker = React72.forwardRef(
|
|
|
18536
18614
|
resolvedMaxDate,
|
|
18537
18615
|
resolvedMinDate
|
|
18538
18616
|
]);
|
|
18539
|
-
const handleTriggerClick =
|
|
18617
|
+
const handleTriggerClick = React73.useCallback(() => {
|
|
18540
18618
|
if (isBlocked) return;
|
|
18541
18619
|
setIsOpen(true);
|
|
18542
18620
|
}, [isBlocked]);
|
|
18543
|
-
const handleTriggerKeyDown =
|
|
18621
|
+
const handleTriggerKeyDown = React73.useCallback(
|
|
18544
18622
|
(event) => {
|
|
18545
18623
|
if (isBlocked) return;
|
|
18546
18624
|
if (event.key === "ArrowDown" || event.key === "ArrowUp" || event.key === "Enter" || event.key === " ") {
|
|
@@ -18550,7 +18628,7 @@ var AirbnbDatePicker = React72.forwardRef(
|
|
|
18550
18628
|
},
|
|
18551
18629
|
[isBlocked]
|
|
18552
18630
|
);
|
|
18553
|
-
|
|
18631
|
+
React73.useEffect(() => {
|
|
18554
18632
|
if (isBlocked) {
|
|
18555
18633
|
setIsOpen(false);
|
|
18556
18634
|
}
|
|
@@ -18590,7 +18668,7 @@ var AirbnbDatePicker = React72.forwardRef(
|
|
|
18590
18668
|
onClick: handleTriggerClick,
|
|
18591
18669
|
onKeyDown: handleTriggerKeyDown,
|
|
18592
18670
|
onBlur,
|
|
18593
|
-
trailingAdornment: /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(
|
|
18671
|
+
trailingAdornment: /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(import_lucide_react53.Calendar, { className: "h-5 w-5 text-[#1F1F1B]", strokeWidth: 2 })
|
|
18594
18672
|
}
|
|
18595
18673
|
),
|
|
18596
18674
|
/* @__PURE__ */ (0, import_jsx_runtime183.jsx)(
|
|
@@ -18627,12 +18705,12 @@ var AirbnbDatePicker = React72.forwardRef(
|
|
|
18627
18705
|
AirbnbDatePicker.displayName = "AirbnbDatePicker";
|
|
18628
18706
|
|
|
18629
18707
|
// src/airbnb-fields/input/Input.tsx
|
|
18630
|
-
var
|
|
18631
|
-
var
|
|
18708
|
+
var React74 = __toESM(require("react"), 1);
|
|
18709
|
+
var import_lucide_react54 = require("lucide-react");
|
|
18632
18710
|
var import_react_i18next43 = require("react-i18next");
|
|
18633
18711
|
var import_jsx_runtime184 = require("react/jsx-runtime");
|
|
18634
18712
|
var getInputValue = (value) => value != null ? String(value) : "";
|
|
18635
|
-
var AirbnbInput =
|
|
18713
|
+
var AirbnbInput = React74.forwardRef(
|
|
18636
18714
|
({
|
|
18637
18715
|
label,
|
|
18638
18716
|
topLabel,
|
|
@@ -18661,16 +18739,16 @@ var AirbnbInput = React73.forwardRef(
|
|
|
18661
18739
|
...props
|
|
18662
18740
|
}, ref) => {
|
|
18663
18741
|
const { t } = (0, import_react_i18next43.useTranslation)();
|
|
18664
|
-
const generatedId =
|
|
18665
|
-
const inputRef =
|
|
18742
|
+
const generatedId = React74.useId();
|
|
18743
|
+
const inputRef = React74.useRef(null);
|
|
18666
18744
|
const inputId = id ?? generatedId;
|
|
18667
18745
|
const fieldId = `${inputId}-field`;
|
|
18668
18746
|
const labelId = `${inputId}-label`;
|
|
18669
18747
|
const errorId = `${inputId}-error`;
|
|
18670
18748
|
const accessibleLabel = placeholder ?? label;
|
|
18671
|
-
const [isFocused, setIsFocused] =
|
|
18672
|
-
const [isPasswordRevealed, setIsPasswordRevealed] =
|
|
18673
|
-
const [currentValue, setCurrentValue] =
|
|
18749
|
+
const [isFocused, setIsFocused] = React74.useState(false);
|
|
18750
|
+
const [isPasswordRevealed, setIsPasswordRevealed] = React74.useState(false);
|
|
18751
|
+
const [currentValue, setCurrentValue] = React74.useState(
|
|
18674
18752
|
() => value != null ? getInputValue(value) : getInputValue(defaultValue)
|
|
18675
18753
|
);
|
|
18676
18754
|
const resolvedValue = value != null ? getInputValue(value) : currentValue;
|
|
@@ -18683,16 +18761,16 @@ var AirbnbInput = React73.forwardRef(
|
|
|
18683
18761
|
const triggerError = error ?? invalid;
|
|
18684
18762
|
const hasLabelMeta = Boolean(optional) || Boolean(tooltip);
|
|
18685
18763
|
const isBlocked = Boolean(disabled) || Boolean(loading);
|
|
18686
|
-
|
|
18764
|
+
React74.useLayoutEffect(() => {
|
|
18687
18765
|
const nextValue = value != null ? getInputValue(value) : getInputValue(inputRef.current?.value);
|
|
18688
18766
|
setCurrentValue((prevValue) => prevValue === nextValue ? prevValue : nextValue);
|
|
18689
18767
|
}, [value]);
|
|
18690
|
-
|
|
18768
|
+
React74.useEffect(() => {
|
|
18691
18769
|
if (!isPasswordInput) {
|
|
18692
18770
|
setIsPasswordRevealed(false);
|
|
18693
18771
|
}
|
|
18694
18772
|
}, [isPasswordInput]);
|
|
18695
|
-
const setRefs =
|
|
18773
|
+
const setRefs = React74.useCallback(
|
|
18696
18774
|
(node) => {
|
|
18697
18775
|
inputRef.current = node;
|
|
18698
18776
|
if (node && value == null) {
|
|
@@ -18793,7 +18871,7 @@ var AirbnbInput = React73.forwardRef(
|
|
|
18793
18871
|
className: "absolute bottom-0 right-0 flex h-6 w-6 items-center justify-center border-0 bg-transparent p-0 text-[#7A8399] hover:text-[#1F1F1B] hover:opacity-85 disabled:cursor-not-allowed disabled:opacity-50",
|
|
18794
18872
|
"aria-label": isPasswordRevealed ? t("hide_password") : t("show_password"),
|
|
18795
18873
|
children: /* @__PURE__ */ (0, import_jsx_runtime184.jsx)(
|
|
18796
|
-
|
|
18874
|
+
import_lucide_react54.Eye,
|
|
18797
18875
|
{
|
|
18798
18876
|
size: 18,
|
|
18799
18877
|
"aria-hidden": "true",
|
|
@@ -18810,11 +18888,11 @@ var AirbnbInput = React73.forwardRef(
|
|
|
18810
18888
|
AirbnbInput.displayName = "AirbnbInput";
|
|
18811
18889
|
|
|
18812
18890
|
// src/airbnb-fields/phone-field/PhoneField.tsx
|
|
18813
|
-
var
|
|
18814
|
-
var
|
|
18891
|
+
var React80 = __toESM(require("react"), 1);
|
|
18892
|
+
var import_lucide_react56 = require("lucide-react");
|
|
18815
18893
|
|
|
18816
18894
|
// src/airbnb-fields/select/Select.tsx
|
|
18817
|
-
var
|
|
18895
|
+
var React79 = __toESM(require("react"), 1);
|
|
18818
18896
|
|
|
18819
18897
|
// src/airbnb-fields/select/SelectDesktopMenu.tsx
|
|
18820
18898
|
var import_jsx_runtime185 = require("react/jsx-runtime");
|
|
@@ -19159,10 +19237,10 @@ function AirbnbSelectMobileContent({
|
|
|
19159
19237
|
}
|
|
19160
19238
|
|
|
19161
19239
|
// src/airbnb-fields/select/SelectTrigger.tsx
|
|
19162
|
-
var
|
|
19163
|
-
var
|
|
19240
|
+
var React75 = __toESM(require("react"), 1);
|
|
19241
|
+
var import_lucide_react55 = require("lucide-react");
|
|
19164
19242
|
var import_jsx_runtime189 = require("react/jsx-runtime");
|
|
19165
|
-
var AirbnbSelectTrigger =
|
|
19243
|
+
var AirbnbSelectTrigger = React75.forwardRef(
|
|
19166
19244
|
({
|
|
19167
19245
|
id,
|
|
19168
19246
|
open,
|
|
@@ -19215,7 +19293,7 @@ var AirbnbSelectTrigger = React74.forwardRef(
|
|
|
19215
19293
|
onKeyDown,
|
|
19216
19294
|
onBlur,
|
|
19217
19295
|
trailingAdornment: /* @__PURE__ */ (0, import_jsx_runtime189.jsx)(
|
|
19218
|
-
|
|
19296
|
+
import_lucide_react55.ChevronDown,
|
|
19219
19297
|
{
|
|
19220
19298
|
className: open ? "h-6 w-6 rotate-180 text-[#1F1F1B] transition-transform" : "h-6 w-6 text-[#1F1F1B] transition-transform"
|
|
19221
19299
|
}
|
|
@@ -19227,7 +19305,7 @@ var AirbnbSelectTrigger = React74.forwardRef(
|
|
|
19227
19305
|
AirbnbSelectTrigger.displayName = "AirbnbSelectTrigger";
|
|
19228
19306
|
|
|
19229
19307
|
// src/airbnb-fields/select/useDesktopSelect.ts
|
|
19230
|
-
var
|
|
19308
|
+
var React76 = __toESM(require("react"), 1);
|
|
19231
19309
|
function useDesktopSelect({
|
|
19232
19310
|
isMobile: isMobile3,
|
|
19233
19311
|
isOpen,
|
|
@@ -19236,12 +19314,12 @@ function useDesktopSelect({
|
|
|
19236
19314
|
disabled,
|
|
19237
19315
|
onChange
|
|
19238
19316
|
}) {
|
|
19239
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
19240
|
-
const triggerRef =
|
|
19241
|
-
const listRef =
|
|
19242
|
-
const optionRefs =
|
|
19317
|
+
const [highlightedIndex, setHighlightedIndex] = React76.useState(-1);
|
|
19318
|
+
const triggerRef = React76.useRef(null);
|
|
19319
|
+
const listRef = React76.useRef(null);
|
|
19320
|
+
const optionRefs = React76.useRef([]);
|
|
19243
19321
|
const selectedIndex = getOptionIndex2(options, value);
|
|
19244
|
-
|
|
19322
|
+
React76.useEffect(() => {
|
|
19245
19323
|
if (!isOpen || isMobile3) return;
|
|
19246
19324
|
setHighlightedIndex((currentIndex) => {
|
|
19247
19325
|
if (currentIndex >= 0) {
|
|
@@ -19256,34 +19334,34 @@ function useDesktopSelect({
|
|
|
19256
19334
|
window.cancelAnimationFrame(frameId);
|
|
19257
19335
|
};
|
|
19258
19336
|
}, [isMobile3, isOpen, options, selectedIndex]);
|
|
19259
|
-
|
|
19337
|
+
React76.useEffect(() => {
|
|
19260
19338
|
if (!isOpen || isMobile3 || highlightedIndex < 0) return;
|
|
19261
19339
|
optionRefs.current[highlightedIndex]?.scrollIntoView({
|
|
19262
19340
|
block: "nearest"
|
|
19263
19341
|
});
|
|
19264
19342
|
}, [highlightedIndex, isMobile3, isOpen]);
|
|
19265
|
-
|
|
19343
|
+
React76.useEffect(() => {
|
|
19266
19344
|
if (isOpen) return;
|
|
19267
19345
|
setHighlightedIndex(-1);
|
|
19268
19346
|
}, [isOpen]);
|
|
19269
|
-
const focusTrigger =
|
|
19347
|
+
const focusTrigger = React76.useCallback(() => {
|
|
19270
19348
|
triggerRef.current?.focus();
|
|
19271
19349
|
}, []);
|
|
19272
|
-
const handleSelect =
|
|
19350
|
+
const handleSelect = React76.useCallback(
|
|
19273
19351
|
(option) => {
|
|
19274
19352
|
if (option.isDisabled || disabled) return;
|
|
19275
19353
|
onChange?.(option);
|
|
19276
19354
|
},
|
|
19277
19355
|
[disabled, onChange]
|
|
19278
19356
|
);
|
|
19279
|
-
const openMenu =
|
|
19357
|
+
const openMenu = React76.useCallback(
|
|
19280
19358
|
(targetIndex) => {
|
|
19281
19359
|
const fallbackIndex = selectedIndex >= 0 ? selectedIndex : getFirstEnabledOptionIndex2(options);
|
|
19282
19360
|
setHighlightedIndex(targetIndex ?? fallbackIndex);
|
|
19283
19361
|
},
|
|
19284
19362
|
[options, selectedIndex]
|
|
19285
19363
|
);
|
|
19286
|
-
const handleTriggerKeyDown =
|
|
19364
|
+
const handleTriggerKeyDown = React76.useCallback(
|
|
19287
19365
|
(event, onOpen) => {
|
|
19288
19366
|
if (disabled) return;
|
|
19289
19367
|
if (event.key === "ArrowDown") {
|
|
@@ -19308,7 +19386,7 @@ function useDesktopSelect({
|
|
|
19308
19386
|
},
|
|
19309
19387
|
[disabled, openMenu, options, selectedIndex]
|
|
19310
19388
|
);
|
|
19311
|
-
const handleMenuKeyDown =
|
|
19389
|
+
const handleMenuKeyDown = React76.useCallback(
|
|
19312
19390
|
(event, onClose) => {
|
|
19313
19391
|
if (event.key === "Escape") {
|
|
19314
19392
|
event.preventDefault();
|
|
@@ -19358,7 +19436,7 @@ function useDesktopSelect({
|
|
|
19358
19436
|
},
|
|
19359
19437
|
[focusTrigger, highlightedIndex, onChange, options]
|
|
19360
19438
|
);
|
|
19361
|
-
const setOptionRef =
|
|
19439
|
+
const setOptionRef = React76.useCallback(
|
|
19362
19440
|
(index, node) => {
|
|
19363
19441
|
optionRefs.current[index] = node;
|
|
19364
19442
|
},
|
|
@@ -19378,23 +19456,23 @@ function useDesktopSelect({
|
|
|
19378
19456
|
}
|
|
19379
19457
|
|
|
19380
19458
|
// src/airbnb-fields/select/useMobileSelectWheel.ts
|
|
19381
|
-
var
|
|
19459
|
+
var React77 = __toESM(require("react"), 1);
|
|
19382
19460
|
function useMobileSelectWheel({ isMobile: isMobile3, isOpen, options, value, disabled }) {
|
|
19383
|
-
const [pendingValue, setPendingValue] =
|
|
19461
|
+
const [pendingValue, setPendingValue] = React77.useState(
|
|
19384
19462
|
value ?? null
|
|
19385
19463
|
);
|
|
19386
|
-
const [mobileScrollTop, setMobileScrollTop] =
|
|
19387
|
-
const mobileListRef =
|
|
19388
|
-
const scrollSettleTimeoutRef =
|
|
19389
|
-
const scrollAnimationFrameRef =
|
|
19390
|
-
const getTargetIndex =
|
|
19464
|
+
const [mobileScrollTop, setMobileScrollTop] = React77.useState(0);
|
|
19465
|
+
const mobileListRef = React77.useRef(null);
|
|
19466
|
+
const scrollSettleTimeoutRef = React77.useRef(null);
|
|
19467
|
+
const scrollAnimationFrameRef = React77.useRef(null);
|
|
19468
|
+
const getTargetIndex = React77.useCallback(
|
|
19391
19469
|
(targetValue) => {
|
|
19392
19470
|
const selectedIndex = getOptionIndex2(options, targetValue);
|
|
19393
19471
|
return selectedIndex >= 0 ? selectedIndex : getFirstEnabledOptionIndex2(options);
|
|
19394
19472
|
},
|
|
19395
19473
|
[options]
|
|
19396
19474
|
);
|
|
19397
|
-
const syncScrollPosition =
|
|
19475
|
+
const syncScrollPosition = React77.useCallback(
|
|
19398
19476
|
(targetValue, behavior = "instant") => {
|
|
19399
19477
|
const targetIndex = getTargetIndex(targetValue);
|
|
19400
19478
|
if (targetIndex < 0) return;
|
|
@@ -19413,27 +19491,27 @@ function useMobileSelectWheel({ isMobile: isMobile3, isOpen, options, value, dis
|
|
|
19413
19491
|
},
|
|
19414
19492
|
[getTargetIndex, options]
|
|
19415
19493
|
);
|
|
19416
|
-
const clearScrollSettleTimeout =
|
|
19494
|
+
const clearScrollSettleTimeout = React77.useCallback(() => {
|
|
19417
19495
|
if (scrollSettleTimeoutRef.current === null) return;
|
|
19418
19496
|
window.clearTimeout(scrollSettleTimeoutRef.current);
|
|
19419
19497
|
scrollSettleTimeoutRef.current = null;
|
|
19420
19498
|
}, []);
|
|
19421
|
-
const clearScrollAnimationFrame =
|
|
19499
|
+
const clearScrollAnimationFrame = React77.useCallback(() => {
|
|
19422
19500
|
if (scrollAnimationFrameRef.current === null) return;
|
|
19423
19501
|
window.cancelAnimationFrame(scrollAnimationFrameRef.current);
|
|
19424
19502
|
scrollAnimationFrameRef.current = null;
|
|
19425
19503
|
}, []);
|
|
19426
|
-
|
|
19504
|
+
React77.useEffect(
|
|
19427
19505
|
() => () => {
|
|
19428
19506
|
clearScrollSettleTimeout();
|
|
19429
19507
|
clearScrollAnimationFrame();
|
|
19430
19508
|
},
|
|
19431
19509
|
[clearScrollAnimationFrame, clearScrollSettleTimeout]
|
|
19432
19510
|
);
|
|
19433
|
-
|
|
19511
|
+
React77.useEffect(() => {
|
|
19434
19512
|
setPendingValue(value ?? null);
|
|
19435
19513
|
}, [value]);
|
|
19436
|
-
|
|
19514
|
+
React77.useLayoutEffect(() => {
|
|
19437
19515
|
if (!isMobile3 || !isOpen) return;
|
|
19438
19516
|
const frameId = window.requestAnimationFrame(() => {
|
|
19439
19517
|
syncScrollPosition(value ?? null, "instant");
|
|
@@ -19442,7 +19520,7 @@ function useMobileSelectWheel({ isMobile: isMobile3, isOpen, options, value, dis
|
|
|
19442
19520
|
window.cancelAnimationFrame(frameId);
|
|
19443
19521
|
};
|
|
19444
19522
|
}, [isMobile3, isOpen, syncScrollPosition, value]);
|
|
19445
|
-
const settleScroll =
|
|
19523
|
+
const settleScroll = React77.useCallback(() => {
|
|
19446
19524
|
if (!mobileListRef.current) return;
|
|
19447
19525
|
const nextIndex = Math.round(mobileListRef.current.scrollTop / MOBILE_OPTION_HEIGHT);
|
|
19448
19526
|
const nextOption = options[nextIndex];
|
|
@@ -19454,13 +19532,13 @@ function useMobileSelectWheel({ isMobile: isMobile3, isOpen, options, value, dis
|
|
|
19454
19532
|
}
|
|
19455
19533
|
setPendingValue(nextOption);
|
|
19456
19534
|
}, [options, pendingValue]);
|
|
19457
|
-
const scheduleScrollSettle =
|
|
19535
|
+
const scheduleScrollSettle = React77.useCallback(() => {
|
|
19458
19536
|
clearScrollSettleTimeout();
|
|
19459
19537
|
scrollSettleTimeoutRef.current = window.setTimeout(() => {
|
|
19460
19538
|
settleScroll();
|
|
19461
19539
|
}, MOBILE_SCROLL_SETTLE_DELAY);
|
|
19462
19540
|
}, [clearScrollSettleTimeout, settleScroll]);
|
|
19463
|
-
const handleScroll =
|
|
19541
|
+
const handleScroll = React77.useCallback(() => {
|
|
19464
19542
|
if (!mobileListRef.current) return;
|
|
19465
19543
|
const nextScrollTop = mobileListRef.current.scrollTop;
|
|
19466
19544
|
clearScrollAnimationFrame();
|
|
@@ -19470,7 +19548,7 @@ function useMobileSelectWheel({ isMobile: isMobile3, isOpen, options, value, dis
|
|
|
19470
19548
|
});
|
|
19471
19549
|
scheduleScrollSettle();
|
|
19472
19550
|
}, [clearScrollAnimationFrame, scheduleScrollSettle]);
|
|
19473
|
-
const focusOptionByIndex =
|
|
19551
|
+
const focusOptionByIndex = React77.useCallback(
|
|
19474
19552
|
(index, behavior = "instant", updatePendingImmediately = behavior === "instant") => {
|
|
19475
19553
|
if (!mobileListRef.current || index < 0 || index >= options.length) return;
|
|
19476
19554
|
const option = options[index];
|
|
@@ -19488,7 +19566,7 @@ function useMobileSelectWheel({ isMobile: isMobile3, isOpen, options, value, dis
|
|
|
19488
19566
|
},
|
|
19489
19567
|
[options, scheduleScrollSettle]
|
|
19490
19568
|
);
|
|
19491
|
-
const handleOptionClick =
|
|
19569
|
+
const handleOptionClick = React77.useCallback(
|
|
19492
19570
|
(option) => {
|
|
19493
19571
|
if (!mobileListRef.current || disabled || option.isDisabled) return;
|
|
19494
19572
|
const optionIndex = getOptionIndex2(options, option);
|
|
@@ -19497,7 +19575,7 @@ function useMobileSelectWheel({ isMobile: isMobile3, isOpen, options, value, dis
|
|
|
19497
19575
|
},
|
|
19498
19576
|
[disabled, focusOptionByIndex, options]
|
|
19499
19577
|
);
|
|
19500
|
-
const moveByStep =
|
|
19578
|
+
const moveByStep = React77.useCallback(
|
|
19501
19579
|
(step) => {
|
|
19502
19580
|
const currentIndex = getOptionIndex2(options, pendingValue);
|
|
19503
19581
|
const fallbackIndex = step === 1 ? getFirstEnabledOptionIndex2(options) : getLastEnabledOptionIndex2(options);
|
|
@@ -19509,7 +19587,7 @@ function useMobileSelectWheel({ isMobile: isMobile3, isOpen, options, value, dis
|
|
|
19509
19587
|
},
|
|
19510
19588
|
[focusOptionByIndex, options, pendingValue]
|
|
19511
19589
|
);
|
|
19512
|
-
const moveToBoundary =
|
|
19590
|
+
const moveToBoundary = React77.useCallback(
|
|
19513
19591
|
(boundary) => {
|
|
19514
19592
|
const targetIndex = boundary === "start" ? getFirstEnabledOptionIndex2(options) : getLastEnabledOptionIndex2(options);
|
|
19515
19593
|
if (targetIndex >= 0) {
|
|
@@ -19518,7 +19596,7 @@ function useMobileSelectWheel({ isMobile: isMobile3, isOpen, options, value, dis
|
|
|
19518
19596
|
},
|
|
19519
19597
|
[focusOptionByIndex, options]
|
|
19520
19598
|
);
|
|
19521
|
-
const syncPendingValue =
|
|
19599
|
+
const syncPendingValue = React77.useCallback(
|
|
19522
19600
|
(nextValue) => {
|
|
19523
19601
|
const normalizedValue = nextValue ?? null;
|
|
19524
19602
|
const matchedIndex = getOptionIndex2(options, normalizedValue);
|
|
@@ -19546,9 +19624,9 @@ function useMobileSelectWheel({ isMobile: isMobile3, isOpen, options, value, dis
|
|
|
19546
19624
|
}
|
|
19547
19625
|
|
|
19548
19626
|
// src/airbnb-fields/select/useSelectIds.ts
|
|
19549
|
-
var
|
|
19627
|
+
var React78 = __toESM(require("react"), 1);
|
|
19550
19628
|
function useSelectIds2({ name, hasValue, error, hideErrorMessage }) {
|
|
19551
|
-
const reactId =
|
|
19629
|
+
const reactId = React78.useId().replace(/:/g, "");
|
|
19552
19630
|
const baseId = name ? `select-${name}` : `select-${reactId}`;
|
|
19553
19631
|
const triggerId = `${baseId}-trigger`;
|
|
19554
19632
|
const labelId = `${baseId}-label`;
|
|
@@ -19558,7 +19636,7 @@ function useSelectIds2({ name, hasValue, error, hideErrorMessage }) {
|
|
|
19558
19636
|
const listboxId = `${baseId}-listbox`;
|
|
19559
19637
|
const describedErrorId = error && !hideErrorMessage ? errorId : void 0;
|
|
19560
19638
|
const describedBy = [!hasValue ? helperTextId : null, describedErrorId].filter(Boolean).join(" ") || void 0;
|
|
19561
|
-
const getOptionId2 =
|
|
19639
|
+
const getOptionId2 = React78.useCallback(
|
|
19562
19640
|
(index) => `${baseId}-option-${index}`,
|
|
19563
19641
|
[baseId]
|
|
19564
19642
|
);
|
|
@@ -19577,7 +19655,7 @@ function useSelectIds2({ name, hasValue, error, hideErrorMessage }) {
|
|
|
19577
19655
|
|
|
19578
19656
|
// src/airbnb-fields/select/Select.tsx
|
|
19579
19657
|
var import_jsx_runtime190 = require("react/jsx-runtime");
|
|
19580
|
-
var AirbnbSelect =
|
|
19658
|
+
var AirbnbSelect = React79.forwardRef(function AirbnbSelect2({
|
|
19581
19659
|
options = [],
|
|
19582
19660
|
value,
|
|
19583
19661
|
onChange,
|
|
@@ -19604,8 +19682,8 @@ var AirbnbSelect = React78.forwardRef(function AirbnbSelect2({
|
|
|
19604
19682
|
filterOption
|
|
19605
19683
|
}, ref) {
|
|
19606
19684
|
const { isMatch: isMobile3 } = useScreenResize(DEVICE.mobileXL);
|
|
19607
|
-
const [isOpen, setIsOpen] =
|
|
19608
|
-
const containerRef =
|
|
19685
|
+
const [isOpen, setIsOpen] = React79.useState(false);
|
|
19686
|
+
const containerRef = React79.useRef(null);
|
|
19609
19687
|
const filteredOptions = filterOption ? options.filter(filterOption) : options;
|
|
19610
19688
|
const hasValue = Boolean(value);
|
|
19611
19689
|
const helperText = placeholder ?? label;
|
|
@@ -19667,12 +19745,12 @@ var AirbnbSelect = React78.forwardRef(function AirbnbSelect2({
|
|
|
19667
19745
|
onOutsideClick: () => setIsOpen(false),
|
|
19668
19746
|
isDisabled: !isOpen || isMobile3
|
|
19669
19747
|
});
|
|
19670
|
-
|
|
19748
|
+
React79.useEffect(() => {
|
|
19671
19749
|
if (isBlocked) {
|
|
19672
19750
|
setIsOpen(false);
|
|
19673
19751
|
}
|
|
19674
19752
|
}, [isBlocked]);
|
|
19675
|
-
|
|
19753
|
+
React79.useEffect(
|
|
19676
19754
|
function setCorrectOptionIfThereIsOnlyValue() {
|
|
19677
19755
|
if (value?.value === void 0 || value.value === null || value.label !== "") {
|
|
19678
19756
|
return;
|
|
@@ -19684,7 +19762,7 @@ var AirbnbSelect = React78.forwardRef(function AirbnbSelect2({
|
|
|
19684
19762
|
},
|
|
19685
19763
|
[onChange, filteredOptions, value]
|
|
19686
19764
|
);
|
|
19687
|
-
const handleMobileOpenChange =
|
|
19765
|
+
const handleMobileOpenChange = React79.useCallback(
|
|
19688
19766
|
(nextOpen) => {
|
|
19689
19767
|
if (isBlocked && nextOpen) return;
|
|
19690
19768
|
setIsOpen(nextOpen);
|
|
@@ -19695,7 +19773,7 @@ var AirbnbSelect = React78.forwardRef(function AirbnbSelect2({
|
|
|
19695
19773
|
},
|
|
19696
19774
|
[focusTrigger, isBlocked, syncPendingValue, value]
|
|
19697
19775
|
);
|
|
19698
|
-
const handleMobileDone =
|
|
19776
|
+
const handleMobileDone = React79.useCallback(() => {
|
|
19699
19777
|
if (isBlocked) return;
|
|
19700
19778
|
const finalOption = pendingValue;
|
|
19701
19779
|
if (finalOption && finalOption.value !== value?.value) {
|
|
@@ -19704,7 +19782,7 @@ var AirbnbSelect = React78.forwardRef(function AirbnbSelect2({
|
|
|
19704
19782
|
setIsOpen(false);
|
|
19705
19783
|
focusTrigger();
|
|
19706
19784
|
}, [focusTrigger, isBlocked, onChange, pendingValue, value]);
|
|
19707
|
-
const handleTriggerClick =
|
|
19785
|
+
const handleTriggerClick = React79.useCallback(() => {
|
|
19708
19786
|
if (isBlocked) return;
|
|
19709
19787
|
setIsOpen((prev) => {
|
|
19710
19788
|
const nextOpen = !prev;
|
|
@@ -19876,7 +19954,7 @@ function formatPhoneCodeOptionLabel2(option) {
|
|
|
19876
19954
|
const value = String(option.value);
|
|
19877
19955
|
return label.includes(value) ? label : `${label} (${value})`;
|
|
19878
19956
|
}
|
|
19879
|
-
var AirbnbPhoneField =
|
|
19957
|
+
var AirbnbPhoneField = React80.forwardRef(
|
|
19880
19958
|
({
|
|
19881
19959
|
label,
|
|
19882
19960
|
topLabel,
|
|
@@ -19900,9 +19978,9 @@ var AirbnbPhoneField = React79.forwardRef(
|
|
|
19900
19978
|
codePlaceholder = "+00",
|
|
19901
19979
|
defaultCode
|
|
19902
19980
|
}, ref) => {
|
|
19903
|
-
const inputId =
|
|
19981
|
+
const inputId = React80.useId();
|
|
19904
19982
|
const effectiveCode = value?.code || defaultCode || "";
|
|
19905
|
-
const codeOptions =
|
|
19983
|
+
const codeOptions = React80.useMemo(
|
|
19906
19984
|
() => options.map((option) => ({
|
|
19907
19985
|
value: option.value,
|
|
19908
19986
|
label: formatPhoneCodeOptionLabel2(option),
|
|
@@ -19910,7 +19988,7 @@ var AirbnbPhoneField = React79.forwardRef(
|
|
|
19910
19988
|
})),
|
|
19911
19989
|
[options]
|
|
19912
19990
|
);
|
|
19913
|
-
const selectedCodeOption =
|
|
19991
|
+
const selectedCodeOption = React80.useMemo(
|
|
19914
19992
|
() => codeOptions.find((option) => option.value === effectiveCode) ?? null,
|
|
19915
19993
|
[codeOptions, effectiveCode]
|
|
19916
19994
|
);
|
|
@@ -19999,7 +20077,7 @@ var AirbnbPhoneField = React79.forwardRef(
|
|
|
19999
20077
|
children: [
|
|
20000
20078
|
/* @__PURE__ */ (0, import_jsx_runtime191.jsx)("span", { children: valueLabel ?? codePlaceholder }),
|
|
20001
20079
|
/* @__PURE__ */ (0, import_jsx_runtime191.jsx)(
|
|
20002
|
-
|
|
20080
|
+
import_lucide_react56.ChevronDown,
|
|
20003
20081
|
{
|
|
20004
20082
|
className: cn("h-5 w-5 transition-transform", open ? "rotate-180" : ""),
|
|
20005
20083
|
strokeWidth: 2
|
|
@@ -20046,8 +20124,8 @@ var AirbnbPhoneField = React79.forwardRef(
|
|
|
20046
20124
|
AirbnbPhoneField.displayName = "AirbnbPhoneField";
|
|
20047
20125
|
|
|
20048
20126
|
// src/airbnb-fields/searchable-select/SearchableSelect.tsx
|
|
20049
|
-
var
|
|
20050
|
-
var
|
|
20127
|
+
var React81 = __toESM(require("react"), 1);
|
|
20128
|
+
var import_lucide_react57 = require("lucide-react");
|
|
20051
20129
|
var import_react_virtual3 = require("@tanstack/react-virtual");
|
|
20052
20130
|
var import_react90 = require("react");
|
|
20053
20131
|
var import_jsx_runtime192 = require("react/jsx-runtime");
|
|
@@ -20090,13 +20168,13 @@ var AirbnbSearchableSelectInternal = ({
|
|
|
20090
20168
|
loadingMessage
|
|
20091
20169
|
}, ref) => {
|
|
20092
20170
|
const { isMatch: isMobile3 } = useScreenResize(DEVICE.mobileXL);
|
|
20093
|
-
const reactId =
|
|
20094
|
-
const [open, setOpen] =
|
|
20095
|
-
const [internalSearchValue, setInternalSearchValue] =
|
|
20096
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
20097
|
-
const containerRef =
|
|
20098
|
-
const triggerRef =
|
|
20099
|
-
const inputRef =
|
|
20171
|
+
const reactId = React81.useId();
|
|
20172
|
+
const [open, setOpen] = React81.useState(false);
|
|
20173
|
+
const [internalSearchValue, setInternalSearchValue] = React81.useState("");
|
|
20174
|
+
const [highlightedIndex, setHighlightedIndex] = React81.useState(-1);
|
|
20175
|
+
const containerRef = React81.useRef(null);
|
|
20176
|
+
const triggerRef = React81.useRef(null);
|
|
20177
|
+
const inputRef = React81.useRef(null);
|
|
20100
20178
|
const listboxId = `${reactId}-listbox`;
|
|
20101
20179
|
const labelId = `${reactId}-label`;
|
|
20102
20180
|
const valueId = `${reactId}-value`;
|
|
@@ -20105,13 +20183,13 @@ var AirbnbSearchableSelectInternal = ({
|
|
|
20105
20183
|
const searchInputId = `${reactId}-search`;
|
|
20106
20184
|
const effectiveSearchValue = searchValue ?? internalSearchValue;
|
|
20107
20185
|
const shouldFilterLocally = !onSearchChange && filterOption !== null;
|
|
20108
|
-
const visibleOptions =
|
|
20186
|
+
const visibleOptions = React81.useMemo(() => {
|
|
20109
20187
|
if (!shouldFilterLocally || !effectiveSearchValue) {
|
|
20110
20188
|
return options;
|
|
20111
20189
|
}
|
|
20112
20190
|
return options.filter((option) => filterOption(option, effectiveSearchValue));
|
|
20113
20191
|
}, [effectiveSearchValue, filterOption, options, shouldFilterLocally]);
|
|
20114
|
-
const selectedIndex =
|
|
20192
|
+
const selectedIndex = React81.useMemo(
|
|
20115
20193
|
() => visibleOptions.findIndex((option) => option.value === value?.value),
|
|
20116
20194
|
[value?.value, visibleOptions]
|
|
20117
20195
|
);
|
|
@@ -20137,7 +20215,7 @@ var AirbnbSearchableSelectInternal = ({
|
|
|
20137
20215
|
},
|
|
20138
20216
|
[handleOnOpenChange]
|
|
20139
20217
|
);
|
|
20140
|
-
|
|
20218
|
+
React81.useEffect(() => {
|
|
20141
20219
|
if (isBlocked) {
|
|
20142
20220
|
setSelectOpen(false);
|
|
20143
20221
|
return;
|
|
@@ -20150,7 +20228,7 @@ var AirbnbSearchableSelectInternal = ({
|
|
|
20150
20228
|
window.cancelAnimationFrame(frameId);
|
|
20151
20229
|
};
|
|
20152
20230
|
}, [isBlocked, open, setSelectOpen]);
|
|
20153
|
-
|
|
20231
|
+
React81.useEffect(() => {
|
|
20154
20232
|
if (!open) {
|
|
20155
20233
|
setHighlightedIndex(-1);
|
|
20156
20234
|
return;
|
|
@@ -20245,7 +20323,7 @@ var AirbnbSearchableSelectInternal = ({
|
|
|
20245
20323
|
onOptionHover: setHighlightedIndex
|
|
20246
20324
|
}
|
|
20247
20325
|
);
|
|
20248
|
-
|
|
20326
|
+
React81.useImperativeHandle(ref, () => triggerRef.current, []);
|
|
20249
20327
|
return /* @__PURE__ */ (0, import_jsx_runtime192.jsxs)("div", { ref: containerRef, className: cn("relative w-full max-w-[425px]", className), children: [
|
|
20250
20328
|
name && /* @__PURE__ */ (0, import_jsx_runtime192.jsx)("input", { type: "hidden", name, value: value ? String(value.value) : "" }),
|
|
20251
20329
|
/* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
|
|
@@ -20283,7 +20361,7 @@ var AirbnbSearchableSelectInternal = ({
|
|
|
20283
20361
|
onKeyDown: handleTriggerKeyDown,
|
|
20284
20362
|
onBlur,
|
|
20285
20363
|
trailingAdornment: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
|
|
20286
|
-
|
|
20364
|
+
import_lucide_react57.ChevronDown,
|
|
20287
20365
|
{
|
|
20288
20366
|
className: cn(
|
|
20289
20367
|
"h-6 w-6 text-[#1F1F1B] transition-transform",
|
|
@@ -20323,7 +20401,7 @@ var AirbnbSearchableSelectInternal = ({
|
|
|
20323
20401
|
) : null
|
|
20324
20402
|
] });
|
|
20325
20403
|
};
|
|
20326
|
-
var AirbnbSearchableSelect =
|
|
20404
|
+
var AirbnbSearchableSelect = React81.forwardRef(
|
|
20327
20405
|
AirbnbSearchableSelectInternal
|
|
20328
20406
|
);
|
|
20329
20407
|
function AirbnbSearchableSelectContent({
|
|
@@ -20350,9 +20428,9 @@ function AirbnbSearchableSelectContent({
|
|
|
20350
20428
|
onOptionClick,
|
|
20351
20429
|
onOptionHover
|
|
20352
20430
|
}) {
|
|
20353
|
-
const listRef =
|
|
20354
|
-
const lastLoadMoreOptionsLengthRef =
|
|
20355
|
-
const previousHighlightedIndexRef =
|
|
20431
|
+
const listRef = React81.useRef(null);
|
|
20432
|
+
const lastLoadMoreOptionsLengthRef = React81.useRef(null);
|
|
20433
|
+
const previousHighlightedIndexRef = React81.useRef(highlightedIndex);
|
|
20356
20434
|
const rowCount = options.length + (loading && options.length > 0 ? 1 : 0);
|
|
20357
20435
|
const virtualizer = (0, import_react_virtual3.useVirtualizer)({
|
|
20358
20436
|
count: rowCount,
|
|
@@ -20363,7 +20441,7 @@ function AirbnbSearchableSelectContent({
|
|
|
20363
20441
|
const virtualItems = virtualizer.getVirtualItems();
|
|
20364
20442
|
const emptyMessage = noOptionsMessage?.() ?? "No matches found";
|
|
20365
20443
|
const loadingText = loadingMessage?.() ?? "Loading...";
|
|
20366
|
-
|
|
20444
|
+
React81.useEffect(() => {
|
|
20367
20445
|
const lastItem = virtualItems[virtualItems.length - 1];
|
|
20368
20446
|
const shouldLoadMore = !!lastItem && hasNextPage && !loading && lastItem.index >= options.length - LOAD_MORE_THRESHOLD;
|
|
20369
20447
|
if (shouldLoadMore && lastLoadMoreOptionsLengthRef.current !== options.length) {
|
|
@@ -20371,7 +20449,7 @@ function AirbnbSearchableSelectContent({
|
|
|
20371
20449
|
onLoadMore?.();
|
|
20372
20450
|
}
|
|
20373
20451
|
}, [hasNextPage, loading, onLoadMore, options.length, virtualItems]);
|
|
20374
|
-
|
|
20452
|
+
React81.useEffect(() => {
|
|
20375
20453
|
const hasHighlightedIndexChanged = previousHighlightedIndexRef.current !== highlightedIndex;
|
|
20376
20454
|
previousHighlightedIndexRef.current = highlightedIndex;
|
|
20377
20455
|
if (highlightedIndex >= 0 && hasHighlightedIndexChanged) {
|
|
@@ -20381,7 +20459,7 @@ function AirbnbSearchableSelectContent({
|
|
|
20381
20459
|
return /* @__PURE__ */ (0, import_jsx_runtime192.jsxs)("div", { className: "p-2", children: [
|
|
20382
20460
|
/* @__PURE__ */ (0, import_jsx_runtime192.jsxs)("div", { className: "relative mb-2", children: [
|
|
20383
20461
|
/* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
|
|
20384
|
-
|
|
20462
|
+
import_lucide_react57.Search,
|
|
20385
20463
|
{
|
|
20386
20464
|
"aria-hidden": "true",
|
|
20387
20465
|
className: "absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 text-[#9696B9]"
|
|
@@ -20489,15 +20567,15 @@ function getNextEnabledIndex(options, startIndex, step) {
|
|
|
20489
20567
|
}
|
|
20490
20568
|
|
|
20491
20569
|
// src/airbnb-fields/search-input/SearchInput.tsx
|
|
20492
|
-
var
|
|
20570
|
+
var React82 = __toESM(require("react"), 1);
|
|
20493
20571
|
var import_react_i18next44 = require("react-i18next");
|
|
20494
|
-
var
|
|
20572
|
+
var import_lucide_react58 = require("lucide-react");
|
|
20495
20573
|
var import_jsx_runtime193 = require("react/jsx-runtime");
|
|
20496
|
-
var AirbnbSearchInput =
|
|
20574
|
+
var AirbnbSearchInput = React82.forwardRef(({ onReset, placeholder, wrapperClassName, ...props }, ref) => {
|
|
20497
20575
|
const { t } = (0, import_react_i18next44.useTranslation)();
|
|
20498
20576
|
const placeholderText = placeholder || t("search_property") + "...";
|
|
20499
20577
|
return /* @__PURE__ */ (0, import_jsx_runtime193.jsxs)("div", { className: cn("input-wrapper relative", wrapperClassName), children: [
|
|
20500
|
-
/* @__PURE__ */ (0, import_jsx_runtime193.jsx)(
|
|
20578
|
+
/* @__PURE__ */ (0, import_jsx_runtime193.jsx)(import_lucide_react58.Search, { className: "absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 transform text-[#9696B9]" }),
|
|
20501
20579
|
/* @__PURE__ */ (0, import_jsx_runtime193.jsx)(
|
|
20502
20580
|
"input",
|
|
20503
20581
|
{
|
|
@@ -20523,7 +20601,7 @@ var AirbnbSearchInput = React81.forwardRef(({ onReset, placeholder, wrapperClass
|
|
|
20523
20601
|
variant: "ghost",
|
|
20524
20602
|
onClick: onReset,
|
|
20525
20603
|
className: "absolute right-0 top-1/2 h-5 w-5 -translate-y-1/2 transform text-[#9696B9]",
|
|
20526
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(
|
|
20604
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(import_lucide_react58.X, { className: "h-5 w-5" })
|
|
20527
20605
|
}
|
|
20528
20606
|
)
|
|
20529
20607
|
] });
|
|
@@ -20531,11 +20609,11 @@ var AirbnbSearchInput = React81.forwardRef(({ onReset, placeholder, wrapperClass
|
|
|
20531
20609
|
AirbnbSearchInput.displayName = "AirbnbSearchInput";
|
|
20532
20610
|
|
|
20533
20611
|
// src/airbnb-fields/switch/Switch.tsx
|
|
20534
|
-
var
|
|
20612
|
+
var React83 = __toESM(require("react"), 1);
|
|
20535
20613
|
var SwitchPrimitives2 = __toESM(require("@radix-ui/react-switch"), 1);
|
|
20536
|
-
var
|
|
20614
|
+
var import_lucide_react59 = require("lucide-react");
|
|
20537
20615
|
var import_jsx_runtime194 = require("react/jsx-runtime");
|
|
20538
|
-
var AirbnbSwitch =
|
|
20616
|
+
var AirbnbSwitch = React83.forwardRef(
|
|
20539
20617
|
({
|
|
20540
20618
|
className,
|
|
20541
20619
|
value,
|
|
@@ -20549,7 +20627,7 @@ var AirbnbSwitch = React82.forwardRef(
|
|
|
20549
20627
|
wrapperClassName,
|
|
20550
20628
|
...props
|
|
20551
20629
|
}, ref) => {
|
|
20552
|
-
const generatedId =
|
|
20630
|
+
const generatedId = React83.useId();
|
|
20553
20631
|
const fieldId = id || generatedId;
|
|
20554
20632
|
const switchElement = /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(
|
|
20555
20633
|
SwitchPrimitives2.Root,
|
|
@@ -20579,7 +20657,7 @@ var AirbnbSwitch = React82.forwardRef(
|
|
|
20579
20657
|
"data-[state=checked]:translate-x-[12px] data-[state=unchecked]:translate-x-0"
|
|
20580
20658
|
),
|
|
20581
20659
|
children: /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(
|
|
20582
|
-
|
|
20660
|
+
import_lucide_react59.Check,
|
|
20583
20661
|
{
|
|
20584
20662
|
"aria-hidden": "true",
|
|
20585
20663
|
className: "h-3 w-3 text-[#222222] opacity-0 transition-opacity duration-150 group-data-[state=checked]:opacity-100",
|