@underverse-ui/underverse 1.0.211 → 2.0.1
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/CHANGELOG.md +9 -0
- package/LICENSE +21 -0
- package/README.md +243 -706
- package/api-reference.json +1 -1
- package/dist/{EmojiPicker-FEJJDAWZ.js → EmojiPicker-34YATB7Z.js} +4 -4
- package/dist/{chunk-F6A7HJE4.js → chunk-A7XL4RDV.js} +3 -3
- package/dist/{chunk-CYCBSKWI.js → chunk-KGNYK5YF.js} +2 -2
- package/dist/{chunk-BRDGIALS.js → chunk-PLHJWXCW.js} +24 -30
- package/dist/{chunk-BRDGIALS.js.map → chunk-PLHJWXCW.js.map} +1 -1
- package/dist/{chunk-GKY5DHGR.js → chunk-UNDGI6ZI.js} +3 -3
- package/dist/{chunk-4E43DRP2.js → chunk-Y7SQKJ7X.js} +95 -31
- package/dist/chunk-Y7SQKJ7X.js.map +1 -0
- package/dist/{chunk-AMAILXHP.js → chunk-Z6WE65J2.js} +44 -18
- package/dist/chunk-Z6WE65J2.js.map +1 -0
- package/dist/index.cjs +280 -159
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +140 -103
- package/dist/index.js.map +1 -1
- package/dist/{menu-bar-6GS5LLTD.js → menu-bar-AAD3LQTN.js} +4 -4
- package/dist/ueditor.cjs +132 -42
- package/dist/ueditor.cjs.map +1 -1
- package/dist/ueditor.js +4 -4
- package/package.json +3 -1
- package/dist/chunk-4E43DRP2.js.map +0 -1
- package/dist/chunk-AMAILXHP.js.map +0 -1
- /package/dist/{EmojiPicker-FEJJDAWZ.js.map → EmojiPicker-34YATB7Z.js.map} +0 -0
- /package/dist/{chunk-F6A7HJE4.js.map → chunk-A7XL4RDV.js.map} +0 -0
- /package/dist/{chunk-CYCBSKWI.js.map → chunk-KGNYK5YF.js.map} +0 -0
- /package/dist/{chunk-GKY5DHGR.js.map → chunk-UNDGI6ZI.js.map} +0 -0
- /package/dist/{menu-bar-6GS5LLTD.js.map → menu-bar-AAD3LQTN.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -4,19 +4,19 @@ import {
|
|
|
4
4
|
extractImageSrcsFromHtml,
|
|
5
5
|
normalizeImageUrl,
|
|
6
6
|
prepareUEditorContentForSave
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-Y7SQKJ7X.js";
|
|
8
8
|
import {
|
|
9
9
|
EmojiPicker_default
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-A7XL4RDV.js";
|
|
11
11
|
import {
|
|
12
12
|
getEmojiImageUrl,
|
|
13
13
|
getEmojiUnifiedCode,
|
|
14
14
|
setEmojiBaseUrl
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-KGNYK5YF.js";
|
|
16
16
|
import "./chunk-4TYW5K4J.js";
|
|
17
17
|
import {
|
|
18
18
|
Modal_default
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-UNDGI6ZI.js";
|
|
20
20
|
import {
|
|
21
21
|
DropdownMenuItem,
|
|
22
22
|
DropdownMenuSeparator,
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
shadcnAnimationStyles,
|
|
35
35
|
useShadCNAnimations,
|
|
36
36
|
useUnderverseUIConfig
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-Z6WE65J2.js";
|
|
38
38
|
import {
|
|
39
39
|
ForceInternalTranslationsProvider,
|
|
40
40
|
NextIntlAdapter,
|
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
useUnderverseLocale,
|
|
55
55
|
useUnderverseTranslations,
|
|
56
56
|
vi_default
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-PLHJWXCW.js";
|
|
58
58
|
import {
|
|
59
59
|
__export,
|
|
60
60
|
__require
|
|
@@ -846,19 +846,7 @@ function useOverlayScrollbarTarget(targetRef, options = {}) {
|
|
|
846
846
|
return () => {
|
|
847
847
|
controller.destroy();
|
|
848
848
|
};
|
|
849
|
-
}, [
|
|
850
|
-
targetRef,
|
|
851
|
-
resolved.enabled,
|
|
852
|
-
resolved.theme,
|
|
853
|
-
resolved.visibility,
|
|
854
|
-
resolved.autoHide,
|
|
855
|
-
resolved.autoHideDelay,
|
|
856
|
-
resolved.dragScroll,
|
|
857
|
-
resolved.clickScroll,
|
|
858
|
-
resolved.overflowX,
|
|
859
|
-
resolved.overflowY,
|
|
860
|
-
resolved.exclude
|
|
861
|
-
]);
|
|
849
|
+
}, [resolved, targetRef]);
|
|
862
850
|
}
|
|
863
851
|
var OverlayScrollbarProvider_default = OverlayScrollbarProvider;
|
|
864
852
|
|
|
@@ -4220,19 +4208,19 @@ var variantStyles4 = {
|
|
|
4220
4208
|
},
|
|
4221
4209
|
underline: {
|
|
4222
4210
|
container: "relative border-b border-border/60",
|
|
4223
|
-
tab: "relative transition-colors duration-200
|
|
4211
|
+
tab: "relative transition-colors duration-200 border-b-2 border-transparent hover:border-primary/30",
|
|
4224
4212
|
activeTab: "text-primary border-primary font-semibold",
|
|
4225
4213
|
inactiveTab: "text-muted-foreground hover:text-foreground"
|
|
4226
4214
|
},
|
|
4227
4215
|
card: {
|
|
4228
|
-
container: "
|
|
4216
|
+
container: "bg-muted/20 p-1.5 rounded-2xl border border-border/30",
|
|
4229
4217
|
tab: "rounded-xl border border-transparent transition-all duration-200",
|
|
4230
4218
|
activeTab: "bg-primary text-primary-foreground border-primary shadow-md",
|
|
4231
4219
|
inactiveTab: "text-muted-foreground hover:text-foreground hover:bg-accent/50 hover:border-border/50"
|
|
4232
4220
|
},
|
|
4233
4221
|
"underline-card": {
|
|
4234
4222
|
container: "border-b border-border/60 bg-card/80 backdrop-blur-sm rounded-t-2xl p-1",
|
|
4235
|
-
tab: "relative transition-all duration-200
|
|
4223
|
+
tab: "relative transition-all duration-200 rounded-t-xl border-b-2 border-transparent hover:border-primary/30 hover:bg-accent/30",
|
|
4236
4224
|
activeTab: "text-primary border-primary font-semibold bg-accent/30",
|
|
4237
4225
|
inactiveTab: "text-muted-foreground hover:text-foreground"
|
|
4238
4226
|
}
|
|
@@ -4342,7 +4330,7 @@ var Tabs = ({
|
|
|
4342
4330
|
}, [baseId, tabs]);
|
|
4343
4331
|
const containerClasses = cn(
|
|
4344
4332
|
"relative",
|
|
4345
|
-
orientation === "horizontal" ? "w-full flex space-x-1 overflow-x-auto" : "flex flex-col space-y-1 shrink-0",
|
|
4333
|
+
orientation === "horizontal" ? "w-full flex items-center space-x-1 overflow-x-auto" : "flex flex-col space-y-1 shrink-0",
|
|
4346
4334
|
variantStyles4[variant].container,
|
|
4347
4335
|
className
|
|
4348
4336
|
);
|
|
@@ -4377,10 +4365,7 @@ var Tabs = ({
|
|
|
4377
4365
|
tab.href && tab.disabled && "pointer-events-none cursor-not-allowed opacity-50"
|
|
4378
4366
|
);
|
|
4379
4367
|
const sharedStyle = {
|
|
4380
|
-
|
|
4381
|
-
transform: "none",
|
|
4382
|
-
outline: "none",
|
|
4383
|
-
border: "none"
|
|
4368
|
+
outline: "none"
|
|
4384
4369
|
};
|
|
4385
4370
|
const sharedProps = {
|
|
4386
4371
|
ref: (el) => {
|
|
@@ -5799,6 +5784,10 @@ import { Calendar, ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight3, S
|
|
|
5799
5784
|
import * as React23 from "react";
|
|
5800
5785
|
import { useId as useId5 } from "react";
|
|
5801
5786
|
import { Fragment as Fragment4, jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
5787
|
+
function normalizeToLocalDate(date) {
|
|
5788
|
+
if (!date) return null;
|
|
5789
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
5790
|
+
}
|
|
5802
5791
|
var DatePicker = ({
|
|
5803
5792
|
id,
|
|
5804
5793
|
value,
|
|
@@ -5832,16 +5821,15 @@ var DatePicker = ({
|
|
|
5832
5821
|
const [isFocused, setIsFocused] = React23.useState(false);
|
|
5833
5822
|
const [inputValue, setInputValue] = React23.useState("");
|
|
5834
5823
|
React23.useEffect(() => {
|
|
5835
|
-
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
|
|
5824
|
+
setInputValue((currentInput) => {
|
|
5825
|
+
if (value) {
|
|
5826
|
+
const parsed = parseDateString(currentInput, locale);
|
|
5827
|
+
const isSame = parsed && parsed.getTime() === value.getTime();
|
|
5828
|
+
return isSame ? currentInput : formatDateShort(value, locale);
|
|
5840
5829
|
}
|
|
5841
|
-
|
|
5842
|
-
|
|
5843
|
-
|
|
5844
|
-
}, [value, locale, isFocused]);
|
|
5830
|
+
return isFocused ? currentInput : "";
|
|
5831
|
+
});
|
|
5832
|
+
}, [isFocused, locale, value]);
|
|
5845
5833
|
const handleInputChange = (e) => {
|
|
5846
5834
|
const text = e.target.value;
|
|
5847
5835
|
setInputValue(text);
|
|
@@ -5860,7 +5848,7 @@ var DatePicker = ({
|
|
|
5860
5848
|
if (required) {
|
|
5861
5849
|
setLocalRequiredError(tv("required"));
|
|
5862
5850
|
} else {
|
|
5863
|
-
onChange(void 0);
|
|
5851
|
+
if (value) onChange(void 0);
|
|
5864
5852
|
setLocalRequiredError(void 0);
|
|
5865
5853
|
}
|
|
5866
5854
|
} else {
|
|
@@ -6258,6 +6246,7 @@ var DatePicker = ({
|
|
|
6258
6246
|
const autoId = useId5();
|
|
6259
6247
|
const resolvedId = id ? String(id) : `datepicker-${autoId}`;
|
|
6260
6248
|
const labelId = label ? `${resolvedId}-label` : void 0;
|
|
6249
|
+
const panelId = `${resolvedId}-panel`;
|
|
6261
6250
|
const labelSize = sizeStyles7[size].label;
|
|
6262
6251
|
const radiusClass = size === "sm" ? "rounded-md" : "rounded-lg";
|
|
6263
6252
|
const verticalGap = size === "sm" ? "space-y-1.5" : size === "lg" ? "space-y-2.5" : "space-y-2";
|
|
@@ -6306,6 +6295,7 @@ var DatePicker = ({
|
|
|
6306
6295
|
{
|
|
6307
6296
|
open: isOpen,
|
|
6308
6297
|
onOpenChange: setIsOpen,
|
|
6298
|
+
contentProps: { id: panelId },
|
|
6309
6299
|
placement: "bottom-start",
|
|
6310
6300
|
disabled,
|
|
6311
6301
|
contentWidth: sizeStyles7[size].contentWidth,
|
|
@@ -6322,12 +6312,6 @@ var DatePicker = ({
|
|
|
6322
6312
|
"div",
|
|
6323
6313
|
{
|
|
6324
6314
|
ref: triggerRef,
|
|
6325
|
-
id: resolvedId,
|
|
6326
|
-
role: "button",
|
|
6327
|
-
"aria-label": value ? formatDateDisplay(value) : placeholder || t("placeholder"),
|
|
6328
|
-
"aria-labelledby": labelId,
|
|
6329
|
-
"aria-required": required,
|
|
6330
|
-
"aria-invalid": !!effectiveError,
|
|
6331
6315
|
className: cn(
|
|
6332
6316
|
"group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
|
|
6333
6317
|
formControlFixedClass,
|
|
@@ -6359,8 +6343,16 @@ var DatePicker = ({
|
|
|
6359
6343
|
"input",
|
|
6360
6344
|
{
|
|
6361
6345
|
ref: inputRef,
|
|
6346
|
+
id: resolvedId,
|
|
6362
6347
|
type: "text",
|
|
6348
|
+
role: "combobox",
|
|
6363
6349
|
"aria-label": value ? formatDateDisplay(value) : placeholder || t("placeholder"),
|
|
6350
|
+
"aria-labelledby": labelId,
|
|
6351
|
+
"aria-haspopup": "dialog",
|
|
6352
|
+
"aria-expanded": isOpen,
|
|
6353
|
+
"aria-controls": panelId,
|
|
6354
|
+
"aria-required": required,
|
|
6355
|
+
"aria-invalid": !!effectiveError,
|
|
6364
6356
|
disabled,
|
|
6365
6357
|
placeholder: placeholder || t("placeholder"),
|
|
6366
6358
|
value: isFocused ? inputValue : value ? formatDateDisplay(value) : "",
|
|
@@ -6467,19 +6459,18 @@ var DateRangePicker = ({
|
|
|
6467
6459
|
return `${startStr} - ${formatDateShort(e, locale)}`;
|
|
6468
6460
|
}, [locale]);
|
|
6469
6461
|
React23.useEffect(() => {
|
|
6470
|
-
|
|
6471
|
-
|
|
6472
|
-
|
|
6473
|
-
|
|
6474
|
-
|
|
6475
|
-
|
|
6476
|
-
|
|
6477
|
-
|
|
6478
|
-
}
|
|
6479
|
-
|
|
6480
|
-
|
|
6481
|
-
|
|
6482
|
-
}, [startDate, endDate, locale, isFocused, getRangeString]);
|
|
6462
|
+
setInputValue((currentInput) => {
|
|
6463
|
+
if (startDate) {
|
|
6464
|
+
const parts = currentInput.split(/\s*-\s*/);
|
|
6465
|
+
const inputStart = parts[0] ? parseDateString(parts[0], locale) : null;
|
|
6466
|
+
const inputEnd = parts[1] ? parseDateString(parts[1], locale) : null;
|
|
6467
|
+
const startSame = inputStart && inputStart.getTime() === startDate.getTime();
|
|
6468
|
+
const endSame = !endDate && !inputEnd || endDate && inputEnd && endDate.getTime() === inputEnd.getTime();
|
|
6469
|
+
return startSame && endSame ? currentInput : getRangeString(startDate, endDate);
|
|
6470
|
+
}
|
|
6471
|
+
return isFocused ? currentInput : "";
|
|
6472
|
+
});
|
|
6473
|
+
}, [endDate, getRangeString, isFocused, locale, startDate]);
|
|
6483
6474
|
const handleInputChange = (e) => {
|
|
6484
6475
|
const text = e.target.value;
|
|
6485
6476
|
setInputValue(text);
|
|
@@ -6528,7 +6519,7 @@ var DateRangePicker = ({
|
|
|
6528
6519
|
} else {
|
|
6529
6520
|
setTempStart(null);
|
|
6530
6521
|
setTempEnd(null);
|
|
6531
|
-
onChange(void 0, void 0);
|
|
6522
|
+
if (startDate || endDate) onChange(void 0, void 0);
|
|
6532
6523
|
setLocalRequiredError(void 0);
|
|
6533
6524
|
}
|
|
6534
6525
|
} else {
|
|
@@ -6559,8 +6550,8 @@ var DateRangePicker = ({
|
|
|
6559
6550
|
}
|
|
6560
6551
|
}
|
|
6561
6552
|
if (startDate) {
|
|
6562
|
-
setTempStart(
|
|
6563
|
-
setTempEnd(
|
|
6553
|
+
setTempStart(normalizeToLocalDate(startDate));
|
|
6554
|
+
setTempEnd(normalizeToLocalDate(endDate));
|
|
6564
6555
|
setInputValue(getRangeString(startDate, endDate));
|
|
6565
6556
|
setLocalRequiredError(void 0);
|
|
6566
6557
|
} else {
|
|
@@ -6664,21 +6655,17 @@ var DateRangePicker = ({
|
|
|
6664
6655
|
footerMargin: "mt-5 pt-4 gap-2.5"
|
|
6665
6656
|
}
|
|
6666
6657
|
};
|
|
6667
|
-
const
|
|
6668
|
-
|
|
6669
|
-
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
6670
|
-
};
|
|
6671
|
-
const minDay = React23.useMemo(() => normalizeToLocal(minDate), [minDate]);
|
|
6672
|
-
const maxDay = React23.useMemo(() => normalizeToLocal(maxDate), [maxDate]);
|
|
6658
|
+
const minDay = normalizeToLocalDate(minDate);
|
|
6659
|
+
const maxDay = normalizeToLocalDate(maxDate);
|
|
6673
6660
|
const [viewDate, setViewDate] = React23.useState(startDate || /* @__PURE__ */ new Date());
|
|
6674
|
-
const [tempStart, setTempStart] = React23.useState(
|
|
6675
|
-
const [tempEnd, setTempEnd] = React23.useState(
|
|
6661
|
+
const [tempStart, setTempStart] = React23.useState(normalizeToLocalDate(startDate));
|
|
6662
|
+
const [tempEnd, setTempEnd] = React23.useState(normalizeToLocalDate(endDate));
|
|
6676
6663
|
const [hoveredDate, setHoveredDate] = React23.useState(null);
|
|
6677
6664
|
React23.useEffect(() => {
|
|
6678
|
-
setTempStart(
|
|
6665
|
+
setTempStart(normalizeToLocalDate(startDate));
|
|
6679
6666
|
}, [startDate]);
|
|
6680
6667
|
React23.useEffect(() => {
|
|
6681
|
-
setTempEnd(
|
|
6668
|
+
setTempEnd(normalizeToLocalDate(endDate));
|
|
6682
6669
|
}, [endDate]);
|
|
6683
6670
|
React23.useEffect(() => {
|
|
6684
6671
|
if (!isOpen) {
|
|
@@ -6697,12 +6684,12 @@ var DateRangePicker = ({
|
|
|
6697
6684
|
const inRange = (d, s, e) => d > s && d < e;
|
|
6698
6685
|
const getDaysInMonth = (d) => new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();
|
|
6699
6686
|
const getFirstDayOfMonth = (d) => new Date(d.getFullYear(), d.getMonth(), 1).getDay();
|
|
6700
|
-
const navigateMonth =
|
|
6687
|
+
const navigateMonth = (direction) => {
|
|
6701
6688
|
setViewDate((prev) => new Date(prev.getFullYear(), prev.getMonth() + (direction === "next" ? 1 : -1), 1));
|
|
6702
|
-
}
|
|
6703
|
-
const navigateYearRange =
|
|
6689
|
+
};
|
|
6690
|
+
const navigateYearRange = (direction) => {
|
|
6704
6691
|
setViewDate((prev) => new Date(prev.getFullYear() + (direction === "next" ? 12 : -12), prev.getMonth(), 1));
|
|
6705
|
-
}
|
|
6692
|
+
};
|
|
6706
6693
|
const isElementVerticallyScrollable = (el) => {
|
|
6707
6694
|
const style = window.getComputedStyle(el);
|
|
6708
6695
|
const overflowY = style.overflowY;
|
|
@@ -6731,11 +6718,13 @@ var DateRangePicker = ({
|
|
|
6731
6718
|
const steps = Math.trunc(wheelDeltaRef.current / threshold);
|
|
6732
6719
|
wheelDeltaRef.current -= steps * threshold;
|
|
6733
6720
|
const direction = steps > 0 ? "next" : "prev";
|
|
6734
|
-
for (let i = 0; i < Math.abs(steps); i++)
|
|
6721
|
+
for (let i = 0; i < Math.abs(steps); i++) {
|
|
6722
|
+
setViewDate((prev) => new Date(prev.getFullYear(), prev.getMonth() + (direction === "next" ? 1 : -1), 1));
|
|
6723
|
+
}
|
|
6735
6724
|
};
|
|
6736
6725
|
container.addEventListener("wheel", onWheel, { passive: false });
|
|
6737
6726
|
return () => container.removeEventListener("wheel", onWheel);
|
|
6738
|
-
}, [isOpen
|
|
6727
|
+
}, [isOpen]);
|
|
6739
6728
|
const handleSelect = (date) => {
|
|
6740
6729
|
const localDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
6741
6730
|
if (!tempStart || tempStart && tempEnd) {
|
|
@@ -7018,6 +7007,7 @@ var DateRangePicker = ({
|
|
|
7018
7007
|
const autoId = useId5();
|
|
7019
7008
|
const resolvedId = id ? String(id) : `daterangepicker-${autoId}`;
|
|
7020
7009
|
const labelId = label ? `${resolvedId}-label` : void 0;
|
|
7010
|
+
const panelId = `${resolvedId}-panel`;
|
|
7021
7011
|
const globalConfig = useUnderverseUIConfig();
|
|
7022
7012
|
const resolvedBorderMode = borderMode ?? globalConfig.borderMode ?? "full";
|
|
7023
7013
|
return /* @__PURE__ */ jsxs20("div", { className: cn("space-y-1.5", className), children: [
|
|
@@ -7062,6 +7052,7 @@ var DateRangePicker = ({
|
|
|
7062
7052
|
{
|
|
7063
7053
|
open: isOpen,
|
|
7064
7054
|
onOpenChange: setIsOpen,
|
|
7055
|
+
contentProps: { id: panelId },
|
|
7065
7056
|
placement: "bottom-start",
|
|
7066
7057
|
disabled,
|
|
7067
7058
|
contentWidth: sizeStyles7[size].contentWidth,
|
|
@@ -7077,12 +7068,6 @@ var DateRangePicker = ({
|
|
|
7077
7068
|
"div",
|
|
7078
7069
|
{
|
|
7079
7070
|
ref: triggerRef,
|
|
7080
|
-
id: resolvedId,
|
|
7081
|
-
role: "button",
|
|
7082
|
-
"aria-label": tempStart ? displayLabel : placeholder,
|
|
7083
|
-
"aria-labelledby": labelId,
|
|
7084
|
-
"aria-required": required,
|
|
7085
|
-
"aria-invalid": !!effectiveError,
|
|
7086
7071
|
className: cn(
|
|
7087
7072
|
"group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
|
|
7088
7073
|
formControlFixedClass,
|
|
@@ -7113,8 +7098,16 @@ var DateRangePicker = ({
|
|
|
7113
7098
|
"input",
|
|
7114
7099
|
{
|
|
7115
7100
|
ref: inputRef,
|
|
7101
|
+
id: resolvedId,
|
|
7116
7102
|
type: "text",
|
|
7103
|
+
role: "combobox",
|
|
7117
7104
|
"aria-label": tempStart ? displayLabel : placeholder,
|
|
7105
|
+
"aria-labelledby": labelId,
|
|
7106
|
+
"aria-haspopup": "dialog",
|
|
7107
|
+
"aria-expanded": isOpen,
|
|
7108
|
+
"aria-controls": panelId,
|
|
7109
|
+
"aria-required": required,
|
|
7110
|
+
"aria-invalid": !!effectiveError,
|
|
7118
7111
|
disabled,
|
|
7119
7112
|
placeholder,
|
|
7120
7113
|
value: isFocused ? inputValue : tempStart ? displayLabel : "",
|
|
@@ -7949,6 +7942,7 @@ var LunarDatePicker = ({
|
|
|
7949
7942
|
const autoId = useId6();
|
|
7950
7943
|
const resolvedId = id ? String(id) : `lunar-datepicker-${autoId}`;
|
|
7951
7944
|
const labelId = label ? `${resolvedId}-label` : void 0;
|
|
7945
|
+
const panelId = `${resolvedId}-panel`;
|
|
7952
7946
|
const labelSize = sizeStyles7[size].label;
|
|
7953
7947
|
const verticalGap = size === "sm" ? "space-y-1.5" : size === "lg" ? "space-y-2.5" : "space-y-2";
|
|
7954
7948
|
const effectiveError = localRequiredError;
|
|
@@ -7994,6 +7988,7 @@ var LunarDatePicker = ({
|
|
|
7994
7988
|
{
|
|
7995
7989
|
open: isOpen,
|
|
7996
7990
|
onOpenChange: setIsOpen,
|
|
7991
|
+
contentProps: { id: panelId },
|
|
7997
7992
|
placement: "bottom-start",
|
|
7998
7993
|
borderMode: resolvedBorderMode,
|
|
7999
7994
|
disabled,
|
|
@@ -8010,12 +8005,6 @@ var LunarDatePicker = ({
|
|
|
8010
8005
|
"div",
|
|
8011
8006
|
{
|
|
8012
8007
|
ref: triggerRef,
|
|
8013
|
-
id: resolvedId,
|
|
8014
|
-
role: "button",
|
|
8015
|
-
"aria-label": value ? formatDateDisplay(value) : placeholder || t("placeholder"),
|
|
8016
|
-
"aria-labelledby": labelId,
|
|
8017
|
-
"aria-required": required,
|
|
8018
|
-
"aria-invalid": !!effectiveError,
|
|
8019
8008
|
className: cn(
|
|
8020
8009
|
"group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
|
|
8021
8010
|
formControlFixedClass,
|
|
@@ -8047,8 +8036,16 @@ var LunarDatePicker = ({
|
|
|
8047
8036
|
"input",
|
|
8048
8037
|
{
|
|
8049
8038
|
ref: inputRef,
|
|
8039
|
+
id: resolvedId,
|
|
8050
8040
|
type: "text",
|
|
8041
|
+
role: "combobox",
|
|
8051
8042
|
"aria-label": value ? formatDateDisplay(value) : placeholder || t("placeholder"),
|
|
8043
|
+
"aria-labelledby": labelId,
|
|
8044
|
+
"aria-haspopup": "dialog",
|
|
8045
|
+
"aria-expanded": isOpen,
|
|
8046
|
+
"aria-controls": panelId,
|
|
8047
|
+
"aria-required": required,
|
|
8048
|
+
"aria-invalid": !!effectiveError,
|
|
8052
8049
|
disabled,
|
|
8053
8050
|
placeholder: placeholder || t("placeholder"),
|
|
8054
8051
|
value: isFocused ? inputValue : value ? formatDateDisplay(value) : "",
|
|
@@ -8575,6 +8572,7 @@ var LunarDateRangePicker = ({
|
|
|
8575
8572
|
const autoId = useId6();
|
|
8576
8573
|
const resolvedId = id ? String(id) : `lunardaterangepicker-${autoId}`;
|
|
8577
8574
|
const labelId = label ? `${resolvedId}-label` : void 0;
|
|
8575
|
+
const panelId = `${resolvedId}-panel`;
|
|
8578
8576
|
return /* @__PURE__ */ jsxs21("div", { className: cn("space-y-1.5", className), children: [
|
|
8579
8577
|
label && /* @__PURE__ */ jsxs21(
|
|
8580
8578
|
"label",
|
|
@@ -8617,6 +8615,7 @@ var LunarDateRangePicker = ({
|
|
|
8617
8615
|
{
|
|
8618
8616
|
open: isOpen,
|
|
8619
8617
|
onOpenChange: setIsOpen,
|
|
8618
|
+
contentProps: { id: panelId },
|
|
8620
8619
|
placement: "bottom-start",
|
|
8621
8620
|
disabled,
|
|
8622
8621
|
contentWidth: sizeStyles7[size].contentWidth,
|
|
@@ -8629,13 +8628,18 @@ var LunarDateRangePicker = ({
|
|
|
8629
8628
|
"animate-in fade-in-0 zoom-in-95 slide-in-from-top-2 duration-300"
|
|
8630
8629
|
),
|
|
8631
8630
|
trigger: /* @__PURE__ */ jsxs21(
|
|
8632
|
-
"
|
|
8631
|
+
"button",
|
|
8633
8632
|
{
|
|
8634
8633
|
ref: triggerRef,
|
|
8635
8634
|
id: resolvedId,
|
|
8636
|
-
|
|
8635
|
+
type: "button",
|
|
8636
|
+
role: "combobox",
|
|
8637
|
+
disabled,
|
|
8637
8638
|
"aria-label": tempStart ? displayLabel : placeholder,
|
|
8638
8639
|
"aria-labelledby": labelId,
|
|
8640
|
+
"aria-haspopup": "dialog",
|
|
8641
|
+
"aria-expanded": isOpen,
|
|
8642
|
+
"aria-controls": panelId,
|
|
8639
8643
|
"aria-required": required,
|
|
8640
8644
|
"aria-invalid": !!effectiveError,
|
|
8641
8645
|
className: cn(
|
|
@@ -9167,6 +9171,9 @@ function MonthYearPicker({
|
|
|
9167
9171
|
const resolvedBorderMode = borderMode ?? globalConfig.input?.borderMode ?? globalConfig.borderMode ?? "full";
|
|
9168
9172
|
const gi18n = useGlobalI18n();
|
|
9169
9173
|
const tv = useSmartTranslations("ValidationInput");
|
|
9174
|
+
const autoId = React25.useId();
|
|
9175
|
+
const triggerId = `month-year-picker-trigger-${autoId}`;
|
|
9176
|
+
const panelId = `${triggerId}-panel`;
|
|
9170
9177
|
const now = /* @__PURE__ */ new Date();
|
|
9171
9178
|
const currentYear = now.getFullYear();
|
|
9172
9179
|
const resolvedMinYear = minYear ?? minDate?.getFullYear() ?? currentYear - 50;
|
|
@@ -9314,11 +9321,14 @@ function MonthYearPicker({
|
|
|
9314
9321
|
const trigger = variant === "inline" ? null : /* @__PURE__ */ jsxs22(
|
|
9315
9322
|
"button",
|
|
9316
9323
|
{
|
|
9324
|
+
id: triggerId,
|
|
9317
9325
|
type: "button",
|
|
9326
|
+
role: "combobox",
|
|
9318
9327
|
disabled,
|
|
9319
9328
|
"aria-label": gi18n.selectMonthYear ?? "Select month and year",
|
|
9320
9329
|
"aria-haspopup": "dialog",
|
|
9321
9330
|
"aria-expanded": open,
|
|
9331
|
+
"aria-controls": panelId,
|
|
9322
9332
|
"aria-required": required,
|
|
9323
9333
|
"aria-invalid": !!effectiveError,
|
|
9324
9334
|
className: cn(
|
|
@@ -9542,6 +9552,7 @@ function MonthYearPicker({
|
|
|
9542
9552
|
trigger,
|
|
9543
9553
|
open,
|
|
9544
9554
|
onOpenChange: handleOpenChange,
|
|
9555
|
+
contentProps: { id: panelId },
|
|
9545
9556
|
placement: "bottom",
|
|
9546
9557
|
contentWidth,
|
|
9547
9558
|
matchTriggerWidth,
|
|
@@ -10714,6 +10725,7 @@ function TimePicker({
|
|
|
10714
10725
|
const directEditInputRef = React27.useRef(null);
|
|
10715
10726
|
const triggerId = `time-picker-trigger-${autoId}`;
|
|
10716
10727
|
const labelId = label ? `time-picker-label-${autoId}` : void 0;
|
|
10728
|
+
const panelId = `${triggerId}-panel`;
|
|
10717
10729
|
React27.useEffect(() => {
|
|
10718
10730
|
if (isControlled) {
|
|
10719
10731
|
const parsed = parseTime(value, format, includeSeconds);
|
|
@@ -11024,11 +11036,13 @@ function TimePicker({
|
|
|
11024
11036
|
{
|
|
11025
11037
|
id: triggerId,
|
|
11026
11038
|
type: "button",
|
|
11039
|
+
role: "combobox",
|
|
11027
11040
|
disabled,
|
|
11028
11041
|
"aria-label": gi18n.selectTime ?? "Select time",
|
|
11029
11042
|
"aria-labelledby": labelId,
|
|
11030
11043
|
"aria-haspopup": "dialog",
|
|
11031
11044
|
"aria-expanded": open,
|
|
11045
|
+
"aria-controls": panelId,
|
|
11032
11046
|
"aria-required": required,
|
|
11033
11047
|
"aria-invalid": !!effectiveError,
|
|
11034
11048
|
className: cn(
|
|
@@ -11468,6 +11482,7 @@ function TimePicker({
|
|
|
11468
11482
|
trigger,
|
|
11469
11483
|
open,
|
|
11470
11484
|
onOpenChange: handleOpenChange,
|
|
11485
|
+
contentProps: { id: panelId },
|
|
11471
11486
|
placement: "bottom-start",
|
|
11472
11487
|
matchTriggerWidth: shouldMatchTriggerWidth,
|
|
11473
11488
|
contentWidth: shouldMatchTriggerWidth ? void 0 : contentWidth,
|
|
@@ -11523,6 +11538,10 @@ var DateTimePicker = ({
|
|
|
11523
11538
|
const t = useSmartTranslations("DateTimePicker");
|
|
11524
11539
|
const tv = useSmartTranslations("ValidationInput");
|
|
11525
11540
|
const locale = useSmartLocale();
|
|
11541
|
+
const autoId = React28.useId();
|
|
11542
|
+
const triggerId = `date-time-picker-trigger-${autoId}`;
|
|
11543
|
+
const panelId = `${triggerId}-panel`;
|
|
11544
|
+
const labelId = label ? `${triggerId}-label` : void 0;
|
|
11526
11545
|
const [open, setOpen] = React28.useState(false);
|
|
11527
11546
|
const [localRequiredError, setLocalRequiredError] = React28.useState();
|
|
11528
11547
|
const sizeStyles7 = {
|
|
@@ -11663,11 +11682,19 @@ var DateTimePicker = ({
|
|
|
11663
11682
|
const weekdays = getWeekdays(locale);
|
|
11664
11683
|
const effectiveError = localRequiredError;
|
|
11665
11684
|
return /* @__PURE__ */ jsxs25("div", { className: cn("space-y-1.5", className), children: [
|
|
11666
|
-
label && /* @__PURE__ */ jsxs25(
|
|
11667
|
-
label,
|
|
11668
|
-
|
|
11669
|
-
|
|
11670
|
-
|
|
11685
|
+
label && /* @__PURE__ */ jsxs25(
|
|
11686
|
+
"label",
|
|
11687
|
+
{
|
|
11688
|
+
id: labelId,
|
|
11689
|
+
htmlFor: triggerId,
|
|
11690
|
+
className: cn(sizeStyles7[size].label, "font-medium text-foreground flex items-center gap-1", effectiveError && "text-destructive", labelClassName),
|
|
11691
|
+
children: [
|
|
11692
|
+
label,
|
|
11693
|
+
" ",
|
|
11694
|
+
required && /* @__PURE__ */ jsx32("span", { className: "text-destructive", children: "*" })
|
|
11695
|
+
]
|
|
11696
|
+
}
|
|
11697
|
+
),
|
|
11671
11698
|
/* @__PURE__ */ jsx32(
|
|
11672
11699
|
"input",
|
|
11673
11700
|
{
|
|
@@ -11690,11 +11717,19 @@ var DateTimePicker = ({
|
|
|
11690
11717
|
{
|
|
11691
11718
|
open,
|
|
11692
11719
|
onOpenChange: setOpen,
|
|
11720
|
+
contentProps: { id: panelId },
|
|
11693
11721
|
trigger: /* @__PURE__ */ jsxs25(
|
|
11694
11722
|
"button",
|
|
11695
11723
|
{
|
|
11724
|
+
id: triggerId,
|
|
11696
11725
|
type: "button",
|
|
11726
|
+
role: "combobox",
|
|
11697
11727
|
disabled,
|
|
11728
|
+
"aria-haspopup": "dialog",
|
|
11729
|
+
"aria-expanded": open,
|
|
11730
|
+
"aria-controls": panelId,
|
|
11731
|
+
"aria-label": labelId ? void 0 : displayValue || placeholder || "Select date & time",
|
|
11732
|
+
"aria-labelledby": labelId,
|
|
11698
11733
|
"aria-required": required,
|
|
11699
11734
|
"aria-invalid": !!effectiveError,
|
|
11700
11735
|
className: cn(
|
|
@@ -14701,7 +14736,7 @@ function CalendarTimeline({
|
|
|
14701
14736
|
|
|
14702
14737
|
// src/components/MultiCombobox.tsx
|
|
14703
14738
|
import * as React35 from "react";
|
|
14704
|
-
import { useId as
|
|
14739
|
+
import { useId as useId10 } from "react";
|
|
14705
14740
|
import { useVirtualizer as useVirtualizer2 } from "@tanstack/react-virtual";
|
|
14706
14741
|
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";
|
|
14707
14742
|
import { Fragment as Fragment11, jsx as jsx39, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
@@ -14932,7 +14967,7 @@ var MultiCombobox = ({
|
|
|
14932
14967
|
outline: "border-2 border-input bg-transparent hover:border-primary",
|
|
14933
14968
|
ghost: "border border-transparent bg-muted/50 hover:bg-muted"
|
|
14934
14969
|
};
|
|
14935
|
-
const autoId =
|
|
14970
|
+
const autoId = useId10();
|
|
14936
14971
|
const resolvedId = id ? String(id) : `multicombobox-${autoId}`;
|
|
14937
14972
|
const labelId = label ? `${resolvedId}-label` : void 0;
|
|
14938
14973
|
const labelSize = formControlSizeStyles[size].label;
|
|
@@ -15213,7 +15248,7 @@ var MultiCombobox = ({
|
|
|
15213
15248
|
);
|
|
15214
15249
|
}),
|
|
15215
15250
|
hiddenCount > 0 && /* @__PURE__ */ jsx39("span", { className: cn("inline-flex items-center bg-muted text-muted-foreground rounded-lg shrink-0", sizeStyles7[size].tag), children: gi18n.moreCount ? gi18n.moreCount(hiddenCount) : `+${hiddenCount} more` })
|
|
15216
|
-
] }) : /* @__PURE__ */ jsx39("span", { className: cn(formControlValueClass, "font-medium"), children: gi18n.selectedCount ? gi18n.selectedCount(value.length) : `${value.length} item${value.length > 1 ? "s" : ""} selected` }) : /* @__PURE__ */ jsx39("span", { className: cn(formControlValueClass, "text-muted-foreground"), children: placeholder }) }),
|
|
15251
|
+
] }) : /* @__PURE__ */ jsx39("span", { className: cn(formControlValueClass, "font-medium"), children: gi18n.selectedCount ? gi18n.selectedCount(value.length) : `${value.length} item${value.length > 1 ? "s" : ""} selected` }) : /* @__PURE__ */ jsx39("span", { className: cn(formControlValueClass, "text-left text-muted-foreground"), children: placeholder }) }),
|
|
15217
15252
|
/* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-1.5 shrink-0", children: [
|
|
15218
15253
|
showClear && value.length > 0 && /* @__PURE__ */ jsx39(
|
|
15219
15254
|
"div",
|
|
@@ -16637,7 +16672,7 @@ function OverlayControls({
|
|
|
16637
16672
|
}
|
|
16638
16673
|
|
|
16639
16674
|
// src/components/CategoryTreeSelect.tsx
|
|
16640
|
-
import { useEffect as useEffect20, useId as
|
|
16675
|
+
import { useEffect as useEffect20, useId as useId12, useMemo as useMemo18, useRef as useRef17, useState as useState27 } from "react";
|
|
16641
16676
|
import { useVirtualizer as useVirtualizer3 } from "@tanstack/react-virtual";
|
|
16642
16677
|
import { ChevronRight as ChevronRight7, ChevronDown as ChevronDown5, FolderTree, Layers, Search as Search6, SearchX as SearchX3, X as X13 } from "lucide-react";
|
|
16643
16678
|
import { jsx as jsx43, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
@@ -16807,7 +16842,7 @@ function CategoryTreeSelect(props) {
|
|
|
16807
16842
|
useOverlayScrollbarTarget(dropdownViewportRef, {
|
|
16808
16843
|
enabled: isOpen && useOverlayScrollbar && !virtualized && !inline && !viewOnly
|
|
16809
16844
|
});
|
|
16810
|
-
const autoId =
|
|
16845
|
+
const autoId = useId12();
|
|
16811
16846
|
const resolvedId = id ? String(id) : `category-tree-select-${autoId}`;
|
|
16812
16847
|
const labelId = label ? `${resolvedId}-label` : void 0;
|
|
16813
16848
|
const effectiveError = error ?? localRequiredError;
|
|
@@ -20792,7 +20827,7 @@ var MusicPlayer = ({
|
|
|
20792
20827
|
var MusicPlayer_default = MusicPlayer;
|
|
20793
20828
|
|
|
20794
20829
|
// src/components/Grid.tsx
|
|
20795
|
-
import React47, { useId as
|
|
20830
|
+
import React47, { useId as useId13 } from "react";
|
|
20796
20831
|
import { Fragment as Fragment18, jsx as jsx53, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
20797
20832
|
var BP_MIN = {
|
|
20798
20833
|
sm: 640,
|
|
@@ -20857,7 +20892,7 @@ var GridRoot = React47.forwardRef(
|
|
|
20857
20892
|
children,
|
|
20858
20893
|
...rest
|
|
20859
20894
|
}, ref) => {
|
|
20860
|
-
const id =
|
|
20895
|
+
const id = useId13().replace(/[:]/g, "");
|
|
20861
20896
|
const baseClass = `uv-grid-${id}`;
|
|
20862
20897
|
const baseCols = toTemplateCols(columns, minColumnWidth);
|
|
20863
20898
|
const baseRows = toTemplateRows(rows);
|
|
@@ -21624,6 +21659,7 @@ function DataTableHeader({
|
|
|
21624
21659
|
},
|
|
21625
21660
|
[
|
|
21626
21661
|
filters,
|
|
21662
|
+
gi18n,
|
|
21627
21663
|
headerAlign,
|
|
21628
21664
|
headerMinHeightClass,
|
|
21629
21665
|
headerTitleClass,
|
|
@@ -21632,6 +21668,7 @@ function DataTableHeader({
|
|
|
21632
21668
|
setFilters,
|
|
21633
21669
|
setSort,
|
|
21634
21670
|
sort,
|
|
21671
|
+
sortByLabel,
|
|
21635
21672
|
sortIconClass,
|
|
21636
21673
|
t
|
|
21637
21674
|
]
|
|
@@ -22950,7 +22987,7 @@ function NotificationModal({ isOpen, onClose, notification, titleText, openLinkT
|
|
|
22950
22987
|
var NotificationModal_default = NotificationModal;
|
|
22951
22988
|
|
|
22952
22989
|
// src/components/AccessDenied.tsx
|
|
22953
|
-
import { useState as useState36, useEffect as useEffect26, useId as
|
|
22990
|
+
import { useState as useState36, useEffect as useEffect26, useId as useId15, useRef as useRef22 } from "react";
|
|
22954
22991
|
import { jsx as jsx64, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
22955
22992
|
var VARIANT_COLOR_VARS = {
|
|
22956
22993
|
destructive: "var(--destructive)",
|
|
@@ -22992,7 +23029,7 @@ function AccessDenied({
|
|
|
22992
23029
|
}) {
|
|
22993
23030
|
const design = VARIANT_DESIGNS[variant];
|
|
22994
23031
|
const colorVar = VARIANT_COLOR_VARS[variant];
|
|
22995
|
-
const reactId =
|
|
23032
|
+
const reactId = useId15();
|
|
22996
23033
|
const cleanId = reactId.replace(/:/g, "");
|
|
22997
23034
|
const clipId = `white-clip-${cleanId}`;
|
|
22998
23035
|
const textId = `text-s-${cleanId}`;
|