@underverse-ui/underverse 2.0.7 → 2.0.8
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/api-reference.json +1 -1
- package/dist/index.cjs +182 -68
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +210 -96
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -854,7 +854,7 @@ function useOverlayScrollbarTarget(targetRef, options = {}) {
|
|
|
854
854
|
var OverlayScrollbarProvider_default = OverlayScrollbarProvider;
|
|
855
855
|
|
|
856
856
|
// src/components/Input.tsx
|
|
857
|
-
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
857
|
+
import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
858
858
|
var Input = forwardRef3(
|
|
859
859
|
({
|
|
860
860
|
label,
|
|
@@ -877,6 +877,7 @@ var Input = forwardRef3(
|
|
|
877
877
|
value,
|
|
878
878
|
maxLength,
|
|
879
879
|
rightAddon,
|
|
880
|
+
rightSection,
|
|
880
881
|
borderMode,
|
|
881
882
|
...rest
|
|
882
883
|
}, ref) => {
|
|
@@ -1048,7 +1049,7 @@ var Input = forwardRef3(
|
|
|
1048
1049
|
radiusClass,
|
|
1049
1050
|
// Icon padding adjustments
|
|
1050
1051
|
LeftIcon && "pl-10",
|
|
1051
|
-
(RightIcon || showPasswordToggle || clearable || loading2 || success || errMsg) && "pr-10",
|
|
1052
|
+
(RightIcon || showPasswordToggle || clearable || loading2 || success || errMsg || rightSection) && "pr-10",
|
|
1052
1053
|
// Variant styles
|
|
1053
1054
|
variantStyles5[variant].container,
|
|
1054
1055
|
errMsg ? variantStyles5[variant].error : variantStyles5[variant].focus,
|
|
@@ -1061,45 +1062,57 @@ var Input = forwardRef3(
|
|
|
1061
1062
|
...restInput
|
|
1062
1063
|
}
|
|
1063
1064
|
),
|
|
1064
|
-
/* @__PURE__ */ jsxs5(
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1065
|
+
/* @__PURE__ */ jsxs5(
|
|
1066
|
+
"div",
|
|
1067
|
+
{
|
|
1068
|
+
className: cn(
|
|
1069
|
+
"absolute z-10 flex items-center gap-1",
|
|
1070
|
+
rightSection ? "inset-y-0 right-0" : "right-3 top-1/2 -translate-y-1/2"
|
|
1071
|
+
),
|
|
1072
|
+
children: [
|
|
1073
|
+
/* @__PURE__ */ jsxs5("div", { className: cn("flex items-center gap-1", rightSection && "px-1"), children: [
|
|
1074
|
+
getStatusIcon(),
|
|
1075
|
+
RightIcon && !loading2 && !success && !errMsg && /* @__PURE__ */ jsx6(RightIcon, { className: cn("text-muted-foreground", sizeStyles7[size].icon) }),
|
|
1076
|
+
clearable && hasValue && !loading2 && /* @__PURE__ */ jsx6(
|
|
1077
|
+
"button",
|
|
1078
|
+
{
|
|
1079
|
+
type: "button",
|
|
1080
|
+
onClick: () => {
|
|
1081
|
+
if (onClear) return onClear();
|
|
1082
|
+
rest.onChange?.({ target: { value: "" } });
|
|
1083
|
+
},
|
|
1084
|
+
className: cn(
|
|
1085
|
+
"flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors rounded-md",
|
|
1086
|
+
"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1",
|
|
1087
|
+
"active:bg-accent active:text-accent-foreground",
|
|
1088
|
+
sizeStyles7[size].iconButton
|
|
1089
|
+
),
|
|
1090
|
+
tabIndex: 0,
|
|
1091
|
+
"aria-label": gi18n.clearInput ?? "Clear input",
|
|
1092
|
+
children: /* @__PURE__ */ jsx6(X, { className: sizeStyles7[size].icon })
|
|
1093
|
+
}
|
|
1094
|
+
),
|
|
1095
|
+
showPasswordToggle && /* @__PURE__ */ jsx6(
|
|
1096
|
+
"button",
|
|
1097
|
+
{
|
|
1098
|
+
type: "button",
|
|
1099
|
+
onClick: () => setShowPassword(!showPassword),
|
|
1100
|
+
className: cn(
|
|
1101
|
+
"flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors rounded-full",
|
|
1102
|
+
"focus:outline-none focus-visible:ring-1 focus-visible:ring-ring/40",
|
|
1103
|
+
"active:bg-accent/50 active:text-accent-foreground",
|
|
1104
|
+
sizeStyles7[size].iconButton
|
|
1105
|
+
),
|
|
1106
|
+
tabIndex: 0,
|
|
1107
|
+
"aria-label": showPassword ? gi18n.hidePassword ?? "Hide password" : gi18n.showPassword ?? "Show password",
|
|
1108
|
+
children: showPassword ? /* @__PURE__ */ jsx6(EyeOff, { className: sizeStyles7[size].icon }) : /* @__PURE__ */ jsx6(Eye, { className: sizeStyles7[size].icon })
|
|
1109
|
+
}
|
|
1110
|
+
)
|
|
1111
|
+
] }),
|
|
1112
|
+
rightSection
|
|
1113
|
+
]
|
|
1114
|
+
}
|
|
1115
|
+
),
|
|
1103
1116
|
rightAddon,
|
|
1104
1117
|
variant === "minimal" && /* @__PURE__ */ jsx6(
|
|
1105
1118
|
"div",
|
|
@@ -1134,27 +1147,128 @@ var Input = forwardRef3(
|
|
|
1134
1147
|
}
|
|
1135
1148
|
);
|
|
1136
1149
|
Input.displayName = "Input";
|
|
1150
|
+
var searchButtonWidthStyles = {
|
|
1151
|
+
xs: "w-6",
|
|
1152
|
+
sm: "w-8",
|
|
1153
|
+
md: "w-10",
|
|
1154
|
+
lg: "w-12",
|
|
1155
|
+
xl: "w-14"
|
|
1156
|
+
};
|
|
1157
|
+
var searchButtonPaddingStyles = {
|
|
1158
|
+
xs: "pr-14",
|
|
1159
|
+
sm: "pr-18",
|
|
1160
|
+
md: "pr-20",
|
|
1161
|
+
lg: "pr-24",
|
|
1162
|
+
xl: "pr-28"
|
|
1163
|
+
};
|
|
1164
|
+
var searchButtonRadiusStyles = {
|
|
1165
|
+
none: "rounded-r-none",
|
|
1166
|
+
sm: "rounded-r-sm",
|
|
1167
|
+
md: "rounded-r-md",
|
|
1168
|
+
lg: "rounded-r-lg",
|
|
1169
|
+
xl: "rounded-r-xl",
|
|
1170
|
+
"2xl": "rounded-r-2xl",
|
|
1171
|
+
"3xl": "rounded-r-3xl",
|
|
1172
|
+
full: "rounded-r-full",
|
|
1173
|
+
daewoo: "rounded-r",
|
|
1174
|
+
infiniq: "rounded-r-full"
|
|
1175
|
+
};
|
|
1137
1176
|
var SearchInput = forwardRef3(
|
|
1138
|
-
({
|
|
1139
|
-
|
|
1177
|
+
({
|
|
1178
|
+
mode = "default",
|
|
1179
|
+
onSearch,
|
|
1180
|
+
searchDelay = 300,
|
|
1181
|
+
searchButtonLabel = "Search",
|
|
1182
|
+
placeholder = "Search\u2026",
|
|
1183
|
+
value,
|
|
1184
|
+
defaultValue,
|
|
1185
|
+
onChange,
|
|
1186
|
+
onClear,
|
|
1187
|
+
onKeyDown,
|
|
1188
|
+
clearable = true,
|
|
1189
|
+
size = "md",
|
|
1190
|
+
className,
|
|
1191
|
+
disabled,
|
|
1192
|
+
loading: loading2 = false,
|
|
1193
|
+
rightSection,
|
|
1194
|
+
borderMode,
|
|
1195
|
+
...props
|
|
1196
|
+
}, ref) => {
|
|
1197
|
+
const [uncontrolledValue, setUncontrolledValue] = useState3(defaultValue ?? "");
|
|
1198
|
+
const isControlled = value !== void 0;
|
|
1199
|
+
const searchValue = isControlled ? value : uncontrolledValue;
|
|
1200
|
+
const searchText = String(searchValue ?? "");
|
|
1201
|
+
const globalConfig = useUnderverseUIConfig();
|
|
1202
|
+
const resolvedBorderMode = borderMode ?? globalConfig.input?.borderMode ?? globalConfig.borderMode ?? "full";
|
|
1203
|
+
const searchButtonRadiusClass = searchButtonRadiusStyles[resolvedBorderMode] ?? getBorderRadiusClass(resolvedBorderMode);
|
|
1204
|
+
const triggerSearch = useCallback2(() => {
|
|
1205
|
+
onSearch?.(searchText);
|
|
1206
|
+
}, [onSearch, searchText]);
|
|
1140
1207
|
React5.useEffect(() => {
|
|
1141
|
-
if (!onSearch) return;
|
|
1208
|
+
if (!onSearch || mode !== "default") return;
|
|
1142
1209
|
const timer = setTimeout(() => {
|
|
1143
|
-
onSearch(
|
|
1210
|
+
onSearch(searchText);
|
|
1144
1211
|
}, searchDelay);
|
|
1145
1212
|
return () => clearTimeout(timer);
|
|
1146
|
-
}, [
|
|
1213
|
+
}, [mode, onSearch, searchDelay, searchText]);
|
|
1214
|
+
const searchButton = mode === "button" ? /* @__PURE__ */ jsx6(
|
|
1215
|
+
"button",
|
|
1216
|
+
{
|
|
1217
|
+
type: "button",
|
|
1218
|
+
onClick: triggerSearch,
|
|
1219
|
+
disabled: disabled || loading2,
|
|
1220
|
+
className: cn(
|
|
1221
|
+
"flex h-full shrink-0 cursor-pointer items-center justify-center border-l border-border bg-transparent text-foreground",
|
|
1222
|
+
"transition-colors hover:bg-accent hover:text-accent-foreground",
|
|
1223
|
+
"focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
|
|
1224
|
+
"disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent",
|
|
1225
|
+
searchButtonWidthStyles[size],
|
|
1226
|
+
searchButtonRadiusClass
|
|
1227
|
+
),
|
|
1228
|
+
"aria-label": searchButtonLabel,
|
|
1229
|
+
children: /* @__PURE__ */ jsx6(Search, { className: formControlSizeStyles[size].icon, "aria-hidden": "true" })
|
|
1230
|
+
}
|
|
1231
|
+
) : null;
|
|
1147
1232
|
return /* @__PURE__ */ jsx6(
|
|
1148
1233
|
Input,
|
|
1149
1234
|
{
|
|
1150
1235
|
ref,
|
|
1151
1236
|
type: "search",
|
|
1152
|
-
leftIcon: Search,
|
|
1237
|
+
leftIcon: mode === "default" ? Search : void 0,
|
|
1153
1238
|
placeholder,
|
|
1154
|
-
clearable
|
|
1239
|
+
clearable,
|
|
1155
1240
|
value: searchValue,
|
|
1156
|
-
onChange: (
|
|
1157
|
-
|
|
1241
|
+
onChange: (event) => {
|
|
1242
|
+
if (!isControlled) setUncontrolledValue(event.target.value);
|
|
1243
|
+
onChange?.(event);
|
|
1244
|
+
},
|
|
1245
|
+
onClear: () => {
|
|
1246
|
+
if (!isControlled) {
|
|
1247
|
+
setUncontrolledValue("");
|
|
1248
|
+
} else if (!onClear && onChange) {
|
|
1249
|
+
onChange({ target: { value: "" }, currentTarget: { value: "" } });
|
|
1250
|
+
}
|
|
1251
|
+
onClear?.();
|
|
1252
|
+
},
|
|
1253
|
+
onKeyDown: (event) => {
|
|
1254
|
+
onKeyDown?.(event);
|
|
1255
|
+
if (mode === "button" && event.key === "Enter" && !event.defaultPrevented && !event.nativeEvent.isComposing) {
|
|
1256
|
+
triggerSearch();
|
|
1257
|
+
}
|
|
1258
|
+
},
|
|
1259
|
+
size,
|
|
1260
|
+
className: cn(
|
|
1261
|
+
"[&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-decoration]:appearance-none",
|
|
1262
|
+
mode === "button" && searchButtonPaddingStyles[size],
|
|
1263
|
+
className
|
|
1264
|
+
),
|
|
1265
|
+
disabled,
|
|
1266
|
+
loading: loading2,
|
|
1267
|
+
rightSection: mode === "button" ? /* @__PURE__ */ jsxs5(Fragment2, { children: [
|
|
1268
|
+
rightSection,
|
|
1269
|
+
searchButton
|
|
1270
|
+
] }) : rightSection,
|
|
1271
|
+
borderMode,
|
|
1158
1272
|
...props
|
|
1159
1273
|
}
|
|
1160
1274
|
);
|
|
@@ -2996,7 +3110,7 @@ var Skeleton_default = Skeleton;
|
|
|
2996
3110
|
// src/components/Progress.tsx
|
|
2997
3111
|
import React13 from "react";
|
|
2998
3112
|
import { Check as Check2, X as X4, Clock } from "lucide-react";
|
|
2999
|
-
import { Fragment as
|
|
3113
|
+
import { Fragment as Fragment3, jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3000
3114
|
var variantStyles2 = {
|
|
3001
3115
|
default: "bg-muted-foreground",
|
|
3002
3116
|
primary: "bg-linear-to-r from-primary via-primary/90 to-primary",
|
|
@@ -3157,7 +3271,7 @@ var CircularProgress = ({
|
|
|
3157
3271
|
]
|
|
3158
3272
|
}
|
|
3159
3273
|
),
|
|
3160
|
-
/* @__PURE__ */ jsx15("div", { className: "absolute inset-0 flex flex-col items-center justify-center text-center", children: children ? children : /* @__PURE__ */ jsxs11(
|
|
3274
|
+
/* @__PURE__ */ jsx15("div", { className: "absolute inset-0 flex flex-col items-center justify-center text-center", children: children ? children : /* @__PURE__ */ jsxs11(Fragment3, { children: [
|
|
3161
3275
|
getContentIcon(),
|
|
3162
3276
|
showValue && !indeterminate && /* @__PURE__ */ jsx15("span", { className: cn("text-sm font-semibold", isComplete ? "text-success" : isError ? "text-destructive" : "text-foreground"), children: isComplete ? "\u2713" : isError ? "\u2717" : `${Math.round(percentage)}%` }),
|
|
3163
3277
|
indeterminate && /* @__PURE__ */ jsx15(Clock, { className: "w-4 h-4 text-muted-foreground animate-pulse" })
|
|
@@ -4473,7 +4587,7 @@ import * as React19 from "react";
|
|
|
4473
4587
|
import { useId as useId4 } from "react";
|
|
4474
4588
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
4475
4589
|
import { ChevronDown, Search as Search4, SearchX, Check as Check3, X as X8 } from "lucide-react";
|
|
4476
|
-
import { Fragment as
|
|
4590
|
+
import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
4477
4591
|
var getOptionLabel = (option) => {
|
|
4478
4592
|
return typeof option === "string" ? option : option.label;
|
|
4479
4593
|
};
|
|
@@ -4966,7 +5080,7 @@ var Combobox = ({
|
|
|
4966
5080
|
className
|
|
4967
5081
|
)
|
|
4968
5082
|
};
|
|
4969
|
-
const triggerContents = /* @__PURE__ */ jsxs18(
|
|
5083
|
+
const triggerContents = /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
4970
5084
|
selectedIcon && /* @__PURE__ */ jsx22("span", { className: cn("mr-2 flex shrink-0 items-center justify-center overflow-hidden text-primary", formControlSizeStyles[size].icon), children: selectedIcon }),
|
|
4971
5085
|
/* @__PURE__ */ jsx22("span", { className: cn(formControlValueClass, "text-left", !displayValue && "text-muted-foreground", fontBold && "font-semibold"), children: renderValue && selectedOption ? renderValue(selectedOption) : displayValue || placeholder }),
|
|
4972
5086
|
/* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-1.5 ml-2 shrink-0", children: [
|
|
@@ -5814,7 +5928,7 @@ function parseDateString(str, locale = "en") {
|
|
|
5814
5928
|
import { Calendar, ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight3, Sparkles, X as XIcon } from "lucide-react";
|
|
5815
5929
|
import * as React23 from "react";
|
|
5816
5930
|
import { useId as useId5 } from "react";
|
|
5817
|
-
import { Fragment as
|
|
5931
|
+
import { Fragment as Fragment5, jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
5818
5932
|
function normalizeToLocalDate(date) {
|
|
5819
5933
|
if (!date) return null;
|
|
5820
5934
|
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
@@ -6205,7 +6319,7 @@ var DatePicker = ({
|
|
|
6205
6319
|
}
|
|
6206
6320
|
)
|
|
6207
6321
|
] }),
|
|
6208
|
-
viewMode === "calendar" && /* @__PURE__ */ jsxs20(
|
|
6322
|
+
viewMode === "calendar" && /* @__PURE__ */ jsxs20(Fragment5, { children: [
|
|
6209
6323
|
/* @__PURE__ */ jsx27("div", { className: cn("grid grid-cols-7 gap-1 mb-2 px-0.5"), children: (weekdayLabels || (locale === "vi" ? ["CN", "T2", "T3", "T4", "T5", "T6", "T7"] : ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"])).map(
|
|
6210
6324
|
(day, idx) => /* @__PURE__ */ jsx27(
|
|
6211
6325
|
"div",
|
|
@@ -6976,7 +7090,7 @@ var DateRangePicker = ({
|
|
|
6976
7090
|
}
|
|
6977
7091
|
)
|
|
6978
7092
|
] }),
|
|
6979
|
-
viewMode === "calendar" && /* @__PURE__ */ jsxs20(
|
|
7093
|
+
viewMode === "calendar" && /* @__PURE__ */ jsxs20(Fragment5, { children: [
|
|
6980
7094
|
/* @__PURE__ */ jsx27("div", { className: cn("grid grid-cols-7 gap-1 px-0.5", size === "sm" ? "mb-1" : size === "lg" ? "mb-3" : "mb-2"), children: (locale === "vi" ? ["CN", "T2", "T3", "T4", "T5", "T6", "T7"] : ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]).map((d, idx) => /* @__PURE__ */ jsx27(
|
|
6981
7095
|
"div",
|
|
6982
7096
|
{
|
|
@@ -7400,7 +7514,7 @@ function getLeapMonthOffset(a11, timeZone) {
|
|
|
7400
7514
|
}
|
|
7401
7515
|
|
|
7402
7516
|
// src/components/LunarDatePicker.tsx
|
|
7403
|
-
import { Fragment as
|
|
7517
|
+
import { Fragment as Fragment6, jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
7404
7518
|
function toSolarDate(value) {
|
|
7405
7519
|
if (!value) return null;
|
|
7406
7520
|
const solar = lunarToSolar({
|
|
@@ -7904,7 +8018,7 @@ var LunarDatePicker = ({
|
|
|
7904
8018
|
}
|
|
7905
8019
|
)
|
|
7906
8020
|
] }),
|
|
7907
|
-
viewMode === "calendar" && /* @__PURE__ */ jsxs21(
|
|
8021
|
+
viewMode === "calendar" && /* @__PURE__ */ jsxs21(Fragment6, { children: [
|
|
7908
8022
|
/* @__PURE__ */ jsx28("div", { className: cn("grid grid-cols-7 gap-1 mb-2 px-0.5"), children: (weekdayLabels || (locale === "vi" ? ["CN", "T2", "T3", "T4", "T5", "T6", "T7"] : ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"])).map(
|
|
7909
8023
|
(day, idx) => /* @__PURE__ */ jsx28(
|
|
7910
8024
|
"div",
|
|
@@ -8544,7 +8658,7 @@ var LunarDateRangePicker = ({
|
|
|
8544
8658
|
}
|
|
8545
8659
|
)
|
|
8546
8660
|
] }),
|
|
8547
|
-
viewMode === "calendar" && /* @__PURE__ */ jsxs21(
|
|
8661
|
+
viewMode === "calendar" && /* @__PURE__ */ jsxs21(Fragment6, { children: [
|
|
8548
8662
|
/* @__PURE__ */ jsx28("div", { className: cn("grid grid-cols-7 gap-1 px-0.5", size === "sm" ? "mb-1" : size === "lg" ? "mb-3" : "mb-2"), children: (locale === "vi" ? ["CN", "T2", "T3", "T4", "T5", "T6", "T7"] : ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]).map((d, idx) => /* @__PURE__ */ jsx28(
|
|
8549
8663
|
"div",
|
|
8550
8664
|
{
|
|
@@ -9611,7 +9725,7 @@ function MonthYearPicker({
|
|
|
9611
9725
|
}
|
|
9612
9726
|
|
|
9613
9727
|
// src/components/Calendar.tsx
|
|
9614
|
-
import { Fragment as
|
|
9728
|
+
import { Fragment as Fragment8, jsx as jsx30, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
9615
9729
|
var VIETNAM_HOLIDAYS = [
|
|
9616
9730
|
{ date: "01-01", name: "T\u1EBFt D\u01B0\u01A1ng l\u1ECBch", recurring: true },
|
|
9617
9731
|
{ date: "04-30", name: "Gi\u1EA3i ph\xF3ng mi\u1EC1n Nam", recurring: true },
|
|
@@ -10106,7 +10220,7 @@ function Calendar4({
|
|
|
10106
10220
|
}
|
|
10107
10221
|
)
|
|
10108
10222
|
] }),
|
|
10109
|
-
display === "week" ? /* @__PURE__ */ jsxs23(
|
|
10223
|
+
display === "week" ? /* @__PURE__ */ jsxs23(Fragment8, { children: [
|
|
10110
10224
|
showWeekdays && /* @__PURE__ */ jsx30("div", { className: cn("grid grid-cols-7", sz.grid, "mb-1 text-center text-muted-foreground font-medium"), children: weekdays.map((w) => /* @__PURE__ */ jsx30("div", { className: cn(sz.head), children: w }, `w-${w}`)) }),
|
|
10111
10225
|
/* @__PURE__ */ jsx30("div", { className: cn("grid grid-cols-7", sz.grid), children: weekDays.map((d, idx) => {
|
|
10112
10226
|
const inMonth = true;
|
|
@@ -10262,7 +10376,7 @@ function Calendar4({
|
|
|
10262
10376
|
// src/components/TimePicker.tsx
|
|
10263
10377
|
import * as React27 from "react";
|
|
10264
10378
|
import { Clock as Clock2, X as X10, Check as Check5, Sun, Moon, Sunset, Coffee } from "lucide-react";
|
|
10265
|
-
import { Fragment as
|
|
10379
|
+
import { Fragment as Fragment9, jsx as jsx31, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
10266
10380
|
var pad = (n) => n.toString().padStart(2, "0");
|
|
10267
10381
|
var clamp2 = (n, min, max) => Math.min(max, Math.max(min, n));
|
|
10268
10382
|
var WHEEL_ITEM_HEIGHT2 = {
|
|
@@ -11299,7 +11413,7 @@ function TimePicker({
|
|
|
11299
11413
|
}
|
|
11300
11414
|
);
|
|
11301
11415
|
})(),
|
|
11302
|
-
includeSeconds && /* @__PURE__ */ jsxs24(
|
|
11416
|
+
includeSeconds && /* @__PURE__ */ jsxs24(Fragment9, { children: [
|
|
11303
11417
|
/* @__PURE__ */ jsx31("div", { className: cn("flex flex-col items-center justify-center", panelSz.separatorPad, compactPanel && "pt-6"), children: /* @__PURE__ */ jsxs24("div", { className: "flex flex-col gap-2", children: [
|
|
11304
11418
|
/* @__PURE__ */ jsx31("div", { className: "w-1.5 h-1.5 rounded-full bg-primary/60" }),
|
|
11305
11419
|
/* @__PURE__ */ jsx31("div", { className: "w-1.5 h-1.5 rounded-full bg-primary/60" })
|
|
@@ -13286,7 +13400,7 @@ function useVisibleSlotRange(args) {
|
|
|
13286
13400
|
}
|
|
13287
13401
|
|
|
13288
13402
|
// src/components/CalendarTimeline/CalendarTimeline.tsx
|
|
13289
|
-
import { Fragment as
|
|
13403
|
+
import { Fragment as Fragment11, jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
13290
13404
|
function CalendarTimeline({
|
|
13291
13405
|
resources,
|
|
13292
13406
|
events,
|
|
@@ -14612,7 +14726,7 @@ function CalendarTimeline({
|
|
|
14612
14726
|
]
|
|
14613
14727
|
}
|
|
14614
14728
|
),
|
|
14615
|
-
!isViewOnly && (interactions?.resizableEvents ?? true) && ev.resizable !== false ? /* @__PURE__ */ jsxs31(
|
|
14729
|
+
!isViewOnly && (interactions?.resizableEvents ?? true) && ev.resizable !== false ? /* @__PURE__ */ jsxs31(Fragment11, { children: [
|
|
14616
14730
|
/* @__PURE__ */ jsx38(
|
|
14617
14731
|
"div",
|
|
14618
14732
|
{
|
|
@@ -14792,7 +14906,7 @@ import * as React35 from "react";
|
|
|
14792
14906
|
import { useId as useId10 } from "react";
|
|
14793
14907
|
import { useVirtualizer as useVirtualizer2 } from "@tanstack/react-virtual";
|
|
14794
14908
|
import { ChevronDown as ChevronDown4, Search as Search5, Check as Check6, SearchX as SearchX2, Loader2 as Loader23, X as X12, Sparkles as Sparkles3 } from "lucide-react";
|
|
14795
|
-
import { Fragment as
|
|
14909
|
+
import { Fragment as Fragment12, jsx as jsx39, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
14796
14910
|
var comboboxScrollClassName2 = [
|
|
14797
14911
|
"scrollbar-thin",
|
|
14798
14912
|
"[scrollbar-width:thin]",
|
|
@@ -15271,7 +15385,7 @@ var MultiCombobox = ({
|
|
|
15271
15385
|
!!effectiveError && "border-destructive focus-visible:ring-destructive/30"
|
|
15272
15386
|
),
|
|
15273
15387
|
children: [
|
|
15274
|
-
/* @__PURE__ */ jsx39("div", { className: "flex min-h-0 min-w-0 flex-1 items-center gap-1.5 overflow-hidden", children: value.length > 0 ? showTags ? /* @__PURE__ */ jsxs32(
|
|
15388
|
+
/* @__PURE__ */ jsx39("div", { className: "flex min-h-0 min-w-0 flex-1 items-center gap-1.5 overflow-hidden", children: value.length > 0 ? showTags ? /* @__PURE__ */ jsxs32(Fragment12, { children: [
|
|
15275
15389
|
visibleTags.map((option) => {
|
|
15276
15390
|
if (renderTag) {
|
|
15277
15391
|
return /* @__PURE__ */ jsx39("span", { className: "inline-flex max-h-full min-w-0 shrink overflow-hidden", children: renderTag(option, () => handleRemove(option.value)) }, option.value);
|
|
@@ -15873,7 +15987,7 @@ var ToggleGroup = (props) => {
|
|
|
15873
15987
|
|
|
15874
15988
|
// src/components/Slider.tsx
|
|
15875
15989
|
import * as React37 from "react";
|
|
15876
|
-
import { Fragment as
|
|
15990
|
+
import { Fragment as Fragment13, jsx as jsx41, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
15877
15991
|
var SIZE_STYLES = {
|
|
15878
15992
|
sm: {
|
|
15879
15993
|
track: "h-1",
|
|
@@ -16131,7 +16245,7 @@ var Slider = React37.forwardRef(
|
|
|
16131
16245
|
tooltipClassName
|
|
16132
16246
|
}
|
|
16133
16247
|
),
|
|
16134
|
-
isRange && /* @__PURE__ */ jsxs34(
|
|
16248
|
+
isRange && /* @__PURE__ */ jsxs34(Fragment13, { children: [
|
|
16135
16249
|
/* @__PURE__ */ jsx41(
|
|
16136
16250
|
SliderTooltip,
|
|
16137
16251
|
{
|
|
@@ -16227,7 +16341,7 @@ var Slider = React37.forwardRef(
|
|
|
16227
16341
|
}
|
|
16228
16342
|
const minZ = activeThumb === "min" ? "z-20" : "z-10";
|
|
16229
16343
|
const maxZ = activeThumb === "max" ? "z-20" : "z-10";
|
|
16230
|
-
return /* @__PURE__ */ jsxs34(
|
|
16344
|
+
return /* @__PURE__ */ jsxs34(Fragment13, { children: [
|
|
16231
16345
|
/* @__PURE__ */ jsx41(
|
|
16232
16346
|
"div",
|
|
16233
16347
|
{
|
|
@@ -16290,7 +16404,7 @@ Slider.displayName = "Slider";
|
|
|
16290
16404
|
// src/components/OverlayControls.tsx
|
|
16291
16405
|
import { Dot as Dot2, Maximize2, Pause, Play, RotateCcw, RotateCw, Volume2, VolumeX } from "lucide-react";
|
|
16292
16406
|
import React38 from "react";
|
|
16293
|
-
import { Fragment as
|
|
16407
|
+
import { Fragment as Fragment14, jsx as jsx42, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
16294
16408
|
function resolveKeyboardEventElement(target) {
|
|
16295
16409
|
if (target instanceof Element) return target;
|
|
16296
16410
|
if (target instanceof Node) return target.parentElement;
|
|
@@ -16535,7 +16649,7 @@ function OverlayControls({
|
|
|
16535
16649
|
const handleSliderMouseLeave = () => {
|
|
16536
16650
|
setPreviewData(null);
|
|
16537
16651
|
};
|
|
16538
|
-
return /* @__PURE__ */ jsxs35(
|
|
16652
|
+
return /* @__PURE__ */ jsxs35(Fragment14, { children: [
|
|
16539
16653
|
keyboardFeedback && /* @__PURE__ */ jsx42(
|
|
16540
16654
|
"div",
|
|
16541
16655
|
{
|
|
@@ -17959,7 +18073,7 @@ import {
|
|
|
17959
18073
|
Upload as Upload2
|
|
17960
18074
|
} from "lucide-react";
|
|
17961
18075
|
import { useCallback as useCallback16, useMemo as useMemo19, useRef as useRef19, useState as useState29 } from "react";
|
|
17962
|
-
import { Fragment as
|
|
18076
|
+
import { Fragment as Fragment15, jsx as jsx45, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
17963
18077
|
var formatFileSize = (bytes) => {
|
|
17964
18078
|
if (bytes === 0) return "0 Bytes";
|
|
17965
18079
|
const k = 1024;
|
|
@@ -18390,7 +18504,7 @@ function FileUpload({
|
|
|
18390
18504
|
] }),
|
|
18391
18505
|
/* @__PURE__ */ jsx45("p", { className: cn("text-muted-foreground", size === "lg" ? "text-sm" : "text-xs"), children: supportedFormatsText || t("supportedFormats") || `Max ${maxSize}MB per file \u2022 Up to ${maxFiles} files` })
|
|
18392
18506
|
] }),
|
|
18393
|
-
variant === "compact" && /* @__PURE__ */ jsxs38(
|
|
18507
|
+
variant === "compact" && /* @__PURE__ */ jsxs38(Fragment15, { children: [
|
|
18394
18508
|
/* @__PURE__ */ jsx45("div", { className: cn("shrink-0 rounded-lg flex items-center justify-center", "bg-primary/10", currentSize.iconSize), children: /* @__PURE__ */ jsx45(Upload2, { className: cn("text-primary", size === "sm" ? "w-4 h-4" : "w-5 h-5") }) }),
|
|
18395
18509
|
/* @__PURE__ */ jsxs38("div", { className: "flex-1 min-w-0", children: [
|
|
18396
18510
|
/* @__PURE__ */ jsx45("p", { className: cn("font-medium truncate", currentSize.text), children: dragDropText || t("dragDropText") || "Drop files here or" }),
|
|
@@ -18457,7 +18571,7 @@ function FileUpload({
|
|
|
18457
18571
|
// src/components/Carousel.tsx
|
|
18458
18572
|
import * as React40 from "react";
|
|
18459
18573
|
import { ChevronLeft as ChevronLeft6, ChevronRight as ChevronRight8 } from "lucide-react";
|
|
18460
|
-
import { Fragment as
|
|
18574
|
+
import { Fragment as Fragment16, jsx as jsx46, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
18461
18575
|
function Carousel({
|
|
18462
18576
|
children,
|
|
18463
18577
|
autoScroll = true,
|
|
@@ -18887,7 +19001,7 @@ function Carousel({
|
|
|
18887
19001
|
})
|
|
18888
19002
|
}
|
|
18889
19003
|
),
|
|
18890
|
-
shouldShowArrows && totalSlides > effectiveSlidesToShow && /* @__PURE__ */ jsxs39(
|
|
19004
|
+
shouldShowArrows && totalSlides > effectiveSlidesToShow && /* @__PURE__ */ jsxs39(Fragment16, { children: [
|
|
18891
19005
|
/* @__PURE__ */ jsx46(
|
|
18892
19006
|
Button_default,
|
|
18893
19007
|
{
|
|
@@ -19258,7 +19372,7 @@ function FallingIcons({
|
|
|
19258
19372
|
// src/components/List.tsx
|
|
19259
19373
|
import * as React42 from "react";
|
|
19260
19374
|
import { ChevronRight as ChevronRight9 } from "lucide-react";
|
|
19261
|
-
import { Fragment as
|
|
19375
|
+
import { Fragment as Fragment17, jsx as jsx48, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
19262
19376
|
var SIZE_STYLES2 = {
|
|
19263
19377
|
xs: { label: "text-xs", desc: "text-[11px]", icon: "h-3.5 w-3.5", avatar: "h-6 w-6" },
|
|
19264
19378
|
sm: { label: "text-[13px]", desc: "text-xs", icon: "h-4 w-4", avatar: "h-8 w-8" },
|
|
@@ -19427,7 +19541,7 @@ var ListItem = React42.forwardRef(
|
|
|
19427
19541
|
}
|
|
19428
19542
|
}
|
|
19429
19543
|
} : {};
|
|
19430
|
-
const inner = /* @__PURE__ */ jsxs41(
|
|
19544
|
+
const inner = /* @__PURE__ */ jsxs41(Fragment17, { children: [
|
|
19431
19545
|
/* @__PURE__ */ jsxs41("div", { className: cn("flex items-center gap-3 group/item relative max-md:gap-2.5", contentClassName), ...headerProps, children: [
|
|
19432
19546
|
avatar && /* @__PURE__ */ jsx48("div", { className: cn("shrink-0", sz.avatar), children: typeof avatar === "string" ? /* @__PURE__ */ jsx48("img", { src: avatar, alt: "", className: cn("rounded-full object-cover", sz.avatar) }) : avatar }),
|
|
19433
19547
|
Left && !avatar && /* @__PURE__ */ jsx48("span", { className: cn("text-muted-foreground shrink-0", sz.icon), children: /* @__PURE__ */ jsx48(Left, { className: cn(sz.icon) }) }),
|
|
@@ -19472,7 +19586,7 @@ var List_default = List;
|
|
|
19472
19586
|
// src/components/Watermark.tsx
|
|
19473
19587
|
import * as React43 from "react";
|
|
19474
19588
|
import { createPortal as createPortal2 } from "react-dom";
|
|
19475
|
-
import { Fragment as
|
|
19589
|
+
import { Fragment as Fragment18, jsx as jsx49, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
19476
19590
|
var PRESETS2 = {
|
|
19477
19591
|
confidential: { text: "CONFIDENTIAL", color: "rgba(220, 38, 38, 0.15)", rotate: -22, fontSize: 16, fontWeight: "bold" },
|
|
19478
19592
|
draft: { text: "DRAFT", color: "rgba(59, 130, 246, 0.15)", rotate: -22, fontSize: 18, fontWeight: "bold" },
|
|
@@ -19751,7 +19865,7 @@ var Watermark = ({
|
|
|
19751
19865
|
}
|
|
19752
19866
|
);
|
|
19753
19867
|
if (fullPage) {
|
|
19754
|
-
return /* @__PURE__ */ jsxs42(
|
|
19868
|
+
return /* @__PURE__ */ jsxs42(Fragment18, { children: [
|
|
19755
19869
|
children,
|
|
19756
19870
|
typeof window !== "undefined" ? createPortal2(overlay, document.body) : null
|
|
19757
19871
|
] });
|
|
@@ -20938,7 +21052,7 @@ var MusicPlayer_default = MusicPlayer;
|
|
|
20938
21052
|
|
|
20939
21053
|
// src/components/Grid.tsx
|
|
20940
21054
|
import React47, { useId as useId13 } from "react";
|
|
20941
|
-
import { Fragment as
|
|
21055
|
+
import { Fragment as Fragment19, jsx as jsx53, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
20942
21056
|
var BP_MIN = {
|
|
20943
21057
|
sm: 640,
|
|
20944
21058
|
md: 768,
|
|
@@ -21095,7 +21209,7 @@ var GridItem = React47.forwardRef(
|
|
|
21095
21209
|
st.opacity = 0;
|
|
21096
21210
|
st.animation = `uvGridItemFadeIn 0.5s ease-out forwards`;
|
|
21097
21211
|
}
|
|
21098
|
-
return /* @__PURE__ */ jsxs46(
|
|
21212
|
+
return /* @__PURE__ */ jsxs46(Fragment19, { children: [
|
|
21099
21213
|
animationDelay != null && /* @__PURE__ */ jsx53(
|
|
21100
21214
|
"style",
|
|
21101
21215
|
{
|
|
@@ -21125,13 +21239,13 @@ var Grid = Object.assign(GridRoot, { Item: GridItem });
|
|
|
21125
21239
|
var Grid_default = Grid;
|
|
21126
21240
|
|
|
21127
21241
|
// src/components/ClientOnly.tsx
|
|
21128
|
-
import { Fragment as
|
|
21242
|
+
import { Fragment as Fragment20, jsx as jsx54 } from "react/jsx-runtime";
|
|
21129
21243
|
function ClientOnly({ children, fallback = null }) {
|
|
21130
21244
|
const hasMounted = useHydrated();
|
|
21131
21245
|
if (!hasMounted) {
|
|
21132
|
-
return /* @__PURE__ */ jsx54(
|
|
21246
|
+
return /* @__PURE__ */ jsx54(Fragment20, { children: fallback });
|
|
21133
21247
|
}
|
|
21134
|
-
return /* @__PURE__ */ jsx54(
|
|
21248
|
+
return /* @__PURE__ */ jsx54(Fragment20, { children });
|
|
21135
21249
|
}
|
|
21136
21250
|
|
|
21137
21251
|
// src/components/Loading.tsx
|
|
@@ -21313,7 +21427,7 @@ import React58 from "react";
|
|
|
21313
21427
|
|
|
21314
21428
|
// src/components/DataTable/components/DataTableBody.tsx
|
|
21315
21429
|
import React49 from "react";
|
|
21316
|
-
import { Fragment as
|
|
21430
|
+
import { Fragment as Fragment21, jsx as jsx57, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
21317
21431
|
function DataTableOverflowText({
|
|
21318
21432
|
text,
|
|
21319
21433
|
align
|
|
@@ -21408,7 +21522,7 @@ function DataTableBodyRows({
|
|
|
21408
21522
|
t("loading"),
|
|
21409
21523
|
"\u2026"
|
|
21410
21524
|
] })
|
|
21411
|
-
] }) }) }) : displayedData.length === 0 ? /* @__PURE__ */ jsx57(TableRow, { className: "!border-border/10", children: /* @__PURE__ */ jsx57(TableCell, { colSpan: leafColumns.length, className: "text-center py-6 text-muted-foreground", children: labels?.noData || t("noData") }) }) : /* @__PURE__ */ jsxs49(
|
|
21525
|
+
] }) }) }) : displayedData.length === 0 ? /* @__PURE__ */ jsx57(TableRow, { className: "!border-border/10", children: /* @__PURE__ */ jsx57(TableCell, { colSpan: leafColumns.length, className: "text-center py-6 text-muted-foreground", children: labels?.noData || t("noData") }) }) : /* @__PURE__ */ jsxs49(Fragment21, { children: [
|
|
21412
21526
|
virtualPaddingTop > 0 && /* @__PURE__ */ jsx57(TableRow, { "aria-hidden": "true", className: "border-0 hover:bg-transparent hover:shadow-none", children: /* @__PURE__ */ jsx57(TableCell, { colSpan: leafColumns.length, className: "p-0", style: { height: virtualPaddingTop } }) }),
|
|
21413
21527
|
rowsToRender.map(({ row, idx, virtualRow }) => {
|
|
21414
21528
|
const isStripedRow = striped && idx % 2 === 0;
|
|
@@ -21542,7 +21656,7 @@ function groupColumnsByColorTag(leafCols, colorGroups) {
|
|
|
21542
21656
|
}
|
|
21543
21657
|
|
|
21544
21658
|
// src/components/DataTable/components/DataTableHeader.tsx
|
|
21545
|
-
import { Fragment as
|
|
21659
|
+
import { Fragment as Fragment22, jsx as jsx58, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
21546
21660
|
function getColumnLabel(title) {
|
|
21547
21661
|
if (typeof title === "string" || typeof title === "number") {
|
|
21548
21662
|
return String(title).replace(/\s+/g, " ").trim();
|
|
@@ -21786,10 +21900,10 @@ function DataTableHeader({
|
|
|
21786
21900
|
!isRightAlign && !isCenterAlign && "justify-start",
|
|
21787
21901
|
useEndIcon && "w-full"
|
|
21788
21902
|
),
|
|
21789
|
-
children: isRightAlign ? /* @__PURE__ */ jsxs50(
|
|
21903
|
+
children: isRightAlign ? /* @__PURE__ */ jsxs50(Fragment22, { children: [
|
|
21790
21904
|
filterContent,
|
|
21791
21905
|
titleContent
|
|
21792
|
-
] }) : /* @__PURE__ */ jsxs50(
|
|
21906
|
+
] }) : /* @__PURE__ */ jsxs50(Fragment22, { children: [
|
|
21793
21907
|
titleContent,
|
|
21794
21908
|
filterContent
|
|
21795
21909
|
] })
|
|
@@ -21812,7 +21926,7 @@ function DataTableHeader({
|
|
|
21812
21926
|
t
|
|
21813
21927
|
]
|
|
21814
21928
|
);
|
|
21815
|
-
return /* @__PURE__ */ jsx58(
|
|
21929
|
+
return /* @__PURE__ */ jsx58(Fragment22, { children: headerRows.map((row, rowIndex) => /* @__PURE__ */ jsx58(TableRow, { className: "!border-border/10", children: row.map((headerCell, cellIndex) => {
|
|
21816
21930
|
const { column: col, colSpan, rowSpan, isLeaf } = headerCell;
|
|
21817
21931
|
const prevCell = cellIndex > 0 ? row[cellIndex - 1] : null;
|
|
21818
21932
|
const prevCol = prevCell?.column;
|
|
@@ -23455,7 +23569,7 @@ function AccessDenied({
|
|
|
23455
23569
|
import { Moon as Moon2, Sun as Sun2, Monitor } from "lucide-react";
|
|
23456
23570
|
import { useRef as useRef23, useState as useState37 } from "react";
|
|
23457
23571
|
import { createPortal as createPortal3 } from "react-dom";
|
|
23458
|
-
import { Fragment as
|
|
23572
|
+
import { Fragment as Fragment23, jsx as jsx65, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
23459
23573
|
function ThemeToggleHeadless({
|
|
23460
23574
|
theme,
|
|
23461
23575
|
onChange,
|
|
@@ -23505,7 +23619,7 @@ function ThemeToggleHeadless({
|
|
|
23505
23619
|
children: /* @__PURE__ */ jsx65(CurrentIcon, { className: "h-5 w-5" })
|
|
23506
23620
|
}
|
|
23507
23621
|
),
|
|
23508
|
-
isOpen && /* @__PURE__ */ jsxs57(
|
|
23622
|
+
isOpen && /* @__PURE__ */ jsxs57(Fragment23, { children: [
|
|
23509
23623
|
typeof window !== "undefined" && createPortal3(/* @__PURE__ */ jsx65("div", { className: "fixed inset-0 z-[99998]", onClick: () => setIsOpen(false) }), document.body),
|
|
23510
23624
|
typeof window !== "undefined" && dropdownPosition && createPortal3(
|
|
23511
23625
|
/* @__PURE__ */ jsx65(
|
|
@@ -23557,7 +23671,7 @@ function ThemeToggleHeadless({
|
|
|
23557
23671
|
import { useRef as useRef24, useState as useState38 } from "react";
|
|
23558
23672
|
import { createPortal as createPortal4 } from "react-dom";
|
|
23559
23673
|
import { Globe } from "lucide-react";
|
|
23560
|
-
import { Fragment as
|
|
23674
|
+
import { Fragment as Fragment24, jsx as jsx66, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
23561
23675
|
function LanguageSwitcherHeadless({
|
|
23562
23676
|
locales,
|
|
23563
23677
|
currentLocale,
|
|
@@ -23602,7 +23716,7 @@ function LanguageSwitcherHeadless({
|
|
|
23602
23716
|
children: /* @__PURE__ */ jsx66(Globe, { className: "h-5 w-5" })
|
|
23603
23717
|
}
|
|
23604
23718
|
),
|
|
23605
|
-
isOpen && /* @__PURE__ */ jsxs58(
|
|
23719
|
+
isOpen && /* @__PURE__ */ jsxs58(Fragment24, { children: [
|
|
23606
23720
|
typeof window !== "undefined" && createPortal4(/* @__PURE__ */ jsx66("div", { className: "fixed inset-0 z-[99998]", onClick: () => setIsOpen(false) }), document.body),
|
|
23607
23721
|
typeof window !== "undefined" && dropdownPosition && createPortal4(
|
|
23608
23722
|
/* @__PURE__ */ jsx66(
|