@axzydev/axzy_ui_system 1.0.166 → 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.cjs CHANGED
@@ -49,10 +49,12 @@ __export(index_exports, {
49
49
  ITSlideToggle: () => ITSlideToggle,
50
50
  ITStepper: () => ITStepper,
51
51
  ITTable: () => ITTable,
52
+ ITTabs: () => tabs_default,
52
53
  ITText: () => ITText,
53
54
  ITThemeProvider: () => ITThemeProvider,
54
55
  ITTimePicker: () => ITTimePicker,
55
56
  ITToast: () => ITToast,
57
+ ITTripleFilter: () => tripleFilter_default,
56
58
  createValidationSchema: () => createValidationSchema
57
59
  });
58
60
  module.exports = __toCommonJS(index_exports);
@@ -4025,6 +4027,90 @@ function ITText({ children, className = "" }) {
4025
4027
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: `${className} text-gray-900 `, children });
4026
4028
  }
4027
4029
 
4030
+ // src/components/tabs/tabs.tsx
4031
+ var import_react21 = require("react");
4032
+ var import_clsx16 = require("clsx");
4033
+ var import_jsx_runtime22 = require("react/jsx-runtime");
4034
+ var ITTabs = ({
4035
+ items,
4036
+ defaultActiveId,
4037
+ onChange,
4038
+ variant = "line",
4039
+ className = "",
4040
+ containerClassName = ""
4041
+ }) => {
4042
+ const [activeId, setActiveId] = (0, import_react21.useState)(defaultActiveId || items[0]?.id);
4043
+ const handleTabClick = (id, disabled) => {
4044
+ if (disabled) return;
4045
+ setActiveId(id);
4046
+ if (onChange) onChange(id);
4047
+ };
4048
+ const activeContent = items.find((item) => item.id === activeId)?.content;
4049
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: (0, import_clsx16.clsx)("w-full", containerClassName), children: [
4050
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: (0, import_clsx16.clsx)(
4051
+ "flex border-gray-200 mb-4",
4052
+ variant === "line" ? "border-b" : "gap-2 p-1 bg-gray-100 rounded-lg w-fit",
4053
+ className
4054
+ ), children: items.map((item) => {
4055
+ const isActive = item.id === activeId;
4056
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
4057
+ "button",
4058
+ {
4059
+ onClick: () => handleTabClick(item.id, item.disabled),
4060
+ disabled: item.disabled,
4061
+ className: (0, import_clsx16.clsx)(
4062
+ "flex items-center gap-2 px-4 py-2 text-sm font-medium transition-all duration-200 outline-none",
4063
+ // LINE VARIANT
4064
+ variant === "line" && [
4065
+ "border-b-2 -mb-[2px]",
4066
+ isActive ? "border-primary-500 text-primary-600" : "border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"
4067
+ ],
4068
+ // PILL VARIANT
4069
+ variant === "pill" && [
4070
+ "rounded-md",
4071
+ isActive ? "bg-white text-primary-600 shadow-sm" : "text-gray-500 hover:text-gray-700"
4072
+ ],
4073
+ item.disabled && "opacity-50 cursor-not-allowed"
4074
+ ),
4075
+ children: [
4076
+ item.icon && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "w-4 h-4", children: item.icon }),
4077
+ item.label
4078
+ ]
4079
+ },
4080
+ item.id
4081
+ );
4082
+ }) }),
4083
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "tab-content animate-fadeIn", children: activeContent })
4084
+ ] });
4085
+ };
4086
+ var tabs_default = ITTabs;
4087
+
4088
+ // src/components/triple-filter/tripleFilter.tsx
4089
+ var import_jsx_runtime23 = require("react/jsx-runtime");
4090
+ var ITTripleFilter = ({
4091
+ value,
4092
+ onChange,
4093
+ options,
4094
+ className = ""
4095
+ }) => {
4096
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
4097
+ "div",
4098
+ {
4099
+ className: `flex bg-slate-100 p-1 rounded-xl gap-1 w-fit ${className}`,
4100
+ children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
4101
+ "button",
4102
+ {
4103
+ onClick: () => onChange(option.value),
4104
+ 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"}`,
4105
+ children: option.label
4106
+ },
4107
+ String(option.value)
4108
+ ))
4109
+ }
4110
+ );
4111
+ };
4112
+ var tripleFilter_default = ITTripleFilter;
4113
+
4028
4114
  // src/types/toast.types.ts
4029
4115
  var positionStyles = {
4030
4116
  "top-right": "top-4 right-4",
@@ -4036,10 +4122,10 @@ var positionStyles = {
4036
4122
  };
4037
4123
 
4038
4124
  // src/components/toast/toast.tsx
4039
- var import_clsx16 = __toESM(require("clsx"), 1);
4040
- var import_react21 = require("react");
4125
+ var import_clsx17 = __toESM(require("clsx"), 1);
4126
+ var import_react22 = require("react");
4041
4127
  var import_fa12 = require("react-icons/fa");
4042
- var import_jsx_runtime22 = require("react/jsx-runtime");
4128
+ var import_jsx_runtime24 = require("react/jsx-runtime");
4043
4129
  function ITToast({
4044
4130
  message,
4045
4131
  type = "info",
@@ -4047,8 +4133,8 @@ function ITToast({
4047
4133
  position = "top-right",
4048
4134
  onClose
4049
4135
  }) {
4050
- const [isVisible, setIsVisible] = (0, import_react21.useState)(true);
4051
- (0, import_react21.useEffect)(() => {
4136
+ const [isVisible, setIsVisible] = (0, import_react22.useState)(true);
4137
+ (0, import_react22.useEffect)(() => {
4052
4138
  const timer = setTimeout(() => {
4053
4139
  setIsVisible(false);
4054
4140
  setTimeout(() => {
@@ -4068,21 +4154,21 @@ function ITToast({
4068
4154
  const TypeIcon = () => {
4069
4155
  switch (type) {
4070
4156
  case "success":
4071
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_fa12.FaCheckCircle, { className: "w-5 h-5 flex-shrink-0" });
4157
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_fa12.FaCheckCircle, { className: "w-5 h-5 flex-shrink-0" });
4072
4158
  case "error":
4073
4159
  case "danger":
4074
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_fa12.FaTimesCircle, { className: "w-5 h-5 flex-shrink-0" });
4160
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_fa12.FaTimesCircle, { className: "w-5 h-5 flex-shrink-0" });
4075
4161
  case "warning":
4076
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_fa12.FaExclamationTriangle, { className: "w-5 h-5 flex-shrink-0" });
4162
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_fa12.FaExclamationTriangle, { className: "w-5 h-5 flex-shrink-0" });
4077
4163
  case "info":
4078
4164
  default:
4079
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_fa12.FaInfoCircle, { className: "w-5 h-5 flex-shrink-0" });
4165
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_fa12.FaInfoCircle, { className: "w-5 h-5 flex-shrink-0" });
4080
4166
  }
4081
4167
  };
4082
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
4168
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
4083
4169
  "div",
4084
4170
  {
4085
- className: (0, import_clsx16.default)(
4171
+ className: (0, import_clsx17.default)(
4086
4172
  "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]",
4087
4173
  positionStyles[position],
4088
4174
  {
@@ -4095,17 +4181,17 @@ function ITToast({
4095
4181
  style: { backgroundColor },
4096
4182
  role: "alert",
4097
4183
  children: [
4098
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center gap-3", children: [
4099
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(TypeIcon, {}),
4100
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "font-medium text-sm sm:text-base leading-snug", children: message })
4184
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-3", children: [
4185
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TypeIcon, {}),
4186
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "font-medium text-sm sm:text-base leading-snug", children: message })
4101
4187
  ] }),
4102
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
4188
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
4103
4189
  "button",
4104
4190
  {
4105
4191
  onClick: handleClose,
4106
4192
  className: "p-1.5 rounded-full hover:bg-black/15 transition-colors focus:outline-none focus:ring-2 focus:ring-white/50",
4107
4193
  "aria-label": "Close notification",
4108
- children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_fa12.FaTimes, { className: "w-4 h-4" })
4194
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_fa12.FaTimes, { className: "w-4 h-4" })
4109
4195
  }
4110
4196
  )
4111
4197
  ]
@@ -4114,10 +4200,10 @@ function ITToast({
4114
4200
  }
4115
4201
 
4116
4202
  // src/components/dropfile/dropfile.tsx
4117
- var import_react22 = require("react");
4203
+ var import_react23 = require("react");
4118
4204
  var import_react_dropzone = require("react-dropzone");
4119
- var import_clsx17 = __toESM(require("clsx"), 1);
4120
- var import_jsx_runtime23 = require("react/jsx-runtime");
4205
+ var import_clsx18 = __toESM(require("clsx"), 1);
4206
+ var import_jsx_runtime25 = require("react/jsx-runtime");
4121
4207
  var ITDropfile = ({
4122
4208
  onFileSelect,
4123
4209
  onCancel,
@@ -4130,15 +4216,15 @@ var ITDropfile = ({
4130
4216
  onStatusChange,
4131
4217
  initialPreviewUrl
4132
4218
  }) => {
4133
- const [selectedFile, setSelectedFile] = (0, import_react22.useState)(null);
4134
- const [fileType, setFileType] = (0, import_react22.useState)(null);
4135
- const [imagePreview, setImagePreview] = (0, import_react22.useState)(initialPreviewUrl || null);
4136
- const [isConfirmed, setIsConfirmed] = (0, import_react22.useState)(false);
4137
- const [internalUploadStatus, setInternalUploadStatus] = (0, import_react22.useState)(
4219
+ const [selectedFile, setSelectedFile] = (0, import_react23.useState)(null);
4220
+ const [fileType, setFileType] = (0, import_react23.useState)(null);
4221
+ const [imagePreview, setImagePreview] = (0, import_react23.useState)(initialPreviewUrl || null);
4222
+ const [isConfirmed, setIsConfirmed] = (0, import_react23.useState)(false);
4223
+ const [internalUploadStatus, setInternalUploadStatus] = (0, import_react23.useState)(
4138
4224
  initialPreviewUrl ? "subido" /* UPLOADED */ : "pendiente" /* PENDING */
4139
4225
  );
4140
- const canvasRef = (0, import_react22.useRef)(null);
4141
- (0, import_react22.useEffect)(() => {
4226
+ const canvasRef = (0, import_react23.useRef)(null);
4227
+ (0, import_react23.useEffect)(() => {
4142
4228
  if (initialPreviewUrl && !selectedFile) {
4143
4229
  setImagePreview(initialPreviewUrl);
4144
4230
  if (externalStatus === void 0) setInternalUploadStatus("subido" /* UPLOADED */);
@@ -4227,9 +4313,9 @@ var ITDropfile = ({
4227
4313
  }
4228
4314
  };
4229
4315
  const { label, color, dotColor } = config[status];
4230
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: `inline-flex items-center gap-2 px-2.5 py-1 rounded-full border ${color}`, children: [
4231
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `w-2 h-2 rounded-full ${dotColor}` }),
4232
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "text-xs font-medium flex items-center gap-1.5", children: label })
4316
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: `inline-flex items-center gap-2 px-2.5 py-1 rounded-full border ${color}`, children: [
4317
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: `w-2 h-2 rounded-full ${dotColor}` }),
4318
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "text-xs font-medium flex items-center gap-1.5", children: label })
4233
4319
  ] });
4234
4320
  };
4235
4321
  const onDrop = (acceptedFiles) => {
@@ -4261,12 +4347,12 @@ var ITDropfile = ({
4261
4347
  accept: getAcceptedFileTypes(),
4262
4348
  maxFiles: 1
4263
4349
  });
4264
- (0, import_react22.useEffect)(() => {
4350
+ (0, import_react23.useEffect)(() => {
4265
4351
  const renderPDF = async () => {
4266
4352
  };
4267
4353
  renderPDF();
4268
4354
  }, [selectedFile, fileType]);
4269
- (0, import_react22.useEffect)(() => {
4355
+ (0, import_react23.useEffect)(() => {
4270
4356
  return () => {
4271
4357
  if (imagePreview) {
4272
4358
  URL.revokeObjectURL(imagePreview);
@@ -4304,19 +4390,19 @@ var ITDropfile = ({
4304
4390
  handleCancel();
4305
4391
  };
4306
4392
  const isImage = fileType && fileType.startsWith("image/");
4307
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: (0, import_clsx17.default)("w-full transition-all duration-300", containerClassName), children: [
4308
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [
4309
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("label", { className: "block text-sm font-semibold text-gray-700", children: [
4393
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: (0, import_clsx18.default)("w-full transition-all duration-300", containerClassName), children: [
4394
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [
4395
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("label", { className: "block text-sm font-semibold text-gray-700", children: [
4310
4396
  "Subir archivo ",
4311
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: "text-gray-400 font-normal text-xs", children: [
4397
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("span", { className: "text-gray-400 font-normal text-xs", children: [
4312
4398
  "(",
4313
4399
  getFileExtensions(),
4314
4400
  ")"
4315
4401
  ] })
4316
4402
  ] }),
4317
- showStatusBadge && selectedFile && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(StatusBadge, { status: uploadStatus })
4403
+ showStatusBadge && selectedFile && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(StatusBadge, { status: uploadStatus })
4318
4404
  ] }),
4319
- !selectedFile && !imagePreview ? /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
4405
+ !selectedFile && !imagePreview ? /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
4320
4406
  "div",
4321
4407
  {
4322
4408
  ...getRootProps(),
@@ -4326,41 +4412,41 @@ var ITDropfile = ({
4326
4412
  ${isDragActive ? "border-primary-500 bg-primary-50 scale-[1.01]" : "border-gray-300 bg-white hover:border-primary-400 hover:bg-gray-50"}
4327
4413
  `,
4328
4414
  children: [
4329
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("input", { ...getInputProps() }),
4330
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("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__ */ (0, import_jsx_runtime23.jsx)(
4415
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("input", { ...getInputProps() }),
4416
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("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__ */ (0, import_jsx_runtime25.jsx)(
4331
4417
  "svg",
4332
4418
  {
4333
4419
  className: `w-6 h-6 transition-colors duration-300 ${isDragActive ? "text-primary-600" : "text-gray-400 group-hover:text-primary-500"}`,
4334
4420
  fill: "none",
4335
4421
  viewBox: "0 0 24 24",
4336
4422
  stroke: "currentColor",
4337
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("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" })
4423
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("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" })
4338
4424
  }
4339
4425
  ) }),
4340
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "text-center space-y-1", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("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" }) })
4426
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "text-center space-y-1", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("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" }) })
4341
4427
  ]
4342
4428
  }
4343
- ) : /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "w-full bg-white border border-gray-200 rounded-xl shadow-sm overflow-hidden animate-fade-in", children: [
4344
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "flex items-center justify-between p-3 bg-gray-50 border-b border-gray-100", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-3 overflow-hidden", children: [
4345
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("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__ */ (0, import_jsx_runtime23.jsx)("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("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__ */ (0, import_jsx_runtime23.jsx)("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("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" }) }) }),
4346
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "min-w-0", children: [
4347
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "text-xs font-medium text-gray-900 truncate", title: selectedFile?.name || "Imagen cargada", children: selectedFile?.name || "Imagen cargada" }),
4348
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "text-[10px] text-gray-500", children: selectedFile ? (selectedFile.size / 1024 / 1024).toFixed(2) + " MB" : "" })
4429
+ ) : /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "w-full bg-white border border-gray-200 rounded-xl shadow-sm overflow-hidden animate-fade-in", children: [
4430
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "flex items-center justify-between p-3 bg-gray-50 border-b border-gray-100", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-3 overflow-hidden", children: [
4431
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("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__ */ (0, import_jsx_runtime25.jsx)("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("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__ */ (0, import_jsx_runtime25.jsx)("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("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" }) }) }),
4432
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "min-w-0", children: [
4433
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "text-xs font-medium text-gray-900 truncate", title: selectedFile?.name || "Imagen cargada", children: selectedFile?.name || "Imagen cargada" }),
4434
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "text-[10px] text-gray-500", children: selectedFile ? (selectedFile.size / 1024 / 1024).toFixed(2) + " MB" : "" })
4349
4435
  ] })
4350
4436
  ] }) }),
4351
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: (0, import_clsx17.default)("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__ */ (0, import_jsx_runtime23.jsx)(
4437
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: (0, import_clsx18.default)("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__ */ (0, import_jsx_runtime25.jsx)(
4352
4438
  "img",
4353
4439
  {
4354
4440
  src: imagePreview,
4355
4441
  alt: "Vista previa",
4356
4442
  className: "w-full h-full object-contain max-h-[200px]"
4357
4443
  }
4358
- ) : /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "py-8 flex flex-col items-center text-gray-400", children: [
4359
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("svg", { className: "w-10 h-10 mb-2 opacity-50", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("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" }) }),
4360
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "text-xs", children: "Sin vista previa" })
4444
+ ) : /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "py-8 flex flex-col items-center text-gray-400", children: [
4445
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("svg", { className: "w-10 h-10 mb-2 opacity-50", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("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" }) }),
4446
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "text-xs", children: "Sin vista previa" })
4361
4447
  ] }) }),
4362
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "px-3 py-2 bg-white border-t border-gray-100 flex justify-end gap-2", children: !isConfirmed ? /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
4363
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
4448
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "px-3 py-2 bg-white border-t border-gray-100 flex justify-end gap-2", children: !isConfirmed ? /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
4449
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4364
4450
  "button",
4365
4451
  {
4366
4452
  type: "button",
@@ -4369,31 +4455,31 @@ var ITDropfile = ({
4369
4455
  children: "Cancelar"
4370
4456
  }
4371
4457
  ),
4372
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
4458
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
4373
4459
  "button",
4374
4460
  {
4375
4461
  type: "button",
4376
4462
  onClick: handleConfirm,
4377
4463
  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",
4378
4464
  children: [
4379
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: "Confirmar" }),
4380
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) })
4465
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { children: "Confirmar" }),
4466
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) })
4381
4467
  ]
4382
4468
  }
4383
4469
  )
4384
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
4470
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
4385
4471
  "button",
4386
4472
  {
4387
4473
  type: "button",
4388
4474
  onClick: handleDelete,
4389
4475
  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",
4390
4476
  children: [
4391
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("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" }) }),
4392
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: "Eliminar" })
4477
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("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" }) }),
4478
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { children: "Eliminar" })
4393
4479
  ]
4394
4480
  }
4395
4481
  ) }),
4396
- uploadStatus === "subiendo" /* UPLOADING */ && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "px-4 pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "w-full bg-gray-200 rounded-full h-1.5", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
4482
+ uploadStatus === "subiendo" /* UPLOADING */ && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "px-4 pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "w-full bg-gray-200 rounded-full h-1.5", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4397
4483
  "div",
4398
4484
  {
4399
4485
  className: "bg-primary-600 h-1.5 rounded-full transition-all duration-1000 ease-out",
@@ -4409,12 +4495,12 @@ var ITDropfile = ({
4409
4495
  var dropfile_default = ITDropfile;
4410
4496
 
4411
4497
  // src/components/layout/layout.tsx
4412
- var import_react25 = require("react");
4498
+ var import_react26 = require("react");
4413
4499
 
4414
4500
  // src/components/topbar/topbar.tsx
4415
4501
  var import_fa13 = require("react-icons/fa");
4416
- var import_react23 = require("react");
4417
- var import_jsx_runtime24 = require("react/jsx-runtime");
4502
+ var import_react24 = require("react");
4503
+ var import_jsx_runtime26 = require("react/jsx-runtime");
4418
4504
  function ITTopBar({
4419
4505
  logo,
4420
4506
  logoText,
@@ -4424,10 +4510,10 @@ function ITTopBar({
4424
4510
  navItems,
4425
4511
  onNavItemClick
4426
4512
  }) {
4427
- const [isUserMenuOpen, setIsUserMenuOpen] = (0, import_react23.useState)(false);
4428
- const userMenuRef = (0, import_react23.useRef)(null);
4513
+ const [isUserMenuOpen, setIsUserMenuOpen] = (0, import_react24.useState)(false);
4514
+ const userMenuRef = (0, import_react24.useRef)(null);
4429
4515
  useClickOutside_default(userMenuRef, () => setIsUserMenuOpen(false));
4430
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
4516
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4431
4517
  "header",
4432
4518
  {
4433
4519
  className: "sticky top-0 z-40 backdrop-blur-md transition-all duration-300",
@@ -4436,9 +4522,9 @@ function ITTopBar({
4436
4522
  borderBottom: `1px solid ${theme.topbar?.borderColor || "#e2e8f0"}`,
4437
4523
  boxShadow: theme.topbar?.shadow || "none"
4438
4524
  },
4439
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center justify-between h-[72px] px-6 lg:px-8", children: [
4440
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-5", children: [
4441
- showMobileMenuButton && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
4525
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center justify-between h-[72px] px-6 lg:px-8", children: [
4526
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center gap-5", children: [
4527
+ showMobileMenuButton && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4442
4528
  "button",
4443
4529
  {
4444
4530
  className: "lg:hidden p-2.5 rounded-xl transition-colors duration-200",
@@ -4448,12 +4534,12 @@ function ITTopBar({
4448
4534
  onMouseEnter: (e) => e.currentTarget.style.backgroundColor = theme.topbar?.userMenu?.hoverBackground || "#f1f5f9",
4449
4535
  onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "transparent",
4450
4536
  onClick: onToggleMobileMenu,
4451
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_fa13.FaBars, { className: "w-[1.125rem] h-[1.125rem]" })
4537
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_fa13.FaBars, { className: "w-[1.125rem] h-[1.125rem]" })
4452
4538
  }
4453
4539
  ),
4454
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-3", children: [
4455
- logo && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex-shrink-0 drop-shadow-sm", children: logo }),
4456
- logoText && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
4540
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center gap-3", children: [
4541
+ logo && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex-shrink-0 drop-shadow-sm", children: logo }),
4542
+ logoText && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4457
4543
  "span",
4458
4544
  {
4459
4545
  className: "text-[1.15rem] font-bold tracking-tight",
@@ -4462,7 +4548,7 @@ function ITTopBar({
4462
4548
  }
4463
4549
  )
4464
4550
  ] }),
4465
- navItems && navItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("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__ */ (0, import_jsx_runtime24.jsx)(
4551
+ navItems && navItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("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__ */ (0, import_jsx_runtime26.jsx)(
4466
4552
  "button",
4467
4553
  {
4468
4554
  onClick: () => onNavItemClick?.(item.id),
@@ -4476,16 +4562,16 @@ function ITTopBar({
4476
4562
  e.currentTarget.style.color = theme.topbar?.textColor || "#475569";
4477
4563
  e.currentTarget.style.backgroundColor = "transparent";
4478
4564
  },
4479
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-2", children: [
4480
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "opacity-70", children: item.icon }),
4565
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center gap-2", children: [
4566
+ item.icon && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "opacity-70", children: item.icon }),
4481
4567
  item.label
4482
4568
  ] })
4483
4569
  },
4484
4570
  item.id
4485
4571
  )) })
4486
4572
  ] }),
4487
- userMenu && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "relative", children: [
4488
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
4573
+ userMenu && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "relative", children: [
4574
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4489
4575
  "button",
4490
4576
  {
4491
4577
  type: "button",
@@ -4501,19 +4587,19 @@ function ITTopBar({
4501
4587
  },
4502
4588
  onClick: () => setIsUserMenuOpen(!isUserMenuOpen),
4503
4589
  children: [
4504
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "relative", children: [
4505
- userMenu.userImage ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
4590
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "relative", children: [
4591
+ userMenu.userImage ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4506
4592
  "img",
4507
4593
  {
4508
4594
  className: "w-9 h-9 rounded-full object-cover ring-2 ring-white shadow-sm",
4509
4595
  src: userMenu.userImage,
4510
4596
  alt: "Current user"
4511
4597
  }
4512
- ) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "w-9 h-9 rounded-full bg-slate-100 flex items-center justify-center ring-2 ring-white shadow-sm", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_fa13.FaUserCircle, { className: "w-6 h-6", style: { color: theme.topbar?.iconColor || "#94a3b8" } }) }),
4513
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "absolute bottom-0 right-0 w-2.5 h-2.5 bg-green-500 border-2 border-white rounded-full" })
4598
+ ) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "w-9 h-9 rounded-full bg-slate-100 flex items-center justify-center ring-2 ring-white shadow-sm", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_fa13.FaUserCircle, { className: "w-6 h-6", style: { color: theme.topbar?.iconColor || "#94a3b8" } }) }),
4599
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "absolute bottom-0 right-0 w-2.5 h-2.5 bg-green-500 border-2 border-white rounded-full" })
4514
4600
  ] }),
4515
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "hidden sm:flex flex-col text-left py-0.5", children: [
4516
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
4601
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "hidden sm:flex flex-col text-left py-0.5", children: [
4602
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4517
4603
  "span",
4518
4604
  {
4519
4605
  className: "font-semibold text-[0.85rem] leading-tight",
@@ -4521,7 +4607,7 @@ function ITTopBar({
4521
4607
  children: userMenu.userName
4522
4608
  }
4523
4609
  ),
4524
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
4610
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4525
4611
  "span",
4526
4612
  {
4527
4613
  className: "text-[0.7rem] font-medium",
@@ -4533,7 +4619,7 @@ function ITTopBar({
4533
4619
  ]
4534
4620
  }
4535
4621
  ),
4536
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
4622
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4537
4623
  "div",
4538
4624
  {
4539
4625
  ref: userMenuRef,
@@ -4546,15 +4632,15 @@ function ITTopBar({
4546
4632
  border: `1px solid ${theme.topbar?.userMenu?.dropdown?.borderColor || "#f1f5f9"}`
4547
4633
  },
4548
4634
  children: [
4549
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "px-5 py-4 border-b bg-slate-50/50", style: { borderColor: theme.topbar?.userMenu?.dropdown?.borderColor || "#f1f5f9" }, children: [
4550
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "block font-bold text-[0.9rem]", style: { color: theme.topbar?.userMenu?.textColor || "#0f172a" }, children: userMenu.userName }),
4551
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "block text-xs font-medium truncate mt-0.5", style: { color: theme.topbar?.userMenu?.subtitleColor || "#64748b" }, children: userMenu.userEmail })
4635
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "px-5 py-4 border-b bg-slate-50/50", style: { borderColor: theme.topbar?.userMenu?.dropdown?.borderColor || "#f1f5f9" }, children: [
4636
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "block font-bold text-[0.9rem]", style: { color: theme.topbar?.userMenu?.textColor || "#0f172a" }, children: userMenu.userName }),
4637
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "block text-xs font-medium truncate mt-0.5", style: { color: theme.topbar?.userMenu?.subtitleColor || "#64748b" }, children: userMenu.userEmail })
4552
4638
  ] }),
4553
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("ul", { className: "py-2", children: userMenu.menuItems.map((m, i) => {
4639
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("ul", { className: "py-2", children: userMenu.menuItems.map((m, i) => {
4554
4640
  const isDestructive = m.label.toLowerCase().includes("salir") || m.label.toLowerCase().includes("cerrar") || m.label.toLowerCase().includes("logout");
4555
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("li", { className: "px-2", children: [
4556
- i === userMenu.menuItems.length - 1 && isDestructive && i > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "h-px bg-slate-100 my-1 mx-2" }),
4557
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
4641
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("li", { className: "px-2", children: [
4642
+ i === userMenu.menuItems.length - 1 && isDestructive && i > 0 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "h-px bg-slate-100 my-1 mx-2" }),
4643
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4558
4644
  "button",
4559
4645
  {
4560
4646
  onClick: (e) => {
@@ -4584,22 +4670,24 @@ function ITTopBar({
4584
4670
  }
4585
4671
 
4586
4672
  // src/components/sidebar/sidebar.tsx
4587
- var import_react24 = require("react");
4673
+ var import_react25 = require("react");
4588
4674
  var import_fa14 = require("react-icons/fa");
4589
- var import_jsx_runtime25 = require("react/jsx-runtime");
4675
+ var import_jsx_runtime27 = require("react/jsx-runtime");
4590
4676
  function ITSidebar({
4591
4677
  navigationItems = [],
4592
4678
  isCollapsed = false,
4593
4679
  onToggleCollapse,
4594
4680
  className = "",
4595
- visibleOnMobile = false
4681
+ visibleOnMobile = false,
4682
+ onItemClick,
4683
+ onSubItemClick
4596
4684
  }) {
4597
- const [expandedItems, setExpandedItems] = (0, import_react24.useState)(/* @__PURE__ */ new Set());
4598
- const [isHovering, setIsHovering] = (0, import_react24.useState)(false);
4599
- const sidebarRef = (0, import_react24.useRef)(null);
4600
- const hoverTimeoutRef = (0, import_react24.useRef)(null);
4601
- const leaveTimeoutRef = (0, import_react24.useRef)(null);
4602
- (0, import_react24.useEffect)(() => {
4685
+ const [expandedItems, setExpandedItems] = (0, import_react25.useState)(/* @__PURE__ */ new Set());
4686
+ const [isHovering, setIsHovering] = (0, import_react25.useState)(false);
4687
+ const sidebarRef = (0, import_react25.useRef)(null);
4688
+ const hoverTimeoutRef = (0, import_react25.useRef)(null);
4689
+ const leaveTimeoutRef = (0, import_react25.useRef)(null);
4690
+ (0, import_react25.useEffect)(() => {
4603
4691
  const handleMouseEnter = () => {
4604
4692
  if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
4605
4693
  if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);
@@ -4633,13 +4721,14 @@ function ITSidebar({
4633
4721
  const handleItemClick = (item) => {
4634
4722
  if (item.subitems && item.subitems.length > 0) {
4635
4723
  toggleExpanded(item.id);
4636
- } else if (item.action) {
4637
- item.action();
4724
+ } else {
4725
+ if (item.action) item.action();
4726
+ if (onItemClick) onItemClick(item);
4638
4727
  }
4639
4728
  };
4640
4729
  const isSidebarCollapsed = visibleOnMobile ? false : !isHovering && isCollapsed;
4641
4730
  const sidebarWidth = isSidebarCollapsed ? "w-[88px]" : "w-[280px]";
4642
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4731
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4643
4732
  "aside",
4644
4733
  {
4645
4734
  ref: sidebarRef,
@@ -4658,8 +4747,8 @@ function ITSidebar({
4658
4747
  WebkitBackdropFilter: "blur(12px)",
4659
4748
  backdropFilter: "blur(12px)"
4660
4749
  },
4661
- children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("nav", { className: "flex-1 py-6 overflow-y-auto overflow-x-hidden custom-scrollbar px-4", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("ul", { className: "space-y-2", children: navigationItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("li", { className: "relative group/navitem", children: [
4662
- /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
4750
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("nav", { className: "flex-1 py-6 overflow-y-auto overflow-x-hidden custom-scrollbar px-4", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("ul", { className: "space-y-2", children: navigationItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("li", { className: "relative group/navitem", children: [
4751
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
4663
4752
  "div",
4664
4753
  {
4665
4754
  className: `flex items-center cursor-pointer
@@ -4680,15 +4769,15 @@ function ITSidebar({
4680
4769
  },
4681
4770
  onClick: () => handleItemClick(item),
4682
4771
  children: [
4683
- item.isActive && !isSidebarCollapsed && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4772
+ item.isActive && !isSidebarCollapsed && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4684
4773
  "div",
4685
4774
  {
4686
4775
  className: "absolute left-0 top-1/4 bottom-1/4 w-[3px] rounded-r-full transition-all",
4687
4776
  style: { backgroundColor: theme.sidebar?.active?.iconColor || "#10b981", boxShadow: `0 0 10px ${theme.sidebar?.active?.iconColor || "#10b981"}` }
4688
4777
  }
4689
4778
  ),
4690
- /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: `flex items-center ${!isSidebarCollapsed ? "gap-3.5" : "justify-center"} relative z-10 w-full`, children: [
4691
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4779
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: `flex items-center ${!isSidebarCollapsed ? "gap-3.5" : "justify-center"} relative z-10 w-full`, children: [
4780
+ item.icon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4692
4781
  "div",
4693
4782
  {
4694
4783
  className: `transition-all duration-300 flex-shrink-0 flex items-center justify-center`,
@@ -4701,7 +4790,7 @@ function ITSidebar({
4701
4790
  children: item.icon
4702
4791
  }
4703
4792
  ),
4704
- !isSidebarCollapsed && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4793
+ !isSidebarCollapsed && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4705
4794
  "span",
4706
4795
  {
4707
4796
  className: `transition-all duration-300 truncate tracking-wide`,
@@ -4714,15 +4803,15 @@ function ITSidebar({
4714
4803
  }
4715
4804
  )
4716
4805
  ] }),
4717
- !isSidebarCollapsed && item.subitems && item.subitems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4806
+ !isSidebarCollapsed && item.subitems && item.subitems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4718
4807
  "div",
4719
4808
  {
4720
4809
  className: `flex-shrink-0 transition-transform duration-300 ease-[cubic-bezier(0.2,0,0,1)] ${expandedItems.has(item.id) ? "rotate-180" : ""}`,
4721
4810
  style: { color: item.isActive ? theme.sidebar?.active?.color || "#0f172a" : theme.sidebar?.icon?.color || "#64748b", opacity: 0.7 },
4722
- children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_fa14.FaChevronDown, { className: "w-3 h-3" })
4811
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_fa14.FaChevronDown, { className: "w-3 h-3" })
4723
4812
  }
4724
4813
  ),
4725
- item.badge && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4814
+ item.badge && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4726
4815
  "span",
4727
4816
  {
4728
4817
  className: `
@@ -4740,7 +4829,7 @@ function ITSidebar({
4740
4829
  ]
4741
4830
  }
4742
4831
  ),
4743
- isSidebarCollapsed && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
4832
+ isSidebarCollapsed && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
4744
4833
  "div",
4745
4834
  {
4746
4835
  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)]",
@@ -4751,30 +4840,33 @@ function ITSidebar({
4751
4840
  backdropFilter: "blur(16px)"
4752
4841
  },
4753
4842
  children: [
4754
- /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("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: [
4755
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { style: { color: theme.sidebar?.active?.iconColor || "#10b981" }, className: "text-xl drop-shadow-sm", children: item.icon }),
4756
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "tracking-wide text-[15px]", children: item.label })
4843
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("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: [
4844
+ item.icon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { style: { color: theme.sidebar?.active?.iconColor || "#10b981" }, className: "text-xl drop-shadow-sm", children: item.icon }),
4845
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "tracking-wide text-[15px]", children: item.label })
4757
4846
  ] }),
4758
- item.subitems && item.subitems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "py-2", children: item.subitems.map((subitem) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
4847
+ item.subitems && item.subitems.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "py-2", children: item.subitems.map((subitem) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
4759
4848
  "div",
4760
4849
  {
4761
4850
  className: `px-5 py-2.5 text-sm flex items-center gap-3 transition-colors`,
4762
4851
  children: [
4763
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("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" } }),
4764
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { style: { color: subitem.isActive ? theme.sidebar?.active?.color || "#0f172a" : theme.sidebar?.label?.color || "#475569", fontWeight: subitem.isActive ? 600 : 500 }, children: subitem.label })
4852
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("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" } }),
4853
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { style: { color: subitem.isActive ? theme.sidebar?.active?.color || "#0f172a" : theme.sidebar?.label?.color || "#475569", fontWeight: subitem.isActive ? 600 : 500 }, children: subitem.label })
4765
4854
  ]
4766
4855
  },
4767
4856
  subitem.id
4768
- )) }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "px-5 py-3 text-sm text-zinc-500 italic", children: "No hay submen\xFA" })
4857
+ )) }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "px-5 py-3 text-sm text-zinc-500 italic", children: "No hay submen\xFA" })
4769
4858
  ]
4770
4859
  }
4771
4860
  ),
4772
- !isSidebarCollapsed && item.subitems && item.subitems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("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__ */ (0, import_jsx_runtime25.jsx)("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__ */ (0, import_jsx_runtime25.jsxs)("li", { className: "relative", children: [
4773
- subitem.isActive && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("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" } }),
4774
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
4861
+ !isSidebarCollapsed && item.subitems && item.subitems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("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__ */ (0, import_jsx_runtime27.jsx)("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__ */ (0, import_jsx_runtime27.jsxs)("li", { className: "relative", children: [
4862
+ subitem.isActive && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("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" } }),
4863
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4775
4864
  "button",
4776
4865
  {
4777
- onClick: subitem.action,
4866
+ onClick: () => {
4867
+ if (subitem.action) subitem.action();
4868
+ if (onSubItemClick) onSubItemClick(subitem);
4869
+ },
4778
4870
  className: `block w-full text-left px-4 py-2 rounded-xl transition-all duration-300`,
4779
4871
  style: {
4780
4872
  color: subitem.isActive ? theme.sidebar?.active?.color || "#0f172a" : theme.sidebar?.label?.color || "#475569",
@@ -4805,7 +4897,7 @@ function ITSidebar({
4805
4897
  }
4806
4898
 
4807
4899
  // src/components/layout/layout.tsx
4808
- var import_jsx_runtime26 = require("react/jsx-runtime");
4900
+ var import_jsx_runtime28 = require("react/jsx-runtime");
4809
4901
  function ITLayout({
4810
4902
  topBar,
4811
4903
  sidebar,
@@ -4813,10 +4905,10 @@ function ITLayout({
4813
4905
  className = "",
4814
4906
  contentClassName = ""
4815
4907
  }) {
4816
- const [desktopCollapsed, setDesktopCollapsed] = (0, import_react25.useState)(true);
4817
- const [mobileSidebarOpen, setMobileSidebarOpen] = (0, import_react25.useState)(false);
4818
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: `flex flex-col h-screen overflow-hidden w-full ${className}`, children: [
4819
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4908
+ const [desktopCollapsed, setDesktopCollapsed] = (0, import_react26.useState)(true);
4909
+ const [mobileSidebarOpen, setMobileSidebarOpen] = (0, import_react26.useState)(false);
4910
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: `flex flex-col h-screen overflow-hidden w-full ${className}`, children: [
4911
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4820
4912
  ITTopBar,
4821
4913
  {
4822
4914
  ...topBar,
@@ -4824,10 +4916,10 @@ function ITLayout({
4824
4916
  onToggleMobileMenu: () => setMobileSidebarOpen((v) => !v)
4825
4917
  }
4826
4918
  ),
4827
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex flex-1 overflow-hidden relative", style: { backgroundColor: theme.layout?.backgroundColor || "#f8fafc" }, children: [
4828
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "hidden lg:block relative z-40 h-full", children: [
4829
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "w-[88px] h-full flex-shrink-0" }),
4830
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "absolute top-0 left-0 h-full", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4919
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex flex-1 overflow-hidden relative", style: { backgroundColor: theme.layout?.backgroundColor || "#f8fafc" }, children: [
4920
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "hidden lg:block relative z-40 h-full", children: [
4921
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "w-[88px] h-full flex-shrink-0" }),
4922
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "absolute top-0 left-0 h-full", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4831
4923
  ITSidebar,
4832
4924
  {
4833
4925
  ...sidebar,
@@ -4838,31 +4930,33 @@ function ITLayout({
4838
4930
  }
4839
4931
  ) })
4840
4932
  ] }),
4841
- mobileSidebarOpen && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4933
+ mobileSidebarOpen && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4842
4934
  "div",
4843
4935
  {
4844
4936
  className: "lg:hidden fixed inset-0 z-50 transition-opacity duration-300 backdrop-blur-sm bg-black/40",
4845
4937
  onClick: () => setMobileSidebarOpen(false),
4846
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4938
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4847
4939
  "div",
4848
4940
  {
4849
- className: "h-full w-auto transform transition-transform duration-300 ease-[cubic-bezier(0.2,0,0,1)]",
4941
+ className: "h-full w-fit flex transform transition-transform duration-300 ease-[cubic-bezier(0.2,0,0,1)]",
4850
4942
  onClick: (e) => e.stopPropagation(),
4851
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4943
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4852
4944
  ITSidebar,
4853
4945
  {
4854
4946
  ...sidebar,
4855
4947
  isCollapsed: false,
4856
4948
  visibleOnMobile: true,
4857
- className: "h-full shadow-2xl",
4858
- onToggleCollapse: () => setMobileSidebarOpen(false)
4949
+ className: "h-full shadow-2xl relative z-[60]",
4950
+ onToggleCollapse: () => setMobileSidebarOpen(false),
4951
+ onItemClick: () => setMobileSidebarOpen(false),
4952
+ onSubItemClick: () => setMobileSidebarOpen(false)
4859
4953
  }
4860
4954
  )
4861
4955
  }
4862
4956
  )
4863
4957
  }
4864
4958
  ),
4865
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("main", { className: "flex-1 overflow-y-auto w-full custom-scrollbar relative z-0", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4959
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("main", { className: "flex-1 overflow-y-auto w-full custom-scrollbar relative z-0", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4866
4960
  "div",
4867
4961
  {
4868
4962
  className: `mx-auto w-full h-full ${contentClassName}`,
@@ -4883,7 +4977,7 @@ var sizeClasses = {
4883
4977
  };
4884
4978
 
4885
4979
  // src/components/loader/loader.tsx
4886
- var import_jsx_runtime27 = require("react/jsx-runtime");
4980
+ var import_jsx_runtime29 = require("react/jsx-runtime");
4887
4981
  function ITLoader({
4888
4982
  size = "md",
4889
4983
  variant = "spinner",
@@ -4898,22 +4992,22 @@ function ITLoader({
4898
4992
  const bgStyle = isCssValue ? { backgroundColor: resolvedColor } : {};
4899
4993
  const colorClass = !isCssValue ? color : "";
4900
4994
  if (variant === "spinner") {
4901
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4995
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4902
4996
  "div",
4903
4997
  {
4904
4998
  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}`,
4905
4999
  role: "status",
4906
5000
  style,
4907
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("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..." })
5001
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("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..." })
4908
5002
  }
4909
5003
  );
4910
5004
  }
4911
5005
  if (variant === "dots") {
4912
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5006
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4913
5007
  "div",
4914
5008
  {
4915
5009
  className: `flex items-center justify-center space-x-2 ${className}`,
4916
- children: [...Array(3)].map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5010
+ children: [...Array(3)].map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4917
5011
  "div",
4918
5012
  {
4919
5013
  className: `${sizeClasses[size.replace(/l|g/, "")]} animate-bounce rounded-full ${colorClass}`,
@@ -4928,11 +5022,11 @@ function ITLoader({
4928
5022
  );
4929
5023
  }
4930
5024
  if (variant === "bar") {
4931
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5025
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4932
5026
  "div",
4933
5027
  {
4934
5028
  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}`,
4935
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5029
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4936
5030
  "div",
4937
5031
  {
4938
5032
  className: `h-full animate-progress ${colorClass}`,
@@ -4948,7 +5042,7 @@ function ITLoader({
4948
5042
  );
4949
5043
  }
4950
5044
  if (variant === "pulse") {
4951
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
5045
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4952
5046
  "div",
4953
5047
  {
4954
5048
  className: `rounded-full ${sizeClasses[size]} animate-pulse ${colorClass} ${className}`,
@@ -4960,10 +5054,10 @@ function ITLoader({
4960
5054
  }
4961
5055
 
4962
5056
  // src/components/stepper/stepper.tsx
4963
- var import_clsx18 = __toESM(require("clsx"), 1);
4964
- var import_react26 = require("react");
5057
+ var import_clsx19 = __toESM(require("clsx"), 1);
5058
+ var import_react27 = require("react");
4965
5059
  var import_fa15 = require("react-icons/fa");
4966
- var import_jsx_runtime28 = require("react/jsx-runtime");
5060
+ var import_jsx_runtime30 = require("react/jsx-runtime");
4967
5061
  function ITStepper({
4968
5062
  steps,
4969
5063
  currentStep,
@@ -4978,15 +5072,15 @@ function ITStepper({
4978
5072
  maxContentHeight = "400px",
4979
5073
  color = "primary"
4980
5074
  }) {
4981
- const [direction, setDirection] = (0, import_react26.useState)("next");
4982
- const contentRef = (0, import_react26.useRef)(null);
4983
- const progressRef = (0, import_react26.useRef)(null);
5075
+ const [direction, setDirection] = (0, import_react27.useState)("next");
5076
+ const contentRef = (0, import_react27.useRef)(null);
5077
+ const progressRef = (0, import_react27.useRef)(null);
4984
5078
  const isThemeColor = color in theme.colors;
4985
5079
  const resolvedColor = isThemeColor ? theme.colors[color][500] : color;
4986
- (0, import_react26.useEffect)(() => {
5080
+ (0, import_react27.useEffect)(() => {
4987
5081
  onStepChange?.(currentStep);
4988
5082
  }, [currentStep, onStepChange]);
4989
- (0, import_react26.useEffect)(() => {
5083
+ (0, import_react27.useEffect)(() => {
4990
5084
  const pct = currentStep / Math.max(1, steps.length - 1) * 100;
4991
5085
  if (progressRef.current) {
4992
5086
  progressRef.current.style.width = `${pct}%`;
@@ -5030,23 +5124,23 @@ function ITStepper({
5030
5124
  const renderStepContent = (index, isCompleted, isActive) => {
5031
5125
  const step = steps[index];
5032
5126
  if (isCompleted) {
5033
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_fa15.FaCheck, { className: "w-4 h-4" });
5127
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_fa15.FaCheck, { className: "w-4 h-4" });
5034
5128
  }
5035
5129
  if (step.icon && useIcons) {
5036
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex items-center justify-center w-5 h-5", children: step.icon });
5130
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "flex items-center justify-center w-5 h-5", children: step.icon });
5037
5131
  }
5038
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-sm font-semibold", children: index + 1 });
5132
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "text-sm font-semibold", children: index + 1 });
5039
5133
  };
5040
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: (0, import_clsx18.default)("w-full max-w-5xl mx-auto px-4", containerClassName), children: [
5041
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "relative mb-8", children: [
5042
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
5134
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: (0, import_clsx19.default)("w-full max-w-5xl mx-auto px-4", containerClassName), children: [
5135
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "relative mb-8", children: [
5136
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
5043
5137
  "div",
5044
5138
  {
5045
5139
  className: "absolute left-6 right-6 top-5 h-1 bg-gray-200 rounded-full z-0",
5046
5140
  "aria-hidden": true
5047
5141
  }
5048
5142
  ),
5049
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
5143
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
5050
5144
  "div",
5051
5145
  {
5052
5146
  ref: progressRef,
@@ -5054,11 +5148,11 @@ function ITStepper({
5054
5148
  "aria-hidden": true
5055
5149
  }
5056
5150
  ),
5057
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex items-start justify-between space-x-2 relative z-20", children: steps.map((step, idx) => {
5151
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "flex items-start justify-between space-x-2 relative z-20", children: steps.map((step, idx) => {
5058
5152
  const isActive = idx === currentStep;
5059
5153
  const isCompleted = idx < currentStep;
5060
5154
  const hasIcon = step.icon && useIcons;
5061
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
5155
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
5062
5156
  "button",
5063
5157
  {
5064
5158
  type: "button",
@@ -5068,11 +5162,11 @@ function ITStepper({
5068
5162
  "aria-label": `Paso ${idx + 1} ${step.label}`,
5069
5163
  className: "flex-1 group",
5070
5164
  title: step.label,
5071
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex flex-col items-center", children: [
5072
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
5165
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex flex-col items-center", children: [
5166
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
5073
5167
  "div",
5074
5168
  {
5075
- className: (0, import_clsx18.default)(
5169
+ className: (0, import_clsx19.default)(
5076
5170
  "flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300 transform",
5077
5171
  hasIcon && "p-2",
5078
5172
  isCompleted && "bg-slate-400 border-slate-400 text-white scale-100 shadow",
@@ -5083,10 +5177,10 @@ function ITStepper({
5083
5177
  children: renderStepContent(idx, isCompleted, isActive)
5084
5178
  }
5085
5179
  ),
5086
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
5180
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
5087
5181
  "span",
5088
5182
  {
5089
- className: (0, import_clsx18.default)(
5183
+ className: (0, import_clsx19.default)(
5090
5184
  "mt-2 text-xs sm:text-sm font-medium transition-colors text-center",
5091
5185
  isCompleted ? "text-slate-400" : !isActive && "text-gray-400"
5092
5186
  ),
@@ -5100,14 +5194,14 @@ function ITStepper({
5100
5194
  );
5101
5195
  }) })
5102
5196
  ] }),
5103
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
5197
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
5104
5198
  "div",
5105
5199
  {
5106
5200
  ref: contentRef,
5107
5201
  tabIndex: -1,
5108
5202
  role: "region",
5109
5203
  "aria-labelledby": `step-${currentStep}`,
5110
- className: (0, import_clsx18.default)(
5204
+ className: (0, import_clsx19.default)(
5111
5205
  stepClassName,
5112
5206
  "bg-white border border-gray-100 rounded-2xl shadow-lg min-h-[280px] transition-transform duration-400 no-scrollbar p-6",
5113
5207
  scrollableContent && "overflow-y-auto hide-scrollbar"
@@ -5116,37 +5210,37 @@ function ITStepper({
5116
5210
  children: steps[currentStep].content
5117
5211
  }
5118
5212
  ),
5119
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex justify-between items-center mt-6", children: [
5120
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
5213
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex justify-between items-center mt-6", children: [
5214
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
5121
5215
  ITButton,
5122
5216
  {
5123
5217
  variant: "outlined",
5124
5218
  color: "secondary",
5125
5219
  disabled: currentStep === 0,
5126
5220
  onClick: prevStep,
5127
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-2", children: [
5128
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_fa15.FaChevronLeft, {}),
5221
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex items-center gap-2", children: [
5222
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_fa15.FaChevronLeft, {}),
5129
5223
  "Atr\xE1s"
5130
5224
  ] })
5131
5225
  }
5132
5226
  ),
5133
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-3", children: [
5134
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "text-sm text-gray-500 mr-2 hidden sm:block", children: [
5227
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex items-center gap-3", children: [
5228
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "text-sm text-gray-500 mr-2 hidden sm:block", children: [
5135
5229
  "Paso ",
5136
5230
  currentStep + 1,
5137
5231
  " de ",
5138
5232
  steps.length
5139
5233
  ] }),
5140
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
5234
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
5141
5235
  ITButton,
5142
5236
  {
5143
5237
  variant: "solid",
5144
5238
  color,
5145
5239
  disabled: disableNext,
5146
5240
  onClick: nextStep,
5147
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-2", children: [
5241
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex items-center gap-2", children: [
5148
5242
  currentStep === steps.length - 1 ? "Finalizar" : "Siguiente",
5149
- currentStep === steps.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_fa15.FaCheck, {}) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_fa15.FaChevronRight, {})
5243
+ currentStep === steps.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_fa15.FaCheck, {}) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_fa15.FaChevronRight, {})
5150
5244
  ] })
5151
5245
  }
5152
5246
  )
@@ -5156,10 +5250,10 @@ function ITStepper({
5156
5250
  }
5157
5251
 
5158
5252
  // src/components/theme-provider/themeProvider.tsx
5159
- var import_react27 = require("react");
5160
- var import_jsx_runtime29 = require("react/jsx-runtime");
5253
+ var import_react28 = require("react");
5254
+ var import_jsx_runtime31 = require("react/jsx-runtime");
5161
5255
  function ITThemeProvider({ theme: theme2, children }) {
5162
- const activeThemeContext = (0, import_react27.useMemo)(() => {
5256
+ const activeThemeContext = (0, import_react28.useMemo)(() => {
5163
5257
  const baseColors = {
5164
5258
  primary: palette.blue,
5165
5259
  secondary: palette.gray,
@@ -5180,7 +5274,7 @@ function ITThemeProvider({ theme: theme2, children }) {
5180
5274
  }
5181
5275
  };
5182
5276
  }, [theme2]);
5183
- const cssVariables = (0, import_react27.useMemo)(() => {
5277
+ const cssVariables = (0, import_react28.useMemo)(() => {
5184
5278
  let variablesString = "";
5185
5279
  Object.entries(activeThemeContext.colors).forEach(([colorName, scale]) => {
5186
5280
  Object.entries(scale).forEach(([shade, hexValue]) => {
@@ -5299,8 +5393,8 @@ function ITThemeProvider({ theme: theme2, children }) {
5299
5393
  return `:root {
5300
5394
  ${variablesString}}`;
5301
5395
  }, [activeThemeContext]);
5302
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
5303
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("style", { suppressHydrationWarning: true, children: cssVariables }),
5396
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
5397
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("style", { suppressHydrationWarning: true, children: cssVariables }),
5304
5398
  children
5305
5399
  ] });
5306
5400
  }
@@ -5337,10 +5431,12 @@ var createValidationSchema = (fields) => Yup.object().shape(
5337
5431
  ITSlideToggle,
5338
5432
  ITStepper,
5339
5433
  ITTable,
5434
+ ITTabs,
5340
5435
  ITText,
5341
5436
  ITThemeProvider,
5342
5437
  ITTimePicker,
5343
5438
  ITToast,
5439
+ ITTripleFilter,
5344
5440
  createValidationSchema
5345
5441
  });
5346
5442
  //# sourceMappingURL=index.cjs.map