@underverse-ui/underverse 0.2.20 → 0.2.22
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 +94 -74
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -3
- package/dist/index.d.ts +5 -3
- package/dist/index.js +94 -74
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -182,13 +182,13 @@ var VARIANT_STYLES_BTN = {
|
|
|
182
182
|
// Link: chỉ văn bản
|
|
183
183
|
link: "text-primary bg-transparent underline-offset-4 hover:underline hover:text-primary/85 transition-colors",
|
|
184
184
|
// Gradient: tuỳ chọn, giảm shadow
|
|
185
|
-
gradient: "bg-
|
|
185
|
+
gradient: "bg-linear-to-r from-primary via-secondary to-accent text-primary-foreground hover:opacity-90 shadow-sm border border-primary/10"
|
|
186
186
|
};
|
|
187
187
|
var SIZE_STYLES_BTN = {
|
|
188
|
-
sm: "px-3 py-1.5 text-sm h-8 min-w-
|
|
189
|
-
md: "px-4 py-2 text-sm h-10 min-w-
|
|
190
|
-
lg: "px-6 py-3 text-base h-12 min-w-
|
|
191
|
-
smx: "px-3.5 py-1.5 text-[13px] h-9 min-w-
|
|
188
|
+
sm: "px-3 py-1.5 text-sm h-8 min-w-8 md:px-2.5 md:py-1 md:h-7 md:text-xs",
|
|
189
|
+
md: "px-4 py-2 text-sm h-10 min-w-10 md:px-3 md:py-1.5 md:h-9",
|
|
190
|
+
lg: "px-6 py-3 text-base h-12 min-w-12 md:px-4 md:py-2 md:h-10 md:text-sm",
|
|
191
|
+
smx: "px-3.5 py-1.5 text-[13px] h-9 min-w-9 md:px-3 md:py-1 md:h-8 md:text-xs",
|
|
192
192
|
icon: "w-11 h-11 p-0 rounded-full flex items-center justify-center md:w-10 md:h-10"
|
|
193
193
|
};
|
|
194
194
|
|
|
@@ -289,7 +289,7 @@ var Button = (0, import_react.forwardRef)(
|
|
|
289
289
|
"aria-label": rest["aria-label"] || title,
|
|
290
290
|
...rest,
|
|
291
291
|
children: [
|
|
292
|
-
!noHoverOverlay && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "absolute inset-0 bg-
|
|
292
|
+
!noHoverOverlay && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "absolute inset-0 bg-linear-to-r from-primary-foreground/20 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-200 dark:hidden" }),
|
|
293
293
|
loading2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
294
294
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SpinnerIcon, { className: "w-4 h-4 animate-spin" }),
|
|
295
295
|
loadingText && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "ml-2", "aria-live": "polite", children: loadingText }),
|
|
@@ -321,7 +321,7 @@ var variantStyles = {
|
|
|
321
321
|
outline: "bg-transparent text-foreground border-border hover:bg-accent/50",
|
|
322
322
|
ghost: "bg-transparent hover:bg-accent/20 hover:text-accent-foreground border-transparent transition-colors",
|
|
323
323
|
transparent: "bg-transparent text-foreground border-transparent hover:bg-accent/30",
|
|
324
|
-
gradient: "bg-
|
|
324
|
+
gradient: "bg-linear-to-r from-primary to-secondary text-primary-foreground border-transparent hover:from-primary/90 hover:to-secondary/90"
|
|
325
325
|
};
|
|
326
326
|
var sizeStyles = {
|
|
327
327
|
xs: "px-1.5 py-0.5 text-xs font-medium min-h-[18px]",
|
|
@@ -398,12 +398,12 @@ var Badge = ({
|
|
|
398
398
|
className: cn(
|
|
399
399
|
baseClasses,
|
|
400
400
|
"justify-center rounded-full",
|
|
401
|
-
"min-w-
|
|
402
|
-
size === "xs" && "min-w-
|
|
403
|
-
size === "sm" && "min-w-
|
|
404
|
-
size === "md" && "min-w-
|
|
405
|
-
size === "lg" && "min-w-
|
|
406
|
-
size === "xl" && "min-w-
|
|
401
|
+
"min-w-6 h-6 px-1.5 text-xs font-bold",
|
|
402
|
+
size === "xs" && "min-w-5 h-5 px-1 text-xs",
|
|
403
|
+
size === "sm" && "min-w-6 h-6 px-1.5 text-xs",
|
|
404
|
+
size === "md" && "min-w-7 h-7 px-2 text-xs",
|
|
405
|
+
size === "lg" && "min-w-8 h-8 px-2.5 text-sm",
|
|
406
|
+
size === "xl" && "min-w-9 h-9 px-3 text-sm",
|
|
407
407
|
className
|
|
408
408
|
),
|
|
409
409
|
onClick: handleClick,
|
|
@@ -418,7 +418,7 @@ var Badge = ({
|
|
|
418
418
|
Icon,
|
|
419
419
|
{
|
|
420
420
|
className: cn(
|
|
421
|
-
"
|
|
421
|
+
"shrink-0",
|
|
422
422
|
size === "xs" && "h-3 w-3",
|
|
423
423
|
size === "sm" && "h-3 w-3",
|
|
424
424
|
size === "md" && "h-4 w-4",
|
|
@@ -434,7 +434,7 @@ var Badge = ({
|
|
|
434
434
|
onClick: handleRemove,
|
|
435
435
|
className: cn(
|
|
436
436
|
"ml-1 rounded-full hover:bg-accent focus:outline-none focus:bg-accent",
|
|
437
|
-
"transition-colors duration-150
|
|
437
|
+
"transition-colors duration-150 shrink-0",
|
|
438
438
|
size === "xs" && "h-3 w-3",
|
|
439
439
|
size === "sm" && "h-3 w-3",
|
|
440
440
|
size === "md" && "h-4 w-4",
|
|
@@ -523,7 +523,7 @@ var GradientBadge = ({ from = "from-primary", to = "to-secondary", className, ..
|
|
|
523
523
|
{
|
|
524
524
|
...props,
|
|
525
525
|
variant: "transparent",
|
|
526
|
-
className: cn(`bg-
|
|
526
|
+
className: cn(`bg-linear-to-r ${from} ${to} text-primary-foreground border-transparent`, "hover:opacity-90", className)
|
|
527
527
|
}
|
|
528
528
|
);
|
|
529
529
|
};
|
|
@@ -562,7 +562,7 @@ var Card = ({ title, description, children, footer, className, hoverable = false
|
|
|
562
562
|
"div",
|
|
563
563
|
{
|
|
564
564
|
className: cn(
|
|
565
|
-
"absolute inset-0 bg-
|
|
565
|
+
"absolute inset-0 bg-linear-to-br from-primary/5 to-transparent transition-opacity duration-300",
|
|
566
566
|
isHovered ? "opacity-100" : "opacity-0"
|
|
567
567
|
)
|
|
568
568
|
}
|
|
@@ -880,7 +880,7 @@ var Input = (0, import_react3.forwardRef)(
|
|
|
880
880
|
"div",
|
|
881
881
|
{
|
|
882
882
|
className: cn(
|
|
883
|
-
"absolute bottom-0 left-0 h-0.5 bg-
|
|
883
|
+
"absolute bottom-0 left-0 h-0.5 bg-linear-to-r from-primary to-primary/60 transition-all duration-300",
|
|
884
884
|
// default hidden
|
|
885
885
|
"w-0 opacity-0",
|
|
886
886
|
// expand underline when focused within input container
|
|
@@ -890,7 +890,7 @@ var Input = (0, import_react3.forwardRef)(
|
|
|
890
890
|
)
|
|
891
891
|
] }),
|
|
892
892
|
errMsg && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { id: errorId, className: "flex items-center gap-2 text-sm text-destructive animate-in slide-in-from-top-1 duration-200", children: [
|
|
893
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react3.AlertCircle, { className: "w-4 h-4
|
|
893
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react3.AlertCircle, { className: "w-4 h-4 shrink-0" }),
|
|
894
894
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { children: errMsg })
|
|
895
895
|
] }),
|
|
896
896
|
(description || hint) && !errMsg && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
@@ -1074,7 +1074,7 @@ var NumberInput = (0, import_react3.forwardRef)(
|
|
|
1074
1074
|
"text-muted-foreground hover:text-foreground"
|
|
1075
1075
|
),
|
|
1076
1076
|
"aria-label": "Increase value",
|
|
1077
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { width: "8", height: "8", viewBox: "0 0 8 8", fill: "none", className: "
|
|
1077
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { width: "8", height: "8", viewBox: "0 0 8 8", fill: "none", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M4 2L6 6H2L4 2Z", fill: "currentColor" }) })
|
|
1078
1078
|
}
|
|
1079
1079
|
),
|
|
1080
1080
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
@@ -1090,7 +1090,7 @@ var NumberInput = (0, import_react3.forwardRef)(
|
|
|
1090
1090
|
"text-muted-foreground hover:text-foreground"
|
|
1091
1091
|
),
|
|
1092
1092
|
"aria-label": "Decrease value",
|
|
1093
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { width: "8", height: "8", viewBox: "0 0 8 8", fill: "none", className: "
|
|
1093
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { width: "8", height: "8", viewBox: "0 0 8 8", fill: "none", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M4 6L2 2H6L4 6Z", fill: "currentColor" }) })
|
|
1094
1094
|
}
|
|
1095
1095
|
)
|
|
1096
1096
|
] })
|
|
@@ -1171,7 +1171,7 @@ var Textarea = (0, import_react3.forwardRef)(
|
|
|
1171
1171
|
}
|
|
1172
1172
|
),
|
|
1173
1173
|
error && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2 text-sm text-destructive animate-in slide-in-from-top-1 duration-200", children: [
|
|
1174
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react3.AlertCircle, { className: "w-4 h-4
|
|
1174
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react3.AlertCircle, { className: "w-4 h-4 shrink-0" }),
|
|
1175
1175
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { children: error })
|
|
1176
1176
|
] }),
|
|
1177
1177
|
description && !error && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: cn("text-xs transition-colors duration-200", isFocused ? "text-primary/70" : "text-muted-foreground"), children: description })
|
|
@@ -1244,7 +1244,7 @@ var Textarea2 = (0, import_react4.forwardRef)(
|
|
|
1244
1244
|
}
|
|
1245
1245
|
),
|
|
1246
1246
|
variant === "default" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn(
|
|
1247
|
-
"absolute bottom-0 left-0 h-0.5 bg-
|
|
1247
|
+
"absolute bottom-0 left-0 h-0.5 bg-linear-to-r from-primary to-primary/60 transition-all duration-300 ease-soft",
|
|
1248
1248
|
isFocused ? "w-full opacity-100" : "w-0 opacity-0"
|
|
1249
1249
|
) }),
|
|
1250
1250
|
isFocused && variant !== "outlined" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "absolute inset-0 rounded-lg bg-primary/5 -z-10 animate-pulse" })
|
|
@@ -1595,7 +1595,7 @@ var Avatar = ({ src, alt = "avatar", fallback = "?", size = "md", className, onC
|
|
|
1595
1595
|
"span",
|
|
1596
1596
|
{
|
|
1597
1597
|
className: cn(
|
|
1598
|
-
"font-bold uppercase bg-
|
|
1598
|
+
"font-bold uppercase bg-linear-to-br from-primary to-primary/80 bg-clip-text text-transparent",
|
|
1599
1599
|
"transition-all duration-200 animate-fade-in"
|
|
1600
1600
|
),
|
|
1601
1601
|
children: fallback
|
|
@@ -1626,7 +1626,7 @@ var Skeleton = ({
|
|
|
1626
1626
|
};
|
|
1627
1627
|
const animationClasses = {
|
|
1628
1628
|
pulse: "animate-pulse",
|
|
1629
|
-
wave: "animate-shimmer bg-
|
|
1629
|
+
wave: "animate-shimmer bg-linear-to-r from-muted via-muted/50 to-muted bg-size-[200%_100%]",
|
|
1630
1630
|
none: ""
|
|
1631
1631
|
};
|
|
1632
1632
|
if (variant === "text" && lines > 1) {
|
|
@@ -1815,11 +1815,11 @@ var import_lucide_react4 = require("lucide-react");
|
|
|
1815
1815
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1816
1816
|
var variantStyles2 = {
|
|
1817
1817
|
default: "bg-muted-foreground",
|
|
1818
|
-
primary: "bg-
|
|
1819
|
-
success: "bg-
|
|
1820
|
-
warning: "bg-
|
|
1821
|
-
danger: "bg-
|
|
1822
|
-
info: "bg-
|
|
1818
|
+
primary: "bg-linear-to-r from-primary via-primary/90 to-primary",
|
|
1819
|
+
success: "bg-linear-to-r from-success via-success/90 to-success shadow-sm shadow-success/20",
|
|
1820
|
+
warning: "bg-linear-to-r from-warning via-warning/90 to-warning shadow-sm shadow-warning/20",
|
|
1821
|
+
danger: "bg-linear-to-r from-destructive via-destructive/90 to-destructive shadow-sm shadow-destructive/20",
|
|
1822
|
+
info: "bg-linear-to-r from-info via-info/90 to-info shadow-sm shadow-info/20"
|
|
1823
1823
|
};
|
|
1824
1824
|
var sizeStyles2 = {
|
|
1825
1825
|
sm: "h-1.5",
|
|
@@ -1888,12 +1888,12 @@ var Progress = ({
|
|
|
1888
1888
|
"before:absolute before:inset-0 before:rounded-full before:opacity-30",
|
|
1889
1889
|
indeterminate && "animate-pulse",
|
|
1890
1890
|
!indeterminate && variantStyles2[variant],
|
|
1891
|
-
isComplete && "bg-
|
|
1892
|
-
isError && "bg-
|
|
1893
|
-
striped && "bg-
|
|
1891
|
+
isComplete && "bg-linear-to-r from-success via-success/90 to-success shadow-sm shadow-success/20",
|
|
1892
|
+
isError && "bg-linear-to-r from-destructive via-destructive/90 to-destructive shadow-sm shadow-destructive/20",
|
|
1893
|
+
striped && "bg-linear-to-r from-transparent via-primary-foreground/20 to-transparent bg-size-[1rem_1rem]",
|
|
1894
1894
|
animated && !indeterminate && "before:animate-pulse",
|
|
1895
1895
|
// Shimmer effect for indeterminate
|
|
1896
|
-
indeterminate && "bg-
|
|
1896
|
+
indeterminate && "bg-linear-to-r from-muted via-primary/50 to-muted bg-size-[200%_100%] animate-[shimmer_2s_infinite]"
|
|
1897
1897
|
),
|
|
1898
1898
|
style: {
|
|
1899
1899
|
width: indeterminate ? "100%" : `${percentage}%`,
|
|
@@ -2103,7 +2103,7 @@ var MiniProgress = ({
|
|
|
2103
2103
|
)
|
|
2104
2104
|
}
|
|
2105
2105
|
),
|
|
2106
|
-
showValue && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "text-xs font-medium text-muted-foreground min-w-
|
|
2106
|
+
showValue && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "text-xs font-medium text-muted-foreground min-w-10 text-right", children: [
|
|
2107
2107
|
Math.round(percentage),
|
|
2108
2108
|
"%"
|
|
2109
2109
|
] })
|
|
@@ -2337,7 +2337,7 @@ var Modal = ({
|
|
|
2337
2337
|
return null;
|
|
2338
2338
|
}
|
|
2339
2339
|
const maxWidthClass = width ? "max-w-none" : fullWidth ? "max-w-full" : sizeStyles3[size];
|
|
2340
|
-
const modalContent = /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: cn("fixed inset-0 z-
|
|
2340
|
+
const modalContent = /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: cn("fixed inset-0 z-9999 flex items-center justify-center", overlayClassName), onClick: handleOverlayClick, children: [
|
|
2341
2341
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2342
2342
|
"div",
|
|
2343
2343
|
{
|
|
@@ -2438,7 +2438,7 @@ var ToastProvider = ({ children, position = "top-right", maxToasts = 5 }) => {
|
|
|
2438
2438
|
};
|
|
2439
2439
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(ToastContext.Provider, { value: { addToast, removeToast, toasts }, children: [
|
|
2440
2440
|
children,
|
|
2441
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: cn("fixed z-
|
|
2441
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: cn("fixed z-99999 flex flex-col gap-2 pointer-events-none", positionClasses[position]), "aria-live": "polite", "aria-atomic": true, children: toasts.map((toast) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ToastComponent, { toast, onRemove: removeToast }, toast.id)) })
|
|
2442
2442
|
] });
|
|
2443
2443
|
};
|
|
2444
2444
|
var ToastComponent = ({ toast, onRemove }) => {
|
|
@@ -2672,7 +2672,7 @@ var Tooltip = ({
|
|
|
2672
2672
|
},
|
|
2673
2673
|
className: cn(
|
|
2674
2674
|
"px-3 py-2 text-sm font-medium rounded-lg shadow-lg border",
|
|
2675
|
-
"max-w-xs break-
|
|
2675
|
+
"max-w-xs wrap-break-word backdrop-blur-sm",
|
|
2676
2676
|
variantStyles3[variant],
|
|
2677
2677
|
className
|
|
2678
2678
|
),
|
|
@@ -3027,7 +3027,7 @@ var Popover = ({
|
|
|
3027
3027
|
role: "dialog",
|
|
3028
3028
|
"aria-modal": modal || void 0,
|
|
3029
3029
|
className: cn(
|
|
3030
|
-
"z-
|
|
3030
|
+
"z-9999",
|
|
3031
3031
|
// shadcn-like enter animation
|
|
3032
3032
|
"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
|
|
3033
3033
|
className
|
|
@@ -3236,7 +3236,7 @@ var Sheet = ({
|
|
|
3236
3236
|
transition: "transform 300ms cubic-bezier(0.4, 0, 0.2, 1)"
|
|
3237
3237
|
},
|
|
3238
3238
|
children: [
|
|
3239
|
-
(title || description || header || showClose) && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "
|
|
3239
|
+
(title || description || header || showClose) && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "shrink-0 border-b border-border", children: header || /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex items-center justify-between p-4", children: [
|
|
3240
3240
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex-1", children: [
|
|
3241
3241
|
title && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h2", { className: "text-lg font-semibold text-foreground", children: title }),
|
|
3242
3242
|
description && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-sm text-muted-foreground mt-1", children: description })
|
|
@@ -3255,7 +3255,7 @@ var Sheet = ({
|
|
|
3255
3255
|
children
|
|
3256
3256
|
}
|
|
3257
3257
|
),
|
|
3258
|
-
footer && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "
|
|
3258
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "shrink-0 border-t border-border p-4", children: footer })
|
|
3259
3259
|
]
|
|
3260
3260
|
}
|
|
3261
3261
|
)
|
|
@@ -3320,7 +3320,7 @@ var Alert = ({ title, description, variant = "default", className, icon, dismiss
|
|
|
3320
3320
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "pt-1", children: icon ?? variantIcons[variant] }),
|
|
3321
3321
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
3322
3322
|
title && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "font-semibold text-sm leading-none mb-1 text-foreground", children: title }),
|
|
3323
|
-
description && (typeof description === "string" ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "text-sm text-muted-foreground leading-relaxed break-
|
|
3323
|
+
description && (typeof description === "string" ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "text-sm text-muted-foreground leading-relaxed wrap-break-word", children: description }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "text-sm text-muted-foreground leading-relaxed wrap-break-word", children: description })),
|
|
3324
3324
|
actions && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "mt-2 flex flex-wrap gap-2", children: actions })
|
|
3325
3325
|
] }),
|
|
3326
3326
|
dismissible && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
@@ -3402,7 +3402,7 @@ var GlobalLoading = ({
|
|
|
3402
3402
|
"div",
|
|
3403
3403
|
{
|
|
3404
3404
|
className: cn(
|
|
3405
|
-
"inset-0 z-
|
|
3405
|
+
"inset-0 z-100000 flex items-center justify-center",
|
|
3406
3406
|
position === "fixed" ? "fixed" : "absolute",
|
|
3407
3407
|
backdrop && "bg-background/90 backdrop-blur-sm",
|
|
3408
3408
|
className
|
|
@@ -3839,7 +3839,7 @@ var VerticalTabs = ({
|
|
|
3839
3839
|
className,
|
|
3840
3840
|
...props
|
|
3841
3841
|
}) => {
|
|
3842
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: cn("flex gap-6", className), children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: cn(sidebarWidth, "
|
|
3842
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: cn("flex gap-6", className), children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: cn(sidebarWidth, "shrink-0"), children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3843
3843
|
Tabs,
|
|
3844
3844
|
{
|
|
3845
3845
|
...props,
|
|
@@ -4303,7 +4303,7 @@ var Combobox = ({
|
|
|
4303
4303
|
"outline-none focus:outline-none focus-visible:outline-none",
|
|
4304
4304
|
"hover:bg-accent hover:text-accent-foreground",
|
|
4305
4305
|
"focus:bg-accent focus:text-accent-foreground",
|
|
4306
|
-
"data-
|
|
4306
|
+
"data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
4307
4307
|
index === activeIndex && "bg-accent text-accent-foreground",
|
|
4308
4308
|
isSelected && "bg-accent text-accent-foreground"
|
|
4309
4309
|
),
|
|
@@ -4534,7 +4534,7 @@ var Pagination = ({
|
|
|
4534
4534
|
size,
|
|
4535
4535
|
onClick: () => onChange(pageNumber),
|
|
4536
4536
|
disabled,
|
|
4537
|
-
className: cn("min-w-
|
|
4537
|
+
className: cn("min-w-10", isActive && "font-semibold"),
|
|
4538
4538
|
"aria-label": labels?.pageNumber ? labels.pageNumber(pageNumber) : t("pageNumber", { page: pageNumber }),
|
|
4539
4539
|
"aria-current": isActive ? "page" : void 0,
|
|
4540
4540
|
children: pageNumber
|
|
@@ -4670,7 +4670,7 @@ var CompactPagination = ({
|
|
|
4670
4670
|
title: "Previous page"
|
|
4671
4671
|
}
|
|
4672
4672
|
),
|
|
4673
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "px-2 py-1 text-sm text-muted-foreground min-w-
|
|
4673
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "px-2 py-1 text-sm text-muted-foreground min-w-16 text-center", children: [
|
|
4674
4674
|
page,
|
|
4675
4675
|
" / ",
|
|
4676
4676
|
totalPages
|
|
@@ -5071,7 +5071,7 @@ var DatePicker = ({
|
|
|
5071
5071
|
size === "sm" ? "w-7 h-7 text-[12px]" : "w-8 h-8 text-sm",
|
|
5072
5072
|
"datepicker-day rounded-md focus:outline-none",
|
|
5073
5073
|
"transition-colors",
|
|
5074
|
-
isSelected ? "
|
|
5074
|
+
isSelected ? "bg-primary! text-primary-foreground font-bold ring-2 ring-primary-foreground/60 shadow-lg scale-105 z-10 hover:bg-primary! focus:bg-primary! focus:text-primary-foreground" : "hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
|
|
5075
5075
|
isToday2 && !isSelected && "bg-accent text-accent-foreground font-semibold"
|
|
5076
5076
|
),
|
|
5077
5077
|
children: day
|
|
@@ -5096,7 +5096,7 @@ var DatePicker = ({
|
|
|
5096
5096
|
},
|
|
5097
5097
|
"data-state": isOpen ? "open" : "closed",
|
|
5098
5098
|
className: cn(
|
|
5099
|
-
"z-
|
|
5099
|
+
"z-9999",
|
|
5100
5100
|
"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
|
|
5101
5101
|
"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95"
|
|
5102
5102
|
),
|
|
@@ -5359,7 +5359,7 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
|
|
|
5359
5359
|
style: { position: "absolute", top: dropdownPosition.top, left: dropdownPosition.left, width: dropdownPosition.width || 256, zIndex: 9999 },
|
|
5360
5360
|
"data-state": isOpen ? "open" : "closed",
|
|
5361
5361
|
className: cn(
|
|
5362
|
-
"z-
|
|
5362
|
+
"z-9999",
|
|
5363
5363
|
"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
|
|
5364
5364
|
"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95"
|
|
5365
5365
|
),
|
|
@@ -6004,11 +6004,11 @@ function TimePicker({
|
|
|
6004
6004
|
),
|
|
6005
6005
|
(error || success || helperText) && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: cn("mt-1.5 flex items-start gap-1.5", sz.label), children: [
|
|
6006
6006
|
error && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-1.5 text-destructive", children: [
|
|
6007
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react14.X, { className: "w-3.5 h-3.5
|
|
6007
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react14.X, { className: "w-3.5 h-3.5 shrink-0" }),
|
|
6008
6008
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { children: error })
|
|
6009
6009
|
] }),
|
|
6010
6010
|
success && !error && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-1.5 text-green-600", children: [
|
|
6011
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react14.Check, { className: "w-3.5 h-3.5
|
|
6011
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react14.Check, { className: "w-3.5 h-3.5 shrink-0" }),
|
|
6012
6012
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { children: "Valid time selected" })
|
|
6013
6013
|
] }),
|
|
6014
6014
|
helperText && !error && !success && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-muted-foreground", children: helperText })
|
|
@@ -6497,13 +6497,13 @@ var MultiCombobox = ({
|
|
|
6497
6497
|
setOpen(next);
|
|
6498
6498
|
},
|
|
6499
6499
|
className: cn(
|
|
6500
|
-
"flex w-full items-center gap-2 rounded-lg border border-input bg-background shadow-sm min-h-
|
|
6500
|
+
"flex w-full items-center gap-2 rounded-lg border border-input bg-background shadow-sm min-h-10",
|
|
6501
6501
|
"px-3 py-2",
|
|
6502
6502
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
6503
6503
|
"disabled:cursor-not-allowed disabled:opacity-50"
|
|
6504
6504
|
),
|
|
6505
6505
|
children: [
|
|
6506
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "flex items-center gap-1 flex-wrap min-h-
|
|
6506
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "flex items-center gap-1 flex-wrap min-h-6 flex-1", children: value.length > 0 ? showTags ? value.map((itemValue) => {
|
|
6507
6507
|
const option = normalizedOptions.find((o) => o.value === itemValue);
|
|
6508
6508
|
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: "inline-flex items-center gap-1 bg-accent text-accent-foreground rounded px-2 py-1 text-xs", children: [
|
|
6509
6509
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "truncate max-w-[120px]", children: option ? displayFormat(option) : itemValue }),
|
|
@@ -7019,7 +7019,7 @@ var Slider = React26.forwardRef(
|
|
|
7019
7019
|
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: cn("w-full space-y-2", containerClassName), children: [
|
|
7020
7020
|
(label || showValue) && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
7021
7021
|
label && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("label", { className: cn("text-sm font-medium text-foreground", labelClassName), children: label }),
|
|
7022
|
-
showValue && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: cn("text-xs font-mono text-muted-foreground min-w-
|
|
7022
|
+
showValue && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: cn("text-xs font-mono text-muted-foreground min-w-8 text-right", valueClassName), children: displayValue })
|
|
7023
7023
|
] }),
|
|
7024
7024
|
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: cn("relative flex items-center", sizeStyles8.container), children: [
|
|
7025
7025
|
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: cn("w-full rounded-full bg-secondary relative overflow-hidden", sizeStyles8.track, trackClassName), children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
@@ -7356,7 +7356,7 @@ function OverlayControls({
|
|
|
7356
7356
|
"div",
|
|
7357
7357
|
{
|
|
7358
7358
|
className: cn(
|
|
7359
|
-
"absolute bottom-0 left-0 right-0 pb-2 pt-8 bg-
|
|
7359
|
+
"absolute bottom-0 left-0 right-0 pb-2 pt-8 bg-linear-to-t from-black/40 to-transparent z-20 transition-opacity duration-200",
|
|
7360
7360
|
hoverClasses,
|
|
7361
7361
|
autoHide && !controlsVisible && "opacity-0 pointer-events-none",
|
|
7362
7362
|
className
|
|
@@ -8084,7 +8084,7 @@ function Carousel({
|
|
|
8084
8084
|
"div",
|
|
8085
8085
|
{
|
|
8086
8086
|
className: cn(
|
|
8087
|
-
"
|
|
8087
|
+
"shrink-0",
|
|
8088
8088
|
isHorizontal ? "h-full" : "w-full",
|
|
8089
8089
|
animation === "fade" && idx !== currentIndex && "opacity-0",
|
|
8090
8090
|
animation === "scale" && idx !== currentIndex && "scale-95",
|
|
@@ -8167,7 +8167,7 @@ function Carousel({
|
|
|
8167
8167
|
"div",
|
|
8168
8168
|
{
|
|
8169
8169
|
className: cn(
|
|
8170
|
-
"absolute bottom-0 left-0 right-0 flex gap-2 p-4 bg-
|
|
8170
|
+
"absolute bottom-0 left-0 right-0 flex gap-2 p-4 bg-linear-to-t from-black/50 to-transparent overflow-x-auto",
|
|
8171
8171
|
isHorizontal ? "flex-row" : "flex-col"
|
|
8172
8172
|
),
|
|
8173
8173
|
children: React29.Children.map(children, (child, idx) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
@@ -8175,7 +8175,7 @@ function Carousel({
|
|
|
8175
8175
|
{
|
|
8176
8176
|
onClick: () => scrollTo(idx),
|
|
8177
8177
|
className: cn(
|
|
8178
|
-
"
|
|
8178
|
+
"shrink-0 w-16 h-16 rounded-md overflow-hidden border-2 transition-all focus:outline-none focus:ring-2 focus:ring-primary",
|
|
8179
8179
|
idx === currentIndex ? "border-primary scale-110" : "border-transparent opacity-70 hover:opacity-100"
|
|
8180
8180
|
),
|
|
8181
8181
|
"aria-label": `Thumbnail ${idx + 1}`,
|
|
@@ -8452,8 +8452,8 @@ function FallingIcons({
|
|
|
8452
8452
|
"span",
|
|
8453
8453
|
{
|
|
8454
8454
|
className: cn(
|
|
8455
|
-
"block uv-spin hover:[
|
|
8456
|
-
physicsRotation ? "[
|
|
8455
|
+
"block uv-spin hover:animate-[var(--popName)_0.35s_ease-out_forwards]",
|
|
8456
|
+
physicsRotation ? "animate-[var(--physicsSpinName)_var(--spinDur)_ease-in-out_infinite]" : spin && "animate-[var(--spinName)_var(--spinDur)_linear_infinite]"
|
|
8457
8457
|
),
|
|
8458
8458
|
style: {
|
|
8459
8459
|
width: p.size,
|
|
@@ -9120,8 +9120,8 @@ var TimelineItem = React33.forwardRef(
|
|
|
9120
9120
|
outlined: "rounded-lg border border-border bg-card shadow-sm px-4 py-3",
|
|
9121
9121
|
card: "rounded-xl border border-border bg-card shadow-md px-5 py-4",
|
|
9122
9122
|
minimal: "border-l-2 pl-4 py-2",
|
|
9123
|
-
modern: "rounded-lg bg-
|
|
9124
|
-
gradient: "rounded-xl bg-
|
|
9123
|
+
modern: "rounded-lg bg-linear-to-r from-card to-muted/20 border border-border/50 px-5 py-4 backdrop-blur-sm",
|
|
9124
|
+
gradient: "rounded-xl bg-linear-to-br from-primary/10 via-card to-accent/10 border border-primary/20 px-5 py-4 shadow-lg"
|
|
9125
9125
|
};
|
|
9126
9126
|
const contentBox = /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: cn("min-w-0 flex-1", variantClasses[ctx.variant]), children: [
|
|
9127
9127
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
|
|
@@ -9148,12 +9148,12 @@ var TimelineItem = React33.forwardRef(
|
|
|
9148
9148
|
] });
|
|
9149
9149
|
const markerWidth = Icon || dot ? "w-auto" : "w-6";
|
|
9150
9150
|
const leftSide = /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: cn("flex items-stretch gap-4", padding, ctx.animate && "animate-in slide-in-from-left duration-500"), style: { animationDelay: ctx.animate ? `${(idx ?? 0) * 100}ms` : void 0 }, children: [
|
|
9151
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: cn("
|
|
9151
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: cn("shrink-0 flex items-stretch", markerWidth), children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Marker, { index: idx ?? 0, last: isLast, size: ctx.size, color, status, lineColor: ctx.lineColor, lineStyle: ctx.lineStyle, active, dot, icon: Icon, showLine: ctx.showLine }) }),
|
|
9152
9152
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "flex-1", children: contentBox })
|
|
9153
9153
|
] });
|
|
9154
9154
|
const rightSide = /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: cn("flex items-stretch gap-4", padding, ctx.animate && "animate-in slide-in-from-right duration-500"), style: { animationDelay: ctx.animate ? `${(idx ?? 0) * 100}ms` : void 0 }, children: [
|
|
9155
9155
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "flex-1 flex justify-end", children: contentBox }),
|
|
9156
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: cn("
|
|
9156
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: cn("shrink-0 flex items-stretch", markerWidth), children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Marker, { index: idx ?? 0, last: isLast, size: ctx.size, color, status, lineColor: ctx.lineColor, lineStyle: ctx.lineStyle, active, dot, icon: Icon, showLine: ctx.showLine }) })
|
|
9157
9157
|
] });
|
|
9158
9158
|
const horizontalItem = /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
9159
9159
|
"div",
|
|
@@ -10069,6 +10069,7 @@ function DataTable({
|
|
|
10069
10069
|
// Mặc định bật màu nền sẽn kẽ cho các dòng
|
|
10070
10070
|
columnDividers = false,
|
|
10071
10071
|
className,
|
|
10072
|
+
storageKey,
|
|
10072
10073
|
labels
|
|
10073
10074
|
}) {
|
|
10074
10075
|
const t = (0, import_next_intl7.useTranslations)("Common");
|
|
@@ -10078,7 +10079,26 @@ function DataTable({
|
|
|
10078
10079
|
const [sort, setSort] = import_react23.default.useState(null);
|
|
10079
10080
|
const [density, setDensity] = import_react23.default.useState("normal");
|
|
10080
10081
|
const [curPage, setCurPage] = import_react23.default.useState(page);
|
|
10081
|
-
const
|
|
10082
|
+
const getInitialPageSize = import_react23.default.useCallback(() => {
|
|
10083
|
+
if (typeof window === "undefined" || !storageKey) return pageSize;
|
|
10084
|
+
try {
|
|
10085
|
+
const saved = localStorage.getItem(`datatable_${storageKey}_pageSize`);
|
|
10086
|
+
if (saved) {
|
|
10087
|
+
const parsed = parseInt(saved, 10);
|
|
10088
|
+
if (!isNaN(parsed) && parsed > 0) return parsed;
|
|
10089
|
+
}
|
|
10090
|
+
} catch {
|
|
10091
|
+
}
|
|
10092
|
+
return pageSize;
|
|
10093
|
+
}, [storageKey, pageSize]);
|
|
10094
|
+
const [curPageSize, setCurPageSize] = import_react23.default.useState(getInitialPageSize);
|
|
10095
|
+
import_react23.default.useEffect(() => {
|
|
10096
|
+
if (typeof window === "undefined" || !storageKey) return;
|
|
10097
|
+
try {
|
|
10098
|
+
localStorage.setItem(`datatable_${storageKey}_pageSize`, String(curPageSize));
|
|
10099
|
+
} catch {
|
|
10100
|
+
}
|
|
10101
|
+
}, [curPageSize, storageKey]);
|
|
10082
10102
|
import_react23.default.useEffect(() => {
|
|
10083
10103
|
const newColKeys = columns.filter((c) => c.visible !== false).map((c) => c.key);
|
|
10084
10104
|
setVisibleCols((prev) => {
|
|
@@ -10170,7 +10190,7 @@ function DataTable({
|
|
|
10170
10190
|
children: (() => {
|
|
10171
10191
|
const isRightAlign = col.align === "right" || !col.align && headerAlign === "right";
|
|
10172
10192
|
const isCenterAlign = col.align === "center" || !col.align && headerAlign === "center";
|
|
10173
|
-
const titleContent = /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex items-center gap-1 min-w-0
|
|
10193
|
+
const titleContent = /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex items-center gap-1 min-w-0 shrink", children: [
|
|
10174
10194
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "truncate font-medium text-sm", children: col.title }),
|
|
10175
10195
|
col.sortable && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
10176
10196
|
"button",
|
|
@@ -10261,7 +10281,7 @@ function DataTable({
|
|
|
10261
10281
|
"div",
|
|
10262
10282
|
{
|
|
10263
10283
|
className: cn(
|
|
10264
|
-
"flex items-center gap-2 select-none min-h-
|
|
10284
|
+
"flex items-center gap-2 select-none min-h-10",
|
|
10265
10285
|
isRightAlign && "justify-end",
|
|
10266
10286
|
isCenterAlign && "justify-center",
|
|
10267
10287
|
!isRightAlign && !isCenterAlign && "justify-between"
|
|
@@ -10387,7 +10407,7 @@ function DataTable({
|
|
|
10387
10407
|
Table,
|
|
10388
10408
|
{
|
|
10389
10409
|
containerClassName: "border-0 md:border-0 rounded-none md:rounded-none shadow-none bg-transparent",
|
|
10390
|
-
className: "[&_thead]:sticky [&_thead]:top-0 [&_thead]:z-
|
|
10410
|
+
className: "[&_thead]:sticky [&_thead]:top-0 [&_thead]:z-5 [&_thead]:bg-background [&_thead]:backdrop-blur-sm",
|
|
10391
10411
|
children: [
|
|
10392
10412
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TableHeader, { children: renderHeader }),
|
|
10393
10413
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TableBody, { children: loading2 ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TableCell, { colSpan: visibleColumns.length, className: "text-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex items-center justify-center gap-2 text-muted-foreground", children: [
|
|
@@ -12552,7 +12572,7 @@ function FloatingContacts({ className }) {
|
|
|
12552
12572
|
external: true
|
|
12553
12573
|
}
|
|
12554
12574
|
];
|
|
12555
|
-
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: cn("fixed bottom-6 right-4 z-
|
|
12575
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: cn("fixed bottom-6 right-4 z-100000", "flex flex-col items-end gap-3", className), "aria-label": "Quick contacts", children: [
|
|
12556
12576
|
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
12557
12577
|
import_link2.default,
|
|
12558
12578
|
{
|
|
@@ -12675,12 +12695,12 @@ function ThemeToggleHeadless({
|
|
|
12675
12695
|
}
|
|
12676
12696
|
),
|
|
12677
12697
|
isOpen && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_jsx_runtime51.Fragment, { children: [
|
|
12678
|
-
typeof window !== "undefined" && (0, import_react_dom10.createPortal)(/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "fixed inset-0 z-
|
|
12698
|
+
typeof window !== "undefined" && (0, import_react_dom10.createPortal)(/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "fixed inset-0 z-9998", onClick: () => setIsOpen(false) }), document.body),
|
|
12679
12699
|
typeof window !== "undefined" && dropdownPosition && (0, import_react_dom10.createPortal)(
|
|
12680
12700
|
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
12681
12701
|
"div",
|
|
12682
12702
|
{
|
|
12683
|
-
className: "z-
|
|
12703
|
+
className: "z-9999 bg-card border border-border rounded-lg shadow-lg overflow-hidden",
|
|
12684
12704
|
style: { position: "absolute", top: dropdownPosition.top, left: dropdownPosition.left, width: dropdownPosition.width },
|
|
12685
12705
|
onMouseDown: (e) => e.stopPropagation(),
|
|
12686
12706
|
role: "menu",
|
|
@@ -12772,12 +12792,12 @@ function LanguageSwitcherHeadless({
|
|
|
12772
12792
|
}
|
|
12773
12793
|
),
|
|
12774
12794
|
isOpen && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
|
|
12775
|
-
typeof window !== "undefined" && (0, import_react_dom11.createPortal)(/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "fixed inset-0 z-
|
|
12795
|
+
typeof window !== "undefined" && (0, import_react_dom11.createPortal)(/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "fixed inset-0 z-9998", onClick: () => setIsOpen(false) }), document.body),
|
|
12776
12796
|
typeof window !== "undefined" && dropdownPosition && (0, import_react_dom11.createPortal)(
|
|
12777
12797
|
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
12778
12798
|
"div",
|
|
12779
12799
|
{
|
|
12780
|
-
className: "z-
|
|
12800
|
+
className: "z-9999 bg-card border border-border rounded-lg shadow-lg overflow-hidden",
|
|
12781
12801
|
style: { position: "absolute", top: dropdownPosition.top, left: dropdownPosition.left, width: dropdownPosition.width },
|
|
12782
12802
|
onMouseDown: (e) => e.stopPropagation(),
|
|
12783
12803
|
role: "menu",
|