@mlw-packages/react-components 1.10.2 → 1.10.4

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
@@ -1532,7 +1532,7 @@ var TooltipContentBase = React32.forwardRef(
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-primary h-1.5 w-3" })
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);
@@ -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,6 +3686,15 @@ var CardFooterBase = React32.forwardRef(({ className, testid: dataTestId = "card
3646
3686
  }
3647
3687
  ));
3648
3688
  CardFooterBase.displayName = "CardFooter";
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: "*"
3697
+ };
3649
3698
  var formatFileSize = (bytes) => {
3650
3699
  if (bytes === 0) return "0 Bytes";
3651
3700
  const k = 1024;
@@ -3653,67 +3702,63 @@ var formatFileSize = (bytes) => {
3653
3702
  const i = Math.floor(Math.log(bytes) / Math.log(k));
3654
3703
  return Math.round(bytes / Math.pow(k, i) * 100) / 100 + " " + sizes[i];
3655
3704
  };
3656
- var getFileExtension = (filename) => {
3657
- 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(",");
3658
3722
  };
3659
3723
  var getFileTypeIcon = (file) => {
3660
3724
  const extension = getFileExtension(file.name).toLowerCase();
3661
3725
  const mimeType = file.type.toLowerCase();
3662
- if (extension === "pdf" || mimeType === "application/pdf") {
3726
+ if (extension === "pdf" || mimeType === "application/pdf")
3663
3727
  return /* @__PURE__ */ jsx(FilePdfIcon, { size: 20, className: "text-red-500" });
3664
- }
3665
- if (["doc", "docx"].includes(extension) || mimeType.includes("word")) {
3728
+ if (["doc", "docx"].includes(extension) || mimeType.includes("word"))
3666
3729
  return /* @__PURE__ */ jsx(FileDocIcon, { size: 20, className: "text-blue-500" });
3667
- }
3668
- if (["xls", "xlsx"].includes(extension) || mimeType.includes("sheet")) {
3730
+ if (["xls", "xlsx"].includes(extension) || mimeType.includes("sheet"))
3669
3731
  return /* @__PURE__ */ jsx(FileXlsIcon, { size: 20, className: "text-green-500" });
3670
- }
3671
- if (["ppt", "pptx"].includes(extension) || mimeType.includes("presentation")) {
3732
+ if (["ppt", "pptx"].includes(extension) || mimeType.includes("presentation"))
3672
3733
  return /* @__PURE__ */ jsx(FilePptIcon, { size: 20, className: "text-orange-500" });
3673
- }
3674
- if (extension === "csv" || mimeType === "text/csv") {
3734
+ if (extension === "csv" || mimeType === "text/csv")
3675
3735
  return /* @__PURE__ */ jsx(FileCsvIcon, { size: 20, className: "text-green-600" });
3676
- }
3677
3736
  if (["txt", "md", "json", "xml", "js", "ts", "html", "css"].includes(
3678
3737
  extension
3679
- ) || mimeType.includes("text")) {
3738
+ ) || mimeType.includes("text"))
3680
3739
  return /* @__PURE__ */ jsx(FileTextIcon, { size: 20, className: "text-gray-500" });
3681
- }
3682
- if (mimeType.startsWith("image/")) {
3740
+ if (mimeType.startsWith("image/"))
3683
3741
  return /* @__PURE__ */ jsx(FileImageIcon, { size: 20, className: "text-purple-500" });
3684
- }
3685
- if (mimeType.startsWith("video/")) {
3742
+ if (mimeType.startsWith("video/"))
3686
3743
  return /* @__PURE__ */ jsx(FileVideoIcon, { size: 20, className: "text-pink-500" });
3687
- }
3688
- if (mimeType.startsWith("audio/")) {
3744
+ if (mimeType.startsWith("audio/"))
3689
3745
  return /* @__PURE__ */ jsx(FileAudioIcon, { size: 20, className: "text-indigo-500" });
3690
- }
3691
- if (["zip", "rar", "7z", "tar", "gz"].includes(extension)) {
3746
+ if (["zip", "rar", "7z", "tar", "gz"].includes(extension))
3692
3747
  return /* @__PURE__ */ jsx(FileZipIcon, { size: 20, className: "text-yellow-600" });
3693
- }
3694
3748
  return /* @__PURE__ */ jsx(FileIcon, { size: 20, className: "text-muted-foreground" });
3695
3749
  };
3696
- var createImagePreview = (file) => {
3697
- return new Promise((resolve) => {
3698
- if (!file.type.startsWith("image/")) {
3699
- resolve(null);
3700
- return;
3701
- }
3702
- const reader = new FileReader();
3703
- reader.onload = (e) => {
3704
- resolve(e.target?.result);
3705
- };
3706
- reader.onerror = () => {
3707
- resolve(null);
3708
- };
3709
- reader.readAsDataURL(file);
3710
- });
3711
- };
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
+ });
3712
3757
  var FileUploader = React32.forwardRef(
3713
3758
  ({
3714
3759
  className,
3715
- accept,
3716
- maxSize,
3760
+ accept = "*",
3761
+ maxSize = 10,
3717
3762
  maxFiles = 1,
3718
3763
  disabled = false,
3719
3764
  value = [],
@@ -3735,71 +3780,49 @@ var FileUploader = React32.forwardRef(
3735
3780
  }, [value]);
3736
3781
  React32.useEffect(() => {
3737
3782
  return () => {
3738
- files.forEach((file) => {
3739
- if (file.preview) {
3740
- URL.revokeObjectURL(file.preview);
3741
- }
3783
+ files.forEach((f) => {
3784
+ if (f.preview) URL.revokeObjectURL(f.preview);
3742
3785
  });
3743
3786
  };
3744
3787
  }, [files]);
3745
3788
  const validateFile = (file) => {
3746
- if (file.size > maxSize) {
3747
- return `Arquivo muito grande. M\xE1ximo: ${formatFileSize(maxSize)}`;
3748
- }
3749
- if (accept.length > 0) {
3750
- const fileExtension = `.${getFileExtension(file.name)}`;
3751
- const fileType = file.type;
3752
- const isAccepted = accept.some((acceptItem) => {
3753
- if (acceptItem.startsWith(".")) {
3754
- return fileExtension.toLowerCase() === acceptItem.toLowerCase();
3755
- }
3756
- if (acceptItem.endsWith("/*")) {
3757
- return fileType.startsWith(acceptItem.replace("/*", ""));
3758
- }
3759
- return fileType === acceptItem;
3760
- });
3761
- if (!isAccepted) {
3762
- return `Tipo de arquivo n\xE3o permitido. Aceitos: ${accept.join(", ")}`;
3763
- }
3764
- }
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}`;
3765
3793
  return null;
3766
3794
  };
3767
3795
  const createFileWithPreview = async (file) => {
3768
- const fileWithPreview = file;
3769
- fileWithPreview.id = `${file.name}-${Date.now()}-${Math.random()}`;
3770
- const error = validateFile(file);
3771
- if (error) {
3772
- fileWithPreview.error = error;
3773
- }
3774
- 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/")) {
3775
3800
  try {
3776
3801
  const preview = await createImagePreview(file);
3777
- if (preview) {
3778
- fileWithPreview.preview = preview;
3779
- }
3780
- } catch (error2) {
3781
- 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);
3782
3805
  }
3783
3806
  }
3784
- return fileWithPreview;
3807
+ return f;
3785
3808
  };
3786
3809
  const handleFiles = async (newFiles) => {
3787
3810
  if (disabled) return;
3788
- const availableSlots = maxFiles - files.length;
3789
- const filesToAdd = multiple ? newFiles.slice(0, availableSlots) : [newFiles[0]];
3790
- const filesWithPreview = await Promise.all(
3791
- 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)
3792
3815
  );
3793
- const updatedFiles = multiple ? [...files, ...filesWithPreview] : filesWithPreview;
3794
- setFiles(updatedFiles);
3795
- onValueChange(updatedFiles);
3816
+ const updated = multiple ? [...files, ...processed] : processed;
3817
+ setFiles(updated);
3818
+ onValueChange(updated);
3796
3819
  if (onUpload) {
3797
- const validFiles = filesWithPreview.filter((f) => !f.error);
3798
- if (validFiles.length > 0) {
3820
+ const valid = processed.filter((f) => !f.error);
3821
+ if (valid.length > 0) {
3799
3822
  try {
3800
- await onUpload(validFiles);
3801
- } catch (error) {
3802
- console.error("Erro no upload:", error);
3823
+ await onUpload(valid);
3824
+ } catch (err) {
3825
+ console.error("Erro no upload:", err);
3803
3826
  }
3804
3827
  }
3805
3828
  }
@@ -3808,17 +3831,12 @@ var FileUploader = React32.forwardRef(
3808
3831
  e.preventDefault();
3809
3832
  e.stopPropagation();
3810
3833
  dragCounterRef.current++;
3811
- if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {
3812
- setIsDragging(true);
3813
- }
3834
+ if (e.dataTransfer.items?.length > 0) setIsDragging(true);
3814
3835
  };
3815
3836
  const handleDragLeave = (e) => {
3816
3837
  e.preventDefault();
3817
3838
  e.stopPropagation();
3818
- dragCounterRef.current--;
3819
- if (dragCounterRef.current === 0) {
3820
- setIsDragging(false);
3821
- }
3839
+ if (--dragCounterRef.current === 0) setIsDragging(false);
3822
3840
  };
3823
3841
  const handleDragOver = (e) => {
3824
3842
  e.preventDefault();
@@ -3829,47 +3847,33 @@ var FileUploader = React32.forwardRef(
3829
3847
  e.stopPropagation();
3830
3848
  setIsDragging(false);
3831
3849
  dragCounterRef.current = 0;
3832
- if (disabled) return;
3833
- const droppedFiles = Array.from(e.dataTransfer.files);
3834
- handleFiles(droppedFiles);
3850
+ if (!disabled) handleFiles(Array.from(e.dataTransfer.files));
3835
3851
  };
3836
3852
  const handleInputChange = (e) => {
3837
- if (e.target.files) {
3838
- const selectedFiles = Array.from(e.target.files);
3839
- handleFiles(selectedFiles);
3840
- }
3853
+ if (e.target.files) handleFiles(Array.from(e.target.files));
3841
3854
  };
3842
3855
  const handleRemoveFile = (fileId) => {
3843
- const fileToRemove = files.find((f) => f.id === fileId);
3844
- if (fileToRemove?.preview) {
3845
- URL.revokeObjectURL(fileToRemove.preview);
3846
- }
3847
- const updatedFiles = files.filter((f) => f.id !== fileId);
3848
- setFiles(updatedFiles);
3849
- onValueChange(updatedFiles);
3850
- };
3851
- const handleClick = () => {
3852
- if (!disabled) {
3853
- inputRef.current?.click();
3854
- }
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);
3855
3861
  };
3856
- const acceptString = accept.join(",");
3857
- const defaultSubtext = dropzoneSubtext || `Formatos: ${accept.join(", ")}. M\xE1ximo: ${formatFileSize(maxSize)}`;
3862
+ const defaultSubtext = dropzoneSubtext ?? `${accept === "*" ? "Qualquer formato" : accept} (M\xE1x: ${maxSize}MB)`;
3858
3863
  return /* @__PURE__ */ jsx("div", { ref, className: cn("w-full", className), ...props, children: /* @__PURE__ */ jsxs(
3859
3864
  motion.div,
3860
3865
  {
3861
3866
  className: cn(
3862
- "relative flex cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed p-10 transition-all duration-300 dark:shadow-black/20",
3867
+ "relative flex cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed p-5 transition-all duration-300 dark:shadow-black/20",
3863
3868
  isDragging && "border-primary bg-primary/10 scale-[1.02]",
3864
3869
  !isDragging && "border-border hover:border-primary/60 hover:bg-muted/50",
3865
- disabled && "cursor-not-allowed opacity-50 hover:scale-100"
3870
+ disabled && "cursor-not-allowed opacity-50"
3866
3871
  ),
3867
3872
  onDragEnter: handleDragEnter,
3868
3873
  onDragOver: handleDragOver,
3869
3874
  onDragLeave: handleDragLeave,
3870
3875
  onDrop: handleDrop,
3871
- onClick: handleClick,
3872
- whileHover: !disabled ? { scale: 1.01 } : void 0,
3876
+ onClick: () => !disabled && inputRef.current?.click(),
3873
3877
  whileTap: !disabled ? { scale: 0.99 } : void 0,
3874
3878
  animate: isDragging ? {
3875
3879
  borderColor: `hsl(var(--primary))`,
@@ -3880,12 +3884,7 @@ var FileUploader = React32.forwardRef(
3880
3884
  backgroundColor: `hsl(var(--background))`,
3881
3885
  scale: 1
3882
3886
  },
3883
- transition: {
3884
- type: "spring",
3885
- stiffness: 300,
3886
- damping: 25,
3887
- duration: 0.3
3888
- },
3887
+ transition: { type: "spring", stiffness: 300, damping: 25 },
3889
3888
  children: [
3890
3889
  /* @__PURE__ */ jsx(
3891
3890
  "input",
@@ -3893,7 +3892,7 @@ var FileUploader = React32.forwardRef(
3893
3892
  ref: inputRef,
3894
3893
  type: "file",
3895
3894
  className: "hidden",
3896
- accept: acceptString,
3895
+ accept: formatAcceptForInput(accept),
3897
3896
  multiple,
3898
3897
  disabled,
3899
3898
  onChange: handleInputChange
@@ -3903,20 +3902,11 @@ var FileUploader = React32.forwardRef(
3903
3902
  motion.div,
3904
3903
  {
3905
3904
  animate: isDragging ? { scale: 1.2, rotate: 10 } : { scale: 1, rotate: 0 },
3906
- transition: {
3907
- type: "spring",
3908
- stiffness: 300,
3909
- damping: 20,
3910
- duration: 0.3
3911
- },
3905
+ transition: { type: "spring", stiffness: 300, damping: 20 },
3912
3906
  children: /* @__PURE__ */ jsx(
3913
3907
  motion.div,
3914
3908
  {
3915
- className: cn(
3916
- "mb-4 h-16 w-16 text-muted-foreground transition-colors duration-300 drop-shadow-lg flex items-center justify-center",
3917
- isDragging && "text-primary"
3918
- ),
3919
- initial: false,
3909
+ className: "mb-4 h-16 w-16 drop-shadow-lg flex items-center justify-center",
3920
3910
  animate: {
3921
3911
  color: isDragging ? `hsl(var(--primary))` : `hsl(var(--muted-foreground))`
3922
3912
  },
@@ -3929,7 +3919,7 @@ var FileUploader = React32.forwardRef(
3929
3919
  /* @__PURE__ */ jsx(
3930
3920
  motion.p,
3931
3921
  {
3932
- className: "mb-2 text-base font-semibold text-foreground",
3922
+ className: "mb-2 text-xs font-semibold text-foreground",
3933
3923
  initial: animate ? { opacity: 0, y: -10 } : false,
3934
3924
  animate: { opacity: 1, y: 0 },
3935
3925
  transition: { delay: 0.1 },
@@ -3939,63 +3929,29 @@ var FileUploader = React32.forwardRef(
3939
3929
  /* @__PURE__ */ jsx(
3940
3930
  motion.p,
3941
3931
  {
3942
- className: "text-sm text-muted-foreground",
3932
+ className: "text-xs text-muted-foreground",
3943
3933
  initial: animate ? { opacity: 0, y: -10 } : false,
3944
3934
  animate: { opacity: 1, y: 0 },
3945
3935
  transition: { delay: 0.2 },
3946
3936
  children: defaultSubtext
3947
3937
  }
3948
3938
  ),
3949
- /* @__PURE__ */ jsx(AnimatePresence, { children: files.length > 0 && /* @__PURE__ */ jsxs(
3950
- motion.div,
3951
- {
3952
- initial: { opacity: 0, scale: 0.8, y: 10 },
3953
- animate: {
3954
- opacity: 1,
3955
- scale: 1,
3956
- y: 0,
3957
- backgroundColor: `hsl(var(--primary) / 0.1)`,
3958
- borderColor: `hsl(var(--primary) / 0.2)`
3959
- },
3960
- exit: { opacity: 0, scale: 0.8, y: 10 },
3961
- className: cn(
3962
- "mt-4 flex items-center gap-2 rounded-full border px-4 py-2 backdrop-blur-sm bg-primary/20 border-primary/30 shadow-lg"
3963
- ),
3964
- transition: { duration: 0.3 },
3965
- children: [
3966
- /* @__PURE__ */ jsx("div", { className: "h-4 w-4 text-primary flex items-center justify-center", children: /* @__PURE__ */ jsx(CheckIcon, { size: 16, className: "text-emerald-500" }) }),
3967
- /* @__PURE__ */ jsxs(
3968
- motion.span,
3969
- {
3970
- className: "text-sm font-semibold text-primary",
3971
- animate: { color: `hsl(var(--primary))` },
3972
- transition: { duration: 0.3 },
3973
- children: [
3974
- files.length,
3975
- " ",
3976
- files.length === 1 ? "arquivo selecionado" : "arquivos selecionados"
3977
- ]
3978
- }
3979
- )
3980
- ]
3981
- }
3982
- ) }),
3983
- showPreview && files.length > 0 && /* @__PURE__ */ jsx(
3939
+ showPreview && files.length > 0 && /* @__PURE__ */ jsxs(
3984
3940
  motion.div,
3985
3941
  {
3986
- className: "mt-6 w-full",
3942
+ className: "py-2 w-full",
3987
3943
  initial: animate ? { opacity: 0, y: 10 } : false,
3988
3944
  animate: { opacity: 1, y: 0 },
3989
3945
  transition: { delay: 0.3 },
3990
- children: /* @__PURE__ */ jsxs("div", { children: [
3991
- /* @__PURE__ */ jsxs("h4", { className: "mb-3 text-sm font-medium text-muted-foreground", children: [
3946
+ children: [
3947
+ /* @__PURE__ */ jsxs("h4", { className: "text-xs font-medium text-muted-foreground pb-0.5", children: [
3992
3948
  "Arquivos selecionados (",
3993
3949
  files.length,
3994
3950
  "/",
3995
3951
  maxFiles,
3996
3952
  ")"
3997
3953
  ] }),
3998
- /* @__PURE__ */ jsx("div", { className: "space-y-2 overflow-y-auto max-h-44", children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: files.map((file, index) => /* @__PURE__ */ jsxs(
3954
+ /* @__PURE__ */ jsx("div", { className: "space-y-2 overflow-y-auto max-h-36", children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: files.map((file, index) => /* @__PURE__ */ jsxs(
3999
3955
  motion.div,
4000
3956
  {
4001
3957
  layout: true,
@@ -4011,24 +3967,18 @@ var FileUploader = React32.forwardRef(
4011
3967
  layout: { duration: 0.2 }
4012
3968
  },
4013
3969
  className: cn(
4014
- "flex items-center gap-3 rounded-md border p-3 transition-all duration-300",
3970
+ "group flex items-center gap-3 rounded-md border p-2 transition-all duration-300",
4015
3971
  file.error ? "border-destructive/50 bg-destructive/5" : "border-border bg-background/80 hover:bg-muted/50 hover:shadow-md hover:shadow-primary/10 hover:border-primary/30"
4016
3972
  ),
4017
3973
  children: [
4018
- /* @__PURE__ */ jsx("div", { className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-md bg-muted overflow-hidden", children: file.preview ? (
4019
- // Preview de imagem
4020
- /* @__PURE__ */ jsx(
4021
- "img",
4022
- {
4023
- src: file.preview,
4024
- alt: file.name,
4025
- className: "h-full w-full object-cover rounded-md"
4026
- }
4027
- )
4028
- ) : (
4029
- // Ícone baseado no tipo de arquivo
4030
- getFileTypeIcon(file)
4031
- ) }),
3974
+ /* @__PURE__ */ jsx("div", { className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-md bg-muted overflow-hidden", children: file.preview ? /* @__PURE__ */ jsx(
3975
+ "img",
3976
+ {
3977
+ src: file.preview,
3978
+ alt: file.name,
3979
+ className: "h-full w-full object-cover rounded-md"
3980
+ }
3981
+ ) : getFileTypeIcon(file) }),
4032
3982
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
4033
3983
  /* @__PURE__ */ jsx(
4034
3984
  "p",
@@ -4058,21 +4008,21 @@ var FileUploader = React32.forwardRef(
4058
4008
  /* @__PURE__ */ jsx(
4059
4009
  ButtonBase,
4060
4010
  {
4061
- variant: "destructive",
4062
4011
  size: "icon",
4012
+ variant: "ghost",
4063
4013
  onClick: (e) => {
4064
4014
  e?.stopPropagation();
4065
4015
  handleRemoveFile(file.id);
4066
4016
  },
4067
- className: "",
4068
- children: /* @__PURE__ */ jsx(XIcon, { size: 12 })
4017
+ className: "opacity-0 transition-opacity group-hover:opacity-100",
4018
+ children: /* @__PURE__ */ jsx(XIcon, { size: 12, className: "text-red-500" })
4069
4019
  }
4070
4020
  )
4071
4021
  ]
4072
4022
  },
4073
4023
  file.id
4074
4024
  )) }) })
4075
- ] })
4025
+ ]
4076
4026
  }
4077
4027
  )
4078
4028
  ]
@@ -9926,6 +9876,7 @@ function Select({
9926
9876
  {
9927
9877
  className: cn(
9928
9878
  "flex items-center gap-2 justify-between [&>div]:line-clamp-1 [&>span]:line-clamp-1 relative",
9879
+ !selected && "text-muted-foreground",
9929
9880
  error && "border-red-500",
9930
9881
  className
9931
9882
  ),
@@ -14499,6 +14450,7 @@ function MultiSelect({
14499
14450
  {
14500
14451
  className: cn(
14501
14452
  "flex items-center gap-2 justify-between hover:bg-muted transition-all duration-150",
14453
+ !selected && "text-muted-foreground",
14502
14454
  error && "border-red-500",
14503
14455
  className
14504
14456
  ),
@@ -16837,7 +16789,7 @@ var IntegrationCard = ({ title, details }) => {
16837
16789
  }) })
16838
16790
  ] });
16839
16791
  };
16840
- 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: [
16792
+ var TooltipBodyComponent = ({ data, isLoading, connections, isInput, externalSystem }) => /* @__PURE__ */ jsx(ScrollAreaBase, { className: "flex-1", children: /* @__PURE__ */ jsxs("div", { className: "px-3 py-3 space-y-3", children: [
16841
16793
  isLoading ? /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
16842
16794
  /* @__PURE__ */ jsx(SkeletonBase, { className: "h-6 w-3/4" }),
16843
16795
  /* @__PURE__ */ jsx(SkeletonBase, { className: "h-3.5 w-1/2" })
@@ -16880,7 +16832,7 @@ var TooltipBodyComponent = ({ data, isLoading, connections, isInput, externalSys
16880
16832
  conn.id
16881
16833
  )) })
16882
16834
  ] })
16883
- ] });
16835
+ ] }) });
16884
16836
  var TooltipBody = React32__default.memo(TooltipBodyComponent);
16885
16837
  var tooltipVariants3 = {
16886
16838
  hidden: {
@@ -20350,7 +20302,9 @@ function CarouselBase({
20350
20302
  autoPlayInterval = 3e3,
20351
20303
  zoomEffect = null,
20352
20304
  download = false,
20353
- isLoading = false
20305
+ isLoading = false,
20306
+ onChange,
20307
+ fernando
20354
20308
  }) {
20355
20309
  const isMobile = useIsMobile();
20356
20310
  const [index, setIndex] = useState(0);
@@ -20361,7 +20315,9 @@ function CarouselBase({
20361
20315
  useEffect(() => {
20362
20316
  if (!emblaApi) return;
20363
20317
  const onSelect = () => {
20364
- setIndex(emblaApi.selectedScrollSnap());
20318
+ const newIndex = emblaApi.selectedScrollSnap();
20319
+ setIndex(newIndex);
20320
+ onChange?.(newIndex);
20365
20321
  };
20366
20322
  emblaApi.on("select", onSelect);
20367
20323
  emblaApi.on("reInit", onSelect);
@@ -20369,7 +20325,7 @@ function CarouselBase({
20369
20325
  emblaApi.off("select", onSelect);
20370
20326
  emblaApi.off("reInit", onSelect);
20371
20327
  };
20372
- }, [emblaApi]);
20328
+ }, [emblaApi, onChange]);
20373
20329
  useEffect(() => {
20374
20330
  if (!autoPlay || items.length <= 1 || !emblaApi) return;
20375
20331
  const interval = setInterval(() => {
@@ -20422,7 +20378,10 @@ function CarouselBase({
20422
20378
  initial: { opacity: 0 },
20423
20379
  animate: { opacity: 1 },
20424
20380
  transition: { duration: 0.4 },
20425
- className: cn("w-full lg:p-10 sm:p-4 p-2", className),
20381
+ className: cn(
20382
+ "w-full lg:p-10 sm:p-4 p-2 transition-colors duration-500",
20383
+ className
20384
+ ),
20426
20385
  style: { width },
20427
20386
  children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-3 h-full", children: /* @__PURE__ */ jsxs("div", { className: cn("relative h-full", containerClassName), children: [
20428
20387
  /* @__PURE__ */ jsx(
@@ -20474,7 +20433,8 @@ function CarouselBase({
20474
20433
  onMouseDown: (e) => e.stopPropagation(),
20475
20434
  className: cn(
20476
20435
  "absolute top-4 right-4 z-50 p-2 rounded-full text-white transition-colors border border-white/10",
20477
- downloadSuccess ? "bg-green-500 hover:bg-green-600" : "bg-black/50 hover:bg-black/70"
20436
+ downloadSuccess ? "bg-green-500 hover:bg-green-600" : "bg-black/50 hover:bg-black/70",
20437
+ className
20478
20438
  ),
20479
20439
  title: "Download image",
20480
20440
  initial: false,
@@ -20557,8 +20517,13 @@ function CarouselBase({
20557
20517
  onPointerDown: (e) => e.stopPropagation(),
20558
20518
  onTouchStart: (e) => e.stopPropagation(),
20559
20519
  onMouseDown: (e) => e.stopPropagation(),
20560
- className: `absolute left-4 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full flex items-center justify-center shadow-lg transition-transform z-50
20561
- ${!emblaApi?.canScrollPrev() ? "opacity-40 cursor-not-allowed" : "bg-secondary hover:scale-110 hover:opacity-100 opacity-70"}`,
20520
+ className: cn(
20521
+ "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",
20522
+ !emblaApi?.canScrollPrev() ? "opacity-40 cursor-not-allowed" : "hover:scale-110 hover:opacity-100 opacity-70",
20523
+ "bg-primary text-primary-foreground",
20524
+ className
20525
+ ),
20526
+ style: fernando ? { backgroundColor: fernando } : void 0,
20562
20527
  children: /* @__PURE__ */ jsx(
20563
20528
  "svg",
20564
20529
  {
@@ -20587,8 +20552,13 @@ function CarouselBase({
20587
20552
  onPointerDown: (e) => e.stopPropagation(),
20588
20553
  onTouchStart: (e) => e.stopPropagation(),
20589
20554
  onMouseDown: (e) => e.stopPropagation(),
20590
- className: `absolute right-4 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full flex items-center justify-center shadow-lg transition-transform z-50
20591
- ${!emblaApi?.canScrollNext() ? "opacity-40 cursor-not-allowed" : "bg-secondary hover:scale-110 hover:opacity-100 opacity-70"}`,
20555
+ className: cn(
20556
+ "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",
20557
+ !emblaApi?.canScrollNext() ? "opacity-40 cursor-not-allowed" : "hover:scale-110 hover:opacity-100 opacity-70",
20558
+ "bg-primary text-primary-foreground",
20559
+ className
20560
+ ),
20561
+ style: fernando ? { backgroundColor: fernando } : void 0,
20592
20562
  children: /* @__PURE__ */ jsx(
20593
20563
  "svg",
20594
20564
  {
@@ -20617,7 +20587,12 @@ function CarouselBase({
20617
20587
  onPointerDown: (e) => e.stopPropagation(),
20618
20588
  onTouchStart: (e) => e.stopPropagation(),
20619
20589
  onMouseDown: (e) => e.stopPropagation(),
20620
- className: `h-2 rounded-full transition-all ${i === index ? "w-8 bg-white" : "w-2 bg-white/50"}`
20590
+ className: cn(
20591
+ "h-2 rounded-full transition-all duration-300",
20592
+ i === index ? cn("w-8 bg-primary") : cn("w-2 hover:opacity-80 bg-primary opacity-40"),
20593
+ className
20594
+ ),
20595
+ style: fernando ? { backgroundColor: fernando } : void 0
20621
20596
  },
20622
20597
  i
20623
20598
  )) })
@@ -20806,9 +20781,9 @@ function RadialMenu({
20806
20781
  }
20807
20782
  function ControlledCombobox({
20808
20783
  items,
20809
- renderSelected,
20810
- handleSelection,
20811
- checkIsSelected,
20784
+ value,
20785
+ onChange,
20786
+ placeholder = "Selecione uma op\xE7\xE3o",
20812
20787
  disabled = false,
20813
20788
  keepOpen = false,
20814
20789
  searchPlaceholder,
@@ -20818,7 +20793,6 @@ function ControlledCombobox({
20818
20793
  labelClassname,
20819
20794
  testIds = {},
20820
20795
  onClear,
20821
- hasSelected = false,
20822
20796
  hideClear = false,
20823
20797
  onSearchChange,
20824
20798
  search,
@@ -20826,6 +20800,11 @@ function ControlledCombobox({
20826
20800
  loading = false
20827
20801
  }) {
20828
20802
  const [open, setOpen] = useState(false);
20803
+ const selectedItem = items.find((item) => item.value === value);
20804
+ const renderSelected = selectedItem?.label ?? placeholder;
20805
+ const hasSelected = Boolean(value);
20806
+ const checkIsSelected = (v) => v === value;
20807
+ const handleSelection = (v) => onChange?.(v);
20829
20808
  return /* @__PURE__ */ jsxs(
20830
20809
  "div",
20831
20810
  {
@@ -20898,9 +20877,9 @@ function ControlledCombobox({
20898
20877
  {
20899
20878
  className: "dark:text-white hover:bg-rsecondary focus:ring-0 focus:outline-none",
20900
20879
  "data-testid": testIds.command ?? "combobox-command",
20901
- filter: onSearchChange ? () => 1 : (value, search2) => {
20902
- const label2 = items.find((item) => item.value === value)?.label || value;
20903
- if (label2.toLowerCase().includes(search2.toLowerCase()))
20880
+ filter: onSearchChange ? () => 1 : (itemValue, search2) => {
20881
+ const itemLabel = items.find((item) => item.value === itemValue)?.label || itemValue;
20882
+ if (itemLabel.toLowerCase().includes(search2.toLowerCase()))
20904
20883
  return 1;
20905
20884
  return 0;
20906
20885
  },
@@ -20932,9 +20911,9 @@ function ControlledCombobox({
20932
20911
  {
20933
20912
  keywords: [item.label],
20934
20913
  value: item.value,
20935
- onSelect: (value) => {
20914
+ onSelect: (v) => {
20936
20915
  if (disabled) return;
20937
- handleSelection(value);
20916
+ handleSelection(v);
20938
20917
  if (!keepOpen) setOpen(false);
20939
20918
  },
20940
20919
  disabled,
@@ -20951,7 +20930,7 @@ function ControlledCombobox({
20951
20930
  stiffness: 500,
20952
20931
  damping: 30
20953
20932
  },
20954
- className: "ml-auto ",
20933
+ className: "ml-auto",
20955
20934
  children: /* @__PURE__ */ jsx(
20956
20935
  CheckIcon,
20957
20936
  {
@@ -20987,4 +20966,4 @@ function ControlledCombobox({
20987
20966
  );
20988
20967
  }
20989
20968
 
20990
- 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, 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 };
20969
+ 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, 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, 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 };