@axzydev/axzy_ui_system 1.0.165 → 1.0.167

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.js CHANGED
@@ -3724,10 +3724,178 @@ function ITNavbar({
3724
3724
  ] });
3725
3725
  }
3726
3726
 
3727
- // src/components/slide/slide.tsx
3728
- import { useState as useState15, useEffect as useEffect12 } from "react";
3727
+ // src/components/search-select/search-select.tsx
3728
+ import { useState as useState15, useEffect as useEffect12, useRef as useRef7, useMemo as useMemo4 } from "react";
3729
3729
  import clsx14 from "clsx";
3730
- import { jsx as jsx19 } from "react/jsx-runtime";
3730
+ import { FaSearch } from "react-icons/fa";
3731
+ import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
3732
+ function ITSearchSelect({
3733
+ name,
3734
+ options = [],
3735
+ label,
3736
+ placeholder = "Selecciona una opci\xF3n",
3737
+ valueField = "value",
3738
+ labelField = "label",
3739
+ value,
3740
+ onChange,
3741
+ onBlur,
3742
+ disabled = false,
3743
+ className,
3744
+ touched,
3745
+ required,
3746
+ error,
3747
+ readOnly = false,
3748
+ onSearch,
3749
+ isLoading = false,
3750
+ noResultsMessage = "No se encontraron resultados"
3751
+ }) {
3752
+ const [isOpen, setIsOpen] = useState15(false);
3753
+ const [searchTerm, setSearchTerm] = useState15("");
3754
+ const [isFocused, setIsFocused] = useState15(false);
3755
+ const containerRef = useRef7(null);
3756
+ const timeoutRef = useRef7(null);
3757
+ const selectedOption = useMemo4(() => {
3758
+ return options.find((opt) => opt[valueField] === value);
3759
+ }, [options, value, valueField]);
3760
+ useEffect12(() => {
3761
+ if (!isFocused) {
3762
+ setSearchTerm(selectedOption ? String(selectedOption[labelField]) : "");
3763
+ }
3764
+ }, [selectedOption, isFocused, labelField]);
3765
+ useEffect12(() => {
3766
+ function handleClickOutside(event) {
3767
+ if (containerRef.current && !containerRef.current.contains(event.target)) {
3768
+ setIsOpen(false);
3769
+ }
3770
+ }
3771
+ document.addEventListener("mousedown", handleClickOutside);
3772
+ return () => document.removeEventListener("mousedown", handleClickOutside);
3773
+ }, []);
3774
+ const filteredOptions = useMemo4(() => {
3775
+ if (onSearch) return options;
3776
+ if (!searchTerm || !isFocused) return options;
3777
+ return options.filter(
3778
+ (opt) => String(opt[labelField]).toLowerCase().includes(searchTerm.toLowerCase())
3779
+ );
3780
+ }, [options, searchTerm, onSearch, labelField, isFocused]);
3781
+ const handleInputChange = (e) => {
3782
+ const query = e.target.value;
3783
+ setSearchTerm(query);
3784
+ setIsOpen(true);
3785
+ if (onSearch) {
3786
+ if (timeoutRef.current) clearTimeout(timeoutRef.current);
3787
+ timeoutRef.current = setTimeout(() => {
3788
+ onSearch(query);
3789
+ }, 500);
3790
+ }
3791
+ };
3792
+ const handleSelect = (option) => {
3793
+ if (onChange) {
3794
+ onChange(option[valueField], option);
3795
+ }
3796
+ setSearchTerm(String(option[labelField]));
3797
+ setIsOpen(false);
3798
+ };
3799
+ const handleFocus = () => {
3800
+ if (disabled || readOnly) return;
3801
+ setIsFocused(true);
3802
+ setIsOpen(true);
3803
+ };
3804
+ const handleInputBlur = (e) => {
3805
+ setTimeout(() => {
3806
+ setIsFocused(false);
3807
+ onBlur?.(e);
3808
+ }, 200);
3809
+ };
3810
+ const inputTheme = theme.input || {};
3811
+ const getInputStyle = () => {
3812
+ const style = {
3813
+ backgroundColor: inputTheme.backgroundColor || "#ffffff",
3814
+ borderColor: inputTheme.borderColor || "#e2e8f0",
3815
+ borderRadius: inputTheme.borderRadius || "0.5rem",
3816
+ padding: inputTheme.padding || "0.5rem 0.75rem",
3817
+ fontSize: inputTheme.fontSize || "0.875rem",
3818
+ borderWidth: "1px",
3819
+ borderStyle: "solid",
3820
+ transition: "all 0.2s",
3821
+ color: theme.colors.gray[900],
3822
+ width: "100%"
3823
+ };
3824
+ if (disabled) {
3825
+ style.backgroundColor = inputTheme.disabled?.backgroundColor || "#f1f5f9";
3826
+ style.borderColor = inputTheme.disabled?.borderColor || "#e2e8f0";
3827
+ style.opacity = 0.7;
3828
+ style.cursor = "not-allowed";
3829
+ }
3830
+ if (touched && error) {
3831
+ style.borderColor = inputTheme.error?.borderColor || "red";
3832
+ if (isFocused) {
3833
+ style.boxShadow = inputTheme.error?.ring;
3834
+ }
3835
+ } else if (isFocused && !readOnly) {
3836
+ style.boxShadow = inputTheme.focus?.ring;
3837
+ style.borderColor = inputTheme.focus?.borderColor;
3838
+ }
3839
+ return style;
3840
+ };
3841
+ return /* @__PURE__ */ jsxs14("div", { className: clsx14("w-full flex flex-col gap-1.5", className), ref: containerRef, children: [
3842
+ label && /* @__PURE__ */ jsxs14(
3843
+ "label",
3844
+ {
3845
+ className: clsx14("text-sm font-medium text-gray-700", {
3846
+ "text-red-500": touched && error
3847
+ }),
3848
+ children: [
3849
+ label,
3850
+ required && /* @__PURE__ */ jsx19("span", { className: "text-red-500 ml-1", children: "*" })
3851
+ ]
3852
+ }
3853
+ ),
3854
+ /* @__PURE__ */ jsxs14("div", { className: "relative", children: [
3855
+ /* @__PURE__ */ jsxs14("div", { className: "relative flex items-center", children: [
3856
+ /* @__PURE__ */ jsx19(
3857
+ "input",
3858
+ {
3859
+ type: "text",
3860
+ name,
3861
+ value: searchTerm,
3862
+ onChange: handleInputChange,
3863
+ onFocus: handleFocus,
3864
+ onBlur: handleInputBlur,
3865
+ disabled,
3866
+ readOnly,
3867
+ placeholder,
3868
+ className: "outline-none pr-10",
3869
+ style: getInputStyle(),
3870
+ autoComplete: "off"
3871
+ }
3872
+ ),
3873
+ /* @__PURE__ */ jsxs14("div", { className: "absolute right-3 flex items-center gap-2 text-gray-400 pointer-events-none", children: [
3874
+ isLoading && /* @__PURE__ */ jsx19("div", { className: "animate-spin h-4 w-4 border-2 border-primary-500 border-t-transparent rounded-full" }),
3875
+ !isLoading && /* @__PURE__ */ jsx19(FaSearch, { size: 14, className: clsx14({ "text-primary-500": isFocused }) })
3876
+ ] })
3877
+ ] }),
3878
+ isOpen && /* @__PURE__ */ jsx19("div", { className: "absolute z-50 w-full mt-1 bg-white border border-gray-200 rounded-lg shadow-xl overflow-hidden animate-in fade-in zoom-in duration-200 origin-top", children: /* @__PURE__ */ jsx19("div", { className: "max-h-60 overflow-y-auto", children: filteredOptions.length > 0 ? filteredOptions.map((option) => /* @__PURE__ */ jsx19(
3879
+ "div",
3880
+ {
3881
+ onClick: () => handleSelect(option),
3882
+ className: clsx14(
3883
+ "px-4 py-2 text-sm cursor-pointer transition-colors",
3884
+ value === option[valueField] ? "bg-primary-50 text-primary-700 font-medium" : "hover:bg-gray-50 text-gray-700"
3885
+ ),
3886
+ children: option[labelField]
3887
+ },
3888
+ option[valueField]
3889
+ )) : /* @__PURE__ */ jsx19("div", { className: "px-4 py-6 text-sm text-center text-gray-500 italic", children: isLoading ? "Cargando..." : noResultsMessage }) }) })
3890
+ ] }),
3891
+ touched && error && /* @__PURE__ */ jsx19("p", { className: "text-red-500 text-xs mt-1", children: error })
3892
+ ] });
3893
+ }
3894
+
3895
+ // src/components/slide/slide.tsx
3896
+ import { useState as useState16, useEffect as useEffect13 } from "react";
3897
+ import clsx15 from "clsx";
3898
+ import { jsx as jsx20 } from "react/jsx-runtime";
3731
3899
  function ITSlideToggle({
3732
3900
  onToggle,
3733
3901
  isOn: controlledIsOn,
@@ -3740,8 +3908,8 @@ function ITSlideToggle({
3740
3908
  className = ""
3741
3909
  }) {
3742
3910
  const isControlled = controlledIsOn !== void 0;
3743
- const [internalIsOn, setInternalIsOn] = useState15(initialState);
3744
- useEffect12(() => {
3911
+ const [internalIsOn, setInternalIsOn] = useState16(initialState);
3912
+ useEffect13(() => {
3745
3913
  if (isControlled) {
3746
3914
  setInternalIsOn(controlledIsOn);
3747
3915
  }
@@ -3780,11 +3948,11 @@ function ITSlideToggle({
3780
3948
  }
3781
3949
  };
3782
3950
  const { container, knob, translate } = sizeClasses2[size];
3783
- return /* @__PURE__ */ jsx19(
3951
+ return /* @__PURE__ */ jsx20(
3784
3952
  "div",
3785
3953
  {
3786
3954
  onClick: toggleSwitch,
3787
- className: clsx14(
3955
+ className: clsx15(
3788
3956
  "flex items-center rounded-full p-1 transition-colors duration-300",
3789
3957
  container,
3790
3958
  disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer",
@@ -3800,10 +3968,10 @@ function ITSlideToggle({
3800
3968
  toggleSwitch();
3801
3969
  }
3802
3970
  },
3803
- children: /* @__PURE__ */ jsx19(
3971
+ children: /* @__PURE__ */ jsx20(
3804
3972
  "div",
3805
3973
  {
3806
- className: clsx14(
3974
+ className: clsx15(
3807
3975
  "bg-white rounded-full shadow-md transform transition-transform duration-300 pointer-events-none",
3808
3976
  knob,
3809
3977
  isOn ? translate : "translate-x-0"
@@ -3815,11 +3983,95 @@ function ITSlideToggle({
3815
3983
  }
3816
3984
 
3817
3985
  // src/components/text/text.tsx
3818
- import { jsx as jsx20 } from "react/jsx-runtime";
3986
+ import { jsx as jsx21 } from "react/jsx-runtime";
3819
3987
  function ITText({ children, className = "" }) {
3820
- return /* @__PURE__ */ jsx20("p", { className: `${className} text-gray-900 `, children });
3988
+ return /* @__PURE__ */ jsx21("p", { className: `${className} text-gray-900 `, children });
3821
3989
  }
3822
3990
 
3991
+ // src/components/tabs/tabs.tsx
3992
+ import { useState as useState17 } from "react";
3993
+ import { clsx as clsx16 } from "clsx";
3994
+ import { jsx as jsx22, jsxs as jsxs15 } from "react/jsx-runtime";
3995
+ var ITTabs = ({
3996
+ items,
3997
+ defaultActiveId,
3998
+ onChange,
3999
+ variant = "line",
4000
+ className = "",
4001
+ containerClassName = ""
4002
+ }) => {
4003
+ const [activeId, setActiveId] = useState17(defaultActiveId || items[0]?.id);
4004
+ const handleTabClick = (id, disabled) => {
4005
+ if (disabled) return;
4006
+ setActiveId(id);
4007
+ if (onChange) onChange(id);
4008
+ };
4009
+ const activeContent = items.find((item) => item.id === activeId)?.content;
4010
+ return /* @__PURE__ */ jsxs15("div", { className: clsx16("w-full", containerClassName), children: [
4011
+ /* @__PURE__ */ jsx22("div", { className: clsx16(
4012
+ "flex border-gray-200 mb-4",
4013
+ variant === "line" ? "border-b" : "gap-2 p-1 bg-gray-100 rounded-lg w-fit",
4014
+ className
4015
+ ), children: items.map((item) => {
4016
+ const isActive = item.id === activeId;
4017
+ return /* @__PURE__ */ jsxs15(
4018
+ "button",
4019
+ {
4020
+ onClick: () => handleTabClick(item.id, item.disabled),
4021
+ disabled: item.disabled,
4022
+ className: clsx16(
4023
+ "flex items-center gap-2 px-4 py-2 text-sm font-medium transition-all duration-200 outline-none",
4024
+ // LINE VARIANT
4025
+ variant === "line" && [
4026
+ "border-b-2 -mb-[2px]",
4027
+ isActive ? "border-primary-500 text-primary-600" : "border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"
4028
+ ],
4029
+ // PILL VARIANT
4030
+ variant === "pill" && [
4031
+ "rounded-md",
4032
+ isActive ? "bg-white text-primary-600 shadow-sm" : "text-gray-500 hover:text-gray-700"
4033
+ ],
4034
+ item.disabled && "opacity-50 cursor-not-allowed"
4035
+ ),
4036
+ children: [
4037
+ item.icon && /* @__PURE__ */ jsx22("span", { className: "w-4 h-4", children: item.icon }),
4038
+ item.label
4039
+ ]
4040
+ },
4041
+ item.id
4042
+ );
4043
+ }) }),
4044
+ /* @__PURE__ */ jsx22("div", { className: "tab-content animate-fadeIn", children: activeContent })
4045
+ ] });
4046
+ };
4047
+ var tabs_default = ITTabs;
4048
+
4049
+ // src/components/triple-filter/tripleFilter.tsx
4050
+ import { jsx as jsx23 } from "react/jsx-runtime";
4051
+ var ITTripleFilter = ({
4052
+ value,
4053
+ onChange,
4054
+ options,
4055
+ className = ""
4056
+ }) => {
4057
+ return /* @__PURE__ */ jsx23(
4058
+ "div",
4059
+ {
4060
+ className: `flex bg-slate-100 p-1 rounded-xl gap-1 w-fit ${className}`,
4061
+ children: options.map((option) => /* @__PURE__ */ jsx23(
4062
+ "button",
4063
+ {
4064
+ onClick: () => onChange(option.value),
4065
+ className: `px-4 py-1.5 rounded-lg text-[10px] font-bold uppercase tracking-wider transition-all duration-200 whitespace-nowrap ${value === option.value ? "bg-white text-emerald-600 shadow-sm" : "text-slate-400 hover:text-slate-600"}`,
4066
+ children: option.label
4067
+ },
4068
+ String(option.value)
4069
+ ))
4070
+ }
4071
+ );
4072
+ };
4073
+ var tripleFilter_default = ITTripleFilter;
4074
+
3823
4075
  // src/types/toast.types.ts
3824
4076
  var positionStyles = {
3825
4077
  "top-right": "top-4 right-4",
@@ -3831,10 +4083,10 @@ var positionStyles = {
3831
4083
  };
3832
4084
 
3833
4085
  // src/components/toast/toast.tsx
3834
- import clsx15 from "clsx";
3835
- import { useEffect as useEffect13, useState as useState16 } from "react";
3836
- import { FaTimesCircle, FaCheckCircle, FaExclamationTriangle, FaInfoCircle, FaTimes as FaTimes4 } from "react-icons/fa";
3837
- import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
4086
+ import clsx17 from "clsx";
4087
+ import { useEffect as useEffect14, useState as useState18 } from "react";
4088
+ import { FaTimesCircle, FaCheckCircle, FaExclamationTriangle, FaInfoCircle, FaTimes as FaTimes5 } from "react-icons/fa";
4089
+ import { jsx as jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
3838
4090
  function ITToast({
3839
4091
  message,
3840
4092
  type = "info",
@@ -3842,8 +4094,8 @@ function ITToast({
3842
4094
  position = "top-right",
3843
4095
  onClose
3844
4096
  }) {
3845
- const [isVisible, setIsVisible] = useState16(true);
3846
- useEffect13(() => {
4097
+ const [isVisible, setIsVisible] = useState18(true);
4098
+ useEffect14(() => {
3847
4099
  const timer = setTimeout(() => {
3848
4100
  setIsVisible(false);
3849
4101
  setTimeout(() => {
@@ -3863,21 +4115,21 @@ function ITToast({
3863
4115
  const TypeIcon = () => {
3864
4116
  switch (type) {
3865
4117
  case "success":
3866
- return /* @__PURE__ */ jsx21(FaCheckCircle, { className: "w-5 h-5 flex-shrink-0" });
4118
+ return /* @__PURE__ */ jsx24(FaCheckCircle, { className: "w-5 h-5 flex-shrink-0" });
3867
4119
  case "error":
3868
4120
  case "danger":
3869
- return /* @__PURE__ */ jsx21(FaTimesCircle, { className: "w-5 h-5 flex-shrink-0" });
4121
+ return /* @__PURE__ */ jsx24(FaTimesCircle, { className: "w-5 h-5 flex-shrink-0" });
3870
4122
  case "warning":
3871
- return /* @__PURE__ */ jsx21(FaExclamationTriangle, { className: "w-5 h-5 flex-shrink-0" });
4123
+ return /* @__PURE__ */ jsx24(FaExclamationTriangle, { className: "w-5 h-5 flex-shrink-0" });
3872
4124
  case "info":
3873
4125
  default:
3874
- return /* @__PURE__ */ jsx21(FaInfoCircle, { className: "w-5 h-5 flex-shrink-0" });
4126
+ return /* @__PURE__ */ jsx24(FaInfoCircle, { className: "w-5 h-5 flex-shrink-0" });
3875
4127
  }
3876
4128
  };
3877
- return /* @__PURE__ */ jsxs14(
4129
+ return /* @__PURE__ */ jsxs16(
3878
4130
  "div",
3879
4131
  {
3880
- className: clsx15(
4132
+ className: clsx17(
3881
4133
  "fixed z-50 p-4 rounded-xl shadow-xl flex items-center justify-between gap-4 transition-all duration-300 text-white min-w-[300px]",
3882
4134
  positionStyles[position],
3883
4135
  {
@@ -3890,17 +4142,17 @@ function ITToast({
3890
4142
  style: { backgroundColor },
3891
4143
  role: "alert",
3892
4144
  children: [
3893
- /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-3", children: [
3894
- /* @__PURE__ */ jsx21(TypeIcon, {}),
3895
- /* @__PURE__ */ jsx21("span", { className: "font-medium text-sm sm:text-base leading-snug", children: message })
4145
+ /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
4146
+ /* @__PURE__ */ jsx24(TypeIcon, {}),
4147
+ /* @__PURE__ */ jsx24("span", { className: "font-medium text-sm sm:text-base leading-snug", children: message })
3896
4148
  ] }),
3897
- /* @__PURE__ */ jsx21(
4149
+ /* @__PURE__ */ jsx24(
3898
4150
  "button",
3899
4151
  {
3900
4152
  onClick: handleClose,
3901
4153
  className: "p-1.5 rounded-full hover:bg-black/15 transition-colors focus:outline-none focus:ring-2 focus:ring-white/50",
3902
4154
  "aria-label": "Close notification",
3903
- children: /* @__PURE__ */ jsx21(FaTimes4, { className: "w-4 h-4" })
4155
+ children: /* @__PURE__ */ jsx24(FaTimes5, { className: "w-4 h-4" })
3904
4156
  }
3905
4157
  )
3906
4158
  ]
@@ -3909,10 +4161,10 @@ function ITToast({
3909
4161
  }
3910
4162
 
3911
4163
  // src/components/dropfile/dropfile.tsx
3912
- import { useState as useState17, useEffect as useEffect14, useRef as useRef7 } from "react";
4164
+ import { useState as useState19, useEffect as useEffect15, useRef as useRef8 } from "react";
3913
4165
  import { useDropzone } from "react-dropzone";
3914
- import clsx16 from "clsx";
3915
- import { Fragment as Fragment5, jsx as jsx22, jsxs as jsxs15 } from "react/jsx-runtime";
4166
+ import clsx18 from "clsx";
4167
+ import { Fragment as Fragment5, jsx as jsx25, jsxs as jsxs17 } from "react/jsx-runtime";
3916
4168
  var ITDropfile = ({
3917
4169
  onFileSelect,
3918
4170
  onCancel,
@@ -3925,15 +4177,15 @@ var ITDropfile = ({
3925
4177
  onStatusChange,
3926
4178
  initialPreviewUrl
3927
4179
  }) => {
3928
- const [selectedFile, setSelectedFile] = useState17(null);
3929
- const [fileType, setFileType] = useState17(null);
3930
- const [imagePreview, setImagePreview] = useState17(initialPreviewUrl || null);
3931
- const [isConfirmed, setIsConfirmed] = useState17(false);
3932
- const [internalUploadStatus, setInternalUploadStatus] = useState17(
4180
+ const [selectedFile, setSelectedFile] = useState19(null);
4181
+ const [fileType, setFileType] = useState19(null);
4182
+ const [imagePreview, setImagePreview] = useState19(initialPreviewUrl || null);
4183
+ const [isConfirmed, setIsConfirmed] = useState19(false);
4184
+ const [internalUploadStatus, setInternalUploadStatus] = useState19(
3933
4185
  initialPreviewUrl ? "subido" /* UPLOADED */ : "pendiente" /* PENDING */
3934
4186
  );
3935
- const canvasRef = useRef7(null);
3936
- useEffect14(() => {
4187
+ const canvasRef = useRef8(null);
4188
+ useEffect15(() => {
3937
4189
  if (initialPreviewUrl && !selectedFile) {
3938
4190
  setImagePreview(initialPreviewUrl);
3939
4191
  if (externalStatus === void 0) setInternalUploadStatus("subido" /* UPLOADED */);
@@ -4022,9 +4274,9 @@ var ITDropfile = ({
4022
4274
  }
4023
4275
  };
4024
4276
  const { label, color, dotColor } = config[status];
4025
- return /* @__PURE__ */ jsxs15("div", { className: `inline-flex items-center gap-2 px-2.5 py-1 rounded-full border ${color}`, children: [
4026
- /* @__PURE__ */ jsx22("div", { className: `w-2 h-2 rounded-full ${dotColor}` }),
4027
- /* @__PURE__ */ jsx22("span", { className: "text-xs font-medium flex items-center gap-1.5", children: label })
4277
+ return /* @__PURE__ */ jsxs17("div", { className: `inline-flex items-center gap-2 px-2.5 py-1 rounded-full border ${color}`, children: [
4278
+ /* @__PURE__ */ jsx25("div", { className: `w-2 h-2 rounded-full ${dotColor}` }),
4279
+ /* @__PURE__ */ jsx25("span", { className: "text-xs font-medium flex items-center gap-1.5", children: label })
4028
4280
  ] });
4029
4281
  };
4030
4282
  const onDrop = (acceptedFiles) => {
@@ -4056,12 +4308,12 @@ var ITDropfile = ({
4056
4308
  accept: getAcceptedFileTypes(),
4057
4309
  maxFiles: 1
4058
4310
  });
4059
- useEffect14(() => {
4311
+ useEffect15(() => {
4060
4312
  const renderPDF = async () => {
4061
4313
  };
4062
4314
  renderPDF();
4063
4315
  }, [selectedFile, fileType]);
4064
- useEffect14(() => {
4316
+ useEffect15(() => {
4065
4317
  return () => {
4066
4318
  if (imagePreview) {
4067
4319
  URL.revokeObjectURL(imagePreview);
@@ -4099,19 +4351,19 @@ var ITDropfile = ({
4099
4351
  handleCancel();
4100
4352
  };
4101
4353
  const isImage = fileType && fileType.startsWith("image/");
4102
- return /* @__PURE__ */ jsxs15("div", { className: clsx16("w-full transition-all duration-300", containerClassName), children: [
4103
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between mb-2", children: [
4104
- /* @__PURE__ */ jsxs15("label", { className: "block text-sm font-semibold text-gray-700", children: [
4354
+ return /* @__PURE__ */ jsxs17("div", { className: clsx18("w-full transition-all duration-300", containerClassName), children: [
4355
+ /* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-between mb-2", children: [
4356
+ /* @__PURE__ */ jsxs17("label", { className: "block text-sm font-semibold text-gray-700", children: [
4105
4357
  "Subir archivo ",
4106
- /* @__PURE__ */ jsxs15("span", { className: "text-gray-400 font-normal text-xs", children: [
4358
+ /* @__PURE__ */ jsxs17("span", { className: "text-gray-400 font-normal text-xs", children: [
4107
4359
  "(",
4108
4360
  getFileExtensions(),
4109
4361
  ")"
4110
4362
  ] })
4111
4363
  ] }),
4112
- showStatusBadge && selectedFile && /* @__PURE__ */ jsx22(StatusBadge, { status: uploadStatus })
4364
+ showStatusBadge && selectedFile && /* @__PURE__ */ jsx25(StatusBadge, { status: uploadStatus })
4113
4365
  ] }),
4114
- !selectedFile && !imagePreview ? /* @__PURE__ */ jsxs15(
4366
+ !selectedFile && !imagePreview ? /* @__PURE__ */ jsxs17(
4115
4367
  "div",
4116
4368
  {
4117
4369
  ...getRootProps(),
@@ -4121,41 +4373,41 @@ var ITDropfile = ({
4121
4373
  ${isDragActive ? "border-primary-500 bg-primary-50 scale-[1.01]" : "border-gray-300 bg-white hover:border-primary-400 hover:bg-gray-50"}
4122
4374
  `,
4123
4375
  children: [
4124
- /* @__PURE__ */ jsx22("input", { ...getInputProps() }),
4125
- /* @__PURE__ */ jsx22("div", { className: `mb-3 p-3 rounded-full transition-colors duration-300 ${isDragActive ? "bg-primary-100" : "bg-gray-100 group-hover:bg-primary-50"}`, children: /* @__PURE__ */ jsx22(
4376
+ /* @__PURE__ */ jsx25("input", { ...getInputProps() }),
4377
+ /* @__PURE__ */ jsx25("div", { className: `mb-3 p-3 rounded-full transition-colors duration-300 ${isDragActive ? "bg-primary-100" : "bg-gray-100 group-hover:bg-primary-50"}`, children: /* @__PURE__ */ jsx25(
4126
4378
  "svg",
4127
4379
  {
4128
4380
  className: `w-6 h-6 transition-colors duration-300 ${isDragActive ? "text-primary-600" : "text-gray-400 group-hover:text-primary-500"}`,
4129
4381
  fill: "none",
4130
4382
  viewBox: "0 0 24 24",
4131
4383
  stroke: "currentColor",
4132
- children: /* @__PURE__ */ jsx22("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12" })
4384
+ children: /* @__PURE__ */ jsx25("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12" })
4133
4385
  }
4134
4386
  ) }),
4135
- /* @__PURE__ */ jsx22("div", { className: "text-center space-y-1", children: /* @__PURE__ */ jsx22("p", { className: `text-sm font-medium transition-colors duration-300 ${isDragActive ? "text-primary-700" : "text-gray-700"}`, children: isDragActive ? "\xA1Suelta aqu\xED!" : "Haz clic o arrastra" }) })
4387
+ /* @__PURE__ */ jsx25("div", { className: "text-center space-y-1", children: /* @__PURE__ */ jsx25("p", { className: `text-sm font-medium transition-colors duration-300 ${isDragActive ? "text-primary-700" : "text-gray-700"}`, children: isDragActive ? "\xA1Suelta aqu\xED!" : "Haz clic o arrastra" }) })
4136
4388
  ]
4137
4389
  }
4138
- ) : /* @__PURE__ */ jsxs15("div", { className: "w-full bg-white border border-gray-200 rounded-xl shadow-sm overflow-hidden animate-fade-in", children: [
4139
- /* @__PURE__ */ jsx22("div", { className: "flex items-center justify-between p-3 bg-gray-50 border-b border-gray-100", children: /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3 overflow-hidden", children: [
4140
- /* @__PURE__ */ jsx22("div", { className: "flex-shrink-0 w-8 h-8 rounded-lg bg-primary-100 flex items-center justify-center text-primary-600", children: selectedFile && fileType?.startsWith("image/") || !selectedFile && imagePreview ? /* @__PURE__ */ jsx22("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx22("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" }) }) : /* @__PURE__ */ jsx22("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx22("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }) }),
4141
- /* @__PURE__ */ jsxs15("div", { className: "min-w-0", children: [
4142
- /* @__PURE__ */ jsx22("p", { className: "text-xs font-medium text-gray-900 truncate", title: selectedFile?.name || "Imagen cargada", children: selectedFile?.name || "Imagen cargada" }),
4143
- /* @__PURE__ */ jsx22("p", { className: "text-[10px] text-gray-500", children: selectedFile ? (selectedFile.size / 1024 / 1024).toFixed(2) + " MB" : "" })
4390
+ ) : /* @__PURE__ */ jsxs17("div", { className: "w-full bg-white border border-gray-200 rounded-xl shadow-sm overflow-hidden animate-fade-in", children: [
4391
+ /* @__PURE__ */ jsx25("div", { className: "flex items-center justify-between p-3 bg-gray-50 border-b border-gray-100", children: /* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-3 overflow-hidden", children: [
4392
+ /* @__PURE__ */ jsx25("div", { className: "flex-shrink-0 w-8 h-8 rounded-lg bg-primary-100 flex items-center justify-center text-primary-600", children: selectedFile && fileType?.startsWith("image/") || !selectedFile && imagePreview ? /* @__PURE__ */ jsx25("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx25("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" }) }) : /* @__PURE__ */ jsx25("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx25("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }) }),
4393
+ /* @__PURE__ */ jsxs17("div", { className: "min-w-0", children: [
4394
+ /* @__PURE__ */ jsx25("p", { className: "text-xs font-medium text-gray-900 truncate", title: selectedFile?.name || "Imagen cargada", children: selectedFile?.name || "Imagen cargada" }),
4395
+ /* @__PURE__ */ jsx25("p", { className: "text-[10px] text-gray-500", children: selectedFile ? (selectedFile.size / 1024 / 1024).toFixed(2) + " MB" : "" })
4144
4396
  ] })
4145
4397
  ] }) }),
4146
- /* @__PURE__ */ jsx22("div", { className: clsx16("relative bg-gray-100 flex items-center justify-center", !contentClassName ? "max-h-[200px] min-h-[100px] overflow-auto" : contentClassName), children: selectedFile && fileType?.startsWith("image/") || !selectedFile && imagePreview ? /* @__PURE__ */ jsx22(
4398
+ /* @__PURE__ */ jsx25("div", { className: clsx18("relative bg-gray-100 flex items-center justify-center", !contentClassName ? "max-h-[200px] min-h-[100px] overflow-auto" : contentClassName), children: selectedFile && fileType?.startsWith("image/") || !selectedFile && imagePreview ? /* @__PURE__ */ jsx25(
4147
4399
  "img",
4148
4400
  {
4149
4401
  src: imagePreview,
4150
4402
  alt: "Vista previa",
4151
4403
  className: "w-full h-full object-contain max-h-[200px]"
4152
4404
  }
4153
- ) : /* @__PURE__ */ jsxs15("div", { className: "py-8 flex flex-col items-center text-gray-400", children: [
4154
- /* @__PURE__ */ jsx22("svg", { className: "w-10 h-10 mb-2 opacity-50", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx22("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z" }) }),
4155
- /* @__PURE__ */ jsx22("span", { className: "text-xs", children: "Sin vista previa" })
4405
+ ) : /* @__PURE__ */ jsxs17("div", { className: "py-8 flex flex-col items-center text-gray-400", children: [
4406
+ /* @__PURE__ */ jsx25("svg", { className: "w-10 h-10 mb-2 opacity-50", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx25("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z" }) }),
4407
+ /* @__PURE__ */ jsx25("span", { className: "text-xs", children: "Sin vista previa" })
4156
4408
  ] }) }),
4157
- /* @__PURE__ */ jsx22("div", { className: "px-3 py-2 bg-white border-t border-gray-100 flex justify-end gap-2", children: !isConfirmed ? /* @__PURE__ */ jsxs15(Fragment5, { children: [
4158
- /* @__PURE__ */ jsx22(
4409
+ /* @__PURE__ */ jsx25("div", { className: "px-3 py-2 bg-white border-t border-gray-100 flex justify-end gap-2", children: !isConfirmed ? /* @__PURE__ */ jsxs17(Fragment5, { children: [
4410
+ /* @__PURE__ */ jsx25(
4159
4411
  "button",
4160
4412
  {
4161
4413
  type: "button",
@@ -4164,31 +4416,31 @@ var ITDropfile = ({
4164
4416
  children: "Cancelar"
4165
4417
  }
4166
4418
  ),
4167
- /* @__PURE__ */ jsxs15(
4419
+ /* @__PURE__ */ jsxs17(
4168
4420
  "button",
4169
4421
  {
4170
4422
  type: "button",
4171
4423
  onClick: handleConfirm,
4172
4424
  className: "px-3 py-1.5 text-xs font-medium text-white bg-primary-600 rounded-lg hover:bg-primary-700 shadow-sm transition-colors flex items-center gap-1",
4173
4425
  children: [
4174
- /* @__PURE__ */ jsx22("span", { children: "Confirmar" }),
4175
- /* @__PURE__ */ jsx22("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx22("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) })
4426
+ /* @__PURE__ */ jsx25("span", { children: "Confirmar" }),
4427
+ /* @__PURE__ */ jsx25("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx25("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) })
4176
4428
  ]
4177
4429
  }
4178
4430
  )
4179
- ] }) : /* @__PURE__ */ jsxs15(
4431
+ ] }) : /* @__PURE__ */ jsxs17(
4180
4432
  "button",
4181
4433
  {
4182
4434
  type: "button",
4183
4435
  onClick: handleDelete,
4184
4436
  className: "px-3 py-1.5 text-xs font-medium text-danger-600 bg-danger-50 border border-danger-100 rounded-lg hover:bg-danger-100 transition-colors flex items-center gap-1",
4185
4437
  children: [
4186
- /* @__PURE__ */ jsx22("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx22("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" }) }),
4187
- /* @__PURE__ */ jsx22("span", { children: "Eliminar" })
4438
+ /* @__PURE__ */ jsx25("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx25("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" }) }),
4439
+ /* @__PURE__ */ jsx25("span", { children: "Eliminar" })
4188
4440
  ]
4189
4441
  }
4190
4442
  ) }),
4191
- uploadStatus === "subiendo" /* UPLOADING */ && /* @__PURE__ */ jsx22("div", { className: "px-4 pb-2", children: /* @__PURE__ */ jsx22("div", { className: "w-full bg-gray-200 rounded-full h-1.5", children: /* @__PURE__ */ jsx22(
4443
+ uploadStatus === "subiendo" /* UPLOADING */ && /* @__PURE__ */ jsx25("div", { className: "px-4 pb-2", children: /* @__PURE__ */ jsx25("div", { className: "w-full bg-gray-200 rounded-full h-1.5", children: /* @__PURE__ */ jsx25(
4192
4444
  "div",
4193
4445
  {
4194
4446
  className: "bg-primary-600 h-1.5 rounded-full transition-all duration-1000 ease-out",
@@ -4204,12 +4456,12 @@ var ITDropfile = ({
4204
4456
  var dropfile_default = ITDropfile;
4205
4457
 
4206
4458
  // src/components/layout/layout.tsx
4207
- import { useState as useState20 } from "react";
4459
+ import { useState as useState22 } from "react";
4208
4460
 
4209
4461
  // src/components/topbar/topbar.tsx
4210
4462
  import { FaUserCircle as FaUserCircle2, FaBars } from "react-icons/fa";
4211
- import { useRef as useRef8, useState as useState18 } from "react";
4212
- import { jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
4463
+ import { useRef as useRef9, useState as useState20 } from "react";
4464
+ import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
4213
4465
  function ITTopBar({
4214
4466
  logo,
4215
4467
  logoText,
@@ -4219,10 +4471,10 @@ function ITTopBar({
4219
4471
  navItems,
4220
4472
  onNavItemClick
4221
4473
  }) {
4222
- const [isUserMenuOpen, setIsUserMenuOpen] = useState18(false);
4223
- const userMenuRef = useRef8(null);
4474
+ const [isUserMenuOpen, setIsUserMenuOpen] = useState20(false);
4475
+ const userMenuRef = useRef9(null);
4224
4476
  useClickOutside_default(userMenuRef, () => setIsUserMenuOpen(false));
4225
- return /* @__PURE__ */ jsx23(
4477
+ return /* @__PURE__ */ jsx26(
4226
4478
  "header",
4227
4479
  {
4228
4480
  className: "sticky top-0 z-40 backdrop-blur-md transition-all duration-300",
@@ -4231,9 +4483,9 @@ function ITTopBar({
4231
4483
  borderBottom: `1px solid ${theme.topbar?.borderColor || "#e2e8f0"}`,
4232
4484
  boxShadow: theme.topbar?.shadow || "none"
4233
4485
  },
4234
- children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between h-[72px] px-6 lg:px-8", children: [
4235
- /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-5", children: [
4236
- showMobileMenuButton && /* @__PURE__ */ jsx23(
4486
+ children: /* @__PURE__ */ jsxs18("div", { className: "flex items-center justify-between h-[72px] px-6 lg:px-8", children: [
4487
+ /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-5", children: [
4488
+ showMobileMenuButton && /* @__PURE__ */ jsx26(
4237
4489
  "button",
4238
4490
  {
4239
4491
  className: "lg:hidden p-2.5 rounded-xl transition-colors duration-200",
@@ -4243,12 +4495,12 @@ function ITTopBar({
4243
4495
  onMouseEnter: (e) => e.currentTarget.style.backgroundColor = theme.topbar?.userMenu?.hoverBackground || "#f1f5f9",
4244
4496
  onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "transparent",
4245
4497
  onClick: onToggleMobileMenu,
4246
- children: /* @__PURE__ */ jsx23(FaBars, { className: "w-[1.125rem] h-[1.125rem]" })
4498
+ children: /* @__PURE__ */ jsx26(FaBars, { className: "w-[1.125rem] h-[1.125rem]" })
4247
4499
  }
4248
4500
  ),
4249
- /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
4250
- logo && /* @__PURE__ */ jsx23("div", { className: "flex-shrink-0 drop-shadow-sm", children: logo }),
4251
- logoText && /* @__PURE__ */ jsx23(
4501
+ /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-3", children: [
4502
+ logo && /* @__PURE__ */ jsx26("div", { className: "flex-shrink-0 drop-shadow-sm", children: logo }),
4503
+ logoText && /* @__PURE__ */ jsx26(
4252
4504
  "span",
4253
4505
  {
4254
4506
  className: "text-[1.15rem] font-bold tracking-tight",
@@ -4257,7 +4509,7 @@ function ITTopBar({
4257
4509
  }
4258
4510
  )
4259
4511
  ] }),
4260
- navItems && navItems.length > 0 && /* @__PURE__ */ jsx23("nav", { className: "hidden md:flex ml-8 space-x-1 border-l pl-8", style: { borderColor: theme.topbar?.borderColor || "#e2e8f0" }, children: navItems.map((item) => /* @__PURE__ */ jsx23(
4512
+ navItems && navItems.length > 0 && /* @__PURE__ */ jsx26("nav", { className: "hidden md:flex ml-8 space-x-1 border-l pl-8", style: { borderColor: theme.topbar?.borderColor || "#e2e8f0" }, children: navItems.map((item) => /* @__PURE__ */ jsx26(
4261
4513
  "button",
4262
4514
  {
4263
4515
  onClick: () => onNavItemClick?.(item.id),
@@ -4271,16 +4523,16 @@ function ITTopBar({
4271
4523
  e.currentTarget.style.color = theme.topbar?.textColor || "#475569";
4272
4524
  e.currentTarget.style.backgroundColor = "transparent";
4273
4525
  },
4274
- children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
4275
- item.icon && /* @__PURE__ */ jsx23("span", { className: "opacity-70", children: item.icon }),
4526
+ children: /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2", children: [
4527
+ item.icon && /* @__PURE__ */ jsx26("span", { className: "opacity-70", children: item.icon }),
4276
4528
  item.label
4277
4529
  ] })
4278
4530
  },
4279
4531
  item.id
4280
4532
  )) })
4281
4533
  ] }),
4282
- userMenu && /* @__PURE__ */ jsxs16("div", { className: "relative", children: [
4283
- /* @__PURE__ */ jsxs16(
4534
+ userMenu && /* @__PURE__ */ jsxs18("div", { className: "relative", children: [
4535
+ /* @__PURE__ */ jsxs18(
4284
4536
  "button",
4285
4537
  {
4286
4538
  type: "button",
@@ -4296,19 +4548,19 @@ function ITTopBar({
4296
4548
  },
4297
4549
  onClick: () => setIsUserMenuOpen(!isUserMenuOpen),
4298
4550
  children: [
4299
- /* @__PURE__ */ jsxs16("div", { className: "relative", children: [
4300
- userMenu.userImage ? /* @__PURE__ */ jsx23(
4551
+ /* @__PURE__ */ jsxs18("div", { className: "relative", children: [
4552
+ userMenu.userImage ? /* @__PURE__ */ jsx26(
4301
4553
  "img",
4302
4554
  {
4303
4555
  className: "w-9 h-9 rounded-full object-cover ring-2 ring-white shadow-sm",
4304
4556
  src: userMenu.userImage,
4305
4557
  alt: "Current user"
4306
4558
  }
4307
- ) : /* @__PURE__ */ jsx23("div", { className: "w-9 h-9 rounded-full bg-slate-100 flex items-center justify-center ring-2 ring-white shadow-sm", children: /* @__PURE__ */ jsx23(FaUserCircle2, { className: "w-6 h-6", style: { color: theme.topbar?.iconColor || "#94a3b8" } }) }),
4308
- /* @__PURE__ */ jsx23("div", { className: "absolute bottom-0 right-0 w-2.5 h-2.5 bg-green-500 border-2 border-white rounded-full" })
4559
+ ) : /* @__PURE__ */ jsx26("div", { className: "w-9 h-9 rounded-full bg-slate-100 flex items-center justify-center ring-2 ring-white shadow-sm", children: /* @__PURE__ */ jsx26(FaUserCircle2, { className: "w-6 h-6", style: { color: theme.topbar?.iconColor || "#94a3b8" } }) }),
4560
+ /* @__PURE__ */ jsx26("div", { className: "absolute bottom-0 right-0 w-2.5 h-2.5 bg-green-500 border-2 border-white rounded-full" })
4309
4561
  ] }),
4310
- /* @__PURE__ */ jsxs16("div", { className: "hidden sm:flex flex-col text-left py-0.5", children: [
4311
- /* @__PURE__ */ jsx23(
4562
+ /* @__PURE__ */ jsxs18("div", { className: "hidden sm:flex flex-col text-left py-0.5", children: [
4563
+ /* @__PURE__ */ jsx26(
4312
4564
  "span",
4313
4565
  {
4314
4566
  className: "font-semibold text-[0.85rem] leading-tight",
@@ -4316,7 +4568,7 @@ function ITTopBar({
4316
4568
  children: userMenu.userName
4317
4569
  }
4318
4570
  ),
4319
- /* @__PURE__ */ jsx23(
4571
+ /* @__PURE__ */ jsx26(
4320
4572
  "span",
4321
4573
  {
4322
4574
  className: "text-[0.7rem] font-medium",
@@ -4328,7 +4580,7 @@ function ITTopBar({
4328
4580
  ]
4329
4581
  }
4330
4582
  ),
4331
- /* @__PURE__ */ jsxs16(
4583
+ /* @__PURE__ */ jsxs18(
4332
4584
  "div",
4333
4585
  {
4334
4586
  ref: userMenuRef,
@@ -4341,15 +4593,15 @@ function ITTopBar({
4341
4593
  border: `1px solid ${theme.topbar?.userMenu?.dropdown?.borderColor || "#f1f5f9"}`
4342
4594
  },
4343
4595
  children: [
4344
- /* @__PURE__ */ jsxs16("div", { className: "px-5 py-4 border-b bg-slate-50/50", style: { borderColor: theme.topbar?.userMenu?.dropdown?.borderColor || "#f1f5f9" }, children: [
4345
- /* @__PURE__ */ jsx23("span", { className: "block font-bold text-[0.9rem]", style: { color: theme.topbar?.userMenu?.textColor || "#0f172a" }, children: userMenu.userName }),
4346
- /* @__PURE__ */ jsx23("span", { className: "block text-xs font-medium truncate mt-0.5", style: { color: theme.topbar?.userMenu?.subtitleColor || "#64748b" }, children: userMenu.userEmail })
4596
+ /* @__PURE__ */ jsxs18("div", { className: "px-5 py-4 border-b bg-slate-50/50", style: { borderColor: theme.topbar?.userMenu?.dropdown?.borderColor || "#f1f5f9" }, children: [
4597
+ /* @__PURE__ */ jsx26("span", { className: "block font-bold text-[0.9rem]", style: { color: theme.topbar?.userMenu?.textColor || "#0f172a" }, children: userMenu.userName }),
4598
+ /* @__PURE__ */ jsx26("span", { className: "block text-xs font-medium truncate mt-0.5", style: { color: theme.topbar?.userMenu?.subtitleColor || "#64748b" }, children: userMenu.userEmail })
4347
4599
  ] }),
4348
- /* @__PURE__ */ jsx23("ul", { className: "py-2", children: userMenu.menuItems.map((m, i) => {
4600
+ /* @__PURE__ */ jsx26("ul", { className: "py-2", children: userMenu.menuItems.map((m, i) => {
4349
4601
  const isDestructive = m.label.toLowerCase().includes("salir") || m.label.toLowerCase().includes("cerrar") || m.label.toLowerCase().includes("logout");
4350
- return /* @__PURE__ */ jsxs16("li", { className: "px-2", children: [
4351
- i === userMenu.menuItems.length - 1 && isDestructive && i > 0 && /* @__PURE__ */ jsx23("div", { className: "h-px bg-slate-100 my-1 mx-2" }),
4352
- /* @__PURE__ */ jsx23(
4602
+ return /* @__PURE__ */ jsxs18("li", { className: "px-2", children: [
4603
+ i === userMenu.menuItems.length - 1 && isDestructive && i > 0 && /* @__PURE__ */ jsx26("div", { className: "h-px bg-slate-100 my-1 mx-2" }),
4604
+ /* @__PURE__ */ jsx26(
4353
4605
  "button",
4354
4606
  {
4355
4607
  onClick: (e) => {
@@ -4379,22 +4631,24 @@ function ITTopBar({
4379
4631
  }
4380
4632
 
4381
4633
  // src/components/sidebar/sidebar.tsx
4382
- import { useEffect as useEffect15, useRef as useRef9, useState as useState19 } from "react";
4634
+ import { useEffect as useEffect16, useRef as useRef10, useState as useState21 } from "react";
4383
4635
  import { FaChevronDown as FaChevronDown2 } from "react-icons/fa";
4384
- import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
4636
+ import { jsx as jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
4385
4637
  function ITSidebar({
4386
4638
  navigationItems = [],
4387
4639
  isCollapsed = false,
4388
4640
  onToggleCollapse,
4389
4641
  className = "",
4390
- visibleOnMobile = false
4642
+ visibleOnMobile = false,
4643
+ onItemClick,
4644
+ onSubItemClick
4391
4645
  }) {
4392
- const [expandedItems, setExpandedItems] = useState19(/* @__PURE__ */ new Set());
4393
- const [isHovering, setIsHovering] = useState19(false);
4394
- const sidebarRef = useRef9(null);
4395
- const hoverTimeoutRef = useRef9(null);
4396
- const leaveTimeoutRef = useRef9(null);
4397
- useEffect15(() => {
4646
+ const [expandedItems, setExpandedItems] = useState21(/* @__PURE__ */ new Set());
4647
+ const [isHovering, setIsHovering] = useState21(false);
4648
+ const sidebarRef = useRef10(null);
4649
+ const hoverTimeoutRef = useRef10(null);
4650
+ const leaveTimeoutRef = useRef10(null);
4651
+ useEffect16(() => {
4398
4652
  const handleMouseEnter = () => {
4399
4653
  if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
4400
4654
  if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);
@@ -4428,13 +4682,14 @@ function ITSidebar({
4428
4682
  const handleItemClick = (item) => {
4429
4683
  if (item.subitems && item.subitems.length > 0) {
4430
4684
  toggleExpanded(item.id);
4431
- } else if (item.action) {
4432
- item.action();
4685
+ } else {
4686
+ if (item.action) item.action();
4687
+ if (onItemClick) onItemClick(item);
4433
4688
  }
4434
4689
  };
4435
4690
  const isSidebarCollapsed = visibleOnMobile ? false : !isHovering && isCollapsed;
4436
4691
  const sidebarWidth = isSidebarCollapsed ? "w-[88px]" : "w-[280px]";
4437
- return /* @__PURE__ */ jsx24(
4692
+ return /* @__PURE__ */ jsx27(
4438
4693
  "aside",
4439
4694
  {
4440
4695
  ref: sidebarRef,
@@ -4453,8 +4708,8 @@ function ITSidebar({
4453
4708
  WebkitBackdropFilter: "blur(12px)",
4454
4709
  backdropFilter: "blur(12px)"
4455
4710
  },
4456
- children: /* @__PURE__ */ jsx24("nav", { className: "flex-1 py-6 overflow-y-auto overflow-x-hidden custom-scrollbar px-4", children: /* @__PURE__ */ jsx24("ul", { className: "space-y-2", children: navigationItems.map((item) => /* @__PURE__ */ jsxs17("li", { className: "relative group/navitem", children: [
4457
- /* @__PURE__ */ jsxs17(
4711
+ children: /* @__PURE__ */ jsx27("nav", { className: "flex-1 py-6 overflow-y-auto overflow-x-hidden custom-scrollbar px-4", children: /* @__PURE__ */ jsx27("ul", { className: "space-y-2", children: navigationItems.map((item) => /* @__PURE__ */ jsxs19("li", { className: "relative group/navitem", children: [
4712
+ /* @__PURE__ */ jsxs19(
4458
4713
  "div",
4459
4714
  {
4460
4715
  className: `flex items-center cursor-pointer
@@ -4475,15 +4730,15 @@ function ITSidebar({
4475
4730
  },
4476
4731
  onClick: () => handleItemClick(item),
4477
4732
  children: [
4478
- item.isActive && !isSidebarCollapsed && /* @__PURE__ */ jsx24(
4733
+ item.isActive && !isSidebarCollapsed && /* @__PURE__ */ jsx27(
4479
4734
  "div",
4480
4735
  {
4481
4736
  className: "absolute left-0 top-1/4 bottom-1/4 w-[3px] rounded-r-full transition-all",
4482
4737
  style: { backgroundColor: theme.sidebar?.active?.iconColor || "#10b981", boxShadow: `0 0 10px ${theme.sidebar?.active?.iconColor || "#10b981"}` }
4483
4738
  }
4484
4739
  ),
4485
- /* @__PURE__ */ jsxs17("div", { className: `flex items-center ${!isSidebarCollapsed ? "gap-3.5" : "justify-center"} relative z-10 w-full`, children: [
4486
- item.icon && /* @__PURE__ */ jsx24(
4740
+ /* @__PURE__ */ jsxs19("div", { className: `flex items-center ${!isSidebarCollapsed ? "gap-3.5" : "justify-center"} relative z-10 w-full`, children: [
4741
+ item.icon && /* @__PURE__ */ jsx27(
4487
4742
  "div",
4488
4743
  {
4489
4744
  className: `transition-all duration-300 flex-shrink-0 flex items-center justify-center`,
@@ -4496,7 +4751,7 @@ function ITSidebar({
4496
4751
  children: item.icon
4497
4752
  }
4498
4753
  ),
4499
- !isSidebarCollapsed && /* @__PURE__ */ jsx24(
4754
+ !isSidebarCollapsed && /* @__PURE__ */ jsx27(
4500
4755
  "span",
4501
4756
  {
4502
4757
  className: `transition-all duration-300 truncate tracking-wide`,
@@ -4509,15 +4764,15 @@ function ITSidebar({
4509
4764
  }
4510
4765
  )
4511
4766
  ] }),
4512
- !isSidebarCollapsed && item.subitems && item.subitems.length > 0 && /* @__PURE__ */ jsx24(
4767
+ !isSidebarCollapsed && item.subitems && item.subitems.length > 0 && /* @__PURE__ */ jsx27(
4513
4768
  "div",
4514
4769
  {
4515
4770
  className: `flex-shrink-0 transition-transform duration-300 ease-[cubic-bezier(0.2,0,0,1)] ${expandedItems.has(item.id) ? "rotate-180" : ""}`,
4516
4771
  style: { color: item.isActive ? theme.sidebar?.active?.color || "#0f172a" : theme.sidebar?.icon?.color || "#64748b", opacity: 0.7 },
4517
- children: /* @__PURE__ */ jsx24(FaChevronDown2, { className: "w-3 h-3" })
4772
+ children: /* @__PURE__ */ jsx27(FaChevronDown2, { className: "w-3 h-3" })
4518
4773
  }
4519
4774
  ),
4520
- item.badge && /* @__PURE__ */ jsx24(
4775
+ item.badge && /* @__PURE__ */ jsx27(
4521
4776
  "span",
4522
4777
  {
4523
4778
  className: `
@@ -4535,7 +4790,7 @@ function ITSidebar({
4535
4790
  ]
4536
4791
  }
4537
4792
  ),
4538
- isSidebarCollapsed && /* @__PURE__ */ jsxs17(
4793
+ isSidebarCollapsed && /* @__PURE__ */ jsxs19(
4539
4794
  "div",
4540
4795
  {
4541
4796
  className: "absolute left-full top-0 ml-4 rounded-2xl opacity-0 invisible group-hover/navitem:opacity-100 group-hover/navitem:visible transition-all duration-300 pointer-events-none z-50 min-w-[220px] overflow-hidden -translate-x-2 group-hover/navitem:translate-x-0 shadow-[0_10px_40px_-10px_rgba(0,0,0,0.15)]",
@@ -4546,30 +4801,33 @@ function ITSidebar({
4546
4801
  backdropFilter: "blur(16px)"
4547
4802
  },
4548
4803
  children: [
4549
- /* @__PURE__ */ jsxs17("div", { className: "px-5 py-4 flex items-center gap-3 font-semibold border-b", style: { borderColor: theme.sidebar?.borderColor || "#e2e8f0", color: theme.sidebar?.active?.color || "#0f172a" }, children: [
4550
- item.icon && /* @__PURE__ */ jsx24("span", { style: { color: theme.sidebar?.active?.iconColor || "#10b981" }, className: "text-xl drop-shadow-sm", children: item.icon }),
4551
- /* @__PURE__ */ jsx24("span", { className: "tracking-wide text-[15px]", children: item.label })
4804
+ /* @__PURE__ */ jsxs19("div", { className: "px-5 py-4 flex items-center gap-3 font-semibold border-b", style: { borderColor: theme.sidebar?.borderColor || "#e2e8f0", color: theme.sidebar?.active?.color || "#0f172a" }, children: [
4805
+ item.icon && /* @__PURE__ */ jsx27("span", { style: { color: theme.sidebar?.active?.iconColor || "#10b981" }, className: "text-xl drop-shadow-sm", children: item.icon }),
4806
+ /* @__PURE__ */ jsx27("span", { className: "tracking-wide text-[15px]", children: item.label })
4552
4807
  ] }),
4553
- item.subitems && item.subitems.length > 0 ? /* @__PURE__ */ jsx24("div", { className: "py-2", children: item.subitems.map((subitem) => /* @__PURE__ */ jsxs17(
4808
+ item.subitems && item.subitems.length > 0 ? /* @__PURE__ */ jsx27("div", { className: "py-2", children: item.subitems.map((subitem) => /* @__PURE__ */ jsxs19(
4554
4809
  "div",
4555
4810
  {
4556
4811
  className: `px-5 py-2.5 text-sm flex items-center gap-3 transition-colors`,
4557
4812
  children: [
4558
- /* @__PURE__ */ jsx24("span", { className: `w-1.5 h-1.5 rounded-full transition-all ${subitem.isActive ? "scale-125" : ""}`, style: { backgroundColor: subitem.isActive ? theme.sidebar?.active?.iconColor || "#10b981" : theme.sidebar?.icon?.color || "#94a3b8" } }),
4559
- /* @__PURE__ */ jsx24("span", { style: { color: subitem.isActive ? theme.sidebar?.active?.color || "#0f172a" : theme.sidebar?.label?.color || "#475569", fontWeight: subitem.isActive ? 600 : 500 }, children: subitem.label })
4813
+ /* @__PURE__ */ jsx27("span", { className: `w-1.5 h-1.5 rounded-full transition-all ${subitem.isActive ? "scale-125" : ""}`, style: { backgroundColor: subitem.isActive ? theme.sidebar?.active?.iconColor || "#10b981" : theme.sidebar?.icon?.color || "#94a3b8" } }),
4814
+ /* @__PURE__ */ jsx27("span", { style: { color: subitem.isActive ? theme.sidebar?.active?.color || "#0f172a" : theme.sidebar?.label?.color || "#475569", fontWeight: subitem.isActive ? 600 : 500 }, children: subitem.label })
4560
4815
  ]
4561
4816
  },
4562
4817
  subitem.id
4563
- )) }) : /* @__PURE__ */ jsx24("div", { className: "px-5 py-3 text-sm text-zinc-500 italic", children: "No hay submen\xFA" })
4818
+ )) }) : /* @__PURE__ */ jsx27("div", { className: "px-5 py-3 text-sm text-zinc-500 italic", children: "No hay submen\xFA" })
4564
4819
  ]
4565
4820
  }
4566
4821
  ),
4567
- !isSidebarCollapsed && item.subitems && item.subitems.length > 0 && /* @__PURE__ */ jsx24("div", { className: `overflow-hidden transition-all duration-400 ease-[cubic-bezier(0.2,0,0,1)] ${expandedItems.has(item.id) ? "max-h-[500px] opacity-100 mt-1" : "max-h-0 opacity-0"}`, children: /* @__PURE__ */ jsx24("ul", { className: "ml-5 pl-4 space-y-1 py-1", style: { borderLeft: `2px solid ${theme.sidebar?.borderColor || "#e2e8f0"}` }, children: item.subitems.map((subitem) => /* @__PURE__ */ jsxs17("li", { className: "relative", children: [
4568
- subitem.isActive && /* @__PURE__ */ jsx24("div", { className: "absolute -left-[18px] top-1/2 -translate-y-1/2 w-4 h-[2px] rounded-r-full", style: { backgroundColor: theme.sidebar?.active?.iconColor || "#10b981" } }),
4569
- /* @__PURE__ */ jsx24(
4822
+ !isSidebarCollapsed && item.subitems && item.subitems.length > 0 && /* @__PURE__ */ jsx27("div", { className: `overflow-hidden transition-all duration-400 ease-[cubic-bezier(0.2,0,0,1)] ${expandedItems.has(item.id) ? "max-h-[500px] opacity-100 mt-1" : "max-h-0 opacity-0"}`, children: /* @__PURE__ */ jsx27("ul", { className: "ml-5 pl-4 space-y-1 py-1", style: { borderLeft: `2px solid ${theme.sidebar?.borderColor || "#e2e8f0"}` }, children: item.subitems.map((subitem) => /* @__PURE__ */ jsxs19("li", { className: "relative", children: [
4823
+ subitem.isActive && /* @__PURE__ */ jsx27("div", { className: "absolute -left-[18px] top-1/2 -translate-y-1/2 w-4 h-[2px] rounded-r-full", style: { backgroundColor: theme.sidebar?.active?.iconColor || "#10b981" } }),
4824
+ /* @__PURE__ */ jsx27(
4570
4825
  "button",
4571
4826
  {
4572
- onClick: subitem.action,
4827
+ onClick: () => {
4828
+ if (subitem.action) subitem.action();
4829
+ if (onSubItemClick) onSubItemClick(subitem);
4830
+ },
4573
4831
  className: `block w-full text-left px-4 py-2 rounded-xl transition-all duration-300`,
4574
4832
  style: {
4575
4833
  color: subitem.isActive ? theme.sidebar?.active?.color || "#0f172a" : theme.sidebar?.label?.color || "#475569",
@@ -4600,7 +4858,7 @@ function ITSidebar({
4600
4858
  }
4601
4859
 
4602
4860
  // src/components/layout/layout.tsx
4603
- import { jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
4861
+ import { jsx as jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
4604
4862
  function ITLayout({
4605
4863
  topBar,
4606
4864
  sidebar,
@@ -4608,10 +4866,10 @@ function ITLayout({
4608
4866
  className = "",
4609
4867
  contentClassName = ""
4610
4868
  }) {
4611
- const [desktopCollapsed, setDesktopCollapsed] = useState20(true);
4612
- const [mobileSidebarOpen, setMobileSidebarOpen] = useState20(false);
4613
- return /* @__PURE__ */ jsxs18("div", { className: `flex flex-col h-screen overflow-hidden w-full ${className}`, children: [
4614
- /* @__PURE__ */ jsx25(
4869
+ const [desktopCollapsed, setDesktopCollapsed] = useState22(true);
4870
+ const [mobileSidebarOpen, setMobileSidebarOpen] = useState22(false);
4871
+ return /* @__PURE__ */ jsxs20("div", { className: `flex flex-col h-screen overflow-hidden w-full ${className}`, children: [
4872
+ /* @__PURE__ */ jsx28(
4615
4873
  ITTopBar,
4616
4874
  {
4617
4875
  ...topBar,
@@ -4619,10 +4877,10 @@ function ITLayout({
4619
4877
  onToggleMobileMenu: () => setMobileSidebarOpen((v) => !v)
4620
4878
  }
4621
4879
  ),
4622
- /* @__PURE__ */ jsxs18("div", { className: "flex flex-1 overflow-hidden relative", style: { backgroundColor: theme.layout?.backgroundColor || "#f8fafc" }, children: [
4623
- /* @__PURE__ */ jsxs18("div", { className: "hidden lg:block relative z-40 h-full", children: [
4624
- /* @__PURE__ */ jsx25("div", { className: "w-[88px] h-full flex-shrink-0" }),
4625
- /* @__PURE__ */ jsx25("div", { className: "absolute top-0 left-0 h-full", children: /* @__PURE__ */ jsx25(
4880
+ /* @__PURE__ */ jsxs20("div", { className: "flex flex-1 overflow-hidden relative", style: { backgroundColor: theme.layout?.backgroundColor || "#f8fafc" }, children: [
4881
+ /* @__PURE__ */ jsxs20("div", { className: "hidden lg:block relative z-40 h-full", children: [
4882
+ /* @__PURE__ */ jsx28("div", { className: "w-[88px] h-full flex-shrink-0" }),
4883
+ /* @__PURE__ */ jsx28("div", { className: "absolute top-0 left-0 h-full", children: /* @__PURE__ */ jsx28(
4626
4884
  ITSidebar,
4627
4885
  {
4628
4886
  ...sidebar,
@@ -4633,31 +4891,33 @@ function ITLayout({
4633
4891
  }
4634
4892
  ) })
4635
4893
  ] }),
4636
- mobileSidebarOpen && /* @__PURE__ */ jsx25(
4894
+ mobileSidebarOpen && /* @__PURE__ */ jsx28(
4637
4895
  "div",
4638
4896
  {
4639
4897
  className: "lg:hidden fixed inset-0 z-50 transition-opacity duration-300 backdrop-blur-sm bg-black/40",
4640
4898
  onClick: () => setMobileSidebarOpen(false),
4641
- children: /* @__PURE__ */ jsx25(
4899
+ children: /* @__PURE__ */ jsx28(
4642
4900
  "div",
4643
4901
  {
4644
- className: "h-full w-auto transform transition-transform duration-300 ease-[cubic-bezier(0.2,0,0,1)]",
4902
+ className: "h-full w-fit flex transform transition-transform duration-300 ease-[cubic-bezier(0.2,0,0,1)]",
4645
4903
  onClick: (e) => e.stopPropagation(),
4646
- children: /* @__PURE__ */ jsx25(
4904
+ children: /* @__PURE__ */ jsx28(
4647
4905
  ITSidebar,
4648
4906
  {
4649
4907
  ...sidebar,
4650
4908
  isCollapsed: false,
4651
4909
  visibleOnMobile: true,
4652
- className: "h-full shadow-2xl",
4653
- onToggleCollapse: () => setMobileSidebarOpen(false)
4910
+ className: "h-full shadow-2xl relative z-[60]",
4911
+ onToggleCollapse: () => setMobileSidebarOpen(false),
4912
+ onItemClick: () => setMobileSidebarOpen(false),
4913
+ onSubItemClick: () => setMobileSidebarOpen(false)
4654
4914
  }
4655
4915
  )
4656
4916
  }
4657
4917
  )
4658
4918
  }
4659
4919
  ),
4660
- /* @__PURE__ */ jsx25("main", { className: "flex-1 overflow-y-auto w-full custom-scrollbar relative z-0", children: /* @__PURE__ */ jsx25(
4920
+ /* @__PURE__ */ jsx28("main", { className: "flex-1 overflow-y-auto w-full custom-scrollbar relative z-0", children: /* @__PURE__ */ jsx28(
4661
4921
  "div",
4662
4922
  {
4663
4923
  className: `mx-auto w-full h-full ${contentClassName}`,
@@ -4678,7 +4938,7 @@ var sizeClasses = {
4678
4938
  };
4679
4939
 
4680
4940
  // src/components/loader/loader.tsx
4681
- import { jsx as jsx26 } from "react/jsx-runtime";
4941
+ import { jsx as jsx29 } from "react/jsx-runtime";
4682
4942
  function ITLoader({
4683
4943
  size = "md",
4684
4944
  variant = "spinner",
@@ -4693,22 +4953,22 @@ function ITLoader({
4693
4953
  const bgStyle = isCssValue ? { backgroundColor: resolvedColor } : {};
4694
4954
  const colorClass = !isCssValue ? color : "";
4695
4955
  if (variant === "spinner") {
4696
- return /* @__PURE__ */ jsx26(
4956
+ return /* @__PURE__ */ jsx29(
4697
4957
  "div",
4698
4958
  {
4699
4959
  className: `inline-block ${sizeClasses[size]} animate-spin rounded-full border-2 border-solid border-current border-r-transparent align-[-0.125em] motion-reduce:animate-[spin_1.5s_linear_infinite] ${colorClass} ${className}`,
4700
4960
  role: "status",
4701
4961
  style,
4702
- children: /* @__PURE__ */ jsx26("span", { className: "!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]", children: "Loading..." })
4962
+ children: /* @__PURE__ */ jsx29("span", { className: "!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]", children: "Loading..." })
4703
4963
  }
4704
4964
  );
4705
4965
  }
4706
4966
  if (variant === "dots") {
4707
- return /* @__PURE__ */ jsx26(
4967
+ return /* @__PURE__ */ jsx29(
4708
4968
  "div",
4709
4969
  {
4710
4970
  className: `flex items-center justify-center space-x-2 ${className}`,
4711
- children: [...Array(3)].map((_, i) => /* @__PURE__ */ jsx26(
4971
+ children: [...Array(3)].map((_, i) => /* @__PURE__ */ jsx29(
4712
4972
  "div",
4713
4973
  {
4714
4974
  className: `${sizeClasses[size.replace(/l|g/, "")]} animate-bounce rounded-full ${colorClass}`,
@@ -4723,11 +4983,11 @@ function ITLoader({
4723
4983
  );
4724
4984
  }
4725
4985
  if (variant === "bar") {
4726
- return /* @__PURE__ */ jsx26(
4986
+ return /* @__PURE__ */ jsx29(
4727
4987
  "div",
4728
4988
  {
4729
4989
  className: `w-full ${size === "sm" ? "h-1" : size === "md" ? "h-1.5" : size === "lg" ? "h-2" : "h-2.5"} bg-gray-200 rounded-full overflow-hidden ${className}`,
4730
- children: /* @__PURE__ */ jsx26(
4990
+ children: /* @__PURE__ */ jsx29(
4731
4991
  "div",
4732
4992
  {
4733
4993
  className: `h-full animate-progress ${colorClass}`,
@@ -4743,7 +5003,7 @@ function ITLoader({
4743
5003
  );
4744
5004
  }
4745
5005
  if (variant === "pulse") {
4746
- return /* @__PURE__ */ jsx26(
5006
+ return /* @__PURE__ */ jsx29(
4747
5007
  "div",
4748
5008
  {
4749
5009
  className: `rounded-full ${sizeClasses[size]} animate-pulse ${colorClass} ${className}`,
@@ -4755,10 +5015,10 @@ function ITLoader({
4755
5015
  }
4756
5016
 
4757
5017
  // src/components/stepper/stepper.tsx
4758
- import clsx17 from "clsx";
4759
- import { useEffect as useEffect16, useRef as useRef10, useState as useState21 } from "react";
5018
+ import clsx19 from "clsx";
5019
+ import { useEffect as useEffect17, useRef as useRef11, useState as useState23 } from "react";
4760
5020
  import { FaChevronLeft as FaChevronLeft4, FaChevronRight as FaChevronRight5, FaCheck as FaCheck3 } from "react-icons/fa";
4761
- import { jsx as jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
5021
+ import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
4762
5022
  function ITStepper({
4763
5023
  steps,
4764
5024
  currentStep,
@@ -4773,15 +5033,15 @@ function ITStepper({
4773
5033
  maxContentHeight = "400px",
4774
5034
  color = "primary"
4775
5035
  }) {
4776
- const [direction, setDirection] = useState21("next");
4777
- const contentRef = useRef10(null);
4778
- const progressRef = useRef10(null);
5036
+ const [direction, setDirection] = useState23("next");
5037
+ const contentRef = useRef11(null);
5038
+ const progressRef = useRef11(null);
4779
5039
  const isThemeColor = color in theme.colors;
4780
5040
  const resolvedColor = isThemeColor ? theme.colors[color][500] : color;
4781
- useEffect16(() => {
5041
+ useEffect17(() => {
4782
5042
  onStepChange?.(currentStep);
4783
5043
  }, [currentStep, onStepChange]);
4784
- useEffect16(() => {
5044
+ useEffect17(() => {
4785
5045
  const pct = currentStep / Math.max(1, steps.length - 1) * 100;
4786
5046
  if (progressRef.current) {
4787
5047
  progressRef.current.style.width = `${pct}%`;
@@ -4825,23 +5085,23 @@ function ITStepper({
4825
5085
  const renderStepContent = (index, isCompleted, isActive) => {
4826
5086
  const step = steps[index];
4827
5087
  if (isCompleted) {
4828
- return /* @__PURE__ */ jsx27(FaCheck3, { className: "w-4 h-4" });
5088
+ return /* @__PURE__ */ jsx30(FaCheck3, { className: "w-4 h-4" });
4829
5089
  }
4830
5090
  if (step.icon && useIcons) {
4831
- return /* @__PURE__ */ jsx27("div", { className: "flex items-center justify-center w-5 h-5", children: step.icon });
5091
+ return /* @__PURE__ */ jsx30("div", { className: "flex items-center justify-center w-5 h-5", children: step.icon });
4832
5092
  }
4833
- return /* @__PURE__ */ jsx27("span", { className: "text-sm font-semibold", children: index + 1 });
5093
+ return /* @__PURE__ */ jsx30("span", { className: "text-sm font-semibold", children: index + 1 });
4834
5094
  };
4835
- return /* @__PURE__ */ jsxs19("div", { className: clsx17("w-full max-w-5xl mx-auto px-4", containerClassName), children: [
4836
- /* @__PURE__ */ jsxs19("div", { className: "relative mb-8", children: [
4837
- /* @__PURE__ */ jsx27(
5095
+ return /* @__PURE__ */ jsxs21("div", { className: clsx19("w-full max-w-5xl mx-auto px-4", containerClassName), children: [
5096
+ /* @__PURE__ */ jsxs21("div", { className: "relative mb-8", children: [
5097
+ /* @__PURE__ */ jsx30(
4838
5098
  "div",
4839
5099
  {
4840
5100
  className: "absolute left-6 right-6 top-5 h-1 bg-gray-200 rounded-full z-0",
4841
5101
  "aria-hidden": true
4842
5102
  }
4843
5103
  ),
4844
- /* @__PURE__ */ jsx27(
5104
+ /* @__PURE__ */ jsx30(
4845
5105
  "div",
4846
5106
  {
4847
5107
  ref: progressRef,
@@ -4849,11 +5109,11 @@ function ITStepper({
4849
5109
  "aria-hidden": true
4850
5110
  }
4851
5111
  ),
4852
- /* @__PURE__ */ jsx27("div", { className: "flex items-start justify-between space-x-2 relative z-20", children: steps.map((step, idx) => {
5112
+ /* @__PURE__ */ jsx30("div", { className: "flex items-start justify-between space-x-2 relative z-20", children: steps.map((step, idx) => {
4853
5113
  const isActive = idx === currentStep;
4854
5114
  const isCompleted = idx < currentStep;
4855
5115
  const hasIcon = step.icon && useIcons;
4856
- return /* @__PURE__ */ jsx27(
5116
+ return /* @__PURE__ */ jsx30(
4857
5117
  "button",
4858
5118
  {
4859
5119
  type: "button",
@@ -4863,11 +5123,11 @@ function ITStepper({
4863
5123
  "aria-label": `Paso ${idx + 1} ${step.label}`,
4864
5124
  className: "flex-1 group",
4865
5125
  title: step.label,
4866
- children: /* @__PURE__ */ jsxs19("div", { className: "flex flex-col items-center", children: [
4867
- /* @__PURE__ */ jsx27(
5126
+ children: /* @__PURE__ */ jsxs21("div", { className: "flex flex-col items-center", children: [
5127
+ /* @__PURE__ */ jsx30(
4868
5128
  "div",
4869
5129
  {
4870
- className: clsx17(
5130
+ className: clsx19(
4871
5131
  "flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300 transform",
4872
5132
  hasIcon && "p-2",
4873
5133
  isCompleted && "bg-slate-400 border-slate-400 text-white scale-100 shadow",
@@ -4878,10 +5138,10 @@ function ITStepper({
4878
5138
  children: renderStepContent(idx, isCompleted, isActive)
4879
5139
  }
4880
5140
  ),
4881
- /* @__PURE__ */ jsx27(
5141
+ /* @__PURE__ */ jsx30(
4882
5142
  "span",
4883
5143
  {
4884
- className: clsx17(
5144
+ className: clsx19(
4885
5145
  "mt-2 text-xs sm:text-sm font-medium transition-colors text-center",
4886
5146
  isCompleted ? "text-slate-400" : !isActive && "text-gray-400"
4887
5147
  ),
@@ -4895,14 +5155,14 @@ function ITStepper({
4895
5155
  );
4896
5156
  }) })
4897
5157
  ] }),
4898
- /* @__PURE__ */ jsx27(
5158
+ /* @__PURE__ */ jsx30(
4899
5159
  "div",
4900
5160
  {
4901
5161
  ref: contentRef,
4902
5162
  tabIndex: -1,
4903
5163
  role: "region",
4904
5164
  "aria-labelledby": `step-${currentStep}`,
4905
- className: clsx17(
5165
+ className: clsx19(
4906
5166
  stepClassName,
4907
5167
  "bg-white border border-gray-100 rounded-2xl shadow-lg min-h-[280px] transition-transform duration-400 no-scrollbar p-6",
4908
5168
  scrollableContent && "overflow-y-auto hide-scrollbar"
@@ -4911,37 +5171,37 @@ function ITStepper({
4911
5171
  children: steps[currentStep].content
4912
5172
  }
4913
5173
  ),
4914
- /* @__PURE__ */ jsxs19("div", { className: "flex justify-between items-center mt-6", children: [
4915
- /* @__PURE__ */ jsx27(
5174
+ /* @__PURE__ */ jsxs21("div", { className: "flex justify-between items-center mt-6", children: [
5175
+ /* @__PURE__ */ jsx30(
4916
5176
  ITButton,
4917
5177
  {
4918
5178
  variant: "outlined",
4919
5179
  color: "secondary",
4920
5180
  disabled: currentStep === 0,
4921
5181
  onClick: prevStep,
4922
- children: /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2", children: [
4923
- /* @__PURE__ */ jsx27(FaChevronLeft4, {}),
5182
+ children: /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-2", children: [
5183
+ /* @__PURE__ */ jsx30(FaChevronLeft4, {}),
4924
5184
  "Atr\xE1s"
4925
5185
  ] })
4926
5186
  }
4927
5187
  ),
4928
- /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-3", children: [
4929
- /* @__PURE__ */ jsxs19("div", { className: "text-sm text-gray-500 mr-2 hidden sm:block", children: [
5188
+ /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-3", children: [
5189
+ /* @__PURE__ */ jsxs21("div", { className: "text-sm text-gray-500 mr-2 hidden sm:block", children: [
4930
5190
  "Paso ",
4931
5191
  currentStep + 1,
4932
5192
  " de ",
4933
5193
  steps.length
4934
5194
  ] }),
4935
- /* @__PURE__ */ jsx27(
5195
+ /* @__PURE__ */ jsx30(
4936
5196
  ITButton,
4937
5197
  {
4938
5198
  variant: "solid",
4939
5199
  color,
4940
5200
  disabled: disableNext,
4941
5201
  onClick: nextStep,
4942
- children: /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2", children: [
5202
+ children: /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-2", children: [
4943
5203
  currentStep === steps.length - 1 ? "Finalizar" : "Siguiente",
4944
- currentStep === steps.length - 1 ? /* @__PURE__ */ jsx27(FaCheck3, {}) : /* @__PURE__ */ jsx27(FaChevronRight5, {})
5204
+ currentStep === steps.length - 1 ? /* @__PURE__ */ jsx30(FaCheck3, {}) : /* @__PURE__ */ jsx30(FaChevronRight5, {})
4945
5205
  ] })
4946
5206
  }
4947
5207
  )
@@ -4951,10 +5211,10 @@ function ITStepper({
4951
5211
  }
4952
5212
 
4953
5213
  // src/components/theme-provider/themeProvider.tsx
4954
- import { useMemo as useMemo4 } from "react";
4955
- import { Fragment as Fragment6, jsx as jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
5214
+ import { useMemo as useMemo5 } from "react";
5215
+ import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs22 } from "react/jsx-runtime";
4956
5216
  function ITThemeProvider({ theme: theme2, children }) {
4957
- const activeThemeContext = useMemo4(() => {
5217
+ const activeThemeContext = useMemo5(() => {
4958
5218
  const baseColors = {
4959
5219
  primary: palette.blue,
4960
5220
  secondary: palette.gray,
@@ -4975,7 +5235,7 @@ function ITThemeProvider({ theme: theme2, children }) {
4975
5235
  }
4976
5236
  };
4977
5237
  }, [theme2]);
4978
- const cssVariables = useMemo4(() => {
5238
+ const cssVariables = useMemo5(() => {
4979
5239
  let variablesString = "";
4980
5240
  Object.entries(activeThemeContext.colors).forEach(([colorName, scale]) => {
4981
5241
  Object.entries(scale).forEach(([shade, hexValue]) => {
@@ -5094,8 +5354,8 @@ function ITThemeProvider({ theme: theme2, children }) {
5094
5354
  return `:root {
5095
5355
  ${variablesString}}`;
5096
5356
  }, [activeThemeContext]);
5097
- return /* @__PURE__ */ jsxs20(Fragment6, { children: [
5098
- /* @__PURE__ */ jsx28("style", { suppressHydrationWarning: true, children: cssVariables }),
5357
+ return /* @__PURE__ */ jsxs22(Fragment6, { children: [
5358
+ /* @__PURE__ */ jsx31("style", { suppressHydrationWarning: true, children: cssVariables }),
5099
5359
  children
5100
5360
  ] });
5101
5361
  }
@@ -5126,14 +5386,17 @@ export {
5126
5386
  ITLoader,
5127
5387
  ITNavbar,
5128
5388
  ITPagination,
5389
+ ITSearchSelect,
5129
5390
  ITSelect,
5130
5391
  ITSlideToggle,
5131
5392
  ITStepper,
5132
5393
  ITTable,
5394
+ tabs_default as ITTabs,
5133
5395
  ITText,
5134
5396
  ITThemeProvider,
5135
5397
  ITTimePicker,
5136
5398
  ITToast,
5399
+ tripleFilter_default as ITTripleFilter,
5137
5400
  createValidationSchema
5138
5401
  };
5139
5402
  //# sourceMappingURL=index.js.map