@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.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, CopyIcon, 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, ArrowRight, ArrowUpRightIcon, ArrowDownRightIcon, FunnelSimpleIcon, PencilIcon, FileArchiveIcon, TerminalIcon, CodeIcon, CalendarDotIcon as CalendarDotIcon$1, DesktopIcon } from '@phosphor-icons/react';
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 overflow-hidden rounded-lg bg-primary px-3 py-2 text-sm text-primary-foreground",
1523
- "shadow-lg border border-primary/20",
1524
- "animate-in fade-in-0 zoom-in-95 duration-200 ease-out",
1525
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-150",
1526
- "data-[side=bottom]:slide-in-from-top-2",
1527
- "data-[side=left]:slide-in-from-right-2",
1528
- "data-[side=right]:slide-in-from-left-2",
1529
- "data-[side=top]:slide-in-from-bottom-2",
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-primary" })
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-gray-500"
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 items2 = containerElement.querySelectorAll(
2678
+ const badgeItems = containerElement.querySelectorAll(
2679
2679
  "[data-selected-item]"
2680
2680
  );
2681
2681
  if (overflowElement != null) overflowElement.style.display = "none";
2682
- items2.forEach((child) => child.style.removeProperty("display"));
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 = items2.length - 1; i >= 0; i--) {
2685
- const child = items2[i];
2686
- if (containerElement.scrollWidth <= containerElement.clientWidth) {
2687
- break;
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?.style.removeProperty("display");
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
- if (resizeObserverRef.current) {
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 border-border",
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
- Badge,
2773
- {
2774
- style: {
2775
- display: overflowAmount > 0 && !shouldWrap ? "block" : "none"
2776
- },
2777
- ref: overflowRef,
2778
- children: [
2779
- "+",
2780
- overflowAmount
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 isSelected = selectedValues.has(value);
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(motion.div, { transition: { duration: 0.1 }, children: [
2858
- /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(
2859
- motion.div,
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
- initial: { scale: 0 },
2862
- animate: { scale: isSelected ? 1 : 0 },
2863
- transition: { type: "spring", stiffness: 500, damping: 30 },
2864
- children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" })
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 FileTypes = {
3650
- Image: ["image/*", ".jpeg", ".jpg", ".png", ".gif", ".webp", ".svg"],
3651
- Document: [".pdf", ".doc", ".docx", ".txt", ".rtf"],
3652
- Spreadsheet: [".xls", ".xlsx", ".csv"],
3653
- Presentation: [".ppt", ".pptx"],
3654
- Video: ["video/*", ".mp4", ".webm", ".mkv", ".avi"],
3655
- Audio: ["audio/*", ".mp3", ".wav", ".ogg"],
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
- return filename.slice((filename.lastIndexOf(".") - 1 >>> 0) + 2);
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
- return new Promise((resolve) => {
3707
- if (!file.type.startsWith("image/")) {
3708
- resolve(null);
3709
- return;
3710
- }
3711
- const reader = new FileReader();
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 = FileTypes.All,
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((file) => {
3748
- if (file.preview) {
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
- const maxSizeBytes = maxSize * 1024 * 1024;
3756
- if (file.size > maxSizeBytes) {
3757
- return `Arquivo muito grande. M\xE1ximo: ${maxSize} MB`;
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 fileWithPreview = file;
3779
- fileWithPreview.id = `${file.name}-${Date.now()}-${Math.random()}`;
3780
- const error = validateFile(file);
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
- fileWithPreview.preview = preview;
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 fileWithPreview;
3807
+ return f;
3795
3808
  };
3796
3809
  const handleFiles = async (newFiles) => {
3797
3810
  if (disabled) return;
3798
- const availableSlots = maxFiles - files.length;
3799
- const filesToAdd = multiple ? newFiles.slice(0, availableSlots) : [newFiles[0]];
3800
- const filesWithPreview = await Promise.all(
3801
- filesToAdd.map((file) => createFileWithPreview(file))
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 updatedFiles = multiple ? [...files, ...filesWithPreview] : filesWithPreview;
3804
- setFiles(updatedFiles);
3805
- onValueChange(updatedFiles);
3816
+ const updated = multiple ? [...files, ...processed] : processed;
3817
+ setFiles(updated);
3818
+ onValueChange(updated);
3806
3819
  if (onUpload) {
3807
- const validFiles = filesWithPreview.filter((f) => !f.error);
3808
- if (validFiles.length > 0) {
3820
+ const valid = processed.filter((f) => !f.error);
3821
+ if (valid.length > 0) {
3809
3822
  try {
3810
- await onUpload(validFiles);
3811
- } catch (error) {
3812
- console.error("Erro no upload:", error);
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 && e.dataTransfer.items.length > 0) {
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) return;
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 fileToRemove = files.find((f) => f.id === fileId);
3854
- if (fileToRemove?.preview) {
3855
- URL.revokeObjectURL(fileToRemove.preview);
3856
- }
3857
- const updatedFiles = files.filter((f) => f.id !== fileId);
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 acceptString = accept.join(",");
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: handleClick,
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: acceptString,
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: cn(
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__ */ jsx(
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: /* @__PURE__ */ jsxs("div", { 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$1, { size: 16 })
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.map((conn) => /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
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.map((conn) => /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
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
- mo.observe(document.documentElement, {
16616
- attributes: true,
16617
- attributeFilter: ["class", "style"]
16618
- });
16619
- mo.observe(document.body, {
16620
- attributes: true,
16621
- attributeFilter: ["class", "style"]
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-3",
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 CopyData = ({ value }) => {
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 py-4", children: "Nenhuma conex\xE3o encontrada" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
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 gap-", children: /* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold text-muted-foreground uppercase", children: isInput ? "Informa\xE7\xF5es de Entrada" : "Informa\xE7\xF5es de Sa\xEDda" }) }),
16854
- /* @__PURE__ */ jsx("div", { className: "space-y-2", children: connections.map((conn) => /* @__PURE__ */ jsx(
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
- useEffect(() => setLocalPos(position), [position]);
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
- setLocalPos(p);
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
- [smoothMouseX, smoothMouseY],
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-cover", imageClassName),
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 currentItem2 = items[index];
20239
+ const currentItem = items[index];
20409
20240
  try {
20410
- const response = await fetch(currentItem2.url);
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 = currentItem2.title || "image";
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-cover rounded-lg select-none pointer-events-none",
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-cover rounded-lg select-none pointer-events-none",
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
- currentTheme.primary,
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
- currentTheme.primary,
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", currentTheme.primary) : cn(
20660
- "w-2 hover:opacity-80",
20661
- currentTheme.primary,
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
- renderSelected,
20854
- handleSelection,
20855
- checkIsSelected,
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 : (value, search2) => {
20946
- const label2 = items.find((item) => item.value === value)?.label || value;
20947
- if (label2.toLowerCase().includes(search2.toLowerCase()))
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: (value) => {
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, Beam, 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, CopyData, 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, FileTypes, 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, IntegrationCard, 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, NameTooltip, 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, SystemNode, SystemTooltip_default as SystemTooltip, SystemsDiagram, TableBase, TableBodyBase, TableCaptionBase, TableCellBase, TableFooterBase, TableHeadBase, TableHeaderBase, TableRowBase, TabsBase, TabsContentBase, TabsListBase, TabsTriggerBase, TextAreaBase, ThemeProviderBase, TimePicker, TimePickerInput, TimeSeries_default as TimeSeries, Toaster, TooltipBase, TooltipBody, 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, useIsTruncated, useOpenTooltipForPeriod, useProcessedData, useSeriesOpacity, useTheme, useTimeSeriesRange, visualForItem };
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 };