@underverse-ui/underverse 2.0.6 → 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/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  extractImageSrcsFromHtml,
5
5
  normalizeImageUrl,
6
6
  prepareUEditorContentForSave
7
- } from "./chunk-2UQ7H5GR.js";
7
+ } from "./chunk-XE3RJHVX.js";
8
8
  import {
9
9
  EmojiPicker_default
10
10
  } from "./chunk-A7XL4RDV.js";
@@ -16,7 +16,7 @@ import {
16
16
  import "./chunk-4TYW5K4J.js";
17
17
  import {
18
18
  Modal_default
19
- } from "./chunk-OZH3EDGZ.js";
19
+ } from "./chunk-JINSMREP.js";
20
20
  import {
21
21
  DropdownMenuItem,
22
22
  DropdownMenuSeparator,
@@ -25,6 +25,7 @@ import {
25
25
  SelectDropdown,
26
26
  UnderverseConfigProvider,
27
27
  formControlFixedClass,
28
+ formControlLabelClass,
28
29
  formControlSizeStyles,
29
30
  formControlValueClass,
30
31
  getAnimationStyles,
@@ -34,7 +35,7 @@ import {
34
35
  shadcnAnimationStyles,
35
36
  useShadCNAnimations,
36
37
  useUnderverseUIConfig
37
- } from "./chunk-JXE7JBQV.js";
38
+ } from "./chunk-TETMVVUP.js";
38
39
  import {
39
40
  ForceInternalTranslationsProvider,
40
41
  NextIntlAdapter,
@@ -591,7 +592,7 @@ var Checkbox = React3.forwardRef(
591
592
  children: isChecked && /* @__PURE__ */ jsx4(Check, { className: "w-4 h-4" })
592
593
  }
593
594
  ),
594
- label && /* @__PURE__ */ jsx4("span", { className: cn("text-sm text-foreground", labelClassName), children: label })
595
+ label && /* @__PURE__ */ jsx4("span", { className: cn("text-sm text-foreground", formControlLabelClass, labelClassName), children: label })
595
596
  ] });
596
597
  }
597
598
  );
@@ -853,7 +854,7 @@ function useOverlayScrollbarTarget(targetRef, options = {}) {
853
854
  var OverlayScrollbarProvider_default = OverlayScrollbarProvider;
854
855
 
855
856
  // src/components/Input.tsx
856
- 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";
857
858
  var Input = forwardRef3(
858
859
  ({
859
860
  label,
@@ -876,6 +877,7 @@ var Input = forwardRef3(
876
877
  value,
877
878
  maxLength,
878
879
  rightAddon,
880
+ rightSection,
879
881
  borderMode,
880
882
  ...rest
881
883
  }, ref) => {
@@ -975,7 +977,8 @@ var Input = forwardRef3(
975
977
  className: cn(
976
978
  // Label size follows input size
977
979
  sizeStyles7[size].label,
978
- "font-medium transition-colors duration-200",
980
+ formControlLabelClass,
981
+ "transition-colors duration-200",
979
982
  // default color and highlight while any descendant focused
980
983
  disabled ? "text-muted-foreground" : cn("text-foreground group-focus-within:text-primary", success && "text-primary"),
981
984
  errMsg && "text-destructive",
@@ -1046,7 +1049,7 @@ var Input = forwardRef3(
1046
1049
  radiusClass,
1047
1050
  // Icon padding adjustments
1048
1051
  LeftIcon && "pl-10",
1049
- (RightIcon || showPasswordToggle || clearable || loading2 || success || errMsg) && "pr-10",
1052
+ (RightIcon || showPasswordToggle || clearable || loading2 || success || errMsg || rightSection) && "pr-10",
1050
1053
  // Variant styles
1051
1054
  variantStyles5[variant].container,
1052
1055
  errMsg ? variantStyles5[variant].error : variantStyles5[variant].focus,
@@ -1059,45 +1062,57 @@ var Input = forwardRef3(
1059
1062
  ...restInput
1060
1063
  }
1061
1064
  ),
1062
- /* @__PURE__ */ jsxs5("div", { className: "absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-1", children: [
1063
- getStatusIcon(),
1064
- RightIcon && !loading2 && !success && !errMsg && /* @__PURE__ */ jsx6(RightIcon, { className: cn("text-muted-foreground", sizeStyles7[size].icon) }),
1065
- clearable && hasValue && !loading2 && /* @__PURE__ */ jsx6(
1066
- "button",
1067
- {
1068
- type: "button",
1069
- onClick: () => {
1070
- if (onClear) return onClear();
1071
- rest.onChange?.({ target: { value: "" } });
1072
- },
1073
- className: cn(
1074
- "flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors rounded-md",
1075
- "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1",
1076
- "active:bg-accent active:text-accent-foreground",
1077
- sizeStyles7[size].iconButton
1078
- ),
1079
- tabIndex: 0,
1080
- "aria-label": gi18n.clearInput ?? "Clear input",
1081
- children: /* @__PURE__ */ jsx6(X, { className: sizeStyles7[size].icon })
1082
- }
1083
- ),
1084
- showPasswordToggle && /* @__PURE__ */ jsx6(
1085
- "button",
1086
- {
1087
- type: "button",
1088
- onClick: () => setShowPassword(!showPassword),
1089
- className: cn(
1090
- "flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors rounded-full",
1091
- "focus:outline-none focus-visible:ring-1 focus-visible:ring-ring/40",
1092
- "active:bg-accent/50 active:text-accent-foreground",
1093
- sizeStyles7[size].iconButton
1094
- ),
1095
- tabIndex: 0,
1096
- "aria-label": showPassword ? gi18n.hidePassword ?? "Hide password" : gi18n.showPassword ?? "Show password",
1097
- children: showPassword ? /* @__PURE__ */ jsx6(EyeOff, { className: sizeStyles7[size].icon }) : /* @__PURE__ */ jsx6(Eye, { className: sizeStyles7[size].icon })
1098
- }
1099
- )
1100
- ] }),
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
+ ),
1101
1116
  rightAddon,
1102
1117
  variant === "minimal" && /* @__PURE__ */ jsx6(
1103
1118
  "div",
@@ -1132,27 +1147,128 @@ var Input = forwardRef3(
1132
1147
  }
1133
1148
  );
1134
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
+ };
1135
1176
  var SearchInput = forwardRef3(
1136
- ({ onSearch, searchDelay = 300, placeholder = "Search\u2026", ...props }, ref) => {
1137
- const [searchValue, setSearchValue] = useState3(props.value || "");
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]);
1138
1207
  React5.useEffect(() => {
1139
- if (!onSearch) return;
1208
+ if (!onSearch || mode !== "default") return;
1140
1209
  const timer = setTimeout(() => {
1141
- onSearch(searchValue);
1210
+ onSearch(searchText);
1142
1211
  }, searchDelay);
1143
1212
  return () => clearTimeout(timer);
1144
- }, [searchValue, onSearch, searchDelay]);
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;
1145
1232
  return /* @__PURE__ */ jsx6(
1146
1233
  Input,
1147
1234
  {
1148
1235
  ref,
1149
1236
  type: "search",
1150
- leftIcon: Search,
1237
+ leftIcon: mode === "default" ? Search : void 0,
1151
1238
  placeholder,
1152
- clearable: true,
1239
+ clearable,
1153
1240
  value: searchValue,
1154
- onChange: (e) => setSearchValue(e.target.value),
1155
- onClear: () => setSearchValue(""),
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,
1156
1272
  ...props
1157
1273
  }
1158
1274
  );
@@ -1393,7 +1509,8 @@ var Textarea = forwardRef3(
1393
1509
  "label",
1394
1510
  {
1395
1511
  className: cn(
1396
- "text-sm font-medium transition-colors duration-200",
1512
+ "text-sm transition-colors duration-200",
1513
+ formControlLabelClass,
1397
1514
  isFocused ? "text-primary" : "text-foreground",
1398
1515
  error && "text-destructive",
1399
1516
  labelClassName
@@ -2344,7 +2461,8 @@ var TagInput = forwardRef4(
2344
2461
  {
2345
2462
  htmlFor: inputId,
2346
2463
  className: cn(
2347
- "block font-medium transition-colors duration-200",
2464
+ "block transition-colors duration-200",
2465
+ formControlLabelClass,
2348
2466
  formControlSizeStyles[size].label,
2349
2467
  disabled ? "text-muted-foreground" : isFocused ? "text-primary" : "text-foreground",
2350
2468
  labelClassName
@@ -2618,7 +2736,7 @@ var Switch = ({
2618
2736
  ]
2619
2737
  }
2620
2738
  ),
2621
- label && /* @__PURE__ */ jsx10("span", { className: cn("text-sm font-medium text-foreground transition-colors", disabled && "text-muted-foreground", labelClassName), children: label })
2739
+ label && /* @__PURE__ */ jsx10("span", { className: cn("text-sm text-foreground transition-colors", formControlLabelClass, disabled && "text-muted-foreground", labelClassName), children: label })
2622
2740
  ] });
2623
2741
  };
2624
2742
  Switch.displayName = "Switch";
@@ -2629,7 +2747,7 @@ import * as React10 from "react";
2629
2747
  import { cva } from "class-variance-authority";
2630
2748
  import { jsx as jsx11 } from "react/jsx-runtime";
2631
2749
  var labelVariants = cva(
2632
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
2750
+ `text-sm ${formControlLabelClass} leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70`
2633
2751
  );
2634
2752
  var Label = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
2635
2753
  "label",
@@ -2992,7 +3110,7 @@ var Skeleton_default = Skeleton;
2992
3110
  // src/components/Progress.tsx
2993
3111
  import React13 from "react";
2994
3112
  import { Check as Check2, X as X4, Clock } from "lucide-react";
2995
- import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
3113
+ import { Fragment as Fragment3, jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
2996
3114
  var variantStyles2 = {
2997
3115
  default: "bg-muted-foreground",
2998
3116
  primary: "bg-linear-to-r from-primary via-primary/90 to-primary",
@@ -3153,7 +3271,7 @@ var CircularProgress = ({
3153
3271
  ]
3154
3272
  }
3155
3273
  ),
3156
- /* @__PURE__ */ jsx15("div", { className: "absolute inset-0 flex flex-col items-center justify-center text-center", children: children ? children : /* @__PURE__ */ jsxs11(Fragment2, { children: [
3274
+ /* @__PURE__ */ jsx15("div", { className: "absolute inset-0 flex flex-col items-center justify-center text-center", children: children ? children : /* @__PURE__ */ jsxs11(Fragment3, { children: [
3157
3275
  getContentIcon(),
3158
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)}%` }),
3159
3277
  indeterminate && /* @__PURE__ */ jsx15(Clock, { className: "w-4 h-4 text-muted-foreground animate-pulse" })
@@ -4469,7 +4587,7 @@ import * as React19 from "react";
4469
4587
  import { useId as useId4 } from "react";
4470
4588
  import { useVirtualizer } from "@tanstack/react-virtual";
4471
4589
  import { ChevronDown, Search as Search4, SearchX, Check as Check3, X as X8 } from "lucide-react";
4472
- import { Fragment as Fragment3, jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
4590
+ import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
4473
4591
  var getOptionLabel = (option) => {
4474
4592
  return typeof option === "string" ? option : option.label;
4475
4593
  };
@@ -4962,7 +5080,7 @@ var Combobox = ({
4962
5080
  className
4963
5081
  )
4964
5082
  };
4965
- const triggerContents = /* @__PURE__ */ jsxs18(Fragment3, { children: [
5083
+ const triggerContents = /* @__PURE__ */ jsxs18(Fragment4, { children: [
4966
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 }),
4967
5085
  /* @__PURE__ */ jsx22("span", { className: cn(formControlValueClass, "text-left", !displayValue && "text-muted-foreground", fontBold && "font-semibold"), children: renderValue && selectedOption ? renderValue(selectedOption) : displayValue || placeholder }),
4968
5086
  /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-1.5 ml-2 shrink-0", children: [
@@ -5021,7 +5139,8 @@ var Combobox = ({
5021
5139
  onClick: () => triggerRef.current?.focus(),
5022
5140
  className: cn(
5023
5141
  labelSize,
5024
- "font-medium transition-colors duration-200",
5142
+ formControlLabelClass,
5143
+ "transition-colors duration-200",
5025
5144
  disabled ? "text-muted-foreground" : "text-foreground group-focus-within:text-primary",
5026
5145
  effectiveError && "text-destructive",
5027
5146
  labelClassName
@@ -5809,7 +5928,7 @@ function parseDateString(str, locale = "en") {
5809
5928
  import { Calendar, ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight3, Sparkles, X as XIcon } from "lucide-react";
5810
5929
  import * as React23 from "react";
5811
5930
  import { useId as useId5 } from "react";
5812
- import { Fragment as Fragment4, jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
5931
+ import { Fragment as Fragment5, jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
5813
5932
  function normalizeToLocalDate(date) {
5814
5933
  if (!date) return null;
5815
5934
  return new Date(date.getFullYear(), date.getMonth(), date.getDate());
@@ -6200,7 +6319,7 @@ var DatePicker = ({
6200
6319
  }
6201
6320
  )
6202
6321
  ] }),
6203
- viewMode === "calendar" && /* @__PURE__ */ jsxs20(Fragment4, { children: [
6322
+ viewMode === "calendar" && /* @__PURE__ */ jsxs20(Fragment5, { children: [
6204
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(
6205
6324
  (day, idx) => /* @__PURE__ */ jsx27(
6206
6325
  "div",
@@ -6289,7 +6408,8 @@ var DatePicker = ({
6289
6408
  onClick: () => inputRef.current?.focus(),
6290
6409
  className: cn(
6291
6410
  labelSize,
6292
- "font-semibold transition-colors duration-300 cursor-pointer",
6411
+ formControlLabelClass,
6412
+ "transition-colors duration-300 cursor-pointer",
6293
6413
  disabled ? "text-muted-foreground" : "text-foreground group-focus-within:text-primary hover:text-primary",
6294
6414
  effectiveError && "text-destructive",
6295
6415
  labelClassName
@@ -6970,7 +7090,7 @@ var DateRangePicker = ({
6970
7090
  }
6971
7091
  )
6972
7092
  ] }),
6973
- viewMode === "calendar" && /* @__PURE__ */ jsxs20(Fragment4, { children: [
7093
+ viewMode === "calendar" && /* @__PURE__ */ jsxs20(Fragment5, { children: [
6974
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(
6975
7095
  "div",
6976
7096
  {
@@ -7048,7 +7168,8 @@ var DateRangePicker = ({
7048
7168
  onClick: () => inputRef.current?.focus(),
7049
7169
  className: cn(
7050
7170
  size === "sm" ? "text-xs" : size === "lg" ? "text-base" : "text-sm",
7051
- "font-medium transition-colors duration-300",
7171
+ formControlLabelClass,
7172
+ "transition-colors duration-300",
7052
7173
  disabled ? "text-muted-foreground cursor-not-allowed" : "text-foreground group-focus-within:text-primary hover:text-primary cursor-pointer",
7053
7174
  effectiveError && "text-destructive",
7054
7175
  labelClassName
@@ -7393,7 +7514,7 @@ function getLeapMonthOffset(a11, timeZone) {
7393
7514
  }
7394
7515
 
7395
7516
  // src/components/LunarDatePicker.tsx
7396
- import { Fragment as Fragment5, jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
7517
+ import { Fragment as Fragment6, jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
7397
7518
  function toSolarDate(value) {
7398
7519
  if (!value) return null;
7399
7520
  const solar = lunarToSolar({
@@ -7897,7 +8018,7 @@ var LunarDatePicker = ({
7897
8018
  }
7898
8019
  )
7899
8020
  ] }),
7900
- viewMode === "calendar" && /* @__PURE__ */ jsxs21(Fragment5, { children: [
8021
+ viewMode === "calendar" && /* @__PURE__ */ jsxs21(Fragment6, { children: [
7901
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(
7902
8023
  (day, idx) => /* @__PURE__ */ jsx28(
7903
8024
  "div",
@@ -7986,7 +8107,8 @@ var LunarDatePicker = ({
7986
8107
  onClick: () => inputRef.current?.focus(),
7987
8108
  className: cn(
7988
8109
  labelSize,
7989
- "font-semibold transition-colors duration-300 cursor-pointer",
8110
+ formControlLabelClass,
8111
+ "transition-colors duration-300 cursor-pointer",
7990
8112
  disabled ? "text-muted-foreground" : "text-foreground group-focus-within:text-primary hover:text-primary",
7991
8113
  effectiveError && "text-destructive",
7992
8114
  labelClassName
@@ -8536,7 +8658,7 @@ var LunarDateRangePicker = ({
8536
8658
  }
8537
8659
  )
8538
8660
  ] }),
8539
- viewMode === "calendar" && /* @__PURE__ */ jsxs21(Fragment5, { children: [
8661
+ viewMode === "calendar" && /* @__PURE__ */ jsxs21(Fragment6, { children: [
8540
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(
8541
8663
  "div",
8542
8664
  {
@@ -8615,7 +8737,8 @@ var LunarDateRangePicker = ({
8615
8737
  onClick: () => setIsOpen(true),
8616
8738
  className: cn(
8617
8739
  size === "sm" ? "text-xs" : size === "lg" ? "text-base" : "text-sm",
8618
- "font-medium transition-colors duration-300",
8740
+ formControlLabelClass,
8741
+ "transition-colors duration-300",
8619
8742
  disabled ? "text-muted-foreground cursor-not-allowed" : "text-foreground group-focus-within:text-primary hover:text-primary cursor-pointer",
8620
8743
  effectiveError && "text-destructive",
8621
8744
  labelClassName
@@ -9523,7 +9646,7 @@ function MonthYearPicker({
9523
9646
  ] });
9524
9647
  if (variant === "inline") {
9525
9648
  return /* @__PURE__ */ jsxs22("div", { className: cn("w-full", className), ...rest, children: [
9526
- label && /* @__PURE__ */ jsxs22("label", { className: cn(sz.label, "block mb-1.5 font-medium text-foreground/80", effectiveError && "text-destructive", labelClassName), children: [
9649
+ label && /* @__PURE__ */ jsxs22("label", { className: cn(sz.label, "block mb-1.5 text-foreground/80", formControlLabelClass, effectiveError && "text-destructive", labelClassName), children: [
9527
9650
  label,
9528
9651
  required && /* @__PURE__ */ jsx29("span", { className: "text-destructive ml-0.5", children: "*" })
9529
9652
  ] }),
@@ -9560,7 +9683,7 @@ function MonthYearPicker({
9560
9683
  ] });
9561
9684
  }
9562
9685
  return /* @__PURE__ */ jsxs22("div", { className: cn("w-full", className), ...rest, children: [
9563
- label && /* @__PURE__ */ jsxs22("label", { className: cn(sz.label, "block mb-1.5 font-medium text-foreground/80", effectiveError && "text-destructive", labelClassName), children: [
9686
+ label && /* @__PURE__ */ jsxs22("label", { className: cn(sz.label, "block mb-1.5 text-foreground/80", formControlLabelClass, effectiveError && "text-destructive", labelClassName), children: [
9564
9687
  label,
9565
9688
  required && /* @__PURE__ */ jsx29("span", { className: "text-destructive ml-0.5", children: "*" })
9566
9689
  ] }),
@@ -9602,7 +9725,7 @@ function MonthYearPicker({
9602
9725
  }
9603
9726
 
9604
9727
  // src/components/Calendar.tsx
9605
- import { Fragment as Fragment7, jsx as jsx30, jsxs as jsxs23 } from "react/jsx-runtime";
9728
+ import { Fragment as Fragment8, jsx as jsx30, jsxs as jsxs23 } from "react/jsx-runtime";
9606
9729
  var VIETNAM_HOLIDAYS = [
9607
9730
  { date: "01-01", name: "T\u1EBFt D\u01B0\u01A1ng l\u1ECBch", recurring: true },
9608
9731
  { date: "04-30", name: "Gi\u1EA3i ph\xF3ng mi\u1EC1n Nam", recurring: true },
@@ -10097,7 +10220,7 @@ function Calendar4({
10097
10220
  }
10098
10221
  )
10099
10222
  ] }),
10100
- display === "week" ? /* @__PURE__ */ jsxs23(Fragment7, { children: [
10223
+ display === "week" ? /* @__PURE__ */ jsxs23(Fragment8, { children: [
10101
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}`)) }),
10102
10225
  /* @__PURE__ */ jsx30("div", { className: cn("grid grid-cols-7", sz.grid), children: weekDays.map((d, idx) => {
10103
10226
  const inMonth = true;
@@ -10253,7 +10376,7 @@ function Calendar4({
10253
10376
  // src/components/TimePicker.tsx
10254
10377
  import * as React27 from "react";
10255
10378
  import { Clock as Clock2, X as X10, Check as Check5, Sun, Moon, Sunset, Coffee } from "lucide-react";
10256
- import { Fragment as Fragment8, jsx as jsx31, jsxs as jsxs24 } from "react/jsx-runtime";
10379
+ import { Fragment as Fragment9, jsx as jsx31, jsxs as jsxs24 } from "react/jsx-runtime";
10257
10380
  var pad = (n) => n.toString().padStart(2, "0");
10258
10381
  var clamp2 = (n, min, max) => Math.min(max, Math.max(min, n));
10259
10382
  var WHEEL_ITEM_HEIGHT2 = {
@@ -11290,7 +11413,7 @@ function TimePicker({
11290
11413
  }
11291
11414
  );
11292
11415
  })(),
11293
- includeSeconds && /* @__PURE__ */ jsxs24(Fragment8, { children: [
11416
+ includeSeconds && /* @__PURE__ */ jsxs24(Fragment9, { children: [
11294
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: [
11295
11418
  /* @__PURE__ */ jsx31("div", { className: "w-1.5 h-1.5 rounded-full bg-primary/60" }),
11296
11419
  /* @__PURE__ */ jsx31("div", { className: "w-1.5 h-1.5 rounded-full bg-primary/60" })
@@ -11435,7 +11558,7 @@ function TimePicker({
11435
11558
  "label",
11436
11559
  {
11437
11560
  id: labelId,
11438
- className: cn(sz.label, "font-semibold", disabled ? "text-muted-foreground" : "text-foreground", effectiveError && "text-destructive"),
11561
+ className: cn(sz.label, formControlLabelClass, disabled ? "text-muted-foreground" : "text-foreground", effectiveError && "text-destructive"),
11439
11562
  children: [
11440
11563
  label,
11441
11564
  required && /* @__PURE__ */ jsx31("span", { className: "text-destructive ml-1", children: "*" })
@@ -11483,7 +11606,7 @@ function TimePicker({
11483
11606
  htmlFor: triggerId,
11484
11607
  className: cn(
11485
11608
  sz.label,
11486
- "font-semibold",
11609
+ formControlLabelClass,
11487
11610
  disabled ? "text-muted-foreground" : "text-foreground",
11488
11611
  effectiveError && "text-destructive",
11489
11612
  "cursor-pointer transition-colors hover:text-primary"
@@ -11724,7 +11847,13 @@ var DateTimePicker = ({
11724
11847
  {
11725
11848
  id: labelId,
11726
11849
  htmlFor: triggerId,
11727
- className: cn(sizeStyles7[size].label, "font-medium text-foreground flex items-center gap-1", effectiveError && "text-destructive", labelClassName),
11850
+ className: cn(
11851
+ sizeStyles7[size].label,
11852
+ formControlLabelClass,
11853
+ "text-foreground flex items-center gap-1",
11854
+ effectiveError && "text-destructive",
11855
+ labelClassName
11856
+ ),
11728
11857
  children: [
11729
11858
  label,
11730
11859
  " ",
@@ -13271,7 +13400,7 @@ function useVisibleSlotRange(args) {
13271
13400
  }
13272
13401
 
13273
13402
  // src/components/CalendarTimeline/CalendarTimeline.tsx
13274
- import { Fragment as Fragment10, jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
13403
+ import { Fragment as Fragment11, jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
13275
13404
  function CalendarTimeline({
13276
13405
  resources,
13277
13406
  events,
@@ -14597,7 +14726,7 @@ function CalendarTimeline({
14597
14726
  ]
14598
14727
  }
14599
14728
  ),
14600
- !isViewOnly && (interactions?.resizableEvents ?? true) && ev.resizable !== false ? /* @__PURE__ */ jsxs31(Fragment10, { children: [
14729
+ !isViewOnly && (interactions?.resizableEvents ?? true) && ev.resizable !== false ? /* @__PURE__ */ jsxs31(Fragment11, { children: [
14601
14730
  /* @__PURE__ */ jsx38(
14602
14731
  "div",
14603
14732
  {
@@ -14777,7 +14906,7 @@ import * as React35 from "react";
14777
14906
  import { useId as useId10 } from "react";
14778
14907
  import { useVirtualizer as useVirtualizer2 } from "@tanstack/react-virtual";
14779
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";
14780
- import { Fragment as Fragment11, jsx as jsx39, jsxs as jsxs32 } from "react/jsx-runtime";
14909
+ import { Fragment as Fragment12, jsx as jsx39, jsxs as jsxs32 } from "react/jsx-runtime";
14781
14910
  var comboboxScrollClassName2 = [
14782
14911
  "scrollbar-thin",
14783
14912
  "[scrollbar-width:thin]",
@@ -15256,7 +15385,7 @@ var MultiCombobox = ({
15256
15385
  !!effectiveError && "border-destructive focus-visible:ring-destructive/30"
15257
15386
  ),
15258
15387
  children: [
15259
- /* @__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(Fragment11, { children: [
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: [
15260
15389
  visibleTags.map((option) => {
15261
15390
  if (renderTag) {
15262
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);
@@ -15338,7 +15467,8 @@ var MultiCombobox = ({
15338
15467
  {
15339
15468
  className: cn(
15340
15469
  size === "sm" ? "text-xs" : size === "lg" ? "text-base" : "text-sm",
15341
- "font-medium transition-colors duration-200",
15470
+ formControlLabelClass,
15471
+ "transition-colors duration-200",
15342
15472
  disabled ? "text-muted-foreground" : "text-foreground group-focus-within:text-primary",
15343
15473
  effectiveError && "text-destructive",
15344
15474
  labelClassName
@@ -15356,7 +15486,8 @@ var MultiCombobox = ({
15356
15486
  onClick: () => triggerRef.current?.focus(),
15357
15487
  className: cn(
15358
15488
  labelSize,
15359
- "font-medium transition-colors duration-200",
15489
+ formControlLabelClass,
15490
+ "transition-colors duration-200",
15360
15491
  disabled ? "text-muted-foreground" : "text-foreground group-focus-within:text-primary",
15361
15492
  effectiveError && "text-destructive",
15362
15493
  labelClassName
@@ -15574,7 +15705,7 @@ var RadioGroupItem = React36.forwardRef(
15574
15705
  /* @__PURE__ */ jsxs33("div", { className: "flex-1 min-w-0", children: [
15575
15706
  /* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-2", children: [
15576
15707
  Icon && /* @__PURE__ */ jsx40(Icon, { className: "h-4 w-4 text-foreground" }),
15577
- /* @__PURE__ */ jsx40("label", { htmlFor: radioId, className: cn("font-medium text-foreground cursor-pointer", sizeStyles6[size].text, labelClassName), children: label || children })
15708
+ /* @__PURE__ */ jsx40("label", { htmlFor: radioId, className: cn(formControlLabelClass, "text-foreground cursor-pointer", sizeStyles6[size].text, labelClassName), children: label || children })
15578
15709
  ] }),
15579
15710
  description && /* @__PURE__ */ jsx40("p", { className: "text-muted-foreground mt-1 text-xs", children: description })
15580
15711
  ] })
@@ -15609,7 +15740,8 @@ var RadioGroupItem = React36.forwardRef(
15609
15740
  id: radioId,
15610
15741
  disabled: isDisabled,
15611
15742
  className: cn(
15612
- "inline-flex items-center justify-center gap-2 border font-medium transition-all duration-200",
15743
+ "inline-flex items-center justify-center gap-2 border transition-all duration-200",
15744
+ formControlLabelClass,
15613
15745
  getBorderRadiusClass(borderMode ?? "lg"),
15614
15746
  "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
15615
15747
  "disabled:cursor-not-allowed disabled:opacity-50",
@@ -15667,7 +15799,8 @@ var RadioGroupItem = React36.forwardRef(
15667
15799
  {
15668
15800
  htmlFor: radioId,
15669
15801
  className: cn(
15670
- "font-medium text-foreground cursor-pointer flex-1",
15802
+ formControlLabelClass,
15803
+ "text-foreground cursor-pointer flex-1",
15671
15804
  "disabled:cursor-not-allowed disabled:opacity-50",
15672
15805
  sizeStyles6[size].text,
15673
15806
  isDisabled && "cursor-not-allowed opacity-50",
@@ -15854,7 +15987,7 @@ var ToggleGroup = (props) => {
15854
15987
 
15855
15988
  // src/components/Slider.tsx
15856
15989
  import * as React37 from "react";
15857
- import { Fragment as Fragment12, jsx as jsx41, jsxs as jsxs34 } from "react/jsx-runtime";
15990
+ import { Fragment as Fragment13, jsx as jsx41, jsxs as jsxs34 } from "react/jsx-runtime";
15858
15991
  var SIZE_STYLES = {
15859
15992
  sm: {
15860
15993
  track: "h-1",
@@ -16072,7 +16205,7 @@ var Slider = React37.forwardRef(
16072
16205
  }
16073
16206
  return /* @__PURE__ */ jsxs34("div", { className: cn("w-full space-y-2", containerClassName), children: [
16074
16207
  (label || showValue) && /* @__PURE__ */ jsxs34("div", { className: "flex items-center justify-between", children: [
16075
- label && /* @__PURE__ */ jsx41("label", { className: cn("text-sm font-medium text-foreground", labelClassName), children: label }),
16208
+ label && /* @__PURE__ */ jsx41("label", { className: cn("text-sm text-foreground", formControlLabelClass, labelClassName), children: label }),
16076
16209
  showValue && /* @__PURE__ */ jsx41("span", { className: cn("text-xs font-mono text-muted-foreground min-w-8 text-right", valueClassName), children: displayValue })
16077
16210
  ] }),
16078
16211
  /* @__PURE__ */ jsxs34(
@@ -16112,7 +16245,7 @@ var Slider = React37.forwardRef(
16112
16245
  tooltipClassName
16113
16246
  }
16114
16247
  ),
16115
- isRange && /* @__PURE__ */ jsxs34(Fragment12, { children: [
16248
+ isRange && /* @__PURE__ */ jsxs34(Fragment13, { children: [
16116
16249
  /* @__PURE__ */ jsx41(
16117
16250
  SliderTooltip,
16118
16251
  {
@@ -16208,7 +16341,7 @@ var Slider = React37.forwardRef(
16208
16341
  }
16209
16342
  const minZ = activeThumb === "min" ? "z-20" : "z-10";
16210
16343
  const maxZ = activeThumb === "max" ? "z-20" : "z-10";
16211
- return /* @__PURE__ */ jsxs34(Fragment12, { children: [
16344
+ return /* @__PURE__ */ jsxs34(Fragment13, { children: [
16212
16345
  /* @__PURE__ */ jsx41(
16213
16346
  "div",
16214
16347
  {
@@ -16271,7 +16404,7 @@ Slider.displayName = "Slider";
16271
16404
  // src/components/OverlayControls.tsx
16272
16405
  import { Dot as Dot2, Maximize2, Pause, Play, RotateCcw, RotateCw, Volume2, VolumeX } from "lucide-react";
16273
16406
  import React38 from "react";
16274
- import { Fragment as Fragment13, jsx as jsx42, jsxs as jsxs35 } from "react/jsx-runtime";
16407
+ import { Fragment as Fragment14, jsx as jsx42, jsxs as jsxs35 } from "react/jsx-runtime";
16275
16408
  function resolveKeyboardEventElement(target) {
16276
16409
  if (target instanceof Element) return target;
16277
16410
  if (target instanceof Node) return target.parentElement;
@@ -16516,7 +16649,7 @@ function OverlayControls({
16516
16649
  const handleSliderMouseLeave = () => {
16517
16650
  setPreviewData(null);
16518
16651
  };
16519
- return /* @__PURE__ */ jsxs35(Fragment13, { children: [
16652
+ return /* @__PURE__ */ jsxs35(Fragment14, { children: [
16520
16653
  keyboardFeedback && /* @__PURE__ */ jsx42(
16521
16654
  "div",
16522
16655
  {
@@ -17940,7 +18073,7 @@ import {
17940
18073
  Upload as Upload2
17941
18074
  } from "lucide-react";
17942
18075
  import { useCallback as useCallback16, useMemo as useMemo19, useRef as useRef19, useState as useState29 } from "react";
17943
- import { Fragment as Fragment14, jsx as jsx45, jsxs as jsxs38 } from "react/jsx-runtime";
18076
+ import { Fragment as Fragment15, jsx as jsx45, jsxs as jsxs38 } from "react/jsx-runtime";
17944
18077
  var formatFileSize = (bytes) => {
17945
18078
  if (bytes === 0) return "0 Bytes";
17946
18079
  const k = 1024;
@@ -18371,7 +18504,7 @@ function FileUpload({
18371
18504
  ] }),
18372
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` })
18373
18506
  ] }),
18374
- variant === "compact" && /* @__PURE__ */ jsxs38(Fragment14, { children: [
18507
+ variant === "compact" && /* @__PURE__ */ jsxs38(Fragment15, { children: [
18375
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") }) }),
18376
18509
  /* @__PURE__ */ jsxs38("div", { className: "flex-1 min-w-0", children: [
18377
18510
  /* @__PURE__ */ jsx45("p", { className: cn("font-medium truncate", currentSize.text), children: dragDropText || t("dragDropText") || "Drop files here or" }),
@@ -18438,7 +18571,7 @@ function FileUpload({
18438
18571
  // src/components/Carousel.tsx
18439
18572
  import * as React40 from "react";
18440
18573
  import { ChevronLeft as ChevronLeft6, ChevronRight as ChevronRight8 } from "lucide-react";
18441
- import { Fragment as Fragment15, jsx as jsx46, jsxs as jsxs39 } from "react/jsx-runtime";
18574
+ import { Fragment as Fragment16, jsx as jsx46, jsxs as jsxs39 } from "react/jsx-runtime";
18442
18575
  function Carousel({
18443
18576
  children,
18444
18577
  autoScroll = true,
@@ -18868,7 +19001,7 @@ function Carousel({
18868
19001
  })
18869
19002
  }
18870
19003
  ),
18871
- shouldShowArrows && totalSlides > effectiveSlidesToShow && /* @__PURE__ */ jsxs39(Fragment15, { children: [
19004
+ shouldShowArrows && totalSlides > effectiveSlidesToShow && /* @__PURE__ */ jsxs39(Fragment16, { children: [
18872
19005
  /* @__PURE__ */ jsx46(
18873
19006
  Button_default,
18874
19007
  {
@@ -19239,7 +19372,7 @@ function FallingIcons({
19239
19372
  // src/components/List.tsx
19240
19373
  import * as React42 from "react";
19241
19374
  import { ChevronRight as ChevronRight9 } from "lucide-react";
19242
- import { Fragment as Fragment16, jsx as jsx48, jsxs as jsxs41 } from "react/jsx-runtime";
19375
+ import { Fragment as Fragment17, jsx as jsx48, jsxs as jsxs41 } from "react/jsx-runtime";
19243
19376
  var SIZE_STYLES2 = {
19244
19377
  xs: { label: "text-xs", desc: "text-[11px]", icon: "h-3.5 w-3.5", avatar: "h-6 w-6" },
19245
19378
  sm: { label: "text-[13px]", desc: "text-xs", icon: "h-4 w-4", avatar: "h-8 w-8" },
@@ -19408,7 +19541,7 @@ var ListItem = React42.forwardRef(
19408
19541
  }
19409
19542
  }
19410
19543
  } : {};
19411
- const inner = /* @__PURE__ */ jsxs41(Fragment16, { children: [
19544
+ const inner = /* @__PURE__ */ jsxs41(Fragment17, { children: [
19412
19545
  /* @__PURE__ */ jsxs41("div", { className: cn("flex items-center gap-3 group/item relative max-md:gap-2.5", contentClassName), ...headerProps, children: [
19413
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 }),
19414
19547
  Left && !avatar && /* @__PURE__ */ jsx48("span", { className: cn("text-muted-foreground shrink-0", sz.icon), children: /* @__PURE__ */ jsx48(Left, { className: cn(sz.icon) }) }),
@@ -19453,7 +19586,7 @@ var List_default = List;
19453
19586
  // src/components/Watermark.tsx
19454
19587
  import * as React43 from "react";
19455
19588
  import { createPortal as createPortal2 } from "react-dom";
19456
- import { Fragment as Fragment17, jsx as jsx49, jsxs as jsxs42 } from "react/jsx-runtime";
19589
+ import { Fragment as Fragment18, jsx as jsx49, jsxs as jsxs42 } from "react/jsx-runtime";
19457
19590
  var PRESETS2 = {
19458
19591
  confidential: { text: "CONFIDENTIAL", color: "rgba(220, 38, 38, 0.15)", rotate: -22, fontSize: 16, fontWeight: "bold" },
19459
19592
  draft: { text: "DRAFT", color: "rgba(59, 130, 246, 0.15)", rotate: -22, fontSize: 18, fontWeight: "bold" },
@@ -19732,7 +19865,7 @@ var Watermark = ({
19732
19865
  }
19733
19866
  );
19734
19867
  if (fullPage) {
19735
- return /* @__PURE__ */ jsxs42(Fragment17, { children: [
19868
+ return /* @__PURE__ */ jsxs42(Fragment18, { children: [
19736
19869
  children,
19737
19870
  typeof window !== "undefined" ? createPortal2(overlay, document.body) : null
19738
19871
  ] });
@@ -20919,7 +21052,7 @@ var MusicPlayer_default = MusicPlayer;
20919
21052
 
20920
21053
  // src/components/Grid.tsx
20921
21054
  import React47, { useId as useId13 } from "react";
20922
- import { Fragment as Fragment18, jsx as jsx53, jsxs as jsxs46 } from "react/jsx-runtime";
21055
+ import { Fragment as Fragment19, jsx as jsx53, jsxs as jsxs46 } from "react/jsx-runtime";
20923
21056
  var BP_MIN = {
20924
21057
  sm: 640,
20925
21058
  md: 768,
@@ -21076,7 +21209,7 @@ var GridItem = React47.forwardRef(
21076
21209
  st.opacity = 0;
21077
21210
  st.animation = `uvGridItemFadeIn 0.5s ease-out forwards`;
21078
21211
  }
21079
- return /* @__PURE__ */ jsxs46(Fragment18, { children: [
21212
+ return /* @__PURE__ */ jsxs46(Fragment19, { children: [
21080
21213
  animationDelay != null && /* @__PURE__ */ jsx53(
21081
21214
  "style",
21082
21215
  {
@@ -21106,13 +21239,13 @@ var Grid = Object.assign(GridRoot, { Item: GridItem });
21106
21239
  var Grid_default = Grid;
21107
21240
 
21108
21241
  // src/components/ClientOnly.tsx
21109
- import { Fragment as Fragment19, jsx as jsx54 } from "react/jsx-runtime";
21242
+ import { Fragment as Fragment20, jsx as jsx54 } from "react/jsx-runtime";
21110
21243
  function ClientOnly({ children, fallback = null }) {
21111
21244
  const hasMounted = useHydrated();
21112
21245
  if (!hasMounted) {
21113
- return /* @__PURE__ */ jsx54(Fragment19, { children: fallback });
21246
+ return /* @__PURE__ */ jsx54(Fragment20, { children: fallback });
21114
21247
  }
21115
- return /* @__PURE__ */ jsx54(Fragment19, { children });
21248
+ return /* @__PURE__ */ jsx54(Fragment20, { children });
21116
21249
  }
21117
21250
 
21118
21251
  // src/components/Loading.tsx
@@ -21294,7 +21427,7 @@ import React58 from "react";
21294
21427
 
21295
21428
  // src/components/DataTable/components/DataTableBody.tsx
21296
21429
  import React49 from "react";
21297
- import { Fragment as Fragment20, jsx as jsx57, jsxs as jsxs49 } from "react/jsx-runtime";
21430
+ import { Fragment as Fragment21, jsx as jsx57, jsxs as jsxs49 } from "react/jsx-runtime";
21298
21431
  function DataTableOverflowText({
21299
21432
  text,
21300
21433
  align
@@ -21389,7 +21522,7 @@ function DataTableBodyRows({
21389
21522
  t("loading"),
21390
21523
  "\u2026"
21391
21524
  ] })
21392
- ] }) }) }) : 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(Fragment20, { children: [
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: [
21393
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 } }) }),
21394
21527
  rowsToRender.map(({ row, idx, virtualRow }) => {
21395
21528
  const isStripedRow = striped && idx % 2 === 0;
@@ -21523,7 +21656,7 @@ function groupColumnsByColorTag(leafCols, colorGroups) {
21523
21656
  }
21524
21657
 
21525
21658
  // src/components/DataTable/components/DataTableHeader.tsx
21526
- import { Fragment as Fragment21, jsx as jsx58, jsxs as jsxs50 } from "react/jsx-runtime";
21659
+ import { Fragment as Fragment22, jsx as jsx58, jsxs as jsxs50 } from "react/jsx-runtime";
21527
21660
  function getColumnLabel(title) {
21528
21661
  if (typeof title === "string" || typeof title === "number") {
21529
21662
  return String(title).replace(/\s+/g, " ").trim();
@@ -21767,10 +21900,10 @@ function DataTableHeader({
21767
21900
  !isRightAlign && !isCenterAlign && "justify-start",
21768
21901
  useEndIcon && "w-full"
21769
21902
  ),
21770
- children: isRightAlign ? /* @__PURE__ */ jsxs50(Fragment21, { children: [
21903
+ children: isRightAlign ? /* @__PURE__ */ jsxs50(Fragment22, { children: [
21771
21904
  filterContent,
21772
21905
  titleContent
21773
- ] }) : /* @__PURE__ */ jsxs50(Fragment21, { children: [
21906
+ ] }) : /* @__PURE__ */ jsxs50(Fragment22, { children: [
21774
21907
  titleContent,
21775
21908
  filterContent
21776
21909
  ] })
@@ -21793,7 +21926,7 @@ function DataTableHeader({
21793
21926
  t
21794
21927
  ]
21795
21928
  );
21796
- return /* @__PURE__ */ jsx58(Fragment21, { children: headerRows.map((row, rowIndex) => /* @__PURE__ */ jsx58(TableRow, { className: "!border-border/10", children: row.map((headerCell, cellIndex) => {
21929
+ return /* @__PURE__ */ jsx58(Fragment22, { children: headerRows.map((row, rowIndex) => /* @__PURE__ */ jsx58(TableRow, { className: "!border-border/10", children: row.map((headerCell, cellIndex) => {
21797
21930
  const { column: col, colSpan, rowSpan, isLeaf } = headerCell;
21798
21931
  const prevCell = cellIndex > 0 ? row[cellIndex - 1] : null;
21799
21932
  const prevCol = prevCell?.column;
@@ -23436,7 +23569,7 @@ function AccessDenied({
23436
23569
  import { Moon as Moon2, Sun as Sun2, Monitor } from "lucide-react";
23437
23570
  import { useRef as useRef23, useState as useState37 } from "react";
23438
23571
  import { createPortal as createPortal3 } from "react-dom";
23439
- import { Fragment as Fragment22, jsx as jsx65, jsxs as jsxs57 } from "react/jsx-runtime";
23572
+ import { Fragment as Fragment23, jsx as jsx65, jsxs as jsxs57 } from "react/jsx-runtime";
23440
23573
  function ThemeToggleHeadless({
23441
23574
  theme,
23442
23575
  onChange,
@@ -23486,7 +23619,7 @@ function ThemeToggleHeadless({
23486
23619
  children: /* @__PURE__ */ jsx65(CurrentIcon, { className: "h-5 w-5" })
23487
23620
  }
23488
23621
  ),
23489
- isOpen && /* @__PURE__ */ jsxs57(Fragment22, { children: [
23622
+ isOpen && /* @__PURE__ */ jsxs57(Fragment23, { children: [
23490
23623
  typeof window !== "undefined" && createPortal3(/* @__PURE__ */ jsx65("div", { className: "fixed inset-0 z-[99998]", onClick: () => setIsOpen(false) }), document.body),
23491
23624
  typeof window !== "undefined" && dropdownPosition && createPortal3(
23492
23625
  /* @__PURE__ */ jsx65(
@@ -23538,7 +23671,7 @@ function ThemeToggleHeadless({
23538
23671
  import { useRef as useRef24, useState as useState38 } from "react";
23539
23672
  import { createPortal as createPortal4 } from "react-dom";
23540
23673
  import { Globe } from "lucide-react";
23541
- import { Fragment as Fragment23, jsx as jsx66, jsxs as jsxs58 } from "react/jsx-runtime";
23674
+ import { Fragment as Fragment24, jsx as jsx66, jsxs as jsxs58 } from "react/jsx-runtime";
23542
23675
  function LanguageSwitcherHeadless({
23543
23676
  locales,
23544
23677
  currentLocale,
@@ -23583,7 +23716,7 @@ function LanguageSwitcherHeadless({
23583
23716
  children: /* @__PURE__ */ jsx66(Globe, { className: "h-5 w-5" })
23584
23717
  }
23585
23718
  ),
23586
- isOpen && /* @__PURE__ */ jsxs58(Fragment23, { children: [
23719
+ isOpen && /* @__PURE__ */ jsxs58(Fragment24, { children: [
23587
23720
  typeof window !== "undefined" && createPortal4(/* @__PURE__ */ jsx66("div", { className: "fixed inset-0 z-[99998]", onClick: () => setIsOpen(false) }), document.body),
23588
23721
  typeof window !== "undefined" && dropdownPosition && createPortal4(
23589
23722
  /* @__PURE__ */ jsx66(