@mlw-packages/react-components 1.10.3 → 1.10.5
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.css +42 -83
- package/dist/index.d.mts +44 -78
- package/dist/index.d.ts +44 -78
- package/dist/index.js +373 -550
- package/dist/index.mjs +374 -543
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { Slot } from '@radix-ui/react-slot';
|
|
|
5
5
|
import { cva } from 'class-variance-authority';
|
|
6
6
|
import { clsx } from 'clsx';
|
|
7
7
|
import { twMerge } from 'tailwind-merge';
|
|
8
|
-
import { XIcon, CircleNotchIcon, MagnifyingGlassIcon, CaretUpIcon, CaretDownIcon, CheckIcon, CaretRightIcon, CircleIcon, CloudArrowUpIcon, MinusIcon, CaretUpDownIcon, PencilSimpleIcon, ArrowsLeftRightIcon, FloppyDiskIcon, PlusIcon, TrashIcon, SidebarSimpleIcon, FilePdfIcon, FileDocIcon, FileXlsIcon, FilePptIcon, FileCsvIcon, FileTextIcon, FileImageIcon, FileVideoIcon, FileAudioIcon, FileZipIcon, FileIcon, DotsSixVerticalIcon, InfoIcon, WarningIcon, XCircleIcon, CheckCircleIcon, SunIcon, MoonIcon, CaretLeftIcon, DownloadSimpleIcon, UploadSimpleIcon,
|
|
8
|
+
import { XIcon, CircleNotchIcon, MagnifyingGlassIcon, CaretUpIcon, CaretDownIcon, CheckIcon, CaretRightIcon, CircleIcon, CloudArrowUpIcon, MinusIcon, CaretUpDownIcon, PencilSimpleIcon, ArrowsLeftRightIcon, FloppyDiskIcon, PlusIcon, TrashIcon, SidebarSimpleIcon, FilePdfIcon, FileDocIcon, FileXlsIcon, FilePptIcon, FileCsvIcon, FileTextIcon, FileImageIcon, FileVideoIcon, FileAudioIcon, FileZipIcon, FileIcon, DotsSixVerticalIcon, CopyIcon, InfoIcon, WarningIcon, XCircleIcon, CheckCircleIcon, SunIcon, MoonIcon, CaretLeftIcon, DownloadSimpleIcon, UploadSimpleIcon, ArrowClockwiseIcon, ArrowLeftIcon, GearIcon, BellIcon, DotsThreeIcon, FunnelIcon, HeartIcon, StarIcon, EyeIcon, EyeSlashIcon, LockIcon, LockOpenIcon, FolderIcon, ArrowRightIcon as ArrowRightIcon$1, ArrowsOutIcon, DownloadIcon, CalendarBlankIcon, CalendarIcon, MapPinIcon, CalendarDotsIcon, ClockIcon, AlignLeftIcon, CaretLeft, CaretRight, ArrowDownIcon, ClockUserIcon, EyeSlash, Eye, ArrowUpRightIcon, ArrowDownRightIcon, FunnelSimpleIcon, PencilIcon, FileArchiveIcon, TerminalIcon, CodeIcon, CalendarDotIcon as CalendarDotIcon$1, DesktopIcon } from '@phosphor-icons/react';
|
|
9
9
|
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
10
10
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
11
11
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
@@ -1519,20 +1519,20 @@ var TooltipContentBase = React32.forwardRef(
|
|
|
1519
1519
|
id: "tooltip-content",
|
|
1520
1520
|
role: "tooltip",
|
|
1521
1521
|
className: cn(
|
|
1522
|
-
"z-50
|
|
1523
|
-
"shadow
|
|
1524
|
-
"animate-in fade-in-0 zoom-in-95 duration-
|
|
1525
|
-
"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-
|
|
1526
|
-
"data-[side=bottom]:slide-in-from-top-
|
|
1527
|
-
"data-[side=left]:slide-in-from-right-
|
|
1528
|
-
"data-[side=right]:slide-in-from-left-
|
|
1529
|
-
"data-[side=top]:slide-in-from-bottom-
|
|
1522
|
+
"z-50 rounded-lg bg-popover px-3 py-1.5 text-sm leading-snug text-popover-foreground",
|
|
1523
|
+
"[filter:drop-shadow(0_0_0.5px_hsl(var(--border)))_drop-shadow(0_4px_12px_hsl(var(--foreground)/0.08))]",
|
|
1524
|
+
"animate-in fade-in-0 zoom-in-95 duration-150 ease-out",
|
|
1525
|
+
"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-100",
|
|
1526
|
+
"data-[side=bottom]:slide-in-from-top-1.5",
|
|
1527
|
+
"data-[side=left]:slide-in-from-right-1.5",
|
|
1528
|
+
"data-[side=right]:slide-in-from-left-1.5",
|
|
1529
|
+
"data-[side=top]:slide-in-from-bottom-1.5",
|
|
1530
1530
|
className
|
|
1531
1531
|
),
|
|
1532
1532
|
...props,
|
|
1533
1533
|
children: [
|
|
1534
1534
|
props.children,
|
|
1535
|
-
/* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "fill-
|
|
1535
|
+
/* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "fill-popover h-2 w-3.5" })
|
|
1536
1536
|
]
|
|
1537
1537
|
}
|
|
1538
1538
|
) });
|
|
@@ -2323,7 +2323,7 @@ function ComboboxBase({
|
|
|
2323
2323
|
"aria-disabled": disabled || void 0,
|
|
2324
2324
|
disabled,
|
|
2325
2325
|
className: cn(
|
|
2326
|
-
`flex items-center gap-2 justify-between [&>div]:line-clamp-1 relative h-9 no-active-animation`,
|
|
2326
|
+
`flex items-center gap-2 justify-between [&>div]:line-clamp-1 relative h-9 no-active-animation font-light`,
|
|
2327
2327
|
error && "border-red-500"
|
|
2328
2328
|
),
|
|
2329
2329
|
"data-testid": testIds.trigger ?? "combobox-trigger",
|
|
@@ -2465,7 +2465,7 @@ function Combobox({
|
|
|
2465
2465
|
className: cn(
|
|
2466
2466
|
"truncate",
|
|
2467
2467
|
disabled && "opacity-60 cursor-not-allowed",
|
|
2468
|
-
!selectedItem && "text-
|
|
2468
|
+
!selectedItem && "text-muted-foreground"
|
|
2469
2469
|
),
|
|
2470
2470
|
children: selectedItem?.label ?? placeholder ?? "Selecione uma op\xE7\xE3o..."
|
|
2471
2471
|
}
|
|
@@ -2675,46 +2675,48 @@ function MultiSelectValueBase({
|
|
|
2675
2675
|
if (valueRef.current == null) return;
|
|
2676
2676
|
const containerElement = valueRef.current;
|
|
2677
2677
|
const overflowElement = overflowRef.current;
|
|
2678
|
-
const
|
|
2678
|
+
const badgeItems = containerElement.querySelectorAll(
|
|
2679
2679
|
"[data-selected-item]"
|
|
2680
2680
|
);
|
|
2681
2681
|
if (overflowElement != null) overflowElement.style.display = "none";
|
|
2682
|
-
|
|
2682
|
+
badgeItems.forEach((child) => child.style.removeProperty("display"));
|
|
2683
|
+
if (shouldWrap) {
|
|
2684
|
+
setOverflowAmount(0);
|
|
2685
|
+
return;
|
|
2686
|
+
}
|
|
2683
2687
|
let amount = 0;
|
|
2684
|
-
for (let i =
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
}
|
|
2689
|
-
amount = items2.length - i;
|
|
2688
|
+
for (let i = badgeItems.length - 1; i >= 0; i--) {
|
|
2689
|
+
if (containerElement.scrollWidth <= containerElement.clientWidth) break;
|
|
2690
|
+
const child = badgeItems[i];
|
|
2691
|
+
amount = badgeItems.length - i;
|
|
2690
2692
|
child.style.display = "none";
|
|
2691
|
-
overflowElement
|
|
2693
|
+
if (overflowElement != null) {
|
|
2694
|
+
overflowElement.style.removeProperty("display");
|
|
2695
|
+
}
|
|
2692
2696
|
}
|
|
2693
2697
|
setOverflowAmount(amount);
|
|
2698
|
+
}, [shouldWrap]);
|
|
2699
|
+
useEffect(() => {
|
|
2700
|
+
if (overflowRef.current) {
|
|
2701
|
+
overflowRef.current.style.display = "none";
|
|
2702
|
+
}
|
|
2694
2703
|
}, []);
|
|
2704
|
+
useEffect(() => {
|
|
2705
|
+
checkOverflow();
|
|
2706
|
+
}, [open, shouldWrap, checkOverflow]);
|
|
2695
2707
|
const handleResize = useCallback(
|
|
2696
2708
|
(node) => {
|
|
2697
2709
|
if (node == null) {
|
|
2698
2710
|
valueRef.current = null;
|
|
2699
|
-
|
|
2700
|
-
resizeObserverRef.current.disconnect();
|
|
2701
|
-
resizeObserverRef.current = null;
|
|
2702
|
-
}
|
|
2703
|
-
if (mutationObserverRef.current) {
|
|
2704
|
-
mutationObserverRef.current.disconnect();
|
|
2705
|
-
mutationObserverRef.current = null;
|
|
2706
|
-
}
|
|
2707
|
-
return;
|
|
2708
|
-
}
|
|
2709
|
-
valueRef.current = node;
|
|
2710
|
-
if (resizeObserverRef.current) {
|
|
2711
|
-
resizeObserverRef.current.disconnect();
|
|
2711
|
+
resizeObserverRef.current?.disconnect();
|
|
2712
2712
|
resizeObserverRef.current = null;
|
|
2713
|
-
|
|
2714
|
-
if (mutationObserverRef.current) {
|
|
2715
|
-
mutationObserverRef.current.disconnect();
|
|
2713
|
+
mutationObserverRef.current?.disconnect();
|
|
2716
2714
|
mutationObserverRef.current = null;
|
|
2715
|
+
return;
|
|
2717
2716
|
}
|
|
2717
|
+
valueRef.current = node;
|
|
2718
|
+
resizeObserverRef.current?.disconnect();
|
|
2719
|
+
mutationObserverRef.current?.disconnect();
|
|
2718
2720
|
const mo = new MutationObserver(checkOverflow);
|
|
2719
2721
|
const ro = new ResizeObserver(debounce(checkOverflow, 100));
|
|
2720
2722
|
mutationObserverRef.current = mo;
|
|
@@ -2729,6 +2731,7 @@ function MultiSelectValueBase({
|
|
|
2729
2731
|
},
|
|
2730
2732
|
[checkOverflow]
|
|
2731
2733
|
);
|
|
2734
|
+
const [overflowHovered, setOverflowHovered] = useState(false);
|
|
2732
2735
|
const visibleSelected = [...selectedValues].filter((value) => items.has(value)).sort((a, b) => {
|
|
2733
2736
|
const aNode = items.get(a);
|
|
2734
2737
|
const bNode = items.get(b);
|
|
@@ -2746,7 +2749,7 @@ function MultiSelectValueBase({
|
|
|
2746
2749
|
...props,
|
|
2747
2750
|
ref: handleResize,
|
|
2748
2751
|
className: cn(
|
|
2749
|
-
"flex w-full gap-1.5 overflow-hidden",
|
|
2752
|
+
"flex flex-1 w-full gap-1.5 overflow-hidden min-w-0",
|
|
2750
2753
|
shouldWrap && "h-full flex-wrap",
|
|
2751
2754
|
className
|
|
2752
2755
|
),
|
|
@@ -2756,7 +2759,7 @@ function MultiSelectValueBase({
|
|
|
2756
2759
|
{
|
|
2757
2760
|
"data-selected-item": true,
|
|
2758
2761
|
size: "sm",
|
|
2759
|
-
className: "group flex items-center gap-1
|
|
2762
|
+
className: "group flex items-center gap-1 border-border shrink-0",
|
|
2760
2763
|
onClick: clickToRemove ? (e) => {
|
|
2761
2764
|
e.stopPropagation();
|
|
2762
2765
|
toggleValue(value);
|
|
@@ -2768,19 +2771,38 @@ function MultiSelectValueBase({
|
|
|
2768
2771
|
},
|
|
2769
2772
|
value
|
|
2770
2773
|
)),
|
|
2771
|
-
/* @__PURE__ */ jsxs(
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
"
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2774
|
+
overflowAmount > 0 && /* @__PURE__ */ jsx(TooltipProviderBase, { children: /* @__PURE__ */ jsxs(TooltipBase, { open: overflowHovered, children: [
|
|
2775
|
+
/* @__PURE__ */ jsx(TooltipTriggerBase, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
2776
|
+
"div",
|
|
2777
|
+
{
|
|
2778
|
+
ref: overflowRef,
|
|
2779
|
+
className: "inline-flex",
|
|
2780
|
+
onMouseEnter: () => setOverflowHovered(true),
|
|
2781
|
+
onMouseLeave: () => setOverflowHovered(false),
|
|
2782
|
+
children: /* @__PURE__ */ jsxs(Badge, { size: "sm", className: "shrink-0 cursor-default", children: [
|
|
2783
|
+
"+",
|
|
2784
|
+
overflowAmount
|
|
2785
|
+
] })
|
|
2786
|
+
}
|
|
2787
|
+
) }),
|
|
2788
|
+
/* @__PURE__ */ jsxs(TooltipContentBase, { className: "p-2 max-w-xs", children: [
|
|
2789
|
+
/* @__PURE__ */ jsxs("p", { className: "text-xs font-medium text-primary-foreground/60 mb-1.5 px-1", children: [
|
|
2790
|
+
overflowAmount,
|
|
2791
|
+
" item",
|
|
2792
|
+
overflowAmount > 1 ? "s" : "",
|
|
2793
|
+
" oculto",
|
|
2794
|
+
overflowAmount > 1 ? "s" : ""
|
|
2795
|
+
] }),
|
|
2796
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: visibleSelected.slice(visibleSelected.length - overflowAmount).map((value) => /* @__PURE__ */ jsx(
|
|
2797
|
+
"span",
|
|
2798
|
+
{
|
|
2799
|
+
className: "inline-flex items-center rounded-md bg-primary-foreground/15 px-2 py-0.5 text-xs font-medium text-primary-foreground",
|
|
2800
|
+
children: typeof items.get(value) === "string" ? items.get(value) : value
|
|
2801
|
+
},
|
|
2802
|
+
value
|
|
2803
|
+
)) })
|
|
2804
|
+
] })
|
|
2805
|
+
] }) })
|
|
2784
2806
|
]
|
|
2785
2807
|
}
|
|
2786
2808
|
);
|
|
@@ -2842,7 +2864,7 @@ function MultiSelectItemBase({
|
|
|
2842
2864
|
...props
|
|
2843
2865
|
}) {
|
|
2844
2866
|
const { toggleValue, selectedValues, onItemAdded } = useMultiSelectContext();
|
|
2845
|
-
const
|
|
2867
|
+
const [hovered, setHovered] = useState(false);
|
|
2846
2868
|
useEffect(() => {
|
|
2847
2869
|
onItemAdded(value, badgeLabel ?? children);
|
|
2848
2870
|
}, [value, children, onItemAdded, badgeLabel]);
|
|
@@ -2854,17 +2876,35 @@ function MultiSelectItemBase({
|
|
|
2854
2876
|
toggleValue(value);
|
|
2855
2877
|
onSelect?.(value);
|
|
2856
2878
|
},
|
|
2857
|
-
children: /* @__PURE__ */ jsxs(
|
|
2858
|
-
/* @__PURE__ */ jsx("span", { className: "
|
|
2859
|
-
|
|
2879
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-2", children: [
|
|
2880
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children }),
|
|
2881
|
+
/* @__PURE__ */ jsx(
|
|
2882
|
+
"div",
|
|
2860
2883
|
{
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
children: /* @__PURE__ */ jsx(
|
|
2884
|
+
className: "relative flex h-4 w-4 shrink-0 items-center justify-center",
|
|
2885
|
+
onMouseEnter: () => setHovered(true),
|
|
2886
|
+
onMouseLeave: () => setHovered(false),
|
|
2887
|
+
children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: selectedValues.has(value) && (hovered ? /* @__PURE__ */ jsx(
|
|
2888
|
+
motion.div,
|
|
2889
|
+
{
|
|
2890
|
+
initial: { scale: 0, rotate: -90, opacity: 0 },
|
|
2891
|
+
animate: { scale: 1, rotate: 0, opacity: 1 },
|
|
2892
|
+
transition: { duration: 0.05, ease: "easeOut" },
|
|
2893
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "size-4 text-destructive" })
|
|
2894
|
+
},
|
|
2895
|
+
"x"
|
|
2896
|
+
) : /* @__PURE__ */ jsx(
|
|
2897
|
+
motion.div,
|
|
2898
|
+
{
|
|
2899
|
+
initial: { scale: 0, rotate: 90, opacity: 0 },
|
|
2900
|
+
animate: { scale: 1, rotate: 0, opacity: 1 },
|
|
2901
|
+
transition: { duration: 0.05, ease: "easeOut" },
|
|
2902
|
+
children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" })
|
|
2903
|
+
},
|
|
2904
|
+
"check"
|
|
2905
|
+
)) })
|
|
2865
2906
|
}
|
|
2866
|
-
)
|
|
2867
|
-
children
|
|
2907
|
+
)
|
|
2868
2908
|
] })
|
|
2869
2909
|
}
|
|
2870
2910
|
);
|
|
@@ -3646,14 +3686,14 @@ var CardFooterBase = React32.forwardRef(({ className, testid: dataTestId = "card
|
|
|
3646
3686
|
}
|
|
3647
3687
|
));
|
|
3648
3688
|
CardFooterBase.displayName = "CardFooter";
|
|
3649
|
-
var
|
|
3650
|
-
Image:
|
|
3651
|
-
Document:
|
|
3652
|
-
Spreadsheet:
|
|
3653
|
-
Presentation:
|
|
3654
|
-
Video:
|
|
3655
|
-
Audio:
|
|
3656
|
-
All:
|
|
3689
|
+
var FileAccept = {
|
|
3690
|
+
Image: "image/*",
|
|
3691
|
+
Document: "pdf,doc,docx,txt,rtf",
|
|
3692
|
+
Spreadsheet: "xls,xlsx,csv",
|
|
3693
|
+
Presentation: "ppt,pptx",
|
|
3694
|
+
Video: "video/*",
|
|
3695
|
+
Audio: "audio/*",
|
|
3696
|
+
All: "*"
|
|
3657
3697
|
};
|
|
3658
3698
|
var formatFileSize = (bytes) => {
|
|
3659
3699
|
if (bytes === 0) return "0 Bytes";
|
|
@@ -3662,66 +3702,62 @@ var formatFileSize = (bytes) => {
|
|
|
3662
3702
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
3663
3703
|
return Math.round(bytes / Math.pow(k, i) * 100) / 100 + " " + sizes[i];
|
|
3664
3704
|
};
|
|
3665
|
-
var getFileExtension = (filename) =>
|
|
3666
|
-
|
|
3705
|
+
var getFileExtension = (filename) => filename.slice((filename.lastIndexOf(".") - 1 >>> 0) + 2);
|
|
3706
|
+
var parseAcceptTokens = (accept) => accept.split(",").map((t) => t.trim().toLowerCase()).filter(Boolean);
|
|
3707
|
+
var validateFileAgainstAccept = (file, accept) => {
|
|
3708
|
+
if (!accept || accept === "*") return true;
|
|
3709
|
+
const tokens = parseAcceptTokens(accept);
|
|
3710
|
+
const ext = getFileExtension(file.name).toLowerCase();
|
|
3711
|
+
const mime = file.type.toLowerCase();
|
|
3712
|
+
return tokens.some((token) => {
|
|
3713
|
+
if (token.endsWith("/*")) return mime.startsWith(token.replace("/*", ""));
|
|
3714
|
+
const tokenExt = token.startsWith(".") ? token.substring(1) : token;
|
|
3715
|
+
if (!token.includes("/")) return ext === tokenExt;
|
|
3716
|
+
return mime === token;
|
|
3717
|
+
});
|
|
3718
|
+
};
|
|
3719
|
+
var formatAcceptForInput = (accept) => {
|
|
3720
|
+
if (!accept || accept === "*") return void 0;
|
|
3721
|
+
return parseAcceptTokens(accept).map((t) => t.includes("/") || t.startsWith(".") ? t : `.${t}`).join(",");
|
|
3667
3722
|
};
|
|
3668
3723
|
var getFileTypeIcon = (file) => {
|
|
3669
3724
|
const extension = getFileExtension(file.name).toLowerCase();
|
|
3670
3725
|
const mimeType = file.type.toLowerCase();
|
|
3671
|
-
if (extension === "pdf" || mimeType === "application/pdf")
|
|
3726
|
+
if (extension === "pdf" || mimeType === "application/pdf")
|
|
3672
3727
|
return /* @__PURE__ */ jsx(FilePdfIcon, { size: 20, className: "text-red-500" });
|
|
3673
|
-
|
|
3674
|
-
if (["doc", "docx"].includes(extension) || mimeType.includes("word")) {
|
|
3728
|
+
if (["doc", "docx"].includes(extension) || mimeType.includes("word"))
|
|
3675
3729
|
return /* @__PURE__ */ jsx(FileDocIcon, { size: 20, className: "text-blue-500" });
|
|
3676
|
-
|
|
3677
|
-
if (["xls", "xlsx"].includes(extension) || mimeType.includes("sheet")) {
|
|
3730
|
+
if (["xls", "xlsx"].includes(extension) || mimeType.includes("sheet"))
|
|
3678
3731
|
return /* @__PURE__ */ jsx(FileXlsIcon, { size: 20, className: "text-green-500" });
|
|
3679
|
-
|
|
3680
|
-
if (["ppt", "pptx"].includes(extension) || mimeType.includes("presentation")) {
|
|
3732
|
+
if (["ppt", "pptx"].includes(extension) || mimeType.includes("presentation"))
|
|
3681
3733
|
return /* @__PURE__ */ jsx(FilePptIcon, { size: 20, className: "text-orange-500" });
|
|
3682
|
-
|
|
3683
|
-
if (extension === "csv" || mimeType === "text/csv") {
|
|
3734
|
+
if (extension === "csv" || mimeType === "text/csv")
|
|
3684
3735
|
return /* @__PURE__ */ jsx(FileCsvIcon, { size: 20, className: "text-green-600" });
|
|
3685
|
-
}
|
|
3686
3736
|
if (["txt", "md", "json", "xml", "js", "ts", "html", "css"].includes(
|
|
3687
3737
|
extension
|
|
3688
|
-
) || mimeType.includes("text"))
|
|
3738
|
+
) || mimeType.includes("text"))
|
|
3689
3739
|
return /* @__PURE__ */ jsx(FileTextIcon, { size: 20, className: "text-gray-500" });
|
|
3690
|
-
|
|
3691
|
-
if (mimeType.startsWith("image/")) {
|
|
3740
|
+
if (mimeType.startsWith("image/"))
|
|
3692
3741
|
return /* @__PURE__ */ jsx(FileImageIcon, { size: 20, className: "text-purple-500" });
|
|
3693
|
-
|
|
3694
|
-
if (mimeType.startsWith("video/")) {
|
|
3742
|
+
if (mimeType.startsWith("video/"))
|
|
3695
3743
|
return /* @__PURE__ */ jsx(FileVideoIcon, { size: 20, className: "text-pink-500" });
|
|
3696
|
-
|
|
3697
|
-
if (mimeType.startsWith("audio/")) {
|
|
3744
|
+
if (mimeType.startsWith("audio/"))
|
|
3698
3745
|
return /* @__PURE__ */ jsx(FileAudioIcon, { size: 20, className: "text-indigo-500" });
|
|
3699
|
-
|
|
3700
|
-
if (["zip", "rar", "7z", "tar", "gz"].includes(extension)) {
|
|
3746
|
+
if (["zip", "rar", "7z", "tar", "gz"].includes(extension))
|
|
3701
3747
|
return /* @__PURE__ */ jsx(FileZipIcon, { size: 20, className: "text-yellow-600" });
|
|
3702
|
-
}
|
|
3703
3748
|
return /* @__PURE__ */ jsx(FileIcon, { size: 20, className: "text-muted-foreground" });
|
|
3704
3749
|
};
|
|
3705
|
-
var createImagePreview = (file) => {
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3709
|
-
|
|
3710
|
-
|
|
3711
|
-
|
|
3712
|
-
reader.onload = (e) => {
|
|
3713
|
-
resolve(e.target?.result);
|
|
3714
|
-
};
|
|
3715
|
-
reader.onerror = () => {
|
|
3716
|
-
resolve(null);
|
|
3717
|
-
};
|
|
3718
|
-
reader.readAsDataURL(file);
|
|
3719
|
-
});
|
|
3720
|
-
};
|
|
3750
|
+
var createImagePreview = (file) => new Promise((resolve) => {
|
|
3751
|
+
if (!file.type.startsWith("image/")) return resolve(null);
|
|
3752
|
+
const reader = new FileReader();
|
|
3753
|
+
reader.onload = (e) => resolve(e.target?.result);
|
|
3754
|
+
reader.onerror = () => resolve(null);
|
|
3755
|
+
reader.readAsDataURL(file);
|
|
3756
|
+
});
|
|
3721
3757
|
var FileUploader = React32.forwardRef(
|
|
3722
3758
|
({
|
|
3723
3759
|
className,
|
|
3724
|
-
accept =
|
|
3760
|
+
accept = "*",
|
|
3725
3761
|
maxSize = 10,
|
|
3726
3762
|
maxFiles = 1,
|
|
3727
3763
|
disabled = false,
|
|
@@ -3744,72 +3780,49 @@ var FileUploader = React32.forwardRef(
|
|
|
3744
3780
|
}, [value]);
|
|
3745
3781
|
React32.useEffect(() => {
|
|
3746
3782
|
return () => {
|
|
3747
|
-
files.forEach((
|
|
3748
|
-
if (
|
|
3749
|
-
URL.revokeObjectURL(file.preview);
|
|
3750
|
-
}
|
|
3783
|
+
files.forEach((f) => {
|
|
3784
|
+
if (f.preview) URL.revokeObjectURL(f.preview);
|
|
3751
3785
|
});
|
|
3752
3786
|
};
|
|
3753
3787
|
}, [files]);
|
|
3754
3788
|
const validateFile = (file) => {
|
|
3755
|
-
|
|
3756
|
-
|
|
3757
|
-
|
|
3758
|
-
|
|
3759
|
-
if (accept.length > 0) {
|
|
3760
|
-
const fileExtension = `.${getFileExtension(file.name)}`;
|
|
3761
|
-
const fileType = file.type;
|
|
3762
|
-
const isAccepted = accept.some((acceptItem) => {
|
|
3763
|
-
if (acceptItem.startsWith(".")) {
|
|
3764
|
-
return fileExtension.toLowerCase() === acceptItem.toLowerCase();
|
|
3765
|
-
}
|
|
3766
|
-
if (acceptItem.endsWith("/*")) {
|
|
3767
|
-
return fileType.startsWith(acceptItem.replace("/*", ""));
|
|
3768
|
-
}
|
|
3769
|
-
return fileType === acceptItem;
|
|
3770
|
-
});
|
|
3771
|
-
if (!isAccepted) {
|
|
3772
|
-
return `Tipo de arquivo n\xE3o permitido. Aceitos: ${accept.join(", ")}`;
|
|
3773
|
-
}
|
|
3774
|
-
}
|
|
3789
|
+
if (file.size > maxSize * 1024 * 1024)
|
|
3790
|
+
return `Arquivo muito grande. M\xE1ximo: ${maxSize}MB`;
|
|
3791
|
+
if (!validateFileAgainstAccept(file, accept))
|
|
3792
|
+
return `Tipo n\xE3o permitido. Aceitos: ${accept}`;
|
|
3775
3793
|
return null;
|
|
3776
3794
|
};
|
|
3777
3795
|
const createFileWithPreview = async (file) => {
|
|
3778
|
-
const
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
if (error) {
|
|
3782
|
-
fileWithPreview.error = error;
|
|
3783
|
-
}
|
|
3784
|
-
if (file.type.startsWith("image/")) {
|
|
3796
|
+
const f = file;
|
|
3797
|
+
f.id = `${file.name}-${Date.now()}-${Math.random()}`;
|
|
3798
|
+
f.error = validateFile(file) ?? void 0;
|
|
3799
|
+
if (!f.error && file.type.startsWith("image/")) {
|
|
3785
3800
|
try {
|
|
3786
3801
|
const preview = await createImagePreview(file);
|
|
3787
|
-
if (preview)
|
|
3788
|
-
|
|
3789
|
-
|
|
3790
|
-
} catch (error2) {
|
|
3791
|
-
console.warn("Erro ao criar preview da imagem:", error2);
|
|
3802
|
+
if (preview) f.preview = preview;
|
|
3803
|
+
} catch (err) {
|
|
3804
|
+
console.warn("Erro ao criar preview:", err);
|
|
3792
3805
|
}
|
|
3793
3806
|
}
|
|
3794
|
-
return
|
|
3807
|
+
return f;
|
|
3795
3808
|
};
|
|
3796
3809
|
const handleFiles = async (newFiles) => {
|
|
3797
3810
|
if (disabled) return;
|
|
3798
|
-
const
|
|
3799
|
-
const filesToAdd = multiple ? newFiles.slice(0,
|
|
3800
|
-
const
|
|
3801
|
-
filesToAdd.map(
|
|
3811
|
+
const slots = maxFiles - files.length;
|
|
3812
|
+
const filesToAdd = multiple ? newFiles.slice(0, slots) : [newFiles[0]];
|
|
3813
|
+
const processed = await Promise.all(
|
|
3814
|
+
filesToAdd.map(createFileWithPreview)
|
|
3802
3815
|
);
|
|
3803
|
-
const
|
|
3804
|
-
setFiles(
|
|
3805
|
-
onValueChange(
|
|
3816
|
+
const updated = multiple ? [...files, ...processed] : processed;
|
|
3817
|
+
setFiles(updated);
|
|
3818
|
+
onValueChange(updated);
|
|
3806
3819
|
if (onUpload) {
|
|
3807
|
-
const
|
|
3808
|
-
if (
|
|
3820
|
+
const valid = processed.filter((f) => !f.error);
|
|
3821
|
+
if (valid.length > 0) {
|
|
3809
3822
|
try {
|
|
3810
|
-
await onUpload(
|
|
3811
|
-
} catch (
|
|
3812
|
-
console.error("Erro no upload:",
|
|
3823
|
+
await onUpload(valid);
|
|
3824
|
+
} catch (err) {
|
|
3825
|
+
console.error("Erro no upload:", err);
|
|
3813
3826
|
}
|
|
3814
3827
|
}
|
|
3815
3828
|
}
|
|
@@ -3818,17 +3831,12 @@ var FileUploader = React32.forwardRef(
|
|
|
3818
3831
|
e.preventDefault();
|
|
3819
3832
|
e.stopPropagation();
|
|
3820
3833
|
dragCounterRef.current++;
|
|
3821
|
-
if (e.dataTransfer.items
|
|
3822
|
-
setIsDragging(true);
|
|
3823
|
-
}
|
|
3834
|
+
if (e.dataTransfer.items?.length > 0) setIsDragging(true);
|
|
3824
3835
|
};
|
|
3825
3836
|
const handleDragLeave = (e) => {
|
|
3826
3837
|
e.preventDefault();
|
|
3827
3838
|
e.stopPropagation();
|
|
3828
|
-
dragCounterRef.current
|
|
3829
|
-
if (dragCounterRef.current === 0) {
|
|
3830
|
-
setIsDragging(false);
|
|
3831
|
-
}
|
|
3839
|
+
if (--dragCounterRef.current === 0) setIsDragging(false);
|
|
3832
3840
|
};
|
|
3833
3841
|
const handleDragOver = (e) => {
|
|
3834
3842
|
e.preventDefault();
|
|
@@ -3839,43 +3847,19 @@ var FileUploader = React32.forwardRef(
|
|
|
3839
3847
|
e.stopPropagation();
|
|
3840
3848
|
setIsDragging(false);
|
|
3841
3849
|
dragCounterRef.current = 0;
|
|
3842
|
-
if (disabled)
|
|
3843
|
-
const droppedFiles = Array.from(e.dataTransfer.files);
|
|
3844
|
-
handleFiles(droppedFiles);
|
|
3850
|
+
if (!disabled) handleFiles(Array.from(e.dataTransfer.files));
|
|
3845
3851
|
};
|
|
3846
3852
|
const handleInputChange = (e) => {
|
|
3847
|
-
if (e.target.files)
|
|
3848
|
-
const selectedFiles = Array.from(e.target.files);
|
|
3849
|
-
handleFiles(selectedFiles);
|
|
3850
|
-
}
|
|
3853
|
+
if (e.target.files) handleFiles(Array.from(e.target.files));
|
|
3851
3854
|
};
|
|
3852
3855
|
const handleRemoveFile = (fileId) => {
|
|
3853
|
-
const
|
|
3854
|
-
if (
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
|
|
3858
|
-
setFiles(updatedFiles);
|
|
3859
|
-
onValueChange(updatedFiles);
|
|
3860
|
-
};
|
|
3861
|
-
const handleClick = () => {
|
|
3862
|
-
if (!disabled) {
|
|
3863
|
-
inputRef.current?.click();
|
|
3864
|
-
}
|
|
3856
|
+
const target = files.find((f) => f.id === fileId);
|
|
3857
|
+
if (target?.preview) URL.revokeObjectURL(target.preview);
|
|
3858
|
+
const updated = files.filter((f) => f.id !== fileId);
|
|
3859
|
+
setFiles(updated);
|
|
3860
|
+
onValueChange(updated);
|
|
3865
3861
|
};
|
|
3866
|
-
const
|
|
3867
|
-
const getFormatText = () => {
|
|
3868
|
-
if (accept === FileTypes.All || accept.length === 0)
|
|
3869
|
-
return "Qualquer formato";
|
|
3870
|
-
if (accept === FileTypes.Image) return "Apenas imagens";
|
|
3871
|
-
if (accept === FileTypes.Document) return "Apenas documentos";
|
|
3872
|
-
if (accept === FileTypes.Video) return "Apenas v\xEDdeos";
|
|
3873
|
-
if (accept === FileTypes.Audio) return "Apenas \xE1udio";
|
|
3874
|
-
if (accept === FileTypes.Spreadsheet) return "Apenas planilhas";
|
|
3875
|
-
if (accept === FileTypes.Presentation) return "Apenas apresenta\xE7\xF5es";
|
|
3876
|
-
return "Formatos espec\xEDficos v\xE1lidos";
|
|
3877
|
-
};
|
|
3878
|
-
const defaultSubtext = dropzoneSubtext || `${getFormatText()} (M\xE1x: ${maxSize}MB)`;
|
|
3862
|
+
const defaultSubtext = dropzoneSubtext ?? `${accept === "*" ? "Qualquer formato" : accept} (M\xE1x: ${maxSize}MB)`;
|
|
3879
3863
|
return /* @__PURE__ */ jsx("div", { ref, className: cn("w-full", className), ...props, children: /* @__PURE__ */ jsxs(
|
|
3880
3864
|
motion.div,
|
|
3881
3865
|
{
|
|
@@ -3889,7 +3873,7 @@ var FileUploader = React32.forwardRef(
|
|
|
3889
3873
|
onDragOver: handleDragOver,
|
|
3890
3874
|
onDragLeave: handleDragLeave,
|
|
3891
3875
|
onDrop: handleDrop,
|
|
3892
|
-
onClick:
|
|
3876
|
+
onClick: () => !disabled && inputRef.current?.click(),
|
|
3893
3877
|
whileTap: !disabled ? { scale: 0.99 } : void 0,
|
|
3894
3878
|
animate: isDragging ? {
|
|
3895
3879
|
borderColor: `hsl(var(--primary))`,
|
|
@@ -3900,12 +3884,7 @@ var FileUploader = React32.forwardRef(
|
|
|
3900
3884
|
backgroundColor: `hsl(var(--background))`,
|
|
3901
3885
|
scale: 1
|
|
3902
3886
|
},
|
|
3903
|
-
transition: {
|
|
3904
|
-
type: "spring",
|
|
3905
|
-
stiffness: 300,
|
|
3906
|
-
damping: 25,
|
|
3907
|
-
duration: 0.3
|
|
3908
|
-
},
|
|
3887
|
+
transition: { type: "spring", stiffness: 300, damping: 25 },
|
|
3909
3888
|
children: [
|
|
3910
3889
|
/* @__PURE__ */ jsx(
|
|
3911
3890
|
"input",
|
|
@@ -3913,7 +3892,7 @@ var FileUploader = React32.forwardRef(
|
|
|
3913
3892
|
ref: inputRef,
|
|
3914
3893
|
type: "file",
|
|
3915
3894
|
className: "hidden",
|
|
3916
|
-
accept:
|
|
3895
|
+
accept: formatAcceptForInput(accept),
|
|
3917
3896
|
multiple,
|
|
3918
3897
|
disabled,
|
|
3919
3898
|
onChange: handleInputChange
|
|
@@ -3923,20 +3902,11 @@ var FileUploader = React32.forwardRef(
|
|
|
3923
3902
|
motion.div,
|
|
3924
3903
|
{
|
|
3925
3904
|
animate: isDragging ? { scale: 1.2, rotate: 10 } : { scale: 1, rotate: 0 },
|
|
3926
|
-
transition: {
|
|
3927
|
-
type: "spring",
|
|
3928
|
-
stiffness: 300,
|
|
3929
|
-
damping: 20,
|
|
3930
|
-
duration: 0.3
|
|
3931
|
-
},
|
|
3905
|
+
transition: { type: "spring", stiffness: 300, damping: 20 },
|
|
3932
3906
|
children: /* @__PURE__ */ jsx(
|
|
3933
3907
|
motion.div,
|
|
3934
3908
|
{
|
|
3935
|
-
className:
|
|
3936
|
-
"mb-4 h-16 w-16 text-muted-foreground transition-colors duration-300 drop-shadow-lg flex items-center justify-center",
|
|
3937
|
-
isDragging && "text-primary"
|
|
3938
|
-
),
|
|
3939
|
-
initial: false,
|
|
3909
|
+
className: "mb-4 h-16 w-16 drop-shadow-lg flex items-center justify-center",
|
|
3940
3910
|
animate: {
|
|
3941
3911
|
color: isDragging ? `hsl(var(--primary))` : `hsl(var(--muted-foreground))`
|
|
3942
3912
|
},
|
|
@@ -3966,14 +3936,14 @@ var FileUploader = React32.forwardRef(
|
|
|
3966
3936
|
children: defaultSubtext
|
|
3967
3937
|
}
|
|
3968
3938
|
),
|
|
3969
|
-
showPreview && files.length > 0 && /* @__PURE__ */
|
|
3939
|
+
showPreview && files.length > 0 && /* @__PURE__ */ jsxs(
|
|
3970
3940
|
motion.div,
|
|
3971
3941
|
{
|
|
3972
3942
|
className: "py-2 w-full",
|
|
3973
3943
|
initial: animate ? { opacity: 0, y: 10 } : false,
|
|
3974
3944
|
animate: { opacity: 1, y: 0 },
|
|
3975
3945
|
transition: { delay: 0.3 },
|
|
3976
|
-
children:
|
|
3946
|
+
children: [
|
|
3977
3947
|
/* @__PURE__ */ jsxs("h4", { className: "text-xs font-medium text-muted-foreground pb-0.5", children: [
|
|
3978
3948
|
"Arquivos selecionados (",
|
|
3979
3949
|
files.length,
|
|
@@ -4052,7 +4022,7 @@ var FileUploader = React32.forwardRef(
|
|
|
4052
4022
|
},
|
|
4053
4023
|
file.id
|
|
4054
4024
|
)) }) })
|
|
4055
|
-
]
|
|
4025
|
+
]
|
|
4056
4026
|
}
|
|
4057
4027
|
)
|
|
4058
4028
|
]
|
|
@@ -9906,6 +9876,7 @@ function Select({
|
|
|
9906
9876
|
{
|
|
9907
9877
|
className: cn(
|
|
9908
9878
|
"flex items-center gap-2 justify-between [&>div]:line-clamp-1 [&>span]:line-clamp-1 relative",
|
|
9879
|
+
!selected && "text-muted-foreground",
|
|
9909
9880
|
error && "border-red-500",
|
|
9910
9881
|
className
|
|
9911
9882
|
),
|
|
@@ -14479,6 +14450,7 @@ function MultiSelect({
|
|
|
14479
14450
|
{
|
|
14480
14451
|
className: cn(
|
|
14481
14452
|
"flex items-center gap-2 justify-between hover:bg-muted transition-all duration-150",
|
|
14453
|
+
!selected && "text-muted-foreground",
|
|
14482
14454
|
error && "border-red-500",
|
|
14483
14455
|
className
|
|
14484
14456
|
),
|
|
@@ -16227,11 +16199,12 @@ var SystemTooltip = ({
|
|
|
16227
16199
|
isLoading = false,
|
|
16228
16200
|
onMouseDown,
|
|
16229
16201
|
onClose,
|
|
16230
|
-
onPositionChange
|
|
16202
|
+
onPositionChange,
|
|
16203
|
+
onConnectionClick,
|
|
16204
|
+
onProcessClick
|
|
16231
16205
|
}) => {
|
|
16232
16206
|
const [localPos, setLocalPos] = useState(position);
|
|
16233
16207
|
const [dragging, setDragging] = useState(false);
|
|
16234
|
-
const [expandedId, setExpandedId] = useState(null);
|
|
16235
16208
|
const offsetRef = useRef({ x: 0, y: 0 });
|
|
16236
16209
|
const lastMouse = useRef({ x: 0, y: 0 });
|
|
16237
16210
|
useEffect(() => setLocalPos(position), [position]);
|
|
@@ -16302,6 +16275,19 @@ var SystemTooltip = ({
|
|
|
16302
16275
|
},
|
|
16303
16276
|
[id, onMouseDown]
|
|
16304
16277
|
);
|
|
16278
|
+
const handleConnClick = useCallback(
|
|
16279
|
+
(e, conn) => {
|
|
16280
|
+
e.stopPropagation();
|
|
16281
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
16282
|
+
const pos = { x: rect.right + 8, y: rect.top };
|
|
16283
|
+
if (conn.integration?.Nome) {
|
|
16284
|
+
onProcessClick?.(conn, pos);
|
|
16285
|
+
} else {
|
|
16286
|
+
onConnectionClick?.(conn, pos);
|
|
16287
|
+
}
|
|
16288
|
+
},
|
|
16289
|
+
[onConnectionClick, onProcessClick]
|
|
16290
|
+
);
|
|
16305
16291
|
const entries = useMemo(
|
|
16306
16292
|
() => data.connections.filter((c) => c.type === "entrada"),
|
|
16307
16293
|
[data.connections]
|
|
@@ -16310,6 +16296,28 @@ var SystemTooltip = ({
|
|
|
16310
16296
|
() => data.connections.filter((c) => c.type === "saida"),
|
|
16311
16297
|
[data.connections]
|
|
16312
16298
|
);
|
|
16299
|
+
const renderConnections = (connections, color) => {
|
|
16300
|
+
const isEmerald = color === "emerald";
|
|
16301
|
+
return connections.map((conn) => /* @__PURE__ */ jsxs(
|
|
16302
|
+
"div",
|
|
16303
|
+
{
|
|
16304
|
+
className: `group flex items-center justify-between p-2 rounded-lg cursor-pointer transition-all
|
|
16305
|
+
${isEmerald ? "bg-emerald-500/5 border border-emerald-500/10 hover:border-emerald-500/30" : "bg-blue-500/5 border border-blue-500/10 hover:border-blue-500/30"}`,
|
|
16306
|
+
onClick: (e) => handleConnClick(e, conn),
|
|
16307
|
+
children: [
|
|
16308
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 overflow-hidden", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-medium truncate", children: conn.name }) }),
|
|
16309
|
+
/* @__PURE__ */ jsx(
|
|
16310
|
+
ArrowRightIcon$1,
|
|
16311
|
+
{
|
|
16312
|
+
size: 14,
|
|
16313
|
+
className: `shrink-0 ${isEmerald ? "text-emerald-500 rotate-180" : "text-blue-500"}`
|
|
16314
|
+
}
|
|
16315
|
+
)
|
|
16316
|
+
]
|
|
16317
|
+
},
|
|
16318
|
+
conn.id
|
|
16319
|
+
));
|
|
16320
|
+
};
|
|
16313
16321
|
return /* @__PURE__ */ jsx(AnimatePresence, { children: /* @__PURE__ */ jsxs(
|
|
16314
16322
|
motion.div,
|
|
16315
16323
|
{
|
|
@@ -16327,7 +16335,7 @@ var SystemTooltip = ({
|
|
|
16327
16335
|
/* @__PURE__ */ jsxs(
|
|
16328
16336
|
"div",
|
|
16329
16337
|
{
|
|
16330
|
-
className: "flex items-center justify-between py-1 border-b border-border/10 bg-muted/30
|
|
16338
|
+
className: "flex items-center justify-between py-1 border-b border-border/10 bg-muted/30",
|
|
16331
16339
|
onMouseDown: handleMouseDownLocal,
|
|
16332
16340
|
onTouchStart: handleTouchStartLocal,
|
|
16333
16341
|
style: {
|
|
@@ -16347,7 +16355,7 @@ var SystemTooltip = ({
|
|
|
16347
16355
|
onClick: () => onClose(id),
|
|
16348
16356
|
className: "text-muted-foreground hover:text-destructive transition-colors hover:bg-destructive/10 mr-1",
|
|
16349
16357
|
style: { cursor: "pointer" },
|
|
16350
|
-
children: /* @__PURE__ */ jsx(XIcon
|
|
16358
|
+
children: /* @__PURE__ */ jsx(XIcon, { size: 16 })
|
|
16351
16359
|
}
|
|
16352
16360
|
)
|
|
16353
16361
|
]
|
|
@@ -16360,7 +16368,7 @@ var SystemTooltip = ({
|
|
|
16360
16368
|
/* @__PURE__ */ jsx("h3", { className: "text-xl font-bold text-foreground tracking-tight truncate", children: data.name }),
|
|
16361
16369
|
data.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground tracking-tight truncate", children: data.description })
|
|
16362
16370
|
] }) }),
|
|
16363
|
-
/* @__PURE__ */ jsxs("div", { className: "px-3 pb-4 space-y-4 max-h-[300px] overflow-y-auto [&::-webkit-scrollbar]:w- [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:bg-muted-foreground/20 [&::-webkit-scrollbar-thumb]:rounded-full hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/40 transition-colors", children: [
|
|
16371
|
+
/* @__PURE__ */ jsxs("div", { className: "px-3 pb-4 space-y-4 max-h-[300px] overflow-y-auto [&::-webkit-scrollbar]:w-1 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:bg-muted-foreground/20 [&::-webkit-scrollbar-thumb]:rounded-full hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/40 transition-colors", children: [
|
|
16364
16372
|
/* @__PURE__ */ jsx(SeparatorBase, { className: "w-full" }),
|
|
16365
16373
|
isLoading ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16366
16374
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
@@ -16383,128 +16391,14 @@ var SystemTooltip = ({
|
|
|
16383
16391
|
/* @__PURE__ */ jsx("div", { className: "w-1.5 h-1.5 rounded-full bg-emerald-500" }),
|
|
16384
16392
|
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold text-muted-foreground uppercase", children: "Entradas" })
|
|
16385
16393
|
] }),
|
|
16386
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: entries
|
|
16387
|
-
/* @__PURE__ */ jsxs(
|
|
16388
|
-
"div",
|
|
16389
|
-
{
|
|
16390
|
-
className: "group flex items-center justify-between p-2 rounded-lg bg-emerald-500/5 border border-emerald-500/10 hover:border-emerald-500/30 transition-all cursor-pointer",
|
|
16391
|
-
onClick: () => setExpandedId(
|
|
16392
|
-
expandedId === conn.id ? null : conn.id
|
|
16393
|
-
),
|
|
16394
|
-
children: [
|
|
16395
|
-
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 overflow-hidden", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-medium truncate", children: conn.name }) }),
|
|
16396
|
-
/* @__PURE__ */ jsx(
|
|
16397
|
-
ArrowRight,
|
|
16398
|
-
{
|
|
16399
|
-
size: 14,
|
|
16400
|
-
className: "text-emerald-500 shrink-0 rotate-180"
|
|
16401
|
-
}
|
|
16402
|
-
)
|
|
16403
|
-
]
|
|
16404
|
-
}
|
|
16405
|
-
),
|
|
16406
|
-
expandedId === conn.id && conn.integration && /* @__PURE__ */ jsxs("div", { className: "ml-2 p-2 rounded-lg bg-muted/30 border border-border/20 text-xs space-y-1", children: [
|
|
16407
|
-
conn.integration.Nome && /* @__PURE__ */ jsxs("div", { children: [
|
|
16408
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Nome:" }),
|
|
16409
|
-
" ",
|
|
16410
|
-
conn.integration.Nome
|
|
16411
|
-
] }),
|
|
16412
|
-
(conn.integration.tipo || conn.integration.Tipo) && /* @__PURE__ */ jsxs("div", { children: [
|
|
16413
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Tipo:" }),
|
|
16414
|
-
" ",
|
|
16415
|
-
conn.integration.tipo || conn.integration.Tipo
|
|
16416
|
-
] }),
|
|
16417
|
-
conn.integration.Protocolos && /* @__PURE__ */ jsxs("div", { children: [
|
|
16418
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Protocolos:" }),
|
|
16419
|
-
" ",
|
|
16420
|
-
conn.integration.Protocolos
|
|
16421
|
-
] }),
|
|
16422
|
-
conn.integration.Ambiente && /* @__PURE__ */ jsxs("div", { children: [
|
|
16423
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Ambiente:" }),
|
|
16424
|
-
" ",
|
|
16425
|
-
conn.integration.Ambiente
|
|
16426
|
-
] }),
|
|
16427
|
-
conn.integration.Setor && /* @__PURE__ */ jsxs("div", { children: [
|
|
16428
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Setor:" }),
|
|
16429
|
-
" ",
|
|
16430
|
-
conn.integration.Setor
|
|
16431
|
-
] }),
|
|
16432
|
-
conn.integration.Contato && /* @__PURE__ */ jsxs("div", { children: [
|
|
16433
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Contato:" }),
|
|
16434
|
-
" ",
|
|
16435
|
-
conn.integration.Contato
|
|
16436
|
-
] }),
|
|
16437
|
-
conn.integration.Sustentacao && /* @__PURE__ */ jsxs("div", { children: [
|
|
16438
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Sustenta\xE7\xE3o:" }),
|
|
16439
|
-
" ",
|
|
16440
|
-
conn.integration.Sustentacao
|
|
16441
|
-
] })
|
|
16442
|
-
] })
|
|
16443
|
-
] }, conn.id)) })
|
|
16394
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: renderConnections(entries, "emerald") })
|
|
16444
16395
|
] }),
|
|
16445
16396
|
exits.length > 0 && /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
16446
16397
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-1", children: [
|
|
16447
16398
|
/* @__PURE__ */ jsx("div", { className: "w-1.5 h-1.5 rounded-full bg-blue-500" }),
|
|
16448
16399
|
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold text-muted-foreground uppercase", children: "Sa\xEDdas" })
|
|
16449
16400
|
] }),
|
|
16450
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: exits
|
|
16451
|
-
/* @__PURE__ */ jsxs(
|
|
16452
|
-
"div",
|
|
16453
|
-
{
|
|
16454
|
-
className: "group flex items-center justify-between p-2 rounded-lg bg-blue-500/5 border border-blue-500/10 hover:border-blue-500/30 transition-all cursor-pointer",
|
|
16455
|
-
onClick: () => setExpandedId(
|
|
16456
|
-
expandedId === conn.id ? null : conn.id
|
|
16457
|
-
),
|
|
16458
|
-
children: [
|
|
16459
|
-
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 overflow-hidden", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-medium truncate", children: conn.name }) }),
|
|
16460
|
-
/* @__PURE__ */ jsx(
|
|
16461
|
-
ArrowRight,
|
|
16462
|
-
{
|
|
16463
|
-
size: 14,
|
|
16464
|
-
className: "text-blue-500 shrink-0"
|
|
16465
|
-
}
|
|
16466
|
-
)
|
|
16467
|
-
]
|
|
16468
|
-
}
|
|
16469
|
-
),
|
|
16470
|
-
expandedId === conn.id && conn.integration && /* @__PURE__ */ jsxs("div", { className: "ml-2 p-2 rounded-lg bg-muted/30 border border-border/20 text-xs space-y-1", children: [
|
|
16471
|
-
conn.integration.Nome && /* @__PURE__ */ jsxs("div", { children: [
|
|
16472
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Nome:" }),
|
|
16473
|
-
" ",
|
|
16474
|
-
conn.integration.Nome
|
|
16475
|
-
] }),
|
|
16476
|
-
(conn.integration.tipo || conn.integration.Tipo) && /* @__PURE__ */ jsxs("div", { children: [
|
|
16477
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Tipo:" }),
|
|
16478
|
-
" ",
|
|
16479
|
-
conn.integration.tipo || conn.integration.Tipo
|
|
16480
|
-
] }),
|
|
16481
|
-
conn.integration.Protocolos && /* @__PURE__ */ jsxs("div", { children: [
|
|
16482
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Protocolos:" }),
|
|
16483
|
-
" ",
|
|
16484
|
-
conn.integration.Protocolos
|
|
16485
|
-
] }),
|
|
16486
|
-
conn.integration.Ambiente && /* @__PURE__ */ jsxs("div", { children: [
|
|
16487
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Ambiente:" }),
|
|
16488
|
-
" ",
|
|
16489
|
-
conn.integration.Ambiente
|
|
16490
|
-
] }),
|
|
16491
|
-
conn.integration.Setor && /* @__PURE__ */ jsxs("div", { children: [
|
|
16492
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Setor:" }),
|
|
16493
|
-
" ",
|
|
16494
|
-
conn.integration.Setor
|
|
16495
|
-
] }),
|
|
16496
|
-
conn.integration.Contato && /* @__PURE__ */ jsxs("div", { children: [
|
|
16497
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Contato:" }),
|
|
16498
|
-
" ",
|
|
16499
|
-
conn.integration.Contato
|
|
16500
|
-
] }),
|
|
16501
|
-
conn.integration.Sustentacao && /* @__PURE__ */ jsxs("div", { children: [
|
|
16502
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: "Sustenta\xE7\xE3o:" }),
|
|
16503
|
-
" ",
|
|
16504
|
-
conn.integration.Sustentacao
|
|
16505
|
-
] })
|
|
16506
|
-
] })
|
|
16507
|
-
] }, conn.id)) })
|
|
16401
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: renderConnections(exits, "blue") })
|
|
16508
16402
|
] }),
|
|
16509
16403
|
data.connections.length === 0 && !isLoading && /* @__PURE__ */ jsx("div", { className: "flex flex-col items-center justify-center p-6 text-center", children: /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "Nenhuma conex\xE3o encontrada" }) })
|
|
16510
16404
|
] })
|
|
@@ -16528,6 +16422,78 @@ var useIsTruncated = (ref) => {
|
|
|
16528
16422
|
}, [ref]);
|
|
16529
16423
|
return truncated;
|
|
16530
16424
|
};
|
|
16425
|
+
var CopyData = ({ value }) => {
|
|
16426
|
+
const [copied, setCopied] = useState(false);
|
|
16427
|
+
const handleCopy = useCallback(() => {
|
|
16428
|
+
navigator.clipboard.writeText(value).then(() => {
|
|
16429
|
+
setCopied(true);
|
|
16430
|
+
setTimeout(() => setCopied(false), 1500);
|
|
16431
|
+
});
|
|
16432
|
+
}, [value]);
|
|
16433
|
+
return /* @__PURE__ */ jsx(TooltipProviderBase, { children: /* @__PURE__ */ jsxs(TooltipBase, { children: [
|
|
16434
|
+
/* @__PURE__ */ jsx(TooltipTriggerBase, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
16435
|
+
"button",
|
|
16436
|
+
{
|
|
16437
|
+
onClick: handleCopy,
|
|
16438
|
+
className: "shrink-0 p-0.5 rounded transition-colors text-muted-foreground/40 hover:text-foreground hover:bg-muted",
|
|
16439
|
+
style: { cursor: "pointer" },
|
|
16440
|
+
children: copied ? /* @__PURE__ */ jsx(CheckIcon, {}) : /* @__PURE__ */ jsx(CopyIcon, {})
|
|
16441
|
+
}
|
|
16442
|
+
) }),
|
|
16443
|
+
/* @__PURE__ */ jsx(TooltipContentBase, { sideOffset: 6, className: "z-[10001]", children: copied ? "Copiado!" : "Copiar" })
|
|
16444
|
+
] }) });
|
|
16445
|
+
};
|
|
16446
|
+
var propertyLabels = {
|
|
16447
|
+
Nome: "Nome",
|
|
16448
|
+
tipo: "Tipo",
|
|
16449
|
+
Tipo: "Tipo",
|
|
16450
|
+
Protocolos: "Protocolos",
|
|
16451
|
+
Ambiente: "Ambiente",
|
|
16452
|
+
Setor: "Setor",
|
|
16453
|
+
Contato: "Contato",
|
|
16454
|
+
Sustentacao: "Sustenta\xE7\xE3o",
|
|
16455
|
+
Destino: "Destino",
|
|
16456
|
+
Origem: "Origem"
|
|
16457
|
+
};
|
|
16458
|
+
var IntegrationCard = ({ title, details }) => {
|
|
16459
|
+
const titleRef = useRef(null);
|
|
16460
|
+
const isTitleTruncated = useIsTruncated(titleRef);
|
|
16461
|
+
const blackList = ["id", "elementId", "identity"];
|
|
16462
|
+
const entries = details ? Object.entries(details).filter(
|
|
16463
|
+
([key, value]) => value !== void 0 && value !== null && value !== "" && !blackList.includes(key)
|
|
16464
|
+
) : [];
|
|
16465
|
+
return /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-border/40 bg-muted/20 overflow-hidden", children: [
|
|
16466
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 py-2 border-b border-border/30", children: [
|
|
16467
|
+
/* @__PURE__ */ jsx(TooltipProviderBase, { children: /* @__PURE__ */ jsxs(TooltipBase, { children: [
|
|
16468
|
+
/* @__PURE__ */ jsx(TooltipTriggerBase, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
16469
|
+
"span",
|
|
16470
|
+
{
|
|
16471
|
+
ref: titleRef,
|
|
16472
|
+
className: "text-sm font-bold text-foreground truncate flex-1 min-w-0 cursor-default",
|
|
16473
|
+
children: title
|
|
16474
|
+
}
|
|
16475
|
+
) }),
|
|
16476
|
+
isTitleTruncated && /* @__PURE__ */ jsx(TooltipContentBase, { sideOffset: 6, className: "z-[10001]", children: title })
|
|
16477
|
+
] }) }),
|
|
16478
|
+
entries.length > 0 && /* @__PURE__ */ jsx(
|
|
16479
|
+
CopyData,
|
|
16480
|
+
{
|
|
16481
|
+
value: entries.map(([k, v]) => `${propertyLabels[k] || k}: ${String(v)}`).join("\n")
|
|
16482
|
+
}
|
|
16483
|
+
)
|
|
16484
|
+
] }),
|
|
16485
|
+
entries.length > 0 && /* @__PURE__ */ jsx("div", { className: "divide-y divide-border/20 px-0.5", children: entries.map(([key, value]) => {
|
|
16486
|
+
const label = propertyLabels[key] || key;
|
|
16487
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 py-1.5", children: [
|
|
16488
|
+
/* @__PURE__ */ jsxs("span", { className: "text-xs font-semibold text-muted-foreground shrink-0 w-[40%] sm:w-[38%]", children: [
|
|
16489
|
+
label,
|
|
16490
|
+
":"
|
|
16491
|
+
] }),
|
|
16492
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-foreground break-all flex-1 min-w-0", children: String(value) })
|
|
16493
|
+
] }, key);
|
|
16494
|
+
}) })
|
|
16495
|
+
] });
|
|
16496
|
+
};
|
|
16531
16497
|
var NameTooltip = ({
|
|
16532
16498
|
name,
|
|
16533
16499
|
description
|
|
@@ -16538,7 +16504,7 @@ var NameTooltip = ({
|
|
|
16538
16504
|
const isDescTruncated = useIsTruncated(descRef);
|
|
16539
16505
|
const showTooltip = isNameTruncated || isDescTruncated;
|
|
16540
16506
|
return /* @__PURE__ */ jsx(TooltipProviderBase, { children: /* @__PURE__ */ jsxs(TooltipBase, { children: [
|
|
16541
|
-
/* @__PURE__ */ jsx(TooltipTriggerBase, { asChild: true, children: /* @__PURE__ */ jsxs("div", { className: "cursor-default", children: [
|
|
16507
|
+
/* @__PURE__ */ jsx(TooltipTriggerBase, { asChild: true, children: /* @__PURE__ */ jsxs("div", { className: "cursor-default min-w-0", children: [
|
|
16542
16508
|
/* @__PURE__ */ jsx(
|
|
16543
16509
|
"h3",
|
|
16544
16510
|
{
|
|
@@ -16565,7 +16531,7 @@ var NameTooltip = ({
|
|
|
16565
16531
|
var SystemNode = ({ label }) => {
|
|
16566
16532
|
const truncated = label.length > 9 ? label.substring(0, 9) + "\u2026" : label;
|
|
16567
16533
|
const needsTooltip = label.length > 9;
|
|
16568
|
-
const circle = /* @__PURE__ */ jsx("div", { className: "w-[76px] h-[76px] rounded-full bg-primary flex items-center justify-center shrink-0 z-10 cursor-default", children: /* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold text-primary-foreground text-center px-2 leading-tight select-none", children: truncated }) });
|
|
16534
|
+
const circle = /* @__PURE__ */ jsx("div", { className: "w-[76px] h-[76px] rounded-full bg-primary flex items-center justify-center shrink-0 z-10 cursor-default max-w-xs", children: /* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold text-primary-foreground text-center px-2 leading-tight select-none", children: truncated }) });
|
|
16569
16535
|
if (!needsTooltip) return circle;
|
|
16570
16536
|
return /* @__PURE__ */ jsx(TooltipProviderBase, { children: /* @__PURE__ */ jsxs(TooltipBase, { children: [
|
|
16571
16537
|
/* @__PURE__ */ jsx(TooltipTriggerBase, { asChild: true, children: circle }),
|
|
@@ -16612,14 +16578,13 @@ var Beam = ({ isInput, containerRef, leftRef, rightRef }) => {
|
|
|
16612
16578
|
if (leftRef.current) ro.observe(leftRef.current);
|
|
16613
16579
|
if (rightRef.current) ro.observe(rightRef.current);
|
|
16614
16580
|
const mo = new MutationObserver(schedule);
|
|
16615
|
-
|
|
16616
|
-
|
|
16617
|
-
|
|
16618
|
-
|
|
16619
|
-
|
|
16620
|
-
|
|
16621
|
-
|
|
16622
|
-
});
|
|
16581
|
+
if (containerRef.current) {
|
|
16582
|
+
mo.observe(containerRef.current, {
|
|
16583
|
+
attributes: true,
|
|
16584
|
+
attributeFilter: ["class", "style"],
|
|
16585
|
+
subtree: true
|
|
16586
|
+
});
|
|
16587
|
+
}
|
|
16623
16588
|
return () => {
|
|
16624
16589
|
cancelAnimationFrame(rafId);
|
|
16625
16590
|
ro.disconnect();
|
|
@@ -16632,7 +16597,7 @@ var Beam = ({ isInput, containerRef, leftRef, rightRef }) => {
|
|
|
16632
16597
|
return /* @__PURE__ */ jsxs(
|
|
16633
16598
|
"svg",
|
|
16634
16599
|
{
|
|
16635
|
-
className: "pointer-events-none absolute left-0 top-0",
|
|
16600
|
+
className: "pointer-events-none absolute left-0 top-0 right-0",
|
|
16636
16601
|
width: svgSize.w,
|
|
16637
16602
|
height: svgSize.h,
|
|
16638
16603
|
fill: "none",
|
|
@@ -16697,7 +16662,7 @@ var SystemsDiagram = ({ isInput, currentSystem, externalSystem }) => {
|
|
|
16697
16662
|
"div",
|
|
16698
16663
|
{
|
|
16699
16664
|
ref: containerRef,
|
|
16700
|
-
className: "relative flex items-center justify-between py-1 px-
|
|
16665
|
+
className: "relative flex items-center justify-between py-1 px-6 max-w-xs",
|
|
16701
16666
|
children: [
|
|
16702
16667
|
/* @__PURE__ */ jsx("div", { ref: leftRef, children: /* @__PURE__ */ jsx(SystemNode, { label: isInput ? externalSystem : currentSystem }) }),
|
|
16703
16668
|
/* @__PURE__ */ jsx("div", { ref: rightRef, children: /* @__PURE__ */ jsx(SystemNode, { label: isInput ? currentSystem : externalSystem }) }),
|
|
@@ -16714,110 +16679,7 @@ var SystemsDiagram = ({ isInput, currentSystem, externalSystem }) => {
|
|
|
16714
16679
|
}
|
|
16715
16680
|
);
|
|
16716
16681
|
};
|
|
16717
|
-
var
|
|
16718
|
-
const [copied, setCopied] = useState(false);
|
|
16719
|
-
const handleCopy = useCallback(() => {
|
|
16720
|
-
navigator.clipboard.writeText(value).then(() => {
|
|
16721
|
-
setCopied(true);
|
|
16722
|
-
setTimeout(() => setCopied(false), 1500);
|
|
16723
|
-
});
|
|
16724
|
-
}, [value]);
|
|
16725
|
-
return /* @__PURE__ */ jsx(TooltipProviderBase, { children: /* @__PURE__ */ jsxs(TooltipBase, { children: [
|
|
16726
|
-
/* @__PURE__ */ jsx(TooltipTriggerBase, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
16727
|
-
"button",
|
|
16728
|
-
{
|
|
16729
|
-
onClick: handleCopy,
|
|
16730
|
-
className: "shrink-0 p-0.5 rounded transition-colors text-muted-foreground/40 hover:text-foreground hover:bg-muted",
|
|
16731
|
-
style: { cursor: "pointer" },
|
|
16732
|
-
children: copied ? /* @__PURE__ */ jsx("svg", { width: "12", height: "12", viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsx(
|
|
16733
|
-
"path",
|
|
16734
|
-
{
|
|
16735
|
-
d: "M3 8l3.5 3.5L13 4.5",
|
|
16736
|
-
stroke: "currentColor",
|
|
16737
|
-
strokeWidth: "2",
|
|
16738
|
-
strokeLinecap: "round",
|
|
16739
|
-
strokeLinejoin: "round"
|
|
16740
|
-
}
|
|
16741
|
-
) }) : /* @__PURE__ */ jsxs("svg", { width: "12", height: "12", viewBox: "0 0 16 16", fill: "none", children: [
|
|
16742
|
-
/* @__PURE__ */ jsx(
|
|
16743
|
-
"rect",
|
|
16744
|
-
{
|
|
16745
|
-
x: "5",
|
|
16746
|
-
y: "5",
|
|
16747
|
-
width: "8",
|
|
16748
|
-
height: "9",
|
|
16749
|
-
rx: "1.5",
|
|
16750
|
-
stroke: "currentColor",
|
|
16751
|
-
strokeWidth: "1.5"
|
|
16752
|
-
}
|
|
16753
|
-
),
|
|
16754
|
-
/* @__PURE__ */ jsx(
|
|
16755
|
-
"path",
|
|
16756
|
-
{
|
|
16757
|
-
d: "M3 11V3.5A1.5 1.5 0 0 1 4.5 2H11",
|
|
16758
|
-
stroke: "currentColor",
|
|
16759
|
-
strokeWidth: "1.5",
|
|
16760
|
-
strokeLinecap: "round"
|
|
16761
|
-
}
|
|
16762
|
-
)
|
|
16763
|
-
] })
|
|
16764
|
-
}
|
|
16765
|
-
) }),
|
|
16766
|
-
/* @__PURE__ */ jsx(TooltipContentBase, { sideOffset: 6, className: "z-[10001]", children: copied ? "Copiado!" : "Copiar" })
|
|
16767
|
-
] }) });
|
|
16768
|
-
};
|
|
16769
|
-
var propertyLabels = {
|
|
16770
|
-
Nome: "Nome",
|
|
16771
|
-
tipo: "Tipo",
|
|
16772
|
-
Tipo: "Tipo",
|
|
16773
|
-
Protocolos: "Protocolos",
|
|
16774
|
-
Ambiente: "Ambiente",
|
|
16775
|
-
Setor: "Setor",
|
|
16776
|
-
Contato: "Contato",
|
|
16777
|
-
Sustentacao: "Sustenta\xE7\xE3o",
|
|
16778
|
-
Destino: "Destino",
|
|
16779
|
-
Origem: "Origem"
|
|
16780
|
-
};
|
|
16781
|
-
var IntegrationCard = ({ title, details }) => {
|
|
16782
|
-
const titleRef = useRef(null);
|
|
16783
|
-
const isTitleTruncated = useIsTruncated(titleRef);
|
|
16784
|
-
const blackList = ["id", "elementId", "identity"];
|
|
16785
|
-
const entries = details ? Object.entries(details).filter(
|
|
16786
|
-
([key, value]) => value !== void 0 && value !== null && value !== "" && !blackList.includes(key)
|
|
16787
|
-
) : [];
|
|
16788
|
-
return /* @__PURE__ */ jsxs("div", { className: "rounded-sm border border-border/40 bg-muted/20 overflow-hidden", children: [
|
|
16789
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 py-2 border-b border-border/30", children: [
|
|
16790
|
-
/* @__PURE__ */ jsx(TooltipProviderBase, { children: /* @__PURE__ */ jsxs(TooltipBase, { children: [
|
|
16791
|
-
/* @__PURE__ */ jsx(TooltipTriggerBase, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
16792
|
-
"span",
|
|
16793
|
-
{
|
|
16794
|
-
ref: titleRef,
|
|
16795
|
-
className: "text-sm font-bold text-foreground truncate flex-1 cursor-default",
|
|
16796
|
-
children: title
|
|
16797
|
-
}
|
|
16798
|
-
) }),
|
|
16799
|
-
isTitleTruncated && /* @__PURE__ */ jsx(TooltipContentBase, { sideOffset: 6, className: "z-[10001]", children: title })
|
|
16800
|
-
] }) }),
|
|
16801
|
-
entries.length > 0 && /* @__PURE__ */ jsx(
|
|
16802
|
-
CopyData,
|
|
16803
|
-
{
|
|
16804
|
-
value: entries.map(([k, v]) => `${propertyLabels[k] || k}: ${String(v)}`).join("\n")
|
|
16805
|
-
}
|
|
16806
|
-
)
|
|
16807
|
-
] }),
|
|
16808
|
-
entries.length > 0 && /* @__PURE__ */ jsx("div", { className: "divide-y divide-border/20", children: entries.map(([key, value]) => {
|
|
16809
|
-
const label = propertyLabels[key] || key;
|
|
16810
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 py-1.5", children: [
|
|
16811
|
-
/* @__PURE__ */ jsxs("span", { className: "text-xs font-semibold text-muted-foreground shrink-0 w-[40%] sm:w-[38%]", children: [
|
|
16812
|
-
label,
|
|
16813
|
-
":"
|
|
16814
|
-
] }),
|
|
16815
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-foreground break-all flex-1", children: String(value) })
|
|
16816
|
-
] }, key);
|
|
16817
|
-
}) })
|
|
16818
|
-
] });
|
|
16819
|
-
};
|
|
16820
|
-
var TooltipBodyComponent = ({ data, isLoading, connections, isInput, externalSystem }) => /* @__PURE__ */ jsxs("div", { className: "px-3 py-3 space-y-3 overflow-y-auto flex-1 [&::-webkit-scrollbar]:w-1 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:bg-muted-foreground/20 [&::-webkit-scrollbar-thumb]:rounded-full hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/40 transition-colors", children: [
|
|
16682
|
+
var TooltipBodyComponent = ({ data, isLoading, connections, isInput, externalSystem }) => /* @__PURE__ */ jsx(ScrollAreaBase, { className: "flex-1 min-h-0", children: /* @__PURE__ */ jsxs("div", { className: "px-3 py-3 space-y-3 max-w-xs", children: [
|
|
16821
16683
|
isLoading ? /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
16822
16684
|
/* @__PURE__ */ jsx(SkeletonBase, { className: "h-6 w-3/4" }),
|
|
16823
16685
|
/* @__PURE__ */ jsx(SkeletonBase, { className: "h-3.5 w-1/2" })
|
|
@@ -16840,7 +16702,7 @@ var TooltipBodyComponent = ({ data, isLoading, connections, isInput, externalSys
|
|
|
16840
16702
|
},
|
|
16841
16703
|
i
|
|
16842
16704
|
))
|
|
16843
|
-
] }) : connections.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground text-center
|
|
16705
|
+
] }) : connections.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground text-center", children: "Nenhuma conex\xE3o encontrada" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16844
16706
|
/* @__PURE__ */ jsx(
|
|
16845
16707
|
SystemsDiagram,
|
|
16846
16708
|
{
|
|
@@ -16850,8 +16712,8 @@ var TooltipBodyComponent = ({ data, isLoading, connections, isInput, externalSys
|
|
|
16850
16712
|
}
|
|
16851
16713
|
),
|
|
16852
16714
|
/* @__PURE__ */ jsx("div", { className: "border-t border-border/20" }),
|
|
16853
|
-
/* @__PURE__ */ jsx("div", { className: "flex items-center
|
|
16854
|
-
/* @__PURE__ */ jsx("div", {
|
|
16715
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center ", children: /* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold text-muted-foreground uppercase -mb-2", children: isInput ? "Informa\xE7\xF5es de Entrada" : "Informa\xE7\xF5es de Sa\xEDda" }) }),
|
|
16716
|
+
/* @__PURE__ */ jsx("div", { children: connections.map((conn) => /* @__PURE__ */ jsx(
|
|
16855
16717
|
IntegrationCard,
|
|
16856
16718
|
{
|
|
16857
16719
|
title: conn.name,
|
|
@@ -16860,7 +16722,7 @@ var TooltipBodyComponent = ({ data, isLoading, connections, isInput, externalSys
|
|
|
16860
16722
|
conn.id
|
|
16861
16723
|
)) })
|
|
16862
16724
|
] })
|
|
16863
|
-
] });
|
|
16725
|
+
] }) });
|
|
16864
16726
|
var TooltipBody = React32__default.memo(TooltipBodyComponent);
|
|
16865
16727
|
var tooltipVariants3 = {
|
|
16866
16728
|
hidden: {
|
|
@@ -16895,7 +16757,12 @@ var IntegrationTooltip = ({
|
|
|
16895
16757
|
const [dragging, setDragging] = useState(false);
|
|
16896
16758
|
const offsetRef = useRef({ x: 0, y: 0 });
|
|
16897
16759
|
const lastMouse = useRef({ x: 0, y: 0 });
|
|
16898
|
-
|
|
16760
|
+
const tooltipRef = useRef(null);
|
|
16761
|
+
const currentPosRef = useRef(position);
|
|
16762
|
+
useEffect(() => {
|
|
16763
|
+
currentPosRef.current = position;
|
|
16764
|
+
setLocalPos(position);
|
|
16765
|
+
}, [position]);
|
|
16899
16766
|
useEffect(() => {
|
|
16900
16767
|
let rafId = null;
|
|
16901
16768
|
const handleMouseMove = (e) => {
|
|
@@ -16909,13 +16776,18 @@ var IntegrationTooltip = ({
|
|
|
16909
16776
|
top: Math.max(0, Math.min(newTop, window.innerHeight - 200)),
|
|
16910
16777
|
left: Math.max(0, Math.min(newLeft, window.innerWidth - 320))
|
|
16911
16778
|
};
|
|
16912
|
-
|
|
16779
|
+
currentPosRef.current = p;
|
|
16780
|
+
if (tooltipRef.current) {
|
|
16781
|
+
tooltipRef.current.style.top = `${p.top}px`;
|
|
16782
|
+
tooltipRef.current.style.left = `${p.left}px`;
|
|
16783
|
+
}
|
|
16913
16784
|
onPositionChange?.(id, p);
|
|
16914
16785
|
});
|
|
16915
16786
|
};
|
|
16916
16787
|
const handleMouseUp = () => {
|
|
16917
16788
|
if (dragging) {
|
|
16918
16789
|
setDragging(false);
|
|
16790
|
+
setLocalPos(currentPosRef.current);
|
|
16919
16791
|
if (rafId) cancelAnimationFrame(rafId);
|
|
16920
16792
|
}
|
|
16921
16793
|
};
|
|
@@ -16977,7 +16849,7 @@ var IntegrationTooltip = ({
|
|
|
16977
16849
|
const header = /* @__PURE__ */ jsxs(
|
|
16978
16850
|
"div",
|
|
16979
16851
|
{
|
|
16980
|
-
className: "flex items-center justify-between py-1 border-b border-border/10 bg-muted/30 shrink-0",
|
|
16852
|
+
className: "flex items-center justify-between py-1 border-b border-border/10 bg-muted/30 shrink-0 max-w-lg",
|
|
16981
16853
|
onMouseDown: handleMouseDownLocal,
|
|
16982
16854
|
onTouchStart: handleTouchStartLocal,
|
|
16983
16855
|
style: {
|
|
@@ -17020,7 +16892,7 @@ var IntegrationTooltip = ({
|
|
|
17020
16892
|
/* @__PURE__ */ jsxs(
|
|
17021
16893
|
motion.div,
|
|
17022
16894
|
{
|
|
17023
|
-
className: "fixed bottom-0 left-0 right-0 z-[10000] bg-card border-t border-border/50 rounded-t-2xl shadow-2xl flex flex-col",
|
|
16895
|
+
className: "fixed bottom-0 left-0 right-0 z-[10000] bg-card border-t border-border/50 rounded-t-2xl shadow-2xl flex flex-col min-h-0",
|
|
17024
16896
|
style: { maxHeight: "85dvh" },
|
|
17025
16897
|
initial: { y: "100%" },
|
|
17026
16898
|
animate: { y: 0 },
|
|
@@ -17030,7 +16902,7 @@ var IntegrationTooltip = ({
|
|
|
17030
16902
|
children: [
|
|
17031
16903
|
/* @__PURE__ */ jsx("div", { className: "flex justify-center pt-2.5 pb-1 shrink-0", children: /* @__PURE__ */ jsx("div", { className: "w-10 h-1 rounded-full bg-border" }) }),
|
|
17032
16904
|
header,
|
|
17033
|
-
/* @__PURE__ */ jsx("div", { className: "overflow-y-auto flex-1 pb-[env(safe-area-inset-bottom)]", children: /* @__PURE__ */ jsx(TooltipBody, { ...bodyProps }) })
|
|
16905
|
+
/* @__PURE__ */ jsx("div", { className: "overflow-y-auto flex-1 min-h-0 pb-[env(safe-area-inset-bottom)] max-w-xs", children: /* @__PURE__ */ jsx(TooltipBody, { ...bodyProps }) })
|
|
17034
16906
|
]
|
|
17035
16907
|
},
|
|
17036
16908
|
`sheet-${id}`
|
|
@@ -17040,6 +16912,7 @@ var IntegrationTooltip = ({
|
|
|
17040
16912
|
return /* @__PURE__ */ jsx(AnimatePresence, { children: /* @__PURE__ */ jsxs(
|
|
17041
16913
|
motion.div,
|
|
17042
16914
|
{
|
|
16915
|
+
ref: tooltipRef,
|
|
17043
16916
|
className: "fixed bg-card/95 backdrop-blur-md border border-border/50 rounded-lg shadow-2xl z-[10000] w-[calc(100vw-32px)] max-w-sm sm:w-80 overflow-hidden flex flex-col",
|
|
17044
16917
|
variants: tooltipVariants3,
|
|
17045
16918
|
initial: "hidden",
|
|
@@ -17049,7 +16922,7 @@ var IntegrationTooltip = ({
|
|
|
17049
16922
|
onClick: (e) => e.stopPropagation(),
|
|
17050
16923
|
children: [
|
|
17051
16924
|
header,
|
|
17052
|
-
/* @__PURE__ */ jsx("div", { className: "max-h-[60vh] sm:max-h-[520px] overflow-hidden flex flex-col", children: /* @__PURE__ */ jsx(TooltipBody, { ...bodyProps }) })
|
|
16925
|
+
/* @__PURE__ */ jsx("div", { className: "max-h-[60vh] sm:max-h-[520px] overflow-hidden flex flex-col min-h-0", children: /* @__PURE__ */ jsx(TooltipBody, { ...bodyProps }) })
|
|
17053
16926
|
]
|
|
17054
16927
|
},
|
|
17055
16928
|
id
|
|
@@ -19976,11 +19849,9 @@ var ZoomImage = React32.forwardRef(
|
|
|
19976
19849
|
const mouseY = useMotionValue(50);
|
|
19977
19850
|
const zoomLevel = useMotionValue(1);
|
|
19978
19851
|
const springConfig = { damping: 20, stiffness: 150, mass: 0.5 };
|
|
19979
|
-
const smoothMouseX = useSpring(mouseX, springConfig);
|
|
19980
|
-
const smoothMouseY = useSpring(mouseY, springConfig);
|
|
19981
19852
|
const smoothZoomLevel = useSpring(zoomLevel, springConfig);
|
|
19982
19853
|
const transformOrigin = useTransform(
|
|
19983
|
-
[
|
|
19854
|
+
[mouseX, mouseY],
|
|
19984
19855
|
([latestX, latestY]) => `${latestX}% ${latestY}%`
|
|
19985
19856
|
);
|
|
19986
19857
|
const touchStartDist = React32.useRef(0);
|
|
@@ -20082,7 +19953,7 @@ var ZoomImage = React32.forwardRef(
|
|
|
20082
19953
|
{
|
|
20083
19954
|
src,
|
|
20084
19955
|
alt,
|
|
20085
|
-
className: cn("w-full h-full object-
|
|
19956
|
+
className: cn("w-full h-full object-contain", imageClassName),
|
|
20086
19957
|
style: {
|
|
20087
19958
|
borderRadius: `${borderRadius}px`,
|
|
20088
19959
|
transformOrigin,
|
|
@@ -20251,44 +20122,6 @@ var Lens = ({
|
|
|
20251
20122
|
}
|
|
20252
20123
|
);
|
|
20253
20124
|
};
|
|
20254
|
-
var carouselThemes = {
|
|
20255
|
-
malwee: {
|
|
20256
|
-
foreground: "text-[#222222]",
|
|
20257
|
-
primary: "bg-[#0b5430]",
|
|
20258
|
-
primaryForeground: "text-white",
|
|
20259
|
-
muted: "bg-[#f0eacc]",
|
|
20260
|
-
mutedForeground: "text-[#6b665c]",
|
|
20261
|
-
border: "!border-[#0b5430]",
|
|
20262
|
-
font: "font-[family-name:var(--font-playfair)]"
|
|
20263
|
-
},
|
|
20264
|
-
enfim: {
|
|
20265
|
-
foreground: "text-black",
|
|
20266
|
-
primary: "bg-black",
|
|
20267
|
-
primaryForeground: "text-white",
|
|
20268
|
-
muted: "bg-gray-100",
|
|
20269
|
-
mutedForeground: "text-gray-600",
|
|
20270
|
-
border: "!border-black",
|
|
20271
|
-
font: "font-[family-name:var(--font-libre-caslon)]"
|
|
20272
|
-
},
|
|
20273
|
-
carinhoso: {
|
|
20274
|
-
foreground: "text-[#222222]",
|
|
20275
|
-
primary: "bg-[#d9d0c0]",
|
|
20276
|
-
primaryForeground: "text-[#222222]",
|
|
20277
|
-
muted: "bg-[#e2ddd6]",
|
|
20278
|
-
mutedForeground: "text-[#5e5b56]",
|
|
20279
|
-
border: "!border-[#d9d0c0]",
|
|
20280
|
-
font: "font-[family-name:var(--font-josefin)]"
|
|
20281
|
-
},
|
|
20282
|
-
"malwee-kids": {
|
|
20283
|
-
foreground: "text-[#005bbf]",
|
|
20284
|
-
primary: "bg-[#005bbf]",
|
|
20285
|
-
primaryForeground: "text-white",
|
|
20286
|
-
muted: "bg-[#fcf5c2]",
|
|
20287
|
-
mutedForeground: "text-[#004a9e]",
|
|
20288
|
-
border: "!border-[#005bbf]",
|
|
20289
|
-
font: "font-[family-name:var(--font-poppins)]"
|
|
20290
|
-
}
|
|
20291
|
-
};
|
|
20292
20125
|
function CarouselSkeleton({ className }) {
|
|
20293
20126
|
return /* @__PURE__ */ jsx("div", { className: cn("w-full h-full lg:p-10 sm:p-4 p-2", className), children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-3 h-full", children: /* @__PURE__ */ jsx("div", { className: "relative overflow-hidden rounded-lg h-full", children: /* @__PURE__ */ jsxs("div", { className: "w-full h-full min-h-[300px] bg-muted rounded-lg overflow-hidden relative", children: [
|
|
20294
20127
|
/* @__PURE__ */ jsx(
|
|
@@ -20369,7 +20202,8 @@ function CarouselBase({
|
|
|
20369
20202
|
zoomEffect = null,
|
|
20370
20203
|
download = false,
|
|
20371
20204
|
isLoading = false,
|
|
20372
|
-
onChange
|
|
20205
|
+
onChange,
|
|
20206
|
+
fernando
|
|
20373
20207
|
}) {
|
|
20374
20208
|
const isMobile = useIsMobile();
|
|
20375
20209
|
const [index, setIndex] = useState(0);
|
|
@@ -20391,9 +20225,6 @@ function CarouselBase({
|
|
|
20391
20225
|
emblaApi.off("reInit", onSelect);
|
|
20392
20226
|
};
|
|
20393
20227
|
}, [emblaApi, onChange]);
|
|
20394
|
-
const currentItem = items[index];
|
|
20395
|
-
const themeKey = currentItem?.theme || "malwee";
|
|
20396
|
-
const currentTheme = carouselThemes[themeKey] || carouselThemes.malwee;
|
|
20397
20228
|
useEffect(() => {
|
|
20398
20229
|
if (!autoPlay || items.length <= 1 || !emblaApi) return;
|
|
20399
20230
|
const interval = setInterval(() => {
|
|
@@ -20405,14 +20236,14 @@ function CarouselBase({
|
|
|
20405
20236
|
if (isDownloading) return;
|
|
20406
20237
|
setIsDownloading(true);
|
|
20407
20238
|
setDownloadSuccess(false);
|
|
20408
|
-
const
|
|
20239
|
+
const currentItem = items[index];
|
|
20409
20240
|
try {
|
|
20410
|
-
const response = await fetch(
|
|
20241
|
+
const response = await fetch(currentItem.url);
|
|
20411
20242
|
const blob = await response.blob();
|
|
20412
20243
|
const url = window.URL.createObjectURL(blob);
|
|
20413
20244
|
const link = document.createElement("a");
|
|
20414
20245
|
link.href = url;
|
|
20415
|
-
link.download =
|
|
20246
|
+
link.download = currentItem.title || "image";
|
|
20416
20247
|
document.body.appendChild(link);
|
|
20417
20248
|
link.click();
|
|
20418
20249
|
document.body.removeChild(link);
|
|
@@ -20448,8 +20279,6 @@ function CarouselBase({
|
|
|
20448
20279
|
transition: { duration: 0.4 },
|
|
20449
20280
|
className: cn(
|
|
20450
20281
|
"w-full lg:p-10 sm:p-4 p-2 transition-colors duration-500",
|
|
20451
|
-
currentTheme.foreground,
|
|
20452
|
-
currentTheme.font,
|
|
20453
20282
|
className
|
|
20454
20283
|
),
|
|
20455
20284
|
style: { width },
|
|
@@ -20475,7 +20304,7 @@ function CarouselBase({
|
|
|
20475
20304
|
src: item.url,
|
|
20476
20305
|
alt: item.title,
|
|
20477
20306
|
className: cn(
|
|
20478
|
-
"w-full h-full object-
|
|
20307
|
+
"w-full h-full object-contain rounded-lg select-none pointer-events-none",
|
|
20479
20308
|
imageClassName
|
|
20480
20309
|
),
|
|
20481
20310
|
draggable: false
|
|
@@ -20486,7 +20315,7 @@ function CarouselBase({
|
|
|
20486
20315
|
src: item.url,
|
|
20487
20316
|
alt: item.title,
|
|
20488
20317
|
className: cn(
|
|
20489
|
-
"w-full h-full object-
|
|
20318
|
+
"w-full h-full object-contain rounded-lg select-none pointer-events-none",
|
|
20490
20319
|
imageClassName
|
|
20491
20320
|
),
|
|
20492
20321
|
draggable: false
|
|
@@ -20589,9 +20418,9 @@ function CarouselBase({
|
|
|
20589
20418
|
className: cn(
|
|
20590
20419
|
"absolute left-4 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full flex items-center justify-center shadow-lg transition-all z-50",
|
|
20591
20420
|
!emblaApi?.canScrollPrev() ? "opacity-40 cursor-not-allowed" : "hover:scale-110 hover:opacity-100 opacity-70",
|
|
20592
|
-
|
|
20593
|
-
currentTheme.primaryForeground
|
|
20421
|
+
"bg-primary text-primary-foreground"
|
|
20594
20422
|
),
|
|
20423
|
+
style: fernando ? { backgroundColor: fernando } : void 0,
|
|
20595
20424
|
children: /* @__PURE__ */ jsx(
|
|
20596
20425
|
"svg",
|
|
20597
20426
|
{
|
|
@@ -20623,9 +20452,9 @@ function CarouselBase({
|
|
|
20623
20452
|
className: cn(
|
|
20624
20453
|
"absolute right-4 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full flex items-center justify-center shadow-lg transition-all z-50",
|
|
20625
20454
|
!emblaApi?.canScrollNext() ? "opacity-40 cursor-not-allowed" : "hover:scale-110 hover:opacity-100 opacity-70",
|
|
20626
|
-
|
|
20627
|
-
currentTheme.primaryForeground
|
|
20455
|
+
"bg-primary text-primary-foreground"
|
|
20628
20456
|
),
|
|
20457
|
+
style: fernando ? { backgroundColor: fernando } : void 0,
|
|
20629
20458
|
children: /* @__PURE__ */ jsx(
|
|
20630
20459
|
"svg",
|
|
20631
20460
|
{
|
|
@@ -20656,12 +20485,9 @@ function CarouselBase({
|
|
|
20656
20485
|
onMouseDown: (e) => e.stopPropagation(),
|
|
20657
20486
|
className: cn(
|
|
20658
20487
|
"h-2 rounded-full transition-all duration-300",
|
|
20659
|
-
i === index ? cn("w-8
|
|
20660
|
-
|
|
20661
|
-
|
|
20662
|
-
"opacity-40"
|
|
20663
|
-
)
|
|
20664
|
-
)
|
|
20488
|
+
i === index ? cn("w-8 bg-primary") : cn("w-2 hover:opacity-80 bg-primary opacity-40")
|
|
20489
|
+
),
|
|
20490
|
+
style: fernando ? { backgroundColor: fernando } : void 0
|
|
20665
20491
|
},
|
|
20666
20492
|
i
|
|
20667
20493
|
)) })
|
|
@@ -20850,9 +20676,9 @@ function RadialMenu({
|
|
|
20850
20676
|
}
|
|
20851
20677
|
function ControlledCombobox({
|
|
20852
20678
|
items,
|
|
20853
|
-
|
|
20854
|
-
|
|
20855
|
-
|
|
20679
|
+
value,
|
|
20680
|
+
onChange,
|
|
20681
|
+
placeholder = "Selecione uma op\xE7\xE3o",
|
|
20856
20682
|
disabled = false,
|
|
20857
20683
|
keepOpen = false,
|
|
20858
20684
|
searchPlaceholder,
|
|
@@ -20862,7 +20688,6 @@ function ControlledCombobox({
|
|
|
20862
20688
|
labelClassname,
|
|
20863
20689
|
testIds = {},
|
|
20864
20690
|
onClear,
|
|
20865
|
-
hasSelected = false,
|
|
20866
20691
|
hideClear = false,
|
|
20867
20692
|
onSearchChange,
|
|
20868
20693
|
search,
|
|
@@ -20870,6 +20695,11 @@ function ControlledCombobox({
|
|
|
20870
20695
|
loading = false
|
|
20871
20696
|
}) {
|
|
20872
20697
|
const [open, setOpen] = useState(false);
|
|
20698
|
+
const selectedItem = items.find((item) => item.value === value);
|
|
20699
|
+
const renderSelected = selectedItem?.label ?? placeholder;
|
|
20700
|
+
const hasSelected = Boolean(value);
|
|
20701
|
+
const checkIsSelected = (v) => v === value;
|
|
20702
|
+
const handleSelection = (v) => onChange?.(v);
|
|
20873
20703
|
return /* @__PURE__ */ jsxs(
|
|
20874
20704
|
"div",
|
|
20875
20705
|
{
|
|
@@ -20899,12 +20729,13 @@ function ControlledCombobox({
|
|
|
20899
20729
|
"aria-disabled": disabled || void 0,
|
|
20900
20730
|
disabled,
|
|
20901
20731
|
className: cn(
|
|
20902
|
-
`flex items-center gap-2 justify-between [&>div]:line-clamp-1 relative h-9 no-active-animation`,
|
|
20903
|
-
error && "border-red-500"
|
|
20732
|
+
`flex items-center gap-2 justify-between [&>div]:line-clamp-1 relative h-9 no-active-animation font-light`,
|
|
20733
|
+
error && "border-red-500",
|
|
20734
|
+
placeholder && !hasSelected && "text-muted-foreground"
|
|
20904
20735
|
),
|
|
20905
20736
|
"data-testid": testIds.trigger ?? "combobox-trigger",
|
|
20906
20737
|
children: [
|
|
20907
|
-
renderSelected,
|
|
20738
|
+
/* @__PURE__ */ jsx("div", { className: "truncate min-w-0", children: renderSelected }),
|
|
20908
20739
|
/* @__PURE__ */ jsx(motion.span, { className: "flex items-center", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-row gap-0 items-center ", children: [
|
|
20909
20740
|
hasSelected && onClear && !disabled && !hideClear && /* @__PURE__ */ jsx(
|
|
20910
20741
|
ClearButton,
|
|
@@ -20942,9 +20773,9 @@ function ControlledCombobox({
|
|
|
20942
20773
|
{
|
|
20943
20774
|
className: "dark:text-white hover:bg-rsecondary focus:ring-0 focus:outline-none",
|
|
20944
20775
|
"data-testid": testIds.command ?? "combobox-command",
|
|
20945
|
-
filter: onSearchChange ? () => 1 : (
|
|
20946
|
-
const
|
|
20947
|
-
if (
|
|
20776
|
+
filter: onSearchChange ? () => 1 : (itemValue, search2) => {
|
|
20777
|
+
const itemLabel = items.find((item) => item.value === itemValue)?.label || itemValue;
|
|
20778
|
+
if (itemLabel.toLowerCase().includes(search2.toLowerCase()))
|
|
20948
20779
|
return 1;
|
|
20949
20780
|
return 0;
|
|
20950
20781
|
},
|
|
@@ -20976,9 +20807,9 @@ function ControlledCombobox({
|
|
|
20976
20807
|
{
|
|
20977
20808
|
keywords: [item.label],
|
|
20978
20809
|
value: item.value,
|
|
20979
|
-
onSelect: (
|
|
20810
|
+
onSelect: () => {
|
|
20980
20811
|
if (disabled) return;
|
|
20981
|
-
handleSelection(value);
|
|
20812
|
+
handleSelection(item.value);
|
|
20982
20813
|
if (!keepOpen) setOpen(false);
|
|
20983
20814
|
},
|
|
20984
20815
|
disabled,
|
|
@@ -20995,7 +20826,7 @@ function ControlledCombobox({
|
|
|
20995
20826
|
stiffness: 500,
|
|
20996
20827
|
damping: 30
|
|
20997
20828
|
},
|
|
20998
|
-
className: "ml-auto
|
|
20829
|
+
className: "ml-auto",
|
|
20999
20830
|
children: /* @__PURE__ */ jsx(
|
|
21000
20831
|
CheckIcon,
|
|
21001
20832
|
{
|
|
@@ -21031,4 +20862,4 @@ function ControlledCombobox({
|
|
|
21031
20862
|
);
|
|
21032
20863
|
}
|
|
21033
20864
|
|
|
21034
|
-
export { AddButton, Agenda, AgendaDaysToShow, AgendaDaysToShowAgenda, AgendaView, AlertDialogActionBase, AlertDialogBase, AlertDialogCancelBase, AlertDialogContentBase, AlertDialogDescriptionBase, AlertDialogFooterBase, AlertDialogHeaderBase, AlertDialogOverlayBase, AlertDialogPortalBase, AlertDialogTitleBase, AlertDialogTriggerBase, AvatarBase, AvatarCombobox, AvatarFallbackBase, AvatarImageBase, BackButton, Badge,
|
|
20865
|
+
export { AddButton, Agenda, AgendaDaysToShow, AgendaDaysToShowAgenda, AgendaView, AlertDialogActionBase, AlertDialogBase, AlertDialogCancelBase, AlertDialogContentBase, AlertDialogDescriptionBase, AlertDialogFooterBase, AlertDialogHeaderBase, AlertDialogOverlayBase, AlertDialogPortalBase, AlertDialogTitleBase, AlertDialogTriggerBase, AvatarBase, AvatarCombobox, AvatarFallbackBase, AvatarImageBase, BackButton, Badge, BreadcrumbBase, BreadcrumbEllipsisBase, BreadcrumbItemBase, BreadcrumbLinkBase, BreadcrumbListBase, BreadcrumbPageBase, BreadcrumbSeparatorBase, Brush_default as Brush, ButtonBase, ButtonGroupBase, CENTER_INDEX, CalendarBase, CalendarDndProvider, CalendarDndProviderAgenda, CardBase, CardContentBase, CardDescriptionBase, CardFooterBase, CardHeaderBase, CardTitleBase, CarouselBase, ChangeButton, Chart_default as Chart, ChartControls, ChartHeader, ChartTotalLegend_default as ChartTotalLegend, CheckButton, CheckboxBase, CheckboxTree, CloseAllButton_default as CloseAllButton, CloseButton, CodeBlock, CollapsibleBase, CollapsibleContentBase, CollapsibleTriggerBase, Combobox, CommandBase, CommandDebouncedInputBase, CommandDialogBase, CommandEmptyBase, CommandGroupBase, CommandInputBase, CommandItemBase, CommandListBase, CommandSeparatorBase, CommandShortcutBase, ContextMenuBase, ContextMenuCheckboxItemBase, ContextMenuContentBase, ContextMenuGroupBase, ContextMenuItemBase, ContextMenuLabelBase, ContextMenuPortalBase, ContextMenuRadioGroupBase, ContextMenuRadioItemBase, ContextMenuSeparatorBase, ContextMenuShortcutBase, ContextMenuSubBase, ContextMenuSubContentBase, ContextMenuSubTriggerBase, ContextMenuTriggerBase, ControlledCombobox, CopyButton, DateTimePicker, DayView, DayViewAgenda, DebouncedInput, DefaultEndHour, DefaultEndHourAgenda, DefaultStartHour, DefaultStartHourAgenda, DestructiveDialog, DialogBase, DialogCloseBase, DialogContentBase, DialogDescriptionBase, DialogFooterBase, DialogHeaderBase, DialogOverlayBase, DialogPortalBase, DialogTitleBase, DialogTriggerBase, DownloadButton, DraggableEvent2 as DraggableEvent, DraggableTooltip_default as DraggableTooltip, DrawerBase, DrawerCloseBase, DrawerContentBase, DrawerDescriptionBase, DrawerFooterBase, DrawerHeaderBase, DrawerOverlayBase, DrawerPortalBase, DrawerTitleBase, DrawerTriggerBase, DropDownMenuBase, DropDownMenuCheckboxItemBase, DropDownMenuContentBase, DropDownMenuGroupBase, DropDownMenuItemBase, DropDownMenuLabelBase, DropDownMenuPortalBase, DropDownMenuRadioGroupBase, DropDownMenuRadioItemBase, DropDownMenuSeparatorBase, DropDownMenuShortcutBase, DropDownMenuSubBase, DropDownMenuSubContentBase, DropDownMenuSubTriggerBase, DropDownMenuTriggerBase, DroppableCell, DroppableCellAgenda, EditButton, EndHour, EndHourAgenda, ErrorMessage_default as ErrorMessage, EventAgenda, EventCalendar, EventDetailModalAgenda, EventDialog, EventGap, EventGapAgenda, EventHeight, EventHeightAgenda, EventItem, EventItemAgenda, EventsPopup, FavoriteButton, FileAccept, FileUploader, FilterButton, HideButton, Highlights_default as Highlights, HorizontalChart_default as HorizontalChart, HorizontalLegend_default as HorizontalLegend, HoverCardBase, HoverCardContentBase, HoverCardTriggerBase, ITEM_HEIGHT, InputBase, InputOTPBase, InputOTPGroupBase, InputOTPSeparatorBase, InputOTPSlotBase, IntegrationTooltip_default as IntegrationTooltip, LabelBase_default as LabelBase, Leaderboard, LikeButton, LoadingBase, LockButton, ModalBase, ModalCloseBase, ModalContentBase, ModalDescriptionBase, ModalFooterBase, ModalHeaderBase, ModalOverlayBase, ModalPortalBase, ModalTitleBase, ModalTriggerBase, ModeToggleBase, MonthView, MonthViewAgenda, MoreButton, MultiCombobox, MultiDayOverlay, MultiSelect, MultiSelectBase, MultiSelectContentBase, MultiSelectGroupBase, MultiSelectItemBase, MultiSelectSeparatorBase, MultiSelectTriggerBase, MultiSelectValueBase, NavigationMenuBase, NavigationMenuContentBase, NavigationMenuIndicatorBase, NavigationMenuItemBase, NavigationMenuLinkBase, NavigationMenuListBase, NavigationMenuTriggerBase, NavigationMenuViewportBase, NoData_default as NoData, NotificationButton, NumericInput, PeriodsDropdown_default as PeriodsDropdown, PopoverAnchorBase, PopoverBase, PopoverContentBase, PopoverTriggerBase, ProgressBase, ProgressCirclesBase, ProgressPanelsBase, ProgressSegmentsBase, RadialMenu, RangePicker, RefreshButton, SaveButton, ScrollAreaBase, ScrollBarBase, SearchButton, Select, SelectBase, SelectContentBase, SelectEmpty, SelectGroupBase, SelectItemBase, SelectLabelBase, SelectScrollDownButtonBase, SelectScrollUpButtonBase, SelectSeparatorBase, SelectTriggerBase, SelectValueBase, SeparatorBase, SettingsButton, SheetBase, SheetCloseBase, SheetContentBase, SheetDescriptionBase, SheetFooterBase, SheetHeaderBase, SheetOverlayBase, SheetPortalBase, SheetTitleBase, SheetTriggerBase, ShowOnly_default as ShowOnly, SidebarBase, SidebarContentBase, SidebarFooterBase, SidebarGroupActionBase, SidebarGroupBase, SidebarGroupContentBase, SidebarGroupLabelBase, SidebarHeaderBase, SidebarInputBase, SidebarInsetBase, SidebarMenuActionBase, SidebarMenuBadgeBase, SidebarMenuBase, SidebarMenuButtonBase, SidebarMenuItemBase, SidebarMenuSkeletonBase, SidebarMenuSubBase, SidebarMenuSubButtonBase, SidebarMenuSubItemBase, SidebarProviderBase, SidebarRailBase, SidebarSeparatorBase, SidebarTriggerBase, SkeletonBase, SlideBase, StartHour, StartHourAgenda, StatusIndicator, SwitchBase, SystemTooltip_default as SystemTooltip, TableBase, TableBodyBase, TableCaptionBase, TableCellBase, TableFooterBase, TableHeadBase, TableHeaderBase, TableRowBase, TabsBase, TabsContentBase, TabsListBase, TabsTriggerBase, TextAreaBase, ThemeProviderBase, TimePicker, TimePickerInput, TimeSeries_default as TimeSeries, Toaster, TooltipBase, TooltipContentBase, TooltipProviderBase, TooltipSimple_default as TooltipSimple, TooltipTriggerBase, TooltipWithTotal_default as TooltipWithTotal, UndatedEvents, UniversalTooltipRenderer, UnlockButton, UploadButton, UseSideBarBase, VISIBLE_ITEMS, ViewButton, VisibilityButton, WeekCellsHeight, WeekCellsHeightAgenda, WeekView, WeekViewAgenda, YearViewAgenda, adaptDataForTooltip, addHoursToDate, addHoursToDateAgenda, addMinutesToDateAgenda, badgeVariants, buttonVariantsBase, compactTick, computeChartWidth, computeNiceMax, computeYAxisTickWidth, convert12HourTo24Hour, createValueFormatter, createYTickFormatter, detectDataFields, detectXAxis, display12HourValue, formatDurationAgenda, formatDurationAgendaDays, formatFieldName, formatLinePercentage, generateAdditionalColors, generateColorMap, getAgendaEventsForDay, getAgendaEventsForDayAgenda, getAllEventsForDay, getAllEventsForDayAgenda, getArrowByType, getAutoColorAgenda, getBorderRadiusClasses, getBorderRadiusClassesAgenda, getDateByType, getEventColorClasses, getEventColorClassesAgenda, getEventEndDate, getEventStartDate, getEventsForDay, getEventsForDayAgenda, getItems, getMaxDataValue, getMinDataValue, getSpanningEventsForDay, getSpanningEventsForDayAgenda, getValid12Hour, getValidArrow12Hour, getValidArrowHour, getValidArrowMinuteOrSecond, getValidArrowNumber, getValidHour, getValidMinuteOrSecond, getValidNumber, isMultiDayEvent, isMultiDayEventAgenda, isValid12Hour, isValidHour, isValidMinuteOrSecond, niceCeil, normalizeAttendDate, processIntegrationData, processNeo4jData, renderInsideBarLabel, pillLabelRenderer_default as renderPillLabel, resolveChartMargins, resolveContainerPaddingLeft, set12Hours, setDateByType, setHours, setMinutes, setSeconds, sortEvents, sortEventsAgenda, toast, useBiaxial, useCalendarDnd, useCalendarDndAgenda, useChartClick, useChartDimensions, useChartHighlights, useChartLayout, useChartMinMax, useChartTooltips, useCurrentTimeIndicator, useCurrentTimeIndicatorAgenda, useDrag, useEventVisibility, useEventVisibilityAgenda, useIsMobile, useOpenTooltipForPeriod, useProcessedData, useSeriesOpacity, useTheme, useTimeSeriesRange, visualForItem };
|